Full Code of UtopiaUnblocker/Utopia for AI

main 3e2bac263807 cached
1110 files
100.7 MB
7.4M tokens
9919 symbols
1 requests
Copy disabled (too large) Download .txt
Showing preview only (29,906K chars total). Download the full file to get everything.
Repository: UtopiaUnblocker/Utopia
Branch: main
Commit: 3e2bac263807
Files: 1110
Total size: 100.7 MB

Directory structure:
gitextract_46y48etd/

├── .breakpoints
├── .gitattributes
├── .replit
├── Dockerfile
├── LICENSE
├── Procfile
├── README.md
├── app.json
├── config.json
├── index.js
├── index.mjs
├── main/
│   ├── 404.html
│   ├── arc-sw.js
│   ├── css/
│   │   ├── nav.css
│   │   ├── style.css
│   │   └── terms.css
│   ├── gams/
│   │   ├── .gitignore
│   │   ├── compiler.py
│   │   ├── css/
│   │   │   └── style.css
│   │   ├── dehar.py
│   │   ├── gfiles/
│   │   │   ├── flash/
│   │   │   │   ├── f75600c6b605d23c38b0.wasm
│   │   │   │   ├── index.html
│   │   │   │   └── ruffle.js
│   │   │   ├── html5/
│   │   │   │   ├── 2048/
│   │   │   │   │   ├── index.html
│   │   │   │   │   ├── js/
│   │   │   │   │   │   ├── animframe_polyfill.js
│   │   │   │   │   │   ├── application.js
│   │   │   │   │   │   ├── bind_polyfill.js
│   │   │   │   │   │   ├── classlist_polyfill.js
│   │   │   │   │   │   ├── game_manager.js
│   │   │   │   │   │   ├── grid.js
│   │   │   │   │   │   ├── html_actuator.js
│   │   │   │   │   │   ├── keyboard_input_manager.js
│   │   │   │   │   │   ├── local_storage_manager.js
│   │   │   │   │   │   └── tile.js
│   │   │   │   │   └── style/
│   │   │   │   │       ├── fonts/
│   │   │   │   │       │   └── clear-sans.css
│   │   │   │   │       └── main.css
│   │   │   │   ├── adarkroom/
│   │   │   │   │   ├── LICENSE.md
│   │   │   │   │   ├── audio/
│   │   │   │   │   │   ├── asteroid-hit-1.flac
│   │   │   │   │   │   ├── asteroid-hit-2.flac
│   │   │   │   │   │   ├── asteroid-hit-3.flac
│   │   │   │   │   │   ├── asteroid-hit-4.flac
│   │   │   │   │   │   ├── asteroid-hit-5.flac
│   │   │   │   │   │   ├── asteroid-hit-6.flac
│   │   │   │   │   │   ├── asteroid-hit-7.flac
│   │   │   │   │   │   ├── asteroid-hit-8.flac
│   │   │   │   │   │   ├── build.flac
│   │   │   │   │   │   ├── buy.flac
│   │   │   │   │   │   ├── check-traps.flac
│   │   │   │   │   │   ├── craft.flac
│   │   │   │   │   │   ├── crash.flac
│   │   │   │   │   │   ├── death.flac
│   │   │   │   │   │   ├── dusty-path.flac
│   │   │   │   │   │   ├── eat-meat.flac
│   │   │   │   │   │   ├── embark.flac
│   │   │   │   │   │   ├── encounter-tier-1.flac
│   │   │   │   │   │   ├── encounter-tier-2.flac
│   │   │   │   │   │   ├── encounter-tier-3.flac
│   │   │   │   │   │   ├── ending.flac
│   │   │   │   │   │   ├── event-beast-attack.flac
│   │   │   │   │   │   ├── event-beggar.flac
│   │   │   │   │   │   ├── event-hut-fire.flac
│   │   │   │   │   │   ├── event-mysterious-wanderer.flac
│   │   │   │   │   │   ├── event-noises-inside.flac
│   │   │   │   │   │   ├── event-noises-outside.flac
│   │   │   │   │   │   ├── event-nomad.flac
│   │   │   │   │   │   ├── event-plague.flac
│   │   │   │   │   │   ├── event-ruined-trap.flac
│   │   │   │   │   │   ├── event-scout.flac
│   │   │   │   │   │   ├── event-shady-builder.flac
│   │   │   │   │   │   ├── event-sick-man.flac
│   │   │   │   │   │   ├── event-sickness.flac
│   │   │   │   │   │   ├── event-soldier-attack.flac
│   │   │   │   │   │   ├── event-thief.flac
│   │   │   │   │   │   ├── event-wandering-master.flac
│   │   │   │   │   │   ├── fire-burning.flac
│   │   │   │   │   │   ├── fire-dead.flac
│   │   │   │   │   │   ├── fire-flickering.flac
│   │   │   │   │   │   ├── fire-roaring.flac
│   │   │   │   │   │   ├── fire-smoldering.flac
│   │   │   │   │   │   ├── footsteps-1.flac
│   │   │   │   │   │   ├── footsteps-2.flac
│   │   │   │   │   │   ├── footsteps-3.flac
│   │   │   │   │   │   ├── footsteps-4.flac
│   │   │   │   │   │   ├── footsteps-5.flac
│   │   │   │   │   │   ├── footsteps-6.flac
│   │   │   │   │   │   ├── gather-wood.flac
│   │   │   │   │   │   ├── landmark-battlefield.flac
│   │   │   │   │   │   ├── landmark-borehole.flac
│   │   │   │   │   │   ├── landmark-cave.flac
│   │   │   │   │   │   ├── landmark-city.flac
│   │   │   │   │   │   ├── landmark-coalmine.flac
│   │   │   │   │   │   ├── landmark-crashed-ship.flac
│   │   │   │   │   │   ├── landmark-destroyed-village.flac
│   │   │   │   │   │   ├── landmark-friendly-outpost.flac
│   │   │   │   │   │   ├── landmark-house.flac
│   │   │   │   │   │   ├── landmark-ironmine.flac
│   │   │   │   │   │   ├── landmark-sulphurmine.flac
│   │   │   │   │   │   ├── landmark-swamp.flac
│   │   │   │   │   │   ├── landmark-town.flac
│   │   │   │   │   │   ├── large-village.flac
│   │   │   │   │   │   ├── lift-off.flac
│   │   │   │   │   │   ├── light-fire.flac
│   │   │   │   │   │   ├── lonely-hut.flac
│   │   │   │   │   │   ├── modest-village.flac
│   │   │   │   │   │   ├── raucous-village.flac
│   │   │   │   │   │   ├── reinforce-hull.flac
│   │   │   │   │   │   ├── ship.flac
│   │   │   │   │   │   ├── silent-forest.flac
│   │   │   │   │   │   ├── space.flac
│   │   │   │   │   │   ├── stoke-fire.flac
│   │   │   │   │   │   ├── tiny-village.flac
│   │   │   │   │   │   ├── upgrade-engine.flac
│   │   │   │   │   │   ├── use-meds.flac
│   │   │   │   │   │   ├── weapon-melee-1.flac
│   │   │   │   │   │   ├── weapon-melee-2.flac
│   │   │   │   │   │   ├── weapon-melee-3.flac
│   │   │   │   │   │   ├── weapon-ranged-1.flac
│   │   │   │   │   │   ├── weapon-ranged-2.flac
│   │   │   │   │   │   ├── weapon-ranged-3.flac
│   │   │   │   │   │   ├── weapon-unarmed-1.flac
│   │   │   │   │   │   ├── weapon-unarmed-2.flac
│   │   │   │   │   │   ├── weapon-unarmed-3.flac
│   │   │   │   │   │   └── world.flac
│   │   │   │   │   ├── browserWarning.html
│   │   │   │   │   ├── css/
│   │   │   │   │   │   ├── dark.css
│   │   │   │   │   │   ├── main.css
│   │   │   │   │   │   ├── outside.css
│   │   │   │   │   │   ├── path.css
│   │   │   │   │   │   ├── room.css
│   │   │   │   │   │   ├── ship.css
│   │   │   │   │   │   ├── space.css
│   │   │   │   │   │   └── world.css
│   │   │   │   │   ├── index.html
│   │   │   │   │   ├── lang/
│   │   │   │   │   │   ├── cs/
│   │   │   │   │   │   │   ├── main.css
│   │   │   │   │   │   │   ├── strings.js
│   │   │   │   │   │   │   └── strings.po
│   │   │   │   │   │   ├── de/
│   │   │   │   │   │   │   ├── main.css
│   │   │   │   │   │   │   ├── strings.js
│   │   │   │   │   │   │   └── strings.po
│   │   │   │   │   │   ├── el/
│   │   │   │   │   │   │   ├── main.css
│   │   │   │   │   │   │   ├── strings.js
│   │   │   │   │   │   │   └── strings.po
│   │   │   │   │   │   ├── eo/
│   │   │   │   │   │   │   ├── main.css
│   │   │   │   │   │   │   ├── strings.js
│   │   │   │   │   │   │   └── strings.po
│   │   │   │   │   │   ├── es/
│   │   │   │   │   │   │   ├── main.css
│   │   │   │   │   │   │   ├── strings.js
│   │   │   │   │   │   │   └── strings.po
│   │   │   │   │   │   ├── fr/
│   │   │   │   │   │   │   ├── main.css
│   │   │   │   │   │   │   ├── strings.js
│   │   │   │   │   │   │   └── strings.po
│   │   │   │   │   │   ├── gl/
│   │   │   │   │   │   │   ├── main.css
│   │   │   │   │   │   │   ├── strings.js
│   │   │   │   │   │   │   └── strings.po
│   │   │   │   │   │   ├── id/
│   │   │   │   │   │   │   ├── main.css
│   │   │   │   │   │   │   ├── strings.js
│   │   │   │   │   │   │   └── strings.po
│   │   │   │   │   │   ├── it/
│   │   │   │   │   │   │   ├── main.css
│   │   │   │   │   │   │   ├── strings.js
│   │   │   │   │   │   │   └── strings.po
│   │   │   │   │   │   ├── ja/
│   │   │   │   │   │   │   ├── main.css
│   │   │   │   │   │   │   ├── strings.js
│   │   │   │   │   │   │   └── strings.po
│   │   │   │   │   │   ├── ko/
│   │   │   │   │   │   │   ├── main.css
│   │   │   │   │   │   │   ├── strings.js
│   │   │   │   │   │   │   └── strings.po
│   │   │   │   │   │   ├── langs.js
│   │   │   │   │   │   ├── lt_LT/
│   │   │   │   │   │   │   ├── main.css
│   │   │   │   │   │   │   ├── strings.js
│   │   │   │   │   │   │   ├── strings.mo
│   │   │   │   │   │   │   └── strings.po
│   │   │   │   │   │   ├── lv/
│   │   │   │   │   │   │   ├── strings.js
│   │   │   │   │   │   │   └── strings.po
│   │   │   │   │   │   ├── main.css
│   │   │   │   │   │   ├── nb/
│   │   │   │   │   │   │   ├── main.css
│   │   │   │   │   │   │   ├── strings.js
│   │   │   │   │   │   │   └── strings.po
│   │   │   │   │   │   ├── pl/
│   │   │   │   │   │   │   ├── main.css
│   │   │   │   │   │   │   ├── strings.js
│   │   │   │   │   │   │   └── strings.po
│   │   │   │   │   │   ├── pt/
│   │   │   │   │   │   │   ├── main.css
│   │   │   │   │   │   │   ├── strings.js
│   │   │   │   │   │   │   └── strings.po
│   │   │   │   │   │   ├── pt_br/
│   │   │   │   │   │   │   ├── main.css
│   │   │   │   │   │   │   ├── strings.js
│   │   │   │   │   │   │   └── strings.po
│   │   │   │   │   │   ├── ru/
│   │   │   │   │   │   │   ├── main.css
│   │   │   │   │   │   │   ├── strings.js
│   │   │   │   │   │   │   └── strings.po
│   │   │   │   │   │   ├── sv/
│   │   │   │   │   │   │   ├── main.css
│   │   │   │   │   │   │   ├── strings.js
│   │   │   │   │   │   │   └── strings.po
│   │   │   │   │   │   ├── th/
│   │   │   │   │   │   │   ├── main.css
│   │   │   │   │   │   │   ├── strings.js
│   │   │   │   │   │   │   └── strings.po
│   │   │   │   │   │   ├── tr/
│   │   │   │   │   │   │   ├── main.css
│   │   │   │   │   │   │   ├── strings.js
│   │   │   │   │   │   │   └── strings.po
│   │   │   │   │   │   ├── uk/
│   │   │   │   │   │   │   ├── main.css
│   │   │   │   │   │   │   ├── strings.js
│   │   │   │   │   │   │   └── strings.po
│   │   │   │   │   │   ├── vi/
│   │   │   │   │   │   │   ├── main.css
│   │   │   │   │   │   │   ├── strings.js
│   │   │   │   │   │   │   └── strings.po
│   │   │   │   │   │   ├── zh_cn/
│   │   │   │   │   │   │   ├── main.css
│   │   │   │   │   │   │   ├── strings.js
│   │   │   │   │   │   │   └── strings.po
│   │   │   │   │   │   └── zh_tw/
│   │   │   │   │   │       ├── main.css
│   │   │   │   │   │       ├── strings.js
│   │   │   │   │   │       └── strings.po
│   │   │   │   │   ├── lib/
│   │   │   │   │   │   ├── base64.js
│   │   │   │   │   │   ├── icu.js
│   │   │   │   │   │   ├── jquery.event.move.js
│   │   │   │   │   │   ├── jquery.event.swipe.js
│   │   │   │   │   │   └── translate.js
│   │   │   │   │   ├── mobileWarning.html
│   │   │   │   │   └── script/
│   │   │   │   │       ├── Button.js
│   │   │   │   │       ├── audio.js
│   │   │   │   │       ├── audioLibrary.js
│   │   │   │   │       ├── dropbox.js
│   │   │   │   │       ├── engine.js
│   │   │   │   │       ├── events/
│   │   │   │   │       │   ├── encounters.js
│   │   │   │   │       │   ├── global.js
│   │   │   │   │       │   ├── marketing.js
│   │   │   │   │       │   ├── outside.js
│   │   │   │   │       │   ├── room.js
│   │   │   │   │       │   └── setpieces.js
│   │   │   │   │       ├── events.js
│   │   │   │   │       ├── header.js
│   │   │   │   │       ├── localization.js
│   │   │   │   │       ├── notifications.js
│   │   │   │   │       ├── outside.js
│   │   │   │   │       ├── path.js
│   │   │   │   │       ├── prestige.js
│   │   │   │   │       ├── room.js
│   │   │   │   │       ├── scoring.js
│   │   │   │   │       ├── ship.js
│   │   │   │   │       ├── space.js
│   │   │   │   │       ├── state_manager.js
│   │   │   │   │       └── world.js
│   │   │   │   ├── asciispace/
│   │   │   │   │   └── index.html
│   │   │   │   ├── asteroids/
│   │   │   │   │   ├── LICENSE
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── game.js
│   │   │   │   │   ├── index.html
│   │   │   │   │   ├── ipad.js
│   │   │   │   │   └── vector_battle_regular.typeface.js
│   │   │   │   ├── astray/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── Three.js
│   │   │   │   │   ├── index.html
│   │   │   │   │   ├── jquery.js
│   │   │   │   │   ├── keyboard.js
│   │   │   │   │   └── maze.js
│   │   │   │   ├── backcountry/
│   │   │   │   │   ├── index.html
│   │   │   │   │   └── models.tfu
│   │   │   │   ├── blackholesquare/
│   │   │   │   │   ├── index.html
│   │   │   │   │   ├── manifest.json
│   │   │   │   │   └── sw.js
│   │   │   │   ├── bounceback/
│   │   │   │   │   ├── LICENSE
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── game.js
│   │   │   │   │   ├── gameEngine.js
│   │   │   │   │   ├── gameEngineDebug.js
│   │   │   │   │   └── index.html
│   │   │   │   ├── breaklock/
│   │   │   │   │   ├── app.css
│   │   │   │   │   ├── app.js
│   │   │   │   │   ├── index.html
│   │   │   │   │   ├── manifest.json
│   │   │   │   │   └── service-worker.js
│   │   │   │   ├── breakout/
│   │   │   │   │   ├── LICENSE
│   │   │   │   │   ├── breakout.css
│   │   │   │   │   ├── breakout.js
│   │   │   │   │   ├── game.js
│   │   │   │   │   ├── index.html
│   │   │   │   │   ├── levels.js
│   │   │   │   │   └── sound/
│   │   │   │   │       ├── license.txt
│   │   │   │   │       └── soundmanager2-nodebug-jsmin.js
│   │   │   │   ├── captaincallisto/
│   │   │   │   │   └── index.html
│   │   │   │   ├── chess/
│   │   │   │   │   ├── canvas3dengine/
│   │   │   │   │   │   ├── camera.jsfb
│   │   │   │   │   │   ├── light.jsfb
│   │   │   │   │   │   ├── matrix3.jsfb
│   │   │   │   │   │   ├── mesh.jsfb
│   │   │   │   │   │   ├── scene.jsfb
│   │   │   │   │   │   └── vec3.jsfb
│   │   │   │   │   ├── chess.js
│   │   │   │   │   ├── common/
│   │   │   │   │   │   └── xhr.js
│   │   │   │   │   ├── css/
│   │   │   │   │   │   └── chess.css
│   │   │   │   │   ├── index.html
│   │   │   │   │   ├── license.txt
│   │   │   │   │   ├── meshes/
│   │   │   │   │   │   ├── bishop.jscn
│   │   │   │   │   │   ├── board.json
│   │   │   │   │   │   ├── king.jscn
│   │   │   │   │   │   ├── knight.jscn
│   │   │   │   │   │   ├── pawn.jscn
│   │   │   │   │   │   ├── queen.jscn
│   │   │   │   │   │   └── rook.jscn
│   │   │   │   │   ├── readme.txt
│   │   │   │   │   ├── sample.pgn
│   │   │   │   │   ├── skins/
│   │   │   │   │   │   └── gnomechess.css
│   │   │   │   │   └── solidView.jsfb
│   │   │   │   ├── chromaincident/
│   │   │   │   │   └── index.html
│   │   │   │   ├── chromedino/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── index.css
│   │   │   │   │   ├── index.html
│   │   │   │   │   └── index.js
│   │   │   │   ├── connect3/
│   │   │   │   │   ├── connect3.js
│   │   │   │   │   └── index.html
│   │   │   │   ├── cookieclicker/
│   │   │   │   │   ├── base64.js
│   │   │   │   │   ├── index.html
│   │   │   │   │   ├── main.js
│   │   │   │   │   ├── minigameGarden.js
│   │   │   │   │   ├── minigameGrimoire.js
│   │   │   │   │   ├── minigameMarket.js
│   │   │   │   │   ├── minigamePantheon.js
│   │   │   │   │   ├── readme.md
│   │   │   │   │   └── style.css
│   │   │   │   ├── drifthunters/
│   │   │   │   │   ├── Build/
│   │   │   │   │   │   ├── ItchIO.asm.code.unityweb
│   │   │   │   │   │   ├── ItchIO.asm.framework.unityweb
│   │   │   │   │   │   ├── ItchIO.asm.memory.unityweb
│   │   │   │   │   │   ├── ItchIO.json
│   │   │   │   │   │   └── UnityLoader.js
│   │   │   │   │   ├── TemplateData/
│   │   │   │   │   │   ├── UnityProgress.js
│   │   │   │   │   │   └── style.css
│   │   │   │   │   ├── index.html
│   │   │   │   │   └── script.js
│   │   │   │   ├── edgenotfound/
│   │   │   │   │   └── index.html
│   │   │   │   ├── evilglitch/
│   │   │   │   │   ├── b.js
│   │   │   │   │   └── index.html
│   │   │   │   ├── factoryballsforever/
│   │   │   │   │   ├── factoryballsforever.js
│   │   │   │   │   └── index.html
│   │   │   │   ├── flappybird/
│   │   │   │   │   ├── __loading__.js
│   │   │   │   │   ├── __start__.js
│   │   │   │   │   ├── index.html
│   │   │   │   │   └── styles.css
│   │   │   │   ├── fnaf1/
│   │   │   │   │   ├── Build/
│   │   │   │   │   │   ├── FNAF1WebGL.asm.code.unityweb
│   │   │   │   │   │   ├── FNAF1WebGL.asm.framework.unityweb
│   │   │   │   │   │   ├── FNAF1WebGL.asm.memory.unityweb
│   │   │   │   │   │   ├── FNAF1WebGL.data.unityweb
│   │   │   │   │   │   ├── FNAF1WebGL.json
│   │   │   │   │   │   └── UnityLoader.js
│   │   │   │   │   ├── TemplateData/
│   │   │   │   │   │   ├── UnityProgress.js
│   │   │   │   │   │   └── style.css
│   │   │   │   │   ├── htmlgame.js
│   │   │   │   │   ├── index.html
│   │   │   │   │   └── script.js
│   │   │   │   ├── fnaf2/
│   │   │   │   │   └── index.html
│   │   │   │   ├── fnaf3/
│   │   │   │   │   └── index.html
│   │   │   │   ├── fnaf4/
│   │   │   │   │   └── index.html
│   │   │   │   ├── fnafsl/
│   │   │   │   │   └── index.html
│   │   │   │   ├── geometrydash/
│   │   │   │   │   ├── gdash.js
│   │   │   │   │   └── index.html
│   │   │   │   ├── hextris/
│   │   │   │   │   ├── index.html
│   │   │   │   │   ├── js/
│   │   │   │   │   │   ├── Block.js
│   │   │   │   │   │   ├── Hex.js
│   │   │   │   │   │   ├── Text.js
│   │   │   │   │   │   ├── checking.js
│   │   │   │   │   │   ├── comboTimer.js
│   │   │   │   │   │   ├── initialization.js
│   │   │   │   │   │   ├── input.js
│   │   │   │   │   │   ├── main.js
│   │   │   │   │   │   ├── math.js
│   │   │   │   │   │   ├── render.js
│   │   │   │   │   │   ├── save-state.js
│   │   │   │   │   │   ├── update.js
│   │   │   │   │   │   ├── view.js
│   │   │   │   │   │   └── wavegen.js
│   │   │   │   │   ├── style/
│   │   │   │   │   │   ├── fonts/
│   │   │   │   │   │   │   ├── Exo2-ExtraLight.otf
│   │   │   │   │   │   │   ├── Exo2-Regular.otf
│   │   │   │   │   │   │   └── Exo2-SemiBold.otf
│   │   │   │   │   │   ├── rrssb.css
│   │   │   │   │   │   └── style.css
│   │   │   │   │   └── vendor/
│   │   │   │   │       ├── jquery.js
│   │   │   │   │       └── js.cookie.js
│   │   │   │   ├── konnekt/
│   │   │   │   │   ├── index.html
│   │   │   │   │   ├── min.js
│   │   │   │   │   └── style.css
│   │   │   │   ├── minecraft/
│   │   │   │   │   └── index.html
│   │   │   │   ├── ninjavsevilcorp/
│   │   │   │   │   └── index.html
│   │   │   │   ├── oldroblox.html
│   │   │   │   ├── packabunchas/
│   │   │   │   │   └── index.html
│   │   │   │   ├── pacman/
│   │   │   │   │   ├── bundle.js
│   │   │   │   │   └── index.html
│   │   │   │   ├── particleclicker/
│   │   │   │   │   ├── LICENSE
│   │   │   │   │   ├── css/
│   │   │   │   │   │   └── style.css
│   │   │   │   │   ├── html/
│   │   │   │   │   │   ├── BBbar.html
│   │   │   │   │   │   ├── CPV.html
│   │   │   │   │   │   ├── Dstar_s.html
│   │   │   │   │   │   ├── H.html
│   │   │   │   │   │   ├── Jpsi.html
│   │   │   │   │   │   ├── Xi_b.html
│   │   │   │   │   │   ├── b.html
│   │   │   │   │   │   ├── detector.html
│   │   │   │   │   │   ├── gluons.html
│   │   │   │   │   │   ├── tau.html
│   │   │   │   │   │   ├── top.html
│   │   │   │   │   │   └── weak.html
│   │   │   │   │   ├── index.html
│   │   │   │   │   ├── js/
│   │   │   │   │   │   ├── analytics.js
│   │   │   │   │   │   ├── app.js
│   │   │   │   │   │   ├── detector.js
│   │   │   │   │   │   ├── event.js
│   │   │   │   │   │   ├── external/
│   │   │   │   │   │   │   ├── canvas2svg.js
│   │   │   │   │   │   │   ├── fastclick.js
│   │   │   │   │   │   │   └── retina.js
│   │   │   │   │   │   ├── game.js
│   │   │   │   │   │   ├── gameobjects.js
│   │   │   │   │   │   ├── helpers.js
│   │   │   │   │   │   ├── histogram.js
│   │   │   │   │   │   ├── storage.js
│   │   │   │   │   │   └── ui.js
│   │   │   │   │   └── json/
│   │   │   │   │       ├── achievements.json
│   │   │   │   │       ├── research.json
│   │   │   │   │       ├── upgrades.json
│   │   │   │   │       └── workers.json
│   │   │   │   ├── pushback/
│   │   │   │   │   ├── g.js
│   │   │   │   │   ├── index.html
│   │   │   │   │   └── s.css
│   │   │   │   ├── q1k3/
│   │   │   │   │   ├── index.html
│   │   │   │   │   ├── l
│   │   │   │   │   └── m
│   │   │   │   ├── racer/
│   │   │   │   │   ├── LICENSE
│   │   │   │   │   ├── Rakefile
│   │   │   │   │   ├── common.css
│   │   │   │   │   ├── images/
│   │   │   │   │   │   ├── background.js
│   │   │   │   │   │   └── sprites.js
│   │   │   │   │   ├── index.html
│   │   │   │   │   ├── js/
│   │   │   │   │   │   ├── common.js
│   │   │   │   │   │   ├── main.js
│   │   │   │   │   │   └── stats.js
│   │   │   │   │   └── music/
│   │   │   │   │       └── racer.ogg
│   │   │   │   ├── radiusraid/
│   │   │   │   │   ├── index.html
│   │   │   │   │   └── js/
│   │   │   │   │       ├── audio.js
│   │   │   │   │       ├── bullet.js
│   │   │   │   │       ├── button.js
│   │   │   │   │       ├── definitions.js
│   │   │   │   │       ├── enemy.js
│   │   │   │   │       ├── explosion.js
│   │   │   │   │       ├── game.js
│   │   │   │   │       ├── hero.js
│   │   │   │   │       ├── jsfxr.js
│   │   │   │   │       ├── levelpop.js
│   │   │   │   │       ├── particle.js
│   │   │   │   │       ├── particleemitter.js
│   │   │   │   │       ├── powerup.js
│   │   │   │   │       ├── storage.js
│   │   │   │   │       ├── text.js
│   │   │   │   │       ├── textpop.js
│   │   │   │   │       └── util.js
│   │   │   │   ├── retrobowl/
│   │   │   │   │   ├── html5game/
│   │   │   │   │   │   ├── Achievements.txt
│   │   │   │   │   │   ├── Colleges.txt
│   │   │   │   │   │   ├── LanguageUS.txt
│   │   │   │   │   │   ├── Names_F1.txt
│   │   │   │   │   │   ├── Names_L.txt
│   │   │   │   │   │   ├── RetroBowl.js
│   │   │   │   │   │   ├── Schedule.txt
│   │   │   │   │   │   ├── Teams.txt
│   │   │   │   │   │   ├── savedata.ini
│   │   │   │   │   │   ├── snd_audience_dis.ogg
│   │   │   │   │   │   ├── snd_audience_fg.ogg
│   │   │   │   │   │   ├── snd_audience_idle.ogg
│   │   │   │   │   │   ├── snd_beep.ogg
│   │   │   │   │   │   ├── snd_beep2.ogg
│   │   │   │   │   │   ├── snd_bounce.ogg
│   │   │   │   │   │   ├── snd_click.ogg
│   │   │   │   │   │   ├── snd_kick.ogg
│   │   │   │   │   │   ├── snd_oof1.ogg
│   │   │   │   │   │   ├── snd_oof2.ogg
│   │   │   │   │   │   ├── snd_oof3.ogg
│   │   │   │   │   │   ├── snd_post.ogg
│   │   │   │   │   │   ├── snd_tackle.ogg
│   │   │   │   │   │   └── snd_throw.ogg
│   │   │   │   │   ├── index.html
│   │   │   │   │   └── script.js
│   │   │   │   ├── retrohaunt/
│   │   │   │   │   ├── bundle.js
│   │   │   │   │   └── index.html
│   │   │   │   ├── roadblocks/
│   │   │   │   │   ├── index.html
│   │   │   │   │   ├── index.js
│   │   │   │   │   └── style.css
│   │   │   │   ├── roblox.html
│   │   │   │   ├── run3/
│   │   │   │   │   ├── Run3.js
│   │   │   │   │   ├── font/
│   │   │   │   │   │   └── Comfortaa.sfd
│   │   │   │   │   ├── img/
│   │   │   │   │   │   ├── character/
│   │   │   │   │   │   │   ├── Angel.json
│   │   │   │   │   │   │   ├── Bunny.json
│   │   │   │   │   │   │   ├── Child.json
│   │   │   │   │   │   │   ├── Climber.json
│   │   │   │   │   │   │   ├── Duplicator.json
│   │   │   │   │   │   │   ├── Gentleman.json
│   │   │   │   │   │   │   ├── Ghost.json
│   │   │   │   │   │   │   ├── IceSkater.json
│   │   │   │   │   │   │   ├── JackOLantern.json
│   │   │   │   │   │   │   ├── Lizard.json
│   │   │   │   │   │   │   ├── Ninja.json
│   │   │   │   │   │   │   ├── Pastafarian.json
│   │   │   │   │   │   │   ├── Pirate.json
│   │   │   │   │   │   │   ├── Runner.json
│   │   │   │   │   │   │   ├── Skater.json
│   │   │   │   │   │   │   ├── Skier.json
│   │   │   │   │   │   │   └── Student.json
│   │   │   │   │   │   └── cutscene/
│   │   │   │   │   │       └── TrainRide/
│   │   │   │   │   │           └── Spritesheet.json
│   │   │   │   │   ├── index.html
│   │   │   │   │   ├── model/
│   │   │   │   │   │   ├── battery.obj
│   │   │   │   │   │   ├── terrain.3ds
│   │   │   │   │   │   └── terrain.obj
│   │   │   │   │   ├── music/
│   │   │   │   │   │   ├── CrumblingWalls.ogg
│   │   │   │   │   │   ├── LeaveTheSolarSystem.ogg
│   │   │   │   │   │   ├── TheVoid.ogg
│   │   │   │   │   │   ├── Tone.ogg
│   │   │   │   │   │   ├── TravelTheGalaxy.ogg
│   │   │   │   │   │   ├── UnsafeSpeeds.ogg
│   │   │   │   │   │   └── WormholeToSomewhere.ogg
│   │   │   │   │   └── text/
│   │   │   │   │       ├── BuildNumber.txt
│   │   │   │   │       ├── ExploreLevels.txt
│   │   │   │   │       ├── InfiniteLevels.txt
│   │   │   │   │       ├── MapContents.json
│   │   │   │   │       ├── content/
│   │   │   │   │       │   ├── autoContent.json
│   │   │   │   │       │   ├── content.json
│   │   │   │   │       │   ├── explore/
│   │   │   │   │       │   │   ├── childAchieve.json
│   │   │   │   │       │   │   ├── dialog/
│   │   │   │   │       │   │   │   ├── gentleman.json
│   │   │   │   │       │   │   │   └── river.json
│   │   │   │   │       │   │   ├── early0.json
│   │   │   │   │       │   │   ├── earlyAchieve.json
│   │   │   │   │       │   │   ├── homeAchieve.json
│   │   │   │   │       │   │   ├── homeAchieve1.json
│   │   │   │   │       │   │   ├── homeImage.json
│   │   │   │   │       │   │   ├── homewards0.json
│   │   │   │   │       │   │   ├── homewards1.json
│   │   │   │   │       │   │   ├── onwards0.json
│   │   │   │   │       │   │   ├── onwards1.json
│   │   │   │   │       │   │   └── onwardsAchieve.json
│   │   │   │   │       │   ├── infinite/
│   │   │   │   │       │   │   └── infiniteAchieve.json
│   │   │   │   │       │   └── localContent.json
│   │   │   │   │       ├── model/
│   │   │   │   │       │   ├── BoxInside.simple
│   │   │   │   │       │   ├── BoxLid.simple
│   │   │   │   │       │   ├── CandyCorn.3ds
│   │   │   │   │       │   ├── CandyCorn.simple
│   │   │   │   │       │   ├── Car.simple
│   │   │   │   │       │   ├── CarBackPanel.simple
│   │   │   │   │       │   ├── CarInsideRings.simple
│   │   │   │   │       │   ├── CarOutsideRings.simple
│   │   │   │   │       │   ├── CarTape.simple
│   │   │   │   │       │   ├── EasterEgg.simple
│   │   │   │   │       │   ├── OpenBox.simple
│   │   │   │   │       │   ├── Snowflake.3ds
│   │   │   │   │       │   └── Snowflake.simple
│   │   │   │   │       └── wall/
│   │   │   │   │           ├── Affliction.txt
│   │   │   │   │           └── TellAFriend.txt
│   │   │   │   ├── shuttledeck/
│   │   │   │   │   └── index.html
│   │   │   │   ├── sleepingbeauty/
│   │   │   │   │   ├── .gitignore
│   │   │   │   │   ├── Metrickal-Regular.otf
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── app.css
│   │   │   │   │   ├── app.js
│   │   │   │   │   ├── index.html
│   │   │   │   │   ├── rollup.config.js
│   │   │   │   │   └── src/
│   │   │   │   │       ├── app.rollup.js
│   │   │   │   │       ├── css/
│   │   │   │   │       │   ├── app.less
│   │   │   │   │       │   ├── combat.less
│   │   │   │   │       │   ├── intro.less
│   │   │   │   │       │   ├── log.less
│   │   │   │   │       │   ├── map.less
│   │   │   │   │       │   └── status.less
│   │   │   │   │       ├── js/
│   │   │   │   │       │   ├── ai.js
│   │   │   │   │       │   ├── app.js
│   │   │   │   │       │   ├── being/
│   │   │   │   │       │   │   ├── being.js
│   │   │   │   │       │   │   ├── beings.js
│   │   │   │   │       │   │   ├── inventory.js
│   │   │   │   │       │   │   └── pc.js
│   │   │   │   │       │   ├── combat/
│   │   │   │   │       │   │   ├── animation.js
│   │   │   │   │       │   │   ├── board.js
│   │   │   │   │       │   │   ├── combat.js
│   │   │   │   │       │   │   └── types.js
│   │   │   │   │       │   ├── conf.js
│   │   │   │   │       │   ├── entity.js
│   │   │   │   │       │   ├── item/
│   │   │   │   │       │   │   ├── item.js
│   │   │   │   │       │   │   └── items.js
│   │   │   │   │       │   ├── level/
│   │   │   │   │       │   │   ├── cells.js
│   │   │   │   │       │   │   ├── decorator.js
│   │   │   │   │       │   │   ├── generator.js
│   │   │   │   │       │   │   ├── level.js
│   │   │   │   │       │   │   └── room.js
│   │   │   │   │       │   ├── rules.js
│   │   │   │   │       │   ├── ui/
│   │   │   │   │       │   │   ├── choice.js
│   │   │   │   │       │   │   ├── combat.js
│   │   │   │   │       │   │   ├── intro/
│   │   │   │   │       │   │   │   ├── bottom.js
│   │   │   │   │       │   │   │   ├── funfact.js
│   │   │   │   │       │   │   │   ├── intro.js
│   │   │   │   │       │   │   │   ├── text.js
│   │   │   │   │       │   │   │   ├── title.js
│   │   │   │   │       │   │   │   └── tower.js
│   │   │   │   │       │   │   ├── log.js
│   │   │   │   │       │   │   ├── map/
│   │   │   │   │       │   │   │   ├── debug.js
│   │   │   │   │       │   │   │   ├── map.js
│   │   │   │   │       │   │   │   └── memory.js
│   │   │   │   │       │   │   └── status.js
│   │   │   │   │       │   └── util/
│   │   │   │   │       │       ├── actors.js
│   │   │   │   │       │       ├── factory.js
│   │   │   │   │       │       ├── keyboard.js
│   │   │   │   │       │       ├── pubsub.js
│   │   │   │   │       │       └── xy.js
│   │   │   │   │       └── polyfills/
│   │   │   │   │           ├── array.from.js
│   │   │   │   │           ├── array.includes.js
│   │   │   │   │           ├── classList.js
│   │   │   │   │           ├── object.assign.js
│   │   │   │   │           └── promise.js
│   │   │   │   ├── slope/
│   │   │   │   │   ├── Build/
│   │   │   │   │   │   ├── slope.json
│   │   │   │   │   │   ├── slope_data.unityweb
│   │   │   │   │   │   ├── slope_framework.unityweb
│   │   │   │   │   │   ├── slope_memory.unityweb
│   │   │   │   │   │   ├── slope_wasmcode.unityweb
│   │   │   │   │   │   └── slope_wasmframework.unityweb
│   │   │   │   │   ├── TemplateData/
│   │   │   │   │   │   ├── UnityProgress.js
│   │   │   │   │   │   ├── style.css
│   │   │   │   │   │   └── unityloader41.js
│   │   │   │   │   └── index.html
│   │   │   │   ├── snake/
│   │   │   │   │   ├── assets/
│   │   │   │   │   │   ├── css.css
│   │   │   │   │   │   ├── m_aLUfP.js
│   │   │   │   │   │   ├── m_aa.js
│   │   │   │   │   │   └── m_jsa.js
│   │   │   │   │   ├── index.html
│   │   │   │   │   └── inframe.html
│   │   │   │   ├── spacecompany/
│   │   │   │   │   ├── .gitignore
│   │   │   │   │   ├── Gruntfile.js
│   │   │   │   │   ├── LICENCE.txt
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── achievements.js
│   │   │   │   │   ├── building.js
│   │   │   │   │   ├── constants.js
│   │   │   │   │   ├── core.js
│   │   │   │   │   ├── data/
│   │   │   │   │   │   ├── achievementsData.js
│   │   │   │   │   │   ├── buildingData.js
│   │   │   │   │   │   ├── interstellarData.js
│   │   │   │   │   │   ├── resourceData.js
│   │   │   │   │   │   ├── splashTextData.js
│   │   │   │   │   │   ├── starData.js
│   │   │   │   │   │   ├── stargazeData.js
│   │   │   │   │   │   └── techData.js
│   │   │   │   │   ├── fonts/
│   │   │   │   │   │   └── aspace_demo.otf
│   │   │   │   │   ├── game.js
│   │   │   │   │   ├── index.html
│   │   │   │   │   ├── interstellar.js
│   │   │   │   │   ├── notification.js
│   │   │   │   │   ├── resource.js
│   │   │   │   │   ├── resources.js
│   │   │   │   │   ├── rocket.js
│   │   │   │   │   ├── rocketParts.js
│   │   │   │   │   ├── saving.js
│   │   │   │   │   ├── science.js
│   │   │   │   │   ├── settings.js
│   │   │   │   │   ├── solCenter.js
│   │   │   │   │   ├── solarSystem.js
│   │   │   │   │   ├── star.js
│   │   │   │   │   ├── stargaze.js
│   │   │   │   │   ├── statistics.js
│   │   │   │   │   ├── style.css
│   │   │   │   │   ├── tech.js
│   │   │   │   │   ├── ui/
│   │   │   │   │   │   ├── achievementUI.js
│   │   │   │   │   │   ├── databoundElement.js
│   │   │   │   │   │   ├── gameTabUI.js
│   │   │   │   │   │   ├── interstellarUI.js
│   │   │   │   │   │   ├── legacyUI.js
│   │   │   │   │   │   ├── resourceObserver.js
│   │   │   │   │   │   ├── resourceUI.js
│   │   │   │   │   │   ├── stargazeUI.js
│   │   │   │   │   │   ├── statisticUI.js
│   │   │   │   │   │   └── techUI.js
│   │   │   │   │   ├── updates.js
│   │   │   │   │   ├── utils.js
│   │   │   │   │   ├── variable.js
│   │   │   │   │   └── wonder.js
│   │   │   │   ├── spacegarden/
│   │   │   │   │   └── index.html
│   │   │   │   ├── spacehuggers/
│   │   │   │   │   └── index.html
│   │   │   │   ├── stumble.html
│   │   │   │   ├── templerun2/
│   │   │   │   │   └── index.html
│   │   │   │   ├── tetris/
│   │   │   │   │   ├── Background.js
│   │   │   │   │   ├── Block.js
│   │   │   │   │   ├── Button.js
│   │   │   │   │   ├── ControlGroup.js
│   │   │   │   │   ├── Game.js
│   │   │   │   │   ├── Game_Logic.js
│   │   │   │   │   ├── PreviewGroup.js
│   │   │   │   │   ├── RandomBag.js
│   │   │   │   │   ├── ScoreTracker.js
│   │   │   │   │   ├── Shapes.js
│   │   │   │   │   ├── TtyBlock.js
│   │   │   │   │   ├── WallKicks.js
│   │   │   │   │   ├── about.html
│   │   │   │   │   ├── controls.html
│   │   │   │   │   ├── controls.js
│   │   │   │   │   ├── controlsStyles.css
│   │   │   │   │   ├── cookie.js
│   │   │   │   │   ├── gameControls.js
│   │   │   │   │   ├── highScores.html
│   │   │   │   │   ├── highScores.js
│   │   │   │   │   ├── index.html
│   │   │   │   │   ├── input.js
│   │   │   │   │   ├── jawsjs.js
│   │   │   │   │   ├── json-minified.js
│   │   │   │   │   ├── scoreScreen.html
│   │   │   │   │   ├── scoreScreen.js
│   │   │   │   │   ├── styles.css
│   │   │   │   │   └── tetris.js
│   │   │   │   ├── themazeofspacegoblins/
│   │   │   │   │   └── index.html
│   │   │   │   ├── towermaster/
│   │   │   │   │   ├── .babelrc
│   │   │   │   │   ├── .gitignore
│   │   │   │   │   ├── LICENSE
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── README.zh-CN.md
│   │   │   │   │   ├── assets/
│   │   │   │   │   │   ├── bgm.ogg
│   │   │   │   │   │   ├── drop-perfect.ogg
│   │   │   │   │   │   ├── drop.ogg
│   │   │   │   │   │   ├── game-over.ogg
│   │   │   │   │   │   └── rotate.ogg
│   │   │   │   │   ├── dist/
│   │   │   │   │   │   └── main.js
│   │   │   │   │   ├── index.html
│   │   │   │   │   ├── index.js
│   │   │   │   │   └── src/
│   │   │   │   │       ├── animateFuncs.js
│   │   │   │   │       ├── background.js
│   │   │   │   │       ├── block.js
│   │   │   │   │       ├── cloud.js
│   │   │   │   │       ├── constant.js
│   │   │   │   │       ├── flight.js
│   │   │   │   │       ├── hook.js
│   │   │   │   │       ├── index.js
│   │   │   │   │       ├── line.js
│   │   │   │   │       ├── tutorial.js
│   │   │   │   │       └── utils.js
│   │   │   │   ├── trimps/
│   │   │   │   │   ├── Playfab/
│   │   │   │   │   │   ├── LICENSE
│   │   │   │   │   │   ├── PlayFabSDK/
│   │   │   │   │   │   │   └── PlayFabClientApi.js
│   │   │   │   │   │   ├── README.md
│   │   │   │   │   │   ├── _arcconfig
│   │   │   │   │   │   ├── _gitignore
│   │   │   │   │   │   ├── code.jquery.com/
│   │   │   │   │   │   │   └── qunit/
│   │   │   │   │   │   │       ├── qunit-1.19.0.css
│   │   │   │   │   │   │       └── qunit-1.19.0.js
│   │   │   │   │   │   └── licenses/
│   │   │   │   │   │       ├── jquery-license.txt
│   │   │   │   │   │       └── qunit-license.txt
│   │   │   │   │   ├── config.js
│   │   │   │   │   ├── css/
│   │   │   │   │   │   ├── bootstrap.css
│   │   │   │   │   │   ├── dark.css
│   │   │   │   │   │   ├── gradient.css
│   │   │   │   │   │   ├── style.css
│   │   │   │   │   │   └── styleBak.css
│   │   │   │   │   ├── fonts/
│   │   │   │   │   │   └── icomoon/
│   │   │   │   │   │       └── style.css
│   │   │   │   │   ├── index.html
│   │   │   │   │   ├── license.txt
│   │   │   │   │   ├── lz-string.js
│   │   │   │   │   ├── main.js
│   │   │   │   │   ├── objects.js
│   │   │   │   │   ├── playerSpire.js
│   │   │   │   │   └── updates.js
│   │   │   │   ├── underrun/
│   │   │   │   │   └── index.html
│   │   │   │   ├── vex3/
│   │   │   │   │   ├── assets/
│   │   │   │   │   │   ├── css/
│   │   │   │   │   │   │   └── app.css
│   │   │   │   │   │   ├── filters/
│   │   │   │   │   │   │   ├── BlurX.js
│   │   │   │   │   │   │   ├── BlurY.js
│   │   │   │   │   │   │   ├── ColorMatrixFilter.js
│   │   │   │   │   │   │   └── Gray.js
│   │   │   │   │   │   ├── images/
│   │   │   │   │   │   │   └── fonts/
│   │   │   │   │   │   │       ├── grob24.fnt
│   │   │   │   │   │   │       └── grobred32.fnt
│   │   │   │   │   │   └── sounds/
│   │   │   │   │   │       ├── achievement-unlocked.ogg
│   │   │   │   │   │       ├── block-destroy.ogg
│   │   │   │   │   │       ├── bounce1.ogg
│   │   │   │   │   │       ├── button-click.ogg
│   │   │   │   │   │       ├── cannon-enter.ogg
│   │   │   │   │   │       ├── cannon-fire.ogg
│   │   │   │   │   │       ├── connect-hang.ogg
│   │   │   │   │   │       ├── connect.ogg
│   │   │   │   │   │       ├── death2.ogg
│   │   │   │   │   │       ├── ding.ogg
│   │   │   │   │   │       ├── downgrade.ogg
│   │   │   │   │   │       ├── electricity.ogg
│   │   │   │   │   │       ├── fall.ogg
│   │   │   │   │   │       ├── falling-block.ogg
│   │   │   │   │   │       ├── footstep.ogg
│   │   │   │   │   │       ├── glass-smash.ogg
│   │   │   │   │   │       ├── kick-block.ogg
│   │   │   │   │   │       ├── land.ogg
│   │   │   │   │   │       ├── laser-fire.ogg
│   │   │   │   │   │       ├── menu-song.ogg
│   │   │   │   │   │       ├── pole-swing.ogg
│   │   │   │   │   │       ├── pole-woosh.ogg
│   │   │   │   │   │       ├── slide.ogg
│   │   │   │   │   │       ├── splash1.ogg
│   │   │   │   │   │       ├── star-pickup.ogg
│   │   │   │   │   │       ├── vex-song-1.ogg
│   │   │   │   │   │       ├── vex-song-2.ogg
│   │   │   │   │   │       ├── vex-song-3.ogg
│   │   │   │   │   │       ├── vex-song-4.ogg
│   │   │   │   │   │       ├── wall-slide.ogg
│   │   │   │   │   │       └── zipline-full.ogg
│   │   │   │   │   ├── cdn.fbrq/
│   │   │   │   │   │   └── @orange-games/
│   │   │   │   │   │       └── splash/
│   │   │   │   │   │           └── assets/
│   │   │   │   │   │               ├── jsonnope/
│   │   │   │   │   │               │   ├── contracted.json
│   │   │   │   │   │               │   ├── domains.json
│   │   │   │   │   │               │   ├── games.json
│   │   │   │   │   │               │   ├── internal.json
│   │   │   │   │   │               │   ├── sitelock.json
│   │   │   │   │   │               │   └── special.json
│   │   │   │   │   │               └── spine/
│   │   │   │   │   │                   ├── kizi_skeleton.atlas
│   │   │   │   │   │                   └── kizi_skeleton.json
│   │   │   │   │   ├── index.html
│   │   │   │   │   ├── script.js
│   │   │   │   │   └── version.js
│   │   │   │   ├── vex4/
│   │   │   │   │   ├── assets/
│   │   │   │   │   │   ├── atlas/
│   │   │   │   │   │   │   ├── atlas_gameplay.json
│   │   │   │   │   │   │   ├── atlas_portals.json
│   │   │   │   │   │   │   ├── atlas_transition.json
│   │   │   │   │   │   │   ├── atlas_ui_act_select.json
│   │   │   │   │   │   │   ├── atlas_ui_gameplay.json
│   │   │   │   │   │   │   ├── atlas_ui_level_complete.json
│   │   │   │   │   │   │   ├── atlas_ui_main_menu.json
│   │   │   │   │   │   │   ├── atlas_ui_options.json
│   │   │   │   │   │   │   ├── atlas_ui_pause.json
│   │   │   │   │   │   │   ├── atlas_ui_trophies.json
│   │   │   │   │   │   │   └── checkpoint.json
│   │   │   │   │   │   ├── balance/
│   │   │   │   │   │   │   ├── levels/
│   │   │   │   │   │   │   │   ├── challenge.json
│   │   │   │   │   │   │   │   ├── hubArrows.json
│   │   │   │   │   │   │   │   ├── level01.json
│   │   │   │   │   │   │   │   ├── level01hard.json
│   │   │   │   │   │   │   │   ├── level02.json
│   │   │   │   │   │   │   │   ├── level02hard.json
│   │   │   │   │   │   │   │   ├── level03.json
│   │   │   │   │   │   │   │   ├── level03hard.json
│   │   │   │   │   │   │   │   ├── level04.json
│   │   │   │   │   │   │   │   ├── level04hard.json
│   │   │   │   │   │   │   │   ├── level05.json
│   │   │   │   │   │   │   │   ├── level05hard.json
│   │   │   │   │   │   │   │   ├── level06.json
│   │   │   │   │   │   │   │   ├── level06hard.json
│   │   │   │   │   │   │   │   ├── level07.json
│   │   │   │   │   │   │   │   ├── level07hard.json
│   │   │   │   │   │   │   │   ├── level08.json
│   │   │   │   │   │   │   │   ├── level08hard.json
│   │   │   │   │   │   │   │   ├── level09.json
│   │   │   │   │   │   │   │   ├── level09hard.json
│   │   │   │   │   │   │   │   ├── level10.json
│   │   │   │   │   │   │   │   ├── levelEdit.json
│   │   │   │   │   │   │   │   └── levelhub.json
│   │   │   │   │   │   │   ├── levelsConfig.json
│   │   │   │   │   │   │   ├── localization.json
│   │   │   │   │   │   │   └── objectConfig.json
│   │   │   │   │   │   ├── coco/
│   │   │   │   │   │   │   ├── transition/
│   │   │   │   │   │   │   │   ├── transition_in.json
│   │   │   │   │   │   │   │   ├── transition_out.json
│   │   │   │   │   │   │   │   └── transition_stand.json
│   │   │   │   │   │   │   └── transition.json
│   │   │   │   │   │   ├── css/
│   │   │   │   │   │   │   ├── app.css
│   │   │   │   │   │   │   └── milocha.css
│   │   │   │   │   │   ├── filters/
│   │   │   │   │   │   │   ├── BlurX.js
│   │   │   │   │   │   │   ├── BlurY.js
│   │   │   │   │   │   │   ├── ColorMatrixFilter.js
│   │   │   │   │   │   │   └── Gray.js
│   │   │   │   │   │   ├── fonts/
│   │   │   │   │   │   │   └── grobred32.fnt
│   │   │   │   │   │   ├── images/
│   │   │   │   │   │   │   └── player/
│   │   │   │   │   │   │       ├── player-crouch.json
│   │   │   │   │   │   │       ├── player-fall-floor.json
│   │   │   │   │   │   │       ├── player-jump-down.json
│   │   │   │   │   │   │       ├── player-jump.json
│   │   │   │   │   │   │       ├── player-run.json
│   │   │   │   │   │   │       ├── player-stop-swim.json
│   │   │   │   │   │   │       └── player-swim-top.json
│   │   │   │   │   │   ├── sounds/
│   │   │   │   │   │   │   ├── achievement-unlocked.ogg
│   │   │   │   │   │   │   ├── block-destroy.ogg
│   │   │   │   │   │   │   ├── bounce1.ogg
│   │   │   │   │   │   │   ├── button-click.ogg
│   │   │   │   │   │   │   ├── cannon-enter.ogg
│   │   │   │   │   │   │   ├── cannon-fire.ogg
│   │   │   │   │   │   │   ├── connect-hang.ogg
│   │   │   │   │   │   │   ├── connect.ogg
│   │   │   │   │   │   │   ├── death2.ogg
│   │   │   │   │   │   │   ├── ding.ogg
│   │   │   │   │   │   │   ├── downgrade.ogg
│   │   │   │   │   │   │   ├── electricity.ogg
│   │   │   │   │   │   │   ├── fall.ogg
│   │   │   │   │   │   │   ├── falling-block.ogg
│   │   │   │   │   │   │   ├── footstep.ogg
│   │   │   │   │   │   │   ├── glass-smash.ogg
│   │   │   │   │   │   │   ├── kick-block.ogg
│   │   │   │   │   │   │   ├── land.ogg
│   │   │   │   │   │   │   ├── laser-fire.ogg
│   │   │   │   │   │   │   ├── menu-song.ogg
│   │   │   │   │   │   │   ├── pole-swing.ogg
│   │   │   │   │   │   │   ├── pole-woosh.ogg
│   │   │   │   │   │   │   ├── slide.ogg
│   │   │   │   │   │   │   ├── splash1.ogg
│   │   │   │   │   │   │   ├── star-pickup.ogg
│   │   │   │   │   │   │   ├── vex-song-1.ogg
│   │   │   │   │   │   │   ├── vex-song-10.ogg
│   │   │   │   │   │   │   ├── vex-song-11.ogg
│   │   │   │   │   │   │   ├── vex-song-12.ogg
│   │   │   │   │   │   │   ├── vex-song-13.ogg
│   │   │   │   │   │   │   ├── vex-song-14.ogg
│   │   │   │   │   │   │   ├── vex-song-2.ogg
│   │   │   │   │   │   │   ├── vex-song-3.ogg
│   │   │   │   │   │   │   ├── vex-song-4.ogg
│   │   │   │   │   │   │   ├── vex-song-5.ogg
│   │   │   │   │   │   │   ├── vex-song-6.ogg
│   │   │   │   │   │   │   ├── vex-song-7.ogg
│   │   │   │   │   │   │   ├── vex-song-8.ogg
│   │   │   │   │   │   │   ├── vex-song-9.ogg
│   │   │   │   │   │   │   ├── wall-slide.ogg
│   │   │   │   │   │   │   └── zipline-full.ogg
│   │   │   │   │   │   └── ui/
│   │   │   │   │   │       ├── ui_act_select.json
│   │   │   │   │   │       ├── ui_gameplay.json
│   │   │   │   │   │       ├── ui_level_complete.json
│   │   │   │   │   │       ├── ui_main_menu.json
│   │   │   │   │   │       ├── ui_options.json
│   │   │   │   │   │       ├── ui_pause.json
│   │   │   │   │   │       └── ui_trophies.json
│   │   │   │   │   ├── cdn.fbrq/
│   │   │   │   │   │   └── @orange-games/
│   │   │   │   │   │       └── splash/
│   │   │   │   │   │           └── assets/
│   │   │   │   │   │               ├── jsonnope/
│   │   │   │   │   │               │   ├── contracted.json
│   │   │   │   │   │               │   ├── domains.json
│   │   │   │   │   │               │   ├── games.json
│   │   │   │   │   │               │   ├── internal.json
│   │   │   │   │   │               │   ├── sitelock.json
│   │   │   │   │   │               │   └── special.json
│   │   │   │   │   │               └── spine/
│   │   │   │   │   │                   ├── kizi_skeleton.atlas
│   │   │   │   │   │                   └── kizi_skeleton.json
│   │   │   │   │   ├── index.html
│   │   │   │   │   ├── script.js
│   │   │   │   │   └── version.js
│   │   │   │   ├── vex5/
│   │   │   │   │   ├── assets/
│   │   │   │   │   │   ├── atlas/
│   │   │   │   │   │   │   ├── atlas_gameplay.json
│   │   │   │   │   │   │   ├── atlas_portals.json
│   │   │   │   │   │   │   ├── atlas_transition.json
│   │   │   │   │   │   │   ├── atlas_ui_act_select.json
│   │   │   │   │   │   │   ├── atlas_ui_gameplay.json
│   │   │   │   │   │   │   ├── atlas_ui_lvl_complete.json
│   │   │   │   │   │   │   ├── atlas_ui_main_menu.json
│   │   │   │   │   │   │   ├── atlas_ui_options.json
│   │   │   │   │   │   │   ├── atlas_ui_pause.json
│   │   │   │   │   │   │   ├── atlas_ui_trophies.json
│   │   │   │   │   │   │   └── checkpoint.json
│   │   │   │   │   │   ├── balance/
│   │   │   │   │   │   │   ├── levels/
│   │   │   │   │   │   │   │   ├── hubArrows.json
│   │   │   │   │   │   │   │   ├── level01.json
│   │   │   │   │   │   │   │   ├── level01hard.json
│   │   │   │   │   │   │   │   ├── level02.json
│   │   │   │   │   │   │   │   ├── level02hard.json
│   │   │   │   │   │   │   │   ├── level03.json
│   │   │   │   │   │   │   │   ├── level03hard.json
│   │   │   │   │   │   │   │   ├── level04.json
│   │   │   │   │   │   │   │   ├── level04hard.json
│   │   │   │   │   │   │   │   ├── level05.json
│   │   │   │   │   │   │   │   ├── level05hard.json
│   │   │   │   │   │   │   │   ├── level06.json
│   │   │   │   │   │   │   │   ├── level06hard.json
│   │   │   │   │   │   │   │   ├── level07.json
│   │   │   │   │   │   │   │   ├── level07hard.json
│   │   │   │   │   │   │   │   ├── level08.json
│   │   │   │   │   │   │   │   ├── level08hard.json
│   │   │   │   │   │   │   │   ├── level09.json
│   │   │   │   │   │   │   │   ├── level09hard.json
│   │   │   │   │   │   │   │   ├── level10.json
│   │   │   │   │   │   │   │   ├── levelEdit.json
│   │   │   │   │   │   │   │   └── levelhub.json
│   │   │   │   │   │   │   ├── levelsConfig.json
│   │   │   │   │   │   │   ├── localization.json
│   │   │   │   │   │   │   ├── objectConfig.json
│   │   │   │   │   │   │   └── rooms/
│   │   │   │   │   │   │       ├── room01.json
│   │   │   │   │   │   │       ├── room02.json
│   │   │   │   │   │   │       ├── room03.json
│   │   │   │   │   │   │       ├── room04.json
│   │   │   │   │   │   │       ├── room05.json
│   │   │   │   │   │   │       ├── room06.json
│   │   │   │   │   │   │       ├── room07.json
│   │   │   │   │   │   │       ├── room08.json
│   │   │   │   │   │   │       ├── room09.json
│   │   │   │   │   │   │       ├── room10.json
│   │   │   │   │   │   │       ├── room11.json
│   │   │   │   │   │   │       ├── room12.json
│   │   │   │   │   │   │       ├── room13.json
│   │   │   │   │   │   │       ├── room14.json
│   │   │   │   │   │   │       ├── room15.json
│   │   │   │   │   │   │       ├── room16.json
│   │   │   │   │   │   │       ├── room17.json
│   │   │   │   │   │   │       ├── room18.json
│   │   │   │   │   │   │       ├── room19.json
│   │   │   │   │   │   │       ├── room20.json
│   │   │   │   │   │   │       ├── room21.json
│   │   │   │   │   │   │       ├── room22.json
│   │   │   │   │   │   │       ├── room24.json
│   │   │   │   │   │   │       ├── room25.json
│   │   │   │   │   │   │       ├── room26.json
│   │   │   │   │   │   │       ├── room27.json
│   │   │   │   │   │   │       ├── room28.json
│   │   │   │   │   │   │       ├── room29.json
│   │   │   │   │   │   │       └── room30.json
│   │   │   │   │   │   ├── coco/
│   │   │   │   │   │   │   ├── transition/
│   │   │   │   │   │   │   │   ├── transition_in.json
│   │   │   │   │   │   │   │   ├── transition_out.json
│   │   │   │   │   │   │   │   └── transition_stand.json
│   │   │   │   │   │   │   └── transition.json
│   │   │   │   │   │   ├── css/
│   │   │   │   │   │   │   ├── app.css
│   │   │   │   │   │   │   └── milocha.css
│   │   │   │   │   │   ├── filters/
│   │   │   │   │   │   │   ├── BlurX.js
│   │   │   │   │   │   │   ├── BlurY.js
│   │   │   │   │   │   │   ├── ColorMatrixFilter.js
│   │   │   │   │   │   │   └── Gray.js
│   │   │   │   │   │   ├── images/
│   │   │   │   │   │   │   ├── fonts/
│   │   │   │   │   │   │   │   ├── grob24.fnt
│   │   │   │   │   │   │   │   └── grobred32.fnt
│   │   │   │   │   │   │   └── player/
│   │   │   │   │   │   │       ├── player-crouch.json
│   │   │   │   │   │   │       ├── player-fall-floor.json
│   │   │   │   │   │   │       ├── player-jump-down.json
│   │   │   │   │   │   │       ├── player-jump.json
│   │   │   │   │   │   │       ├── player-run.json
│   │   │   │   │   │   │       ├── player-stop-swim.json
│   │   │   │   │   │   │       ├── player-swim-top.json
│   │   │   │   │   │   │       └── player_rope.json
│   │   │   │   │   │   ├── sounds/
│   │   │   │   │   │   │   ├── achievementUnlocked.ogg
│   │   │   │   │   │   │   ├── blockDestroy.ogg
│   │   │   │   │   │   │   ├── bounce1.ogg
│   │   │   │   │   │   │   ├── buttonClick.ogg
│   │   │   │   │   │   │   ├── cannonEnter.ogg
│   │   │   │   │   │   │   ├── cannonFire.ogg
│   │   │   │   │   │   │   ├── connect.ogg
│   │   │   │   │   │   │   ├── connectHang.ogg
│   │   │   │   │   │   │   ├── death1.ogg
│   │   │   │   │   │   │   ├── death2.ogg
│   │   │   │   │   │   │   ├── ding.ogg
│   │   │   │   │   │   │   ├── downgrade.ogg
│   │   │   │   │   │   │   ├── electricity.ogg
│   │   │   │   │   │   │   ├── fall.ogg
│   │   │   │   │   │   │   ├── fallingBlock.ogg
│   │   │   │   │   │   │   ├── footstep.ogg
│   │   │   │   │   │   │   ├── glassSmash.ogg
│   │   │   │   │   │   │   ├── kickBlock.ogg
│   │   │   │   │   │   │   ├── land.ogg
│   │   │   │   │   │   │   ├── laserFire.ogg
│   │   │   │   │   │   │   ├── menuSong.ogg
│   │   │   │   │   │   │   ├── poleSwing.ogg
│   │   │   │   │   │   │   ├── poleWoosh.ogg
│   │   │   │   │   │   │   ├── slide.ogg
│   │   │   │   │   │   │   ├── splash1.ogg
│   │   │   │   │   │   │   ├── starPickup.ogg
│   │   │   │   │   │   │   ├── vexSong1.ogg
│   │   │   │   │   │   │   ├── vexSong10.ogg
│   │   │   │   │   │   │   ├── vexSong11.ogg
│   │   │   │   │   │   │   ├── vexSong12.ogg
│   │   │   │   │   │   │   ├── vexSong13.ogg
│   │   │   │   │   │   │   ├── vexSong14.ogg
│   │   │   │   │   │   │   ├── vexSong2.ogg
│   │   │   │   │   │   │   ├── vexSong3.ogg
│   │   │   │   │   │   │   ├── vexSong4.ogg
│   │   │   │   │   │   │   ├── vexSong5.ogg
│   │   │   │   │   │   │   ├── vexSong6.ogg
│   │   │   │   │   │   │   ├── vexSong7.ogg
│   │   │   │   │   │   │   ├── vexSong8.ogg
│   │   │   │   │   │   │   ├── vexSong9.ogg
│   │   │   │   │   │   │   ├── wallSlide.ogg
│   │   │   │   │   │   │   └── ziplineFull.ogg
│   │   │   │   │   │   └── ui/
│   │   │   │   │   │       ├── ui_act_select.json
│   │   │   │   │   │       ├── ui_gameplay.json
│   │   │   │   │   │       ├── ui_lvl_complete.json
│   │   │   │   │   │       ├── ui_main_menu.json
│   │   │   │   │   │       ├── ui_options.json
│   │   │   │   │   │       ├── ui_pause.json
│   │   │   │   │   │       └── ui_trophies.json
│   │   │   │   │   ├── index.html
│   │   │   │   │   ├── json/
│   │   │   │   │   │   ├── contracted.json
│   │   │   │   │   │   ├── domains.json
│   │   │   │   │   │   ├── internal.json
│   │   │   │   │   │   ├── sitelock.json
│   │   │   │   │   │   └── special.json
│   │   │   │   │   ├── script.js
│   │   │   │   │   └── version.js
│   │   │   │   └── xx142-b2exe/
│   │   │   │       └── index.html
│   │   │   └── rarch/
│   │   │       ├── assets/
│   │   │       │   ├── base.css
│   │   │       │   ├── base.js
│   │   │       │   ├── charToCodeMap.js
│   │   │       │   ├── controller_layout.xcf
│   │   │       │   ├── info.json
│   │   │       │   ├── jswindow.css
│   │   │       │   └── jswindow.js
│   │   │       ├── genesis_plus_gx_libretro.js
│   │   │       ├── genesis_plus_gx_libretro.wasm
│   │   │       ├── index.html
│   │   │       ├── info/
│   │   │       │   ├── cookiepolicy.html
│   │   │       │   ├── index.html
│   │   │       │   ├── privacy.html
│   │   │       │   └── tos.html
│   │   │       ├── mgba_libretro.js
│   │   │       ├── mgba_libretro.wasm
│   │   │       ├── mupen64plus_next_libretro.js
│   │   │       ├── mupen64plus_next_libretro.wasm
│   │   │       ├── nestopia_libretro.js
│   │   │       ├── nestopia_libretro.wasm
│   │   │       ├── snes9x_libretro.js
│   │   │       ├── snes9x_libretro.wasm
│   │   │       └── uauth/
│   │   │           └── uauth.js
│   │   ├── index.html
│   │   ├── readme.md
│   │   └── search.js
│   ├── gams.html
│   ├── go.html
│   ├── index.html
│   ├── js/
│   │   ├── all.js
│   │   ├── changeSrc.js
│   │   ├── frame.js
│   │   ├── gams.js
│   │   ├── go.js
│   │   ├── load.js
│   │   ├── settings.js
│   │   ├── terms.js
│   │   ├── tos.js
│   │   ├── ub/
│   │   │   └── nav.js
│   │   └── uv.js
│   ├── main.html
│   ├── p.html
│   ├── settings.html
│   ├── sw.js
│   ├── t.html
│   └── uv/
│       ├── uv.bundle.js
│       ├── uv.config.js
│       ├── uv.handler.js
│       ├── uv.index.js
│       └── uv.sw.js
├── package.json
├── render.yaml
├── replit.nix
└── vercel.json

================================================
FILE CONTENTS
================================================

================================================
FILE: .breakpoints
================================================
{
  "files": {}
}

================================================
FILE: .gitattributes
================================================
# Auto detect text files and perform LF normalization
* text=auto


================================================
FILE: .replit
================================================


================================================
FILE: Dockerfile
================================================
FROM node:20.8.1-bullseye-slim
ENV NODE_ENV=production

WORKDIR /app

COPY ["package.json", "./"]

RUN npm install

COPY . .

CMD [ "node", "index.js" ]


================================================
FILE: LICENSE
================================================
GNU AFFERO GENERAL PUBLIC LICENSE
                       Version 3, 19 November 2007

 Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.

                            Preamble

  The GNU Affero General Public License is a free, copyleft license for
software and other kinds of works, specifically designed to ensure
cooperation with the community in the case of network server software.

  The licenses for most software and other practical works are designed
to take away your freedom to share and change the works.  By contrast,
our General Public Licenses are intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users.

  When we speak of free software, we are referring to freedom, not
price.  Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.

  Developers that use our General Public Licenses protect your rights
with two steps: (1) assert copyright on the software, and (2) offer
you this License which gives you legal permission to copy, distribute
and/or modify the software.

  A secondary benefit of defending all users' freedom is that
improvements made in alternate versions of the program, if they
receive widespread use, become available for other developers to
incorporate.  Many developers of free software are heartened and
encouraged by the resulting cooperation.  However, in the case of
software used on network servers, this result may fail to come about.
The GNU General Public License permits making a modified version and
letting the public access it on a server without ever releasing its
source code to the public.

  The GNU Affero General Public License is designed specifically to
ensure that, in such cases, the modified source code becomes available
to the community.  It requires the operator of a network server to
provide the source code of the modified version running there to the
users of that server.  Therefore, public use of a modified version, on
a publicly accessible server, gives the public access to the source
code of the modified version.

  An older license, called the Affero General Public License and
published by Affero, was designed to accomplish similar goals.  This is
a different license, not a version of the Affero GPL, but Affero has
released a new version of the Affero GPL which permits relicensing under
this license.

  The precise terms and conditions for copying, distribution and
modification follow.

                       TERMS AND CONDITIONS

  0. Definitions.

  "This License" refers to version 3 of the GNU Affero General Public License.

  "Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.

  "The Program" refers to any copyrightable work licensed under this
License.  Each licensee is addressed as "you".  "Licensees" and
"recipients" may be individuals or organizations.

  To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy.  The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.

  A "covered work" means either the unmodified Program or a work based
on the Program.

  To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy.  Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.

  To "convey" a work means any kind of propagation that enables other
parties to make or receive copies.  Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.

  An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License.  If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.

  1. Source Code.

  The "source code" for a work means the preferred form of the work
for making modifications to it.  "Object code" means any non-source
form of a work.

  A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.

  The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form.  A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.

  The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities.  However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work.  For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.

  The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.

  The Corresponding Source for a work in source code form is that
same work.

  2. Basic Permissions.

  All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met.  This License explicitly affirms your unlimited
permission to run the unmodified Program.  The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work.  This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.

  You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force.  You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright.  Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.

  Conveying under any other circumstances is permitted solely under
the conditions stated below.  Sublicensing is not allowed; section 10
makes it unnecessary.

  3. Protecting Users' Legal Rights From Anti-Circumvention Law.

  No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.

  When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.

  4. Conveying Verbatim Copies.

  You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.

  You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.

  5. Conveying Modified Source Versions.

  You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:

    a) The work must carry prominent notices stating that you modified
    it, and giving a relevant date.

    b) The work must carry prominent notices stating that it is
    released under this License and any conditions added under section
    7.  This requirement modifies the requirement in section 4 to
    "keep intact all notices".

    c) You must license the entire work, as a whole, under this
    License to anyone who comes into possession of a copy.  This
    License will therefore apply, along with any applicable section 7
    additional terms, to the whole of the work, and all its parts,
    regardless of how they are packaged.  This License gives no
    permission to license the work in any other way, but it does not
    invalidate such permission if you have separately received it.

    d) If the work has interactive user interfaces, each must display
    Appropriate Legal Notices; however, if the Program has interactive
    interfaces that do not display Appropriate Legal Notices, your
    work need not make them do so.

  A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit.  Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.

  6. Conveying Non-Source Forms.

  You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:

    a) Convey the object code in, or embodied in, a physical product
    (including a physical distribution medium), accompanied by the
    Corresponding Source fixed on a durable physical medium
    customarily used for software interchange.

    b) Convey the object code in, or embodied in, a physical product
    (including a physical distribution medium), accompanied by a
    written offer, valid for at least three years and valid for as
    long as you offer spare parts or customer support for that product
    model, to give anyone who possesses the object code either (1) a
    copy of the Corresponding Source for all the software in the
    product that is covered by this License, on a durable physical
    medium customarily used for software interchange, for a price no
    more than your reasonable cost of physically performing this
    conveying of source, or (2) access to copy the
    Corresponding Source from a network server at no charge.

    c) Convey individual copies of the object code with a copy of the
    written offer to provide the Corresponding Source.  This
    alternative is allowed only occasionally and noncommercially, and
    only if you received the object code with such an offer, in accord
    with subsection 6b.

    d) Convey the object code by offering access from a designated
    place (gratis or for a charge), and offer equivalent access to the
    Corresponding Source in the same way through the same place at no
    further charge.  You need not require recipients to copy the
    Corresponding Source along with the object code.  If the place to
    copy the object code is a network server, the Corresponding Source
    may be on a different server (operated by you or a third party)
    that supports equivalent copying facilities, provided you maintain
    clear directions next to the object code saying where to find the
    Corresponding Source.  Regardless of what server hosts the
    Corresponding Source, you remain obligated to ensure that it is
    available for as long as needed to satisfy these requirements.

    e) Convey the object code using peer-to-peer transmission, provided
    you inform other peers where the object code and Corresponding
    Source of the work are being offered to the general public at no
    charge under subsection 6d.

  A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.

  A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling.  In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage.  For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product.  A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.

  "Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source.  The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.

  If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information.  But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).

  The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed.  Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.

  Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.

  7. Additional Terms.

  "Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law.  If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.

  When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it.  (Additional permissions may be written to require their own
removal in certain cases when you modify the work.)  You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.

  Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:

    a) Disclaiming warranty or limiting liability differently from the
    terms of sections 15 and 16 of this License; or

    b) Requiring preservation of specified reasonable legal notices or
    author attributions in that material or in the Appropriate Legal
    Notices displayed by works containing it; or

    c) Prohibiting misrepresentation of the origin of that material, or
    requiring that modified versions of such material be marked in
    reasonable ways as different from the original version; or

    d) Limiting the use for publicity purposes of names of licensors or
    authors of the material; or

    e) Declining to grant rights under trademark law for use of some
    trade names, trademarks, or service marks; or

    f) Requiring indemnification of licensors and authors of that
    material by anyone who conveys the material (or modified versions of
    it) with contractual assumptions of liability to the recipient, for
    any liability that these contractual assumptions directly impose on
    those licensors and authors.

  All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10.  If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term.  If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.

  If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.

  Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.

  8. Termination.

  You may not propagate or modify a covered work except as expressly
provided under this License.  Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).

  However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.

  Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.

  Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License.  If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.

  9. Acceptance Not Required for Having Copies.

  You are not required to accept this License in order to receive or
run a copy of the Program.  Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance.  However,
nothing other than this License grants you permission to propagate or
modify any covered work.  These actions infringe copyright if you do
not accept this License.  Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.

  10. Automatic Licensing of Downstream Recipients.

  Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License.  You are not responsible
for enforcing compliance by third parties with this License.

  An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations.  If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.

  You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License.  For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.

  11. Patents.

  A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based.  The
work thus licensed is called the contributor's "contributor version".

  A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version.  For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.

  Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.

  In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement).  To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.

  If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients.  "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.

  If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.

  A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License.  You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.

  Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.

  12. No Surrender of Others' Freedom.

  If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License.  If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all.  For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.

  13. Remote Network Interaction; Use with the GNU General Public License.

  Notwithstanding any other provision of this License, if you modify the
Program, your modified version must prominently offer all users
interacting with it remotely through a computer network (if your version
supports such interaction) an opportunity to receive the Corresponding
Source of your version by providing access to the Corresponding Source
from a network server at no charge, through some standard or customary
means of facilitating copying of software.  This Corresponding Source
shall include the Corresponding Source for any work covered by version 3
of the GNU General Public License that is incorporated pursuant to the
following paragraph.

  Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU General Public License into a single
combined work, and to convey the resulting work.  The terms of this
License will continue to apply to the part which is the covered work,
but the work with which it is combined will remain governed by version
3 of the GNU General Public License.

  14. Revised Versions of this License.

  The Free Software Foundation may publish revised and/or new versions of
the GNU Affero General Public License from time to time.  Such new versions
will be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.

  Each version is given a distinguishing version number.  If the
Program specifies that a certain numbered version of the GNU Affero General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation.  If the Program does not specify a version number of the
GNU Affero General Public License, you may choose any version ever published
by the Free Software Foundation.

  If the Program specifies that a proxy can decide which future
versions of the GNU Affero General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.

  Later license versions may give you additional or different
permissions.  However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.

  15. Disclaimer of Warranty.

  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

  16. Limitation of Liability.

  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.

  17. Interpretation of Sections 15 and 16.

  If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.

                     END OF TERMS AND CONDITIONS

            How to Apply These Terms to Your New Programs

  If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.

  To do so, attach the following notices to the program.  It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.

    <one line to give the program's name and a brief idea of what it does.>
    Copyright (C) <year>  <name of author>

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU Affero General Public License as published
    by the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU Affero General Public License for more details.

    You should have received a copy of the GNU Affero General Public License
    along with this program.  If not, see <https://www.gnu.org/licenses/>.

Also add information on how to contact you by electronic and paper mail.

  If your software can interact with users remotely through a computer
network, you should also make sure that it provides a way for users to
get its source.  For example, if your program is a web application, its
interface could display a "Source" link that leads users to an archive
of the code.  There are many ways you could offer source, and different
solutions will be better for different programs; see section 13 for the
specific requirements.

  You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU AGPL, see
<https://www.gnu.org/licenses/>.


================================================
FILE: Procfile
================================================
web:npm start


================================================
FILE: README.md
================================================
# Utopia
Utopia Unblocker unblocks hundreds of millions of websites and bypasses web restrictions with ease.
The most revolutionary proxy service out there, adding unprecendented technology and algorithms to circumvent blocks.

Trusted by over **22 million users** and counting.

## Special Features
These features can be enabled/disabled in the Settings page in Utopia:
 * **🔒 Hidden Mode**
   * Utopia revolutionized the world by being the first ever website to have about:blank cloaking
   * **Hides Utopia completely from your history** and **prevents extensions** such as GoGuardian **from seeing your screen**
 * **🚫 Anti-Closing**
   - Prevents extensions such as GoGuardian from closing the tab you're on
 * **🎭 Tab Cloak**
   - Disguises the tab you're on as something else, such as Google Classroom, Drive, Gmail, etc.
 * **⚡ Quick Links**
   * Access websites faster than ever with a click of a button
 * **🎨 Themes**
   * Personalize Utopia with countless high-quality themes
* **🔍 Search Engine**
   * Switch between Google, DuckDuckGo, and more.
* **📑 Tabs System**
   * See site URL, title, and icon while browsing for smoother navigation.
* **🚫 Experimental Ad Blocker**
   * Blocks ads globally, meaning a faster and privacy-focused browing experience.
* **🛠 Dev Tools**
   * Access an integrated dev panel by clicking the ⚙️ icon while browsing.
* **And more to come...**

---
## 📦 Deployment
Easily deploy your own instance of Utopia using one of the platforms below:

[![Run on Replit](https://raw.githubusercontent.com/BinBashBanana/deploy-buttons/master/buttons/remade/replit.svg)](https://replit.com/github/UtopiaUnblocker/Utopia)
<br>
[![Deploy to Heroku](https://raw.githubusercontent.com/BinBashBanana/deploy-buttons/master/buttons/remade/heroku.svg)](https://heroku.com/deploy/?template=https://github.com/UtopiaUnblocker/Utopia)
<br>
[![Deploy to IBM Cloud](https://raw.githubusercontent.com/BinBashBanana/deploy-buttons/master/buttons/remade/ibmcloud.svg)](https://cloud.ibm.com/devops/setup/deploy?repository=https://github.com/UtopiaUnblocker/Utopia)
<br>
[![Deploy to Amplify Console](https://raw.githubusercontent.com/BinBashBanana/deploy-buttons/master/buttons/remade/amplifyconsole.svg)](https://console.aws.amazon.com/amplify/home#/deploy?repo=https://github.com/UtopiaUnblocker/Utopia)
<br>
[![Run on Google Cloud](https://raw.githubusercontent.com/BinBashBanana/deploy-buttons/master/buttons/remade/googlecloud.svg)](https://deploy.cloud.run/?git_repo=https://github.com/UtopiaUnblocker/Utopia)
<br>
[![Remix on Glitch](https://binbashbanana.github.io/deploy-buttons/buttons/remade/glitch.svg)](https://glitch.com/edit/#!/import/github/UtopiaUnblocker/Utopia)
<br>
[![Deploy To Koyeb](https://binbashbanana.github.io/deploy-buttons/buttons/remade/koyeb.svg)](https://app.koyeb.com/deploy?type=git&repository=github.com/UtopiaUnblocker/Utopia&branch=main&name=Utopia)

### Manual Setup
```bash
# Clone the repository
git clone https://github.com/UtopiaUnblocker/Utopia.git
cd Utopia

# Install dependencies
npm install

# Start the server
npm start
```

---
## 💬 Community & Support
Need help deploying or want to suggest features?
- Join the official Discord: **[discord.gg/hFZC5cgsmq](https://discord.gg/hFZC5cgsmq)**

[![Join us on Discord](https://invidget.switchblade.xyz/hFZC5cgsmq?theme=dark)](https://discord.gg/unblockers)

---
<p align="center">
  <strong>⭐ Star this repository if Utopia helps you!</strong>
</p>


================================================
FILE: app.json
================================================
{
    "name": "Utopia Unblocker"
}


================================================
FILE: config.json
================================================
{
  "port": "8080"
}


================================================
FILE: index.js
================================================
(async() => {
    await import('./index.mjs');
  })();


================================================
FILE: index.mjs
================================================
import createServer from '@tomphttp/bare-server-node';
import http from 'http';
import nodeStatic from 'node-static';
const port = process.env.PORT || 8080;

const bare =  createServer('/bare/');
const serve = new nodeStatic.Server('main/');

const server = http.createServer();

server.on('request', (req, res) => {
  if (bare.shouldRoute(req)) {
    bare.routeRequest(req, res);
  } else {
    serve.serve(req, res);
  }
});

server.on('upgrade', (req, socket, head) => {
  if (bare.shouldRoute(req, socket, head)) {
    bare.routeUpgrade(req, socket, head);
  }else{
    socket.end();
  }
});

server.listen({
  port: port,
});

console.log(`Listening on http://localhost:${port}`)


================================================
FILE: main/404.html
================================================
<!DOCTYPE HTML>
<html>
<head>
  <meta charset="utf-8">
  <meta name="description" content="An educational website full of school topics and academic resources. The perfect place for students to learn.">
  <meta name="keywords" content="math, science, ela, social studies, school, study">
  <meta name="viewport" content="width=device-width">
  <title>Utopia U‍‍n‍‍b‍‍‍Io‍‍ck‍‍‍e‍r - Err‍or</title>
  <script async src="https://arc.io/widget.min.js#r3Hj6Ygj"></script>
  <link rel="shortcut icon" type="image/png" href="/favicon.ico">
  <link rel="icon" type="image/png" href="/favicon.ico">
  <link href="/css/style.css" rel="stylesheet" type="text/css" />
  <link href="/css/nav.css" rel="stylesheet" type="text/css" />
  <link rel="preconnect" href="https://fonts.googleapis.com">
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
  <link href="https://fonts.googleapis.com/css2?family=Raleway:wght@100;200;300;400;500;600;700;800;900&display=swap" rel="stylesheet">
  <link href="https://fonts.googleapis.com/css2?family=Fredoka+One&display=swap" rel="stylesheet">
  <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
  <link href="https://fonts.googleapis.com/css2?family=Roboto+Mono&display=swap" rel="stylesheet">
  <script src="/js/all.js"></script>
  <script async src="https://www.googletagmanager.com/gtag/js?id=G-RD0VC48YMW"></script>
  <script>
    window.dataLayer = window.dataLayer || [];
    function gtag(){dataLayer.push(arguments);}
    gtag('js', new Date());

    gtag('config', 'G-RD0VC48YMW');
  </script>
</head>
<body>
  <navbar class="navbar">
    <div class="title"><a href="/">
      <img src="/img/logo.png">topia U‍‍n‍‍b‍‍‍Io‍‍ck‍‍‍e‍r
    </a></div>
    <div class="pages">
      <ul>
        <li><a href="/t.html" class="terms" id="pageHover" target="_blank">ToS</a></li>
        <li><a href="/p.html" class="terms" id="pageHover" target="_blank">Privacy Policy</a></li>
        <li><a href="/gams/" id="pageHover">Games</a></li>
        <li><a href="/g.html" id="pageHover">Google</a></li>
        <li><a href="/y.html" id="pageHover">Y‍ou‍t‍u‍be</a></li>
        <li><a href="/r.html" id="pageHover">R‍e‍‍d‍d‍‍i‍t</a></li>
      </ul>
      <span class="hamburger">
        <span class="material-icons" id="menuBtn">menu</span>
      </span>
    </div>
  </navbar>
  <script src="/js/ub/nav.js"></script>

  <div class="center" id="mainContent">
    <span class="title">Page Not Found</span>
    <p>404 error<br>It seems like this page doesn't exist.</p>
    <p><a href="/">Go back to homepage</a></p>
  </div>

  <div class="facts">
    <h1>Schoolwork: ELA, Science, History, Math, Literature, Social Studies, and Writing</h1>
    <h2>School has many educational resources where you can learn, study, and gain knowledge.</h2>
    <h3>Research historical events. Analyze scientific experiments. Explain the historical importance. Solve with the quadratic formula. Find the theme of the literature. Learn about George Washington in social studies. Write an essay about homework.</h3>
  </div>
</body>
</html>

================================================
FILE: main/arc-sw.js
================================================
!function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=93)}({3:function(t,e,n){"use strict";n.d(e,"a",(function(){return r})),n.d(e,"c",(function(){return o})),n.d(e,"g",(function(){return i})),n.d(e,"j",(function(){return a})),n.d(e,"i",(function(){return d})),n.d(e,"b",(function(){return f})),n.d(e,"k",(function(){return u})),n.d(e,"d",(function(){return p})),n.d(e,"e",(function(){return l})),n.d(e,"f",(function(){return m})),n.d(e,"h",(function(){return v}));var r={images:["bmp","jpeg","jpg","ttf","pict","svg","webp","eps","svgz","gif","png","ico","tif","tiff","bpg","avif","jxl"],video:["mp4","3gp","webm","mkv","flv","f4v","f4p","f4bogv","drc","avi","mov","qt","wmv","amv","mpg","mp2","mpeg","mpe","m2v","m4v","3g2","gifv","mpv","av1","ts","tsv","tsa","m2t","m3u8"],audio:["mid","midi","aac","aiff","flac","m4a","m4p","mp3","ogg","oga","mogg","opus","ra","rm","wav","webm","f4a","pat"],interchange:["json","yaml","xml","csv","toml","ini","bson","asn1","ubj"],archives:["jar","iso","tar","tgz","tbz2","tlz","gz","bz2","xz","lz","z","7z","apk","dmg","rar","lzma","txz","zip","zipx"],documents:["pdf","ps","doc","docx","ppt","pptx","xls","otf","xlsx"],other:["srt","swf"]},o=["js","cjs","mjs","css"],c="arc:",i={COMLINK_INIT:"".concat(c,"comlink:init"),NODE_ID:"".concat(c,":nodeId"),CLIENT_TEARDOWN:"".concat(c,"client:teardown"),CLIENT_TAB_ID:"".concat(c,"client:tabId"),CDN_CONFIG:"".concat(c,"cdn:config"),P2P_CLIENT_READY:"".concat(c,"cdn:ready"),STORED_FIDS:"".concat(c,"cdn:storedFids"),SW_HEALTH_CHECK:"".concat(c,"cdn:healthCheck"),WIDGET_CONFIG:"".concat(c,"widget:config"),WIDGET_INIT:"".concat(c,"widget:init"),WIDGET_UI_LOAD:"".concat(c,"widget:load"),BROKER_LOAD:"".concat(c,"broker:load"),RENDER_FILE:"".concat(c,"inlay:renderFile"),FILE_RENDERED:"".concat(c,"inlay:fileRendered")},a="serviceWorker",d="/".concat("shared-worker",".js"),f="/".concat("dedicated-worker",".js"),u="/".concat("arc-sw-core",".js"),s="".concat("arc-sw",".js"),p=("/".concat(s),"/".concat("arc-sw"),"arc-db"),l="key-val-store",m=2**17,v="".concat("https://warden.arc.io","/mailbox/propertySession");"".concat("https://warden.arc.io","/mailbox/transfers")},93:function(t,e,n){"use strict";n.r(e);var r=n(3);if("undefined"!=typeof ServiceWorkerGlobalScope){var o="https://arc.io"+r.k;importScripts(o)}else if("undefined"!=typeof SharedWorkerGlobalScope){var c="https://arc.io"+r.i;importScripts(c)}else if("undefined"!=typeof DedicatedWorkerGlobalScope){var i="https://arc.io"+r.b;importScripts(i)}}});

================================================
FILE: main/css/nav.css
================================================
.notransition {
  -webkit-transition: none !important;
  -moz-transition: none !important;
  -o-transition: none !important;
  transition: none !important;
}

.navbar {
  display: flex; /* flex nav */
  background-color: rgb(40, 40, 40); /* bkg color */
  position: relative; /* content fits */
  justify-content: space-between; /* text at left and right */
  align-items: center; /* vertical centering */
  /*height: 55px; /* sets height */
  /*height: 58px;*/
  height: 60px;
  font-family: 'Raleway', sans-serif;
}

.navbar .title {
  transition-duration: 0.2s;
  font-family: 'Montserrat';
  font-weight: 500;
  font-size: 1.8rem;
  letter-spacing: 0.05rem;
  display: block;
  /*color: rgb(110,140,150);*/
  color: rgb(90,120,130);
  margin: 15px;
  margin-left: 5vw;
}

.navbar .title img {
  height: 20px;
  transform: scale(1.8);
  margin-right: 10px;
}

.navbar .title:hover {
  opacity: 0.8;
}

.navbar .title a {
  color: inherit;
  text-decoration: none;
}

.navbar .pages {
  float: right;
  font-size: 1.05rem;
  margin-right: 10px;
}

.navbar .pages ul {
  display: flex; /* horizontal align */
  margin-right: 2vw;
  align-items: center;
}

.navbar .pages li {
  list-style: none;
  display: block; /* hide dots */
  margin: 20px;
}

.navbar .pages a, .navbar .pages span {
  color: rgb(220, 220, 220);
  text-decoration: none;
  list-style: none;

  transition-duration: 0.2s;
  -webkit-transition-duration: 0.2s;
  -moz-transition-duration: 0.2s;
  -o-transition-duration: 0.2s;
}

.navbar .pages #pageHover:hover {
  color: white;
  text-shadow: 2px 2px 5px rgba(250, 250, 250, 0.7);
}

.navbar .pages .terms {
  color: rgb(170,170,170);
}

.navbar .pages .terms:hover {
  color: rgb(200,200,200) !important;
  text-shadow: 2px 2px 5px rgb(195, 195, 195) !important;
}

.navbar .pages .navBtn {
  cursor: pointer;
  color: rgb(160,190,200);
}

.navbar .pages .navBtn:hover {
  cursor: pointer;
  color: rgb(190,220,230) !important;
  text-shadow: 2px 2px 5px rgb(185, 215, 225) !important;
}

.disc {
  color: rgb(145,170,185) !important;
}

.disc:hover {
  color: rgb(160,185,200) !important;
  text-shadow: 2px 2px 5px rgb(160,185,200, 0.7) !important;
}

.navbar .material-symbols-outlined {
  vertical-align: middle;
  margin-top: -2px;
}

.dropdown {
  position: relative;
  display: inline-block;
}

.dropdown:hover {
  cursor: pointer;
}

.dropdown-links {
  display: none;
  opacity: 0;
  position: absolute;
  background-color: rgb(45, 45, 45);
  min-width: 160px;
  box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
  z-index: 1;
}

.dropdown-links a {
  text-align: center;
  color: rgb(170, 170, 170) !important;
  padding: 12px 16px;
  text-decoration: none;
  display: block;
}

.dropdown-links a:hover {
  color: rgb(215, 215, 215) !important;
  background-color: rgb(65, 65, 65);
}

@keyframes dropdownFadeIn {
  from {
    margin-top: -10%;
    opacity: 0;
  }
  to {
    margin-top: 0;
    opacity: 1;
  }
}

@keyframes dropdownFadeOut {
  from {
    margin-top: 0;
    opacity: 1;
  }
  to {
    margin-top: -10%;
    opacity: 0;
  }
}

.navbar .hamburger {
  display: none;
  position: absolute;
  color: white;
  right: 20px;
  transform: scale(1.5);
  cursor: pointer;
  justify-content: space-between;

  user-select: none;
  -ms-user-select: none;
  -moz-user-select: none;
  -webkit-user-select: none;

  transition-duration: 0.3s;
  -webkit-transition-duration: 0.3s;
  -moz-transition-duration: 0.3s;
  -o-transition-duration: 0.3s;
}

.navbar .hamburger:hover {
  color: rgb(225, 225, 225);
}

/* RESPONSIVE */
@media (max-width: 700px) { /* 700px */
  .navbar .hamburger {
    display: flex;
  }

  .navbar {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    flex-wrap: wrap;
  }

  .navbar .pages {
    display: flex;
    width: 100vw;
    margin: 0 !important;
    padding: 0 !important;
  }

  .pages ul {
    width: 100vw;
    flex-direction: column;
    background-color: gray;
  }

  .pages ul li {
    text-align: center;
    margin: 0 !important;
    padding: 0 !important;
    width: 100%;
  }

  .pages ul li a {
    display: none;
    width: 100%;
    padding: 15px 0;
  }

  .show {
    display: block !important;
  }

  /* overwrite hover animation */
  .navbar .pages #pageHover:hover {
    /* remove animation */
    color: rgb(220, 220, 220);
    text-shadow: none !important;
    /* new animation */
    background-color: rgb(115, 115, 115);
  }
  
}


================================================
FILE: main/css/style.css
================================================
:root {
  --col: rgb(160, 32, 240); /*  */
}

* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

html {
  height: 100vh;
}

@keyframes fadeIn {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}

body {
  background: linear-gradient(rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0.5)), url('/img/space-tint.png');
  width: 100%;
  height: 100%;
  background-attachment: fixed;
  background-position: center;
  background-repeat: no-repeat;
  background-size: cover;
  overflow-x: hidden;
  
  /*background-color: rgba(0,0,0,0.5);
  background-blend-mode: multiply;*/
  
  animation: 0.7s fadeIn;
  background-color: #081d28;
  
  font-family: 'Montserrat';
}

.center {
  display: flex;
  justify-content: center;
  align-items: center;
  color: white;
  margin: 0;
  height: calc(100% - 135px);
  text-align: center;
}

.center img {
  vertical-align: middle;
  margin-right: 15px;
}

.horizon-center {
  display: flex;
  justify-content: center;
  text-align: center;
  margin-top: 50px;
}

br {
  -webkit-user-select: none; /* Safari */
  -ms-user-select: none; /* IE 10+ */
  user-select: none;
}

#mainContent {
  color: white;
  animation: 0.7s fadeIn;
  text-align: center;
  /*font-family: Roboto Mono;*/
  /*padding: 30px 50px;
  background-color: rgba(0,0,0,0.6);
  border-radius: 5px;*/
}

#gamContent {
  margin: auto;
  margin-top: 50px !important;
  font-family: 'Montserrat';
  color: lightgray;
  padding: 30px 50px;
  text-align: center;
  align-items: center;
}

#gamContent #glist {
  /*line-height: 1.75;*/
  display: flex;
  flex-wrap: wrap;
  flex-direction: row;
  justify-content: space-evenly;
}

#gamContent h2 {
  margin-top: 50px;
  margin-bottom: 12px;
  flex-basis: 100%;
}

#gamContent .results {
  font-size: 13px;
  padding-top: 7px !important;
  display: none;
}

#gamContent img {
  vertical-align: middle;
  margin-right: 15px;
}

#gamContent .material-icons {
  font-size: 100%;
  vertical-align: middle;
}

#mainContent .title {
  /*color: rgb(110,140,150);*/
  color: rgb(90,120,130);
  /*font-weight: bold;*/
  font-size: 65px;
}

#gamContent .title {
  color: rgb(90,120,130);
  font-weight: 400;
  font-size: 60px;
}

#gamContent a {
  transition-duration: 0.2s;
  text-decoration: none;
  color: rgb(110, 150, 160);
  position: relative;
  text-align: center;
  display: inline-block;
  flex-grow: 0;
  flex-shrink: 0;
  padding: 15px;
  margin: 10px 20px;
  font-size: 15px;
  background-color: rgba(0,0,0,0.4);
  border-radius: 200px;
}

#gamContent a:hover {
  background-color: rgba(0,0,0,0.7);
}

#gamContent a:nth-child(4n):after {
  content: "";
  display: block;
  height: 0;
  width: 1px;
}

#mainContent strong {
  color: rgb(230, 230, 230);
}

#mainContent selected {
  font-weight: 900;
}

#mainContent .blackBtn {
  display: inline-block;
  text-decoration: none;
  font-size: 12px;
  width: fit-content;
  margin: auto;
  user-select: none;
  vertical-align: middle;
  padding: 5px 10px;
  background-color: rgba(0,0,0, 0.5);
  box-shadow: inset 0 0 3px 1px rgba(200, 200, 200, 0.5);
  border-radius: 200px;
  color: rgb(160,160,160);
  transition-duration: 0.3s;
}

#mainContent .blackBtn:hover {
  cursor: pointer;
  color: rgb(175,175,175);
  box-shadow: inset 0 0 3px 1px rgba(255,255,255,0.5);
  transform: scale(1.04);
}

#mainContent #disc {
  color: rgb(115,138,155);
  text-shadow: 0 0 4px gray;
  box-shadow: inset 0 0 3px 1px rgba(195,218,235, 0.5);
}

#mainContent #disc:hover {
  color: rgb(130,153,170);
  box-shadow: inset 0 0 3px 1px rgba(215,238,255, 0.5);
}

#mainContent #disc img {
  margin-right: 7px;
}


#mainContent .material-symbols-outlined {
  font-size: 14px;
  vertical-align: middle;
  margin-top: -2px;
}

#mainContent input[type=text], #gamContent input[type=text] {
  margin-top: 15px;
  margin-bottom: 12px;
  padding: 10px;
  width: 310px;
  height: 56px;
  /*border-radius: 7px;*/
  border-radius: 200px;
  /*border: 1px solid rgb(150,150,150);*/
  border: 2px solid rgb(60,90,100);
  outline: none;
  /*background-color: rgb(240, 240, 240);*/
  background-color: rgba(0,0,0,0.5);
  box-shadow: 0 0 3px 1px rgb(60,90,100);
  color: lightgray;
  text-align: center;
  font-size: 20px;
  font-family: 'Montserrat';
  font-weight: 200;
  transition-duration: 0.3s;
}

#mainContent input[type=text]:focus {
  width: 350px;
  height: 50px;
  box-shadow: 0 0 4px 2px rgb(60,90,100);
  margin-top: 18px;
  margin-bottom: 15px;
}

#mainContent input[type=text]::placeholder, #gamContent input[type=text]::placeholder {
  transition-duration: 0.3s;
  color: rgb(105,105,105);
  font-weight: 400;
  user-select: none;
}

#mainContent input[type=text]:focus::placeholder, #gamContent input[type=text]:focus::placeholder {
  color: transparent;
}

#mainContent .submit {
  transition-duration: 0.2s;
  background-color: rgb(80,105,130);
  color: lightgray;
  outline: none;
  border: none;
  /*font-size: 15px;*/
  font-size: 13px;
  padding: 12px 15px;
  /*border-radius: 5px;*/
  border-radius: 200px;
  cursor: pointer;
}

#mainContent .submit:hover {
  opacity: 0.9;
}

#mainContent a {
  transition-duration: 0.2s;
  color: rgb(80, 120, 130);
}

#mainContent a:hover {
  color: rgb(95, 135, 145);
}

.settings {
  margin-top: 25px;
  margin-bottom: 25px;
  width: 90vw;
  display: flex;
  flex-wrap: wrap;
  flex-direction: row;
  justify-content: space-evenly;
}

.setting {
  position: relative;
  display: flex;
  align-items: center;
  align-content: center;
  justify-content: center;
  text-align: center;
  flex-wrap: wrap;
  flex-direction: row;
  flex-grow: 0;
  flex-shrink: 0;
  background-color: rgba(0, 20, 30, 0.7);
  width: 350px;
  height: 230px;
  margin-bottom: 25px;
  padding: 15px;
  border-radius: 15px;
  border: 2px solid rgb(40,70,80);
  box-shadow: 0 0 3px 1px rgb(40,70,80);
  color: rgb(190,190,190);
  transition-duration: 0.3s;
}

.setting:hover {
  box-shadow: 0 0 5px 2px rgb(40,70,80);
}

.setting #name {
  vertical-align: middle;
  position: absolute;
  top: 22px;
  transform: translateY(50%);
  width: calc(100% - 30px);
  color: rgb(200,200,200);
  font-weight: bold;
  font-size: 1.4rem;
}

@keyframes appear {
  from  { opacity: 1; }
  to { opacity: 1; }
}

.appear {
  animation: 1s appear 0.05s;
}

.setting #saved {
  color: rgb(140,163,176);
  opacity: 0;
  position: absolute;
  bottom: 13px;
  width: 100%;
  font-size: 0.7rem;
}

.setting #name + p {
  font-size: 15px;
  position: absolute;
  top: 50%;
  transform: translateY(calc(-50% - 10px));
  width: calc(100% - 30px);
}

.setting #details {
  position: absolute;
  /*top: calc(30% + 41px);*/
  top: calc(30% + 33px);
}

.setting #detailBtn {
  font-size: 13px;
  text-decoration: underline;
  color: rgb(140, 140, 140);
  transition-duration: 0.2s;
  cursor: pointer;
}

.setting #detailBtn:hover {
  filter: brightness(90%);
}

.setting #removeBtn {
  display: none;
  margin-left: 12px;
  font-size: 13px;
  color: rgb(180, 100, 100);
  transition-duration: 0.2s;
  cursor: pointer;
}

.setting #removeBtn:hover {
  filter: brightness(90%);
}

.setting #openBlank {
  display: none;
  position: absolute;
  top: 138px;
  font-size: 13px;
  text-decoration: underline;
  color: rgb(170, 185, 205);
  transition-duration: 0.2s;
  cursor: pointer;
}

.setting #openBlank:hover {
  filter: brightness(90%);
}

.setting img {
  user-select: none;
  vertical-align: middle;
}

.setting .tab {
  user-select: none;
  cursor: pointer;
  transition-duration: 0.2s;
}

.setting .tab:not(#cancel) {
  margin: 0 4px;
}

.setting .tab:hover {
  transform: scale(1.125);
}

.setting .tab:active {
  transform: scale(0.95);
}

.setting #fact {
  font-size: 0.6rem;
  font-style: italic;
}

.setting input[type=checkbox]{
	height: 0;
	width: 0;
	visibility: hidden;
}

.setting label {
  position: absolute;
  bottom: 30px;
	cursor: pointer;
	text-indent: -9999px;
	width: 56px;
	height: 30px;
	/*background: rgb(55, 70, 90);*/
  background: linear-gradient(to right, rgb(55, 70, 90), rgb(80, 95, 115));
	display: block;
	border-radius: 100px;
  box-shadow: 0 0 8px rgba(0,0,0,0.3);
  transition: 0.3s;
}

.setting label:after {
	content: '';
	position: absolute;
	top: 4px;
	left: 5px;
	width: 22px;
	height: 22px;
	background: #fff;
	border-radius: 90px;
	transition: 0.3s;
  box-shadow: 0 0 8px rgba(0,0,0,0.3);
}

.setting input:checked + label {
	/*background: rgb(2, 110, 133);*/
  background: linear-gradient(to left, rgb(0, 75, 98), rgb(2, 110, 133));
}

.setting input:checked + label:after {
	left: calc(100% - 5px);
	transform: translateX(-100%);
}

.setting label:active:after {
	width: 26px;
}


#loading {
  display: none;
  align-items: center;
  justify-content: center;
  align-content: center;
  flex-wrap: wrap;
  flex-direction: row;
  color: rgb(200,200,200);
  font-size: 13px;
  gap: 8px;
  margin-bottom: 15px;
}
.loader {
  width: 20px;
  height: 20px;
  border-radius: 50%;
  display: inline-block;
  position: relative;
  border: 2px solid;
  border-color: rgb(200,200,200) transparent;
  box-sizing: border-box;
  animation: rotation 1.4s linear infinite;
}
.loader::after {
  content: '';  
  box-sizing: border-box;
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  bottom: 0;
  margin: auto;
  border: 2px solid;
  border-color: transparent rgb(150,150,150);
  width: 75%;
  height: 75%;
  border-radius: 50%;
  animation: rotationBack 0.7s linear infinite;
  transform-origin: center center;
}
@keyframes rotation {
  0% {transform: rotate(0deg);}
  100% {transform: rotate(360deg);}
}  
@keyframes rotationBack {
  0% {transform: rotate(0deg);}
  100% {transform: rotate(-360deg);}
}


.bottomText {
  display: flex;
  justify-content: space-between;
  align-items: center;
  bottom: 5px;
  padding: 0 15px;
  flex-direction: row;
  position: absolute;
  color: rgb(200,200,200);
  width: 100%;
  font-size: 14px;
}

.bottomText #links a {
  color: rgb(160,160,160);
  margin-left: 15px;
  transition-duration: 0.3s;
}

.bottomText #links a:hover {
  filter: brightness(85%);
}

.tosMsg {
  position: absolute;
  bottom: 0;
  background-color: rgb(25, 25, 25);
  padding: 6px 0;
  border-top: 2px solid rgb(110,140,150);
  box-shadow: 0 0 10px 2px rgb(110,140,150);
  color: rgb(230, 230, 230);
  width: 100%;
  text-align: center;
  animation-duration: 1s;
  animation-timing-function: ease-in-out;
}

.tosMsg #openPopup {
  transition-duration: 0.1s;
  color: rgb(110,140,150);
  text-decoration: underline;
}

.tosMsg #openPopup:hover {
  cursor: pointer;
  color: rgb(95,125,135);
}

.tosMsg #openPopup:active {
  color: rgb(80,110,120);
}

.tosMsg #closeTosMsg {
  transition-duration: 0.1s;
  position: fixed;
  right: 1em;
  vertical-align: middle;
  cursor: pointer;
}

.tosMsg #closeTosMsg:hover {
  color: rgb(210,210,210);
}

.tosMsg #closeTosMsg:active {
  color: rgb(190,190,190);
}

@keyframes fadeOut {
  0%  { opacity: 1; -webkit-transform: translateY(0%); }
  100% { opacity: 0; -webkit-transform: translateY(20px); }
}

#tosMsgDisappear {
  animation-name: fadeOut;
}

.tosBkg {
  position: absolute;
  top: 0;
  left: 0;
  width: 100vw;
  height: 100vh;
  background-color: rgb(0, 0, 0, 0.3);
  display: none; /* flex */
  align-items: center;
  justify-content: center;
}

.tos {
  width: 350px;
  border: 2px solid rgb(110,140,150);
  border-radius: 10px;
  padding: 20px 30px;
  color: lightgray;
  background-color: rgb(20, 20, 20);
  box-shadow: 0 0 10px 2px rgb(110 140 150);
}

.tos a {
  transition-duration: 0.1s;
  color: rgb(110,140,150);
}

.tos a:hover {
  color: rgb(95,125,135);
}

.tos a:active {
  color: rgb(80,110,120);
}

#centerBtn {
  width: 100%;
  text-align: center;
}

.err {
  display: none;
  color: rgb(200, 0, 0);
  font-size: 13px;
}

.loading {
  animation: rotation 0.9s infinite linear;
  user-select: none;
}

@keyframes rotation {
  from {
    transform: rotate(0deg);
  }
  to {
    transform: rotate(359deg);
  }
}


.changePx {
  transition-duration: 0.1s;
  color: rgb(200,200,200);
  font-size: 12px;
}

.changePx:hover {
  color: rgb(180,180,180);
  text-decoration: underline;
  cursor: pointer;
}

.pxs {
  display: none;
  width: 450px;
  margin: auto;
}

.btn {
  transition-duration: 0.2s;
  line-height: 1;
  margin-top: 10px;
  padding: 10px 20px;
  /*border-radius: 5px;*/
  border-radius: 200px;
  border: 2px solid rgb(110,140,150);
  background-color: transparent;
  color: rgb(110,140,150);
  font-size: 15px;
}

.btn:hover {
  background-color: rgb(110,140,150);
  /*border: 2px solid lightgray;*/
  color: rgb(230,230,230);
  cursor: pointer;
}

.btn #small {
  font-size: 10px;
}

.prx {
  display: inline-block;
  padding: 11px 22px;
  font-size: 17px;
  margin: 10px 10px 5px 10px;
}

#u:hover {
  /* original color: #262262 */
  /* old color: #49498d */
  background-color: #262262;
  border-color: #6a6aa4;
  box-shadow: 0 0 10px 5px #262262;
  color: rgb(188, 184, 248);
}

#r:hover {
  /* original color: #9de8ff */
  background-color: #224762;
  border: 2px solid #6a88a4;
  box-shadow: 0 0 10px 5px #224762;
  color: rgb(185, 221, 248);
}

#w:hover {
  /* original color: #1c9a54 */
  background-color: #226244;
  border: 2px solid #6aa47f;
  box-shadow: 0 0 10px 5px #226244;
  color: rgb(185, 248, 213);
}

#b:hover {
  background-color: #646464;
  border: 2px solid #afafaf;
  box-shadow: 0 0 10px 5px #646464;
  color: rgb(230, 230, 230);
}

.pageLoading {
  display: none;
  position: fixed;
  bottom: 0;
  right: 20px;
  background-color: black;
  box-shadow: 0 0 5px 1px white;
  color: white;
  padding: 7px 10px;
  font-size: 15px;
}

.warning {
  display: none; /* flex */
  align-items: center;
  justify-content: center;
  position: absolute;
  font-size: 25px;
  color: #c8c8c8;
  text-shadow: 2px 2px 4px black;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-color: rgba(0,0,0,0.5);
  text-align: center;
  margin: auto;
}

#warning_content {
  background-color: rgb(202, 202, 202);
  color: black;
  box-shadow: 0 0 6px 2px rgba(136, 136, 136);
  border-radius: 5px;
  padding: 20px;
  max-width: 35%;
}

#warning_text {
  color: rgb(200, 0, 0);
  font-size: 30px;
  font-weight: bold;
  padding-bottom: 15px;
}

#warning_text .material-icons {
  vertical-align: middle;
  font-size: 30px;
}

#warning_content p {
  padding-bottom: 20px;
}

#warning_content h2, h6 {
  color: rgb(0, 70, 200);
}

.facts {
  display: none;
}


================================================
FILE: main/css/terms.css
================================================
* {
  box-sizing: border-box;
}

body {
  margin: 0;
  padding: 0;
  font-family: Arial;
  background-color: white;
  color: black;
}

.classwork {
  display: none;
}

a {
  color: rgb(123, 166, 180);
}


================================================
FILE: main/gams/.gitignore
================================================
gfiles/rarch/roms/

================================================
FILE: main/gams/compiler.py
================================================
# sorry for the terribly messy code

import os, glob
from itertools import chain

outindex = "list.html"
outdir = "./gfiles/"
html5gamesin = "html5/"
rarchgamesin = "rarch/"
romdir = "roms/*"
flashgamesin = "flash/"
pregba = [".gba", ".gb", ".gbc"]
pregen = [".mdx", ".md", ".smd", ".gen", ".sms", ".gg", ".sg"]
prenes = [".nes", ".fds", ".unf", ".unif"]
pren64 = [".n64", ".v64", ".z64", ".ndd"]
presnes = [".smc", ".sfc", ".swc", ".fig"]
index = '''<!DOCTYPE html>\n<html>\n<head>\n<title>Games List</title>\n<link rel="stylesheet" href="./css/style.css">\n</head>\n<body>\n<div class="container">\n<div class="box">\n<input type="text" id="gsearchbar" onkeyup="var a=document.querySelectorAll('#glist a[href]');for(var i=0;i<a.length;i++)a[i].style.display=a[i].textContent.toUpperCase().indexOf(this.value.toUpperCase())!=-1?'block':'none'" autocomplete="off" spellcheck="false" placeholder="Search" />\n<div id="glist">\n%s\n</div>\n</div>\n</div>\n<script> </script>\n</body>\n</html>'''
alist = '''<a href="%s">%s</a>'''
html5names = {"adarkroom": "A Dark Room", "asciispace": "ASCII Space", "blackholesquare": "Black Hole Square", "bounceback": "Bounce Back", "captaincallisto": "Captain Callisto", "chromaincident": "Chroma Incident", "chromedino": "Chrome Dino", "connect3": "Connect 3", "cookieclicker": "Cookie Clicker", "edgenotfound": "Edge not Found", "evilglitch": "Evil Glitch", "factoryballsforever": "Factory Balls Forever", "flappybird": "Flappy Bird", "geometrydash": "Geometry Dash", "ninjavsevilcorp": "Ninja vs Evilcorp", "pacman": "Pac-Man", "particleclicker": "Particle Clicker", "pushback": "Push Back", "radiusraid": "Radius Raid", "roadblocks": "Road Blocks", "run3": "Run 3", "sleepingbeauty": "Sleeping Beauty", "spacecompany": "Space Company", "spacegarden": "Space Garden", "spacehuggers": "Space Huggers", "themazeofspacegoblins": "The Maze of Space Goblins", "xx142-b2exe": "xx142-b2.exe"}

# Make HTML5 lists
html5_1 = next(os.walk(outdir + html5gamesin))[1]
html5_2 = ["<h2>HTML5 Games</h2>"]

# Generate HTML code for HTML5 list
for x in range(0, len(html5_1)):
	html5_2.append(alist % (outdir + html5gamesin + html5_1[x] + "/", (html5names.get(html5_1[x]) if (html5_1[x] in html5names) else html5_1[x].capitalize())))

# Make GBA lists
gba_1 = list(chain.from_iterable([[os.path.basename(x) for x in glob.glob(outdir + rarchgamesin + romdir + y)] for y in pregba]))
gba_2 = ["\n<h2>Gameboy Advance</h2>", alist % (outdir + rarchgamesin + "?core=mgba", "Upload ROM")]

# Generate HTML code for GBA list
for x in range(0, len(gba_1)):
	gba_2.append(alist % (outdir + rarchgamesin + "?core=mgba&rom=" + gba_1[x], os.path.splitext(gba_1[x])[0].capitalize()))

# Make Genesis lists
gen_1 = list(chain.from_iterable([[os.path.basename(x) for x in glob.glob(outdir + rarchgamesin + romdir + y)] for y in pregen]))
gen_2 = ["\n<h2>Genesis / Master System</h2>", alist % (outdir + rarchgamesin + "?core=genesis_plus_gx", "Upload ROM")]

# Generate HTML code for Genesis list
for x in range(0, len(gen_1)):
	gen_2.append(alist % (outdir + rarchgamesin + "?core=genesis_plus_gx&rom=" + gen_1[x], os.path.splitext(gen_1[x])[0].capitalize()))

# Make N64 lists
n64_1 = list(chain.from_iterable([[os.path.basename(x) for x in glob.glob(outdir + rarchgamesin + romdir + y)] for y in pren64]))
n64_2 = ["\n<h2>Nintendo 64</h2>", alist % (outdir + rarchgamesin + "?core=mupen64plus_next", "Upload ROM")]

# Generate HTML code for N64 list
for x in range(0, len(n64_1)):
	n64_2.append(alist % (outdir + rarchgamesin + "?core=mupen64plus_next&rom=" + n64_1[x], os.path.splitext(n64_1[x])[0].capitalize()))

# Make NES lists
nes_1 = list(chain.from_iterable([[os.path.basename(x) for x in glob.glob(outdir + rarchgamesin + romdir + y)] for y in prenes]))
nes_2 = ["\n<h2>NES</h2>", alist % (outdir + rarchgamesin + "?core=nestopia", "Upload ROM")]

# Generate HTML code for NES list
for x in range(0, len(nes_1)):
	nes_2.append(alist % (outdir + rarchgamesin + "?core=nestopia&rom=" + nes_1[x], os.path.splitext(nes_1[x])[0].capitalize()))

# Make SNES lists
snes_1 = list(chain.from_iterable([[os.path.basename(x) for x in glob.glob(outdir + rarchgamesin + romdir + y)] for y in presnes]))
snes_2 = ["\n<h2>Super Nintendo</h2>", alist % (outdir + rarchgamesin + "?core=snes9x", "Upload ROM")]

# Generate HTML code for SNES list
for x in range(0, len(snes_1)):
	snes_2.append(alist % (outdir + rarchgamesin + "?core=snes9x&rom=" + snes_1[x], os.path.splitext(snes_1[x])[0].capitalize()))

# Make flash lists
# Just a premade list for now
flash_1 = ['1on1soccer.swf', '3dtanks.swf', 'abobosbigadventure.swf', 'achievementunlocked.swf', 'achievementunlocked2.swf', 'achievementunlocked3.swf', 'actionturnip.swf', 'adaran.swf', 'adrenaline.swf', 'americanracing1.swf', 'americanracing2.swf', 'arkandianrevenant.swf', 'armyofages.swf', 'awesomecars.swf', 'awesomeplanes.swf', 'battlepanic.swf', 'bloonsplayerpack2.swf', 'bloonsplayerpack3.swf', 'bloonsplayerpack4.swf', 'bloonsplayerpack5.swf', 'bloonstd1.swf', 'bloonstd3.swf', 'bloonstd4.swf', 'bloonstd5.swf', 'bobtherobber.swf', 'boombot2.swf', 'boxhead2play.swf', 'bubbletanks2.swf', 'bulletbill.swf', 'bullettimefighting.swf', 'burritobison.swf', 'burritobisonrevenge.swf', 'cactusmccoy.swf', 'cactusmccoy2.swf', 'cannonbasketball2.swf', 'cargobridge.swf', 'causality.swf', 'chibiknight.swf', 'clickerheroes.swf', 'computerbashing.swf', 'crushthecastle.swf', 'crushthecastle2.swf', 'cubefield.swf', 'cyclomaniacs2.swf', 'diggy.swf', 'donkeykong.swf', 'dontshootthepuppy.swf', 'doodledefender.swf', 'doom.swf', 'dragracing.swf', 'ducklife.swf', 'ducklife2.swf', 'ducklife3.swf', 'ducklife4.swf', 'earntodie.swf', 'earntodie2.swf', 'earntodiesuperwheel.swf', 'electricman2.swf', 'elephantquest.swf', 'epicbattlefantasy3.swf', 'epiccomboredux.swf', 'exitpath.swf', 'factoryballs.swf', 'factoryballs2.swf', 'factoryballs3.swf', 'factoryballs4.swf', 'fancypantsadventure.swf', 'fancypantsadventure2.swf', 'fancypantsadventure3.swf', 'flashflightsimulator.swf', 'flight.swf', 'fracuum.swf', 'freerider2.swf', 'getontop.swf', 'giveuprobot.swf', 'giveuprobot2.swf', 'hanger.swf', 'hanger2.swf', 'happywheels.swf', 'hobo.swf', 'hobo2.swf', 'hobo3.swf', 'hobo4.swf', 'hobo5.swf', 'hobo6.swf', 'hobo7.swf', 'houseofwolves.swf', 'interactivebuddy.swf', 'jacksmith.swf', 'jellytruck.swf', 'johnnyupgrade.swf', 'jumpix2.swf', 'knightmaretower.swf', 'learn2fly.swf', 'learn2fly2.swf', 'learn2fly3.swf', 'magnetface.swf', 'mariocombat.swf', 'marioracingtournament.swf', 'meatboy.swf', 'megamanprojectx.swf', 'metroidelements.swf', 'mineblocks.swf', 'minesweeper.swf', 'mirrorsedge.swf', 'moneymovers.swf', 'moneymovers3.swf', 'motherload.swf', 'motox3m.swf', 'multitask.swf', 'mutilateadoll2.swf', 'myangel.swf', 'nanotube.swf', 'newgroundsrumble.swf', 'ngame.swf', 'nitromemustdie.swf', 'nucleus.swf', 'nv2.swf', 'nyancatlostinspace.swf', 'offroaders.swf', 'onemanarmy2.swf', 'outofthisworld.swf', 'pacman.swf', 'pandemic.swf', 'pandemic2.swf', 'papalouie.swf', 'papalouie2.swf', 'papalouie3.swf', 'picosschool.swf', 'picosschool2.swf', 'pirates.swf', 'polarjump.swf', 'portal.swf', 'portal2d.swf', 'quadrobarreldefence.swf', 'qubeythecube.swf', 'qwop.swf', 'raftwars.swf', 'raftwars2.swf', 'raze.swf', 'redball.swf', 'redball2.swf', 'redball4.swf', 'redball4v2.swf', 'redball4v3.swf', 'redshift.swf', 'revenant2.swf', 'riddleschool1.swf', 'riddleschool2.swf', 'riddleschool3.swf', 'riddleschool4.swf', 'riddleschool5.swf', 'riddletransfer.swf', 'riddletransfer2.swf', 'run2.swf', 'run3.swf', 'saszombieassault3.swf', 'sentryknight.swf', 'shoppingcarthero3.swf', 'siftheads.swf', 'siftheads2.swf', 'siftheads3.swf', 'siftheads4.swf', 'siftheads5.swf', 'sniperassassin4.swf', 'sportsheadsfootball.swf', 'sportsheadsracing.swf', 'sportsheadstennis.swf', 'stickrpg.swf', 'stickrun2.swf', 'stickwar.swf', 'strikeforceheroes2.swf', 'strikeforcekittylaststand.swf', 'sugarsugar.swf', 'sugarsugar2.swf', 'sugarsugar3.swf', 'superd.swf', 'superfighters.swf', 'supermario63.swf', 'supermarioflash.swf', 'supermarioflash2.swf', 'supersmashflash.swf', 'swordsandsandals2.swf', 'tacticalassassin.swf', 'tanks.swf', 'tanktrouble.swf', 'tetris.swf', 'thebindingofisaac.swf', 'thegame.swf', 'theimpossiblequiz.swf', 'theimpossiblequiz2.swf', 'theworldshardestgame2.swf', 'thingthingarena.swf', 'thisistheonlylevel.swf', 'tosstheturtle.swf', 'truckloader4.swf', 'ultimateflashsonic.swf', 'ultimatetactics.swf', 'unrealflash.swf', 'vex.swf', 'vex2.swf', 'vex3.swf', 'warfare1917.swf', 'warfare1944.swf', 'warp.swf', 'xenos.swf', 'xtremecliffdiving.swf', 'yearofthesnake.swf', 'yuriusshouseofspooks.swf', 'zombiealienparasites.swf']
flash_2 = ["\n<h2>Flash Games</h2>", alist % (outdir + flashgamesin, "Upload SWF")]

# Generate HTML code for flash list
for x in range(0, len(flash_1)):
	flash_2.append(alist % (outdir + flashgamesin + "?swf=" + flash_1[x], os.path.splitext(flash_1[x])[0].capitalize()))



# Write to list file
def st(x):
	return "\n".join(x)

final_list = index % (st(html5_2) + st(gba_2) + st(gen_2) + st(n64_2) + st(nes_2) + st(snes_2) + st(flash_2))

with open(outindex, "w") as file:
	file.write(final_list)

for x in final_list.splitlines():
	print(x)

print("\nDone!")


================================================
FILE: main/gams/css/style.css
================================================
* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

html {
  height: 100vh;
}

body {
  background-image: url('/img/space-tint.png');
  width: 100%;
  height: 100%;
  background-attachment: fixed;
  background-position: center;
  background-repeat: no-repeat; 
  background-size: cover;
  background-color: black;
  overflow-x: hidden;

  background-color: rgba(0,0,0,0.4);
  background-blend-mode: multiply;

  font-family: Arial;
}

.center {
  width: 100%;
  padding: 50px 0;
}

.center img {
  vertical-align: middle;
  margin-right: 15px;
}

.center .title {
  color: rgb(110,140,150);
  font-weight: bold;
  font-size: 60px;
}

.center .material-icons {
  font-size: 100%;
  vertical-align: middle;
}

#mainContent {
  width: 50%;
  margin: auto;
  font-family: Roboto Mono;
  color: lightgray;
  padding: 30px 50px;
  background-color: rgba(0,0,0,0.6);
  border-radius: 5px;
  border: 1px solid rgba(110, 150, 160, 0.7);
  text-align: center;
}

#mainContent strong {
  color: rgb(230, 230, 230);
}

#mainContent selected {
  font-weight: 900;
}

#mainContent p {
  padding-top: 15px;
}

#mainContent input[type=text] {
  margin-top: 5px;
  padding: 10px;
  width: 300px;
  border-radius: 7px;
  border: 3px solid rgb(150,150,150);
  outline: none;
  background-color: rgb(240, 240, 240);
}

#mainContent input[type=text]:focus {
  border: 3px solid rgb(99, 128, 255);
}

#mainContent .submit {
  transition-duration: 0.2s;
  background-color: rgb(80,105,130);
  color: lightgray;
  outline: none;
  border: none;
  font-size: 15px;
  padding: 12px 15px;
  border-radius: 5px;
  cursor: pointer;
}

#mainContent .submit:hover {
  opacity: 0.9;
}

#mainContent a {
  transition-duration: 0.2s;
  text-decoration: none;
  color: rgb(110, 150, 160);
}

#mainContent a:after {
  content: "";
  display: block;
  height: 0;
  width: 1px;
}

#mainContent a:hover {
  color: rgb(130, 170, 180);
  text-shadow: 2px 2px 5px rgb(125, 165, 175);
}

#glist {
  line-height: 1.75;
}

h2 {
  padding-top: 20px;
}

.results {
  font-size: 13px;
  padding-top: 7px !important;
  display: none;
}

.tosMsg {
  position: absolute;
  bottom: 0;
  background-color: rgb(25, 25, 25);
  padding: 6px 0;
  border-top: 2px solid rgb(110,140,150);
  box-shadow: 0 0 10px 2px rgb(110,140,150);
  color: rgb(230, 230, 230);
  width: 100%;
  text-align: center;
  animation-duration: 1s;
  animation-timing-function: ease-in-out;
}

.tosMsg #openPopup {
  transition-duration: 0.1s;
  color: rgb(110,140,150);
  text-decoration: underline;
}

.tosMsg #openPopup:hover {
  cursor: pointer;
  color: rgb(95,125,135);
}

.tosMsg #openPopup:active {
  color: rgb(80,110,120);
}

@keyframes fadeOut {
  0%  { opacity: 1; -webkit-transform: translateY(0%); }
  100% { opacity: 0; -webkit-transform: translateY(20px); }
}

#tosMsgDisappear {
  animation-name: fadeOut;
}

.tosBkg {
  position: absolute;
  top: 0;
  left: 0;
  width: 100vw;
  height: 100vh;
  background-color: rgb(0, 0, 0, 0.3);
  display: none; /* flex */
  align-items: center;
  justify-content: center;
}

.tos {
  width: 350px;
  border: 2px solid rgb(110,140,150);
  border-radius: 10px;
  padding: 20px 30px;
  color: lightgray;
  background-color: rgb(20, 20, 20);
  box-shadow: 0 0 10px 2px rgb(110 140 150);
}

.tos a {
  transition-duration: 0.1s;
  color: rgb(110,140,150);
}

.tos a:hover {
  color: rgb(95,125,135);
}

.tos a:active {
  color: rgb(80,110,120);
}

#centerBtn {
  width: 100%;
  text-align: center;
}

.err {
  display: none;
  color: rgb(200, 0, 0);
  font-size: 13px;
}

.loading {
  animation: rotation 0.9s infinite linear;
  user-select: none;
}
@keyframes rotation {
  from {
    transform: rotate(0deg);
  }
  to {
    transform: rotate(359deg);
  }
}


.changePx {
  transition-duration: 0.1s;
  color: rgb(200,200,200);
  font-size: 12px;
}

.changePx:hover {
  color: rgb(180,180,180);
  text-decoration: underline;
  cursor: pointer;
}

.pxs {
  display: none;
  width: 450px;
  margin: auto;
}

.btn {
  transition-duration: 0.2s;
  line-height: 1;
  margin-top: 10px;
  padding: 10px 20px;
  border-radius: 5px;
  border: 2px solid rgb(110,140,150);
  background-color: transparent;
  color: rgb(110,140,150);
  font-size: 15px;
}

.btn:hover {
  background-color: rgb(110,140,150);
  /*border: 2px solid lightgray;*/
  color: rgb(230,230,230);
  cursor: pointer;
}

.btn #small {
  font-size: 10px;
}

.pageLoading {
  display: none;
  position: fixed;
  bottom: 0;
  right: 20px;
  background-color: black;
  box-shadow: 0 0 5px 1px white;
  color: white;
  padding: 7px 10px;
  font-size: 15px;
}

.warning {
  display: none; /* flex */
  align-items: center;
  justify-content: center;
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-color: rgba(0,0,0,0.3);
  text-align: center;
  margin: auto;
}

#warning_content {
  background-color: rgb(202, 202, 202);
  color: black;
  box-shadow: 0 0 6px 2px rgba(136, 136, 136);
  border-radius: 5px;
  padding: 20px;
  max-width: 35%;
}

#warning_text {
  color: rgb(200, 0, 0);
  font-size: 30px;
  font-weight: bold;
  padding-bottom: 15px;
}

#warning_text .material-icons {
  vertical-align: middle;
  font-size: 30px;
}

#warning_content p {
  padding-bottom: 20px;
}

#warning_content h2, h6 {
  color: rgb(0, 70, 200);
}

.facts {
  display: none;
}


================================================
FILE: main/gams/dehar.py
================================================
# script used for crawling pages
# use the network tab in chrome devtools, clear it before loading the game, and when all assets have finished being requested, press the Export HAR button (looks like download)
# then, use this script like so (this is an example): python3 dehar.py example.com.har outputdirectory/

import os, sys, subprocess

banned = [] #[".php", ".asp"]

infile = sys.argv[1]
outdir = sys.argv[2]

input = open(infile, "r").read().splitlines()

lis2 = []
for x in input:
	if ('"url"' in x) and not(any(i in x for i in banned)):
		lis2.append(x.split('"')[3].split("?")[0])

lis2 = list(dict.fromkeys(lis2))

open("./wgettemp.txt", "w").write("\n".join(lis2))
subprocess.call("wget -x -i ./wgettemp.txt -P %s" % outdir, shell=True)
os.remove("./wgettemp.txt")

================================================
FILE: main/gams/gfiles/flash/index.html
================================================
<!DOCTYPE html>
<html>
	<head>
		<title>Flash Player</title>
		<style>
			body {
				overflow: hidden;
				font-family: sans-serif;
			}
			
			.main {
				background: black;
				position: absolute;
				width: 100%;
				height: 100%;
				left: 0px;
				right: 0px;
				top: 0px;
				bottom: 0px;
				overflow: hidden;
			}
			
			.gembed {
				width: 100%;
				height: 100%;
				top: 0;
				bottom: 0;
				left: 0;
				right: 0;
				position: absolute;
				background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNTAiIGhlaWdodD0iNTAiPjx0ZXh0IHN0eWxlPSJmb250OiAzMHB4IHNhbnMtc2VyaWY7IiBmaWxsPSJ3aGl0ZSIgeD0iNTAlIiB5PSI1MCUiIGRvbWluYW50LWJhc2VsaW5lPSJtaWRkbGUiIHRleHQtYW5jaG9yPSJtaWRkbGUiPkxvYWRpbmc8L3RleHQ+PC9zdmc+");
				background-repeat: no-repeat;
				background-position: center;
			}
			
			#ffd {
				height: 200px;
				width: 400px;
				position: absolute;
				background-color: #dddddd;
				top: 50%;
				left: 50%;
				transform: translate(-50%, -50%);
				text-align: center;
				border-radius: 2px;
				overflow: auto;
				z-index: 5;
			}
			
			#ffd::before {
				opacity: 0;
				width: 100%;
				height: 0px;
				background-color: #333333;
				content: "Drop File Here";
				position: absolute;
				top: 0px;
				left: 0px;
				z-index: 10;
				display: flex;
				align-items: center;
				justify-content: center;
				font-size: 30px;
				font-weight: bold;
				color: white;
			}
			
			#ffd.filehover::before {
				opacity: 1;
				height: 100%;
			}
			
			#ffd.filehover {
				border: 2px dashed #dddddd;
				background-color: #333333;
			}
			
			input[type="file"] {
				display: none;
			}
			
			#upload+label {
				border: 1px solid rgb(118, 118, 118);
				border-radius: 2px;
				padding: 4px;
				margin: 10px;
				font-size: 13px;
				background-color: white;
				display: inline-block;
				transition: ease .1s;
				user-select: none;
			}
			
			#upload+label:hover {
				background-color: #eee;
			}
			
			#ffd .source {
				display: block;
				position: absolute;
				left: 50%;
				transform: translatex(-50%);
				bottom: 5px;
				text-decoration: none;
				color: black;
				font-size: 10px;
			}
			
			ul {
				list-style: none;
				padding: 0;
				margin: 0;
			}
			
			#menu {
				position: fixed;
				background-color: #ffffff;
				transition: opacity 0.3s ease;
				z-index: 20;
				opacity: 0;
			}
			
			#menu:hover {
				opacity: 0.9;
			}
			
			#menu li {
				white-space: nowrap;
				max-width: 250px;
				position: relative;
				padding: 12px 16px;
				cursor: help;
				display: inline-block;
				float: left;
			}
			
			#menu li:hover {
				background-color: rgba(0, 0, 0, .1);
			}
			
			#menu li input {
				transform: scale(1.5);
				cursor: pointer;
				margin: 0px 12px 0px 0px;
			}
		</style>
		<script>
			var mainarea, ffd, upload, legacy, rplayer, useLegacy;
			var cdn = "https://cdn.jsdelivr.net/gh/BinBashBanana/gstore/";
			
			// query string into object
			var search = decodeURIComponent(window.location.search).substring(1).split("&");
			var queries = {};
			for (var i = 0; i < search.length; i++) {
				var p = search[i].split('=');
				queries[p[0]] = p[1];
			}
			
			// xhr
			function grab(url, type, success, fail) {
				var req = new XMLHttpRequest();
				req.open("GET", url, true);
				req.overrideMimeType("text/plain; charset=x-user-defined");
				req.responseType = type;
				req.onload = function() {
					if (req.status >= "400") {
						fail(req.status);
					} else {
						success(this.response);
					}
				}
				req.send();
			}
			
			// file reader
			function readFile(file, callback) {
				var reader = new FileReader();
				reader.onload = function() {
					callback(this.result);
				}
				reader.readAsArrayBuffer(file);
			}
			
			// start
			function startPlayer(data) {
				console.log("Initializing with " + data.byteLength + " bytes of data");
				if (useLegacy) {
					alert('Using flash object mode. If the game does not work, turn "Use flash object" in the menu off.');
					
					var flashObject = document.createElement("object");
					flashObject.classList.add("gembed");
					flashObject.type = "application/x-shockwave-flash";
					flashObject.data = URL.createObjectURL(new Blob([data]));
					var flashObjectWmode = document.createElement("param");
					flashObjectWmode.name = "wmode";
					flashObjectWmode.value = "direct";
					flashObject.appendChild(flashObjectWmode);
					mainarea.appendChild(flashObject);
				} else {
					// hide the custom context menu for now, but allow it to be shown
					rplayer.contextMenuElement.style.display = "none";
					rplayer.contextMenuElement.style.zIndex = "auto";
					
					rplayer.load({data: data});
				}
			}
			
			function readyForLoad() {
				// ready for file upload
				upload.onchange = function() {
					ffd.style.display = "none";
					let file = this.files[0];
					readFile(file, function(data) {
						console.log('Succesfully read SWF file "' + file.name + '"');
						startPlayer(data);
					});
				}
				document.ondragenter = function(e) {
					if (e.dataTransfer.types.includes("Files")) ffd.classList.add("filehover");
				}
				ffd.ondragover = function(e) {
					e.preventDefault();
				}
				ffd.ondrop = function(e) {
					if (e.dataTransfer.types.includes("Files")) {
						e.preventDefault();
						ffd.style.display = "none";
						let file = event.dataTransfer.files[0];
						readFile(file, function(data) {
							console.log('Succesfully read SWF file "' + file.name + '"');
							startPlayer(data);
						});
					}
				}
				
				if (queries.swf) {
					var swfloc = (/^(http:\/\/|https:\/\/|\/\/)/i).test(queries.swf) ? queries.swf : cdn + queries.swf;
					console.log("Fetching SWF from " + swfloc + "...");
					grab(swfloc, "arraybuffer", function(data) {
						// start
						console.log("Succesfully fetched SWF from " + swfloc);
						startPlayer(data);
					}, function(error) {
						// xhr error
						alert("Could not get SWF at " + swfloc + " (Error " + error + ")");
						ffd.style.display = "block";
					});
				} else {
					// prompt user to upload a file
					ffd.style.display = "block";
				}
			}
			
			window.addEventListener("load", function() {
				mainarea = document.getElementById("mainarea");
				ffd = document.getElementById("ffd");
				upload = document.getElementById("upload");
				legacy = document.getElementById("legacy");
				useLegacy = !!localStorage.getItem("useFlashObject");
				
				if (useLegacy) legacy.checked = true;
				
				legacy.onclick = function() {
					if (this.checked) {
						localStorage.setItem("useFlashObject", "true");
					} else {
						localStorage.removeItem("useFlashObject");
					}
					if (confirm("Reloading for changes to take effect")) location.reload();
				}
				
				if (useLegacy) {
					console.log("skipping ruffle load, using flash object...");
					readyForLoad();
				} else {
					// make ruffle player
					console.log("loading ruffle...");
					var rScript = document.createElement("script");
					rScript.type = "text/javascript";
					rScript.src = "./ruffle.js";
					rScript.onload = function() {
						window.RufflePlayer = window.RufflePlayer || {};
						window.RufflePlayer.config = window.RufflePlayer.config || {};
						window.RufflePlayer.config.letterbox = "on";
						window.RufflePlayer.config.autoplay = "auto";
						const rufflei = window.RufflePlayer.newest();
						rplayer = rufflei.createPlayer();
						rplayer.classList.add("gembed");
						rplayer.playButton.innerHTML = '<svg xmlns="http://www.w3.org/2000/svg" width="250" height="100" style="margin: auto; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);"><svg viewBox="0 0 24 24" y="7pt" width="100%" height="36pt"><path fill="rgb(203, 203, 203)" d="M20.5 11H19V7c0-1.1-.9-2-2-2h-4V3.5C13 2.12 11.88 1 10.5 1S8 2.12 8 3.5V5H4c-1.1 0-1.99.9-1.99 2v3.8H3.5c1.49 0 2.7 1.21 2.7 2.7s-1.21 2.7-2.7 2.7H2V20c0 1.1.9 2 2 2h3.8v-1.5c0-1.49 1.21-2.7 2.7-2.7 1.49 0 2.7 1.21 2.7 2.7V22H17c1.1 0 2-.9 2-2v-4h1.5c1.38 0 2.5-1.12 2.5-2.5S21.88 11 20.5 11z"></path></svg><text style="font-family: sans-serif; font-size: 10pt; letter-spacing: normal; user-select: none;" fill="rgb(100, 100, 100)" x="50%" y="56pt" dominant-baseline="middle" text-anchor="middle">Click to enable Adobe Flash Player</text></svg>';
						rplayer.contextMenuElement.style.zIndex = "-100";
						mainarea.appendChild(rplayer);
						console.log("ruffle is loaded");
						
						readyForLoad();
					}
					document.body.appendChild(rScript);
				}
			}, false);
		</script>
	</head>
	<body>
		<div class="main" id="mainarea">
			<ul id="menu">
				<li title="Try to use the flash plugin (only available in browsers that still support it)"><input type="checkbox" id="legacy">Use flash object</li>
			</ul>
			<div id="ffd" style="display: none;">
				<h2>Flash Player Emulator</h2>
				<input type="file" id="upload" accept=".swf, .spl">
				<label for="upload">Choose File</label>
				<a href="https://ruffle.rs" target="_blank" class="source">Source</a>
			</div>
		</div>
	</body>
</html>

================================================
FILE: main/gams/gfiles/flash/ruffle.js
================================================
(()=>{"use strict";var e={931:(e,t,n)=>{e.exports=n.p+"f75600c6b605d23c38b0.wasm"}},t={};function n(r){var i=t[r];if(void 0!==i)return i.exports;var o=t[r]={exports:{}};return e[r](o,o.exports,n),o.exports}n.m=e,n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.p="",n.b=document.baseURI||self.location.href,(()=>{const e="undefined"!=typeof AudioContext?AudioContext:"undefined"!=typeof webkitAudioContext?webkitAudioContext:void 0;let t;const r=new Array(32).fill(void 0);function i(e){return r[e]}r.push(void 0,null,!0,!1);let o=r.length;function a(e){const t=i(e);return function(e){e<36||(r[e]=o,o=e)}(e),t}let s=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0});s.decode();let c=null;function u(){return null!==c&&c.buffer===t.memory.buffer||(c=new Uint8Array(t.memory.buffer)),c}function l(e,t){return s.decode(u().subarray(e,e+t))}function _(e){o===r.length&&r.push(r.length+1);const t=o;return o=r[t],r[t]=e,t}let f=0,b=new TextEncoder("utf-8");const d="function"==typeof b.encodeInto?function(e,t){return b.encodeInto(e,t)}:function(e,t){const n=b.encode(e);return t.set(n),{read:e.length,written:n.length}};function g(e,t,n){if(void 0===n){const n=b.encode(e),r=t(n.length);return u().subarray(r,r+n.length).set(n),f=n.length,r}let r=e.length,i=t(r);const o=u();let a=0;for(;a<r;a++){const t=e.charCodeAt(a);if(t>127)break;o[i+a]=t}if(a!==r){0!==a&&(e=e.slice(a)),i=n(i,r,r=a+3*e.length);const t=u().subarray(i+a,i+r);a+=d(e,t).written}return f=a,i}let w=null;function h(){return null!==w&&w.buffer===t.memory.buffer||(w=new Int32Array(t.memory.buffer)),w}function m(e){return null==e}let p=null;function y(e){const t=typeof e;if("number"==t||"boolean"==t||null==e)return`${e}`;if("string"==t)return`"${e}"`;if("symbol"==t){const t=e.description;return null==t?"Symbol":`Symbol(${t})`}if("function"==t){const t=e.name;return"string"==typeof t&&t.length>0?`Function(${t})`:"Function"}if(Array.isArray(e)){const t=e.length;let n="[";t>0&&(n+=y(e[0]));for(let r=1;r<t;r++)n+=", "+y(e[r]);return n+="]",n}const n=/\[object ([^\]]+)\]/.exec(toString.call(e));let r;if(!(n.length>1))return toString.call(e);if(r=n[1],"Object"==r)try{return"Object("+JSON.stringify(e)+")"}catch(e){return"Object"}return e instanceof Error?`${e.name}: ${e.message}\n${e.stack}`:r}function v(e,n,r,i){const o={a:e,b:n,cnt:1,dtor:r},a=(...e)=>{o.cnt++;const n=o.a;o.a=0;try{return i(n,o.b,...e)}finally{0==--o.cnt?t.__wbindgen_export_2.get(o.dtor)(n,o.b):o.a=n}};return a.original=o,a}function x(e,n){t._dyn_core__ops__function__FnMut_____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h6b700eddc15cc294(e,n)}function k(e,n,r){t._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h1668b3287cc6a568(e,n,_(r))}function E(e,n,r){t._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h1668b3287cc6a568(e,n,_(r))}function A(e,n,r){t._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h1668b3287cc6a568(e,n,_(r))}function S(e,n,r){t._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h1668b3287cc6a568(e,n,_(r))}function C(e,n,r){t._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__hf7532dd40cfdddb1(e,n,r)}function I(e,n,r){t._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h1668b3287cc6a568(e,n,_(r))}function R(e,n,r){t._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h1668b3287cc6a568(e,n,_(r))}function F(e,n,r){t._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__he153347b3f2ff66c(e,n,_(r))}let T=null;function P(e,n){return(null!==T&&T.buffer===t.memory.buffer||(T=new Float32Array(t.memory.buffer)),T).subarray(e/4,e/4+n)}function O(e,n){try{return e.apply(this,n)}catch(e){t.__wbindgen_exn_store(_(e))}}let M=32;function L(e){if(1==M)throw new Error("out of js stack");return r[--M]=e,M}let j=null;function D(e,t){return u().subarray(e/1,e/1+t)}let N=null;function U(e,n){return(null!==N&&N.buffer===t.memory.buffer||(N=new Uint8ClampedArray(t.memory.buffer)),N).subarray(e/1,e/1+n)}class B{static __wrap(e){const t=Object.create(B.prototype);return t.ptr=e,t}__destroy_into_raw(){const e=this.ptr;return this.ptr=0,e}free(){const e=this.__destroy_into_raw();t.__wbg_ruffle_free(e)}constructor(e,n,i){try{return a(t.ruffle_new(_(e),_(n),L(i)))}finally{r[M++]=void 0}}stream_from(e,n){try{var i=g(e,t.__wbindgen_malloc,t.__wbindgen_realloc),o=f;t.ruffle_stream_from(this.ptr,i,o,L(n))}finally{r[M++]=void 0}}load_data(e,n){try{t.ruffle_load_data(this.ptr,_(e),L(n))}finally{r[M++]=void 0}}play(){t.ruffle_play(this.ptr)}pause(){t.ruffle_pause(this.ptr)}is_playing(){return 0!==t.ruffle_is_playing(this.ptr)}prepare_context_menu(){return a(t.ruffle_prepare_context_menu(this.ptr))}run_context_menu_callback(e){t.ruffle_run_context_menu_callback(this.ptr,e)}set_fullscreen(e){t.ruffle_set_fullscreen(this.ptr,e)}clear_custom_menu_items(){t.ruffle_clear_custom_menu_items(this.ptr)}destroy(){t.ruffle_destroy(this.ptr)}call_exposed_callback(e,n){var r=g(e,t.__wbindgen_malloc,t.__wbindgen_realloc),i=f,o=function(e,n){const r=n(4*e.length),i=(null!==j&&j.buffer===t.memory.buffer||(j=new Uint32Array(t.memory.buffer)),j);for(let t=0;t<e.length;t++)i[r/4+t]=_(e[t]);return f=e.length,r}(n,t.__wbindgen_malloc),s=f;return a(t.ruffle_call_exposed_callback(this.ptr,r,i,o,s))}set_trace_observer(e){t.ruffle_set_trace_observer(this.ptr,_(e))}audio_context(){return a(t.ruffle_audio_context(this.ptr))}}const W=async function r(o){void 0===o&&(o=new URL(n(931),n.b));const s={wbg:{}};s.wbg.__wbindgen_object_drop_ref=function(e){a(e)},s.wbg.__wbindgen_cb_drop=function(e){const t=a(e).original;return 1==t.cnt--&&(t.a=0,!0)},s.wbg.__wbindgen_string_new=function(e,t){return _(l(e,t))},s.wbg.__wbindgen_object_clone_ref=function(e){return _(i(e))},s.wbg.__wbg_ruffle_new=function(e){return _(B.__wrap(e))},s.wbg.__wbindgen_is_function=function(e){return"function"==typeof i(e)},s.wbg.__wbindgen_json_parse=function(e,t){return _(JSON.parse(l(e,t)))},s.wbg.__wbindgen_json_serialize=function(e,n){const r=i(n);var o=g(JSON.stringify(void 0===r?null:r),t.__wbindgen_malloc,t.__wbindgen_realloc),a=f;h()[e/4+1]=a,h()[e/4+0]=o},s.wbg.__wbg_new_df6e6ab7a65c4c4d=function(e,t){return _(new Error(l(e,t)))},s.wbg.__wbg_panic_bbc809dd04a12c60=function(e,t){i(e).panic(i(t))},s.wbg.__wbg_copyToAudioBuffer_58f244be94bac1d2=function(e,t,n,r,o){var a,s,c;a=i(e),s=0===t?void 0:P(t,n),c=0===r?void 0:P(r,o),s&&a.getChannelData(0).set(s),c&&a.getChannelData(1).set(c)},s.wbg.__wbg_getAudioOutputTimestamp_a67aa6687740cd15=function(e){var t=function(e){var t,n;const r=null===(t=e.getOutputTimestamp)||void 0===t?void 0:t.call(e);return null!==(n=null==r?void 0:r.contextTime)&&void 0!==n?n:e.currentTime-e.baseLatency}(i(e));return t},s.wbg.__wbg_setFullscreen_9819a8b20564e39b=function(){return O((function(e,t){i(e).setFullscreen(0!==t)}),arguments)},s.wbg.__wbindgen_string_get=function(e,n){const r=i(n);var o="string"==typeof r?r:void 0,a=m(o)?0:g(o,t.__wbindgen_malloc,t.__wbindgen_realloc),s=f;h()[e/4+1]=s,h()[e/4+0]=a},s.wbg.__wbg_displayUnsupportedMessage_a8f81a8e054e5e91=function(e){i(e).displayUnsupportedMessage()},s.wbg.__wbg_displayRootMovieDownloadFailedMessage_1a5c34096259685a=function(e){i(e).displayRootMovieDownloadFailedMessage()},s.wbg.__wbg_displayMessage_c57c20204892da2b=function(e,t,n){i(e).displayMessage(l(t,n))},s.wbg.__wbg_setMetadata_bbaeaee7f48274e6=function(e,t){i(e).setMetadata(a(t))},s.wbg.__wbg_onCallbackAvailable_3a48fae397926c96=function(e,t,n){i(e).onCallbackAvailable(l(t,n))},s.wbg.__wbg_onFSCommand_fb2f94653f71796e=function(){return O((function(e,t,n,r,o){return i(e).onFSCommand(l(t,n),l(r,o))}),arguments)},s.wbg.__wbindgen_number_get=function(e,n){const r=i(n);var o="number"==typeof r?r:void 0;(null!==p&&p.buffer===t.memory.buffer||(p=new Float64Array(t.memory.buffer)),p)[e/8+1]=m(o)?0:o,h()[e/4+0]=!m(o)},s.wbg.__wbindgen_boolean_get=function(e){const t=i(e);return"boolean"==typeof t?t?1:0:2},s.wbg.__wbindgen_number_new=function(e){return _(e)},s.wbg.__wbg_new_693216e109162396=function(){return _(new Error)},s.wbg.__wbg_stack_0ddaca5d1abfb52f=function(e,n){var r=g(i(n).stack,t.__wbindgen_malloc,t.__wbindgen_realloc),o=f;h()[e/4+1]=o,h()[e/4+0]=r},s.wbg.__wbg_error_09919627ac0992f5=function(e,n){try{console.error(l(e,n))}finally{t.__wbindgen_free(e,n)}},s.wbg.__wbindgen_is_undefined=function(e){return void 0===i(e)},s.wbg.__wbg_instanceof_WebGl2RenderingContext_56ad96bfac3f5531=function(e){return i(e)instanceof WebGL2RenderingContext},s.wbg.__wbg_bindVertexArray_52b8b2f5fd93d81d=function(e,t){i(e).bindVertexArray(i(t))},s.wbg.__wbg_blitFramebuffer_d6dafd082e3b1266=function(e,t,n,r,o,a,s,c,u,l,_){i(e).blitFramebuffer(t,n,r,o,a,s,c,u,l>>>0,_>>>0)},s.wbg.__wbg_createVertexArray_d59135c0a43c410b=function(e){var t=i(e).createVertexArray();return m(t)?0:_(t)},s.wbg.__wbg_renderbufferStorageMultisample_41916a754c02df64=function(e,t,n,r,o,a){i(e).renderbufferStorageMultisample(t>>>0,n,r>>>0,o,a)},s.wbg.__wbg_texImage2D_29ea0a7f026e239b=function(){return O((function(e,t,n,r,o,a,s,c,u,l,_){i(e).texImage2D(t>>>0,n,r,o,a,s,c>>>0,u>>>0,0===l?void 0:D(l,_))}),arguments)},s.wbg.__wbg_bindFramebuffer_48c4bf8ff82bf7e9=function(e,t,n){i(e).bindFramebuffer(t>>>0,i(n))},s.wbg.__wbg_bindRenderbuffer_4a9ad1cf80580397=function(e,t,n){i(e).bindRenderbuffer(t>>>0,i(n))},s.wbg.__wbg_bindTexture_9d8ed0fcd83eb0a9=function(e,t,n){i(e).bindTexture(t>>>0,i(n))},s.wbg.__wbg_createFramebuffer_9818fc04b4a38c18=function(e){var t=i(e).createFramebuffer();return m(t)?0:_(t)},s.wbg.__wbg_createRenderbuffer_d1a55ec78e26295b=function(e){var t=i(e).createRenderbuffer();return m(t)?0:_(t)},s.wbg.__wbg_createTexture_8f31e7386e22fc37=function(e){var t=i(e).createTexture();return m(t)?0:_(t)},s.wbg.__wbg_deleteFramebuffer_5f58ccb548438c57=function(e,t){i(e).deleteFramebuffer(i(t))},s.wbg.__wbg_deleteRenderbuffer_6372146d4689793e=function(e,t){i(e).deleteRenderbuffer(i(t))},s.wbg.__wbg_deleteTexture_a0632c71429795ac=function(e,t){i(e).deleteTexture(i(t))},s.wbg.__wbg_framebufferRenderbuffer_9d619e8bf8f2aeb6=function(e,t,n,r,o){i(e).framebufferRenderbuffer(t>>>0,n>>>0,r>>>0,i(o))},s.wbg.__wbg_framebufferTexture2D_3da41a7f38e2c523=function(e,t,n,r,o,a){i(e).framebufferTexture2D(t>>>0,n>>>0,r>>>0,i(o),a)},s.wbg.__wbg_getError_868f7c8ef6475b32=function(e){return i(e).getError()},s.wbg.__wbg_getParameter_e3aea13dd0a2904d=function(){return O((function(e,t){return _(i(e).getParameter(t>>>0))}),arguments)},s.wbg.__wbg_texParameteri_c54aab65b2f8cf6d=function(e,t,n,r){i(e).texParameteri(t>>>0,n>>>0,r)},s.wbg.__wbg_instanceof_Window_c4b70662a0d2c5ec=function(e){return i(e)instanceof Window},s.wbg.__wbg_document_1c64944725c0d81d=function(e){var t=i(e).document;return m(t)?0:_(t)},s.wbg.__wbg_location_f98ad02632f88c43=function(e){return _(i(e).location)},s.wbg.__wbg_navigator_480e592af6ad365b=function(e){return _(i(e).navigator)},s.wbg.__wbg_devicePixelRatio_d8c3852bb37f76bf=function(e){return i(e).devicePixelRatio},s.wbg.__wbg_performance_947628766699c5bb=function(e){var t=i(e).performance;return m(t)?0:_(t)},s.wbg.__wbg_localStorage_6775414303ab5085=function(){return O((function(e){var t=i(e).localStorage;return m(t)?0:_(t)}),arguments)},s.wbg.__wbg_cancelAnimationFrame_5f2a1e987a6de100=function(){return O((function(e,t){i(e).cancelAnimationFrame(t)}),arguments)},s.wbg.__wbg_focus_70ecc8fcab4bdb61=function(){return O((function(e){i(e).focus()}),arguments)},s.wbg.__wbg_open_5416e4448a959cfa=function(){return O((function(e,t,n,r,o){var a=i(e).open(l(t,n),l(r,o));return m(a)?0:_(a)}),arguments)},s.wbg.__wbg_requestAnimationFrame_71638ca922068239=function(){return O((function(e,t){return i(e).requestAnimationFrame(i(t))}),arguments)},s.wbg.__wbg_fetch_cfe0d1dd786e9cd4=function(e,t){return _(i(e).fetch(i(t)))},s.wbg.__wbg_destination_6c3ac66ee8b2fe85=function(e){return _(i(e).destination)},s.wbg.__wbg_sampleRate_ffa6f08191b00934=function(e){return i(e).sampleRate},s.wbg.__wbg_currentTime_e231c76a3c011126=function(e){return i(e).currentTime},s.wbg.__wbg_new_52bbbd81ffc19dff=function(){return O((function(){return _(new e)}),arguments)},s.wbg.__wbg_suspend_5b2c4674b28d07f2=function(){return O((function(e){return _(i(e).suspend())}),arguments)},s.wbg.__wbg_createBuffer_79833a4052d7b42a=function(){return O((function(e,t,n,r){return _(i(e).createBuffer(t>>>0,n>>>0,r))}),arguments)},s.wbg.__wbg_createBufferSource_7244d810d62a0bed=function(){return O((function(e){return _(i(e).createBufferSource())}),arguments)},s.wbg.__wbg_createChannelMerger_542d0885aa4bdc09=function(){return O((function(e,t){return _(i(e).createChannelMerger(t>>>0))}),arguments)},s.wbg.__wbg_createChannelSplitter_95302cbc3f9b9f85=function(){return O((function(e,t){return _(i(e).createChannelSplitter(t>>>0))}),arguments)},s.wbg.__wbg_createGain_c5f114390c363029=function(){return O((function(e){return _(i(e).createGain())}),arguments)},s.wbg.__wbg_createScriptProcessor_ec30f8ab6ea543d1=function(){return O((function(e,t,n,r){return _(i(e).createScriptProcessor(t>>>0,n>>>0,r>>>0))}),arguments)},s.wbg.__wbg_decodeAudioData_66b886741a4167f4=function(){return O((function(e,t,n,r){return _(i(e).decodeAudioData(i(t),i(n),i(r)))}),arguments)},s.wbg.__wbg_resume_ca50287e91c0323e=function(){return O((function(e){return _(i(e).resume())}),arguments)},s.wbg.__wbg_setvalue_df8236adf40ea2d3=function(e,t){i(e).value=t},s.wbg.__wbg_linearRampToValueAtTime_113d2920c90f1851=function(){return O((function(e,t,n){return _(i(e).linearRampToValueAtTime(t,n))}),arguments)},s.wbg.__wbg_setValueAtTime_9396570ff0d3cc1f=function(){return O((function(e,t,n){return _(i(e).setValueAtTime(t,n))}),arguments)},s.wbg.__wbg_gain_d4eaca6128dcfd90=function(e){return _(i(e).gain)},s.wbg.__wbg_baseURI_083fd53f8bea9af2=function(){return O((function(e,n){var r=i(n).baseURI,o=m(r)?0:g(r,t.__wbindgen_malloc,t.__wbindgen_realloc),a=f;h()[e/4+1]=a,h()[e/4+0]=o}),arguments)},s.wbg.__wbg_appendChild_d318db34c4559916=function(){return O((function(e,t){return _(i(e).appendChild(i(t)))}),arguments)},s.wbg.__wbg_instanceof_SvgsvgElement_631275f115d8f8e3=function(e){return i(e)instanceof SVGSVGElement},s.wbg.__wbg_createSVGMatrix_037d6368ea06b02d=function(e){return _(i(e).createSVGMatrix())},s.wbg.__wbg_protocol_f17adabd4e662b06=function(){return O((function(e,n){var r=g(i(n).protocol,t.__wbindgen_malloc,t.__wbindgen_realloc),o=f;h()[e/4+1]=o,h()[e/4+0]=r}),arguments)},s.wbg.__wbg_assign_26269af9ce90e6c7=function(){return O((function(e,t,n){i(e).assign(l(t,n))}),arguments)},s.wbg.__wbg_new_a3422e0170c31454=function(){return O((function(){return _(new Path2D)}),arguments)},s.wbg.__wbg_addPath_18881cd56483fe63=function(e,t,n){i(e).addPath(i(t),i(n))},s.wbg.__wbg_closePath_bf39ada268053aea=function(e){i(e).closePath()},s.wbg.__wbg_lineTo_4d75fbab7308c3d2=function(e,t,n){i(e).lineTo(t,n)},s.wbg.__wbg_moveTo_70f7a4760893f917=function(e,t,n){i(e).moveTo(t,n)},s.wbg.__wbg_quadraticCurveTo_7724e01d766ebfe2=function(e,t,n,r,o){i(e).quadraticCurveTo(t,n,r,o)},s.wbg.__wbg_get_f0092ad67dc97639=function(){return O((function(e,n,r,o){var a=i(n)[l(r,o)],s=m(a)?0:g(a,t.__wbindgen_malloc,t.__wbindgen_realloc),c=f;h()[e/4+1]=c,h()[e/4+0]=s}),arguments)},s.wbg.__wbg_set_3a236a97145dc780=function(){return O((function(e,t,n,r,o){i(e)[l(t,n)]=l(r,o)}),arguments)},s.wbg.__wbg_delete_881ab2d2a830b82f=function(){return O((function(e,t,n){delete i(e)[l(t,n)]}),arguments)},s.wbg.__wbg_length_b398b347bd3c9cd5=function(e){return i(e).length},s.wbg.__wbg_setTransform_3f9fc1784a580fff=function(e,t){i(e).setTransform(i(t))},s.wbg.__wbg_setProperty_1460c660bc329763=function(){return O((function(e,t,n,r,o){i(e).setProperty(l(t,n),l(r,o))}),arguments)},s.wbg.__wbg_offsetX_5da3ebf8a8cda8a4=function(e){return i(e).offsetX},s.wbg.__wbg_offsetY_b0edbc16723a55cb=function(e){return i(e).offsetY},s.wbg.__wbg_button_a02c0467d38e8338=function(e){return i(e).button},s.wbg.__wbg_bindVertexArrayOES_7104c80fb0d31cb0=function(e,t){i(e).bindVertexArrayOES(i(t))},s.wbg.__wbg_createVertexArrayOES_ced4f8a084b789b7=function(e){var t=i(e).createVertexArrayOES();return m(t)?0:_(t)},s.wbg.__wbg_deltaY_080604c20160c0e8=function(e){return i(e).deltaY},s.wbg.__wbg_deltaMode_c5ec1ee518ea0a08=function(e){return i(e).deltaMode},s.wbg.__wbg_connect_723cc4823fe3e6c0=function(){return O((function(e,t){return _(i(e).connect(i(t)))}),arguments)},s.wbg.__wbg_connect_cb8dcaafd6d14fe4=function(){return O((function(e,t,n){return _(i(e).connect(i(t),n>>>0))}),arguments)},s.wbg.__wbg_connect_eb8fcb61cab88f0b=function(){return O((function(e,t,n,r){return _(i(e).connect(i(t),n>>>0,r>>>0))}),arguments)},s.wbg.__wbg_disconnect_661941cf5b88fa5a=function(){return O((function(e){i(e).disconnect()}),arguments)},s.wbg.__wbg_instanceof_HtmlFormElement_aeafa27e92962efa=function(e){return i(e)instanceof HTMLFormElement},s.wbg.__wbg_submit_7479ea6e99f76174=function(){return O((function(e){i(e).submit()}),arguments)},s.wbg.__wbg_instanceof_Response_e1b11afbefa5b563=function(e){return i(e)instanceof Response},s.wbg.__wbg_ok_270f6d403efe7e7b=function(e){return i(e).ok},s.wbg.__wbg_statusText_97740db9b8bb12e3=function(e,n){var r=g(i(n).statusText,t.__wbindgen_malloc,t.__wbindgen_realloc),o=f;h()[e/4+1]=o,h()[e/4+0]=r},s.wbg.__wbg_arrayBuffer_b8937ed04beb0d36=function(){return O((function(e){return _(i(e).arrayBuffer())}),arguments)},s.wbg.__wbg_seta_f5667df13832f473=function(e,t){i(e).a=t},s.wbg.__wbg_setb_51b68c87004ceb92=function(e,t){i(e).b=t},s.wbg.__wbg_setc_62d7a8abc0082fcc=function(e,t){i(e).c=t},s.wbg.__wbg_setd_544fd4902db40bca=function(e,t){i(e).d=t},s.wbg.__wbg_sete_a3575dd88c8f17a3=function(e,t){i(e).e=t},s.wbg.__wbg_setf_956eaea5b3047302=function(e,t){i(e).f=t},s.wbg.__wbg_setbuffer_c643a88bac27b2bd=function(e,t){i(e).buffer=i(t)},s.wbg.__wbg_setloop_32c84ea32fabef74=function(e,t){i(e).loop=0!==t},s.wbg.__wbg_setloopStart_a113b4d478da7f93=function(e,t){i(e).loopStart=t},s.wbg.__wbg_setloopEnd_b83c2563fe5be665=function(e,t){i(e).loopEnd=t},s.wbg.__wbg_setonended_6ce8715add45953e=function(e,t){i(e).onended=i(t)},s.wbg.__wbg_start_551bedf1ecfdc0e2=function(){return O((function(e){i(e).start()}),arguments)},s.wbg.__wbg_start_885262ec460f3ef3=function(){return O((function(e,t,n){i(e).start(t,n)}),arguments)},s.wbg.__wbg_stop_c6532de1aeb2e765=function(){return O((function(e,t){i(e).stop(t)}),arguments)},s.wbg.__wbg_outputBuffer_3f27dc3af0998ec9=function(){return O((function(e){return _(i(e).outputBuffer)}),arguments)},s.wbg.__wbg_now_559193109055ebad=function(e){return i(e).now()},s.wbg.__wbg_pointerId_9302f0e125f0b48e=function(e){return i(e).pointerId},s.wbg.__wbg_currentTarget_65309531208d5df3=function(e){var t=i(e).currentTarget;return m(t)?0:_(t)},s.wbg.__wbg_preventDefault_9866c9fd51eecfb6=function(e){i(e).preventDefault()},s.wbg.__wbg_setsrc_3eb04f553f8335c7=function(e,t,n){i(e).src=l(t,n)},s.wbg.__wbg_new_265b3e027a3022bd=function(){return O((function(){return _(new Image)}),arguments)},s.wbg.__wbg_key_10dcaa4bb6d5449f=function(e,n){var r=g(i(n).key,t.__wbindgen_malloc,t.__wbindgen_realloc),o=f;h()[e/4+1]=o,h()[e/4+0]=r},s.wbg.__wbg_code_1c2fd251f38b398a=function(e,n){var r=g(i(n).code,t.__wbindgen_malloc,t.__wbindgen_realloc),o=f;h()[e/4+1]=o,h()[e/4+0]=r},s.wbg.__wbg_newwithstrandinit_9b0fa00478c37287=function(){return O((function(e,t,n){return _(new Request(l(e,t),i(n)))}),arguments)},s.wbg.__wbg_setonaudioprocess_4334efc34353560d=function(e,t){i(e).onaudioprocess=i(t)},s.wbg.__wbg_body_78ae4fd43b446013=function(e){var t=i(e).body;return m(t)?0:_(t)},s.wbg.__wbg_createElement_86c152812a141a62=function(){return O((function(e,t,n){return _(i(e).createElement(l(t,n)))}),arguments)},s.wbg.__wbg_createElementNS_ae12b8681c3957a3=function(){return O((function(e,t,n,r,o){return _(i(e).createElementNS(0===t?void 0:l(t,n),l(r,o)))}),arguments)},s.wbg.__wbg_setid_681bb5a14c3d5850=function(e,t,n){i(e).id=l(t,n)},s.wbg.__wbg_clientWidth_4d9e01af2b5b9f21=function(e){return i(e).clientWidth},s.wbg.__wbg_clientHeight_87c209f0cacf2e97=function(e){return i(e).clientHeight},s.wbg.__wbg_querySelector_dc71838110c91f39=function(){return O((function(e,t,n){var r=i(e).querySelector(l(t,n));return m(r)?0:_(r)}),arguments)},s.wbg.__wbg_releasePointerCapture_326599f769b49681=function(){return O((function(e,t){i(e).releasePointerCapture(t)}),arguments)},s.wbg.__wbg_setAttribute_1b533bf07966de55=function(){return O((function(e,t,n,r,o){i(e).setAttribute(l(t,n),l(r,o))}),arguments)},s.wbg.__wbg_setAttributeNS_92db6decf2ec8400=function(){return O((function(e,t,n,r,o,a,s){i(e).setAttributeNS(0===t?void 0:l(t,n),l(r,o),l(a,s))}),arguments)},s.wbg.__wbg_setPointerCapture_bd3244d9f008798f=function(){return O((function(e,t){i(e).setPointerCapture(t)}),arguments)},s.wbg.__wbg_remove_c63cabc94a77cacb=function(e){i(e).remove()},s.wbg.__wbg_instanceof_WebGlRenderingContext_101b938bec1286a3=function(e){return i(e)instanceof WebGLRenderingContext},s.wbg.__wbg_drawingBufferWidth_8b0c2b31d9d6eee7=function(e){return i(e).drawingBufferWidth},s.wbg.__wbg_drawingBufferHeight_f62678018bab567c=function(e){return i(e).drawingBufferHeight},s.wbg.__wbg_bufferData_2f9be23b37e5a1a4=function(e,t,n,r,o){i(e).bufferData(t>>>0,D(n,r),o>>>0)},s.wbg.__wbg_texImage2D_712c56fe5a9825ed=function(){return O((function(e,t,n,r,o,a,s,c,u,l,_){i(e).texImage2D(t>>>0,n,r,o,a,s,c>>>0,u>>>0,0===l?void 0:D(l,_))}),arguments)},s.wbg.__wbg_uniform1fv_02b26dddaa3ea984=function(e,t,n,r){i(e).uniform1fv(i(t),P(n,r))},s.wbg.__wbg_uniform4fv_ca394beb323215c6=function(e,t,n,r){i(e).uniform4fv(i(t),P(n,r))},s.wbg.__wbg_uniformMatrix3fv_340429fe0911bc6f=function(e,t,n,r,o){i(e).uniformMatrix3fv(i(t),0!==n,P(r,o))},s.wbg.__wbg_uniformMatrix4fv_a92133b68236ac68=function(e,t,n,r,o){i(e).uniformMatrix4fv(i(t),0!==n,P(r,o))},s.wbg.__wbg_activeTexture_b34aca0c2110966c=function(e,t){i(e).activeTexture(t>>>0)},s.wbg.__wbg_attachShader_eaa824fd5b37a770=function(e,t,n){i(e).attachShader(i(t),i(n))},s.wbg.__wbg_bindBuffer_2ca7e1c18819ecb2=function(e,t,n){i(e).bindBuffer(t>>>0,i(n))},s.wbg.__wbg_bindFramebuffer_c9f468afa9d42a5f=function(e,t,n){i(e).bindFramebuffer(t>>>0,i(n))},s.wbg.__wbg_bindRenderbuffer_7b2b49f71f3eeef9=function(e,t,n){i(e).bindRenderbuffer(t>>>0,i(n))},s.wbg.__wbg_bindTexture_edd827f3dba6038e=function(e,t,n){i(e).bindTexture(t>>>0,i(n))},s.wbg.__wbg_blendFunc_d5ab9f0ff5a40a48=function(e,t,n){i(e).blendFunc(t>>>0,n>>>0)},s.wbg.__wbg_clear_da26620d46f0a11a=function(e,t){i(e).clear(t>>>0)},s.wbg.__wbg_clearColor_cbf22f8faa5a52c1=function(e,t,n,r,o){i(e).clearColor(t,n,r,o)},s.wbg.__wbg_colorMask_035708eb94fe9af8=function(e,t,n,r,o){i(e).colorMask(0!==t,0!==n,0!==r,0!==o)},s.wbg.__wbg_compileShader_8fb70a472f32552c=function(e,t){i(e).compileShader(i(t))},s.wbg.__wbg_createBuffer_4802e2f0e1b1acdf=function(e){var t=i(e).createBuffer();return m(t)?0:_(t)},s.wbg.__wbg_createProgram_b1d94f4c7554d3a1=function(e){var t=i(e).createProgram();return m(t)?0:_(t)},s.wbg.__wbg_createShader_da09e167692f0dc7=function(e,t){var n=i(e).createShader(t>>>0);return m(n)?0:_(n)},s.wbg.__wbg_createTexture_bafc7c08393ae59d=function(e){var t=i(e).createTexture();return m(t)?0:_(t)},s.wbg.__wbg_disable_b07faddb7d04349f=function(e,t){i(e).disable(t>>>0)},s.wbg.__wbg_disableVertexAttribArray_c9fdabd5f12b0539=function(e,t){i(e).disableVertexAttribArray(t>>>0)},s.wbg.__wbg_drawElements_8e8af4b6757fedce=function(e,t,n,r,o){i(e).drawElements(t>>>0,n,r>>>0,o)},s.wbg.__wbg_enable_d3d210aeb08eff52=function(e,t){i(e).enable(t>>>0)},s.wbg.__wbg_enableVertexAttribArray_d539e547495bea44=function(e,t){i(e).enableVertexAttribArray(t>>>0)},s.wbg.__wbg_getAttribLocation_706a0beabcdaebcf=function(e,t,n,r){return i(e).getAttribLocation(i(t),l(n,r))},s.wbg.__wbg_getExtension_045789240c50a108=function(){return O((function(e,t,n){var r=i(e).getExtension(l(t,n));return m(r)?0:_(r)}),arguments)},s.wbg.__wbg_getParameter_6412bd2d0602696d=function(){return O((function(e,t){return _(i(e).getParameter(t>>>0))}),arguments)},s.wbg.__wbg_getProgramInfoLog_b60e82d52c200cbd=function(e,n,r){var o=i(n).getProgramInfoLog(i(r)),a=m(o)?0:g(o,t.__wbindgen_malloc,t.__wbindgen_realloc),s=f;h()[e/4+1]=s,h()[e/4+0]=a},s.wbg.__wbg_getProgramParameter_229c193895936bbe=function(e,t,n){return _(i(e).getProgramParameter(i(t),n>>>0))},s.wbg.__wbg_getShaderInfoLog_ba51160c01b98360=function(e,n,r){var o=i(n).getShaderInfoLog(i(r)),a=m(o)?0:g(o,t.__wbindgen_malloc,t.__wbindgen_realloc),s=f;h()[e/4+1]=s,h()[e/4+0]=a},s.wbg.__wbg_getUniformLocation_c3b3570b4632cc5c=function(e,t,n,r){var o=i(e).getUniformLocation(i(t),l(n,r));return m(o)?0:_(o)},s.wbg.__wbg_linkProgram_7080c84b0233cea2=function(e,t){i(e).linkProgram(i(t))},s.wbg.__wbg_pixelStorei_3cd96723ae22a5c6=function(e,t,n){i(e).pixelStorei(t>>>0,n)},s.wbg.__wbg_shaderSource_67b991301db003d0=function(e,t,n,r){i(e).shaderSource(i(t),l(n,r))},s.wbg.__wbg_stencilFunc_bbc24750c2db9a15=function(e,t,n,r){i(e).stencilFunc(t>>>0,n,r>>>0)},s.wbg.__wbg_stencilMask_0ec7662710f598d4=function(e,t){i(e).stencilMask(t>>>0)},s.wbg.__wbg_stencilOp_fd4ec71a7de6ac85=function(e,t,n,r){i(e).stencilOp(t>>>0,n>>>0,r>>>0)},s.wbg.__wbg_texParameteri_bd724f6a5ad0cbbc=function(e,t,n,r){i(e).texParameteri(t>>>0,n>>>0,r)},s.wbg.__wbg_uniform1f_b9cff1cea32def5a=function(e,t,n){i(e).uniform1f(i(t),n)},s.wbg.__wbg_uniform1i_0811c29c0eebe191=function(e,t,n){i(e).uniform1i(i(t),n)},s.wbg.__wbg_useProgram_b72b0bfcbc720fa9=function(e,t){i(e).useProgram(i(t))},s.wbg.__wbg_vertexAttribPointer_b5cb524c6fe9eec8=function(e,t,n,r,o,a,s){i(e).vertexAttribPointer(t>>>0,n,r>>>0,0!==o,a,s)},s.wbg.__wbg_viewport_89af3aceb7036a2c=function(e,t,n,r,o){i(e).viewport(t,n,r,o)},s.wbg.__wbg_debug_675b0ecb65722d2a=function(e){console.debug(i(e))},s.wbg.__wbg_error_cc38ce2b4b661e1d=function(e){console.error(i(e))},s.wbg.__wbg_info_e0c9813e6fd3bdc1=function(e){console.info(i(e))},s.wbg.__wbg_log_3445347661d4505e=function(e){console.log(i(e))},s.wbg.__wbg_warn_5ec7c7c02d0b3841=function(e){console.warn(i(e))},s.wbg.__wbg_style_c88e323890d3a091=function(e){return _(i(e).style)},s.wbg.__wbg_instanceof_CanvasRenderingContext2d_3abbe7ec7af32cae=function(e){return i(e)instanceof CanvasRenderingContext2D},s.wbg.__wbg_setglobalAlpha_27b14e5f5b7567ec=function(e,t){i(e).globalAlpha=t},s.wbg.__wbg_setglobalCompositeOperation_c650e9805cc6316f=function(){return O((function(e,t,n){i(e).globalCompositeOperation=l(t,n)}),arguments)},s.wbg.__wbg_setstrokeStyle_947bd4c26c94673f=function(e,t){i(e).strokeStyle=i(t)},s.wbg.__wbg_setfillStyle_528a6a267c863ae7=function(e,t){i(e).fillStyle=i(t)},s.wbg.__wbg_setfilter_3d48443a4a710be8=function(e,t,n){i(e).filter=l(t,n)},s.wbg.__wbg_setimageSmoothingEnabled_92d14a22667eae22=function(e,t){i(e).imageSmoothingEnabled=0!==t},s.wbg.__wbg_setlineWidth_3221b7818c00ed48=function(e,t){i(e).lineWidth=t},s.wbg.__wbg_setlineCap_5284a001e1efcecd=function(e,t,n){i(e).lineCap=l(t,n)},s.wbg.__wbg_setlineJoin_a6af4e7d24a3a67e=function(e,t,n){i(e).lineJoin=l(t,n)},s.wbg.__wbg_setmiterLimit_9fa0d72650341727=function(e,t){i(e).miterLimit=t},s.wbg.__wbg_drawImage_5e8203c5b210fce3=function(){return O((function(e,t,n,r){i(e).drawImage(i(t),n,r)}),arguments)},s.wbg.__wbg_drawImage_9492b361f8b31282=function(){return O((function(e,t,n,r){i(e).drawImage(i(t),n,r)}),arguments)},s.wbg.__wbg_fill_75988ff43d6e3499=function(e,t,n){i(e).fill(i(t),a(n))},s.wbg.__wbg_stroke_d91ac76d5b1eb792=function(e,t){i(e).stroke(i(t))},s.wbg.__wbg_createPattern_1d0b3c3750c8448c=function(){return O((function(e,t,n,r){var o=i(e).createPattern(i(t),l(n,r));return m(o)?0:_(o)}),arguments)},s.wbg.__wbg_createPattern_b824d17776fa1f1e=function(){return O((function(e,t,n,r){var o=i(e).createPattern(i(t),l(n,r));return m(o)?0:_(o)}),arguments)},s.wbg.__wbg_getImageData_9ffc3df78ca3dbc9=function(){return O((function(e,t,n,r,o){return _(i(e).getImageData(t,n,r,o))}),arguments)},s.wbg.__wbg_putImageData_b9544b271e569392=function(){return O((function(e,t,n,r){i(e).putImageData(i(t),n,r)}),arguments)},s.wbg.__wbg_clearRect_07caefec3496ced1=function(e,t,n,r,o){i(e).clearRect(t,n,r,o)},s.wbg.__wbg_fillRect_10e42dc7a5e8cccd=function(e,t,n,r,o){i(e).fillRect(t,n,r,o)},s.wbg.__wbg_resetTransform_26f86c1cc48a4fae=function(){return O((function(e){i(e).resetTransform()}),arguments)},s.wbg.__wbg_setTransform_8ffd6a5c85396174=function(){return O((function(e,t,n,r,o,a,s){i(e).setTransform(t,n,r,o,a,s)}),arguments)},s.wbg.__wbg_newwithbuffersourcesequenceandoptions_2b60b470c130cb1a=function(){return O((function(e,t){return _(new Blob(i(e),i(t)))}),arguments)},s.wbg.__wbg_addEventListener_52721772cc0a7f30=function(){return O((function(e,t,n,r){i(e).addEventListener(l(t,n),i(r))}),arguments)},s.wbg.__wbg_addEventListener_09e11fbf8b4b719b=function(){return O((function(e,t,n,r,o){i(e).addEventListener(l(t,n),i(r),i(o))}),arguments)},s.wbg.__wbg_addEventListener_0ed522a6d9900d5d=function(){return O((function(e,t,n,r,o){i(e).addEventListener(l(t,n),i(r),0!==o)}),arguments)},s.wbg.__wbg_removeEventListener_f2adc9b2b318de99=function(){return O((function(e,t,n,r){i(e).removeEventListener(l(t,n),i(r))}),arguments)},s.wbg.__wbg_removeEventListener_24d5a7c12c3f3c39=function(){return O((function(e,t,n,r,o){i(e).removeEventListener(l(t,n),i(r),0!==o)}),arguments)},s.wbg.__wbg_instanceof_HtmlCanvasElement_25d964a0dde6717e=function(e){return i(e)instanceof HTMLCanvasElement},s.wbg.__wbg_width_555f63ab09ba7d3f=function(e){return i(e).width},s.wbg.__wbg_setwidth_c1a7061891b71f25=function(e,t){i(e).width=t>>>0},s.wbg.__wbg_height_7153faec70fbaf7b=function(e){return i(e).height},s.wbg.__wbg_setheight_88894b05710ff752=function(e,t){i(e).height=t>>>0},s.wbg.__wbg_getContext_f701d0231ae22393=function(){return O((function(e,t,n){var r=i(e).getContext(l(t,n));return m(r)?0:_(r)}),arguments)},s.wbg.__wbg_getContext_3e21e21280a332fc=function(){return O((function(e,t,n,r){var o=i(e).getContext(l(t,n),i(r));return m(o)?0:_(o)}),arguments)},s.wbg.__wbg_width_16bd64d09cbf5661=function(e){return i(e).width},s.wbg.__wbg_height_368bb86c37d51bc9=function(e){return i(e).height},s.wbg.__wbg_data_1ae7496c58caf755=function(e,n){var r=function(e,t){const n=t(1*e.length);return u().set(e,n/1),f=e.length,n}(i(n).data,t.__wbindgen_malloc),o=f;h()[e/4+1]=o,h()[e/4+0]=r},s.wbg.__wbg_newwithu8clampedarray_45da2809f7882d12=function(){return O((function(e,t,n){return _(new ImageData(U(e,t),n>>>0))}),arguments)},s.wbg.__wbg_userAgent_bdd46cceef222f52=function(){return O((function(e,n){var r=g(i(n).userAgent,t.__wbindgen_malloc,t.__wbindgen_realloc),o=f;h()[e/4+1]=o,h()[e/4+0]=r}),arguments)},s.wbg.__wbg_randomFillSync_64cc7d048f228ca8=function(){return O((function(e,t,n){i(e).randomFillSync(D(t,n))}),arguments)},s.wbg.__wbg_getRandomValues_98117e9a7e993920=function(){return O((function(e,t){i(e).getRandomValues(i(t))}),arguments)},s.wbg.__wbg_process_2f24d6544ea7b200=function(e){return _(i(e).process)},s.wbg.__wbindgen_is_object=function(e){const t=i(e);return"object"==typeof t&&null!==t},s.wbg.__wbg_versions_6164651e75405d4a=function(e){return _(i(e).versions)},s.wbg.__wbg_node_4b517d861cbcb3bc=function(e){return _(i(e).node)},s.wbg.__wbindgen_is_string=function(e){return"string"==typeof i(e)},s.wbg.__wbg_modulerequire_3440a4bcf44437db=function(){return O((function(e,t){return _(b.require(l(e,t)))}),arguments)},s.wbg.__wbg_crypto_98fc271021c7d2ad=function(e){return _(i(e).crypto)},s.wbg.__wbg_msCrypto_a2cdb043d2bfe57f=function(e){return _(i(e).msCrypto)},s.wbg.__wbg_get_67189fe0b323d288=function(e,t){return _(i(e)[t>>>0])},s.wbg.__wbg_new_949bbc1147195c4e=function(){return _(new Array)},s.wbg.__wbg_newnoargs_be86524d73f67598=function(e,t){return _(new Function(l(e,t)))},s.wbg.__wbg_next_7720502039b96d00=function(){return O((function(e){return _(i(e).next())}),arguments)},s.wbg.__wbg_done_b06cf0578e89ff68=function(e){return i(e).done},s.wbg.__wbg_value_e74a542443d92451=function(e){return _(i(e).value)},s.wbg.__wbg_get_4d0f21c2f823742e=function(){return O((function(e,t){return _(Reflect.get(i(e),i(t)))}),arguments)},s.wbg.__wbg_call_888d259a5fefc347=function(){return O((function(e,t){return _(i(e).call(i(t)))}),arguments)},s.wbg.__wbg_new_0b83d3df67ecb33e=function(){return _(new Object)},s.wbg.__wbg_isArray_eb7ad55f2da67dde=function(e){return Array.isArray(i(e))},s.wbg.__wbg_of_db9e1b8e0a7ed9bc=function(e,t){return _(Array.of(i(e),i(t)))},s.wbg.__wbg_push_284486ca27c6aa8b=function(e,t){return i(e).push(i(t))},s.wbg.__wbg_instanceof_ArrayBuffer_764b6d4119231cb3=function(e){return i(e)instanceof ArrayBuffer},s.wbg.__wbg_new_3e02a228090b2e72=function(e){return _(new ArrayBuffer(e>>>0))},s.wbg.__wbg_slice_dcc477bca8fe38b1=function(e,t,n){return _(i(e).slice(t>>>0,n>>>0))},s.wbg.__wbg_values_364ae56c608e6824=function(e){return _(i(e).values())},s.wbg.__wbg_apply_7cfa6ebf144990a5=function(){return O((function(e,t,n){return _(i(e).apply(i(t),i(n)))}),arguments)},s.wbg.__wbg_call_346669c262382ad7=function(){return O((function(e,t,n){return _(i(e).call(i(t),i(n)))}),arguments)},s.wbg.__wbg_getTime_10d33f4f2959e5dd=function(e){return i(e).getTime()},s.wbg.__wbg_getTimezoneOffset_d3e5a22a1b7fb1d8=function(e){return i(e).getTimezoneOffset()},s.wbg.__wbg_new0_fd3a3a290b25cdac=function(){return _(new Date)},s.wbg.__wbg_instanceof_Object_66786225e0dbc8ba=function(e){return i(e)instanceof Object},s.wbg.__wbg_entries_aadf9c3f38203a12=function(e){return _(Object.entries(i(e)))},s.wbg.__wbg_fromEntries_164ebf0f69983a8e=function(){return O((function(e){return _(Object.fromEntries(i(e)))}),arguments)},s.wbg.__wbg_is_0f5efc7977a2c50b=function(e,t){return Object.is(i(e),i(t))},s.wbg.__wbg_new_b1d61b5687f5e73a=function(e,n){try{var r={a:e,b:n},i=new Promise(((e,n)=>{const i=r.a;r.a=0;try{return function(e,n,r,i){t.wasm_bindgen__convert__closures__invoke2_mut__h81ecd650794f41bf(e,n,_(r),_(i))}(i,r.b,e,n)}finally{r.a=i}}));return _(i)}finally{r.a=r.b=0}},s.wbg.__wbg_resolve_d23068002f584f22=function(e){return _(Promise.resolve(i(e)))},s.wbg.__wbg_then_2fcac196782070cc=function(e,t){return _(i(e).then(i(t)))},s.wbg.__wbg_then_8c2d62e8ae5978f7=function(e,t,n){return _(i(e).then(i(t),i(n)))},s.wbg.__wbg_self_c6fbdfc2918d5e58=function(){return O((function(){return _(self.self)}),arguments)},s.wbg.__wbg_window_baec038b5ab35c54=function(){return O((function(){return _(window.window)}),arguments)},s.wbg.__wbg_globalThis_3f735a5746d41fbd=function(){return O((function(){return _(globalThis.globalThis)}),arguments)},s.wbg.__wbg_global_1bc0b39582740e95=function(){return O((function(){return _(n.g.global)}),arguments)},s.wbg.__wbg_buffer_397eaa4d72ee94dd=function(e){return _(i(e).buffer)},s.wbg.__wbg_newwithbyteoffsetandlength_4b9b8c4e3f5adbff=function(e,t,n){return _(new Uint8Array(i(e),t>>>0,n>>>0))},s.wbg.__wbg_new_a7ce447f15ff496f=function(e){return _(new Uint8Array(i(e)))},s.wbg.__wbg_set_969ad0a60e51d320=function(e,t,n){i(e).set(i(t),n>>>0)},s.wbg.__wbg_length_1eb8fc608a0d4cdb=function(e){return i(e).length},s.wbg.__wbg_newwithlength_929232475839a482=function(e){return _(new Uint8Array(e>>>0))},s.wbg.__wbg_fill_cd6951964c67ad3a=function(e,t,n,r){return _(i(e).fill(t,n>>>0,r>>>0))},s.wbg.__wbg_buffer_facf0398a281c85b=function(e){return _(i(e).buffer)},s.wbg.__wbg_subarray_8b658422a224f479=function(e,t,n){return _(i(e).subarray(t>>>0,n>>>0))},s.wbg.__wbg_byteLength_3e250b41a8915757=function(e){return i(e).byteLength},s.wbg.__wbg_byteOffset_4204ecb24a6e5df9=function(e){return i(e).byteOffset},s.wbg.__wbg_ownKeys_f3f1916b5564918f=function(){return O((function(e){return _(Reflect.ownKeys(i(e)))}),arguments)},s.wbg.__wbg_set_82a4e8a85e31ac42=function(){return O((function(e,t,n){return Reflect.set(i(e),i(t),i(n))}),arguments)},s.wbg.__wbindgen_debug_string=function(e,n){var r=g(y(i(n)),t.__wbindgen_malloc,t.__wbindgen_realloc),o=f;h()[e/4+1]=o,h()[e/4+0]=r},s.wbg.__wbindgen_throw=function(e,t){throw new Error(l(e,t))},s.wbg.__wbindgen_rethrow=function(e){throw a(e)},s.wbg.__wbindgen_memory=function(){return _(t.memory)},s.wbg.__wbindgen_closure_wrapper413=function(e,t,n){return _(v(e,t,3,x))},s.wbg.__wbindgen_closure_wrapper415=function(e,t,n){return _(v(e,t,3,k))},s.wbg.__wbindgen_closure_wrapper417=function(e,t,n){return _(v(e,t,3,E))},s.wbg.__wbindgen_closure_wrapper419=function(e,t,n){return _(v(e,t,3,A))},s.wbg.__wbindgen_closure_wrapper421=function(e,t,n){return _(v(e,t,3,S))},s.wbg.__wbindgen_closure_wrapper423=function(e,t,n){return _(v(e,t,3,C))},s.wbg.__wbindgen_closure_wrapper425=function(e,t,n){return _(v(e,t,3,I))},s.wbg.__wbindgen_closure_wrapper427=function(e,t,n){return _(v(e,t,3,R))},s.wbg.__wbindgen_closure_wrapper1856=function(e,t,n){return _(v(e,t,915,F))},("string"==typeof o||"function"==typeof Request&&o instanceof Request||"function"==typeof URL&&o instanceof URL)&&(o=fetch(o));const{instance:c,module:b}=await async function(e,t){if("function"==typeof Response&&e instanceof Response){if("function"==typeof WebAssembly.instantiateStreaming)try{return await WebAssembly.instantiateStreaming(e,t)}catch(t){if("application/wasm"==e.headers.get("Content-Type"))throw t;console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n",t)}const n=await e.arrayBuffer();return await WebAssembly.instantiate(n,t)}{const n=await WebAssembly.instantiate(e,t);return n instanceof WebAssembly.Instance?{instance:n,module:e}:n}}(await o,s);return t=c.exports,r.__wbindgen_wasm_module=b,t};function $(e){const t="function"==typeof Function.prototype.toString?Function.prototype.toString():null;return"string"==typeof t&&t.indexOf("[native code]")>=0&&Function.prototype.toString.call(e).indexOf("[native code]")>=0}let V="";try{void 0!==document.currentScript&&null!==document.currentScript&&"src"in document.currentScript&&""!==document.currentScript.src&&(V=new URL(".",document.currentScript.src).href)}catch(e){console.warn("Unable to get currentScript URL")}function q(e){let t=V;return void 0!==e&&void 0!==e.publicPath&&(t=e.publicPath),""===t||t.endsWith("/")||(t+="/"),t}let z=null;function H(e){return null==z&&(z=async function(e){return"function"==typeof Array.prototype.reduce&&$(Array.prototype.reduce)||Object.defineProperty(Array.prototype,"reduce",{value(...e){if(0===e.length&&window.Prototype&&window.Prototype.Version&&window.Prototype.Version<"1.6.1")return this.length>1?this:this[0];const t=e[0];if(null===this)throw new TypeError("Array.prototype.reduce called on null or undefined");if("function"!=typeof t)throw new TypeError(`${t} is not a function`);const n=Object(this),r=n.length>>>0;let i,o=0;if(e.length>=2)i=e[1];else{for(;o<r&&!(o in n);)o++;if(o>=r)throw new TypeError("Reduce of empty array with no initial value");i=n[o++]}for(;o<r;)o in n&&(i=t(i,n[o],o,n)),o++;return i}}),"function"==typeof Window&&$(Window)||"function"==typeof window.constructor&&$(window.constructor)&&(window.Window=window.constructor),null==window.Reflect&&(window.Reflect={}),"function"!=typeof Reflect.get&&Object.defineProperty(Reflect,"get",{value:(e,t)=>e[t]}),"function"!=typeof Reflect.set&&Object.defineProperty(Reflect,"set",{value(e,t,n){e[t]=n}}),n.p=q(e),await W(),B}(e)),z}class G{constructor(e){if(this.__mimetypes=[],this.__named_mimetypes={},e)for(let t=0;t<e.length;t++)this.install(e[t])}install(e){const t=this.__mimetypes.length;this.__mimetypes.push(e),this.__named_mimetypes[e.type]=e,this[e.type]=e,this[t]=e}item(e){return this.__mimetypes[e]}namedItem(e){return this.__named_mimetypes[e]}get length(){return this.__mimetypes.length}[Symbol.iterator](){return this.__mimetypes[Symbol.iterator]()}}class Y extends G{constructor(e,t,n,r){super(r),this.name=e,this.description=t,this.filename=n}install(e){super.install(e)}[Symbol.iterator](){return super[Symbol.iterator]()}}class J{constructor(e){this.__plugins=[],this.__named_plugins={};for(let t=0;t<e.length;t++)this.install(e[t])}install(e){const t=this.__plugins.length;this.__plugins.push(e),this.__named_plugins[e.name]=e,this[e.name]=e,this[t]=e}item(e){return this.__plugins[e]}namedItem(e){return this.__named_plugins[e]}get length(){return this.__plugins.length}}const Q=new Y("Shockwave Flash","Shockwave Flash 32.0 r0","ruffle.js",null);Q.install({type:"application/futuresplash",description:"Shockwave Flash",suffixes:"spl",enabledPlugin:Q}),Q.install({type:"application/x-shockwave-flash",description:"Shockwave Flash",suffixes:"swf",enabledPlugin:Q}),Q.install({type:"application/x-shockwave-flash2-preview",description:"Shockwave Flash",suffixes:"swf",enabledPlugin:Q}),Q.install({type:"application/vnd.adobe.flash-movie",description:"Shockwave Flash",suffixes:"swf",enabledPlugin:Q});const X=document.createElement("template");X.innerHTML='\n    <style>\n        :host {\n            --ruffle-blue: #37528c;\n            --ruffle-orange: #ffad33;\n\n            display: inline-block;\n            position: relative;\n            /* Default width/height; this will get overridden by user styles/attributes. */\n            width: 550px;\n            height: 400px;\n            font-family: Arial, sans-serif;\n            letter-spacing: 0.4px;\n            touch-action: none;\n            user-select: none;\n            -webkit-user-select: none;\n            -webkit-tap-highlight-color: transparent;\n        }\n\n        /* Ruffle\'s width/height CSS interferes Safari fullscreen CSS. */\n        /* Ensure that Safari\'s fullscreen mode actually fills the screen. */\n        :host(:-webkit-full-screen) {\n            display: block;\n            width: 100% !important;\n            height: 100% !important;\n        }\n\n        /* All of these use the dimensions specified by the embed. */\n        #container,\n        #play_button,\n        #unmute_overlay,\n        #unmute_overlay .background,\n        #panic,\n        #message_overlay {\n            position: absolute;\n            top: 0;\n            bottom: 0;\n            left: 0;\n            right: 0;\n        }\n\n        #container {\n            overflow: hidden;\n        }\n\n        #container canvas {\n            width: 100%;\n            height: 100%;\n        }\n\n        #play_button,\n        #unmute_overlay {\n            cursor: pointer;\n            display: none;\n        }\n\n        #unmute_overlay .background {\n            background: black;\n            opacity: 0.7;\n        }\n\n        #play_button .icon,\n        #unmute_overlay .icon {\n            position: absolute;\n            top: 50%;\n            left: 50%;\n            width: 50%;\n            height: 50%;\n            max-width: 384px;\n            max-height: 384px;\n            transform: translate(-50%, -50%);\n            opacity: 0.8;\n        }\n\n        #play_button:hover .icon,\n        #unmute_overlay:hover .icon {\n            opacity: 1;\n        }\n\n        #panic {\n            font-size: 20px;\n            text-align: center;\n            /* Inverted colors from play button! */\n            background: linear-gradient(180deg, #fd3a40 0%, #fda138 100%);\n            color: white;\n            display: flex;\n            flex-flow: column;\n            justify-content: space-around;\n        }\n\n        #panic a {\n            color: var(--ruffle-blue);\n            font-weight: bold;\n        }\n\n        #panic-title {\n            font-size: xxx-large;\n            font-weight: bold;\n        }\n\n        #panic-body.details {\n            flex: 0.9;\n            margin: 0 10px;\n        }\n\n        #panic-body textarea {\n            width: 100%;\n            height: 100%;\n            resize: none;\n        }\n\n        #panic ul {\n            padding: 0;\n            display: flex;\n            list-style-type: none;\n            justify-content: space-evenly;\n        }\n\n        #message_overlay {\n            position: absolute;\n            background: var(--ruffle-blue);\n            color: var(--ruffle-orange);\n            opacity: 1;\n            z-index: 2;\n            display: flex;\n            align-items: center;\n            justify-content: center;\n            overflow: auto;\n        }\n\n        #message_overlay .message {\n            text-align: center;\n            max-height: 100%;\n            max-width: 100%;\n            padding: 5%;\n        }\n\n        #message_overlay p {\n            margin: 0.5em 0;\n        }\n\n        #message_overlay .message div {\n            display: flex;\n            justify-content: center;\n            flex-wrap: wrap;\n            column-gap: 1em;\n        }\n\n        #message_overlay a, #message_overlay button {\n            cursor: pointer;\n            background: var(--ruffle-blue);\n            color: var(--ruffle-orange);\n            border: 2px solid var(--ruffle-orange);\n            font-weight: bold;\n            font-size: 1.25em;\n            border-radius: 0.6em;\n            padding: 10px;\n            text-decoration: none;\n            margin: 2% 0;\n        }\n\n        #message_overlay a:hover, #message_overlay button:hover {\n            background: #ffffff4c;\n        }\n\n        #continue-btn {\n             cursor: pointer;\n             background: var(--ruffle-blue);\n             color: var(--ruffle-orange);\n             border: 2px solid var(--ruffle-orange);\n             font-weight: bold;\n             font-size: 20px;\n             border-radius: 20px;\n             padding: 10px;\n        }\n\n        #continue-btn:hover {\n            background: #ffffff4c;\n        }\n\n        #context-menu {\n            display: none;\n            color: black;\n            background: #fafafa;\n            border: 1px solid gray;\n            box-shadow: 0px 5px 10px -5px black;\n            position: absolute;\n            font-size: 14px;\n            text-align: left;\n            list-style: none;\n            padding: 0;\n            margin: 0;\n        }\n\n        #context-menu .menu_item {\n            padding: 5px 10px;\n            cursor: pointer;\n            color: black;\n        }\n\n        #context-menu .menu_item.disabled {\n            cursor: default;\n            color: gray;\n        }\n\n        #context-menu .menu_item:not(.disabled):hover {\n            background: lightgray;\n        }\n\n        #context-menu .menu_separator hr {\n            border: none;\n            border-bottom: 1px solid lightgray;\n            margin: 2px;\n        }\n    </style>\n    <style id="dynamic_styles"></style>\n\n    <div id="container">\n        <div id="play_button"><div class="icon"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" preserveAspectRatio="xMidYMid" viewBox="0 0 250 250" style="width:100%;height:100%;"><defs><linearGradient id="a" gradientUnits="userSpaceOnUse" x1="125" y1="0" x2="125" y2="250" spreadMethod="pad"><stop offset="0%" stop-color="#FDA138"/><stop offset="100%" stop-color="#FD3A40"/></linearGradient><g id="b"><path fill="url(#a)" d="M250 125q0-52-37-88-36-37-88-37T37 37Q0 73 0 125t37 88q36 37 88 37t88-37q37-36 37-88M87 195V55l100 70-100 70z"/><path fill="#FFF" d="M87 55v140l100-70L87 55z"/></g></defs><use xlink:href="#b"/></svg></div></div>\n        <div id="unmute_overlay"><div class="background"></div><div class="icon"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" preserveAspectRatio="xMidYMid" viewBox="0 0 512 584" style="width:100%;height:100%;scale:0.8;"><path fill="#FFF" stroke="#FFF" d="m457.941 256 47.029-47.029c9.372-9.373 9.372-24.568 0-33.941-9.373-9.373-24.568-9.373-33.941 0l-47.029 47.029-47.029-47.029c-9.373-9.373-24.568-9.373-33.941 0-9.372 9.373-9.372 24.568 0 33.941l47.029 47.029-47.029 47.029c-9.372 9.373-9.372 24.568 0 33.941 4.686 4.687 10.827 7.03 16.97 7.03s12.284-2.343 16.971-7.029l47.029-47.03 47.029 47.029c4.687 4.687 10.828 7.03 16.971 7.03s12.284-2.343 16.971-7.029c9.372-9.373 9.372-24.568 0-33.941z"/><path fill="#FFF" stroke="#FFF" d="m99 160h-55c-24.301 0-44 19.699-44 44v104c0 24.301 19.699 44 44 44h55c2.761 0 5-2.239 5-5v-182c0-2.761-2.239-5-5-5z"/><path fill="#FFF" stroke="#FFF" d="m280 56h-24c-5.269 0-10.392 1.734-14.578 4.935l-103.459 79.116c-1.237.946-1.963 2.414-1.963 3.972v223.955c0 1.557.726 3.026 1.963 3.972l103.459 79.115c4.186 3.201 9.309 4.936 14.579 4.936h23.999c13.255 0 24-10.745 24-24v-352.001c0-13.255-10.745-24-24-24z"/><text x="256" y="560" text-anchor="middle" style="font-size:60px;fill:#FFF;stroke:#FFF;">Click to unmute</text></svg></div></div>\n    </div>\n\n    <ul id="context-menu"></ul>\n';const Z={};function K(e,t){if(void 0!==Z[e]){if(Z[e].class!==t)throw new Error("Internal naming conflict on "+e);return Z[e].name}let n=0;if(void 0!==window.customElements)for(;n<999;){let r=e;if(n>0&&(r=r+"-"+n),void 0===window.customElements.get(r))return window.customElements.define(r,t),Z[e]={class:t,name:r,internalName:e},r;n+=1}throw new Error("Failed to assign custom element "+e)}const ee="application/x-shockwave-flash",te="application/futuresplash",ne="application/x-shockwave-flash2-preview",re="application/vnd.adobe.flash-movie",ie="https://ruffle.rs",oe=/^\s*(\d+(\.\d+)?(%)?)/;let ae=!1;function se(e){if(null==e)return{};e instanceof URLSearchParams||(e=new URLSearchParams(e));const t={};for(const[n,r]of e)t[n]=r.toString();return t}class ce extends HTMLElement{constructor(){return super(),this.hasContextMenu=!1,this.contextMenuForceDisabled=!1,this.isTouch=!1,this.showSwfDownload=!1,this.panicked=!1,this.isExtension=!1,this.config={},this.shadow=this.attachShadow({mode:"open"}),this.shadow.appendChild(X.content.cloneNode(!0)),this.dynamicStyles=this.shadow.getElementById("dynamic_styles"),this.container=this.shadow.getElementById("container"),this.playButton=this.shadow.getElementById("play_button"),this.playButton&&this.playButton.addEventListener("click",(()=>this.play())),this.unmuteOverlay=this.shadow.getElementById("unmute_overlay"),this.contextMenuElement=this.shadow.getElementById("context-menu"),this.addEventListener("contextmenu",this.showContextMenu.bind(this)),this.addEventListener("pointerdown",this.pointerDown.bind(this)),this.addEventListener("fullscreenchange",this.fullScreenChange.bind(this)),this.addEventListener("webkitfullscreenchange",this.fullScreenChange.bind(this)),window.addEventListener("click",this.hideContextMenu.bind(this)),this.instance=null,this.options=null,this.onFSCommand=null,this._readyState=0,this._metadata=null,this.lastActivePlayingState=!1,this.setupPauseOnTabHidden(),this}get readyState(){return this._readyState}get metadata(){return this._metadata}setupPauseOnTabHidden(){document.addEventListener("visibilitychange",(()=>{this.instance&&(document.hidden&&(this.lastActivePlayingState=this.instance.is_playing(),this.instance.pause()),document.hidden||!0!==this.lastActivePlayingState||this.instance.play())}),!1)}connectedCallback(){this.updateStyles()}static get observedAttributes(){return["width","height"]}attributeChangedCallback(e,t,n){"width"!==e&&"height"!==e||this.updateStyles()}disconnectedCallback(){this.destroy()}updateStyles(){if(this.dynamicStyles.sheet){if(this.dynamicStyles.sheet.rules)for(let e=0;e<this.dynamicStyles.sheet.rules.length;e++)this.dynamicStyles.sheet.deleteRule(e);const e=this.attributes.getNamedItem("width");if(null!=e){const t=ce.htmlDimensionToCssDimension(e.value);null!==t&&this.dynamicStyles.sheet.insertRule(`:host { width: ${t}; }`)}const t=this.attributes.getNamedItem("height");if(null!=t){const e=ce.htmlDimensionToCssDimension(t.value);null!==e&&this.dynamicStyles.sheet.insertRule(`:host { height: ${e}; }`)}}}isUnusedFallbackObject(){let e=this.parentNode;const t=function(e){const t=Z[e];return void 0!==t?{internalName:e,name:t.name,class:t.class}:null}("ruffle-object");if(null!==t)for(;e!=document&&null!=e;){if(e.nodeName===t.name)return!0;e=e.parentNode}return!1}async ensureFreshInstance(e){var t;this.destroy();const n=await H(e).catch((e=>{if(console.error(`Serious error loading Ruffle: ${e}`),"file:"===window.location.protocol)e.ruffleIndexError=2;else{e.ruffleIndexError=9;const t=String(e.message).toLowerCase();t.includes("mime")?e.ruffleIndexError=8:t.includes("networkerror")||t.includes("failed to fetch")?e.ruffleIndexError=6:t.includes("disallowed by embedder")?e.ruffleIndexError=1:"CompileError"===e.name?e.ruffleIndexError=3:t.includes("could not download wasm module")&&"TypeError"===e.name?e.ruffleIndexError=7:"TypeError"===e.name&&(e.ruffleIndexError=5)}throw this.panic(e),e}));if(this.instance=await new n(this.container,this,e),console.log("New Ruffle instance created."),"running"!==this.audioState()&&(this.container.style.visibility="hidden",await new Promise((e=>{window.setTimeout((()=>{e()}),200)})),this.container.style.visibility=""),this.unmuteAudioContext(),"on"===e.autoplay||"off"!==e.autoplay&&"running"===this.audioState()){if(this.play(),"running"!==this.audioState()){"hidden"!==e.unmuteOverlay&&(this.unmuteOverlay.style.display="block"),this.container.addEventListener("click",this.unmuteOverlayClicked.bind(this),{once:!0});const n=null===(t=this.instance)||void 0===t?void 0:t.audio_context();n&&(n.onstatechange=()=>{"running"===n.state&&this.unmuteOverlayClicked(),n.onstatechange=null})}}else this.playButton.style.display="block"}destroy(){this.instance&&(this.instance.destroy(),this.instance=null,this._metadata=null,this._readyState=0,console.log("Ruffle instance destroyed."))}async load(e){var t,n;let r="";switch(typeof e){case"string":e={url:e};break;case"object":null===e?r="Argument 0 must be a string or object":"url"in e||"data"in e?"url"in e&&"string"!=typeof e.url&&(r="`url` must be a string"):r="Argument 0 must contain a `url` or `data` key";break;default:r="Argument 0 must be a string or object"}if(r.length>0){const e=new TypeError(r);throw e.ruffleIndexError=4,this.panic(e),e}if(this.isConnected&&!this.isUnusedFallbackObject()){if(!fe(this))try{const r=Object.assign(Object.assign(Object.assign({},null!==(n=null===(t=window.RufflePlayer)||void 0===t?void 0:t.config)&&void 0!==n?n:{}),this.config),e);if(r.allowScriptAccess=e.allowScriptAccess,this.showSwfDownload=!0===r.showSwfDownload,this.options=e,this.hasContextMenu=!1!==r.contextMenu,r.backgroundColor&&(this.container.style.backgroundColor=r.backgroundColor),await this.ensureFreshInstance(r),"url"in e){console.log(`Loading SWF file ${e.url}`);try{this.swfUrl=new URL(e.url,document.location.href).href}catch(t){this.swfUrl=e.url}const t=Object.assign(Object.assign({},se(e.url.substring(e.url.indexOf("?")))),se(e.parameters));this.instance.stream_from(this.swfUrl,t)}else"data"in e&&(console.log("Loading SWF data"),this.instance.load_data(new Uint8Array(e.data),se(e.parameters)))}catch(e){throw console.error(`Serious error occurred loading SWF file: ${e}`),e}}else console.warn("Ignoring attempt to play a disconnected or suspended Ruffle element")}play(){this.instance&&(this.instance.play(),this.playButton&&(this.playButton.style.display="none"))}get fullscreenEnabled(){return!(!document.fullscreenEnabled&&!document.webkitFullscreenEnabled)}get isFullscreen(){return(document.fullscreenElement||document.webkitFullscreenElement)===this}setFullscreen(e){this.fullscreenEnabled&&(e?this.enterFullscreen():this.exitFullscreen())}enterFullscreen(){const e={navigationUI:"hide"};this.requestFullscreen?this.requestFullscreen(e):this.webkitRequestFullscreen?this.webkitRequestFullscreen(e):this.webkitRequestFullScreen&&this.webkitRequestFullScreen(e)}exitFullscreen(){document.exitFullscreen?document.exitFullscreen():document.webkitExitFullscreen?document.webkitExitFullscreen():document.webkitCancelFullScreen&&document.webkitCancelFullScreen()}fullScreenChange(){var e;null===(e=this.instance)||void 0===e||e.set_fullscreen(this.isFullscreen)}pointerDown(e){"touch"!==e.pointerType&&"pen"!==e.pointerType||(this.isTouch=!0)}async downloadSwf(){try{if(this.swfUrl){console.log("Downloading SWF: "+this.swfUrl);const e=await fetch(this.swfUrl);if(!e.ok)return void console.error("SWF download failed");const t=await e.blob(),n=URL.createObjectURL(t),r=document.createElement("a");r.style.display="none",r.href=n,r.download=this.swfUrl.substring(this.swfUrl.lastIndexOf("/")+1),document.body.appendChild(r),r.click(),document.body.removeChild(r),URL.revokeObjectURL(n)}else console.error("SWF download failed")}catch(e){console.error("SWF download failed")}}contextMenuItems(){const e=String.fromCharCode(10003),t=[];this.instance&&this.instance.prepare_context_menu().forEach(((n,r)=>{n.separatorBefore&&t.push(null),t.push({text:n.caption+(n.checked?` (${e})`:""),onClick:()=>{var e;return null===(e=this.instance)||void 0===e?void 0:e.run_context_menu_callback(r)},enabled:n.enabled})})),t.push(null),this.fullscreenEnabled&&(this.isFullscreen?t.push({text:"Exit fullscreen",onClick:()=>{var e;return null===(e=this.instance)||void 0===e?void 0:e.set_fullscreen(!1)}}):t.push({text:"Enter fullscreen",onClick:()=>{var e;return null===(e=this.instance)||void 0===e?void 0:e.set_fullscreen(!0)}})),this.instance&&this.swfUrl&&this.showSwfDownload&&(t.push(null),t.push({text:"Download .swf",onClick:this.downloadSwf.bind(this)})),t.push(null);const n=this.isExtension?"extension":"";return t.push({text:`About Ruffle ${n} (nightly 2021-12-21)`,onClick(){window.open(ie,"_blank")}}),this.isTouch&&(t.push(null),t.push({text:"Hide this menu",onClick:()=>this.contextMenuForceDisabled=!0})),t}showContextMenu(e){if(e.preventDefault(),!this.hasContextMenu||this.contextMenuForceDisabled)return;for(;this.contextMenuElement.firstChild;)this.contextMenuElement.removeChild(this.contextMenuElement.firstChild);for(const e of this.contextMenuItems())if(null===e){if(!this.contextMenuElement.lastElementChild)continue;if(this.contextMenuElement.lastElementChild.classList.contains("menu_separator"))continue;const e=document.createElement("li");e.className="menu_separator";const t=document.createElement("hr");e.appendChild(t),this.contextMenuElement.appendChild(e)}else{const{text:t,onClick:n,enabled:r}=e,i=document.createElement("li");i.className="menu_item",i.textContent=t,this.contextMenuElement.appendChild(i),!1!==r?i.addEventListener("click",n):i.classList.add("disabled")}this.contextMenuElement.style.left="0",this.contextMenuElement.style.top="0",this.contextMenuElement.style.display="block";const t=this.getBoundingClientRect(),n=e.clientX-t.x,r=e.clientY-t.y,i=t.width-this.contextMenuElement.clientWidth-1,o=t.height-this.contextMenuElement.clientHeight-1;this.contextMenuElement.style.left=Math.floor(Math.min(n,i))+"px",this.contextMenuElement.style.top=Math.floor(Math.min(r,o))+"px"}hideContextMenu(){var e;null===(e=this.instance)||void 0===e||e.clear_custom_menu_items(),this.contextMenuElement.style.display="none"}pause(){this.instance&&(this.instance.pause(),this.playButton&&(this.playButton.style.display="block"))}audioState(){if(this.instance){const e=this.instance.audio_context();return e&&e.state||"running"}return"suspended"}unmuteOverlayClicked(){if(this.instance){if("running"!==this.audioState()){const e=this.instance.audio_context();e&&e.resume()}this.unmuteOverlay&&(this.unmuteOverlay.style.display="none")}}unmuteAudioContext(){ae||(navigator.maxTouchPoints<1?ae=!0:this.container.addEventListener("click",(()=>{var e;if(ae)return;const t=null===(e=this.instance)||void 0===e?void 0:e.audio_context();if(!t)return;const n=new Audio;n.src=(()=>{const e=new ArrayBuffer(10),n=new DataView(e),r=t.sampleRate;return n.setUint32(0,r,!0),n.setUint32(4,r,!0),n.setUint16(8,1,!0),`data:audio/wav;base64,UklGRisAAABXQVZFZm10IBAAAAABAAEA${window.btoa(String.fromCharCode(...new Uint8Array(e))).slice(0,13)}AgAZGF0YQcAAACAgICAgICAAAA=`})(),n.load(),n.play().then((()=>{ae=!0})).catch((e=>{console.warn(`Failed to play dummy sound: ${e}`)}))}),{once:!0}))}copyElement(e){if(e){for(let t=0;t<e.attributes.length;t++){const n=e.attributes[t];if(n.specified){if("title"===n.name&&"Adobe Flash Player"===n.value)continue;try{this.setAttribute(n.name,n.value)}catch(e){console.warn(`Unable to set attribute ${n.name} on Ruffle instance`)}}}for(const t of Array.from(e.children))this.appendChild(t)}}static htmlDimensionToCssDimension(e){if(e){const t=e.match(oe);if(t){let e=t[1];return t[3]||(e+="px"),e}}return null}onCallbackAvailable(e){const t=this.instance;this[e]=(...n)=>null==t?void 0:t.call_exposed_callback(e,n)}set traceObserver(e){var t;null===(t=this.instance)||void 0===t||t.set_trace_observer(e)}panic(e){var t;if(this.panicked)return;if(this.panicked=!0,e instanceof Error&&("AbortError"===e.name||e.message.includes("AbortError")))return;const n=null!==(t=null==e?void 0:e.ruffleIndexError)&&void 0!==t?t:0,r=Object.assign([],{stackIndex:-1});if(r.push("# Error Info\n"),e instanceof Error){if(r.push(`Error name: ${e.name}\n`),r.push(`Error message: ${e.message}\n`),e.stack){const t=r.push(`Error stack:\n\`\`\`\n${e.stack}\n\`\`\`\n`)-1;r.stackIndex=t}}else r.push(`Error: ${e}\n`);r.push("\n# Player Info\n"),r.push(this.debugPlayerInfo()),r.push("\n# Page Info\n"),r.push(`Page URL: ${document.location.href}\n`),this.swfUrl&&r.push(`SWF URL: ${this.swfUrl}\n`),r.push("\n# Browser Info\n"),r.push(`Useragent: ${window.navigator.userAgent}\n`),r.push(`OS: ${window.navigator.platform}\n`),r.push("\n# Ruffle Info\n"),r.push("Version: 0.1.0\n"),r.push("Name: nightly 2021-12-21\n"),r.push("Channel: nightly\n"),r.push("Built: 2021-12-21T00:14:34.280Z\n"),r.push("Commit: ccef61d0764c66d2f034ea07273d218b0f98e529\n"),r.push(`Is extension: ${this.isExtension}\n`);const i=r.join(""),o=document.location.href.split(/[?#]/)[0];let a,s,c=`https://github.com/ruffle-rs/ruffle/issues/new?title=${encodeURIComponent(`Error on ${o}`)}&labels=error-report&body=`,u=encodeURIComponent(i);switch(r.stackIndex>-1&&String(c+u).length>8195&&(r[r.stackIndex]=null,u=encodeURIComponent(r.join(""))),c+=u,n){case 2:a='\n                    <p>It appears you are running Ruffle on the "file:" protocol.</p>\n                    <p>This doesn\'t work as browsers block many features from working for security reasons.</p>\n                    <p>Instead, we invite you to setup a local server or either use the web demo or the desktop application.</p>\n                ',s=`\n                    <li><a target="_top" href="${ie}/demo">Web Demo</a></li>\n                    <li><a target="_top" href="https://github.com/ruffle-rs/ruffle/tags">Desktop Application</a></li>\n                `;break;case 4:a="\n                    <p>Ruffle has encountered a major issue due to an incorrect JavaScript configuration.</p>\n                    <p>If you are the server administrator, we invite you to check the error details to find out which parameter is at fault.</p>\n                    <p>You can also consult the Ruffle wiki for help.</p>\n                ",s='\n                    <li><a target="_top" href="https://github.com/ruffle-rs/ruffle/wiki/Using-Ruffle#javascript-api">View Ruffle Wiki</a></li>\n                    <li><a href="#" id="panic-view-details">View Error Details</a></li>\n                ';break;case 9:a='\n                    <p>Ruffle failed to load the required ".wasm" file component.</p>\n                    <p>If you are the server administrator, please ensure the file has correctly been uploaded.</p>\n                    <p>If the issue persists, you may need to use the "publicPath" setting: please consult the Ruffle wiki for help.</p>\n                ',s='\n                    <li><a target="_top" href="https://github.com/ruffle-rs/ruffle/wiki/Using-Ruffle#configuration-options">View Ruffle Wiki</a></li>\n                    <li><a href="#" id="panic-view-details">View Error Details</a></li>\n                ';break;case 8:a='\n                    <p>Ruffle has encountered a major issue whilst trying to initialize.</p>\n                    <p>This web server is not serving ".wasm" files with the correct MIME type.</p>\n                    <p>If you are the server administrator, please consult the Ruffle wiki for help.</p>\n                ',s='\n                    <li><a target="_top" href="https://github.com/ruffle-rs/ruffle/wiki/Using-Ruffle#configure-webassembly-mime-type">View Ruffle Wiki</a></li>\n                    <li><a href="#" id="panic-view-details">View Error Details</a></li>\n                ';break;case 10:a="\n                    <p>Ruffle failed to load the Flash SWF file.</p>\n                    <p>The most likely reason is that the file no longer exists, so there is nothing for Ruffle to load.</p>\n                    <p>Try contacting the website administrator for help.</p>\n                ",s='\n                    <li><a href="#" id="panic-view-details">View Error Details</a></li>\n                ';break;case 6:a='\n                    <p>Ruffle failed to load the required ".wasm" file component.</p>\n                    <p>Access to fetch has likely been blocked by CORS policy.</p>\n                    <p>If you are the server administrator, please consult the Ruffle wiki for help.</p>\n                ',s='\n                    <li><a target="_top" href="https://github.com/ruffle-rs/ruffle/wiki/Using-Ruffle#web">View Ruffle Wiki</a></li>\n                    <li><a href="#" id="panic-view-details">View Error Details</a></li>\n                ';break;case 3:a="\n                    <p>Ruffle has encountered a major issue whilst trying to initialize.</p>\n                    <p>It seems like this page has missing or invalid files for running Ruffle.</p>\n                    <p>If you are the server administrator, please consult the Ruffle wiki for help.</p>\n                ",s='\n                    <li><a target="_top" href="https://github.com/ruffle-rs/ruffle/wiki/Using-Ruffle#addressing-a-compileerror">View Ruffle Wiki</a></li>\n                    <li><a href="#" id="panic-view-details">View Error Details</a></li>\n                ';break;case 7:a="\n                    <p>Ruffle has encountered a major issue whilst trying to initialize.</p>\n                    <p>This can often resolve itself, so you can try reloading the page.</p>\n                    <p>Otherwise, please contact the website administrator.</p>\n                ",s='\n                    <li><a href="#" id="panic-view-details">View Error Details</a></li>\n                ';break;case 5:a="\n                    <p>Ruffle has encountered a major issue whilst trying to initialize.</p>\n                    <p>It seems like this page uses JavaScript code that conflicts with Ruffle.</p>\n                    <p>If you are the server administrator, we invite you to try loading the file on a blank page.</p>\n                ",s=`\n                    <li><a target="_top" href="${c}">Report Bug</a></li>\n                    <li><a href="#" id="panic-view-details">View Error Details</a></li>\n                `;break;case 1:a='\n                    <p>Ruffle has encountered a major issue whilst trying to initialize.</p>\n                    <p>This web server\'s Content Security Policy does not allow the required ".wasm" component to run.</p>\n                    <p>If you are the server administrator, please consult the Ruffle wiki for help.</p>\n                ',s='\n                    <li><a target="_top" href="https://github.com/ruffle-rs/ruffle/wiki/Using-Ruffle#configure-wasm-csp">View Ruffle Wiki</a></li>\n                    <li><a href="#" id="panic-view-details">View Error Details</a></li>\n                ';break;default:a="\n                    <p>Ruffle has encountered a major issue whilst trying to display this Flash content.</p>\n                    <p>This isn't supposed to happen, so we'd really appreciate if you could file a bug!</p>\n                ",s=`\n                    <li><a target="_top" href="${c}">Report Bug</a></li>\n                    <li><a href="#" id="panic-view-details">View Error Details</a></li>\n                `}this.container.innerHTML=`\n            <div id="panic">\n                <div id="panic-title">Something went wrong :(</div>\n                <div id="panic-body">${a}</div>\n                <div id="panic-footer">\n                    <ul>${s}</ul>\n                </div>\n            </div>\n        `;const l=this.container.querySelector("#panic-view-details");l&&(l.onclick=()=>{const e=this.container.querySelector("#panic-body");return e.classList.add("details"),e.innerHTML=`<textarea>${i}</textarea>`,!1}),this.destroy()}displayRootMovieDownloadFailedMessage(){const e=new URL(this.swfUrl);if(window.location.origin==e.origin||!this.isExtension||!window.location.protocol.includes("http")){const e=new Error("Failed to fetch: "+this.swfUrl);return e.ruffleIndexError=10,void this.panic(e)}const t=document.createElement("div");t.id="message_overlay",t.innerHTML=`<div class="message">\n            <p>Ruffle wasn't able to run the Flash embedded in this page.</p>\n            <p>You can try to open the file in a separate tab, to sidestep this issue.</p>\n            <div>\n                <a target="_blank" href="${this.swfUrl}">Open in a new tab</a>\n            </div>\n        </div>`,this.container.prepend(t)}displayUnsupportedMessage(){const e=document.createElement("div");e.id="message_overlay",e.innerHTML='<div class="message">\n            <p>Flash Player has been removed from browsers in 2021.</p>\n            <p>This content is not yet supported by the Ruffle emulator and will likely not run as intended.</p>\n            <div>\n                <a target="_blank" class="more-info-link" href="https://github.com/ruffle-rs/ruffle/wiki/Frequently-Asked-Questions-For-Users">More info</a>\n                <button id="run-anyway-btn">Run anyway</button>\n            </div>\n        </div>',this.container.prepend(e),e.querySelector("#run-anyway-btn").onclick=()=>{e.parentNode.removeChild(e)}}displayMessage(e){const t=document.createElement("div");t.id="message_overlay",t.innerHTML=`<div class="message">\n            <p>${e}</p>\n            <div>\n                <button id="continue-btn">continue</button>\n            </div>\n        </div>`,this.container.prepend(t),this.container.querySelector("#continue-btn").onclick=()=>{t.parentNode.removeChild(t)}}debugPlayerInfo(){var e,t;return`Allows script access: ${null!==(t=null===(e=this.options)||void 0===e?void 0:e.allowScriptAccess)&&void 0!==t&&t}\n`}setMetadata(e){this._metadata=e,this._readyState=2,this.dispatchEvent(new Event(ce.LOADED_METADATA)),this.dispatchEvent(new Event(ce.LOADED_DATA))}setIsExtension(e){this.isExtension=e}}function ue(e,t){switch(e||(e="sameDomain"),e.toLowerCase()){case"always":return!0;case"never":return!1;default:try{return new URL(window.location.href).origin===new URL(t,window.location.href).origin}catch(e){return!1}}}function le(e){return null===e||"true"===e.toLowerCase()}function _e(e){if(e){let t="";try{t=new URL(e,ie).pathname}catch(e){}if(t&&t.length>=4){const e=t.slice(-4).toLowerCase();if(".swf"===e||".spl"===e)return!0}}return!1}function fe(e){let t=e.parentElement;for(;null!==t;){switch(t.tagName){case"AUDIO":case"VIDEO":return!0}t=t.parentElement}return!1}ce.LOADED_METADATA="loadedmetadata",ce.LOADED_DATA="loadeddata";class be extends ce{constructor(){super()}connectedCallback(){var e,t,n,r,i,o,a,s,c,u,l,_,f;super.connectedCallback();const b=this.attributes.getNamedItem("src");if(b){const d=null!==(t=null===(e=this.attributes.getNamedItem("allowScriptAccess"))||void 0===e?void 0:e.value)&&void 0!==t?t:null,g=null!==(r=null===(n=this.attributes.getNamedItem("menu"))||void 0===n?void 0:n.value)&&void 0!==r?r:null;this.load({url:b.value,allowScriptAccess:ue(d,b.value),parameters:null===(i=this.attributes.getNamedItem("flashvars"))||void 0===i?void 0:i.value,backgroundColor:null===(o=this.attributes.getNamedItem("bgcolor"))||void 0===o?void 0:o.value,base:null===(a=this.attributes.getNamedItem("base"))||void 0===a?void 0:a.value,menu:le(g),salign:null!==(c=null===(s=this.attributes.getNamedItem("salign"))||void 0===s?void 0:s.value)&&void 0!==c?c:"",quality:null!==(l=null===(u=this.attributes.getNamedItem("quality"))||void 0===u?void 0:u.value)&&void 0!==l?l:"high",scale:null!==(f=null===(_=this.attributes.getNamedItem("scale"))||void 0===_?void 0:_.value)&&void 0!==f?f:"showAll"})}}get src(){var e;return null===(e=this.attributes.getNamedItem("src"))||void 0===e?void 0:e.value}set src(e){if(null!=e){const t=document.createAttribute("src");t.value=e,this.attributes.setNamedItem(t)}else this.attributes.removeNamedItem("src")}static get observedAttributes(){return["src","width","height"]}attributeChangedCallback(e,t,n){var r;if(super.attributeChangedCallback(e,t,n),this.isConnected&&"src"===e){let e;const t=this.attributes.getNamedItem("flashvars");t&&(e=t.value);const n=this.attributes.getNamedItem("src");n&&this.load({url:n.value,parameters:e,base:null===(r=this.attributes.getNamedItem("base"))||void 0===r?void 0:r.value})}}static isInterdictable(e){var t;if(fe(e))return!1;if(!e.getAttribute("src"))return!1;const n=null===(t=e.getAttribute("type"))||void 0===t?void 0:t.toLowerCase();return n===ee.toLowerCase()||n===te.toLowerCase()||n===ne.toLowerCase()||n===re.toLowerCase()||(null==n||""===n)&&_e(e.getAttribute("src"))}static fromNativeEmbedElement(e){const t=K("ruffle-embed",be),n=document.createElement(t);return n.copyElement(e),n}}function de(e,t,n){t=t.toLowerCase();for(const n in e)if(Object.hasOwnProperty.call(e,n)&&t===n.toLowerCase())return e[n];return n}function ge(e){var t,n;const r={};for(const i of e.children)if(i instanceof HTMLParamElement){const e=null===(t=i.attributes.getNamedItem("name"))||void 0===t?void 0:t.value,o=null===(n=i.attributes.getNamedItem("value"))||void 0===n?void 0:n.value;e&&o&&(r[e]=o)}return r}class we extends ce{constructor(){super(),this.params={}}connectedCallback(){var e;super.connectedCallback(),this.params=ge(this);let t=null;this.attributes.getNamedItem("data")?t=null===(e=this.attributes.getNamedItem("data"))||void 0===e?void 0:e.value:this.params.movie&&(t=this.params.movie);const n=de(this.params,"allowScriptAccess",null),r=de(this.params,"flashvars",this.getAttribute("flashvars")),i=de(this.params,"bgcolor",this.getAttribute("bgcolor")),o=de(this.params,"base",this.getAttribute("base")),a=de(this.params,"menu",null),s=de(this.params,"salign",""),c=de(this.params,"quality","high"),u=de(this.params,"scale","showAll");if(t){const e={url:t};e.allowScriptAccess=ue(n,t),r&&(e.parameters=r),i&&(e.backgroundColor=i),o&&(e.base=o),e.menu=le(a),s&&(e.salign=s),c&&(e.quality=c),u&&(e.scale=u),this.load(e)}}debugPlayerInfo(){var e;let t=super.debugPlayerInfo();t+="Player type: Object\n";let n=null;return this.attributes.getNamedItem("data")?n=null===(e=this.attributes.getNamedItem("data"))||void 0===e?void 0:e.value:this.params.movie&&(n=this.params.movie),t+=`SWF URL: ${n}\n`,Object.keys(this.params).forEach((e=>{t+=`Param ${e}: ${this.params[e]}\n`})),Object.keys(this.attributes).forEach((e=>{var n;t+=`Attribute ${e}: ${null===(n=this.attributes.getNamedItem(e))||void 0===n?void 0:n.value}\n`})),t}get data(){return this.getAttribute("data")}set data(e){if(null!=e){const t=document.createAttribute("data");t.value=e,this.attributes.setNamedItem(t)}else this.attributes.removeNamedItem("data")}static isInterdictable(e){var t,n,r;if(fe(e))return!1;if(e.getElementsByTagName("ruffle-embed").length>0)return!1;const i=null===(t=e.attributes.getNamedItem("data"))||void 0===t?void 0:t.value.toLowerCase(),o=ge(e);let a;if(i)a=_e(i);else{if(!o||!o.movie)return!1;a=_e(o.movie)}const s=null===(n=e.attributes.getNamedItem("classid"))||void 0===n?void 0:n.value.toLowerCase();if(s==="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000".toLowerCase())return!Array.from(e.getElementsByTagName("embed")).some(be.isInterdictable);if(null!=s&&""!==s)return!1;const c=null===(r=e.attributes.getNamedItem("type"))||void 0===r?void 0:r.value.toLowerCase();return c===ee.toLowerCase()||c===te.toLowerCase()||c===ne.toLowerCase()||c===re.toLowerCase()||(null==c||""===c)&&a}static fromNativeObjectElement(e){const t=K("ruffle-object",we),n=document.createElement(t);for(const t of Array.from(e.getElementsByTagName("embed")))be.isInterdictable(t)&&t.remove();for(const t of Array.from(e.getElementsByTagName("object")))we.isInterdictable(t)&&t.remove();return n.copyElement(e),n}}var he,me;let pe;const ye=null!==(me=null===(he=window.RufflePlayer)||void 0===he?void 0:he.config)&&void 0!==me?me:{},ve=q(ye)+"ruffle.js";let xe,ke,Ee,Ae;function Se(){try{xe=null!=xe?xe:document.getElementsByTagName("object"),ke=null!=ke?ke:document.getElementsByTagName("embed");for(const e of Array.from(xe))if(we.isInterdictable(e)){const t=we.fromNativeObjectElement(e);t.setIsExtension(pe),e.replaceWith(t)}for(const e of Array.from(ke))if(be.isInterdictable(e)){const t=be.fromNativeEmbedElement(e);t.setIsExtension(pe),e.replaceWith(t)}}catch(e){console.error(`Serious error encountered when polyfilling native Flash elements: ${e}`)}}function Ce(){Ee=null!=Ee?Ee:document.getElementsByTagName("iframe"),Ae=null!=Ae?Ae:document.getElementsByTagName("frame"),[Ee,Ae].forEach((e=>{for(let t=0;t<e.length;t++){const n=e[t];if(void 0!==n.dataset.rufflePolyfilled)continue;n.dataset.rufflePolyfilled="";const r=n.contentWindow,i=`Couldn't load Ruffle into ${n.tagName}[${n.src}]: `;try{"complete"===r.document.readyState&&Ie(r,i)}catch(e){pe||console.warn(i+e)}n.addEventListener("load",(()=>{Ie(r,i)}),!1)}}))}async function Ie(e,t){var n;let r;await new Promise((e=>{window.setTimeout((()=>{e()}),100)}));try{if(r=e.document,!r)return}catch(e){return void(pe||console.warn(t+e))}if(pe||void 0===r.documentElement.dataset.ruffleOptout)if(pe)e.RufflePlayer||(e.RufflePlayer={}),e.RufflePlayer.config=Object.assign(Object.assign({},ye),null!==(n=e.RufflePlayer.config)&&void 0!==n?n:{});else if(!e.RufflePlayer){const t=r.createElement("script");t.setAttribute("src",ve),t.onload=()=>{e.RufflePlayer={},e.RufflePlayer.config=ye},r.head.appendChild(t)}}class Re{constructor(e,t,n,r,i){this.major=e,this.minor=t,this.patch=n,this.prIdent=r,this.buildIdent=i}static fromSemver(e){const t=e.split("+"),n=t[0].split("-"),r=n[0].split("."),i=parseInt(r[0],10);let o=0,a=0,s=null,c=null;return null!=r[1]&&(o=parseInt(r[1],10)),null!=r[2]&&(a=parseInt(r[2],10)),null!=n[1]&&(s=n[1].split(".")),null!=t[1]&&(c=t[1].split(".")),new Re(i,o,a,s,c)}isCompatibleWith(e){return 0!==this.major&&this.major===e.major||0===this.major&&0===e.major&&0!==this.minor&&this.minor===e.minor||0===this.major&&0===e.major&&0===this.minor&&0===e.minor&&0!==this.patch&&this.patch===e.patch}hasPrecedenceOver(e){if(this.major>e.major)return!0;if(this.major<e.major)return!1;if(this.minor>e.minor)return!0;if(this.minor<e.minor)return!1;if(this.patch>e.patch)return!0;if(this.patch<e.patch)return!1;if(null==this.prIdent&&null!=e.prIdent)return!0;if(null!=this.prIdent&&null!=e.prIdent){const t=/^[0-9]*$/;for(let n=0;n<this.prIdent.length&&n<e.prIdent.length;n+=1){if(!t.test(this.prIdent[n])&&t.test(e.prIdent[n]))return!0;if(t.test(this.prIdent[n])&&t.test(e.prIdent[n])){if(parseInt(this.prIdent[n],10)>parseInt(e.prIdent[n],10))return!0;if(parseInt(this.prIdent[n],10)<parseInt(e.prIdent[n],10))return!1}else{if(t.test(this.prIdent[n])&&!t.test(e.prIdent[n]))return!1;if(!t.test(this.prIdent[n])&&!t.test(e.prIdent[n])){if(this.prIdent[n]>e.prIdent[n])return!0;if(this.prIdent[n]<e.prIdent[n])return!1}}}return this.prIdent.length>e.prIdent.length}return!1}isEqual(e){return this.major===e.major&&this.minor===e.minor&&this.patch===e.patch}isStableOrCompatiblePrerelease(e){return null==e.prIdent||this.major===e.major&&this.minor===e.minor&&this.patch===e.patch}}class Fe{constructor(e){this.requirements=e}satisfiedBy(e){for(let t=0;t<this.requirements.length;t+=1){let n=!0;for(let r=0;r<this.requirements[t].length;r+=1){const i=this.requirements[t][r].comparator,o=this.requirements[t][r].version;n=n&&o.isStableOrCompatiblePrerelease(e),""===i||"="===i?n=n&&o.isEqual(e):">"===i?n=n&&e.hasPrecedenceOver(o):">="===i?n=n&&(e.hasPrecedenceOver(o)||o.isEqual(e)):"<"===i?n=n&&o.hasPrecedenceOver(e):"<="===i?n=n&&(o.hasPrecedenceOver(e)||o.isEqual(e)):"^"===i&&(n=n&&o.isCompatibleWith(e))}if(n)return!0}return!1}static fromRequirementString(e){const t=e.split(" ");let n=[];const r=[];for(let e=0;e<t.length;e+=1)if("||"===t[e])n.length>0&&(r.push(n),n=[]);else if(t[e].length>0){const r=/[0-9]/.exec(t[e]);if(r){const i=t[e].slice(0,r.index).trim(),o=Re.fromSemver(t[e].slice(r.index).trim());n.push({comparator:i,version:o})}}return n.length>0&&r.push(n),new Fe(r)}}class Te{constructor(e){this.sources={},this.config={},this.invoked=!1,this.newestName=null,this.conflict=null,null!=e&&(e instanceof Te?(this.sources=e.sources,this.config=e.config,this.invoked=e.invoked,this.conflict=e.conflict,this.newestName=e.newestName,e.superseded()):e.constructor===Object&&e.config instanceof Object?this.config=e.config:this.conflict=e),"loading"===document.readyState?window.addEventListener("DOMContentLoaded",this.init.bind(this)):window.setTimeout(this.init.bind(this),0)}get version(){return"0.1.0"}registerSource(e,t){this.sources[e]=t}newestSourceName(){let e=null,t=Re.fromSemver("0.0.0");for(const n in this.sources)if(Object.prototype.hasOwnProperty.call(this.sources,n)){const r=Re.fromSemver(this.sources[n].version);r.hasPrecedenceOver(t)&&(e=n,t=r)}return e}init(){if(!this.invoked){if(this.invoked=!0,this.newestName=this.newestSourceName(),null===this.newestName)throw new Error("No registered Ruffle source!");!1!==this.config.polyfills&&this.sources[this.newestName].polyfill("extension"===this.newestName)}}newest(){const e=this.newestSourceName();return null!=e?this.sources[e]:null}satisfying(e){const t=Fe.fromRequirementString(e);let n=null;for(const e in this.sources)if(Object.prototype.hasOwnProperty.call(this.sources,e)){const r=Re.fromSemver(this.sources[e].version);t.satisfiedBy(r)&&(n=this.sources[e])}return n}localCompatible(){return void 0!==this.sources.local?this.satisfying("^"+this.sources.local.version):this.newest()}local(){return void 0!==this.sources.local?this.satisfying("="+this.sources.local.version):this.newest()}superseded(){this.invoked=!0}static negotiate(e,t,n){let r;return r=e instanceof Te?e:new Te(e),void 0!==t&&void 0!==n&&(r.registerSource(t,n),!1!==r.config.polyfills&&n.pluginPolyfill()),r}}window.RufflePlayer=Te.negotiate(window.RufflePlayer,"local",new class{constructor(e){this.name=e}get version(){return"0.1.0"}polyfill(e){!function(e){pe=e,Se(),Ce(),new MutationObserver((function(e){e.some((e=>e.addedNodes.length>0))&&(Se(),Ce())})).observe(document,{childList:!0,subtree:!0})}(e)}pluginPolyfill(){!function(e){"install"in navigator.plugins&&navigator.plugins.install||Object.defineProperty(navigator,"plugins",{value:new J(navigator.plugins),writable:!1}),navigator.plugins.install(e),!(e.length>0)||"install"in navigator.mimeTypes&&navigator.mimeTypes.install||Object.defineProperty(navigator,"mimeTypes",{value:new G(navigator.mimeTypes),writable:!1});const t=navigator.mimeTypes;for(let n=0;n<e.length;n+=1)t.install(e[n])}(Q)}createPlayer(){const e=K("ruffle-player",ce);return document.createElement(e)}}("local"))})()})();
//# sourceMappingURL=ruffle.js.map

================================================
FILE: main/gams/gfiles/html5/2048/index.html
================================================
<!DOCTYPE html>
<html>

<head>
  <meta charset="utf-8">
  <title>2048</title>

  <link href="style/main.css" rel="stylesheet" type="text/css">
  <link rel="shortcut icon" href="favicon.ico">
  <link rel="apple-touch-icon" href="meta/apple-touch-icon.png">
  <link rel="apple-touch-startup-image" href="meta/apple-touch-startup-image-640x1096.png" media="(device-width: 320px) and (device-height: 568px) and (-webkit-device-pixel-ratio: 2)"> <!-- iPhone 5+ -->
  <link rel="apple-touch-startup-image" href="meta/apple-touch-startup-image-640x920.png"  media="(device-width: 320px) and (device-height: 480px) and (-webkit-device-pixel-ratio: 2)"> <!-- iPhone, retina -->
  <meta name="apple-mobile-web-app-capable" content="yes">
  <meta name="apple-mobile-web-app-status-bar-style" content="black">

  <meta name="HandheldFriendly" content="True">
  <meta name="MobileOptimized" content="320">
  <meta name="viewport" content="width=device-width, target-densitydpi=160dpi, initial-scale=1.0, maximum-scale=1, user-scalable=no, minimal-ui">
  <script src="/js/all.js"></script>
</head>
<body>
  <div class="container">
    <div class="heading">
      <h1 class="title">2048</h1>
      <div class="scores-container">
        <div class="score-container">0</div>
        <div class="best-container">0</div>
      </div>
    </div>

    <div class="above-game">
      <p class="game-intro">Join the numbers and get to the <strong>2048 tile!</strong></p>
      <a class="restart-button">New Game</a>
    </div>

    <div class="game-container">
      <div class="game-message">
        <p></p>
        <div class="lower">
	        <a class="keep-playing-button">Keep going</a>
          <a class="retry-button">Try again</a>
        </div>
      </div>

      <div class="grid-container">
        <div class="grid-row">
          <div class="grid-cell"></div>
          <div class="grid-cell"></div>
          <div class="grid-cell"></div>
          <div class="grid-cell"></div>
        </div>
        <div class="grid-row">
          <div class="grid-cell"></div>
          <div class="grid-cell"></div>
          <div class="grid-cell"></div>
          <div class="grid-cell"></div>
        </div>
        <div class="grid-row">
          <div class="grid-cell"></div>
          <div class="grid-cell"></div>
          <div class="grid-cell"></div>
          <div class="grid-cell"></div>
        </div>
        <div class="grid-row">
          <div class="grid-cell"></div>
          <div class="grid-cell"></div>
          <div class="grid-cell"></div>
          <div class="grid-cell"></div>
        </div>
      </div>

      <div class="tile-container">

      </div>
    </div>

    <p class="game-explanation">
      <strong class="important">How to play:</strong> Use your <strong>arrow keys</strong> to move the tiles. When two tiles with the same number touch, they <strong>merge into one!</strong>
    </p>
  </div>

  <script src="js/bind_polyfill.js"></script>
  <script src="js/classlist_polyfill.js"></script>
  <script src="js/animframe_polyfill.js"></script>
  <script src="js/keyboard_input_manager.js"></script>
  <script src="js/html_actuator.js"></script>
  <script src="js/grid.js"></script>
  <script src="js/tile.js"></script>
  <script src="js/local_storage_manager.js"></script>
  <script src="js/game_manager.js"></script>
  <script src="js/application.js"></script>
</body>

</html>


================================================
FILE: main/gams/gfiles/html5/2048/js/animframe_polyfill.js
================================================
(function () {
  var lastTime = 0;
  var vendors = ['webkit', 'moz'];
  for (var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {
    window.requestAnimationFrame = window[vendors[x] + 'RequestAnimationFrame'];
    window.cancelAnimationFrame = window[vendors[x] + 'CancelAnimationFrame'] ||
      window[vendors[x] + 'CancelRequestAnimationFrame'];
  }

  if (!window.requestAnimationFrame) {
    window.requestAnimationFrame = function (callback) {
      var currTime = new Date().getTime();
      var timeToCall = Math.max(0, 16 - (currTime - lastTime));
      var id = window.setTimeout(function () {
        callback(currTime + timeToCall);
      },
      timeToCall);
      lastTime = currTime + timeToCall;
      return id;
    };
  }

  if (!window.cancelAnimationFrame) {
    window.cancelAnimationFrame = function (id) {
      clearTimeout(id);
    };
  }
}());


================================================
FILE: main/gams/gfiles/html5/2048/js/application.js
================================================
// Wait till the browser is ready to render the game (avoids glitches)
window.requestAnimationFrame(function () {
  new GameManager(4, KeyboardInputManager, HTMLActuator, LocalStorageManager);
});


================================================
FILE: main/gams/gfiles/html5/2048/js/bind_polyfill.js
================================================
Function.prototype.bind = Function.prototype.bind || function (target) {
  var self = this;
  return function (args) {
    if (!(args instanceof Array)) {
      args = [args];
    }
    self.apply(target, args);
  };
};


================================================
FILE: main/gams/gfiles/html5/2048/js/classlist_polyfill.js
================================================
(function () {
  if (typeof window.Element === "undefined" ||
      "classList" in document.documentElement) {
    return;
  }

  var prototype = Array.prototype,
      push = prototype.push,
      splice = prototype.splice,
      join = prototype.join;

  function DOMTokenList(el) {
    this.el = el;
    // The className needs to be trimmed and split on whitespace
    // to retrieve a list of classes.
    var classes = el.className.replace(/^\s+|\s+$/g, '').split(/\s+/);
    for (var i = 0; i < classes.length; i++) {
      push.call(this, classes[i]);
    }
  }

  DOMTokenList.prototype = {
    add: function (token) {
      if (this.contains(token)) return;
      push.call(this, token);
      this.el.className = this.toString();
    },
    contains: function (token) {
      return this.el.className.indexOf(token) != -1;
    },
    item: function (index) {
      return this[index] || null;
    },
    remove: function (token) {
      if (!this.contains(token)) return;
      for (var i = 0; i < this.length; i++) {
        if (this[i] == token) break;
      }
      splice.call(this, i, 1);
      this.el.className = this.toString();
    },
    toString: function () {
      return join.call(this, ' ');
    },
    toggle: function (token) {
      if (!this.contains(token)) {
        this.add(token);
      } else {
        this.remove(token);
      }

      return this.contains(token);
    }
  };

  window.DOMTokenList = DOMTokenList;

  function defineElementGetter(obj, prop, getter) {
    if (Object.defineProperty) {
      Object.defineProperty(obj, prop, {
        get: getter
      });
    } else {
      obj.__defineGetter__(prop, getter);
    }
  }

  defineElementGetter(HTMLElement.prototype, 'classList', function () {
    return new DOMTokenList(this);
  });
})();


================================================
FILE: main/gams/gfiles/html5/2048/js/game_manager.js
================================================
function GameManager(size, InputManager, Actuator, StorageManager) {
  this.size           = size; // Size of the grid
  this.inputManager   = new InputManager;
  this.storageManager = new StorageManager;
  this.actuator       = new Actuator;

  this.startTiles     = 2;

  this.inputManager.on("move", this.move.bind(this));
  this.inputManager.on("restart", this.restart.bind(this));
  this.inputManager.on("keepPlaying", this.keepPlaying.bind(this));

  this.setup();
}

// Restart the game
GameManager.prototype.restart = function () {
  this.storageManager.clearGameState();
  this.actuator.continueGame(); // Clear the game won/lost message
  this.setup();
};

// Keep playing after winning (allows going over 2048)
GameManager.prototype.keepPlaying = function () {
  this.keepPlaying = true;
  this.actuator.continueGame(); // Clear the game won/lost message
};

// Return true if the game is lost, or has won and the user hasn't kept playing
GameManager.prototype.isGameTerminated = function () {
  return this.over || (this.won && !this.keepPlaying);
};

// Set up the game
GameManager.prototype.setup = function () {
  var previousState = this.storageManager.getGameState();

  // Reload the game from a previous game if present
  if (previousState) {
    this.grid        = new Grid(previousState.grid.size,
                                previousState.grid.cells); // Reload grid
    this.score       = previousState.score;
    this.over        = previousState.over;
    this.won         = previousState.won;
    this.keepPlaying = previousState.keepPlaying;
  } else {
    this.grid        = new Grid(this.size);
    this.score       = 0;
    this.over        = false;
    this.won         = false;
    this.keepPlaying = false;

    // Add the initial tiles
    this.addStartTiles();
  }

  // Update the actuator
  this.actuate();
};

// Set up the initial tiles to start the game with
GameManager.prototype.addStartTiles = function () {
  for (var i = 0; i < this.startTiles; i++) {
    this.addRandomTile();
  }
};

// Adds a tile in a random position
GameManager.prototype.addRandomTile = function () {
  if (this.grid.cellsAvailable()) {
    var value = Math.random() < 0.9 ? 2 : 4;
    var tile = new Tile(this.grid.randomAvailableCell(), value);

    this.grid.insertTile(tile);
  }
};

// Sends the updated grid to the actuator
GameManager.prototype.actuate = function () {
  if (this.storageManager.getBestScore() < this.score) {
    this.storageManager.setBestScore(this.score);
  }

  // Clear the state when the game is over (game over only, not win)
  if (this.over) {
    this.storageManager.clearGameState();
  } else {
    this.storageManager.setGameState(this.serialize());
  }

  this.actuator.actuate(this.grid, {
    score:      this.score,
    over:       this.over,
    won:        this.won,
    bestScore:  this.storageManager.getBestScore(),
    terminated: this.isGameTerminated()
  });

};

// Represent the current game as an object
GameManager.prototype.serialize = function () {
  return {
    grid:        this.grid.serialize(),
    score:       this.score,
    over:        this.over,
    won:         this.won,
    keepPlaying: this.keepPlaying
  };
};

// Save all tile positions and remove merger info
GameManager.prototype.prepareTiles = function () {
  this.grid.eachCell(function (x, y, tile) {
    if (tile) {
      tile.mergedFrom = null;
      tile.savePosition();
    }
  });
};

// Move a tile and its representation
GameManager.prototype.moveTile = function (tile, cell) {
  this.grid.cells[tile.x][tile.y] = null;
  this.grid.cells[cell.x][cell.y] = tile;
  tile.updatePosition(cell);
};

// Move tiles on the grid in the specified direction
GameManager.prototype.move = function (direction) {
  // 0: up, 1: right, 2: down, 3: left
  var self = this;

  if (this.isGameTerminated()) return; // Don't do anything if the game's over

  var cell, tile;

  var vector     = this.getVector(direction);
  var traversals = this.buildTraversals(vector);
  var moved      = false;

  // Save the current tile positions and remove merger information
  this.prepareTiles();

  // Traverse the grid in the right direction and move tiles
  traversals.x.forEach(function (x) {
    traversals.y.forEach(function (y) {
      cell = { x: x, y: y };
      tile = self.grid.cellContent(cell);

      if (tile) {
        var positions = self.findFarthestPosition(cell, vector);
        var next      = self.grid.cellContent(positions.next);

        // Only one merger per row traversal?
        if (next && next.value === tile.value && !next.mergedFrom) {
          var merged = new Tile(positions.next, tile.value * 2);
          merged.mergedFrom = [tile, next];

          self.grid.insertTile(merged);
          self.grid.removeTile(tile);

          // Converge the two tiles' positions
          tile.updatePosition(positions.next);

          // Update the score
          self.score += merged.value;

          // The mighty 2048 tile
          if (merged.value === 2048) self.won = true;
        } else {
          self.moveTile(tile, positions.farthest);
        }

        if (!self.positionsEqual(cell, tile)) {
          moved = true; // The tile moved from its original cell!
        }
      }
    });
  });

  if (moved) {
    this.addRandomTile();

    if (!this.movesAvailable()) {
      this.over = true; // Game over!
    }

    this.actuate();
  }
};

// Get the vector representing the chosen direction
GameManager.prototype.getVector = function (direction) {
  // Vectors representing tile movement
  var map = {
    0: { x: 0,  y: -1 }, // Up
    1: { x: 1,  y: 0 },  // Right
    2: { x: 0,  y: 1 },  // Down
    3: { x: -1, y: 0 }   // Left
  };

  return map[direction];
};

// Build a list of positions to traverse in the right order
GameManager.prototype.buildTraversals = function (vector) {
  var traversals = { x: [], y: [] };

  for (var pos = 0; pos < this.size; pos++) {
    traversals.x.push(pos);
    traversals.y.push(pos);
  }

  // Always traverse from the farthest cell in the chosen direction
  if (vector.x === 1) traversals.x = traversals.x.reverse();
  if (vector.y === 1) traversals.y = traversals.y.reverse();

  return traversals;
};

GameManager.prototype.findFarthestPosition = function (cell, vector) {
  var previous;

  // Progress towards the vector direction until an obstacle is found
  do {
    previous = cell;
    cell     = { x: previous.x + vector.x, y: previous.y + vector.y };
  } while (this.grid.withinBounds(cell) &&
           this.grid.cellAvailable(cell));

  return {
    farthest: previous,
    next: cell // Used to check if a merge is required
  };
};

GameManager.prototype.movesAvailable = function () {
  return this.grid.cellsAvailable() || this.tileMatchesAvailable();
};

// Check for available matches between tiles (more expensive check)
GameManager.prototype.tileMatchesAvailable = function () {
  var self = this;

  var tile;

  for (var x = 0; x < this.size; x++) {
    for (var y = 0; y < this.size; y++) {
      tile = this.grid.cellContent({ x: x, y: y });

      if (tile) {
        for (var direction = 0; direction < 4; direction++) {
          var vector = self.getVector(direction);
          var cell   = { x: x + vector.x, y: y + vector.y };

          var other  = self.grid.cellContent(cell);

          if (other && other.value === tile.value) {
            return true; // These two tiles can be merged
          }
        }
      }
    }
  }

  return false;
};

GameManager.prototype.positionsEqual = function (first, second) {
  return first.x === second.x && first.y === second.y;
};


================================================
FILE: main/gams/gfiles/html5/2048/js/grid.js
================================================
function Grid(size, previousState) {
  this.size = size;
  this.cells = previousState ? this.fromState(previousState) : this.empty();
}

// Build a grid of the specified size
Grid.prototype.empty = function () {
  var cells = [];

  for (var x = 0; x < this.size; x++) {
    var row = cells[x] = [];

    for (var y = 0; y < this.size; y++) {
      row.push(null);
    }
  }

  return cells;
};

Grid.prototype.fromState = function (state) {
  var cells = [];

  for (var x = 0; x < this.size; x++) {
    var row = cells[x] = [];

    for (var y = 0; y < this.size; y++) {
      var tile = state[x][y];
      row.push(tile ? new Tile(tile.position, tile.value) : null);
    }
  }

  return cells;
};

// Find the first available random position
Grid.prototype.randomAvailableCell = function () {
  var cells = this.availableCells();

  if (cells.length) {
    return cells[Math.floor(Math.random() * cells.length)];
  }
};

Grid.prototype.availableCells = function () {
  var cells = [];

  this.eachCell(function (x, y, tile) {
    if (!tile) {
      cells.push({ x: x, y: y });
    }
  });

  return cells;
};

// Call callback for every cell
Grid.prototype.eachCell = function (callback) {
  for (var x = 0; x < this.size; x++) {
    for (var y = 0; y < this.size; y++) {
      callback(x, y, this.cells[x][y]);
    }
  }
};

// Check if there are any cells available
Grid.prototype.cellsAvailable = function () {
  return !!this.availableCells().length;
};

// Check if the specified cell is taken
Grid.prototype.cellAvailable = function (cell) {
  return !this.cellOccupied(cell);
};

Grid.prototype.cellOccupied = function (cell) {
  return !!this.cellContent(cell);
};

Grid.prototype.cellContent = function (cell) {
  if (this.withinBounds(cell)) {
    return this.cells[cell.x][cell.y];
  } else {
    return null;
  }
};

// Inserts a tile at its position
Grid.prototype.insertTile = function (tile) {
  this.cells[tile.x][tile.y] = tile;
};

Grid.prototype.removeTile = function (tile) {
  this.cells[tile.x][tile.y] = null;
};

Grid.prototype.withinBounds = function (position) {
  return position.x >= 0 && position.x < this.size &&
         position.y >= 0 && position.y < this.size;
};

Grid.prototype.serialize = function () {
  var cellState = [];

  for (var x = 0; x < this.size; x++) {
    var row = cellState[x] = [];

    for (var y = 0; y < this.size; y++) {
      row.push(this.cells[x][y] ? this.cells[x][y].serialize() : null);
    }
  }

  return {
    size: this.size,
    cells: cellState
  };
};


================================================
FILE: main/gams/gfiles/html5/2048/js/html_actuator.js
================================================
function HTMLActuator() {
  this.tileContainer    = document.querySelector(".tile-container");
  this.scoreContainer   = document.querySelector(".score-container");
  this.bestContainer    = document.querySelector(".best-container");
  this.messageContainer = document.querySelector(".game-message");

  this.score = 0;
}

HTMLActuator.prototype.actuate = function (grid, metadata) {
  var self = this;

  window.requestAnimationFrame(function () {
    self.clearContainer(self.tileContainer);

    grid.cells.forEach(function (column) {
      column.forEach(function (cell) {
        if (cell) {
          self.addTile(cell);
        }
      });
    });

    self.updateScore(metadata.score);
    self.updateBestScore(metadata.bestScore);

    if (metadata.terminated) {
      if (metadata.over) {
        self.message(false); // You lose
      } else if (metadata.won) {
        self.message(true); // You win!
      }
    }

  });
};

// Continues the game (both restart and keep playing)
HTMLActuator.prototype.continueGame = function () {
  this.clearMessage();
};

HTMLActuator.prototype.clearContainer = function (container) {
  while (container.firstChild) {
    container.removeChild(container.firstChild);
  }
};

HTMLActuator.prototype.addTile = function (tile) {
  var self = this;

  var wrapper   = document.createElement("div");
  var inner     = document.createElement("div");
  var position  = tile.previousPosition || { x: tile.x, y: tile.y };
  var positionClass = this.positionClass(position);

  // We can't use classlist because it somehow glitches when replacing classes
  var classes = ["tile", "tile-" + tile.value, positionClass];

  if (tile.value > 2048) classes.push("tile-super");

  this.applyClasses(wrapper, classes);

  inner.classList.add("tile-inner");
  inner.textContent = tile.value;

  if (tile.previousPosition) {
    // Make sure that the tile gets rendered in the previous position first
    window.requestAnimationFrame(function () {
      classes[2] = self.positionClass({ x: tile.x, y: tile.y });
      self.applyClasses(wrapper, classes); // Update the position
    });
  } else if (tile.mergedFrom) {
    classes.push("tile-merged");
    this.applyClasses(wrapper, classes);

    // Render the tiles that merged
    tile.mergedFrom.forEach(function (merged) {
      self.addTile(merged);
    });
  } else {
    classes.push("tile-new");
    this.applyClasses(wrapper, classes);
  }

  // Add the inner part of the tile to the wrapper
  wrapper.appendChild(inner);

  // Put the tile on the board
  this.tileContainer.appendChild(wrapper);
};

HTMLActuator.prototype.applyClasses = function (element, classes) {
  element.setAttribute("class", classes.join(" "));
};

HTMLActuator.prototype.normalizePosition = function (position) {
  return { x: position.x + 1, y: position.y + 1 };
};

HTMLActuator.prototype.positionClass = function (position) {
  position = this.normalizePosition(position);
  return "tile-position-" + position.x + "-" + position.y;
};

HTMLActuator.prototype.updateScore = function (score) {
  this.clearContainer(this.scoreContainer);

  var difference = score - this.score;
  this.score = score;

  this.scoreContainer.textContent = this.score;

  if (difference > 0) {
    var addition = document.createElement("div");
    addition.classList.add("score-addition");
    addition.textContent = "+" + difference;

    this.scoreContainer.appendChild(addition);
  }
};

HTMLActuator.prototype.updateBestScore = function (bestScore) {
  this.bestContainer.textContent = bestScore;
};

HTMLActuator.prototype.message = function (won) {
  var type    = won ? "game-won" : "game-over";
  var message = won ? "You win!" : "Game over!";

  this.messageContainer.classList.add(type);
  this.messageContainer.getElementsByTagName("p")[0].textContent = message;
};

HTMLActuator.prototype.clearMessage = function () {
  // IE only takes one value to remove at a time.
  this.messageContainer.classList.remove("game-won");
  this.messageContainer.classList.remove("game-over");
};


================================================
FILE: main/gams/gfiles/html5/2048/js/keyboard_input_manager.js
================================================
function KeyboardInputManager() {
  this.events = {};

  if (window.navigator.msPointerEnabled) {
    //Internet Explorer 10 style
    this.eventTouchstart    = "MSPointerDown";
    this.eventTouchmove     = "MSPointerMove";
    this.eventTouchend      = "MSPointerUp";
  } else {
    this.eventTouchstart    = "touchstart";
    this.eventTouchmove     = "touchmove";
    this.eventTouchend      = "touchend";
  }

  this.listen();
}

KeyboardInputManager.prototype.on = function (event, callback) {
  if (!this.events[event]) {
    this.events[event] = [];
  }
  this.events[event].push(callback);
};

KeyboardInputManager.prototype.emit = function (event, data) {
  var callbacks = this.events[event];
  if (callbacks) {
    callbacks.forEach(function (callback) {
      callback(data);
    });
  }
};

KeyboardInputManager.prototype.listen = function () {
  var self = this;

  var map = {
    38: 0, // Up
    39: 1, // Right
    40: 2, // Down
    37: 3, // Left
    75: 0, // Vim up
    76: 1, // Vim right
    74: 2, // Vim down
    72: 3, // Vim left
    87: 0, // W
    68: 1, // D
    83: 2, // S
    65: 3  // A
  };

  // Respond to direction keys
  document.addEventListener("keydown", function (event) {
    var modifiers = event.altKey || event.ctrlKey || event.metaKey ||
                    event.shiftKey;
    var mapped    = map[event.which];

    if (!modifiers) {
      if (mapped !== undefined) {
        event.preventDefault();
        self.emit("move", mapped);
      }
    }

    // R key restarts the game
    if (!modifiers && event.which === 82) {
      self.restart.call(self, event);
    }
  });

  // Respond to button presses
  this.bindButtonPress(".retry-button", this.restart);
  this.bindButtonPress(".restart-button", this.restart);
  this.bindButtonPress(".keep-playing-button", this.keepPlaying);

  // Respond to swipe events
  var touchStartClientX, touchStartClientY;
  var gameContainer = document.getElementsByClassName("game-container")[0];

  gameContainer.addEventListener(this.eventTouchstart, function (event) {
    if ((!window.navigator.msPointerEnabled && event.touches.length > 1) ||
        event.targetTouches.length > 1) {
      return; // Ignore if touching with more than 1 finger
    }

    if (window.navigator.msPointerEnabled) {
      touchStartClientX = event.pageX;
      touchStartClientY = event.pageY;
    } else {
      touchStartClientX = event.touches[0].clientX;
      touchStartClientY = event.touches[0].clientY;
    }

    event.preventDefault();
  });

  gameContainer.addEventListener(this.eventTouchmove, function (event)
Download .txt
gitextract_46y48etd/

├── .breakpoints
├── .gitattributes
├── .replit
├── Dockerfile
├── LICENSE
├── Procfile
├── README.md
├── app.json
├── config.json
├── index.js
├── index.mjs
├── main/
│   ├── 404.html
│   ├── arc-sw.js
│   ├── css/
│   │   ├── nav.css
│   │   ├── style.css
│   │   └── terms.css
│   ├── gams/
│   │   ├── .gitignore
│   │   ├── compiler.py
│   │   ├── css/
│   │   │   └── style.css
│   │   ├── dehar.py
│   │   ├── gfiles/
│   │   │   ├── flash/
│   │   │   │   ├── f75600c6b605d23c38b0.wasm
│   │   │   │   ├── index.html
│   │   │   │   └── ruffle.js
│   │   │   ├── html5/
│   │   │   │   ├── 2048/
│   │   │   │   │   ├── index.html
│   │   │   │   │   ├── js/
│   │   │   │   │   │   ├── animframe_polyfill.js
│   │   │   │   │   │   ├── application.js
│   │   │   │   │   │   ├── bind_polyfill.js
│   │   │   │   │   │   ├── classlist_polyfill.js
│   │   │   │   │   │   ├── game_manager.js
│   │   │   │   │   │   ├── grid.js
│   │   │   │   │   │   ├── html_actuator.js
│   │   │   │   │   │   ├── keyboard_input_manager.js
│   │   │   │   │   │   ├── local_storage_manager.js
│   │   │   │   │   │   └── tile.js
│   │   │   │   │   └── style/
│   │   │   │   │       ├── fonts/
│   │   │   │   │       │   └── clear-sans.css
│   │   │   │   │       └── main.css
│   │   │   │   ├── adarkroom/
│   │   │   │   │   ├── LICENSE.md
│   │   │   │   │   ├── audio/
│   │   │   │   │   │   ├── asteroid-hit-1.flac
│   │   │   │   │   │   ├── asteroid-hit-2.flac
│   │   │   │   │   │   ├── asteroid-hit-3.flac
│   │   │   │   │   │   ├── asteroid-hit-4.flac
│   │   │   │   │   │   ├── asteroid-hit-5.flac
│   │   │   │   │   │   ├── asteroid-hit-6.flac
│   │   │   │   │   │   ├── asteroid-hit-7.flac
│   │   │   │   │   │   ├── asteroid-hit-8.flac
│   │   │   │   │   │   ├── build.flac
│   │   │   │   │   │   ├── buy.flac
│   │   │   │   │   │   ├── check-traps.flac
│   │   │   │   │   │   ├── craft.flac
│   │   │   │   │   │   ├── crash.flac
│   │   │   │   │   │   ├── death.flac
│   │   │   │   │   │   ├── dusty-path.flac
│   │   │   │   │   │   ├── eat-meat.flac
│   │   │   │   │   │   ├── embark.flac
│   │   │   │   │   │   ├── encounter-tier-1.flac
│   │   │   │   │   │   ├── encounter-tier-2.flac
│   │   │   │   │   │   ├── encounter-tier-3.flac
│   │   │   │   │   │   ├── ending.flac
│   │   │   │   │   │   ├── event-beast-attack.flac
│   │   │   │   │   │   ├── event-beggar.flac
│   │   │   │   │   │   ├── event-hut-fire.flac
│   │   │   │   │   │   ├── event-mysterious-wanderer.flac
│   │   │   │   │   │   ├── event-noises-inside.flac
│   │   │   │   │   │   ├── event-noises-outside.flac
│   │   │   │   │   │   ├── event-nomad.flac
│   │   │   │   │   │   ├── event-plague.flac
│   │   │   │   │   │   ├── event-ruined-trap.flac
│   │   │   │   │   │   ├── event-scout.flac
│   │   │   │   │   │   ├── event-shady-builder.flac
│   │   │   │   │   │   ├── event-sick-man.flac
│   │   │   │   │   │   ├── event-sickness.flac
│   │   │   │   │   │   ├── event-soldier-attack.flac
│   │   │   │   │   │   ├── event-thief.flac
│   │   │   │   │   │   ├── event-wandering-master.flac
│   │   │   │   │   │   ├── fire-burning.flac
│   │   │   │   │   │   ├── fire-dead.flac
│   │   │   │   │   │   ├── fire-flickering.flac
│   │   │   │   │   │   ├── fire-roaring.flac
│   │   │   │   │   │   ├── fire-smoldering.flac
│   │   │   │   │   │   ├── footsteps-1.flac
│   │   │   │   │   │   ├── footsteps-2.flac
│   │   │   │   │   │   ├── footsteps-3.flac
│   │   │   │   │   │   ├── footsteps-4.flac
│   │   │   │   │   │   ├── footsteps-5.flac
│   │   │   │   │   │   ├── footsteps-6.flac
│   │   │   │   │   │   ├── gather-wood.flac
│   │   │   │   │   │   ├── landmark-battlefield.flac
│   │   │   │   │   │   ├── landmark-borehole.flac
│   │   │   │   │   │   ├── landmark-cave.flac
│   │   │   │   │   │   ├── landmark-city.flac
│   │   │   │   │   │   ├── landmark-coalmine.flac
│   │   │   │   │   │   ├── landmark-crashed-ship.flac
│   │   │   │   │   │   ├── landmark-destroyed-village.flac
│   │   │   │   │   │   ├── landmark-friendly-outpost.flac
│   │   │   │   │   │   ├── landmark-house.flac
│   │   │   │   │   │   ├── landmark-ironmine.flac
│   │   │   │   │   │   ├── landmark-sulphurmine.flac
│   │   │   │   │   │   ├── landmark-swamp.flac
│   │   │   │   │   │   ├── landmark-town.flac
│   │   │   │   │   │   ├── large-village.flac
│   │   │   │   │   │   ├── lift-off.flac
│   │   │   │   │   │   ├── light-fire.flac
│   │   │   │   │   │   ├── lonely-hut.flac
│   │   │   │   │   │   ├── modest-village.flac
│   │   │   │   │   │   ├── raucous-village.flac
│   │   │   │   │   │   ├── reinforce-hull.flac
│   │   │   │   │   │   ├── ship.flac
│   │   │   │   │   │   ├── silent-forest.flac
│   │   │   │   │   │   ├── space.flac
│   │   │   │   │   │   ├── stoke-fire.flac
│   │   │   │   │   │   ├── tiny-village.flac
│   │   │   │   │   │   ├── upgrade-engine.flac
│   │   │   │   │   │   ├── use-meds.flac
│   │   │   │   │   │   ├── weapon-melee-1.flac
│   │   │   │   │   │   ├── weapon-melee-2.flac
│   │   │   │   │   │   ├── weapon-melee-3.flac
│   │   │   │   │   │   ├── weapon-ranged-1.flac
│   │   │   │   │   │   ├── weapon-ranged-2.flac
│   │   │   │   │   │   ├── weapon-ranged-3.flac
│   │   │   │   │   │   ├── weapon-unarmed-1.flac
│   │   │   │   │   │   ├── weapon-unarmed-2.flac
│   │   │   │   │   │   ├── weapon-unarmed-3.flac
│   │   │   │   │   │   └── world.flac
│   │   │   │   │   ├── browserWarning.html
│   │   │   │   │   ├── css/
│   │   │   │   │   │   ├── dark.css
│   │   │   │   │   │   ├── main.css
│   │   │   │   │   │   ├── outside.css
│   │   │   │   │   │   ├── path.css
│   │   │   │   │   │   ├── room.css
│   │   │   │   │   │   ├── ship.css
│   │   │   │   │   │   ├── space.css
│   │   │   │   │   │   └── world.css
│   │   │   │   │   ├── index.html
│   │   │   │   │   ├── lang/
│   │   │   │   │   │   ├── cs/
│   │   │   │   │   │   │   ├── main.css
│   │   │   │   │   │   │   ├── strings.js
│   │   │   │   │   │   │   └── strings.po
│   │   │   │   │   │   ├── de/
│   │   │   │   │   │   │   ├── main.css
│   │   │   │   │   │   │   ├── strings.js
│   │   │   │   │   │   │   └── strings.po
│   │   │   │   │   │   ├── el/
│   │   │   │   │   │   │   ├── main.css
│   │   │   │   │   │   │   ├── strings.js
│   │   │   │   │   │   │   └── strings.po
│   │   │   │   │   │   ├── eo/
│   │   │   │   │   │   │   ├── main.css
│   │   │   │   │   │   │   ├── strings.js
│   │   │   │   │   │   │   └── strings.po
│   │   │   │   │   │   ├── es/
│   │   │   │   │   │   │   ├── main.css
│   │   │   │   │   │   │   ├── strings.js
│   │   │   │   │   │   │   └── strings.po
│   │   │   │   │   │   ├── fr/
│   │   │   │   │   │   │   ├── main.css
│   │   │   │   │   │   │   ├── strings.js
│   │   │   │   │   │   │   └── strings.po
│   │   │   │   │   │   ├── gl/
│   │   │   │   │   │   │   ├── main.css
│   │   │   │   │   │   │   ├── strings.js
│   │   │   │   │   │   │   └── strings.po
│   │   │   │   │   │   ├── id/
│   │   │   │   │   │   │   ├── main.css
│   │   │   │   │   │   │   ├── strings.js
│   │   │   │   │   │   │   └── strings.po
│   │   │   │   │   │   ├── it/
│   │   │   │   │   │   │   ├── main.css
│   │   │   │   │   │   │   ├── strings.js
│   │   │   │   │   │   │   └── strings.po
│   │   │   │   │   │   ├── ja/
│   │   │   │   │   │   │   ├── main.css
│   │   │   │   │   │   │   ├── strings.js
│   │   │   │   │   │   │   └── strings.po
│   │   │   │   │   │   ├── ko/
│   │   │   │   │   │   │   ├── main.css
│   │   │   │   │   │   │   ├── strings.js
│   │   │   │   │   │   │   └── strings.po
│   │   │   │   │   │   ├── langs.js
│   │   │   │   │   │   ├── lt_LT/
│   │   │   │   │   │   │   ├── main.css
│   │   │   │   │   │   │   ├── strings.js
│   │   │   │   │   │   │   ├── strings.mo
│   │   │   │   │   │   │   └── strings.po
│   │   │   │   │   │   ├── lv/
│   │   │   │   │   │   │   ├── strings.js
│   │   │   │   │   │   │   └── strings.po
│   │   │   │   │   │   ├── main.css
│   │   │   │   │   │   ├── nb/
│   │   │   │   │   │   │   ├── main.css
│   │   │   │   │   │   │   ├── strings.js
│   │   │   │   │   │   │   └── strings.po
│   │   │   │   │   │   ├── pl/
│   │   │   │   │   │   │   ├── main.css
│   │   │   │   │   │   │   ├── strings.js
│   │   │   │   │   │   │   └── strings.po
│   │   │   │   │   │   ├── pt/
│   │   │   │   │   │   │   ├── main.css
│   │   │   │   │   │   │   ├── strings.js
│   │   │   │   │   │   │   └── strings.po
│   │   │   │   │   │   ├── pt_br/
│   │   │   │   │   │   │   ├── main.css
│   │   │   │   │   │   │   ├── strings.js
│   │   │   │   │   │   │   └── strings.po
│   │   │   │   │   │   ├── ru/
│   │   │   │   │   │   │   ├── main.css
│   │   │   │   │   │   │   ├── strings.js
│   │   │   │   │   │   │   └── strings.po
│   │   │   │   │   │   ├── sv/
│   │   │   │   │   │   │   ├── main.css
│   │   │   │   │   │   │   ├── strings.js
│   │   │   │   │   │   │   └── strings.po
│   │   │   │   │   │   ├── th/
│   │   │   │   │   │   │   ├── main.css
│   │   │   │   │   │   │   ├── strings.js
│   │   │   │   │   │   │   └── strings.po
│   │   │   │   │   │   ├── tr/
│   │   │   │   │   │   │   ├── main.css
│   │   │   │   │   │   │   ├── strings.js
│   │   │   │   │   │   │   └── strings.po
│   │   │   │   │   │   ├── uk/
│   │   │   │   │   │   │   ├── main.css
│   │   │   │   │   │   │   ├── strings.js
│   │   │   │   │   │   │   └── strings.po
│   │   │   │   │   │   ├── vi/
│   │   │   │   │   │   │   ├── main.css
│   │   │   │   │   │   │   ├── strings.js
│   │   │   │   │   │   │   └── strings.po
│   │   │   │   │   │   ├── zh_cn/
│   │   │   │   │   │   │   ├── main.css
│   │   │   │   │   │   │   ├── strings.js
│   │   │   │   │   │   │   └── strings.po
│   │   │   │   │   │   └── zh_tw/
│   │   │   │   │   │       ├── main.css
│   │   │   │   │   │       ├── strings.js
│   │   │   │   │   │       └── strings.po
│   │   │   │   │   ├── lib/
│   │   │   │   │   │   ├── base64.js
│   │   │   │   │   │   ├── icu.js
│   │   │   │   │   │   ├── jquery.event.move.js
│   │   │   │   │   │   ├── jquery.event.swipe.js
│   │   │   │   │   │   └── translate.js
│   │   │   │   │   ├── mobileWarning.html
│   │   │   │   │   └── script/
│   │   │   │   │       ├── Button.js
│   │   │   │   │       ├── audio.js
│   │   │   │   │       ├── audioLibrary.js
│   │   │   │   │       ├── dropbox.js
│   │   │   │   │       ├── engine.js
│   │   │   │   │       ├── events/
│   │   │   │   │       │   ├── encounters.js
│   │   │   │   │       │   ├── global.js
│   │   │   │   │       │   ├── marketing.js
│   │   │   │   │       │   ├── outside.js
│   │   │   │   │       │   ├── room.js
│   │   │   │   │       │   └── setpieces.js
│   │   │   │   │       ├── events.js
│   │   │   │   │       ├── header.js
│   │   │   │   │       ├── localization.js
│   │   │   │   │       ├── notifications.js
│   │   │   │   │       ├── outside.js
│   │   │   │   │       ├── path.js
│   │   │   │   │       ├── prestige.js
│   │   │   │   │       ├── room.js
│   │   │   │   │       ├── scoring.js
│   │   │   │   │       ├── ship.js
│   │   │   │   │       ├── space.js
│   │   │   │   │       ├── state_manager.js
│   │   │   │   │       └── world.js
│   │   │   │   ├── asciispace/
│   │   │   │   │   └── index.html
│   │   │   │   ├── asteroids/
│   │   │   │   │   ├── LICENSE
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── game.js
│   │   │   │   │   ├── index.html
│   │   │   │   │   ├── ipad.js
│   │   │   │   │   └── vector_battle_regular.typeface.js
│   │   │   │   ├── astray/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── Three.js
│   │   │   │   │   ├── index.html
│   │   │   │   │   ├── jquery.js
│   │   │   │   │   ├── keyboard.js
│   │   │   │   │   └── maze.js
│   │   │   │   ├── backcountry/
│   │   │   │   │   ├── index.html
│   │   │   │   │   └── models.tfu
│   │   │   │   ├── blackholesquare/
│   │   │   │   │   ├── index.html
│   │   │   │   │   ├── manifest.json
│   │   │   │   │   └── sw.js
│   │   │   │   ├── bounceback/
│   │   │   │   │   ├── LICENSE
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── game.js
│   │   │   │   │   ├── gameEngine.js
│   │   │   │   │   ├── gameEngineDebug.js
│   │   │   │   │   └── index.html
│   │   │   │   ├── breaklock/
│   │   │   │   │   ├── app.css
│   │   │   │   │   ├── app.js
│   │   │   │   │   ├── index.html
│   │   │   │   │   ├── manifest.json
│   │   │   │   │   └── service-worker.js
│   │   │   │   ├── breakout/
│   │   │   │   │   ├── LICENSE
│   │   │   │   │   ├── breakout.css
│   │   │   │   │   ├── breakout.js
│   │   │   │   │   ├── game.js
│   │   │   │   │   ├── index.html
│   │   │   │   │   ├── levels.js
│   │   │   │   │   └── sound/
│   │   │   │   │       ├── license.txt
│   │   │   │   │       └── soundmanager2-nodebug-jsmin.js
│   │   │   │   ├── captaincallisto/
│   │   │   │   │   └── index.html
│   │   │   │   ├── chess/
│   │   │   │   │   ├── canvas3dengine/
│   │   │   │   │   │   ├── camera.jsfb
│   │   │   │   │   │   ├── light.jsfb
│   │   │   │   │   │   ├── matrix3.jsfb
│   │   │   │   │   │   ├── mesh.jsfb
│   │   │   │   │   │   ├── scene.jsfb
│   │   │   │   │   │   └── vec3.jsfb
│   │   │   │   │   ├── chess.js
│   │   │   │   │   ├── common/
│   │   │   │   │   │   └── xhr.js
│   │   │   │   │   ├── css/
│   │   │   │   │   │   └── chess.css
│   │   │   │   │   ├── index.html
│   │   │   │   │   ├── license.txt
│   │   │   │   │   ├── meshes/
│   │   │   │   │   │   ├── bishop.jscn
│   │   │   │   │   │   ├── board.json
│   │   │   │   │   │   ├── king.jscn
│   │   │   │   │   │   ├── knight.jscn
│   │   │   │   │   │   ├── pawn.jscn
│   │   │   │   │   │   ├── queen.jscn
│   │   │   │   │   │   └── rook.jscn
│   │   │   │   │   ├── readme.txt
│   │   │   │   │   ├── sample.pgn
│   │   │   │   │   ├── skins/
│   │   │   │   │   │   └── gnomechess.css
│   │   │   │   │   └── solidView.jsfb
│   │   │   │   ├── chromaincident/
│   │   │   │   │   └── index.html
│   │   │   │   ├── chromedino/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── index.css
│   │   │   │   │   ├── index.html
│   │   │   │   │   └── index.js
│   │   │   │   ├── connect3/
│   │   │   │   │   ├── connect3.js
│   │   │   │   │   └── index.html
│   │   │   │   ├── cookieclicker/
│   │   │   │   │   ├── base64.js
│   │   │   │   │   ├── index.html
│   │   │   │   │   ├── main.js
│   │   │   │   │   ├── minigameGarden.js
│   │   │   │   │   ├── minigameGrimoire.js
│   │   │   │   │   ├── minigameMarket.js
│   │   │   │   │   ├── minigamePantheon.js
│   │   │   │   │   ├── readme.md
│   │   │   │   │   └── style.css
│   │   │   │   ├── drifthunters/
│   │   │   │   │   ├── Build/
│   │   │   │   │   │   ├── ItchIO.asm.code.unityweb
│   │   │   │   │   │   ├── ItchIO.asm.framework.unityweb
│   │   │   │   │   │   ├── ItchIO.asm.memory.unityweb
│   │   │   │   │   │   ├── ItchIO.json
│   │   │   │   │   │   └── UnityLoader.js
│   │   │   │   │   ├── TemplateData/
│   │   │   │   │   │   ├── UnityProgress.js
│   │   │   │   │   │   └── style.css
│   │   │   │   │   ├── index.html
│   │   │   │   │   └── script.js
│   │   │   │   ├── edgenotfound/
│   │   │   │   │   └── index.html
│   │   │   │   ├── evilglitch/
│   │   │   │   │   ├── b.js
│   │   │   │   │   └── index.html
│   │   │   │   ├── factoryballsforever/
│   │   │   │   │   ├── factoryballsforever.js
│   │   │   │   │   └── index.html
│   │   │   │   ├── flappybird/
│   │   │   │   │   ├── __loading__.js
│   │   │   │   │   ├── __start__.js
│   │   │   │   │   ├── index.html
│   │   │   │   │   └── styles.css
│   │   │   │   ├── fnaf1/
│   │   │   │   │   ├── Build/
│   │   │   │   │   │   ├── FNAF1WebGL.asm.code.unityweb
│   │   │   │   │   │   ├── FNAF1WebGL.asm.framework.unityweb
│   │   │   │   │   │   ├── FNAF1WebGL.asm.memory.unityweb
│   │   │   │   │   │   ├── FNAF1WebGL.data.unityweb
│   │   │   │   │   │   ├── FNAF1WebGL.json
│   │   │   │   │   │   └── UnityLoader.js
│   │   │   │   │   ├── TemplateData/
│   │   │   │   │   │   ├── UnityProgress.js
│   │   │   │   │   │   └── style.css
│   │   │   │   │   ├── htmlgame.js
│   │   │   │   │   ├── index.html
│   │   │   │   │   └── script.js
│   │   │   │   ├── fnaf2/
│   │   │   │   │   └── index.html
│   │   │   │   ├── fnaf3/
│   │   │   │   │   └── index.html
│   │   │   │   ├── fnaf4/
│   │   │   │   │   └── index.html
│   │   │   │   ├── fnafsl/
│   │   │   │   │   └── index.html
│   │   │   │   ├── geometrydash/
│   │   │   │   │   ├── gdash.js
│   │   │   │   │   └── index.html
│   │   │   │   ├── hextris/
│   │   │   │   │   ├── index.html
│   │   │   │   │   ├── js/
│   │   │   │   │   │   ├── Block.js
│   │   │   │   │   │   ├── Hex.js
│   │   │   │   │   │   ├── Text.js
│   │   │   │   │   │   ├── checking.js
│   │   │   │   │   │   ├── comboTimer.js
│   │   │   │   │   │   ├── initialization.js
│   │   │   │   │   │   ├── input.js
│   │   │   │   │   │   ├── main.js
│   │   │   │   │   │   ├── math.js
│   │   │   │   │   │   ├── render.js
│   │   │   │   │   │   ├── save-state.js
│   │   │   │   │   │   ├── update.js
│   │   │   │   │   │   ├── view.js
│   │   │   │   │   │   └── wavegen.js
│   │   │   │   │   ├── style/
│   │   │   │   │   │   ├── fonts/
│   │   │   │   │   │   │   ├── Exo2-ExtraLight.otf
│   │   │   │   │   │   │   ├── Exo2-Regular.otf
│   │   │   │   │   │   │   └── Exo2-SemiBold.otf
│   │   │   │   │   │   ├── rrssb.css
│   │   │   │   │   │   └── style.css
│   │   │   │   │   └── vendor/
│   │   │   │   │       ├── jquery.js
│   │   │   │   │       └── js.cookie.js
│   │   │   │   ├── konnekt/
│   │   │   │   │   ├── index.html
│   │   │   │   │   ├── min.js
│   │   │   │   │   └── style.css
│   │   │   │   ├── minecraft/
│   │   │   │   │   └── index.html
│   │   │   │   ├── ninjavsevilcorp/
│   │   │   │   │   └── index.html
│   │   │   │   ├── oldroblox.html
│   │   │   │   ├── packabunchas/
│   │   │   │   │   └── index.html
│   │   │   │   ├── pacman/
│   │   │   │   │   ├── bundle.js
│   │   │   │   │   └── index.html
│   │   │   │   ├── particleclicker/
│   │   │   │   │   ├── LICENSE
│   │   │   │   │   ├── css/
│   │   │   │   │   │   └── style.css
│   │   │   │   │   ├── html/
│   │   │   │   │   │   ├── BBbar.html
│   │   │   │   │   │   ├── CPV.html
│   │   │   │   │   │   ├── Dstar_s.html
│   │   │   │   │   │   ├── H.html
│   │   │   │   │   │   ├── Jpsi.html
│   │   │   │   │   │   ├── Xi_b.html
│   │   │   │   │   │   ├── b.html
│   │   │   │   │   │   ├── detector.html
│   │   │   │   │   │   ├── gluons.html
│   │   │   │   │   │   ├── tau.html
│   │   │   │   │   │   ├── top.html
│   │   │   │   │   │   └── weak.html
│   │   │   │   │   ├── index.html
│   │   │   │   │   ├── js/
│   │   │   │   │   │   ├── analytics.js
│   │   │   │   │   │   ├── app.js
│   │   │   │   │   │   ├── detector.js
│   │   │   │   │   │   ├── event.js
│   │   │   │   │   │   ├── external/
│   │   │   │   │   │   │   ├── canvas2svg.js
│   │   │   │   │   │   │   ├── fastclick.js
│   │   │   │   │   │   │   └── retina.js
│   │   │   │   │   │   ├── game.js
│   │   │   │   │   │   ├── gameobjects.js
│   │   │   │   │   │   ├── helpers.js
│   │   │   │   │   │   ├── histogram.js
│   │   │   │   │   │   ├── storage.js
│   │   │   │   │   │   └── ui.js
│   │   │   │   │   └── json/
│   │   │   │   │       ├── achievements.json
│   │   │   │   │       ├── research.json
│   │   │   │   │       ├── upgrades.json
│   │   │   │   │       └── workers.json
│   │   │   │   ├── pushback/
│   │   │   │   │   ├── g.js
│   │   │   │   │   ├── index.html
│   │   │   │   │   └── s.css
│   │   │   │   ├── q1k3/
│   │   │   │   │   ├── index.html
│   │   │   │   │   ├── l
│   │   │   │   │   └── m
│   │   │   │   ├── racer/
│   │   │   │   │   ├── LICENSE
│   │   │   │   │   ├── Rakefile
│   │   │   │   │   ├── common.css
│   │   │   │   │   ├── images/
│   │   │   │   │   │   ├── background.js
│   │   │   │   │   │   └── sprites.js
│   │   │   │   │   ├── index.html
│   │   │   │   │   ├── js/
│   │   │   │   │   │   ├── common.js
│   │   │   │   │   │   ├── main.js
│   │   │   │   │   │   └── stats.js
│   │   │   │   │   └── music/
│   │   │   │   │       └── racer.ogg
│   │   │   │   ├── radiusraid/
│   │   │   │   │   ├── index.html
│   │   │   │   │   └── js/
│   │   │   │   │       ├── audio.js
│   │   │   │   │       ├── bullet.js
│   │   │   │   │       ├── button.js
│   │   │   │   │       ├── definitions.js
│   │   │   │   │       ├── enemy.js
│   │   │   │   │       ├── explosion.js
│   │   │   │   │       ├── game.js
│   │   │   │   │       ├── hero.js
│   │   │   │   │       ├── jsfxr.js
│   │   │   │   │       ├── levelpop.js
│   │   │   │   │       ├── particle.js
│   │   │   │   │       ├── particleemitter.js
│   │   │   │   │       ├── powerup.js
│   │   │   │   │       ├── storage.js
│   │   │   │   │       ├── text.js
│   │   │   │   │       ├── textpop.js
│   │   │   │   │       └── util.js
│   │   │   │   ├── retrobowl/
│   │   │   │   │   ├── html5game/
│   │   │   │   │   │   ├── Achievements.txt
│   │   │   │   │   │   ├── Colleges.txt
│   │   │   │   │   │   ├── LanguageUS.txt
│   │   │   │   │   │   ├── Names_F1.txt
│   │   │   │   │   │   ├── Names_L.txt
│   │   │   │   │   │   ├── RetroBowl.js
│   │   │   │   │   │   ├── Schedule.txt
│   │   │   │   │   │   ├── Teams.txt
│   │   │   │   │   │   ├── savedata.ini
│   │   │   │   │   │   ├── snd_audience_dis.ogg
│   │   │   │   │   │   ├── snd_audience_fg.ogg
│   │   │   │   │   │   ├── snd_audience_idle.ogg
│   │   │   │   │   │   ├── snd_beep.ogg
│   │   │   │   │   │   ├── snd_beep2.ogg
│   │   │   │   │   │   ├── snd_bounce.ogg
│   │   │   │   │   │   ├── snd_click.ogg
│   │   │   │   │   │   ├── snd_kick.ogg
│   │   │   │   │   │   ├── snd_oof1.ogg
│   │   │   │   │   │   ├── snd_oof2.ogg
│   │   │   │   │   │   ├── snd_oof3.ogg
│   │   │   │   │   │   ├── snd_post.ogg
│   │   │   │   │   │   ├── snd_tackle.ogg
│   │   │   │   │   │   └── snd_throw.ogg
│   │   │   │   │   ├── index.html
│   │   │   │   │   └── script.js
│   │   │   │   ├── retrohaunt/
│   │   │   │   │   ├── bundle.js
│   │   │   │   │   └── index.html
│   │   │   │   ├── roadblocks/
│   │   │   │   │   ├── index.html
│   │   │   │   │   ├── index.js
│   │   │   │   │   └── style.css
│   │   │   │   ├── roblox.html
│   │   │   │   ├── run3/
│   │   │   │   │   ├── Run3.js
│   │   │   │   │   ├── font/
│   │   │   │   │   │   └── Comfortaa.sfd
│   │   │   │   │   ├── img/
│   │   │   │   │   │   ├── character/
│   │   │   │   │   │   │   ├── Angel.json
│   │   │   │   │   │   │   ├── Bunny.json
│   │   │   │   │   │   │   ├── Child.json
│   │   │   │   │   │   │   ├── Climber.json
│   │   │   │   │   │   │   ├── Duplicator.json
│   │   │   │   │   │   │   ├── Gentleman.json
│   │   │   │   │   │   │   ├── Ghost.json
│   │   │   │   │   │   │   ├── IceSkater.json
│   │   │   │   │   │   │   ├── JackOLantern.json
│   │   │   │   │   │   │   ├── Lizard.json
│   │   │   │   │   │   │   ├── Ninja.json
│   │   │   │   │   │   │   ├── Pastafarian.json
│   │   │   │   │   │   │   ├── Pirate.json
│   │   │   │   │   │   │   ├── Runner.json
│   │   │   │   │   │   │   ├── Skater.json
│   │   │   │   │   │   │   ├── Skier.json
│   │   │   │   │   │   │   └── Student.json
│   │   │   │   │   │   └── cutscene/
│   │   │   │   │   │       └── TrainRide/
│   │   │   │   │   │           └── Spritesheet.json
│   │   │   │   │   ├── index.html
│   │   │   │   │   ├── model/
│   │   │   │   │   │   ├── battery.obj
│   │   │   │   │   │   ├── terrain.3ds
│   │   │   │   │   │   └── terrain.obj
│   │   │   │   │   ├── music/
│   │   │   │   │   │   ├── CrumblingWalls.ogg
│   │   │   │   │   │   ├── LeaveTheSolarSystem.ogg
│   │   │   │   │   │   ├── TheVoid.ogg
│   │   │   │   │   │   ├── Tone.ogg
│   │   │   │   │   │   ├── TravelTheGalaxy.ogg
│   │   │   │   │   │   ├── UnsafeSpeeds.ogg
│   │   │   │   │   │   └── WormholeToSomewhere.ogg
│   │   │   │   │   └── text/
│   │   │   │   │       ├── BuildNumber.txt
│   │   │   │   │       ├── ExploreLevels.txt
│   │   │   │   │       ├── InfiniteLevels.txt
│   │   │   │   │       ├── MapContents.json
│   │   │   │   │       ├── content/
│   │   │   │   │       │   ├── autoContent.json
│   │   │   │   │       │   ├── content.json
│   │   │   │   │       │   ├── explore/
│   │   │   │   │       │   │   ├── childAchieve.json
│   │   │   │   │       │   │   ├── dialog/
│   │   │   │   │       │   │   │   ├── gentleman.json
│   │   │   │   │       │   │   │   └── river.json
│   │   │   │   │       │   │   ├── early0.json
│   │   │   │   │       │   │   ├── earlyAchieve.json
│   │   │   │   │       │   │   ├── homeAchieve.json
│   │   │   │   │       │   │   ├── homeAchieve1.json
│   │   │   │   │       │   │   ├── homeImage.json
│   │   │   │   │       │   │   ├── homewards0.json
│   │   │   │   │       │   │   ├── homewards1.json
│   │   │   │   │       │   │   ├── onwards0.json
│   │   │   │   │       │   │   ├── onwards1.json
│   │   │   │   │       │   │   └── onwardsAchieve.json
│   │   │   │   │       │   ├── infinite/
│   │   │   │   │       │   │   └── infiniteAchieve.json
│   │   │   │   │       │   └── localContent.json
│   │   │   │   │       ├── model/
│   │   │   │   │       │   ├── BoxInside.simple
│   │   │   │   │       │   ├── BoxLid.simple
│   │   │   │   │       │   ├── CandyCorn.3ds
│   │   │   │   │       │   ├── CandyCorn.simple
│   │   │   │   │       │   ├── Car.simple
│   │   │   │   │       │   ├── CarBackPanel.simple
│   │   │   │   │       │   ├── CarInsideRings.simple
│   │   │   │   │       │   ├── CarOutsideRings.simple
│   │   │   │   │       │   ├── CarTape.simple
│   │   │   │   │       │   ├── EasterEgg.simple
│   │   │   │   │       │   ├── OpenBox.simple
│   │   │   │   │       │   ├── Snowflake.3ds
│   │   │   │   │       │   └── Snowflake.simple
│   │   │   │   │       └── wall/
│   │   │   │   │           ├── Affliction.txt
│   │   │   │   │           └── TellAFriend.txt
│   │   │   │   ├── shuttledeck/
│   │   │   │   │   └── index.html
│   │   │   │   ├── sleepingbeauty/
│   │   │   │   │   ├── .gitignore
│   │   │   │   │   ├── Metrickal-Regular.otf
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── app.css
│   │   │   │   │   ├── app.js
│   │   │   │   │   ├── index.html
│   │   │   │   │   ├── rollup.config.js
│   │   │   │   │   └── src/
│   │   │   │   │       ├── app.rollup.js
│   │   │   │   │       ├── css/
│   │   │   │   │       │   ├── app.less
│   │   │   │   │       │   ├── combat.less
│   │   │   │   │       │   ├── intro.less
│   │   │   │   │       │   ├── log.less
│   │   │   │   │       │   ├── map.less
│   │   │   │   │       │   └── status.less
│   │   │   │   │       ├── js/
│   │   │   │   │       │   ├── ai.js
│   │   │   │   │       │   ├── app.js
│   │   │   │   │       │   ├── being/
│   │   │   │   │       │   │   ├── being.js
│   │   │   │   │       │   │   ├── beings.js
│   │   │   │   │       │   │   ├── inventory.js
│   │   │   │   │       │   │   └── pc.js
│   │   │   │   │       │   ├── combat/
│   │   │   │   │       │   │   ├── animation.js
│   │   │   │   │       │   │   ├── board.js
│   │   │   │   │       │   │   ├── combat.js
│   │   │   │   │       │   │   └── types.js
│   │   │   │   │       │   ├── conf.js
│   │   │   │   │       │   ├── entity.js
│   │   │   │   │       │   ├── item/
│   │   │   │   │       │   │   ├── item.js
│   │   │   │   │       │   │   └── items.js
│   │   │   │   │       │   ├── level/
│   │   │   │   │       │   │   ├── cells.js
│   │   │   │   │       │   │   ├── decorator.js
│   │   │   │   │       │   │   ├── generator.js
│   │   │   │   │       │   │   ├── level.js
│   │   │   │   │       │   │   └── room.js
│   │   │   │   │       │   ├── rules.js
│   │   │   │   │       │   ├── ui/
│   │   │   │   │       │   │   ├── choice.js
│   │   │   │   │       │   │   ├── combat.js
│   │   │   │   │       │   │   ├── intro/
│   │   │   │   │       │   │   │   ├── bottom.js
│   │   │   │   │       │   │   │   ├── funfact.js
│   │   │   │   │       │   │   │   ├── intro.js
│   │   │   │   │       │   │   │   ├── text.js
│   │   │   │   │       │   │   │   ├── title.js
│   │   │   │   │       │   │   │   └── tower.js
│   │   │   │   │       │   │   ├── log.js
│   │   │   │   │       │   │   ├── map/
│   │   │   │   │       │   │   │   ├── debug.js
│   │   │   │   │       │   │   │   ├── map.js
│   │   │   │   │       │   │   │   └── memory.js
│   │   │   │   │       │   │   └── status.js
│   │   │   │   │       │   └── util/
│   │   │   │   │       │       ├── actors.js
│   │   │   │   │       │       ├── factory.js
│   │   │   │   │       │       ├── keyboard.js
│   │   │   │   │       │       ├── pubsub.js
│   │   │   │   │       │       └── xy.js
│   │   │   │   │       └── polyfills/
│   │   │   │   │           ├── array.from.js
│   │   │   │   │           ├── array.includes.js
│   │   │   │   │           ├── classList.js
│   │   │   │   │           ├── object.assign.js
│   │   │   │   │           └── promise.js
│   │   │   │   ├── slope/
│   │   │   │   │   ├── Build/
│   │   │   │   │   │   ├── slope.json
│   │   │   │   │   │   ├── slope_data.unityweb
│   │   │   │   │   │   ├── slope_framework.unityweb
│   │   │   │   │   │   ├── slope_memory.unityweb
│   │   │   │   │   │   ├── slope_wasmcode.unityweb
│   │   │   │   │   │   └── slope_wasmframework.unityweb
│   │   │   │   │   ├── TemplateData/
│   │   │   │   │   │   ├── UnityProgress.js
│   │   │   │   │   │   ├── style.css
│   │   │   │   │   │   └── unityloader41.js
│   │   │   │   │   └── index.html
│   │   │   │   ├── snake/
│   │   │   │   │   ├── assets/
│   │   │   │   │   │   ├── css.css
│   │   │   │   │   │   ├── m_aLUfP.js
│   │   │   │   │   │   ├── m_aa.js
│   │   │   │   │   │   └── m_jsa.js
│   │   │   │   │   ├── index.html
│   │   │   │   │   └── inframe.html
│   │   │   │   ├── spacecompany/
│   │   │   │   │   ├── .gitignore
│   │   │   │   │   ├── Gruntfile.js
│   │   │   │   │   ├── LICENCE.txt
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── achievements.js
│   │   │   │   │   ├── building.js
│   │   │   │   │   ├── constants.js
│   │   │   │   │   ├── core.js
│   │   │   │   │   ├── data/
│   │   │   │   │   │   ├── achievementsData.js
│   │   │   │   │   │   ├── buildingData.js
│   │   │   │   │   │   ├── interstellarData.js
│   │   │   │   │   │   ├── resourceData.js
│   │   │   │   │   │   ├── splashTextData.js
│   │   │   │   │   │   ├── starData.js
│   │   │   │   │   │   ├── stargazeData.js
│   │   │   │   │   │   └── techData.js
│   │   │   │   │   ├── fonts/
│   │   │   │   │   │   └── aspace_demo.otf
│   │   │   │   │   ├── game.js
│   │   │   │   │   ├── index.html
│   │   │   │   │   ├── interstellar.js
│   │   │   │   │   ├── notification.js
│   │   │   │   │   ├── resource.js
│   │   │   │   │   ├── resources.js
│   │   │   │   │   ├── rocket.js
│   │   │   │   │   ├── rocketParts.js
│   │   │   │   │   ├── saving.js
│   │   │   │   │   ├── science.js
│   │   │   │   │   ├── settings.js
│   │   │   │   │   ├── solCenter.js
│   │   │   │   │   ├── solarSystem.js
│   │   │   │   │   ├── star.js
│   │   │   │   │   ├── stargaze.js
│   │   │   │   │   ├── statistics.js
│   │   │   │   │   ├── style.css
│   │   │   │   │   ├── tech.js
│   │   │   │   │   ├── ui/
│   │   │   │   │   │   ├── achievementUI.js
│   │   │   │   │   │   ├── databoundElement.js
│   │   │   │   │   │   ├── gameTabUI.js
│   │   │   │   │   │   ├── interstellarUI.js
│   │   │   │   │   │   ├── legacyUI.js
│   │   │   │   │   │   ├── resourceObserver.js
│   │   │   │   │   │   ├── resourceUI.js
│   │   │   │   │   │   ├── stargazeUI.js
│   │   │   │   │   │   ├── statisticUI.js
│   │   │   │   │   │   └── techUI.js
│   │   │   │   │   ├── updates.js
│   │   │   │   │   ├── utils.js
│   │   │   │   │   ├── variable.js
│   │   │   │   │   └── wonder.js
│   │   │   │   ├── spacegarden/
│   │   │   │   │   └── index.html
│   │   │   │   ├── spacehuggers/
│   │   │   │   │   └── index.html
│   │   │   │   ├── stumble.html
│   │   │   │   ├── templerun2/
│   │   │   │   │   └── index.html
│   │   │   │   ├── tetris/
│   │   │   │   │   ├── Background.js
│   │   │   │   │   ├── Block.js
│   │   │   │   │   ├── Button.js
│   │   │   │   │   ├── ControlGroup.js
│   │   │   │   │   ├── Game.js
│   │   │   │   │   ├── Game_Logic.js
│   │   │   │   │   ├── PreviewGroup.js
│   │   │   │   │   ├── RandomBag.js
│   │   │   │   │   ├── ScoreTracker.js
│   │   │   │   │   ├── Shapes.js
│   │   │   │   │   ├── TtyBlock.js
│   │   │   │   │   ├── WallKicks.js
│   │   │   │   │   ├── about.html
│   │   │   │   │   ├── controls.html
│   │   │   │   │   ├── controls.js
│   │   │   │   │   ├── controlsStyles.css
│   │   │   │   │   ├── cookie.js
│   │   │   │   │   ├── gameControls.js
│   │   │   │   │   ├── highScores.html
│   │   │   │   │   ├── highScores.js
│   │   │   │   │   ├── index.html
│   │   │   │   │   ├── input.js
│   │   │   │   │   ├── jawsjs.js
│   │   │   │   │   ├── json-minified.js
│   │   │   │   │   ├── scoreScreen.html
│   │   │   │   │   ├── scoreScreen.js
│   │   │   │   │   ├── styles.css
│   │   │   │   │   └── tetris.js
│   │   │   │   ├── themazeofspacegoblins/
│   │   │   │   │   └── index.html
│   │   │   │   ├── towermaster/
│   │   │   │   │   ├── .babelrc
│   │   │   │   │   ├── .gitignore
│   │   │   │   │   ├── LICENSE
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── README.zh-CN.md
│   │   │   │   │   ├── assets/
│   │   │   │   │   │   ├── bgm.ogg
│   │   │   │   │   │   ├── drop-perfect.ogg
│   │   │   │   │   │   ├── drop.ogg
│   │   │   │   │   │   ├── game-over.ogg
│   │   │   │   │   │   └── rotate.ogg
│   │   │   │   │   ├── dist/
│   │   │   │   │   │   └── main.js
│   │   │   │   │   ├── index.html
│   │   │   │   │   ├── index.js
│   │   │   │   │   └── src/
│   │   │   │   │       ├── animateFuncs.js
│   │   │   │   │       ├── background.js
│   │   │   │   │       ├── block.js
│   │   │   │   │       ├── cloud.js
│   │   │   │   │       ├── constant.js
│   │   │   │   │       ├── flight.js
│   │   │   │   │       ├── hook.js
│   │   │   │   │       ├── index.js
│   │   │   │   │       ├── line.js
│   │   │   │   │       ├── tutorial.js
│   │   │   │   │       └── utils.js
│   │   │   │   ├── trimps/
│   │   │   │   │   ├── Playfab/
│   │   │   │   │   │   ├── LICENSE
│   │   │   │   │   │   ├── PlayFabSDK/
│   │   │   │   │   │   │   └── PlayFabClientApi.js
│   │   │   │   │   │   ├── README.md
│   │   │   │   │   │   ├── _arcconfig
│   │   │   │   │   │   ├── _gitignore
│   │   │   │   │   │   ├── code.jquery.com/
│   │   │   │   │   │   │   └── qunit/
│   │   │   │   │   │   │       ├── qunit-1.19.0.css
│   │   │   │   │   │   │       └── qunit-1.19.0.js
│   │   │   │   │   │   └── licenses/
│   │   │   │   │   │       ├── jquery-license.txt
│   │   │   │   │   │       └── qunit-license.txt
│   │   │   │   │   ├── config.js
│   │   │   │   │   ├── css/
│   │   │   │   │   │   ├── bootstrap.css
│   │   │   │   │   │   ├── dark.css
│   │   │   │   │   │   ├── gradient.css
│   │   │   │   │   │   ├── style.css
│   │   │   │   │   │   └── styleBak.css
│   │   │   │   │   ├── fonts/
│   │   │   │   │   │   └── icomoon/
│   │   │   │   │   │       └── style.css
│   │   │   │   │   ├── index.html
│   │   │   │   │   ├── license.txt
│   │   │   │   │   ├── lz-string.js
│   │   │   │   │   ├── main.js
│   │   │   │   │   ├── objects.js
│   │   │   │   │   ├── playerSpire.js
│   │   │   │   │   └── updates.js
│   │   │   │   ├── underrun/
│   │   │   │   │   └── index.html
│   │   │   │   ├── vex3/
│   │   │   │   │   ├── assets/
│   │   │   │   │   │   ├── css/
│   │   │   │   │   │   │   └── app.css
│   │   │   │   │   │   ├── filters/
│   │   │   │   │   │   │   ├── BlurX.js
│   │   │   │   │   │   │   ├── BlurY.js
│   │   │   │   │   │   │   ├── ColorMatrixFilter.js
│   │   │   │   │   │   │   └── Gray.js
│   │   │   │   │   │   ├── images/
│   │   │   │   │   │   │   └── fonts/
│   │   │   │   │   │   │       ├── grob24.fnt
│   │   │   │   │   │   │       └── grobred32.fnt
│   │   │   │   │   │   └── sounds/
│   │   │   │   │   │       ├── achievement-unlocked.ogg
│   │   │   │   │   │       ├── block-destroy.ogg
│   │   │   │   │   │       ├── bounce1.ogg
│   │   │   │   │   │       ├── button-click.ogg
│   │   │   │   │   │       ├── cannon-enter.ogg
│   │   │   │   │   │       ├── cannon-fire.ogg
│   │   │   │   │   │       ├── connect-hang.ogg
│   │   │   │   │   │       ├── connect.ogg
│   │   │   │   │   │       ├── death2.ogg
│   │   │   │   │   │       ├── ding.ogg
│   │   │   │   │   │       ├── downgrade.ogg
│   │   │   │   │   │       ├── electricity.ogg
│   │   │   │   │   │       ├── fall.ogg
│   │   │   │   │   │       ├── falling-block.ogg
│   │   │   │   │   │       ├── footstep.ogg
│   │   │   │   │   │       ├── glass-smash.ogg
│   │   │   │   │   │       ├── kick-block.ogg
│   │   │   │   │   │       ├── land.ogg
│   │   │   │   │   │       ├── laser-fire.ogg
│   │   │   │   │   │       ├── menu-song.ogg
│   │   │   │   │   │       ├── pole-swing.ogg
│   │   │   │   │   │       ├── pole-woosh.ogg
│   │   │   │   │   │       ├── slide.ogg
│   │   │   │   │   │       ├── splash1.ogg
│   │   │   │   │   │       ├── star-pickup.ogg
│   │   │   │   │   │       ├── vex-song-1.ogg
│   │   │   │   │   │       ├── vex-song-2.ogg
│   │   │   │   │   │       ├── vex-song-3.ogg
│   │   │   │   │   │       ├── vex-song-4.ogg
│   │   │   │   │   │       ├── wall-slide.ogg
│   │   │   │   │   │       └── zipline-full.ogg
│   │   │   │   │   ├── cdn.fbrq/
│   │   │   │   │   │   └── @orange-games/
│   │   │   │   │   │       └── splash/
│   │   │   │   │   │           └── assets/
│   │   │   │   │   │               ├── jsonnope/
│   │   │   │   │   │               │   ├── contracted.json
│   │   │   │   │   │               │   ├── domains.json
│   │   │   │   │   │               │   ├── games.json
│   │   │   │   │   │               │   ├── internal.json
│   │   │   │   │   │               │   ├── sitelock.json
│   │   │   │   │   │               │   └── special.json
│   │   │   │   │   │               └── spine/
│   │   │   │   │   │                   ├── kizi_skeleton.atlas
│   │   │   │   │   │                   └── kizi_skeleton.json
│   │   │   │   │   ├── index.html
│   │   │   │   │   ├── script.js
│   │   │   │   │   └── version.js
│   │   │   │   ├── vex4/
│   │   │   │   │   ├── assets/
│   │   │   │   │   │   ├── atlas/
│   │   │   │   │   │   │   ├── atlas_gameplay.json
│   │   │   │   │   │   │   ├── atlas_portals.json
│   │   │   │   │   │   │   ├── atlas_transition.json
│   │   │   │   │   │   │   ├── atlas_ui_act_select.json
│   │   │   │   │   │   │   ├── atlas_ui_gameplay.json
│   │   │   │   │   │   │   ├── atlas_ui_level_complete.json
│   │   │   │   │   │   │   ├── atlas_ui_main_menu.json
│   │   │   │   │   │   │   ├── atlas_ui_options.json
│   │   │   │   │   │   │   ├── atlas_ui_pause.json
│   │   │   │   │   │   │   ├── atlas_ui_trophies.json
│   │   │   │   │   │   │   └── checkpoint.json
│   │   │   │   │   │   ├── balance/
│   │   │   │   │   │   │   ├── levels/
│   │   │   │   │   │   │   │   ├── challenge.json
│   │   │   │   │   │   │   │   ├── hubArrows.json
│   │   │   │   │   │   │   │   ├── level01.json
│   │   │   │   │   │   │   │   ├── level01hard.json
│   │   │   │   │   │   │   │   ├── level02.json
│   │   │   │   │   │   │   │   ├── level02hard.json
│   │   │   │   │   │   │   │   ├── level03.json
│   │   │   │   │   │   │   │   ├── level03hard.json
│   │   │   │   │   │   │   │   ├── level04.json
│   │   │   │   │   │   │   │   ├── level04hard.json
│   │   │   │   │   │   │   │   ├── level05.json
│   │   │   │   │   │   │   │   ├── level05hard.json
│   │   │   │   │   │   │   │   ├── level06.json
│   │   │   │   │   │   │   │   ├── level06hard.json
│   │   │   │   │   │   │   │   ├── level07.json
│   │   │   │   │   │   │   │   ├── level07hard.json
│   │   │   │   │   │   │   │   ├── level08.json
│   │   │   │   │   │   │   │   ├── level08hard.json
│   │   │   │   │   │   │   │   ├── level09.json
│   │   │   │   │   │   │   │   ├── level09hard.json
│   │   │   │   │   │   │   │   ├── level10.json
│   │   │   │   │   │   │   │   ├── levelEdit.json
│   │   │   │   │   │   │   │   └── levelhub.json
│   │   │   │   │   │   │   ├── levelsConfig.json
│   │   │   │   │   │   │   ├── localization.json
│   │   │   │   │   │   │   └── objectConfig.json
│   │   │   │   │   │   ├── coco/
│   │   │   │   │   │   │   ├── transition/
│   │   │   │   │   │   │   │   ├── transition_in.json
│   │   │   │   │   │   │   │   ├── transition_out.json
│   │   │   │   │   │   │   │   └── transition_stand.json
│   │   │   │   │   │   │   └── transition.json
│   │   │   │   │   │   ├── css/
│   │   │   │   │   │   │   ├── app.css
│   │   │   │   │   │   │   └── milocha.css
│   │   │   │   │   │   ├── filters/
│   │   │   │   │   │   │   ├── BlurX.js
│   │   │   │   │   │   │   ├── BlurY.js
│   │   │   │   │   │   │   ├── ColorMatrixFilter.js
│   │   │   │   │   │   │   └── Gray.js
│   │   │   │   │   │   ├── fonts/
│   │   │   │   │   │   │   └── grobred32.fnt
│   │   │   │   │   │   ├── images/
│   │   │   │   │   │   │   └── player/
│   │   │   │   │   │   │       ├── player-crouch.json
│   │   │   │   │   │   │       ├── player-fall-floor.json
│   │   │   │   │   │   │       ├── player-jump-down.json
│   │   │   │   │   │   │       ├── player-jump.json
│   │   │   │   │   │   │       ├── player-run.json
│   │   │   │   │   │   │       ├── player-stop-swim.json
│   │   │   │   │   │   │       └── player-swim-top.json
│   │   │   │   │   │   ├── sounds/
│   │   │   │   │   │   │   ├── achievement-unlocked.ogg
│   │   │   │   │   │   │   ├── block-destroy.ogg
│   │   │   │   │   │   │   ├── bounce1.ogg
│   │   │   │   │   │   │   ├── button-click.ogg
│   │   │   │   │   │   │   ├── cannon-enter.ogg
│   │   │   │   │   │   │   ├── cannon-fire.ogg
│   │   │   │   │   │   │   ├── connect-hang.ogg
│   │   │   │   │   │   │   ├── connect.ogg
│   │   │   │   │   │   │   ├── death2.ogg
│   │   │   │   │   │   │   ├── ding.ogg
│   │   │   │   │   │   │   ├── downgrade.ogg
│   │   │   │   │   │   │   ├── electricity.ogg
│   │   │   │   │   │   │   ├── fall.ogg
│   │   │   │   │   │   │   ├── falling-block.ogg
│   │   │   │   │   │   │   ├── footstep.ogg
│   │   │   │   │   │   │   ├── glass-smash.ogg
│   │   │   │   │   │   │   ├── kick-block.ogg
│   │   │   │   │   │   │   ├── land.ogg
│   │   │   │   │   │   │   ├── laser-fire.ogg
│   │   │   │   │   │   │   ├── menu-song.ogg
│   │   │   │   │   │   │   ├── pole-swing.ogg
│   │   │   │   │   │   │   ├── pole-woosh.ogg
│   │   │   │   │   │   │   ├── slide.ogg
│   │   │   │   │   │   │   ├── splash1.ogg
│   │   │   │   │   │   │   ├── star-pickup.ogg
│   │   │   │   │   │   │   ├── vex-song-1.ogg
│   │   │   │   │   │   │   ├── vex-song-10.ogg
│   │   │   │   │   │   │   ├── vex-song-11.ogg
│   │   │   │   │   │   │   ├── vex-song-12.ogg
│   │   │   │   │   │   │   ├── vex-song-13.ogg
│   │   │   │   │   │   │   ├── vex-song-14.ogg
│   │   │   │   │   │   │   ├── vex-song-2.ogg
│   │   │   │   │   │   │   ├── vex-song-3.ogg
│   │   │   │   │   │   │   ├── vex-song-4.ogg
│   │   │   │   │   │   │   ├── vex-song-5.ogg
│   │   │   │   │   │   │   ├── vex-song-6.ogg
│   │   │   │   │   │   │   ├── vex-song-7.ogg
│   │   │   │   │   │   │   ├── vex-song-8.ogg
│   │   │   │   │   │   │   ├── vex-song-9.ogg
│   │   │   │   │   │   │   ├── wall-slide.ogg
│   │   │   │   │   │   │   └── zipline-full.ogg
│   │   │   │   │   │   └── ui/
│   │   │   │   │   │       ├── ui_act_select.json
│   │   │   │   │   │       ├── ui_gameplay.json
│   │   │   │   │   │       ├── ui_level_complete.json
│   │   │   │   │   │       ├── ui_main_menu.json
│   │   │   │   │   │       ├── ui_options.json
│   │   │   │   │   │       ├── ui_pause.json
│   │   │   │   │   │       └── ui_trophies.json
│   │   │   │   │   ├── cdn.fbrq/
│   │   │   │   │   │   └── @orange-games/
│   │   │   │   │   │       └── splash/
│   │   │   │   │   │           └── assets/
│   │   │   │   │   │               ├── jsonnope/
│   │   │   │   │   │               │   ├── contracted.json
│   │   │   │   │   │               │   ├── domains.json
│   │   │   │   │   │               │   ├── games.json
│   │   │   │   │   │               │   ├── internal.json
│   │   │   │   │   │               │   ├── sitelock.json
│   │   │   │   │   │               │   └── special.json
│   │   │   │   │   │               └── spine/
│   │   │   │   │   │                   ├── kizi_skeleton.atlas
│   │   │   │   │   │                   └── kizi_skeleton.json
│   │   │   │   │   ├── index.html
│   │   │   │   │   ├── script.js
│   │   │   │   │   └── version.js
│   │   │   │   ├── vex5/
│   │   │   │   │   ├── assets/
│   │   │   │   │   │   ├── atlas/
│   │   │   │   │   │   │   ├── atlas_gameplay.json
│   │   │   │   │   │   │   ├── atlas_portals.json
│   │   │   │   │   │   │   ├── atlas_transition.json
│   │   │   │   │   │   │   ├── atlas_ui_act_select.json
│   │   │   │   │   │   │   ├── atlas_ui_gameplay.json
│   │   │   │   │   │   │   ├── atlas_ui_lvl_complete.json
│   │   │   │   │   │   │   ├── atlas_ui_main_menu.json
│   │   │   │   │   │   │   ├── atlas_ui_options.json
│   │   │   │   │   │   │   ├── atlas_ui_pause.json
│   │   │   │   │   │   │   ├── atlas_ui_trophies.json
│   │   │   │   │   │   │   └── checkpoint.json
│   │   │   │   │   │   ├── balance/
│   │   │   │   │   │   │   ├── levels/
│   │   │   │   │   │   │   │   ├── hubArrows.json
│   │   │   │   │   │   │   │   ├── level01.json
│   │   │   │   │   │   │   │   ├── level01hard.json
│   │   │   │   │   │   │   │   ├── level02.json
│   │   │   │   │   │   │   │   ├── level02hard.json
│   │   │   │   │   │   │   │   ├── level03.json
│   │   │   │   │   │   │   │   ├── level03hard.json
│   │   │   │   │   │   │   │   ├── level04.json
│   │   │   │   │   │   │   │   ├── level04hard.json
│   │   │   │   │   │   │   │   ├── level05.json
│   │   │   │   │   │   │   │   ├── level05hard.json
│   │   │   │   │   │   │   │   ├── level06.json
│   │   │   │   │   │   │   │   ├── level06hard.json
│   │   │   │   │   │   │   │   ├── level07.json
│   │   │   │   │   │   │   │   ├── level07hard.json
│   │   │   │   │   │   │   │   ├── level08.json
│   │   │   │   │   │   │   │   ├── level08hard.json
│   │   │   │   │   │   │   │   ├── level09.json
│   │   │   │   │   │   │   │   ├── level09hard.json
│   │   │   │   │   │   │   │   ├── level10.json
│   │   │   │   │   │   │   │   ├── levelEdit.json
│   │   │   │   │   │   │   │   └── levelhub.json
│   │   │   │   │   │   │   ├── levelsConfig.json
│   │   │   │   │   │   │   ├── localization.json
│   │   │   │   │   │   │   ├── objectConfig.json
│   │   │   │   │   │   │   └── rooms/
│   │   │   │   │   │   │       ├── room01.json
│   │   │   │   │   │   │       ├── room02.json
│   │   │   │   │   │   │       ├── room03.json
│   │   │   │   │   │   │       ├── room04.json
│   │   │   │   │   │   │       ├── room05.json
│   │   │   │   │   │   │       ├── room06.json
│   │   │   │   │   │   │       ├── room07.json
│   │   │   │   │   │   │       ├── room08.json
│   │   │   │   │   │   │       ├── room09.json
│   │   │   │   │   │   │       ├── room10.json
│   │   │   │   │   │   │       ├── room11.json
│   │   │   │   │   │   │       ├── room12.json
│   │   │   │   │   │   │       ├── room13.json
│   │   │   │   │   │   │       ├── room14.json
│   │   │   │   │   │   │       ├── room15.json
│   │   │   │   │   │   │       ├── room16.json
│   │   │   │   │   │   │       ├── room17.json
│   │   │   │   │   │   │       ├── room18.json
│   │   │   │   │   │   │       ├── room19.json
│   │   │   │   │   │   │       ├── room20.json
│   │   │   │   │   │   │       ├── room21.json
│   │   │   │   │   │   │       ├── room22.json
│   │   │   │   │   │   │       ├── room24.json
│   │   │   │   │   │   │       ├── room25.json
│   │   │   │   │   │   │       ├── room26.json
│   │   │   │   │   │   │       ├── room27.json
│   │   │   │   │   │   │       ├── room28.json
│   │   │   │   │   │   │       ├── room29.json
│   │   │   │   │   │   │       └── room30.json
│   │   │   │   │   │   ├── coco/
│   │   │   │   │   │   │   ├── transition/
│   │   │   │   │   │   │   │   ├── transition_in.json
│   │   │   │   │   │   │   │   ├── transition_out.json
│   │   │   │   │   │   │   │   └── transition_stand.json
│   │   │   │   │   │   │   └── transition.json
│   │   │   │   │   │   ├── css/
│   │   │   │   │   │   │   ├── app.css
│   │   │   │   │   │   │   └── milocha.css
│   │   │   │   │   │   ├── filters/
│   │   │   │   │   │   │   ├── BlurX.js
│   │   │   │   │   │   │   ├── BlurY.js
│   │   │   │   │   │   │   ├── ColorMatrixFilter.js
│   │   │   │   │   │   │   └── Gray.js
│   │   │   │   │   │   ├── images/
│   │   │   │   │   │   │   ├── fonts/
│   │   │   │   │   │   │   │   ├── grob24.fnt
│   │   │   │   │   │   │   │   └── grobred32.fnt
│   │   │   │   │   │   │   └── player/
│   │   │   │   │   │   │       ├── player-crouch.json
│   │   │   │   │   │   │       ├── player-fall-floor.json
│   │   │   │   │   │   │       ├── player-jump-down.json
│   │   │   │   │   │   │       ├── player-jump.json
│   │   │   │   │   │   │       ├── player-run.json
│   │   │   │   │   │   │       ├── player-stop-swim.json
│   │   │   │   │   │   │       ├── player-swim-top.json
│   │   │   │   │   │   │       └── player_rope.json
│   │   │   │   │   │   ├── sounds/
│   │   │   │   │   │   │   ├── achievementUnlocked.ogg
│   │   │   │   │   │   │   ├── blockDestroy.ogg
│   │   │   │   │   │   │   ├── bounce1.ogg
│   │   │   │   │   │   │   ├── buttonClick.ogg
│   │   │   │   │   │   │   ├── cannonEnter.ogg
│   │   │   │   │   │   │   ├── cannonFire.ogg
│   │   │   │   │   │   │   ├── connect.ogg
│   │   │   │   │   │   │   ├── connectHang.ogg
│   │   │   │   │   │   │   ├── death1.ogg
│   │   │   │   │   │   │   ├── death2.ogg
│   │   │   │   │   │   │   ├── ding.ogg
│   │   │   │   │   │   │   ├── downgrade.ogg
│   │   │   │   │   │   │   ├── electricity.ogg
│   │   │   │   │   │   │   ├── fall.ogg
│   │   │   │   │   │   │   ├── fallingBlock.ogg
│   │   │   │   │   │   │   ├── footstep.ogg
│   │   │   │   │   │   │   ├── glassSmash.ogg
│   │   │   │   │   │   │   ├── kickBlock.ogg
│   │   │   │   │   │   │   ├── land.ogg
│   │   │   │   │   │   │   ├── laserFire.ogg
│   │   │   │   │   │   │   ├── menuSong.ogg
│   │   │   │   │   │   │   ├── poleSwing.ogg
│   │   │   │   │   │   │   ├── poleWoosh.ogg
│   │   │   │   │   │   │   ├── slide.ogg
│   │   │   │   │   │   │   ├── splash1.ogg
│   │   │   │   │   │   │   ├── starPickup.ogg
│   │   │   │   │   │   │   ├── vexSong1.ogg
│   │   │   │   │   │   │   ├── vexSong10.ogg
│   │   │   │   │   │   │   ├── vexSong11.ogg
│   │   │   │   │   │   │   ├── vexSong12.ogg
│   │   │   │   │   │   │   ├── vexSong13.ogg
│   │   │   │   │   │   │   ├── vexSong14.ogg
│   │   │   │   │   │   │   ├── vexSong2.ogg
│   │   │   │   │   │   │   ├── vexSong3.ogg
│   │   │   │   │   │   │   ├── vexSong4.ogg
│   │   │   │   │   │   │   ├── vexSong5.ogg
│   │   │   │   │   │   │   ├── vexSong6.ogg
│   │   │   │   │   │   │   ├── vexSong7.ogg
│   │   │   │   │   │   │   ├── vexSong8.ogg
│   │   │   │   │   │   │   ├── vexSong9.ogg
│   │   │   │   │   │   │   ├── wallSlide.ogg
│   │   │   │   │   │   │   └── ziplineFull.ogg
│   │   │   │   │   │   └── ui/
│   │   │   │   │   │       ├── ui_act_select.json
│   │   │   │   │   │       ├── ui_gameplay.json
│   │   │   │   │   │       ├── ui_lvl_complete.json
│   │   │   │   │   │       ├── ui_main_menu.json
│   │   │   │   │   │       ├── ui_options.json
│   │   │   │   │   │       ├── ui_pause.json
│   │   │   │   │   │       └── ui_trophies.json
│   │   │   │   │   ├── index.html
│   │   │   │   │   ├── json/
│   │   │   │   │   │   ├── contracted.json
│   │   │   │   │   │   ├── domains.json
│   │   │   │   │   │   ├── internal.json
│   │   │   │   │   │   ├── sitelock.json
│   │   │   │   │   │   └── special.json
│   │   │   │   │   ├── script.js
│   │   │   │   │   └── version.js
│   │   │   │   └── xx142-b2exe/
│   │   │   │       └── index.html
│   │   │   └── rarch/
│   │   │       ├── assets/
│   │   │       │   ├── base.css
│   │   │       │   ├── base.js
│   │   │       │   ├── charToCodeMap.js
│   │   │       │   ├── controller_layout.xcf
│   │   │       │   ├── info.json
│   │   │       │   ├── jswindow.css
│   │   │       │   └── jswindow.js
│   │   │       ├── genesis_plus_gx_libretro.js
│   │   │       ├── genesis_plus_gx_libretro.wasm
│   │   │       ├── index.html
│   │   │       ├── info/
│   │   │       │   ├── cookiepolicy.html
│   │   │       │   ├── index.html
│   │   │       │   ├── privacy.html
│   │   │       │   └── tos.html
│   │   │       ├── mgba_libretro.js
│   │   │       ├── mgba_libretro.wasm
│   │   │       ├── mupen64plus_next_libretro.js
│   │   │       ├── mupen64plus_next_libretro.wasm
│   │   │       ├── nestopia_libretro.js
│   │   │       ├── nestopia_libretro.wasm
│   │   │       ├── snes9x_libretro.js
│   │   │       ├── snes9x_libretro.wasm
│   │   │       └── uauth/
│   │   │           └── uauth.js
│   │   ├── index.html
│   │   ├── readme.md
│   │   └── search.js
│   ├── gams.html
│   ├── go.html
│   ├── index.html
│   ├── js/
│   │   ├── all.js
│   │   ├── changeSrc.js
│   │   ├── frame.js
│   │   ├── gams.js
│   │   ├── go.js
│   │   ├── load.js
│   │   ├── settings.js
│   │   ├── terms.js
│   │   ├── tos.js
│   │   ├── ub/
│   │   │   └── nav.js
│   │   └── uv.js
│   ├── main.html
│   ├── p.html
│   ├── settings.html
│   ├── sw.js
│   ├── t.html
│   └── uv/
│       ├── uv.bundle.js
│       ├── uv.config.js
│       ├── uv.handler.js
│       ├── uv.index.js
│       └── uv.sw.js
├── package.json
├── render.yaml
├── replit.nix
└── vercel.json
Download .txt
Showing preview only (918K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (9919 symbols across 175 files)

FILE: main/arc-sw.js
  function n (line 1) | function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{...

FILE: main/gams/compiler.py
  function st (line 81) | def st(x):

FILE: main/gams/gfiles/flash/ruffle.js
  function n (line 1) | function n(r){var i=t[r];if(void 0!==i)return i.exports;var o=t[r]={expo...
  function i (line 1) | function i(e){return r[e]}
  function a (line 1) | function a(e){const t=i(e);return function(e){e<36||(r[e]=o,o=e)}(e),t}
  function u (line 1) | function u(){return null!==c&&c.buffer===t.memory.buffer||(c=new Uint8Ar...
  function l (line 1) | function l(e,t){return s.decode(u().subarray(e,e+t))}
  function _ (line 1) | function _(e){o===r.length&&r.push(r.length+1);const t=o;return o=r[t],r...
  function g (line 1) | function g(e,t,n){if(void 0===n){const n=b.encode(e),r=t(n.length);retur...
  function h (line 1) | function h(){return null!==w&&w.buffer===t.memory.buffer||(w=new Int32Ar...
  function m (line 1) | function m(e){return null==e}
  function y (line 1) | function y(e){const t=typeof e;if("number"==t||"boolean"==t||null==e)ret...
  function v (line 1) | function v(e,n,r,i){const o={a:e,b:n,cnt:1,dtor:r},a=(...e)=>{o.cnt++;co...
  function x (line 1) | function x(e,n){t._dyn_core__ops__function__FnMut_____Output___R_as_wasm...
  function k (line 1) | function k(e,n,r){t._dyn_core__ops__function__FnMut__A____Output___R_as_...
  function E (line 1) | function E(e,n,r){t._dyn_core__ops__function__FnMut__A____Output___R_as_...
  function A (line 1) | function A(e,n,r){t._dyn_core__ops__function__FnMut__A____Output___R_as_...
  function S (line 1) | function S(e,n,r){t._dyn_core__ops__function__FnMut__A____Output___R_as_...
  function C (line 1) | function C(e,n,r){t._dyn_core__ops__function__FnMut__A____Output___R_as_...
  function I (line 1) | function I(e,n,r){t._dyn_core__ops__function__FnMut__A____Output___R_as_...
  function R (line 1) | function R(e,n,r){t._dyn_core__ops__function__FnMut__A____Output___R_as_...
  function F (line 1) | function F(e,n,r){t._dyn_core__ops__function__FnMut__A____Output___R_as_...
  function P (line 1) | function P(e,n){return(null!==T&&T.buffer===t.memory.buffer||(T=new Floa...
  function O (line 1) | function O(e,n){try{return e.apply(this,n)}catch(e){t.__wbindgen_exn_sto...
  function L (line 1) | function L(e){if(1==M)throw new Error("out of js stack");return r[--M]=e,M}
  function D (line 1) | function D(e,t){return u().subarray(e/1,e/1+t)}
  function U (line 1) | function U(e,n){return(null!==N&&N.buffer===t.memory.buffer||(N=new Uint...
  class B (line 1) | class B{static __wrap(e){const t=Object.create(B.prototype);return t.ptr...
    method __wrap (line 1) | static __wrap(e){const t=Object.create(B.prototype);return t.ptr=e,t}
    method __destroy_into_raw (line 1) | __destroy_into_raw(){const e=this.ptr;return this.ptr=0,e}
    method free (line 1) | free(){const e=this.__destroy_into_raw();t.__wbg_ruffle_free(e)}
    method constructor (line 1) | constructor(e,n,i){try{return a(t.ruffle_new(_(e),_(n),L(i)))}finally{...
    method stream_from (line 1) | stream_from(e,n){try{var i=g(e,t.__wbindgen_malloc,t.__wbindgen_reallo...
    method load_data (line 1) | load_data(e,n){try{t.ruffle_load_data(this.ptr,_(e),L(n))}finally{r[M+...
    method play (line 1) | play(){t.ruffle_play(this.ptr)}
    method pause (line 1) | pause(){t.ruffle_pause(this.ptr)}
    method is_playing (line 1) | is_playing(){return 0!==t.ruffle_is_playing(this.ptr)}
    method prepare_context_menu (line 1) | prepare_context_menu(){return a(t.ruffle_prepare_context_menu(this.ptr))}
    method run_context_menu_callback (line 1) | run_context_menu_callback(e){t.ruffle_run_context_menu_callback(this.p...
    method set_fullscreen (line 1) | set_fullscreen(e){t.ruffle_set_fullscreen(this.ptr,e)}
    method clear_custom_menu_items (line 1) | clear_custom_menu_items(){t.ruffle_clear_custom_menu_items(this.ptr)}
    method destroy (line 1) | destroy(){t.ruffle_destroy(this.ptr)}
    method call_exposed_callback (line 1) | call_exposed_callback(e,n){var r=g(e,t.__wbindgen_malloc,t.__wbindgen_...
    method set_trace_observer (line 1) | set_trace_observer(e){t.ruffle_set_trace_observer(this.ptr,_(e))}
    method audio_context (line 1) | audio_context(){return a(t.ruffle_audio_context(this.ptr))}
  function $ (line 1) | function $(e){const t="function"==typeof Function.prototype.toString?Fun...
  function q (line 1) | function q(e){let t=V;return void 0!==e&&void 0!==e.publicPath&&(t=e.pub...
  function H (line 1) | function H(e){return null==z&&(z=async function(e){return"function"==typ...
  class G (line 1) | class G{constructor(e){if(this.__mimetypes=[],this.__named_mimetypes={},...
    method constructor (line 1) | constructor(e){if(this.__mimetypes=[],this.__named_mimetypes={},e)for(...
    method install (line 1) | install(e){const t=this.__mimetypes.length;this.__mimetypes.push(e),th...
    method item (line 1) | item(e){return this.__mimetypes[e]}
    method namedItem (line 1) | namedItem(e){return this.__named_mimetypes[e]}
    method length (line 1) | get length(){return this.__mimetypes.length}
  method [Symbol.iterator] (line 1) | [Symbol.iterator](){return this.__mimetypes[Symbol.iterator]()}
  class Y (line 1) | class Y extends G{constructor(e,t,n,r){super(r),this.name=e,this.descrip...
    method constructor (line 1) | constructor(e,t,n,r){super(r),this.name=e,this.description=t,this.file...
    method install (line 1) | install(e){super.install(e)}
  method [Symbol.iterator] (line 1) | [Symbol.iterator](){return super[Symbol.iterator]()}
  class J (line 1) | class J{constructor(e){this.__plugins=[],this.__named_plugins={};for(let...
    method constructor (line 1) | constructor(e){this.__plugins=[],this.__named_plugins={};for(let t=0;t...
    method install (line 1) | install(e){const t=this.__plugins.length;this.__plugins.push(e),this._...
    method item (line 1) | item(e){return this.__plugins[e]}
    method namedItem (line 1) | namedItem(e){return this.__named_plugins[e]}
    method length (line 1) | get length(){return this.__plugins.length}
  function K (line 1) | function K(e,t){if(void 0!==Z[e]){if(Z[e].class!==t)throw new Error("Int...
  function se (line 1) | function se(e){if(null==e)return{};e instanceof URLSearchParams||(e=new ...
  class ce (line 1) | class ce extends HTMLElement{constructor(){return super(),this.hasContex...
    method constructor (line 1) | constructor(){return super(),this.hasContextMenu=!1,this.contextMenuFo...
    method readyState (line 1) | get readyState(){return this._readyState}
    method metadata (line 1) | get metadata(){return this._metadata}
    method setupPauseOnTabHidden (line 1) | setupPauseOnTabHidden(){document.addEventListener("visibilitychange",(...
    method connectedCallback (line 1) | connectedCallback(){this.updateStyles()}
    method observedAttributes (line 1) | static get observedAttributes(){return["width","height"]}
    method attributeChangedCallback (line 1) | attributeChangedCallback(e,t,n){"width"!==e&&"height"!==e||this.update...
    method disconnectedCallback (line 1) | disconnectedCallback(){this.destroy()}
    method updateStyles (line 1) | updateStyles(){if(this.dynamicStyles.sheet){if(this.dynamicStyles.shee...
    method isUnusedFallbackObject (line 1) | isUnusedFallbackObject(){let e=this.parentNode;const t=function(e){con...
    method ensureFreshInstance (line 1) | async ensureFreshInstance(e){var t;this.destroy();const n=await H(e).c...
    method destroy (line 1) | destroy(){this.instance&&(this.instance.destroy(),this.instance=null,t...
    method load (line 1) | async load(e){var t,n;let r="";switch(typeof e){case"string":e={url:e}...
    method play (line 1) | play(){this.instance&&(this.instance.play(),this.playButton&&(this.pla...
    method fullscreenEnabled (line 1) | get fullscreenEnabled(){return!(!document.fullscreenEnabled&&!document...
    method isFullscreen (line 1) | get isFullscreen(){return(document.fullscreenElement||document.webkitF...
    method setFullscreen (line 1) | setFullscreen(e){this.fullscreenEnabled&&(e?this.enterFullscreen():thi...
    method enterFullscreen (line 1) | enterFullscreen(){const e={navigationUI:"hide"};this.requestFullscreen...
    method exitFullscreen (line 1) | exitFullscreen(){document.exitFullscreen?document.exitFullscreen():doc...
    method fullScreenChange (line 1) | fullScreenChange(){var e;null===(e=this.instance)||void 0===e||e.set_f...
    method pointerDown (line 1) | pointerDown(e){"touch"!==e.pointerType&&"pen"!==e.pointerType||(this.i...
    method downloadSwf (line 1) | async downloadSwf(){try{if(this.swfUrl){console.log("Downloading SWF: ...
    method contextMenuItems (line 1) | contextMenuItems(){const e=String.fromCharCode(10003),t=[];this.instan...
    method showContextMenu (line 1) | showContextMenu(e){if(e.preventDefault(),!this.hasContextMenu||this.co...
    method hideContextMenu (line 1) | hideContextMenu(){var e;null===(e=this.instance)||void 0===e||e.clear_...
    method pause (line 1) | pause(){this.instance&&(this.instance.pause(),this.playButton&&(this.p...
    method audioState (line 1) | audioState(){if(this.instance){const e=this.instance.audio_context();r...
    method unmuteOverlayClicked (line 1) | unmuteOverlayClicked(){if(this.instance){if("running"!==this.audioStat...
    method unmuteAudioContext (line 1) | unmuteAudioContext(){ae||(navigator.maxTouchPoints<1?ae=!0:this.contai...
    method copyElement (line 1) | copyElement(e){if(e){for(let t=0;t<e.attributes.length;t++){const n=e....
    method htmlDimensionToCssDimension (line 1) | static htmlDimensionToCssDimension(e){if(e){const t=e.match(oe);if(t){...
    method onCallbackAvailable (line 1) | onCallbackAvailable(e){const t=this.instance;this[e]=(...n)=>null==t?v...
    method traceObserver (line 1) | set traceObserver(e){var t;null===(t=this.instance)||void 0===t||t.set...
    method panic (line 1) | panic(e){var t;if(this.panicked)return;if(this.panicked=!0,e instanceo...
    method displayRootMovieDownloadFailedMessage (line 1) | displayRootMovieDownloadFailedMessage(){const e=new URL(this.swfUrl);i...
    method displayUnsupportedMessage (line 1) | displayUnsupportedMessage(){const e=document.createElement("div");e.id...
    method displayMessage (line 1) | displayMessage(e){const t=document.createElement("div");t.id="message_...
    method debugPlayerInfo (line 1) | debugPlayerInfo(){var e,t;return`Allows script access: ${null!==(t=nul...
    method setMetadata (line 1) | setMetadata(e){this._metadata=e,this._readyState=2,this.dispatchEvent(...
    method setIsExtension (line 1) | setIsExtension(e){this.isExtension=e}
  function ue (line 1) | function ue(e,t){switch(e||(e="sameDomain"),e.toLowerCase()){case"always...
  function le (line 1) | function le(e){return null===e||"true"===e.toLowerCase()}
  function _e (line 1) | function _e(e){if(e){let t="";try{t=new URL(e,ie).pathname}catch(e){}if(...
  function fe (line 1) | function fe(e){let t=e.parentElement;for(;null!==t;){switch(t.tagName){c...
  class be (line 1) | class be extends ce{constructor(){super()}connectedCallback(){var e,t,n,...
    method constructor (line 1) | constructor(){super()}
    method connectedCallback (line 1) | connectedCallback(){var e,t,n,r,i,o,a,s,c,u,l,_,f;super.connectedCallb...
    method src (line 1) | get src(){var e;return null===(e=this.attributes.getNamedItem("src"))|...
    method src (line 1) | set src(e){if(null!=e){const t=document.createAttribute("src");t.value...
    method observedAttributes (line 1) | static get observedAttributes(){return["src","width","height"]}
    method attributeChangedCallback (line 1) | attributeChangedCallback(e,t,n){var r;if(super.attributeChangedCallbac...
    method isInterdictable (line 1) | static isInterdictable(e){var t;if(fe(e))return!1;if(!e.getAttribute("...
    method fromNativeEmbedElement (line 1) | static fromNativeEmbedElement(e){const t=K("ruffle-embed",be),n=docume...
  function de (line 1) | function de(e,t,n){t=t.toLowerCase();for(const n in e)if(Object.hasOwnPr...
  function ge (line 1) | function ge(e){var t,n;const r={};for(const i of e.children)if(i instanc...
  class we (line 1) | class we extends ce{constructor(){super(),this.params={}}connectedCallba...
    method constructor (line 1) | constructor(){super(),this.params={}}
    method connectedCallback (line 1) | connectedCallback(){var e;super.connectedCallback(),this.params=ge(thi...
    method debugPlayerInfo (line 1) | debugPlayerInfo(){var e;let t=super.debugPlayerInfo();t+="Player type:...
    method data (line 1) | get data(){return this.getAttribute("data")}
    method data (line 1) | set data(e){if(null!=e){const t=document.createAttribute("data");t.val...
    method isInterdictable (line 1) | static isInterdictable(e){var t,n,r;if(fe(e))return!1;if(e.getElements...
    method fromNativeObjectElement (line 1) | static fromNativeObjectElement(e){const t=K("ruffle-object",we),n=docu...
  function Se (line 1) | function Se(){try{xe=null!=xe?xe:document.getElementsByTagName("object")...
  function Ce (line 1) | function Ce(){Ee=null!=Ee?Ee:document.getElementsByTagName("iframe"),Ae=...
  function Ie (line 1) | async function Ie(e,t){var n;let r;await new Promise((e=>{window.setTime...
  class Re (line 1) | class Re{constructor(e,t,n,r,i){this.major=e,this.minor=t,this.patch=n,t...
    method constructor (line 1) | constructor(e,t,n,r,i){this.major=e,this.minor=t,this.patch=n,this.prI...
    method fromSemver (line 1) | static fromSemver(e){const t=e.split("+"),n=t[0].split("-"),r=n[0].spl...
    method isCompatibleWith (line 1) | isCompatibleWith(e){return 0!==this.major&&this.major===e.major||0===t...
    method hasPrecedenceOver (line 1) | hasPrecedenceOver(e){if(this.major>e.major)return!0;if(this.major<e.ma...
    method isEqual (line 1) | isEqual(e){return this.major===e.major&&this.minor===e.minor&&this.pat...
    method isStableOrCompatiblePrerelease (line 1) | isStableOrCompatiblePrerelease(e){return null==e.prIdent||this.major==...
  class Fe (line 1) | class Fe{constructor(e){this.requirements=e}satisfiedBy(e){for(let t=0;t...
    method constructor (line 1) | constructor(e){this.requirements=e}
    method satisfiedBy (line 1) | satisfiedBy(e){for(let t=0;t<this.requirements.length;t+=1){let n=!0;f...
    method fromRequirementString (line 1) | static fromRequirementString(e){const t=e.split(" ");let n=[];const r=...
  class Te (line 1) | class Te{constructor(e){this.sources={},this.config={},this.invoked=!1,t...
    method constructor (line 1) | constructor(e){this.sources={},this.config={},this.invoked=!1,this.new...
    method version (line 1) | get version(){return"0.1.0"}
    method registerSource (line 1) | registerSource(e,t){this.sources[e]=t}
    method newestSourceName (line 1) | newestSourceName(){let e=null,t=Re.fromSemver("0.0.0");for(const n in ...
    method init (line 1) | init(){if(!this.invoked){if(this.invoked=!0,this.newestName=this.newes...
    method newest (line 1) | newest(){const e=this.newestSourceName();return null!=e?this.sources[e...
    method satisfying (line 1) | satisfying(e){const t=Fe.fromRequirementString(e);let n=null;for(const...
    method localCompatible (line 1) | localCompatible(){return void 0!==this.sources.local?this.satisfying("...
    method local (line 1) | local(){return void 0!==this.sources.local?this.satisfying("="+this.so...
    method superseded (line 1) | superseded(){this.invoked=!0}
    method negotiate (line 1) | static negotiate(e,t,n){let r;return r=e instanceof Te?e:new Te(e),voi...
  method constructor (line 1) | constructor(e){this.name=e}
  method version (line 1) | get version(){return"0.1.0"}
  method polyfill (line 1) | polyfill(e){!function(e){pe=e,Se(),Ce(),new MutationObserver((function(e...
  method pluginPolyfill (line 1) | pluginPolyfill(){!function(e){"install"in navigator.plugins&&navigator.p...
  method createPlayer (line 1) | createPlayer(){const e=K("ruffle-player",ce);return document.createEleme...

FILE: main/gams/gfiles/html5/2048/js/classlist_polyfill.js
  function DOMTokenList (line 12) | function DOMTokenList(el) {
  function defineElementGetter (line 58) | function defineElementGetter(obj, prop, getter) {

FILE: main/gams/gfiles/html5/2048/js/game_manager.js
  function GameManager (line 1) | function GameManager(size, InputManager, Actuator, StorageManager) {

FILE: main/gams/gfiles/html5/2048/js/grid.js
  function Grid (line 1) | function Grid(size, previousState) {

FILE: main/gams/gfiles/html5/2048/js/html_actuator.js
  function HTMLActuator (line 1) | function HTMLActuator() {

FILE: main/gams/gfiles/html5/2048/js/keyboard_input_manager.js
  function KeyboardInputManager (line 1) | function KeyboardInputManager() {

FILE: main/gams/gfiles/html5/2048/js/local_storage_manager.js
  function LocalStorageManager (line 21) | function LocalStorageManager() {

FILE: main/gams/gfiles/html5/2048/js/tile.js
  function Tile (line 1) | function Tile(position, value) {

FILE: main/gams/gfiles/html5/adarkroom/lib/jquery.event.move.js
  function Timer (line 88) | function Timer(fn){
  function returnTrue (line 135) | function returnTrue() {
  function returnFalse (line 139) | function returnFalse() {
  function preventDefault (line 143) | function preventDefault(e) {
  function preventIgnoreTags (line 147) | function preventIgnoreTags(e) {
  function isLeftButton (line 154) | function isLeftButton(e) {
  function identifiedTouch (line 160) | function identifiedTouch(touchList, id) {
  function changedTouch (line 180) | function changedTouch(e, event) {
  function mousedown (line 197) | function mousedown(e){
  function mousemove (line 213) | function mousemove(e){
  function mouseend (line 219) | function mouseend(e) {
  function removeMouse (line 223) | function removeMouse() {
  function touchstart (line 228) | function touchstart(e) {
  function touchmove (line 254) | function touchmove(e){
  function touchend (line 263) | function touchend(e) {
  function removeTouch (line 272) | function removeTouch(identifier) {
  function checkThreshold (line 280) | function checkThreshold(e, template, touch, fn) {
  function handled (line 290) | function handled() {
  function flagAsHandled (line 296) | function flagAsHandled(e) {
  function triggerStart (line 300) | function triggerStart(e, template, touch, distX, distY, fn) {
  function activeMousemove (line 343) | function activeMousemove(e) {
  function activeMouseend (line 350) | function activeMouseend(e) {
  function removeActiveMouse (line 365) | function removeActiveMouse(event) {
  function activeTouchmove (line 370) | function activeTouchmove(e) {
  function activeTouchend (line 384) | function activeTouchend(e) {
  function removeActiveTouch (line 396) | function removeActiveTouch(event) {
  function updateEvent (line 404) | function updateEvent(event, touch, timeStamp, timer) {
  function endEvent (line 423) | function endEvent(event, timer, fn) {
  function setup (line 436) | function setup(data, namespaces, eventHandle) {
  function teardown (line 450) | function teardown(namespaces) {
  function addMethod (line 459) | function addMethod(handleObj) {
  function removeMethod (line 473) | function removeMethod(handleObj) {

FILE: main/gams/gfiles/html5/adarkroom/lib/jquery.event.swipe.js
  function moveend (line 44) | function moveend(e) {
  function getData (line 90) | function getData(node) {

FILE: main/gams/gfiles/html5/adarkroom/lib/translate.js
  function translateLookup (line 59) | function translateLookup(target)

FILE: main/gams/gfiles/html5/adarkroom/script/engine.js
  function eventNullifier (line 852) | function eventNullifier(e) {
  function eventPassthrough (line 856) | function eventPassthrough(e) {
  function notifyAboutSound (line 860) | function notifyAboutSound() {
  function inView (line 894) | function inView(dir, elem){
  function scrollByX (line 913) | function scrollByX(elem, x){

FILE: main/gams/gfiles/html5/adarkroom/script/room.js
  method setMusic (line 1234) | setMusic() {

FILE: main/gams/gfiles/html5/astray/Three.js
  function c (line 24) | function c(a,b,c){q.sub(c,a);u=q.dot(b);t=n.add(a,r.copy(b).multiplyScal...
  function d (line 24) | function d(a,b,c,d){q.sub(d,b);n.sub(c,b);r.sub(a,b);s=q.dot(q);w=q.dot(...
  function a (line 29) | function a(){f=d-b;g=e-c}
  function a (line 66) | function a(){var a=g[f]=g[f]||new THREE.RenderableObject;f++;return a}
  function b (line 66) | function b(){var a=l[j]=l[j]||new THREE.RenderableVertex;j++;return a}
  function c (line 66) | function c(a,b){return b.z-a.z}
  function d (line 66) | function d(a,b){var c=0,d=1,e=a.z+a.w,f=b.z+b.w,g=-a.z+a.w,h=-b.z+b.w;if...
  function a (line 97) | function a(a,b,c,d,e,f,F){h=a.vertices[b];j=a.vertices[c];
  function b (line 104) | function b(a,b,c,d,e,f,g){a=(c-a)*0.5;d=(d-b)*0.5;return(2*(b-c)+a+d)*g+...
  function c (line 119) | function c(a){a=
  function d (line 120) | function d(a){a=Math.log(a)/Math.LN2;return Math.pow(2,Math.round(a))}
  function e (line 120) | function e(a,b){var e=new Image;e.onload=function(){if(!c(this.width)||!...
  function f (line 120) | function f(a,c,d,f,g,h){var j=document.createElement("canvas");a[c]=new ...
  function g (line 121) | function g(a){return(a[0]*255<<16)+(a[1]*255<<8)+a[2]*255}
  function w (line 130) | function w(a){return a%4?4-a%4:0}
  function H (line 130) | function H(a,b){return(new Uint8Array(a,b,1))[0]}
  function E (line 130) | function E(a,b){return(new Uint32Array(a,b,1))[0]}
  function z (line 130) | function z(b,c){var d,e,f,g,h,i,j,k,l=new Uint32Array(a,c,3*b);for(d=0;d...
  function v (line 131) | function v(b,c){var d,e,f,g,h,i,j,k,l,m,n=new Uint32Array(a,c,4*b);for(d...
  function A (line 131) | function A(b,c,d){for(var e,f,g,h,c=new Uint32Array(a,c,3*b),i=new Uint1...
  function J (line 132) | function J(b,c,d){for(var e,f,g,h,i,c=new Uint32Array(a,c,4*b),j=new Uin...
  function K (line 132) | function K(b,c,d,e){for(var f,g,h,i,j,k,l,c=new Uint32Array(a,c,3*b),d=n...
  function R (line 133) | function R(b,c,d,e){for(var f,g,h,i,j,k,l,m,n,c=new Uint32Array(a,c,4*b)...
  function d (line 149) | function d(a,b){return b=="relativeToHTML"?a:l+"/"+a}
  function e (line 149) | function e(){var a;for(m in D.objects)if(!C.objects[m]){u=D.objects[m];i...
  function f (line 151) | function f(a){return function(b){C.geometries[a]=b;e();G=G-1;j.onLoadCom...
  function g (line 151) | function g(a){return function(b){C.geometries[a]=b}}
  function h (line 151) | function h(){j.callbackProgress({totalModels:T,totalTextures:U,loadedMod...
  function b (line 221) | function b(a){if(t!=a)n.globalAlpha=t=a}
  function c (line 221) | function c(a){if(y!=a){switch(a){case THREE.NormalBlending:n.globalCompo...
  function d (line 221) | function d(a){if(s!=a)n.strokeStyle=s=a}
  function e (line 221) | function e(a){if(w!=a)n.fillStyle=w=a}
  function m (line 225) | function m(a){var b,c,d,e;aa.setRGB(0,0,0);Ta.setRGB(0,0,0);Qa.setRGB(0,...
  function p (line 226) | function p(a,b,c,d){var e,f,g,i,h,j;e=0;for(f=a.length;e<f;e++){g=a[e];i...
  function r (line 227) | function r(a,f,g){b(g.opacity);c(g.blending);var i,h,j,k,l,m;if(g instan...
  function s (line 228) | function s(a,e,f,g){b(g.opacity);c(g.blending);n.beginPath();n.moveTo(a....
  function t (line 229) | function t(a,d,e,g,h,l,m,n){f.info.render.vertices=f.info.render.vertice...
  function u (line 234) | function u(a,d,e,g,h,l,n,m,o){f.info.render.vertices=f.info.render.verti...
  function w (line 239) | function w(a,b,c,d,e,f){n.beginPath();n.moveTo(a,b);n.lineTo(c,
  function y (line 240) | function y(a,b,c,d,e,f,g,i){n.beginPath();n.moveTo(a,b);n.lineTo(c,d);n....
  function Mb (line 240) | function Mb(a,b,c,e){if(H!=b)n.lineWidth=H=b;if(E!=c)n.lineCap=E=c;if(z!...
  function Eb (line 240) | function Eb(a){e(a.getContextStyle());n.fill()}
  function ad (line 240) | function ad(a,b,c,d,f,g,i,h,j,k,l,m,p){if(p.image.width!=0){if(p.needsUp...
  function gc (line 242) | function gc(a,b,c,d,e,f,g,i,h,j,k,l,m){var p,o;p=m.width-1;o=m.height-1;...
  function Cc (line 243) | function Cc(a,b,c,d){var e=~~(a.r*255),f=~~(a.g*255),a=~~(a.b*255),g=~~(...
  function ac (line 244) | function ac(a,b,c){a=(a-b)/(c-b);return a*a*(3-2*a)}
  function hc (line 244) | function hc(a){a=(a+1)*0.5;return a<0?0:a>1?1:a}
  function Nb (line 244) | function Nb(a,b){var c=b.x-a.x,d=b.y-a.y,e=c*c+d*d;if(e!=0){e=1/Math.sqr...
  function a (line 250) | function a(a,b,c,d){var e,f,g,h,j,k;e=0;for(f=a.length;e<f;e++){g=a[e];h...
  function b (line 251) | function b(a){if(A[a]==null){A[a]=document.createElementNS("http://www.w...
  function c (line 251) | function c(a){a=(a+1)*0.5;return a<0?0:a>1?1:a}
  function b (line 299) | function b(a,b){var c=a.vertices.length,d=b.material;if(d.attributes){if...
  function c (line 300) | function c(a,b){if(a.material&&!(a.material instanceof THREE.MeshFaceMat...
  function d (line 300) | function d(a){return a instanceof THREE.MeshBasicMaterial&&!a.envMap||a ...
  function e (line 300) | function e(a){return a.map||a.lightMap||a instanceof THREE.ShaderMateria...
  function f (line 300) | function f(a,b,c){var d,e,f,g,h=a.vertices;g=h.length;
  function g (line 305) | function g(a,b){return b.z-a.z}
  function h (line 305) | function h(a,b,c){if(a.length)for(var d=0,e=a.length;d<e;d++){ea=U=null;...
  function j (line 305) | function j(a,b,c,d,e,f,g,h){var i,j,k,l;if(b){j=a.length-1;l=b=-1}else{j...
  function l (line 306) | function l(a,b,c,d,e,f,g){for(var h,i,j=0,k=a.length;j<k;j++){h=a[j];i=h...
  function k (line 307) | function k(a,b,c){a.push({buffer:b,object:c,opaque:null,transparent:null})}
  function p (line 307) | function p(a){for(var b in a.attributes)if(a.attributes[b].needsUpdate)r...
  function m (line 307) | function m(a){for(var b in a.attributes)a.attributes[b].needsUpdate=false}
  function o (line 307) | function o(a,b){for(var c=a.length-1;c>=0;c--)a[c].object===
  function q (line 308) | function q(a,b){for(var c=a.length-1;c>=0;c--)a[c]===b&&a.splice(c,1)}
  function n (line 308) | function n(a,b,c,d,e){if(!d.program||d.needsUpdate){G.initMaterial(d,b,c...
  function r (line 324) | function r(a,b){a._modelViewMatrix.multiply(b.matrixWorldInverse,a.matri...
  function u (line 324) | function u(a,b,c){if(Ra!==
  function t (line 325) | function t(a,b){var c;a==="fragment"?c=i.createShader(i.FRAGMENT_SHADER)...
  function y (line 325) | function y(a,b,c){if(c){i.texParameteri(a,i.TEXTURE_WRAP_S,H(b.wrapS));i...
  function s (line 326) | function s(a,b){i.bindRenderbuffer(i.RENDERBUFFER,a);if(b.depthBuffer&&!...
  function w (line 327) | function w(a){switch(a){case THREE.NearestFilter:case THREE.NearestMipMa...
  function H (line 328) | function H(a){switch(a){case THREE.RepeatWrapping:return i.REPEAT;case T...
  function c (line 442) | function c(a){function b(c,d){if(d<c)return c;var e=c+Math.floor((d-c)/2...
  function c (line 564) | function c(a,b){return function(){b.apply(a,arguments)}}
  function c (line 573) | function c(a){return(a=a*2)<1?0.5*a*a:-0.5*(--a*(a-2)-1)}
  function d (line 573) | function d(a,b){return function(){b.apply(a,arguments)}}
  function e (line 573) | function e(a,b,c,d){var e={name:c,fps:0.6,length:d,hierarchy:[]},f,g=b.g...
  function f (line 574) | function f(a,b){var c,d,e=new THREE.Geometry;for(c=0;c<a.points.length*b...
  function c (line 582) | function c(a,b){return function(){b.apply(a,arguments)}}
  function j (line 607) | function j(a,b,c,g,h,j,k,m){var n,p=d||1,o=e||1,q=h/2,r=j/2,t=l.vertices...
  function c (line 616) | function c(a,b,c){b||console.log("die");return b.clone().multiplyScalar(...
  function d (line 616) | function d(a,b,c){var d=THREE.ExtrudeGeometry.__v1,e=THREE.ExtrudeGeomet...
  function e (line 617) | function e(c,d){var e,f;for(F=c.length;--F>=0;){e=F;f=F-1;f<0&&(f=
  function f (line 618) | function f(a,b,c){A.vertices.push(new THREE.Vector3(a,b,c))}
  function g (line 618) | function g(c,d,e,f){c=c+J;d=d+J;e=e+J;A.faces.push(new THREE.Face3(c,d,e...
  function h (line 646) | function h(a,b,c,d,e,f){var g=Math.cos(a);Math.cos(b);b=Math.sin(a);a=c/...
  function e (line 656) | function e(a){var b=a.normalize().clone();b.index=j.vertices.push(b)-1;v...
  function f (line 656) | function f(a,b,c,d){if(d<1){d=new THREE.Face3(a.index,b.index,c.index,[a...
  function g (line 657) | function g(a,b){p[a.index]||(p[a.index]=[]);p[b.index]||(p[b.index]=[]);...
  function h (line 657) | function h(a,b,c){c<0&&a.u===1&&(a=new THREE.UV(a.u-1,a.v));b.x===0&&b.z...
  function b (line 669) | function b(a,b,d){c(a,d);c(b,d)}
  function c (line 669) | function c(a,b){d.lineGeometry.vertices.push(new THREE.Vector3);d.lineGe...
  function a (line 672) | function a(a,d,e,f){THREE.CameraHelper.__v.set(d,e,f);THREE.CameraHelper...
  function b (line 675) | function b(){m.debug&&console.log.apply(console,arguments)}
  function c (line 675) | function c(){console&&console.log.apply(console,arguments)}
  function d (line 675) | function d(a,c,d,e,g,h,i){var j=new THREE.Face4(a,c,d,e,null,g.color,g.m...
  function e (line 676) | function e(a,b){return Math.min(a,b)+"_"+Math.max(a,b)}
  function f (line 676) | function f(a,d){var e=a+":"+d,f=t[e];if(!f){a>=y&&a<y+q.length?b("face p...
  function g (line 676) | function g(a,b,d){var e=a+":"+b;e in t?c("dup vertexNo",a,"oldFaceNo",b,...
  function h (line 676) | function h(a,
  function j (line 677) | function j(a,b,c){P[a]===void 0&&(P[a]={});P[a][b]=c}
  function b (line 678) | function b(a,c){h[a]===void 0&&(h[a]=[]);h[a].push(c)}
  function a (line 695) | function a(a){var c=b.createProgram(),d=b.createShader(b.FRAGMENT_SHADER...
  function a (line 715) | function a(a,b){return b.z-a.z}

FILE: main/gams/gfiles/html5/astray/jquery.js
  function cy (line 2) | function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.pa...
  function cu (line 2) | function cu(a){if(!cj[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.cs...
  function ct (line 2) | function ct(a,b){var c={};f.each(cp.concat.apply([],cp.slice(0,b)),funct...
  function cs (line 2) | function cs(){cq=b}
  function cr (line 2) | function cr(){setTimeout(cs,0);return cq=f.now()}
  function ci (line 2) | function ci(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(...
  function ch (line 2) | function ch(){try{return new a.XMLHttpRequest}catch(b){}}
  function cb (line 2) | function cb(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.da...
  function ca (line 2) | function ca(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i...
  function b_ (line 2) | function b_(a,b,c,d){if(f.isArray(b))f.each(b,function(b,e){c||bD.test(a...
  function b$ (line 2) | function b$(a,c){var d,e,g=f.ajaxSettings.flatOptions||{};for(d in c)c[d...
  function bZ (line 2) | function bZ(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],...
  function bY (line 2) | function bY(a){return function(b,c){typeof b!="string"&&(c=b,b="*");if(f...
  function bB (line 2) | function bB(a,b,c){var d=b==="width"?a.offsetWidth:a.offsetHeight,e=b===...
  function bo (line 2) | function bo(a){var b=c.createElement("div");bh.appendChild(b),b.innerHTM...
  function bn (line 2) | function bn(a){var b=(a.nodeName||"").toLowerCase();b==="input"?bm(a):b!...
  function bm (line 2) | function bm(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked...
  function bl (line 2) | function bl(a){return typeof a.getElementsByTagName!="undefined"?a.getEl...
  function bk (line 2) | function bk(a,b){var c;b.nodeType===1&&(b.clearAttributes&&b.clearAttrib...
  function bj (line 2) | function bj(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c,d,e,g=f._data(...
  function bi (line 2) | function bi(a,b){return f.nodeName(a,"table")?a.getElementsByTagName("tb...
  function U (line 2) | function U(a){var b=V.split("|"),c=a.createDocumentFragment();if(c.creat...
  function T (line 2) | function T(a,b,c){b=b||0;if(f.isFunction(b))return f.grep(a,function(a,d...
  function S (line 2) | function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}
  function K (line 2) | function K(){return!0}
  function J (line 2) | function J(){return!1}
  function n (line 2) | function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);...
  function m (line 2) | function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))conti...
  function l (line 2) | function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-...
  function h (line 2) | function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c<d;...
  function J (line 2) | function J(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch...
  function a (line 2) | function a(b,c){return new a.fn.init(b,c)}
  function m (line 2) | function m(a){return function(b){e[a]=arguments.length>1?i.call(argument...
  function l (line 2) | function l(a){return function(c){b[a]=arguments.length>1?i.call(argument...
  function m (line 2) | function m(){--h||d.resolveWith(e,[e])}
  function x (line 3) | function x(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j)...
  function w (line 3) | function w(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j)...
  function w (line 4) | function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.ready...
  function g (line 4) | function g(){e.queue===!1&&f._mark(this);var b=f.extend({},e),c=this.nod...
  function h (line 4) | function h(a,b,c){var e=b[c];f.removeData(a,c,!0),e.stop(d)}
  function h (line 4) | function h(a){return e.step(a)}

FILE: main/gams/gfiles/html5/astray/keyboard.js
  function bind (line 19) | function bind(target, type, handler) { if (target.addEventListener) { ta...
  function queryActiveBindings (line 130) | function queryActiveBindings() {
  function executeActiveKeyBindings (line 170) | function executeActiveKeyBindings(event) {
  function pruneActiveKeyBindings (line 232) | function pruneActiveKeyBindings(event) {
  function bindKey (line 278) | function bindKey(keyCombo, callback, endCallback) {
  function bindAxis (line 333) | function bindAxis(up, down, left, right, callback) {
  function unbindKey (line 406) | function unbindKey(keys) {
  function getActiveKeys (line 453) | function getActiveKeys() {
  function addLocale (line 462) | function addLocale(local, keys) {
  function setLocale (line 470) | function setLocale(local) {

FILE: main/gams/gfiles/html5/astray/maze.js
  function generateSquareMaze (line 1) | function generateSquareMaze(dimension) {

FILE: main/gams/gfiles/html5/bounceback/game.js
  class PlayerData (line 79) | class PlayerData
    method constructor (line 82) | constructor()
  function Init (line 92) | function Init()
  function Reset (line 104) | function Reset()
  function NextLevel (line 117) | function NextLevel()
  function InitLevel (line 138) | function InitLevel()
  function SpawnPickups (line 168) | function SpawnPickups(pos, chance=1, count=1)
  function DestroyLevelObject (line 189) | function DestroyLevelObject(pos,bounceRock=1)
  function Update (line 239) | function Update()
  function PreRender (line 285) | function PreRender()
  function PostRender (line 306) | function PostRender()
  function MazeDataPos (line 389) | function MazeDataPos(pos)
  function RenderMap (line 397) | function RenderMap()
  class MyGameObject (line 461) | class MyGameObject extends GameObject
    method constructor (line 463) | constructor(pos,tileX=0,tileY=0,size=.5,collisionSize=0,health=1)
    method UpdateWalk (line 474) | UpdateWalk()
    method BloodSplat (line 498) | BloodSplat(scale=1,particles=1)
    method Kill (line 525) | Kill()
    method Render (line 532) | Render()
    method IsOnSand (line 540) | IsOnSand() { return level.GetDataFromPos(this.pos).type == 2; }
  class Player (line 543) | class Player extends MyGameObject
    method constructor (line 545) | constructor(pos)
    method IsDashing (line 560) | IsDashing() { return !this.dashTimer.Elapsed(); }
    method CollideLevel (line 562) | CollideLevel(data, pos)
    method IsIntro (line 571) | IsIntro() { return (levelTimer.Get() < 1.5) }
    method Update (line 573) | Update()
    method Render (line 675) | Render()
    method Damage (line 759) | Damage(damage)
    method Kill (line 780) | Kill()
  class Boomerang (line 789) | class Boomerang  extends MyGameObject
    method constructor (line 791) | constructor(pos,isBig=0)
    method Throw (line 805) | Throw(owner, targetPos)
    method CollideLevel (line 817) | CollideLevel(data, pos)
    method Update (line 824) | Update()
    method Pickup (line 920) | Pickup()
  class Pickup (line 935) | class Pickup extends MyGameObject
    method constructor (line 939) | constructor(pos, type=0)
    method Update (line 951) | Update()
    method Pickup (line 973) | Pickup()
  class Enemy (line 1007) | class Enemy extends MyGameObject
    method constructor (line 1009) | constructor(pos,tileX=0,tileY=0,size=.5,collisionSize=0,health=1,big=0)
    method Damage (line 1019) | Damage(damage)
    method Update (line 1031) | Update()
    method Kill (line 1045) | Kill()
  class SlimeEnemy (line 1072) | class SlimeEnemy extends Enemy
    method constructor (line 1074) | constructor(pos,healthLevel,difficulty=1)
    method Update (line 1088) | Update()
    method Kill (line 1127) | Kill()
  class JumpingEnemy (line 1147) | class JumpingEnemy extends Enemy
    method constructor (line 1149) | constructor(pos,isBig=0)
    method Update (line 1161) | Update()
  class ShieldEnemy (line 1222) | class ShieldEnemy extends Enemy
    method constructor (line 1224) | constructor(pos, type=0, isBig=0)
    method ReflectDamage (line 1246) | ReflectDamage(direction)
    method CollideLevel (line 1257) | CollideLevel(data, pos)
    method Damage (line 1274) | Damage(damage)
    method Update (line 1283) | Update()
    method Kill (line 1418) | Kill()
  class Store (line 1448) | class Store extends MyGameObject
    method constructor (line 1450) | constructor(pos)
    method Kill (line 1478) | Kill()
    method Update (line 1484) | Update()
  class StoreItem (line 1512) | class StoreItem extends MyGameObject
    method constructor (line 1514) | constructor(pos,type,owner)
    method Update (line 1548) | Update()
    method Pickup (line 1566) | Pickup()
    method Render (line 1587) | Render()
  class LevelExit (line 1604) | class LevelExit extends MyGameObject
    method constructor (line 1606) | constructor(pos,type=0)
    method Update (line 1615) | Update()
    method Render (line 1681) | Render()
  function GenerateMaze (line 1716) | function GenerateMaze(cellCount)
  function GenerateLevel (line 1839) | function GenerateLevel()
  function GenerateLevelInternal (line 1850) | function GenerateLevelInternal()
  function StartTransiton (line 2044) | function StartTransiton()
  function UpdateTransiton (line 2053) | function UpdateTransiton()
  function UpdateAudio (line 2079) | function UpdateAudio()
  function PlaySound (line 2125) | function PlaySound(sound, p=0)

FILE: main/gams/gfiles/html5/bounceback/gameEngine.js
  class Timer (line 66) | class Timer
    method constructor (line 68) | constructor()           { this.endTime=0; }
    method Set (line 69) | Set(timeLeft=0)         { this.endTime = time + timeLeft; }
    method Get (line 70) | Get()                   { return this.IsSet()? time - this.endTime : 1...
    method IsSet (line 71) | IsSet()                 { return this.endTime > 0; }
    method UnSet (line 72) | UnSet()                 { this.endTime = 0; }
    method Elapsed (line 73) | Elapsed()               { return !this.IsSet() || time > this.endTime; }
  class Vector2 (line 76) | class Vector2
    method constructor (line 78) | constructor(x=0, y=0) { this.x = x; this.y = y; }
    method Copy (line 79) | Copy(v)               { this.x = v.x; this.y = v.y; return this; }
    method Clone (line 80) | Clone(s=1)            { return (new Vector2(this.x, this.y)).Multiply(...
    method Add (line 81) | Add(v)                { (v instanceof Vector2)? (this.x += v.x, this.y...
    method Subtract (line 82) | Subtract(v)           { (this.x -= v.x, this.y -= v.y) ; return this;  }
    method Multiply (line 83) | Multiply(v)           { (v instanceof Vector2)? (this.x *= v.x, this.y...
    method Set (line 84) | Set(x, y)             { this.x = x; this.y = y; return this;  }
    method AddXY (line 85) | AddXY(x, y)           { this.x += x; this.y += y; return this;  }
    method Normalize (line 86) | Normalize(scale=1)    { let l = this.Length(); return l > 0 ? this.Mul...
    method ClampLength (line 87) | ClampLength(length)   { let l = this.Length(); return l > length ? thi...
    method Rotate (line 88) | Rotate(a)             { let c=Math.cos(a);let s=Math.sin(a);return thi...
    method Round (line 89) | Round()               { this.x = Math.round(this.x); this.y = Math.rou...
    method Length (line 90) | Length()              { return Math.hypot(this.x, this.y ); }
    method Distance (line 91) | Distance(v)           { return Math.hypot(this.x - v.x, this.y - v.y ); }
    method Angle (line 92) | Angle()               { return Math.atan2(this.y, this.x); }
    method Rotation (line 93) | Rotation()            { return (Math.abs(this.x)>Math.abs(this.y))?(th...
    method Lerp (line 94) | Lerp(v,p)             { return this.Add(v.Clone().Subtract(this).Multi...
    method DotProduct (line 95) | DotProduct(v)         { return this.x*v.x+this.y*v.y; }
  class Color (line 98) | class Color
    method constructor (line 100) | constructor(r=0,g=0,b=0,a=1) { this.r=r;this.g=g;this.b=b;this.a=a; }
    method Copy (line 101) | Copy(c)                      { this.r=c.r;this.g=c.g;this.b=c.b;this.a...
    method Clone (line 102) | Clone(s=1)                   { return new Color(this.r*s, this.g*s, th...
    method Subtract (line 104) | Subtract(c)                  { this.r-=c.r;this.g-=c.g;this.b-=c.b;thi...
    method SetAlpha (line 106) | SetAlpha(a)                  { this.a=a; return this; }
    method Lerp (line 107) | Lerp(c,p)                    { return c.Clone().Subtract(c.Clone().Sub...
    method RGBA (line 108) | RGBA()                       { return RGBA(this.r, this.g, this.b, thi...
  class GameObject (line 114) | class GameObject
    method constructor (line 116) | constructor(pos,tileX,tileY,size=.5,collisionSize=0,health=1)
    method Update (line 140) | Update()
    method Render (line 176) | Render() { DrawTile(this.pos,this.size,this.tileX,this.tileY,this.angl...
    method Heal (line 178) | Heal(health)
    method Damage (line 189) | Damage(damage)
    method ReflectDamage (line 204) | ReflectDamage(direction){ return 0; }
    method GetLifeTime (line 205) | GetLifeTime()           { return this.lifeTimer.Get(); }
    method GetDamageTime (line 206) | GetDamageTime()         { return this.damageTimer.Get(); }
    method GetDamageFlashPercent (line 207) | GetDamageFlashPercent() { return Clamp(1- this.GetDamageTime()/this.da...
    method IsTouching (line 208) | IsTouching(object)      { return this.Distance(object) < object.collis...
    method IsDead (line 209) | IsDead()                { return !this.health; }
    method Kill (line 210) | Kill()                  { this.health = 0; this.Destroy(); }
    method Destroy (line 211) | Destroy()               { gameObjects.splice(gameObjects.indexOf(this)...
    method Distance (line 212) | Distance(object)
    method CollideLevel (line 218) | CollideLevel(data,pos)
  function EngineInit (line 253) | function EngineInit()
  function EngineUpdate (line 289) | function EngineUpdate()
  function ClearGameObjects (line 346) | function ClearGameObjects()  { gameObjects = []; }
  function UpdateGameObjects (line 347) | function UpdateGameObjects() { gameObjects.forEach(o=>o.Update()); }
  function RenderGameObjects (line 348) | function RenderGameObjects()
  function MouseWasPressed (line 408) | function MouseWasPressed()  { return mouseIsDown && !mouseWasDown; }
  function KeyIsDown (line 409) | function KeyIsDown(key)     { return keyInputData[key]? keyInputData[key...
  function KeyWasPressed (line 410) | function KeyWasPressed(key) { return KeyIsDown(key) && !keyInputData[key...
  function ClearInput (line 411) | function ClearInput()       { keyInputData.map(k=>k.wasDown=k.isDown=0);...
  function DrawScreenTile (line 421) | function DrawScreenTile(x,y,size,tileX,tileY)
  function SetCanvasTransform (line 426) | function SetCanvasTransform(pos,size,angle=0,height=0)
  function DrawTile (line 447) | function DrawTile(pos,size,tileX,tileY,angle=0,mirror=0,height=0)
  function DrawText (line 480) | function DrawText(text, x, y, size,textAlign='center',lineWidth=1,color=...
  class LevelData (line 498) | class LevelData
    method constructor (line 500) | constructor()
    method Clear (line 509) | Clear() { this.type=this.object=0; }
    method IsSolid (line 510) | IsSolid() { return !this.type || this.object; }
  class Level (line 513) | class Level
    method constructor (line 515) | constructor()
    method GetDataFromPos (line 523) | GetDataFromPos(pos) { return this.GetData(pos.x,pos.y); }
    method GetData (line 525) | GetData(x,y)
    method IsAreaClear (line 532) | IsAreaClear(pos,size,gameObject=0)
    method FillCircleObject (line 567) | FillCircleObject(pos,r,object) { this.FillCircleCallback(pos,r,d=>d.ob...
    method FillCircleType (line 568) | FillCircleType(pos,r,type)     { this.FillCircleCallback(pos,r,d=>d.ty...
    method FillCircleCallback (line 570) | FillCircleCallback(pos,r,callback)
    method ApplyTiling (line 588) | ApplyTiling()
    method ClearBorder (line 658) | ClearBorder()
    method DrawEllipse (line 671) | DrawEllipse(pos,size,color='#FFF',angle=0)
    method DrawText (line 680) | DrawText(text, pos, size, textAlign='center',lineWidith=0, color='#000...
    method DrawTileData (line 685) | DrawTileData(x,y)
    method DrawTile (line 706) | DrawTile(pos,size,tileX,tileY,angle=0)
    method Redraw (line 716) | Redraw()
    method Render (line 725) | Render()
  class Particle (line 741) | class Particle
    method constructor (line 743) | constructor(emitter,pos,velocity,size,lifeTime,startColor,endColor)
    method Update (line 756) | Update()
    method Render (line 769) | Render()
  class ParticleEmitter (line 790) | class ParticleEmitter extends GameObject
    method constructor (line 792) | constructor( pos, emitSize, particleSize, color1, color2 )
    method Update (line 802) | Update()
    method Render (line 830) | Render() { this.particles.forEach(p=>p.Render()); }
    method AddParticle (line 832) | AddParticle()

FILE: main/gams/gfiles/html5/bounceback/gameEngineDebug.js
  function DebugPrint (line 38) | function DebugPrint(string)
  function ToggleDebugConsole (line 45) | function ToggleDebugConsole()
  function DebugConsoleKeyDown (line 57) | function DebugConsoleKeyDown(e)
  function InitDebug (line 81) | function InitDebug()
  function DebugRect (line 118) | function DebugRect(pos,size,color="#F00")
  function DebugPoint (line 123) | function DebugPoint(pos,size=.1,color="#F00")
  function RenderDebugRects (line 128) | function RenderDebugRects()
  function UpdateDebug (line 152) | function UpdateDebug()
  function UpdateDebugControls (line 177) | function UpdateDebugControls()
  function SaveSnapshot (line 204) | function SaveSnapshot()

FILE: main/gams/gfiles/html5/breaklock/app.js
  function e (line 1) | function e(i){if(n[i])return n[i].exports;var a=n[i]={i:i,l:!1,exports:{...
  function i (line 1) | function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a ...
  function t (line 1) | function t(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.en...
  function t (line 1) | function t(e){i(this,t),this.dotLength=e,this.suite=[]}
  function i (line 1) | function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a ...
  function t (line 1) | function t(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.en...
  function t (line 1) | function t(){i(this,t),this.el=o.default.create("svg",{viewBox:"0 0 "+th...
  function i (line 1) | function i(t,e){var n=a(t);n&&l(n.nextFrame);var i={el:t,counter:e.lengt...
  function a (line 1) | function a(t){for(var e=c.length-1;e>=0;e--)if(c[e].el===t)return c.spli...
  function r (line 1) | function r(t){t.nextFrame=u(function(){o(t)})}
  function o (line 1) | function o(t){if(t.counter-=1,t.counter<=0)return t.el.textContent=t.ori...
  function s (line 1) | function s(t){var e="",n="abcdefghijklmnopqrstuvwxyz0123456789 _*%!?/\\|...
  function u (line 1) | function u(t){return window.setTimeout(t,60)}
  function l (line 1) | function l(t){return window.clearTimeout(t)}
  function i (line 1) | function i(t){return t&&t.__esModule?t:{default:t}}
  function a (line 1) | function a(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a ...
  function t (line 1) | function t(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.en...
  function t (line 1) | function t(e){a(this,t),this.statusBar=new s.default(this.abort.bind(thi...
  function i (line 1) | function i(t){return t&&t.__esModule?t:{default:t}}
  function a (line 1) | function a(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a ...
  function t (line 1) | function t(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.en...
  function t (line 1) | function t(e){a(this,t),this.onStart=e,this.setupTemplate()}
  function i (line 1) | function i(t){return t&&t.__esModule?t:{default:t}}
  function i (line 1) | function i(t){return t&&t.__esModule?t:{default:t}}
  function a (line 1) | function a(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a ...
  function t (line 1) | function t(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.en...
  function t (line 1) | function t(){a(this,t),this.setupTemplate()}
  function i (line 1) | function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a ...
  function t (line 1) | function t(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.en...
  function t (line 1) | function t(e,n,a){i(this,t),this.title=e,this.content=n,this.isExpanded=...
  function i (line 1) | function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a ...
  function t (line 1) | function t(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.en...
  function t (line 1) | function t(){i(this,t),this.lastPattern=null,this.setupTemplate()}
  function i (line 1) | function i(t){return t&&t.__esModule?t:{default:t}}
  function a (line 1) | function a(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a ...
  function t (line 1) | function t(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.en...
  function t (line 1) | function t(e){a(this,t),this.currentLine=null,this.onNewPattern=e,this.s...
  function i (line 1) | function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a ...
  function t (line 1) | function t(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.en...
  function t (line 1) | function t(e,n){i(this,t),this.setupTemplate(),this.setChoices(e)}
  function i (line 1) | function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a ...
  function t (line 1) | function t(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.en...
  function t (line 1) | function t(e,n){i(this,t),this.selectionIndex=0,this.setupTemplate(),thi...
  function i (line 1) | function i(t){return t&&t.__esModule?t:{default:t}}
  function a (line 1) | function a(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a ...
  function t (line 1) | function t(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.en...
  function t (line 1) | function t(e){a(this,t),this.cancelCallback=e,this.counterVal=null,this....
  function i (line 1) | function i(t){return t&&t.__esModule?t:{default:t}}
  function a (line 1) | function a(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a ...
  function t (line 1) | function t(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.en...
  function t (line 1) | function t(e){a(this,t),this.onAction=e,this.setupTemplate(),this.init()}
  function i (line 1) | function i(t,e){var n=void 0,i=void 0;return t?(n="Lock found in "+e+" a...

FILE: main/gams/gfiles/html5/breakout/game.js
  function F (line 32) | function F() {}

FILE: main/gams/gfiles/html5/breakout/sound/soundmanager2-nodebug-jsmin.js
  function M (line 13) | function M(M,X){function i(c){return function(a){return!this._t||!this._...

FILE: main/gams/gfiles/html5/chess/chess.js
  function newPGNHeader (line 190) | function newPGNHeader() {
  function isThreatened (line 203) | function isThreatened(nPieceX, nPieceY, flagFromColor) {
  function getInCheckPieces (line 215) | function getInCheckPieces() {
  function getPcByParams (line 248) | function getPcByParams(nParamId, nWhere) {
  function resetBoard (line 254) | function resetBoard() {
  function trimHistory (line 265) | function trimHistory() {
  function writeHistory (line 277) | function writeHistory(bGraphRendrng, nStartPt, nEndPt, nPieceId, nTarget...
  function consider (line 318) | function consider(thnkA, thnkB, thnkH, thnkF, thnkPawnStride, thnkDepth) {
  function engineMove (line 384) | function engineMove() {
  function writeFlatPieces (line 392) | function writeFlatPieces() {
  function squareFocus (line 410) | function squareFocus(nPieceId, bMakeActive) {
  function createFlatCoord (line 416) | function createFlatCoord(nNewHeaderId, bVertOri) {
  function updateFlatCoords (line 423) | function updateFlatCoords() {
  function showFlatBoard (line 430) | function showFlatBoard() {
  function runComponents (line 495) | function runComponents() {
  function loadCom (line 512) | function loadCom(nIndex) {
  function showSolidBoard (line 518) | function showSolidBoard() {
  function updatePGNHeader (line 550) | function updatePGNHeader() {
  function updatePGNLink (line 555) | function updatePGNLink() { oPGNBtn.setAttribute("href", "data:applicatio...
  function runAlgebraic (line 557) | function runAlgebraic(sAlgMove, nColorFlag, bGraphRendrng) {
  function readHistory (line 644) | function readHistory(nRelPt, bSynchrList) {
  function histClearIter (line 691) | function histClearIter() {
  function sendAlgebraic (line 698) | function sendAlgebraic(sMove) {
  function closeMsg (line 712) | function closeMsg(oMsgNode, nEventId) {
  function sendMsg (line 719) | function sendMsg(sMsgTitle, sMsgTxt, nDuration) {
  function returnFalse (line 752) | function returnFalse() { return(false); }
  function getSqFnc (line 754) | function getSqFnc() {
  function synchrMovesList (line 759) | function synchrMovesList() {
  function resizeFilm (line 765) | function resizeFilm(oMsEvnt2) {
  function updateViewSize (line 774) | function updateViewSize(bCrushFlatWidth, bResizeSolidB) {
  function stopResizing (line 788) | function stopResizing() {
  function startResizing (line 798) | function startResizing(oMsEvnt1) {
  function capitalize (line 820) | function capitalize(sText) { return(sText.toUpperCase()); }
  function changeTagName (line 822) | function changeTagName() {
  function changeTagVal (line 855) | function changeTagVal() {
  function addInfoTag (line 865) | function addInfoTag() {
  function showInfo (line 886) | function showInfo() {
  function hideInfo (line 906) | function hideInfo() {
  function algBoxListener (line 911) | function algBoxListener(oKeyEvnt1) {
  function algBoxFocus (line 915) | function algBoxFocus() {
  function algBoxBlur (line 921) | function algBoxBlur() {
  function minMaxCtrl (line 927) | function minMaxCtrl() {
  function getCtrlDown (line 937) | function getCtrlDown(oKeyEvnt2) { if (oKeyEvnt2.keyCode === 17) { bCtrlI...
  function getCtrlUp (line 939) | function getCtrlUp(oKeyEvnt3) { if (oKeyEvnt3.ctrlKey) { bCtrlIsDown = f...

FILE: main/gams/gfiles/html5/chess/common/xhr.js
  function XHR (line 4) | function XHR(strURL, fncCallback /*, argumentToPass1, argumentToPass2, e...
  function setAttribs (line 31) | function setAttribs() { for (var iAttr = 0; iAttr < arguments.length; iA...
  function setStyles (line 32) | function setStyles() { for (var iPropr = 0; iPropr < arguments.length; i...

FILE: main/gams/gfiles/html5/chromedino/index.js
  function Runner (line 14) | function Runner(outerContainerId, opt_config) {
  function getRandomNum (line 933) | function getRandomNum(min, max) {
  function vibrate (line 942) | function vibrate(duration) {
  function createCanvas (line 957) | function createCanvas(container, width, height, opt_classname) {
  function decodeBase64ToArrayBuffer (line 973) | function decodeBase64ToArrayBuffer(base64String) {
  function getTimeStamp (line 990) | function getTimeStamp() {
  function GameOverPanel (line 1006) | function GameOverPanel(canvas, textImgPos, restartImgPos, dimensions) {
  function checkForCollision (line 1104) | function checkForCollision(obstacle, tRex, opt_canvasCtx) {
  function createAdjustedCollisionBox (line 1163) | function createAdjustedCollisionBox(box, adjustment) {
  function drawCollisionBoxes (line 1175) | function drawCollisionBoxes(canvasCtx, tRexBox, obstacleBox) {
  function boxCompare (line 1193) | function boxCompare(tRexBox, obstacleBox) {
  function CollisionBox (line 1222) | function CollisionBox(x, y, w, h) {
  function Obstacle (line 1242) | function Obstacle(canvasCtx, type, spriteImgPos, dimensions,
  function Trex (line 1490) | function Trex(canvas, spritePos) {
  function DistanceMeter (line 1856) | function DistanceMeter(canvas, spritePos, canvasWidth) {
  function Cloud (line 2117) | function Cloud(canvas, spritePos, containerWidth) {
  function NightMode (line 2209) | function NightMode(canvas, spritePos, containerWidth) {
  function HorizonLine (line 2369) | function HorizonLine(canvas, spritePos) {
  function Horizon (line 2499) | function Horizon(canvas, spritePos, dimensions, gapCoefficient) {
  function onDocumentLoad (line 2711) | function onDocumentLoad() {

FILE: main/gams/gfiles/html5/connect3/connect3.js
  constant BOARD_SIZE (line 1) | const colours = ["red", "orange", "yellow", "dodgerblue", "limegreen", "...
  method set (line 5) | set(n) {
  method add (line 9) | add(n) {
  class Tile (line 13) | class Tile {
    method constructor (line 14) | constructor(x, y, colour, entering = false) {
    method remove (line 79) | remove(animate = true, addNewItem = true) {
    method moveTo (line 94) | moveTo(x, y) {
  function startMurderSpree (line 101) | function startMurderSpree(wasRightAfterTransition = false) {
  function checkForMatches (line 126) | function checkForMatches(tiles) {

FILE: main/gams/gfiles/html5/cookieclicker/main.js
  function l (line 18) | function l(what) {return document.getElementById(what);}
  function choose (line 19) | function choose(arr) {return arr[Math.floor(Math.random()*arr.length)];}
  function escapeRegExp (line 21) | function escapeRegExp(str){return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\....
  function replaceAll (line 22) | function replaceAll(find,replace,str){return str.replace(new RegExp(esca...
  function randomFloor (line 40) | function randomFloor(x) {if ((x%1)<Math.random()) return Math.floor(x); ...
  function shuffle (line 42) | function shuffle(array)
  function quickSin (line 65) | function quickSin(x)
  function toFixed (line 105) | function toFixed(x)
  function formatEveryThirdPower (line 125) | function formatEveryThirdPower(notations)
  function rawFormatter (line 145) | function rawFormatter(val){return Math.round(val*1000)/1000;}
  function Beautify (line 177) | function Beautify(val,floats)
  function shortenNumber (line 191) | function shortenNumber(val)
  function BeautifyInTextFunction (line 223) | function BeautifyInTextFunction(str){return Beautify(parseInt(str.replac...
  function BeautifyInText (line 224) | function BeautifyInText(str) {return str.replace(beautifyInTextFilter,Be...
  function BeautifyAll (line 225) | function BeautifyAll()//run through upgrades and achievements to reforma...
  function utf8_to_b64 (line 236) | function utf8_to_b64( str ) {
  function b64_to_utf8 (line 242) | function b64_to_utf8( str ) {
  function CompressBin (line 248) | function CompressBin(arr)//compress a sequence like [0,1,1,0,1,0]... int...
  function UncompressBin (line 263) | function UncompressBin(num)//uncompress a number like 54 to a sequence l...
  function CompressLargeBin (line 273) | function CompressLargeBin(arr)//we have to compress in smaller chunks to...
  function UncompressLargeBin (line 292) | function UncompressLargeBin(arr)
  function pack (line 309) | function pack(bytes) {
  function unpack (line 318) | function unpack(str) {
  function pack2 (line 329) | function pack2(/* string */ values) {
  function unpack2 (line 337) | function unpack2(/* string */ packed) {
  function pack3 (line 345) | function pack3(values){
  function k (line 356) | function k(a){var b,c=a.length,e=this,f=0,g=e.i=e.j=0,h=e.S=[];for(c||(a...
  function l (line 356) | function l(a,b){var e,c=[],d=(typeof a)[0];if(b&&"o"==d)for(e in a)try{c...
  function m (line 356) | function m(a,b){for(var d,c=a+"",e=0;c.length>e;)b[j&e]=j&(d^=19*b[j&e])...
  function n (line 356) | function n(c){try{return a.crypto.getRandomValues(c=new Uint8Array(d)),o...
  function o (line 356) | function o(a){return String.fromCharCode.apply(0,a)}
  function bind (line 358) | function bind(scope,fn)
  function AddEvent (line 398) | function AddEvent(html_element, event_name, event_function)
  function FireEvent (line 404) | function FireEvent(el, etype)
  function inRect (line 11970) | function inRect(x,y,rect)

FILE: main/gams/gfiles/html5/drifthunters/Build/UnityLoader.js
  function r (line 1) | function r(n){r.called||(r.called=!0,e.indexedDB=n,t.complete())}
  function n (line 1) | function n(e,r){if("string"==typeof e&&!(e=document.getElementById(e)))r...
  function a (line 1) | function a(e,t){e=e|0;t=t|0;var r=0;for(r=o[1024>>2]|0;t;e=e+1|0,t=t-1|0...
  function o (line 1) | function o(e,t){e=e|0;t=t|0;var r=0,o=0,a=0,i=0,s=0,d=0,l=0,f=0,u=0,c=0,...
  function o (line 1) | function o(e,t){e=e|0;t=t|0;var r=0,o=0,a=0,i=0,s=0,d=0,l=0,f=0,u=0,c=0,...
  function n (line 2) | function n(e){if(!(this instanceof n))return new n(e);this.options=s.ass...
  function o (line 2) | function o(e,t){var r=new n(t);if(r.push(e,!0),r.err)throw r.msg||f[r.er...
  function a (line 2) | function a(e,t){return t=t||{},t.raw=!0,o(e,t)}
  function n (line 2) | function n(e,t){if(t<65537&&(e.subarray&&i||!e.subarray&&a))return Strin...
  function n (line 2) | function n(e){return(e>>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<...
  function o (line 2) | function o(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this....
  function a (line 2) | function a(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=...
  function i (line 2) | function i(e){var t;return e&&e.state?(t=e.state,t.wsize=0,t.whave=0,t.w...
  function s (line 2) | function s(e,t){var r,n;return e&&e.state?(n=e.state,t<0?(r=0,t=-t):(r=(...
  function d (line 2) | function d(e,t){var r,n;return e?(n=new o,e.state=n,n.window=null,r=s(e,...
  function l (line 2) | function l(e){return d(e,ge)}
  function f (line 2) | function f(e){if(ye){var t;for(m=new g.Buf32(512),b=new g.Buf32(32),t=0;...
  function u (line 2) | function u(e,t,r,n){var o,a=e.state;return null===a.window&&(a.wsize=1<<...
  function c (line 2) | function c(e,t){var r,o,a,i,s,d,l,c,h,w,p,m,b,pe,me,be,ge,ye,Ae,ve,Ue,xe...
  function h (line 2) | function h(e){if(!e||!e.state)return R;var t=e.state;return t.window&&(t...
  function w (line 2) | function w(e,t){var r;return e&&e.state?(r=e.state,0===(2&r.wrap)?R:(r.h...
  function p (line 2) | function p(e,t){var r,n,o,a=t.length;return e&&e.state?(r=e.state,0!==r....
  function n (line 2) | function n(){this.input=null,this.next_in=0,this.avail_in=0,this.total_i...
  function n (line 2) | function n(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=...
  function n (line 2) | function n(e,t,r,n){for(var o=65535&e|0,a=e>>>16&65535|0,i=0;0!==r;){i=r...
  function n (line 2) | function n(){for(var e,t=[],r=0;r<256;r++){e=r;for(var n=0;n<8;n++)e=1&e...
  function o (line 2) | function o(e,t,r,n){var o=a,i=n+r;e^=-1;for(var s=n;s<i;s++)e=e>>>8^o[25...
  function n (line 2) | function n(e){this.buf_=new Uint8Array(a),this.input_=e,this.reset()}
  function n (line 2) | function n(e){var t;return 0===e.readBits(1)?16:(t=e.readBits(3),t>0?17+...
  function o (line 2) | function o(e){if(e.readBits(1)){var t=e.readBits(3);return 0===t?1:e.rea...
  function a (line 2) | function a(){this.meta_block_length=0,this.input_end=0,this.is_uncompres...
  function i (line 2) | function i(e){var t,r,n,o=new a;if(o.input_end=e.readBits(1),o.input_end...
  function s (line 2) | function s(e,t,r){var n;return r.fillBitWindow(),t+=r.val_>>>r.bit_pos_&...
  function d (line 2) | function d(e,t,r,n){for(var o=0,a=N,i=0,s=0,d=32768,l=[],f=0;f<32;f++)l....
  function l (line 2) | function l(e,t,r,n){var o,a=0,i=new Uint8Array(e);if(n.readMoreInput(),o...
  function f (line 3) | function f(e,t,r){var n,o;return n=s(e,t,r),o=O.kBlockLengthPrefixCode[n...
  function u (line 3) | function u(e,t,r){var n;return e<q?(r+=Y[e],r&=3,n=t[r]+z[e]):n=e-q+1,n}
  function c (line 3) | function c(e,t){for(var r=e[t],n=t;n;--n)e[n]=e[n-1];e[0]=r}
  function h (line 3) | function h(e,t){var r,n=new Uint8Array(256);for(r=0;r<256;++r)n[r]=r;for...
  function w (line 3) | function w(e,t){this.alphabet_size=e,this.num_htrees=t,this.codes=new Ar...
  function p (line 3) | function p(e,t){var r,n,a,i={num_htrees:null,context_map:null},d=0;t.rea...
  function m (line 3) | function m(e,t,r,n,o,a,i){var d,l=2*r,f=r,u=s(t,r*V,i);d=0===u?o[l+(1&a[...
  function b (line 3) | function b(e,t,r,n,o,a){var i,s=o+1,d=r&o,l=a.pos_&k.IBUF_MASK;if(t<8||a...
  function g (line 3) | function g(e){var t=e.bit_pos_+7&-8,r=e.readBits(t-e.bit_pos_);return 0==r}
  function y (line 3) | function y(e){var t=new U(e),r=new k(t);n(r);var o=i(r);return o.meta_bl...
  function A (line 3) | function A(e,t){var r=new U(e);null==t&&(t=y(e));var n=new Uint8Array(t)...
  function v (line 3) | function v(e,t){var r,a,d,c,h,y,A,v,U,x=0,W=0,N=0,R=0,F=[16,15,11,4],P=0...
  function n (line 4) | function n(e,t){this.bits=e,this.value=t}
  function o (line 4) | function o(e,t){for(var r=1<<t-1;e&r;)r>>=1;return(e&r-1)+r}
  function a (line 4) | function a(e,t,r,o,a){do o-=r,e[t+o]=new n(a.bits,a.value);while(o>0)}
  function i (line 4) | function i(e,t,r){for(var n=1<<t-r;t<s&&(n-=e[t],!(n<=0));)++t,n<<=1;ret...
  function n (line 4) | function n(e,t){this.offset=e,this.nbits=t}
  function n (line 4) | function n(e){this.buffer=e,this.pos=0}
  function o (line 4) | function o(e){this.buffer=e,this.pos=0}
  function n (line 4) | function n(e,t,r){this.prefix=new Uint8Array(e.length),this.transform=t,...
  function o (line 4) | function o(e,t){return e[t]<192?(e[t]>=97&&e[t]<=122&&(e[t]^=32),1):e[t]...
  function n (line 4) | function n(e){var t=e.length;if(t%4>0)throw new Error("Invalid string. L...
  function o (line 4) | function o(e){return 3*e.length/4-n(e)}
  function a (line 4) | function a(e){var t,r,o,a,i,s,d=e.length;i=n(e),s=new u(3*d/4-i),o=i>0?d...
  function i (line 4) | function i(e){return l[e>>18&63]+l[e>>12&63]+l[e>>6&63]+l[63&e]}
  function s (line 4) | function s(e,t,r){for(var n,o=[],a=t;a<r;a+=3)n=(e[a]<<16)+(e[a+1]<<8)+e...
  function d (line 4) | function d(e){for(var t,r=e.length,n=r%3,o="",a=[],i=16383,d=0,f=r-n;d<f...

FILE: main/gams/gfiles/html5/drifthunters/TemplateData/UnityProgress.js
  function UnityProgress (line 1) | function UnityProgress(gameInstance, progress) {

FILE: main/gams/gfiles/html5/drifthunters/script.js
  function inFrame (line 1) | function inFrame () {

FILE: main/gams/gfiles/html5/evilglitch/b.js
  function cb (line 1) | function cb(a){a/=300;return 300*a*a+360}
  function Ha (line 1) | function Ha(a,b){return Math.atan2(b[1]-a[1],b[0]-a[0])}
  function Ra (line 1) | function Ra(a,b){return Math.sqrt(a*a+b*b)}
  function Q (line 1) | function Q(a){var b;b=k.VERTEX_SHADER;b=k.createShader(b);k.shaderSource...
  function ha (line 2) | function ha(a,b){return a[b]||(a[b]=k.getUniformLocation(a[0],b))}
  function db (line 2) | function db(){var a=k.createTexture();k.bindTexture(k.TEXTURE_2D,a);k.te...
  function Jb (line 2) | function Jb(a){k.activeTexture(k.TEXTURE0+
  function eb (line 3) | function eb(){var a=k.createFramebuffer();k.bindFramebuffer(k.FRAMEBUFFE...
  function Kb (line 3) | function Kb(){this.T=function(a){for(var b=0;24>b;b++)this[String.fromCh...
  function Lb (line 3) | function Lb(a,b,e){Sa.G.T(a);
  function la (line 4) | function la(a){a=a.split(Mb);this.frequency=la.M(a[0])||0;this.duration=...
  function A (line 4) | function A(a,b,e){this.C=a||new Ia;this.J();this.D=b||120;this.loop=!0;t...
  function I (line 5) | function I(a,b,q,h){e.moveTo(a,b);e.lineTo(a+q,b+h)}
  function fb (line 5) | function fb(a,b,q,h,m,k){e.save();e.beginPath();p(m);for(m=0;m<a.length;...
  function C (line 6) | function C(a,b,e,h,f,k){var l;l=l||f.length;k=k||0;for(var n=25>h?10:.5*...
  function gb (line 6) | function gb(a){return Math.round(a[0]/84)+"-"+Math.round(a[1]/84)}
  function Ta (line 6) | function Ta(a){for(var b={},e,h=0;9>h;h++)if(e=gb([a[0]+84*(h%3-1),a[1]+...
  function p (line 7) | function p(a,b,q){e[["strokeStyle","fillStyle","lineWidth"][b||0]]=q||hb...
  function ma (line 7) | function ma(a,b,e,h,f){k.bindFramebuffer(k.FRAMEBUFFER,a[0]);k.useProgra...
  function ib (line 7) | function ib(a,b){for(var e=[],h=0;h<b;h++){var f=a.slice();f[5]=.05*(h-b...
  function jb (line 7) | function jb(){ia={};Z=21;n=40;ea=!1;ja=0;v=Z*n;T=[];Ua=.3;l=[(800-v)/2,(...
  function mb (line 12) | function mb(){za&&(ya=[[0,-.5,-.25,-1,-.5,-.4,-.5,-.25,0,.25,.5,.4,.5,1,...
  function M (line 13) | function M(a,b,q,h,f){e.moveTo(a,b);e.lineTo(a+(h?f:q),b+(h?q:f))}
  function Xa (line 13) | function Xa(a,b){M(a,0,b,!0,0);M(0,a,b,void 0,0)}
  function ob (line 13) | function ob(){N=.01}
  function Aa (line 13) | function Aa(a,b){E[6]=30;Ya=b||30;aa=10;sa=a}
  function pb (line 13) | function pb(){return"I reached "+J.toFixed()+" "+(za?"#evilMode ":"")+"p...
  function w (line 13) | function w(a,b){return Math.random()*(a||1)+(b||0)}
  function lb (line 13) | function lb(){var a=w(10,5);E=[a,a,a,w(10,5),w(10,
  function La (line 14) | function La(a,b,e,h){14==h[2]&&(e*=2,O(Pb));ta.push([a,b,e,e,h])}
  function qb (line 14) | function qb(a,b){var e=ua([a[0]+10*Math.cos(Math.PI*b/3),a[1]+10*Math.si...
  function ua (line 14) | function ua(a){a=a.slice(0,2).concat(Ma[a[2]].slice(0));if(12==a[5]||14=...
  function Qb (line 14) | function Qb(a){if(.99<a)return 1;var b=1/a;return 100*a%b>b/2?1:0}
  function Ba (line 14) | function Ba(a,b){return a?w(2*b,-b):0}
  function Za (line 14) | function Za(a,b,f){e.moveTo(a[0]*f,b[0]*f);for(var h=
  function $a (line 15) | function $a(a,b,e,h,f,k){for(var l=-h;l<h;l++)oa.push([a,b,w(kb*l,e),f||...
  function rb (line 15) | function rb(a){Na||(Na=a);dt=Math.min(100,a-Na)/1E3;Na=a;ja++;if(Ca)Da++...

FILE: main/gams/gfiles/html5/factoryballsforever/factoryballsforever.js
  function mc_symbol_clone (line 4885) | function mc_symbol_clone() {
  function getMCSymbolPrototype (line 4893) | function getMCSymbolPrototype(symbol, nominalBounds, frameBounds) {
  function theplayClickEvent (line 14746) | function theplayClickEvent(e) {
  function preintroChecker (line 14763) | function preintroChecker(e) {
  function menuChecker (line 14856) | function menuChecker(e) {
  function menuLoop (line 14894) | function menuLoop(e) {
  function onNewPlayClickEvent (line 14905) | function onNewPlayClickEvent(e) {
  function onMusicClickEvent (line 14936) | function onMusicClickEvent(e) {
  function onSoundClickEvent (line 14950) | function onSoundClickEvent(e) {
  function onWwwClickEvent (line 14961) | function onWwwClickEvent(e) {
  function onTwitterClickEvent (line 14964) | function onTwitterClickEvent(e) {
  function onInstagramClickEvent (line 14967) | function onInstagramClickEvent(e) {
  function onFacebookClickEvent (line 14970) | function onFacebookClickEvent(e) {
  function onSteamClickEvent (line 14973) | function onSteamClickEvent(e) {
  function onItchioClickEvent (line 14976) | function onItchioClickEvent(e) {
  function onKartridgeClickEvent (line 14979) | function onKartridgeClickEvent(e) {
  function onAppleClickEvent (line 14982) | function onAppleClickEvent(e) {
  function onGoogleClickEvent (line 14985) | function onGoogleClickEvent(e) {
  function endMenuLoopPackSelect (line 14989) | function endMenuLoopPackSelect(e) {
  function noLevelSelect (line 15007) | function noLevelSelect(e) {
  function doosDownLoop (line 15012) | function doosDownLoop(e) {
  function initLevelSelect (line 15018) | function initLevelSelect(e) {
  function onLinksClickEvent (line 15048) | function onLinksClickEvent(e) {
  function onRechtsClickEvent (line 15053) | function onRechtsClickEvent(e) {
  function onContinueClickEvent (line 15058) | function onContinueClickEvent(e) {
  function endLevelSelect (line 15070) | function endLevelSelect() {
  function gameLoop (line 15176) | function gameLoop(e) {
  function instructieLogic (line 15849) | function instructieLogic() {
  function ballPress (line 15928) | function ballPress(e) {
  function prelogica (line 15933) | function prelogica (toolused) {
  function balSchuif (line 15953) | function balSchuif(e)  {
  function myEaseOut (line 15969) | function myEaseOut(t, b, c, d) {
  function myEaseIn (line 15972) | function myEaseIn(t, b, c, d) {
  function logica (line 15977) | function logica (toolused) {
  function dologica1 (line 15986) | function dologica1 (toolused) {
  function dologica2 (line 16742) | function dologica2 (toolused) {
  function dologica3 (line 17483) | function dologica3 (toolused) {
  function toolstackremove (line 17905) | function toolstackremove(tooltoremove) {
  function onTool1ClickEvent (line 17913) | function onTool1ClickEvent(e) {if (stateLevelLoop) prelogica(1);}
  function onTool2ClickEvent (line 17914) | function onTool2ClickEvent(e) {if (stateLevelLoop) prelogica(2);}
  function onTool3ClickEvent (line 17915) | function onTool3ClickEvent(e) {if (stateLevelLoop) prelogica(3);}
  function onTool4ClickEvent (line 17916) | function onTool4ClickEvent(e) {if (stateLevelLoop) prelogica(4);}
  function onTool5ClickEvent (line 17917) | function onTool5ClickEvent(e) {if (stateLevelLoop) prelogica(5);}
  function onTool6ClickEvent (line 17918) | function onTool6ClickEvent(e) {if (stateLevelLoop) prelogica(6);}
  function onTool7ClickEvent (line 17919) | function onTool7ClickEvent(e) {if (stateLevelLoop) prelogica(7);}
  function onTool8ClickEvent (line 17920) | function onTool8ClickEvent(e) {if (stateLevelLoop) prelogica(8);}
  function onTool9ClickEvent (line 17921) | function onTool9ClickEvent(e) {if (stateLevelLoop) prelogica(9);}
  function onTool10ClickEvent (line 17922) | function onTool10ClickEvent(e) {if (stateLevelLoop) prelogica(10);}
  function onTool11ClickEvent (line 17923) | function onTool11ClickEvent(e) {if (stateLevelLoop) prelogica(11);}
  function leveldone (line 17925) | function leveldone()  {
  function totalEndLoop (line 17942) | function totalEndLoop(e) {
  function levelEndLoop (line 18001) | function levelEndLoop(e) {
  function onQuitgameClickEvent (line 18061) | function onQuitgameClickEvent(e) {
  function enddChecker (line 18111) | function enddChecker(e) {
  function onendWwwClickEvent (line 18149) | function onendWwwClickEvent(e) {
  function onendTwitterClickEvent (line 18152) | function onendTwitterClickEvent(e) {
  function onendInstagramClickEvent (line 18155) | function onendInstagramClickEvent(e) {
  function onendFacebookClickEvent (line 18158) | function onendFacebookClickEvent(e) {
  function onendSteamClickEvent (line 18161) | function onendSteamClickEvent(e) {
  function onendItchioClickEvent (line 18164) | function onendItchioClickEvent(e) {
  function onendKartridgeClickEvent (line 18167) | function onendKartridgeClickEvent(e) {
  function onendAppleClickEvent (line 18170) | function onendAppleClickEvent(e) {
  function onendGoogleClickEvent (line 18173) | function onendGoogleClickEvent(e) {
  function resizeCanvas (line 18514) | function resizeCanvas() {

FILE: main/gams/gfiles/html5/fnaf1/Build/UnityLoader.js
  function n (line 1) | function n(e){if(!(this instanceof n))return new n(e);this.options=s.ass...
  function o (line 1) | function o(e,t){var r=new n(t);if(r.push(e,!0),r.err)throw r.msg||u[r.er...
  function a (line 1) | function a(e,t){return t=t||{},t.raw=!0,o(e,t)}
  function n (line 1) | function n(e,t){if(t<65537&&(e.subarray&&i||!e.subarray&&a))return Strin...
  function n (line 1) | function n(e){return(e>>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<...
  function o (line 1) | function o(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this....
  function a (line 1) | function a(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=...
  function i (line 1) | function i(e){var t;return e&&e.state?(t=e.state,t.wsize=0,t.whave=0,t.w...
  function s (line 1) | function s(e,t){var r,n;return e&&e.state?(n=e.state,t<0?(r=0,t=-t):(r=(...
  function d (line 1) | function d(e,t){var r,n;return e?(n=new o,e.state=n,n.window=null,r=s(e,...
  function l (line 1) | function l(e){return d(e,ye)}
  function u (line 1) | function u(e){if(ge){var t;for(w=new y.Buf32(512),b=new y.Buf32(32),t=0;...
  function c (line 1) | function c(e,t,r,n){var o,a=e.state;return null===a.window&&(a.wsize=1<<...
  function f (line 1) | function f(e,t){var r,o,a,i,s,d,l,f,h,p,m,w,b,me,we,be,ye,ge,ve,Ae,Ue,xe...
  function h (line 1) | function h(e){if(!e||!e.state)return N;var t=e.state;return t.window&&(t...
  function p (line 1) | function p(e,t){var r;return e&&e.state?(r=e.state,0===(2&r.wrap)?N:(r.h...
  function m (line 1) | function m(e,t){var r,n,o,a=t.length;return e&&e.state?(r=e.state,0!==r....
  function n (line 1) | function n(){this.input=null,this.next_in=0,this.avail_in=0,this.total_i...
  function n (line 1) | function n(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=...
  function n (line 1) | function n(e,t,r,n){for(var o=65535&e|0,a=e>>>16&65535|0,i=0;0!==r;){i=r...
  function n (line 1) | function n(){for(var e,t=[],r=0;r<256;r++){e=r;for(var n=0;n<8;n++)e=1&e...
  function o (line 1) | function o(e,t,r,n){var o=a,i=n+r;e^=-1;for(var s=n;s<i;s++)e=e>>>8^o[25...
  function n (line 1) | function n(e){this.buf_=new Uint8Array(a),this.input_=e,this.reset()}
  function n (line 1) | function n(e){var t;return 0===e.readBits(1)?16:(t=e.readBits(3),t>0?17+...
  function o (line 1) | function o(e){if(e.readBits(1)){var t=e.readBits(3);return 0===t?1:e.rea...
  function a (line 1) | function a(){this.meta_block_length=0,this.input_end=0,this.is_uncompres...
  function i (line 1) | function i(e){var t,r,n,o=new a;if(o.input_end=e.readBits(1),o.input_end...
  function s (line 1) | function s(e,t,r){var n;return r.fillBitWindow(),t+=r.val_>>>r.bit_pos_&...
  function d (line 1) | function d(e,t,r,n){for(var o=0,a=M,i=0,s=0,d=32768,l=[],u=0;u<32;u++)l....
  function l (line 1) | function l(e,t,r,n){var o,a=0,i=new Uint8Array(e);if(n.readMoreInput(),o...
  function u (line 2) | function u(e,t,r){var n,o;return n=s(e,t,r),o=O.kBlockLengthPrefixCode[n...
  function c (line 2) | function c(e,t,r){var n;return e<Z?(r+=Y[e],r&=3,n=t[r]+z[e]):n=e-Z+1,n}
  function f (line 2) | function f(e,t){for(var r=e[t],n=t;n;--n)e[n]=e[n-1];e[0]=r}
  function h (line 2) | function h(e,t){var r,n=new Uint8Array(256);for(r=0;r<256;++r)n[r]=r;for...
  function p (line 2) | function p(e,t){this.alphabet_size=e,this.num_htrees=t,this.codes=new Ar...
  function m (line 2) | function m(e,t){var r,n,a,i={num_htrees:null,context_map:null},d=0;t.rea...
  function w (line 2) | function w(e,t,r,n,o,a,i){var d,l=2*r,u=r,c=s(t,r*q,i);d=0===c?o[l+(1&a[...
  function b (line 2) | function b(e,t,r,n,o,a){var i,s=o+1,d=r&o,l=a.pos_&E.IBUF_MASK;if(t<8||a...
  function y (line 2) | function y(e){var t=e.bit_pos_+7&-8,r=e.readBits(t-e.bit_pos_);return 0==r}
  function g (line 2) | function g(e){var t=new U(e),r=new E(t);n(r);var o=i(r);return o.meta_bl...
  function v (line 2) | function v(e,t){var r=new U(e);null==t&&(t=g(e));var n=new Uint8Array(t)...
  function A (line 2) | function A(e,t){var r,a,d,f,h,g,v,A,U,x=0,L=0,M=0,N=0,P=[16,15,11,4],D=0...
  function n (line 3) | function n(e,t){this.bits=e,this.value=t}
  function o (line 3) | function o(e,t){for(var r=1<<t-1;e&r;)r>>=1;return(e&r-1)+r}
  function a (line 3) | function a(e,t,r,o,a){do o-=r,e[t+o]=new n(a.bits,a.value);while(o>0)}
  function i (line 3) | function i(e,t,r){for(var n=1<<t-r;t<s&&(n-=e[t],!(n<=0));)++t,n<<=1;ret...
  function n (line 3) | function n(e,t){this.offset=e,this.nbits=t}
  function n (line 3) | function n(e){this.buffer=e,this.pos=0}
  function o (line 3) | function o(e){this.buffer=e,this.pos=0}
  function n (line 3) | function n(e,t,r){this.prefix=new Uint8Array(e.length),this.transform=t,...
  function o (line 3) | function o(e,t){return e[t]<192?(e[t]>=97&&e[t]<=122&&(e[t]^=32),1):e[t]...
  function n (line 3) | function n(e){var t=e.length;if(t%4>0)throw new Error("Invalid string. L...
  function o (line 3) | function o(e){return 3*e.length/4-n(e)}
  function a (line 3) | function a(e){var t,r,o,a,i,s,d=e.length;i=n(e),s=new c(3*d/4-i),o=i>0?d...
  function i (line 3) | function i(e){return l[e>>18&63]+l[e>>12&63]+l[e>>6&63]+l[63&e]}
  function s (line 3) | function s(e,t,r){for(var n,o=[],a=t;a<r;a+=3)n=(e[a]<<16)+(e[a+1]<<8)+e...
  function d (line 3) | function d(e){for(var t,r=e.length,n=r%3,o="",a=[],i=16383,d=0,u=r-n;d<u...
  function a (line 3) | function a(e,t){e=e|0;t=t|0;var r=0;for(r=o[1024>>2]|0;t;e=e+1|0,t=t-1|0...
  function o (line 3) | function o(e,t){e=e|0;t=t|0;var r=0,o=0,a=0,i=0,s=0,d=0,l=0,u=0,c=0,f=0,...
  function o (line 3) | function o(e,t){e=e|0;t=t|0;var r=0,o=0,a=0,i=0,s=0,d=0,l=0,u=0,c=0,f=0,...
  function r (line 4) | function r(n){r.called||(r.called=!0,e.indexedDB=n,t.complete())}
  function n (line 4) | function n(e,r){if("string"==typeof e&&!(e=document.getElementById(e)))r...
  function e (line 4) | function e(e){console.log("[UnityCache] "+e)}
  function t (line 4) | function t(e){return t.link=t.link||document.createElement("a"),t.link.h...
  function r (line 4) | function r(e){var t=window.location.href.match(/^[a-z]+:\/\/[^\/]+/);ret...
  function n (line 4) | function n(){function t(t){if("undefined"==typeof n.database)for(n.datab...
  function o (line 4) | function o(e,t,r,n,o){var a={url:e,version:s.version,company:t,product:r...
  function a (line 4) | function a(t){this.cache={enabled:!1},t&&(this.cache.control=t.cacheCont...

FILE: main/gams/gfiles/html5/fnaf1/TemplateData/UnityProgress.js
  function UnityProgress (line 1) | function UnityProgress(gameInstance, progress) {

FILE: main/gams/gfiles/html5/fnaf1/script.js
  function inFrame (line 1) | function inFrame () {

FILE: main/gams/gfiles/html5/hextris/js/Block.js
  function Block (line 1) | function Block(fallingLane, color, iter, distFromHex, settled) {
  function findCenterOfBlocks (line 178) | function findCenterOfBlocks(arr) {

FILE: main/gams/gfiles/html5/hextris/js/Hex.js
  function Hex (line 1) | function Hex(sideLength) {
  function arrayToColor (line 168) | function arrayToColor(arr){

FILE: main/gams/gfiles/html5/hextris/js/Text.js
  function Text (line 1) | function Text(x,y,text,font,color,incrementFunction){
  function fadeUpAndOut (line 23) | function fadeUpAndOut(text){

FILE: main/gams/gfiles/html5/hextris/js/checking.js
  function search (line 1) | function search(twoD,oneD){
  function floodFill (line 11) | function floodFill(hex, side, index, deleting) {
  function consolidateBlocks (line 40) | function consolidateBlocks(hex,side,index){

FILE: main/gams/gfiles/html5/hextris/js/comboTimer.js
  function drawTimer (line 1) | function drawTimer() {
  function calcSide (line 24) | function calcSide(startVertex,endVertex,fraction,offset){
  function drawSide (line 54) | function drawSide(vertexes){

FILE: main/gams/gfiles/html5/hextris/js/initialization.js
  function initialize (line 4) | function initialize(a) {
  function startBtnHandler (line 213) | function startBtnHandler() {
  function handlePause (line 260) | function handlePause() {
  function handleTap (line 266) | function handleTap(e) {
  function handleClick (line 270) | function handleClick(e) {
  function handleTapBefore (line 274) | function handleTapBefore(e) {
  function handleClickBefore (line 284) | function handleClickBefore(e) {

FILE: main/gams/gfiles/html5/hextris/js/input.js
  function addKeyListeners (line 1) | function addKeyListeners() {
  function inside (line 188) | function inside (point, vs) {
  function handleClickTap (line 207) | function handleClickTap(x,y) {

FILE: main/gams/gfiles/html5/hextris/js/main.js
  function scaleCanvas (line 1) | function scaleCanvas() {
  function setBottomContainer (line 36) | function setBottomContainer() {
  function set_score_pos (line 45) | function set_score_pos() {
  function toggleDevTools (line 56) | function toggleDevTools() {
  function resumeGame (line 60) | function resumeGame() {
  function checkVisualElements (line 76) | function checkVisualElements(arg) {
  function hideUIElements (line 84) | function hideUIElements() {
  function init (line 90) | function init(b) {
  function addNewBlock (line 187) | function addNewBlock(blocklane, color, iter, distFromHex, settled) { //l...
  function exportHistory (line 208) | function exportHistory() {
  function setStartScreen (line 213) | function setStartScreen() {
  function animLoop (line 232) | function animLoop() {
  function enableRestart (line 319) | function enableRestart() {
  function isInfringing (line 323) | function isInfringing(hex) {
  function checkGameOver (line 337) | function checkGameOver() {
  function showHelp (line 352) | function showHelp() {

FILE: main/gams/gfiles/html5/hextris/js/math.js
  function rotatePoint (line 1) | function rotatePoint(x, y, theta) {
  function randInt (line 12) | function randInt(min, max) {

FILE: main/gams/gfiles/html5/hextris/js/render.js
  function render (line 1) | function render() {
  function renderBeginningText (line 68) | function renderBeginningText() {
  function drawKey (line 95) | function drawKey(key, x, y) {

FILE: main/gams/gfiles/html5/hextris/js/save-state.js
  function exportSaveState (line 1) | function exportSaveState() {
  function descaleBlock (line 35) | function descaleBlock(b) {
  function writeHighScores (line 39) | function writeHighScores() {
  function clearSaveState (line 57) | function clearSaveState() {
  function isStateSaved (line 61) | function isStateSaved() {

FILE: main/gams/gfiles/html5/hextris/js/update.js
  function update (line 3) | function update(dt) {

FILE: main/gams/gfiles/html5/hextris/js/view.js
  function easeOutCubic (line 2) | function easeOutCubic(t, b, c, d) {
  function renderText (line 6) | function renderText(x, y, fontSize, color, text, font) {
  function drawScoreboard (line 20) | function drawScoreboard() {
  function clearGameBoard (line 61) | function clearGameBoard() {
  function drawPolygon (line 65) | function drawPolygon(x, y, sides, radius, theta, fillColor, lineWidth, l...
  function toggleClass (line 88) | function toggleClass(element, active) {
  function showText (line 96) | function showText(text) {
  function setMainMenu (line 124) | function setMainMenu() {
  function hideText (line 138) | function hideText() {
  function gameOverDisplay (line 144) | function gameOverDisplay() {
  function updateHighScores (line 164) | function updateHighScores (){
  function pause (line 172) | function pause(o) {

FILE: main/gams/gfiles/html5/hextris/js/wavegen.js
  function blockDestroyed (line 1) | function blockDestroyed() {
  function waveGen (line 17) | function waveGen(hex) {

FILE: main/gams/gfiles/html5/hextris/vendor/jquery.js
  function M (line 2) | function M(e){var t=e.length,n=b.type(e);return b.isWindow(e)?!1:1===e.n...
  function F (line 2) | function F(e){var t=_[e]={};return b.each(e.match(w)||[],function(e,n){t...
  function P (line 2) | function P(e,n,r,i){if(b.acceptData(e)){var o,a,s=b.expando,u="string"==...
  function R (line 2) | function R(e,t,n){if(b.acceptData(e)){var r,i,o,a=e.nodeType,s=a?b.cache...
  function W (line 2) | function W(e,n,r){if(r===t&&1===e.nodeType){var i="data-"+n.replace(B,"-...
  function $ (line 2) | function $(e){var t;for(t in e)if(("data"!==t||!b.isEmptyObject(e[t]))&&...
  function it (line 2) | function it(){return!0}
  function ot (line 2) | function ot(){return!1}
  function rt (line 3) | function rt(e){return Y.test(e+"")}
  function it (line 3) | function it(){var e,t=[];return e=function(n,r){return t.push(n+=" ")>i....
  function ot (line 3) | function ot(e){return e[x]=!0,e}
  function at (line 3) | function at(e){var t=p.createElement("div");try{return e(t)}catch(n){ret...
  function st (line 3) | function st(e,t,n,r){var i,o,a,s,u,l,f,g,m,v;if((t?t.ownerDocument||t:w)...
  function ut (line 3) | function ut(e,t){var n=t&&e,r=n&&(~t.sourceIndex||j)-(~e.sourceIndex||j)...
  function lt (line 3) | function lt(e){return function(t){var n=t.nodeName.toLowerCase();return"...
  function ct (line 3) | function ct(e){return function(t){var n=t.nodeName.toLowerCase();return(...
  function pt (line 3) | function pt(e){return ot(function(t){return t=+t,ot(function(n,r){var i,...
  function ft (line 3) | function ft(e,t){var n,r,o,a,s,u,l,c=E[e+" "];if(c)return t?0:c.slice(0)...
  function dt (line 3) | function dt(e){var t=0,n=e.length,r="";for(;n>t;t++)r+=e[t].value;return r}
  function ht (line 3) | function ht(e,t,n){var i=t.dir,o=n&&"parentNode"===i,a=C++;return t.firs...
  function gt (line 3) | function gt(e){return e.length>1?function(t,n,r){var i=e.length;while(i-...
  function mt (line 3) | function mt(e,t,n,r,i){var o,a=[],s=0,u=e.length,l=null!=t;for(;u>s;s++)...
  function yt (line 3) | function yt(e,t,n,r,i,o){return r&&!r[x]&&(r=yt(r)),i&&!i[x]&&(i=yt(i,o)...
  function vt (line 3) | function vt(e){var t,n,r,o=e.length,a=i.relative[e[0].type],s=a||i.relat...
  function bt (line 3) | function bt(e,t){var n=0,o=t.length>0,a=e.length>0,s=function(s,u,c,f,d)...
  function xt (line 3) | function xt(e,t,n){var r=0,i=t.length;for(;i>r;r++)st(e,t[r],n);return n}
  function wt (line 3) | function wt(e,t,n,r){var o,a,u,l,c,p=ft(e);if(!r&&1===p.length){if(a=p[0...
  function Tt (line 3) | function Tt(){}
  function pt (line 3) | function pt(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}
  function ft (line 3) | function ft(e,t,n){if(t=t||0,b.isFunction(t))return b.grep(e,function(e,...
  function dt (line 3) | function dt(e){var t=ht.split("|"),n=e.createDocumentFragment();if(n.cre...
  function Lt (line 3) | function Lt(e,t){return e.getElementsByTagName(t)[0]||e.appendChild(e.ow...
  function Ht (line 3) | function Ht(e){var t=e.getAttributeNode("type");return e.type=(t&&t.spec...
  function qt (line 3) | function qt(e){var t=Et.exec(e.type);return t?e.type=t[1]:e.removeAttrib...
  function Mt (line 3) | function Mt(e,t){var n,r=0;for(;null!=(n=e[r]);r++)b._data(n,"globalEval...
  function _t (line 3) | function _t(e,t){if(1===t.nodeType&&b.hasData(e)){var n,r,i,o=b._data(e)...
  function Ft (line 3) | function Ft(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCas...
  function Ot (line 3) | function Ot(e,n){var r,o,a=0,s=typeof e.getElementsByTagName!==i?e.getEl...
  function Bt (line 3) | function Bt(e){Nt.test(e.type)&&(e.defaultChecked=e.checked)}
  function tn (line 4) | function tn(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.sl...
  function nn (line 4) | function nn(e,t){return e=t||e,"none"===b.css(e,"display")||!b.contains(...
  function rn (line 4) | function rn(e,t){var n,r,i,o=[],a=0,s=e.length;for(;s>a;a++)r=e[a],r.sty...
  function on (line 4) | function on(e,t,n){var r=Vt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[...
  function an (line 4) | function an(e,t,n,r,i){var o=n===(r?"border":"content")?4:"width"===t?1:...
  function sn (line 4) | function sn(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o...
  function un (line 4) | function un(e){var t=o,n=Gt[e];return n||(n=ln(e,t),"none"!==n&&n||(Pt=(...
  function ln (line 4) | function ln(e,t){var n=b(t.createElement(e)).appendTo(t.body),r=b.css(n[...
  function gn (line 4) | function gn(e,t,n,r){var i;if(b.isArray(t))b.each(t,function(t,i){n||pn....
  function Hn (line 4) | function Hn(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var ...
  function qn (line 4) | function qn(e,n,r,i){var o={},a=e===jn;function s(u){var l;return o[u]=!...
  function Mn (line 4) | function Mn(e,n){var r,i,o=b.ajaxSettings.flatOptions||{};for(i in n)n[i...
  function k (line 4) | function k(e,n,r,i){var c,y,v,w,T,C=n;2!==x&&(x=2,s&&clearTimeout(s),l=t...
  function _n (line 4) | function _n(e,n,r){var i,o,a,s,u=e.contents,l=e.dataTypes,c=e.responseFi...
  function Fn (line 4) | function Fn(e,t){var n,r,i,o,a={},s=0,u=e.dataTypes.slice(),l=u[0];if(e....
  function In (line 4) | function In(){try{return new e.XMLHttpRequest}catch(t){}}
  function zn (line 4) | function zn(){try{return new e.ActiveXObject("Microsoft.XMLHTTP")}catch(...
  function Kn (line 4) | function Kn(){return setTimeout(function(){Xn=t}),Xn=b.now()}
  function Zn (line 4) | function Zn(e,t){b.each(t,function(t,n){var r=(Qn[t]||[]).concat(Qn["*"]...
  function er (line 4) | function er(e,t,n){var r,i,o=0,a=Gn.length,s=b.Deferred().always(functio...
  function tr (line 4) | function tr(e,t){var n,r,i,o,a;for(i in e)if(r=b.camelCase(i),o=t[r],n=e...
  function nr (line 4) | function nr(e,t,n){var r,i,o,a,s,u,l,c,p,f=this,d=e.style,h={},g=[],m=e....
  function rr (line 4) | function rr(e,t,n,r,i){return new rr.prototype.init(e,t,n,r,i)}
  function ir (line 4) | function ir(e,t){var n,r={height:e},i=0;for(t=t?1:0;4>i;i+=2-t)n=Zt[i],r...
  function or (line 4) | function or(e){return b.isWindow(e)?e:9===e.nodeType?e.defaultView||e.pa...

FILE: main/gams/gfiles/html5/hextris/vendor/js.cookie.js
  function extend (line 22) | function extend () {
  function init (line 34) | function init (converter) {

FILE: main/gams/gfiles/html5/konnekt/min.js
  method constructor (line 1) | constructor(e=0,t=0,n=0){this.x=e,this.y=t,this.z=n}
  method cpy (line 1) | cpy(){return oe(this.x,this.y,this.z)}
  method add (line 1) | add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this}
  method mul (line 1) | mul(e){return this.x*=e,this.y*=e,this.z*=e,this}
  method times (line 1) | times(e){return this.cpy().mul(e)}
  method minus (line 1) | minus(e){return oe(this.x-e.x,this.y-e.y,this.z-e.z)}
  method to (line 1) | to(e){return e.minus(this)}
  method dist (line 1) | dist(e){return this.minus(e).length()}
  method dot (line 1) | dot(e){return this.x*e.x+this.y*e.y+this.z*e.z}
  method cross (line 1) | cross(e){return oe(this.y*e.z-this.z*e.y,this.z*e.x-this.x*e.z,this.x*e....
  method length (line 1) | length(){return fe(this.x*this.x+this.y*this.y+this.z*this.z)}
  method norm (line 1) | norm(){var e;return e=this.length(),0===e?(this.x=0,this.y=0,this.z=0):(...
  method angle (line 1) | angle(e){return Math.acos(b(-1,1,this.dot(e)/fe(this.length()*e.length()...
  method constructor (line 1) | constructor(e,t,n,s){this.x=e||0,this.y=t||0,this.z=n||0,this.w=null==s?...
  method copy (line 1) | copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this.w=e.w,this}
  method axis (line 1) | static axis(t,n=0){var i,d;return i=n/2,d=be(i),new e(t.x*d,t.y*d,t.z*d,...
  method rotate (line 1) | rotate(e){var t,n,s,i,d,r,o;return d=e.x,r=e.y,o=e.z,n=this.w*d+this.y*o...
  method length (line 1) | length(){return fe(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this...
  method zero (line 1) | zero(){return ce(this.x)&&ce(this.y)&&ce(this.z)}
  method norm (line 1) | norm(){var e;return e=this.length(),0===e?(this.x=0,this.y=0,this.z=0,th...
  method mul (line 1) | mul(e){var t,n,s,i;return n=this.x,s=this.y,i=this.z,t=this.w,this.x=n*e...
  method slerp (line 1) | slerp(e,n){var t,i,d,r,o,a,u,l,c,m,p;return 0===n?this:1===n?this.copy(e...
  method constructor (line 1) | constructor(){}
  method load (line 1) | load(){var e;this.cache={prefs:"prefs",volume:.03125};try{return this.re...
  method loadMenu (line 1) | loadMenu(){var e;if(void 0===("undefined"!=typeof le&&null!==le?le.level...
  method read (line 1) | read(){var e,t,n;return n=this.db.transaction(["prefs"],"readonly"),t=n....
  method write (line 1) | write(){var e,t,n;return n=this.db.transaction(["prefs"],"readwrite"),t=...
  method clear (line 1) | clear(){var e;return this.cache={prefs:"prefs",volume:null==(e=this.cach...
  method set (line 1) | set(e,t){if(this.cache[e]=t,this.db)return this.write()}
  method get (line 1) | get(e,t){var n;return null==(n=this.cache[e])?t:n}
  method constructor (line 1) | constructor(e,t,n){var s;this.piano2=this.piano2.bind(this),this.organ2=...
  method initBuffers (line 1) | initBuffers(){return this.sampleLength=44100*this.config.duration,this.s...
  method createBuffers (line 1) | createBuffers(){return this.samples=Array(108)}
  method playNote (line 1) | playNote(e){var t,n,s,d,r,o,a,l,c,m,p,v,h,g;if(null==this.samples[e])for...
  method freq (line 1) | freq(e){return this.freqs[e%12]/ve(2,8-e/12).toFixed(3)}
  method setDuration (line 1) | setDuration(e){if(this.config.duration!==e)return this.config.duration=e...
  method fmod (line 1) | fmod(e,t){return e%t}
  method sign (line 1) | sign(e){return 0<e&&1||-1}
  method frac (line 1) | frac(e){return e%1}
  method sqr (line 1) | sqr(e,t){return be(t)>e?1:-1}
  method step (line 1) | step(e,t){return t>=e&&1||0}
  method over (line 1) | over(e,t){return 1-(1-e)*(1-t)}
  method mix (line 1) | mix(e,t,n){return e+(t-e)*ke(we(n,0),1)}
  method saw (line 1) | saw(e,t){var n;return n=e%1,n<t?n/t:1-(n-t)/(1-t)}
  method grad (line 1) | grad(e,t){return e=e<<13^e,e=e*(15731*(e*e)+789221)+1376312589,536870912...
  method noise (line 1) | noise(e){var t,n,s,d,r;return d=he(e),s=e-d,r=s*s*s*(s*(6*s-15)+10),t=th...
  method piano1 (line 1) | piano1(e,t,n){var s,i,r;return i=t*e,r=.6*be(1*i)*pe(-8e-4*i),r+=.3*be(2...
  method piano2 (line 1) | piano2(e,n,s){var i,o,u,l,c,m,p,v;return e+=15e-5*this.noise(12*e),c=e,l...
  method piano3 (line 1) | piano3(e,t,n){var s,i,r,o,u;return o=1-e,s=be(.5*(e*t))*Math.log(e+.3)*o...
  method piano4 (line 1) | piano4(e,t,n){var s;return s=be(t*e),s*=1-n*n*n*n}
  method piano5 (line 1) | piano5(e,t,n){var s,i;return s=t*e,i=.6*be(1*s)*pe(-8e-4*s),i+=.3*be(2*s...
  method organ1 (line 1) | organ1(e,t,n){var s,i;return i=.6*ge(t*e)*pe(-4*e),i+=.4*ge(2*t*e)*pe(-3...
  method organ2 (line 1) | organ2(e,t,n){var s,i,d,r,o;return r=t*e,s=.5+.5*ge(0+12*e),i=.5+.5*ge(1...
  method bell1 (line 1) | bell1(e,t,n){var s,i;return s=t*e,i=.1*pe(-e/1)*be(.56*s),i+=.067*pe(-e/...
  method bell2 (line 1) | bell2(e,t,n){var s,i;return s=t*e,i=.1*pe(-e/1)*be(.56*s),i+=.067*pe(-e/...
  method bell3 (line 1) | bell3(e,t,n){var s,i;return s=t*e,i=0,i+=.1*pe(-e/1)*be(.25*s),i+=.2*pe(...
  method bell4 (line 1) | bell4(e,t,n){var s,i;return s=t*e,i=0,i+=.1*pe(-e/.9)*be(.62*s),i+=.2*pe...
  method string (line 1) | string(e,t,n){var s,i,d;return i=t*e,s=be(.251*i)*ye,d=.5*be(1*i+s)*pe(-...
  method flute (line 1) | flute(e,t,n){var s,i;return i=6*n*pe(-2*n)*be(t*e),i*=.6+.4*be(32*(1-n))...
  method constructor (line 1) | constructor(){this.volDown=this.volDown.bind(this),this.volUp=this.volUp...
  method play (line 1) | play(e,t,n=0){return this.synt[e].playNote(function(){return"draw"===t?3...
  method setSynt (line 1) | setSynt(e){var t,n,s;for(t in n=[],e)s=e[t],n.push(this.synt[t]=new a(s,...
  method volDown (line 1) | volDown(){return .0625>this.vol?this.volume(0):this.volume(this.vol/2)}
  method volUp (line 1) | volUp(){return this.volume(b(.03125,1,2*this.vol))}
  method volume (line 1) | volume(e){return this.vol=e,q(this.vol),this.gain.gain.value=this.vol,G....
  method constructor (line 1) | constructor(){this.maxSmpl=300,this.smpls={bot:[],usr:[]},this.g=l("g"),...
  method sample (line 1) | sample(){var e,t,n,i,r,a,l,c,m,p,v,h,g;for(a=function(e){return 60*(.5-e...
  method plot (line 1) | plot(){return this.g.setAttribute("transform",`translate(${Q.size.x-60-t...
  method constructor (line 1) | constructor(e,t){var n,s,d;for(this.dot=e,this.units=me(t/3),this.sparks...
  method upd (line 1) | upd(){var e,t,n,i,d,r,o,a,l,c,m,h,g,b;if(o=re(this.dot.v),this.g.setAttr...
  method constructor (line 1) | constructor(e){this.onTimer=this.onTimer.bind(this),this.v=e,this.minUni...
  method startTimer (line 1) | startTimer(e,t="send",n=0){return this.snd=t,this.cst=n,this.targetUnits...
  method onTimer (line 1) | onTimer(){if(!le.pause)return se.play(this.own,this.snd,this.cst),this.t...
  method setUnits (line 1) | setUnits(e){return this.units=e,this.targetUnits=this.units,this.drawPie()}
  method addUnit (line 1) | addUnit(e=1){if(0!==e)return this.targetUnits=b(0,360,this.targetUnits+e...
  method drawPie (line 1) | drawPie(){var e,t,n;return this.pie||(this.pie=m(this.g,"path",{class:"p...
  method depth (line 1) | depth(){return(this.v.z+1)/2}
  method zdepth (line 1) | zdepth(){return this.depth()}
  method radius (line 1) | radius(){return(this.depth()+.3)/1.5*Q.radius/20}
  method raise (line 1) | raise(){return this.g.parentNode.appendChild(this.g)}
  method closest (line 1) | closest(){return le.dots.slice(0).sort((e,t)=>this.dist(e)-this.dist(t))...
  method dist (line 1) | dist(e){return this.v.angle(e.v)}
  method neutralize (line 1) | neutralize(){return this.own="",this.units=0,this.targetUnits=0,this.c.c...
  method linked (line 1) | linked(e){return 0<=Ue.call(this.n,e)||0<=Ue.call(e.n,this)}
  method unlink (line 1) | unlink(){return le.lines=le.lines.filter(e=>e.s!==this&&e.e!==this||(e.e...
  method link (line 1) | link(e){var t,n,i,d,o,a,u;if(!(e===this||this.targetUnits<this.minUnits|...
  method setOwn (line 1) | setOwn(e){return this.own=e,this.c.classList.toggle("bot","bot"===this.o...
  method send (line 1) | send(e){var t,n,i,d,r,o;return i=null==(d=le.tmpline.usr)?void 0:d.e,f("...
  method rot (line 1) | rot(e){return this.v=e.rotate(this.v)}
  method upd (line 1) | upd(){var e;return e=re(this.v),this.g.setAttribute("transform",`transla...
  method constructor (line 1) | constructor(){this.speed=4,this.tsum=0}
  method tmpl (line 1) | tmpl(e,t){return f("bot"),le.tmpline.bot=new s(e,t,!0),le.update=1}
  method anim (line 1) | anim(e){var t,n,s,i,r,o;if(this.tsum+=e,this.tsum>60*this.speed){if(i=le...
  method constructor (line 1) | constructor(e,t,n){var s,i;this.s=e,this.e=t,this.c=l("path",{class:"lin...
  method del (line 1) | del(){return this.s.c.classList.remove("src"),this.c.remove()}
  method depth (line 1) | depth(){return(this.s.depth()+this.e.depth())/2}
  method zdepth (line 1) | zdepth(){return ke(this.s.depth(),this.e.depth())-.001}
  method raise (line 1) | raise(){var e;return null==(e=this.c.parentNode)?void 0:e.appendChild(th...
  method upd (line 1) | upd(){return this.c.setAttribute("d",p(this.s.v,this.e.v)),v(this),this....

FILE: main/gams/gfiles/html5/pacman/bundle.js
  function n (line 1) | function n(i){if(e[i])return e[i].exports;var o=e[i]={i:i,l:!1,exports:{...
  function t (line 1) | function t(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.en...
  function t (line 1) | function t(e){var n=this;!function(t,e){if(!(t instanceof e))throw new T...
  function t (line 1) | function t(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.en...
  function e (line 1) | function e(t){!function(t,e){if(!(t instanceof e))throw new TypeError("C...
  function r (line 1) | function r(t){return t&&t.__esModule?t:{default:t}}
  function t (line 1) | function t(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.en...
  function a (line 1) | function a(t){return t&&t.__esModule?t:{default:t}}
  function t (line 1) | function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("C...
  function t (line 1) | function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Ca...
  function t (line 1) | function t(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.en...
  function r (line 1) | function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a ...
  function a (line 1) | function a(t,e){if(!t)throw new ReferenceError("this hasn't been initial...
  function e (line 1) | function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0...
  function t (line 1) | function t(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.en...
  function e (line 1) | function e(t){!function(t,e){if(!(t instanceof e))throw new TypeError("C...
  function t (line 1) | function t(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.en...
  function s (line 1) | function s(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a ...
  function r (line 1) | function r(t,e){if(!t)throw new ReferenceError("this hasn't been initial...
  function e (line 1) | function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0...
  function r (line 1) | function r(t){return t&&t.__esModule?t:{default:t}}
  function t (line 1) | function t(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.en...
  function a (line 1) | function a(t){return t&&t.__esModule?t:{default:t}}
  function e (line 1) | function e(t){!function(t,e){if(!(t instanceof e))throw new TypeError("C...
  function e (line 1) | function e(t){!function(t,e){if(!(t instanceof e))throw new TypeError("C...
  function d (line 1) | function d(t,e){for(var n=0;n<t.length;n++){var i=t[n],o=s[i.id];if(o){o...
  function p (line 1) | function p(t,e){for(var n=[],i={},o=0;o<t.length;o++){var s=t[o],r=e.bas...
  function m (line 1) | function m(t,e){var n=u(t.insertInto);if(!n)throw new Error("Couldn't fi...
  function y (line 1) | function y(t){if(null===t.parentNode)return!1;t.parentNode.removeChild(t...
  function g (line 1) | function g(t){var e=document.createElement("style");return void 0===t.at...
  function v (line 1) | function v(t,e){Object.keys(e).forEach((function(n){t.setAttribute(n,e[n...
  function b (line 1) | function b(t,e){var n,i,o,s;if(e.transform&&t.css){if(!(s=e.transform(t....
  function O (line 1) | function O(t,e,n,i){var o=n?"":i.css;if(t.styleSheet)t.styleSheet.cssTex...
  function k (line 1) | function k(t,e){var n=e.css,i=e.media;if(i&&t.setAttribute("media",i),t....
  function E (line 1) | function E(t,e,n){var i=n.css,o=n.sourceMap,s=void 0===e.convertToAbsolu...
  function t (line 1) | function t(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.en...
  function v (line 1) | function v(t){return t&&t.__esModule?t:{default:t}}
  function b (line 1) | function b(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a ...
  function _ (line 1) | function _(t,e){if(!t)throw new ReferenceError("this hasn't been initial...
  function e (line 1) | function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0...
  function t (line 1) | function t(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.en...
  function u (line 1) | function u(t){return t&&t.__esModule?t:{default:t}}
  function e (line 1) | function e(t){!function(t,e){if(!(t instanceof e))throw new TypeError("C...
  function s (line 1) | function s(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a ...
  function r (line 1) | function r(t,e){if(!t)throw new ReferenceError("this hasn't been initial...
  function e (line 1) | function e(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0...
  function r (line 1) | function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a ...
  function a (line 1) | function a(t,e){if(!t)throw new ReferenceError("this hasn't been initial...
  function e (line 1) | function e(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0...
  function t (line 1) | function t(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.en...
  function t (line 1) | function t(e,n){!function(t,e){if(!(t instanceof e))throw new TypeError(...
  function t (line 1) | function t(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.en...
  function t (line 1) | function t(e){var n=this;!function(t,e){if(!(t instanceof e))throw new T...
  function t (line 1) | function t(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.en...
  function t (line 1) | function t(e){if(function(t,e){if(!(t instanceof e))throw new TypeError(...
  function t (line 1) | function t(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.en...
  function t (line 1) | function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("C...
  function t (line 1) | function t(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.en...
  function t (line 1) | function t(e,n,i,o){!function(t,e){if(!(t instanceof e))throw new TypeEr...
  function t (line 1) | function t(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.en...
  function h (line 1) | function h(t){return t&&t.__esModule?t:{default:t}}
  function e (line 1) | function e(t){!function(t,e){if(!(t instanceof e))throw new TypeError("C...
  function t (line 1) | function t(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.en...
  function e (line 1) | function e(t){return function(t,e){if(!(t instanceof e))throw new TypeEr...
  function a (line 1) | function a(t){return t&&t.__esModule?t:{default:t}}
  function t (line 1) | function t(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.en...
  function c (line 1) | function c(t){return t&&t.__esModule?t:{default:t}}
  function e (line 1) | function e(t){!function(t,e){if(!(t instanceof e))throw new TypeError("C...
  function t (line 1) | function t(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.en...
  function e (line 1) | function e(t){!function(t,e){if(!(t instanceof e))throw new TypeError("C...
  function t (line 1) | function t(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.en...
  function r (line 1) | function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a ...
  function a (line 1) | function a(t,e){if(!t)throw new ReferenceError("this hasn't been initial...
  function e (line 1) | function e(){return r(this,e),a(this,(e.__proto__||Object.getPrototypeOf...
  function t (line 1) | function t(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.en...
  function s (line 1) | function s(t){return t&&t.__esModule?t:{default:t}}
  function e (line 1) | function e(t){!function(t,e){if(!(t instanceof e))throw new TypeError("C...
  function t (line 1) | function t(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.en...
  function a (line 1) | function a(t){return t&&t.__esModule?t:{default:t}}
  function u (line 1) | function u(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a ...
  function l (line 1) | function l(t,e){if(!t)throw new ReferenceError("this hasn't been initial...
  function e (line 1) | function e(){return u(this,e),l(this,(e.__proto__||Object.getPrototypeOf...
  function t (line 1) | function t(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.en...
  function a (line 1) | function a(t){return t&&t.__esModule?t:{default:t}}
  function e (line 1) | function e(t){!function(t,e){if(!(t instanceof e))throw new TypeError("C...
  function t (line 1) | function t(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.en...
  function r (line 1) | function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a ...
  function a (line 1) | function a(t,e){if(!t)throw new ReferenceError("this hasn't been initial...
  function e (line 1) | function e(){return r(this,e),a(this,(e.__proto__||Object.getPrototypeOf...
  function s (line 1) | function s(t){return t&&t.__esModule?t:{default:t}}
  function r (line 1) | function r(t){return t&&t.__esModule?t:{default:t}}
  function t (line 1) | function t(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.en...
  function a (line 1) | function a(t){return t&&t.__esModule?t:{default:t}}
  function e (line 1) | function e(t){!function(t,e){if(!(t instanceof e))throw new TypeError("C...
  function t (line 1) | function t(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.en...
  function t (line 1) | function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("C...
  function t (line 1) | function t(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.en...
  function t (line 1) | function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("C...

FILE: main/gams/gfiles/html5/particleclicker/js/event.js
  function ParticleEvent (line 1) | function ParticleEvent(type, count, external)

FILE: main/gams/gfiles/html5/particleclicker/js/external/canvas2svg.js
  function format (line 20) | function format(str, args) {
  function randomString (line 29) | function randomString(holder) {
  function createNamedToNumberedLookup (line 46) | function createNamedToNumberedLookup(items, radix) {
  function getTextAnchor (line 62) | function getTextAnchor(textAlign) {
  function getDominantBaseline (line 69) | function getDominantBaseline(textBaseline) {

FILE: main/gams/gfiles/html5/particleclicker/js/external/fastclick.js
  function FastClick (line 21) | function FastClick(layer, options) {

FILE: main/gams/gfiles/html5/particleclicker/js/external/retina.js
  function Retina (line 26) | function Retina() {}
  function suffixReplace (line 91) | function suffixReplace (match) {
  function RetinaImagePath (line 95) | function RetinaImagePath(path, at_2x_path) {
  function RetinaImage (line 158) | function RetinaImage(el) {
  function load (line 177) | function load() {

FILE: main/gams/gfiles/html5/particleclicker/js/histogram.js
  function draw_hist (line 2) | function draw_hist(ident, vals) {
  function Histogram (line 119) | function Histogram(ident) {

FILE: main/gams/gfiles/html5/particleclicker/js/ui.js
  function onchange (line 203) | function onchange (evt) {

FILE: main/gams/gfiles/html5/racer/js/common.js
  function frame (line 120) | function frame() {

FILE: main/gams/gfiles/html5/racer/js/main.js
  function update (line 61) | function update(dt) {
  function updateCars (line 152) | function updateCars(dt, playerSegment, playerW) {
  function updateCarOffset (line 169) | function updateCarOffset(car, carSegment, playerSegment, playerW) {
  function updateHud (line 216) | function updateHud(key, value) { // accessing DOM can be slow, so only d...
  function formatTime (line 223) | function formatTime(dt) {
  function render (line 237) | function render() {
  function findSegment (line 319) | function findSegment(z) {
  function lastY (line 327) | function lastY() { return (segments.length == 0) ? 0 : segments[segments...
  function addSegment (line 329) | function addSegment(curve, y) {
  function addSprite (line 342) | function addSprite(n, sprite, offset) {
  function addRoad (line 346) | function addRoad(enter, hold, leave, curve, y) {
  function addStraight (line 364) | function addStraight(num) {
  function addHill (line 369) | function addHill(num, height) {
  function addCurve (line 375) | function addCurve(num, curve, height) {
  function addLowRollingHills (line 382) | function addLowRollingHills(num, height) {
  function addSCurves (line 393) | function addSCurves() {
  function addBumps (line 401) | function addBumps() {
  function addDownhillToEnd (line 412) | function addDownhillToEnd(num) {
  function resetRoad (line 417) | function resetRoad() {
  function resetSprites (line 450) | function resetSprites() {
  function resetCars (line 497) | function resetCars() {
  function reset (line 538) | function reset(options) {
  function refreshTweakUI (line 582) | function refreshTweakUI() {

FILE: main/gams/gfiles/html5/radiusraid/js/jsfxr.js
  function J (line 1) | function J(){this.B=function(e){for(var f=0;24>f;f++)this[String.fromCha...

FILE: main/gams/gfiles/html5/retrobowl/html5game/RetroBowl.js
  function _G2 (line 286) | function _G2(_3l,_4l,_5l){var _6l=_5l;{var _7l=_8l(42);for(var _9l in _7...
  function _H2 (line 286) | function _H2(_3l,_4l,_5l){var _6l=_5l;{var _jl=_8l(42);for(var _kl in _j...
  function _I2 (line 287) | function _I2(_3l,_4l){{var _nl=_8l(42);for(var _ol in _nl){if(!_nl.hasOw...
  function _J2 (line 288) | function _J2(_3l,_4l,_5l){var _gl=_G2(_3l,_4l,_5l);if(!yyGetBool(_tl(_gl...
  function _K2 (line 288) | function _K2(_3l,_4l,_5l){_A9(_3l,_4l,"s_sort_retrobowl_list");var _wl=_...
  function _L2 (line 289) | function _L2(_3l,_4l){{var _Gl=_8l(42);for(var _Hl in _Gl){if(!_Gl.hasOw...
  function _M2 (line 290) | function _M2(_3l,_4l){{var _Ql=_8l(42);for(var _Rl in _Ql){if(!_Ql.hasOw...
  function _N2 (line 292) | function _N2(_3l,_4l){{var _Vl=_8l(42);for(var _Wl in _Vl){if(!_Vl.hasOw...
  function _O2 (line 293) | function _O2(_3l,_4l){var __l=_0m(_3l,_4l,42)._1m;var _2m=-1;if(yyCompar...
  function _P2 (line 293) | function _P2(_3l,_4l,_5l){_0m(_3l,_4l,100152)._4a=1?1:0;_0m(_3l,_4l,1001...
  function _Q2 (line 296) | function _Q2(_3l,_4l){_P2(_3l,_4l,1);}
  function _R2 (line 296) | function _R2(_3l,_4l){_P2(_3l,_4l,0);}
  function _S2 (line 296) | function _S2(_3l,_4l){_P2(_3l,_4l,2);}
  function _T2 (line 296) | function _T2(_3l,_4l){_0m(_3l,_4l,100145)._Nl=_cm(yyfminus(_sl(_0m(_3l,_...
  function _U2 (line 296) | function _U2(_3l,_4l){_0m(_3l,
  function _V2 (line 297) | function _V2(_3l,_4l){_3m(12);}
  function _W2 (line 297) | function _W2(_3l,_4l){_0m(_3l,_4l,42)._dm=0?1:0;_3m(10);}
  function _X2 (line 297) | function _X2(_3l,_4l){if(!yyGetBool(_g5(_3l,_4l,0))){return };_0m(_3l,_4...
  function _Y2 (line 297) | function _Y2(_3l,_4l){{var _em=_8l(42);for(var _fm in _em){if(!_em.hasOw...
  function _Z2 (line 298) | function _Z2(_3l,_4l){{var _im=_8l(42);for(var _jm in _im){if(!_im.hasOw...
  function __2 (line 299) | function __2(_3l,_4l){{var _om=_8l(64);for(var _pm in _om){if(!_om.hasOw...
  function _03 (line 299) | function _03(_3l,_4l){{var _tm=_8l(64);for(var _um in _tm){if(!_tm.hasOw...
  function _13 (line 300) | function _13(_3l,_4l){var _wm=_3l._mm;{var _xm=_8l(42);for(var _ym in _x...
  function _23 (line 301) | function _23(_3l,_4l){_A9(_3l,_4l,"btn_click_ChooseTeamNew");var _wm=_3l...
  function _33 (line 302) | function _33(_3l,_4l){_X5(_3l,_4l);}
  function _43 (line 302) | function _43(_3l,_4l){_U5(_3l,_4l,1);}
  function _53 (line 302) | function _53(_3l,_4l){{var _Nm=_8l(42);for(var _Om in _Nm){if(!_Nm.hasOw...
  function _63 (line 305) | function _63(_3l,_4l){_3m(8);}
  function _73 (line 305) | function _73(_3l,_4l){_0m(_3l,_4l,42)._Ym=1?1:0;_3m(7);}
  function _83 (line 305) | function _83(_3l,_4l){_3m(9);}
  function _93 (line 305) | function _93(_3l,_4l){_0m(_3l,_4l,42)._1m=1;_3m(4);}
  function _a3 (line 305) | function _a3(_3l,_4l){_3m(10);}
  function _b3 (line 305) | function _b3(_3l,_4l){_3m(5);}
  function _c3 (line 305) | function _c3(_3l,_4l){_3m(18);}
  function _d3 (line 305) | function _d3(_3l,_4l){_T7(_3l,_4l,"",_Q8(_3l,_4l,"msg_NewGame"),_Q8(_3l,...
  function _e3 (line 305) | function _e3(_3l,_4l){{var _Zm=_8l(42);for(var __m in _Zm){if(!_Zm.hasOw...
  function _f3 (line 306) | function _f3(_3l,_4l){{var _2n=_8l(42);for(var _3n in _2n){if(!_2n.hasOw...
  function _g3 (line 306) | function _g3(_3l,_4l){{var _5n=_8l(42);for(var _6n in _5n){if(!_5n.hasOw...
  function _h3 (line 307) | function _h3(_3l,_4l){{var _8n=_8l(42);for(var _9n in _8n){if(!_8n.hasOw...
  function _i3 (line 307) | function _i3(_3l,_4l){{var _cn=_8l(42);for(var _dn in _cn){if(!_cn.hasOw...
  function _j3 (line 308) | function _j3(_3l,_4l){{var _fn=_8l(42);for(var _gn in _fn){if(!_fn.hasOw...
  function _k3 (line 308) | function _k3(_3l,_4l){{var _in=_8l(42);for(var _jn in _in){if(!_in.hasOw...
  function _l3 (line 308) | function _l3(_3l,_4l){{var _ln=_8l(42);
  function _m3 (line 309) | function _m3(_3l,_4l){{var _on=_8l(42);for(var _pn in _on){if(!_on.hasOw...
  function _n3 (line 309) | function _n3(_3l,
  function _o3 (line 310) | function _o3(_3l,_4l){_3m(15);}
  function _p3 (line 310) | function _p3(_3l,_4l){{var _un=_8l(42);for(var _vn in _un){if(!_un.hasOw...
  function _q3 (line 311) | function _q3(_3l,_4l){{var _Dn=_8l(42);for(var _En in _Dn){if(!_Dn.hasOw...
  function _r3 (line 312) | function _r3(_3l,_4l){{var _Gn=_8l(42);for(var _Hn in _Gn){if(!_Gn.hasOw...
  function _s3 (line 313) | function _s3(_3l,_4l){var _xn=_0m(_3l,_4l,42)._Um;if(yyfgreaterequal(_Dl...
  function _t3 (line 322) | function _t3(_3l,_4l){var _Vn=yyfplus(yyfplus(_sl(_il(_0m(_3l,_4l,42)._t...
  function _u3 (line 322) | function _u3(_3l,_4l){var _Vn=yyfplus(yyfplus(_sl(_il(_0m(_3l,_4l,42)._t...
  function _v3 (line 325) | function _v3(_3l,_4l){var _Bl=_0m(_3l,_4l,42)._tn;var _Jn=yyfplus(yyfplu...
  function _w3 (line 329) | function _w3(_3l,_4l){{var __n=_8l(42);for(var _0o in __n){if(!__n.hasOw...
  function _x3 (line 329) | function _x3(_3l,_4l){_A9(_3l,_4l,"btn_profile_rest");{var _3o=_8l(42);f...
  function _y3 (line 330) | function _y3(_3l,_4l){{var _8o=_8l(42);
  function _z3 (line 331) | function _z3(_3l,_4l){_l8(_3l,_4l,_0m(_3l,_4l,42)._tn,1);{var _bo=_8l(76...
  function _A3 (line 332) | function _A3(_3l,_4l){_l8(_3l,_4l,_0m(_3l,_4l,42)._tn,2);{var _mo=_8l(76...
  function _B3 (line 333) | function _B3(_3l,_4l){_l8(_3l,_4l,_0m(_3l,_4l,42)._tn,3);{var _po=_8l(76...
  function _C3 (line 334) | function _C3(_3l,_4l){_l8(_3l,_4l,_0m(_3l,_4l,42)._tn,4);{var _so=_8l(76...
  function _D3 (line 335) | function _D3(_3l,_4l){{var _vo=_8l(42);for(var _wo in _vo){if(!_vo.hasOw...
  function _E3 (line 336) | function _E3(_3l,_4l){{var _yo=_8l(42);for(var _zo in _yo){if(!_yo.hasOw...
  function _F3 (line 336) | function _F3(_3l,_4l){_0m(_3l,_4l,42)._2o=1;_3m(19);}
  function _G3 (line 336) | function _G3(_3l,
  function _H3 (line 337) | function _H3(_3l,_4l){_0m(_3l,_4l,42)._Bo=1;_k9(_3l,_4l);_3m(11);}
  function _I3 (line 337) | function _I3(_3l,_4l){_0m(_3l,_4l,42)._Bo=2;_k9(_3l,_4l);_3m(11);}
  function _J3 (line 337) | function _J3(_3l,_4l){_0m(_3l,_4l,42)._Bo=3;_k9(_3l,_4l);_3m(11);}
  function _K3 (line 337) | function _K3(_3l,_4l){_3m(20);}
  function _L3 (line 337) | function _L3(_3l,_4l){if((yyGetBool(yyfequal(_rn._sn(),4)))&&(yyGetBool(...
  function _M3 (line 337) | function _M3(_3l,_4l){{var _Co=_8l(42);for(var _Do in _Co){if(!_Co.hasOw...
  function _N3 (line 338) | function _N3(_3l,_4l){{var _Fo=_8l(80);for(var _Go in _Fo){if(!_Fo.hasOw...
  function _O3 (line 338) | function _O3(_3l,_4l){{var _Ko=_8l(80);
  function _P3 (line 339) | function _P3(_3l,_4l){_A9(_3l,_4l,"btn_click_DraftRound");var _No=_0m(_3...
  function _Q3 (line 340) | function _Q3(_3l,_4l){_3m(6);}
  function _R3 (line 340) | function _R3(_3l,_4l){_A9(_3l,_4l,"btn_click_FreeAgentBack");{var _Po=_8...
  function _S3 (line 342) | function _S3(_3l,_4l){_3m(22);}
  function _T3 (line 342) | function _T3(_3l,_4l){if(yyfequal(_rn._sn(),16)){return };_0m(_3l,_4l,42...
  function _U3 (line 342) | function _U3(_3l,_4l){{var _So=_8l(42);for(var _To in _So){if(!_So.hasOw...
  function _V3 (line 343) | function _V3(_3l,_4l){{var _Yo=_8l(42);for(var _Zo in _Yo){if(!_Yo.hasOw...
  function _W3 (line 344) | function _W3(_3l,_4l){{var _0p=_8l(42);for(var _1p in _0p){if(!_0p.hasOw...
  function _X3 (line 344) | function _X3(_3l,_4l){var _Bl=_0m(_3l,_4l,42)._tn;var _Ol=_Q8(_3l,_4l,"m...
  function _Y3 (line 348) | function _Y3(_3l,_4l){_3m(21);}
  function _Z3 (line 348) | function _Z3(_3l,_4l){_0m(_3l,_4l,42)._tn=_3l._Bl;_3m(16);}
  function __3 (line 348) | function __3(_3l,_4l){_3m(8);}
  function _04 (line 348) | function _04(_3l,_4l){{var _5p=_8l(42);for(var _6p in _5p){if(!_5p.hasOw...
  function _14 (line 350) | function _14(_3l,_4l){_3m(17);}
  function _24 (line 350) | function _24(_3l,_4l){if(yyfgreater(_16(_3l,_4l),75)){{_T7(_3l,_4l,"",_Q...
  function _34 (line 351) | function _34(_3l,_4l){if(yyfgreater(_06(_3l,_4l),85)){{_T7(_3l,_4l,"",_Q...
  function _44 (line 352) | function _44(_3l,_4l){_X7(_3l,_4l);_8p();}
  function _54 (line 352) | function _54(_3l,_4l){_9p(global._ap);if(yyfequal(_rn._bp(),(-1))){_9p(g...
  function _64 (line 355) | function _64(_3l,_4l){_X7(_3l,_4l);}
  function _74 (line 355) | function _74(_3l,_4l){_K6(_3l,_4l,5);_X7(_3l,_4l);}
  function _84 (line 355) | function _84(_3l,_4l){_B6(_3l,_4l,0);_X7(_3l,_4l);}
  function _94 (line 355) | function _94(_3l,_4l){_B6(_3l,_4l,1);_X7(_3l,_4l);}
  function _a4 (line 355) | function _a4(_3l,_4l){_X7(_3l,_4l);}
  function _b4 (line 355) | function _b4(_3l,
  function _c4 (line 356) | function _c4(_3l,_4l){_X7(_3l,_4l);var _No=_0m(_3l,_4l,42)._Sn[_Tn(yyfmi...
  function _d4 (line 357) | function _d4(_3l,_4l){_X7(_3l,_4l);{var _qp=_8l(42);for(var _rp in _qp){...
  function _e4 (line 360) | function _e4(_3l,_4l){_X7(_3l,_4l);{var _xp=_8l(42);for(var _yp in _xp){...
  function _f4 (line 361) | function _f4(_3l,_4l){_X7(_3l,_4l);{var _Ap=_8l(42);for(var _Bp in _Ap){...
  function _g4 (line 362) | function _g4(_3l,_4l){_X7(_3l,_4l);var _Wn=_r8(_3l,_4l,_0m(_3l,_4l,42)._...
  function _h4 (line 363) | function _h4(_3l,_4l){{var _Hp=_8l(42);for(var _Ip in _Hp){if(!_Hp.hasOw...
  function _i4 (line 364) | function _i4(_3l,_4l){{var _Np=_8l(42);for(var _Op in _Np){if(!_Np.hasOw...
  function _j4 (line 365) | function _j4(_3l,_4l){{var _Rp=_8l(42);for(var _Sp in _Rp){if(!_Rp.hasOw...
  function _k4 (line 367) | function _k4(_3l,_4l){_X7(_3l,_4l);{var _Vp=_8l(42);for(var _Wp in _Vp){...
  function _l4 (line 371) | function _l4(_3l,_4l){_X7(_3l,_4l);_Y4(_3l,_4l);_3m(4);}
  function _m4 (line 371) | function _m4(_3l,_4l){{var _0q=_8l(42);for(var _1q in _0q){if(!_0q.hasOw...
  function _n4 (line 371) | function _n4(_3l,_4l){{var _3q=_8l(42);
  function _o4 (line 372) | function _o4(_3l,_4l){{var _6q=_8l(42);for(var _7q in _6q){if(!_6q.hasOw...
  function _p4 (line 373) | function _p4(_3l,_4l){_0m(_3l,_4l,48)._9q=_0m(_3l,_4l,48)._aq;_0m(_3l,_4...
  function _q4 (line 373) | function _q4(_3l,_4l){_0m(_3l,_4l,48)._9q=!yyGetBool(_0m(_3l,_4l,48)._aq...
  function _r4 (line 373) | function _r4(_3l,_4l){_A9(_3l,_4l,"btn_skip_tutorial");_X7(_3l,_4l);_0m(...
  function _s4 (line 373) | function _s4(_3l,_4l){{var _dq=_8l(42);for(var _eq in _dq){if(!_dq.hasOw...
  function _t4 (line 376) | function _t4(_3l,_4l){_X7(_3l,_4l);_3m(7);}
  function _u4 (line 376) | function _u4(_3l,_4l){_X7(_3l,_4l);_U5(_3l,_4l,1);}// 	if (year == 1 or ...
  function _v4 (line 377) | function _v4(_3l,_4l){{var _mq=_8l(42);for(var _nq in _mq){if(!_mq.hasOw...
  function _w4 (line 382) | function _w4(_3l,_4l){{var _wq=_8l(42);for(var _xq in _wq){if(!_wq.hasOw...
  function _x4 (line 383) | function _x4(_3l,
  function _y4 (line 403) | function _y4(_3l,_4l,_5l){var _uq=_5l;var _Fq=_il(_uq,"title");var _Gq=_...
  function _z4 (line 412) | function _z4(_3l,_4l,_5l){var _6l=_5l;{var _lr=_8l(42);for(var _mr in _l...
  function _A4 (line 413) | function _A4(_3l,_4l){_X7(_3l,
  function _B4 (line 414) | function _B4(_3l,_4l){_X7(_3l,_4l);_C4(_3l,_4l,2);}
  function _C4 (line 414) | function _C4(_3l,_4l,_5l){var _Eq=_ul(_5l);{var _yr=_8l(42);for(var _zr ...
  function _D4 (line 421) | function _D4(_3l,_4l,_5l){var _Lr=_5l;var _Mr=-1;if(yyCompareVal(_Lr,"sp...
  function _E4 (line 422) | function _E4(_3l,_4l){{var _Nr=_8l(42);for(var _Or in _Nr){if(!_Nr.hasOw...
  function _F4 (line 430) | function _F4(_3l,_4l,_5l){{var _Yr=_8l(42);for(var _Zr in _Yr){if(!_Yr.h...
  function _G4 (line 431) | function _G4(_3l,_4l){var _0s=_Sm(2);var _1s=-1;if(yyCompareVal(_0s,0,g_...
  function _H4 (line 432) | function _H4(_3l,_4l,_5l){{var _2s=_8l(42);for(var _3s in _2s){if(!_2s.h...
  function _I4 (line 432) | function _I4(_3l,_4l){_A9(_3l,_4l,"s_create_draftlist");{var _5s=_8l(42)...
  function _J4 (line 434) | function _J4(_3l,
  function _K4 (line 436) | function _K4(_3l,_4l,_5l){_A9(_3l,_4l,"s_create_storelist");var _ds=_5l;...
  function _L4 (line 437) | function _L4(_3l,_4l,_5l){_A9(_3l,_4l,"s_create_player_storelist");var _...
  function _M4 (line 438) | function _M4(_3l,_4l,_5l){{var _os=_8l(42);for(var _ps in _os){if(!_os.h...
  function _N4 (line 438) | function _N4(_3l,_4l,_5l){{var _rs=_8l(42);for(var _ss in _rs){if(!_rs.h...
  function _O4 (line 439) | function _O4(_3l,_4l,_5l){{var _us=_8l(42);for(var _vs in _us){if(!_us.h...
  function _P4 (line 439) | function _P4(_3l,_4l){{var _ys=_8l(42);for(var _zs in _ys){if(!_ys.hasOw...
  function _Q4 (line 440) | function _Q4(_3l,_4l){{var _Bs=_8l(16);for(var _Cs in _Bs){if(!_Bs.hasOw...
  function _R4 (line 442) | function _R4(_3l,_4l){_A9(_3l,_4l,"s_update_freeagents");{var _Ls=_8l(16...
  function _S4 (line 445) | function _S4(_3l,_4l){{var _Ws=_8l(42);for(var _Xs in _Ws){if(!_Ws.hasOw...
  function _T4 (line 445) | function _T4(_3l,_4l,_5l){var _Zs=_5l;{var __s=_8l(42);for(var _0t in __...
  function _U4 (line 446) | function _U4(_3l,_4l,_5l){var _Yp=_98(_3l,_4l,_5l);if(yyfgreaterequal(_Y...
  function _V4 (line 446) | function _V4(_3l,_4l,_5l){var _Yp=_5l;if(yyfgreaterequal(_Yp,8)){return ...
  function _W4 (line 446) | function _W4(_3l,_4l,_5l){var _Bl=_5l;var _On=yyfmod(_sl(round(yyfplus(y...
  function _X4 (line 447) | function _X4(_3l,_4l){var _dl=0;for(;yyfless(_dl,_el(_0m(_3l,_4l,42)._Um...
  function _Y4 (line 447) | function _Y4(_3l,_4l){{var _2t=_8l(42);for(var _3t in _2t){if(!_2t.hasOw...
  function _Z4 (line 448) | function _Z4(_3l,_4l,_5l){var _5t=_5l;_A9(_3l,_4l,"s_end_draft_round");{...
  function __4 (line 450) | function __4(_3l,_4l){{var _ct=_8l(42);for(var _dt in _ct){if(!_ct.hasOw...
  function _05 (line 455) | function _05(_3l,_4l,_5l){var _Bl=_5l;var _Yp=_98(_3l,_4l,_Bl);var _kt=0...
  function _15 (line 458) | function _15(_3l,_4l){{var _nt=_8l(42);for(var _ot in _nt){if(!_nt.hasOw...
  function _25 (line 459) | function _25(_3l,_4l){_A9(_3l,_4l,"<<< s_savegame >>>");_65(_3l,_4l);{va...
  function _35 (line 468) | function _35(_3l,_4l,_5l){var _Qt=_5l;{var _Rt=_8l(42);for(var _St in _R...
  function _45 (line 480) | function _45(_3l,_4l){_A9(_3l,_4l,"creating options map...");{var _4u=_8...
  function _55 (line 482) | function _55(_3l,_4l){_A9(_3l,_4l,"loading options...");{var _8u=_8l(42)...
  function _65 (line 483) | function _65(_3l,_4l){_A9(_3l,_4l,"saving options...");{var _eu=_8l(42);...
  function _75 (line 483) | function _75(_3l,_4l){var _Zt=_Dq();var _pr=_qr("LanguageUS.txt");while(...
  function _85 (line 484) | function _85(_3l,_4l){_A9(_3l,_4l,"s_load_teams");var _xn=_yl();var _pr=...
  function _95 (line 484) | function _95(_3l,_4l){_A9(_3l,_4l,"s_load_retrobowl_hof");var _xn=_yl();
  function _a5 (line 485) | function _a5(_3l,_4l){_A9(_3l,_4l,"s_load_achievements");var _xn=_yl();v...
  function _b5 (line 487) | function _b5(_3l,_4l){var _xn=_yl();var _pr=_qr("Schedule.txt");var _mu=...
  function _c5 (line 488) | function _c5(_3l,_4l,_5l){var _Ol=_5l;var _pu="	";var _qu=0;var _ru;var ...
  function _d5 (line 489) | function _d5(_3l,
  function _e5 (line 492) | function _e5(_3l,
  function _f5 (line 493) | function _f5(_3l,_4l){if(yyGetBool(_tl(_0m(_3l,_4l,42)._jp,2))){{
  function _g5 (line 496) | function _g5(_3l,_4l,_5l){_A9(_3l,_4l,"s_do_schedule");var _Pu=_5l;{var ...
  function _h5 (line 508) | function _h5(_3l,_4l){{var _lv=_8l(42);
  function _i5 (line 512) | function _i5(_3l,_4l){var _Zt=_Dq();_vl(_Zt,"points",0);_vl(_Zt,"yards",...
  function _j5 (line 514) | function _j5(_3l,_4l,_5l,
  function _k5 (line 517) | function _k5(_3l,_4l,_5l,_Bq,_Cq){var _Zt=_Dq();_vl(_Zt,"week",_5l);_vl(...
  function _l5 (line 518) | function _l5(_3l,_4l){var _vu=0;for(;yyfless(_vu,_el(_0m(_3l,_4l,42)._jp...
  function _m5 (line 518) | function _m5(_3l,
  function _n5 (line 519) | function _n5(_3l,_4l,_5l){{var _Cv=_8l(42);for(var _Dv in _Cv){if(!_Cv.h...
  function _o5 (line 520) | function _o5(_3l,_4l){{var _Fv=_8l(42);for(var _Gv in _Fv){if(!_Fv.hasOw...
  function _p5 (line 520) | function _p5(_3l,_4l){{var _Jv=_8l(42);for(var _Kv in _Jv){if(!_Jv.hasOw...
  function _q5 (line 521) | function _q5(_3l,_4l){{var _Mv=_8l(42);for(var _Nv in _Mv){if(!_Mv.hasOw...
  function _r5 (line 522) | function _r5(_3l,_4l,_5l,_Bq){var _Pv=_5l;var _Qv=_Bq;var _Rv=_yl();var ...
  function _s5 (line 522) | function _s5(_3l,_4l,_5l){var _Pn=_i9(_3l,_4l,_5l);var _Pv=_il(_Pn,"conf...
  function _t5 (line 523) | function _t5(_3l,_4l,_5l,_Bq,_Cq){var _Pv=_5l;var _Qv=_Bq;
  function _u5 (line 524) | function _u5(_3l,_4l,_5l,_Bq){var _Pv=_5l;var _Wv=_Bq;var _Xv=_yl();_Cl(...
  function _v5 (line 525) | function _v5(_3l,_4l,_5l,_Bq,_Cq){var _Pv=_5l;var _Wv=_Bq;var _Tv=_Cq;va...
  function _w5 (line 525) | function _w5(_3l,_4l){{var __v=_8l(42);for(var _0w in __v){if(!__v.hasOw...
  function _x5 (line 526) | function _x5(_3l,_4l,_5l,_Bq,_Cq){_A9(_3l,_4l,"s_populate_division");var...
  function _y5 (line 530) | function _y5(_3l,_4l,_5l,_Bq){var _2w=_5l;var _fw=_Bq;var _gw=yyfplus(yy...
  function _z5 (line 534) | function _z5(_3l,_4l){_A9(_3l,_4l,"s_populate_schedulebox");{var _qw=_8l...
  function _A5 (line 537) | function _A5(_3l,_4l,_5l,_Bq,_Cq,_zu,_Mw,_Nw,_Ow){
  function _B5 (line 538) | function _B5(_3l,_4l,_5l,_Bq){var _Ww=_5l;var _Xw=_Bq;if(yyGetBool(_Ww)){
  function _C5 (line 545) | function _C5(_3l,_4l){_A9(_3l,
  function _D5 (line 547) | function _D5(_3l,_4l){global._ux=_vp(global._ux,3134966082);_vx(global._...
  function _E5 (line 548) | function _E5(_3l,_4l){var _wx=_il(_rn._xx(),"id");var _yx=_wx;var _zx=-1...
  function _F5 (line 556) | function _F5(_3l,_4l){if(!yyGetBool(_Rx(global._ux))){_D5(_3l,_4l)};if(!...
  function _G5 (line 563) | function _G5(_3l,_4l){var _0y=_rn._lx();var _1y=-1;if(yyCompareVal(_0y,4...
  function _H5 (line 565) | function _H5(_3l,_4l){var _9y=_rn._lx();var _ay=-1;if(yyCompareVal(_9y,4...
  function _I5 (line 567) | function _I5(_3l,_4l){var _hy=_rn._lx();var _iy=-1;if(yyCompareVal(_hy,
  function _J5 (line 570) | function _J5(_3l,_4l){var _py=_rn._lx();var _qy=-1;if(yyCompareVal(_py,4...
  function _K5 (line 572) | function _K5(_3l,_4l){var _xy=_rn._lx();var _yy=-1;if(yyCompareVal(_xy,4...
  function _L5 (line 573) | function _L5(_3l,_4l){_X7(_3l,_4l);if(!yyGetBool(global._tx)){{_T7(_3l,_...
  function _M5 (line 579) | function _M5(_3l,_4l){var _Uy=_rn._lx();var _Vy=-1;if(yyCompareVal(_Uy,4...
  function _N5 (line 581) | function _N5(_3l,_4l){if(yyGetBool(_il(_0m(_3l,_4l,42)._1n,"fullversion"...
  function _O5 (line 581) | function _O5(_3l,_4l){_3l._6r=1?1:0;if(!yyGetBool(_il(_0m(_3l,_4l,42)._1...
  function _P5 (line 581) | function _P5(_3l,_4l){var _Ol=yyfplus("info_",
  function _Q5 (line 582) | function _Q5(_3l,_4l){var _Ol="";var _Wy=_il(_0m(_3l,_4l,42)._tn,"positi...
  function _R5 (line 584) | function _R5(_3l,_4l){var _Ol=yyfplus("info_coachtrait_",_sl(_ul(_il(_0m...
  function _S5 (line 585) | function _S5(_3l,_4l){var _Ol=_Q8(_3l,_4l,"info_DraftPicks");{var __y=_8...
  function _T5 (line 585) | function _T5(_3l,_4l,_5l){var _2z=_5l;var _3z=-1;
  function _U5 (line 586) | function _U5(_3l,
  function _V5 (line 589) | function _V5(_3l,_4l){_A9(_3l,_4l,"s_next_match");_0m(_3l,_4l,42)._Bo=0;...
  function _W5 (line 590) | function _W5(_3l,_4l){_A9(_3l,_4l,"s_do_next_week");{var _7z=_8l(42);for...
  function _X5 (line 591) | function _X5(_3l,_4l){{var _bz=_8l(42);for(var _cz in _bz){if(!_bz.hasOw...
  function _Y5 (line 595) | function _Y5(_3l,_4l){_A9(_3l,_4l,yyfplus("s_update_team_buttons:",
  function _Z5 (line 597) | function _Z5(_3l,_4l){_A9(_3l,_4l,yyfplus("s_update_job_offer_buttons: "...
  function __5 (line 599) | function __5(_3l,_4l){_0m(_3l,_4l,100057)._am=global._Ll;_0m(_3l,_4l,100...
  function _06 (line 603) | function _06(_3l,_4l){var _Qp=0;{var _zz=_8l(42);for(var _Az in _zz){if(...
  function _16 (line 604) | function _16(_3l,_4l){var _9x=0;{var _Cz=_8l(42);for(var _Dz in _Cz){if(...
  function _26 (line 605) | function _26(_3l,_4l,_5l){var _Qp=_5l;if(yyflessequal(_Qp,15)){return 0}...
  function _36 (line 606) | function _36(_3l,_4l){return _0m(_3l,_4l,42)._Jl;}
  function _46 (line 606) | function _46(_3l,_4l){{var _Fz=_8l(42);for(var _Gz in _Fz){if(!_Fz.hasOw...
  function _56 (line 607) | function _56(_3l,_4l){{var _Kz=_8l(42);for(var _Lz in _Kz){if(!_Kz.hasOw...
  function _66 (line 608) | function _66(_3l,_4l,_5l){var _Bl=_5l;if(yyfless(yyfplus(_sl(_il(_Bl,"xp...
  function _76 (line 608) | function _76(_3l,_4l){{var _Nz=_8l(42);for(var _Oz in _Nz){if(!_Nz.hasOw...
  function _86 (line 609) | function _86(_3l,_4l){{var _Qz=_8l(42);for(var _Rz in _Qz){if(!_Qz.hasOw...
  function _96 (line 609) | function _96(_3l,_4l){{var _Tz=_8l(42);for(var _Uz in _Tz){if(!_Tz.hasOw...
  function _a6 (line 610) | function _a6(_3l,_4l){{var _Wz=_8l(42);for(var _Xz in _Wz){if(!_Wz.hasOw...
  function _b6 (line 611) | function _b6(_3l,_4l){var __z=0.85;{var _0A=_8l(42);for(var _1A in _0A){...
  function _c6 (line 615) | function _c6(_3l,_4l){_A9(_3l,_4l,"s_do_result_news");_A9(_3l,_4l,yyfplu...
  function _d6 (line 617) | function _d6(_3l,_4l){_A9(_3l,_4l,"Count job offers");{var _dA=_8l(42);f...
  function _e6 (line 618) | function _e6(_3l,_4l,_5l){var _Cm=_5l;var _gA=yyfplus(_sl(_ml(_il(_Cm,"o...
  function _f6 (line 619) | function _f6(_3l,_4l){{var _kA=_8l(42);for(var _lA in _kA){if(!_kA.hasOw...
  function _g6 (line 621) | function _g6(_3l,_4l,_5l){
  function _h6 (line 623) | function _h6(_3l,_4l,_5l){var _vA=_5l;{var _wA=_8l(42);for(var _xA in _w...
  function _i6 (line 624) | function _i6(_3l,_4l){var _zA=_il(_0m(_3l,_4l,42)._1n,"op_music");var _A...
  function _j6 (line 625) | function _j6(_3l,_4l){var _GA=yyfminus(6,_sl(yyfdivide(_sl(_0m(_3l,_4l,_...
  function _k6 (line 626) | function _k6(_3l,_4l){{var _RA=_8l(global._SA);for(var _TA in _RA){if(!_...
  function _l6 (line 627) | function _l6(_3l,_4l){var _YA=_ZA(0);var __A=_0B(0);var _1B=48;var _2B=_...
  function _m6 (line 637) | function _m6(_3l,_4l){var _1B=48;var _MB=_3l._WA;var _NB=-1;if(yyCompare...
  function _n6 (line 643) | function _n6(_3l,_4l,_5l){_3l._0C=_3l.x;_3l._1C=_3l.y;var _2C=_0m(_3l,_4...
  function _o6 (line 646) | function _o6(_3l,_4l){var _iC=0;var _jC=0;_3l._aC=0;_3l._9C=0;if((yyGetB...
  function _p6 (line 652) | function _p6(_3l,_4l){{var _yC=_8l(global._SA);for(var _zC in _yC){if(!_...
  function _q6 (line 655) | function _q6(_3l,_4l){if(!yyGetBool(_p6(_3l,_4l))){{var _1B=48;var _Gy=_...
  function _r6 (line 666) | function _r6(_3l,_4l){if(yyfgreater(_3l._tB,20)){return 0};if(yyGetBool(...
  function _s6 (line 672) | function _s6(_3l,_4l){if(yyGetBool(_0m(_3l,_4l,42)._Bo)){return 0};if((y...
  function _t6 (line 673) | function _t6(_3l,_4l,_5l){_A9(_3l,_4l,"Dropped!");var _qD=_5l;{var _rD=_...
  function _u6 (line 674) | function _u6(_3l,_4l){if((yyGetBool(yyfless(_3l._8C,
  function _v6 (line 675) | function _v6(_3l,_4l){if(!yyGetBool(_0m(_3l,_4l,42)._Bo)){{{var _wD=_8l(...
  function _w6 (line 676) | function _w6(_3l,_4l){
  function _x6 (line 677) | function _x6(_3l,_4l){{var _FD=_8l(global._SA);for(var _GD in _FD){if(!_...
  function _y6 (line 679) | function _y6(_3l,_4l){_A9(_3l,_4l,"s_receive_ball");{var _KD=_8l(global....
  function _z6 (line 680) | function _z6(_3l,_4l,_5l){_4z(yyfplus("s_set_up_play Suppress_Difficulty...
  function _A6 (line 684) | function _A6(_3l,_4l){{var _5E=_8l(48);for(var _6E in _5E){if(!_5E.hasOw...
  function _B6 (line 689) | function _B6(_3l,_4l,_5l){_4z("s_set_up_fieldgoal");_3l._SD=_rn._up();{v...
  function _C6 (line 692) | function _C6(_3l,_4l){if(yyGetBool(_0m(_3l,_4l,48)._3C)){{_3l._wE=50;}}e...
  function _D6 (line 693) | function _D6(_3l,_4l,_5l,_Bq){var _AE=_Vm(_5l,_Bq);if(yyfgreaterequal(_3...
  function _E6 (line 693) | function _E6(_3l,_4l){if((yyGetBool(yyflessequal(_3l._VD,0)))&&(yyGetBoo...
  function _F6 (line 695) | function _F6(_3l,_4l){{var _KE=_8l(48);for(var _LE in _KE){if(!_KE.hasOw...
  function _G6 (line 696) | function _G6(_3l,_4l){_A9(_3l,_4l,yyfplus("s_update_commentary: ",
  function _H6 (line 729) | function _H6(_3l,_4l){var _CF=0;var _DF=_3l.x;var _bD=global._SA;if((yyG...
  function _I6 (line 736) | function _I6(_3l,_4l){{var _IF=_8l(48);for(var _JF in _IF){if(!_IF.hasOw...
  function _J6 (line 737) | function _J6(_3l,_4l){{var _PF=_8l(49);for(var _QF in _PF){if(!_PF.hasOw...
  function _K6 (line 738) | function _K6(_3l,_4l,_5l){_J6(_3l,_4l);_A9(_3l,_4l,_h9(_3l,_4l,_5l));{va...
  function _L6 (line 743) | function _L6(_3l,_4l){var _3G=(yyGetBool(yyflessequal(_0m(_3l,_4l,48)._V...
  function _M6 (line 744) | function _M6(_3l,_4l,_5l){var _4G=_5l;if(yyfless(_3l.y,132)){return 0};i...
  function _N6 (line 744) | function _N6(_3l,_4l,_5l,_Bq,_Cq){var _5G=_5l;var _6G=_Bq;var _4G=_Cq;if...
  function _O6 (line 745) | function _O6(_3l,_4l,_5l){var _7G=_5l;_A9(_3l,_4l,yyfplus("s_end_match:"...
  function _P6 (line 755) | function _P6(_3l,_4l){{var _jG=_8l(42);for(var _kG in _jG){if(!_jG.hasOw...
  function _Q6 (line 769) | function _Q6(_3l,_4l){{var _wG=_8l(48);for(var _xG in _wG){if(!_wG.hasOw...
  function _R6 (line 769) | function _R6(_3l,_4l){_A9(_3l,_4l,"s_kick_off");{var _zG=_8l(48);for(var...
  function _S6 (line 770) | function _S6(_3l,_4l){_A9(_3l,_4l,"s_punt");_3l._XD=yyfplus(_3l._XD,_Vm(...
  function _T6 (line 770) | function _T6(_3l,_4l){_A9(_3l,_4l,"s_change_possession");{var _CG=_8l(48...
  function _U6 (line 771) | function _U6(_3l,_4l){if(yyGetBool(_3l._6F)){{var _FG=_il(_3l._6F,"posit...
  function _V6 (line 772) | function _V6(_3l,_4l,_5l){{var _HG=_8l(48);for(var _IG in _HG){if(!_HG.h...
  function _W6 (line 773) | function _W6(_3l,_4l){{var _KG=_8l(60);for(var _LG in _KG){if(!_KG.hasOw...
  function _X6 (line 775) | function _X6(_3l,_4l){{var _PG=_8l(48);for(var _QG in _PG){if(!_PG.hasOw...
  function _Y6 (line 776) | function _Y6(_3l,_4l,_5l){_3l._lC=_5l;_3l._SG=1;var _bD=global._SA;var _...
  function _Z6 (line 782) | function _Z6(_3l,_4l){_3l._kr(yyfminus(_sl(_0m(_3l,_4l,48)._aB),_sl(yyft...
  function __6 (line 794) | function __6(_3l,_4l){_3l._kr(yyfminus(_sl(_0m(_3l,_4l,48)._aB),_sl(yyft...
  function _07 (line 802) | function _07(_3l,_4l,_5l,_Bq){
  function _17 (line 804) | function _17(_3l,_4l){_3l._kr(yyfminus(_sl(_0m(_3l,_4l,48)._aB),_sl(yyft...
  function _27 (line 807) | function _27(_3l,_4l){_3l._kr(yyfminus(_sl(_0m(_3l,_4l,48)._aB),_sl(yyft...
  function _37 (line 811) | function _37(_3l,_4l){var _OH=_Sm(2);if(yyfgreater(_Sm(9),1)){_OH=0};var...
  function _47 (line 827) | function _47(_3l,_4l,_5l){var _iI=_5l;var _jI=-1;if(yyCompareVal(_iI,2,g...
  function _57 (line 828) | function _57(_3l,_4l){_3l._Os=yyfplus(_sl(_3l._zH),_sl(_lI(_3l._sB,_3l._...
  function _67 (line 829) | function _67(_3l,_4l,_5l){var _qI=_5l;var _rI=yyftime(_sl(_5B(_3l.x,_3l....
  function _77 (line 830) | function _77(_3l,_4l,_5l,_Bq){var _qI=_5l;var _wI=yyftime(200,_sl(_Bq));...
  function _87 (line 830) | function _87(_3l,_4l,_5l){if(yyGetBool(_0m(_3l,_4l,_5l)._aD)){return _0m...
  function _97 (line 831) | function _97(_3l,_4l){if(yyGetBool(_3l._lD)){{_3l._uD=_PA(_3l.x,_3l.y,_0...
  function _a7 (line 833) | function _a7(_3l,_4l){var _DI=1000;{var _EI=_8l(49);for(var _FI in _EI){...
  function _b7 (line 833) | function _b7(_3l,_4l,_5l){var _HI=0;{var _II=_8l(49);for(var _JI in _II){
  function _c7 (line 834) | function _c7(_3l,_4l){
  function _d7 (line 836) | function _d7(_3l,_4l){if(!yyGetBool(_0m(_3l,_4l,global._SA)._HA)){return...
  function _e7 (line 838) | function _e7(_3l,_4l){if(yyGetBool(_3l._9D)){
  function _f7 (line 848) | function _f7(_3l,_4l){var _bD=global._SA;var _1B=48;if(yyfequal(_0m(_3l,...
  function _g7 (line 851) | function _g7(_3l,_4l){{var _nJ=_8l(50);for(var _oJ in _nJ){if(!_nJ.hasOw...
  function _h7 (line 852) | function _h7(_3l,_4l){{var _qJ=_8l(50);for(var _rJ in _qJ){if(!_qJ.hasOw...
  function _i7 (line 852) | function _i7(_3l,_4l){if(yyGetBool(_3l._9D)){return 0};if(yyfequal(_3l._...
  function _j7 (line 855) | function _j7(_3l,_4l){if(yyfnotequal(_0m(_3l,_4l,global._SA)._HA,_4l.id)...
  function _k7 (line 856) | function _k7(_3l,_4l){var _DJ=_3l.x;{var _EJ=_8l(global._SA);for(var _FJ...
  function _l7 (line 857) | function _l7(_3l,_4l,_5l){var _aF=_5l;var _JJ=_0m(_3l,_4l,_aF)._ZB;var _...
  function _m7 (line 858) | function _m7(_3l,_4l,_5l){if(yyfless(_3l.y,300)){{{var _LJ=_8l(53);for(v...
  function _n7 (line 859) | function _n7(_3l,_4l){if(yyGetBool(_rB(_3l._sB))){{_3l._vI=1;_3l._uD=_57...
  function _o7 (line 863) | function _o7(_3l,_4l){var _bD=global._SA;var _1B=48;var _3K=_3l._jB;var ...
  function _p7 (line 869) | function _p7(_3l,_4l){if(yyfequal(_0m(_3l,_4l,42)._Bo,3)){{_3l._vI=0;ret...
  function _q7 (line 872) | function _q7(_3l,_4l){{var _gK=_8l(_0m(_3l,_4l,global._SA)._HA);for(var ...
  function _r7 (line 873) | function _r7(_3l,_4l,_5l){var _lK=_5l;var _mK=-1;if(yyCompareVal(_lK,18,...
  function _s7 (line 875) | function _s7(_3l,_4l){if((yyGetBool(yyfequal(_3l._wC,30)))||(yyGetBool(y...
  function _t7 (line 875) | function _t7(_3l,_4l){var _nK=0.5;{var _oK=_8l(global._SA);for(var _pK i...
  function _u7 (line 880) | function _u7(_3l,_4l,_5l){_lp(_3l,55);var _MK=_Oq(_3l.x,yyfminus(_sl(_3l...
  function _v7 (line 880) | function _v7(_3l,_4l,_5l){_lp(_3l,55);var _MK=_Oq(_3l.x,yyfminus(_sl(_3l...
  function _w7 (line 881) | function _w7(_3l,_4l,_5l){{var _NK=_8l(54);for(var _OK in _NK){if(!_NK.h...
  function _x7 (line 886) | function _x7(_3l,_4l){var _Lw=8;if(yyfequal(_3l._WA,2)){{_3l._uE="";if((...
  function _y7 (line 888) | function _y7(_3l,_4l){if(yyGetBool(_0m(_3l,_4l,42)._Bo)){return };_YK(0)...
  function _z7 (line 892) | function _z7(_3l,_4l){_0L(0.6);_iL(_3l._aB,131,_3l._aB,470,2,16711680,16...
  function _A7 (line 893) | function _A7(_3l,_4l){if(!yyGetBool(_3l._3C)){return };if(!yyGetBool(_k6...
  function _B7 (line 894) | function _B7(_3l,_4l){var _lL=0;var _kL=_Qq();var _oL=256;var _Es=yyfmin...
  function _C7 (line 895) | function _C7(_3l,_4l){_bL(0);_0L(yyftime(_sl(_3l._8I),0.5));var _tL=_3l....
  function _D7 (line 900) | function _D7(_3l,_4l){_aL(16777215);_0L(0.075);var _FL=90;if(yyfequal(_0...
  function _E7 (line 901) | function _E7(_3l,_4l){_A9(_3l,_4l,"s_set_up_practice");{var _PL=_8l(48);...
  function _F7 (line 905) | function _F7(_3l,_4l){
  function _G7 (line 908) | function _G7(_3l,_4l){_4z("s_practice_passing");_3l._SD=_rn._up();_3l._3...
  function _H7 (line 910) | function _H7(_3l,_4l,_5l,_Bq,_Cq,_zu,_Mw){var _ZL=_5l;var _gL=_Bq;var _i...
  function _I7 (line 910) | function _I7(_3l,_4l,_5l,_Bq,_Cq,_zu){var _qM=_5l;var _DF=_Bq;var _Gy=_C...
  function _J7 (line 911) | function _J7(_3l,_4l){if(!yyGetBool(_il(_0m(_3l,_4l,42)._1n,"op_soundfx"...
  function _K7 (line 911) | function _K7(_3l,_4l){if(!yyGetBool(_il(_0m(_3l,_4l,42)._1n,"op_soundfx"...
  function _L7 (line 911) | function _L7(_3l,_4l){if(!yyGetBool(_il(_0m(_3l,_4l,42)._1n,"op_soundfx"...
  function _M7 (line 911) | function _M7(_3l,_4l){if(!yyGetBool(_il(_0m(_3l,
  function _N7 (line 912) | function _N7(_3l,_4l){if(!yyGetBool(_il(_0m(_3l,_4l,42)._1n,"op_soundfx"...
  function _O7 (line 912) | function _O7(_3l,_4l){if(!yyGetBool(_il(_0m(_3l,_4l,42)._1n,"op_soundfx"...
  function _P7 (line 912) | function _P7(_3l,_4l){if(!yyGetBool(_il(_0m(_3l,_4l,42)._1n,"op_soundfx"...
  function _Q7 (line 913) | function _Q7(_3l,_4l){if(!yyGetBool(_il(_0m(_3l,_4l,42)._1n,"op_soundfx"...
  function _R7 (line 914) | function _R7(_3l,_4l){if(!yyGetBool(_il(_0m(_3l,_4l,42)._1n,"op_soundfx"...
  function _S7 (line 914) | function _S7(_3l,_4l,_5l){if(!yyGetBool(_il(_0m(_3l,_4l,42)._1n,"op_soun...
  function _T7 (line 915) | function _T7(_3l,_4l,_5l,_Bq,_Cq,_zu,_Mw,_Nw,_Ow,_yM){var _Fq=_5l;var _G...
  function _U7 (line 918) | function _U7(_3l,_4l,_5l,_Bq,_Cq,_zu){var _Sw=_5l;var _Gp=_Bq;var _FM=_C...
  function _V7 (line 923) | function _V7(_3l,_4l){if(yyfgreaterequal(_06(_3l,_4l),100)){_J2(_3l,_4l,...
  function _W7 (line 923) | function _W7(_3l,_4l,_5l){var _mm=_5l;
  function _X7 (line 924) | function _X7(_3l,_4l){if(yyGetBool(_DA(48))){{{var _YM=_8l(5);for(var _Z...
  function _Y7 (line 927) | function _Y7(_3l,_4l){{var _iN=_8l(0);for(var _jN in _iN){if(!_iN.hasOwn...
  function _Z7 (line 928) | function _Z7(_3l,_4l,_5l){_Cl(_0m(_3l,_4l,42)._hm,_5l);_A9(_3l,_4l,yyfpl...
  function __7 (line 928) | function __7(_3l,_4l){{var _uN=_8l(42);for(var _vN in _uN){if(!_uN.hasOw...
  function _08 (line 929) | function _08(_3l,_4l){_X7(_3l,_4l);if(yyfequal(_0m(_3l,_4l,42)._1m,1)){_...
  function _18 (line 929) | function _18(_3l,_4l){var _Ol=_Oq(0,0,"PopUps",54);_0m(_3l,_4l,_Ol)._fo=...
  function _28 (line 930) | function _28(_3l,_4l){var _Ol=_Q8(_3l,_4l,"msg_StoreReview");_Ol=_Pl(_Ol...
  function _38 (line 930) | function _38(_3l,_4l){_0m(_3l,_4l,42)._Jl=yyfplus(_0m(_3l,_4l,42)._Jl,5)...
  function _48 (line 931) | function _48(_3l,_4l,_5l,_Bq,_Cq,_zu){var _yn=_5l;var _AN=_Bq;var _BN=_C...
  function _58 (line 945) | function _58(_3l,_4l){{var _ZN=_8l(42);for(var __N in _ZN){if(!_ZN.hasOw...
  function _68 (line 947) | function _68(_3l,_4l,_5l){var _Vn=_5l;
  function _78 (line 948) | function _78(_3l,_4l,_5l){var _yn=_5l;var _Is=0;for(;yyfless(_Is,_el(_0m...
  function _88 (line 948) | function _88(_3l,
  function _98 (line 949) | function _98(_3l,_4l,_5l){var _Bl=_5l;var _CN=0;var _Yp=0;var _4O=_il(_B...
  function _a8 (line 952) | function _a8(_3l,_4l,_5l){var _Bl=_5l;var _CN=0;var _Yp=0;var _6O=_il(_B...
  function _b8 (line 954) | function _b8(_3l,_4l,_5l,_Bq){_A9(_3l,_4l,"s_sort_players");var _wl=_5l;...
  function _c8 (line 956) | function _c8(_3l,_4l,_5l,_Bq){var _yn=_5l;var _dO=_Bq;{var _eO=_8l(42);
  function _d8 (line 957) | function _d8(_3l,_4l,_5l){var _nm=_5l;{var _hO=_8l(42);for(var _iO in _h...
  function _e8 (line 958) | function _e8(_3l,_4l,_5l){var _kO=_5l;{var _lO=_8l(42);for(var _mO in _l...
  function _f8 (line 959) | function _f8(_3l,_4l,_5l,_Bq){var _kO=_5l;var _yn=_Bq;{var _oO=_8l(42);f...
  function _g8 (line 959) | function _g8(_3l,_4l,
  function _h8 (line 960) | function _h8(_3l,_4l,_5l){var _kO=_5l;
  function _i8 (line 961) | function _i8(_3l,_4l){{var _xO=_8l(42);for(var _yO in _xO){
  function _j8 (line 962) | function _j8(_3l,_4l,_5l){var _yn=_5l;var _rl=0;{var _AO=_8l(42);for(var...
  function _k8 (line 962) | function _k8(_3l,_4l,_5l){var _DO=_5l;var _EO=-1;
  function _l8 (line 964) | function _l8(_3l,_4l,_5l,_Bq){var _Bl=_5l;var _IO=_Bq;if(yyGetBool(_m8(_...
  function _m8 (line 966) | function _m8(_3l,_4l,_5l){var _Bl=_5l;if(yyfless(_il(_Bl,"skill"),_il(_B...
  function _n8 (line 967) | function _n8(_3l,_4l,_5l){var _Bl=_5l;var _LO=_il(_Bl,"position");var _M...
  function _o8 (line 968) | function _o8(_3l,_4l,_5l){var _Bl=_5l;var _NO=_il(_Bl,"position");var _O...
  function _p8 (line 969) | function _p8(_3l,_4l,_5l,_Bq,_Cq){var _Bl=_5l;var _qM="stat_";var _PO=_B...
  function _q8 (line 971) | function _q8(_3l,_4l,_5l,_Bq){var _Bl=_5l;var _TO=_Bq;var _UO=_TO;var _V...
  function _r8 (line 972) | function _r8(_3l,_4l,_5l){var _WO=_26(_3l,_4l,_il(_5l,"attitude"));var _...
  function _s8 (line 973) | function _s8(_3l,_4l,_5l){var _Bl=_5l;var _YO=0;var _yn=_il(_Bl,"positio...
  function _t8 (line 978) | function _t8(_3l,_4l,_5l){var _0P=_5l;{var _1P=_8l(42);for(var _2P in _1...
  function _u8 (line 980) | function _u8(_3l,_4l,_5l,_Bq){var _4P=_5l;var _5P=_Bq;{var _6P=_8l(42);f...
  function _v8 (line 981) | function _v8(_3l,_4l,_5l,_Bq){var _4P=_5l;var _5P=_Bq;{var _9P=_8l(42);f...
  function _w8 (line 981) | function _w8(_3l,_4l){{var _cP=_8l(42);for(var _dP in _cP){if(!_cP.hasOw...
  function _x8 (line 983) | function _x8(_3l,_4l){{var _kP=_8l(42);for(var _lP in _kP){if(!_kP.hasOw...
  function _y8 (line 985) | function _y8(_3l,_4l){{var _nP=_8l(42);for(var _oP in _nP){if(!_nP.hasOw...
  function _z8 (line 986) | function _z8(_3l,_4l,_5l,_Bq){var _Mp=_5l;var _qP=_Bq;{var _rP=_8l(42);f...
  function _A8 (line 988) | function _A8(_3l,_4l,_5l){var _Bl=_5l;if(yyfequal(_0m(_3l,_4l,42)._sm,1)...
  function _B8 (line 991) | function _B8(_3l,_4l){{var _yP=_8l(42);for(var _zP in _yP){if(!_yP.hasOw...
  function _C8 (line 991) | function _C8(_3l,_4l){{var _BP=_8l(42);
  function _D8 (line 992) | function _D8(_3l,_4l,_5l,_Bq){var _Bl=_5l;var _EP=_Bq;var _kL=_XN(_EP);v...
  function _E8 (line 993) | function _E8(_3l,_4l){{var _KP=_8l(42);for(var _LP in _KP){if(!_KP.hasOw...
  function _F8 (line 994) | function _F8(_3l,_4l,_5l,_Bq){var _yn=_5l;var _Yp=_Bq;var _nm=_J9(_3l,_4...
  function _G8 (line 996) | function _G8(_3l,_4l,_5l){_A9(_3l,_4l,"s_sort_hirelist");var _wl=_5l;var...
  function _H8 (line 997) | function _H8(_3l,_4l,_5l){var _yn=_5l;{var _NP=_8l(42);for(var _OP in _N...
  function _I8 (line 998) | function _I8(_3l,_4l,_5l){if(yyfless(_5l,101)){return 0};return 1;}
  function _J8 (line 998) | function _J8(_3l,_4l,_5l){var _Bl=_5l;var _Jt=yyftime(_sl(_il(_Bl,"ratin...
  function _K8 (line 998) | function _K8(_3l,_4l,_5l){var _qq=_5l;var _QP=(-4);{var _RP=_8l(42);for(...
  function _L8 (line 999) | function _L8(_3l,_4l,_5l){var _qq=_5l;{var _UP=_8l(42);for(var _VP in _U...
  function _M8 (line 1001) | function _M8(_3l,_4l,_5l){var _qq=_5l;{var __P=_8l(42);for(var _0Q in __...
  function _N8 (line 1002) | function _N8(_3l,_4l){var _rl=0;{var _2Q=_8l(42);for(var _3Q in _2Q){if(...
  function _O8 (line 1002) | function _O8(_3l,_4l,_5l){var _5Q=_5l;{var _6Q=_8l(42);for(var _7Q in _6...
  function _P8 (line 1003) | function _P8(_3l,_4l){_3l._Xr=1?1:0;{var _9Q=_8l(42);for(var _aQ in _9Q)...
  function _Q8 (line 1006) | function _Q8(_3l,_4l,_5l){var _eQ=_5l;if(yyfequal(_eQ,"@")){return ""};v...
  function _R8 (line 1007) | function _R8(_3l,_4l,_5l,_Bq,_Cq,_zu,_Mw){var _sr=_5l;var _fQ=_Bq;var _g...
  function _S8 (line 1008) | function _S8(_3l,_4l,_5l){var _sr=_Q8(_3l,_4l,_5l);{var _hQ=_8l(42);for(...
  function _T8 (line 1009) | function _T8(_3l,_4l,_5l,_Bq){var _sr=_5l;var _Bl=_Bq;var _kQ=_il(_Bl,"t...
  function _U8 (line 1011) | function _U8(_3l,_4l,_5l){var _eQ=_5l;var _sr=_il(_0m(_3l,_4l,42)._gp,_e...
  function _V8 (line 1011) | function _V8(_3l,_4l,_5l){var _sr=_5l;_sr=_Pl(_sr,
  function _W8 (line 1012) | function _W8(_3l,_4l,_5l,_Bq){var _sr=_5l;var _lQ=_Bq;var _ju=_ku(_sr);
  function _X8 (line 1014) | function _X8(_3l,_4l){{var _sQ=_8l(global._SA);for(var _tQ in _sQ){if(!_...
  function _Y8 (line 1017) | function _Y8(_3l,_4l){{var _xQ=_8l(48);for(var _yQ in _xQ){
  function _Z8 (line 1018) | function _Z8(_3l,_4l){var _CQ=1;var _DQ=-1;if(yyCompareVal(_CQ,0,g_GMLMa...
  function __8 (line 1019) | function __8(_3l,_4l,_5l){var _EQ=_5l;var _FQ=-1;if(yyCompareVal(_EQ,0,g...
  function _09 (line 1019) | function _09(_3l,_4l,_5l,_Bq){var _GQ=_ul(_5l);var _HQ=_ul(_Bq);if(yyfle...
  function _19 (line 1020) | function _19(_3l,_4l,_5l,_Bq){return _ul(_Vm(_5l,_Bq));}
  function _29 (line 1020) | function _29(_3l,_4l){var _sr="";var _IQ=_3l.__C;var _JQ=-1;if(yyCompare...
  function _39 (line 1021) | function _39(_3l,_4l,_5l,_Bq){return _Wm(_KQ(_5l,9,_Bq)," ","");}
  function _49 (line 1021) | function _49(_3l,_4l,_5l){var _LQ=_5l;var _MQ=-1;if(yyCompareVal(_LQ,0,g...
  function _59 (line 1022) | function _59(_3l,_4l,_5l){var _NQ=_5l;var _OQ=-1;if(yyCompareVal(_NQ,0,g...
  function _69 (line 1023) | function _69(_3l,_4l,_5l){var _Au=_5l;if(yyfequal(_Au,0)){_Au=_0m(_3l,_4...
  function _79 (line 1026) | function _79(_3l,_4l,_5l){var _TO=_5l;var _RQ=_TO;var _SQ=-1;if(yyCompar...
  function _89 (line 1027) | function _89(_3l,_4l,_5l){var _TQ=_5l;var _UQ=-1;if(yyCompareVal(_TQ,0,g...
  function _99 (line 1031) | function _99(_3l,_4l,_5l){var _VQ=_5l;var _WQ=-1;if(yyCompareVal(_VQ,1,g...
  function _a9 (line 1034) | function _a9(_3l,_4l,_5l){var _XQ=_5l;var _YQ=-1;if(yyCompareVal(_XQ,1,g...
  function _b9 (line 1036) | function _b9(_3l,_4l,_5l){return _Q8(_3l,_4l,yyfplus("attitude_",
  function _c9 (line 1037) | function _c9(_3l,_4l,_5l){var _ZQ=_5l;if(yyfgreater(_ZQ,0)){return yyfpl...
  function _d9 (line 1037) | function _d9(_3l,_4l,_5l){var __Q=_5l;var _0R=-1;if(yyCompareVal(__Q,0,g...
  function _e9 (line 1040) | function _e9(_3l,_4l,_5l){var _9x=_5l;if(yyflessequal(_9x,(-1))){return ...
  function _f9 (line 1041) | function _f9(_3l,_4l,_5l,_Bq){var _Pn=_5l;var _1R=_Bq;var _sr=_ul(_il(_P...
  function _g9 (line 1042) | function _g9(_3l,_4l,_5l){return _Q8(_3l,_4l,yyfplus("coachtrait_",_sl(_...
  function _h9 (line 1042) | function _h9(_3l,_4l,_5l){var _2R=_5l;var _3R=-1;if(yyCompareVal(_2R,1,g...
  function _i9 (line 1044) | function _i9(_3l,_4l,_5l){_A9(_3l,_4l,yyfplus("s_get_team_by_id: ",_sl(_...
  function _j9 (line 1046) | function _j9(_3l,_4l){var _zq=_p5(_3l,_4l);var _4R=_il(_zq,"away_team");...
  function _k9 (line 1053) | function _k9(_3l,_4l){var _4R=_Sm(31);var _5R=_0m(_3l,_4l,42)._Fm;_0m(_3...
  function _l9 (line 1059) | function _l9(_3l,_4l,_5l){var _Pn=_hl(_0m(_3l,_4l,42)._Bm,_5l);return _i...
  function _m9 (line 1059) | function _m9(_3l,_4l,_5l,_Bq,_Cq){_A9(_3l,_4l,"s_sort_teams");var _tR=_5...
  function _n9 (line 1063) | function _n9(_3l,_4l,_5l,_Bq){var _Pv=_5l;var _Wv=_Bq;var _CR;_CR=_vp(_C...
  function _o9 (line 1065) | function _o9(_3l,_4l,_5l,_Bq){_A9(_3l,_4l,"s_get_team_id_by_seed");var _...
  function _p9 (line 1065) | function _p9(_3l,_4l,_5l,_Bq,_Cq){_A9(_3l,_4l,"s_get_team_name_by_seed")...
  function _q9 (line 1066) | function _q9(_3l,_4l,_5l){var _Pn=_5l;{var _KR=_8l(42);for(var _LR in _K...
  function _r9 (line 1068) | function _r9(_3l,_4l,_5l){var _Pn=_5l;{var _RR=_8l(42);for(var _SR in _R...
  function _s9 (line 1069) | function _s9(_3l,_4l,_5l){var _Pn=_5l;if(!yyGetBool(_Pn)){
  function _t9 (line 1072) | function _t9(_3l,_4l){var _ZR=0;var _Is=0;for(;yyfless(_Is,_el(_0m(_3l,_...
  function _u9 (line 1072) | function _u9(_3l,_4l){{var __R=_8l(42);for(var _0S in __R){if(!__R.hasOw...
  function _v9 (line 1075) | function _v9(_3l,_4l,_5l){return yyfbitand(_sl(_5l),255);}
  function _w9 (line 1075) | function _w9(_3l,_4l,_5l){return yyfbitand(_sl(yyfdiv(_sl(_5l),256)),255);}
  function _x9 (line 1075) | function _x9(_3l,_4l,_5l){return yyfdiv(_sl(_5l),65536);}
  function _y9 (line 1075) | function _y9(_3l,_4l,_5l){var _aS=_ul(_5l);var _bS=0;var _cS=48;var _dS=...
  function _z9 (line 1076) | function _z9(_3l,_4l,_5l){return yyfbitor(yyfbitor(_sl(yyfbitshiftleft(_...
  function _A9 (line 1077) | function _A9(_3l,_4l,_5l){_4z(_ul(_5l));return _5l;}
  function _B9 (line 1077) | function _B9(_3l,_4l,_5l){if(!yyGetBool(_il(_0m(_3l,_4l,42)._1n,"op_soun...
  function _C9 (line 1077) | function _C9(_3l,_4l){return _kI(_Sm(255),_Sm(255),_Sm(255));}
  function _D9 (line 1077) | function _D9(_3l,_4l,_5l,_Bq,_Cq,_zu,_Mw,_Nw,_Ow,_yM){var _hS=_5l;var _i...
  function _E9 (line 1080) | function _E9(_3l,_4l,_5l){var _Zt=_5l;var _tS=_uS(_Zt);var _vS="";while(...
  function _F9 (line 1080) | function _F9(_3l,_4l){var _pr=_qr("Colleges.txt");var _xS;var _vL=0;whil...
  function _G9 (line 1081) | function _G9(_3l,_4l){var _pr=_qr("Charities.txt");var _xS;var _vL=0;whi...
  function _H9 (line 1081) | function _H9(_3l,_4l,_5l,_Bq,_Cq,_zu){_3l._zS=_AS(yyfminus(_sl(_zu),_sl(...
  function _I9 (line 1081) | function _I9(_3l,_4l,_5l){var _BS=_5l;var _vu="Names_F1.txt";if(!yyGetBo...
  function _J9 (line 1082) | function _J9(_3l,_4l){var _pr=_qr("Names_L.txt");var _xS;var _vL=0;while...
  function _6a (line 1082) | function _6a(_3l,_4l){}
  function _8a (line 1082) | function _8a(_3l,_4l){_YK(1);
  function _aa (line 1083) | function _aa(_3l,_4l){_DS(_3l,_4l);_3l._1r=16;_3l._mm=_Q8(_3l,_4l,"ui_Ti...
  function _ea (line 1083) | function _ea(_3l,_4l){if(!yyGetBool(_3l._6r)){return };_3l._ES=0?1:0;if(...
  function _fa (line 1087) | function _fa(_3l,_4l){if(yyGetBool(_3l._FS)){_4L(yyfminus(_sl(_3l.x),2),...
  function _ga (line 1088) | function _ga(_3l,_4l){}
  function _ia (line 1088) | function _ia(_3l,_4l){if(yyGetBool(_3l._FS)){{_3l._FS=0?1:0;if(yyGetBool...
  function _ja (line 1089) | function _ja(_3l,_4l){_DS(_3l,_4l);_3l._mm="Text";_3l.__S=1;_3l._0T=1;_3...
  function _ka (line 1089) | function _ka(_3l,_4l){if(yyGetBool(_3l._5T)){{if(yyGetBool(_3l._6T)){_jL...
  function _la (line 1091) | function _la(_3l,_4l){}
  function _ma (line 1091) | function _ma(_3l,_4l){_DS(_3l,_4l);_3l._mm="Text";_3l.__S=1;_3l._0T=1;_3...
  function _na (line 1091) | function _na(_3l,_4l){if((yyGetBool(_3l._5T))&&(yyGetBool(_3l._wC))){{if...
  function _oa (line 1093) | function _oa(_3l,_4l){}
  function _pa (line 1093) | function _pa(_3l,_4l){_DS(_3l,_4l);_3l.__S=1;_3l._0T=1;_3l._5T=1?1:0;_3l...
  function _qa (line 1093) | function _qa(_3l,_4l){}
  function _ra (line 1093) | function _ra(_3l,_4l){var _9T=_3l.x;var _aT=_3l.y;if(yyGetBool(_3l._6r))...
  function _sa (line 1097) | function _sa(_3l,_4l){_DS(_3l,_4l);_3l._Pq="Title";_3l._dw=_vp(_3l._dw,4...
  function _ua (line 1098) | function _ua(_3l,_4l){_3l._Oy(yyfdivide(_sl(_Qq()),_sl(_3l._OM())));_3l....
  function _wa (line 1098) | function _wa(_3l,_4l){_V7(_3l,_4l);_X7(_3l,_4l);}
  function _xa (line 1098) | function _xa(_3l,_4l){_jL(_3l,101,0,0,0,_3l._tC,_3l._nC,0,_3l._am,_3l._0...
  function _ya (line 1098) | function _ya(_3l,_4l){}
  function _Aa (line 1098) | function _Aa(_3l,_4l){_3m(4);}
  function _Ba (line 1098) | function _Ba(_3l,_4l){_DS(_3l,_4l);_3l._0r=0.8;_3l._am=16777215;_3l._gT=...
  function _Ca (line 1098) | function _Ca(_3l,
  function _Da (line 1099) | function _Da(_3l,_4l){_YK(0);_ZK(1);__K(1);if(yyGetBool(_3l._5T)){{var _...
  function _Ea (line 1103) | function _Ea(_3l,_4l){_DS(_3l,_4l);_3l._mm="Message";_3l._am=new Long(42...
  function _Fa (line 1104) | function _Fa(_3l,_4l){_3l._am=global._Ll;if(yyGetBool(_3l._mT)){_3l._Vw(...
  function _Ga (line 1104) | function _Ga(_3l,_4l){if(!yyGetBool(_3l._4a)){return };if((yyGetBool(_3l...
  function _Ha (line 1106) | function _Ha(_3l,_4l){}
  function _Ia (line 1106) | function _Ia(_3l,_4l){_YK(0);_ZK(1);var _1L=yyfplus(_sl(_3l.x),_sl(yyfdi...
  function _Ja (line 1109) | function _Ja(_3l,_4l){_DS(_3l,_4l);_3l._mm=_Q8(_3l,_4l,"");_3l._4r=25;_3...
  function _Ka (line 1109) | function _Ka(_3l,_4l){_YK(0);_ZK(1);var _1L=yyfplus(_sl(_3l.x),_sl(yyfdi...
  function _La (line 1112) | function _La(_3l,_4l){_DS(_3l,_4l);_3l._zT=0?1:0;}
  function _Ma (line 1112) | function _Ma(_3l,_4l){_hL(_3l,_3l._wC,_3l._oC,_3l.x,_3l.y);_YK(0);_ZK(1)...
  function _Na (line 1113) | function _Na(_3l,_4l){_DS(_3l,_4l);}
  function _Oa (line 1113) | function _Oa(_3l,_4l){_DS(_3l,_4l);}
  function _Pa (line 1113) | function _Pa(_3l,_4l){
  function _Qa (line 1116) | function _Qa(_3l,_4l){}
  function _Ra (line 1116) | function _Ra(_3l,_4l){_DS(_3l,_4l);_3l._Pq=_Q8(_3l,_4l,"");_3l._mm="";}
  function _Sa (line 1116) | function _Sa(_3l,_4l){if(yyfequal(_3l._rm,(-1))){_3l._rm=_0m(_3l,_4l,42)...
  function _Ua (line 1117) | function _Ua(_3l,_4l){_Fl(_3l._DT);_Fl(_3l._ET);_Fl(_3l._FT);_Fl(_3l._GT);}
  function _Va (line 1117) | function _Va(_3l,_4l){var _uw=_3l._OM();var _PM=_3l._Vs();_hL(_3l,
  function _Wa (line 1124) | function _Wa(_3l,_4l){}
  function _Xa (line 1124) | function _Xa(_3l,_4l){_DS(_3l,_4l);_3l._mm=_Q8(_3l,_4l,"");_3l._rm=(-1);}
  function _Ya (line 1124) | function _Ya(_3l,_4l){}
  function _Za (line 1124) | function _Za(_3l,_4l){_YS(_3l);_YK(0);_ZK(1);var _1L=_3l.x;var _1r=_3l.y...
  function __a (line 1125) | function __a(_3l,_4l){_DS(_3l,_4l);_3l._Pq="Title";_3l._nw="Line 1";_3l....
  function _0b (line 1125) | function _0b(_3l,_4l){}
  function _1b (line 1125) | function _1b(_3l,_4l){_YS(_3l);_YK(0);_ZK(1);__K(1);var _1L=_3l.x;var _1...
  function _2b (line 1128) | function _2b(_3l,_4l){_DS(_3l,_4l);_3l._Pq="Title";_3l._mm="Line 1";_3l....
  function _3b (line 1128) | function _3b(_3l,_4l){_3l._KT=192;_3l._LT=yyfminus(_sl(yyftime(28,_sl(_3...
  function _4b (line 1128) | function _4b(_3l,_4l){if(yyGetBool(abs(_3l._NT))){
  function _5b (line 1129) | function _5b(_3l,_4l){}
  function _6b (line 1129) | function _6b(_3l,_4l){_YK(0);_ZK(1);__K(1);_aL(16777215);
  function _8b (line 1136) | function _8b(_3l,_4l){if((yyGetBool(yyfgreater(_rn._7B(),yyfminus(_sl(_3...
  function _9b (line 1137) | function _9b(_3l,_4l){_DS(_3l,_4l);_3l._NT=0;}
  function _ab (line 1137) | function _ab(_3l,_4l){_3l._Bl=(-4);_3l.__T=_0U(0,"colorHelmet");_3l._1U=...
  function _bb (line 1138) | function _bb(_3l,_4l){{var _bU=_8l(5);for(var _cU in _bU){if(!_bU.hasOwn...
  function _cb (line 1139) | function _cb(_3l,_4l){}
  function _db (line 1139) | function _db(_3l,_4l){if(yyfequal(_3l._Bl,(-4))){{return;}};if((yyGetBoo...
  function _eb (line 1155) | function _eb(_3l,_4l){_DS(_3l,_4l);_3l._4r=44;_3l._ES=0?1:0;_3l._WS=0?1:...
  function _fb (line 1155) | function _fb(_3l,_4l){_3l._Nl=min(_0m(_3l,_4l,42)._Nl,17);_3l._Lw=16;_z5...
  function _gb (line 1155) | function _gb(_3l,
  function _hb (line 1156) | function _hb(_3l,_4l){_YS(_3l);_YK(0);_ZK(1);var _Pq=yyfplus(yyfplus(_sl...
  function _ib (line 1159) | function _ib(_3l,_4l){_DS(_3l,_4l);_3l._Nl=0;_3l._vw=_vp(_3l._vw,9028566...
  function _jb (line 1159) | function _jb(_3l,_4l){_3l._Pq=_Q8(_3l,_4l,"ui_Offense");_3l._cr=_q9(_3l,
  function _kb (line 1160) | function _kb(_3l,_4l){_3l._cr=_q9(_3l,_4l,_0m(_3l,_4l,42)._Dm);}
  function _lb (line 1160) | function _lb(_3l,_4l){}
  function _mb (line 1160) | function _mb(_3l,_4l){_YS(_3l);_YK(0);_ZK(1);var _1L=_3l.x;var _1r=_3l.y...
  function _nb (line 1161) | function _nb(_3l,_4l){_DS(_3l,_4l);_3l._Pq=_Q8(_3l,
  function _ob (line 1162) | function _ob(_3l,_4l){_3l._Pq=_Q8(_3l,_4l,"ui_Defense");_3l._cr=_r9(_3l,...
  function _pb (line 1162) | function _pb(_3l,_4l){_3l._cr=_r9(_3l,_4l,_0m(_3l,_4l,42)._Dm);}
  function _qb (line 1162) | function _qb(_3l,_4l){_YS(_3l);_YK(0);_ZK(1);var _1L=_3l.x;var _1r=_3l.y...
  function _rb (line 1164) | function _rb(_3l,_4l){_DS(_3l,_4l);_3l._Pq=_Q8(_3l,_4l,"");_3l._5r=68;_3...
  function _sb (line 1164) | function _sb(_3l,_4l){_3l._Pq=_Q8(_3l,_4l,"ui_Credit");_3l._mm=_0m(_3l,_...
  function _tb (line 1164) | function _tb(_3l,_4l){_3l._mm=_0m(_3l,_4l,42)._Jl;}
  function _ub (line 1164) | function _ub(_3l,_4l){}
  function _vb (line 1164) | function _vb(_3l,_4l){_YK(0);_ZK(1);var _1L=_3l.x;var _1r=_3l.y;var _bT=...
  function _wb (line 1166) | function _wb(_3l,_4l){_DS(_3l,_4l);_3l._Pq="Title";_3l._mm="Line 1";_3l....
  function _xb (line 1166) | function _xb(_3l,_4l){_3l._Pq=_Q8(_3l,_4l,"ui_Morale");_3l._5r=58;_3l._J...
  function _yb (line 1167) | function _yb(_3l,_4l){_3l._JM=_xC(_3l._JM,_06(_3l,_4l),0.1);_3l._cr=_26(...
  function _zb (line 1167) | function _zb(_3l,_4l){}
  function _Ab (line 1167) | function _Ab(_3l,_4l){_YS(_3l);_YK(0);_ZK(1);var _1L=_3l.x;var _1r=_3l.y...
  function _Bb (line 1168) | function _Bb(_3l,_4l){_DS(_3l,_4l);_3l._Pq="Title";_3l._mm="Line 1";_3l....
  function _Cb (line 1168) | function _Cb(_3l,_4l){}
  function _Db (line 1168) | function _Db(_3l,_4l){_YK(0);_ZK(0);var _1L=_3l.x;var _1r=yyfminus(_sl(_...
  function _Eb (line 1170) | function _Eb(_3l,_4l){_DS(_3l,_4l);_3l._Pq="Title";_3l._eo=0;_3l._DU=0;_...
  function _Fb (line 1170) | function _Fb(_3l,_4l){}
  function _Gb (line 1170) | function _Gb(_3l,_4l){_YS(_3l);_YK(0);_ZK(1);var _1L=_3l.x;var _1r=_3l.y...
  function _Hb (line 1172) | function _Hb(_3l,_4l){_DS(_3l,_4l);_3l._Pq="Title";_3l._eo=0;}
  function _Ib (line 1172) | function _Ib(_3l,_4l){_3l._EU=_rn._up();_3l._FU=_t9(_3l,_4l);_3l._GU=_0m...
  function _Jb (line 1173) | function _Jb(_3l,_4l){}
  function _Kb (line 1173) | function _Kb(_3l,_4l){_YS(_3l);_YK(0);_ZK(1);var _1L=_3l.x;var _1r=_3l.y...
  function _Lb (line 1175) | function _Lb(_3l,_4l){_DS(_3l,_4l);_3l._EU=0;_3l._Pq="Title";_3l._FU=0;_...
  function _Mb (line 1175) | function _Mb(_3l,_4l){_3l._JM=_0m(_3l,_4l,42)._Lp;_3l._Pq=yyfplus(yyfplu...
  function _Nb (line 1175) | function _Nb(_3l,_4l){_3l._Pq=yyfplus(yyfplus(yyfplus(_sl(_Q8(_3l,_4l,"u...
  function _Ob (line 1176) | function _Ob(_3l,_4l){_YS(_3l);_YK(0);_ZK(1);var _1L=_3l.x;var _1r=_3l.y...
  function _Pb (line 1179) | function _Pb(_3l,_4l){}
  function _Qb (line 1179) | function _Qb(_3l,_4l){_DS(_3l,_4l);_3l._Pq="Title";_3l._JM=0;_3l._eo=0;_...
  function _Rb (line 1179) | function _Rb(_3l,_4l){_3l._JM=_06(_3l,_4l);_3l._Pq=yyfplus(yyfplus(yyfpl...
  function _Sb (line 1180) | function _Sb(_3l,_4l){_3l._JM=_xC(_3l._JM,_06(_3l,_4l),0.1);_3l._Pq=yyfp...
  function _Tb (line 1180) | function _Tb(_3l,_4l){}
  function _Ub (line 1180) | function _Ub(_3l,_4l){_YS(_3l);_YK(0);_ZK(1);var _1L=_3l.x;var _1r=_3l.y...
  function _Vb (line 1182) | function _Vb(_3l,_4l){_DS(_3l,_4l);_3l._Pq="Title";_3l._IU=0;_3l._am=255;}
  function _Wb (line 1182) | function _Wb(_3l,_4l){_3l._JM=_16(_3l,_4l);_3l._Pq=yyfplus(yyfplus(yyfpl...
  function _Xb (line 1182) | function _Xb(_3l,_4l){_3l._JM=_xC(_3l._JM,_16(_3l,_4l),0.1);_3l._Pq=yyfp...
  function _Yb (line 1183) | function _Yb(_3l,_4l){}
  function _Zb (line 1183) | function _Zb(_3l,_4l){_YS(_3l);_YK(0);_ZK(1);var _1L=_3l.x;var _1r=_3l.y...
  function __b (line 1184) | function __b(_3l,_4l){_DS(_3l,_4l);_3l._Pq="Title";_3l._eo=0;
  function _0c (line 1185) | function _0c(_3l,_4l){_3l._eo=_0m(_3l,_4l,42)._Kl;_3l._JM=_3l._eo;_3l._P...
  function _1c (line 1185) | function _1c(_3l,_4l){}
  function _2c (line 1185) | function _2c(_3l,_4l){_YS(_3l);_YK(0);_ZK(1);var _1L=_3l.x;var _1r=_3l.y...
  function _3c (line 1187) | function _3c(_3l,_4l){_DS(_3l,_4l);_3l._Pq="Title";_3l._eo=0;_3l._am=255;}
  function _4c (line 1187) | function _4c(_3l,_4l){_3l._eo=_0m(_3l,_4l,42)._Tl;_3l._JM=_3l._eo;_3l._P...
  function _5c (line 1187) | function _5c(_3l,_4l){}
  function _6c (line 1187) | function _6c(_3l,_4l){_YS(_3l);
  function _7c (line 1190) | function _7c(_3l,_4l){_DS(_3l,_4l);_3l._Pq="Title";_3l._eo=0;_3l._am=255;}
  function _8c (line 1190) | function _8c(_3l,_4l){_3l._eo=_0m(_3l,_4l,42)._Yl;_3l._JM=_3l._eo;_3l._P...
  function _9c (line 1190) | function _9c(_3l,_4l){}
  function _ac (line 1190) | function _ac(_3l,_4l){_YS(_3l);_YK(0);_ZK(1);var _1L=_3l.x;var _1r=_3l.y...
  function _bc (line 1192) | function _bc(_3l,_4l){_DS(_3l,_4l);_3l._Pq="Title";_3l._eo=0;_3l._am=255;}
  function _cc (line 1192) | function _cc(_3l,_4l){if(!yyGetBool(_3l._4a)){return };if((yyGetBool(_3l...
  function _dc (line 1193) | function _dc(_3l,_4l){_hL(_3l,_3l._wC,_3l._oC,_3l.x,_3l.y);}
  function _ec (line 1193) | function _ec(_3l,_4l){_DS(_3l,_4l);_3l._MU="";}
  function _gc (line 1193) | function _gc(_3l,_4l){_3l._kr((-1000));
  function _hc (line 1194) | function _hc(_3l,_4l){_3l._NU++;}
  function _ic (line 1194) | function _ic(_3l,_4l){if(!yyGetBool(_3l._4a)){return };var _OU=_3l._NU;v...
  function _jc (line 1196) | function _jc(_3l,_4l){_DS(_3l,_4l);}
  function _kc (line 1196) | function _kc(_3l,_4l){_DS(_3l,_4l);_3l._SU=150;_3l._NU=0;}
  function _lc (line 1196) | function _lc(_3l,_4l){_YK(0);_3l._Pq=yyfplus(yyfplus(yyfplus(_sl(_Q8(_3l...
  function _mc (line 1196) | function _mc(_3l,_4l){if(yyGetBool(abs(_3l._ZU))){
  function _nc (line 1198) | function _nc(_3l,_4l){_YK(0);_ZK(0);var _1L=yyfplus(_sl(_3l.x),8);var _1...
  function _oc (line 1200) | function _oc(_3l,_4l){if((yyGetBool(yyfgreater(_rn._7B(),_3l.y)))&&(yyGe...
  function _pc (line 1200) | function _pc(_3l,
  function _qc (line 1201) | function _qc(_3l,_4l){_3l._7V=_95(_3l,_4l);var _rl=_H2(_3l,_4l,"ACH_WIN_...
  function _rc (line 1201) | function _rc(_3l,_4l){var _dl=0;for(;yyfless(_dl,_el(_3l._7V));_dl++){_T...
  function _sc (line 1201) | function _sc(_3l,
  function _tc (line 1202) | function _tc(_3l,
  function _uc (line 1203) | function _uc(_3l,_4l){_YK(0);_3l._WU=_dT("I");_3l._XU=_el(_0m(_3l,_4l,42...
  function _vc (line 1203) | function _vc(_3l,_4l){if(yyGetBool(abs(_3l._ZU))){{_3l.__U=yyfplus(_3l._...
  function _wc (line 1204) | function _wc(_3l,_4l){_YK(0);_ZK(1);var _1L=yyfplus(_sl(_3l.x),6);var _1...
  function _xc (line 1208) | function _xc(_3l,_4l){if((yyGetBool(yyfgreater(_rn._7B(),_3l.y)))&&(yyGe...
  function _yc (line 1208) | function _yc(_3l,
  function _zc (line 1209) | function _zc(_3l,_4l){_DS(_3l,_4l);}
  function _Ac (line 1209) | function _Ac(_3l,_4l){_DS(_3l,_4l);if(!yyGetBool(global._tx)){{_3l._6r=0...
  function _Bc (line 1209) | function _Bc(_3l,_4l){_DS(_3l,_4l);_3l._6r=global._tx;if(yyGetBool(_0m(_...
  function _Cc (line 1209) | function _Cc(_3l,_4l){_DS(_3l,_4l);_3l._4r=194;
  function _Dc (line 1210) | function _Dc(_3l,_4l){_DS(_3l,_4l);if(yyGetBool(_il(_0m(_3l,_4l,42)._1n,...
  function _Ec (line 1210) | function _Ec(_3l,_4l){_3l._6r=1?1:0;}
  function _Fc (line 1210) | function _Fc(_3l,_4l){_DS(_3l,_4l);if(yyGetBool(_il(_0m(_3l,_4l,42)._1n,...
  function _Gc (line 1210) | function _Gc(_3l,_4l){_DS(_3l,_4l);_3l._mm=_Q8(_3l,_4l,"btn_RestorePurch...
  function _Hc (line 1210) | function _Hc(_3l,_4l){_3l._6r=1?1:0;}
  function _Ic (line 1210) | function _Ic(_3l,_4l){_DS(_3l,_4l);_72._F2[_3l._Ty](_3l,_4l);}
  function _Jc (line 1210) | function _Jc(_3l,
  function _Kc (line 1211) | function _Kc(_3l,_4l){_3l._mm=_36(_3l,_4l);_3l._hr=57;}
  function _Lc (line 1211) | function _Lc(_3l,_4l){_3l._mm=_36(_3l,_4l);}
  function _Mc (line 1211) | function _Mc(_3l,_4l){_DS(_3l,_4l);}
  function _Nc (line 1211) | function _Nc(_3l,_4l){if(yyGetBool(_3l._cV)){_3l._Vw(114)};if(!yyGetBool...
  function _Pc (line 1211) | function _Pc(_3l,_4l){{if(yyGetBool(_3l._cV)){_dV(global._eV,"_blank")}e...
  function _Qc (line 1211) | function _Qc(_3l,_4l){_DS(_3l,_4l);_3l._cV=0?1:0;}
  function _Rc (line 1211) | function _Rc(_3l,_4l){_A9(_3l,_4l,
  function _Sc (line 1219) | function _Sc(_3l,_4l){_C5(_3l,_4l);}
  function _Uc (line 1219) | function _Uc(_3l,_4l){}
  function _Wc (line 1219) | function _Wc(_3l,_4l){var _oV=_rn._lx();var _pV=-1;if(yyCompareVal(_oV,4...
  function _Yc (line 1220) | function _Yc(_3l,_4l){if(!yyGetBool(global._fB)){{_0m(_3l,_4l,42)._Jl=yy...
  function __c (line 1220) | function __c(_3l,_4l){if(!yyGetBool(global._fB)){{_3l._iV=!yyGetBool(_3l...
  function _1d (line 1220) | function _1d(_3l,_4l){if(!yyGetBool(global._fB)){_X5(_3l,_4l)};}
  function _3d (line 1220) | function _3d(_3l,_4l){if(!yyGetBool(global._fB)){_u9(_3l,_4l)};}
  function _4d (line 1220) | function _4d(_3l,_4l){_DS(_3l,_4l);}
  function _5d (line 1220) | function _5d(_3l,_4l){_rV(1);_3l._sV=_tV();_3l._uV=_vV();
  function _6d (line 1222) | function _6d(_3l,_4l){if(yyfequal(_rn._bp(),(-1))){_FV()};}
  function _8d (line 1222) | function _8d(_3l,_4l){var _GV=_IK(_rn._vK[_Tn(0,_rn._vK)]);var _HV=_KK(_...
  function _ad (line 1227) | function _ad(_3l,_4l){_rn._YV(1?1:0);_rn._ZV[_wp(0)]=1?1:0;}
  function _cd (line 1227) | function _cd(_3l,_4l){_BV(960,540);_gV(480,270);_CV(_rn._DV,480,270);if(...
  function _dd (line 1227) | function _dd(_3l,_4l){_DS(_3l,_4l);}
  function _ed (line 1227) | function _ed(_3l,_4l){_A9(_3l,_4l,"------> Create: obj_splash");_3l._rx=...
  function _fd (line 1227) | function _fd(_3l,_4l){_3m(4);}
  function _hd (line 1227) | function _hd(_3l,_4l){_3m(4);
  function _id (line 1228) | function _id(_3l,_4l){_DS(_3l,_4l);_3l.__V=0;}
  function _jd (line 1228) | function _jd(_3l,_4l){_A9(_3l,_4l,"------> Create: obj_scanlines");{var ...
  function _ld (line 1228) | function _ld(_3l,_4l){var _kL=_Qq();var _FP=_Rq();var _RK=global._Ll;if(...
  function _md (line 1230) | function _md(_3l,_4l){_DS(_3l,_4l);_3l._bn=0?1:0;}
  function _nd (line 1230) | function _nd(_3l,_4l){_3l._Os=0;_3l._Qs=0;_3l._sS=0;_3l._LC=0;_3l._IC=0?...
  function _od (line 1230) | function _od(_3l,_4l){_DS(_3l,_4l);}
  function _pd (line 1230) | function _pd(_3l,_4l){_3l._EU=_rn._up();}
  function _qd (line 1230) | function _qd(_3l,_4l){var _5W=_3l._1m;var _6W=-1;if(yyCompareVal(_5W,0,g...
  function _rd (line 1232) | function _rd(_3l,_4l){}
  function _sd (line 1232) | function _sd(_3l,_4l){_YS(_3l);}
  function _td (line 1232) | function _td(_3l,_4l){_DS(_3l,_4l);_3l._EU=0;_3l._1m=0;_3l._Qw=0;_3l._Rw...
  function _ud (line 1232) | function _ud(_3l,_4l){_bW(0.25);_3l._cW=_rn._dW;_3l._eW=0;_3l._WA=1;_3l....
  function _vd (line 1239) | function _vd(_3l,_4l){_i6(_3l,_4l);}
  function _wd (line 1239) | function _wd(_3l,_4l){_A9(_3l,_4l,yyfplus("obj_controller Alarm0: ",_sl(...
  function _xd (line 1248) | function _xd(_3l,_4l){_3l._vE=1?1:0;}
  function _yd (line 1248) | function _yd(_3l,_4l){if(yyfgreater(_rn._up(),yyfplus(_sl(_3l._eW),100))...
  function _zd (line 1250) | function _zd(_3l,_4l){_y7(_3l,_4l);_x7(_3l,_4l);_A7(_3l,_4l);}
  function _Bd (line 1250) | function _Bd(_3l,_4l){var _DW=_0m(_3l,_4l,42)._Bo;var _EW=-1;switch(_EW)...
  function _Cd (line 1252) | function _Cd(_3l,_4l){}
  function _Dd (line 1252) | function _Dd(_3l,_4l){if(!yyGetBool(global._fB)){
  function _Ed (line 1253) | function _Ed(_3l,_4l){if(!yyGetBool(global._fB)){{if(yyfequal(_3l._WA,2)...
  function _Gd (line 1253) | function _Gd(_3l,_4l){if(!yyGetBool(global._fB)){{if(yyfequal(_3l._WA,2)...
  function _Id (line 1253) | function _Id(_3l,_4l){if(!yyGetBool(global._fB)){{if(yyfgreater(_3l._rx[...
  function _Kd (line 1253) | function _Kd(_3l,_4l){if(!yyGetBool(global._fB)){{_3l._VD=0;_3l._WD=0;}};}
  function _Ld (line 1253) | function _Ld(_3l,_4l){
  function _Md (line 1254) | function _Md(_3l,_4l){_DS(_3l,_4l);}
  function _Nd (line 1254) | function _Nd(_3l,_4l){_3l._TF=_LW(_MW("Shadows"),_3l.x,_3l.y,21);_NW(_3l...
  function _Od (line 1257) | function _Od(_3l,_4l){if(yyGetBool(_rB(_3l._sB))){_pI(_3l._sB)};}
  function _Pd (line 1257) | function _Pd(_3l,_4l){if(yyGetBool(_3l._9D)){return };if(yyfnotequal(_0m...
  function _Qd (line 1259) | function _Qd(_3l,_4l){var _bD=global._SA;var _1B=48;_r6(_3l,_4l);if(yyfl...
  function _Sd (line 1269) | function _Sd(_3l,_4l){var _aX=_3l._lC;var _bX=-1;if(yyCompareVal(_aX,0,g...
  function _Td (line 1272) | function _Td(_3l,_4l){var _bD=global._SA;if(yyGetBool(_3l._Bl)){{var _1T...
  function _Ud (line 1277) | function _Ud(_3l,_4l){var _bD=global._SA;var _kX=_0m(_3l,_4l,_bD)._WA;va...
  function _Vd (line 1279) | function _Vd(_3l,_4l){_DS(_3l,_4l);}
  function _Wd (line 1279) | function _Wd(_3l,_4l){_DS(_3l,_4l);_3l._6H=_VG(50);_3l._Oy(yyftime(_sl(_...
  function _Xd (line 1280) | function _Xd(_3l,_4l){_DS(_3l,_4l);}
  function _Yd (line 1280) | function _Yd(_3l,_4l){_DS(_3l,_4l);_3l._6H=_VG(51);_3l._ZB=_sl(-_sl(_0m(...
  function _Zd (line 1282) | function _Zd(_3l,_4l){_DS(_3l,_4l);}
  function __d (line 1282) | function __d(_3l,_4l){_3l._WA=0;_3l._HA=_g7(_3l,_4l);_3l._yB=(-4);_3l._k...
  function _0e (line 1283) | function _0e(_3l,_4l){}
  function _1e (line 1283) | function _1e(_3l,_4l){if(yyGetBool(_DA(5))){return };var _sX=_3l._WA;var...
  function _2e (line 1285) | function _2e(_3l,_4l){var _vX=_3l._oC;if(yyfless(_3l._vB,1)){_vX=0};{var...
  function _3e (line 1287) | function _3e(_3l,_4l){if((yyGetBool(_0m(_3l,_4l,48)._3C))&&(yyGetBool(_k...
  function _4e (line 1288) | function _4e(_3l,_4l){_DS(_3l,_4l);}// /// @description Insert descripti...
  function _5e (line 1289) | function _5e(_3l,_4l){}
  function _6e (line 1289) | function _6e(_3l,_4l){_DS(_3l,_4l);_3l._BX=0?1:0;_3l._CX=0?1:0;_3l._DX=_...
  function _7e (line 1290) | function _7e(_3l,_4l){var _bD=global._SA;_3l._kr(_0m(_3l,_4l,_bD).x);_3l...
  function _8e (line 1293) | function _8e(_3l,_4l){if((yyGetBool(_0m(_3l,_4l,48)._3C))&&(yyGetBool(_3...
  function _ae (line 1295) | function _ae(_3l,
  function _be (line 1296) | function _be(_3l,_4l){_DS(_3l,_4l);}
  function _ce (line 1296) | function _ce(_3l,_4l){_lp(_3l);}
  function _de (line 1296) | function _de(_3l,_4l){if(yyfequal(_3l._mm,"")){return };var _Lw=20;_YK(1...
  function _ee (line 1298) | function _ee(_3l,_4l){_DS(_3l,_4l);_3l._mm="Message";_3l._fo=0?1:0;_3l._...
  function _fe (line 1298) | function _fe(_3l,_4l){_3l._Us(_3l.y-0.2);_3l._0r=yyfminus(_3l._0r,0.025)...
  function _ge (line 1298) | function _ge(_3l,_4l){_YK(0);_ZK(1);__K(1);_ZX(_3l.x,_3l.y,_3l._mm,2,2,0...
  function _he (line 1298) | function _he(_3l,_4l){_DS(_3l,_4l);_3l._mm="Text";_3l._0r=2;_3l._am=new ...
  function _ie (line 1299) | function _ie(_3l,_4l){_3l._TF=_LW(_MW("Shadows"),_3l.x,_3l.y,9);_NW(_3l....
  function _je (line 1299) | function _je(_3l,_4l){_8X(_3l._TF,_3l.x);_9X(_3l._TF,_3l.y);_3l._ir(yyft...
  function _ke (line 1299) | function _ke(_3l,_4l){_DS(_3l,_4l);}
  function _le (line 1299) | function _le(_3l,_4l){_3l._Oy(2);_3l._Py(2);if(yyfgreater(_3l.x,1300)){{...
  function _me (line 1300) | function _me(_3l,_4l){_3l._ir(yyftime(_sl(_sl(-_sl(_3l.y))),10));}
  function _ne (line 1300) | function _ne(_3l,_4l){_DS(_3l,_4l);}
  function _oe (line 1300) | function _oe(_3l,_4l){if(yyfless(_rn._up(),_3l.__X)){return };if(yyGetBo...
  function _pe (line 1301) | function _pe(_3l,_4l){_jL(_3l,5,1,_3l.x,_3l.y,2,2,0,16777215,1);}
  function _qe (line 1301) | function _qe(_3l,_4l){var _lL=32768;var _uw=5;var _Es=_3l._jM;var _Fs=_3...
  function _re (line 1302) | function _re(_3l,_4l){_DS(_3l,_4l);_3l._mM=0;_3l._nM=0;_3l._oM=0;_3l._jM...
  function _se (line 1303) | function _se(_3l,_4l){if(yyfless(_vD(_3l,_4l.id),10)){{_3l._9D=1?1:0;if(...
  function _te (line 1303) | function _te(_3l,_4l){var _0Y=_3l._rM;var _1Y=-1;if(yyCompareVal(_0Y,0,g...
  function _ue (line 1305) | function _ue(_3l,_4l){var _DF=_3l.x;var _Gy=_3l.y;var _eY=0?1:0;var _fY=...
  function _ve (line 1307) | function _ve(_3l,_4l){_DS(_3l,_4l);_3l._rM=0;_3l._sM=0;_3l._KT=60;}
  function _we (line 1307) | function _we(_3l,_4l){_3l._fC=0;_3l._gC=_Sm(9);_3l._hC=_Sm(7);_3l._jY=1;...
  function _xe (line 1309) | function _xe(_3l,_4l){var _oY=_3l._Sw;var _pY=-1;if(yyCompareVal(_oY,1,g...
  function _ye (line 1310) | function _ye(_3l,_4l){}
  function _ze (line 1310) | function _ze(_3l,_4l){_DS(_3l,_4l);_3l._Sw=0;_3l._fC=0;_3l._gC=0;_3l._hC...
  function _Ae (line 1310) | function _Ae(_3l,_4l){var _sY=_0m(_3l,_4l,60)._kY;var _uw=_0m(_3l,_4l,60...
  function _Be (line 1313) | function _Be(_3l,_4l){var _EY=_3l._wY;var _FY=-1;if(yyCompareVal(_EY,0,g...
  function _Ce (line 1314) | function _Ce(_3l,_4l){if(!yyGetBool(_3l._wY)){{_hL(_3l,_3l._wC,_3l._vX,_...
  function _De (line 1315) | function _De(_3l,_4l){_DS(_3l,_4l);}
  function _Ee (line 1315) | function _Ee(_3l,_4l){_3l._XI(_YB(1,2));_3l._GY((-90));_3l._HY=0;_3l._xY...
  function _Fe (line 1315) | function _Fe(_3l,
  function _Ge (line 1316) | function _Ge(_3l,_4l){_jL(_3l,_3l._wC,_3l._oC,_3l.x,_3l.y,_3l._3W,_3l._3...
  function _He (line 1317) | function _He(_3l,_4l){}
  function _Ie (line 1317) | function _Ie(_3l,
  function _Je (line 1318) | function _Je(_3l,_4l){_0m(_3l,_4l,100016)._mm=_l9(_3l,_4l,_0m(_3l,_4l,42...
  function _Ke (line 1318) | function _Ke(_3l,_4l){_DS(_3l,_4l);_3l._rm=0;}
  function _Le (line 1318) | function _Le(_3l,_4l){_A9(_3l,_4l,yyfplus("obj_choose_team.create:",_sl(...
  function _Me (line 1321) | function _Me(_3l,_4l){_DS(_3l,_4l);_3l._rm=0;}
  function _Ne (line 1321) | function _Ne(_3l,_4l){if(yyGetBool(_0m(_3l,_4l,42)._cq)){{_0m(_3l,_4l,10...
  function _Oe (line 1324) | function _Oe(_3l,_4l){_DS(_3l,_4l);}
  function _Pe (line 1324) | function _Pe(_3l,_4l){_YK(0);_ZK(0);__K(1);_K4(_3l,_4l,0);{var _TY=_8l(4...
  function _Qe (line 1327) | function _Qe(_3l,_4l){_DS(_3l,_4l);}
  function _Re (line 1327) | function _Re(_3l,_4l){_YK(0);_ZK(0);__K(1);_0m(_3l,_4l,100309)._Bl=_H8(_...
  function _Se (line 1328) | function _Se(_3l,
  function _Te (line 1329) | function _Te(_3l,_4l){_A9(_3l,_4l,"------> Create: obj_home");_0m(_3l,_4...
  function _Ue (line 1331) | function _Ue(_3l,_4l){if(!yyGetBool(_il(_0m(_3l,_4l,42)._1n,"fullversion...
  function _Ve (line 1332) | function _Ve(_3l,_4l){}
  function _We (line 1332) | function _We(_3l,_4l){_DS(_3l,_4l);}
  function _Xe (line 1332) | function _Xe(_3l,_4l){__5(_3l,_4l);_0m(_3l,_4l,100074)._0H((-1.5));_YK(0...
  function _Ye (line 1332) | function _Ye(_3l,_4l){if(yyfless(_0m(_3l,_4l,100074).x,_sl(-_sl(_3l._7Z)...
  function _Ze (line 1332) | function _Ze(_3l,_4l){_DS(_3l,_4l);}
  function __e (line 1332) | function __e(_3l,_4l){var _8Z=_0m(_3l,_4l,42)._1m;var _9Z=-1;if(yyCompar...
  function _0f (line 1333) | function _0f(_3l,_4l){_DS(_3l,_4l);_3l._aZ=1?1:0;}
  function _1f (line 1333) | function _1f(_3l,_4l){var _bZ=_MW("Instances1");var _cZ=_MW("Instances2"...
  function _2f (line 1344) | function _2f(_3l,_4l){_DS(_3l,_4l);_3l._aZ=1?1:0;}
  function _3f (line 1344) | function _3f(_3l,_4l){if(yyfgreater(_0m(_3l,_4l,42)._cq,0)){{_b6(_3l,_4l...
  function _4f (line 1348) | function _4f(_3l,_4l){_DS(_3l,_4l);}
  function _5f (line 1348) | function _5f(_3l,_4l){_3l.__T=_0U(0,"colorHelmet");_3l._1U=_0U(0,"colorS...
  function _6f (line 1348) | function _6f(_3l,_4l){}
  function _7f (line 1348) | function _7f(_3l,_4l){_gU(0);_hU(_3l.__T,1,0,
  function _8f (line 1351) | function _8f(_3l,_4l){_DS(_3l,_4l);_3l._Vn="Team Name";_3l._hZ=0;_3l._LB...
  function _9f (line 1351) | function _9f(_3l,_4l){_3l._rZ=_il(_0m(_3l,_4l,42)._Cm[_Tn(0,_0m(_3l,_4l,...
  function _af (line 1353) | function _af(_3l,_4l){_i6(_3l,_4l);_0m(_3l,_4l,100202)._mm=_36(_3l,_4l);...
  function _bf (line 1356) | function _bf(_3l,_4l){_DS(_3l,_4l);_3l._1m=0;_3l._tZ=0;}
  function _cf (line 1356) | function _cf(_3l,_4l){_0m(_3l,_4l,100317)._4a=0?1:0;_0m(_3l,_4l,42)._Um=...
  function _df (line 1357) | function _df(_3l,_4l){_Fl(_3l._Zw);_Fl(_3l._Yw);_Fl(_3l._0x);_Fl(_3l.__w...
  function _ef (line 1358) | function _ef(_3l,_4l){if(yyfnotequal(_0m(_3l,_4l,42)._1m,6)){return };{v...
  function _ff (line 1359) | function _ff(_3l,_4l){}
  function _gf (line 1359) | function _gf(_3l,_4l){_YK(0);_ZK(1);_0L(1);var _1L=yyfplus(_sl(_3l.x),4)...
  function _hf (line 1368) | function _hf(_3l,_4l){_DS(_3l,_4l);_3l._fw=0;_3l._1m=0;_3l._tZ=0;}
  function _if (line 1368) | function _if(_3l,_4l){_3l._Bl=_0m(_3l,_4l,42)._tn;if(yyfequal(_3l._Bl,(-...
  function _jf (line 1384) | function _jf(_3l,_4l){_0m(_3l,_4l,100246)._mm=_36(_3l,_4l);if(!yyGetBool...
  function _kf (line 1387) | function _kf(_3l,_4l){if(!yyGetBool(_tl(_3l._Bl,1))){return };_jL(_3l,68...
  function _mf (line 1388) | function _mf(_3l,_4l){_vl(_0m(_3l,_4l,42)._tn,"xp_gain",yyfminus(_sl(_3l...
  function _nf (line 1389) | function _nf(_3l,_4l){_DS(_3l,_4l);}
  function _of (line 1389) | function _of(_3l,_4l){_3l._f_=_yl();_3l._Bl=_0m(_3l,_4l,42)._tn;if(yyfeq...
  function _pf (line 1408) | function _pf(_3l,_4l){_Fl(_3l._f_);}
  function _qf (line 1408) | function _qf(_3l,_4l){}
  function _rf (line 1408) | function _rf(_3l,_4l){_YK(0);_ZK(0);var _1L=yyfplus(_sl(_3l.x),16);var _...
  function _sf (line 1408) | function _sf(_3l,_4l){
  function _tf (line 1409) | function _tf(_3l,_4l){_3l._Bl=_0m(_3l,_4l,42)._tn;if(yyfequal(_3l._Bl,(-...
  function _uf (line 1412) | function _uf(_3l,_4l){_0m(_3l,_4l,100260)._mm=_36(_3l,_4l);if(yyfgreater...
  function _vf (line 1414) | function _vf(_3l,_4l){_hL(_3l,58,_3l._z_,yyfplus(_sl(_0m(_3l,_4l,100256)...
  function _wf (line 1415) | function _wf(_3l,_4l){_DS(_3l,_4l);}
  function _xf (line 1415) | function _xf(_3l,_4l){_0m(_3l,_4l,42)._Um=_b8(_3l,_4l,_0m(_3l,_4l,42)._U...
  function _yf (line 1419) | function _yf(_3l,_4l){_DS(_3l,_4l);_3l._Js=_vp(_3l._Js,4083195518);_3l._...
  function _zf (line 1419) | function _zf(_3l,_4l){_A9(_3l,_4l,"obj_draft");
  function _Af (line 1421) | function _Af(_3l,_4l){_DS(_3l,_4l);_3l._Js=_vp(_3l._Js,4083195518);_3l._...
  function _Bf (line 1421) | function _Bf(_3l,_4l){_R4(_3l,_4l);_15(_3l,_4l);}
  function _Cf (line 1421) | function _Cf(_3l,_4l){_DS(_3l,_4l);_3l._Js=_vp(_3l._Js,4083195518);_3l._...
  function _Df (line 1421) | function _Df(_3l,
  function _Ef (line 1422) | function _Ef(_3l,_4l){}
  function _Ff (line 1422) | function _Ff(_3l,_4l){_DS(_3l,_4l);}
  function _Gf (line 1422) | function _Gf(_3l,_4l){_DS(_3l,_4l);}
  function _Uf (line 1422) | function _Uf(_3l,_4l){_3l._1r=128;_3l._mm=_Q8(_3l,_3l,"ui_RetroBowl");}
  function _cg (line 1422) | function _cg(_3l,_4l){_Q_(_R_(_MW("Background")),global._Ll);}
  function _dg (line 1422) | function _dg(_3l,_4l){_3l._mm=_Q8(_3l,_3l,"ui_NewCareer");}
  function _eg (line 1422) | function _eg(_3l,_4l){_3l._Pq=_Q8(_3l,_3l,"ui_YourName");}
  function _fg (line 1422) | function _fg(_3l,_4l){
  function _gg (line 1423) | function _gg(_3l,_4l){_3l._Pq=_Q8(_3l,_3l,"ui_FavoriteTeam");}
  function _hg (line 1423) | function _hg(_3l,_4l){_3l._mm=_Q8(_3l,_3l,"ui_Change");_3l._4r=19;}
  function _ig (line 1423) | function _ig(_3l,_4l){_3l._mm="";_3l._4T=100007;}
  function _jg (line 1423) | function _jg(_3l,_4l){_3l._mm="";}
  function _kg (line 1423) | function _kg(_3l,_4l){_3l._mm=_Q8(_3l,_3l,"ui_FirstName");_3l.__S=2;_3l....
  function _lg (line 1423) | function _lg(_3l,_4l){_3l._mm=_Q8(_3l,_3l,"ui_LastName");_3l.__S=2;_3l._...
  function _mg (line 1423) | function _mg(_3l,_4l){_3l._mm=_Q8(_3l,_3l,"ui_FaveTeamNote");_3l._5T=0?1...
  function _ng (line 1424) | function _ng(_3l,
  function _og (line 1425) | function _og(_3l,_4l){_3l._5T=0?1:0;}
  function _pg (line 1425) | function _pg(_3l,_4l){_Q_(_R_(_MW("Background")),global._Ll);}
  function _qg (line 1425) | function _qg(_3l,_4l){_3l._mm=_Q8(_3l,_3l,"ui_ChooseTeam");}
  function _rg (line 1425) | function _rg(_3l,_4l){_3l._4r=20;_3l._mm=_Q8(_3l,_3l,"conf_AFC");_3l._mT...
  function _sg (line 1425) | function _sg(_3l,_4l){_3l._4r=21;_3l._mm=_Q8(_3l,_3l,"conf_NFC");_3l._mT...
  function _tg (line 1425) | function _tg(_3l,_4l){_3l._mm=_Q8(_3l,_3l,"ui_RejectAll");_3l._4r=24;}
  function _ug (line 1425) | function _ug(_3l,_4l){_Q_(_R_(_MW("Background")),global._Ll);}
  function _vg (line 1425) | function _vg(_3l,_4l){_3l._mm=_Q8(_3l,
  function _wg (line 1426) | function _wg(_3l,_4l){_3l._5T=1?1:0;}
  function _xg (line 1426) | function _xg(_3l,_4l){_3l._5T=0?1:0;}
  function _yg (line 1426) | function _yg(_3l,_4l){_3l._5r=88;_3l._4r=70;_3l._zT=1?1:0;}
  function _zg (line 1426) | function _zg(_3l,_4l){_3l._5r=90;_3l._4r=71;_3l._zT=1?1:0;}
  function _Ag (line 1426) | function _Ag(_3l,_4l){_3l._5T=0?1:0;}
  function _Bg (line 1426) | function _Bg(_3l,_4l){_3l._4r=68;_3l._mm=_Q8(_3l,_3l,"ui_Roster");}
  function _Cg (line 1426) | function _Cg(_3l,_4l){_3l._4r=72;_3l._5r=89;}
  function _Dg (line 1426) | function _Dg(_3l,_4l){_3l._MU="info_Draft";}
  function _Eg (line 1426) | function _Eg(_3l,_4l){_3l._mm=_36(_3l,_3l);_3l._hr=57;}
  function _Fg (line 1426) | function _Fg(_3l,_4l){_Q_(_R_(_MW("Background")),global._Ll);
  function _Gg (line 1427) | function _Gg(_3l,_4l){_3l._mm=_Q8(_3l,_3l,"ui_Continue");_3l._yT=91;}
  function _Hg (line 1427) | function _Hg(_3l,_4l){_3l._mm=_Q8(_3l,_3l,"game_Title");}
  function _Ig (line 1427) | function _Ig(_3l,_4l){_3l._4r=31;}
  function _Jg (line 1427) | function _Jg(_3l,_4l){_3l._4r=32;_3l._5r=99;}
  function _Kg (line 1427) | function _Kg(_3l,_4l){_3l._4r=68;_3l._mm=_Q8(_3l,_3l,"ui_Roster");}
  function _Lg (line 1427) | function _Lg(_3l,_4l){_3l._mm=_Q8(_3l,_3l,"btn_FrontOffice");_3l._4r=27;}
  function _Mg (line 1427) | function _Mg(_3l,_4l){_3l._mm=_79(_3l,_3l,1);}
  function _Ng (line 1427) | function _Ng(_3l,_4l){_3l._mm=_Q8(_3l,_3l,"btn_HallOfFame");_3l._4r=29;}
  function _Og (line 1427) | function _Og(_3l,_4l){_3l._mm=_Q8(_3l,_3l,"msg_LimitedVersion");
  function _Pg (line 1428) | function _Pg(_3l,_4l){_Q_(_R_(_MW("Background")),global._Ll);}
  function _Qg (line 1428) | function _Qg(_3l,_4l){_3l._4r=34;_3l._mm=_Q8(_3l,_3l,"ui_Restart");}
  function _Rg (line 1428) | function _Rg(_3l,_4l){_3l._mm=_Q8(_3l,_3l,"ui_Options");}
  function _Sg (line 1428) | function _Sg(_3l,_4l){_3l._4r=30;_3l._5r=87;}
  function _Tg (line 1428) | function _Tg(_3l,_4l){_3l._4r=35;_3l._mm=_Q8(_3l,_3l,"ui_driveLeft");}
  function _Ug (line 1428) | function _Ug(_3l,_4l){_3l._4r=36;_3l._mm=_Q8(_3l,_3l,"ui_driveRight");}
  function _Vg (line 1428) | function _Vg(_3l,_4l){_3l._4r=37;_3l._mm=_Q8(_3l,_3l,"ui_driveBoth");}
  function _Wg (line 1428) | function _Wg(_3l,_4l){_3l._4r=38;}
  function _Xg (line 1428) | function _Xg(_3l,
  function _Yg (line 1429) | function _Yg(_3l,_4l){_3l._Pq=_Q8(_3l,_3l,"ui_NewGame");}
  function _Zg (line 1429) | function _Zg(_3l,_4l){_3l._Pq=_Q8(_3l,_3l,"ui_Scanlines");}
  function __g (line 1429) | function __g(_3l,_4l){_3l._MU="info_Options_DriveDirection";}
  function _0h (line 1429) | function _0h(_3l,_4l){_3l._5T=0?1:0;_3l.__S=2;}
  function _1h (line 1429) | function _1h(_3l,_4l){_3l._Pq=_Q8(_3l,_3l,"ui_WeatherFX");}
  function _2h (line 1429) | function _2h(_3l,_4l){_3l._4r=41;}
  function _3h (line 1429) | function _3h(_3l,_4l){_3l._Pq=_Q8(_3l,_3l,"ui_Tips");}
  function _4h (line 1429) | function _4h(_3l,_4l){_3l._4r=39;}
  function _5h (line 1429) | function _5h(_3l,_4l){_3l._4r=40;}
  function _6h (line 1429) | function _6h(_3l,_4l){_3l._Pq=_Q8(_3l,
  function _7h (line 1430) | function _7h(_3l,_4l){_3l._Pq=_Q8(_3l,_3l,"ui_Zoom");}
  function _8h (line 1430) | function _8h(_3l,_4l){_3l._4r=42;}
  function _9h (line 1430) | function _9h(_3l,_4l){_3l._Pq=_Q8(_3l,_3l,"ui_Music");}
  function _ah (line 1430) | function _ah(_3l,_4l){_3l._4r=43;}
  function _bh (line 1430) | function _bh(_3l,_4l){_3l._mm=_Q8(_3l,_3l,"ui_Credits");_3l._5T=0?1:0;}
  function _ch (line 1430) | function _ch(_3l,_4l){_Q_(_R_(_MW("Background")),global._Ll);}
  function _dh (line 1430) | function _dh(_3l,_4l){_3l._5r=100;_3l._4r=74;}
  function _eh (line 1430) | function _eh(_3l,_4l){_3l._mm=_Q8(_3l,_3l,"ui_Roster");_3l._4r=68;}
  function _fh (line 1430) | function _fh(_3l,_4l){_3l._mm=_Q8(_3l,_3l,"ui_FreeAgents");}
  function _gh (line 1430) | function _gh(_3l,
  function _hh (line 1431) | function _hh(_3l,_4l){_3l._mm=_36(_3l,_3l);_3l._hr=57;}
  function _ih (line 1431) | function _ih(_3l,_4l){_Q_(_R_(_MW("Background")),global._Ll);}
  function _jh (line 1431) | function _jh(_3l,_4l){_3l._5r=87;_3l._4r=83;}
  function _kh (line 1431) | function _kh(_3l,_4l){_3l._mm=_Q8(_3l,_3l,"ui_Roster");_3l._4r=68;}
  function _lh (line 1431) | function _lh(_3l,_4l){_3l._mm=_Q8(_3l,_3l,"ui_FreeAgents");}
  function _mh (line 1431) | function _mh(_3l,_4l){_3l._mm=_36(_3l,_3l);_3l._hr=57;}
  function _nh (line 1431) | function _nh(_3l,_4l){_3l._hr=57;}
  function _oh (line 1431) | function _oh(_3l,_4l){_3l._hr=57;}
  function _ph (line 1431) | function _ph(_3l,_4l){_3l._hr=57;}
  function _qh (line 1431) | function _qh(_3l,_4l){_3l._hr=57;
  function _rh (line 1432) | function _rh(_3l,_4l){_3l._hr=57;}
  function _sh (line 1432) | function _sh(_3l,_4l){_3l._hr=57;}
  function _th (line 1432) | function _th(_3l,_4l){_3l._hr=57;}
  function _uh (line 1432) | function _uh(_3l,_4l){_3l._hr=57;}
  function _vh (line 1432) | function _vh(_3l,_4l){_3l._hr=57;}
  function _wh (line 1432) | function _wh(_3l,_4l){_3l._MU="info_freeagents";}
  function _xh (line 1432) | function _xh(_3l,_4l){_Q_(_R_(_MW("Background")),global._Ll);}
  function _yh (line 1432) | function _yh(_3l,_4l){_3l._mm=_Q8(_3l,_3l,"ui_FrontOffice");}
  function _zh (line 1432) | function _zh(_3l,_4l){_3l._4r=30;_3l._5r=100;}
  function _Ah (line 1432) | function _Ah(_3l,_4l){_3l._Pq="Title";}
  function _Bh (line 1432) | function _Bh(_3l,_4l){_3l._4r=5;_3l._5r=57;}
  function _Ch (line 1432) | function _Ch(_3l,_4l){_3l._4r=6;_3l._5r=57;
  function _Dh (line 1433) | function _Dh(_3l,_4l){_3l._4r=7;_3l._5r=57;}
  function _Eh (line 1433) | function _Eh(_3l,_4l){_3l._MU="info_Facility_Stadium";}
  function _Fh (line 1433) | function _Fh(_3l,_4l){_3l._MU="info_Facility_Training";}
  function _Gh (line 1433) | function _Gh(_3l,_4l){_3l._MU="info_Facility_Rehab";}
  function _Hh (line 1433) | function _Hh(_3l,_4l){_3l._4r=76;}
  function _Ih (line 1433) | function _Ih(_3l,_4l){_3l._4r=76;}
  function _Jh (line 1433) | function _Jh(_3l,_4l){_3l._Pq=_Q8(_3l,_3l,"ui_Coordinators");}
  function _Kh (line 1433) | function _Kh(_3l,_4l){_3l._5T=0?1:0;}
  function _Lh (line 1433) | function _Lh(_3l,_4l){_3l._MU="info_DraftPicks";}
  function _Mh (line 1433) | function _Mh(_3l,_4l){_3l._Pq=_Q8(_3l,_3l,"ui_DraftPicks");}
  function _Nh (line 1433) | function _Nh(_3l,_4l){_3l._mm=_36(_3l,
  function _Oh (line 1434) | function _Oh(_3l,_4l){_3l._4r=81;_3l._mm=_Q8(_3l,_3l,"btn_StaffHires");}
  function _Ph (line 1434) | function _Ph(_3l,_4l){_3l._4r=28;_3l._mm=_Q8(_3l,_3l,"btn_FreeAgents");}
  function _Qh (line 1434) | function _Qh(_3l,_4l){_Q_(_R_(_MW("Background")),global._Ll);}
  function _Rh (line 1434) | function _Rh(_3l,_4l){_3l._mm=_Q8(_3l,_3l,"ui_HallOfFame");}
  function _Sh (line 1434) | function _Sh(_3l,_4l){_3l._4r=30;_3l._5r=100;}
  function _Th (line 1434) | function _Th(_3l,_4l){_3l._Pq=_Q8(_3l,_3l,"ui_Achievements");}
  function _Uh (line 1434) | function _Uh(_3l,_4l){_3l._Pq=_Q8(_3l,_3l,"ui_RetroBowls");}
  function _Vh (line 1434) | function _Vh(_3l,_4l){_3l._Pq=_Q8(_3l,_3l,"ui_History");}
  function _Wh (line 1435) | function _Wh(_3l,_4l){_Q_(_R_(_MW("Background")),global._Ll);}
  function _Xh (line 1435) | function _Xh(_3l,_4l){_3l._mm=_Q8(_3l,_3l,"ui_League");}
  function _Yh (line 1435) | function _Yh(_3l,_4l){_3l._4r=8;_3l._5r=100;}
  function _Zh (line 1435) | function _Zh(_3l,_4l){_3l._6r=0?1:0;}
  function __h (line 1435) | function __h(_3l,_4l){_3l._6r=0?1:0;}
  function _0i (line 1435) | function _0i(_3l,_4l){_3l._6r=0?1:0;}
  function _1i (line 1435) | function _1i(_3l,_4l){_3l._6r=0?1:0;}
  function _2i (line 1435) | function _2i(_3l,_4l){_3l._4r=11;_3l._mm=_Q8(_3l,_3l,"conf_AFC");}
  function _3i (line 1435) | function _3i(_3l,_4l){_3l._4r=10;_3l._mm=_Q8(_3l,_3l,"conf_NFC");}
  function _4i (line 1435) | function _4i(_3l,_4l){_3l._4r=12;_3l._mm=_Q8(_3l,_3l,"ui_Schedule");
  function _5i (line 1436) | function _5i(_3l,_4l){_3l._5r=88;_3l._4r=13;_3l._zT=1?1:0;}
  function _6i (line 1436) | function _6i(_3l,_4l){_3l._5r=90;_3l._4r=14;_3l._zT=1?1:0;}
  function _7i (line 1436) | function _7i(_3l,_4l){_3l._4r=15;_3l._mm=_Q8(_3l,_3l,"ui_PlayOffs");}
  function _ai (line 1436) | function _ai(_3l,_4l){_Q_(_R_(_MW("Background")),global._Ll);}
  function _bi (line 1436) | function _bi(_3l,_4l){_3l._5T=0?1:0;}
  function _ci (line 1436) | function _ci(_3l,_4l){_3l._4r=16;_3l._5r=87;}
  function _di (line 1436) | function _di(_3l,_4l){_3l._4r=17;_3l._mm=_Q8(_3l,_3l,"ui_Play");}
  function _ei (line 1436) | function _ei(_3l,_4l){_3l._4r=18;_3l._mm=_Q8(_3l,_3l,"ui_Skip");}
  function _fi (line 1436) | function _fi(_3l,_4l){_3l._Pq=_Q8(_3l,_3l,"conf_AFC");
  function _gi (line 1437) | function _gi(_3l,_4l){_3l._Pq=_Q8(_3l,_3l,"conf_NFC");}
  function _hi (line 1437) | function _hi(_3l,_4l){_3l._rm=0;_3l._mm=_Q8(_3l,_3l,"conf_AFC");}
  function _ii (line 1437) | function _ii(_3l,_4l){_3l._rm=1;_3l._mm=_Q8(_3l,_3l,"conf_NFC");}
  function _ji (line 1437) | function _ji(_3l,_4l){_Q_(_R_(_MW("Background")),global._Ll);}
  function _ki (line 1437) | function _ki(_3l,_4l){_3l._5T=0?1:0;_3l.__S=0;_3l._ZS=1;}
  function _li (line 1437) | function _li(_3l,_4l){_3l._5T=0?1:0;_3l.__S=0;_3l._ZS=1;}
  function _mi (line 1437) | function _mi(_3l,_4l){_3l._5T=0?1:0;_3l._ZS=1;_3l.__S=2;}
  function _ni (line 1437) | function _ni(_3l,_4l){_3l._5T=0?1:0;_3l._ZS=1;_3l.__S=2;}
  function _oi (line 1437) | function _oi(_3l,_4l){_3l._mm=_Q8(_3l,
  function _pi (line 1438) | function _pi(_3l,_4l){_3l._4r=31;_3l._mm=_Q8(_3l,_3l,"ui_Results");}
  function _qi (line 1438) | function _qi(_3l,_4l){_3l._mm=_Q8(_3l,_3l,"ui_Result");}
  function _ri (line 1438) | function _ri(_3l,_4l){_3l._Pq="";}
  function _si (line 1438) | 
Copy disabled (too large) Download .json
Condensed preview — 1110 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (31,291K chars).
[
  {
    "path": ".breakpoints",
    "chars": 17,
    "preview": "{\n  \"files\": {}\n}"
  },
  {
    "path": ".gitattributes",
    "chars": 66,
    "preview": "# Auto detect text files and perform LF normalization\n* text=auto\n"
  },
  {
    "path": ".replit",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "Dockerfile",
    "chars": 153,
    "preview": "FROM node:20.8.1-bullseye-slim\nENV NODE_ENV=production\n\nWORKDIR /app\n\nCOPY [\"package.json\", \"./\"]\n\nRUN npm install\n\nCOPY"
  },
  {
    "path": "LICENSE",
    "chars": 34503,
    "preview": "GNU AFFERO GENERAL PUBLIC LICENSE\n                       Version 3, 19 November 2007\n\n Copyright (C) 2007 Free Software "
  },
  {
    "path": "Procfile",
    "chars": 14,
    "preview": "web:npm start\n"
  },
  {
    "path": "README.md",
    "chars": 3461,
    "preview": "# Utopia\nUtopia Unblocker unblocks hundreds of millions of websites and bypasses web restrictions with ease.\nThe most re"
  },
  {
    "path": "app.json",
    "chars": 35,
    "preview": "{\n    \"name\": \"Utopia Unblocker\"\n}\n"
  },
  {
    "path": "config.json",
    "chars": 21,
    "preview": "{\n  \"port\": \"8080\"\n}\n"
  },
  {
    "path": "index.js",
    "chars": 55,
    "preview": "(async() => {\n    await import('./index.mjs');\n  })();\n"
  },
  {
    "path": "index.mjs",
    "chars": 685,
    "preview": "import createServer from '@tomphttp/bare-server-node';\nimport http from 'http';\nimport nodeStatic from 'node-static';\nco"
  },
  {
    "path": "main/404.html",
    "chars": 3098,
    "preview": "<!DOCTYPE HTML>\n<html>\n<head>\n  <meta charset=\"utf-8\">\n  <meta name=\"description\" content=\"An educational website full o"
  },
  {
    "path": "main/arc-sw.js",
    "chars": 3351,
    "preview": "!function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.expo"
  },
  {
    "path": "main/css/nav.css",
    "chars": 4442,
    "preview": ".notransition {\n  -webkit-transition: none !important;\n  -moz-transition: none !important;\n  -o-transition: none !import"
  },
  {
    "path": "main/css/style.css",
    "chars": 14362,
    "preview": ":root {\n  --col: rgb(160, 32, 240); /*  */\n}\n\n* {\n  margin: 0;\n  padding: 0;\n  box-sizing: border-box;\n}\n\nhtml {\n  heigh"
  },
  {
    "path": "main/css/terms.css",
    "chars": 203,
    "preview": "* {\n  box-sizing: border-box;\n}\n\nbody {\n  margin: 0;\n  padding: 0;\n  font-family: Arial;\n  background-color: white;\n  co"
  },
  {
    "path": "main/gams/.gitignore",
    "chars": 18,
    "preview": "gfiles/rarch/roms/"
  },
  {
    "path": "main/gams/compiler.py",
    "chars": 9233,
    "preview": "# sorry for the terribly messy code\n\nimport os, glob\nfrom itertools import chain\n\noutindex = \"list.html\"\noutdir = \"./gfi"
  },
  {
    "path": "main/gams/css/style.css",
    "chars": 5333,
    "preview": "* {\n  margin: 0;\n  padding: 0;\n  box-sizing: border-box;\n}\n\nhtml {\n  height: 100vh;\n}\n\nbody {\n  background-image: url('/"
  },
  {
    "path": "main/gams/dehar.py",
    "chars": 777,
    "preview": "# script used for crawling pages\n# use the network tab in chrome devtools, clear it before loading the game, and when al"
  },
  {
    "path": "main/gams/gfiles/flash/index.html",
    "chars": 9102,
    "preview": "<!DOCTYPE html>\n<html>\n\t<head>\n\t\t<title>Flash Player</title>\n\t\t<style>\n\t\t\tbody {\n\t\t\t\toverflow: hidden;\n\t\t\t\tfont-family: "
  },
  {
    "path": "main/gams/gfiles/flash/ruffle.js",
    "chars": 83706,
    "preview": "(()=>{\"use strict\";var e={931:(e,t,n)=>{e.exports=n.p+\"f75600c6b605d23c38b0.wasm\"}},t={};function n(r){var i=t[r];if(voi"
  },
  {
    "path": "main/gams/gfiles/html5/2048/index.html",
    "chars": 3408,
    "preview": "<!DOCTYPE html>\n<html>\n\n<head>\n  <meta charset=\"utf-8\">\n  <title>2048</title>\n\n  <link href=\"style/main.css\" rel=\"styles"
  },
  {
    "path": "main/gams/gfiles/html5/2048/js/animframe_polyfill.js",
    "chars": 890,
    "preview": "(function () {\n  var lastTime = 0;\n  var vendors = ['webkit', 'moz'];\n  for (var x = 0; x < vendors.length && !window.re"
  },
  {
    "path": "main/gams/gfiles/html5/2048/js/application.js",
    "chars": 197,
    "preview": "// Wait till the browser is ready to render the game (avoids glitches)\nwindow.requestAnimationFrame(function () {\n  new "
  },
  {
    "path": "main/gams/gfiles/html5/2048/js/bind_polyfill.js",
    "chars": 220,
    "preview": "Function.prototype.bind = Function.prototype.bind || function (target) {\n  var self = this;\n  return function (args) {\n "
  },
  {
    "path": "main/gams/gfiles/html5/2048/js/classlist_polyfill.js",
    "chars": 1794,
    "preview": "(function () {\n  if (typeof window.Element === \"undefined\" ||\n      \"classList\" in document.documentElement) {\n    retur"
  },
  {
    "path": "main/gams/gfiles/html5/2048/js/game_manager.js",
    "chars": 7627,
    "preview": "function GameManager(size, InputManager, Actuator, StorageManager) {\n  this.size           = size; // Size of the grid\n "
  },
  {
    "path": "main/gams/gfiles/html5/2048/js/grid.js",
    "chars": 2526,
    "preview": "function Grid(size, previousState) {\n  this.size = size;\n  this.cells = previousState ? this.fromState(previousState) : "
  },
  {
    "path": "main/gams/gfiles/html5/2048/js/html_actuator.js",
    "chars": 4040,
    "preview": "function HTMLActuator() {\n  this.tileContainer    = document.querySelector(\".tile-container\");\n  this.scoreContainer   ="
  },
  {
    "path": "main/gams/gfiles/html5/2048/js/keyboard_input_manager.js",
    "chars": 4005,
    "preview": "function KeyboardInputManager() {\n  this.events = {};\n\n  if (window.navigator.msPointerEnabled) {\n    //Internet Explore"
  },
  {
    "path": "main/gams/gfiles/html5/2048/js/local_storage_manager.js",
    "chars": 1588,
    "preview": "window.fakeStorage = {\n  _data: {},\n\n  setItem: function (id, val) {\n    return this._data[id] = String(val);\n  },\n\n  ge"
  },
  {
    "path": "main/gams/gfiles/html5/2048/js/tile.js",
    "chars": 594,
    "preview": "function Tile(position, value) {\n  this.x                = position.x;\n  this.y                = position.y;\n  this.valu"
  },
  {
    "path": "main/gams/gfiles/html5/2048/style/fonts/clear-sans.css",
    "chars": 1090,
    "preview": "@font-face {\n    font-family: \"Clear Sans\";\n    src: url(\"ClearSans-Light-webfont.eot\");\n    src: url(\"ClearSans-Light-w"
  },
  {
    "path": "main/gams/gfiles/html5/2048/style/main.css",
    "chars": 20647,
    "preview": "@import url(fonts/clear-sans.css);\nhtml, body {\n  margin: 0;\n  padding: 0;\n  background: #faf8ef;\n  color: #776e65;\n  fo"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/LICENSE.md",
    "chars": 16734,
    "preview": "Mozilla Public License Version 2.0\n==================================\n\n1. Definitions\n--------------\n\n1.1. \"Contributor\""
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/browserWarning.html",
    "chars": 1497,
    "preview": "<!doctype html>\n<html>\n<head>\n\t<title>A Dark Room</title>\n\t<style>\n    body {\n      background-color: #000000;\n      col"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/css/dark.css",
    "chars": 2741,
    "preview": "body {\n\tbackground-color: #272823;\n\tcolor: #EEE;\n}\n\ndiv.headerButton {\n\tborder-left: 1px solid #EEE;\n}\n\ndiv#notifyGradie"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/css/main.css",
    "chars": 9140,
    "preview": "/* Fonts */\nbody, .tooltip, select.menuBtn {\n\tfont-family: \"Times New Roman\", Times, serif;\n\tfont-size: 16px;\n\tfont-weig"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/css/outside.css",
    "chars": 855,
    "preview": "div#village {\n\tposition: absolute;\n\ttop: 0px;\n\tright: 0px;\n\tborder: 1px solid black;\n\tcursor: default;\n\tpadding: 5px 10p"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/css/path.css",
    "chars": 899,
    "preview": "#outfitting {\n\tposition: relative;\n\tborder: 1px solid black;\n\twidth: 200px;\n\tmargin-bottom: 20px;\n\tpadding: 5px 10px;\n}\n"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/css/room.css",
    "chars": 848,
    "preview": "div#buildBtns {\n\tposition: absolute;\n\ttop: 50px;\n\tleft: 0px;\n}\n\ndiv#buildBtns:before, div#craftBtns:before, div#buyBtns:"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/css/ship.css",
    "chars": 85,
    "preview": "div#hullRow {\n\twidth: 70px;\n}\n\ndiv#engineRow {\n\twidth: 70px;\n\tmargin-bottom: 20px;\n}\n"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/css/space.css",
    "chars": 2577,
    "preview": "@-ms-keyframes spin {\n\t0% { \n\t\t-ms-transform: rotate(0deg);\n\t\t-webkit-transform: rotate(0deg); \n\t\t-moz-transform: rotate"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/css/world.css",
    "chars": 1265,
    "preview": "#worldOuter {\n\tposition: relative;\n\tdisplay: inline-block;\n}\n\n#map {\n\tposition: relative;\n\tfont-family: \"Courier New\", C"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/index.html",
    "chars": 5232,
    "preview": "<!DOCTYPE html>\n<html itemscope itemtype=\"https://schema.org/CreativeWork\">\n<head>\n\t<meta charset=\"UTF-8\"/>\n\t<!--  \n\t\tA "
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/lang/cs/main.css",
    "chars": 128,
    "preview": ".button{width: 100px !important;}\n#outsidePanel .button{width: 115px !important;}\n.eventPanel .button {width: 122px !imp"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/lang/cs/strings.js",
    "chars": 63017,
    "preview": "_.setTranslation({\"Dropbox connection\": \"Propojen\\u00ed s Dropboxem\", \"connect game to dropbox local storage\": \"spojit h"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/lang/cs/strings.po",
    "chars": 93040,
    "preview": "# Czech translations for PROJECT.\n# Copyright (C) 2014 ORGANIZATION\n# This file is distributed under the same license as"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/lang/de/main.css",
    "chars": 128,
    "preview": ".button{width: 100px !important;}\n#outsidePanel .button{width: 115px !important;}\n.eventPanel .button {width: 122px !imp"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/lang/de/strings.js",
    "chars": 53866,
    "preview": "_.setTranslation({\"the plague is kept from spreading.\": \"die seuche konnte sich nicht ausbreiten.\", \"all\": \"Alle\", \"use "
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/lang/de/strings.po",
    "chars": 94072,
    "preview": "# Translations template for PROJECT.\n# Copyright (C) 2014 ORGANIZATION\n# This file is distributed under the same license"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/lang/el/main.css",
    "chars": 128,
    "preview": ".button{width: 100px !important;}\n#outsidePanel .button{width: 115px !important;}\n.eventPanel .button {width: 122px !imp"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/lang/el/strings.js",
    "chars": 153896,
    "preview": "_.setTranslation({\"water tank\": \"\\u03bd\\u03c4\\u03b5\\u03c0\\u03cc\\u03b6\\u03b9\\u03c4\\u03bf\", \"use meds\": \"\\u03c0\\u03ac\\u03c"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/lang/el/strings.po",
    "chars": 95766,
    "preview": "# Translations template for PROJECT.\n# Copyright (C) 2015 ORGANIZATION\n# This file is distributed under the same license"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/lang/eo/main.css",
    "chars": 128,
    "preview": ".button{width: 100px !important;}\n#outsidePanel .button{width: 115px !important;}\n.eventPanel .button {width: 122px !imp"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/lang/eo/strings.js",
    "chars": 52836,
    "preview": "_.setTranslation({\"water tank\": \"akvocisterno\", \"all\": \"\\u0109ion\", \"use meds\": \"uzi kuracilon\", \"a shame to let what he"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/lang/eo/strings.po",
    "chars": 90907,
    "preview": "msgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: adarkroom\\n\"\n\"Report-Msgid-Bugs-To: EMAIL@ADDRESS\\n\"\n\"POT-Creation-Date: 2017-04"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/lang/es/main.css",
    "chars": 128,
    "preview": ".button{width: 100px !important;}\n#outsidePanel .button{width: 115px !important;}\n.eventPanel .button {width: 122px !imp"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/lang/es/strings.js",
    "chars": 55409,
    "preview": "_.setTranslation({\"Dropbox connection\": \"Conexi\\u00f3n con dropbox\", \"connect game to dropbox local storage\": \"conectar "
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/lang/es/strings.po",
    "chars": 94445,
    "preview": "msgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: adarkroom\\n\"\n\"Report-Msgid-Bugs-To: EMAIL@ADDRESS\\n\"\n\"POT-Creation-Date: 2017-02"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/lang/fr/main.css",
    "chars": 381,
    "preview": ".button{width: 100px !important;}\n#outsidePanel .button{width: 115px !important;}\n.eventPanel .button {width: 122px !imp"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/lang/fr/strings.js",
    "chars": 57814,
    "preview": "_.setTranslation({\"the plague is kept from spreading.\": \"La peste ne se propage plus.\", \"all\": \"tout\", \"use meds\": \"se s"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/lang/fr/strings.po",
    "chars": 102036,
    "preview": "msgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: adarkroom\\n\"\n\"Report-Msgid-Bugs-To: EMAIL@ADDRESS\\n\"\n\"POT-Creation-Date: 2016-10"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/lang/gl/main.css",
    "chars": 128,
    "preview": ".button{width: 100px !important;}\n#outsidePanel .button{width: 115px !important;}\n.eventPanel .button {width: 122px !imp"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/lang/gl/strings.js",
    "chars": 54164,
    "preview": "_.setTranslation({\"expanded story. alternate ending. behind the scenes commentary. get the app.\": \"historia expandida. f"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/lang/gl/strings.po",
    "chars": 93550,
    "preview": "# Translations template for PROJECT.\n# Copyright (C) 2018 ORGANIZATION\n# This file is distributed under the same license"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/lang/id/main.css",
    "chars": 128,
    "preview": ".button{width: 100px !important;}\n#outsidePanel .button{width: 115px !important;}\n.eventPanel .button {width: 122px !imp"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/lang/id/strings.js",
    "chars": 50328,
    "preview": "_.setTranslation({\"water tank\": \"tangki air\", \"use meds\": \"pakai peralatan medis\", \"the room is {0}\": \"ruangan {0}\", \"pu"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/lang/id/strings.po",
    "chars": 95343,
    "preview": "msgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: \\n\"\n\"Report-Msgid-Bugs-To: EMAIL@ADDRESS\\n\"\n\"POT-Creation-Date: 2015-12-22 13:35"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/lang/it/main.css",
    "chars": 129,
    "preview": ".button{width: 100px !important;}\n#outsidePanel .button{width: 115px !important;}\n.eventPanel .button {width: 122px !imp"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/lang/it/strings.js",
    "chars": 55649,
    "preview": "_.setTranslation({\"tanner\": \"conciatore\", \"weapons\": \"armi\", \"the compass points southwest\": \"la bussola punta a sud-ove"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/lang/it/strings.po",
    "chars": 95902,
    "preview": "msgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: PROJECT VERSION\\n\"\n\"Report-Msgid-Bugs-To: EMAIL@ADDRESS\\n\"\n\"POT-Creation-Date: 2"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/lang/ja/main.css",
    "chars": 130,
    "preview": " .button{width: 100px !important;}\n#outsidePanel .button{width: 115px !important;}\n.eventPanel .button {width: 122px !im"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/lang/ja/strings.js",
    "chars": 80654,
    "preview": "_.setTranslation({\"water tank\": \"\\u6c34\\u30bf\\u30f3\\u30af\", \"use meds\": \"\\u85ac\\u3092\\u4f7f\\u3046\", \"the room is {0}\": \""
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/lang/ja/strings.po",
    "chars": 78070,
    "preview": "msgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: adarkroom\\n\"\n\"Report-Msgid-Bugs-To: EMAIL@ADDRESS\\n\"\n\"POT-Creation-Date: 2015-12"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/lang/ko/main.css",
    "chars": 128,
    "preview": ".button{width: 100px !important;}\n#outsidePanel .button{width: 115px !important;}\n.eventPanel .button {width: 122px !imp"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/lang/ko/strings.js",
    "chars": 78908,
    "preview": "_.setTranslation({\"water tank\": \"\\ubb3c\\ud0f1\\ud06c\", \"all\": \"\\uc804\\ubd80\", \"use meds\": \"\\uc57d \\uc0ac\\uc6a9\", \"a shame"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/lang/ko/strings.po",
    "chars": 79676,
    "preview": "# Translations template for PROJECT.\n# Copyright (C) 2014 ORGANIZATION\n# This file is distributed under the same license"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/lang/langs.js",
    "chars": 487,
    "preview": "var langs = {\n\t'cs':'czech',\n\t'de':'deutsch',\n\t'el':'ελληνικά',\n\t'en':'english',\n\t'eo':'esperanto',\n\t'es':'español',\n\t'f"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/lang/lt_LT/main.css",
    "chars": 128,
    "preview": ".button{width: 100px !important;}\n#outsidePanel .button{width: 115px !important;}\n.eventPanel .button {width: 122px !imp"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/lang/lt_LT/strings.js",
    "chars": 56412,
    "preview": "_.setTranslation({\"all\": \"viskas\", \"not enough leather\": \"neu\\u017etenka odos\", \"precision\": \"taiklumas\", \"the shot echo"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/lang/lt_LT/strings.po",
    "chars": 89797,
    "preview": "msgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: \\n\"\n\"Report-Msgid-Bugs-To: EMAIL@ADDRESS\\n\"\n\"POT-Creation-Date: 2016-11-23 03:46"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/lang/lv/strings.js",
    "chars": 60491,
    "preview": "_.setTranslation({\"dodge attacks more effectively\": \"lab\\u0101k izvair\\u012bties no uzbrukumiem\", \"meat\": \"ga\\u013ca\", \""
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/lang/lv/strings.po",
    "chars": 90684,
    "preview": "msgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: \\n\"\n\"Report-Msgid-Bugs-To: EMAIL@ADDRESS\\n\"\n\"POT-Creation-Date: 2017-03-11 20:23"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/lang/main.css",
    "chars": 128,
    "preview": ".button{width: 100px !important;}\n#outsidePanel .button{width: 115px !important;}\n.eventPanel .button {width: 122px !imp"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/lang/nb/main.css",
    "chars": 130,
    "preview": " .button{width: 100px !important;}\n#outsidePanel .button{width: 115px !important;}\n.eventPanel .button {width: 122px !im"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/lang/nb/strings.js",
    "chars": 50626,
    "preview": "_.setTranslation({\"water tank\": \"vanntank\", \"use meds\": \"bruk medisiner\", \"the room is {0}\": \"rommet er {0}\", \"punch twi"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/lang/nb/strings.po",
    "chars": 90371,
    "preview": "# Copyright (C) 2014 ORGANIZATION\n# This file is distributed under the same license as the PROJECT project.\n# Jan Gerhar"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/lang/pl/main.css",
    "chars": 129,
    "preview": ".button{width: 100px !important;}\n#outsidePanel .button{width: 115px !important;}\n.eventPanel .button {width: 122px !imp"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/lang/pl/strings.js",
    "chars": 58909,
    "preview": "_.setTranslation({\"a startled beast defends its home\": \"przera\\u017cona bestia broni swojego domu\", \"the torchlight cast"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/lang/pl/strings.po",
    "chars": 92182,
    "preview": "msgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: ADR\\n\"\n\"Report-Msgid-Bugs-To: EMAIL@ADDRESS\\n\"\n\"POT-Creation-Date: 2016-12-09 10"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/lang/pt/main.css",
    "chars": 128,
    "preview": ".button{width: 100px !important;}\n#outsidePanel .button{width: 115px !important;}\n.eventPanel .button {width: 122px !imp"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/lang/pt/strings.js",
    "chars": 52567,
    "preview": "_.setTranslation({\"water tank\": \"tanque de \\u00e1gua\", \"use meds\": \"uso de medicamentos\", \"the room is {0}\": \"o quarto \\"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/lang/pt/strings.po",
    "chars": 92657,
    "preview": "msgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: \\n\"\n\"Report-Msgid-Bugs-To: EMAIL@ADDRESS\\n\"\n\"POT-Creation-Date: 2015-12-22 13:35"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/lang/pt_br/main.css",
    "chars": 129,
    "preview": ".button{width: 100px !important;}\n#outsidePanel .button{width: 115px !important;}\n.eventPanel .button {width: 122px !imp"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/lang/pt_br/strings.js",
    "chars": 54609,
    "preview": "_.setTranslation({\"water tank\": \"tanque de \\u00e1gua\", \"all\": \"tudo\", \"use meds\": \"usar medicamentos\", \"a shame to let w"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/lang/pt_br/strings.po",
    "chars": 92878,
    "preview": "msgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: \\n\"\n\"Report-Msgid-Bugs-To: EMAIL@ADDRESS\\n\"\n\"POT-Creation-Date: 2015-12-22 13:35"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/lang/ru/main.css",
    "chars": 280,
    "preview": ".button{width: 100px !important;}\n#outsidePanel .button{width: 115px !important;}\n.eventPanel .button {width: 122px !imp"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/lang/ru/strings.js",
    "chars": 84290,
    "preview": "_.setTranslation({\"water tank\": \"\\u0446\\u0438\\u0441\\u0442\\u0435\\u0440\\u043d\\u0430 \\u0441 \\u0432\\u043e\\u0434\\u043e\\u0439\""
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/lang/ru/strings.po",
    "chars": 97026,
    "preview": "msgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: adarkroom\\n\"\n\"POT-Creation-Date: 2016-02-15 02:03+0100\\n\"\n\"PO-Revision-Date: 201"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/lang/sv/main.css",
    "chars": 130,
    "preview": " .button{width: 100px !important;}\n#outsidePanel .button{width: 115px !important;}\n.eventPanel .button {width: 122px !im"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/lang/sv/strings.js",
    "chars": 37795,
    "preview": "_.setTranslation({\"The Nomad\": \"Nomaded\", \"The Scout\": \"Spejaren\", \"got it\": \"jag har det.\", \"restart the game?\": \"start"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/lang/sv/strings.po",
    "chars": 84331,
    "preview": "msgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: adarkroom\\n\"\n\"Report-Msgid-Bugs-To: EMAIL@ADDRESS\\n\"\n\"POT-Creation-Date: 2017-02"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/lang/th/main.css",
    "chars": 129,
    "preview": ".button{width: 120px !important;}\n#outsidePanel .button{width: 115px !important;}\n.eventPanel .button {width: 122px !imp"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/lang/th/strings.js",
    "chars": 47513,
    "preview": "_.setTranslation({\"water tank\": \"ถังน้ำ\", \"all\":\"ทุกอย่าง\",\n\"use meds\": \"ใช้ยา\", \"Fire\": \"ไฟไหม้\",\"a fire rampages throu"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/lang/th/strings.po",
    "chars": 90948,
    "preview": "msgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: \\n\"\n\"Report-Msgid-Bugs-To: EMAIL@ADDRESS\\n\"\n\"POT-Creation-Date: 2015-12-22 13:35"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/lang/tr/main.css",
    "chars": 128,
    "preview": ".button{width: 100px !important;}\n#outsidePanel .button{width: 115px !important;}\n.eventPanel .button {width: 122px !imp"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/lang/tr/strings.js",
    "chars": 37685,
    "preview": "_.setTranslation({\"water tank\": \"su tank\\u0131\", \"a shivering man approaches and attacks with surprising strength\": \"tit"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/lang/tr/strings.po",
    "chars": 91837,
    "preview": "msgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: adarkroom\\n\"\n\"POT-Creation-Date: 2016-02-15 02:03+0100\\n\"\n\"PO-Revision-Date: 201"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/lang/uk/main.css",
    "chars": 173,
    "preview": ".button{width: 115px !important;}\n#outsidePanel .button{width: 115px !important;}\n.eventPanel .button {width: 122px !imp"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/lang/uk/strings.js",
    "chars": 84791,
    "preview": "_.setTranslation({\"water tank\": \"\\u0432\\u043e\\u0434\\u044f\\u043d\\u0438\\u0439 \\u0431\\u0430\\u043a\", \"a shivering man approa"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/lang/uk/strings.po",
    "chars": 97720,
    "preview": "msgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: adarkroom\\n\"\n\"POT-Creation-Date: 2016-09-21 18:28+0300\\n\"\n\"PO-Revision-Date: 201"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/lang/vi/main.css",
    "chars": 128,
    "preview": ".button{width: 120px !important;}\n#outsidePanel .button{width: 115px !important;}\n.eventPanel .button {width: 122px !imp"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/lang/vi/strings.js",
    "chars": 73051,
    "preview": "_.setTranslation({\"water tank\": \"b\\u1ec3 n\\u01b0\\u1edbc\", \"use meds\": \"s\\u1eed d\\u1ee5ng med\", \"the room is {0}\": \"c\\u01"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/lang/vi/strings.po",
    "chars": 90163,
    "preview": "msgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: \\n\"\n\"Report-Msgid-Bugs-To: EMAIL@ADDRESS\\n\"\n\"POT-Creation-Date: 2015-12-22 13:35"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/lang/zh_cn/main.css",
    "chars": 129,
    "preview": ".button{width: 100px !important;}\n#outsidePanel .button{width: 115px !important;}\n.eventPanel .button {width: 122px !imp"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/lang/zh_cn/strings.js",
    "chars": 67429,
    "preview": "_.setTranslation({\"Dropbox connection\": \"dropbox\\u8fde\\u63a5\", \"connect game to dropbox local storage\": \"\\u8fde\\u63a5\\u5"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/lang/zh_cn/strings.po",
    "chars": 76852,
    "preview": "msgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: adarkroom\\n\"\n\"Report-Msgid-Bugs-To: EMAIL@ADDRESS\\n\"\n\"POT-Creation-Date: 2018-06"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/lang/zh_tw/main.css",
    "chars": 129,
    "preview": ".button{width: 100px !important;}\n#outsidePanel .button{width: 115px !important;}\n.eventPanel .button {width: 122px !imp"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/lang/zh_tw/strings.js",
    "chars": 40559,
    "preview": "_.setTranslation({\"water tank\": \"\\u6c34\\u7f50\", \"a shivering man approaches and attacks with surprising strength\": \"\\u4e"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/lang/zh_tw/strings.po",
    "chars": 80170,
    "preview": "msgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: adarkroom\\n\"\n\"Report-Msgid-Bugs-To: EMAIL@ADDRESS\\n\"\n\"POT-Creation-Date: 2016-02"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/lib/base64.js",
    "chars": 2963,
    "preview": "/**\n*\n*  Base64 encode / decode\n*  http://www.webtoolkit.info/\n*\n**/\nvar Base64 = {\n\n\t// private property\n\t_keyStr : \"AB"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/lib/icu.js",
    "chars": 3201,
    "preview": "(function() {\n\n\tvar dfs = {\"am_pm\":[\"AM\",\"PM\"],\"day_name\":[\"dimanche\",\"lundi\",\"mardi\",\"mercredi\",\"jeudi\",\"vendredi\",\"sam"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/lib/jquery.event.move.js",
    "chars": 14593,
    "preview": "// jquery.event.move\n//\n// 1.3.1\n//\n// Stephen Band\n//\n// Triggers 'movestart', 'move' and 'moveend' events after\n// mou"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/lib/jquery.event.swipe.js",
    "chars": 3236,
    "preview": "// jQuery.event.swipe\n// 0.5\n// Stephen Band\n\n// Dependencies\n// jQuery.event.move 1.2\n\n// One of swipeleft, swiperight,"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/lib/translate.js",
    "chars": 1649,
    "preview": "(function() {\n\n\tvar translate = function(text)\n\t{\n\t\tvar xlate = translateLookup(text);\n\t\t\n\t\tif (typeof xlate == \"functio"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/mobileWarning.html",
    "chars": 1354,
    "preview": "<!doctype html>\n<html>\n<head>\n    <meta name=\"viewport\" content=\"initial-scale=1, maximum-scale=1, user-scalable=no\">\n\t<"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/script/Button.js",
    "chars": 3365,
    "preview": "var Button = {\n\tButton: function(options) {\n\t\tif(typeof options.cooldown == 'number') {\n\t\t\tthis.data_cooldown = options."
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/script/audio.js",
    "chars": 11900,
    "preview": "/**\n * Module that takes care of audio playback\n */\nvar AudioEngine = {\n    FADE_TIME: 1,\n    AUDIO_BUFFER_CACHE: {},\n  "
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/script/audioLibrary.js",
    "chars": 4261,
    "preview": "/**\n * Module that defines all audio files\n */\nvar AudioLibrary = {\n    MUSIC_DUSTY_PATH: 'audio/dusty-path.flac',\n    M"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/script/dropbox.js",
    "chars": 10361,
    "preview": "(function (Engine, Events, Dropbox, $) {\n\n  /**\n   * Module that enables a save of the gamestate to the dropbox datastor"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/script/engine.js",
    "chars": 23938,
    "preview": "(function() {\n\tvar Engine = window.Engine = {\n\n\t\tSITE_URL: encodeURIComponent(\"http://adarkroom.doublespeakgames.com\"),\n"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/script/events/encounters.js",
    "chars": 7611,
    "preview": "/**\n * Events that can occur when wandering around the world\n **/\nEvents.Encounters = [\n\t/* Tier 1 */\n\t{ /* Snarling Bea"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/script/events/global.js",
    "chars": 1636,
    "preview": "/**\n * Events that can occur when any module is active (Except World. It's special.)\n **/\nEvents.Global = [\n\t{ /* The Th"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/script/events/marketing.js",
    "chars": 994,
    "preview": "/**\n Module for triggering marketing messages\n @author mtownsend\n @since Jan 2021\n*/\n\nEvents.Marketing = [{\n  /* Play Pe"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/script/events/outside.js",
    "chars": 7298,
    "preview": "/**\n * Events that can occur when the Outside module is active\n **/\nEvents.Outside = [\n\t{ /* Ruined traps */\n\ttitle: _('"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/script/events/room.js",
    "chars": 16140,
    "preview": "/**\n * Events that can occur when the Room module is active\n **/\nEvents.Room = [\n\t{ /* The Nomad  --  Merchant */\n\t\ttitl"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/script/events/setpieces.js",
    "chars": 67718,
    "preview": "/**\n * Events that only occur at specific times. Launched manually.\n **/\nEvents.Setpieces = {\n\t\"outpost\": { /* Friendly "
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/script/events.js",
    "chars": 32248,
    "preview": "/**\n * Module that handles the random event system\n */\nvar Events = {\n\n\t_EVENT_TIME_RANGE: [3, 6], // range, in minutes\n"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/script/header.js",
    "chars": 540,
    "preview": "/**\n * Module that takes care of header buttons\n */\nvar Header = {\n\t\n\tinit: function(options) {\n\t\tthis.options = $.exten"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/script/localization.js",
    "chars": 1371,
    "preview": "(function(){\n\t//only used for poedit to find translatable strings\n\tvar keywords = [ \n\t\t_('saved.'),\n\t\t_('wood'),\n\t\t_('bu"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/script/notifications.js",
    "chars": 2015,
    "preview": "/**\n * Module that registers the notification box and handles messages\n */\nvar Notifications = {\n\t\n\tinit: function(optio"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/script/outside.js",
    "chars": 19252,
    "preview": "/**\n * Module that registers the outdoors functionality\n */\nvar Outside = {\n\tname: _(\"Outside\"),\n\t\n\t_STORES_OFFSET: 0,\n\t"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/script/path.js",
    "chars": 11030,
    "preview": "var Path = {\n\tDEFAULT_BAG_SPACE: 10,\n\t_STORES_OFFSET: 0,\n\t// Everything not in this list weighs 1\n\tWeight: {\n\t\t'bone spe"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/script/prestige.js",
    "chars": 2369,
    "preview": "var Prestige = {\n\t\t\n\tname: 'Prestige',\n\n\toptions: {},\n\n\tinit: function(options) {\n\t\tthis.options = $.extend(this.options"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/script/room.js",
    "chars": 33505,
    "preview": "/**\n * Module that registers the simple room functionality\n */\nvar Room = {\n\t// times in (minutes * seconds * millisecon"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/script/scoring.js",
    "chars": 776,
    "preview": "var Score = {\n\n\tname : 'Score',\n\n\toptions : {},\n\n\tinit : function(options) {\n\t\tthis.options = $.extend(this.options, opt"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/script/ship.js",
    "chars": 4798,
    "preview": "/**\n * Module that registers the starship!\n */\nvar Ship = {\n\tLIFTOFF_COOLDOWN: 120,\n\tALLOY_PER_HULL: 1,\n\tALLOY_PER_THRUS"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/script/space.js",
    "chars": 14806,
    "preview": "/**\n * Module that registers spaaaaaaaaace!\n */\nvar Space = {\t\n\tSHIP_SPEED: 3,\n\tBASE_ASTEROID_DELAY: 500,\n\tBASE_ASTEROID"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/script/state_manager.js",
    "chars": 12672,
    "preview": "/*\n * Module for handling States\n *\n * All states should be get and set through the StateManager ($SM).\n *\n * The manage"
  },
  {
    "path": "main/gams/gfiles/html5/adarkroom/script/world.js",
    "chars": 28612,
    "preview": "var World = {\n\tRADIUS: 30,\n\tVILLAGE_POS: [30, 30],\n\tTILE: {\n\t\tVILLAGE: 'A',\n\t\tIRON_MINE: 'I',\n\t\tCOAL_MINE: 'C',\n\t\tSULPHU"
  },
  {
    "path": "main/gams/gfiles/html5/asciispace/index.html",
    "chars": 37248,
    "preview": "<meta charset=UTF-8><style>body{background-color:#000}#u{z-index:10;}canvas{border:none;position:absolute;width:95%;heig"
  },
  {
    "path": "main/gams/gfiles/html5/asteroids/LICENSE",
    "chars": 1087,
    "preview": "Copyright (c) 2010 Doug McInnes\n \nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this s"
  },
  {
    "path": "main/gams/gfiles/html5/asteroids/README.md",
    "chars": 173,
    "preview": "HTML5-Asteroids\n===============\n\nPure Javascript Asteroids, based on http://dougmcinnes.com/2010/05/12/html-5-asteroids/"
  },
  {
    "path": "main/gams/gfiles/html5/asteroids/game.js",
    "chars": 31273,
    "preview": "// Canvas Asteroids\n//\n// Copyright (c) 2010 Doug McInnes\n//\n\nKEY_CODES = {\n  32: 'space',\n  37: 'left',\n  38: 'up',\n  3"
  },
  {
    "path": "main/gams/gfiles/html5/asteroids/index.html",
    "chars": 1288,
    "preview": "<html>\n  <head>\n    <script src=\"jquery-1.4.1.min.js\"></script>\n    <script src=\"vector_battle_regular.typeface.js\"></sc"
  },
  {
    "path": "main/gams/gfiles/html5/asteroids/ipad.js",
    "chars": 1367,
    "preview": "var ipad = navigator.userAgent.match(/iPad/i) != null;\n\nif (ipad) {\n  $(function () {\n    $('#left-controls, #right-cont"
  },
  {
    "path": "main/gams/gfiles/html5/asteroids/vector_battle_regular.typeface.js",
    "chars": 27714,
    "preview": "// converted at http://typeface.neocracy.org\nvector_battle = {\"glyphs\":{\"S\":{\"x_min\":65,\"x_max\":980,\"ha\":1045,\"o\":\"m 963"
  },
  {
    "path": "main/gams/gfiles/html5/astray/README.md",
    "chars": 145,
    "preview": "# Astray\n\nA WebGL maze game built with Three.js and Box2dWeb.\n\n\n### License\n\nI don't believe in them. You can order your"
  },
  {
    "path": "main/gams/gfiles/html5/astray/Three.js",
    "chars": 364096,
    "preview": "// Three.js - http://github.com/mrdoob/three.js\n'use strict';var THREE=THREE||{REVISION:\"49\"};self.Int32Array||(self.Int"
  },
  {
    "path": "main/gams/gfiles/html5/astray/index.html",
    "chars": 13731,
    "preview": "<html>\n\n    <head>\n    \n        <script src='Box2dWeb.min.js'></script>\n        <script src=\"Three.js\"></script>\n       "
  },
  {
    "path": "main/gams/gfiles/html5/astray/jquery.js",
    "chars": 94839,
    "preview": "/*! jQuery v1.7.2 jquery.com | jquery.org/license */\n(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9"
  },
  {
    "path": "main/gams/gfiles/html5/astray/keyboard.js",
    "chars": 12663,
    "preview": "/*!\n * KeyboardJS\n * \n * Copyright 2011, Robert William Hurst\n * Licenced under the BSD License.\n * See https://raw.gith"
  },
  {
    "path": "main/gams/gfiles/html5/astray/maze.js",
    "chars": 1272,
    "preview": "function generateSquareMaze(dimension) {\n\n    function iterate(field, x, y) {\n        field[x][y] = false;\n        while"
  },
  {
    "path": "main/gams/gfiles/html5/backcountry/index.html",
    "chars": 37060,
    "preview": "<!doctype html><meta name=monetization content=\"$coil.xrptipbot.com/3lcUCVS5Rm-e6Ch_O7vpQA\"><meta charset=utf-8><meta na"
  },
  {
    "path": "main/gams/gfiles/html5/blackholesquare/index.html",
    "chars": 40453,
    "preview": "<!doctype html><html lang=\"en\"><head><meta charset=\"utf-8\"><title>Black Hole Square</title><meta name=\"description\" cont"
  },
  {
    "path": "main/gams/gfiles/html5/blackholesquare/manifest.json",
    "chars": 340,
    "preview": "{\"name\":\"Black Hole Square\",\"short_name\":\"BHS\",\"description\":\"Clean the universe!\",\"background_color\":\"#0E181B\",\"theme_c"
  },
  {
    "path": "main/gams/gfiles/html5/blackholesquare/sw.js",
    "chars": 777,
    "preview": "(()=>{let e=\"black-hole-square\",t=[\"index.html\",\"icon.png\",\"manifest.json\"];self.addEventListener(\"install\",(n=>{n.waitU"
  },
  {
    "path": "main/gams/gfiles/html5/bounceback/LICENSE",
    "chars": 18092,
    "preview": "                    GNU GENERAL PUBLIC LICENSE\n                       Version 2, June 1991\n\n Copyright (C) 1989, 1991 Fr"
  },
  {
    "path": "main/gams/gfiles/html5/bounceback/README.md",
    "chars": 2329,
    "preview": "## When life gets you down, it's never too late to...\n# B O U N C E B A C K\n### A Boomerang Roguelite Game for JS13k by "
  },
  {
    "path": "main/gams/gfiles/html5/bounceback/game.js",
    "chars": 65658,
    "preview": "/*\n    Bounce Back ~ A boomerang roguelike for JS13k\n    Copyright (C) 2019 Frank Force\n\n    This program is free softwa"
  },
  {
    "path": "main/gams/gfiles/html5/bounceback/gameEngine.js",
    "chars": 27696,
    "preview": "/*\n    Bounce Back ~ A boomerang roguelike for JS13k\n    Copyright (C) 2019 Frank Force\n\n    This program is free softwa"
  },
  {
    "path": "main/gams/gfiles/html5/bounceback/gameEngineDebug.js",
    "chars": 5974,
    "preview": "/*\n    Bounce Back ~ A boomerang roguelike for JS13k\n    Copyright (C) 2019 Frank Force\n\n    This program is free softwa"
  },
  {
    "path": "main/gams/gfiles/html5/bounceback/index.html",
    "chars": 1575,
    "preview": "<!doctype html>\n<!--\n    Bounce Back ~ A boomerang roguelike for JS13k\n    Copyright (C) 2019 Frank Force\n\n    This prog"
  },
  {
    "path": "main/gams/gfiles/html5/breaklock/app.css",
    "chars": 7011,
    "preview": ".countdown-container{float:right;width:10rem;height:1rem;margin:.25rem 0 .25rem .5rem;border:1px solid currentColor;bord"
  },
  {
    "path": "main/gams/gfiles/html5/breaklock/app.js",
    "chars": 34033,
    "preview": "!function(t){function e(i){if(n[i])return n[i].exports;var a=n[i]={i:i,l:!1,exports:{}};return t[i].call(a.exports,a,a.e"
  },
  {
    "path": "main/gams/gfiles/html5/breaklock/index.html",
    "chars": 8602,
    "preview": "<!doctype html>\n<html>\n  \n<!-- Mirrored from www.phoenix-le.cf/gfiles/html5games/breaklock/ by HTTrack Website Copier/3."
  },
  {
    "path": "main/gams/gfiles/html5/breaklock/manifest.json",
    "chars": 751,
    "preview": "{\n  \"name\": \"BreakLock\",\n  \"short_name\": \"BreakLock\",\n  \"icons\": [{\n      \"src\": \"./assets/icons/icon-128x128.png\",\n    "
  },
  {
    "path": "main/gams/gfiles/html5/breaklock/service-worker.js",
    "chars": 2298,
    "preview": "var APP_NAME = 'breaklock',\n    APP_VERSION = 12,\n    CACHE_NAME = APP_NAME + '_' + APP_VERSION;\nvar filesToCache = [\n  "
  },
  {
    "path": "main/gams/gfiles/html5/breakout/LICENSE",
    "chars": 1471,
    "preview": "Copyright (c) 2011, 2012, 2013, 2014, 2015, 2016 Jake Gordon and contributors\n\nPermission is hereby granted, free of cha"
  },
  {
    "path": "main/gams/gfiles/html5/breakout/breakout.css",
    "chars": 2665,
    "preview": "/*******************************/\n/* global document body styles */\n/*******************************/\n\nbody {\n        fo"
  },
  {
    "path": "main/gams/gfiles/html5/breakout/breakout.js",
    "chars": 23204,
    "preview": "//=============================================================================\n// Breakout\n//=========================="
  },
  {
    "path": "main/gams/gfiles/html5/breakout/game.js",
    "chars": 22517,
    "preview": "//=============================================================================\n//\n// We need some ECMAScript 5 methods "
  },
  {
    "path": "main/gams/gfiles/html5/breakout/index.html",
    "chars": 1543,
    "preview": "<!DOCTYPE html> \n<html>\n<head>\n  <title>Javascript Breakout</title>\n  <meta http-equiv=\"Content-Type\" content=\"text/html"
  },
  {
    "path": "main/gams/gfiles/html5/breakout/levels.js",
    "chars": 7531,
    "preview": "Breakout.Colors = {\n\n  arkanoid: {\n    w: \"#FCFCFC\", // white\n    o: \"#FC7460\", // orange\n    l: \"#3CBCFC\", // light blu"
  },
  {
    "path": "main/gams/gfiles/html5/breakout/sound/license.txt",
    "chars": 1567,
    "preview": "Software License Agreement (BSD License)\n\nCopyright (c) 2007, Scott Schiller (schillmania.com)\nAll rights reserved.\n\nRed"
  },
  {
    "path": "main/gams/gfiles/html5/breakout/sound/soundmanager2-nodebug-jsmin.js",
    "chars": 32027,
    "preview": "/** @license\n\n SoundManager 2: JavaScript Sound for the Web\n ----------------------------------------------\n http://schi"
  },
  {
    "path": "main/gams/gfiles/html5/captaincallisto/index.html",
    "chars": 15214,
    "preview": "<!doctype html>\n<html lang=\"en\">\n<head>\n<meta charset=\"utf-8\">\n<title>Captain Callisto</title>\n<style>\n*{touch-action:no"
  },
  {
    "path": "main/gams/gfiles/html5/chess/canvas3dengine/camera.jsfb",
    "chars": 6848,
    "preview": "/*\n * Javascript/Canvas Textured 3D Renderer v0.3.1\n * Copyright (c) 2008 Jacob Seidelin, cupboy@gmail.com\n * This softw"
  },
  {
    "path": "main/gams/gfiles/html5/chess/canvas3dengine/light.jsfb",
    "chars": 1663,
    "preview": "/*\n * Javascript/Canvas Textured 3D Renderer v0.3\n * Copyright (c) 2008 Jacob Seidelin, cupboy@gmail.com\n * This softwar"
  },
  {
    "path": "main/gams/gfiles/html5/chess/canvas3dengine/matrix3.jsfb",
    "chars": 3363,
    "preview": "/*\n * Javascript/Canvas Textured 3D Renderer v0.3\n * Copyright (c) 2008 Jacob Seidelin, cupboy@gmail.com\n * This softwar"
  },
  {
    "path": "main/gams/gfiles/html5/chess/canvas3dengine/mesh.jsfb",
    "chars": 25114,
    "preview": "/*\n * Javascript/Canvas Textured 3D Renderer v0.3.1\n * Copyright (c) 2008 Jacob Seidelin, cupboy@gmail.com\n * This softw"
  },
  {
    "path": "main/gams/gfiles/html5/chess/canvas3dengine/scene.jsfb",
    "chars": 8697,
    "preview": "/*\n * Javascript/Canvas Textured 3D Renderer v0.3.1\n * Copyright (c) 2008 Jacob Seidelin, cupboy@gmail.com\n * This softw"
  },
  {
    "path": "main/gams/gfiles/html5/chess/canvas3dengine/vec3.jsfb",
    "chars": 2513,
    "preview": "/*\n * Javascript/Canvas Textured 3D Renderer v0.3\n * Copyright (c) 2008 Jacob Seidelin, cupboy@gmail.com\n * This softwar"
  },
  {
    "path": "main/gams/gfiles/html5/chess/chess.js",
    "chars": 55062,
    "preview": "/**\n* @package HTML Chess\n* @version 1.0 revision #8\n* @author Stefano Gioffre', see README.txt\n* @copyleft 2010 Stefano"
  },
  {
    "path": "main/gams/gfiles/html5/chess/common/xhr.js",
    "chars": 1239,
    "preview": "\n// retrieves a file via XMLHTTPRequest, calls fncCallback when done or fncError on error.\n\nfunction XHR(strURL, fncCall"
  },
  {
    "path": "main/gams/gfiles/html5/chess/css/chess.css",
    "chars": 6851,
    "preview": "body {\n\tbackground-color: white;\n}\n\nspan.intLink, #chessClosePanel {\n\tcursor: pointer;\n}\n\na.chessCtrlBtn:link, span.ches"
  },
  {
    "path": "main/gams/gfiles/html5/chess/index.html",
    "chars": 7391,
    "preview": "<!doctype html>\n<html>\n<head>\n<meta content=\"text/html; charset=UTF-8\" http-equiv=\"Content-Type\" />\n<script type=\"text/e"
  },
  {
    "path": "main/gams/gfiles/html5/chess/license.txt",
    "chars": 35147,
    "preview": "                    GNU GENERAL PUBLIC LICENSE\n                       Version 3, 29 June 2007\n\n Copyright (C) 2007 Free "
  }
]

// ... and 910 more files (download for full content)

About this extraction

This page contains the full source code of the UtopiaUnblocker/Utopia GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 1110 files (100.7 MB), approximately 7.4M tokens, and a symbol index with 9919 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!