summaryrefslogtreecommitdiffhomepage
path: root/examples/web/models
diff options
context:
space:
mode:
authorraysan5 <[email protected]>2021-10-17 21:02:18 +0200
committerraysan5 <[email protected]>2021-10-17 21:02:18 +0200
commit35e67da08e3d214589968c19b4b2fb31d8e566cc (patch)
tree5054bcea5f6df754f467590101789b17dd9d9944 /examples/web/models
parentb2228039039afc05c41edd12103123f2a36c8080 (diff)
downloadraylib.com-35e67da08e3d214589968c19b4b2fb31d8e566cc.tar.gz
raylib.com-35e67da08e3d214589968c19b4b2fb31d8e566cc.zip
UPDATED: examples to raylib 4.0
Some new examples added
Diffstat (limited to 'examples/web/models')
-rw-r--r--examples/web/models/loader.html236
-rw-r--r--examples/web/models/models_animation.c141
-rw-r--r--examples/web/models/models_animation.databin359587 -> 0 bytes
-rw-r--r--examples/web/models/models_animation.html1
-rw-r--r--examples/web/models/models_animation.js1
-rw-r--r--examples/web/models/models_animation.wasmbin234143 -> 0 bytes
-rw-r--r--examples/web/models/models_billboard.c104
-rw-r--r--examples/web/models/models_billboard.databin22374 -> 0 bytes
-rw-r--r--examples/web/models/models_billboard.html1
-rw-r--r--examples/web/models/models_billboard.js1
-rw-r--r--examples/web/models/models_billboard.wasmbin116524 -> 0 bytes
-rw-r--r--examples/web/models/models_box_collisions.c150
-rw-r--r--examples/web/models/models_box_collisions.html1
-rw-r--r--examples/web/models/models_box_collisions.js1
-rw-r--r--examples/web/models/models_box_collisions.wasmbin91649 -> 0 bytes
-rw-r--r--examples/web/models/models_cubicmap.c117
-rw-r--r--examples/web/models/models_cubicmap.databin37324 -> 0 bytes
-rw-r--r--examples/web/models/models_cubicmap.html1
-rw-r--r--examples/web/models/models_cubicmap.js1
-rw-r--r--examples/web/models/models_cubicmap.wasmbin125091 -> 0 bytes
-rw-r--r--examples/web/models/models_first_person_maze.c165
-rw-r--r--examples/web/models/models_first_person_maze.databin37324 -> 0 bytes
-rw-r--r--examples/web/models/models_first_person_maze.html1
-rw-r--r--examples/web/models/models_first_person_maze.js1
-rw-r--r--examples/web/models/models_first_person_maze.wasmbin125916 -> 0 bytes
-rw-r--r--examples/web/models/models_geometric_shapes.c108
-rw-r--r--examples/web/models/models_geometric_shapes.html1
-rw-r--r--examples/web/models/models_geometric_shapes.js1
-rw-r--r--examples/web/models/models_geometric_shapes.wasmbin92113 -> 0 bytes
-rw-r--r--examples/web/models/models_heightmap.c112
-rw-r--r--examples/web/models/models_heightmap.databin10883 -> 0 bytes
-rw-r--r--examples/web/models/models_heightmap.html1
-rw-r--r--examples/web/models/models_heightmap.js1
-rw-r--r--examples/web/models/models_heightmap.wasmbin122971 -> 0 bytes
-rw-r--r--examples/web/models/models_loading.c177
-rw-r--r--examples/web/models/models_loading.data14846
-rw-r--r--examples/web/models/models_loading.html1
-rw-r--r--examples/web/models/models_loading.js1
-rw-r--r--examples/web/models/models_loading.wasmbin231184 -> 0 bytes
-rw-r--r--examples/web/models/models_material_pbr.c224
-rw-r--r--examples/web/models/models_mesh_generation.c152
-rw-r--r--examples/web/models/models_mesh_generation.html1
-rw-r--r--examples/web/models/models_mesh_generation.js1
-rw-r--r--examples/web/models/models_mesh_generation.wasmbin114180 -> 0 bytes
-rw-r--r--examples/web/models/models_mesh_picking.c242
-rw-r--r--examples/web/models/models_mesh_picking.data3938
-rw-r--r--examples/web/models/models_mesh_picking.html1
-rw-r--r--examples/web/models/models_mesh_picking.js1
-rw-r--r--examples/web/models/models_mesh_picking.wasmbin236903 -> 0 bytes
-rw-r--r--examples/web/models/models_orthographic_projection.c130
-rw-r--r--examples/web/models/models_orthographic_projection.html1
-rw-r--r--examples/web/models/models_orthographic_projection.js1
-rw-r--r--examples/web/models/models_orthographic_projection.wasmbin92393 -> 0 bytes
-rw-r--r--examples/web/models/models_rlgl_solar_system.c188
-rw-r--r--examples/web/models/models_rlgl_solar_system.html1
-rw-r--r--examples/web/models/models_rlgl_solar_system.js1
-rw-r--r--examples/web/models/models_rlgl_solar_system.wasmbin92659 -> 0 bytes
-rw-r--r--examples/web/models/models_skybox.c164
-rw-r--r--examples/web/models/models_skybox.databin6022034 -> 0 bytes
-rw-r--r--examples/web/models/models_skybox.html1
-rw-r--r--examples/web/models/models_skybox.js1
-rw-r--r--examples/web/models/models_skybox.wasmbin128806 -> 0 bytes
-rw-r--r--examples/web/models/models_waving_cubes.c143
-rw-r--r--examples/web/models/models_waving_cubes.html1
-rw-r--r--examples/web/models/models_waving_cubes.js1
-rw-r--r--examples/web/models/models_waving_cubes.wasmbin90537 -> 0 bytes
-rw-r--r--examples/web/models/models_yaw_pitch_roll.c145
-rw-r--r--examples/web/models/models_yaw_pitch_roll.databin828760 -> 0 bytes
-rw-r--r--examples/web/models/models_yaw_pitch_roll.html1
-rw-r--r--examples/web/models/models_yaw_pitch_roll.js1
-rw-r--r--examples/web/models/models_yaw_pitch_roll.pngbin146882 -> 0 bytes
-rw-r--r--examples/web/models/models_yaw_pitch_roll.wasmbin225040 -> 0 bytes
-rw-r--r--examples/web/models/resources/billboard.pngbin22374 -> 0 bytes
-rw-r--r--examples/web/models/resources/cubicmap.pngbin164 -> 0 bytes
-rw-r--r--examples/web/models/resources/cubicmap_atlas.pngbin37160 -> 0 bytes
-rw-r--r--examples/web/models/resources/dresden_square_1k.hdrbin1524733 -> 0 bytes
-rw-r--r--examples/web/models/resources/dresden_square_2k.hdrbin6019615 -> 0 bytes
-rw-r--r--examples/web/models/resources/guy/guy.blendbin665304 -> 0 bytes
-rw-r--r--examples/web/models/resources/guy/guy.iqmbin39408 -> 0 bytes
-rw-r--r--examples/web/models/resources/guy/guyanim.iqmbin18244 -> 0 bytes
-rw-r--r--examples/web/models/resources/guy/guytex.pngbin301935 -> 0 bytes
-rw-r--r--examples/web/models/resources/heightmap.pngbin10883 -> 0 bytes
-rw-r--r--examples/web/models/resources/models/LICENSE4
-rw-r--r--examples/web/models/resources/models/bridge.obj1725
-rw-r--r--examples/web/models/resources/models/bridge_diffuse.pngbin318466 -> 0 bytes
-rw-r--r--examples/web/models/resources/models/castle.obj12919
-rw-r--r--examples/web/models/resources/models/castle_diffuse.pngbin444213 -> 0 bytes
-rw-r--r--examples/web/models/resources/models/cube.obj68
-rw-r--r--examples/web/models/resources/models/cube_diffuse.pngbin23330 -> 0 bytes
-rw-r--r--examples/web/models/resources/models/house.obj4564
-rw-r--r--examples/web/models/resources/models/house_diffuse.pngbin392528 -> 0 bytes
-rw-r--r--examples/web/models/resources/models/market.obj7301
-rw-r--r--examples/web/models/resources/models/market_diffuse.pngbin389458 -> 0 bytes
-rw-r--r--examples/web/models/resources/models/turret.obj1888
-rw-r--r--examples/web/models/resources/models/turret_diffuse.pngbin380120 -> 0 bytes
-rw-r--r--examples/web/models/resources/models/well.obj1030
-rw-r--r--examples/web/models/resources/models/well_diffuse.pngbin342387 -> 0 bytes
-rw-r--r--examples/web/models/resources/plane/LICENSE9
-rw-r--r--examples/web/models/resources/plane/plane.binbin196176 -> 0 bytes
-rw-r--r--examples/web/models/resources/plane/plane.gltf327
-rw-r--r--examples/web/models/resources/plane/plane_diffuse.pngbin823493 -> 0 bytes
-rw-r--r--examples/web/models/resources/shaders/glsl100/cubemap.fs29
-rw-r--r--examples/web/models/resources/shaders/glsl100/cubemap.vs20
-rw-r--r--examples/web/models/resources/shaders/glsl100/skybox.fs28
-rw-r--r--examples/web/models/resources/shaders/glsl100/skybox.vs24
-rw-r--r--examples/web/models/resources/shaders/glsl330/brdf.fs133
-rw-r--r--examples/web/models/resources/shaders/glsl330/brdf.vs25
-rw-r--r--examples/web/models/resources/shaders/glsl330/cubemap.fs30
-rw-r--r--examples/web/models/resources/shaders/glsl330/cubemap.vs28
-rw-r--r--examples/web/models/resources/shaders/glsl330/irradiance.fs58
-rw-r--r--examples/web/models/resources/shaders/glsl330/pbr.fs300
-rw-r--r--examples/web/models/resources/shaders/glsl330/pbr.vs49
-rw-r--r--examples/web/models/resources/shaders/glsl330/prefilter.fs120
-rw-r--r--examples/web/models/resources/shaders/glsl330/skybox.fs37
-rw-r--r--examples/web/models/resources/shaders/glsl330/skybox.vs32
-rw-r--r--examples/web/models/rlights.h177
116 files changed, 0 insertions, 52437 deletions
diff --git a/examples/web/models/loader.html b/examples/web/models/loader.html
deleted file mode 100644
index 86e0789..0000000
--- a/examples/web/models/loader.html
+++ /dev/null
@@ -1,236 +0,0 @@
-<!DOCTYPE html>
-<html>
- <head>
- <title>loading...</title>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
-
- <meta name="title" content="raylib - example">
- <meta name="description" content="raylib is a simple and easy-to-use library to enjoy videogames programming. This a small example of what you can do.">
- <meta name="keywords" content="raylib, videogames, programming, C, C++, library, learn, study, simple, easy, free, open source, raysan">
- <meta name="viewport" content="width=device-width">
-
- <!-- Open Graph metatags for sharing -->
- <meta property="og:title" content="raylib - example"/>
- <meta property="og:image" content="https://www.raylib.com/common/img/raylib_logo_card.png"/>
- <meta property="og:url" content="https://www.raylib.com" />
- <meta property="og:site_name" content="raylib"/>
- <meta property="og:description" content="This is a small example of what you can do with raylib"/>
-
- <!-- Add jQuery library -->
- <script type="text/javascript" src="https://code.jquery.com/jquery-latest.min.js"></script>
-
- <!-- hightlight.js - Syntax highlighting for the Web -->
- <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/8.1/styles/default.min.css">
- <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/8.1/highlight.min.js"></script>
-
- <style type="text/css">
- @font-face {
- font-family: 'grixel_acme_7_wide_xtnd';
- src: url('../../font/acme_7_wide_xtnd.eot');
- src: url('../../font/acme_7_wide_xtnd.eot?#iefix') format('embedded-opentype'),
- url('../../font/acme_7_wide_xtnd.woff') format('woff'),
- url('../../font/acme_7_wide_xtnd.ttf') format('truetype');
- font-weight: normal;
- font-style: normal;
- font-size-adjust:0.49;
- }
- #eximage { width: 802px; height: 452px; text-align: center; }
- #eximage img { margin: 0 auto; border: 1px solid; border-color: black; }
- #eximage canvas { position: relative; top: 1px; left: 1px; border: 1px solid red; background: black; }
- pre { width: 802px!important;}
- pre code{ border: 1px solid; border-color:#b0b0b0; height:auto; }
- .exdownbtn{ margin-right: 20px; width:220px; height:30px; float:left; position: relative; cursor:pointer; font-weight:bold; font-size:10px;
- line-height:30px; text-align: center; border-width:5px; background-color:#e1e1e1; color:#5c5a5a;
- border:4px solid #898888; font-family: grixel_acme_7_wide_xtnd, Courier New, Verdana, Arial;}
- #exdowncode .exdownbtn:hover{background-color:#f0d6d6; color:#c55757; border:4px solid #e66666;}
- #exdownexec .exdownbtn:hover{background-color:#bedce8; color:#417794; border:4px solid #5d9cbd;}
-
- .fancybox-wrap fancybox-desktop fancybox-type-iframe fancybox-opened { width: 860px!important;}
- .fancybox-inner { width: 850px!important; }
- .fancybox-iframe { width: 830px!important; }
- </style>
-
- <script type="text/javascript">
- $(document).ready(function()
- {
- window.addEventListener('keydown', function(e)
- {
- // Prevent SPACE key to scroll page
- if ((e.keyCode == 32) && (e.target == document.body)) e.preventDefault();
- });
-
- var mainUrl = $(location).attr('href');
- var name = mainUrl.slice(mainUrl.indexOf('=') + 1);
-
- document.title = "raylib - " + name.replace('_', ' ');
-
- var type = name.substring(0, name.indexOf("_"));
- //var srcUrl = '../../src/' + type + '/' + name + '.c';
- //var imgUrl = '../' + type + '/' + name + '.png';
-
- // Get example code and image directly from original raylib GitHub and avoid duplicate code to maintain
- var srcUrl = 'https://raw.githubusercontent.com/raysan5/raylib/master/examples/' + type + '/' + name + '.c';
- var imgUrl = 'https://raw.githubusercontent.com/raysan5/raylib/master/examples/' + type + '/' + name + '.png';
-
- $('#eximage img').attr('src', imgUrl);
-
- $.get(srcUrl, function(data)
- {
- $('pre code').text(data);
- $('pre code').each(function(i, e) {hljs.highlightBlock(e)});
- }, 'text');
-
- // Quick hack for some examples not working on web
- if (name == "models_material_pbr")
- {
- $('#eximage').append('<img src="' + imgUrl + '" alt=" ">');
- }
- else
- {
- // #eximage filling code: canvas sample and image
- $('#eximage').append(
- '<canvas class="emscripten" id="canvas" oncontextmenu="event.preventDefault()">' +
- '<img src="' + imgUrl + '" alt=" ">' +
- '</canvas>');
-
- Module.canvas = document.getElementById('canvas');
- Module.canvas.addEventListener("webglcontextlost", function(e) { alert('WebGL context lost. You will need to reload the page.'); e.preventDefault(); }, false);
-
- var jsUrl = name + '.js';
-
- // Run emscripten example
- $.getScript(jsUrl, function() {});
- }
- });
- </script>
- <script type='text/javascript' src="https://cdn.jsdelivr.net/gh/eligrey/FileSaver.js/dist/FileSaver.min.js"> </script>
- <script type='text/javascript'>
- function saveFileFromMEMFSToDisk(memoryFSname, localFSname) // This can be called by C/C++ code
- {
- var isSafari = false; // Not supported, navigator.userAgent access is being restricted
- var data = FS.readFile(memoryFSname);
- var blob;
-
- if (isSafari) blob = new Blob([data.buffer], { type: "application/octet-stream" });
- else blob = new Blob([data.buffer], { type: "application/octet-binary" });
-
- // NOTE: SaveAsDialog is a browser setting. For example, in Google Chrome,
- // in Settings/Advanced/Downloads section you have a setting:
- // 'Ask where to save each file before downloading' - which you can set true/false.
- // If you enable this setting it would always ask you and bring the SaveAsDialog
- saveAs(blob, localFSname);
- }
- </script>
- </head>
-
- <body>
- <div class="emscripten">
- <progress value="0" max="100" id="progress" hidden=1></progress>
- </div>
-
- <!-- Canvas example or image, filled on loading -->
- <div id="eximage"></div>
-
- <!--<textarea id="output" rows="8"></textarea>-->
-
- <pre><code class="cpp"></code></pre>
-
- <script type='text/javascript'>
- //var statusElement = document.getElementById('status');
- //var progressElement = document.getElementById('progress');
- //var spinnerElement = document.getElementById('spinner');
-
- var Module = {
- preRun: [],
- postRun: [],
- print: (function() {
- var element = document.getElementById('output');
- if (element) element.value = ''; // clear browser cache
- return function(text) {
- text = Array.prototype.slice.call(arguments).join(' ');
- // These replacements are necessary if you render to raw HTML
- //text = text.replace(/&/g, "&amp;");
- //text = text.replace(/</g, "&lt;");
- //text = text.replace(/>/g, "&gt;");
- //text = text.replace('\n', '<br>', 'g');
- console.log(text);
- if (element) {
- element.value += text + "\n";
- element.scrollTop = element.scrollHeight; // focus on bottom
- }
- };
- })(),
- printErr: function(text) {
- text = Array.prototype.slice.call(arguments).join(' ');
- if (0) { // XXX disabled for safety typeof dump == 'function') {
- dump(text + '\n'); // fast, straight to the real console
- } else {
- console.error(text);
- }
- },
- canvas: (function() {
- // NOTE: canvas element eventListener is added after appending!
-
- //var canvas = document.getElementById('canvas');
-
- // As a default initial behavior, pop up an alert when webgl context is lost. To make your
- // application robust, you may want to override this behavior before shipping!
- // See https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.15.2
- //canvas.addEventListener("webglcontextlost", function(e) { alert('WebGL context lost. You will need to reload the page.'); e.preventDefault(); }, false);
-
- //return canvas;
- })(),
- setStatus: function(text) {
- if (!Module.setStatus.last) Module.setStatus.last = { time: Date.now(), text: '' };
- if (text === Module.setStatus.text) return;
- var m = text.match(/([^(]+)\((\d+(\.\d+)?)\/(\d+)\)/);
- var now = Date.now();
- if (m && now - Date.now() < 30) return; // if this is a progress update, skip it if too soon
- if (m) {
- text = m[1];
- //progressElement.value = parseInt(m[2])*100;
- //progressElement.max = parseInt(m[4])*100;
- //progressElement.hidden = false;
- //spinnerElement.hidden = false;
- } else {
- //progressElement.value = null;
- //progressElement.max = null;
- //progressElement.hidden = true;
- //if (!text) spinnerElement.style.display = 'none';
- }
- //statusElement.innerHTML = text;
- },
- totalDependencies: 0,
- monitorRunDependencies: function(left) {
- this.totalDependencies = Math.max(this.totalDependencies, left);
- Module.setStatus(left ? 'Preparing... (' + (this.totalDependencies-left) + '/' + this.totalDependencies + ')' : 'All downloads complete.');
- }
- };
-
- Module.setStatus('Downloading...');
-
- window.onerror = function(event) {
- // TODO: do not warn on ok events like simulating an infinite loop or exitStatus
- Module.setStatus('Exception thrown, see JavaScript console');
- //spinnerElement.style.display = 'none';
- Module.setStatus = function(text) {
- if (text) Module.printErr('[post-exception status] ' + text);
- };
- };
- </script>
-
- <!--<script async type="text/javascript" src="../examples/web/core_basic_window.js"></script>-->
-
- <!-- Google Analytics tracking code -->
- <script>
- (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
- (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
- m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
- })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
-
- ga('create', 'UA-45733555-1', 'raylib.com');
- ga('require', 'linkid', 'linkid.js');
- ga('send', 'pageview');
- </script>
- </body>
-</html> \ No newline at end of file
diff --git a/examples/web/models/models_animation.c b/examples/web/models/models_animation.c
deleted file mode 100644
index 89f01f7..0000000
--- a/examples/web/models/models_animation.c
+++ /dev/null
@@ -1,141 +0,0 @@
-/*******************************************************************************************
-*
-* raylib [models] example - Load 3d model with animations and play them
-*
-* This example has been created using raylib 2.5 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
-*
-* Copyright (c) 2019 Ramon Santamaria (@raysan5) and @culacant
-*
-********************************************************************************************/
-
-#include "raylib.h"
-
-#include <stdlib.h>
-
-#if defined(PLATFORM_WEB)
- #include <emscripten/emscripten.h>
-#endif
-
-//----------------------------------------------------------------------------------
-// Global Variables Definition
-//----------------------------------------------------------------------------------
-const int screenWidth = 800;
-const int screenHeight = 450;
-
-// NOTE: Textures MUST be loaded after Window initialization (OpenGL context is required)
-
-Camera camera = { 0 };
-
-Model model = { 0 };
-Texture2D texture = { 0 };
-
-Vector3 position = { 0.0f, 0.0f, 0.0f };
-
-// Load animation data
-int animsCount = 0;
-ModelAnimation *anims = 0;
-int animFrameCounter = 0;
-
-//----------------------------------------------------------------------------------
-// Module Functions Declaration
-//----------------------------------------------------------------------------------
-void UpdateDrawFrame(void); // Update and Draw one frame
-
-//----------------------------------------------------------------------------------
-// Program Main Entry Point
-//----------------------------------------------------------------------------------
-int main(void)
-{
- // Initialization
- //--------------------------------------------------------------------------------------
- InitWindow(screenWidth, screenHeight, "raylib [models] example - model animation");
-
- // Define the camera to look into our 3d world
- camera.position = (Vector3){ 10.0f, 10.0f, 10.0f }; // Camera position
- camera.target = (Vector3){ 0.0f, 0.0f, 0.0f }; // Camera looking at point
- camera.up = (Vector3){ 0.0f, 1.0f, 0.0f }; // Camera up vector (rotation towards target)
- camera.fovy = 45.0f; // Camera field-of-view Y
- camera.projection = CAMERA_PERSPECTIVE; // Camera mode type
-
- model = LoadModel("resources/guy/guy.iqm"); // Load the animated model mesh and basic data
- texture = LoadTexture("resources/guy/guytex.png"); // Load model texture and set material
- SetMaterialTexture(&model.materials[0], MAP_DIFFUSE, texture); // Set model material map texture
-
- // Load animation data
- anims = LoadModelAnimations("resources/guy/guyanim.iqm", &animsCount);
-
- SetCameraMode(camera, CAMERA_FREE); // Set free camera mode
-
-#if defined(PLATFORM_WEB)
- emscripten_set_main_loop(UpdateDrawFrame, 60, 1);
-#else
- SetTargetFPS(60); // Set our game to run at 60 frames-per-second
- //--------------------------------------------------------------------------------------
-
- // Main game loop
- while (!WindowShouldClose()) // Detect window close button or ESC key
- {
- UpdateDrawFrame();
- }
-#endif
-
- // De-Initialization
- //--------------------------------------------------------------------------------------
- UnloadTexture(texture); // Unload texture
-
- // Unload model animations data
- for (int i = 0; i < animsCount; i++) UnloadModelAnimation(anims[i]);
- RL_FREE(anims);
-
- UnloadModel(model); // Unload model
-
- CloseWindow(); // Close window and OpenGL context
- //--------------------------------------------------------------------------------------
-
- return 0;
-}
-
-//----------------------------------------------------------------------------------
-// Module Functions Definition
-//----------------------------------------------------------------------------------
-void UpdateDrawFrame(void)
-{
- // Update
- //----------------------------------------------------------------------------------
- UpdateCamera(&camera);
-
- // Play animation when spacebar is held down
- if (IsKeyDown(KEY_SPACE))
- {
- animFrameCounter++;
- UpdateModelAnimation(model, anims[0], animFrameCounter);
- if (animFrameCounter >= anims[0].frameCount) animFrameCounter = 0;
- }
- //----------------------------------------------------------------------------------
-
- // Draw
- //----------------------------------------------------------------------------------
- BeginDrawing();
-
- ClearBackground(RAYWHITE);
-
- BeginMode3D(camera);
-
- DrawModelEx(model, position, (Vector3){ 1.0f, 0.0f, 0.0f }, -90.0f, (Vector3){ 1.0f, 1.0f, 1.0f }, WHITE);
-
- for (int i = 0; i < model.boneCount; i++)
- {
- DrawCube(anims[0].framePoses[animFrameCounter][i].translation, 0.2f, 0.2f, 0.2f, RED);
- }
-
- DrawGrid(10, 1.0f); // Draw a grid
-
- EndMode3D();
-
- DrawText("PRESS SPACE to PLAY MODEL ANIMATION", 10, 10, 20, MAROON);
- DrawText("(c) Guy IQM 3D model by @culacant", screenWidth - 200, screenHeight - 20, 10, GRAY);
-
- EndDrawing();
- //----------------------------------------------------------------------------------
-}
diff --git a/examples/web/models/models_animation.data b/examples/web/models/models_animation.data
deleted file mode 100644
index c7a884a..0000000
--- a/examples/web/models/models_animation.data
+++ /dev/null
Binary files differ
diff --git a/examples/web/models/models_animation.html b/examples/web/models/models_animation.html
deleted file mode 100644
index 5402f2f..0000000
--- a/examples/web/models/models_animation.html
+++ /dev/null
@@ -1 +0,0 @@
-<!doctypehtml><html lang=en-us><head><meta charset=utf-8><meta content="text/html; charset=utf-8"http-equiv=Content-Type><title>raylib HTML5 GAME</title><meta content="raylib HTML5 GAME"name=title><meta content="New HTML5 videogame, developed using raylib videogames library"name=description><meta content="raylib, games, html5, programming, C, C++, library, learn, videogames"name=keywords><meta content="width=device-width"name=viewport><meta content="raylib HTML5 GAME"property=og:title><meta content=image/png property=og:image:type><meta content=https://www.raylib.com/common/img/raylib_logo.png property=og:image><meta content=raylib.com property=og:site_name><meta content=https://www.raylib.com/games.html property=og:url><meta content="New HTML5 videogame, developed using raylib videogames library"property=og:description><meta content=summary name=twitter:card><meta content=@raysan5 name=twitter:site><meta content="raylib HTML5 GAME"name=twitter:title><meta content=https://www.raylib.com/common/raylib_logo.png name=twitter:image><meta content=https://www.raylib.com/games.html name=twitter:url><meta content="New HTML5 videogame, developed using raylib videogames library"name=twitter:description><link href=https://www.raylib.com/favicon.ico rel="shortcut icon"><style>body{font-family:arial;margin:0;padding:none}#header{width:100%;height:80px;background-color:#888}#logo{width:64px;height:64px;float:left;position:relative;margin:10px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAAlC+aJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjExR/NCNwAAA7JJREFUaEPtk0FyWzEMQ+37X7fZhxX4YY3AD1OKF1nkzTRlSBCCLeVBnvl/AUdaELOunPno1kts1kixdtEZKVs+xIxebBkZsVknn/L5nFGDLR8T4zVC9fX19S/+tTFijrYK4jUjbPUtqBHpnEE6PkZD7jQZV8n5Recw1XQKciZuPaEtR6UjNs5ENVGMsBVqpPtER0ZMOhpyp8m4YL4OjD9yxsyZxnQycfMJETNSzsRE1+dihK3YMiJmpHTW3xpmXPC6BXlCHfqnBlsjY5hxf/6EVEOM2BTEi0fYCX4ONSI6Kq3Blg/prIOMq2CsRur4KQ0x64SdjOufEDEdHZGOhmz5RDHCVqhRuQ86YsVskbc+GXchLiHnFyYH+UigQDVGnImbT8hwFkgLg2qiM8JO6Ylx1FNLa3DmYwqCTsZd4BPqGJG7MwKzpeiWKTKxXkLMVE3MSOmsdwxLH6Rd/wCCLSNDx6djeKfJuArGeoYamRHpaEjnCBYZVy8hZqo2GI36qPjsiOiMsBXGcev4Mx9TLGTchbgEjN/uz6jGrBvDjg+LTNx8Qp2CbG2xMKgmOiPslJ4Yxx+eSnSkzlosZNwFPiHl7FRTkLNRJm4+IeVM0ymIH42wE/wcKalQI4MRl4EW3p6VcRWMua8F6WjIlqZDxvVPiHQ6CjVbYkV9ohhhp/Rk1wiYgpyJ78i4CsZbjkb8Qx+ihvzu3RPaKogZkY6GlEeMsKdPSOFIC8VoOusg44L5c+T8ouOoGhWbdWJ8tMi4egkxo4hoh2yNTGf3iIyr5Lyic4bRENXo+lvDjAt4C1Hk/OKtUaAj0+n4dMSZ2D+hrYJsaYh2SClG2jV9kJKKzhlGQ1SsW299Mq6C8dYZHTExo8fzieI5ivipYnYy7nwJqGKmOYyRwfiUBXITfh5qSHRGWEkfqJqURgvsdHyWYv7Ko8DnYYegk3EB00cxprdrJRzFd7YQzawu8L1GMTYS/KpPaAFTkIn1EmJmspJSs5xBzSyGhlkBmlxfNFiP5mw4wlbMh4F5Ddxp5jNINBdCEz9zPOC1zD7Q0HBdmXndwv0TMtydEdzlWJT4VZ8Qt9Qn4/onxMIwa5ZYGJU5yufBiCjwE50AGjLCVuS8Yt4H7OgZLKK5EKOsLviEWJSL/+0uMi7gLUSBseYwqEbXvSHCec1CJvZPyHCmYQffaBBfOTCGHM2aEbZi1+gO1XTWVXMnzrhAn5DSOZVsiQlHnSITKzGj6DeTcZWc/3oy7h9//PF4PL4BlvsWrb6RE+oAAAAASUVORK5CYII=)}.emscripten{padding-right:0;margin-left:auto;margin-right:auto;display:block}div.emscripten{text-align:center}div.emscripten_border{border:1px solid #000}canvas.emscripten{border:0 none;background:#000;width:100%}.spinner{height:30px;width:30px;margin:0;margin-top:20px;margin-left:20px;display:inline-block;vertical-align:top;-webkit-animation:rotation .8s linear infinite;-moz-animation:rotation .8s linear infinite;-o-animation:rotation .8s linear infinite;animation:rotation .8s linear infinite;border-left:5px solid #000;border-right:5px solid #000;border-bottom:5px solid #000;border-top:5px solid red;border-radius:100%;background-color:#f5f5f5}@-webkit-keyframes rotation{from{-webkit-transform:rotate(0)}to{-webkit-transform:rotate(360deg)}}@-moz-keyframes rotation{from{-moz-transform:rotate(0)}to{-moz-transform:rotate(360deg)}}@-o-keyframes rotation{from{-o-transform:rotate(0)}to{-o-transform:rotate(360deg)}}@keyframes rotation{from{transform:rotate(0)}to{transform:rotate(360deg)}}#status{display:inline-block;vertical-align:top;margin-top:30px;margin-left:20px;font-weight:700;color:#282828}#progress{height:0;width:0}#controls{display:inline-block;float:right;vertical-align:top;margin-top:15px;margin-right:20px}#output{width:100%;height:140px;margin:0 auto;margin-top:10px;display:block;background-color:#000;color:#25ae26;font-family:'Lucida Console',Monaco,monospace;outline:0}input[type=button]{background-color:#d3d3d3;border:4px solid #a9a9a9;color:#000;text-decoration:none;cursor:pointer;width:140px;height:50px}input[type=button]:hover{background-color:#f5f5f5ff;border-color:#000}</style></head><body><div id=header><a href=https://www.raylib.com id=logo></a><div class=spinner id=spinner></div><div class=emscripten id=status>Downloading...</div><span id=controls><span><input onclick=Module.requestFullscreen(!1,!1) type=button value="🖵 FULLSCREEN"></span><span><input onclick=toggleAudio() type=button value="🔇 SUSPEND"id=btn-audio></span></span><div class=emscripten><progress hidden id=progress max=100 value=0></progress></div></div><div class=emscripten_border><canvas class=emscripten id=canvas oncontextmenu=event.preventDefault() tabindex=-1></canvas></div><textarea id=output rows=8></textarea><script src=https://cdn.jsdelivr.net/gh/eligrey/FileSaver.js/dist/FileSaver.min.js></script><script>function saveFileFromMEMFSToDisk(e,a){var t,i=/^((?!chrome|android).)*safari/i.test(navigator.userAgent),o=FS.readFile(e);t=i?new Blob([o.buffer],{type:"application/octet-stream"}):new Blob([o.buffer],{type:"application/octet-binary"}),saveAs(t,a)}</script><script>var statusElement=document.querySelector("#status"),progressElement=document.querySelector("#progress"),spinnerElement=document.querySelector("#spinner"),Module={preRun:[],postRun:[],print:function(){var e=document.querySelector("#output");return e&&(e.value=""),function(t){arguments.length>1&&(t=Array.prototype.slice.call(arguments).join(" ")),console.log(t),e&&(e.value+=t+"\n",e.scrollTop=e.scrollHeight)}}(),printErr:function(e){arguments.length>1&&(e=Array.prototype.slice.call(arguments).join(" ")),console.error(e)},canvas:function(){var e=document.querySelector("#canvas");return e.addEventListener("webglcontextlost",(function(e){alert("WebGL context lost. You will need to reload the page."),e.preventDefault()}),!1),e}(),setStatus:function(e){if(Module.setStatus.last||(Module.setStatus.last={time:Date.now(),text:""}),e!==Module.setStatus.last.text){var t=e.match(/([^(]+)\((\d+(\.\d+)?)\/(\d+)\)/),n=Date.now();t&&n-Module.setStatus.last.time<30||(Module.setStatus.last.time=n,Module.setStatus.last.text=e,t?(e=t[1],progressElement.value=100*parseInt(t[2]),progressElement.max=100*parseInt(t[4]),progressElement.hidden=!0,spinnerElement.hidden=!1):(progressElement.value=null,progressElement.max=null,progressElement.hidden=!0,e||(spinnerElement.style.display="none")),statusElement.innerHTML=e)}},totalDependencies:0,monitorRunDependencies:function(e){this.totalDependencies=Math.max(this.totalDependencies,e),Module.setStatus(e?"Preparing... ("+(this.totalDependencies-e)+"/"+this.totalDependencies+")":"All downloads complete.")}};Module.setStatus("Downloading..."),window.onerror=function(){Module.setStatus("Exception thrown, see JavaScript console"),spinnerElement.style.display="none",Module.setStatus=function(e){e&&Module.printErr("[post-exception status] "+e)}}</script><script>var audioBtn=document.querySelector("#btn-audio");const audioContexList=[];function toggleAudio(){var t=!1;audioContexList.forEach(e=>{"suspended"==e.state?(e.resume(),t=!0):"running"==e.state&&e.suspend()}),audioBtn.value=t?"🔇 SUSPEND":"🔈 RESUME"}self.AudioContext=new Proxy(self.AudioContext,{construct(t,e){const n=new t(...e);return audioContexList.push(n),"suspended"==n.state&&(audioBtn.value="🔈 RESUME"),n}})</script><script src=models_animation.js async></script></body></html> \ No newline at end of file
diff --git a/examples/web/models/models_animation.js b/examples/web/models/models_animation.js
deleted file mode 100644
index 27230f4..0000000
--- a/examples/web/models/models_animation.js
+++ /dev/null
@@ -1 +0,0 @@
-var Module=typeof Module!=="undefined"?Module:{};if(!Module.expectedDataFileDownloads){Module.expectedDataFileDownloads=0}Module.expectedDataFileDownloads++;(function(){var loadPackage=function(metadata){var PACKAGE_PATH;if(typeof window==="object"){PACKAGE_PATH=window["encodeURIComponent"](window.location.pathname.toString().substring(0,window.location.pathname.toString().lastIndexOf("/"))+"/")}else if(typeof location!=="undefined"){PACKAGE_PATH=encodeURIComponent(location.pathname.toString().substring(0,location.pathname.toString().lastIndexOf("/"))+"/")}else{throw"using preloaded data can only be done on a web page or in a web worker"}var PACKAGE_NAME="models/models_animation.data";var REMOTE_PACKAGE_BASE="models_animation.data";if(typeof Module["locateFilePackage"]==="function"&&!Module["locateFile"]){Module["locateFile"]=Module["locateFilePackage"];err("warning: you defined Module.locateFilePackage, that has been renamed to Module.locateFile (using your locateFilePackage for now)")}var REMOTE_PACKAGE_NAME=Module["locateFile"]?Module["locateFile"](REMOTE_PACKAGE_BASE,""):REMOTE_PACKAGE_BASE;var REMOTE_PACKAGE_SIZE=metadata["remote_package_size"];var PACKAGE_UUID=metadata["package_uuid"];function fetchRemotePackage(packageName,packageSize,callback,errback){var xhr=new XMLHttpRequest;xhr.open("GET",packageName,true);xhr.responseType="arraybuffer";xhr.onprogress=function(event){var url=packageName;var size=packageSize;if(event.total)size=event.total;if(event.loaded){if(!xhr.addedTotal){xhr.addedTotal=true;if(!Module.dataFileDownloads)Module.dataFileDownloads={};Module.dataFileDownloads[url]={loaded:event.loaded,total:size}}else{Module.dataFileDownloads[url].loaded=event.loaded}var total=0;var loaded=0;var num=0;for(var download in Module.dataFileDownloads){var data=Module.dataFileDownloads[download];total+=data.total;loaded+=data.loaded;num++}total=Math.ceil(total*Module.expectedDataFileDownloads/num);if(Module["setStatus"])Module["setStatus"]("Downloading data... ("+loaded+"/"+total+")")}else if(!Module.dataFileDownloads){if(Module["setStatus"])Module["setStatus"]("Downloading data...")}};xhr.onerror=function(event){throw new Error("NetworkError for: "+packageName)};xhr.onload=function(event){if(xhr.status==200||xhr.status==304||xhr.status==206||xhr.status==0&&xhr.response){var packageData=xhr.response;callback(packageData)}else{throw new Error(xhr.statusText+" : "+xhr.responseURL)}};xhr.send(null)}function handleError(error){console.error("package error:",error)}var fetchedCallback=null;var fetched=Module["getPreloadedPackage"]?Module["getPreloadedPackage"](REMOTE_PACKAGE_NAME,REMOTE_PACKAGE_SIZE):null;if(!fetched)fetchRemotePackage(REMOTE_PACKAGE_NAME,REMOTE_PACKAGE_SIZE,function(data){if(fetchedCallback){fetchedCallback(data);fetchedCallback=null}else{fetched=data}},handleError);function runWithFS(){function assert(check,msg){if(!check)throw msg+(new Error).stack}Module["FS_createPath"]("/","resources",true,true);Module["FS_createPath"]("/resources","guy",true,true);function DataRequest(start,end,audio){this.start=start;this.end=end;this.audio=audio}DataRequest.prototype={requests:{},open:function(mode,name){this.name=name;this.requests[name]=this;Module["addRunDependency"]("fp "+this.name)},send:function(){},onload:function(){var byteArray=this.byteArray.subarray(this.start,this.end);this.finish(byteArray)},finish:function(byteArray){var that=this;Module["FS_createDataFile"](this.name,null,byteArray,true,true,true);Module["removeRunDependency"]("fp "+that.name);this.requests[this.name]=null}};var files=metadata["files"];for(var i=0;i<files.length;++i){new DataRequest(files[i]["start"],files[i]["end"],files[i]["audio"]).open("GET",files[i]["filename"])}function processPackageData(arrayBuffer){assert(arrayBuffer,"Loading data file failed.");assert(arrayBuffer instanceof ArrayBuffer,"bad input to processPackageData");var byteArray=new Uint8Array(arrayBuffer);DataRequest.prototype.byteArray=byteArray;var files=metadata["files"];for(var i=0;i<files.length;++i){DataRequest.prototype.requests[files[i].filename].onload()}Module["removeRunDependency"]("datafile_models/models_animation.data")}Module["addRunDependency"]("datafile_models/models_animation.data");if(!Module.preloadResults)Module.preloadResults={};Module.preloadResults[PACKAGE_NAME]={fromCache:false};if(fetched){processPackageData(fetched);fetched=null}else{fetchedCallback=processPackageData}}if(Module["calledRun"]){runWithFS()}else{if(!Module["preRun"])Module["preRun"]=[];Module["preRun"].push(runWithFS)}};loadPackage({"files":[{"filename":"/resources/guy/guy.iqm","start":0,"end":39408,"audio":0},{"filename":"/resources/guy/guytex.png","start":39408,"end":341343,"audio":0},{"filename":"/resources/guy/guyanim.iqm","start":341343,"end":359587,"audio":0}],"remote_package_size":359587,"package_uuid":"cfaac6d3-c1c7-4482-ba4a-0de0d82f2425"})})();var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram="./this.program";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window==="object";ENVIRONMENT_IS_WORKER=typeof importScripts==="function";ENVIRONMENT_IS_NODE=typeof process==="object"&&typeof process.versions==="object"&&typeof process.versions.node==="string";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require("path").dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require("fs");if(!nodePath)nodePath=require("path");filename=nodePath["normalize"](filename);return nodeFS["readFileSync"](filename,binary?null:"utf8")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);if(typeof module!=="undefined"){module["exports"]=Module}process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",abort);quit_=function(status){process["exit"](status)};Module["inspect"]=function(){return"[Emscripten Module object]"}}else if(ENVIRONMENT_IS_SHELL){if(typeof read!="undefined"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer==="function"){return new Uint8Array(readbuffer(f))}data=read(f,"binary");assert(typeof data==="object");return data};if(typeof scriptArgs!="undefined"){arguments_=scriptArgs}else if(typeof arguments!="undefined"){arguments_=arguments}if(typeof quit==="function"){quit_=function(status){quit(status)}}if(typeof print!=="undefined"){if(typeof console==="undefined")console={};console.log=print;console.warn=console.error=typeof printErr!=="undefined"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!=="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf("/")+1)}else{scriptDirectory=""}{read_=function(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=function(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var STACK_ALIGN=16;function alignMemory(size,factor){if(!factor)factor=STACK_ALIGN;return Math.ceil(size/factor)*factor}function warnOnce(text){if(!warnOnce.shown)warnOnce.shown={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;err(text)}}var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime=Module["noExitRuntime"]||true;if(typeof WebAssembly!=="object"){abort("no native wasm support detected")}function setValue(ptr,value,type,noSafe){type=type||"i8";if(type.charAt(type.length-1)==="*")type="i32";switch(type){case"i1":HEAP8[ptr>>0]=value;break;case"i8":HEAP8[ptr>>0]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":tempI64=[value>>>0,(tempDouble=value,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;default:abort("invalid type for setValue: "+type)}}var wasmMemory;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}var ALLOC_NORMAL=0;var ALLOC_STACK=1;function allocate(slab,allocator){var ret;if(allocator==ALLOC_STACK){ret=stackAlloc(slab.length)}else{ret=_malloc(slab.length)}if(slab.subarray||slab.slice){HEAPU8.set(slab,ret)}else{HEAPU8.set(new Uint8Array(slab),ret)}return ret}var UTF8Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heap,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heap[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str="";while(idx<endPtr){var u0=heap[idx++];if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heap[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heap[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u0=(u0&7)<<18|u1<<12|u2<<6|heap[idx++]&63}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||67108864;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;__ATINIT__.push({func:function(){___wasm_call_ctors()}});function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){FS.ignorePermissions=false;callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}what+="";err(what);ABORT=true;EXITSTATUS=1;what="abort("+what+"). Build with -s ASSERTIONS=1 for more info.";var e=new WebAssembly.RuntimeError(what);throw e}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix="file://";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile="models_animation.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}else{throw"both async and sync fetching of the wasm failed"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch==="function"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={"a":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;wasmMemory=Module["asm"]["ae"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module["asm"]["ee"];removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiatedSource(output){receiveInstance(output["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming==="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch==="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync();return{}}var tempDouble;var tempI64;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback(Module);continue}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){wasmTable.get(func)()}else{wasmTable.get(func)(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}function ___assert_fail(condition,filename,line,func){abort("Assertion failed: "+UTF8ToString(condition)+", at: "+[filename?UTF8ToString(filename):"unknown filename",line,func?UTF8ToString(func):"unknown function"])}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path==="/")return"/";path=PATH.normalize(path);path=path.replace(/\/$/,"");var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}};function getRandomDevice(){if(typeof crypto==="object"&&typeof crypto["getRandomValues"]==="function"){var randomBuffer=new Uint8Array(1);return function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]}}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");return function(){return crypto_module["randomBytes"](1)[0]}}catch(e){}}return function(){abort("randomDevice")}}var PATH_FS={resolve:function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!=="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=path.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(function(p){return!!p}),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:function(from,to){from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start<arr.length;start++){if(arr[start]!=="")break}var end=arr.length-1;for(;end>=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i<length;i++){if(fromParts[i]!==toParts[i]){samePartsLength=i;break}}var outputParts=[];for(var i=samePartsLength;i<fromParts.length;i++){outputParts.push("..")}outputParts=outputParts.concat(toParts.slice(samePartsLength));return outputParts.join("/")}};var TTY={ttys:[],init:function(){},shutdown:function(){},register:function(dev,ops){TTY.ttys[dev]={input:[],output:[],ops:ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open:function(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close:function(stream){stream.tty.ops.flush(stream.tty)},flush:function(stream){stream.tty.ops.flush(stream.tty)},read:function(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i<length;i++){var result;try{result=stream.tty.ops.get_char(stream.tty)}catch(e){throw new FS.ErrnoError(29)}if(result===undefined&&bytesRead===0){throw new FS.ErrnoError(6)}if(result===null||result===undefined)break;bytesRead++;buffer[offset+i]=result}if(bytesRead){stream.node.timestamp=Date.now()}return bytesRead},write:function(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.put_char){throw new FS.ErrnoError(60)}try{for(var i=0;i<length;i++){stream.tty.ops.put_char(stream.tty,buffer[offset+i])}}catch(e){throw new FS.ErrnoError(29)}if(length){stream.node.timestamp=Date.now()}return i}},default_tty_ops:{get_char:function(tty){if(!tty.input.length){var result=null;if(ENVIRONMENT_IS_NODE){var BUFSIZE=256;var buf=Buffer.alloc?Buffer.alloc(BUFSIZE):new Buffer(BUFSIZE);var bytesRead=0;try{bytesRead=nodeFS.readSync(process.stdin.fd,buf,0,BUFSIZE,null)}catch(e){if(e.toString().indexOf("EOF")!=-1)bytesRead=0;else throw e}if(bytesRead>0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function mmapAlloc(size){var alignedSize=alignMemory(size,16384);var ptr=_malloc(alignedSize);while(size<alignedSize)HEAP8[ptr+size++]=0;return ptr}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray:function(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage:function(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity<CAPACITY_DOUBLING_MAX?2:1.125)>>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage:function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr:function(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr:function(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp;old_node.parent=new_dir},unlink:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir:function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i<size;i++)buffer[offset+i]=contents[position+i]}return size},write:function(stream,buffer,offset,length,position,canOwn){if(!length)return 0;var node=stream.node;node.timestamp=Date.now();if(buffer.subarray&&(!node.contents||node.contents.subarray)){if(canOwn){node.contents=buffer.subarray(offset,offset+length);node.usedBytes=length;return length}else if(node.usedBytes===0&&position===0){node.contents=buffer.slice(offset,offset+length);node.usedBytes=length;return length}else if(position+length<=node.usedBytes){node.contents.set(buffer.subarray(offset,offset+length),position);return length}}MEMFS.expandFileStorage(node,position+length);if(node.contents.subarray&&buffer.subarray){node.contents.set(buffer.subarray(offset,offset+length),position)}else{for(var i=0;i<length;i++){node.contents[position+i]=buffer[offset+i]}}node.usedBytes=Math.max(node.usedBytes,position+length);return length},llseek:function(stream,offset,whence){var position=offset;if(whence===1){position+=stream.position}else if(whence===2){if(FS.isFile(stream.node.mode)){position+=stream.node.usedBytes}}if(position<0){throw new FS.ErrnoError(28)}return position},allocate:function(stream,offset,length){MEMFS.expandFileStorage(stream.node,offset+length);stream.node.usedBytes=Math.max(stream.node.usedBytes,offset+length)},mmap:function(stream,address,length,position,prot,flags){if(address!==0){throw new FS.ErrnoError(28)}if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}var ptr;var allocated;var contents=stream.node.contents;if(!(flags&2)&&contents.buffer===buffer){allocated=false;ptr=contents.byteOffset}else{if(position>0||position+length<contents.length){if(contents.subarray){contents=contents.subarray(position,position+length)}else{contents=Array.prototype.slice.call(contents,position,position+length)}}allocated=true;ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}HEAP8.set(contents,ptr)}return{ptr:ptr,allocated:allocated}},msync:function(stream,buffer,offset,length,mmapFlags){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}if(mmapFlags&2){return 0}var bytesWritten=MEMFS.stream_ops.write(stream,buffer,0,length,offset,false);return 0}}};var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,trackingDelegate:{},tracking:{openFlags:{READ:1,WRITE:2}},ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath:function(path,opts){path=PATH_FS.resolve(FS.cwd(),path);opts=opts||{};if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};for(var key in defaults){if(opts[key]===undefined){opts[key]=defaults[key]}}if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),false);var current=FS.root;var current_path="/";for(var i=0;i<parts.length;i++){var islast=i===parts.length-1;if(islast&&opts.parent){break}current=FS.lookupNode(current,parts[i]);current_path=PATH.join2(current_path,parts[i]);if(FS.isMountpoint(current)){if(!islast||islast&&opts.follow_mount){current=current.mounted.root}}if(!islast||opts.follow){var count=0;while(FS.isLink(current.mode)){var link=FS.readlink(current_path);current_path=PATH_FS.resolve(PATH.dirname(current_path),link);var lookup=FS.lookupPath(current_path,{recurse_count:opts.recurse_count});current=lookup.node;if(count++>40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath:function(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?mount+"/"+path:mount+path}path=path?node.name+"/"+path:node.name;node=node.parent}},hashName:function(parentid,name){var hash=0;for(var i=0;i<name.length;i++){hash=(hash<<5)-hash+name.charCodeAt(i)|0}return(parentid+hash>>>0)%FS.nameTable.length},hashAddNode:function(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode:function(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode:function(parent,name){var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode:function(parent,name,mode,rdev){var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:function(node){FS.hashRemoveNode(node)},isRoot:function(node){return node===node.parent},isMountpoint:function(node){return!!node.mounted},isFile:function(mode){return(mode&61440)===32768},isDir:function(mode){return(mode&61440)===16384},isLink:function(mode){return(mode&61440)===40960},isChrdev:function(mode){return(mode&61440)===8192},isBlkdev:function(mode){return(mode&61440)===24576},isFIFO:function(mode){return(mode&61440)===4096},isSocket:function(mode){return(mode&49152)===49152},flagModes:{"r":0,"r+":2,"w":577,"w+":578,"a":1089,"a+":1090},modeStringToFlags:function(str){var flags=FS.flagModes[str];if(typeof flags==="undefined"){throw new Error("Unknown file open mode: "+str)}return flags},flagsToPermissionString:function(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions:function(node,perms){if(FS.ignorePermissions){return 0}if(perms.indexOf("r")!==-1&&!(node.mode&292)){return 2}else if(perms.indexOf("w")!==-1&&!(node.mode&146)){return 2}else if(perms.indexOf("x")!==-1&&!(node.mode&73)){return 2}return 0},mayLookup:function(dir){var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate:function(dir,name){try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete:function(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen:function(node,flags){if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd:function(fd_start,fd_end){fd_start=fd_start||0;fd_end=fd_end||FS.MAX_OPEN_FDS;for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:function(fd){return FS.streams[fd]},createStream:function(stream,fd_start,fd_end){if(!FS.FSStream){FS.FSStream=function(){};FS.FSStream.prototype={object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}}}}var newStream=new FS.FSStream;for(var p in stream){newStream[p]=stream[p]}stream=newStream;var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:function(fd){FS.streams[fd]=null},chrdev_stream_ops:{open:function(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}},llseek:function(){throw new FS.ErrnoError(70)}},major:function(dev){return dev>>8},minor:function(dev){return dev&255},makedev:function(ma,mi){return ma<<8|mi},registerDevice:function(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:function(dev){return FS.devices[dev]},getMounts:function(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts},syncfs:function(populate,callback){if(typeof populate==="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err("warning: "+FS.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work")}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(function(mount){if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount:function(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount:function(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(function(hash){var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.indexOf(current.mount)!==-1){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup:function(parent,name){return parent.node_ops.lookup(parent,name)},mknod:function(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create:function(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:function(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree:function(path,mode){var dirs=path.split("/");var d="";for(var i=0;i<dirs.length;++i){if(!dirs[i])continue;d+="/"+dirs[i];try{FS.mkdir(d,mode)}catch(e){if(e.errno!=20)throw e}}},mkdev:function(path,mode,dev){if(typeof dev==="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:function(oldpath,newpath){if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:function(old_path,new_path){var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}try{if(FS.trackingDelegate["willMovePath"]){FS.trackingDelegate["willMovePath"](old_path,new_path)}}catch(e){err("FS.trackingDelegate['willMovePath']('"+old_path+"', '"+new_path+"') threw an exception: "+e.message)}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}try{if(FS.trackingDelegate["onMovePath"])FS.trackingDelegate["onMovePath"](old_path,new_path)}catch(e){err("FS.trackingDelegate['onMovePath']('"+old_path+"', '"+new_path+"') threw an exception: "+e.message)}},rmdir:function(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}try{if(FS.trackingDelegate["willDeletePath"]){FS.trackingDelegate["willDeletePath"](path)}}catch(e){err("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: "+e.message)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate["onDeletePath"])FS.trackingDelegate["onDeletePath"](path)}catch(e){err("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: "+e.message)}},readdir:function(path){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:function(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}try{if(FS.trackingDelegate["willDeletePath"]){FS.trackingDelegate["willDeletePath"](path)}}catch(e){err("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: "+e.message)}parent.node_ops.unlink(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate["onDeletePath"])FS.trackingDelegate["onDeletePath"](path)}catch(e){err("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: "+e.message)}},readlink:function(path){var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:function(path,dontFollow){var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:function(path){return FS.stat(path,true)},chmod:function(path,mode,dontFollow){var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:function(path,mode){FS.chmod(path,mode,true)},fchmod:function(fd,mode){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:function(path,uid,gid,dontFollow){var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:function(path,uid,gid){FS.chown(path,uid,gid,true)},fchown:function(fd,uid,gid){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:function(path,len){if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:function(fd,len){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:function(path,atime,mtime){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:function(path,flags,mode,fd_start,fd_end){if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags==="string"?FS.modeStringToFlags(flags):flags;mode=typeof mode==="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path==="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false},fd_start,fd_end);if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1;err("FS.trackingDelegate error on read file: "+path)}}try{if(FS.trackingDelegate["onOpenFile"]){var trackingFlags=0;if((flags&2097155)!==1){trackingFlags|=FS.tracking.openFlags.READ}if((flags&2097155)!==0){trackingFlags|=FS.tracking.openFlags.WRITE}FS.trackingDelegate["onOpenFile"](path,trackingFlags)}}catch(e){err("FS.trackingDelegate['onOpenFile']('"+path+"', flags) threw an exception: "+e.message)}return stream},close:function(stream){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:function(stream){return stream.fd===null},llseek:function(stream,offset,whence){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:function(stream,buffer,offset,length,position){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!=="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:function(stream,buffer,offset,length,position,canOwn){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!=="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;try{if(stream.path&&FS.trackingDelegate["onWriteToFile"])FS.trackingDelegate["onWriteToFile"](stream.path)}catch(e){err("FS.trackingDelegate['onWriteToFile']('"+stream.path+"') threw an exception: "+e.message)}return bytesWritten},allocate:function(stream,offset,length){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:function(stream,address,length,position,prot,flags){if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,address,length,position,prot,flags)},msync:function(stream,buffer,offset,length,mmapFlags){if(!stream||!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:function(stream){return 0},ioctl:function(stream,cmd,arg){if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:function(path,opts){opts=opts||{};opts.flags=opts.flags||0;opts.encoding=opts.encoding||"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error('Invalid encoding type "'+opts.encoding+'"')}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding==="binary"){ret=buf}FS.close(stream);return ret},writeFile:function(path,data,opts){opts=opts||{};opts.flags=opts.flags||577;var stream=FS.open(path,opts.flags,opts.mode);if(typeof data==="string"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,undefined,opts.canOwn)}else if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{throw new Error("Unsupported data type")}FS.close(stream)},cwd:function(){return FS.currentPath},chdir:function(path){var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories:function(){FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices:function(){FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:function(){return 0},write:function(stream,buffer,offset,length,pos){return length}});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var random_device=getRandomDevice();FS.createDevice("/dev","random",random_device);FS.createDevice("/dev","urandom",random_device);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories:function(){FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount:function(){var node=FS.createNode(proc_self,"fd",16384|511,73);node.node_ops={lookup:function(parent,name){var fd=+name;var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:function(){return stream.path}}};ret.parent=ret;return ret}};return node}},{},"/proc/self/fd")},createStandardStreams:function(){if(Module["stdin"]){FS.createDevice("/dev","stdin",Module["stdin"])}else{FS.symlink("/dev/tty","/dev/stdin")}if(Module["stdout"]){FS.createDevice("/dev","stdout",null,Module["stdout"])}else{FS.symlink("/dev/tty","/dev/stdout")}if(Module["stderr"]){FS.createDevice("/dev","stderr",null,Module["stderr"])}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},ensureErrnoError:function(){if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.node=node;this.setErrno=function(errno){this.errno=errno};this.setErrno(errno);this.message="FS error"};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[44].forEach(function(code){FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack="<generic error, no stack>"})},staticInit:function(){FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={"MEMFS":MEMFS}},init:function(input,output,error){FS.init.initialized=true;FS.ensureErrnoError();Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams()},quit:function(){FS.init.initialized=false;var fflush=Module["_fflush"];if(fflush)fflush(0);for(var i=0;i<FS.streams.length;i++){var stream=FS.streams[i];if(!stream){continue}FS.close(stream)}},getMode:function(canRead,canWrite){var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode},findObject:function(path,dontResolveLastLink){var ret=FS.analyzePath(path,dontResolveLastLink);if(ret.exists){return ret.object}else{return null}},analyzePath:function(path,dontResolveLastLink){try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath:function(parent,path,canRead,canWrite){parent=typeof parent==="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:function(parent,name,properties,canRead,canWrite){var path=PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:function(parent,name,data,canRead,canWrite,canOwn){var path=name?PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name):parent;var mode=FS.getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data==="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i<len;++i)arr[i]=data.charCodeAt(i);data=arr}FS.chmod(node,mode|146);var stream=FS.open(node,577);FS.write(stream,data,0,data.length,0,canOwn);FS.close(stream);FS.chmod(node,mode)}return node},createDevice:function(parent,name,input,output){var path=PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:function(stream){stream.seekable=false},close:function(stream){if(output&&output.buffer&&output.buffer.length){output(10)}},read:function(stream,buffer,offset,length,pos){var bytesRead=0;for(var i=0;i<length;i++){var result;try{result=input()}catch(e){throw new FS.ErrnoError(29)}if(result===undefined&&bytesRead===0){throw new FS.ErrnoError(6)}if(result===null||result===undefined)break;bytesRead++;buffer[offset+i]=result}if(bytesRead){stream.node.timestamp=Date.now()}return bytesRead},write:function(stream,buffer,offset,length,pos){for(var i=0;i<length;i++){try{output(buffer[offset+i])}catch(e){throw new FS.ErrnoError(29)}}if(length){stream.node.timestamp=Date.now()}return i}});return FS.mkdev(path,mode,dev)},forceLoadFile:function(obj){if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!=="undefined"){throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}},createLazyFile:function(parent,name,url,canRead,canWrite){function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=function(from,to){if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);if(typeof Uint8Array!="undefined")xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}else{return intArrayFromString(xhr.responseText||"",true)}};var lazyArray=this;lazyArray.setDataGetter(function(chunkNum){var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]==="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]==="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!=="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._length}},chunkSize:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(function(key){var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){FS.forceLoadFile(node);return fn.apply(null,arguments)}});stream_ops.read=function stream_ops_read(stream,buffer,offset,length,position){FS.forceLoadFile(node);var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i<size;i++){buffer[offset+i]=contents[position+i]}}else{for(var i=0;i<size;i++){buffer[offset+i]=contents.get(position+i)}}return size};node.stream_ops=stream_ops;return node},createPreloadedFile:function(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish){Browser.init();var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency("cp "+fullname);function processData(byteArray){function finish(byteArray){if(preFinish)preFinish();if(!dontCreateFile){FS.createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}if(onload)onload();removeRunDependency(dep)}var handled=false;Module["preloadPlugins"].forEach(function(plugin){if(handled)return;if(plugin["canHandle"](fullname)){plugin["handle"](byteArray,fullname,finish,function(){if(onerror)onerror();removeRunDependency(dep)});handled=true}});if(!handled)finish(byteArray)}addRunDependency(dep);if(typeof url=="string"){Browser.asyncLoad(url,function(byteArray){processData(byteArray)},onerror)}else{processData(url)}},indexedDB:function(){return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME:function(){return"EM_FS_"+window.location.pathname},DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:function(paths,onload,onerror){onload=onload||function(){};onerror=onerror||function(){};var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=function openRequest_onupgradeneeded(){out("creating db");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME)};openRequest.onsuccess=function openRequest_onsuccess(){var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],"readwrite");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(function(path){var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=function putRequest_onsuccess(){ok++;if(ok+fail==total)finish()};putRequest.onerror=function putRequest_onerror(){fail++;if(ok+fail==total)finish()}});transaction.onerror=onerror};openRequest.onerror=onerror},loadFilesFromDB:function(paths,onload,onerror){onload=onload||function(){};onerror=onerror||function(){};var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=function openRequest_onsuccess(){var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],"readonly")}catch(e){onerror(e);return}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(function(path){var getRequest=files.get(path);getRequest.onsuccess=function getRequest_onsuccess(){if(FS.analyzePath(path).exists){FS.unlink(path)}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish()};getRequest.onerror=function getRequest_onerror(){fail++;if(ok+fail==total)finish()}});transaction.onerror=onerror};openRequest.onerror=onerror}};var SYSCALLS={mappings:{},DEFAULT_POLLMASK:5,umask:511,calculateAt:function(dirfd,path,allowEmpty){if(path[0]==="/"){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=FS.getStream(dirfd);if(!dirstream)throw new FS.ErrnoError(8);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(func,path,buf){try{var stat=func(path)}catch(e){if(e&&e.node&&PATH.normalize(path)!==PATH.normalize(FS.getPath(e.node))){return-54}throw e}HEAP32[buf>>2]=stat.dev;HEAP32[buf+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;HEAP32[buf+56>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+76>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+80>>2]=tempI64[0],HEAP32[buf+84>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},doMkdir:function(path,mode){path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0},doMknod:function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}FS.mknod(path,mode,dev);return 0},doReadlink:function(path,buf,bufsize){if(bufsize<=0)return-28;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len},doAccess:function(path,amode){if(amode&~7){return-28}var node;var lookup=FS.lookupPath(path,{follow:true});node=lookup.node;if(!node){return-44}var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0},doDup:function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd},doReadv:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i<iovcnt;i++){var ptr=HEAP32[iov+i*8>>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr<len)break}return ret},doWritev:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i<iovcnt;i++){var ptr=HEAP32[iov+i*8>>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream},get64:function(low,high){return low}};function ___sys_chdir(path){try{path=SYSCALLS.getStr(path);FS.chdir(path);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function setErrNo(value){HEAP32[___errno_location()>>2]=value;return value}function ___sys_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-28}var newStream;newStream=FS.open(stream.path,stream.flags,0,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0}case 12:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 13:case 14:return 0;case 16:case 8:return-28;case 9:setErrNo(28);return-1;default:{return-28}}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_getcwd(buf,size){try{if(size===0)return-28;var cwd=FS.cwd();var cwdLengthInBytes=lengthBytesUTF8(cwd);if(size<cwdLengthInBytes+1)return-68;stringToUTF8(cwd,buf,size);return buf}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_ioctl(fd,op,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(op){case 21509:case 21505:{if(!stream.tty)return-59;return 0}case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-59;return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{if(!stream.tty)return-59;return 0}default:abort("bad ioctl syscall "+op)}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_open(path,flags,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(path);var mode=varargs?SYSCALLS.get():0;var stream=FS.open(pathname,flags,mode);return stream.fd}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}var JSEvents={inEventHandler:0,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return false;for(var i in arrA){if(arrA[i]!=arrB[i])return false}return true}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList)){return}}JSEvents.deferredCalls.push({targetFunction:targetFunction,precedence:precedence,argsList:argsList});JSEvents.deferredCalls.sort(function(x,y){return x.precedence<y.precedence})},removeDeferredCalls:function(targetFunction){for(var i=0;i<JSEvents.deferredCalls.length;++i){if(JSEvents.deferredCalls[i].targetFunction==targetFunction){JSEvents.deferredCalls.splice(i,1);--i}}},canPerformEventHandlerRequests:function(){return JSEvents.inEventHandler&&JSEvents.currentEventHandler.allowsDeferredCalls},runDeferredCalls:function(){if(!JSEvents.canPerformEventHandlerRequests()){return}for(var i=0;i<JSEvents.deferredCalls.length;++i){var call=JSEvents.deferredCalls[i];JSEvents.deferredCalls.splice(i,1);--i;call.targetFunction.apply(null,call.argsList)}},eventHandlers:[],removeAllHandlersOnTarget:function(target,eventTypeString){for(var i=0;i<JSEvents.eventHandlers.length;++i){if(JSEvents.eventHandlers[i].target==target&&(!eventTypeString||eventTypeString==JSEvents.eventHandlers[i].eventTypeString)){JSEvents._removeHandler(i--)}}},_removeHandler:function(i){var h=JSEvents.eventHandlers[i];h.target.removeEventListener(h.eventTypeString,h.eventListenerFunc,h.useCapture);JSEvents.eventHandlers.splice(i,1)},registerOrRemoveHandler:function(eventHandler){var jsEventHandler=function jsEventHandler(event){++JSEvents.inEventHandler;JSEvents.currentEventHandler=eventHandler;JSEvents.runDeferredCalls();eventHandler.handlerFunc(event);JSEvents.runDeferredCalls();--JSEvents.inEventHandler};if(eventHandler.callbackfunc){eventHandler.eventListenerFunc=jsEventHandler;eventHandler.target.addEventListener(eventHandler.eventTypeString,jsEventHandler,eventHandler.useCapture);JSEvents.eventHandlers.push(eventHandler);JSEvents.registerRemoveEventListeners()}else{for(var i=0;i<JSEvents.eventHandlers.length;++i){if(JSEvents.eventHandlers[i].target==eventHandler.target&&JSEvents.eventHandlers[i].eventTypeString==eventHandler.eventTypeString){JSEvents._removeHandler(i--)}}}},getNodeNameForTarget:function(target){if(!target)return"";if(target==window)return"#window";if(target==screen)return"#screen";return target&&target.nodeName?target.nodeName:""},fullscreenEnabled:function(){return document.fullscreenEnabled||document.webkitFullscreenEnabled}};function requestPointerLock(target){if(target.requestPointerLock){target.requestPointerLock()}else if(target.msRequestPointerLock){target.msRequestPointerLock()}else{if(document.body.requestPointerLock||document.body.msRequestPointerLock){return-3}else{return-1}}return 0}function _emscripten_exit_pointerlock(){JSEvents.removeDeferredCalls(requestPointerLock);if(document.exitPointerLock){document.exitPointerLock()}else if(document.msExitPointerLock){document.msExitPointerLock()}else{return-1}return 0}function maybeCStringToJsString(cString){return cString>2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!=="undefined"?document:0,typeof window!=="undefined"?window:0];function findEventTarget(target){target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!=="undefined"?document.querySelector(target):undefined);return domElement}function getBoundingClientRect(e){return specialHTMLTargets.indexOf(e)<0?e.getBoundingClientRect():{"left":0,"top":0}}function _emscripten_get_element_css_size(target,width,height){target=findEventTarget(target);if(!target)return-4;var rect=getBoundingClientRect(target);HEAPF64[width>>3]=rect.width;HEAPF64[height>>3]=rect.height;return 0}function fillGamepadEventData(eventStruct,e){HEAPF64[eventStruct>>3]=e.timestamp;for(var i=0;i<e.axes.length;++i){HEAPF64[eventStruct+i*8+16>>3]=e.axes[i]}for(var i=0;i<e.buttons.length;++i){if(typeof e.buttons[i]==="object"){HEAPF64[eventStruct+i*8+528>>3]=e.buttons[i].value}else{HEAPF64[eventStruct+i*8+528>>3]=e.buttons[i]}}for(var i=0;i<e.buttons.length;++i){if(typeof e.buttons[i]==="object"){HEAP32[eventStruct+i*4+1040>>2]=e.buttons[i].pressed}else{HEAP32[eventStruct+i*4+1040>>2]=e.buttons[i]==1}}HEAP32[eventStruct+1296>>2]=e.connected;HEAP32[eventStruct+1300>>2]=e.index;HEAP32[eventStruct+8>>2]=e.axes.length;HEAP32[eventStruct+12>>2]=e.buttons.length;stringToUTF8(e.id,eventStruct+1304,64);stringToUTF8(e.mapping,eventStruct+1368,64)}function _emscripten_get_gamepad_status(index,gamepadState){if(index<0||index>=JSEvents.lastGamepadState.length)return-5;if(!JSEvents.lastGamepadState[index])return-7;fillGamepadEventData(gamepadState,JSEvents.lastGamepadState[index]);return 0}function _emscripten_get_num_gamepads(){return JSEvents.lastGamepadState.length}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension("ANGLE_instanced_arrays");if(ext){ctx["vertexAttribDivisor"]=function(index,divisor){ext["vertexAttribDivisorANGLE"](index,divisor)};ctx["drawArraysInstanced"]=function(mode,first,count,primcount){ext["drawArraysInstancedANGLE"](mode,first,count,primcount)};ctx["drawElementsInstanced"]=function(mode,count,type,indices,primcount){ext["drawElementsInstancedANGLE"](mode,count,type,indices,primcount)};return 1}}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension("OES_vertex_array_object");if(ext){ctx["createVertexArray"]=function(){return ext["createVertexArrayOES"]()};ctx["deleteVertexArray"]=function(vao){ext["deleteVertexArrayOES"](vao)};ctx["bindVertexArray"]=function(vao){ext["bindVertexArrayOES"](vao)};ctx["isVertexArray"]=function(vao){return ext["isVertexArrayOES"](vao)};return 1}}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension("WEBGL_draw_buffers");if(ext){ctx["drawBuffers"]=function(n,bufs){ext["drawBuffersWEBGL"](n,bufs)};return 1}}function __webgl_enable_WEBGL_multi_draw(ctx){return!!(ctx.multiDrawWebgl=ctx.getExtension("WEBGL_multi_draw"))}var GL={counter:1,buffers:[],programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:[],offscreenCanvases:{},timerQueriesEXT:[],programInfos:{},stringCache:{},unpackAlignment:4,recordError:function recordError(errorCode){if(!GL.lastError){GL.lastError=errorCode}},getNewId:function(table){var ret=GL.counter++;for(var i=table.length;i<ret;i++){table[i]=null}return ret},getSource:function(shader,count,string,length){var source="";for(var i=0;i<count;++i){var len=length?HEAP32[length+i*4>>2]:-1;source+=UTF8ToString(HEAP32[string+i*4>>2],len<0?undefined:len)}return source},createContext:function(canvas,webGLContextAttributes){var ctx=canvas.getContext("webgl",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:function(ctx,webGLContextAttributes){var handle=GL.getNewId(GL.contexts);var context={handle:handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};if(ctx.canvas)ctx.canvas.GLctxObject=context;GL.contexts[handle]=context;if(typeof webGLContextAttributes.enableExtensionsByDefault==="undefined"||webGLContextAttributes.enableExtensionsByDefault){GL.initExtensions(context)}return handle},makeContextCurrent:function(contextHandle){GL.currentContext=GL.contexts[contextHandle];Module.ctx=GLctx=GL.currentContext&&GL.currentContext.GLctx;return!(contextHandle&&!GLctx)},getContext:function(contextHandle){return GL.contexts[contextHandle]},deleteContext:function(contextHandle){if(GL.currentContext===GL.contexts[contextHandle])GL.currentContext=null;if(typeof JSEvents==="object")JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas);if(GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas)GL.contexts[contextHandle].GLctx.canvas.GLctxObject=undefined;GL.contexts[contextHandle]=null},initExtensions:function(context){if(!context)context=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;__webgl_enable_ANGLE_instanced_arrays(GLctx);__webgl_enable_OES_vertex_array_object(GLctx);__webgl_enable_WEBGL_draw_buffers(GLctx);GLctx.disjointTimerQueryExt=GLctx.getExtension("EXT_disjoint_timer_query");__webgl_enable_WEBGL_multi_draw(GLctx);var exts=GLctx.getSupportedExtensions()||[];exts.forEach(function(ext){if(ext.indexOf("lose_context")<0&&ext.indexOf("debug")<0){GLctx.getExtension(ext)}})},populateUniformTable:function(program){var p=GL.programs[program];var ptable=GL.programInfos[program]={uniforms:{},maxUniformLength:0,maxAttributeLength:-1,maxUniformBlockNameLength:-1};var utable=ptable.uniforms;var numUniforms=GLctx.getProgramParameter(p,35718);for(var i=0;i<numUniforms;++i){var u=GLctx.getActiveUniform(p,i);var name=u.name;ptable.maxUniformLength=Math.max(ptable.maxUniformLength,name.length+1);if(name.slice(-1)=="]"){name=name.slice(0,name.lastIndexOf("["))}var loc=GLctx.getUniformLocation(p,name);if(loc){var id=GL.getNewId(GL.uniforms);utable[name]=[u.size,id];GL.uniforms[id]=loc;for(var j=1;j<u.size;++j){var n=name+"["+j+"]";loc=GLctx.getUniformLocation(p,n);id=GL.getNewId(GL.uniforms);GL.uniforms[id]=loc}}}}};function _emscripten_glActiveTexture(x0){GLctx["activeTexture"](x0)}function _emscripten_glAttachShader(program,shader){GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _emscripten_glBeginQueryEXT(target,id){GLctx.disjointTimerQueryExt["beginQueryEXT"](target,GL.timerQueriesEXT[id])}function _emscripten_glBindAttribLocation(program,index,name){GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))}function _emscripten_glBindBuffer(target,buffer){GLctx.bindBuffer(target,GL.buffers[buffer])}function _emscripten_glBindFramebuffer(target,framebuffer){GLctx.bindFramebuffer(target,GL.framebuffers[framebuffer])}function _emscripten_glBindRenderbuffer(target,renderbuffer){GLctx.bindRenderbuffer(target,GL.renderbuffers[renderbuffer])}function _emscripten_glBindTexture(target,texture){GLctx.bindTexture(target,GL.textures[texture])}function _emscripten_glBindVertexArrayOES(vao){GLctx["bindVertexArray"](GL.vaos[vao])}function _emscripten_glBlendColor(x0,x1,x2,x3){GLctx["blendColor"](x0,x1,x2,x3)}function _emscripten_glBlendEquation(x0){GLctx["blendEquation"](x0)}function _emscripten_glBlendEquationSeparate(x0,x1){GLctx["blendEquationSeparate"](x0,x1)}function _emscripten_glBlendFunc(x0,x1){GLctx["blendFunc"](x0,x1)}function _emscripten_glBlendFuncSeparate(x0,x1,x2,x3){GLctx["blendFuncSeparate"](x0,x1,x2,x3)}function _emscripten_glBufferData(target,size,data,usage){GLctx.bufferData(target,data?HEAPU8.subarray(data,data+size):size,usage)}function _emscripten_glBufferSubData(target,offset,size,data){GLctx.bufferSubData(target,offset,HEAPU8.subarray(data,data+size))}function _emscripten_glCheckFramebufferStatus(x0){return GLctx["checkFramebufferStatus"](x0)}function _emscripten_glClear(x0){GLctx["clear"](x0)}function _emscripten_glClearColor(x0,x1,x2,x3){GLctx["clearColor"](x0,x1,x2,x3)}function _emscripten_glClearDepthf(x0){GLctx["clearDepth"](x0)}function _emscripten_glClearStencil(x0){GLctx["clearStencil"](x0)}function _emscripten_glColorMask(red,green,blue,alpha){GLctx.colorMask(!!red,!!green,!!blue,!!alpha)}function _emscripten_glCompileShader(shader){GLctx.compileShader(GL.shaders[shader])}function _emscripten_glCompressedTexImage2D(target,level,internalFormat,width,height,border,imageSize,data){GLctx["compressedTexImage2D"](target,level,internalFormat,width,height,border,data?HEAPU8.subarray(data,data+imageSize):null)}function _emscripten_glCompressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,imageSize,data){GLctx["compressedTexSubImage2D"](target,level,xoffset,yoffset,width,height,format,data?HEAPU8.subarray(data,data+imageSize):null)}function _emscripten_glCopyTexImage2D(x0,x1,x2,x3,x4,x5,x6,x7){GLctx["copyTexImage2D"](x0,x1,x2,x3,x4,x5,x6,x7)}function _emscripten_glCopyTexSubImage2D(x0,x1,x2,x3,x4,x5,x6,x7){GLctx["copyTexSubImage2D"](x0,x1,x2,x3,x4,x5,x6,x7)}function _emscripten_glCreateProgram(){var id=GL.getNewId(GL.programs);var program=GLctx.createProgram();program.name=id;GL.programs[id]=program;return id}function _emscripten_glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}function _emscripten_glCullFace(x0){GLctx["cullFace"](x0)}function _emscripten_glDeleteBuffers(n,buffers){for(var i=0;i<n;i++){var id=HEAP32[buffers+i*4>>2];var buffer=GL.buffers[id];if(!buffer)continue;GLctx.deleteBuffer(buffer);buffer.name=0;GL.buffers[id]=null}}function _emscripten_glDeleteFramebuffers(n,framebuffers){for(var i=0;i<n;++i){var id=HEAP32[framebuffers+i*4>>2];var framebuffer=GL.framebuffers[id];if(!framebuffer)continue;GLctx.deleteFramebuffer(framebuffer);framebuffer.name=0;GL.framebuffers[id]=null}}function _emscripten_glDeleteProgram(id){if(!id)return;var program=GL.programs[id];if(!program){GL.recordError(1281);return}GLctx.deleteProgram(program);program.name=0;GL.programs[id]=null;GL.programInfos[id]=null}function _emscripten_glDeleteQueriesEXT(n,ids){for(var i=0;i<n;i++){var id=HEAP32[ids+i*4>>2];var query=GL.timerQueriesEXT[id];if(!query)continue;GLctx.disjointTimerQueryExt["deleteQueryEXT"](query);GL.timerQueriesEXT[id]=null}}function _emscripten_glDeleteRenderbuffers(n,renderbuffers){for(var i=0;i<n;i++){var id=HEAP32[renderbuffers+i*4>>2];var renderbuffer=GL.renderbuffers[id];if(!renderbuffer)continue;GLctx.deleteRenderbuffer(renderbuffer);renderbuffer.name=0;GL.renderbuffers[id]=null}}function _emscripten_glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}function _emscripten_glDeleteTextures(n,textures){for(var i=0;i<n;i++){var id=HEAP32[textures+i*4>>2];var texture=GL.textures[id];if(!texture)continue;GLctx.deleteTexture(texture);texture.name=0;GL.textures[id]=null}}function _emscripten_glDeleteVertexArraysOES(n,vaos){for(var i=0;i<n;i++){var id=HEAP32[vaos+i*4>>2];GLctx["deleteVertexArray"](GL.vaos[id]);GL.vaos[id]=null}}function _emscripten_glDepthFunc(x0){GLctx["depthFunc"](x0)}function _emscripten_glDepthMask(flag){GLctx.depthMask(!!flag)}function _emscripten_glDepthRangef(x0,x1){GLctx["depthRange"](x0,x1)}function _emscripten_glDetachShader(program,shader){GLctx.detachShader(GL.programs[program],GL.shaders[shader])}function _emscripten_glDisable(x0){GLctx["disable"](x0)}function _emscripten_glDisableVertexAttribArray(index){GLctx.disableVertexAttribArray(index)}function _emscripten_glDrawArrays(mode,first,count){GLctx.drawArrays(mode,first,count)}function _emscripten_glDrawArraysInstancedANGLE(mode,first,count,primcount){GLctx["drawArraysInstanced"](mode,first,count,primcount)}var tempFixedLengthArray=[];function _emscripten_glDrawBuffersWEBGL(n,bufs){var bufArray=tempFixedLengthArray[n];for(var i=0;i<n;i++){bufArray[i]=HEAP32[bufs+i*4>>2]}GLctx["drawBuffers"](bufArray)}function _emscripten_glDrawElements(mode,count,type,indices){GLctx.drawElements(mode,count,type,indices)}function _emscripten_glDrawElementsInstancedANGLE(mode,count,type,indices,primcount){GLctx["drawElementsInstanced"](mode,count,type,indices,primcount)}function _emscripten_glEnable(x0){GLctx["enable"](x0)}function _emscripten_glEnableVertexAttribArray(index){GLctx.enableVertexAttribArray(index)}function _emscripten_glEndQueryEXT(target){GLctx.disjointTimerQueryExt["endQueryEXT"](target)}function _emscripten_glFinish(){GLctx["finish"]()}function _emscripten_glFlush(){GLctx["flush"]()}function _emscripten_glFramebufferRenderbuffer(target,attachment,renderbuffertarget,renderbuffer){GLctx.framebufferRenderbuffer(target,attachment,renderbuffertarget,GL.renderbuffers[renderbuffer])}function _emscripten_glFramebufferTexture2D(target,attachment,textarget,texture,level){GLctx.framebufferTexture2D(target,attachment,textarget,GL.textures[texture],level)}function _emscripten_glFrontFace(x0){GLctx["frontFace"](x0)}function __glGenObject(n,buffers,createFunction,objectTable){for(var i=0;i<n;i++){var buffer=GLctx[createFunction]();var id=buffer&&GL.getNewId(objectTable);if(buffer){buffer.name=id;objectTable[id]=buffer}else{GL.recordError(1282)}HEAP32[buffers+i*4>>2]=id}}function _emscripten_glGenBuffers(n,buffers){__glGenObject(n,buffers,"createBuffer",GL.buffers)}function _emscripten_glGenFramebuffers(n,ids){__glGenObject(n,ids,"createFramebuffer",GL.framebuffers)}function _emscripten_glGenQueriesEXT(n,ids){for(var i=0;i<n;i++){var query=GLctx.disjointTimerQueryExt["createQueryEXT"]();if(!query){GL.recordError(1282);while(i<n)HEAP32[ids+i++*4>>2]=0;return}var id=GL.getNewId(GL.timerQueriesEXT);query.name=id;GL.timerQueriesEXT[id]=query;HEAP32[ids+i*4>>2]=id}}function _emscripten_glGenRenderbuffers(n,renderbuffers){__glGenObject(n,renderbuffers,"createRenderbuffer",GL.renderbuffers)}function _emscripten_glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures)}function _emscripten_glGenVertexArraysOES(n,arrays){__glGenObject(n,arrays,"createVertexArray",GL.vaos)}function _emscripten_glGenerateMipmap(x0){GLctx["generateMipmap"](x0)}function __glGetActiveAttribOrUniform(funcName,program,index,bufSize,length,size,type,name){program=GL.programs[program];var info=GLctx[funcName](program,index);if(info){var numBytesWrittenExclNull=name&&stringToUTF8(info.name,name,bufSize);if(length)HEAP32[length>>2]=numBytesWrittenExclNull;if(size)HEAP32[size>>2]=info.size;if(type)HEAP32[type>>2]=info.type}}function _emscripten_glGetActiveAttrib(program,index,bufSize,length,size,type,name){__glGetActiveAttribOrUniform("getActiveAttrib",program,index,bufSize,length,size,type,name)}function _emscripten_glGetActiveUniform(program,index,bufSize,length,size,type,name){__glGetActiveAttribOrUniform("getActiveUniform",program,index,bufSize,length,size,type,name)}function _emscripten_glGetAttachedShaders(program,maxCount,count,shaders){var result=GLctx.getAttachedShaders(GL.programs[program]);var len=result.length;if(len>maxCount){len=maxCount}HEAP32[count>>2]=len;for(var i=0;i<len;++i){var id=GL.shaders.indexOf(result[i]);HEAP32[shaders+i*4>>2]=id}}function _emscripten_glGetAttribLocation(program,name){return GLctx.getAttribLocation(GL.programs[program],UTF8ToString(name))}function writeI53ToI64(ptr,num){HEAPU32[ptr>>2]=num;HEAPU32[ptr+4>>2]=(num-HEAPU32[ptr>>2])/4294967296}function emscriptenWebGLGet(name_,p,type){if(!p){GL.recordError(1281);return}var ret=undefined;switch(name_){case 36346:ret=1;break;case 36344:if(type!=0&&type!=1){GL.recordError(1280)}return;case 36345:ret=0;break;case 34466:var formats=GLctx.getParameter(34467);ret=formats?formats.length:0;break}if(ret===undefined){var result=GLctx.getParameter(name_);switch(typeof result){case"number":ret=result;break;case"boolean":ret=result?1:0;break;case"string":GL.recordError(1280);return;case"object":if(result===null){switch(name_){case 34964:case 35725:case 34965:case 36006:case 36007:case 32873:case 34229:case 34068:{ret=0;break}default:{GL.recordError(1280);return}}}else if(result instanceof Float32Array||result instanceof Uint32Array||result instanceof Int32Array||result instanceof Array){for(var i=0;i<result.length;++i){switch(type){case 0:HEAP32[p+i*4>>2]=result[i];break;case 2:HEAPF32[p+i*4>>2]=result[i];break;case 4:HEAP8[p+i>>0]=result[i]?1:0;break}}return}else{try{ret=result.name|0}catch(e){GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v: Unknown object returned from WebGL getParameter("+name_+")! (error: "+e+")");return}}break;default:GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v: Native code calling glGet"+type+"v("+name_+") and it returns "+result+" of type "+typeof result+"!");return}}switch(type){case 1:writeI53ToI64(p,ret);break;case 0:HEAP32[p>>2]=ret;break;case 2:HEAPF32[p>>2]=ret;break;case 4:HEAP8[p>>0]=ret?1:0;break}}function _emscripten_glGetBooleanv(name_,p){emscriptenWebGLGet(name_,p,4)}function _emscripten_glGetBufferParameteriv(target,value,data){if(!data){GL.recordError(1281);return}HEAP32[data>>2]=GLctx.getBufferParameter(target,value)}function _emscripten_glGetError(){var error=GLctx.getError()||GL.lastError;GL.lastError=0;return error}function _emscripten_glGetFloatv(name_,p){emscriptenWebGLGet(name_,p,2)}function _emscripten_glGetFramebufferAttachmentParameteriv(target,attachment,pname,params){var result=GLctx.getFramebufferAttachmentParameter(target,attachment,pname);if(result instanceof WebGLRenderbuffer||result instanceof WebGLTexture){result=result.name|0}HEAP32[params>>2]=result}function _emscripten_glGetIntegerv(name_,p){emscriptenWebGLGet(name_,p,0)}function _emscripten_glGetProgramInfoLog(program,maxLength,length,infoLog){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _emscripten_glGetProgramiv(program,pname,p){if(!p){GL.recordError(1281);return}if(program>=GL.counter){GL.recordError(1281);return}var ptable=GL.programInfos[program];if(!ptable){GL.recordError(1282);return}if(pname==35716){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";HEAP32[p>>2]=log.length+1}else if(pname==35719){HEAP32[p>>2]=ptable.maxUniformLength}else if(pname==35722){if(ptable.maxAttributeLength==-1){program=GL.programs[program];var numAttribs=GLctx.getProgramParameter(program,35721);ptable.maxAttributeLength=0;for(var i=0;i<numAttribs;++i){var activeAttrib=GLctx.getActiveAttrib(program,i);ptable.maxAttributeLength=Math.max(ptable.maxAttributeLength,activeAttrib.name.length+1)}}HEAP32[p>>2]=ptable.maxAttributeLength}else if(pname==35381){if(ptable.maxUniformBlockNameLength==-1){program=GL.programs[program];var numBlocks=GLctx.getProgramParameter(program,35382);ptable.maxUniformBlockNameLength=0;for(var i=0;i<numBlocks;++i){var activeBlockName=GLctx.getActiveUniformBlockName(program,i);ptable.maxUniformBlockNameLength=Math.max(ptable.maxUniformBlockNameLength,activeBlockName.length+1)}}HEAP32[p>>2]=ptable.maxUniformBlockNameLength}else{HEAP32[p>>2]=GLctx.getProgramParameter(GL.programs[program],pname)}}function _emscripten_glGetQueryObjecti64vEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.timerQueriesEXT[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}writeI53ToI64(params,ret)}function _emscripten_glGetQueryObjectivEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.timerQueriesEXT[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}HEAP32[params>>2]=ret}function _emscripten_glGetQueryObjectui64vEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.timerQueriesEXT[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}writeI53ToI64(params,ret)}function _emscripten_glGetQueryObjectuivEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.timerQueriesEXT[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}HEAP32[params>>2]=ret}function _emscripten_glGetQueryivEXT(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.disjointTimerQueryExt["getQueryEXT"](target,pname)}function _emscripten_glGetRenderbufferParameteriv(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getRenderbufferParameter(target,pname)}function _emscripten_glGetShaderInfoLog(shader,maxLength,length,infoLog){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _emscripten_glGetShaderPrecisionFormat(shaderType,precisionType,range,precision){var result=GLctx.getShaderPrecisionFormat(shaderType,precisionType);HEAP32[range>>2]=result.rangeMin;HEAP32[range+4>>2]=result.rangeMax;HEAP32[precision>>2]=result.precision}function _emscripten_glGetShaderSource(shader,bufSize,length,source){var result=GLctx.getShaderSource(GL.shaders[shader]);if(!result)return;var numBytesWrittenExclNull=bufSize>0&&source?stringToUTF8(result,source,bufSize):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _emscripten_glGetShaderiv(shader,pname,p){if(!p){GL.recordError(1281);return}if(pname==35716){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var logLength=log?log.length+1:0;HEAP32[p>>2]=logLength}else if(pname==35720){var source=GLctx.getShaderSource(GL.shaders[shader]);var sourceLength=source?source.length+1:0;HEAP32[p>>2]=sourceLength}else{HEAP32[p>>2]=GLctx.getShaderParameter(GL.shaders[shader],pname)}}function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _emscripten_glGetString(name_){if(GL.stringCache[name_])return GL.stringCache[name_];var ret;switch(name_){case 7939:var exts=GLctx.getSupportedExtensions()||[];exts=exts.concat(exts.map(function(e){return"GL_"+e}));ret=stringToNewUTF8(exts.join(" "));break;case 7936:case 7937:case 37445:case 37446:var s=GLctx.getParameter(name_);if(!s){GL.recordError(1280)}ret=stringToNewUTF8(s);break;case 7938:var glVersion=GLctx.getParameter(7938);{glVersion="OpenGL ES 2.0 ("+glVersion+")"}ret=stringToNewUTF8(glVersion);break;case 35724:var glslVersion=GLctx.getParameter(35724);var ver_re=/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/;var ver_num=glslVersion.match(ver_re);if(ver_num!==null){if(ver_num[1].length==3)ver_num[1]=ver_num[1]+"0";glslVersion="OpenGL ES GLSL ES "+ver_num[1]+" ("+glslVersion+")"}ret=stringToNewUTF8(glslVersion);break;default:GL.recordError(1280);return 0}GL.stringCache[name_]=ret;return ret}function _emscripten_glGetTexParameterfv(target,pname,params){if(!params){GL.recordError(1281);return}HEAPF32[params>>2]=GLctx.getTexParameter(target,pname)}function _emscripten_glGetTexParameteriv(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getTexParameter(target,pname)}function jstoi_q(str){return parseInt(str)}function _emscripten_glGetUniformLocation(program,name){name=UTF8ToString(name);var arrayIndex=0;if(name[name.length-1]=="]"){var leftBrace=name.lastIndexOf("[");arrayIndex=name[leftBrace+1]!="]"?jstoi_q(name.slice(leftBrace+1)):0;name=name.slice(0,leftBrace)}var uniformInfo=GL.programInfos[program]&&GL.programInfos[program].uniforms[name];if(uniformInfo&&arrayIndex>=0&&arrayIndex<uniformInfo[0]){return uniformInfo[1]+arrayIndex}else{return-1}}function emscriptenWebGLGetUniform(program,location,params,type){if(!params){GL.recordError(1281);return}var data=GLctx.getUniform(GL.programs[program],GL.uniforms[location]);if(typeof data=="number"||typeof data=="boolean"){switch(type){case 0:HEAP32[params>>2]=data;break;case 2:HEAPF32[params>>2]=data;break}}else{for(var i=0;i<data.length;i++){switch(type){case 0:HEAP32[params+i*4>>2]=data[i];break;case 2:HEAPF32[params+i*4>>2]=data[i];break}}}}function _emscripten_glGetUniformfv(program,location,params){emscriptenWebGLGetUniform(program,location,params,2)}function _emscripten_glGetUniformiv(program,location,params){emscriptenWebGLGetUniform(program,location,params,0)}function _emscripten_glGetVertexAttribPointerv(index,pname,pointer){if(!pointer){GL.recordError(1281);return}HEAP32[pointer>>2]=GLctx.getVertexAttribOffset(index,pname)}function emscriptenWebGLGetVertexAttrib(index,pname,params,type){if(!params){GL.recordError(1281);return}var data=GLctx.getVertexAttrib(index,pname);if(pname==34975){HEAP32[params>>2]=data&&data["name"]}else if(typeof data=="number"||typeof data=="boolean"){switch(type){case 0:HEAP32[params>>2]=data;break;case 2:HEAPF32[params>>2]=data;break;case 5:HEAP32[params>>2]=Math.fround(data);break}}else{for(var i=0;i<data.length;i++){switch(type){case 0:HEAP32[params+i*4>>2]=data[i];break;case 2:HEAPF32[params+i*4>>2]=data[i];break;case 5:HEAP32[params+i*4>>2]=Math.fround(data[i]);break}}}}function _emscripten_glGetVertexAttribfv(index,pname,params){emscriptenWebGLGetVertexAttrib(index,pname,params,2)}function _emscripten_glGetVertexAttribiv(index,pname,params){emscriptenWebGLGetVertexAttrib(index,pname,params,5)}function _emscripten_glHint(x0,x1){GLctx["hint"](x0,x1)}function _emscripten_glIsBuffer(buffer){var b=GL.buffers[buffer];if(!b)return 0;return GLctx.isBuffer(b)}function _emscripten_glIsEnabled(x0){return GLctx["isEnabled"](x0)}function _emscripten_glIsFramebuffer(framebuffer){var fb=GL.framebuffers[framebuffer];if(!fb)return 0;return GLctx.isFramebuffer(fb)}function _emscripten_glIsProgram(program){program=GL.programs[program];if(!program)return 0;return GLctx.isProgram(program)}function _emscripten_glIsQueryEXT(id){var query=GL.timerQueriesEXT[id];if(!query)return 0;return GLctx.disjointTimerQueryExt["isQueryEXT"](query)}function _emscripten_glIsRenderbuffer(renderbuffer){var rb=GL.renderbuffers[renderbuffer];if(!rb)return 0;return GLctx.isRenderbuffer(rb)}function _emscripten_glIsShader(shader){var s=GL.shaders[shader];if(!s)return 0;return GLctx.isShader(s)}function _emscripten_glIsTexture(id){var texture=GL.textures[id];if(!texture)return 0;return GLctx.isTexture(texture)}function _emscripten_glIsVertexArrayOES(array){var vao=GL.vaos[array];if(!vao)return 0;return GLctx["isVertexArray"](vao)}function _emscripten_glLineWidth(x0){GLctx["lineWidth"](x0)}function _emscripten_glLinkProgram(program){GLctx.linkProgram(GL.programs[program]);GL.populateUniformTable(program)}function _emscripten_glPixelStorei(pname,param){if(pname==3317){GL.unpackAlignment=param}GLctx.pixelStorei(pname,param)}function _emscripten_glPolygonOffset(x0,x1){GLctx["polygonOffset"](x0,x1)}function _emscripten_glQueryCounterEXT(id,target){GLctx.disjointTimerQueryExt["queryCounterEXT"](GL.timerQueriesEXT[id],target)}function computeUnpackAlignedImageSize(width,height,sizePerPixel,alignment){function roundedToNextMultipleOf(x,y){return x+y-1&-y}var plainRowSize=width*sizePerPixel;var alignedRowSize=roundedToNextMultipleOf(plainRowSize,alignment);return height*alignedRowSize}function __colorChannelsInGlTextureFormat(format){var colorChannels={5:3,6:4,8:2,29502:3,29504:4};return colorChannels[format-6402]||1}function heapObjectForWebGLType(type){type-=5120;if(type==1)return HEAPU8;if(type==4)return HEAP32;if(type==6)return HEAPF32;if(type==5||type==28922)return HEAPU32;return HEAPU16}function heapAccessShiftForWebGLHeap(heap){return 31-Math.clz32(heap.BYTES_PER_ELEMENT)}function emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat){var heap=heapObjectForWebGLType(type);var shift=heapAccessShiftForWebGLHeap(heap);var byteSize=1<<shift;var sizePerPixel=__colorChannelsInGlTextureFormat(format)*byteSize;var bytes=computeUnpackAlignedImageSize(width,height,sizePerPixel,GL.unpackAlignment);return heap.subarray(pixels>>shift,pixels+bytes>>shift)}function _emscripten_glReadPixels(x,y,width,height,format,type,pixels){var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);return}GLctx.readPixels(x,y,width,height,format,type,pixelData)}function _emscripten_glReleaseShaderCompiler(){}function _emscripten_glRenderbufferStorage(x0,x1,x2,x3){GLctx["renderbufferStorage"](x0,x1,x2,x3)}function _emscripten_glSampleCoverage(value,invert){GLctx.sampleCoverage(value,!!invert)}function _emscripten_glScissor(x0,x1,x2,x3){GLctx["scissor"](x0,x1,x2,x3)}function _emscripten_glShaderBinary(){GL.recordError(1280)}function _emscripten_glShaderSource(shader,count,string,length){var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}function _emscripten_glStencilFunc(x0,x1,x2){GLctx["stencilFunc"](x0,x1,x2)}function _emscripten_glStencilFuncSeparate(x0,x1,x2,x3){GLctx["stencilFuncSeparate"](x0,x1,x2,x3)}function _emscripten_glStencilMask(x0){GLctx["stencilMask"](x0)}function _emscripten_glStencilMaskSeparate(x0,x1){GLctx["stencilMaskSeparate"](x0,x1)}function _emscripten_glStencilOp(x0,x1,x2){GLctx["stencilOp"](x0,x1,x2)}function _emscripten_glStencilOpSeparate(x0,x1,x2,x3){GLctx["stencilOpSeparate"](x0,x1,x2,x3)}function _emscripten_glTexImage2D(target,level,internalFormat,width,height,border,format,type,pixels){GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels?emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat):null)}function _emscripten_glTexParameterf(x0,x1,x2){GLctx["texParameterf"](x0,x1,x2)}function _emscripten_glTexParameterfv(target,pname,params){var param=HEAPF32[params>>2];GLctx.texParameterf(target,pname,param)}function _emscripten_glTexParameteri(x0,x1,x2){GLctx["texParameteri"](x0,x1,x2)}function _emscripten_glTexParameteriv(target,pname,params){var param=HEAP32[params>>2];GLctx.texParameteri(target,pname,param)}function _emscripten_glTexSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixels){var pixelData=null;if(pixels)pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,0);GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixelData)}function _emscripten_glUniform1f(location,v0){GLctx.uniform1f(GL.uniforms[location],v0)}var miniTempWebGLFloatBuffers=[];function _emscripten_glUniform1fv(location,count,value){if(count<=288){var view=miniTempWebGLFloatBuffers[count-1];for(var i=0;i<count;++i){view[i]=HEAPF32[value+4*i>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*4>>2)}GLctx.uniform1fv(GL.uniforms[location],view)}function _emscripten_glUniform1i(location,v0){GLctx.uniform1i(GL.uniforms[location],v0)}var __miniTempWebGLIntBuffers=[];function _emscripten_glUniform1iv(location,count,value){if(count<=288){var view=__miniTempWebGLIntBuffers[count-1];for(var i=0;i<count;++i){view[i]=HEAP32[value+4*i>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*4>>2)}GLctx.uniform1iv(GL.uniforms[location],view)}function _emscripten_glUniform2f(location,v0,v1){GLctx.uniform2f(GL.uniforms[location],v0,v1)}function _emscripten_glUniform2fv(location,count,value){if(count<=144){var view=miniTempWebGLFloatBuffers[2*count-1];for(var i=0;i<2*count;i+=2){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*8>>2)}GLctx.uniform2fv(GL.uniforms[location],view)}function _emscripten_glUniform2i(location,v0,v1){GLctx.uniform2i(GL.uniforms[location],v0,v1)}function _emscripten_glUniform2iv(location,count,value){if(count<=144){var view=__miniTempWebGLIntBuffers[2*count-1];for(var i=0;i<2*count;i+=2){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*8>>2)}GLctx.uniform2iv(GL.uniforms[location],view)}function _emscripten_glUniform3f(location,v0,v1,v2){GLctx.uniform3f(GL.uniforms[location],v0,v1,v2)}function _emscripten_glUniform3fv(location,count,value){if(count<=96){var view=miniTempWebGLFloatBuffers[3*count-1];for(var i=0;i<3*count;i+=3){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*12>>2)}GLctx.uniform3fv(GL.uniforms[location],view)}function _emscripten_glUniform3i(location,v0,v1,v2){GLctx.uniform3i(GL.uniforms[location],v0,v1,v2)}function _emscripten_glUniform3iv(location,count,value){if(count<=96){var view=__miniTempWebGLIntBuffers[3*count-1];for(var i=0;i<3*count;i+=3){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2];view[i+2]=HEAP32[value+(4*i+8)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*12>>2)}GLctx.uniform3iv(GL.uniforms[location],view)}function _emscripten_glUniform4f(location,v0,v1,v2,v3){GLctx.uniform4f(GL.uniforms[location],v0,v1,v2,v3)}function _emscripten_glUniform4fv(location,count,value){if(count<=72){var view=miniTempWebGLFloatBuffers[4*count-1];var heap=HEAPF32;value>>=2;for(var i=0;i<4*count;i+=4){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3]}}else{var view=HEAPF32.subarray(value>>2,value+count*16>>2)}GLctx.uniform4fv(GL.uniforms[location],view)}function _emscripten_glUniform4i(location,v0,v1,v2,v3){GLctx.uniform4i(GL.uniforms[location],v0,v1,v2,v3)}function _emscripten_glUniform4iv(location,count,value){if(count<=72){var view=__miniTempWebGLIntBuffers[4*count-1];for(var i=0;i<4*count;i+=4){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2];view[i+2]=HEAP32[value+(4*i+8)>>2];view[i+3]=HEAP32[value+(4*i+12)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*16>>2)}GLctx.uniform4iv(GL.uniforms[location],view)}function _emscripten_glUniformMatrix2fv(location,count,transpose,value){if(count<=72){var view=miniTempWebGLFloatBuffers[4*count-1];for(var i=0;i<4*count;i+=4){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2];view[i+3]=HEAPF32[value+(4*i+12)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*16>>2)}GLctx.uniformMatrix2fv(GL.uniforms[location],!!transpose,view)}function _emscripten_glUniformMatrix3fv(location,count,transpose,value){if(count<=32){var view=miniTempWebGLFloatBuffers[9*count-1];for(var i=0;i<9*count;i+=9){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2];view[i+3]=HEAPF32[value+(4*i+12)>>2];view[i+4]=HEAPF32[value+(4*i+16)>>2];view[i+5]=HEAPF32[value+(4*i+20)>>2];view[i+6]=HEAPF32[value+(4*i+24)>>2];view[i+7]=HEAPF32[value+(4*i+28)>>2];view[i+8]=HEAPF32[value+(4*i+32)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*36>>2)}GLctx.uniformMatrix3fv(GL.uniforms[location],!!transpose,view)}function _emscripten_glUniformMatrix4fv(location,count,transpose,value){if(count<=18){var view=miniTempWebGLFloatBuffers[16*count-1];var heap=HEAPF32;value>>=2;for(var i=0;i<16*count;i+=16){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3];view[i+4]=heap[dst+4];view[i+5]=heap[dst+5];view[i+6]=heap[dst+6];view[i+7]=heap[dst+7];view[i+8]=heap[dst+8];view[i+9]=heap[dst+9];view[i+10]=heap[dst+10];view[i+11]=heap[dst+11];view[i+12]=heap[dst+12];view[i+13]=heap[dst+13];view[i+14]=heap[dst+14];view[i+15]=heap[dst+15]}}else{var view=HEAPF32.subarray(value>>2,value+count*64>>2)}GLctx.uniformMatrix4fv(GL.uniforms[location],!!transpose,view)}function _emscripten_glUseProgram(program){GLctx.useProgram(GL.programs[program])}function _emscripten_glValidateProgram(program){GLctx.validateProgram(GL.programs[program])}function _emscripten_glVertexAttrib1f(x0,x1){GLctx["vertexAttrib1f"](x0,x1)}function _emscripten_glVertexAttrib1fv(index,v){GLctx.vertexAttrib1f(index,HEAPF32[v>>2])}function _emscripten_glVertexAttrib2f(x0,x1,x2){GLctx["vertexAttrib2f"](x0,x1,x2)}function _emscripten_glVertexAttrib2fv(index,v){GLctx.vertexAttrib2f(index,HEAPF32[v>>2],HEAPF32[v+4>>2])}function _emscripten_glVertexAttrib3f(x0,x1,x2,x3){GLctx["vertexAttrib3f"](x0,x1,x2,x3)}function _emscripten_glVertexAttrib3fv(index,v){GLctx.vertexAttrib3f(index,HEAPF32[v>>2],HEAPF32[v+4>>2],HEAPF32[v+8>>2])}function _emscripten_glVertexAttrib4f(x0,x1,x2,x3,x4){GLctx["vertexAttrib4f"](x0,x1,x2,x3,x4)}function _emscripten_glVertexAttrib4fv(index,v){GLctx.vertexAttrib4f(index,HEAPF32[v>>2],HEAPF32[v+4>>2],HEAPF32[v+8>>2],HEAPF32[v+12>>2])}function _emscripten_glVertexAttribDivisorANGLE(index,divisor){GLctx["vertexAttribDivisor"](index,divisor)}function _emscripten_glVertexAttribPointer(index,size,type,normalized,stride,ptr){GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}function _emscripten_glViewport(x0,x1,x2,x3){GLctx["viewport"](x0,x1,x2,x3)}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function abortOnCannotGrowMemory(requestedSize){abort("OOM")}function _emscripten_resize_heap(requestedSize){abortOnCannotGrowMemory(requestedSize)}function _emscripten_run_script(ptr){eval(UTF8ToString(ptr))}function _emscripten_sample_gamepad_data(){return(JSEvents.lastGamepadState=navigator.getGamepads?navigator.getGamepads():navigator.webkitGetGamepads?navigator.webkitGetGamepads():null)?0:-1}function fillMouseEventData(eventStruct,e,target){var idx=eventStruct>>2;HEAP32[idx+0]=e.screenX;HEAP32[idx+1]=e.screenY;HEAP32[idx+2]=e.clientX;HEAP32[idx+3]=e.clientY;HEAP32[idx+4]=e.ctrlKey;HEAP32[idx+5]=e.shiftKey;HEAP32[idx+6]=e.altKey;HEAP32[idx+7]=e.metaKey;HEAP16[idx*2+16]=e.button;HEAP16[idx*2+17]=e.buttons;HEAP32[idx+9]=e["movementX"];HEAP32[idx+10]=e["movementY"];var rect=getBoundingClientRect(target);HEAP32[idx+11]=e.clientX-rect.left;HEAP32[idx+12]=e.clientY-rect.top}function registerMouseEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.mouseEvent)JSEvents.mouseEvent=_malloc(64);target=findEventTarget(target);var mouseEventHandlerFunc=function(ev){var e=ev||event;fillMouseEventData(JSEvents.mouseEvent,e,target);if(wasmTable.get(callbackfunc)(eventTypeId,JSEvents.mouseEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:eventTypeString!="mousemove"&&eventTypeString!="mouseenter"&&eventTypeString!="mouseleave",eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:mouseEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_click_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,4,"click",targetThread);return 0}function fillFullscreenChangeEventData(eventStruct){var fullscreenElement=document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement||document.msFullscreenElement;var isFullscreen=!!fullscreenElement;HEAP32[eventStruct>>2]=isFullscreen;HEAP32[eventStruct+4>>2]=JSEvents.fullscreenEnabled();var reportedElement=isFullscreen?fullscreenElement:JSEvents.previousFullscreenElement;var nodeName=JSEvents.getNodeNameForTarget(reportedElement);var id=reportedElement&&reportedElement.id?reportedElement.id:"";stringToUTF8(nodeName,eventStruct+8,128);stringToUTF8(id,eventStruct+136,128);HEAP32[eventStruct+264>>2]=reportedElement?reportedElement.clientWidth:0;HEAP32[eventStruct+268>>2]=reportedElement?reportedElement.clientHeight:0;HEAP32[eventStruct+272>>2]=screen.width;HEAP32[eventStruct+276>>2]=screen.height;if(isFullscreen){JSEvents.previousFullscreenElement=fullscreenElement}}function registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.fullscreenChangeEvent)JSEvents.fullscreenChangeEvent=_malloc(280);var fullscreenChangeEventhandlerFunc=function(ev){var e=ev||event;var fullscreenChangeEvent=JSEvents.fullscreenChangeEvent;fillFullscreenChangeEventData(fullscreenChangeEvent);if(wasmTable.get(callbackfunc)(eventTypeId,fullscreenChangeEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:fullscreenChangeEventhandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_fullscreenchange_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){if(!JSEvents.fullscreenEnabled())return-1;target=findEventTarget(target);if(!target)return-4;registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,19,"fullscreenchange",targetThread);registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,19,"webkitfullscreenchange",targetThread);return 0}function registerGamepadEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.gamepadEvent)JSEvents.gamepadEvent=_malloc(1432);var gamepadEventHandlerFunc=function(ev){var e=ev||event;var gamepadEvent=JSEvents.gamepadEvent;fillGamepadEventData(gamepadEvent,e["gamepad"]);if(wasmTable.get(callbackfunc)(eventTypeId,gamepadEvent,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:gamepadEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_gamepadconnected_callback_on_thread(userData,useCapture,callbackfunc,targetThread){if(!navigator.getGamepads&&!navigator.webkitGetGamepads)return-1;registerGamepadEventCallback(2,userData,useCapture,callbackfunc,26,"gamepadconnected",targetThread);return 0}function _emscripten_set_gamepaddisconnected_callback_on_thread(userData,useCapture,callbackfunc,targetThread){if(!navigator.getGamepads&&!navigator.webkitGetGamepads)return-1;registerGamepadEventCallback(2,userData,useCapture,callbackfunc,27,"gamepaddisconnected",targetThread);return 0}function registerKeyEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.keyEvent)JSEvents.keyEvent=_malloc(164);var keyEventHandlerFunc=function(e){var keyEventData=JSEvents.keyEvent;var idx=keyEventData>>2;HEAP32[idx+0]=e.location;HEAP32[idx+1]=e.ctrlKey;HEAP32[idx+2]=e.shiftKey;HEAP32[idx+3]=e.altKey;HEAP32[idx+4]=e.metaKey;HEAP32[idx+5]=e.repeat;HEAP32[idx+6]=e.charCode;HEAP32[idx+7]=e.keyCode;HEAP32[idx+8]=e.which;stringToUTF8(e.key||"",keyEventData+36,32);stringToUTF8(e.code||"",keyEventData+68,32);stringToUTF8(e.char||"",keyEventData+100,32);stringToUTF8(e.locale||"",keyEventData+132,32);if(wasmTable.get(callbackfunc)(eventTypeId,keyEventData,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:keyEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_keydown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,2,"keydown",targetThread);return 0}var Browser={mainLoop:{scheduler:null,method:"",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause:function(){Browser.mainLoop.scheduler=null;Browser.mainLoop.currentlyRunningMainloop++},resume:function(){Browser.mainLoop.currentlyRunningMainloop++;var timingMode=Browser.mainLoop.timingMode;var timingValue=Browser.mainLoop.timingValue;var func=Browser.mainLoop.func;Browser.mainLoop.func=null;setMainLoop(func,0,false,Browser.mainLoop.arg,true);_emscripten_set_main_loop_timing(timingMode,timingValue);Browser.mainLoop.scheduler()},updateStatus:function(){if(Module["setStatus"]){var message=Module["statusMessage"]||"Please wait...";var remaining=Browser.mainLoop.remainingBlockers;var expected=Browser.mainLoop.expectedBlockers;if(remaining){if(remaining<expected){Module["setStatus"](message+" ("+(expected-remaining)+"/"+expected+")")}else{Module["setStatus"](message)}}else{Module["setStatus"]("")}}},runIter:function(func){if(ABORT)return;if(Module["preMainLoop"]){var preRet=Module["preMainLoop"]();if(preRet===false){return}}try{func()}catch(e){if(e instanceof ExitStatus){return}else if(e=="unwind"){return}else{if(e&&typeof e==="object"&&e.stack)err("exception thrown: "+[e,e.stack]);throw e}}if(Module["postMainLoop"])Module["postMainLoop"]()}},isFullscreen:false,pointerLock:false,moduleContextCreatedCallbacks:[],workers:[],init:function(){if(!Module["preloadPlugins"])Module["preloadPlugins"]=[];if(Browser.initted)return;Browser.initted=true;try{new Blob;Browser.hasBlobConstructor=true}catch(e){Browser.hasBlobConstructor=false;console.log("warning: no blob constructor, cannot create blobs with mimetypes")}Browser.BlobBuilder=typeof MozBlobBuilder!="undefined"?MozBlobBuilder:typeof WebKitBlobBuilder!="undefined"?WebKitBlobBuilder:!Browser.hasBlobConstructor?console.log("warning: no BlobBuilder"):null;Browser.URLObject=typeof window!="undefined"?window.URL?window.URL:window.webkitURL:undefined;if(!Module.noImageDecoding&&typeof Browser.URLObject==="undefined"){console.log("warning: Browser does not support creating object URLs. Built-in browser image decoding will not be available.");Module.noImageDecoding=true}var imagePlugin={};imagePlugin["canHandle"]=function imagePlugin_canHandle(name){return!Module.noImageDecoding&&/\.(jpg|jpeg|png|bmp)$/i.test(name)};imagePlugin["handle"]=function imagePlugin_handle(byteArray,name,onload,onerror){var b=null;if(Browser.hasBlobConstructor){try{b=new Blob([byteArray],{type:Browser.getMimetype(name)});if(b.size!==byteArray.length){b=new Blob([new Uint8Array(byteArray).buffer],{type:Browser.getMimetype(name)})}}catch(e){warnOnce("Blob constructor present but fails: "+e+"; falling back to blob builder")}}if(!b){var bb=new Browser.BlobBuilder;bb.append(new Uint8Array(byteArray).buffer);b=bb.getBlob()}var url=Browser.URLObject.createObjectURL(b);var img=new Image;img.onload=function img_onload(){assert(img.complete,"Image "+name+" could not be decoded");var canvas=document.createElement("canvas");canvas.width=img.width;canvas.height=img.height;var ctx=canvas.getContext("2d");ctx.drawImage(img,0,0);Module["preloadedImages"][name]=canvas;Browser.URLObject.revokeObjectURL(url);if(onload)onload(byteArray)};img.onerror=function img_onerror(event){console.log("Image "+url+" could not be decoded");if(onerror)onerror()};img.src=url};Module["preloadPlugins"].push(imagePlugin);var audioPlugin={};audioPlugin["canHandle"]=function audioPlugin_canHandle(name){return!Module.noAudioDecoding&&name.substr(-4)in{".ogg":1,".wav":1,".mp3":1}};audioPlugin["handle"]=function audioPlugin_handle(byteArray,name,onload,onerror){var done=false;function finish(audio){if(done)return;done=true;Module["preloadedAudios"][name]=audio;if(onload)onload(byteArray)}function fail(){if(done)return;done=true;Module["preloadedAudios"][name]=new Audio;if(onerror)onerror()}if(Browser.hasBlobConstructor){try{var b=new Blob([byteArray],{type:Browser.getMimetype(name)})}catch(e){return fail()}var url=Browser.URLObject.createObjectURL(b);var audio=new Audio;audio.addEventListener("canplaythrough",function(){finish(audio)},false);audio.onerror=function audio_onerror(event){if(done)return;console.log("warning: browser could not fully decode audio "+name+", trying slower base64 approach");function encode64(data){var BASE="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var PAD="=";var ret="";var leftchar=0;var leftbits=0;for(var i=0;i<data.length;i++){leftchar=leftchar<<8|data[i];leftbits+=8;while(leftbits>=6){var curr=leftchar>>leftbits-6&63;leftbits-=6;ret+=BASE[curr]}}if(leftbits==2){ret+=BASE[(leftchar&3)<<4];ret+=PAD+PAD}else if(leftbits==4){ret+=BASE[(leftchar&15)<<2];ret+=PAD}return ret}audio.src="data:audio/x-"+name.substr(-3)+";base64,"+encode64(byteArray);finish(audio)};audio.src=url;Browser.safeSetTimeout(function(){finish(audio)},1e4)}else{return fail()}};Module["preloadPlugins"].push(audioPlugin);function pointerLockChange(){Browser.pointerLock=document["pointerLockElement"]===Module["canvas"]||document["mozPointerLockElement"]===Module["canvas"]||document["webkitPointerLockElement"]===Module["canvas"]||document["msPointerLockElement"]===Module["canvas"]}var canvas=Module["canvas"];if(canvas){canvas.requestPointerLock=canvas["requestPointerLock"]||canvas["mozRequestPointerLock"]||canvas["webkitRequestPointerLock"]||canvas["msRequestPointerLock"]||function(){};canvas.exitPointerLock=document["exitPointerLock"]||document["mozExitPointerLock"]||document["webkitExitPointerLock"]||document["msExitPointerLock"]||function(){};canvas.exitPointerLock=canvas.exitPointerLock.bind(document);document.addEventListener("pointerlockchange",pointerLockChange,false);document.addEventListener("mozpointerlockchange",pointerLockChange,false);document.addEventListener("webkitpointerlockchange",pointerLockChange,false);document.addEventListener("mspointerlockchange",pointerLockChange,false);if(Module["elementPointerLock"]){canvas.addEventListener("click",function(ev){if(!Browser.pointerLock&&Module["canvas"].requestPointerLock){Module["canvas"].requestPointerLock();ev.preventDefault()}},false)}}},createContext:function(canvas,useWebGL,setInModule,webGLContextAttributes){if(useWebGL&&Module.ctx&&canvas==Module.canvas)return Module.ctx;var ctx;var contextHandle;if(useWebGL){var contextAttributes={antialias:false,alpha:false,majorVersion:1};if(webGLContextAttributes){for(var attribute in webGLContextAttributes){contextAttributes[attribute]=webGLContextAttributes[attribute]}}if(typeof GL!=="undefined"){contextHandle=GL.createContext(canvas,contextAttributes);if(contextHandle){ctx=GL.getContext(contextHandle).GLctx}}}else{ctx=canvas.getContext("2d")}if(!ctx)return null;if(setInModule){if(!useWebGL)assert(typeof GLctx==="undefined","cannot set in module if GLctx is used, but we are a non-GL context that would replace it");Module.ctx=ctx;if(useWebGL)GL.makeContextCurrent(contextHandle);Module.useWebGL=useWebGL;Browser.moduleContextCreatedCallbacks.forEach(function(callback){callback()});Browser.init()}return ctx},destroyContext:function(canvas,useWebGL,setInModule){},fullscreenHandlersInstalled:false,lockPointer:undefined,resizeCanvas:undefined,requestFullscreen:function(lockPointer,resizeCanvas){Browser.lockPointer=lockPointer;Browser.resizeCanvas=resizeCanvas;if(typeof Browser.lockPointer==="undefined")Browser.lockPointer=true;if(typeof Browser.resizeCanvas==="undefined")Browser.resizeCanvas=false;var canvas=Module["canvas"];function fullscreenChange(){Browser.isFullscreen=false;var canvasContainer=canvas.parentNode;if((document["fullscreenElement"]||document["mozFullScreenElement"]||document["msFullscreenElement"]||document["webkitFullscreenElement"]||document["webkitCurrentFullScreenElement"])===canvasContainer){canvas.exitFullscreen=Browser.exitFullscreen;if(Browser.lockPointer)canvas.requestPointerLock();Browser.isFullscreen=true;if(Browser.resizeCanvas){Browser.setFullscreenCanvasSize()}else{Browser.updateCanvasDimensions(canvas)}}else{canvasContainer.parentNode.insertBefore(canvas,canvasContainer);canvasContainer.parentNode.removeChild(canvasContainer);if(Browser.resizeCanvas){Browser.setWindowedCanvasSize()}else{Browser.updateCanvasDimensions(canvas)}}if(Module["onFullScreen"])Module["onFullScreen"](Browser.isFullscreen);if(Module["onFullscreen"])Module["onFullscreen"](Browser.isFullscreen)}if(!Browser.fullscreenHandlersInstalled){Browser.fullscreenHandlersInstalled=true;document.addEventListener("fullscreenchange",fullscreenChange,false);document.addEventListener("mozfullscreenchange",fullscreenChange,false);document.addEventListener("webkitfullscreenchange",fullscreenChange,false);document.addEventListener("MSFullscreenChange",fullscreenChange,false)}var canvasContainer=document.createElement("div");canvas.parentNode.insertBefore(canvasContainer,canvas);canvasContainer.appendChild(canvas);canvasContainer.requestFullscreen=canvasContainer["requestFullscreen"]||canvasContainer["mozRequestFullScreen"]||canvasContainer["msRequestFullscreen"]||(canvasContainer["webkitRequestFullscreen"]?function(){canvasContainer["webkitRequestFullscreen"](Element["ALLOW_KEYBOARD_INPUT"])}:null)||(canvasContainer["webkitRequestFullScreen"]?function(){canvasContainer["webkitRequestFullScreen"](Element["ALLOW_KEYBOARD_INPUT"])}:null);canvasContainer.requestFullscreen()},exitFullscreen:function(){if(!Browser.isFullscreen){return false}var CFS=document["exitFullscreen"]||document["cancelFullScreen"]||document["mozCancelFullScreen"]||document["msExitFullscreen"]||document["webkitCancelFullScreen"]||function(){};CFS.apply(document,[]);return true},nextRAF:0,fakeRequestAnimationFrame:function(func){var now=Date.now();if(Browser.nextRAF===0){Browser.nextRAF=now+1e3/60}else{while(now+2>=Browser.nextRAF){Browser.nextRAF+=1e3/60}}var delay=Math.max(Browser.nextRAF-now,0);setTimeout(func,delay)},requestAnimationFrame:function(func){if(typeof requestAnimationFrame==="function"){requestAnimationFrame(func);return}var RAF=Browser.fakeRequestAnimationFrame;RAF(func)},safeRequestAnimationFrame:function(func){return Browser.requestAnimationFrame(function(){if(ABORT)return;func()})},safeSetTimeout:function(func,timeout){noExitRuntime=true;return setTimeout(function(){if(ABORT)return;func()},timeout)},getMimetype:function(name){return{"jpg":"image/jpeg","jpeg":"image/jpeg","png":"image/png","bmp":"image/bmp","ogg":"audio/ogg","wav":"audio/wav","mp3":"audio/mpeg"}[name.substr(name.lastIndexOf(".")+1)]},getUserMedia:function(func){if(!window.getUserMedia){window.getUserMedia=navigator["getUserMedia"]||navigator["mozGetUserMedia"]}window.getUserMedia(func)},getMovementX:function(event){return event["movementX"]||event["mozMovementX"]||event["webkitMovementX"]||0},getMovementY:function(event){return event["movementY"]||event["mozMovementY"]||event["webkitMovementY"]||0},getMouseWheelDelta:function(event){var delta=0;switch(event.type){case"DOMMouseScroll":delta=event.detail/3;break;case"mousewheel":delta=event.wheelDelta/120;break;case"wheel":delta=event.deltaY;switch(event.deltaMode){case 0:delta/=100;break;case 1:delta/=3;break;case 2:delta*=80;break;default:throw"unrecognized mouse wheel delta mode: "+event.deltaMode}break;default:throw"unrecognized mouse wheel event: "+event.type}return delta},mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,touches:{},lastTouches:{},calculateMouseEvent:function(event){if(Browser.pointerLock){if(event.type!="mousemove"&&"mozMovementX"in event){Browser.mouseMovementX=Browser.mouseMovementY=0}else{Browser.mouseMovementX=Browser.getMovementX(event);Browser.mouseMovementY=Browser.getMovementY(event)}if(typeof SDL!="undefined"){Browser.mouseX=SDL.mouseX+Browser.mouseMovementX;Browser.mouseY=SDL.mouseY+Browser.mouseMovementY}else{Browser.mouseX+=Browser.mouseMovementX;Browser.mouseY+=Browser.mouseMovementY}}else{var rect=Module["canvas"].getBoundingClientRect();var cw=Module["canvas"].width;var ch=Module["canvas"].height;var scrollX=typeof window.scrollX!=="undefined"?window.scrollX:window.pageXOffset;var scrollY=typeof window.scrollY!=="undefined"?window.scrollY:window.pageYOffset;if(event.type==="touchstart"||event.type==="touchend"||event.type==="touchmove"){var touch=event.touch;if(touch===undefined){return}var adjustedX=touch.pageX-(scrollX+rect.left);var adjustedY=touch.pageY-(scrollY+rect.top);adjustedX=adjustedX*(cw/rect.width);adjustedY=adjustedY*(ch/rect.height);var coords={x:adjustedX,y:adjustedY};if(event.type==="touchstart"){Browser.lastTouches[touch.identifier]=coords;Browser.touches[touch.identifier]=coords}else if(event.type==="touchend"||event.type==="touchmove"){var last=Browser.touches[touch.identifier];if(!last)last=coords;Browser.lastTouches[touch.identifier]=last;Browser.touches[touch.identifier]=coords}return}var x=event.pageX-(scrollX+rect.left);var y=event.pageY-(scrollY+rect.top);x=x*(cw/rect.width);y=y*(ch/rect.height);Browser.mouseMovementX=x-Browser.mouseX;Browser.mouseMovementY=y-Browser.mouseY;Browser.mouseX=x;Browser.mouseY=y}},asyncLoad:function(url,onload,onerror,noRunDep){var dep=!noRunDep?getUniqueRunDependency("al "+url):"";readAsync(url,function(arrayBuffer){assert(arrayBuffer,'Loading data file "'+url+'" failed (no arrayBuffer).');onload(new Uint8Array(arrayBuffer));if(dep)removeRunDependency(dep)},function(event){if(onerror){onerror()}else{throw'Loading data file "'+url+'" failed.'}});if(dep)addRunDependency(dep)},resizeListeners:[],updateResizeListeners:function(){var canvas=Module["canvas"];Browser.resizeListeners.forEach(function(listener){listener(canvas.width,canvas.height)})},setCanvasSize:function(width,height,noUpdates){var canvas=Module["canvas"];Browser.updateCanvasDimensions(canvas,width,height);if(!noUpdates)Browser.updateResizeListeners()},windowedWidth:0,windowedHeight:0,setFullscreenCanvasSize:function(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>2];flags=flags|8388608;HEAP32[SDL.screen>>2]=flags}Browser.updateCanvasDimensions(Module["canvas"]);Browser.updateResizeListeners()},setWindowedCanvasSize:function(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>2];flags=flags&~8388608;HEAP32[SDL.screen>>2]=flags}Browser.updateCanvasDimensions(Module["canvas"]);Browser.updateResizeListeners()},updateCanvasDimensions:function(canvas,wNative,hNative){if(wNative&&hNative){canvas.widthNative=wNative;canvas.heightNative=hNative}else{wNative=canvas.widthNative;hNative=canvas.heightNative}var w=wNative;var h=hNative;if(Module["forcedAspectRatio"]&&Module["forcedAspectRatio"]>0){if(w/h<Module["forcedAspectRatio"]){w=Math.round(h*Module["forcedAspectRatio"])}else{h=Math.round(w/Module["forcedAspectRatio"])}}if((document["fullscreenElement"]||document["mozFullScreenElement"]||document["msFullscreenElement"]||document["webkitFullscreenElement"]||document["webkitCurrentFullScreenElement"])===canvas.parentNode&&typeof screen!="undefined"){var factor=Math.min(screen.width/w,screen.height/h);w=Math.round(w*factor);h=Math.round(h*factor)}if(Browser.resizeCanvas){if(canvas.width!=w)canvas.width=w;if(canvas.height!=h)canvas.height=h;if(typeof canvas.style!="undefined"){canvas.style.removeProperty("width");canvas.style.removeProperty("height")}}else{if(canvas.width!=wNative)canvas.width=wNative;if(canvas.height!=hNative)canvas.height=hNative;if(typeof canvas.style!="undefined"){if(w!=wNative||h!=hNative){canvas.style.setProperty("width",w+"px","important");canvas.style.setProperty("height",h+"px","important")}else{canvas.style.removeProperty("width");canvas.style.removeProperty("height")}}}},wgetRequests:{},nextWgetRequestHandle:0,getNextWgetRequestHandle:function(){var handle=Browser.nextWgetRequestHandle;Browser.nextWgetRequestHandle++;return handle}};function _emscripten_set_main_loop_timing(mode,value){Browser.mainLoop.timingMode=mode;Browser.mainLoop.timingValue=value;if(!Browser.mainLoop.func){return 1}if(mode==0){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setTimeout(){var timeUntilNextTick=Math.max(0,Browser.mainLoop.tickStartTime+value-_emscripten_get_now())|0;setTimeout(Browser.mainLoop.runner,timeUntilNextTick)};Browser.mainLoop.method="timeout"}else if(mode==1){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_rAF(){Browser.requestAnimationFrame(Browser.mainLoop.runner)};Browser.mainLoop.method="rAF"}else if(mode==2){if(typeof setImmediate==="undefined"){var setImmediates=[];var emscriptenMainLoopMessageId="setimmediate";var Browser_setImmediate_messageHandler=function(event){if(event.data===emscriptenMainLoopMessageId||event.data.target===emscriptenMainLoopMessageId){event.stopPropagation();setImmediates.shift()()}};addEventListener("message",Browser_setImmediate_messageHandler,true);setImmediate=function Browser_emulated_setImmediate(func){setImmediates.push(func);if(ENVIRONMENT_IS_WORKER){if(Module["setImmediates"]===undefined)Module["setImmediates"]=[];Module["setImmediates"].push(func);postMessage({target:emscriptenMainLoopMessageId})}else postMessage(emscriptenMainLoopMessageId,"*")}}Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setImmediate(){setImmediate(Browser.mainLoop.runner)};Browser.mainLoop.method="immediate"}return 0}var _emscripten_get_now;if(ENVIRONMENT_IS_NODE){_emscripten_get_now=function(){var t=process["hrtime"]();return t[0]*1e3+t[1]/1e6}}else if(typeof dateNow!=="undefined"){_emscripten_get_now=dateNow}else _emscripten_get_now=function(){return performance.now()};function setMainLoop(browserIterationFunc,fps,simulateInfiniteLoop,arg,noSetTiming){noExitRuntime=true;assert(!Browser.mainLoop.func,"emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters.");Browser.mainLoop.func=browserIterationFunc;Browser.mainLoop.arg=arg;var thisMainLoopId=Browser.mainLoop.currentlyRunningMainloop;Browser.mainLoop.runner=function Browser_mainLoop_runner(){if(ABORT)return;if(Browser.mainLoop.queue.length>0){var start=Date.now();var blocker=Browser.mainLoop.queue.shift();blocker.func(blocker.arg);if(Browser.mainLoop.remainingBlockers){var remaining=Browser.mainLoop.remainingBlockers;var next=remaining%1==0?remaining-1:Math.floor(remaining);if(blocker.counted){Browser.mainLoop.remainingBlockers=next}else{next=next+.5;Browser.mainLoop.remainingBlockers=(8*remaining+next)/9}}console.log('main loop blocker "'+blocker.name+'" took '+(Date.now()-start)+" ms");Browser.mainLoop.updateStatus();if(thisMainLoopId<Browser.mainLoop.currentlyRunningMainloop)return;setTimeout(Browser.mainLoop.runner,0);return}if(thisMainLoopId<Browser.mainLoop.currentlyRunningMainloop)return;Browser.mainLoop.currentFrameNumber=Browser.mainLoop.currentFrameNumber+1|0;if(Browser.mainLoop.timingMode==1&&Browser.mainLoop.timingValue>1&&Browser.mainLoop.currentFrameNumber%Browser.mainLoop.timingValue!=0){Browser.mainLoop.scheduler();return}else if(Browser.mainLoop.timingMode==0){Browser.mainLoop.tickStartTime=_emscripten_get_now()}Browser.mainLoop.runIter(browserIterationFunc);if(thisMainLoopId<Browser.mainLoop.currentlyRunningMainloop)return;if(typeof SDL==="object"&&SDL.audio&&SDL.audio.queueNewAudioData)SDL.audio.queueNewAudioData();Browser.mainLoop.scheduler()};if(!noSetTiming){if(fps&&fps>0)_emscripten_set_main_loop_timing(0,1e3/fps);else _emscripten_set_main_loop_timing(1,1);Browser.mainLoop.scheduler()}if(simulateInfiniteLoop){throw"unwind"}}function _emscripten_set_main_loop(func,fps,simulateInfiniteLoop){var browserIterationFunc=wasmTable.get(func);setMainLoop(browserIterationFunc,fps,simulateInfiniteLoop)}function registerTouchEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.touchEvent)JSEvents.touchEvent=_malloc(1684);target=findEventTarget(target);var touchEventHandlerFunc=function(e){var touches={};var et=e.touches;for(var i=0;i<et.length;++i){var touch=et[i];touches[touch.identifier]=touch}et=e.changedTouches;for(var i=0;i<et.length;++i){var touch=et[i];touch.isChanged=1;touches[touch.identifier]=touch}et=e.targetTouches;for(var i=0;i<et.length;++i){touches[et[i].identifier].onTarget=1}var touchEvent=JSEvents.touchEvent;var idx=touchEvent>>2;HEAP32[idx+1]=e.ctrlKey;HEAP32[idx+2]=e.shiftKey;HEAP32[idx+3]=e.altKey;HEAP32[idx+4]=e.metaKey;idx+=5;var targetRect=getBoundingClientRect(target);var numTouches=0;for(var i in touches){var t=touches[i];HEAP32[idx+0]=t.identifier;HEAP32[idx+1]=t.screenX;HEAP32[idx+2]=t.screenY;HEAP32[idx+3]=t.clientX;HEAP32[idx+4]=t.clientY;HEAP32[idx+5]=t.pageX;HEAP32[idx+6]=t.pageY;HEAP32[idx+7]=t.isChanged;HEAP32[idx+8]=t.onTarget;HEAP32[idx+9]=t.clientX-targetRect.left;HEAP32[idx+10]=t.clientY-targetRect.top;idx+=13;if(++numTouches>31){break}}HEAP32[touchEvent>>2]=numTouches;if(wasmTable.get(callbackfunc)(eventTypeId,touchEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:eventTypeString=="touchstart"||eventTypeString=="touchend",eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:touchEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_touchcancel_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerTouchEventCallback(target,userData,useCapture,callbackfunc,25,"touchcancel",targetThread);return 0}function _emscripten_set_touchend_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerTouchEventCallback(target,userData,useCapture,callbackfunc,23,"touchend",targetThread);return 0}function _emscripten_set_touchmove_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerTouchEventCallback(target,userData,useCapture,callbackfunc,24,"touchmove",targetThread);return 0}function _emscripten_set_touchstart_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerTouchEventCallback(target,userData,useCapture,callbackfunc,22,"touchstart",targetThread);return 0}function _emscripten_thread_sleep(msecs){var start=_emscripten_get_now();while(_emscripten_get_now()-start<msecs){}}function _exit(status){exit(status)}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_read(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doReadv(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var stream=SYSCALLS.getStreamFromFD(fd);var HIGH_OFFSET=4294967296;var offset=offset_high*HIGH_OFFSET+(offset_low>>>0);var DOUBLE_LIMIT=9007199254740992;if(offset<=-DOUBLE_LIMIT||offset>=DOUBLE_LIMIT){return-61}FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doWritev(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _glActiveTexture(x0){GLctx["activeTexture"](x0)}function _glAttachShader(program,shader){GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _glBindAttribLocation(program,index,name){GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))}function _glBindBuffer(target,buffer){GLctx.bindBuffer(target,GL.buffers[buffer])}function _glBindTexture(target,texture){GLctx.bindTexture(target,GL.textures[texture])}function _glBlendFunc(x0,x1){GLctx["blendFunc"](x0,x1)}function _glBufferData(target,size,data,usage){GLctx.bufferData(target,data?HEAPU8.subarray(data,data+size):size,usage)}function _glBufferSubData(target,offset,size,data){GLctx.bufferSubData(target,offset,HEAPU8.subarray(data,data+size))}function _glClear(x0){GLctx["clear"](x0)}function _glClearColor(x0,x1,x2,x3){GLctx["clearColor"](x0,x1,x2,x3)}function _glClearDepthf(x0){GLctx["clearDepth"](x0)}function _glCompileShader(shader){GLctx.compileShader(GL.shaders[shader])}function _glCompressedTexImage2D(target,level,internalFormat,width,height,border,imageSize,data){GLctx["compressedTexImage2D"](target,level,internalFormat,width,height,border,data?HEAPU8.subarray(data,data+imageSize):null)}function _glCreateProgram(){var id=GL.getNewId(GL.programs);var program=GLctx.createProgram();program.name=id;GL.programs[id]=program;return id}function _glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}function _glCullFace(x0){GLctx["cullFace"](x0)}function _glDeleteBuffers(n,buffers){for(var i=0;i<n;i++){var id=HEAP32[buffers+i*4>>2];var buffer=GL.buffers[id];if(!buffer)continue;GLctx.deleteBuffer(buffer);buffer.name=0;GL.buffers[id]=null}}function _glDeleteProgram(id){if(!id)return;var program=GL.programs[id];if(!program){GL.recordError(1281);return}GLctx.deleteProgram(program);program.name=0;GL.programs[id]=null;GL.programInfos[id]=null}function _glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}function _glDeleteTextures(n,textures){for(var i=0;i<n;i++){var id=HEAP32[textures+i*4>>2];var texture=GL.textures[id];if(!texture)continue;GLctx.deleteTexture(texture);texture.name=0;GL.textures[id]=null}}function _glDepthFunc(x0){GLctx["depthFunc"](x0)}function _glDetachShader(program,shader){GLctx.detachShader(GL.programs[program],GL.shaders[shader])}function _glDisable(x0){GLctx["disable"](x0)}function _glDisableVertexAttribArray(index){GLctx.disableVertexAttribArray(index)}function _glDrawArrays(mode,first,count){GLctx.drawArrays(mode,first,count)}function _glDrawElements(mode,count,type,indices){GLctx.drawElements(mode,count,type,indices)}function _glEnable(x0){GLctx["enable"](x0)}function _glEnableVertexAttribArray(index){GLctx.enableVertexAttribArray(index)}function _glFrontFace(x0){GLctx["frontFace"](x0)}function _glGenBuffers(n,buffers){__glGenObject(n,buffers,"createBuffer",GL.buffers)}function _glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures)}function _glGetAttribLocation(program,name){return GLctx.getAttribLocation(GL.programs[program],UTF8ToString(name))}function _glGetFloatv(name_,p){emscriptenWebGLGet(name_,p,2)}function _glGetProgramInfoLog(program,maxLength,length,infoLog){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _glGetProgramiv(program,pname,p){if(!p){GL.recordError(1281);return}if(program>=GL.counter){GL.recordError(1281);return}var ptable=GL.programInfos[program];if(!ptable){GL.recordError(1282);return}if(pname==35716){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";HEAP32[p>>2]=log.length+1}else if(pname==35719){HEAP32[p>>2]=ptable.maxUniformLength}else if(pname==35722){if(ptable.maxAttributeLength==-1){program=GL.programs[program];var numAttribs=GLctx.getProgramParameter(program,35721);ptable.maxAttributeLength=0;for(var i=0;i<numAttribs;++i){var activeAttrib=GLctx.getActiveAttrib(program,i);ptable.maxAttributeLength=Math.max(ptable.maxAttributeLength,activeAttrib.name.length+1)}}HEAP32[p>>2]=ptable.maxAttributeLength}else if(pname==35381){if(ptable.maxUniformBlockNameLength==-1){program=GL.programs[program];var numBlocks=GLctx.getProgramParameter(program,35382);ptable.maxUniformBlockNameLength=0;for(var i=0;i<numBlocks;++i){var activeBlockName=GLctx.getActiveUniformBlockName(program,i);ptable.maxUniformBlockNameLength=Math.max(ptable.maxUniformBlockNameLength,activeBlockName.length+1)}}HEAP32[p>>2]=ptable.maxUniformBlockNameLength}else{HEAP32[p>>2]=GLctx.getProgramParameter(GL.programs[program],pname)}}function _glGetShaderInfoLog(shader,maxLength,length,infoLog){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _glGetShaderiv(shader,pname,p){if(!p){GL.recordError(1281);return}if(pname==35716){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var logLength=log?log.length+1:0;HEAP32[p>>2]=logLength}else if(pname==35720){var source=GLctx.getShaderSource(GL.shaders[shader]);var sourceLength=source?source.length+1:0;HEAP32[p>>2]=sourceLength}else{HEAP32[p>>2]=GLctx.getShaderParameter(GL.shaders[shader],pname)}}function _glGetString(name_){if(GL.stringCache[name_])return GL.stringCache[name_];var ret;switch(name_){case 7939:var exts=GLctx.getSupportedExtensions()||[];exts=exts.concat(exts.map(function(e){return"GL_"+e}));ret=stringToNewUTF8(exts.join(" "));break;case 7936:case 7937:case 37445:case 37446:var s=GLctx.getParameter(name_);if(!s){GL.recordError(1280)}ret=stringToNewUTF8(s);break;case 7938:var glVersion=GLctx.getParameter(7938);{glVersion="OpenGL ES 2.0 ("+glVersion+")"}ret=stringToNewUTF8(glVersion);break;case 35724:var glslVersion=GLctx.getParameter(35724);var ver_re=/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/;var ver_num=glslVersion.match(ver_re);if(ver_num!==null){if(ver_num[1].length==3)ver_num[1]=ver_num[1]+"0";glslVersion="OpenGL ES GLSL ES "+ver_num[1]+" ("+glslVersion+")"}ret=stringToNewUTF8(glslVersion);break;default:GL.recordError(1280);return 0}GL.stringCache[name_]=ret;return ret}function _glGetUniformLocation(program,name){name=UTF8ToString(name);var arrayIndex=0;if(name[name.length-1]=="]"){var leftBrace=name.lastIndexOf("[");arrayIndex=name[leftBrace+1]!="]"?jstoi_q(name.slice(leftBrace+1)):0;name=name.slice(0,leftBrace)}var uniformInfo=GL.programInfos[program]&&GL.programInfos[program].uniforms[name];if(uniformInfo&&arrayIndex>=0&&arrayIndex<uniformInfo[0]){return uniformInfo[1]+arrayIndex}else{return-1}}function _glLinkProgram(program){GLctx.linkProgram(GL.programs[program]);GL.populateUniformTable(program)}function _glPixelStorei(pname,param){if(pname==3317){GL.unpackAlignment=param}GLctx.pixelStorei(pname,param)}function _glReadPixels(x,y,width,height,format,type,pixels){var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);return}GLctx.readPixels(x,y,width,height,format,type,pixelData)}function _glShaderSource(shader,count,string,length){var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}function _glTexImage2D(target,level,internalFormat,width,height,border,format,type,pixels){GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels?emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat):null)}function _glTexParameteri(x0,x1,x2){GLctx["texParameteri"](x0,x1,x2)}function _glUniform1i(location,v0){GLctx.uniform1i(GL.uniforms[location],v0)}function _glUniform4f(location,v0,v1,v2,v3){GLctx.uniform4f(GL.uniforms[location],v0,v1,v2,v3)}function _glUniformMatrix4fv(location,count,transpose,value){if(count<=18){var view=miniTempWebGLFloatBuffers[16*count-1];var heap=HEAPF32;value>>=2;for(var i=0;i<16*count;i+=16){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3];view[i+4]=heap[dst+4];view[i+5]=heap[dst+5];view[i+6]=heap[dst+6];view[i+7]=heap[dst+7];view[i+8]=heap[dst+8];view[i+9]=heap[dst+9];view[i+10]=heap[dst+10];view[i+11]=heap[dst+11];view[i+12]=heap[dst+12];view[i+13]=heap[dst+13];view[i+14]=heap[dst+14];view[i+15]=heap[dst+15]}}else{var view=HEAPF32.subarray(value>>2,value+count*64>>2)}GLctx.uniformMatrix4fv(GL.uniforms[location],!!transpose,view)}function _glUseProgram(program){GLctx.useProgram(GL.programs[program])}function _glVertexAttrib2f(x0,x1,x2){GLctx["vertexAttrib2f"](x0,x1,x2)}function _glVertexAttrib3f(x0,x1,x2,x3){GLctx["vertexAttrib3f"](x0,x1,x2,x3)}function _glVertexAttrib4f(x0,x1,x2,x3,x4){GLctx["vertexAttrib4f"](x0,x1,x2,x3,x4)}function _glVertexAttribPointer(index,size,type,normalized,stride,ptr){GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}function _glViewport(x0,x1,x2,x3){GLctx["viewport"](x0,x1,x2,x3)}function GLFW_Window(id,width,height,title,monitor,share){this.id=id;this.x=0;this.y=0;this.fullscreen=false;this.storedX=0;this.storedY=0;this.width=width;this.height=height;this.storedWidth=width;this.storedHeight=height;this.title=title;this.monitor=monitor;this.share=share;this.attributes=GLFW.hints;this.inputModes={208897:212993,208898:0,208899:0};this.buttons=0;this.keys=new Array;this.domKeys=new Array;this.shouldClose=0;this.title=null;this.windowPosFunc=null;this.windowSizeFunc=null;this.windowCloseFunc=null;this.windowRefreshFunc=null;this.windowFocusFunc=null;this.windowIconifyFunc=null;this.framebufferSizeFunc=null;this.mouseButtonFunc=null;this.cursorPosFunc=null;this.cursorEnterFunc=null;this.scrollFunc=null;this.dropFunc=null;this.keyFunc=null;this.charFunc=null;this.userptr=null}var GLFW={WindowFromId:function(id){if(id<=0||!GLFW.windows)return null;return GLFW.windows[id-1]},joystickFunc:null,errorFunc:null,monitorFunc:null,active:null,windows:null,monitors:null,monitorString:null,versionString:null,initialTime:null,extensions:null,hints:null,defaultHints:{131073:0,131074:0,131075:1,131076:1,131077:1,135169:8,135170:8,135171:8,135172:8,135173:24,135174:8,135175:0,135176:0,135177:0,135178:0,135179:0,135180:0,135181:0,135182:0,135183:0,139265:196609,139266:1,139267:0,139268:0,139269:0,139270:0,139271:0,139272:0},DOMToGLFWKeyCode:function(keycode){switch(keycode){case 32:return 32;case 222:return 39;case 188:return 44;case 173:return 45;case 189:return 45;case 190:return 46;case 191:return 47;case 48:return 48;case 49:return 49;case 50:return 50;case 51:return 51;case 52:return 52;case 53:return 53;case 54:return 54;case 55:return 55;case 56:return 56;case 57:return 57;case 59:return 59;case 61:return 61;case 187:return 61;case 65:return 65;case 66:return 66;case 67:return 67;case 68:return 68;case 69:return 69;case 70:return 70;case 71:return 71;case 72:return 72;case 73:return 73;case 74:return 74;case 75:return 75;case 76:return 76;case 77:return 77;case 78:return 78;case 79:return 79;case 80:return 80;case 81:return 81;case 82:return 82;case 83:return 83;case 84:return 84;case 85:return 85;case 86:return 86;case 87:return 87;case 88:return 88;case 89:return 89;case 90:return 90;case 219:return 91;case 220:return 92;case 221:return 93;case 192:return 94;case 27:return 256;case 13:return 257;case 9:return 258;case 8:return 259;case 45:return 260;case 46:return 261;case 39:return 262;case 37:return 263;case 40:return 264;case 38:return 265;case 33:return 266;case 34:return 267;case 36:return 268;case 35:return 269;case 20:return 280;case 145:return 281;case 144:return 282;case 44:return 283;case 19:return 284;case 112:return 290;case 113:return 291;case 114:return 292;case 115:return 293;case 116:return 294;case 117:return 295;case 118:return 296;case 119:return 297;case 120:return 298;case 121:return 299;case 122:return 300;case 123:return 301;case 124:return 302;case 125:return 303;case 126:return 304;case 127:return 305;case 128:return 306;case 129:return 307;case 130:return 308;case 131:return 309;case 132:return 310;case 133:return 311;case 134:return 312;case 135:return 313;case 136:return 314;case 96:return 320;case 97:return 321;case 98:return 322;case 99:return 323;case 100:return 324;case 101:return 325;case 102:return 326;case 103:return 327;case 104:return 328;case 105:return 329;case 110:return 330;case 111:return 331;case 106:return 332;case 109:return 333;case 107:return 334;case 16:return 340;case 17:return 341;case 18:return 342;case 91:return 343;case 93:return 348;default:return-1}},getModBits:function(win){var mod=0;if(win.keys[340])mod|=1;if(win.keys[341])mod|=2;if(win.keys[342])mod|=4;if(win.keys[343])mod|=8;return mod},onKeyPress:function(event){if(!GLFW.active||!GLFW.active.charFunc)return;if(event.ctrlKey||event.metaKey)return;var charCode=event.charCode;if(charCode==0||charCode>=0&&charCode<=31)return;wasmTable.get(GLFW.active.charFunc)(GLFW.active.id,charCode)},onKeyChanged:function(keyCode,status){if(!GLFW.active)return;var key=GLFW.DOMToGLFWKeyCode(keyCode);if(key==-1)return;var repeat=status&&GLFW.active.keys[key];GLFW.active.keys[key]=status;GLFW.active.domKeys[keyCode]=status;if(!GLFW.active.keyFunc)return;if(repeat)status=2;wasmTable.get(GLFW.active.keyFunc)(GLFW.active.id,key,keyCode,status,GLFW.getModBits(GLFW.active))},onGamepadConnected:function(event){GLFW.refreshJoysticks()},onGamepadDisconnected:function(event){GLFW.refreshJoysticks()},onKeydown:function(event){GLFW.onKeyChanged(event.keyCode,1);if(event.keyCode===8||event.keyCode===9){event.preventDefault()}},onKeyup:function(event){GLFW.onKeyChanged(event.keyCode,0)},onBlur:function(event){if(!GLFW.active)return;for(var i=0;i<GLFW.active.domKeys.length;++i){if(GLFW.active.domKeys[i]){GLFW.onKeyChanged(i,0)}}},onMousemove:function(event){if(!GLFW.active)return;Browser.calculateMouseEvent(event);if(event.target!=Module["canvas"]||!GLFW.active.cursorPosFunc)return;wasmTable.get(GLFW.active.cursorPosFunc)(GLFW.active.id,Browser.mouseX,Browser.mouseY)},DOMToGLFWMouseButton:function(event){var eventButton=event["button"];if(eventButton>0){if(eventButton==1){eventButton=2}else{eventButton=1}}return eventButton},onMouseenter:function(event){if(!GLFW.active)return;if(event.target!=Module["canvas"]||!GLFW.active.cursorEnterFunc)return;wasmTable.get(GLFW.active.cursorEnterFunc)(GLFW.active.id,1)},onMouseleave:function(event){if(!GLFW.active)return;if(event.target!=Module["canvas"]||!GLFW.active.cursorEnterFunc)return;wasmTable.get(GLFW.active.cursorEnterFunc)(GLFW.active.id,0)},onMouseButtonChanged:function(event,status){if(!GLFW.active)return;Browser.calculateMouseEvent(event);if(event.target!=Module["canvas"])return;var eventButton=GLFW.DOMToGLFWMouseButton(event);if(status==1){GLFW.active.buttons|=1<<eventButton;try{event.target.setCapture()}catch(e){}}else{GLFW.active.buttons&=~(1<<eventButton)}if(!GLFW.active.mouseButtonFunc)return;wasmTable.get(GLFW.active.mouseButtonFunc)(GLFW.active.id,eventButton,status,GLFW.getModBits(GLFW.active))},onMouseButtonDown:function(event){if(!GLFW.active)return;GLFW.onMouseButtonChanged(event,1)},onMouseButtonUp:function(event){if(!GLFW.active)return;GLFW.onMouseButtonChanged(event,0)},onMouseWheel:function(event){var delta=-Browser.getMouseWheelDelta(event);delta=delta==0?0:delta>0?Math.max(delta,1):Math.min(delta,-1);GLFW.wheelPos+=delta;if(!GLFW.active||!GLFW.active.scrollFunc||event.target!=Module["canvas"])return;var sx=0;var sy=0;if(event.type=="mousewheel"){sx=event.wheelDeltaX;sy=event.wheelDeltaY}else{sx=event.deltaX;sy=event.deltaY}wasmTable.get(GLFW.active.scrollFunc)(GLFW.active.id,sx,sy);event.preventDefault()},onCanvasResize:function(width,height){if(!GLFW.active)return;var resizeNeeded=true;if(document["fullscreen"]||document["fullScreen"]||document["mozFullScreen"]||document["webkitIsFullScreen"]){GLFW.active.storedX=GLFW.active.x;GLFW.active.storedY=GLFW.active.y;GLFW.active.storedWidth=GLFW.active.width;GLFW.active.storedHeight=GLFW.active.height;GLFW.active.x=GLFW.active.y=0;GLFW.active.width=screen.width;GLFW.active.height=screen.height;GLFW.active.fullscreen=true}else if(GLFW.active.fullscreen==true){GLFW.active.x=GLFW.active.storedX;GLFW.active.y=GLFW.active.storedY;GLFW.active.width=GLFW.active.storedWidth;GLFW.active.height=GLFW.active.storedHeight;GLFW.active.fullscreen=false}else if(GLFW.active.width!=width||GLFW.active.height!=height){GLFW.active.width=width;GLFW.active.height=height}else{resizeNeeded=false}if(resizeNeeded){Browser.setCanvasSize(GLFW.active.width,GLFW.active.height,true);GLFW.onWindowSizeChanged();GLFW.onFramebufferSizeChanged()}},onWindowSizeChanged:function(){if(!GLFW.active)return;if(!GLFW.active.windowSizeFunc)return;wasmTable.get(GLFW.active.windowSizeFunc)(GLFW.active.id,GLFW.active.width,GLFW.active.height)},onFramebufferSizeChanged:function(){if(!GLFW.active)return;if(!GLFW.active.framebufferSizeFunc)return;wasmTable.get(GLFW.active.framebufferSizeFunc)(GLFW.active.id,GLFW.active.width,GLFW.active.height)},getTime:function(){return _emscripten_get_now()/1e3},setWindowTitle:function(winid,title){var win=GLFW.WindowFromId(winid);if(!win)return;win.title=UTF8ToString(title);if(GLFW.active.id==win.id){document.title=win.title}},setJoystickCallback:function(cbfun){GLFW.joystickFunc=cbfun;GLFW.refreshJoysticks()},joys:{},lastGamepadState:null,lastGamepadStateFrame:null,refreshJoysticks:function(){if(Browser.mainLoop.currentFrameNumber!==GLFW.lastGamepadStateFrame||!Browser.mainLoop.currentFrameNumber){GLFW.lastGamepadState=navigator.getGamepads?navigator.getGamepads():navigator.webkitGetGamepads?navigator.webkitGetGamepads:null;GLFW.lastGamepadStateFrame=Browser.mainLoop.currentFrameNumber;for(var joy=0;joy<GLFW.lastGamepadState.length;++joy){var gamepad=GLFW.lastGamepadState[joy];if(gamepad){if(!GLFW.joys[joy]){console.log("glfw joystick connected:",joy);GLFW.joys[joy]={id:allocate(intArrayFromString(gamepad.id),ALLOC_NORMAL),buttonsCount:gamepad.buttons.length,axesCount:gamepad.axes.length,buttons:allocate(new Array(gamepad.buttons.length),ALLOC_NORMAL),axes:allocate(new Array(gamepad.axes.length*4),ALLOC_NORMAL)};if(GLFW.joystickFunc){wasmTable.get(GLFW.joystickFunc)(joy,262145)}}var data=GLFW.joys[joy];for(var i=0;i<gamepad.buttons.length;++i){setValue(data.buttons+i,gamepad.buttons[i].pressed,"i8")}for(var i=0;i<gamepad.axes.length;++i){setValue(data.axes+i*4,gamepad.axes[i],"float")}}else{if(GLFW.joys[joy]){console.log("glfw joystick disconnected",joy);if(GLFW.joystickFunc){wasmTable.get(GLFW.joystickFunc)(joy,262146)}_free(GLFW.joys[joy].id);_free(GLFW.joys[joy].buttons);_free(GLFW.joys[joy].axes);delete GLFW.joys[joy]}}}}},setKeyCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.keyFunc;win.keyFunc=cbfun;return prevcbfun},setCharCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.charFunc;win.charFunc=cbfun;return prevcbfun},setMouseButtonCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.mouseButtonFunc;win.mouseButtonFunc=cbfun;return prevcbfun},setCursorPosCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.cursorPosFunc;win.cursorPosFunc=cbfun;return prevcbfun},setScrollCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.scrollFunc;win.scrollFunc=cbfun;return prevcbfun},setDropCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.dropFunc;win.dropFunc=cbfun;return prevcbfun},onDrop:function(event){if(!GLFW.active||!GLFW.active.dropFunc)return;if(!event.dataTransfer||!event.dataTransfer.files||event.dataTransfer.files.length==0)return;event.preventDefault();var filenames=allocate(new Array(event.dataTransfer.files.length*4),ALLOC_NORMAL);var filenamesArray=[];var count=event.dataTransfer.files.length;var written=0;var drop_dir=".glfw_dropped_files";FS.createPath("/",drop_dir);function save(file){var path="/"+drop_dir+"/"+file.name.replace(/\//g,"_");var reader=new FileReader;reader.onloadend=function(e){if(reader.readyState!=2){++written;console.log("failed to read dropped file: "+file.name+": "+reader.error);return}var data=e.target.result;FS.writeFile(path,new Uint8Array(data));if(++written===count){wasmTable.get(GLFW.active.dropFunc)(GLFW.active.id,count,filenames);for(var i=0;i<filenamesArray.length;++i){_free(filenamesArray[i])}_free(filenames)}};reader.readAsArrayBuffer(file);var filename=allocate(intArrayFromString(path),ALLOC_NORMAL);filenamesArray.push(filename);setValue(filenames+i*4,filename,"i8*")}for(var i=0;i<count;++i){save(event.dataTransfer.files[i])}return false},onDragover:function(event){if(!GLFW.active||!GLFW.active.dropFunc)return;event.preventDefault();return false},setWindowSizeCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowSizeFunc;win.windowSizeFunc=cbfun;return prevcbfun},setWindowCloseCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowCloseFunc;win.windowCloseFunc=cbfun;return prevcbfun},setWindowRefreshCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowRefreshFunc;win.windowRefreshFunc=cbfun;return prevcbfun},onClickRequestPointerLock:function(e){if(!Browser.pointerLock&&Module["canvas"].requestPointerLock){Module["canvas"].requestPointerLock();e.preventDefault()}},setInputMode:function(winid,mode,value){var win=GLFW.WindowFromId(winid);if(!win)return;switch(mode){case 208897:{switch(value){case 212993:{win.inputModes[mode]=value;Module["canvas"].removeEventListener("click",GLFW.onClickRequestPointerLock,true);Module["canvas"].exitPointerLock();break}case 212994:{console.log("glfwSetInputMode called with GLFW_CURSOR_HIDDEN value not implemented.");break}case 212995:{win.inputModes[mode]=value;Module["canvas"].addEventListener("click",GLFW.onClickRequestPointerLock,true);Module["canvas"].requestPointerLock();break}default:{console.log("glfwSetInputMode called with unknown value parameter value: "+value+".");break}}break}case 208898:{console.log("glfwSetInputMode called with GLFW_STICKY_KEYS mode not implemented.");break}case 208899:{console.log("glfwSetInputMode called with GLFW_STICKY_MOUSE_BUTTONS mode not implemented.");break}default:{console.log("glfwSetInputMode called with unknown mode parameter value: "+mode+".");break}}},getKey:function(winid,key){var win=GLFW.WindowFromId(winid);if(!win)return 0;return win.keys[key]},getMouseButton:function(winid,button){var win=GLFW.WindowFromId(winid);if(!win)return 0;return(win.buttons&1<<button)>0},getCursorPos:function(winid,x,y){setValue(x,Browser.mouseX,"double");setValue(y,Browser.mouseY,"double")},getMousePos:function(winid,x,y){setValue(x,Browser.mouseX,"i32");setValue(y,Browser.mouseY,"i32")},setCursorPos:function(winid,x,y){},getWindowPos:function(winid,x,y){var wx=0;var wy=0;var win=GLFW.WindowFromId(winid);if(win){wx=win.x;wy=win.y}if(x){setValue(x,wx,"i32")}if(y){setValue(y,wy,"i32")}},setWindowPos:function(winid,x,y){var win=GLFW.WindowFromId(winid);if(!win)return;win.x=x;win.y=y},getWindowSize:function(winid,width,height){var ww=0;var wh=0;var win=GLFW.WindowFromId(winid);if(win){ww=win.width;wh=win.height}if(width){setValue(width,ww,"i32")}if(height){setValue(height,wh,"i32")}},setWindowSize:function(winid,width,height){var win=GLFW.WindowFromId(winid);if(!win)return;if(GLFW.active.id==win.id){if(width==screen.width&&height==screen.height){Browser.requestFullscreen()}else{Browser.exitFullscreen();Browser.setCanvasSize(width,height);win.width=width;win.height=height}}if(!win.windowSizeFunc)return;wasmTable.get(win.windowSizeFunc)(win.id,width,height)},createWindow:function(width,height,title,monitor,share){var i,id;for(i=0;i<GLFW.windows.length&&GLFW.windows[i]!==null;i++){}if(i>0)throw"glfwCreateWindow only supports one window at time currently";id=i+1;if(width<=0||height<=0)return 0;if(monitor){Browser.requestFullscreen()}else{Browser.setCanvasSize(width,height)}for(i=0;i<GLFW.windows.length&&GLFW.windows[i]==null;i++){}var useWebGL=GLFW.hints[139265]>0;if(i==GLFW.windows.length){if(useWebGL){var contextAttributes={antialias:GLFW.hints[135181]>1,depth:GLFW.hints[135173]>0,stencil:GLFW.hints[135174]>0,alpha:GLFW.hints[135172]>0};Module.ctx=Browser.createContext(Module["canvas"],true,true,contextAttributes)}else{Browser.init()}}if(!Module.ctx&&useWebGL)return 0;var win=new GLFW_Window(id,width,height,title,monitor,share);if(id-1==GLFW.windows.length){GLFW.windows.push(win)}else{GLFW.windows[id-1]=win}GLFW.active=win;return win.id},destroyWindow:function(winid){var win=GLFW.WindowFromId(winid);if(!win)return;if(win.windowCloseFunc)wasmTable.get(win.windowCloseFunc)(win.id);GLFW.windows[win.id-1]=null;if(GLFW.active.id==win.id)GLFW.active=null;for(var i=0;i<GLFW.windows.length;i++)if(GLFW.windows[i]!==null)return;Module.ctx=Browser.destroyContext(Module["canvas"],true,true)},swapBuffers:function(winid){},GLFW2ParamToGLFW3Param:function(param){var table={196609:0,196610:0,196611:0,196612:0,196613:0,196614:0,131073:0,131074:0,131075:0,131076:0,131077:135169,131078:135170,131079:135171,131080:135172,131081:135173,131082:135174,131083:135183,131084:135175,131085:135176,131086:135177,131087:135178,131088:135179,131089:135180,131090:0,131091:135181,131092:139266,131093:139267,131094:139270,131095:139271,131096:139272};return table[param]}};function _glfwCreateWindow(width,height,title,monitor,share){return GLFW.createWindow(width,height,title,monitor,share)}function _glfwDefaultWindowHints(){GLFW.hints=GLFW.defaultHints}function _glfwDestroyWindow(winid){return GLFW.destroyWindow(winid)}function _glfwGetPrimaryMonitor(){return 1}function _glfwGetTime(){return GLFW.getTime()-GLFW.initialTime}function _glfwGetVideoModes(monitor,count){setValue(count,0,"i32");return 0}function _glfwInit(){if(GLFW.windows)return 1;GLFW.initialTime=GLFW.getTime();GLFW.hints=GLFW.defaultHints;GLFW.windows=new Array;GLFW.active=null;window.addEventListener("gamepadconnected",GLFW.onGamepadConnected,true);window.addEventListener("gamepaddisconnected",GLFW.onGamepadDisconnected,true);window.addEventListener("keydown",GLFW.onKeydown,true);window.addEventListener("keypress",GLFW.onKeyPress,true);window.addEventListener("keyup",GLFW.onKeyup,true);window.addEventListener("blur",GLFW.onBlur,true);Module["canvas"].addEventListener("touchmove",GLFW.onMousemove,true);Module["canvas"].addEventListener("touchstart",GLFW.onMouseButtonDown,true);Module["canvas"].addEventListener("touchcancel",GLFW.onMouseButtonUp,true);Module["canvas"].addEventListener("touchend",GLFW.onMouseButtonUp,true);Module["canvas"].addEventListener("mousemove",GLFW.onMousemove,true);Module["canvas"].addEventListener("mousedown",GLFW.onMouseButtonDown,true);Module["canvas"].addEventListener("mouseup",GLFW.onMouseButtonUp,true);Module["canvas"].addEventListener("wheel",GLFW.onMouseWheel,true);Module["canvas"].addEventListener("mousewheel",GLFW.onMouseWheel,true);Module["canvas"].addEventListener("mouseenter",GLFW.onMouseenter,true);Module["canvas"].addEventListener("mouseleave",GLFW.onMouseleave,true);Module["canvas"].addEventListener("drop",GLFW.onDrop,true);Module["canvas"].addEventListener("dragover",GLFW.onDragover,true);Browser.resizeListeners.push(function(width,height){GLFW.onCanvasResize(width,height)});return 1}function _glfwMakeContextCurrent(winid){}function _glfwSetCharCallback(winid,cbfun){return GLFW.setCharCallback(winid,cbfun)}function _glfwSetCursorEnterCallback(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.cursorEnterFunc;win.cursorEnterFunc=cbfun;return prevcbfun}function _glfwSetCursorPosCallback(winid,cbfun){return GLFW.setCursorPosCallback(winid,cbfun)}function _glfwSetDropCallback(winid,cbfun){return GLFW.setDropCallback(winid,cbfun)}function _glfwSetErrorCallback(cbfun){var prevcbfun=GLFW.errorFunc;GLFW.errorFunc=cbfun;return prevcbfun}function _glfwSetKeyCallback(winid,cbfun){return GLFW.setKeyCallback(winid,cbfun)}function _glfwSetMouseButtonCallback(winid,cbfun){return GLFW.setMouseButtonCallback(winid,cbfun)}function _glfwSetScrollCallback(winid,cbfun){return GLFW.setScrollCallback(winid,cbfun)}function _glfwSetWindowFocusCallback(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowFocusFunc;win.windowFocusFunc=cbfun;return prevcbfun}function _glfwSetWindowIconifyCallback(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowIconifyFunc;win.windowIconifyFunc=cbfun;return prevcbfun}function _glfwSetWindowShouldClose(winid,value){var win=GLFW.WindowFromId(winid);if(!win)return;win.shouldClose=value}function _glfwSetWindowSizeCallback(winid,cbfun){return GLFW.setWindowSizeCallback(winid,cbfun)}function _glfwSwapBuffers(winid){GLFW.swapBuffers(winid)}function _glfwSwapInterval(interval){interval=Math.abs(interval);if(interval==0)_emscripten_set_main_loop_timing(0,0);else _emscripten_set_main_loop_timing(1,interval)}function _glfwTerminate(){window.removeEventListener("gamepadconnected",GLFW.onGamepadConnected,true);window.removeEventListener("gamepaddisconnected",GLFW.onGamepadDisconnected,true);window.removeEventListener("keydown",GLFW.onKeydown,true);window.removeEventListener("keypress",GLFW.onKeyPress,true);window.removeEventListener("keyup",GLFW.onKeyup,true);window.removeEventListener("blur",GLFW.onBlur,true);Module["canvas"].removeEventListener("touchmove",GLFW.onMousemove,true);Module["canvas"].removeEventListener("touchstart",GLFW.onMouseButtonDown,true);Module["canvas"].removeEventListener("touchcancel",GLFW.onMouseButtonUp,true);Module["canvas"].removeEventListener("touchend",GLFW.onMouseButtonUp,true);Module["canvas"].removeEventListener("mousemove",GLFW.onMousemove,true);Module["canvas"].removeEventListener("mousedown",GLFW.onMouseButtonDown,true);Module["canvas"].removeEventListener("mouseup",GLFW.onMouseButtonUp,true);Module["canvas"].removeEventListener("wheel",GLFW.onMouseWheel,true);Module["canvas"].removeEventListener("mousewheel",GLFW.onMouseWheel,true);Module["canvas"].removeEventListener("mouseenter",GLFW.onMouseenter,true);Module["canvas"].removeEventListener("mouseleave",GLFW.onMouseleave,true);Module["canvas"].removeEventListener("drop",GLFW.onDrop,true);Module["canvas"].removeEventListener("dragover",GLFW.onDragover,true);Module["canvas"].width=Module["canvas"].height=1;GLFW.windows=null;GLFW.active=null}function _glfwWindowHint(target,hint){GLFW.hints[target]=hint}function _time(ptr){var ret=Date.now()/1e3|0;if(ptr){HEAP32[ptr>>2]=ret}return ret}var FSNode=function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev};var readMode=292|73;var writeMode=146;Object.defineProperties(FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(val){val?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===writeMode},set:function(val){val?this.mode|=writeMode:this.mode&=~writeMode}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}});FS.FSNode=FSNode;FS.staticInit();Module["FS_createPath"]=FS.createPath;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createDevice"]=FS.createDevice;Module["FS_unlink"]=FS.unlink;var GLctx;for(var i=0;i<32;++i)tempFixedLengthArray.push(new Array(i));var miniTempWebGLFloatBuffersStorage=new Float32Array(288);for(var i=0;i<288;++i){miniTempWebGLFloatBuffers[i]=miniTempWebGLFloatBuffersStorage.subarray(0,i+1)}var __miniTempWebGLIntBuffersStorage=new Int32Array(288);for(var i=0;i<288;++i){__miniTempWebGLIntBuffers[i]=__miniTempWebGLIntBuffersStorage.subarray(0,i+1)}Module["requestFullscreen"]=function Module_requestFullscreen(lockPointer,resizeCanvas){Browser.requestFullscreen(lockPointer,resizeCanvas)};Module["requestAnimationFrame"]=function Module_requestAnimationFrame(func){Browser.requestAnimationFrame(func)};Module["setCanvasSize"]=function Module_setCanvasSize(width,height,noUpdates){Browser.setCanvasSize(width,height,noUpdates)};Module["pauseMainLoop"]=function Module_pauseMainLoop(){Browser.mainLoop.pause()};Module["resumeMainLoop"]=function Module_resumeMainLoop(){Browser.mainLoop.resume()};Module["getUserMedia"]=function Module_getUserMedia(){Browser.getUserMedia()};Module["createContext"]=function Module_createContext(canvas,useWebGL,setInModule,webGLContextAttributes){return Browser.createContext(canvas,useWebGL,setInModule,webGLContextAttributes)};function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var asmLibraryArg={"a":___assert_fail,"Ta":___sys_chdir,"L":___sys_fcntl64,"Sa":___sys_getcwd,"Va":___sys_ioctl,"Xa":___sys_open,"C":_emscripten_exit_pointerlock,"aa":_emscripten_get_element_css_size,"X":_emscripten_get_gamepad_status,"Y":_emscripten_get_num_gamepads,"Jd":_emscripten_glActiveTexture,"Id":_emscripten_glAttachShader,"Zd":_emscripten_glBeginQueryEXT,"Hd":_emscripten_glBindAttribLocation,"Gd":_emscripten_glBindBuffer,"Fd":_emscripten_glBindFramebuffer,"Ed":_emscripten_glBindRenderbuffer,"Dd":_emscripten_glBindTexture,"Rd":_emscripten_glBindVertexArrayOES,"Cd":_emscripten_glBlendColor,"Bd":_emscripten_glBlendEquation,"Ad":_emscripten_glBlendEquationSeparate,"zd":_emscripten_glBlendFunc,"yd":_emscripten_glBlendFuncSeparate,"xd":_emscripten_glBufferData,"wd":_emscripten_glBufferSubData,"vd":_emscripten_glCheckFramebufferStatus,"ud":_emscripten_glClear,"td":_emscripten_glClearColor,"sd":_emscripten_glClearDepthf,"rd":_emscripten_glClearStencil,"qd":_emscripten_glColorMask,"pd":_emscripten_glCompileShader,"od":_emscripten_glCompressedTexImage2D,"nd":_emscripten_glCompressedTexSubImage2D,"md":_emscripten_glCopyTexImage2D,"ld":_emscripten_glCopyTexSubImage2D,"kd":_emscripten_glCreateProgram,"jd":_emscripten_glCreateShader,"id":_emscripten_glCullFace,"hd":_emscripten_glDeleteBuffers,"gd":_emscripten_glDeleteFramebuffers,"fd":_emscripten_glDeleteProgram,"T":_emscripten_glDeleteQueriesEXT,"ed":_emscripten_glDeleteRenderbuffers,"dd":_emscripten_glDeleteShader,"cd":_emscripten_glDeleteTextures,"Qd":_emscripten_glDeleteVertexArraysOES,"bd":_emscripten_glDepthFunc,"ad":_emscripten_glDepthMask,"$c":_emscripten_glDepthRangef,"_c":_emscripten_glDetachShader,"Zc":_emscripten_glDisable,"Yc":_emscripten_glDisableVertexAttribArray,"Xc":_emscripten_glDrawArrays,"Md":_emscripten_glDrawArraysInstancedANGLE,"Nd":_emscripten_glDrawBuffersWEBGL,"Wc":_emscripten_glDrawElements,"Ld":_emscripten_glDrawElementsInstancedANGLE,"Vc":_emscripten_glEnable,"Uc":_emscripten_glEnableVertexAttribArray,"Yd":_emscripten_glEndQueryEXT,"Tc":_emscripten_glFinish,"Sc":_emscripten_glFlush,"Rc":_emscripten_glFramebufferRenderbuffer,"Qc":_emscripten_glFramebufferTexture2D,"Pc":_emscripten_glFrontFace,"Oc":_emscripten_glGenBuffers,"Mc":_emscripten_glGenFramebuffers,"U":_emscripten_glGenQueriesEXT,"Lc":_emscripten_glGenRenderbuffers,"Kc":_emscripten_glGenTextures,"Pd":_emscripten_glGenVertexArraysOES,"Nc":_emscripten_glGenerateMipmap,"Ic":_emscripten_glGetActiveAttrib,"Hc":_emscripten_glGetActiveUniform,"Gc":_emscripten_glGetAttachedShaders,"Fc":_emscripten_glGetAttribLocation,"Ec":_emscripten_glGetBooleanv,"Dc":_emscripten_glGetBufferParameteriv,"Cc":_emscripten_glGetError,"Bc":_emscripten_glGetFloatv,"Ac":_emscripten_glGetFramebufferAttachmentParameteriv,"zc":_emscripten_glGetIntegerv,"xc":_emscripten_glGetProgramInfoLog,"yc":_emscripten_glGetProgramiv,"Td":_emscripten_glGetQueryObjecti64vEXT,"Vd":_emscripten_glGetQueryObjectivEXT,"Sd":_emscripten_glGetQueryObjectui64vEXT,"Ud":_emscripten_glGetQueryObjectuivEXT,"Wd":_emscripten_glGetQueryivEXT,"wc":_emscripten_glGetRenderbufferParameteriv,"uc":_emscripten_glGetShaderInfoLog,"tc":_emscripten_glGetShaderPrecisionFormat,"sc":_emscripten_glGetShaderSource,"vc":_emscripten_glGetShaderiv,"rc":_emscripten_glGetString,"qc":_emscripten_glGetTexParameterfv,"pc":_emscripten_glGetTexParameteriv,"mc":_emscripten_glGetUniformLocation,"oc":_emscripten_glGetUniformfv,"nc":_emscripten_glGetUniformiv,"jc":_emscripten_glGetVertexAttribPointerv,"lc":_emscripten_glGetVertexAttribfv,"kc":_emscripten_glGetVertexAttribiv,"ic":_emscripten_glHint,"hc":_emscripten_glIsBuffer,"gc":_emscripten_glIsEnabled,"fc":_emscripten_glIsFramebuffer,"ec":_emscripten_glIsProgram,"S":_emscripten_glIsQueryEXT,"dc":_emscripten_glIsRenderbuffer,"cc":_emscripten_glIsShader,"bc":_emscripten_glIsTexture,"Od":_emscripten_glIsVertexArrayOES,"ac":_emscripten_glLineWidth,"$b":_emscripten_glLinkProgram,"_b":_emscripten_glPixelStorei,"Zb":_emscripten_glPolygonOffset,"Xd":_emscripten_glQueryCounterEXT,"Yb":_emscripten_glReadPixels,"Xb":_emscripten_glReleaseShaderCompiler,"Vb":_emscripten_glRenderbufferStorage,"Ub":_emscripten_glSampleCoverage,"Tb":_emscripten_glScissor,"Sb":_emscripten_glShaderBinary,"Rb":_emscripten_glShaderSource,"Qb":_emscripten_glStencilFunc,"Pb":_emscripten_glStencilFuncSeparate,"Ob":_emscripten_glStencilMask,"Nb":_emscripten_glStencilMaskSeparate,"Mb":_emscripten_glStencilOp,"Kb":_emscripten_glStencilOpSeparate,"Jb":_emscripten_glTexImage2D,"Ib":_emscripten_glTexParameterf,"Hb":_emscripten_glTexParameterfv,"Gb":_emscripten_glTexParameteri,"Fb":_emscripten_glTexParameteriv,"Eb":_emscripten_glTexSubImage2D,"Db":_emscripten_glUniform1f,"Cb":_emscripten_glUniform1fv,"Bb":_emscripten_glUniform1i,"zb":_emscripten_glUniform1iv,"yb":_emscripten_glUniform2f,"xb":_emscripten_glUniform2fv,"wb":_emscripten_glUniform2i,"vb":_emscripten_glUniform2iv,"ub":_emscripten_glUniform3f,"tb":_emscripten_glUniform3fv,"sb":_emscripten_glUniform3i,"rb":_emscripten_glUniform3iv,"qb":_emscripten_glUniform4f,"ob":_emscripten_glUniform4fv,"nb":_emscripten_glUniform4i,"mb":_emscripten_glUniform4iv,"lb":_emscripten_glUniformMatrix2fv,"kb":_emscripten_glUniformMatrix3fv,"jb":_emscripten_glUniformMatrix4fv,"ib":_emscripten_glUseProgram,"hb":_emscripten_glValidateProgram,"gb":_emscripten_glVertexAttrib1f,"fb":_emscripten_glVertexAttrib1fv,"db":_emscripten_glVertexAttrib2f,"cb":_emscripten_glVertexAttrib2fv,"bb":_emscripten_glVertexAttrib3f,"ab":_emscripten_glVertexAttrib3fv,"$a":_emscripten_glVertexAttrib4f,"_a":_emscripten_glVertexAttrib4fv,"Kd":_emscripten_glVertexAttribDivisorANGLE,"Za":_emscripten_glVertexAttribPointer,"Ya":_emscripten_glViewport,"Pa":_emscripten_memcpy_big,"Qa":_emscripten_resize_heap,"x":_emscripten_run_script,"Z":_emscripten_sample_gamepad_data,"ya":_emscripten_set_click_callback_on_thread,"Aa":_emscripten_set_fullscreenchange_callback_on_thread,"ta":_emscripten_set_gamepadconnected_callback_on_thread,"sa":_emscripten_set_gamepaddisconnected_callback_on_thread,"za":_emscripten_set_keydown_callback_on_thread,"$d":_emscripten_set_main_loop,"ua":_emscripten_set_touchcancel_callback_on_thread,"wa":_emscripten_set_touchend_callback_on_thread,"va":_emscripten_set_touchmove_callback_on_thread,"xa":_emscripten_set_touchstart_callback_on_thread,"Ra":_emscripten_thread_sleep,"V":_exit,"M":_fd_close,"Ua":_fd_read,"Na":_fd_seek,"K":_fd_write,"q":_glActiveTexture,"D":_glAttachShader,"k":_glBindAttribLocation,"b":_glBindBuffer,"i":_glBindTexture,"Lb":_glBlendFunc,"e":_glBufferData,"o":_glBufferSubData,"N":_glClear,"O":_glClearColor,"eb":_glClearDepthf,"Fa":_glCompileShader,"La":_glCompressedTexImage2D,"Da":_glCreateProgram,"Ha":_glCreateShader,"Ab":_glCullFace,"m":_glDeleteBuffers,"G":_glDeleteProgram,"H":_glDeleteShader,"J":_glDeleteTextures,"Wb":_glDepthFunc,"I":_glDetachShader,"P":_glDisable,"h":_glDisableVertexAttribArray,"R":_glDrawArrays,"Q":_glDrawElements,"w":_glEnable,"c":_glEnableVertexAttribArray,"pb":_glFrontFace,"f":_glGenBuffers,"Oa":_glGenTextures,"v":_glGetAttribLocation,"Jc":_glGetFloatv,"Ba":_glGetProgramInfoLog,"F":_glGetProgramiv,"Ea":_glGetShaderInfoLog,"E":_glGetShaderiv,"n":_glGetString,"u":_glGetUniformLocation,"Ca":_glLinkProgram,"Wa":_glPixelStorei,"Ia":_glReadPixels,"Ga":_glShaderSource,"Ma":_glTexImage2D,"p":_glTexParameteri,"y":_glUniform1i,"r":_glUniform4f,"s":_glUniformMatrix4fv,"l":_glUseProgram,"Ja":_glVertexAttrib2f,"Ka":_glVertexAttrib3f,"t":_glVertexAttrib4f,"d":_glVertexAttribPointer,"_d":_glViewport,"A":_glfwCreateWindow,"pa":_glfwDefaultWindowHints,"$":_glfwDestroyWindow,"B":_glfwGetPrimaryMonitor,"j":_glfwGetTime,"oa":_glfwGetVideoModes,"qa":_glfwInit,"da":_glfwMakeContextCurrent,"ia":_glfwSetCharCallback,"ea":_glfwSetCursorEnterCallback,"ga":_glfwSetCursorPosCallback,"ka":_glfwSetDropCallback,"ra":_glfwSetErrorCallback,"ja":_glfwSetKeyCallback,"ha":_glfwSetMouseButtonCallback,"fa":_glfwSetScrollCallback,"la":_glfwSetWindowFocusCallback,"ma":_glfwSetWindowIconifyCallback,"W":_glfwSetWindowShouldClose,"na":_glfwSetWindowSizeCallback,"_":_glfwSwapBuffers,"ca":_glfwSwapInterval,"z":_glfwTerminate,"g":_glfwWindowHint,"ba":_time};var asm=createWasm();var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["be"]).apply(null,arguments)};var _free=Module["_free"]=function(){return(_free=Module["_free"]=Module["asm"]["ce"]).apply(null,arguments)};var _main=Module["_main"]=function(){return(_main=Module["_main"]=Module["asm"]["de"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["fe"]).apply(null,arguments)};var ___errno_location=Module["___errno_location"]=function(){return(___errno_location=Module["___errno_location"]=Module["asm"]["ge"]).apply(null,arguments)};var stackAlloc=Module["stackAlloc"]=function(){return(stackAlloc=Module["stackAlloc"]=Module["asm"]["he"]).apply(null,arguments)};Module["addRunDependency"]=addRunDependency;Module["removeRunDependency"]=removeRunDependency;Module["FS_createPath"]=FS.createPath;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createDevice"]=FS.createDevice;Module["FS_unlink"]=FS.unlink;var calledRun;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}var calledMain=false;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args){var entryFunction=Module["_main"];var argc=0;var argv=0;try{var ret=entryFunction(argc,argv);exit(ret,true)}catch(e){if(e instanceof ExitStatus){return}else if(e=="unwind"){noExitRuntime=true;return}else{var toLog=e;if(e&&typeof e==="object"&&e.stack){toLog=[e,e.stack]}err("exception thrown: "+toLog);quit_(1,e)}}finally{calledMain=true}}function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(shouldRunNow)callMain(args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}Module["run"]=run;function exit(status,implicit){if(implicit&&noExitRuntime&&status===0){return}if(noExitRuntime){}else{EXITSTATUS=status;exitRuntime();if(Module["onExit"])Module["onExit"](status);ABORT=true}quit_(status,new ExitStatus(status))}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}var shouldRunNow=true;if(Module["noInitialRun"])shouldRunNow=false;run();
diff --git a/examples/web/models/models_animation.wasm b/examples/web/models/models_animation.wasm
deleted file mode 100644
index 5ba9c14..0000000
--- a/examples/web/models/models_animation.wasm
+++ /dev/null
Binary files differ
diff --git a/examples/web/models/models_billboard.c b/examples/web/models/models_billboard.c
deleted file mode 100644
index af96569..0000000
--- a/examples/web/models/models_billboard.c
+++ /dev/null
@@ -1,104 +0,0 @@
-/*******************************************************************************************
-*
-* raylib [models] example - Drawing billboards (adapted for HTML5 platform)
-*
-* This example has been created using raylib 1.3 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
-*
-* Copyright (c) 2015 Ramon Santamaria (@raysan5)
-*
-********************************************************************************************/
-
-#include "raylib.h"
-
-#if defined(PLATFORM_WEB)
- #include <emscripten/emscripten.h>
-#endif
-
-//----------------------------------------------------------------------------------
-// Global Variables Definition
-//----------------------------------------------------------------------------------
-const int screenWidth = 800;
-const int screenHeight = 450;
-
-// Define the camera to look into our 3d world
-Camera camera = { 0 };
-
-Texture2D bill = { 0 }; // Our texture billboard
-Vector3 billPosition = { 0.0f, 2.0f, 0.0f }; // Position where draw billboard
-
-//----------------------------------------------------------------------------------
-// Module Functions Declaration
-//----------------------------------------------------------------------------------
-void UpdateDrawFrame(void); // Update and Draw one frame
-
-//----------------------------------------------------------------------------------
-// Program Main Entry Point
-//----------------------------------------------------------------------------------
-int main(void)
-{
- // Initialization
- //--------------------------------------------------------------------------------------
- InitWindow(screenWidth, screenHeight, "raylib [models] example - drawing billboards");
-
- camera.position = (Vector3){ 5.0f, 4.0f, 5.0f };
- camera.target = (Vector3){ 0.0f, 2.0f, 0.0f };
- camera.up = (Vector3){ 0.0f, 1.0f, 0.0f };
- camera.fovy = 45.0f;
- camera.projection = CAMERA_PERSPECTIVE;
-
- bill = LoadTexture("resources/billboard.png"); // Our texture billboard
-
- SetCameraMode(camera, CAMERA_ORBITAL); // Set an orbital camera mode
-
-#if defined(PLATFORM_WEB)
- emscripten_set_main_loop(UpdateDrawFrame, 60, 1);
-#else
- SetTargetFPS(60); // Set our game to run at 60 frames-per-second
- //--------------------------------------------------------------------------------------
-
- // Main game loop
- while (!WindowShouldClose()) // Detect window close button or ESC key
- {
- UpdateDrawFrame();
- }
-#endif
-
- // De-Initialization
- //--------------------------------------------------------------------------------------
- UnloadTexture(bill); // Unload texture
-
- CloseWindow(); // Close window and OpenGL context
- //--------------------------------------------------------------------------------------
-
- return 0;
-}
-
-//----------------------------------------------------------------------------------
-// Module Functions Definition
-//----------------------------------------------------------------------------------
-void UpdateDrawFrame(void)
-{
- // Update
- //----------------------------------------------------------------------------------
- UpdateCamera(&camera); // Update internal camera and our camera
- //----------------------------------------------------------------------------------
-
- // Draw
- //----------------------------------------------------------------------------------
- BeginDrawing();
-
- ClearBackground(RAYWHITE);
-
- BeginMode3D(camera);
-
- DrawGrid(10, 1.0f); // Draw a grid
- DrawBillboard(camera, bill, billPosition, 2.0f, WHITE);
-
- EndMode3D();
-
- DrawFPS(10, 10);
-
- EndDrawing();
- //----------------------------------------------------------------------------------
-} \ No newline at end of file
diff --git a/examples/web/models/models_billboard.data b/examples/web/models/models_billboard.data
deleted file mode 100644
index 8c99118..0000000
--- a/examples/web/models/models_billboard.data
+++ /dev/null
Binary files differ
diff --git a/examples/web/models/models_billboard.html b/examples/web/models/models_billboard.html
deleted file mode 100644
index 0a18742..0000000
--- a/examples/web/models/models_billboard.html
+++ /dev/null
@@ -1 +0,0 @@
-<!doctypehtml><html lang=en-us><head><meta charset=utf-8><meta content="text/html; charset=utf-8"http-equiv=Content-Type><title>raylib HTML5 GAME</title><meta content="raylib HTML5 GAME"name=title><meta content="New HTML5 videogame, developed using raylib videogames library"name=description><meta content="raylib, games, html5, programming, C, C++, library, learn, videogames"name=keywords><meta content="width=device-width"name=viewport><meta content="raylib HTML5 GAME"property=og:title><meta content=image/png property=og:image:type><meta content=https://www.raylib.com/common/img/raylib_logo.png property=og:image><meta content=raylib.com property=og:site_name><meta content=https://www.raylib.com/games.html property=og:url><meta content="New HTML5 videogame, developed using raylib videogames library"property=og:description><meta content=summary name=twitter:card><meta content=@raysan5 name=twitter:site><meta content="raylib HTML5 GAME"name=twitter:title><meta content=https://www.raylib.com/common/raylib_logo.png name=twitter:image><meta content=https://www.raylib.com/games.html name=twitter:url><meta content="New HTML5 videogame, developed using raylib videogames library"name=twitter:description><link href=https://www.raylib.com/favicon.ico rel="shortcut icon"><style>body{font-family:arial;margin:0;padding:none}#header{width:100%;height:80px;background-color:#888}#logo{width:64px;height:64px;float:left;position:relative;margin:10px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAAlC+aJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjExR/NCNwAAA7JJREFUaEPtk0FyWzEMQ+37X7fZhxX4YY3AD1OKF1nkzTRlSBCCLeVBnvl/AUdaELOunPno1kts1kixdtEZKVs+xIxebBkZsVknn/L5nFGDLR8T4zVC9fX19S/+tTFijrYK4jUjbPUtqBHpnEE6PkZD7jQZV8n5Recw1XQKciZuPaEtR6UjNs5ENVGMsBVqpPtER0ZMOhpyp8m4YL4OjD9yxsyZxnQycfMJETNSzsRE1+dihK3YMiJmpHTW3xpmXPC6BXlCHfqnBlsjY5hxf/6EVEOM2BTEi0fYCX4ONSI6Kq3Blg/prIOMq2CsRur4KQ0x64SdjOufEDEdHZGOhmz5RDHCVqhRuQ86YsVskbc+GXchLiHnFyYH+UigQDVGnImbT8hwFkgLg2qiM8JO6Ylx1FNLa3DmYwqCTsZd4BPqGJG7MwKzpeiWKTKxXkLMVE3MSOmsdwxLH6Rd/wCCLSNDx6djeKfJuArGeoYamRHpaEjnCBYZVy8hZqo2GI36qPjsiOiMsBXGcev4Mx9TLGTchbgEjN/uz6jGrBvDjg+LTNx8Qp2CbG2xMKgmOiPslJ4Yxx+eSnSkzlosZNwFPiHl7FRTkLNRJm4+IeVM0ymIH42wE/wcKalQI4MRl4EW3p6VcRWMua8F6WjIlqZDxvVPiHQ6CjVbYkV9ohhhp/Rk1wiYgpyJ78i4CsZbjkb8Qx+ihvzu3RPaKogZkY6GlEeMsKdPSOFIC8VoOusg44L5c+T8ouOoGhWbdWJ8tMi4egkxo4hoh2yNTGf3iIyr5Lyic4bRENXo+lvDjAt4C1Hk/OKtUaAj0+n4dMSZ2D+hrYJsaYh2SClG2jV9kJKKzhlGQ1SsW299Mq6C8dYZHTExo8fzieI5ivipYnYy7nwJqGKmOYyRwfiUBXITfh5qSHRGWEkfqJqURgvsdHyWYv7Ko8DnYYegk3EB00cxprdrJRzFd7YQzawu8L1GMTYS/KpPaAFTkIn1EmJmspJSs5xBzSyGhlkBmlxfNFiP5mw4wlbMh4F5Ddxp5jNINBdCEz9zPOC1zD7Q0HBdmXndwv0TMtydEdzlWJT4VZ8Qt9Qn4/onxMIwa5ZYGJU5yufBiCjwE50AGjLCVuS8Yt4H7OgZLKK5EKOsLviEWJSL/+0uMi7gLUSBseYwqEbXvSHCec1CJvZPyHCmYQffaBBfOTCGHM2aEbZi1+gO1XTWVXMnzrhAn5DSOZVsiQlHnSITKzGj6DeTcZWc/3oy7h9//PF4PL4BlvsWrb6RE+oAAAAASUVORK5CYII=)}.emscripten{padding-right:0;margin-left:auto;margin-right:auto;display:block}div.emscripten{text-align:center}div.emscripten_border{border:1px solid #000}canvas.emscripten{border:0 none;background:#000;width:100%}.spinner{height:30px;width:30px;margin:0;margin-top:20px;margin-left:20px;display:inline-block;vertical-align:top;-webkit-animation:rotation .8s linear infinite;-moz-animation:rotation .8s linear infinite;-o-animation:rotation .8s linear infinite;animation:rotation .8s linear infinite;border-left:5px solid #000;border-right:5px solid #000;border-bottom:5px solid #000;border-top:5px solid red;border-radius:100%;background-color:#f5f5f5}@-webkit-keyframes rotation{from{-webkit-transform:rotate(0)}to{-webkit-transform:rotate(360deg)}}@-moz-keyframes rotation{from{-moz-transform:rotate(0)}to{-moz-transform:rotate(360deg)}}@-o-keyframes rotation{from{-o-transform:rotate(0)}to{-o-transform:rotate(360deg)}}@keyframes rotation{from{transform:rotate(0)}to{transform:rotate(360deg)}}#status{display:inline-block;vertical-align:top;margin-top:30px;margin-left:20px;font-weight:700;color:#282828}#progress{height:0;width:0}#controls{display:inline-block;float:right;vertical-align:top;margin-top:15px;margin-right:20px}#output{width:100%;height:140px;margin:0 auto;margin-top:10px;display:block;background-color:#000;color:#25ae26;font-family:'Lucida Console',Monaco,monospace;outline:0}input[type=button]{background-color:#d3d3d3;border:4px solid #a9a9a9;color:#000;text-decoration:none;cursor:pointer;width:140px;height:50px}input[type=button]:hover{background-color:#f5f5f5ff;border-color:#000}</style></head><body><div id=header><a href=https://www.raylib.com id=logo></a><div class=spinner id=spinner></div><div class=emscripten id=status>Downloading...</div><span id=controls><span><input onclick=Module.requestFullscreen(!1,!1) type=button value="🖵 FULLSCREEN"></span><span><input onclick=toggleAudio() type=button value="🔇 SUSPEND"id=btn-audio></span></span><div class=emscripten><progress hidden id=progress max=100 value=0></progress></div></div><div class=emscripten_border><canvas class=emscripten id=canvas oncontextmenu=event.preventDefault() tabindex=-1></canvas></div><textarea id=output rows=8></textarea><script src=https://cdn.jsdelivr.net/gh/eligrey/FileSaver.js/dist/FileSaver.min.js></script><script>function saveFileFromMEMFSToDisk(e,a){var t,i=/^((?!chrome|android).)*safari/i.test(navigator.userAgent),o=FS.readFile(e);t=i?new Blob([o.buffer],{type:"application/octet-stream"}):new Blob([o.buffer],{type:"application/octet-binary"}),saveAs(t,a)}</script><script>var statusElement=document.querySelector("#status"),progressElement=document.querySelector("#progress"),spinnerElement=document.querySelector("#spinner"),Module={preRun:[],postRun:[],print:function(){var e=document.querySelector("#output");return e&&(e.value=""),function(t){arguments.length>1&&(t=Array.prototype.slice.call(arguments).join(" ")),console.log(t),e&&(e.value+=t+"\n",e.scrollTop=e.scrollHeight)}}(),printErr:function(e){arguments.length>1&&(e=Array.prototype.slice.call(arguments).join(" ")),console.error(e)},canvas:function(){var e=document.querySelector("#canvas");return e.addEventListener("webglcontextlost",(function(e){alert("WebGL context lost. You will need to reload the page."),e.preventDefault()}),!1),e}(),setStatus:function(e){if(Module.setStatus.last||(Module.setStatus.last={time:Date.now(),text:""}),e!==Module.setStatus.last.text){var t=e.match(/([^(]+)\((\d+(\.\d+)?)\/(\d+)\)/),n=Date.now();t&&n-Module.setStatus.last.time<30||(Module.setStatus.last.time=n,Module.setStatus.last.text=e,t?(e=t[1],progressElement.value=100*parseInt(t[2]),progressElement.max=100*parseInt(t[4]),progressElement.hidden=!0,spinnerElement.hidden=!1):(progressElement.value=null,progressElement.max=null,progressElement.hidden=!0,e||(spinnerElement.style.display="none")),statusElement.innerHTML=e)}},totalDependencies:0,monitorRunDependencies:function(e){this.totalDependencies=Math.max(this.totalDependencies,e),Module.setStatus(e?"Preparing... ("+(this.totalDependencies-e)+"/"+this.totalDependencies+")":"All downloads complete.")}};Module.setStatus("Downloading..."),window.onerror=function(){Module.setStatus("Exception thrown, see JavaScript console"),spinnerElement.style.display="none",Module.setStatus=function(e){e&&Module.printErr("[post-exception status] "+e)}}</script><script>var audioBtn=document.querySelector("#btn-audio");const audioContexList=[];function toggleAudio(){var t=!1;audioContexList.forEach(e=>{"suspended"==e.state?(e.resume(),t=!0):"running"==e.state&&e.suspend()}),audioBtn.value=t?"🔇 SUSPEND":"🔈 RESUME"}self.AudioContext=new Proxy(self.AudioContext,{construct(t,e){const n=new t(...e);return audioContexList.push(n),"suspended"==n.state&&(audioBtn.value="🔈 RESUME"),n}})</script><script src=models_billboard.js async></script></body></html> \ No newline at end of file
diff --git a/examples/web/models/models_billboard.js b/examples/web/models/models_billboard.js
deleted file mode 100644
index 7f7d160..0000000
--- a/examples/web/models/models_billboard.js
+++ /dev/null
@@ -1 +0,0 @@
-var Module=typeof Module!=="undefined"?Module:{};if(!Module.expectedDataFileDownloads){Module.expectedDataFileDownloads=0}Module.expectedDataFileDownloads++;(function(){var loadPackage=function(metadata){var PACKAGE_PATH;if(typeof window==="object"){PACKAGE_PATH=window["encodeURIComponent"](window.location.pathname.toString().substring(0,window.location.pathname.toString().lastIndexOf("/"))+"/")}else if(typeof location!=="undefined"){PACKAGE_PATH=encodeURIComponent(location.pathname.toString().substring(0,location.pathname.toString().lastIndexOf("/"))+"/")}else{throw"using preloaded data can only be done on a web page or in a web worker"}var PACKAGE_NAME="models/models_billboard.data";var REMOTE_PACKAGE_BASE="models_billboard.data";if(typeof Module["locateFilePackage"]==="function"&&!Module["locateFile"]){Module["locateFile"]=Module["locateFilePackage"];err("warning: you defined Module.locateFilePackage, that has been renamed to Module.locateFile (using your locateFilePackage for now)")}var REMOTE_PACKAGE_NAME=Module["locateFile"]?Module["locateFile"](REMOTE_PACKAGE_BASE,""):REMOTE_PACKAGE_BASE;var REMOTE_PACKAGE_SIZE=metadata["remote_package_size"];var PACKAGE_UUID=metadata["package_uuid"];function fetchRemotePackage(packageName,packageSize,callback,errback){var xhr=new XMLHttpRequest;xhr.open("GET",packageName,true);xhr.responseType="arraybuffer";xhr.onprogress=function(event){var url=packageName;var size=packageSize;if(event.total)size=event.total;if(event.loaded){if(!xhr.addedTotal){xhr.addedTotal=true;if(!Module.dataFileDownloads)Module.dataFileDownloads={};Module.dataFileDownloads[url]={loaded:event.loaded,total:size}}else{Module.dataFileDownloads[url].loaded=event.loaded}var total=0;var loaded=0;var num=0;for(var download in Module.dataFileDownloads){var data=Module.dataFileDownloads[download];total+=data.total;loaded+=data.loaded;num++}total=Math.ceil(total*Module.expectedDataFileDownloads/num);if(Module["setStatus"])Module["setStatus"]("Downloading data... ("+loaded+"/"+total+")")}else if(!Module.dataFileDownloads){if(Module["setStatus"])Module["setStatus"]("Downloading data...")}};xhr.onerror=function(event){throw new Error("NetworkError for: "+packageName)};xhr.onload=function(event){if(xhr.status==200||xhr.status==304||xhr.status==206||xhr.status==0&&xhr.response){var packageData=xhr.response;callback(packageData)}else{throw new Error(xhr.statusText+" : "+xhr.responseURL)}};xhr.send(null)}function handleError(error){console.error("package error:",error)}var fetchedCallback=null;var fetched=Module["getPreloadedPackage"]?Module["getPreloadedPackage"](REMOTE_PACKAGE_NAME,REMOTE_PACKAGE_SIZE):null;if(!fetched)fetchRemotePackage(REMOTE_PACKAGE_NAME,REMOTE_PACKAGE_SIZE,function(data){if(fetchedCallback){fetchedCallback(data);fetchedCallback=null}else{fetched=data}},handleError);function runWithFS(){function assert(check,msg){if(!check)throw msg+(new Error).stack}Module["FS_createPath"]("/","resources",true,true);function DataRequest(start,end,audio){this.start=start;this.end=end;this.audio=audio}DataRequest.prototype={requests:{},open:function(mode,name){this.name=name;this.requests[name]=this;Module["addRunDependency"]("fp "+this.name)},send:function(){},onload:function(){var byteArray=this.byteArray.subarray(this.start,this.end);this.finish(byteArray)},finish:function(byteArray){var that=this;Module["FS_createDataFile"](this.name,null,byteArray,true,true,true);Module["removeRunDependency"]("fp "+that.name);this.requests[this.name]=null}};var files=metadata["files"];for(var i=0;i<files.length;++i){new DataRequest(files[i]["start"],files[i]["end"],files[i]["audio"]).open("GET",files[i]["filename"])}function processPackageData(arrayBuffer){assert(arrayBuffer,"Loading data file failed.");assert(arrayBuffer instanceof ArrayBuffer,"bad input to processPackageData");var byteArray=new Uint8Array(arrayBuffer);DataRequest.prototype.byteArray=byteArray;var files=metadata["files"];for(var i=0;i<files.length;++i){DataRequest.prototype.requests[files[i].filename].onload()}Module["removeRunDependency"]("datafile_models/models_billboard.data")}Module["addRunDependency"]("datafile_models/models_billboard.data");if(!Module.preloadResults)Module.preloadResults={};Module.preloadResults[PACKAGE_NAME]={fromCache:false};if(fetched){processPackageData(fetched);fetched=null}else{fetchedCallback=processPackageData}}if(Module["calledRun"]){runWithFS()}else{if(!Module["preRun"])Module["preRun"]=[];Module["preRun"].push(runWithFS)}};loadPackage({"files":[{"filename":"/resources/billboard.png","start":0,"end":22374,"audio":0}],"remote_package_size":22374,"package_uuid":"33512a64-bd34-4445-b8cf-4bf3921d646a"})})();var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram="./this.program";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window==="object";ENVIRONMENT_IS_WORKER=typeof importScripts==="function";ENVIRONMENT_IS_NODE=typeof process==="object"&&typeof process.versions==="object"&&typeof process.versions.node==="string";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require("path").dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require("fs");if(!nodePath)nodePath=require("path");filename=nodePath["normalize"](filename);return nodeFS["readFileSync"](filename,binary?null:"utf8")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);if(typeof module!=="undefined"){module["exports"]=Module}process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",abort);quit_=function(status){process["exit"](status)};Module["inspect"]=function(){return"[Emscripten Module object]"}}else if(ENVIRONMENT_IS_SHELL){if(typeof read!="undefined"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer==="function"){return new Uint8Array(readbuffer(f))}data=read(f,"binary");assert(typeof data==="object");return data};if(typeof scriptArgs!="undefined"){arguments_=scriptArgs}else if(typeof arguments!="undefined"){arguments_=arguments}if(typeof quit==="function"){quit_=function(status){quit(status)}}if(typeof print!=="undefined"){if(typeof console==="undefined")console={};console.log=print;console.warn=console.error=typeof printErr!=="undefined"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!=="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf("/")+1)}else{scriptDirectory=""}{read_=function(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=function(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var STACK_ALIGN=16;function alignMemory(size,factor){if(!factor)factor=STACK_ALIGN;return Math.ceil(size/factor)*factor}function warnOnce(text){if(!warnOnce.shown)warnOnce.shown={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;err(text)}}var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime=Module["noExitRuntime"]||true;if(typeof WebAssembly!=="object"){abort("no native wasm support detected")}function setValue(ptr,value,type,noSafe){type=type||"i8";if(type.charAt(type.length-1)==="*")type="i32";switch(type){case"i1":HEAP8[ptr>>0]=value;break;case"i8":HEAP8[ptr>>0]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":tempI64=[value>>>0,(tempDouble=value,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;default:abort("invalid type for setValue: "+type)}}var wasmMemory;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}var ALLOC_NORMAL=0;var ALLOC_STACK=1;function allocate(slab,allocator){var ret;if(allocator==ALLOC_STACK){ret=stackAlloc(slab.length)}else{ret=_malloc(slab.length)}if(slab.subarray||slab.slice){HEAPU8.set(slab,ret)}else{HEAPU8.set(new Uint8Array(slab),ret)}return ret}var UTF8Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heap,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heap[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str="";while(idx<endPtr){var u0=heap[idx++];if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heap[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heap[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u0=(u0&7)<<18|u1<<12|u2<<6|heap[idx++]&63}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||16777216;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;__ATINIT__.push({func:function(){___wasm_call_ctors()}});function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){FS.ignorePermissions=false;callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}what+="";err(what);ABORT=true;EXITSTATUS=1;what="abort("+what+"). Build with -s ASSERTIONS=1 for more info.";var e=new WebAssembly.RuntimeError(what);throw e}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix="file://";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile="models_billboard.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}else{throw"both async and sync fetching of the wasm failed"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch==="function"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={"a":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;wasmMemory=Module["asm"]["Xd"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module["asm"]["_d"];removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiatedSource(output){receiveInstance(output["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming==="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch==="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync();return{}}var tempDouble;var tempI64;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback(Module);continue}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){wasmTable.get(func)()}else{wasmTable.get(func)(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}function ___assert_fail(condition,filename,line,func){abort("Assertion failed: "+UTF8ToString(condition)+", at: "+[filename?UTF8ToString(filename):"unknown filename",line,func?UTF8ToString(func):"unknown function"])}function setErrNo(value){HEAP32[___errno_location()>>2]=value;return value}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path==="/")return"/";path=PATH.normalize(path);path=path.replace(/\/$/,"");var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}};function getRandomDevice(){if(typeof crypto==="object"&&typeof crypto["getRandomValues"]==="function"){var randomBuffer=new Uint8Array(1);return function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]}}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");return function(){return crypto_module["randomBytes"](1)[0]}}catch(e){}}return function(){abort("randomDevice")}}var PATH_FS={resolve:function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!=="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=path.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(function(p){return!!p}),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:function(from,to){from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start<arr.length;start++){if(arr[start]!=="")break}var end=arr.length-1;for(;end>=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i<length;i++){if(fromParts[i]!==toParts[i]){samePartsLength=i;break}}var outputParts=[];for(var i=samePartsLength;i<fromParts.length;i++){outputParts.push("..")}outputParts=outputParts.concat(toParts.slice(samePartsLength));return outputParts.join("/")}};var TTY={ttys:[],init:function(){},shutdown:function(){},register:function(dev,ops){TTY.ttys[dev]={input:[],output:[],ops:ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open:function(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close:function(stream){stream.tty.ops.flush(stream.tty)},flush:function(stream){stream.tty.ops.flush(stream.tty)},read:function(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i<length;i++){var result;try{result=stream.tty.ops.get_char(stream.tty)}catch(e){throw new FS.ErrnoError(29)}if(result===undefined&&bytesRead===0){throw new FS.ErrnoError(6)}if(result===null||result===undefined)break;bytesRead++;buffer[offset+i]=result}if(bytesRead){stream.node.timestamp=Date.now()}return bytesRead},write:function(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.put_char){throw new FS.ErrnoError(60)}try{for(var i=0;i<length;i++){stream.tty.ops.put_char(stream.tty,buffer[offset+i])}}catch(e){throw new FS.ErrnoError(29)}if(length){stream.node.timestamp=Date.now()}return i}},default_tty_ops:{get_char:function(tty){if(!tty.input.length){var result=null;if(ENVIRONMENT_IS_NODE){var BUFSIZE=256;var buf=Buffer.alloc?Buffer.alloc(BUFSIZE):new Buffer(BUFSIZE);var bytesRead=0;try{bytesRead=nodeFS.readSync(process.stdin.fd,buf,0,BUFSIZE,null)}catch(e){if(e.toString().indexOf("EOF")!=-1)bytesRead=0;else throw e}if(bytesRead>0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function mmapAlloc(size){var alignedSize=alignMemory(size,16384);var ptr=_malloc(alignedSize);while(size<alignedSize)HEAP8[ptr+size++]=0;return ptr}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray:function(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage:function(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity<CAPACITY_DOUBLING_MAX?2:1.125)>>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage:function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr:function(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr:function(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp;old_node.parent=new_dir},unlink:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir:function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i<size;i++)buffer[offset+i]=contents[position+i]}return size},write:function(stream,buffer,offset,length,position,canOwn){if(!length)return 0;var node=stream.node;node.timestamp=Date.now();if(buffer.subarray&&(!node.contents||node.contents.subarray)){if(canOwn){node.contents=buffer.subarray(offset,offset+length);node.usedBytes=length;return length}else if(node.usedBytes===0&&position===0){node.contents=buffer.slice(offset,offset+length);node.usedBytes=length;return length}else if(position+length<=node.usedBytes){node.contents.set(buffer.subarray(offset,offset+length),position);return length}}MEMFS.expandFileStorage(node,position+length);if(node.contents.subarray&&buffer.subarray){node.contents.set(buffer.subarray(offset,offset+length),position)}else{for(var i=0;i<length;i++){node.contents[position+i]=buffer[offset+i]}}node.usedBytes=Math.max(node.usedBytes,position+length);return length},llseek:function(stream,offset,whence){var position=offset;if(whence===1){position+=stream.position}else if(whence===2){if(FS.isFile(stream.node.mode)){position+=stream.node.usedBytes}}if(position<0){throw new FS.ErrnoError(28)}return position},allocate:function(stream,offset,length){MEMFS.expandFileStorage(stream.node,offset+length);stream.node.usedBytes=Math.max(stream.node.usedBytes,offset+length)},mmap:function(stream,address,length,position,prot,flags){if(address!==0){throw new FS.ErrnoError(28)}if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}var ptr;var allocated;var contents=stream.node.contents;if(!(flags&2)&&contents.buffer===buffer){allocated=false;ptr=contents.byteOffset}else{if(position>0||position+length<contents.length){if(contents.subarray){contents=contents.subarray(position,position+length)}else{contents=Array.prototype.slice.call(contents,position,position+length)}}allocated=true;ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}HEAP8.set(contents,ptr)}return{ptr:ptr,allocated:allocated}},msync:function(stream,buffer,offset,length,mmapFlags){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}if(mmapFlags&2){return 0}var bytesWritten=MEMFS.stream_ops.write(stream,buffer,0,length,offset,false);return 0}}};var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,trackingDelegate:{},tracking:{openFlags:{READ:1,WRITE:2}},ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath:function(path,opts){path=PATH_FS.resolve(FS.cwd(),path);opts=opts||{};if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};for(var key in defaults){if(opts[key]===undefined){opts[key]=defaults[key]}}if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),false);var current=FS.root;var current_path="/";for(var i=0;i<parts.length;i++){var islast=i===parts.length-1;if(islast&&opts.parent){break}current=FS.lookupNode(current,parts[i]);current_path=PATH.join2(current_path,parts[i]);if(FS.isMountpoint(current)){if(!islast||islast&&opts.follow_mount){current=current.mounted.root}}if(!islast||opts.follow){var count=0;while(FS.isLink(current.mode)){var link=FS.readlink(current_path);current_path=PATH_FS.resolve(PATH.dirname(current_path),link);var lookup=FS.lookupPath(current_path,{recurse_count:opts.recurse_count});current=lookup.node;if(count++>40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath:function(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?mount+"/"+path:mount+path}path=path?node.name+"/"+path:node.name;node=node.parent}},hashName:function(parentid,name){var hash=0;for(var i=0;i<name.length;i++){hash=(hash<<5)-hash+name.charCodeAt(i)|0}return(parentid+hash>>>0)%FS.nameTable.length},hashAddNode:function(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode:function(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode:function(parent,name){var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode:function(parent,name,mode,rdev){var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:function(node){FS.hashRemoveNode(node)},isRoot:function(node){return node===node.parent},isMountpoint:function(node){return!!node.mounted},isFile:function(mode){return(mode&61440)===32768},isDir:function(mode){return(mode&61440)===16384},isLink:function(mode){return(mode&61440)===40960},isChrdev:function(mode){return(mode&61440)===8192},isBlkdev:function(mode){return(mode&61440)===24576},isFIFO:function(mode){return(mode&61440)===4096},isSocket:function(mode){return(mode&49152)===49152},flagModes:{"r":0,"r+":2,"w":577,"w+":578,"a":1089,"a+":1090},modeStringToFlags:function(str){var flags=FS.flagModes[str];if(typeof flags==="undefined"){throw new Error("Unknown file open mode: "+str)}return flags},flagsToPermissionString:function(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions:function(node,perms){if(FS.ignorePermissions){return 0}if(perms.indexOf("r")!==-1&&!(node.mode&292)){return 2}else if(perms.indexOf("w")!==-1&&!(node.mode&146)){return 2}else if(perms.indexOf("x")!==-1&&!(node.mode&73)){return 2}return 0},mayLookup:function(dir){var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate:function(dir,name){try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete:function(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen:function(node,flags){if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd:function(fd_start,fd_end){fd_start=fd_start||0;fd_end=fd_end||FS.MAX_OPEN_FDS;for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:function(fd){return FS.streams[fd]},createStream:function(stream,fd_start,fd_end){if(!FS.FSStream){FS.FSStream=function(){};FS.FSStream.prototype={object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}}}}var newStream=new FS.FSStream;for(var p in stream){newStream[p]=stream[p]}stream=newStream;var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:function(fd){FS.streams[fd]=null},chrdev_stream_ops:{open:function(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}},llseek:function(){throw new FS.ErrnoError(70)}},major:function(dev){return dev>>8},minor:function(dev){return dev&255},makedev:function(ma,mi){return ma<<8|mi},registerDevice:function(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:function(dev){return FS.devices[dev]},getMounts:function(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts},syncfs:function(populate,callback){if(typeof populate==="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err("warning: "+FS.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work")}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(function(mount){if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount:function(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount:function(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(function(hash){var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.indexOf(current.mount)!==-1){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup:function(parent,name){return parent.node_ops.lookup(parent,name)},mknod:function(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create:function(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:function(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree:function(path,mode){var dirs=path.split("/");var d="";for(var i=0;i<dirs.length;++i){if(!dirs[i])continue;d+="/"+dirs[i];try{FS.mkdir(d,mode)}catch(e){if(e.errno!=20)throw e}}},mkdev:function(path,mode,dev){if(typeof dev==="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:function(oldpath,newpath){if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:function(old_path,new_path){var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}try{if(FS.trackingDelegate["willMovePath"]){FS.trackingDelegate["willMovePath"](old_path,new_path)}}catch(e){err("FS.trackingDelegate['willMovePath']('"+old_path+"', '"+new_path+"') threw an exception: "+e.message)}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}try{if(FS.trackingDelegate["onMovePath"])FS.trackingDelegate["onMovePath"](old_path,new_path)}catch(e){err("FS.trackingDelegate['onMovePath']('"+old_path+"', '"+new_path+"') threw an exception: "+e.message)}},rmdir:function(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}try{if(FS.trackingDelegate["willDeletePath"]){FS.trackingDelegate["willDeletePath"](path)}}catch(e){err("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: "+e.message)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate["onDeletePath"])FS.trackingDelegate["onDeletePath"](path)}catch(e){err("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: "+e.message)}},readdir:function(path){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:function(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}try{if(FS.trackingDelegate["willDeletePath"]){FS.trackingDelegate["willDeletePath"](path)}}catch(e){err("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: "+e.message)}parent.node_ops.unlink(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate["onDeletePath"])FS.trackingDelegate["onDeletePath"](path)}catch(e){err("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: "+e.message)}},readlink:function(path){var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:function(path,dontFollow){var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:function(path){return FS.stat(path,true)},chmod:function(path,mode,dontFollow){var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:function(path,mode){FS.chmod(path,mode,true)},fchmod:function(fd,mode){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:function(path,uid,gid,dontFollow){var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:function(path,uid,gid){FS.chown(path,uid,gid,true)},fchown:function(fd,uid,gid){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:function(path,len){if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:function(fd,len){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:function(path,atime,mtime){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:function(path,flags,mode,fd_start,fd_end){if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags==="string"?FS.modeStringToFlags(flags):flags;mode=typeof mode==="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path==="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false},fd_start,fd_end);if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1;err("FS.trackingDelegate error on read file: "+path)}}try{if(FS.trackingDelegate["onOpenFile"]){var trackingFlags=0;if((flags&2097155)!==1){trackingFlags|=FS.tracking.openFlags.READ}if((flags&2097155)!==0){trackingFlags|=FS.tracking.openFlags.WRITE}FS.trackingDelegate["onOpenFile"](path,trackingFlags)}}catch(e){err("FS.trackingDelegate['onOpenFile']('"+path+"', flags) threw an exception: "+e.message)}return stream},close:function(stream){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:function(stream){return stream.fd===null},llseek:function(stream,offset,whence){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:function(stream,buffer,offset,length,position){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!=="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:function(stream,buffer,offset,length,position,canOwn){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!=="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;try{if(stream.path&&FS.trackingDelegate["onWriteToFile"])FS.trackingDelegate["onWriteToFile"](stream.path)}catch(e){err("FS.trackingDelegate['onWriteToFile']('"+stream.path+"') threw an exception: "+e.message)}return bytesWritten},allocate:function(stream,offset,length){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:function(stream,address,length,position,prot,flags){if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,address,length,position,prot,flags)},msync:function(stream,buffer,offset,length,mmapFlags){if(!stream||!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:function(stream){return 0},ioctl:function(stream,cmd,arg){if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:function(path,opts){opts=opts||{};opts.flags=opts.flags||0;opts.encoding=opts.encoding||"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error('Invalid encoding type "'+opts.encoding+'"')}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding==="binary"){ret=buf}FS.close(stream);return ret},writeFile:function(path,data,opts){opts=opts||{};opts.flags=opts.flags||577;var stream=FS.open(path,opts.flags,opts.mode);if(typeof data==="string"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,undefined,opts.canOwn)}else if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{throw new Error("Unsupported data type")}FS.close(stream)},cwd:function(){return FS.currentPath},chdir:function(path){var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories:function(){FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices:function(){FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:function(){return 0},write:function(stream,buffer,offset,length,pos){return length}});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var random_device=getRandomDevice();FS.createDevice("/dev","random",random_device);FS.createDevice("/dev","urandom",random_device);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories:function(){FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount:function(){var node=FS.createNode(proc_self,"fd",16384|511,73);node.node_ops={lookup:function(parent,name){var fd=+name;var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:function(){return stream.path}}};ret.parent=ret;return ret}};return node}},{},"/proc/self/fd")},createStandardStreams:function(){if(Module["stdin"]){FS.createDevice("/dev","stdin",Module["stdin"])}else{FS.symlink("/dev/tty","/dev/stdin")}if(Module["stdout"]){FS.createDevice("/dev","stdout",null,Module["stdout"])}else{FS.symlink("/dev/tty","/dev/stdout")}if(Module["stderr"]){FS.createDevice("/dev","stderr",null,Module["stderr"])}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},ensureErrnoError:function(){if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.node=node;this.setErrno=function(errno){this.errno=errno};this.setErrno(errno);this.message="FS error"};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[44].forEach(function(code){FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack="<generic error, no stack>"})},staticInit:function(){FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={"MEMFS":MEMFS}},init:function(input,output,error){FS.init.initialized=true;FS.ensureErrnoError();Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams()},quit:function(){FS.init.initialized=false;var fflush=Module["_fflush"];if(fflush)fflush(0);for(var i=0;i<FS.streams.length;i++){var stream=FS.streams[i];if(!stream){continue}FS.close(stream)}},getMode:function(canRead,canWrite){var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode},findObject:function(path,dontResolveLastLink){var ret=FS.analyzePath(path,dontResolveLastLink);if(ret.exists){return ret.object}else{return null}},analyzePath:function(path,dontResolveLastLink){try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath:function(parent,path,canRead,canWrite){parent=typeof parent==="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:function(parent,name,properties,canRead,canWrite){var path=PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:function(parent,name,data,canRead,canWrite,canOwn){var path=name?PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name):parent;var mode=FS.getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data==="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i<len;++i)arr[i]=data.charCodeAt(i);data=arr}FS.chmod(node,mode|146);var stream=FS.open(node,577);FS.write(stream,data,0,data.length,0,canOwn);FS.close(stream);FS.chmod(node,mode)}return node},createDevice:function(parent,name,input,output){var path=PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:function(stream){stream.seekable=false},close:function(stream){if(output&&output.buffer&&output.buffer.length){output(10)}},read:function(stream,buffer,offset,length,pos){var bytesRead=0;for(var i=0;i<length;i++){var result;try{result=input()}catch(e){throw new FS.ErrnoError(29)}if(result===undefined&&bytesRead===0){throw new FS.ErrnoError(6)}if(result===null||result===undefined)break;bytesRead++;buffer[offset+i]=result}if(bytesRead){stream.node.timestamp=Date.now()}return bytesRead},write:function(stream,buffer,offset,length,pos){for(var i=0;i<length;i++){try{output(buffer[offset+i])}catch(e){throw new FS.ErrnoError(29)}}if(length){stream.node.timestamp=Date.now()}return i}});return FS.mkdev(path,mode,dev)},forceLoadFile:function(obj){if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!=="undefined"){throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}},createLazyFile:function(parent,name,url,canRead,canWrite){function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=function(from,to){if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);if(typeof Uint8Array!="undefined")xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}else{return intArrayFromString(xhr.responseText||"",true)}};var lazyArray=this;lazyArray.setDataGetter(function(chunkNum){var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]==="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]==="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!=="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._length}},chunkSize:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(function(key){var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){FS.forceLoadFile(node);return fn.apply(null,arguments)}});stream_ops.read=function stream_ops_read(stream,buffer,offset,length,position){FS.forceLoadFile(node);var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i<size;i++){buffer[offset+i]=contents[position+i]}}else{for(var i=0;i<size;i++){buffer[offset+i]=contents.get(position+i)}}return size};node.stream_ops=stream_ops;return node},createPreloadedFile:function(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish){Browser.init();var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency("cp "+fullname);function processData(byteArray){function finish(byteArray){if(preFinish)preFinish();if(!dontCreateFile){FS.createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}if(onload)onload();removeRunDependency(dep)}var handled=false;Module["preloadPlugins"].forEach(function(plugin){if(handled)return;if(plugin["canHandle"](fullname)){plugin["handle"](byteArray,fullname,finish,function(){if(onerror)onerror();removeRunDependency(dep)});handled=true}});if(!handled)finish(byteArray)}addRunDependency(dep);if(typeof url=="string"){Browser.asyncLoad(url,function(byteArray){processData(byteArray)},onerror)}else{processData(url)}},indexedDB:function(){return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME:function(){return"EM_FS_"+window.location.pathname},DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:function(paths,onload,onerror){onload=onload||function(){};onerror=onerror||function(){};var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=function openRequest_onupgradeneeded(){out("creating db");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME)};openRequest.onsuccess=function openRequest_onsuccess(){var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],"readwrite");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(function(path){var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=function putRequest_onsuccess(){ok++;if(ok+fail==total)finish()};putRequest.onerror=function putRequest_onerror(){fail++;if(ok+fail==total)finish()}});transaction.onerror=onerror};openRequest.onerror=onerror},loadFilesFromDB:function(paths,onload,onerror){onload=onload||function(){};onerror=onerror||function(){};var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=function openRequest_onsuccess(){var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],"readonly")}catch(e){onerror(e);return}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(function(path){var getRequest=files.get(path);getRequest.onsuccess=function getRequest_onsuccess(){if(FS.analyzePath(path).exists){FS.unlink(path)}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish()};getRequest.onerror=function getRequest_onerror(){fail++;if(ok+fail==total)finish()}});transaction.onerror=onerror};openRequest.onerror=onerror}};var SYSCALLS={mappings:{},DEFAULT_POLLMASK:5,umask:511,calculateAt:function(dirfd,path,allowEmpty){if(path[0]==="/"){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=FS.getStream(dirfd);if(!dirstream)throw new FS.ErrnoError(8);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(func,path,buf){try{var stat=func(path)}catch(e){if(e&&e.node&&PATH.normalize(path)!==PATH.normalize(FS.getPath(e.node))){return-54}throw e}HEAP32[buf>>2]=stat.dev;HEAP32[buf+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;HEAP32[buf+56>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+76>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+80>>2]=tempI64[0],HEAP32[buf+84>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},doMkdir:function(path,mode){path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0},doMknod:function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}FS.mknod(path,mode,dev);return 0},doReadlink:function(path,buf,bufsize){if(bufsize<=0)return-28;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len},doAccess:function(path,amode){if(amode&~7){return-28}var node;var lookup=FS.lookupPath(path,{follow:true});node=lookup.node;if(!node){return-44}var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0},doDup:function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd},doReadv:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i<iovcnt;i++){var ptr=HEAP32[iov+i*8>>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr<len)break}return ret},doWritev:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i<iovcnt;i++){var ptr=HEAP32[iov+i*8>>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream},get64:function(low,high){return low}};function ___sys_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-28}var newStream;newStream=FS.open(stream.path,stream.flags,0,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0}case 12:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 13:case 14:return 0;case 16:case 8:return-28;case 9:setErrNo(28);return-1;default:{return-28}}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_ioctl(fd,op,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(op){case 21509:case 21505:{if(!stream.tty)return-59;return 0}case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-59;return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{if(!stream.tty)return-59;return 0}default:abort("bad ioctl syscall "+op)}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_open(path,flags,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(path);var mode=varargs?SYSCALLS.get():0;var stream=FS.open(pathname,flags,mode);return stream.fd}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}var JSEvents={inEventHandler:0,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return false;for(var i in arrA){if(arrA[i]!=arrB[i])return false}return true}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList)){return}}JSEvents.deferredCalls.push({targetFunction:targetFunction,precedence:precedence,argsList:argsList});JSEvents.deferredCalls.sort(function(x,y){return x.precedence<y.precedence})},removeDeferredCalls:function(targetFunction){for(var i=0;i<JSEvents.deferredCalls.length;++i){if(JSEvents.deferredCalls[i].targetFunction==targetFunction){JSEvents.deferredCalls.splice(i,1);--i}}},canPerformEventHandlerRequests:function(){return JSEvents.inEventHandler&&JSEvents.currentEventHandler.allowsDeferredCalls},runDeferredCalls:function(){if(!JSEvents.canPerformEventHandlerRequests()){return}for(var i=0;i<JSEvents.deferredCalls.length;++i){var call=JSEvents.deferredCalls[i];JSEvents.deferredCalls.splice(i,1);--i;call.targetFunction.apply(null,call.argsList)}},eventHandlers:[],removeAllHandlersOnTarget:function(target,eventTypeString){for(var i=0;i<JSEvents.eventHandlers.length;++i){if(JSEvents.eventHandlers[i].target==target&&(!eventTypeString||eventTypeString==JSEvents.eventHandlers[i].eventTypeString)){JSEvents._removeHandler(i--)}}},_removeHandler:function(i){var h=JSEvents.eventHandlers[i];h.target.removeEventListener(h.eventTypeString,h.eventListenerFunc,h.useCapture);JSEvents.eventHandlers.splice(i,1)},registerOrRemoveHandler:function(eventHandler){var jsEventHandler=function jsEventHandler(event){++JSEvents.inEventHandler;JSEvents.currentEventHandler=eventHandler;JSEvents.runDeferredCalls();eventHandler.handlerFunc(event);JSEvents.runDeferredCalls();--JSEvents.inEventHandler};if(eventHandler.callbackfunc){eventHandler.eventListenerFunc=jsEventHandler;eventHandler.target.addEventListener(eventHandler.eventTypeString,jsEventHandler,eventHandler.useCapture);JSEvents.eventHandlers.push(eventHandler);JSEvents.registerRemoveEventListeners()}else{for(var i=0;i<JSEvents.eventHandlers.length;++i){if(JSEvents.eventHandlers[i].target==eventHandler.target&&JSEvents.eventHandlers[i].eventTypeString==eventHandler.eventTypeString){JSEvents._removeHandler(i--)}}}},getNodeNameForTarget:function(target){if(!target)return"";if(target==window)return"#window";if(target==screen)return"#screen";return target&&target.nodeName?target.nodeName:""},fullscreenEnabled:function(){return document.fullscreenEnabled||document.webkitFullscreenEnabled}};function requestPointerLock(target){if(target.requestPointerLock){target.requestPointerLock()}else if(target.msRequestPointerLock){target.msRequestPointerLock()}else{if(document.body.requestPointerLock||document.body.msRequestPointerLock){return-3}else{return-1}}return 0}function _emscripten_exit_pointerlock(){JSEvents.removeDeferredCalls(requestPointerLock);if(document.exitPointerLock){document.exitPointerLock()}else if(document.msExitPointerLock){document.msExitPointerLock()}else{return-1}return 0}function maybeCStringToJsString(cString){return cString>2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!=="undefined"?document:0,typeof window!=="undefined"?window:0];function findEventTarget(target){target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!=="undefined"?document.querySelector(target):undefined);return domElement}function getBoundingClientRect(e){return specialHTMLTargets.indexOf(e)<0?e.getBoundingClientRect():{"left":0,"top":0}}function _emscripten_get_element_css_size(target,width,height){target=findEventTarget(target);if(!target)return-4;var rect=getBoundingClientRect(target);HEAPF64[width>>3]=rect.width;HEAPF64[height>>3]=rect.height;return 0}function fillGamepadEventData(eventStruct,e){HEAPF64[eventStruct>>3]=e.timestamp;for(var i=0;i<e.axes.length;++i){HEAPF64[eventStruct+i*8+16>>3]=e.axes[i]}for(var i=0;i<e.buttons.length;++i){if(typeof e.buttons[i]==="object"){HEAPF64[eventStruct+i*8+528>>3]=e.buttons[i].value}else{HEAPF64[eventStruct+i*8+528>>3]=e.buttons[i]}}for(var i=0;i<e.buttons.length;++i){if(typeof e.buttons[i]==="object"){HEAP32[eventStruct+i*4+1040>>2]=e.buttons[i].pressed}else{HEAP32[eventStruct+i*4+1040>>2]=e.buttons[i]==1}}HEAP32[eventStruct+1296>>2]=e.connected;HEAP32[eventStruct+1300>>2]=e.index;HEAP32[eventStruct+8>>2]=e.axes.length;HEAP32[eventStruct+12>>2]=e.buttons.length;stringToUTF8(e.id,eventStruct+1304,64);stringToUTF8(e.mapping,eventStruct+1368,64)}function _emscripten_get_gamepad_status(index,gamepadState){if(index<0||index>=JSEvents.lastGamepadState.length)return-5;if(!JSEvents.lastGamepadState[index])return-7;fillGamepadEventData(gamepadState,JSEvents.lastGamepadState[index]);return 0}function _emscripten_get_num_gamepads(){return JSEvents.lastGamepadState.length}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension("ANGLE_instanced_arrays");if(ext){ctx["vertexAttribDivisor"]=function(index,divisor){ext["vertexAttribDivisorANGLE"](index,divisor)};ctx["drawArraysInstanced"]=function(mode,first,count,primcount){ext["drawArraysInstancedANGLE"](mode,first,count,primcount)};ctx["drawElementsInstanced"]=function(mode,count,type,indices,primcount){ext["drawElementsInstancedANGLE"](mode,count,type,indices,primcount)};return 1}}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension("OES_vertex_array_object");if(ext){ctx["createVertexArray"]=function(){return ext["createVertexArrayOES"]()};ctx["deleteVertexArray"]=function(vao){ext["deleteVertexArrayOES"](vao)};ctx["bindVertexArray"]=function(vao){ext["bindVertexArrayOES"](vao)};ctx["isVertexArray"]=function(vao){return ext["isVertexArrayOES"](vao)};return 1}}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension("WEBGL_draw_buffers");if(ext){ctx["drawBuffers"]=function(n,bufs){ext["drawBuffersWEBGL"](n,bufs)};return 1}}function __webgl_enable_WEBGL_multi_draw(ctx){return!!(ctx.multiDrawWebgl=ctx.getExtension("WEBGL_multi_draw"))}var GL={counter:1,buffers:[],programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:[],offscreenCanvases:{},timerQueriesEXT:[],programInfos:{},stringCache:{},unpackAlignment:4,recordError:function recordError(errorCode){if(!GL.lastError){GL.lastError=errorCode}},getNewId:function(table){var ret=GL.counter++;for(var i=table.length;i<ret;i++){table[i]=null}return ret},getSource:function(shader,count,string,length){var source="";for(var i=0;i<count;++i){var len=length?HEAP32[length+i*4>>2]:-1;source+=UTF8ToString(HEAP32[string+i*4>>2],len<0?undefined:len)}return source},createContext:function(canvas,webGLContextAttributes){var ctx=canvas.getContext("webgl",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:function(ctx,webGLContextAttributes){var handle=GL.getNewId(GL.contexts);var context={handle:handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};if(ctx.canvas)ctx.canvas.GLctxObject=context;GL.contexts[handle]=context;if(typeof webGLContextAttributes.enableExtensionsByDefault==="undefined"||webGLContextAttributes.enableExtensionsByDefault){GL.initExtensions(context)}return handle},makeContextCurrent:function(contextHandle){GL.currentContext=GL.contexts[contextHandle];Module.ctx=GLctx=GL.currentContext&&GL.currentContext.GLctx;return!(contextHandle&&!GLctx)},getContext:function(contextHandle){return GL.contexts[contextHandle]},deleteContext:function(contextHandle){if(GL.currentContext===GL.contexts[contextHandle])GL.currentContext=null;if(typeof JSEvents==="object")JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas);if(GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas)GL.contexts[contextHandle].GLctx.canvas.GLctxObject=undefined;GL.contexts[contextHandle]=null},initExtensions:function(context){if(!context)context=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;__webgl_enable_ANGLE_instanced_arrays(GLctx);__webgl_enable_OES_vertex_array_object(GLctx);__webgl_enable_WEBGL_draw_buffers(GLctx);GLctx.disjointTimerQueryExt=GLctx.getExtension("EXT_disjoint_timer_query");__webgl_enable_WEBGL_multi_draw(GLctx);var exts=GLctx.getSupportedExtensions()||[];exts.forEach(function(ext){if(ext.indexOf("lose_context")<0&&ext.indexOf("debug")<0){GLctx.getExtension(ext)}})},populateUniformTable:function(program){var p=GL.programs[program];var ptable=GL.programInfos[program]={uniforms:{},maxUniformLength:0,maxAttributeLength:-1,maxUniformBlockNameLength:-1};var utable=ptable.uniforms;var numUniforms=GLctx.getProgramParameter(p,35718);for(var i=0;i<numUniforms;++i){var u=GLctx.getActiveUniform(p,i);var name=u.name;ptable.maxUniformLength=Math.max(ptable.maxUniformLength,name.length+1);if(name.slice(-1)=="]"){name=name.slice(0,name.lastIndexOf("["))}var loc=GLctx.getUniformLocation(p,name);if(loc){var id=GL.getNewId(GL.uniforms);utable[name]=[u.size,id];GL.uniforms[id]=loc;for(var j=1;j<u.size;++j){var n=name+"["+j+"]";loc=GLctx.getUniformLocation(p,n);id=GL.getNewId(GL.uniforms);GL.uniforms[id]=loc}}}}};function _emscripten_glActiveTexture(x0){GLctx["activeTexture"](x0)}function _emscripten_glAttachShader(program,shader){GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _emscripten_glBeginQueryEXT(target,id){GLctx.disjointTimerQueryExt["beginQueryEXT"](target,GL.timerQueriesEXT[id])}function _emscripten_glBindAttribLocation(program,index,name){GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))}function _emscripten_glBindBuffer(target,buffer){GLctx.bindBuffer(target,GL.buffers[buffer])}function _emscripten_glBindFramebuffer(target,framebuffer){GLctx.bindFramebuffer(target,GL.framebuffers[framebuffer])}function _emscripten_glBindRenderbuffer(target,renderbuffer){GLctx.bindRenderbuffer(target,GL.renderbuffers[renderbuffer])}function _emscripten_glBindTexture(target,texture){GLctx.bindTexture(target,GL.textures[texture])}function _emscripten_glBindVertexArrayOES(vao){GLctx["bindVertexArray"](GL.vaos[vao])}function _emscripten_glBlendColor(x0,x1,x2,x3){GLctx["blendColor"](x0,x1,x2,x3)}function _emscripten_glBlendEquation(x0){GLctx["blendEquation"](x0)}function _emscripten_glBlendEquationSeparate(x0,x1){GLctx["blendEquationSeparate"](x0,x1)}function _emscripten_glBlendFunc(x0,x1){GLctx["blendFunc"](x0,x1)}function _emscripten_glBlendFuncSeparate(x0,x1,x2,x3){GLctx["blendFuncSeparate"](x0,x1,x2,x3)}function _emscripten_glBufferData(target,size,data,usage){GLctx.bufferData(target,data?HEAPU8.subarray(data,data+size):size,usage)}function _emscripten_glBufferSubData(target,offset,size,data){GLctx.bufferSubData(target,offset,HEAPU8.subarray(data,data+size))}function _emscripten_glCheckFramebufferStatus(x0){return GLctx["checkFramebufferStatus"](x0)}function _emscripten_glClear(x0){GLctx["clear"](x0)}function _emscripten_glClearColor(x0,x1,x2,x3){GLctx["clearColor"](x0,x1,x2,x3)}function _emscripten_glClearDepthf(x0){GLctx["clearDepth"](x0)}function _emscripten_glClearStencil(x0){GLctx["clearStencil"](x0)}function _emscripten_glColorMask(red,green,blue,alpha){GLctx.colorMask(!!red,!!green,!!blue,!!alpha)}function _emscripten_glCompileShader(shader){GLctx.compileShader(GL.shaders[shader])}function _emscripten_glCompressedTexImage2D(target,level,internalFormat,width,height,border,imageSize,data){GLctx["compressedTexImage2D"](target,level,internalFormat,width,height,border,data?HEAPU8.subarray(data,data+imageSize):null)}function _emscripten_glCompressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,imageSize,data){GLctx["compressedTexSubImage2D"](target,level,xoffset,yoffset,width,height,format,data?HEAPU8.subarray(data,data+imageSize):null)}function _emscripten_glCopyTexImage2D(x0,x1,x2,x3,x4,x5,x6,x7){GLctx["copyTexImage2D"](x0,x1,x2,x3,x4,x5,x6,x7)}function _emscripten_glCopyTexSubImage2D(x0,x1,x2,x3,x4,x5,x6,x7){GLctx["copyTexSubImage2D"](x0,x1,x2,x3,x4,x5,x6,x7)}function _emscripten_glCreateProgram(){var id=GL.getNewId(GL.programs);var program=GLctx.createProgram();program.name=id;GL.programs[id]=program;return id}function _emscripten_glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}function _emscripten_glCullFace(x0){GLctx["cullFace"](x0)}function _emscripten_glDeleteBuffers(n,buffers){for(var i=0;i<n;i++){var id=HEAP32[buffers+i*4>>2];var buffer=GL.buffers[id];if(!buffer)continue;GLctx.deleteBuffer(buffer);buffer.name=0;GL.buffers[id]=null}}function _emscripten_glDeleteFramebuffers(n,framebuffers){for(var i=0;i<n;++i){var id=HEAP32[framebuffers+i*4>>2];var framebuffer=GL.framebuffers[id];if(!framebuffer)continue;GLctx.deleteFramebuffer(framebuffer);framebuffer.name=0;GL.framebuffers[id]=null}}function _emscripten_glDeleteProgram(id){if(!id)return;var program=GL.programs[id];if(!program){GL.recordError(1281);return}GLctx.deleteProgram(program);program.name=0;GL.programs[id]=null;GL.programInfos[id]=null}function _emscripten_glDeleteQueriesEXT(n,ids){for(var i=0;i<n;i++){var id=HEAP32[ids+i*4>>2];var query=GL.timerQueriesEXT[id];if(!query)continue;GLctx.disjointTimerQueryExt["deleteQueryEXT"](query);GL.timerQueriesEXT[id]=null}}function _emscripten_glDeleteRenderbuffers(n,renderbuffers){for(var i=0;i<n;i++){var id=HEAP32[renderbuffers+i*4>>2];var renderbuffer=GL.renderbuffers[id];if(!renderbuffer)continue;GLctx.deleteRenderbuffer(renderbuffer);renderbuffer.name=0;GL.renderbuffers[id]=null}}function _emscripten_glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}function _emscripten_glDeleteTextures(n,textures){for(var i=0;i<n;i++){var id=HEAP32[textures+i*4>>2];var texture=GL.textures[id];if(!texture)continue;GLctx.deleteTexture(texture);texture.name=0;GL.textures[id]=null}}function _emscripten_glDeleteVertexArraysOES(n,vaos){for(var i=0;i<n;i++){var id=HEAP32[vaos+i*4>>2];GLctx["deleteVertexArray"](GL.vaos[id]);GL.vaos[id]=null}}function _emscripten_glDepthFunc(x0){GLctx["depthFunc"](x0)}function _emscripten_glDepthMask(flag){GLctx.depthMask(!!flag)}function _emscripten_glDepthRangef(x0,x1){GLctx["depthRange"](x0,x1)}function _emscripten_glDetachShader(program,shader){GLctx.detachShader(GL.programs[program],GL.shaders[shader])}function _emscripten_glDisable(x0){GLctx["disable"](x0)}function _emscripten_glDisableVertexAttribArray(index){GLctx.disableVertexAttribArray(index)}function _emscripten_glDrawArrays(mode,first,count){GLctx.drawArrays(mode,first,count)}function _emscripten_glDrawArraysInstancedANGLE(mode,first,count,primcount){GLctx["drawArraysInstanced"](mode,first,count,primcount)}var tempFixedLengthArray=[];function _emscripten_glDrawBuffersWEBGL(n,bufs){var bufArray=tempFixedLengthArray[n];for(var i=0;i<n;i++){bufArray[i]=HEAP32[bufs+i*4>>2]}GLctx["drawBuffers"](bufArray)}function _emscripten_glDrawElements(mode,count,type,indices){GLctx.drawElements(mode,count,type,indices)}function _emscripten_glDrawElementsInstancedANGLE(mode,count,type,indices,primcount){GLctx["drawElementsInstanced"](mode,count,type,indices,primcount)}function _emscripten_glEnable(x0){GLctx["enable"](x0)}function _emscripten_glEnableVertexAttribArray(index){GLctx.enableVertexAttribArray(index)}function _emscripten_glEndQueryEXT(target){GLctx.disjointTimerQueryExt["endQueryEXT"](target)}function _emscripten_glFinish(){GLctx["finish"]()}function _emscripten_glFlush(){GLctx["flush"]()}function _emscripten_glFramebufferRenderbuffer(target,attachment,renderbuffertarget,renderbuffer){GLctx.framebufferRenderbuffer(target,attachment,renderbuffertarget,GL.renderbuffers[renderbuffer])}function _emscripten_glFramebufferTexture2D(target,attachment,textarget,texture,level){GLctx.framebufferTexture2D(target,attachment,textarget,GL.textures[texture],level)}function _emscripten_glFrontFace(x0){GLctx["frontFace"](x0)}function __glGenObject(n,buffers,createFunction,objectTable){for(var i=0;i<n;i++){var buffer=GLctx[createFunction]();var id=buffer&&GL.getNewId(objectTable);if(buffer){buffer.name=id;objectTable[id]=buffer}else{GL.recordError(1282)}HEAP32[buffers+i*4>>2]=id}}function _emscripten_glGenBuffers(n,buffers){__glGenObject(n,buffers,"createBuffer",GL.buffers)}function _emscripten_glGenFramebuffers(n,ids){__glGenObject(n,ids,"createFramebuffer",GL.framebuffers)}function _emscripten_glGenQueriesEXT(n,ids){for(var i=0;i<n;i++){var query=GLctx.disjointTimerQueryExt["createQueryEXT"]();if(!query){GL.recordError(1282);while(i<n)HEAP32[ids+i++*4>>2]=0;return}var id=GL.getNewId(GL.timerQueriesEXT);query.name=id;GL.timerQueriesEXT[id]=query;HEAP32[ids+i*4>>2]=id}}function _emscripten_glGenRenderbuffers(n,renderbuffers){__glGenObject(n,renderbuffers,"createRenderbuffer",GL.renderbuffers)}function _emscripten_glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures)}function _emscripten_glGenVertexArraysOES(n,arrays){__glGenObject(n,arrays,"createVertexArray",GL.vaos)}function _emscripten_glGenerateMipmap(x0){GLctx["generateMipmap"](x0)}function __glGetActiveAttribOrUniform(funcName,program,index,bufSize,length,size,type,name){program=GL.programs[program];var info=GLctx[funcName](program,index);if(info){var numBytesWrittenExclNull=name&&stringToUTF8(info.name,name,bufSize);if(length)HEAP32[length>>2]=numBytesWrittenExclNull;if(size)HEAP32[size>>2]=info.size;if(type)HEAP32[type>>2]=info.type}}function _emscripten_glGetActiveAttrib(program,index,bufSize,length,size,type,name){__glGetActiveAttribOrUniform("getActiveAttrib",program,index,bufSize,length,size,type,name)}function _emscripten_glGetActiveUniform(program,index,bufSize,length,size,type,name){__glGetActiveAttribOrUniform("getActiveUniform",program,index,bufSize,length,size,type,name)}function _emscripten_glGetAttachedShaders(program,maxCount,count,shaders){var result=GLctx.getAttachedShaders(GL.programs[program]);var len=result.length;if(len>maxCount){len=maxCount}HEAP32[count>>2]=len;for(var i=0;i<len;++i){var id=GL.shaders.indexOf(result[i]);HEAP32[shaders+i*4>>2]=id}}function _emscripten_glGetAttribLocation(program,name){return GLctx.getAttribLocation(GL.programs[program],UTF8ToString(name))}function writeI53ToI64(ptr,num){HEAPU32[ptr>>2]=num;HEAPU32[ptr+4>>2]=(num-HEAPU32[ptr>>2])/4294967296}function emscriptenWebGLGet(name_,p,type){if(!p){GL.recordError(1281);return}var ret=undefined;switch(name_){case 36346:ret=1;break;case 36344:if(type!=0&&type!=1){GL.recordError(1280)}return;case 36345:ret=0;break;case 34466:var formats=GLctx.getParameter(34467);ret=formats?formats.length:0;break}if(ret===undefined){var result=GLctx.getParameter(name_);switch(typeof result){case"number":ret=result;break;case"boolean":ret=result?1:0;break;case"string":GL.recordError(1280);return;case"object":if(result===null){switch(name_){case 34964:case 35725:case 34965:case 36006:case 36007:case 32873:case 34229:case 34068:{ret=0;break}default:{GL.recordError(1280);return}}}else if(result instanceof Float32Array||result instanceof Uint32Array||result instanceof Int32Array||result instanceof Array){for(var i=0;i<result.length;++i){switch(type){case 0:HEAP32[p+i*4>>2]=result[i];break;case 2:HEAPF32[p+i*4>>2]=result[i];break;case 4:HEAP8[p+i>>0]=result[i]?1:0;break}}return}else{try{ret=result.name|0}catch(e){GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v: Unknown object returned from WebGL getParameter("+name_+")! (error: "+e+")");return}}break;default:GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v: Native code calling glGet"+type+"v("+name_+") and it returns "+result+" of type "+typeof result+"!");return}}switch(type){case 1:writeI53ToI64(p,ret);break;case 0:HEAP32[p>>2]=ret;break;case 2:HEAPF32[p>>2]=ret;break;case 4:HEAP8[p>>0]=ret?1:0;break}}function _emscripten_glGetBooleanv(name_,p){emscriptenWebGLGet(name_,p,4)}function _emscripten_glGetBufferParameteriv(target,value,data){if(!data){GL.recordError(1281);return}HEAP32[data>>2]=GLctx.getBufferParameter(target,value)}function _emscripten_glGetError(){var error=GLctx.getError()||GL.lastError;GL.lastError=0;return error}function _emscripten_glGetFloatv(name_,p){emscriptenWebGLGet(name_,p,2)}function _emscripten_glGetFramebufferAttachmentParameteriv(target,attachment,pname,params){var result=GLctx.getFramebufferAttachmentParameter(target,attachment,pname);if(result instanceof WebGLRenderbuffer||result instanceof WebGLTexture){result=result.name|0}HEAP32[params>>2]=result}function _emscripten_glGetIntegerv(name_,p){emscriptenWebGLGet(name_,p,0)}function _emscripten_glGetProgramInfoLog(program,maxLength,length,infoLog){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _emscripten_glGetProgramiv(program,pname,p){if(!p){GL.recordError(1281);return}if(program>=GL.counter){GL.recordError(1281);return}var ptable=GL.programInfos[program];if(!ptable){GL.recordError(1282);return}if(pname==35716){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";HEAP32[p>>2]=log.length+1}else if(pname==35719){HEAP32[p>>2]=ptable.maxUniformLength}else if(pname==35722){if(ptable.maxAttributeLength==-1){program=GL.programs[program];var numAttribs=GLctx.getProgramParameter(program,35721);ptable.maxAttributeLength=0;for(var i=0;i<numAttribs;++i){var activeAttrib=GLctx.getActiveAttrib(program,i);ptable.maxAttributeLength=Math.max(ptable.maxAttributeLength,activeAttrib.name.length+1)}}HEAP32[p>>2]=ptable.maxAttributeLength}else if(pname==35381){if(ptable.maxUniformBlockNameLength==-1){program=GL.programs[program];var numBlocks=GLctx.getProgramParameter(program,35382);ptable.maxUniformBlockNameLength=0;for(var i=0;i<numBlocks;++i){var activeBlockName=GLctx.getActiveUniformBlockName(program,i);ptable.maxUniformBlockNameLength=Math.max(ptable.maxUniformBlockNameLength,activeBlockName.length+1)}}HEAP32[p>>2]=ptable.maxUniformBlockNameLength}else{HEAP32[p>>2]=GLctx.getProgramParameter(GL.programs[program],pname)}}function _emscripten_glGetQueryObjecti64vEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.timerQueriesEXT[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}writeI53ToI64(params,ret)}function _emscripten_glGetQueryObjectivEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.timerQueriesEXT[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}HEAP32[params>>2]=ret}function _emscripten_glGetQueryObjectui64vEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.timerQueriesEXT[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}writeI53ToI64(params,ret)}function _emscripten_glGetQueryObjectuivEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.timerQueriesEXT[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}HEAP32[params>>2]=ret}function _emscripten_glGetQueryivEXT(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.disjointTimerQueryExt["getQueryEXT"](target,pname)}function _emscripten_glGetRenderbufferParameteriv(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getRenderbufferParameter(target,pname)}function _emscripten_glGetShaderInfoLog(shader,maxLength,length,infoLog){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _emscripten_glGetShaderPrecisionFormat(shaderType,precisionType,range,precision){var result=GLctx.getShaderPrecisionFormat(shaderType,precisionType);HEAP32[range>>2]=result.rangeMin;HEAP32[range+4>>2]=result.rangeMax;HEAP32[precision>>2]=result.precision}function _emscripten_glGetShaderSource(shader,bufSize,length,source){var result=GLctx.getShaderSource(GL.shaders[shader]);if(!result)return;var numBytesWrittenExclNull=bufSize>0&&source?stringToUTF8(result,source,bufSize):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _emscripten_glGetShaderiv(shader,pname,p){if(!p){GL.recordError(1281);return}if(pname==35716){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var logLength=log?log.length+1:0;HEAP32[p>>2]=logLength}else if(pname==35720){var source=GLctx.getShaderSource(GL.shaders[shader]);var sourceLength=source?source.length+1:0;HEAP32[p>>2]=sourceLength}else{HEAP32[p>>2]=GLctx.getShaderParameter(GL.shaders[shader],pname)}}function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _emscripten_glGetString(name_){if(GL.stringCache[name_])return GL.stringCache[name_];var ret;switch(name_){case 7939:var exts=GLctx.getSupportedExtensions()||[];exts=exts.concat(exts.map(function(e){return"GL_"+e}));ret=stringToNewUTF8(exts.join(" "));break;case 7936:case 7937:case 37445:case 37446:var s=GLctx.getParameter(name_);if(!s){GL.recordError(1280)}ret=stringToNewUTF8(s);break;case 7938:var glVersion=GLctx.getParameter(7938);{glVersion="OpenGL ES 2.0 ("+glVersion+")"}ret=stringToNewUTF8(glVersion);break;case 35724:var glslVersion=GLctx.getParameter(35724);var ver_re=/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/;var ver_num=glslVersion.match(ver_re);if(ver_num!==null){if(ver_num[1].length==3)ver_num[1]=ver_num[1]+"0";glslVersion="OpenGL ES GLSL ES "+ver_num[1]+" ("+glslVersion+")"}ret=stringToNewUTF8(glslVersion);break;default:GL.recordError(1280);return 0}GL.stringCache[name_]=ret;return ret}function _emscripten_glGetTexParameterfv(target,pname,params){if(!params){GL.recordError(1281);return}HEAPF32[params>>2]=GLctx.getTexParameter(target,pname)}function _emscripten_glGetTexParameteriv(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getTexParameter(target,pname)}function jstoi_q(str){return parseInt(str)}function _emscripten_glGetUniformLocation(program,name){name=UTF8ToString(name);var arrayIndex=0;if(name[name.length-1]=="]"){var leftBrace=name.lastIndexOf("[");arrayIndex=name[leftBrace+1]!="]"?jstoi_q(name.slice(leftBrace+1)):0;name=name.slice(0,leftBrace)}var uniformInfo=GL.programInfos[program]&&GL.programInfos[program].uniforms[name];if(uniformInfo&&arrayIndex>=0&&arrayIndex<uniformInfo[0]){return uniformInfo[1]+arrayIndex}else{return-1}}function emscriptenWebGLGetUniform(program,location,params,type){if(!params){GL.recordError(1281);return}var data=GLctx.getUniform(GL.programs[program],GL.uniforms[location]);if(typeof data=="number"||typeof data=="boolean"){switch(type){case 0:HEAP32[params>>2]=data;break;case 2:HEAPF32[params>>2]=data;break}}else{for(var i=0;i<data.length;i++){switch(type){case 0:HEAP32[params+i*4>>2]=data[i];break;case 2:HEAPF32[params+i*4>>2]=data[i];break}}}}function _emscripten_glGetUniformfv(program,location,params){emscriptenWebGLGetUniform(program,location,params,2)}function _emscripten_glGetUniformiv(program,location,params){emscriptenWebGLGetUniform(program,location,params,0)}function _emscripten_glGetVertexAttribPointerv(index,pname,pointer){if(!pointer){GL.recordError(1281);return}HEAP32[pointer>>2]=GLctx.getVertexAttribOffset(index,pname)}function emscriptenWebGLGetVertexAttrib(index,pname,params,type){if(!params){GL.recordError(1281);return}var data=GLctx.getVertexAttrib(index,pname);if(pname==34975){HEAP32[params>>2]=data&&data["name"]}else if(typeof data=="number"||typeof data=="boolean"){switch(type){case 0:HEAP32[params>>2]=data;break;case 2:HEAPF32[params>>2]=data;break;case 5:HEAP32[params>>2]=Math.fround(data);break}}else{for(var i=0;i<data.length;i++){switch(type){case 0:HEAP32[params+i*4>>2]=data[i];break;case 2:HEAPF32[params+i*4>>2]=data[i];break;case 5:HEAP32[params+i*4>>2]=Math.fround(data[i]);break}}}}function _emscripten_glGetVertexAttribfv(index,pname,params){emscriptenWebGLGetVertexAttrib(index,pname,params,2)}function _emscripten_glGetVertexAttribiv(index,pname,params){emscriptenWebGLGetVertexAttrib(index,pname,params,5)}function _emscripten_glHint(x0,x1){GLctx["hint"](x0,x1)}function _emscripten_glIsBuffer(buffer){var b=GL.buffers[buffer];if(!b)return 0;return GLctx.isBuffer(b)}function _emscripten_glIsEnabled(x0){return GLctx["isEnabled"](x0)}function _emscripten_glIsFramebuffer(framebuffer){var fb=GL.framebuffers[framebuffer];if(!fb)return 0;return GLctx.isFramebuffer(fb)}function _emscripten_glIsProgram(program){program=GL.programs[program];if(!program)return 0;return GLctx.isProgram(program)}function _emscripten_glIsQueryEXT(id){var query=GL.timerQueriesEXT[id];if(!query)return 0;return GLctx.disjointTimerQueryExt["isQueryEXT"](query)}function _emscripten_glIsRenderbuffer(renderbuffer){var rb=GL.renderbuffers[renderbuffer];if(!rb)return 0;return GLctx.isRenderbuffer(rb)}function _emscripten_glIsShader(shader){var s=GL.shaders[shader];if(!s)return 0;return GLctx.isShader(s)}function _emscripten_glIsTexture(id){var texture=GL.textures[id];if(!texture)return 0;return GLctx.isTexture(texture)}function _emscripten_glIsVertexArrayOES(array){var vao=GL.vaos[array];if(!vao)return 0;return GLctx["isVertexArray"](vao)}function _emscripten_glLineWidth(x0){GLctx["lineWidth"](x0)}function _emscripten_glLinkProgram(program){GLctx.linkProgram(GL.programs[program]);GL.populateUniformTable(program)}function _emscripten_glPixelStorei(pname,param){if(pname==3317){GL.unpackAlignment=param}GLctx.pixelStorei(pname,param)}function _emscripten_glPolygonOffset(x0,x1){GLctx["polygonOffset"](x0,x1)}function _emscripten_glQueryCounterEXT(id,target){GLctx.disjointTimerQueryExt["queryCounterEXT"](GL.timerQueriesEXT[id],target)}function computeUnpackAlignedImageSize(width,height,sizePerPixel,alignment){function roundedToNextMultipleOf(x,y){return x+y-1&-y}var plainRowSize=width*sizePerPixel;var alignedRowSize=roundedToNextMultipleOf(plainRowSize,alignment);return height*alignedRowSize}function __colorChannelsInGlTextureFormat(format){var colorChannels={5:3,6:4,8:2,29502:3,29504:4};return colorChannels[format-6402]||1}function heapObjectForWebGLType(type){type-=5120;if(type==1)return HEAPU8;if(type==4)return HEAP32;if(type==6)return HEAPF32;if(type==5||type==28922)return HEAPU32;return HEAPU16}function heapAccessShiftForWebGLHeap(heap){return 31-Math.clz32(heap.BYTES_PER_ELEMENT)}function emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat){var heap=heapObjectForWebGLType(type);var shift=heapAccessShiftForWebGLHeap(heap);var byteSize=1<<shift;var sizePerPixel=__colorChannelsInGlTextureFormat(format)*byteSize;var bytes=computeUnpackAlignedImageSize(width,height,sizePerPixel,GL.unpackAlignment);return heap.subarray(pixels>>shift,pixels+bytes>>shift)}function _emscripten_glReadPixels(x,y,width,height,format,type,pixels){var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);return}GLctx.readPixels(x,y,width,height,format,type,pixelData)}function _emscripten_glReleaseShaderCompiler(){}function _emscripten_glRenderbufferStorage(x0,x1,x2,x3){GLctx["renderbufferStorage"](x0,x1,x2,x3)}function _emscripten_glSampleCoverage(value,invert){GLctx.sampleCoverage(value,!!invert)}function _emscripten_glScissor(x0,x1,x2,x3){GLctx["scissor"](x0,x1,x2,x3)}function _emscripten_glShaderBinary(){GL.recordError(1280)}function _emscripten_glShaderSource(shader,count,string,length){var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}function _emscripten_glStencilFunc(x0,x1,x2){GLctx["stencilFunc"](x0,x1,x2)}function _emscripten_glStencilFuncSeparate(x0,x1,x2,x3){GLctx["stencilFuncSeparate"](x0,x1,x2,x3)}function _emscripten_glStencilMask(x0){GLctx["stencilMask"](x0)}function _emscripten_glStencilMaskSeparate(x0,x1){GLctx["stencilMaskSeparate"](x0,x1)}function _emscripten_glStencilOp(x0,x1,x2){GLctx["stencilOp"](x0,x1,x2)}function _emscripten_glStencilOpSeparate(x0,x1,x2,x3){GLctx["stencilOpSeparate"](x0,x1,x2,x3)}function _emscripten_glTexImage2D(target,level,internalFormat,width,height,border,format,type,pixels){GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels?emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat):null)}function _emscripten_glTexParameterf(x0,x1,x2){GLctx["texParameterf"](x0,x1,x2)}function _emscripten_glTexParameterfv(target,pname,params){var param=HEAPF32[params>>2];GLctx.texParameterf(target,pname,param)}function _emscripten_glTexParameteri(x0,x1,x2){GLctx["texParameteri"](x0,x1,x2)}function _emscripten_glTexParameteriv(target,pname,params){var param=HEAP32[params>>2];GLctx.texParameteri(target,pname,param)}function _emscripten_glTexSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixels){var pixelData=null;if(pixels)pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,0);GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixelData)}function _emscripten_glUniform1f(location,v0){GLctx.uniform1f(GL.uniforms[location],v0)}var miniTempWebGLFloatBuffers=[];function _emscripten_glUniform1fv(location,count,value){if(count<=288){var view=miniTempWebGLFloatBuffers[count-1];for(var i=0;i<count;++i){view[i]=HEAPF32[value+4*i>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*4>>2)}GLctx.uniform1fv(GL.uniforms[location],view)}function _emscripten_glUniform1i(location,v0){GLctx.uniform1i(GL.uniforms[location],v0)}var __miniTempWebGLIntBuffers=[];function _emscripten_glUniform1iv(location,count,value){if(count<=288){var view=__miniTempWebGLIntBuffers[count-1];for(var i=0;i<count;++i){view[i]=HEAP32[value+4*i>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*4>>2)}GLctx.uniform1iv(GL.uniforms[location],view)}function _emscripten_glUniform2f(location,v0,v1){GLctx.uniform2f(GL.uniforms[location],v0,v1)}function _emscripten_glUniform2fv(location,count,value){if(count<=144){var view=miniTempWebGLFloatBuffers[2*count-1];for(var i=0;i<2*count;i+=2){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*8>>2)}GLctx.uniform2fv(GL.uniforms[location],view)}function _emscripten_glUniform2i(location,v0,v1){GLctx.uniform2i(GL.uniforms[location],v0,v1)}function _emscripten_glUniform2iv(location,count,value){if(count<=144){var view=__miniTempWebGLIntBuffers[2*count-1];for(var i=0;i<2*count;i+=2){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*8>>2)}GLctx.uniform2iv(GL.uniforms[location],view)}function _emscripten_glUniform3f(location,v0,v1,v2){GLctx.uniform3f(GL.uniforms[location],v0,v1,v2)}function _emscripten_glUniform3fv(location,count,value){if(count<=96){var view=miniTempWebGLFloatBuffers[3*count-1];for(var i=0;i<3*count;i+=3){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*12>>2)}GLctx.uniform3fv(GL.uniforms[location],view)}function _emscripten_glUniform3i(location,v0,v1,v2){GLctx.uniform3i(GL.uniforms[location],v0,v1,v2)}function _emscripten_glUniform3iv(location,count,value){if(count<=96){var view=__miniTempWebGLIntBuffers[3*count-1];for(var i=0;i<3*count;i+=3){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2];view[i+2]=HEAP32[value+(4*i+8)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*12>>2)}GLctx.uniform3iv(GL.uniforms[location],view)}function _emscripten_glUniform4f(location,v0,v1,v2,v3){GLctx.uniform4f(GL.uniforms[location],v0,v1,v2,v3)}function _emscripten_glUniform4fv(location,count,value){if(count<=72){var view=miniTempWebGLFloatBuffers[4*count-1];var heap=HEAPF32;value>>=2;for(var i=0;i<4*count;i+=4){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3]}}else{var view=HEAPF32.subarray(value>>2,value+count*16>>2)}GLctx.uniform4fv(GL.uniforms[location],view)}function _emscripten_glUniform4i(location,v0,v1,v2,v3){GLctx.uniform4i(GL.uniforms[location],v0,v1,v2,v3)}function _emscripten_glUniform4iv(location,count,value){if(count<=72){var view=__miniTempWebGLIntBuffers[4*count-1];for(var i=0;i<4*count;i+=4){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2];view[i+2]=HEAP32[value+(4*i+8)>>2];view[i+3]=HEAP32[value+(4*i+12)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*16>>2)}GLctx.uniform4iv(GL.uniforms[location],view)}function _emscripten_glUniformMatrix2fv(location,count,transpose,value){if(count<=72){var view=miniTempWebGLFloatBuffers[4*count-1];for(var i=0;i<4*count;i+=4){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2];view[i+3]=HEAPF32[value+(4*i+12)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*16>>2)}GLctx.uniformMatrix2fv(GL.uniforms[location],!!transpose,view)}function _emscripten_glUniformMatrix3fv(location,count,transpose,value){if(count<=32){var view=miniTempWebGLFloatBuffers[9*count-1];for(var i=0;i<9*count;i+=9){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2];view[i+3]=HEAPF32[value+(4*i+12)>>2];view[i+4]=HEAPF32[value+(4*i+16)>>2];view[i+5]=HEAPF32[value+(4*i+20)>>2];view[i+6]=HEAPF32[value+(4*i+24)>>2];view[i+7]=HEAPF32[value+(4*i+28)>>2];view[i+8]=HEAPF32[value+(4*i+32)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*36>>2)}GLctx.uniformMatrix3fv(GL.uniforms[location],!!transpose,view)}function _emscripten_glUniformMatrix4fv(location,count,transpose,value){if(count<=18){var view=miniTempWebGLFloatBuffers[16*count-1];var heap=HEAPF32;value>>=2;for(var i=0;i<16*count;i+=16){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3];view[i+4]=heap[dst+4];view[i+5]=heap[dst+5];view[i+6]=heap[dst+6];view[i+7]=heap[dst+7];view[i+8]=heap[dst+8];view[i+9]=heap[dst+9];view[i+10]=heap[dst+10];view[i+11]=heap[dst+11];view[i+12]=heap[dst+12];view[i+13]=heap[dst+13];view[i+14]=heap[dst+14];view[i+15]=heap[dst+15]}}else{var view=HEAPF32.subarray(value>>2,value+count*64>>2)}GLctx.uniformMatrix4fv(GL.uniforms[location],!!transpose,view)}function _emscripten_glUseProgram(program){GLctx.useProgram(GL.programs[program])}function _emscripten_glValidateProgram(program){GLctx.validateProgram(GL.programs[program])}function _emscripten_glVertexAttrib1f(x0,x1){GLctx["vertexAttrib1f"](x0,x1)}function _emscripten_glVertexAttrib1fv(index,v){GLctx.vertexAttrib1f(index,HEAPF32[v>>2])}function _emscripten_glVertexAttrib2f(x0,x1,x2){GLctx["vertexAttrib2f"](x0,x1,x2)}function _emscripten_glVertexAttrib2fv(index,v){GLctx.vertexAttrib2f(index,HEAPF32[v>>2],HEAPF32[v+4>>2])}function _emscripten_glVertexAttrib3f(x0,x1,x2,x3){GLctx["vertexAttrib3f"](x0,x1,x2,x3)}function _emscripten_glVertexAttrib3fv(index,v){GLctx.vertexAttrib3f(index,HEAPF32[v>>2],HEAPF32[v+4>>2],HEAPF32[v+8>>2])}function _emscripten_glVertexAttrib4f(x0,x1,x2,x3,x4){GLctx["vertexAttrib4f"](x0,x1,x2,x3,x4)}function _emscripten_glVertexAttrib4fv(index,v){GLctx.vertexAttrib4f(index,HEAPF32[v>>2],HEAPF32[v+4>>2],HEAPF32[v+8>>2],HEAPF32[v+12>>2])}function _emscripten_glVertexAttribDivisorANGLE(index,divisor){GLctx["vertexAttribDivisor"](index,divisor)}function _emscripten_glVertexAttribPointer(index,size,type,normalized,stride,ptr){GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}function _emscripten_glViewport(x0,x1,x2,x3){GLctx["viewport"](x0,x1,x2,x3)}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function abortOnCannotGrowMemory(requestedSize){abort("OOM")}function _emscripten_resize_heap(requestedSize){abortOnCannotGrowMemory(requestedSize)}function _emscripten_run_script(ptr){eval(UTF8ToString(ptr))}function _emscripten_sample_gamepad_data(){return(JSEvents.lastGamepadState=navigator.getGamepads?navigator.getGamepads():navigator.webkitGetGamepads?navigator.webkitGetGamepads():null)?0:-1}function fillMouseEventData(eventStruct,e,target){var idx=eventStruct>>2;HEAP32[idx+0]=e.screenX;HEAP32[idx+1]=e.screenY;HEAP32[idx+2]=e.clientX;HEAP32[idx+3]=e.clientY;HEAP32[idx+4]=e.ctrlKey;HEAP32[idx+5]=e.shiftKey;HEAP32[idx+6]=e.altKey;HEAP32[idx+7]=e.metaKey;HEAP16[idx*2+16]=e.button;HEAP16[idx*2+17]=e.buttons;HEAP32[idx+9]=e["movementX"];HEAP32[idx+10]=e["movementY"];var rect=getBoundingClientRect(target);HEAP32[idx+11]=e.clientX-rect.left;HEAP32[idx+12]=e.clientY-rect.top}function registerMouseEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.mouseEvent)JSEvents.mouseEvent=_malloc(64);target=findEventTarget(target);var mouseEventHandlerFunc=function(ev){var e=ev||event;fillMouseEventData(JSEvents.mouseEvent,e,target);if(wasmTable.get(callbackfunc)(eventTypeId,JSEvents.mouseEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:eventTypeString!="mousemove"&&eventTypeString!="mouseenter"&&eventTypeString!="mouseleave",eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:mouseEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_click_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,4,"click",targetThread);return 0}function fillFullscreenChangeEventData(eventStruct){var fullscreenElement=document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement||document.msFullscreenElement;var isFullscreen=!!fullscreenElement;HEAP32[eventStruct>>2]=isFullscreen;HEAP32[eventStruct+4>>2]=JSEvents.fullscreenEnabled();var reportedElement=isFullscreen?fullscreenElement:JSEvents.previousFullscreenElement;var nodeName=JSEvents.getNodeNameForTarget(reportedElement);var id=reportedElement&&reportedElement.id?reportedElement.id:"";stringToUTF8(nodeName,eventStruct+8,128);stringToUTF8(id,eventStruct+136,128);HEAP32[eventStruct+264>>2]=reportedElement?reportedElement.clientWidth:0;HEAP32[eventStruct+268>>2]=reportedElement?reportedElement.clientHeight:0;HEAP32[eventStruct+272>>2]=screen.width;HEAP32[eventStruct+276>>2]=screen.height;if(isFullscreen){JSEvents.previousFullscreenElement=fullscreenElement}}function registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.fullscreenChangeEvent)JSEvents.fullscreenChangeEvent=_malloc(280);var fullscreenChangeEventhandlerFunc=function(ev){var e=ev||event;var fullscreenChangeEvent=JSEvents.fullscreenChangeEvent;fillFullscreenChangeEventData(fullscreenChangeEvent);if(wasmTable.get(callbackfunc)(eventTypeId,fullscreenChangeEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:fullscreenChangeEventhandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_fullscreenchange_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){if(!JSEvents.fullscreenEnabled())return-1;target=findEventTarget(target);if(!target)return-4;registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,19,"fullscreenchange",targetThread);registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,19,"webkitfullscreenchange",targetThread);return 0}function registerGamepadEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.gamepadEvent)JSEvents.gamepadEvent=_malloc(1432);var gamepadEventHandlerFunc=function(ev){var e=ev||event;var gamepadEvent=JSEvents.gamepadEvent;fillGamepadEventData(gamepadEvent,e["gamepad"]);if(wasmTable.get(callbackfunc)(eventTypeId,gamepadEvent,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:gamepadEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_gamepadconnected_callback_on_thread(userData,useCapture,callbackfunc,targetThread){if(!navigator.getGamepads&&!navigator.webkitGetGamepads)return-1;registerGamepadEventCallback(2,userData,useCapture,callbackfunc,26,"gamepadconnected",targetThread);return 0}function _emscripten_set_gamepaddisconnected_callback_on_thread(userData,useCapture,callbackfunc,targetThread){if(!navigator.getGamepads&&!navigator.webkitGetGamepads)return-1;registerGamepadEventCallback(2,userData,useCapture,callbackfunc,27,"gamepaddisconnected",targetThread);return 0}function registerKeyEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.keyEvent)JSEvents.keyEvent=_malloc(164);var keyEventHandlerFunc=function(e){var keyEventData=JSEvents.keyEvent;var idx=keyEventData>>2;HEAP32[idx+0]=e.location;HEAP32[idx+1]=e.ctrlKey;HEAP32[idx+2]=e.shiftKey;HEAP32[idx+3]=e.altKey;HEAP32[idx+4]=e.metaKey;HEAP32[idx+5]=e.repeat;HEAP32[idx+6]=e.charCode;HEAP32[idx+7]=e.keyCode;HEAP32[idx+8]=e.which;stringToUTF8(e.key||"",keyEventData+36,32);stringToUTF8(e.code||"",keyEventData+68,32);stringToUTF8(e.char||"",keyEventData+100,32);stringToUTF8(e.locale||"",keyEventData+132,32);if(wasmTable.get(callbackfunc)(eventTypeId,keyEventData,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:keyEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_keydown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,2,"keydown",targetThread);return 0}var Browser={mainLoop:{scheduler:null,method:"",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause:function(){Browser.mainLoop.scheduler=null;Browser.mainLoop.currentlyRunningMainloop++},resume:function(){Browser.mainLoop.currentlyRunningMainloop++;var timingMode=Browser.mainLoop.timingMode;var timingValue=Browser.mainLoop.timingValue;var func=Browser.mainLoop.func;Browser.mainLoop.func=null;setMainLoop(func,0,false,Browser.mainLoop.arg,true);_emscripten_set_main_loop_timing(timingMode,timingValue);Browser.mainLoop.scheduler()},updateStatus:function(){if(Module["setStatus"]){var message=Module["statusMessage"]||"Please wait...";var remaining=Browser.mainLoop.remainingBlockers;var expected=Browser.mainLoop.expectedBlockers;if(remaining){if(remaining<expected){Module["setStatus"](message+" ("+(expected-remaining)+"/"+expected+")")}else{Module["setStatus"](message)}}else{Module["setStatus"]("")}}},runIter:function(func){if(ABORT)return;if(Module["preMainLoop"]){var preRet=Module["preMainLoop"]();if(preRet===false){return}}try{func()}catch(e){if(e instanceof ExitStatus){return}else if(e=="unwind"){return}else{if(e&&typeof e==="object"&&e.stack)err("exception thrown: "+[e,e.stack]);throw e}}if(Module["postMainLoop"])Module["postMainLoop"]()}},isFullscreen:false,pointerLock:false,moduleContextCreatedCallbacks:[],workers:[],init:function(){if(!Module["preloadPlugins"])Module["preloadPlugins"]=[];if(Browser.initted)return;Browser.initted=true;try{new Blob;Browser.hasBlobConstructor=true}catch(e){Browser.hasBlobConstructor=false;console.log("warning: no blob constructor, cannot create blobs with mimetypes")}Browser.BlobBuilder=typeof MozBlobBuilder!="undefined"?MozBlobBuilder:typeof WebKitBlobBuilder!="undefined"?WebKitBlobBuilder:!Browser.hasBlobConstructor?console.log("warning: no BlobBuilder"):null;Browser.URLObject=typeof window!="undefined"?window.URL?window.URL:window.webkitURL:undefined;if(!Module.noImageDecoding&&typeof Browser.URLObject==="undefined"){console.log("warning: Browser does not support creating object URLs. Built-in browser image decoding will not be available.");Module.noImageDecoding=true}var imagePlugin={};imagePlugin["canHandle"]=function imagePlugin_canHandle(name){return!Module.noImageDecoding&&/\.(jpg|jpeg|png|bmp)$/i.test(name)};imagePlugin["handle"]=function imagePlugin_handle(byteArray,name,onload,onerror){var b=null;if(Browser.hasBlobConstructor){try{b=new Blob([byteArray],{type:Browser.getMimetype(name)});if(b.size!==byteArray.length){b=new Blob([new Uint8Array(byteArray).buffer],{type:Browser.getMimetype(name)})}}catch(e){warnOnce("Blob constructor present but fails: "+e+"; falling back to blob builder")}}if(!b){var bb=new Browser.BlobBuilder;bb.append(new Uint8Array(byteArray).buffer);b=bb.getBlob()}var url=Browser.URLObject.createObjectURL(b);var img=new Image;img.onload=function img_onload(){assert(img.complete,"Image "+name+" could not be decoded");var canvas=document.createElement("canvas");canvas.width=img.width;canvas.height=img.height;var ctx=canvas.getContext("2d");ctx.drawImage(img,0,0);Module["preloadedImages"][name]=canvas;Browser.URLObject.revokeObjectURL(url);if(onload)onload(byteArray)};img.onerror=function img_onerror(event){console.log("Image "+url+" could not be decoded");if(onerror)onerror()};img.src=url};Module["preloadPlugins"].push(imagePlugin);var audioPlugin={};audioPlugin["canHandle"]=function audioPlugin_canHandle(name){return!Module.noAudioDecoding&&name.substr(-4)in{".ogg":1,".wav":1,".mp3":1}};audioPlugin["handle"]=function audioPlugin_handle(byteArray,name,onload,onerror){var done=false;function finish(audio){if(done)return;done=true;Module["preloadedAudios"][name]=audio;if(onload)onload(byteArray)}function fail(){if(done)return;done=true;Module["preloadedAudios"][name]=new Audio;if(onerror)onerror()}if(Browser.hasBlobConstructor){try{var b=new Blob([byteArray],{type:Browser.getMimetype(name)})}catch(e){return fail()}var url=Browser.URLObject.createObjectURL(b);var audio=new Audio;audio.addEventListener("canplaythrough",function(){finish(audio)},false);audio.onerror=function audio_onerror(event){if(done)return;console.log("warning: browser could not fully decode audio "+name+", trying slower base64 approach");function encode64(data){var BASE="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var PAD="=";var ret="";var leftchar=0;var leftbits=0;for(var i=0;i<data.length;i++){leftchar=leftchar<<8|data[i];leftbits+=8;while(leftbits>=6){var curr=leftchar>>leftbits-6&63;leftbits-=6;ret+=BASE[curr]}}if(leftbits==2){ret+=BASE[(leftchar&3)<<4];ret+=PAD+PAD}else if(leftbits==4){ret+=BASE[(leftchar&15)<<2];ret+=PAD}return ret}audio.src="data:audio/x-"+name.substr(-3)+";base64,"+encode64(byteArray);finish(audio)};audio.src=url;Browser.safeSetTimeout(function(){finish(audio)},1e4)}else{return fail()}};Module["preloadPlugins"].push(audioPlugin);function pointerLockChange(){Browser.pointerLock=document["pointerLockElement"]===Module["canvas"]||document["mozPointerLockElement"]===Module["canvas"]||document["webkitPointerLockElement"]===Module["canvas"]||document["msPointerLockElement"]===Module["canvas"]}var canvas=Module["canvas"];if(canvas){canvas.requestPointerLock=canvas["requestPointerLock"]||canvas["mozRequestPointerLock"]||canvas["webkitRequestPointerLock"]||canvas["msRequestPointerLock"]||function(){};canvas.exitPointerLock=document["exitPointerLock"]||document["mozExitPointerLock"]||document["webkitExitPointerLock"]||document["msExitPointerLock"]||function(){};canvas.exitPointerLock=canvas.exitPointerLock.bind(document);document.addEventListener("pointerlockchange",pointerLockChange,false);document.addEventListener("mozpointerlockchange",pointerLockChange,false);document.addEventListener("webkitpointerlockchange",pointerLockChange,false);document.addEventListener("mspointerlockchange",pointerLockChange,false);if(Module["elementPointerLock"]){canvas.addEventListener("click",function(ev){if(!Browser.pointerLock&&Module["canvas"].requestPointerLock){Module["canvas"].requestPointerLock();ev.preventDefault()}},false)}}},createContext:function(canvas,useWebGL,setInModule,webGLContextAttributes){if(useWebGL&&Module.ctx&&canvas==Module.canvas)return Module.ctx;var ctx;var contextHandle;if(useWebGL){var contextAttributes={antialias:false,alpha:false,majorVersion:1};if(webGLContextAttributes){for(var attribute in webGLContextAttributes){contextAttributes[attribute]=webGLContextAttributes[attribute]}}if(typeof GL!=="undefined"){contextHandle=GL.createContext(canvas,contextAttributes);if(contextHandle){ctx=GL.getContext(contextHandle).GLctx}}}else{ctx=canvas.getContext("2d")}if(!ctx)return null;if(setInModule){if(!useWebGL)assert(typeof GLctx==="undefined","cannot set in module if GLctx is used, but we are a non-GL context that would replace it");Module.ctx=ctx;if(useWebGL)GL.makeContextCurrent(contextHandle);Module.useWebGL=useWebGL;Browser.moduleContextCreatedCallbacks.forEach(function(callback){callback()});Browser.init()}return ctx},destroyContext:function(canvas,useWebGL,setInModule){},fullscreenHandlersInstalled:false,lockPointer:undefined,resizeCanvas:undefined,requestFullscreen:function(lockPointer,resizeCanvas){Browser.lockPointer=lockPointer;Browser.resizeCanvas=resizeCanvas;if(typeof Browser.lockPointer==="undefined")Browser.lockPointer=true;if(typeof Browser.resizeCanvas==="undefined")Browser.resizeCanvas=false;var canvas=Module["canvas"];function fullscreenChange(){Browser.isFullscreen=false;var canvasContainer=canvas.parentNode;if((document["fullscreenElement"]||document["mozFullScreenElement"]||document["msFullscreenElement"]||document["webkitFullscreenElement"]||document["webkitCurrentFullScreenElement"])===canvasContainer){canvas.exitFullscreen=Browser.exitFullscreen;if(Browser.lockPointer)canvas.requestPointerLock();Browser.isFullscreen=true;if(Browser.resizeCanvas){Browser.setFullscreenCanvasSize()}else{Browser.updateCanvasDimensions(canvas)}}else{canvasContainer.parentNode.insertBefore(canvas,canvasContainer);canvasContainer.parentNode.removeChild(canvasContainer);if(Browser.resizeCanvas){Browser.setWindowedCanvasSize()}else{Browser.updateCanvasDimensions(canvas)}}if(Module["onFullScreen"])Module["onFullScreen"](Browser.isFullscreen);if(Module["onFullscreen"])Module["onFullscreen"](Browser.isFullscreen)}if(!Browser.fullscreenHandlersInstalled){Browser.fullscreenHandlersInstalled=true;document.addEventListener("fullscreenchange",fullscreenChange,false);document.addEventListener("mozfullscreenchange",fullscreenChange,false);document.addEventListener("webkitfullscreenchange",fullscreenChange,false);document.addEventListener("MSFullscreenChange",fullscreenChange,false)}var canvasContainer=document.createElement("div");canvas.parentNode.insertBefore(canvasContainer,canvas);canvasContainer.appendChild(canvas);canvasContainer.requestFullscreen=canvasContainer["requestFullscreen"]||canvasContainer["mozRequestFullScreen"]||canvasContainer["msRequestFullscreen"]||(canvasContainer["webkitRequestFullscreen"]?function(){canvasContainer["webkitRequestFullscreen"](Element["ALLOW_KEYBOARD_INPUT"])}:null)||(canvasContainer["webkitRequestFullScreen"]?function(){canvasContainer["webkitRequestFullScreen"](Element["ALLOW_KEYBOARD_INPUT"])}:null);canvasContainer.requestFullscreen()},exitFullscreen:function(){if(!Browser.isFullscreen){return false}var CFS=document["exitFullscreen"]||document["cancelFullScreen"]||document["mozCancelFullScreen"]||document["msExitFullscreen"]||document["webkitCancelFullScreen"]||function(){};CFS.apply(document,[]);return true},nextRAF:0,fakeRequestAnimationFrame:function(func){var now=Date.now();if(Browser.nextRAF===0){Browser.nextRAF=now+1e3/60}else{while(now+2>=Browser.nextRAF){Browser.nextRAF+=1e3/60}}var delay=Math.max(Browser.nextRAF-now,0);setTimeout(func,delay)},requestAnimationFrame:function(func){if(typeof requestAnimationFrame==="function"){requestAnimationFrame(func);return}var RAF=Browser.fakeRequestAnimationFrame;RAF(func)},safeRequestAnimationFrame:function(func){return Browser.requestAnimationFrame(function(){if(ABORT)return;func()})},safeSetTimeout:function(func,timeout){noExitRuntime=true;return setTimeout(function(){if(ABORT)return;func()},timeout)},getMimetype:function(name){return{"jpg":"image/jpeg","jpeg":"image/jpeg","png":"image/png","bmp":"image/bmp","ogg":"audio/ogg","wav":"audio/wav","mp3":"audio/mpeg"}[name.substr(name.lastIndexOf(".")+1)]},getUserMedia:function(func){if(!window.getUserMedia){window.getUserMedia=navigator["getUserMedia"]||navigator["mozGetUserMedia"]}window.getUserMedia(func)},getMovementX:function(event){return event["movementX"]||event["mozMovementX"]||event["webkitMovementX"]||0},getMovementY:function(event){return event["movementY"]||event["mozMovementY"]||event["webkitMovementY"]||0},getMouseWheelDelta:function(event){var delta=0;switch(event.type){case"DOMMouseScroll":delta=event.detail/3;break;case"mousewheel":delta=event.wheelDelta/120;break;case"wheel":delta=event.deltaY;switch(event.deltaMode){case 0:delta/=100;break;case 1:delta/=3;break;case 2:delta*=80;break;default:throw"unrecognized mouse wheel delta mode: "+event.deltaMode}break;default:throw"unrecognized mouse wheel event: "+event.type}return delta},mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,touches:{},lastTouches:{},calculateMouseEvent:function(event){if(Browser.pointerLock){if(event.type!="mousemove"&&"mozMovementX"in event){Browser.mouseMovementX=Browser.mouseMovementY=0}else{Browser.mouseMovementX=Browser.getMovementX(event);Browser.mouseMovementY=Browser.getMovementY(event)}if(typeof SDL!="undefined"){Browser.mouseX=SDL.mouseX+Browser.mouseMovementX;Browser.mouseY=SDL.mouseY+Browser.mouseMovementY}else{Browser.mouseX+=Browser.mouseMovementX;Browser.mouseY+=Browser.mouseMovementY}}else{var rect=Module["canvas"].getBoundingClientRect();var cw=Module["canvas"].width;var ch=Module["canvas"].height;var scrollX=typeof window.scrollX!=="undefined"?window.scrollX:window.pageXOffset;var scrollY=typeof window.scrollY!=="undefined"?window.scrollY:window.pageYOffset;if(event.type==="touchstart"||event.type==="touchend"||event.type==="touchmove"){var touch=event.touch;if(touch===undefined){return}var adjustedX=touch.pageX-(scrollX+rect.left);var adjustedY=touch.pageY-(scrollY+rect.top);adjustedX=adjustedX*(cw/rect.width);adjustedY=adjustedY*(ch/rect.height);var coords={x:adjustedX,y:adjustedY};if(event.type==="touchstart"){Browser.lastTouches[touch.identifier]=coords;Browser.touches[touch.identifier]=coords}else if(event.type==="touchend"||event.type==="touchmove"){var last=Browser.touches[touch.identifier];if(!last)last=coords;Browser.lastTouches[touch.identifier]=last;Browser.touches[touch.identifier]=coords}return}var x=event.pageX-(scrollX+rect.left);var y=event.pageY-(scrollY+rect.top);x=x*(cw/rect.width);y=y*(ch/rect.height);Browser.mouseMovementX=x-Browser.mouseX;Browser.mouseMovementY=y-Browser.mouseY;Browser.mouseX=x;Browser.mouseY=y}},asyncLoad:function(url,onload,onerror,noRunDep){var dep=!noRunDep?getUniqueRunDependency("al "+url):"";readAsync(url,function(arrayBuffer){assert(arrayBuffer,'Loading data file "'+url+'" failed (no arrayBuffer).');onload(new Uint8Array(arrayBuffer));if(dep)removeRunDependency(dep)},function(event){if(onerror){onerror()}else{throw'Loading data file "'+url+'" failed.'}});if(dep)addRunDependency(dep)},resizeListeners:[],updateResizeListeners:function(){var canvas=Module["canvas"];Browser.resizeListeners.forEach(function(listener){listener(canvas.width,canvas.height)})},setCanvasSize:function(width,height,noUpdates){var canvas=Module["canvas"];Browser.updateCanvasDimensions(canvas,width,height);if(!noUpdates)Browser.updateResizeListeners()},windowedWidth:0,windowedHeight:0,setFullscreenCanvasSize:function(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>2];flags=flags|8388608;HEAP32[SDL.screen>>2]=flags}Browser.updateCanvasDimensions(Module["canvas"]);Browser.updateResizeListeners()},setWindowedCanvasSize:function(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>2];flags=flags&~8388608;HEAP32[SDL.screen>>2]=flags}Browser.updateCanvasDimensions(Module["canvas"]);Browser.updateResizeListeners()},updateCanvasDimensions:function(canvas,wNative,hNative){if(wNative&&hNative){canvas.widthNative=wNative;canvas.heightNative=hNative}else{wNative=canvas.widthNative;hNative=canvas.heightNative}var w=wNative;var h=hNative;if(Module["forcedAspectRatio"]&&Module["forcedAspectRatio"]>0){if(w/h<Module["forcedAspectRatio"]){w=Math.round(h*Module["forcedAspectRatio"])}else{h=Math.round(w/Module["forcedAspectRatio"])}}if((document["fullscreenElement"]||document["mozFullScreenElement"]||document["msFullscreenElement"]||document["webkitFullscreenElement"]||document["webkitCurrentFullScreenElement"])===canvas.parentNode&&typeof screen!="undefined"){var factor=Math.min(screen.width/w,screen.height/h);w=Math.round(w*factor);h=Math.round(h*factor)}if(Browser.resizeCanvas){if(canvas.width!=w)canvas.width=w;if(canvas.height!=h)canvas.height=h;if(typeof canvas.style!="undefined"){canvas.style.removeProperty("width");canvas.style.removeProperty("height")}}else{if(canvas.width!=wNative)canvas.width=wNative;if(canvas.height!=hNative)canvas.height=hNative;if(typeof canvas.style!="undefined"){if(w!=wNative||h!=hNative){canvas.style.setProperty("width",w+"px","important");canvas.style.setProperty("height",h+"px","important")}else{canvas.style.removeProperty("width");canvas.style.removeProperty("height")}}}},wgetRequests:{},nextWgetRequestHandle:0,getNextWgetRequestHandle:function(){var handle=Browser.nextWgetRequestHandle;Browser.nextWgetRequestHandle++;return handle}};function _emscripten_set_main_loop_timing(mode,value){Browser.mainLoop.timingMode=mode;Browser.mainLoop.timingValue=value;if(!Browser.mainLoop.func){return 1}if(mode==0){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setTimeout(){var timeUntilNextTick=Math.max(0,Browser.mainLoop.tickStartTime+value-_emscripten_get_now())|0;setTimeout(Browser.mainLoop.runner,timeUntilNextTick)};Browser.mainLoop.method="timeout"}else if(mode==1){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_rAF(){Browser.requestAnimationFrame(Browser.mainLoop.runner)};Browser.mainLoop.method="rAF"}else if(mode==2){if(typeof setImmediate==="undefined"){var setImmediates=[];var emscriptenMainLoopMessageId="setimmediate";var Browser_setImmediate_messageHandler=function(event){if(event.data===emscriptenMainLoopMessageId||event.data.target===emscriptenMainLoopMessageId){event.stopPropagation();setImmediates.shift()()}};addEventListener("message",Browser_setImmediate_messageHandler,true);setImmediate=function Browser_emulated_setImmediate(func){setImmediates.push(func);if(ENVIRONMENT_IS_WORKER){if(Module["setImmediates"]===undefined)Module["setImmediates"]=[];Module["setImmediates"].push(func);postMessage({target:emscriptenMainLoopMessageId})}else postMessage(emscriptenMainLoopMessageId,"*")}}Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setImmediate(){setImmediate(Browser.mainLoop.runner)};Browser.mainLoop.method="immediate"}return 0}var _emscripten_get_now;if(ENVIRONMENT_IS_NODE){_emscripten_get_now=function(){var t=process["hrtime"]();return t[0]*1e3+t[1]/1e6}}else if(typeof dateNow!=="undefined"){_emscripten_get_now=dateNow}else _emscripten_get_now=function(){return performance.now()};function setMainLoop(browserIterationFunc,fps,simulateInfiniteLoop,arg,noSetTiming){noExitRuntime=true;assert(!Browser.mainLoop.func,"emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters.");Browser.mainLoop.func=browserIterationFunc;Browser.mainLoop.arg=arg;var thisMainLoopId=Browser.mainLoop.currentlyRunningMainloop;Browser.mainLoop.runner=function Browser_mainLoop_runner(){if(ABORT)return;if(Browser.mainLoop.queue.length>0){var start=Date.now();var blocker=Browser.mainLoop.queue.shift();blocker.func(blocker.arg);if(Browser.mainLoop.remainingBlockers){var remaining=Browser.mainLoop.remainingBlockers;var next=remaining%1==0?remaining-1:Math.floor(remaining);if(blocker.counted){Browser.mainLoop.remainingBlockers=next}else{next=next+.5;Browser.mainLoop.remainingBlockers=(8*remaining+next)/9}}console.log('main loop blocker "'+blocker.name+'" took '+(Date.now()-start)+" ms");Browser.mainLoop.updateStatus();if(thisMainLoopId<Browser.mainLoop.currentlyRunningMainloop)return;setTimeout(Browser.mainLoop.runner,0);return}if(thisMainLoopId<Browser.mainLoop.currentlyRunningMainloop)return;Browser.mainLoop.currentFrameNumber=Browser.mainLoop.currentFrameNumber+1|0;if(Browser.mainLoop.timingMode==1&&Browser.mainLoop.timingValue>1&&Browser.mainLoop.currentFrameNumber%Browser.mainLoop.timingValue!=0){Browser.mainLoop.scheduler();return}else if(Browser.mainLoop.timingMode==0){Browser.mainLoop.tickStartTime=_emscripten_get_now()}Browser.mainLoop.runIter(browserIterationFunc);if(thisMainLoopId<Browser.mainLoop.currentlyRunningMainloop)return;if(typeof SDL==="object"&&SDL.audio&&SDL.audio.queueNewAudioData)SDL.audio.queueNewAudioData();Browser.mainLoop.scheduler()};if(!noSetTiming){if(fps&&fps>0)_emscripten_set_main_loop_timing(0,1e3/fps);else _emscripten_set_main_loop_timing(1,1);Browser.mainLoop.scheduler()}if(simulateInfiniteLoop){throw"unwind"}}function _emscripten_set_main_loop(func,fps,simulateInfiniteLoop){var browserIterationFunc=wasmTable.get(func);setMainLoop(browserIterationFunc,fps,simulateInfiniteLoop)}function registerTouchEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.touchEvent)JSEvents.touchEvent=_malloc(1684);target=findEventTarget(target);var touchEventHandlerFunc=function(e){var touches={};var et=e.touches;for(var i=0;i<et.length;++i){var touch=et[i];touches[touch.identifier]=touch}et=e.changedTouches;for(var i=0;i<et.length;++i){var touch=et[i];touch.isChanged=1;touches[touch.identifier]=touch}et=e.targetTouches;for(var i=0;i<et.length;++i){touches[et[i].identifier].onTarget=1}var touchEvent=JSEvents.touchEvent;var idx=touchEvent>>2;HEAP32[idx+1]=e.ctrlKey;HEAP32[idx+2]=e.shiftKey;HEAP32[idx+3]=e.altKey;HEAP32[idx+4]=e.metaKey;idx+=5;var targetRect=getBoundingClientRect(target);var numTouches=0;for(var i in touches){var t=touches[i];HEAP32[idx+0]=t.identifier;HEAP32[idx+1]=t.screenX;HEAP32[idx+2]=t.screenY;HEAP32[idx+3]=t.clientX;HEAP32[idx+4]=t.clientY;HEAP32[idx+5]=t.pageX;HEAP32[idx+6]=t.pageY;HEAP32[idx+7]=t.isChanged;HEAP32[idx+8]=t.onTarget;HEAP32[idx+9]=t.clientX-targetRect.left;HEAP32[idx+10]=t.clientY-targetRect.top;idx+=13;if(++numTouches>31){break}}HEAP32[touchEvent>>2]=numTouches;if(wasmTable.get(callbackfunc)(eventTypeId,touchEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:eventTypeString=="touchstart"||eventTypeString=="touchend",eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:touchEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_touchcancel_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerTouchEventCallback(target,userData,useCapture,callbackfunc,25,"touchcancel",targetThread);return 0}function _emscripten_set_touchend_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerTouchEventCallback(target,userData,useCapture,callbackfunc,23,"touchend",targetThread);return 0}function _emscripten_set_touchmove_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerTouchEventCallback(target,userData,useCapture,callbackfunc,24,"touchmove",targetThread);return 0}function _emscripten_set_touchstart_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerTouchEventCallback(target,userData,useCapture,callbackfunc,22,"touchstart",targetThread);return 0}function _emscripten_thread_sleep(msecs){var start=_emscripten_get_now();while(_emscripten_get_now()-start<msecs){}}function _exit(status){exit(status)}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_read(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doReadv(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var stream=SYSCALLS.getStreamFromFD(fd);var HIGH_OFFSET=4294967296;var offset=offset_high*HIGH_OFFSET+(offset_low>>>0);var DOUBLE_LIMIT=9007199254740992;if(offset<=-DOUBLE_LIMIT||offset>=DOUBLE_LIMIT){return-61}FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doWritev(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _glActiveTexture(x0){GLctx["activeTexture"](x0)}function _glAttachShader(program,shader){GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _glBindAttribLocation(program,index,name){GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))}function _glBindBuffer(target,buffer){GLctx.bindBuffer(target,GL.buffers[buffer])}function _glBindTexture(target,texture){GLctx.bindTexture(target,GL.textures[texture])}function _glBlendFunc(x0,x1){GLctx["blendFunc"](x0,x1)}function _glBufferData(target,size,data,usage){GLctx.bufferData(target,data?HEAPU8.subarray(data,data+size):size,usage)}function _glBufferSubData(target,offset,size,data){GLctx.bufferSubData(target,offset,HEAPU8.subarray(data,data+size))}function _glClear(x0){GLctx["clear"](x0)}function _glClearColor(x0,x1,x2,x3){GLctx["clearColor"](x0,x1,x2,x3)}function _glClearDepthf(x0){GLctx["clearDepth"](x0)}function _glCompileShader(shader){GLctx.compileShader(GL.shaders[shader])}function _glCompressedTexImage2D(target,level,internalFormat,width,height,border,imageSize,data){GLctx["compressedTexImage2D"](target,level,internalFormat,width,height,border,data?HEAPU8.subarray(data,data+imageSize):null)}function _glCreateProgram(){var id=GL.getNewId(GL.programs);var program=GLctx.createProgram();program.name=id;GL.programs[id]=program;return id}function _glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}function _glCullFace(x0){GLctx["cullFace"](x0)}function _glDeleteBuffers(n,buffers){for(var i=0;i<n;i++){var id=HEAP32[buffers+i*4>>2];var buffer=GL.buffers[id];if(!buffer)continue;GLctx.deleteBuffer(buffer);buffer.name=0;GL.buffers[id]=null}}function _glDeleteProgram(id){if(!id)return;var program=GL.programs[id];if(!program){GL.recordError(1281);return}GLctx.deleteProgram(program);program.name=0;GL.programs[id]=null;GL.programInfos[id]=null}function _glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}function _glDeleteTextures(n,textures){for(var i=0;i<n;i++){var id=HEAP32[textures+i*4>>2];var texture=GL.textures[id];if(!texture)continue;GLctx.deleteTexture(texture);texture.name=0;GL.textures[id]=null}}function _glDepthFunc(x0){GLctx["depthFunc"](x0)}function _glDetachShader(program,shader){GLctx.detachShader(GL.programs[program],GL.shaders[shader])}function _glDisable(x0){GLctx["disable"](x0)}function _glDisableVertexAttribArray(index){GLctx.disableVertexAttribArray(index)}function _glDrawArrays(mode,first,count){GLctx.drawArrays(mode,first,count)}function _glDrawElements(mode,count,type,indices){GLctx.drawElements(mode,count,type,indices)}function _glEnable(x0){GLctx["enable"](x0)}function _glEnableVertexAttribArray(index){GLctx.enableVertexAttribArray(index)}function _glFrontFace(x0){GLctx["frontFace"](x0)}function _glGenBuffers(n,buffers){__glGenObject(n,buffers,"createBuffer",GL.buffers)}function _glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures)}function _glGetAttribLocation(program,name){return GLctx.getAttribLocation(GL.programs[program],UTF8ToString(name))}function _glGetFloatv(name_,p){emscriptenWebGLGet(name_,p,2)}function _glGetProgramInfoLog(program,maxLength,length,infoLog){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _glGetProgramiv(program,pname,p){if(!p){GL.recordError(1281);return}if(program>=GL.counter){GL.recordError(1281);return}var ptable=GL.programInfos[program];if(!ptable){GL.recordError(1282);return}if(pname==35716){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";HEAP32[p>>2]=log.length+1}else if(pname==35719){HEAP32[p>>2]=ptable.maxUniformLength}else if(pname==35722){if(ptable.maxAttributeLength==-1){program=GL.programs[program];var numAttribs=GLctx.getProgramParameter(program,35721);ptable.maxAttributeLength=0;for(var i=0;i<numAttribs;++i){var activeAttrib=GLctx.getActiveAttrib(program,i);ptable.maxAttributeLength=Math.max(ptable.maxAttributeLength,activeAttrib.name.length+1)}}HEAP32[p>>2]=ptable.maxAttributeLength}else if(pname==35381){if(ptable.maxUniformBlockNameLength==-1){program=GL.programs[program];var numBlocks=GLctx.getProgramParameter(program,35382);ptable.maxUniformBlockNameLength=0;for(var i=0;i<numBlocks;++i){var activeBlockName=GLctx.getActiveUniformBlockName(program,i);ptable.maxUniformBlockNameLength=Math.max(ptable.maxUniformBlockNameLength,activeBlockName.length+1)}}HEAP32[p>>2]=ptable.maxUniformBlockNameLength}else{HEAP32[p>>2]=GLctx.getProgramParameter(GL.programs[program],pname)}}function _glGetShaderInfoLog(shader,maxLength,length,infoLog){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _glGetShaderiv(shader,pname,p){if(!p){GL.recordError(1281);return}if(pname==35716){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var logLength=log?log.length+1:0;HEAP32[p>>2]=logLength}else if(pname==35720){var source=GLctx.getShaderSource(GL.shaders[shader]);var sourceLength=source?source.length+1:0;HEAP32[p>>2]=sourceLength}else{HEAP32[p>>2]=GLctx.getShaderParameter(GL.shaders[shader],pname)}}function _glGetString(name_){if(GL.stringCache[name_])return GL.stringCache[name_];var ret;switch(name_){case 7939:var exts=GLctx.getSupportedExtensions()||[];exts=exts.concat(exts.map(function(e){return"GL_"+e}));ret=stringToNewUTF8(exts.join(" "));break;case 7936:case 7937:case 37445:case 37446:var s=GLctx.getParameter(name_);if(!s){GL.recordError(1280)}ret=stringToNewUTF8(s);break;case 7938:var glVersion=GLctx.getParameter(7938);{glVersion="OpenGL ES 2.0 ("+glVersion+")"}ret=stringToNewUTF8(glVersion);break;case 35724:var glslVersion=GLctx.getParameter(35724);var ver_re=/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/;var ver_num=glslVersion.match(ver_re);if(ver_num!==null){if(ver_num[1].length==3)ver_num[1]=ver_num[1]+"0";glslVersion="OpenGL ES GLSL ES "+ver_num[1]+" ("+glslVersion+")"}ret=stringToNewUTF8(glslVersion);break;default:GL.recordError(1280);return 0}GL.stringCache[name_]=ret;return ret}function _glGetUniformLocation(program,name){name=UTF8ToString(name);var arrayIndex=0;if(name[name.length-1]=="]"){var leftBrace=name.lastIndexOf("[");arrayIndex=name[leftBrace+1]!="]"?jstoi_q(name.slice(leftBrace+1)):0;name=name.slice(0,leftBrace)}var uniformInfo=GL.programInfos[program]&&GL.programInfos[program].uniforms[name];if(uniformInfo&&arrayIndex>=0&&arrayIndex<uniformInfo[0]){return uniformInfo[1]+arrayIndex}else{return-1}}function _glLinkProgram(program){GLctx.linkProgram(GL.programs[program]);GL.populateUniformTable(program)}function _glPixelStorei(pname,param){if(pname==3317){GL.unpackAlignment=param}GLctx.pixelStorei(pname,param)}function _glReadPixels(x,y,width,height,format,type,pixels){var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);return}GLctx.readPixels(x,y,width,height,format,type,pixelData)}function _glShaderSource(shader,count,string,length){var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}function _glTexImage2D(target,level,internalFormat,width,height,border,format,type,pixels){GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels?emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat):null)}function _glTexParameteri(x0,x1,x2){GLctx["texParameteri"](x0,x1,x2)}function _glUniform1i(location,v0){GLctx.uniform1i(GL.uniforms[location],v0)}function _glUniform4f(location,v0,v1,v2,v3){GLctx.uniform4f(GL.uniforms[location],v0,v1,v2,v3)}function _glUniformMatrix4fv(location,count,transpose,value){if(count<=18){var view=miniTempWebGLFloatBuffers[16*count-1];var heap=HEAPF32;value>>=2;for(var i=0;i<16*count;i+=16){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3];view[i+4]=heap[dst+4];view[i+5]=heap[dst+5];view[i+6]=heap[dst+6];view[i+7]=heap[dst+7];view[i+8]=heap[dst+8];view[i+9]=heap[dst+9];view[i+10]=heap[dst+10];view[i+11]=heap[dst+11];view[i+12]=heap[dst+12];view[i+13]=heap[dst+13];view[i+14]=heap[dst+14];view[i+15]=heap[dst+15]}}else{var view=HEAPF32.subarray(value>>2,value+count*64>>2)}GLctx.uniformMatrix4fv(GL.uniforms[location],!!transpose,view)}function _glUseProgram(program){GLctx.useProgram(GL.programs[program])}function _glVertexAttribPointer(index,size,type,normalized,stride,ptr){GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}function _glViewport(x0,x1,x2,x3){GLctx["viewport"](x0,x1,x2,x3)}function GLFW_Window(id,width,height,title,monitor,share){this.id=id;this.x=0;this.y=0;this.fullscreen=false;this.storedX=0;this.storedY=0;this.width=width;this.height=height;this.storedWidth=width;this.storedHeight=height;this.title=title;this.monitor=monitor;this.share=share;this.attributes=GLFW.hints;this.inputModes={208897:212993,208898:0,208899:0};this.buttons=0;this.keys=new Array;this.domKeys=new Array;this.shouldClose=0;this.title=null;this.windowPosFunc=null;this.windowSizeFunc=null;this.windowCloseFunc=null;this.windowRefreshFunc=null;this.windowFocusFunc=null;this.windowIconifyFunc=null;this.framebufferSizeFunc=null;this.mouseButtonFunc=null;this.cursorPosFunc=null;this.cursorEnterFunc=null;this.scrollFunc=null;this.dropFunc=null;this.keyFunc=null;this.charFunc=null;this.userptr=null}var GLFW={WindowFromId:function(id){if(id<=0||!GLFW.windows)return null;return GLFW.windows[id-1]},joystickFunc:null,errorFunc:null,monitorFunc:null,active:null,windows:null,monitors:null,monitorString:null,versionString:null,initialTime:null,extensions:null,hints:null,defaultHints:{131073:0,131074:0,131075:1,131076:1,131077:1,135169:8,135170:8,135171:8,135172:8,135173:24,135174:8,135175:0,135176:0,135177:0,135178:0,135179:0,135180:0,135181:0,135182:0,135183:0,139265:196609,139266:1,139267:0,139268:0,139269:0,139270:0,139271:0,139272:0},DOMToGLFWKeyCode:function(keycode){switch(keycode){case 32:return 32;case 222:return 39;case 188:return 44;case 173:return 45;case 189:return 45;case 190:return 46;case 191:return 47;case 48:return 48;case 49:return 49;case 50:return 50;case 51:return 51;case 52:return 52;case 53:return 53;case 54:return 54;case 55:return 55;case 56:return 56;case 57:return 57;case 59:return 59;case 61:return 61;case 187:return 61;case 65:return 65;case 66:return 66;case 67:return 67;case 68:return 68;case 69:return 69;case 70:return 70;case 71:return 71;case 72:return 72;case 73:return 73;case 74:return 74;case 75:return 75;case 76:return 76;case 77:return 77;case 78:return 78;case 79:return 79;case 80:return 80;case 81:return 81;case 82:return 82;case 83:return 83;case 84:return 84;case 85:return 85;case 86:return 86;case 87:return 87;case 88:return 88;case 89:return 89;case 90:return 90;case 219:return 91;case 220:return 92;case 221:return 93;case 192:return 94;case 27:return 256;case 13:return 257;case 9:return 258;case 8:return 259;case 45:return 260;case 46:return 261;case 39:return 262;case 37:return 263;case 40:return 264;case 38:return 265;case 33:return 266;case 34:return 267;case 36:return 268;case 35:return 269;case 20:return 280;case 145:return 281;case 144:return 282;case 44:return 283;case 19:return 284;case 112:return 290;case 113:return 291;case 114:return 292;case 115:return 293;case 116:return 294;case 117:return 295;case 118:return 296;case 119:return 297;case 120:return 298;case 121:return 299;case 122:return 300;case 123:return 301;case 124:return 302;case 125:return 303;case 126:return 304;case 127:return 305;case 128:return 306;case 129:return 307;case 130:return 308;case 131:return 309;case 132:return 310;case 133:return 311;case 134:return 312;case 135:return 313;case 136:return 314;case 96:return 320;case 97:return 321;case 98:return 322;case 99:return 323;case 100:return 324;case 101:return 325;case 102:return 326;case 103:return 327;case 104:return 328;case 105:return 329;case 110:return 330;case 111:return 331;case 106:return 332;case 109:return 333;case 107:return 334;case 16:return 340;case 17:return 341;case 18:return 342;case 91:return 343;case 93:return 348;default:return-1}},getModBits:function(win){var mod=0;if(win.keys[340])mod|=1;if(win.keys[341])mod|=2;if(win.keys[342])mod|=4;if(win.keys[343])mod|=8;return mod},onKeyPress:function(event){if(!GLFW.active||!GLFW.active.charFunc)return;if(event.ctrlKey||event.metaKey)return;var charCode=event.charCode;if(charCode==0||charCode>=0&&charCode<=31)return;wasmTable.get(GLFW.active.charFunc)(GLFW.active.id,charCode)},onKeyChanged:function(keyCode,status){if(!GLFW.active)return;var key=GLFW.DOMToGLFWKeyCode(keyCode);if(key==-1)return;var repeat=status&&GLFW.active.keys[key];GLFW.active.keys[key]=status;GLFW.active.domKeys[keyCode]=status;if(!GLFW.active.keyFunc)return;if(repeat)status=2;wasmTable.get(GLFW.active.keyFunc)(GLFW.active.id,key,keyCode,status,GLFW.getModBits(GLFW.active))},onGamepadConnected:function(event){GLFW.refreshJoysticks()},onGamepadDisconnected:function(event){GLFW.refreshJoysticks()},onKeydown:function(event){GLFW.onKeyChanged(event.keyCode,1);if(event.keyCode===8||event.keyCode===9){event.preventDefault()}},onKeyup:function(event){GLFW.onKeyChanged(event.keyCode,0)},onBlur:function(event){if(!GLFW.active)return;for(var i=0;i<GLFW.active.domKeys.length;++i){if(GLFW.active.domKeys[i]){GLFW.onKeyChanged(i,0)}}},onMousemove:function(event){if(!GLFW.active)return;Browser.calculateMouseEvent(event);if(event.target!=Module["canvas"]||!GLFW.active.cursorPosFunc)return;wasmTable.get(GLFW.active.cursorPosFunc)(GLFW.active.id,Browser.mouseX,Browser.mouseY)},DOMToGLFWMouseButton:function(event){var eventButton=event["button"];if(eventButton>0){if(eventButton==1){eventButton=2}else{eventButton=1}}return eventButton},onMouseenter:function(event){if(!GLFW.active)return;if(event.target!=Module["canvas"]||!GLFW.active.cursorEnterFunc)return;wasmTable.get(GLFW.active.cursorEnterFunc)(GLFW.active.id,1)},onMouseleave:function(event){if(!GLFW.active)return;if(event.target!=Module["canvas"]||!GLFW.active.cursorEnterFunc)return;wasmTable.get(GLFW.active.cursorEnterFunc)(GLFW.active.id,0)},onMouseButtonChanged:function(event,status){if(!GLFW.active)return;Browser.calculateMouseEvent(event);if(event.target!=Module["canvas"])return;var eventButton=GLFW.DOMToGLFWMouseButton(event);if(status==1){GLFW.active.buttons|=1<<eventButton;try{event.target.setCapture()}catch(e){}}else{GLFW.active.buttons&=~(1<<eventButton)}if(!GLFW.active.mouseButtonFunc)return;wasmTable.get(GLFW.active.mouseButtonFunc)(GLFW.active.id,eventButton,status,GLFW.getModBits(GLFW.active))},onMouseButtonDown:function(event){if(!GLFW.active)return;GLFW.onMouseButtonChanged(event,1)},onMouseButtonUp:function(event){if(!GLFW.active)return;GLFW.onMouseButtonChanged(event,0)},onMouseWheel:function(event){var delta=-Browser.getMouseWheelDelta(event);delta=delta==0?0:delta>0?Math.max(delta,1):Math.min(delta,-1);GLFW.wheelPos+=delta;if(!GLFW.active||!GLFW.active.scrollFunc||event.target!=Module["canvas"])return;var sx=0;var sy=0;if(event.type=="mousewheel"){sx=event.wheelDeltaX;sy=event.wheelDeltaY}else{sx=event.deltaX;sy=event.deltaY}wasmTable.get(GLFW.active.scrollFunc)(GLFW.active.id,sx,sy);event.preventDefault()},onCanvasResize:function(width,height){if(!GLFW.active)return;var resizeNeeded=true;if(document["fullscreen"]||document["fullScreen"]||document["mozFullScreen"]||document["webkitIsFullScreen"]){GLFW.active.storedX=GLFW.active.x;GLFW.active.storedY=GLFW.active.y;GLFW.active.storedWidth=GLFW.active.width;GLFW.active.storedHeight=GLFW.active.height;GLFW.active.x=GLFW.active.y=0;GLFW.active.width=screen.width;GLFW.active.height=screen.height;GLFW.active.fullscreen=true}else if(GLFW.active.fullscreen==true){GLFW.active.x=GLFW.active.storedX;GLFW.active.y=GLFW.active.storedY;GLFW.active.width=GLFW.active.storedWidth;GLFW.active.height=GLFW.active.storedHeight;GLFW.active.fullscreen=false}else if(GLFW.active.width!=width||GLFW.active.height!=height){GLFW.active.width=width;GLFW.active.height=height}else{resizeNeeded=false}if(resizeNeeded){Browser.setCanvasSize(GLFW.active.width,GLFW.active.height,true);GLFW.onWindowSizeChanged();GLFW.onFramebufferSizeChanged()}},onWindowSizeChanged:function(){if(!GLFW.active)return;if(!GLFW.active.windowSizeFunc)return;wasmTable.get(GLFW.active.windowSizeFunc)(GLFW.active.id,GLFW.active.width,GLFW.active.height)},onFramebufferSizeChanged:function(){if(!GLFW.active)return;if(!GLFW.active.framebufferSizeFunc)return;wasmTable.get(GLFW.active.framebufferSizeFunc)(GLFW.active.id,GLFW.active.width,GLFW.active.height)},getTime:function(){return _emscripten_get_now()/1e3},setWindowTitle:function(winid,title){var win=GLFW.WindowFromId(winid);if(!win)return;win.title=UTF8ToString(title);if(GLFW.active.id==win.id){document.title=win.title}},setJoystickCallback:function(cbfun){GLFW.joystickFunc=cbfun;GLFW.refreshJoysticks()},joys:{},lastGamepadState:null,lastGamepadStateFrame:null,refreshJoysticks:function(){if(Browser.mainLoop.currentFrameNumber!==GLFW.lastGamepadStateFrame||!Browser.mainLoop.currentFrameNumber){GLFW.lastGamepadState=navigator.getGamepads?navigator.getGamepads():navigator.webkitGetGamepads?navigator.webkitGetGamepads:null;GLFW.lastGamepadStateFrame=Browser.mainLoop.currentFrameNumber;for(var joy=0;joy<GLFW.lastGamepadState.length;++joy){var gamepad=GLFW.lastGamepadState[joy];if(gamepad){if(!GLFW.joys[joy]){console.log("glfw joystick connected:",joy);GLFW.joys[joy]={id:allocate(intArrayFromString(gamepad.id),ALLOC_NORMAL),buttonsCount:gamepad.buttons.length,axesCount:gamepad.axes.length,buttons:allocate(new Array(gamepad.buttons.length),ALLOC_NORMAL),axes:allocate(new Array(gamepad.axes.length*4),ALLOC_NORMAL)};if(GLFW.joystickFunc){wasmTable.get(GLFW.joystickFunc)(joy,262145)}}var data=GLFW.joys[joy];for(var i=0;i<gamepad.buttons.length;++i){setValue(data.buttons+i,gamepad.buttons[i].pressed,"i8")}for(var i=0;i<gamepad.axes.length;++i){setValue(data.axes+i*4,gamepad.axes[i],"float")}}else{if(GLFW.joys[joy]){console.log("glfw joystick disconnected",joy);if(GLFW.joystickFunc){wasmTable.get(GLFW.joystickFunc)(joy,262146)}_free(GLFW.joys[joy].id);_free(GLFW.joys[joy].buttons);_free(GLFW.joys[joy].axes);delete GLFW.joys[joy]}}}}},setKeyCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.keyFunc;win.keyFunc=cbfun;return prevcbfun},setCharCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.charFunc;win.charFunc=cbfun;return prevcbfun},setMouseButtonCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.mouseButtonFunc;win.mouseButtonFunc=cbfun;return prevcbfun},setCursorPosCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.cursorPosFunc;win.cursorPosFunc=cbfun;return prevcbfun},setScrollCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.scrollFunc;win.scrollFunc=cbfun;return prevcbfun},setDropCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.dropFunc;win.dropFunc=cbfun;return prevcbfun},onDrop:function(event){if(!GLFW.active||!GLFW.active.dropFunc)return;if(!event.dataTransfer||!event.dataTransfer.files||event.dataTransfer.files.length==0)return;event.preventDefault();var filenames=allocate(new Array(event.dataTransfer.files.length*4),ALLOC_NORMAL);var filenamesArray=[];var count=event.dataTransfer.files.length;var written=0;var drop_dir=".glfw_dropped_files";FS.createPath("/",drop_dir);function save(file){var path="/"+drop_dir+"/"+file.name.replace(/\//g,"_");var reader=new FileReader;reader.onloadend=function(e){if(reader.readyState!=2){++written;console.log("failed to read dropped file: "+file.name+": "+reader.error);return}var data=e.target.result;FS.writeFile(path,new Uint8Array(data));if(++written===count){wasmTable.get(GLFW.active.dropFunc)(GLFW.active.id,count,filenames);for(var i=0;i<filenamesArray.length;++i){_free(filenamesArray[i])}_free(filenames)}};reader.readAsArrayBuffer(file);var filename=allocate(intArrayFromString(path),ALLOC_NORMAL);filenamesArray.push(filename);setValue(filenames+i*4,filename,"i8*")}for(var i=0;i<count;++i){save(event.dataTransfer.files[i])}return false},onDragover:function(event){if(!GLFW.active||!GLFW.active.dropFunc)return;event.preventDefault();return false},setWindowSizeCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowSizeFunc;win.windowSizeFunc=cbfun;return prevcbfun},setWindowCloseCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowCloseFunc;win.windowCloseFunc=cbfun;return prevcbfun},setWindowRefreshCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowRefreshFunc;win.windowRefreshFunc=cbfun;return prevcbfun},onClickRequestPointerLock:function(e){if(!Browser.pointerLock&&Module["canvas"].requestPointerLock){Module["canvas"].requestPointerLock();e.preventDefault()}},setInputMode:function(winid,mode,value){var win=GLFW.WindowFromId(winid);if(!win)return;switch(mode){case 208897:{switch(value){case 212993:{win.inputModes[mode]=value;Module["canvas"].removeEventListener("click",GLFW.onClickRequestPointerLock,true);Module["canvas"].exitPointerLock();break}case 212994:{console.log("glfwSetInputMode called with GLFW_CURSOR_HIDDEN value not implemented.");break}case 212995:{win.inputModes[mode]=value;Module["canvas"].addEventListener("click",GLFW.onClickRequestPointerLock,true);Module["canvas"].requestPointerLock();break}default:{console.log("glfwSetInputMode called with unknown value parameter value: "+value+".");break}}break}case 208898:{console.log("glfwSetInputMode called with GLFW_STICKY_KEYS mode not implemented.");break}case 208899:{console.log("glfwSetInputMode called with GLFW_STICKY_MOUSE_BUTTONS mode not implemented.");break}default:{console.log("glfwSetInputMode called with unknown mode parameter value: "+mode+".");break}}},getKey:function(winid,key){var win=GLFW.WindowFromId(winid);if(!win)return 0;return win.keys[key]},getMouseButton:function(winid,button){var win=GLFW.WindowFromId(winid);if(!win)return 0;return(win.buttons&1<<button)>0},getCursorPos:function(winid,x,y){setValue(x,Browser.mouseX,"double");setValue(y,Browser.mouseY,"double")},getMousePos:function(winid,x,y){setValue(x,Browser.mouseX,"i32");setValue(y,Browser.mouseY,"i32")},setCursorPos:function(winid,x,y){},getWindowPos:function(winid,x,y){var wx=0;var wy=0;var win=GLFW.WindowFromId(winid);if(win){wx=win.x;wy=win.y}if(x){setValue(x,wx,"i32")}if(y){setValue(y,wy,"i32")}},setWindowPos:function(winid,x,y){var win=GLFW.WindowFromId(winid);if(!win)return;win.x=x;win.y=y},getWindowSize:function(winid,width,height){var ww=0;var wh=0;var win=GLFW.WindowFromId(winid);if(win){ww=win.width;wh=win.height}if(width){setValue(width,ww,"i32")}if(height){setValue(height,wh,"i32")}},setWindowSize:function(winid,width,height){var win=GLFW.WindowFromId(winid);if(!win)return;if(GLFW.active.id==win.id){if(width==screen.width&&height==screen.height){Browser.requestFullscreen()}else{Browser.exitFullscreen();Browser.setCanvasSize(width,height);win.width=width;win.height=height}}if(!win.windowSizeFunc)return;wasmTable.get(win.windowSizeFunc)(win.id,width,height)},createWindow:function(width,height,title,monitor,share){var i,id;for(i=0;i<GLFW.windows.length&&GLFW.windows[i]!==null;i++){}if(i>0)throw"glfwCreateWindow only supports one window at time currently";id=i+1;if(width<=0||height<=0)return 0;if(monitor){Browser.requestFullscreen()}else{Browser.setCanvasSize(width,height)}for(i=0;i<GLFW.windows.length&&GLFW.windows[i]==null;i++){}var useWebGL=GLFW.hints[139265]>0;if(i==GLFW.windows.length){if(useWebGL){var contextAttributes={antialias:GLFW.hints[135181]>1,depth:GLFW.hints[135173]>0,stencil:GLFW.hints[135174]>0,alpha:GLFW.hints[135172]>0};Module.ctx=Browser.createContext(Module["canvas"],true,true,contextAttributes)}else{Browser.init()}}if(!Module.ctx&&useWebGL)return 0;var win=new GLFW_Window(id,width,height,title,monitor,share);if(id-1==GLFW.windows.length){GLFW.windows.push(win)}else{GLFW.windows[id-1]=win}GLFW.active=win;return win.id},destroyWindow:function(winid){var win=GLFW.WindowFromId(winid);if(!win)return;if(win.windowCloseFunc)wasmTable.get(win.windowCloseFunc)(win.id);GLFW.windows[win.id-1]=null;if(GLFW.active.id==win.id)GLFW.active=null;for(var i=0;i<GLFW.windows.length;i++)if(GLFW.windows[i]!==null)return;Module.ctx=Browser.destroyContext(Module["canvas"],true,true)},swapBuffers:function(winid){},GLFW2ParamToGLFW3Param:function(param){var table={196609:0,196610:0,196611:0,196612:0,196613:0,196614:0,131073:0,131074:0,131075:0,131076:0,131077:135169,131078:135170,131079:135171,131080:135172,131081:135173,131082:135174,131083:135183,131084:135175,131085:135176,131086:135177,131087:135178,131088:135179,131089:135180,131090:0,131091:135181,131092:139266,131093:139267,131094:139270,131095:139271,131096:139272};return table[param]}};function _glfwCreateWindow(width,height,title,monitor,share){return GLFW.createWindow(width,height,title,monitor,share)}function _glfwDefaultWindowHints(){GLFW.hints=GLFW.defaultHints}function _glfwDestroyWindow(winid){return GLFW.destroyWindow(winid)}function _glfwGetPrimaryMonitor(){return 1}function _glfwGetTime(){return GLFW.getTime()-GLFW.initialTime}function _glfwGetVideoModes(monitor,count){setValue(count,0,"i32");return 0}function _glfwInit(){if(GLFW.windows)return 1;GLFW.initialTime=GLFW.getTime();GLFW.hints=GLFW.defaultHints;GLFW.windows=new Array;GLFW.active=null;window.addEventListener("gamepadconnected",GLFW.onGamepadConnected,true);window.addEventListener("gamepaddisconnected",GLFW.onGamepadDisconnected,true);window.addEventListener("keydown",GLFW.onKeydown,true);window.addEventListener("keypress",GLFW.onKeyPress,true);window.addEventListener("keyup",GLFW.onKeyup,true);window.addEventListener("blur",GLFW.onBlur,true);Module["canvas"].addEventListener("touchmove",GLFW.onMousemove,true);Module["canvas"].addEventListener("touchstart",GLFW.onMouseButtonDown,true);Module["canvas"].addEventListener("touchcancel",GLFW.onMouseButtonUp,true);Module["canvas"].addEventListener("touchend",GLFW.onMouseButtonUp,true);Module["canvas"].addEventListener("mousemove",GLFW.onMousemove,true);Module["canvas"].addEventListener("mousedown",GLFW.onMouseButtonDown,true);Module["canvas"].addEventListener("mouseup",GLFW.onMouseButtonUp,true);Module["canvas"].addEventListener("wheel",GLFW.onMouseWheel,true);Module["canvas"].addEventListener("mousewheel",GLFW.onMouseWheel,true);Module["canvas"].addEventListener("mouseenter",GLFW.onMouseenter,true);Module["canvas"].addEventListener("mouseleave",GLFW.onMouseleave,true);Module["canvas"].addEventListener("drop",GLFW.onDrop,true);Module["canvas"].addEventListener("dragover",GLFW.onDragover,true);Browser.resizeListeners.push(function(width,height){GLFW.onCanvasResize(width,height)});return 1}function _glfwMakeContextCurrent(winid){}function _glfwSetCharCallback(winid,cbfun){return GLFW.setCharCallback(winid,cbfun)}function _glfwSetCursorEnterCallback(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.cursorEnterFunc;win.cursorEnterFunc=cbfun;return prevcbfun}function _glfwSetCursorPosCallback(winid,cbfun){return GLFW.setCursorPosCallback(winid,cbfun)}function _glfwSetDropCallback(winid,cbfun){return GLFW.setDropCallback(winid,cbfun)}function _glfwSetErrorCallback(cbfun){var prevcbfun=GLFW.errorFunc;GLFW.errorFunc=cbfun;return prevcbfun}function _glfwSetKeyCallback(winid,cbfun){return GLFW.setKeyCallback(winid,cbfun)}function _glfwSetMouseButtonCallback(winid,cbfun){return GLFW.setMouseButtonCallback(winid,cbfun)}function _glfwSetScrollCallback(winid,cbfun){return GLFW.setScrollCallback(winid,cbfun)}function _glfwSetWindowFocusCallback(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowFocusFunc;win.windowFocusFunc=cbfun;return prevcbfun}function _glfwSetWindowIconifyCallback(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowIconifyFunc;win.windowIconifyFunc=cbfun;return prevcbfun}function _glfwSetWindowShouldClose(winid,value){var win=GLFW.WindowFromId(winid);if(!win)return;win.shouldClose=value}function _glfwSetWindowSizeCallback(winid,cbfun){return GLFW.setWindowSizeCallback(winid,cbfun)}function _glfwSwapBuffers(winid){GLFW.swapBuffers(winid)}function _glfwSwapInterval(interval){interval=Math.abs(interval);if(interval==0)_emscripten_set_main_loop_timing(0,0);else _emscripten_set_main_loop_timing(1,interval)}function _glfwTerminate(){window.removeEventListener("gamepadconnected",GLFW.onGamepadConnected,true);window.removeEventListener("gamepaddisconnected",GLFW.onGamepadDisconnected,true);window.removeEventListener("keydown",GLFW.onKeydown,true);window.removeEventListener("keypress",GLFW.onKeyPress,true);window.removeEventListener("keyup",GLFW.onKeyup,true);window.removeEventListener("blur",GLFW.onBlur,true);Module["canvas"].removeEventListener("touchmove",GLFW.onMousemove,true);Module["canvas"].removeEventListener("touchstart",GLFW.onMouseButtonDown,true);Module["canvas"].removeEventListener("touchcancel",GLFW.onMouseButtonUp,true);Module["canvas"].removeEventListener("touchend",GLFW.onMouseButtonUp,true);Module["canvas"].removeEventListener("mousemove",GLFW.onMousemove,true);Module["canvas"].removeEventListener("mousedown",GLFW.onMouseButtonDown,true);Module["canvas"].removeEventListener("mouseup",GLFW.onMouseButtonUp,true);Module["canvas"].removeEventListener("wheel",GLFW.onMouseWheel,true);Module["canvas"].removeEventListener("mousewheel",GLFW.onMouseWheel,true);Module["canvas"].removeEventListener("mouseenter",GLFW.onMouseenter,true);Module["canvas"].removeEventListener("mouseleave",GLFW.onMouseleave,true);Module["canvas"].removeEventListener("drop",GLFW.onDrop,true);Module["canvas"].removeEventListener("dragover",GLFW.onDragover,true);Module["canvas"].width=Module["canvas"].height=1;GLFW.windows=null;GLFW.active=null}function _glfwWindowHint(target,hint){GLFW.hints[target]=hint}function _time(ptr){var ret=Date.now()/1e3|0;if(ptr){HEAP32[ptr>>2]=ret}return ret}var FSNode=function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev};var readMode=292|73;var writeMode=146;Object.defineProperties(FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(val){val?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===writeMode},set:function(val){val?this.mode|=writeMode:this.mode&=~writeMode}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}});FS.FSNode=FSNode;FS.staticInit();Module["FS_createPath"]=FS.createPath;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createDevice"]=FS.createDevice;Module["FS_unlink"]=FS.unlink;var GLctx;for(var i=0;i<32;++i)tempFixedLengthArray.push(new Array(i));var miniTempWebGLFloatBuffersStorage=new Float32Array(288);for(var i=0;i<288;++i){miniTempWebGLFloatBuffers[i]=miniTempWebGLFloatBuffersStorage.subarray(0,i+1)}var __miniTempWebGLIntBuffersStorage=new Int32Array(288);for(var i=0;i<288;++i){__miniTempWebGLIntBuffers[i]=__miniTempWebGLIntBuffersStorage.subarray(0,i+1)}Module["requestFullscreen"]=function Module_requestFullscreen(lockPointer,resizeCanvas){Browser.requestFullscreen(lockPointer,resizeCanvas)};Module["requestAnimationFrame"]=function Module_requestAnimationFrame(func){Browser.requestAnimationFrame(func)};Module["setCanvasSize"]=function Module_setCanvasSize(width,height,noUpdates){Browser.setCanvasSize(width,height,noUpdates)};Module["pauseMainLoop"]=function Module_pauseMainLoop(){Browser.mainLoop.pause()};Module["resumeMainLoop"]=function Module_resumeMainLoop(){Browser.mainLoop.resume()};Module["getUserMedia"]=function Module_getUserMedia(){Browser.getUserMedia()};Module["createContext"]=function Module_createContext(canvas,useWebGL,setInModule,webGLContextAttributes){return Browser.createContext(canvas,useWebGL,setInModule,webGLContextAttributes)};function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var asmLibraryArg={"b":___assert_fail,"G":___sys_fcntl64,"Sa":___sys_ioctl,"Ta":___sys_open,"x":_emscripten_exit_pointerlock,"_":_emscripten_get_element_css_size,"V":_emscripten_get_gamepad_status,"W":_emscripten_get_num_gamepads,"Hd":_emscripten_glActiveTexture,"Gd":_emscripten_glAttachShader,"O":_emscripten_glBeginQueryEXT,"Fd":_emscripten_glBindAttribLocation,"Ed":_emscripten_glBindBuffer,"Dd":_emscripten_glBindFramebuffer,"Cd":_emscripten_glBindRenderbuffer,"Bd":_emscripten_glBindTexture,"Pd":_emscripten_glBindVertexArrayOES,"zd":_emscripten_glBlendColor,"yd":_emscripten_glBlendEquation,"xd":_emscripten_glBlendEquationSeparate,"wd":_emscripten_glBlendFunc,"vd":_emscripten_glBlendFuncSeparate,"ud":_emscripten_glBufferData,"td":_emscripten_glBufferSubData,"sd":_emscripten_glCheckFramebufferStatus,"rd":_emscripten_glClear,"qd":_emscripten_glClearColor,"od":_emscripten_glClearDepthf,"nd":_emscripten_glClearStencil,"md":_emscripten_glColorMask,"ld":_emscripten_glCompileShader,"kd":_emscripten_glCompressedTexImage2D,"jd":_emscripten_glCompressedTexSubImage2D,"id":_emscripten_glCopyTexImage2D,"hd":_emscripten_glCopyTexSubImage2D,"gd":_emscripten_glCreateProgram,"fd":_emscripten_glCreateShader,"ed":_emscripten_glCullFace,"dd":_emscripten_glDeleteBuffers,"cd":_emscripten_glDeleteFramebuffers,"bd":_emscripten_glDeleteProgram,"Q":_emscripten_glDeleteQueriesEXT,"ad":_emscripten_glDeleteRenderbuffers,"$c":_emscripten_glDeleteShader,"_c":_emscripten_glDeleteTextures,"Od":_emscripten_glDeleteVertexArraysOES,"Zc":_emscripten_glDepthFunc,"Yc":_emscripten_glDepthMask,"Xc":_emscripten_glDepthRangef,"Wc":_emscripten_glDetachShader,"Vc":_emscripten_glDisable,"Uc":_emscripten_glDisableVertexAttribArray,"Tc":_emscripten_glDrawArrays,"Kd":_emscripten_glDrawArraysInstancedANGLE,"Ld":_emscripten_glDrawBuffersWEBGL,"Sc":_emscripten_glDrawElements,"Jd":_emscripten_glDrawElementsInstancedANGLE,"Rc":_emscripten_glEnable,"Qc":_emscripten_glEnableVertexAttribArray,"N":_emscripten_glEndQueryEXT,"Pc":_emscripten_glFinish,"Oc":_emscripten_glFlush,"Nc":_emscripten_glFramebufferRenderbuffer,"Mc":_emscripten_glFramebufferTexture2D,"Lc":_emscripten_glFrontFace,"Kc":_emscripten_glGenBuffers,"Ic":_emscripten_glGenFramebuffers,"R":_emscripten_glGenQueriesEXT,"Hc":_emscripten_glGenRenderbuffers,"Gc":_emscripten_glGenTextures,"Nd":_emscripten_glGenVertexArraysOES,"Jc":_emscripten_glGenerateMipmap,"Fc":_emscripten_glGetActiveAttrib,"Ec":_emscripten_glGetActiveUniform,"Dc":_emscripten_glGetAttachedShaders,"Bc":_emscripten_glGetAttribLocation,"Ac":_emscripten_glGetBooleanv,"zc":_emscripten_glGetBufferParameteriv,"yc":_emscripten_glGetError,"xc":_emscripten_glGetFloatv,"wc":_emscripten_glGetFramebufferAttachmentParameteriv,"vc":_emscripten_glGetIntegerv,"tc":_emscripten_glGetProgramInfoLog,"uc":_emscripten_glGetProgramiv,"Rd":_emscripten_glGetQueryObjecti64vEXT,"Td":_emscripten_glGetQueryObjectivEXT,"Qd":_emscripten_glGetQueryObjectui64vEXT,"Sd":_emscripten_glGetQueryObjectuivEXT,"Ud":_emscripten_glGetQueryivEXT,"sc":_emscripten_glGetRenderbufferParameteriv,"qc":_emscripten_glGetShaderInfoLog,"pc":_emscripten_glGetShaderPrecisionFormat,"oc":_emscripten_glGetShaderSource,"rc":_emscripten_glGetShaderiv,"nc":_emscripten_glGetString,"mc":_emscripten_glGetTexParameterfv,"lc":_emscripten_glGetTexParameteriv,"ic":_emscripten_glGetUniformLocation,"kc":_emscripten_glGetUniformfv,"jc":_emscripten_glGetUniformiv,"fc":_emscripten_glGetVertexAttribPointerv,"hc":_emscripten_glGetVertexAttribfv,"gc":_emscripten_glGetVertexAttribiv,"ec":_emscripten_glHint,"dc":_emscripten_glIsBuffer,"cc":_emscripten_glIsEnabled,"bc":_emscripten_glIsFramebuffer,"ac":_emscripten_glIsProgram,"P":_emscripten_glIsQueryEXT,"$b":_emscripten_glIsRenderbuffer,"_b":_emscripten_glIsShader,"Zb":_emscripten_glIsTexture,"Md":_emscripten_glIsVertexArrayOES,"Yb":_emscripten_glLineWidth,"Xb":_emscripten_glLinkProgram,"Wb":_emscripten_glPixelStorei,"Vb":_emscripten_glPolygonOffset,"M":_emscripten_glQueryCounterEXT,"Ub":_emscripten_glReadPixels,"Tb":_emscripten_glReleaseShaderCompiler,"Sb":_emscripten_glRenderbufferStorage,"Rb":_emscripten_glSampleCoverage,"Qb":_emscripten_glScissor,"Ob":_emscripten_glShaderBinary,"Nb":_emscripten_glShaderSource,"Mb":_emscripten_glStencilFunc,"Lb":_emscripten_glStencilFuncSeparate,"Kb":_emscripten_glStencilMask,"Jb":_emscripten_glStencilMaskSeparate,"Ib":_emscripten_glStencilOp,"Hb":_emscripten_glStencilOpSeparate,"Gb":_emscripten_glTexImage2D,"Fb":_emscripten_glTexParameterf,"Db":_emscripten_glTexParameterfv,"Cb":_emscripten_glTexParameteri,"Bb":_emscripten_glTexParameteriv,"Ab":_emscripten_glTexSubImage2D,"zb":_emscripten_glUniform1f,"yb":_emscripten_glUniform1fv,"xb":_emscripten_glUniform1i,"wb":_emscripten_glUniform1iv,"vb":_emscripten_glUniform2f,"ub":_emscripten_glUniform2fv,"sb":_emscripten_glUniform2i,"rb":_emscripten_glUniform2iv,"qb":_emscripten_glUniform3f,"pb":_emscripten_glUniform3fv,"ob":_emscripten_glUniform3i,"nb":_emscripten_glUniform3iv,"mb":_emscripten_glUniform4f,"lb":_emscripten_glUniform4fv,"kb":_emscripten_glUniform4i,"jb":_emscripten_glUniform4iv,"hb":_emscripten_glUniformMatrix2fv,"gb":_emscripten_glUniformMatrix3fv,"fb":_emscripten_glUniformMatrix4fv,"eb":_emscripten_glUseProgram,"db":_emscripten_glValidateProgram,"cb":_emscripten_glVertexAttrib1f,"bb":_emscripten_glVertexAttrib1fv,"ab":_emscripten_glVertexAttrib2f,"$a":_emscripten_glVertexAttrib2fv,"_a":_emscripten_glVertexAttrib3f,"Ya":_emscripten_glVertexAttrib3fv,"Xa":_emscripten_glVertexAttrib4f,"Wa":_emscripten_glVertexAttrib4fv,"Id":_emscripten_glVertexAttribDivisorANGLE,"Va":_emscripten_glVertexAttribPointer,"Ua":_emscripten_glViewport,"Na":_emscripten_memcpy_big,"Oa":_emscripten_resize_heap,"t":_emscripten_run_script,"X":_emscripten_sample_gamepad_data,"xa":_emscripten_set_click_callback_on_thread,"za":_emscripten_set_fullscreenchange_callback_on_thread,"sa":_emscripten_set_gamepadconnected_callback_on_thread,"ra":_emscripten_set_gamepaddisconnected_callback_on_thread,"ya":_emscripten_set_keydown_callback_on_thread,"Wd":_emscripten_set_main_loop,"ta":_emscripten_set_touchcancel_callback_on_thread,"va":_emscripten_set_touchend_callback_on_thread,"ua":_emscripten_set_touchmove_callback_on_thread,"wa":_emscripten_set_touchstart_callback_on_thread,"Pa":_emscripten_thread_sleep,"S":_exit,"H":_fd_close,"Ra":_fd_read,"Ma":_fd_seek,"F":_fd_write,"L":_glActiveTexture,"y":_glAttachShader,"g":_glBindAttribLocation,"a":_glBindBuffer,"h":_glBindTexture,"Eb":_glBlendFunc,"l":_glBufferData,"r":_glBufferSubData,"I":_glClear,"J":_glClearColor,"Za":_glClearDepthf,"Fa":_glCompileShader,"Ja":_glCompressedTexImage2D,"Da":_glCreateProgram,"Ha":_glCreateShader,"tb":_glCullFace,"j":_glDeleteBuffers,"B":_glDeleteProgram,"C":_glDeleteShader,"E":_glDeleteTextures,"Pb":_glDepthFunc,"D":_glDetachShader,"K":_glDisable,"k":_glDisableVertexAttribArray,"Ad":_glDrawArrays,"pd":_glDrawElements,"s":_glEnable,"e":_glEnableVertexAttribArray,"ib":_glFrontFace,"m":_glGenBuffers,"La":_glGenTextures,"q":_glGetAttribLocation,"Cc":_glGetFloatv,"Aa":_glGetProgramInfoLog,"A":_glGetProgramiv,"Ea":_glGetShaderInfoLog,"z":_glGetShaderiv,"i":_glGetString,"p":_glGetUniformLocation,"Ba":_glLinkProgram,"Qa":_glPixelStorei,"Ia":_glReadPixels,"Ga":_glShaderSource,"Ka":_glTexImage2D,"n":_glTexParameteri,"U":_glUniform1i,"ba":_glUniform4f,"Ca":_glUniformMatrix4fv,"o":_glUseProgram,"f":_glVertexAttribPointer,"Vd":_glViewport,"v":_glfwCreateWindow,"oa":_glfwDefaultWindowHints,"Z":_glfwDestroyWindow,"w":_glfwGetPrimaryMonitor,"d":_glfwGetTime,"na":_glfwGetVideoModes,"pa":_glfwInit,"ca":_glfwMakeContextCurrent,"ha":_glfwSetCharCallback,"da":_glfwSetCursorEnterCallback,"fa":_glfwSetCursorPosCallback,"ja":_glfwSetDropCallback,"qa":_glfwSetErrorCallback,"ia":_glfwSetKeyCallback,"ga":_glfwSetMouseButtonCallback,"ea":_glfwSetScrollCallback,"ka":_glfwSetWindowFocusCallback,"la":_glfwSetWindowIconifyCallback,"T":_glfwSetWindowShouldClose,"ma":_glfwSetWindowSizeCallback,"Y":_glfwSwapBuffers,"aa":_glfwSwapInterval,"u":_glfwTerminate,"c":_glfwWindowHint,"$":_time};var asm=createWasm();var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["Yd"]).apply(null,arguments)};var _main=Module["_main"]=function(){return(_main=Module["_main"]=Module["asm"]["Zd"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["$d"]).apply(null,arguments)};var _free=Module["_free"]=function(){return(_free=Module["_free"]=Module["asm"]["ae"]).apply(null,arguments)};var ___errno_location=Module["___errno_location"]=function(){return(___errno_location=Module["___errno_location"]=Module["asm"]["be"]).apply(null,arguments)};var stackAlloc=Module["stackAlloc"]=function(){return(stackAlloc=Module["stackAlloc"]=Module["asm"]["ce"]).apply(null,arguments)};Module["addRunDependency"]=addRunDependency;Module["removeRunDependency"]=removeRunDependency;Module["FS_createPath"]=FS.createPath;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createDevice"]=FS.createDevice;Module["FS_unlink"]=FS.unlink;var calledRun;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}var calledMain=false;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args){var entryFunction=Module["_main"];var argc=0;var argv=0;try{var ret=entryFunction(argc,argv);exit(ret,true)}catch(e){if(e instanceof ExitStatus){return}else if(e=="unwind"){noExitRuntime=true;return}else{var toLog=e;if(e&&typeof e==="object"&&e.stack){toLog=[e,e.stack]}err("exception thrown: "+toLog);quit_(1,e)}}finally{calledMain=true}}function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(shouldRunNow)callMain(args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}Module["run"]=run;function exit(status,implicit){if(implicit&&noExitRuntime&&status===0){return}if(noExitRuntime){}else{EXITSTATUS=status;exitRuntime();if(Module["onExit"])Module["onExit"](status);ABORT=true}quit_(status,new ExitStatus(status))}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}var shouldRunNow=true;if(Module["noInitialRun"])shouldRunNow=false;run();
diff --git a/examples/web/models/models_billboard.wasm b/examples/web/models/models_billboard.wasm
deleted file mode 100644
index ed3dc38..0000000
--- a/examples/web/models/models_billboard.wasm
+++ /dev/null
Binary files differ
diff --git a/examples/web/models/models_box_collisions.c b/examples/web/models/models_box_collisions.c
deleted file mode 100644
index 54cb6c2..0000000
--- a/examples/web/models/models_box_collisions.c
+++ /dev/null
@@ -1,150 +0,0 @@
-/*******************************************************************************************
-*
-* raylib [models] example - Detect basic 3d collisions (box vs sphere vs box) (adapted for HTML5 platform)
-*
-* This example has been created using raylib 1.3 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
-*
-* Copyright (c) 2015 Ramon Santamaria (@raysan5)
-*
-********************************************************************************************/
-
-#include "raylib.h"
-
-#if defined(PLATFORM_WEB)
- #include <emscripten/emscripten.h>
-#endif
-
-//----------------------------------------------------------------------------------
-// Global Variables Definition
-//----------------------------------------------------------------------------------
-const int screenWidth = 800;
-const int screenHeight = 450;
-
-
-// Define the camera to look into our 3d world
-Camera camera = {{ 0.0f, 10.0f, 10.0f }, { 0.0f, 0.0f, 0.0f }, { 0.0f, 1.0f, 0.0f }, 45.0f };
-
-Vector3 playerPosition = { 0.0f, 1.0f, 2.0f };
-Vector3 playerSize = { 1.0f, 2.0f, 1.0f };
-Color playerColor = GREEN;
-
-Vector3 enemyBoxPos = { -4.0f, 1.0f, 0.0f };
-Vector3 enemyBoxSize = { 2.0f, 2.0f, 2.0f };
-
-Vector3 enemySpherePos = { 4.0f, 0.0f, 0.0f };
-float enemySphereSize = 1.5f;
-
-bool collision = false;
-
-//----------------------------------------------------------------------------------
-// Module Functions Declaration
-//----------------------------------------------------------------------------------
-void UpdateDrawFrame(void); // Update and Draw one frame
-
-//----------------------------------------------------------------------------------
-// Program Main Entry Point
-//----------------------------------------------------------------------------------
-int main(void)
-{
- // Initialization
- //--------------------------------------------------------------------------------------
- InitWindow(screenWidth, screenHeight, "raylib [models] example - box collisions");
-
-#if defined(PLATFORM_WEB)
- emscripten_set_main_loop(UpdateDrawFrame, 60, 1);
-#else
- SetTargetFPS(60); // Set our game to run at 60 frames-per-second
- //--------------------------------------------------------------------------------------
-
- // Main game loop
- while (!WindowShouldClose()) // Detect window close button or ESC key
- {
- UpdateDrawFrame();
- }
-#endif
-
- // De-Initialization
- //--------------------------------------------------------------------------------------
- CloseWindow(); // Close window and OpenGL context
- //--------------------------------------------------------------------------------------
-
- return 0;
-}
-
-//----------------------------------------------------------------------------------
-// Module Functions Definition
-//----------------------------------------------------------------------------------
-void UpdateDrawFrame(void)
-{
- // Update
- //----------------------------------------------------------------------------------
-
- // Move player
- if (IsKeyDown(KEY_RIGHT)) playerPosition.x += 0.2f;
- else if (IsKeyDown(KEY_LEFT)) playerPosition.x -= 0.2f;
- else if (IsKeyDown(KEY_DOWN)) playerPosition.z += 0.2f;
- else if (IsKeyDown(KEY_UP)) playerPosition.z -= 0.2f;
-
- collision = false;
-
- // Check collisions player vs enemy-box
- if (CheckCollisionBoxes(
- (BoundingBox){(Vector3){ playerPosition.x - playerSize.x/2,
- playerPosition.y - playerSize.y/2,
- playerPosition.z - playerSize.z/2 },
- (Vector3){ playerPosition.x + playerSize.x/2,
- playerPosition.y + playerSize.y/2,
- playerPosition.z + playerSize.z/2 }},
- (BoundingBox){(Vector3){ enemyBoxPos.x - enemyBoxSize.x/2,
- enemyBoxPos.y - enemyBoxSize.y/2,
- enemyBoxPos.z - enemyBoxSize.z/2 },
- (Vector3){ enemyBoxPos.x + enemyBoxSize.x/2,
- enemyBoxPos.y + enemyBoxSize.y/2,
- enemyBoxPos.z + enemyBoxSize.z/2 }})) collision = true;
-
- // Check collisions player vs enemy-sphere
- if (CheckCollisionBoxSphere(
- (BoundingBox){(Vector3){ playerPosition.x - playerSize.x/2,
- playerPosition.y - playerSize.y/2,
- playerPosition.z - playerSize.z/2 },
- (Vector3){ playerPosition.x + playerSize.x/2,
- playerPosition.y + playerSize.y/2,
- playerPosition.z + playerSize.z/2 }},
- enemySpherePos, enemySphereSize)) collision = true;
-
- if (collision) playerColor = RED;
- else playerColor = GREEN;
- //----------------------------------------------------------------------------------
-
- // Draw
- //----------------------------------------------------------------------------------
- BeginDrawing();
-
- ClearBackground(RAYWHITE);
-
- BeginMode3D(camera);
-
- // Draw enemy-box
- DrawCube(enemyBoxPos, enemyBoxSize.x, enemyBoxSize.y, enemyBoxSize.z, GRAY);
- DrawCubeWires(enemyBoxPos, enemyBoxSize.x, enemyBoxSize.y, enemyBoxSize.z, DARKGRAY);
-
- // Draw enemy-sphere
- DrawSphere(enemySpherePos, enemySphereSize, GRAY);
- DrawSphereWires(enemySpherePos, enemySphereSize, 16, 16, DARKGRAY);
-
- // Draw player
- DrawCubeV(playerPosition, playerSize, playerColor);
-
- DrawGrid(10, 1.0f); // Draw a grid
-
- EndMode3D();
-
- DrawText("Move player with cursors to collide", 220, 40, 20, GRAY);
-
- DrawFPS(10, 10);
-
- EndDrawing();
- //----------------------------------------------------------------------------------
-
-} \ No newline at end of file
diff --git a/examples/web/models/models_box_collisions.html b/examples/web/models/models_box_collisions.html
deleted file mode 100644
index d548253..0000000
--- a/examples/web/models/models_box_collisions.html
+++ /dev/null
@@ -1 +0,0 @@
-<!doctypehtml><html lang=en-us><head><meta charset=utf-8><meta content="text/html; charset=utf-8"http-equiv=Content-Type><title>raylib HTML5 GAME</title><meta content="raylib HTML5 GAME"name=title><meta content="New HTML5 videogame, developed using raylib videogames library"name=description><meta content="raylib, games, html5, programming, C, C++, library, learn, videogames"name=keywords><meta content="width=device-width"name=viewport><meta content="raylib HTML5 GAME"property=og:title><meta content=image/png property=og:image:type><meta content=https://www.raylib.com/common/img/raylib_logo.png property=og:image><meta content=raylib.com property=og:site_name><meta content=https://www.raylib.com/games.html property=og:url><meta content="New HTML5 videogame, developed using raylib videogames library"property=og:description><meta content=summary name=twitter:card><meta content=@raysan5 name=twitter:site><meta content="raylib HTML5 GAME"name=twitter:title><meta content=https://www.raylib.com/common/raylib_logo.png name=twitter:image><meta content=https://www.raylib.com/games.html name=twitter:url><meta content="New HTML5 videogame, developed using raylib videogames library"name=twitter:description><link href=https://www.raylib.com/favicon.ico rel="shortcut icon"><style>body{font-family:arial;margin:0;padding:none}#header{width:100%;height:80px;background-color:#888}#logo{width:64px;height:64px;float:left;position:relative;margin:10px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAAlC+aJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjExR/NCNwAAA7JJREFUaEPtk0FyWzEMQ+37X7fZhxX4YY3AD1OKF1nkzTRlSBCCLeVBnvl/AUdaELOunPno1kts1kixdtEZKVs+xIxebBkZsVknn/L5nFGDLR8T4zVC9fX19S/+tTFijrYK4jUjbPUtqBHpnEE6PkZD7jQZV8n5Recw1XQKciZuPaEtR6UjNs5ENVGMsBVqpPtER0ZMOhpyp8m4YL4OjD9yxsyZxnQycfMJETNSzsRE1+dihK3YMiJmpHTW3xpmXPC6BXlCHfqnBlsjY5hxf/6EVEOM2BTEi0fYCX4ONSI6Kq3Blg/prIOMq2CsRur4KQ0x64SdjOufEDEdHZGOhmz5RDHCVqhRuQ86YsVskbc+GXchLiHnFyYH+UigQDVGnImbT8hwFkgLg2qiM8JO6Ylx1FNLa3DmYwqCTsZd4BPqGJG7MwKzpeiWKTKxXkLMVE3MSOmsdwxLH6Rd/wCCLSNDx6djeKfJuArGeoYamRHpaEjnCBYZVy8hZqo2GI36qPjsiOiMsBXGcev4Mx9TLGTchbgEjN/uz6jGrBvDjg+LTNx8Qp2CbG2xMKgmOiPslJ4Yxx+eSnSkzlosZNwFPiHl7FRTkLNRJm4+IeVM0ymIH42wE/wcKalQI4MRl4EW3p6VcRWMua8F6WjIlqZDxvVPiHQ6CjVbYkV9ohhhp/Rk1wiYgpyJ78i4CsZbjkb8Qx+ihvzu3RPaKogZkY6GlEeMsKdPSOFIC8VoOusg44L5c+T8ouOoGhWbdWJ8tMi4egkxo4hoh2yNTGf3iIyr5Lyic4bRENXo+lvDjAt4C1Hk/OKtUaAj0+n4dMSZ2D+hrYJsaYh2SClG2jV9kJKKzhlGQ1SsW299Mq6C8dYZHTExo8fzieI5ivipYnYy7nwJqGKmOYyRwfiUBXITfh5qSHRGWEkfqJqURgvsdHyWYv7Ko8DnYYegk3EB00cxprdrJRzFd7YQzawu8L1GMTYS/KpPaAFTkIn1EmJmspJSs5xBzSyGhlkBmlxfNFiP5mw4wlbMh4F5Ddxp5jNINBdCEz9zPOC1zD7Q0HBdmXndwv0TMtydEdzlWJT4VZ8Qt9Qn4/onxMIwa5ZYGJU5yufBiCjwE50AGjLCVuS8Yt4H7OgZLKK5EKOsLviEWJSL/+0uMi7gLUSBseYwqEbXvSHCec1CJvZPyHCmYQffaBBfOTCGHM2aEbZi1+gO1XTWVXMnzrhAn5DSOZVsiQlHnSITKzGj6DeTcZWc/3oy7h9//PF4PL4BlvsWrb6RE+oAAAAASUVORK5CYII=)}.emscripten{padding-right:0;margin-left:auto;margin-right:auto;display:block}div.emscripten{text-align:center}div.emscripten_border{border:1px solid #000}canvas.emscripten{border:0 none;background:#000;width:100%}.spinner{height:30px;width:30px;margin:0;margin-top:20px;margin-left:20px;display:inline-block;vertical-align:top;-webkit-animation:rotation .8s linear infinite;-moz-animation:rotation .8s linear infinite;-o-animation:rotation .8s linear infinite;animation:rotation .8s linear infinite;border-left:5px solid #000;border-right:5px solid #000;border-bottom:5px solid #000;border-top:5px solid red;border-radius:100%;background-color:#f5f5f5}@-webkit-keyframes rotation{from{-webkit-transform:rotate(0)}to{-webkit-transform:rotate(360deg)}}@-moz-keyframes rotation{from{-moz-transform:rotate(0)}to{-moz-transform:rotate(360deg)}}@-o-keyframes rotation{from{-o-transform:rotate(0)}to{-o-transform:rotate(360deg)}}@keyframes rotation{from{transform:rotate(0)}to{transform:rotate(360deg)}}#status{display:inline-block;vertical-align:top;margin-top:30px;margin-left:20px;font-weight:700;color:#282828}#progress{height:0;width:0}#controls{display:inline-block;float:right;vertical-align:top;margin-top:15px;margin-right:20px}#output{width:100%;height:140px;margin:0 auto;margin-top:10px;display:block;background-color:#000;color:#25ae26;font-family:'Lucida Console',Monaco,monospace;outline:0}input[type=button]{background-color:#d3d3d3;border:4px solid #a9a9a9;color:#000;text-decoration:none;cursor:pointer;width:140px;height:50px}input[type=button]:hover{background-color:#f5f5f5ff;border-color:#000}</style></head><body><div id=header><a href=https://www.raylib.com id=logo></a><div class=spinner id=spinner></div><div class=emscripten id=status>Downloading...</div><span id=controls><span><input onclick=Module.requestFullscreen(!1,!1) type=button value="🖵 FULLSCREEN"></span><span><input onclick=toggleAudio() type=button value="🔇 SUSPEND"id=btn-audio></span></span><div class=emscripten><progress hidden id=progress max=100 value=0></progress></div></div><div class=emscripten_border><canvas class=emscripten id=canvas oncontextmenu=event.preventDefault() tabindex=-1></canvas></div><textarea id=output rows=8></textarea><script src=https://cdn.jsdelivr.net/gh/eligrey/FileSaver.js/dist/FileSaver.min.js></script><script>function saveFileFromMEMFSToDisk(e,a){var t,i=/^((?!chrome|android).)*safari/i.test(navigator.userAgent),o=FS.readFile(e);t=i?new Blob([o.buffer],{type:"application/octet-stream"}):new Blob([o.buffer],{type:"application/octet-binary"}),saveAs(t,a)}</script><script>var statusElement=document.querySelector("#status"),progressElement=document.querySelector("#progress"),spinnerElement=document.querySelector("#spinner"),Module={preRun:[],postRun:[],print:function(){var e=document.querySelector("#output");return e&&(e.value=""),function(t){arguments.length>1&&(t=Array.prototype.slice.call(arguments).join(" ")),console.log(t),e&&(e.value+=t+"\n",e.scrollTop=e.scrollHeight)}}(),printErr:function(e){arguments.length>1&&(e=Array.prototype.slice.call(arguments).join(" ")),console.error(e)},canvas:function(){var e=document.querySelector("#canvas");return e.addEventListener("webglcontextlost",(function(e){alert("WebGL context lost. You will need to reload the page."),e.preventDefault()}),!1),e}(),setStatus:function(e){if(Module.setStatus.last||(Module.setStatus.last={time:Date.now(),text:""}),e!==Module.setStatus.last.text){var t=e.match(/([^(]+)\((\d+(\.\d+)?)\/(\d+)\)/),n=Date.now();t&&n-Module.setStatus.last.time<30||(Module.setStatus.last.time=n,Module.setStatus.last.text=e,t?(e=t[1],progressElement.value=100*parseInt(t[2]),progressElement.max=100*parseInt(t[4]),progressElement.hidden=!0,spinnerElement.hidden=!1):(progressElement.value=null,progressElement.max=null,progressElement.hidden=!0,e||(spinnerElement.style.display="none")),statusElement.innerHTML=e)}},totalDependencies:0,monitorRunDependencies:function(e){this.totalDependencies=Math.max(this.totalDependencies,e),Module.setStatus(e?"Preparing... ("+(this.totalDependencies-e)+"/"+this.totalDependencies+")":"All downloads complete.")}};Module.setStatus("Downloading..."),window.onerror=function(){Module.setStatus("Exception thrown, see JavaScript console"),spinnerElement.style.display="none",Module.setStatus=function(e){e&&Module.printErr("[post-exception status] "+e)}}</script><script>var audioBtn=document.querySelector("#btn-audio");const audioContexList=[];function toggleAudio(){var t=!1;audioContexList.forEach(e=>{"suspended"==e.state?(e.resume(),t=!0):"running"==e.state&&e.suspend()}),audioBtn.value=t?"🔇 SUSPEND":"🔈 RESUME"}self.AudioContext=new Proxy(self.AudioContext,{construct(t,e){const n=new t(...e);return audioContexList.push(n),"suspended"==n.state&&(audioBtn.value="🔈 RESUME"),n}})</script><script src=models_box_collisions.js async></script></body></html> \ No newline at end of file
diff --git a/examples/web/models/models_box_collisions.js b/examples/web/models/models_box_collisions.js
deleted file mode 100644
index 9a97991..0000000
--- a/examples/web/models/models_box_collisions.js
+++ /dev/null
@@ -1 +0,0 @@
-var Module=typeof Module!=="undefined"?Module:{};var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram="./this.program";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window==="object";ENVIRONMENT_IS_WORKER=typeof importScripts==="function";ENVIRONMENT_IS_NODE=typeof process==="object"&&typeof process.versions==="object"&&typeof process.versions.node==="string";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require("path").dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require("fs");if(!nodePath)nodePath=require("path");filename=nodePath["normalize"](filename);return nodeFS["readFileSync"](filename,binary?null:"utf8")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);if(typeof module!=="undefined"){module["exports"]=Module}process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",abort);quit_=function(status){process["exit"](status)};Module["inspect"]=function(){return"[Emscripten Module object]"}}else if(ENVIRONMENT_IS_SHELL){if(typeof read!="undefined"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer==="function"){return new Uint8Array(readbuffer(f))}data=read(f,"binary");assert(typeof data==="object");return data};if(typeof scriptArgs!="undefined"){arguments_=scriptArgs}else if(typeof arguments!="undefined"){arguments_=arguments}if(typeof quit==="function"){quit_=function(status){quit(status)}}if(typeof print!=="undefined"){if(typeof console==="undefined")console={};console.log=print;console.warn=console.error=typeof printErr!=="undefined"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!=="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf("/")+1)}else{scriptDirectory=""}{read_=function(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=function(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var STACK_ALIGN=16;function alignMemory(size,factor){if(!factor)factor=STACK_ALIGN;return Math.ceil(size/factor)*factor}function warnOnce(text){if(!warnOnce.shown)warnOnce.shown={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;err(text)}}var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime=Module["noExitRuntime"]||true;if(typeof WebAssembly!=="object"){abort("no native wasm support detected")}function setValue(ptr,value,type,noSafe){type=type||"i8";if(type.charAt(type.length-1)==="*")type="i32";switch(type){case"i1":HEAP8[ptr>>0]=value;break;case"i8":HEAP8[ptr>>0]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":tempI64=[value>>>0,(tempDouble=value,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;default:abort("invalid type for setValue: "+type)}}var wasmMemory;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}var ALLOC_NORMAL=0;var ALLOC_STACK=1;function allocate(slab,allocator){var ret;if(allocator==ALLOC_STACK){ret=stackAlloc(slab.length)}else{ret=_malloc(slab.length)}if(slab.subarray||slab.slice){HEAPU8.set(slab,ret)}else{HEAPU8.set(new Uint8Array(slab),ret)}return ret}var UTF8Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heap,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heap[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str="";while(idx<endPtr){var u0=heap[idx++];if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heap[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heap[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u0=(u0&7)<<18|u1<<12|u2<<6|heap[idx++]&63}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||16777216;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;__ATINIT__.push({func:function(){___wasm_call_ctors()}});function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){FS.ignorePermissions=false;callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}what+="";err(what);ABORT=true;EXITSTATUS=1;what="abort("+what+"). Build with -s ASSERTIONS=1 for more info.";var e=new WebAssembly.RuntimeError(what);throw e}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix="file://";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile="models_box_collisions.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}else{throw"both async and sync fetching of the wasm failed"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch==="function"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={"a":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;wasmMemory=Module["asm"]["Xd"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module["asm"]["_d"];removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiatedSource(output){receiveInstance(output["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming==="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch==="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync();return{}}var tempDouble;var tempI64;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback(Module);continue}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){wasmTable.get(func)()}else{wasmTable.get(func)(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}function ___assert_fail(condition,filename,line,func){abort("Assertion failed: "+UTF8ToString(condition)+", at: "+[filename?UTF8ToString(filename):"unknown filename",line,func?UTF8ToString(func):"unknown function"])}function setErrNo(value){HEAP32[___errno_location()>>2]=value;return value}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path==="/")return"/";path=PATH.normalize(path);path=path.replace(/\/$/,"");var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}};function getRandomDevice(){if(typeof crypto==="object"&&typeof crypto["getRandomValues"]==="function"){var randomBuffer=new Uint8Array(1);return function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]}}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");return function(){return crypto_module["randomBytes"](1)[0]}}catch(e){}}return function(){abort("randomDevice")}}var PATH_FS={resolve:function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!=="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=path.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(function(p){return!!p}),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:function(from,to){from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start<arr.length;start++){if(arr[start]!=="")break}var end=arr.length-1;for(;end>=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i<length;i++){if(fromParts[i]!==toParts[i]){samePartsLength=i;break}}var outputParts=[];for(var i=samePartsLength;i<fromParts.length;i++){outputParts.push("..")}outputParts=outputParts.concat(toParts.slice(samePartsLength));return outputParts.join("/")}};var TTY={ttys:[],init:function(){},shutdown:function(){},register:function(dev,ops){TTY.ttys[dev]={input:[],output:[],ops:ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open:function(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close:function(stream){stream.tty.ops.flush(stream.tty)},flush:function(stream){stream.tty.ops.flush(stream.tty)},read:function(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i<length;i++){var result;try{result=stream.tty.ops.get_char(stream.tty)}catch(e){throw new FS.ErrnoError(29)}if(result===undefined&&bytesRead===0){throw new FS.ErrnoError(6)}if(result===null||result===undefined)break;bytesRead++;buffer[offset+i]=result}if(bytesRead){stream.node.timestamp=Date.now()}return bytesRead},write:function(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.put_char){throw new FS.ErrnoError(60)}try{for(var i=0;i<length;i++){stream.tty.ops.put_char(stream.tty,buffer[offset+i])}}catch(e){throw new FS.ErrnoError(29)}if(length){stream.node.timestamp=Date.now()}return i}},default_tty_ops:{get_char:function(tty){if(!tty.input.length){var result=null;if(ENVIRONMENT_IS_NODE){var BUFSIZE=256;var buf=Buffer.alloc?Buffer.alloc(BUFSIZE):new Buffer(BUFSIZE);var bytesRead=0;try{bytesRead=nodeFS.readSync(process.stdin.fd,buf,0,BUFSIZE,null)}catch(e){if(e.toString().indexOf("EOF")!=-1)bytesRead=0;else throw e}if(bytesRead>0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function mmapAlloc(size){var alignedSize=alignMemory(size,16384);var ptr=_malloc(alignedSize);while(size<alignedSize)HEAP8[ptr+size++]=0;return ptr}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray:function(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage:function(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity<CAPACITY_DOUBLING_MAX?2:1.125)>>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage:function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr:function(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr:function(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp;old_node.parent=new_dir},unlink:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir:function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i<size;i++)buffer[offset+i]=contents[position+i]}return size},write:function(stream,buffer,offset,length,position,canOwn){if(!length)return 0;var node=stream.node;node.timestamp=Date.now();if(buffer.subarray&&(!node.contents||node.contents.subarray)){if(canOwn){node.contents=buffer.subarray(offset,offset+length);node.usedBytes=length;return length}else if(node.usedBytes===0&&position===0){node.contents=buffer.slice(offset,offset+length);node.usedBytes=length;return length}else if(position+length<=node.usedBytes){node.contents.set(buffer.subarray(offset,offset+length),position);return length}}MEMFS.expandFileStorage(node,position+length);if(node.contents.subarray&&buffer.subarray){node.contents.set(buffer.subarray(offset,offset+length),position)}else{for(var i=0;i<length;i++){node.contents[position+i]=buffer[offset+i]}}node.usedBytes=Math.max(node.usedBytes,position+length);return length},llseek:function(stream,offset,whence){var position=offset;if(whence===1){position+=stream.position}else if(whence===2){if(FS.isFile(stream.node.mode)){position+=stream.node.usedBytes}}if(position<0){throw new FS.ErrnoError(28)}return position},allocate:function(stream,offset,length){MEMFS.expandFileStorage(stream.node,offset+length);stream.node.usedBytes=Math.max(stream.node.usedBytes,offset+length)},mmap:function(stream,address,length,position,prot,flags){if(address!==0){throw new FS.ErrnoError(28)}if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}var ptr;var allocated;var contents=stream.node.contents;if(!(flags&2)&&contents.buffer===buffer){allocated=false;ptr=contents.byteOffset}else{if(position>0||position+length<contents.length){if(contents.subarray){contents=contents.subarray(position,position+length)}else{contents=Array.prototype.slice.call(contents,position,position+length)}}allocated=true;ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}HEAP8.set(contents,ptr)}return{ptr:ptr,allocated:allocated}},msync:function(stream,buffer,offset,length,mmapFlags){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}if(mmapFlags&2){return 0}var bytesWritten=MEMFS.stream_ops.write(stream,buffer,0,length,offset,false);return 0}}};var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,trackingDelegate:{},tracking:{openFlags:{READ:1,WRITE:2}},ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath:function(path,opts){path=PATH_FS.resolve(FS.cwd(),path);opts=opts||{};if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};for(var key in defaults){if(opts[key]===undefined){opts[key]=defaults[key]}}if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),false);var current=FS.root;var current_path="/";for(var i=0;i<parts.length;i++){var islast=i===parts.length-1;if(islast&&opts.parent){break}current=FS.lookupNode(current,parts[i]);current_path=PATH.join2(current_path,parts[i]);if(FS.isMountpoint(current)){if(!islast||islast&&opts.follow_mount){current=current.mounted.root}}if(!islast||opts.follow){var count=0;while(FS.isLink(current.mode)){var link=FS.readlink(current_path);current_path=PATH_FS.resolve(PATH.dirname(current_path),link);var lookup=FS.lookupPath(current_path,{recurse_count:opts.recurse_count});current=lookup.node;if(count++>40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath:function(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?mount+"/"+path:mount+path}path=path?node.name+"/"+path:node.name;node=node.parent}},hashName:function(parentid,name){var hash=0;for(var i=0;i<name.length;i++){hash=(hash<<5)-hash+name.charCodeAt(i)|0}return(parentid+hash>>>0)%FS.nameTable.length},hashAddNode:function(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode:function(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode:function(parent,name){var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode:function(parent,name,mode,rdev){var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:function(node){FS.hashRemoveNode(node)},isRoot:function(node){return node===node.parent},isMountpoint:function(node){return!!node.mounted},isFile:function(mode){return(mode&61440)===32768},isDir:function(mode){return(mode&61440)===16384},isLink:function(mode){return(mode&61440)===40960},isChrdev:function(mode){return(mode&61440)===8192},isBlkdev:function(mode){return(mode&61440)===24576},isFIFO:function(mode){return(mode&61440)===4096},isSocket:function(mode){return(mode&49152)===49152},flagModes:{"r":0,"r+":2,"w":577,"w+":578,"a":1089,"a+":1090},modeStringToFlags:function(str){var flags=FS.flagModes[str];if(typeof flags==="undefined"){throw new Error("Unknown file open mode: "+str)}return flags},flagsToPermissionString:function(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions:function(node,perms){if(FS.ignorePermissions){return 0}if(perms.indexOf("r")!==-1&&!(node.mode&292)){return 2}else if(perms.indexOf("w")!==-1&&!(node.mode&146)){return 2}else if(perms.indexOf("x")!==-1&&!(node.mode&73)){return 2}return 0},mayLookup:function(dir){var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate:function(dir,name){try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete:function(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen:function(node,flags){if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd:function(fd_start,fd_end){fd_start=fd_start||0;fd_end=fd_end||FS.MAX_OPEN_FDS;for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:function(fd){return FS.streams[fd]},createStream:function(stream,fd_start,fd_end){if(!FS.FSStream){FS.FSStream=function(){};FS.FSStream.prototype={object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}}}}var newStream=new FS.FSStream;for(var p in stream){newStream[p]=stream[p]}stream=newStream;var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:function(fd){FS.streams[fd]=null},chrdev_stream_ops:{open:function(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}},llseek:function(){throw new FS.ErrnoError(70)}},major:function(dev){return dev>>8},minor:function(dev){return dev&255},makedev:function(ma,mi){return ma<<8|mi},registerDevice:function(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:function(dev){return FS.devices[dev]},getMounts:function(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts},syncfs:function(populate,callback){if(typeof populate==="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err("warning: "+FS.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work")}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(function(mount){if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount:function(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount:function(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(function(hash){var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.indexOf(current.mount)!==-1){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup:function(parent,name){return parent.node_ops.lookup(parent,name)},mknod:function(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create:function(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:function(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree:function(path,mode){var dirs=path.split("/");var d="";for(var i=0;i<dirs.length;++i){if(!dirs[i])continue;d+="/"+dirs[i];try{FS.mkdir(d,mode)}catch(e){if(e.errno!=20)throw e}}},mkdev:function(path,mode,dev){if(typeof dev==="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:function(oldpath,newpath){if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:function(old_path,new_path){var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}try{if(FS.trackingDelegate["willMovePath"]){FS.trackingDelegate["willMovePath"](old_path,new_path)}}catch(e){err("FS.trackingDelegate['willMovePath']('"+old_path+"', '"+new_path+"') threw an exception: "+e.message)}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}try{if(FS.trackingDelegate["onMovePath"])FS.trackingDelegate["onMovePath"](old_path,new_path)}catch(e){err("FS.trackingDelegate['onMovePath']('"+old_path+"', '"+new_path+"') threw an exception: "+e.message)}},rmdir:function(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}try{if(FS.trackingDelegate["willDeletePath"]){FS.trackingDelegate["willDeletePath"](path)}}catch(e){err("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: "+e.message)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate["onDeletePath"])FS.trackingDelegate["onDeletePath"](path)}catch(e){err("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: "+e.message)}},readdir:function(path){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:function(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}try{if(FS.trackingDelegate["willDeletePath"]){FS.trackingDelegate["willDeletePath"](path)}}catch(e){err("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: "+e.message)}parent.node_ops.unlink(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate["onDeletePath"])FS.trackingDelegate["onDeletePath"](path)}catch(e){err("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: "+e.message)}},readlink:function(path){var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:function(path,dontFollow){var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:function(path){return FS.stat(path,true)},chmod:function(path,mode,dontFollow){var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:function(path,mode){FS.chmod(path,mode,true)},fchmod:function(fd,mode){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:function(path,uid,gid,dontFollow){var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:function(path,uid,gid){FS.chown(path,uid,gid,true)},fchown:function(fd,uid,gid){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:function(path,len){if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:function(fd,len){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:function(path,atime,mtime){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:function(path,flags,mode,fd_start,fd_end){if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags==="string"?FS.modeStringToFlags(flags):flags;mode=typeof mode==="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path==="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false},fd_start,fd_end);if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1;err("FS.trackingDelegate error on read file: "+path)}}try{if(FS.trackingDelegate["onOpenFile"]){var trackingFlags=0;if((flags&2097155)!==1){trackingFlags|=FS.tracking.openFlags.READ}if((flags&2097155)!==0){trackingFlags|=FS.tracking.openFlags.WRITE}FS.trackingDelegate["onOpenFile"](path,trackingFlags)}}catch(e){err("FS.trackingDelegate['onOpenFile']('"+path+"', flags) threw an exception: "+e.message)}return stream},close:function(stream){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:function(stream){return stream.fd===null},llseek:function(stream,offset,whence){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:function(stream,buffer,offset,length,position){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!=="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:function(stream,buffer,offset,length,position,canOwn){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!=="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;try{if(stream.path&&FS.trackingDelegate["onWriteToFile"])FS.trackingDelegate["onWriteToFile"](stream.path)}catch(e){err("FS.trackingDelegate['onWriteToFile']('"+stream.path+"') threw an exception: "+e.message)}return bytesWritten},allocate:function(stream,offset,length){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:function(stream,address,length,position,prot,flags){if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,address,length,position,prot,flags)},msync:function(stream,buffer,offset,length,mmapFlags){if(!stream||!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:function(stream){return 0},ioctl:function(stream,cmd,arg){if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:function(path,opts){opts=opts||{};opts.flags=opts.flags||0;opts.encoding=opts.encoding||"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error('Invalid encoding type "'+opts.encoding+'"')}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding==="binary"){ret=buf}FS.close(stream);return ret},writeFile:function(path,data,opts){opts=opts||{};opts.flags=opts.flags||577;var stream=FS.open(path,opts.flags,opts.mode);if(typeof data==="string"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,undefined,opts.canOwn)}else if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{throw new Error("Unsupported data type")}FS.close(stream)},cwd:function(){return FS.currentPath},chdir:function(path){var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories:function(){FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices:function(){FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:function(){return 0},write:function(stream,buffer,offset,length,pos){return length}});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var random_device=getRandomDevice();FS.createDevice("/dev","random",random_device);FS.createDevice("/dev","urandom",random_device);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories:function(){FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount:function(){var node=FS.createNode(proc_self,"fd",16384|511,73);node.node_ops={lookup:function(parent,name){var fd=+name;var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:function(){return stream.path}}};ret.parent=ret;return ret}};return node}},{},"/proc/self/fd")},createStandardStreams:function(){if(Module["stdin"]){FS.createDevice("/dev","stdin",Module["stdin"])}else{FS.symlink("/dev/tty","/dev/stdin")}if(Module["stdout"]){FS.createDevice("/dev","stdout",null,Module["stdout"])}else{FS.symlink("/dev/tty","/dev/stdout")}if(Module["stderr"]){FS.createDevice("/dev","stderr",null,Module["stderr"])}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},ensureErrnoError:function(){if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.node=node;this.setErrno=function(errno){this.errno=errno};this.setErrno(errno);this.message="FS error"};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[44].forEach(function(code){FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack="<generic error, no stack>"})},staticInit:function(){FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={"MEMFS":MEMFS}},init:function(input,output,error){FS.init.initialized=true;FS.ensureErrnoError();Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams()},quit:function(){FS.init.initialized=false;var fflush=Module["_fflush"];if(fflush)fflush(0);for(var i=0;i<FS.streams.length;i++){var stream=FS.streams[i];if(!stream){continue}FS.close(stream)}},getMode:function(canRead,canWrite){var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode},findObject:function(path,dontResolveLastLink){var ret=FS.analyzePath(path,dontResolveLastLink);if(ret.exists){return ret.object}else{return null}},analyzePath:function(path,dontResolveLastLink){try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath:function(parent,path,canRead,canWrite){parent=typeof parent==="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:function(parent,name,properties,canRead,canWrite){var path=PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:function(parent,name,data,canRead,canWrite,canOwn){var path=name?PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name):parent;var mode=FS.getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data==="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i<len;++i)arr[i]=data.charCodeAt(i);data=arr}FS.chmod(node,mode|146);var stream=FS.open(node,577);FS.write(stream,data,0,data.length,0,canOwn);FS.close(stream);FS.chmod(node,mode)}return node},createDevice:function(parent,name,input,output){var path=PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:function(stream){stream.seekable=false},close:function(stream){if(output&&output.buffer&&output.buffer.length){output(10)}},read:function(stream,buffer,offset,length,pos){var bytesRead=0;for(var i=0;i<length;i++){var result;try{result=input()}catch(e){throw new FS.ErrnoError(29)}if(result===undefined&&bytesRead===0){throw new FS.ErrnoError(6)}if(result===null||result===undefined)break;bytesRead++;buffer[offset+i]=result}if(bytesRead){stream.node.timestamp=Date.now()}return bytesRead},write:function(stream,buffer,offset,length,pos){for(var i=0;i<length;i++){try{output(buffer[offset+i])}catch(e){throw new FS.ErrnoError(29)}}if(length){stream.node.timestamp=Date.now()}return i}});return FS.mkdev(path,mode,dev)},forceLoadFile:function(obj){if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!=="undefined"){throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}},createLazyFile:function(parent,name,url,canRead,canWrite){function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=function(from,to){if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);if(typeof Uint8Array!="undefined")xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}else{return intArrayFromString(xhr.responseText||"",true)}};var lazyArray=this;lazyArray.setDataGetter(function(chunkNum){var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]==="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]==="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!=="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._length}},chunkSize:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(function(key){var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){FS.forceLoadFile(node);return fn.apply(null,arguments)}});stream_ops.read=function stream_ops_read(stream,buffer,offset,length,position){FS.forceLoadFile(node);var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i<size;i++){buffer[offset+i]=contents[position+i]}}else{for(var i=0;i<size;i++){buffer[offset+i]=contents.get(position+i)}}return size};node.stream_ops=stream_ops;return node},createPreloadedFile:function(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish){Browser.init();var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency("cp "+fullname);function processData(byteArray){function finish(byteArray){if(preFinish)preFinish();if(!dontCreateFile){FS.createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}if(onload)onload();removeRunDependency(dep)}var handled=false;Module["preloadPlugins"].forEach(function(plugin){if(handled)return;if(plugin["canHandle"](fullname)){plugin["handle"](byteArray,fullname,finish,function(){if(onerror)onerror();removeRunDependency(dep)});handled=true}});if(!handled)finish(byteArray)}addRunDependency(dep);if(typeof url=="string"){Browser.asyncLoad(url,function(byteArray){processData(byteArray)},onerror)}else{processData(url)}},indexedDB:function(){return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME:function(){return"EM_FS_"+window.location.pathname},DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:function(paths,onload,onerror){onload=onload||function(){};onerror=onerror||function(){};var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=function openRequest_onupgradeneeded(){out("creating db");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME)};openRequest.onsuccess=function openRequest_onsuccess(){var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],"readwrite");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(function(path){var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=function putRequest_onsuccess(){ok++;if(ok+fail==total)finish()};putRequest.onerror=function putRequest_onerror(){fail++;if(ok+fail==total)finish()}});transaction.onerror=onerror};openRequest.onerror=onerror},loadFilesFromDB:function(paths,onload,onerror){onload=onload||function(){};onerror=onerror||function(){};var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=function openRequest_onsuccess(){var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],"readonly")}catch(e){onerror(e);return}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(function(path){var getRequest=files.get(path);getRequest.onsuccess=function getRequest_onsuccess(){if(FS.analyzePath(path).exists){FS.unlink(path)}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish()};getRequest.onerror=function getRequest_onerror(){fail++;if(ok+fail==total)finish()}});transaction.onerror=onerror};openRequest.onerror=onerror}};var SYSCALLS={mappings:{},DEFAULT_POLLMASK:5,umask:511,calculateAt:function(dirfd,path,allowEmpty){if(path[0]==="/"){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=FS.getStream(dirfd);if(!dirstream)throw new FS.ErrnoError(8);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(func,path,buf){try{var stat=func(path)}catch(e){if(e&&e.node&&PATH.normalize(path)!==PATH.normalize(FS.getPath(e.node))){return-54}throw e}HEAP32[buf>>2]=stat.dev;HEAP32[buf+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;HEAP32[buf+56>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+76>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+80>>2]=tempI64[0],HEAP32[buf+84>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},doMkdir:function(path,mode){path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0},doMknod:function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}FS.mknod(path,mode,dev);return 0},doReadlink:function(path,buf,bufsize){if(bufsize<=0)return-28;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len},doAccess:function(path,amode){if(amode&~7){return-28}var node;var lookup=FS.lookupPath(path,{follow:true});node=lookup.node;if(!node){return-44}var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0},doDup:function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd},doReadv:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i<iovcnt;i++){var ptr=HEAP32[iov+i*8>>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr<len)break}return ret},doWritev:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i<iovcnt;i++){var ptr=HEAP32[iov+i*8>>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream},get64:function(low,high){return low}};function ___sys_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-28}var newStream;newStream=FS.open(stream.path,stream.flags,0,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0}case 12:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 13:case 14:return 0;case 16:case 8:return-28;case 9:setErrNo(28);return-1;default:{return-28}}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_ioctl(fd,op,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(op){case 21509:case 21505:{if(!stream.tty)return-59;return 0}case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-59;return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{if(!stream.tty)return-59;return 0}default:abort("bad ioctl syscall "+op)}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_open(path,flags,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(path);var mode=varargs?SYSCALLS.get():0;var stream=FS.open(pathname,flags,mode);return stream.fd}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}var JSEvents={inEventHandler:0,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return false;for(var i in arrA){if(arrA[i]!=arrB[i])return false}return true}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList)){return}}JSEvents.deferredCalls.push({targetFunction:targetFunction,precedence:precedence,argsList:argsList});JSEvents.deferredCalls.sort(function(x,y){return x.precedence<y.precedence})},removeDeferredCalls:function(targetFunction){for(var i=0;i<JSEvents.deferredCalls.length;++i){if(JSEvents.deferredCalls[i].targetFunction==targetFunction){JSEvents.deferredCalls.splice(i,1);--i}}},canPerformEventHandlerRequests:function(){return JSEvents.inEventHandler&&JSEvents.currentEventHandler.allowsDeferredCalls},runDeferredCalls:function(){if(!JSEvents.canPerformEventHandlerRequests()){return}for(var i=0;i<JSEvents.deferredCalls.length;++i){var call=JSEvents.deferredCalls[i];JSEvents.deferredCalls.splice(i,1);--i;call.targetFunction.apply(null,call.argsList)}},eventHandlers:[],removeAllHandlersOnTarget:function(target,eventTypeString){for(var i=0;i<JSEvents.eventHandlers.length;++i){if(JSEvents.eventHandlers[i].target==target&&(!eventTypeString||eventTypeString==JSEvents.eventHandlers[i].eventTypeString)){JSEvents._removeHandler(i--)}}},_removeHandler:function(i){var h=JSEvents.eventHandlers[i];h.target.removeEventListener(h.eventTypeString,h.eventListenerFunc,h.useCapture);JSEvents.eventHandlers.splice(i,1)},registerOrRemoveHandler:function(eventHandler){var jsEventHandler=function jsEventHandler(event){++JSEvents.inEventHandler;JSEvents.currentEventHandler=eventHandler;JSEvents.runDeferredCalls();eventHandler.handlerFunc(event);JSEvents.runDeferredCalls();--JSEvents.inEventHandler};if(eventHandler.callbackfunc){eventHandler.eventListenerFunc=jsEventHandler;eventHandler.target.addEventListener(eventHandler.eventTypeString,jsEventHandler,eventHandler.useCapture);JSEvents.eventHandlers.push(eventHandler);JSEvents.registerRemoveEventListeners()}else{for(var i=0;i<JSEvents.eventHandlers.length;++i){if(JSEvents.eventHandlers[i].target==eventHandler.target&&JSEvents.eventHandlers[i].eventTypeString==eventHandler.eventTypeString){JSEvents._removeHandler(i--)}}}},getNodeNameForTarget:function(target){if(!target)return"";if(target==window)return"#window";if(target==screen)return"#screen";return target&&target.nodeName?target.nodeName:""},fullscreenEnabled:function(){return document.fullscreenEnabled||document.webkitFullscreenEnabled}};function requestPointerLock(target){if(target.requestPointerLock){target.requestPointerLock()}else if(target.msRequestPointerLock){target.msRequestPointerLock()}else{if(document.body.requestPointerLock||document.body.msRequestPointerLock){return-3}else{return-1}}return 0}function _emscripten_exit_pointerlock(){JSEvents.removeDeferredCalls(requestPointerLock);if(document.exitPointerLock){document.exitPointerLock()}else if(document.msExitPointerLock){document.msExitPointerLock()}else{return-1}return 0}function maybeCStringToJsString(cString){return cString>2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!=="undefined"?document:0,typeof window!=="undefined"?window:0];function findEventTarget(target){target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!=="undefined"?document.querySelector(target):undefined);return domElement}function getBoundingClientRect(e){return specialHTMLTargets.indexOf(e)<0?e.getBoundingClientRect():{"left":0,"top":0}}function _emscripten_get_element_css_size(target,width,height){target=findEventTarget(target);if(!target)return-4;var rect=getBoundingClientRect(target);HEAPF64[width>>3]=rect.width;HEAPF64[height>>3]=rect.height;return 0}function fillGamepadEventData(eventStruct,e){HEAPF64[eventStruct>>3]=e.timestamp;for(var i=0;i<e.axes.length;++i){HEAPF64[eventStruct+i*8+16>>3]=e.axes[i]}for(var i=0;i<e.buttons.length;++i){if(typeof e.buttons[i]==="object"){HEAPF64[eventStruct+i*8+528>>3]=e.buttons[i].value}else{HEAPF64[eventStruct+i*8+528>>3]=e.buttons[i]}}for(var i=0;i<e.buttons.length;++i){if(typeof e.buttons[i]==="object"){HEAP32[eventStruct+i*4+1040>>2]=e.buttons[i].pressed}else{HEAP32[eventStruct+i*4+1040>>2]=e.buttons[i]==1}}HEAP32[eventStruct+1296>>2]=e.connected;HEAP32[eventStruct+1300>>2]=e.index;HEAP32[eventStruct+8>>2]=e.axes.length;HEAP32[eventStruct+12>>2]=e.buttons.length;stringToUTF8(e.id,eventStruct+1304,64);stringToUTF8(e.mapping,eventStruct+1368,64)}function _emscripten_get_gamepad_status(index,gamepadState){if(index<0||index>=JSEvents.lastGamepadState.length)return-5;if(!JSEvents.lastGamepadState[index])return-7;fillGamepadEventData(gamepadState,JSEvents.lastGamepadState[index]);return 0}function _emscripten_get_num_gamepads(){return JSEvents.lastGamepadState.length}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension("ANGLE_instanced_arrays");if(ext){ctx["vertexAttribDivisor"]=function(index,divisor){ext["vertexAttribDivisorANGLE"](index,divisor)};ctx["drawArraysInstanced"]=function(mode,first,count,primcount){ext["drawArraysInstancedANGLE"](mode,first,count,primcount)};ctx["drawElementsInstanced"]=function(mode,count,type,indices,primcount){ext["drawElementsInstancedANGLE"](mode,count,type,indices,primcount)};return 1}}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension("OES_vertex_array_object");if(ext){ctx["createVertexArray"]=function(){return ext["createVertexArrayOES"]()};ctx["deleteVertexArray"]=function(vao){ext["deleteVertexArrayOES"](vao)};ctx["bindVertexArray"]=function(vao){ext["bindVertexArrayOES"](vao)};ctx["isVertexArray"]=function(vao){return ext["isVertexArrayOES"](vao)};return 1}}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension("WEBGL_draw_buffers");if(ext){ctx["drawBuffers"]=function(n,bufs){ext["drawBuffersWEBGL"](n,bufs)};return 1}}function __webgl_enable_WEBGL_multi_draw(ctx){return!!(ctx.multiDrawWebgl=ctx.getExtension("WEBGL_multi_draw"))}var GL={counter:1,buffers:[],programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:[],offscreenCanvases:{},timerQueriesEXT:[],programInfos:{},stringCache:{},unpackAlignment:4,recordError:function recordError(errorCode){if(!GL.lastError){GL.lastError=errorCode}},getNewId:function(table){var ret=GL.counter++;for(var i=table.length;i<ret;i++){table[i]=null}return ret},getSource:function(shader,count,string,length){var source="";for(var i=0;i<count;++i){var len=length?HEAP32[length+i*4>>2]:-1;source+=UTF8ToString(HEAP32[string+i*4>>2],len<0?undefined:len)}return source},createContext:function(canvas,webGLContextAttributes){var ctx=canvas.getContext("webgl",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:function(ctx,webGLContextAttributes){var handle=GL.getNewId(GL.contexts);var context={handle:handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};if(ctx.canvas)ctx.canvas.GLctxObject=context;GL.contexts[handle]=context;if(typeof webGLContextAttributes.enableExtensionsByDefault==="undefined"||webGLContextAttributes.enableExtensionsByDefault){GL.initExtensions(context)}return handle},makeContextCurrent:function(contextHandle){GL.currentContext=GL.contexts[contextHandle];Module.ctx=GLctx=GL.currentContext&&GL.currentContext.GLctx;return!(contextHandle&&!GLctx)},getContext:function(contextHandle){return GL.contexts[contextHandle]},deleteContext:function(contextHandle){if(GL.currentContext===GL.contexts[contextHandle])GL.currentContext=null;if(typeof JSEvents==="object")JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas);if(GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas)GL.contexts[contextHandle].GLctx.canvas.GLctxObject=undefined;GL.contexts[contextHandle]=null},initExtensions:function(context){if(!context)context=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;__webgl_enable_ANGLE_instanced_arrays(GLctx);__webgl_enable_OES_vertex_array_object(GLctx);__webgl_enable_WEBGL_draw_buffers(GLctx);GLctx.disjointTimerQueryExt=GLctx.getExtension("EXT_disjoint_timer_query");__webgl_enable_WEBGL_multi_draw(GLctx);var exts=GLctx.getSupportedExtensions()||[];exts.forEach(function(ext){if(ext.indexOf("lose_context")<0&&ext.indexOf("debug")<0){GLctx.getExtension(ext)}})},populateUniformTable:function(program){var p=GL.programs[program];var ptable=GL.programInfos[program]={uniforms:{},maxUniformLength:0,maxAttributeLength:-1,maxUniformBlockNameLength:-1};var utable=ptable.uniforms;var numUniforms=GLctx.getProgramParameter(p,35718);for(var i=0;i<numUniforms;++i){var u=GLctx.getActiveUniform(p,i);var name=u.name;ptable.maxUniformLength=Math.max(ptable.maxUniformLength,name.length+1);if(name.slice(-1)=="]"){name=name.slice(0,name.lastIndexOf("["))}var loc=GLctx.getUniformLocation(p,name);if(loc){var id=GL.getNewId(GL.uniforms);utable[name]=[u.size,id];GL.uniforms[id]=loc;for(var j=1;j<u.size;++j){var n=name+"["+j+"]";loc=GLctx.getUniformLocation(p,n);id=GL.getNewId(GL.uniforms);GL.uniforms[id]=loc}}}}};function _emscripten_glActiveTexture(x0){GLctx["activeTexture"](x0)}function _emscripten_glAttachShader(program,shader){GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _emscripten_glBeginQueryEXT(target,id){GLctx.disjointTimerQueryExt["beginQueryEXT"](target,GL.timerQueriesEXT[id])}function _emscripten_glBindAttribLocation(program,index,name){GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))}function _emscripten_glBindBuffer(target,buffer){GLctx.bindBuffer(target,GL.buffers[buffer])}function _emscripten_glBindFramebuffer(target,framebuffer){GLctx.bindFramebuffer(target,GL.framebuffers[framebuffer])}function _emscripten_glBindRenderbuffer(target,renderbuffer){GLctx.bindRenderbuffer(target,GL.renderbuffers[renderbuffer])}function _emscripten_glBindTexture(target,texture){GLctx.bindTexture(target,GL.textures[texture])}function _emscripten_glBindVertexArrayOES(vao){GLctx["bindVertexArray"](GL.vaos[vao])}function _emscripten_glBlendColor(x0,x1,x2,x3){GLctx["blendColor"](x0,x1,x2,x3)}function _emscripten_glBlendEquation(x0){GLctx["blendEquation"](x0)}function _emscripten_glBlendEquationSeparate(x0,x1){GLctx["blendEquationSeparate"](x0,x1)}function _emscripten_glBlendFunc(x0,x1){GLctx["blendFunc"](x0,x1)}function _emscripten_glBlendFuncSeparate(x0,x1,x2,x3){GLctx["blendFuncSeparate"](x0,x1,x2,x3)}function _emscripten_glBufferData(target,size,data,usage){GLctx.bufferData(target,data?HEAPU8.subarray(data,data+size):size,usage)}function _emscripten_glBufferSubData(target,offset,size,data){GLctx.bufferSubData(target,offset,HEAPU8.subarray(data,data+size))}function _emscripten_glCheckFramebufferStatus(x0){return GLctx["checkFramebufferStatus"](x0)}function _emscripten_glClear(x0){GLctx["clear"](x0)}function _emscripten_glClearColor(x0,x1,x2,x3){GLctx["clearColor"](x0,x1,x2,x3)}function _emscripten_glClearDepthf(x0){GLctx["clearDepth"](x0)}function _emscripten_glClearStencil(x0){GLctx["clearStencil"](x0)}function _emscripten_glColorMask(red,green,blue,alpha){GLctx.colorMask(!!red,!!green,!!blue,!!alpha)}function _emscripten_glCompileShader(shader){GLctx.compileShader(GL.shaders[shader])}function _emscripten_glCompressedTexImage2D(target,level,internalFormat,width,height,border,imageSize,data){GLctx["compressedTexImage2D"](target,level,internalFormat,width,height,border,data?HEAPU8.subarray(data,data+imageSize):null)}function _emscripten_glCompressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,imageSize,data){GLctx["compressedTexSubImage2D"](target,level,xoffset,yoffset,width,height,format,data?HEAPU8.subarray(data,data+imageSize):null)}function _emscripten_glCopyTexImage2D(x0,x1,x2,x3,x4,x5,x6,x7){GLctx["copyTexImage2D"](x0,x1,x2,x3,x4,x5,x6,x7)}function _emscripten_glCopyTexSubImage2D(x0,x1,x2,x3,x4,x5,x6,x7){GLctx["copyTexSubImage2D"](x0,x1,x2,x3,x4,x5,x6,x7)}function _emscripten_glCreateProgram(){var id=GL.getNewId(GL.programs);var program=GLctx.createProgram();program.name=id;GL.programs[id]=program;return id}function _emscripten_glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}function _emscripten_glCullFace(x0){GLctx["cullFace"](x0)}function _emscripten_glDeleteBuffers(n,buffers){for(var i=0;i<n;i++){var id=HEAP32[buffers+i*4>>2];var buffer=GL.buffers[id];if(!buffer)continue;GLctx.deleteBuffer(buffer);buffer.name=0;GL.buffers[id]=null}}function _emscripten_glDeleteFramebuffers(n,framebuffers){for(var i=0;i<n;++i){var id=HEAP32[framebuffers+i*4>>2];var framebuffer=GL.framebuffers[id];if(!framebuffer)continue;GLctx.deleteFramebuffer(framebuffer);framebuffer.name=0;GL.framebuffers[id]=null}}function _emscripten_glDeleteProgram(id){if(!id)return;var program=GL.programs[id];if(!program){GL.recordError(1281);return}GLctx.deleteProgram(program);program.name=0;GL.programs[id]=null;GL.programInfos[id]=null}function _emscripten_glDeleteQueriesEXT(n,ids){for(var i=0;i<n;i++){var id=HEAP32[ids+i*4>>2];var query=GL.timerQueriesEXT[id];if(!query)continue;GLctx.disjointTimerQueryExt["deleteQueryEXT"](query);GL.timerQueriesEXT[id]=null}}function _emscripten_glDeleteRenderbuffers(n,renderbuffers){for(var i=0;i<n;i++){var id=HEAP32[renderbuffers+i*4>>2];var renderbuffer=GL.renderbuffers[id];if(!renderbuffer)continue;GLctx.deleteRenderbuffer(renderbuffer);renderbuffer.name=0;GL.renderbuffers[id]=null}}function _emscripten_glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}function _emscripten_glDeleteTextures(n,textures){for(var i=0;i<n;i++){var id=HEAP32[textures+i*4>>2];var texture=GL.textures[id];if(!texture)continue;GLctx.deleteTexture(texture);texture.name=0;GL.textures[id]=null}}function _emscripten_glDeleteVertexArraysOES(n,vaos){for(var i=0;i<n;i++){var id=HEAP32[vaos+i*4>>2];GLctx["deleteVertexArray"](GL.vaos[id]);GL.vaos[id]=null}}function _emscripten_glDepthFunc(x0){GLctx["depthFunc"](x0)}function _emscripten_glDepthMask(flag){GLctx.depthMask(!!flag)}function _emscripten_glDepthRangef(x0,x1){GLctx["depthRange"](x0,x1)}function _emscripten_glDetachShader(program,shader){GLctx.detachShader(GL.programs[program],GL.shaders[shader])}function _emscripten_glDisable(x0){GLctx["disable"](x0)}function _emscripten_glDisableVertexAttribArray(index){GLctx.disableVertexAttribArray(index)}function _emscripten_glDrawArrays(mode,first,count){GLctx.drawArrays(mode,first,count)}function _emscripten_glDrawArraysInstancedANGLE(mode,first,count,primcount){GLctx["drawArraysInstanced"](mode,first,count,primcount)}var tempFixedLengthArray=[];function _emscripten_glDrawBuffersWEBGL(n,bufs){var bufArray=tempFixedLengthArray[n];for(var i=0;i<n;i++){bufArray[i]=HEAP32[bufs+i*4>>2]}GLctx["drawBuffers"](bufArray)}function _emscripten_glDrawElements(mode,count,type,indices){GLctx.drawElements(mode,count,type,indices)}function _emscripten_glDrawElementsInstancedANGLE(mode,count,type,indices,primcount){GLctx["drawElementsInstanced"](mode,count,type,indices,primcount)}function _emscripten_glEnable(x0){GLctx["enable"](x0)}function _emscripten_glEnableVertexAttribArray(index){GLctx.enableVertexAttribArray(index)}function _emscripten_glEndQueryEXT(target){GLctx.disjointTimerQueryExt["endQueryEXT"](target)}function _emscripten_glFinish(){GLctx["finish"]()}function _emscripten_glFlush(){GLctx["flush"]()}function _emscripten_glFramebufferRenderbuffer(target,attachment,renderbuffertarget,renderbuffer){GLctx.framebufferRenderbuffer(target,attachment,renderbuffertarget,GL.renderbuffers[renderbuffer])}function _emscripten_glFramebufferTexture2D(target,attachment,textarget,texture,level){GLctx.framebufferTexture2D(target,attachment,textarget,GL.textures[texture],level)}function _emscripten_glFrontFace(x0){GLctx["frontFace"](x0)}function __glGenObject(n,buffers,createFunction,objectTable){for(var i=0;i<n;i++){var buffer=GLctx[createFunction]();var id=buffer&&GL.getNewId(objectTable);if(buffer){buffer.name=id;objectTable[id]=buffer}else{GL.recordError(1282)}HEAP32[buffers+i*4>>2]=id}}function _emscripten_glGenBuffers(n,buffers){__glGenObject(n,buffers,"createBuffer",GL.buffers)}function _emscripten_glGenFramebuffers(n,ids){__glGenObject(n,ids,"createFramebuffer",GL.framebuffers)}function _emscripten_glGenQueriesEXT(n,ids){for(var i=0;i<n;i++){var query=GLctx.disjointTimerQueryExt["createQueryEXT"]();if(!query){GL.recordError(1282);while(i<n)HEAP32[ids+i++*4>>2]=0;return}var id=GL.getNewId(GL.timerQueriesEXT);query.name=id;GL.timerQueriesEXT[id]=query;HEAP32[ids+i*4>>2]=id}}function _emscripten_glGenRenderbuffers(n,renderbuffers){__glGenObject(n,renderbuffers,"createRenderbuffer",GL.renderbuffers)}function _emscripten_glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures)}function _emscripten_glGenVertexArraysOES(n,arrays){__glGenObject(n,arrays,"createVertexArray",GL.vaos)}function _emscripten_glGenerateMipmap(x0){GLctx["generateMipmap"](x0)}function __glGetActiveAttribOrUniform(funcName,program,index,bufSize,length,size,type,name){program=GL.programs[program];var info=GLctx[funcName](program,index);if(info){var numBytesWrittenExclNull=name&&stringToUTF8(info.name,name,bufSize);if(length)HEAP32[length>>2]=numBytesWrittenExclNull;if(size)HEAP32[size>>2]=info.size;if(type)HEAP32[type>>2]=info.type}}function _emscripten_glGetActiveAttrib(program,index,bufSize,length,size,type,name){__glGetActiveAttribOrUniform("getActiveAttrib",program,index,bufSize,length,size,type,name)}function _emscripten_glGetActiveUniform(program,index,bufSize,length,size,type,name){__glGetActiveAttribOrUniform("getActiveUniform",program,index,bufSize,length,size,type,name)}function _emscripten_glGetAttachedShaders(program,maxCount,count,shaders){var result=GLctx.getAttachedShaders(GL.programs[program]);var len=result.length;if(len>maxCount){len=maxCount}HEAP32[count>>2]=len;for(var i=0;i<len;++i){var id=GL.shaders.indexOf(result[i]);HEAP32[shaders+i*4>>2]=id}}function _emscripten_glGetAttribLocation(program,name){return GLctx.getAttribLocation(GL.programs[program],UTF8ToString(name))}function writeI53ToI64(ptr,num){HEAPU32[ptr>>2]=num;HEAPU32[ptr+4>>2]=(num-HEAPU32[ptr>>2])/4294967296}function emscriptenWebGLGet(name_,p,type){if(!p){GL.recordError(1281);return}var ret=undefined;switch(name_){case 36346:ret=1;break;case 36344:if(type!=0&&type!=1){GL.recordError(1280)}return;case 36345:ret=0;break;case 34466:var formats=GLctx.getParameter(34467);ret=formats?formats.length:0;break}if(ret===undefined){var result=GLctx.getParameter(name_);switch(typeof result){case"number":ret=result;break;case"boolean":ret=result?1:0;break;case"string":GL.recordError(1280);return;case"object":if(result===null){switch(name_){case 34964:case 35725:case 34965:case 36006:case 36007:case 32873:case 34229:case 34068:{ret=0;break}default:{GL.recordError(1280);return}}}else if(result instanceof Float32Array||result instanceof Uint32Array||result instanceof Int32Array||result instanceof Array){for(var i=0;i<result.length;++i){switch(type){case 0:HEAP32[p+i*4>>2]=result[i];break;case 2:HEAPF32[p+i*4>>2]=result[i];break;case 4:HEAP8[p+i>>0]=result[i]?1:0;break}}return}else{try{ret=result.name|0}catch(e){GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v: Unknown object returned from WebGL getParameter("+name_+")! (error: "+e+")");return}}break;default:GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v: Native code calling glGet"+type+"v("+name_+") and it returns "+result+" of type "+typeof result+"!");return}}switch(type){case 1:writeI53ToI64(p,ret);break;case 0:HEAP32[p>>2]=ret;break;case 2:HEAPF32[p>>2]=ret;break;case 4:HEAP8[p>>0]=ret?1:0;break}}function _emscripten_glGetBooleanv(name_,p){emscriptenWebGLGet(name_,p,4)}function _emscripten_glGetBufferParameteriv(target,value,data){if(!data){GL.recordError(1281);return}HEAP32[data>>2]=GLctx.getBufferParameter(target,value)}function _emscripten_glGetError(){var error=GLctx.getError()||GL.lastError;GL.lastError=0;return error}function _emscripten_glGetFloatv(name_,p){emscriptenWebGLGet(name_,p,2)}function _emscripten_glGetFramebufferAttachmentParameteriv(target,attachment,pname,params){var result=GLctx.getFramebufferAttachmentParameter(target,attachment,pname);if(result instanceof WebGLRenderbuffer||result instanceof WebGLTexture){result=result.name|0}HEAP32[params>>2]=result}function _emscripten_glGetIntegerv(name_,p){emscriptenWebGLGet(name_,p,0)}function _emscripten_glGetProgramInfoLog(program,maxLength,length,infoLog){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _emscripten_glGetProgramiv(program,pname,p){if(!p){GL.recordError(1281);return}if(program>=GL.counter){GL.recordError(1281);return}var ptable=GL.programInfos[program];if(!ptable){GL.recordError(1282);return}if(pname==35716){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";HEAP32[p>>2]=log.length+1}else if(pname==35719){HEAP32[p>>2]=ptable.maxUniformLength}else if(pname==35722){if(ptable.maxAttributeLength==-1){program=GL.programs[program];var numAttribs=GLctx.getProgramParameter(program,35721);ptable.maxAttributeLength=0;for(var i=0;i<numAttribs;++i){var activeAttrib=GLctx.getActiveAttrib(program,i);ptable.maxAttributeLength=Math.max(ptable.maxAttributeLength,activeAttrib.name.length+1)}}HEAP32[p>>2]=ptable.maxAttributeLength}else if(pname==35381){if(ptable.maxUniformBlockNameLength==-1){program=GL.programs[program];var numBlocks=GLctx.getProgramParameter(program,35382);ptable.maxUniformBlockNameLength=0;for(var i=0;i<numBlocks;++i){var activeBlockName=GLctx.getActiveUniformBlockName(program,i);ptable.maxUniformBlockNameLength=Math.max(ptable.maxUniformBlockNameLength,activeBlockName.length+1)}}HEAP32[p>>2]=ptable.maxUniformBlockNameLength}else{HEAP32[p>>2]=GLctx.getProgramParameter(GL.programs[program],pname)}}function _emscripten_glGetQueryObjecti64vEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.timerQueriesEXT[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}writeI53ToI64(params,ret)}function _emscripten_glGetQueryObjectivEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.timerQueriesEXT[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}HEAP32[params>>2]=ret}function _emscripten_glGetQueryObjectui64vEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.timerQueriesEXT[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}writeI53ToI64(params,ret)}function _emscripten_glGetQueryObjectuivEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.timerQueriesEXT[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}HEAP32[params>>2]=ret}function _emscripten_glGetQueryivEXT(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.disjointTimerQueryExt["getQueryEXT"](target,pname)}function _emscripten_glGetRenderbufferParameteriv(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getRenderbufferParameter(target,pname)}function _emscripten_glGetShaderInfoLog(shader,maxLength,length,infoLog){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _emscripten_glGetShaderPrecisionFormat(shaderType,precisionType,range,precision){var result=GLctx.getShaderPrecisionFormat(shaderType,precisionType);HEAP32[range>>2]=result.rangeMin;HEAP32[range+4>>2]=result.rangeMax;HEAP32[precision>>2]=result.precision}function _emscripten_glGetShaderSource(shader,bufSize,length,source){var result=GLctx.getShaderSource(GL.shaders[shader]);if(!result)return;var numBytesWrittenExclNull=bufSize>0&&source?stringToUTF8(result,source,bufSize):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _emscripten_glGetShaderiv(shader,pname,p){if(!p){GL.recordError(1281);return}if(pname==35716){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var logLength=log?log.length+1:0;HEAP32[p>>2]=logLength}else if(pname==35720){var source=GLctx.getShaderSource(GL.shaders[shader]);var sourceLength=source?source.length+1:0;HEAP32[p>>2]=sourceLength}else{HEAP32[p>>2]=GLctx.getShaderParameter(GL.shaders[shader],pname)}}function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _emscripten_glGetString(name_){if(GL.stringCache[name_])return GL.stringCache[name_];var ret;switch(name_){case 7939:var exts=GLctx.getSupportedExtensions()||[];exts=exts.concat(exts.map(function(e){return"GL_"+e}));ret=stringToNewUTF8(exts.join(" "));break;case 7936:case 7937:case 37445:case 37446:var s=GLctx.getParameter(name_);if(!s){GL.recordError(1280)}ret=stringToNewUTF8(s);break;case 7938:var glVersion=GLctx.getParameter(7938);{glVersion="OpenGL ES 2.0 ("+glVersion+")"}ret=stringToNewUTF8(glVersion);break;case 35724:var glslVersion=GLctx.getParameter(35724);var ver_re=/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/;var ver_num=glslVersion.match(ver_re);if(ver_num!==null){if(ver_num[1].length==3)ver_num[1]=ver_num[1]+"0";glslVersion="OpenGL ES GLSL ES "+ver_num[1]+" ("+glslVersion+")"}ret=stringToNewUTF8(glslVersion);break;default:GL.recordError(1280);return 0}GL.stringCache[name_]=ret;return ret}function _emscripten_glGetTexParameterfv(target,pname,params){if(!params){GL.recordError(1281);return}HEAPF32[params>>2]=GLctx.getTexParameter(target,pname)}function _emscripten_glGetTexParameteriv(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getTexParameter(target,pname)}function jstoi_q(str){return parseInt(str)}function _emscripten_glGetUniformLocation(program,name){name=UTF8ToString(name);var arrayIndex=0;if(name[name.length-1]=="]"){var leftBrace=name.lastIndexOf("[");arrayIndex=name[leftBrace+1]!="]"?jstoi_q(name.slice(leftBrace+1)):0;name=name.slice(0,leftBrace)}var uniformInfo=GL.programInfos[program]&&GL.programInfos[program].uniforms[name];if(uniformInfo&&arrayIndex>=0&&arrayIndex<uniformInfo[0]){return uniformInfo[1]+arrayIndex}else{return-1}}function emscriptenWebGLGetUniform(program,location,params,type){if(!params){GL.recordError(1281);return}var data=GLctx.getUniform(GL.programs[program],GL.uniforms[location]);if(typeof data=="number"||typeof data=="boolean"){switch(type){case 0:HEAP32[params>>2]=data;break;case 2:HEAPF32[params>>2]=data;break}}else{for(var i=0;i<data.length;i++){switch(type){case 0:HEAP32[params+i*4>>2]=data[i];break;case 2:HEAPF32[params+i*4>>2]=data[i];break}}}}function _emscripten_glGetUniformfv(program,location,params){emscriptenWebGLGetUniform(program,location,params,2)}function _emscripten_glGetUniformiv(program,location,params){emscriptenWebGLGetUniform(program,location,params,0)}function _emscripten_glGetVertexAttribPointerv(index,pname,pointer){if(!pointer){GL.recordError(1281);return}HEAP32[pointer>>2]=GLctx.getVertexAttribOffset(index,pname)}function emscriptenWebGLGetVertexAttrib(index,pname,params,type){if(!params){GL.recordError(1281);return}var data=GLctx.getVertexAttrib(index,pname);if(pname==34975){HEAP32[params>>2]=data&&data["name"]}else if(typeof data=="number"||typeof data=="boolean"){switch(type){case 0:HEAP32[params>>2]=data;break;case 2:HEAPF32[params>>2]=data;break;case 5:HEAP32[params>>2]=Math.fround(data);break}}else{for(var i=0;i<data.length;i++){switch(type){case 0:HEAP32[params+i*4>>2]=data[i];break;case 2:HEAPF32[params+i*4>>2]=data[i];break;case 5:HEAP32[params+i*4>>2]=Math.fround(data[i]);break}}}}function _emscripten_glGetVertexAttribfv(index,pname,params){emscriptenWebGLGetVertexAttrib(index,pname,params,2)}function _emscripten_glGetVertexAttribiv(index,pname,params){emscriptenWebGLGetVertexAttrib(index,pname,params,5)}function _emscripten_glHint(x0,x1){GLctx["hint"](x0,x1)}function _emscripten_glIsBuffer(buffer){var b=GL.buffers[buffer];if(!b)return 0;return GLctx.isBuffer(b)}function _emscripten_glIsEnabled(x0){return GLctx["isEnabled"](x0)}function _emscripten_glIsFramebuffer(framebuffer){var fb=GL.framebuffers[framebuffer];if(!fb)return 0;return GLctx.isFramebuffer(fb)}function _emscripten_glIsProgram(program){program=GL.programs[program];if(!program)return 0;return GLctx.isProgram(program)}function _emscripten_glIsQueryEXT(id){var query=GL.timerQueriesEXT[id];if(!query)return 0;return GLctx.disjointTimerQueryExt["isQueryEXT"](query)}function _emscripten_glIsRenderbuffer(renderbuffer){var rb=GL.renderbuffers[renderbuffer];if(!rb)return 0;return GLctx.isRenderbuffer(rb)}function _emscripten_glIsShader(shader){var s=GL.shaders[shader];if(!s)return 0;return GLctx.isShader(s)}function _emscripten_glIsTexture(id){var texture=GL.textures[id];if(!texture)return 0;return GLctx.isTexture(texture)}function _emscripten_glIsVertexArrayOES(array){var vao=GL.vaos[array];if(!vao)return 0;return GLctx["isVertexArray"](vao)}function _emscripten_glLineWidth(x0){GLctx["lineWidth"](x0)}function _emscripten_glLinkProgram(program){GLctx.linkProgram(GL.programs[program]);GL.populateUniformTable(program)}function _emscripten_glPixelStorei(pname,param){if(pname==3317){GL.unpackAlignment=param}GLctx.pixelStorei(pname,param)}function _emscripten_glPolygonOffset(x0,x1){GLctx["polygonOffset"](x0,x1)}function _emscripten_glQueryCounterEXT(id,target){GLctx.disjointTimerQueryExt["queryCounterEXT"](GL.timerQueriesEXT[id],target)}function computeUnpackAlignedImageSize(width,height,sizePerPixel,alignment){function roundedToNextMultipleOf(x,y){return x+y-1&-y}var plainRowSize=width*sizePerPixel;var alignedRowSize=roundedToNextMultipleOf(plainRowSize,alignment);return height*alignedRowSize}function __colorChannelsInGlTextureFormat(format){var colorChannels={5:3,6:4,8:2,29502:3,29504:4};return colorChannels[format-6402]||1}function heapObjectForWebGLType(type){type-=5120;if(type==1)return HEAPU8;if(type==4)return HEAP32;if(type==6)return HEAPF32;if(type==5||type==28922)return HEAPU32;return HEAPU16}function heapAccessShiftForWebGLHeap(heap){return 31-Math.clz32(heap.BYTES_PER_ELEMENT)}function emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat){var heap=heapObjectForWebGLType(type);var shift=heapAccessShiftForWebGLHeap(heap);var byteSize=1<<shift;var sizePerPixel=__colorChannelsInGlTextureFormat(format)*byteSize;var bytes=computeUnpackAlignedImageSize(width,height,sizePerPixel,GL.unpackAlignment);return heap.subarray(pixels>>shift,pixels+bytes>>shift)}function _emscripten_glReadPixels(x,y,width,height,format,type,pixels){var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);return}GLctx.readPixels(x,y,width,height,format,type,pixelData)}function _emscripten_glReleaseShaderCompiler(){}function _emscripten_glRenderbufferStorage(x0,x1,x2,x3){GLctx["renderbufferStorage"](x0,x1,x2,x3)}function _emscripten_glSampleCoverage(value,invert){GLctx.sampleCoverage(value,!!invert)}function _emscripten_glScissor(x0,x1,x2,x3){GLctx["scissor"](x0,x1,x2,x3)}function _emscripten_glShaderBinary(){GL.recordError(1280)}function _emscripten_glShaderSource(shader,count,string,length){var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}function _emscripten_glStencilFunc(x0,x1,x2){GLctx["stencilFunc"](x0,x1,x2)}function _emscripten_glStencilFuncSeparate(x0,x1,x2,x3){GLctx["stencilFuncSeparate"](x0,x1,x2,x3)}function _emscripten_glStencilMask(x0){GLctx["stencilMask"](x0)}function _emscripten_glStencilMaskSeparate(x0,x1){GLctx["stencilMaskSeparate"](x0,x1)}function _emscripten_glStencilOp(x0,x1,x2){GLctx["stencilOp"](x0,x1,x2)}function _emscripten_glStencilOpSeparate(x0,x1,x2,x3){GLctx["stencilOpSeparate"](x0,x1,x2,x3)}function _emscripten_glTexImage2D(target,level,internalFormat,width,height,border,format,type,pixels){GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels?emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat):null)}function _emscripten_glTexParameterf(x0,x1,x2){GLctx["texParameterf"](x0,x1,x2)}function _emscripten_glTexParameterfv(target,pname,params){var param=HEAPF32[params>>2];GLctx.texParameterf(target,pname,param)}function _emscripten_glTexParameteri(x0,x1,x2){GLctx["texParameteri"](x0,x1,x2)}function _emscripten_glTexParameteriv(target,pname,params){var param=HEAP32[params>>2];GLctx.texParameteri(target,pname,param)}function _emscripten_glTexSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixels){var pixelData=null;if(pixels)pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,0);GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixelData)}function _emscripten_glUniform1f(location,v0){GLctx.uniform1f(GL.uniforms[location],v0)}var miniTempWebGLFloatBuffers=[];function _emscripten_glUniform1fv(location,count,value){if(count<=288){var view=miniTempWebGLFloatBuffers[count-1];for(var i=0;i<count;++i){view[i]=HEAPF32[value+4*i>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*4>>2)}GLctx.uniform1fv(GL.uniforms[location],view)}function _emscripten_glUniform1i(location,v0){GLctx.uniform1i(GL.uniforms[location],v0)}var __miniTempWebGLIntBuffers=[];function _emscripten_glUniform1iv(location,count,value){if(count<=288){var view=__miniTempWebGLIntBuffers[count-1];for(var i=0;i<count;++i){view[i]=HEAP32[value+4*i>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*4>>2)}GLctx.uniform1iv(GL.uniforms[location],view)}function _emscripten_glUniform2f(location,v0,v1){GLctx.uniform2f(GL.uniforms[location],v0,v1)}function _emscripten_glUniform2fv(location,count,value){if(count<=144){var view=miniTempWebGLFloatBuffers[2*count-1];for(var i=0;i<2*count;i+=2){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*8>>2)}GLctx.uniform2fv(GL.uniforms[location],view)}function _emscripten_glUniform2i(location,v0,v1){GLctx.uniform2i(GL.uniforms[location],v0,v1)}function _emscripten_glUniform2iv(location,count,value){if(count<=144){var view=__miniTempWebGLIntBuffers[2*count-1];for(var i=0;i<2*count;i+=2){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*8>>2)}GLctx.uniform2iv(GL.uniforms[location],view)}function _emscripten_glUniform3f(location,v0,v1,v2){GLctx.uniform3f(GL.uniforms[location],v0,v1,v2)}function _emscripten_glUniform3fv(location,count,value){if(count<=96){var view=miniTempWebGLFloatBuffers[3*count-1];for(var i=0;i<3*count;i+=3){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*12>>2)}GLctx.uniform3fv(GL.uniforms[location],view)}function _emscripten_glUniform3i(location,v0,v1,v2){GLctx.uniform3i(GL.uniforms[location],v0,v1,v2)}function _emscripten_glUniform3iv(location,count,value){if(count<=96){var view=__miniTempWebGLIntBuffers[3*count-1];for(var i=0;i<3*count;i+=3){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2];view[i+2]=HEAP32[value+(4*i+8)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*12>>2)}GLctx.uniform3iv(GL.uniforms[location],view)}function _emscripten_glUniform4f(location,v0,v1,v2,v3){GLctx.uniform4f(GL.uniforms[location],v0,v1,v2,v3)}function _emscripten_glUniform4fv(location,count,value){if(count<=72){var view=miniTempWebGLFloatBuffers[4*count-1];var heap=HEAPF32;value>>=2;for(var i=0;i<4*count;i+=4){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3]}}else{var view=HEAPF32.subarray(value>>2,value+count*16>>2)}GLctx.uniform4fv(GL.uniforms[location],view)}function _emscripten_glUniform4i(location,v0,v1,v2,v3){GLctx.uniform4i(GL.uniforms[location],v0,v1,v2,v3)}function _emscripten_glUniform4iv(location,count,value){if(count<=72){var view=__miniTempWebGLIntBuffers[4*count-1];for(var i=0;i<4*count;i+=4){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2];view[i+2]=HEAP32[value+(4*i+8)>>2];view[i+3]=HEAP32[value+(4*i+12)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*16>>2)}GLctx.uniform4iv(GL.uniforms[location],view)}function _emscripten_glUniformMatrix2fv(location,count,transpose,value){if(count<=72){var view=miniTempWebGLFloatBuffers[4*count-1];for(var i=0;i<4*count;i+=4){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2];view[i+3]=HEAPF32[value+(4*i+12)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*16>>2)}GLctx.uniformMatrix2fv(GL.uniforms[location],!!transpose,view)}function _emscripten_glUniformMatrix3fv(location,count,transpose,value){if(count<=32){var view=miniTempWebGLFloatBuffers[9*count-1];for(var i=0;i<9*count;i+=9){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2];view[i+3]=HEAPF32[value+(4*i+12)>>2];view[i+4]=HEAPF32[value+(4*i+16)>>2];view[i+5]=HEAPF32[value+(4*i+20)>>2];view[i+6]=HEAPF32[value+(4*i+24)>>2];view[i+7]=HEAPF32[value+(4*i+28)>>2];view[i+8]=HEAPF32[value+(4*i+32)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*36>>2)}GLctx.uniformMatrix3fv(GL.uniforms[location],!!transpose,view)}function _emscripten_glUniformMatrix4fv(location,count,transpose,value){if(count<=18){var view=miniTempWebGLFloatBuffers[16*count-1];var heap=HEAPF32;value>>=2;for(var i=0;i<16*count;i+=16){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3];view[i+4]=heap[dst+4];view[i+5]=heap[dst+5];view[i+6]=heap[dst+6];view[i+7]=heap[dst+7];view[i+8]=heap[dst+8];view[i+9]=heap[dst+9];view[i+10]=heap[dst+10];view[i+11]=heap[dst+11];view[i+12]=heap[dst+12];view[i+13]=heap[dst+13];view[i+14]=heap[dst+14];view[i+15]=heap[dst+15]}}else{var view=HEAPF32.subarray(value>>2,value+count*64>>2)}GLctx.uniformMatrix4fv(GL.uniforms[location],!!transpose,view)}function _emscripten_glUseProgram(program){GLctx.useProgram(GL.programs[program])}function _emscripten_glValidateProgram(program){GLctx.validateProgram(GL.programs[program])}function _emscripten_glVertexAttrib1f(x0,x1){GLctx["vertexAttrib1f"](x0,x1)}function _emscripten_glVertexAttrib1fv(index,v){GLctx.vertexAttrib1f(index,HEAPF32[v>>2])}function _emscripten_glVertexAttrib2f(x0,x1,x2){GLctx["vertexAttrib2f"](x0,x1,x2)}function _emscripten_glVertexAttrib2fv(index,v){GLctx.vertexAttrib2f(index,HEAPF32[v>>2],HEAPF32[v+4>>2])}function _emscripten_glVertexAttrib3f(x0,x1,x2,x3){GLctx["vertexAttrib3f"](x0,x1,x2,x3)}function _emscripten_glVertexAttrib3fv(index,v){GLctx.vertexAttrib3f(index,HEAPF32[v>>2],HEAPF32[v+4>>2],HEAPF32[v+8>>2])}function _emscripten_glVertexAttrib4f(x0,x1,x2,x3,x4){GLctx["vertexAttrib4f"](x0,x1,x2,x3,x4)}function _emscripten_glVertexAttrib4fv(index,v){GLctx.vertexAttrib4f(index,HEAPF32[v>>2],HEAPF32[v+4>>2],HEAPF32[v+8>>2],HEAPF32[v+12>>2])}function _emscripten_glVertexAttribDivisorANGLE(index,divisor){GLctx["vertexAttribDivisor"](index,divisor)}function _emscripten_glVertexAttribPointer(index,size,type,normalized,stride,ptr){GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}function _emscripten_glViewport(x0,x1,x2,x3){GLctx["viewport"](x0,x1,x2,x3)}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function abortOnCannotGrowMemory(requestedSize){abort("OOM")}function _emscripten_resize_heap(requestedSize){abortOnCannotGrowMemory(requestedSize)}function _emscripten_run_script(ptr){eval(UTF8ToString(ptr))}function _emscripten_sample_gamepad_data(){return(JSEvents.lastGamepadState=navigator.getGamepads?navigator.getGamepads():navigator.webkitGetGamepads?navigator.webkitGetGamepads():null)?0:-1}function fillMouseEventData(eventStruct,e,target){var idx=eventStruct>>2;HEAP32[idx+0]=e.screenX;HEAP32[idx+1]=e.screenY;HEAP32[idx+2]=e.clientX;HEAP32[idx+3]=e.clientY;HEAP32[idx+4]=e.ctrlKey;HEAP32[idx+5]=e.shiftKey;HEAP32[idx+6]=e.altKey;HEAP32[idx+7]=e.metaKey;HEAP16[idx*2+16]=e.button;HEAP16[idx*2+17]=e.buttons;HEAP32[idx+9]=e["movementX"];HEAP32[idx+10]=e["movementY"];var rect=getBoundingClientRect(target);HEAP32[idx+11]=e.clientX-rect.left;HEAP32[idx+12]=e.clientY-rect.top}function registerMouseEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.mouseEvent)JSEvents.mouseEvent=_malloc(64);target=findEventTarget(target);var mouseEventHandlerFunc=function(ev){var e=ev||event;fillMouseEventData(JSEvents.mouseEvent,e,target);if(wasmTable.get(callbackfunc)(eventTypeId,JSEvents.mouseEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:eventTypeString!="mousemove"&&eventTypeString!="mouseenter"&&eventTypeString!="mouseleave",eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:mouseEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_click_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,4,"click",targetThread);return 0}function fillFullscreenChangeEventData(eventStruct){var fullscreenElement=document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement||document.msFullscreenElement;var isFullscreen=!!fullscreenElement;HEAP32[eventStruct>>2]=isFullscreen;HEAP32[eventStruct+4>>2]=JSEvents.fullscreenEnabled();var reportedElement=isFullscreen?fullscreenElement:JSEvents.previousFullscreenElement;var nodeName=JSEvents.getNodeNameForTarget(reportedElement);var id=reportedElement&&reportedElement.id?reportedElement.id:"";stringToUTF8(nodeName,eventStruct+8,128);stringToUTF8(id,eventStruct+136,128);HEAP32[eventStruct+264>>2]=reportedElement?reportedElement.clientWidth:0;HEAP32[eventStruct+268>>2]=reportedElement?reportedElement.clientHeight:0;HEAP32[eventStruct+272>>2]=screen.width;HEAP32[eventStruct+276>>2]=screen.height;if(isFullscreen){JSEvents.previousFullscreenElement=fullscreenElement}}function registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.fullscreenChangeEvent)JSEvents.fullscreenChangeEvent=_malloc(280);var fullscreenChangeEventhandlerFunc=function(ev){var e=ev||event;var fullscreenChangeEvent=JSEvents.fullscreenChangeEvent;fillFullscreenChangeEventData(fullscreenChangeEvent);if(wasmTable.get(callbackfunc)(eventTypeId,fullscreenChangeEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:fullscreenChangeEventhandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_fullscreenchange_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){if(!JSEvents.fullscreenEnabled())return-1;target=findEventTarget(target);if(!target)return-4;registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,19,"fullscreenchange",targetThread);registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,19,"webkitfullscreenchange",targetThread);return 0}function registerGamepadEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.gamepadEvent)JSEvents.gamepadEvent=_malloc(1432);var gamepadEventHandlerFunc=function(ev){var e=ev||event;var gamepadEvent=JSEvents.gamepadEvent;fillGamepadEventData(gamepadEvent,e["gamepad"]);if(wasmTable.get(callbackfunc)(eventTypeId,gamepadEvent,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:gamepadEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_gamepadconnected_callback_on_thread(userData,useCapture,callbackfunc,targetThread){if(!navigator.getGamepads&&!navigator.webkitGetGamepads)return-1;registerGamepadEventCallback(2,userData,useCapture,callbackfunc,26,"gamepadconnected",targetThread);return 0}function _emscripten_set_gamepaddisconnected_callback_on_thread(userData,useCapture,callbackfunc,targetThread){if(!navigator.getGamepads&&!navigator.webkitGetGamepads)return-1;registerGamepadEventCallback(2,userData,useCapture,callbackfunc,27,"gamepaddisconnected",targetThread);return 0}function registerKeyEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.keyEvent)JSEvents.keyEvent=_malloc(164);var keyEventHandlerFunc=function(e){var keyEventData=JSEvents.keyEvent;var idx=keyEventData>>2;HEAP32[idx+0]=e.location;HEAP32[idx+1]=e.ctrlKey;HEAP32[idx+2]=e.shiftKey;HEAP32[idx+3]=e.altKey;HEAP32[idx+4]=e.metaKey;HEAP32[idx+5]=e.repeat;HEAP32[idx+6]=e.charCode;HEAP32[idx+7]=e.keyCode;HEAP32[idx+8]=e.which;stringToUTF8(e.key||"",keyEventData+36,32);stringToUTF8(e.code||"",keyEventData+68,32);stringToUTF8(e.char||"",keyEventData+100,32);stringToUTF8(e.locale||"",keyEventData+132,32);if(wasmTable.get(callbackfunc)(eventTypeId,keyEventData,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:keyEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_keydown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,2,"keydown",targetThread);return 0}var Browser={mainLoop:{scheduler:null,method:"",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause:function(){Browser.mainLoop.scheduler=null;Browser.mainLoop.currentlyRunningMainloop++},resume:function(){Browser.mainLoop.currentlyRunningMainloop++;var timingMode=Browser.mainLoop.timingMode;var timingValue=Browser.mainLoop.timingValue;var func=Browser.mainLoop.func;Browser.mainLoop.func=null;setMainLoop(func,0,false,Browser.mainLoop.arg,true);_emscripten_set_main_loop_timing(timingMode,timingValue);Browser.mainLoop.scheduler()},updateStatus:function(){if(Module["setStatus"]){var message=Module["statusMessage"]||"Please wait...";var remaining=Browser.mainLoop.remainingBlockers;var expected=Browser.mainLoop.expectedBlockers;if(remaining){if(remaining<expected){Module["setStatus"](message+" ("+(expected-remaining)+"/"+expected+")")}else{Module["setStatus"](message)}}else{Module["setStatus"]("")}}},runIter:function(func){if(ABORT)return;if(Module["preMainLoop"]){var preRet=Module["preMainLoop"]();if(preRet===false){return}}try{func()}catch(e){if(e instanceof ExitStatus){return}else if(e=="unwind"){return}else{if(e&&typeof e==="object"&&e.stack)err("exception thrown: "+[e,e.stack]);throw e}}if(Module["postMainLoop"])Module["postMainLoop"]()}},isFullscreen:false,pointerLock:false,moduleContextCreatedCallbacks:[],workers:[],init:function(){if(!Module["preloadPlugins"])Module["preloadPlugins"]=[];if(Browser.initted)return;Browser.initted=true;try{new Blob;Browser.hasBlobConstructor=true}catch(e){Browser.hasBlobConstructor=false;console.log("warning: no blob constructor, cannot create blobs with mimetypes")}Browser.BlobBuilder=typeof MozBlobBuilder!="undefined"?MozBlobBuilder:typeof WebKitBlobBuilder!="undefined"?WebKitBlobBuilder:!Browser.hasBlobConstructor?console.log("warning: no BlobBuilder"):null;Browser.URLObject=typeof window!="undefined"?window.URL?window.URL:window.webkitURL:undefined;if(!Module.noImageDecoding&&typeof Browser.URLObject==="undefined"){console.log("warning: Browser does not support creating object URLs. Built-in browser image decoding will not be available.");Module.noImageDecoding=true}var imagePlugin={};imagePlugin["canHandle"]=function imagePlugin_canHandle(name){return!Module.noImageDecoding&&/\.(jpg|jpeg|png|bmp)$/i.test(name)};imagePlugin["handle"]=function imagePlugin_handle(byteArray,name,onload,onerror){var b=null;if(Browser.hasBlobConstructor){try{b=new Blob([byteArray],{type:Browser.getMimetype(name)});if(b.size!==byteArray.length){b=new Blob([new Uint8Array(byteArray).buffer],{type:Browser.getMimetype(name)})}}catch(e){warnOnce("Blob constructor present but fails: "+e+"; falling back to blob builder")}}if(!b){var bb=new Browser.BlobBuilder;bb.append(new Uint8Array(byteArray).buffer);b=bb.getBlob()}var url=Browser.URLObject.createObjectURL(b);var img=new Image;img.onload=function img_onload(){assert(img.complete,"Image "+name+" could not be decoded");var canvas=document.createElement("canvas");canvas.width=img.width;canvas.height=img.height;var ctx=canvas.getContext("2d");ctx.drawImage(img,0,0);Module["preloadedImages"][name]=canvas;Browser.URLObject.revokeObjectURL(url);if(onload)onload(byteArray)};img.onerror=function img_onerror(event){console.log("Image "+url+" could not be decoded");if(onerror)onerror()};img.src=url};Module["preloadPlugins"].push(imagePlugin);var audioPlugin={};audioPlugin["canHandle"]=function audioPlugin_canHandle(name){return!Module.noAudioDecoding&&name.substr(-4)in{".ogg":1,".wav":1,".mp3":1}};audioPlugin["handle"]=function audioPlugin_handle(byteArray,name,onload,onerror){var done=false;function finish(audio){if(done)return;done=true;Module["preloadedAudios"][name]=audio;if(onload)onload(byteArray)}function fail(){if(done)return;done=true;Module["preloadedAudios"][name]=new Audio;if(onerror)onerror()}if(Browser.hasBlobConstructor){try{var b=new Blob([byteArray],{type:Browser.getMimetype(name)})}catch(e){return fail()}var url=Browser.URLObject.createObjectURL(b);var audio=new Audio;audio.addEventListener("canplaythrough",function(){finish(audio)},false);audio.onerror=function audio_onerror(event){if(done)return;console.log("warning: browser could not fully decode audio "+name+", trying slower base64 approach");function encode64(data){var BASE="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var PAD="=";var ret="";var leftchar=0;var leftbits=0;for(var i=0;i<data.length;i++){leftchar=leftchar<<8|data[i];leftbits+=8;while(leftbits>=6){var curr=leftchar>>leftbits-6&63;leftbits-=6;ret+=BASE[curr]}}if(leftbits==2){ret+=BASE[(leftchar&3)<<4];ret+=PAD+PAD}else if(leftbits==4){ret+=BASE[(leftchar&15)<<2];ret+=PAD}return ret}audio.src="data:audio/x-"+name.substr(-3)+";base64,"+encode64(byteArray);finish(audio)};audio.src=url;Browser.safeSetTimeout(function(){finish(audio)},1e4)}else{return fail()}};Module["preloadPlugins"].push(audioPlugin);function pointerLockChange(){Browser.pointerLock=document["pointerLockElement"]===Module["canvas"]||document["mozPointerLockElement"]===Module["canvas"]||document["webkitPointerLockElement"]===Module["canvas"]||document["msPointerLockElement"]===Module["canvas"]}var canvas=Module["canvas"];if(canvas){canvas.requestPointerLock=canvas["requestPointerLock"]||canvas["mozRequestPointerLock"]||canvas["webkitRequestPointerLock"]||canvas["msRequestPointerLock"]||function(){};canvas.exitPointerLock=document["exitPointerLock"]||document["mozExitPointerLock"]||document["webkitExitPointerLock"]||document["msExitPointerLock"]||function(){};canvas.exitPointerLock=canvas.exitPointerLock.bind(document);document.addEventListener("pointerlockchange",pointerLockChange,false);document.addEventListener("mozpointerlockchange",pointerLockChange,false);document.addEventListener("webkitpointerlockchange",pointerLockChange,false);document.addEventListener("mspointerlockchange",pointerLockChange,false);if(Module["elementPointerLock"]){canvas.addEventListener("click",function(ev){if(!Browser.pointerLock&&Module["canvas"].requestPointerLock){Module["canvas"].requestPointerLock();ev.preventDefault()}},false)}}},createContext:function(canvas,useWebGL,setInModule,webGLContextAttributes){if(useWebGL&&Module.ctx&&canvas==Module.canvas)return Module.ctx;var ctx;var contextHandle;if(useWebGL){var contextAttributes={antialias:false,alpha:false,majorVersion:1};if(webGLContextAttributes){for(var attribute in webGLContextAttributes){contextAttributes[attribute]=webGLContextAttributes[attribute]}}if(typeof GL!=="undefined"){contextHandle=GL.createContext(canvas,contextAttributes);if(contextHandle){ctx=GL.getContext(contextHandle).GLctx}}}else{ctx=canvas.getContext("2d")}if(!ctx)return null;if(setInModule){if(!useWebGL)assert(typeof GLctx==="undefined","cannot set in module if GLctx is used, but we are a non-GL context that would replace it");Module.ctx=ctx;if(useWebGL)GL.makeContextCurrent(contextHandle);Module.useWebGL=useWebGL;Browser.moduleContextCreatedCallbacks.forEach(function(callback){callback()});Browser.init()}return ctx},destroyContext:function(canvas,useWebGL,setInModule){},fullscreenHandlersInstalled:false,lockPointer:undefined,resizeCanvas:undefined,requestFullscreen:function(lockPointer,resizeCanvas){Browser.lockPointer=lockPointer;Browser.resizeCanvas=resizeCanvas;if(typeof Browser.lockPointer==="undefined")Browser.lockPointer=true;if(typeof Browser.resizeCanvas==="undefined")Browser.resizeCanvas=false;var canvas=Module["canvas"];function fullscreenChange(){Browser.isFullscreen=false;var canvasContainer=canvas.parentNode;if((document["fullscreenElement"]||document["mozFullScreenElement"]||document["msFullscreenElement"]||document["webkitFullscreenElement"]||document["webkitCurrentFullScreenElement"])===canvasContainer){canvas.exitFullscreen=Browser.exitFullscreen;if(Browser.lockPointer)canvas.requestPointerLock();Browser.isFullscreen=true;if(Browser.resizeCanvas){Browser.setFullscreenCanvasSize()}else{Browser.updateCanvasDimensions(canvas)}}else{canvasContainer.parentNode.insertBefore(canvas,canvasContainer);canvasContainer.parentNode.removeChild(canvasContainer);if(Browser.resizeCanvas){Browser.setWindowedCanvasSize()}else{Browser.updateCanvasDimensions(canvas)}}if(Module["onFullScreen"])Module["onFullScreen"](Browser.isFullscreen);if(Module["onFullscreen"])Module["onFullscreen"](Browser.isFullscreen)}if(!Browser.fullscreenHandlersInstalled){Browser.fullscreenHandlersInstalled=true;document.addEventListener("fullscreenchange",fullscreenChange,false);document.addEventListener("mozfullscreenchange",fullscreenChange,false);document.addEventListener("webkitfullscreenchange",fullscreenChange,false);document.addEventListener("MSFullscreenChange",fullscreenChange,false)}var canvasContainer=document.createElement("div");canvas.parentNode.insertBefore(canvasContainer,canvas);canvasContainer.appendChild(canvas);canvasContainer.requestFullscreen=canvasContainer["requestFullscreen"]||canvasContainer["mozRequestFullScreen"]||canvasContainer["msRequestFullscreen"]||(canvasContainer["webkitRequestFullscreen"]?function(){canvasContainer["webkitRequestFullscreen"](Element["ALLOW_KEYBOARD_INPUT"])}:null)||(canvasContainer["webkitRequestFullScreen"]?function(){canvasContainer["webkitRequestFullScreen"](Element["ALLOW_KEYBOARD_INPUT"])}:null);canvasContainer.requestFullscreen()},exitFullscreen:function(){if(!Browser.isFullscreen){return false}var CFS=document["exitFullscreen"]||document["cancelFullScreen"]||document["mozCancelFullScreen"]||document["msExitFullscreen"]||document["webkitCancelFullScreen"]||function(){};CFS.apply(document,[]);return true},nextRAF:0,fakeRequestAnimationFrame:function(func){var now=Date.now();if(Browser.nextRAF===0){Browser.nextRAF=now+1e3/60}else{while(now+2>=Browser.nextRAF){Browser.nextRAF+=1e3/60}}var delay=Math.max(Browser.nextRAF-now,0);setTimeout(func,delay)},requestAnimationFrame:function(func){if(typeof requestAnimationFrame==="function"){requestAnimationFrame(func);return}var RAF=Browser.fakeRequestAnimationFrame;RAF(func)},safeRequestAnimationFrame:function(func){return Browser.requestAnimationFrame(function(){if(ABORT)return;func()})},safeSetTimeout:function(func,timeout){noExitRuntime=true;return setTimeout(function(){if(ABORT)return;func()},timeout)},getMimetype:function(name){return{"jpg":"image/jpeg","jpeg":"image/jpeg","png":"image/png","bmp":"image/bmp","ogg":"audio/ogg","wav":"audio/wav","mp3":"audio/mpeg"}[name.substr(name.lastIndexOf(".")+1)]},getUserMedia:function(func){if(!window.getUserMedia){window.getUserMedia=navigator["getUserMedia"]||navigator["mozGetUserMedia"]}window.getUserMedia(func)},getMovementX:function(event){return event["movementX"]||event["mozMovementX"]||event["webkitMovementX"]||0},getMovementY:function(event){return event["movementY"]||event["mozMovementY"]||event["webkitMovementY"]||0},getMouseWheelDelta:function(event){var delta=0;switch(event.type){case"DOMMouseScroll":delta=event.detail/3;break;case"mousewheel":delta=event.wheelDelta/120;break;case"wheel":delta=event.deltaY;switch(event.deltaMode){case 0:delta/=100;break;case 1:delta/=3;break;case 2:delta*=80;break;default:throw"unrecognized mouse wheel delta mode: "+event.deltaMode}break;default:throw"unrecognized mouse wheel event: "+event.type}return delta},mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,touches:{},lastTouches:{},calculateMouseEvent:function(event){if(Browser.pointerLock){if(event.type!="mousemove"&&"mozMovementX"in event){Browser.mouseMovementX=Browser.mouseMovementY=0}else{Browser.mouseMovementX=Browser.getMovementX(event);Browser.mouseMovementY=Browser.getMovementY(event)}if(typeof SDL!="undefined"){Browser.mouseX=SDL.mouseX+Browser.mouseMovementX;Browser.mouseY=SDL.mouseY+Browser.mouseMovementY}else{Browser.mouseX+=Browser.mouseMovementX;Browser.mouseY+=Browser.mouseMovementY}}else{var rect=Module["canvas"].getBoundingClientRect();var cw=Module["canvas"].width;var ch=Module["canvas"].height;var scrollX=typeof window.scrollX!=="undefined"?window.scrollX:window.pageXOffset;var scrollY=typeof window.scrollY!=="undefined"?window.scrollY:window.pageYOffset;if(event.type==="touchstart"||event.type==="touchend"||event.type==="touchmove"){var touch=event.touch;if(touch===undefined){return}var adjustedX=touch.pageX-(scrollX+rect.left);var adjustedY=touch.pageY-(scrollY+rect.top);adjustedX=adjustedX*(cw/rect.width);adjustedY=adjustedY*(ch/rect.height);var coords={x:adjustedX,y:adjustedY};if(event.type==="touchstart"){Browser.lastTouches[touch.identifier]=coords;Browser.touches[touch.identifier]=coords}else if(event.type==="touchend"||event.type==="touchmove"){var last=Browser.touches[touch.identifier];if(!last)last=coords;Browser.lastTouches[touch.identifier]=last;Browser.touches[touch.identifier]=coords}return}var x=event.pageX-(scrollX+rect.left);var y=event.pageY-(scrollY+rect.top);x=x*(cw/rect.width);y=y*(ch/rect.height);Browser.mouseMovementX=x-Browser.mouseX;Browser.mouseMovementY=y-Browser.mouseY;Browser.mouseX=x;Browser.mouseY=y}},asyncLoad:function(url,onload,onerror,noRunDep){var dep=!noRunDep?getUniqueRunDependency("al "+url):"";readAsync(url,function(arrayBuffer){assert(arrayBuffer,'Loading data file "'+url+'" failed (no arrayBuffer).');onload(new Uint8Array(arrayBuffer));if(dep)removeRunDependency(dep)},function(event){if(onerror){onerror()}else{throw'Loading data file "'+url+'" failed.'}});if(dep)addRunDependency(dep)},resizeListeners:[],updateResizeListeners:function(){var canvas=Module["canvas"];Browser.resizeListeners.forEach(function(listener){listener(canvas.width,canvas.height)})},setCanvasSize:function(width,height,noUpdates){var canvas=Module["canvas"];Browser.updateCanvasDimensions(canvas,width,height);if(!noUpdates)Browser.updateResizeListeners()},windowedWidth:0,windowedHeight:0,setFullscreenCanvasSize:function(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>2];flags=flags|8388608;HEAP32[SDL.screen>>2]=flags}Browser.updateCanvasDimensions(Module["canvas"]);Browser.updateResizeListeners()},setWindowedCanvasSize:function(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>2];flags=flags&~8388608;HEAP32[SDL.screen>>2]=flags}Browser.updateCanvasDimensions(Module["canvas"]);Browser.updateResizeListeners()},updateCanvasDimensions:function(canvas,wNative,hNative){if(wNative&&hNative){canvas.widthNative=wNative;canvas.heightNative=hNative}else{wNative=canvas.widthNative;hNative=canvas.heightNative}var w=wNative;var h=hNative;if(Module["forcedAspectRatio"]&&Module["forcedAspectRatio"]>0){if(w/h<Module["forcedAspectRatio"]){w=Math.round(h*Module["forcedAspectRatio"])}else{h=Math.round(w/Module["forcedAspectRatio"])}}if((document["fullscreenElement"]||document["mozFullScreenElement"]||document["msFullscreenElement"]||document["webkitFullscreenElement"]||document["webkitCurrentFullScreenElement"])===canvas.parentNode&&typeof screen!="undefined"){var factor=Math.min(screen.width/w,screen.height/h);w=Math.round(w*factor);h=Math.round(h*factor)}if(Browser.resizeCanvas){if(canvas.width!=w)canvas.width=w;if(canvas.height!=h)canvas.height=h;if(typeof canvas.style!="undefined"){canvas.style.removeProperty("width");canvas.style.removeProperty("height")}}else{if(canvas.width!=wNative)canvas.width=wNative;if(canvas.height!=hNative)canvas.height=hNative;if(typeof canvas.style!="undefined"){if(w!=wNative||h!=hNative){canvas.style.setProperty("width",w+"px","important");canvas.style.setProperty("height",h+"px","important")}else{canvas.style.removeProperty("width");canvas.style.removeProperty("height")}}}},wgetRequests:{},nextWgetRequestHandle:0,getNextWgetRequestHandle:function(){var handle=Browser.nextWgetRequestHandle;Browser.nextWgetRequestHandle++;return handle}};function _emscripten_set_main_loop_timing(mode,value){Browser.mainLoop.timingMode=mode;Browser.mainLoop.timingValue=value;if(!Browser.mainLoop.func){return 1}if(mode==0){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setTimeout(){var timeUntilNextTick=Math.max(0,Browser.mainLoop.tickStartTime+value-_emscripten_get_now())|0;setTimeout(Browser.mainLoop.runner,timeUntilNextTick)};Browser.mainLoop.method="timeout"}else if(mode==1){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_rAF(){Browser.requestAnimationFrame(Browser.mainLoop.runner)};Browser.mainLoop.method="rAF"}else if(mode==2){if(typeof setImmediate==="undefined"){var setImmediates=[];var emscriptenMainLoopMessageId="setimmediate";var Browser_setImmediate_messageHandler=function(event){if(event.data===emscriptenMainLoopMessageId||event.data.target===emscriptenMainLoopMessageId){event.stopPropagation();setImmediates.shift()()}};addEventListener("message",Browser_setImmediate_messageHandler,true);setImmediate=function Browser_emulated_setImmediate(func){setImmediates.push(func);if(ENVIRONMENT_IS_WORKER){if(Module["setImmediates"]===undefined)Module["setImmediates"]=[];Module["setImmediates"].push(func);postMessage({target:emscriptenMainLoopMessageId})}else postMessage(emscriptenMainLoopMessageId,"*")}}Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setImmediate(){setImmediate(Browser.mainLoop.runner)};Browser.mainLoop.method="immediate"}return 0}var _emscripten_get_now;if(ENVIRONMENT_IS_NODE){_emscripten_get_now=function(){var t=process["hrtime"]();return t[0]*1e3+t[1]/1e6}}else if(typeof dateNow!=="undefined"){_emscripten_get_now=dateNow}else _emscripten_get_now=function(){return performance.now()};function setMainLoop(browserIterationFunc,fps,simulateInfiniteLoop,arg,noSetTiming){noExitRuntime=true;assert(!Browser.mainLoop.func,"emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters.");Browser.mainLoop.func=browserIterationFunc;Browser.mainLoop.arg=arg;var thisMainLoopId=Browser.mainLoop.currentlyRunningMainloop;Browser.mainLoop.runner=function Browser_mainLoop_runner(){if(ABORT)return;if(Browser.mainLoop.queue.length>0){var start=Date.now();var blocker=Browser.mainLoop.queue.shift();blocker.func(blocker.arg);if(Browser.mainLoop.remainingBlockers){var remaining=Browser.mainLoop.remainingBlockers;var next=remaining%1==0?remaining-1:Math.floor(remaining);if(blocker.counted){Browser.mainLoop.remainingBlockers=next}else{next=next+.5;Browser.mainLoop.remainingBlockers=(8*remaining+next)/9}}console.log('main loop blocker "'+blocker.name+'" took '+(Date.now()-start)+" ms");Browser.mainLoop.updateStatus();if(thisMainLoopId<Browser.mainLoop.currentlyRunningMainloop)return;setTimeout(Browser.mainLoop.runner,0);return}if(thisMainLoopId<Browser.mainLoop.currentlyRunningMainloop)return;Browser.mainLoop.currentFrameNumber=Browser.mainLoop.currentFrameNumber+1|0;if(Browser.mainLoop.timingMode==1&&Browser.mainLoop.timingValue>1&&Browser.mainLoop.currentFrameNumber%Browser.mainLoop.timingValue!=0){Browser.mainLoop.scheduler();return}else if(Browser.mainLoop.timingMode==0){Browser.mainLoop.tickStartTime=_emscripten_get_now()}Browser.mainLoop.runIter(browserIterationFunc);if(thisMainLoopId<Browser.mainLoop.currentlyRunningMainloop)return;if(typeof SDL==="object"&&SDL.audio&&SDL.audio.queueNewAudioData)SDL.audio.queueNewAudioData();Browser.mainLoop.scheduler()};if(!noSetTiming){if(fps&&fps>0)_emscripten_set_main_loop_timing(0,1e3/fps);else _emscripten_set_main_loop_timing(1,1);Browser.mainLoop.scheduler()}if(simulateInfiniteLoop){throw"unwind"}}function _emscripten_set_main_loop(func,fps,simulateInfiniteLoop){var browserIterationFunc=wasmTable.get(func);setMainLoop(browserIterationFunc,fps,simulateInfiniteLoop)}function registerTouchEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.touchEvent)JSEvents.touchEvent=_malloc(1684);target=findEventTarget(target);var touchEventHandlerFunc=function(e){var touches={};var et=e.touches;for(var i=0;i<et.length;++i){var touch=et[i];touches[touch.identifier]=touch}et=e.changedTouches;for(var i=0;i<et.length;++i){var touch=et[i];touch.isChanged=1;touches[touch.identifier]=touch}et=e.targetTouches;for(var i=0;i<et.length;++i){touches[et[i].identifier].onTarget=1}var touchEvent=JSEvents.touchEvent;var idx=touchEvent>>2;HEAP32[idx+1]=e.ctrlKey;HEAP32[idx+2]=e.shiftKey;HEAP32[idx+3]=e.altKey;HEAP32[idx+4]=e.metaKey;idx+=5;var targetRect=getBoundingClientRect(target);var numTouches=0;for(var i in touches){var t=touches[i];HEAP32[idx+0]=t.identifier;HEAP32[idx+1]=t.screenX;HEAP32[idx+2]=t.screenY;HEAP32[idx+3]=t.clientX;HEAP32[idx+4]=t.clientY;HEAP32[idx+5]=t.pageX;HEAP32[idx+6]=t.pageY;HEAP32[idx+7]=t.isChanged;HEAP32[idx+8]=t.onTarget;HEAP32[idx+9]=t.clientX-targetRect.left;HEAP32[idx+10]=t.clientY-targetRect.top;idx+=13;if(++numTouches>31){break}}HEAP32[touchEvent>>2]=numTouches;if(wasmTable.get(callbackfunc)(eventTypeId,touchEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:eventTypeString=="touchstart"||eventTypeString=="touchend",eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:touchEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_touchcancel_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerTouchEventCallback(target,userData,useCapture,callbackfunc,25,"touchcancel",targetThread);return 0}function _emscripten_set_touchend_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerTouchEventCallback(target,userData,useCapture,callbackfunc,23,"touchend",targetThread);return 0}function _emscripten_set_touchmove_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerTouchEventCallback(target,userData,useCapture,callbackfunc,24,"touchmove",targetThread);return 0}function _emscripten_set_touchstart_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerTouchEventCallback(target,userData,useCapture,callbackfunc,22,"touchstart",targetThread);return 0}function _emscripten_thread_sleep(msecs){var start=_emscripten_get_now();while(_emscripten_get_now()-start<msecs){}}function _exit(status){exit(status)}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_read(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doReadv(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var stream=SYSCALLS.getStreamFromFD(fd);var HIGH_OFFSET=4294967296;var offset=offset_high*HIGH_OFFSET+(offset_low>>>0);var DOUBLE_LIMIT=9007199254740992;if(offset<=-DOUBLE_LIMIT||offset>=DOUBLE_LIMIT){return-61}FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doWritev(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _glActiveTexture(x0){GLctx["activeTexture"](x0)}function _glAttachShader(program,shader){GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _glBindAttribLocation(program,index,name){GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))}function _glBindBuffer(target,buffer){GLctx.bindBuffer(target,GL.buffers[buffer])}function _glBindTexture(target,texture){GLctx.bindTexture(target,GL.textures[texture])}function _glBlendFunc(x0,x1){GLctx["blendFunc"](x0,x1)}function _glBufferData(target,size,data,usage){GLctx.bufferData(target,data?HEAPU8.subarray(data,data+size):size,usage)}function _glBufferSubData(target,offset,size,data){GLctx.bufferSubData(target,offset,HEAPU8.subarray(data,data+size))}function _glClear(x0){GLctx["clear"](x0)}function _glClearColor(x0,x1,x2,x3){GLctx["clearColor"](x0,x1,x2,x3)}function _glClearDepthf(x0){GLctx["clearDepth"](x0)}function _glCompileShader(shader){GLctx.compileShader(GL.shaders[shader])}function _glCompressedTexImage2D(target,level,internalFormat,width,height,border,imageSize,data){GLctx["compressedTexImage2D"](target,level,internalFormat,width,height,border,data?HEAPU8.subarray(data,data+imageSize):null)}function _glCreateProgram(){var id=GL.getNewId(GL.programs);var program=GLctx.createProgram();program.name=id;GL.programs[id]=program;return id}function _glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}function _glCullFace(x0){GLctx["cullFace"](x0)}function _glDeleteBuffers(n,buffers){for(var i=0;i<n;i++){var id=HEAP32[buffers+i*4>>2];var buffer=GL.buffers[id];if(!buffer)continue;GLctx.deleteBuffer(buffer);buffer.name=0;GL.buffers[id]=null}}function _glDeleteProgram(id){if(!id)return;var program=GL.programs[id];if(!program){GL.recordError(1281);return}GLctx.deleteProgram(program);program.name=0;GL.programs[id]=null;GL.programInfos[id]=null}function _glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}function _glDeleteTextures(n,textures){for(var i=0;i<n;i++){var id=HEAP32[textures+i*4>>2];var texture=GL.textures[id];if(!texture)continue;GLctx.deleteTexture(texture);texture.name=0;GL.textures[id]=null}}function _glDepthFunc(x0){GLctx["depthFunc"](x0)}function _glDetachShader(program,shader){GLctx.detachShader(GL.programs[program],GL.shaders[shader])}function _glDisable(x0){GLctx["disable"](x0)}function _glDisableVertexAttribArray(index){GLctx.disableVertexAttribArray(index)}function _glDrawArrays(mode,first,count){GLctx.drawArrays(mode,first,count)}function _glDrawElements(mode,count,type,indices){GLctx.drawElements(mode,count,type,indices)}function _glEnable(x0){GLctx["enable"](x0)}function _glEnableVertexAttribArray(index){GLctx.enableVertexAttribArray(index)}function _glFrontFace(x0){GLctx["frontFace"](x0)}function _glGenBuffers(n,buffers){__glGenObject(n,buffers,"createBuffer",GL.buffers)}function _glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures)}function _glGetAttribLocation(program,name){return GLctx.getAttribLocation(GL.programs[program],UTF8ToString(name))}function _glGetFloatv(name_,p){emscriptenWebGLGet(name_,p,2)}function _glGetProgramInfoLog(program,maxLength,length,infoLog){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _glGetProgramiv(program,pname,p){if(!p){GL.recordError(1281);return}if(program>=GL.counter){GL.recordError(1281);return}var ptable=GL.programInfos[program];if(!ptable){GL.recordError(1282);return}if(pname==35716){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";HEAP32[p>>2]=log.length+1}else if(pname==35719){HEAP32[p>>2]=ptable.maxUniformLength}else if(pname==35722){if(ptable.maxAttributeLength==-1){program=GL.programs[program];var numAttribs=GLctx.getProgramParameter(program,35721);ptable.maxAttributeLength=0;for(var i=0;i<numAttribs;++i){var activeAttrib=GLctx.getActiveAttrib(program,i);ptable.maxAttributeLength=Math.max(ptable.maxAttributeLength,activeAttrib.name.length+1)}}HEAP32[p>>2]=ptable.maxAttributeLength}else if(pname==35381){if(ptable.maxUniformBlockNameLength==-1){program=GL.programs[program];var numBlocks=GLctx.getProgramParameter(program,35382);ptable.maxUniformBlockNameLength=0;for(var i=0;i<numBlocks;++i){var activeBlockName=GLctx.getActiveUniformBlockName(program,i);ptable.maxUniformBlockNameLength=Math.max(ptable.maxUniformBlockNameLength,activeBlockName.length+1)}}HEAP32[p>>2]=ptable.maxUniformBlockNameLength}else{HEAP32[p>>2]=GLctx.getProgramParameter(GL.programs[program],pname)}}function _glGetShaderInfoLog(shader,maxLength,length,infoLog){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _glGetShaderiv(shader,pname,p){if(!p){GL.recordError(1281);return}if(pname==35716){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var logLength=log?log.length+1:0;HEAP32[p>>2]=logLength}else if(pname==35720){var source=GLctx.getShaderSource(GL.shaders[shader]);var sourceLength=source?source.length+1:0;HEAP32[p>>2]=sourceLength}else{HEAP32[p>>2]=GLctx.getShaderParameter(GL.shaders[shader],pname)}}function _glGetString(name_){if(GL.stringCache[name_])return GL.stringCache[name_];var ret;switch(name_){case 7939:var exts=GLctx.getSupportedExtensions()||[];exts=exts.concat(exts.map(function(e){return"GL_"+e}));ret=stringToNewUTF8(exts.join(" "));break;case 7936:case 7937:case 37445:case 37446:var s=GLctx.getParameter(name_);if(!s){GL.recordError(1280)}ret=stringToNewUTF8(s);break;case 7938:var glVersion=GLctx.getParameter(7938);{glVersion="OpenGL ES 2.0 ("+glVersion+")"}ret=stringToNewUTF8(glVersion);break;case 35724:var glslVersion=GLctx.getParameter(35724);var ver_re=/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/;var ver_num=glslVersion.match(ver_re);if(ver_num!==null){if(ver_num[1].length==3)ver_num[1]=ver_num[1]+"0";glslVersion="OpenGL ES GLSL ES "+ver_num[1]+" ("+glslVersion+")"}ret=stringToNewUTF8(glslVersion);break;default:GL.recordError(1280);return 0}GL.stringCache[name_]=ret;return ret}function _glGetUniformLocation(program,name){name=UTF8ToString(name);var arrayIndex=0;if(name[name.length-1]=="]"){var leftBrace=name.lastIndexOf("[");arrayIndex=name[leftBrace+1]!="]"?jstoi_q(name.slice(leftBrace+1)):0;name=name.slice(0,leftBrace)}var uniformInfo=GL.programInfos[program]&&GL.programInfos[program].uniforms[name];if(uniformInfo&&arrayIndex>=0&&arrayIndex<uniformInfo[0]){return uniformInfo[1]+arrayIndex}else{return-1}}function _glLinkProgram(program){GLctx.linkProgram(GL.programs[program]);GL.populateUniformTable(program)}function _glPixelStorei(pname,param){if(pname==3317){GL.unpackAlignment=param}GLctx.pixelStorei(pname,param)}function _glReadPixels(x,y,width,height,format,type,pixels){var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);return}GLctx.readPixels(x,y,width,height,format,type,pixelData)}function _glShaderSource(shader,count,string,length){var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}function _glTexImage2D(target,level,internalFormat,width,height,border,format,type,pixels){GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels?emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat):null)}function _glTexParameteri(x0,x1,x2){GLctx["texParameteri"](x0,x1,x2)}function _glUniform1i(location,v0){GLctx.uniform1i(GL.uniforms[location],v0)}function _glUniform4f(location,v0,v1,v2,v3){GLctx.uniform4f(GL.uniforms[location],v0,v1,v2,v3)}function _glUniformMatrix4fv(location,count,transpose,value){if(count<=18){var view=miniTempWebGLFloatBuffers[16*count-1];var heap=HEAPF32;value>>=2;for(var i=0;i<16*count;i+=16){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3];view[i+4]=heap[dst+4];view[i+5]=heap[dst+5];view[i+6]=heap[dst+6];view[i+7]=heap[dst+7];view[i+8]=heap[dst+8];view[i+9]=heap[dst+9];view[i+10]=heap[dst+10];view[i+11]=heap[dst+11];view[i+12]=heap[dst+12];view[i+13]=heap[dst+13];view[i+14]=heap[dst+14];view[i+15]=heap[dst+15]}}else{var view=HEAPF32.subarray(value>>2,value+count*64>>2)}GLctx.uniformMatrix4fv(GL.uniforms[location],!!transpose,view)}function _glUseProgram(program){GLctx.useProgram(GL.programs[program])}function _glVertexAttribPointer(index,size,type,normalized,stride,ptr){GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}function _glViewport(x0,x1,x2,x3){GLctx["viewport"](x0,x1,x2,x3)}function GLFW_Window(id,width,height,title,monitor,share){this.id=id;this.x=0;this.y=0;this.fullscreen=false;this.storedX=0;this.storedY=0;this.width=width;this.height=height;this.storedWidth=width;this.storedHeight=height;this.title=title;this.monitor=monitor;this.share=share;this.attributes=GLFW.hints;this.inputModes={208897:212993,208898:0,208899:0};this.buttons=0;this.keys=new Array;this.domKeys=new Array;this.shouldClose=0;this.title=null;this.windowPosFunc=null;this.windowSizeFunc=null;this.windowCloseFunc=null;this.windowRefreshFunc=null;this.windowFocusFunc=null;this.windowIconifyFunc=null;this.framebufferSizeFunc=null;this.mouseButtonFunc=null;this.cursorPosFunc=null;this.cursorEnterFunc=null;this.scrollFunc=null;this.dropFunc=null;this.keyFunc=null;this.charFunc=null;this.userptr=null}var GLFW={WindowFromId:function(id){if(id<=0||!GLFW.windows)return null;return GLFW.windows[id-1]},joystickFunc:null,errorFunc:null,monitorFunc:null,active:null,windows:null,monitors:null,monitorString:null,versionString:null,initialTime:null,extensions:null,hints:null,defaultHints:{131073:0,131074:0,131075:1,131076:1,131077:1,135169:8,135170:8,135171:8,135172:8,135173:24,135174:8,135175:0,135176:0,135177:0,135178:0,135179:0,135180:0,135181:0,135182:0,135183:0,139265:196609,139266:1,139267:0,139268:0,139269:0,139270:0,139271:0,139272:0},DOMToGLFWKeyCode:function(keycode){switch(keycode){case 32:return 32;case 222:return 39;case 188:return 44;case 173:return 45;case 189:return 45;case 190:return 46;case 191:return 47;case 48:return 48;case 49:return 49;case 50:return 50;case 51:return 51;case 52:return 52;case 53:return 53;case 54:return 54;case 55:return 55;case 56:return 56;case 57:return 57;case 59:return 59;case 61:return 61;case 187:return 61;case 65:return 65;case 66:return 66;case 67:return 67;case 68:return 68;case 69:return 69;case 70:return 70;case 71:return 71;case 72:return 72;case 73:return 73;case 74:return 74;case 75:return 75;case 76:return 76;case 77:return 77;case 78:return 78;case 79:return 79;case 80:return 80;case 81:return 81;case 82:return 82;case 83:return 83;case 84:return 84;case 85:return 85;case 86:return 86;case 87:return 87;case 88:return 88;case 89:return 89;case 90:return 90;case 219:return 91;case 220:return 92;case 221:return 93;case 192:return 94;case 27:return 256;case 13:return 257;case 9:return 258;case 8:return 259;case 45:return 260;case 46:return 261;case 39:return 262;case 37:return 263;case 40:return 264;case 38:return 265;case 33:return 266;case 34:return 267;case 36:return 268;case 35:return 269;case 20:return 280;case 145:return 281;case 144:return 282;case 44:return 283;case 19:return 284;case 112:return 290;case 113:return 291;case 114:return 292;case 115:return 293;case 116:return 294;case 117:return 295;case 118:return 296;case 119:return 297;case 120:return 298;case 121:return 299;case 122:return 300;case 123:return 301;case 124:return 302;case 125:return 303;case 126:return 304;case 127:return 305;case 128:return 306;case 129:return 307;case 130:return 308;case 131:return 309;case 132:return 310;case 133:return 311;case 134:return 312;case 135:return 313;case 136:return 314;case 96:return 320;case 97:return 321;case 98:return 322;case 99:return 323;case 100:return 324;case 101:return 325;case 102:return 326;case 103:return 327;case 104:return 328;case 105:return 329;case 110:return 330;case 111:return 331;case 106:return 332;case 109:return 333;case 107:return 334;case 16:return 340;case 17:return 341;case 18:return 342;case 91:return 343;case 93:return 348;default:return-1}},getModBits:function(win){var mod=0;if(win.keys[340])mod|=1;if(win.keys[341])mod|=2;if(win.keys[342])mod|=4;if(win.keys[343])mod|=8;return mod},onKeyPress:function(event){if(!GLFW.active||!GLFW.active.charFunc)return;if(event.ctrlKey||event.metaKey)return;var charCode=event.charCode;if(charCode==0||charCode>=0&&charCode<=31)return;wasmTable.get(GLFW.active.charFunc)(GLFW.active.id,charCode)},onKeyChanged:function(keyCode,status){if(!GLFW.active)return;var key=GLFW.DOMToGLFWKeyCode(keyCode);if(key==-1)return;var repeat=status&&GLFW.active.keys[key];GLFW.active.keys[key]=status;GLFW.active.domKeys[keyCode]=status;if(!GLFW.active.keyFunc)return;if(repeat)status=2;wasmTable.get(GLFW.active.keyFunc)(GLFW.active.id,key,keyCode,status,GLFW.getModBits(GLFW.active))},onGamepadConnected:function(event){GLFW.refreshJoysticks()},onGamepadDisconnected:function(event){GLFW.refreshJoysticks()},onKeydown:function(event){GLFW.onKeyChanged(event.keyCode,1);if(event.keyCode===8||event.keyCode===9){event.preventDefault()}},onKeyup:function(event){GLFW.onKeyChanged(event.keyCode,0)},onBlur:function(event){if(!GLFW.active)return;for(var i=0;i<GLFW.active.domKeys.length;++i){if(GLFW.active.domKeys[i]){GLFW.onKeyChanged(i,0)}}},onMousemove:function(event){if(!GLFW.active)return;Browser.calculateMouseEvent(event);if(event.target!=Module["canvas"]||!GLFW.active.cursorPosFunc)return;wasmTable.get(GLFW.active.cursorPosFunc)(GLFW.active.id,Browser.mouseX,Browser.mouseY)},DOMToGLFWMouseButton:function(event){var eventButton=event["button"];if(eventButton>0){if(eventButton==1){eventButton=2}else{eventButton=1}}return eventButton},onMouseenter:function(event){if(!GLFW.active)return;if(event.target!=Module["canvas"]||!GLFW.active.cursorEnterFunc)return;wasmTable.get(GLFW.active.cursorEnterFunc)(GLFW.active.id,1)},onMouseleave:function(event){if(!GLFW.active)return;if(event.target!=Module["canvas"]||!GLFW.active.cursorEnterFunc)return;wasmTable.get(GLFW.active.cursorEnterFunc)(GLFW.active.id,0)},onMouseButtonChanged:function(event,status){if(!GLFW.active)return;Browser.calculateMouseEvent(event);if(event.target!=Module["canvas"])return;var eventButton=GLFW.DOMToGLFWMouseButton(event);if(status==1){GLFW.active.buttons|=1<<eventButton;try{event.target.setCapture()}catch(e){}}else{GLFW.active.buttons&=~(1<<eventButton)}if(!GLFW.active.mouseButtonFunc)return;wasmTable.get(GLFW.active.mouseButtonFunc)(GLFW.active.id,eventButton,status,GLFW.getModBits(GLFW.active))},onMouseButtonDown:function(event){if(!GLFW.active)return;GLFW.onMouseButtonChanged(event,1)},onMouseButtonUp:function(event){if(!GLFW.active)return;GLFW.onMouseButtonChanged(event,0)},onMouseWheel:function(event){var delta=-Browser.getMouseWheelDelta(event);delta=delta==0?0:delta>0?Math.max(delta,1):Math.min(delta,-1);GLFW.wheelPos+=delta;if(!GLFW.active||!GLFW.active.scrollFunc||event.target!=Module["canvas"])return;var sx=0;var sy=0;if(event.type=="mousewheel"){sx=event.wheelDeltaX;sy=event.wheelDeltaY}else{sx=event.deltaX;sy=event.deltaY}wasmTable.get(GLFW.active.scrollFunc)(GLFW.active.id,sx,sy);event.preventDefault()},onCanvasResize:function(width,height){if(!GLFW.active)return;var resizeNeeded=true;if(document["fullscreen"]||document["fullScreen"]||document["mozFullScreen"]||document["webkitIsFullScreen"]){GLFW.active.storedX=GLFW.active.x;GLFW.active.storedY=GLFW.active.y;GLFW.active.storedWidth=GLFW.active.width;GLFW.active.storedHeight=GLFW.active.height;GLFW.active.x=GLFW.active.y=0;GLFW.active.width=screen.width;GLFW.active.height=screen.height;GLFW.active.fullscreen=true}else if(GLFW.active.fullscreen==true){GLFW.active.x=GLFW.active.storedX;GLFW.active.y=GLFW.active.storedY;GLFW.active.width=GLFW.active.storedWidth;GLFW.active.height=GLFW.active.storedHeight;GLFW.active.fullscreen=false}else if(GLFW.active.width!=width||GLFW.active.height!=height){GLFW.active.width=width;GLFW.active.height=height}else{resizeNeeded=false}if(resizeNeeded){Browser.setCanvasSize(GLFW.active.width,GLFW.active.height,true);GLFW.onWindowSizeChanged();GLFW.onFramebufferSizeChanged()}},onWindowSizeChanged:function(){if(!GLFW.active)return;if(!GLFW.active.windowSizeFunc)return;wasmTable.get(GLFW.active.windowSizeFunc)(GLFW.active.id,GLFW.active.width,GLFW.active.height)},onFramebufferSizeChanged:function(){if(!GLFW.active)return;if(!GLFW.active.framebufferSizeFunc)return;wasmTable.get(GLFW.active.framebufferSizeFunc)(GLFW.active.id,GLFW.active.width,GLFW.active.height)},getTime:function(){return _emscripten_get_now()/1e3},setWindowTitle:function(winid,title){var win=GLFW.WindowFromId(winid);if(!win)return;win.title=UTF8ToString(title);if(GLFW.active.id==win.id){document.title=win.title}},setJoystickCallback:function(cbfun){GLFW.joystickFunc=cbfun;GLFW.refreshJoysticks()},joys:{},lastGamepadState:null,lastGamepadStateFrame:null,refreshJoysticks:function(){if(Browser.mainLoop.currentFrameNumber!==GLFW.lastGamepadStateFrame||!Browser.mainLoop.currentFrameNumber){GLFW.lastGamepadState=navigator.getGamepads?navigator.getGamepads():navigator.webkitGetGamepads?navigator.webkitGetGamepads:null;GLFW.lastGamepadStateFrame=Browser.mainLoop.currentFrameNumber;for(var joy=0;joy<GLFW.lastGamepadState.length;++joy){var gamepad=GLFW.lastGamepadState[joy];if(gamepad){if(!GLFW.joys[joy]){console.log("glfw joystick connected:",joy);GLFW.joys[joy]={id:allocate(intArrayFromString(gamepad.id),ALLOC_NORMAL),buttonsCount:gamepad.buttons.length,axesCount:gamepad.axes.length,buttons:allocate(new Array(gamepad.buttons.length),ALLOC_NORMAL),axes:allocate(new Array(gamepad.axes.length*4),ALLOC_NORMAL)};if(GLFW.joystickFunc){wasmTable.get(GLFW.joystickFunc)(joy,262145)}}var data=GLFW.joys[joy];for(var i=0;i<gamepad.buttons.length;++i){setValue(data.buttons+i,gamepad.buttons[i].pressed,"i8")}for(var i=0;i<gamepad.axes.length;++i){setValue(data.axes+i*4,gamepad.axes[i],"float")}}else{if(GLFW.joys[joy]){console.log("glfw joystick disconnected",joy);if(GLFW.joystickFunc){wasmTable.get(GLFW.joystickFunc)(joy,262146)}_free(GLFW.joys[joy].id);_free(GLFW.joys[joy].buttons);_free(GLFW.joys[joy].axes);delete GLFW.joys[joy]}}}}},setKeyCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.keyFunc;win.keyFunc=cbfun;return prevcbfun},setCharCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.charFunc;win.charFunc=cbfun;return prevcbfun},setMouseButtonCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.mouseButtonFunc;win.mouseButtonFunc=cbfun;return prevcbfun},setCursorPosCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.cursorPosFunc;win.cursorPosFunc=cbfun;return prevcbfun},setScrollCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.scrollFunc;win.scrollFunc=cbfun;return prevcbfun},setDropCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.dropFunc;win.dropFunc=cbfun;return prevcbfun},onDrop:function(event){if(!GLFW.active||!GLFW.active.dropFunc)return;if(!event.dataTransfer||!event.dataTransfer.files||event.dataTransfer.files.length==0)return;event.preventDefault();var filenames=allocate(new Array(event.dataTransfer.files.length*4),ALLOC_NORMAL);var filenamesArray=[];var count=event.dataTransfer.files.length;var written=0;var drop_dir=".glfw_dropped_files";FS.createPath("/",drop_dir);function save(file){var path="/"+drop_dir+"/"+file.name.replace(/\//g,"_");var reader=new FileReader;reader.onloadend=function(e){if(reader.readyState!=2){++written;console.log("failed to read dropped file: "+file.name+": "+reader.error);return}var data=e.target.result;FS.writeFile(path,new Uint8Array(data));if(++written===count){wasmTable.get(GLFW.active.dropFunc)(GLFW.active.id,count,filenames);for(var i=0;i<filenamesArray.length;++i){_free(filenamesArray[i])}_free(filenames)}};reader.readAsArrayBuffer(file);var filename=allocate(intArrayFromString(path),ALLOC_NORMAL);filenamesArray.push(filename);setValue(filenames+i*4,filename,"i8*")}for(var i=0;i<count;++i){save(event.dataTransfer.files[i])}return false},onDragover:function(event){if(!GLFW.active||!GLFW.active.dropFunc)return;event.preventDefault();return false},setWindowSizeCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowSizeFunc;win.windowSizeFunc=cbfun;return prevcbfun},setWindowCloseCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowCloseFunc;win.windowCloseFunc=cbfun;return prevcbfun},setWindowRefreshCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowRefreshFunc;win.windowRefreshFunc=cbfun;return prevcbfun},onClickRequestPointerLock:function(e){if(!Browser.pointerLock&&Module["canvas"].requestPointerLock){Module["canvas"].requestPointerLock();e.preventDefault()}},setInputMode:function(winid,mode,value){var win=GLFW.WindowFromId(winid);if(!win)return;switch(mode){case 208897:{switch(value){case 212993:{win.inputModes[mode]=value;Module["canvas"].removeEventListener("click",GLFW.onClickRequestPointerLock,true);Module["canvas"].exitPointerLock();break}case 212994:{console.log("glfwSetInputMode called with GLFW_CURSOR_HIDDEN value not implemented.");break}case 212995:{win.inputModes[mode]=value;Module["canvas"].addEventListener("click",GLFW.onClickRequestPointerLock,true);Module["canvas"].requestPointerLock();break}default:{console.log("glfwSetInputMode called with unknown value parameter value: "+value+".");break}}break}case 208898:{console.log("glfwSetInputMode called with GLFW_STICKY_KEYS mode not implemented.");break}case 208899:{console.log("glfwSetInputMode called with GLFW_STICKY_MOUSE_BUTTONS mode not implemented.");break}default:{console.log("glfwSetInputMode called with unknown mode parameter value: "+mode+".");break}}},getKey:function(winid,key){var win=GLFW.WindowFromId(winid);if(!win)return 0;return win.keys[key]},getMouseButton:function(winid,button){var win=GLFW.WindowFromId(winid);if(!win)return 0;return(win.buttons&1<<button)>0},getCursorPos:function(winid,x,y){setValue(x,Browser.mouseX,"double");setValue(y,Browser.mouseY,"double")},getMousePos:function(winid,x,y){setValue(x,Browser.mouseX,"i32");setValue(y,Browser.mouseY,"i32")},setCursorPos:function(winid,x,y){},getWindowPos:function(winid,x,y){var wx=0;var wy=0;var win=GLFW.WindowFromId(winid);if(win){wx=win.x;wy=win.y}if(x){setValue(x,wx,"i32")}if(y){setValue(y,wy,"i32")}},setWindowPos:function(winid,x,y){var win=GLFW.WindowFromId(winid);if(!win)return;win.x=x;win.y=y},getWindowSize:function(winid,width,height){var ww=0;var wh=0;var win=GLFW.WindowFromId(winid);if(win){ww=win.width;wh=win.height}if(width){setValue(width,ww,"i32")}if(height){setValue(height,wh,"i32")}},setWindowSize:function(winid,width,height){var win=GLFW.WindowFromId(winid);if(!win)return;if(GLFW.active.id==win.id){if(width==screen.width&&height==screen.height){Browser.requestFullscreen()}else{Browser.exitFullscreen();Browser.setCanvasSize(width,height);win.width=width;win.height=height}}if(!win.windowSizeFunc)return;wasmTable.get(win.windowSizeFunc)(win.id,width,height)},createWindow:function(width,height,title,monitor,share){var i,id;for(i=0;i<GLFW.windows.length&&GLFW.windows[i]!==null;i++){}if(i>0)throw"glfwCreateWindow only supports one window at time currently";id=i+1;if(width<=0||height<=0)return 0;if(monitor){Browser.requestFullscreen()}else{Browser.setCanvasSize(width,height)}for(i=0;i<GLFW.windows.length&&GLFW.windows[i]==null;i++){}var useWebGL=GLFW.hints[139265]>0;if(i==GLFW.windows.length){if(useWebGL){var contextAttributes={antialias:GLFW.hints[135181]>1,depth:GLFW.hints[135173]>0,stencil:GLFW.hints[135174]>0,alpha:GLFW.hints[135172]>0};Module.ctx=Browser.createContext(Module["canvas"],true,true,contextAttributes)}else{Browser.init()}}if(!Module.ctx&&useWebGL)return 0;var win=new GLFW_Window(id,width,height,title,monitor,share);if(id-1==GLFW.windows.length){GLFW.windows.push(win)}else{GLFW.windows[id-1]=win}GLFW.active=win;return win.id},destroyWindow:function(winid){var win=GLFW.WindowFromId(winid);if(!win)return;if(win.windowCloseFunc)wasmTable.get(win.windowCloseFunc)(win.id);GLFW.windows[win.id-1]=null;if(GLFW.active.id==win.id)GLFW.active=null;for(var i=0;i<GLFW.windows.length;i++)if(GLFW.windows[i]!==null)return;Module.ctx=Browser.destroyContext(Module["canvas"],true,true)},swapBuffers:function(winid){},GLFW2ParamToGLFW3Param:function(param){var table={196609:0,196610:0,196611:0,196612:0,196613:0,196614:0,131073:0,131074:0,131075:0,131076:0,131077:135169,131078:135170,131079:135171,131080:135172,131081:135173,131082:135174,131083:135183,131084:135175,131085:135176,131086:135177,131087:135178,131088:135179,131089:135180,131090:0,131091:135181,131092:139266,131093:139267,131094:139270,131095:139271,131096:139272};return table[param]}};function _glfwCreateWindow(width,height,title,monitor,share){return GLFW.createWindow(width,height,title,monitor,share)}function _glfwDefaultWindowHints(){GLFW.hints=GLFW.defaultHints}function _glfwDestroyWindow(winid){return GLFW.destroyWindow(winid)}function _glfwGetPrimaryMonitor(){return 1}function _glfwGetTime(){return GLFW.getTime()-GLFW.initialTime}function _glfwGetVideoModes(monitor,count){setValue(count,0,"i32");return 0}function _glfwInit(){if(GLFW.windows)return 1;GLFW.initialTime=GLFW.getTime();GLFW.hints=GLFW.defaultHints;GLFW.windows=new Array;GLFW.active=null;window.addEventListener("gamepadconnected",GLFW.onGamepadConnected,true);window.addEventListener("gamepaddisconnected",GLFW.onGamepadDisconnected,true);window.addEventListener("keydown",GLFW.onKeydown,true);window.addEventListener("keypress",GLFW.onKeyPress,true);window.addEventListener("keyup",GLFW.onKeyup,true);window.addEventListener("blur",GLFW.onBlur,true);Module["canvas"].addEventListener("touchmove",GLFW.onMousemove,true);Module["canvas"].addEventListener("touchstart",GLFW.onMouseButtonDown,true);Module["canvas"].addEventListener("touchcancel",GLFW.onMouseButtonUp,true);Module["canvas"].addEventListener("touchend",GLFW.onMouseButtonUp,true);Module["canvas"].addEventListener("mousemove",GLFW.onMousemove,true);Module["canvas"].addEventListener("mousedown",GLFW.onMouseButtonDown,true);Module["canvas"].addEventListener("mouseup",GLFW.onMouseButtonUp,true);Module["canvas"].addEventListener("wheel",GLFW.onMouseWheel,true);Module["canvas"].addEventListener("mousewheel",GLFW.onMouseWheel,true);Module["canvas"].addEventListener("mouseenter",GLFW.onMouseenter,true);Module["canvas"].addEventListener("mouseleave",GLFW.onMouseleave,true);Module["canvas"].addEventListener("drop",GLFW.onDrop,true);Module["canvas"].addEventListener("dragover",GLFW.onDragover,true);Browser.resizeListeners.push(function(width,height){GLFW.onCanvasResize(width,height)});return 1}function _glfwMakeContextCurrent(winid){}function _glfwSetCharCallback(winid,cbfun){return GLFW.setCharCallback(winid,cbfun)}function _glfwSetCursorEnterCallback(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.cursorEnterFunc;win.cursorEnterFunc=cbfun;return prevcbfun}function _glfwSetCursorPosCallback(winid,cbfun){return GLFW.setCursorPosCallback(winid,cbfun)}function _glfwSetDropCallback(winid,cbfun){return GLFW.setDropCallback(winid,cbfun)}function _glfwSetErrorCallback(cbfun){var prevcbfun=GLFW.errorFunc;GLFW.errorFunc=cbfun;return prevcbfun}function _glfwSetKeyCallback(winid,cbfun){return GLFW.setKeyCallback(winid,cbfun)}function _glfwSetMouseButtonCallback(winid,cbfun){return GLFW.setMouseButtonCallback(winid,cbfun)}function _glfwSetScrollCallback(winid,cbfun){return GLFW.setScrollCallback(winid,cbfun)}function _glfwSetWindowFocusCallback(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowFocusFunc;win.windowFocusFunc=cbfun;return prevcbfun}function _glfwSetWindowIconifyCallback(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowIconifyFunc;win.windowIconifyFunc=cbfun;return prevcbfun}function _glfwSetWindowShouldClose(winid,value){var win=GLFW.WindowFromId(winid);if(!win)return;win.shouldClose=value}function _glfwSetWindowSizeCallback(winid,cbfun){return GLFW.setWindowSizeCallback(winid,cbfun)}function _glfwSwapBuffers(winid){GLFW.swapBuffers(winid)}function _glfwSwapInterval(interval){interval=Math.abs(interval);if(interval==0)_emscripten_set_main_loop_timing(0,0);else _emscripten_set_main_loop_timing(1,interval)}function _glfwTerminate(){window.removeEventListener("gamepadconnected",GLFW.onGamepadConnected,true);window.removeEventListener("gamepaddisconnected",GLFW.onGamepadDisconnected,true);window.removeEventListener("keydown",GLFW.onKeydown,true);window.removeEventListener("keypress",GLFW.onKeyPress,true);window.removeEventListener("keyup",GLFW.onKeyup,true);window.removeEventListener("blur",GLFW.onBlur,true);Module["canvas"].removeEventListener("touchmove",GLFW.onMousemove,true);Module["canvas"].removeEventListener("touchstart",GLFW.onMouseButtonDown,true);Module["canvas"].removeEventListener("touchcancel",GLFW.onMouseButtonUp,true);Module["canvas"].removeEventListener("touchend",GLFW.onMouseButtonUp,true);Module["canvas"].removeEventListener("mousemove",GLFW.onMousemove,true);Module["canvas"].removeEventListener("mousedown",GLFW.onMouseButtonDown,true);Module["canvas"].removeEventListener("mouseup",GLFW.onMouseButtonUp,true);Module["canvas"].removeEventListener("wheel",GLFW.onMouseWheel,true);Module["canvas"].removeEventListener("mousewheel",GLFW.onMouseWheel,true);Module["canvas"].removeEventListener("mouseenter",GLFW.onMouseenter,true);Module["canvas"].removeEventListener("mouseleave",GLFW.onMouseleave,true);Module["canvas"].removeEventListener("drop",GLFW.onDrop,true);Module["canvas"].removeEventListener("dragover",GLFW.onDragover,true);Module["canvas"].width=Module["canvas"].height=1;GLFW.windows=null;GLFW.active=null}function _glfwWindowHint(target,hint){GLFW.hints[target]=hint}function _time(ptr){var ret=Date.now()/1e3|0;if(ptr){HEAP32[ptr>>2]=ret}return ret}var FSNode=function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev};var readMode=292|73;var writeMode=146;Object.defineProperties(FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(val){val?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===writeMode},set:function(val){val?this.mode|=writeMode:this.mode&=~writeMode}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}});FS.FSNode=FSNode;FS.staticInit();var GLctx;for(var i=0;i<32;++i)tempFixedLengthArray.push(new Array(i));var miniTempWebGLFloatBuffersStorage=new Float32Array(288);for(var i=0;i<288;++i){miniTempWebGLFloatBuffers[i]=miniTempWebGLFloatBuffersStorage.subarray(0,i+1)}var __miniTempWebGLIntBuffersStorage=new Int32Array(288);for(var i=0;i<288;++i){__miniTempWebGLIntBuffers[i]=__miniTempWebGLIntBuffersStorage.subarray(0,i+1)}Module["requestFullscreen"]=function Module_requestFullscreen(lockPointer,resizeCanvas){Browser.requestFullscreen(lockPointer,resizeCanvas)};Module["requestAnimationFrame"]=function Module_requestAnimationFrame(func){Browser.requestAnimationFrame(func)};Module["setCanvasSize"]=function Module_setCanvasSize(width,height,noUpdates){Browser.setCanvasSize(width,height,noUpdates)};Module["pauseMainLoop"]=function Module_pauseMainLoop(){Browser.mainLoop.pause()};Module["resumeMainLoop"]=function Module_resumeMainLoop(){Browser.mainLoop.resume()};Module["getUserMedia"]=function Module_getUserMedia(){Browser.getUserMedia()};Module["createContext"]=function Module_createContext(canvas,useWebGL,setInModule,webGLContextAttributes){return Browser.createContext(canvas,useWebGL,setInModule,webGLContextAttributes)};function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var asmLibraryArg={"n":___assert_fail,"F":___sys_fcntl64,"Sa":___sys_ioctl,"Ta":___sys_open,"za":_emscripten_exit_pointerlock,"Z":_emscripten_get_element_css_size,"U":_emscripten_get_gamepad_status,"V":_emscripten_get_num_gamepads,"Hd":_emscripten_glActiveTexture,"Gd":_emscripten_glAttachShader,"N":_emscripten_glBeginQueryEXT,"Fd":_emscripten_glBindAttribLocation,"Ed":_emscripten_glBindBuffer,"Dd":_emscripten_glBindFramebuffer,"Cd":_emscripten_glBindRenderbuffer,"Bd":_emscripten_glBindTexture,"Pd":_emscripten_glBindVertexArrayOES,"zd":_emscripten_glBlendColor,"yd":_emscripten_glBlendEquation,"xd":_emscripten_glBlendEquationSeparate,"wd":_emscripten_glBlendFunc,"vd":_emscripten_glBlendFuncSeparate,"ud":_emscripten_glBufferData,"td":_emscripten_glBufferSubData,"sd":_emscripten_glCheckFramebufferStatus,"rd":_emscripten_glClear,"qd":_emscripten_glClearColor,"od":_emscripten_glClearDepthf,"nd":_emscripten_glClearStencil,"md":_emscripten_glColorMask,"ld":_emscripten_glCompileShader,"kd":_emscripten_glCompressedTexImage2D,"jd":_emscripten_glCompressedTexSubImage2D,"id":_emscripten_glCopyTexImage2D,"hd":_emscripten_glCopyTexSubImage2D,"gd":_emscripten_glCreateProgram,"fd":_emscripten_glCreateShader,"ed":_emscripten_glCullFace,"dd":_emscripten_glDeleteBuffers,"cd":_emscripten_glDeleteFramebuffers,"bd":_emscripten_glDeleteProgram,"P":_emscripten_glDeleteQueriesEXT,"ad":_emscripten_glDeleteRenderbuffers,"$c":_emscripten_glDeleteShader,"_c":_emscripten_glDeleteTextures,"Od":_emscripten_glDeleteVertexArraysOES,"Zc":_emscripten_glDepthFunc,"Yc":_emscripten_glDepthMask,"Xc":_emscripten_glDepthRangef,"Wc":_emscripten_glDetachShader,"Vc":_emscripten_glDisable,"Uc":_emscripten_glDisableVertexAttribArray,"Tc":_emscripten_glDrawArrays,"Kd":_emscripten_glDrawArraysInstancedANGLE,"Ld":_emscripten_glDrawBuffersWEBGL,"Sc":_emscripten_glDrawElements,"Jd":_emscripten_glDrawElementsInstancedANGLE,"Rc":_emscripten_glEnable,"Qc":_emscripten_glEnableVertexAttribArray,"M":_emscripten_glEndQueryEXT,"Pc":_emscripten_glFinish,"Oc":_emscripten_glFlush,"Nc":_emscripten_glFramebufferRenderbuffer,"Mc":_emscripten_glFramebufferTexture2D,"Lc":_emscripten_glFrontFace,"Kc":_emscripten_glGenBuffers,"Ic":_emscripten_glGenFramebuffers,"Q":_emscripten_glGenQueriesEXT,"Hc":_emscripten_glGenRenderbuffers,"Gc":_emscripten_glGenTextures,"Nd":_emscripten_glGenVertexArraysOES,"Jc":_emscripten_glGenerateMipmap,"Fc":_emscripten_glGetActiveAttrib,"Ec":_emscripten_glGetActiveUniform,"Dc":_emscripten_glGetAttachedShaders,"Bc":_emscripten_glGetAttribLocation,"Ac":_emscripten_glGetBooleanv,"zc":_emscripten_glGetBufferParameteriv,"yc":_emscripten_glGetError,"xc":_emscripten_glGetFloatv,"wc":_emscripten_glGetFramebufferAttachmentParameteriv,"vc":_emscripten_glGetIntegerv,"tc":_emscripten_glGetProgramInfoLog,"uc":_emscripten_glGetProgramiv,"Rd":_emscripten_glGetQueryObjecti64vEXT,"Td":_emscripten_glGetQueryObjectivEXT,"Qd":_emscripten_glGetQueryObjectui64vEXT,"Sd":_emscripten_glGetQueryObjectuivEXT,"Ud":_emscripten_glGetQueryivEXT,"sc":_emscripten_glGetRenderbufferParameteriv,"qc":_emscripten_glGetShaderInfoLog,"pc":_emscripten_glGetShaderPrecisionFormat,"oc":_emscripten_glGetShaderSource,"rc":_emscripten_glGetShaderiv,"nc":_emscripten_glGetString,"mc":_emscripten_glGetTexParameterfv,"lc":_emscripten_glGetTexParameteriv,"ic":_emscripten_glGetUniformLocation,"kc":_emscripten_glGetUniformfv,"jc":_emscripten_glGetUniformiv,"fc":_emscripten_glGetVertexAttribPointerv,"hc":_emscripten_glGetVertexAttribfv,"gc":_emscripten_glGetVertexAttribiv,"ec":_emscripten_glHint,"dc":_emscripten_glIsBuffer,"cc":_emscripten_glIsEnabled,"bc":_emscripten_glIsFramebuffer,"ac":_emscripten_glIsProgram,"O":_emscripten_glIsQueryEXT,"$b":_emscripten_glIsRenderbuffer,"_b":_emscripten_glIsShader,"Zb":_emscripten_glIsTexture,"Md":_emscripten_glIsVertexArrayOES,"Yb":_emscripten_glLineWidth,"Xb":_emscripten_glLinkProgram,"Wb":_emscripten_glPixelStorei,"Vb":_emscripten_glPolygonOffset,"L":_emscripten_glQueryCounterEXT,"Ub":_emscripten_glReadPixels,"Tb":_emscripten_glReleaseShaderCompiler,"Sb":_emscripten_glRenderbufferStorage,"Rb":_emscripten_glSampleCoverage,"Qb":_emscripten_glScissor,"Ob":_emscripten_glShaderBinary,"Nb":_emscripten_glShaderSource,"Mb":_emscripten_glStencilFunc,"Lb":_emscripten_glStencilFuncSeparate,"Kb":_emscripten_glStencilMask,"Jb":_emscripten_glStencilMaskSeparate,"Ib":_emscripten_glStencilOp,"Hb":_emscripten_glStencilOpSeparate,"Gb":_emscripten_glTexImage2D,"Fb":_emscripten_glTexParameterf,"Db":_emscripten_glTexParameterfv,"Cb":_emscripten_glTexParameteri,"Bb":_emscripten_glTexParameteriv,"Ab":_emscripten_glTexSubImage2D,"zb":_emscripten_glUniform1f,"yb":_emscripten_glUniform1fv,"xb":_emscripten_glUniform1i,"wb":_emscripten_glUniform1iv,"vb":_emscripten_glUniform2f,"ub":_emscripten_glUniform2fv,"sb":_emscripten_glUniform2i,"rb":_emscripten_glUniform2iv,"qb":_emscripten_glUniform3f,"pb":_emscripten_glUniform3fv,"ob":_emscripten_glUniform3i,"nb":_emscripten_glUniform3iv,"mb":_emscripten_glUniform4f,"lb":_emscripten_glUniform4fv,"kb":_emscripten_glUniform4i,"jb":_emscripten_glUniform4iv,"hb":_emscripten_glUniformMatrix2fv,"gb":_emscripten_glUniformMatrix3fv,"fb":_emscripten_glUniformMatrix4fv,"eb":_emscripten_glUseProgram,"db":_emscripten_glValidateProgram,"cb":_emscripten_glVertexAttrib1f,"bb":_emscripten_glVertexAttrib1fv,"ab":_emscripten_glVertexAttrib2f,"$a":_emscripten_glVertexAttrib2fv,"_a":_emscripten_glVertexAttrib3f,"Ya":_emscripten_glVertexAttrib3fv,"Xa":_emscripten_glVertexAttrib4f,"Wa":_emscripten_glVertexAttrib4fv,"Id":_emscripten_glVertexAttribDivisorANGLE,"Va":_emscripten_glVertexAttribPointer,"Ua":_emscripten_glViewport,"Na":_emscripten_memcpy_big,"Oa":_emscripten_resize_heap,"t":_emscripten_run_script,"W":_emscripten_sample_gamepad_data,"wa":_emscripten_set_click_callback_on_thread,"ya":_emscripten_set_fullscreenchange_callback_on_thread,"ra":_emscripten_set_gamepadconnected_callback_on_thread,"qa":_emscripten_set_gamepaddisconnected_callback_on_thread,"xa":_emscripten_set_keydown_callback_on_thread,"Wd":_emscripten_set_main_loop,"sa":_emscripten_set_touchcancel_callback_on_thread,"ua":_emscripten_set_touchend_callback_on_thread,"ta":_emscripten_set_touchmove_callback_on_thread,"va":_emscripten_set_touchstart_callback_on_thread,"Pa":_emscripten_thread_sleep,"R":_exit,"G":_fd_close,"Ra":_fd_read,"Ma":_fd_seek,"E":_fd_write,"K":_glActiveTexture,"x":_glAttachShader,"f":_glBindAttribLocation,"a":_glBindBuffer,"g":_glBindTexture,"Eb":_glBlendFunc,"k":_glBufferData,"r":_glBufferSubData,"H":_glClear,"I":_glClearColor,"Za":_glClearDepthf,"Fa":_glCompileShader,"Ja":_glCompressedTexImage2D,"Da":_glCreateProgram,"Ha":_glCreateShader,"tb":_glCullFace,"i":_glDeleteBuffers,"A":_glDeleteProgram,"B":_glDeleteShader,"D":_glDeleteTextures,"Pb":_glDepthFunc,"C":_glDetachShader,"J":_glDisable,"j":_glDisableVertexAttribArray,"Ad":_glDrawArrays,"pd":_glDrawElements,"s":_glEnable,"d":_glEnableVertexAttribArray,"ib":_glFrontFace,"l":_glGenBuffers,"La":_glGenTextures,"q":_glGetAttribLocation,"Cc":_glGetFloatv,"Aa":_glGetProgramInfoLog,"z":_glGetProgramiv,"Ea":_glGetShaderInfoLog,"y":_glGetShaderiv,"h":_glGetString,"p":_glGetUniformLocation,"Ba":_glLinkProgram,"Qa":_glPixelStorei,"Ia":_glReadPixels,"Ga":_glShaderSource,"Ka":_glTexImage2D,"m":_glTexParameteri,"T":_glUniform1i,"aa":_glUniform4f,"Ca":_glUniformMatrix4fv,"o":_glUseProgram,"e":_glVertexAttribPointer,"Vd":_glViewport,"v":_glfwCreateWindow,"na":_glfwDefaultWindowHints,"Y":_glfwDestroyWindow,"w":_glfwGetPrimaryMonitor,"c":_glfwGetTime,"ma":_glfwGetVideoModes,"oa":_glfwInit,"ba":_glfwMakeContextCurrent,"ga":_glfwSetCharCallback,"ca":_glfwSetCursorEnterCallback,"ea":_glfwSetCursorPosCallback,"ia":_glfwSetDropCallback,"pa":_glfwSetErrorCallback,"ha":_glfwSetKeyCallback,"fa":_glfwSetMouseButtonCallback,"da":_glfwSetScrollCallback,"ja":_glfwSetWindowFocusCallback,"ka":_glfwSetWindowIconifyCallback,"S":_glfwSetWindowShouldClose,"la":_glfwSetWindowSizeCallback,"X":_glfwSwapBuffers,"$":_glfwSwapInterval,"u":_glfwTerminate,"b":_glfwWindowHint,"_":_time};var asm=createWasm();var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["Yd"]).apply(null,arguments)};var _main=Module["_main"]=function(){return(_main=Module["_main"]=Module["asm"]["Zd"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["$d"]).apply(null,arguments)};var _free=Module["_free"]=function(){return(_free=Module["_free"]=Module["asm"]["ae"]).apply(null,arguments)};var ___errno_location=Module["___errno_location"]=function(){return(___errno_location=Module["___errno_location"]=Module["asm"]["be"]).apply(null,arguments)};var stackAlloc=Module["stackAlloc"]=function(){return(stackAlloc=Module["stackAlloc"]=Module["asm"]["ce"]).apply(null,arguments)};var calledRun;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}var calledMain=false;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args){var entryFunction=Module["_main"];var argc=0;var argv=0;try{var ret=entryFunction(argc,argv);exit(ret,true)}catch(e){if(e instanceof ExitStatus){return}else if(e=="unwind"){noExitRuntime=true;return}else{var toLog=e;if(e&&typeof e==="object"&&e.stack){toLog=[e,e.stack]}err("exception thrown: "+toLog);quit_(1,e)}}finally{calledMain=true}}function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(shouldRunNow)callMain(args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}Module["run"]=run;function exit(status,implicit){if(implicit&&noExitRuntime&&status===0){return}if(noExitRuntime){}else{EXITSTATUS=status;exitRuntime();if(Module["onExit"])Module["onExit"](status);ABORT=true}quit_(status,new ExitStatus(status))}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}var shouldRunNow=true;if(Module["noInitialRun"])shouldRunNow=false;run();
diff --git a/examples/web/models/models_box_collisions.wasm b/examples/web/models/models_box_collisions.wasm
deleted file mode 100644
index 56bdebe..0000000
--- a/examples/web/models/models_box_collisions.wasm
+++ /dev/null
Binary files differ
diff --git a/examples/web/models/models_cubicmap.c b/examples/web/models/models_cubicmap.c
deleted file mode 100644
index 1ef04e1..0000000
--- a/examples/web/models/models_cubicmap.c
+++ /dev/null
@@ -1,117 +0,0 @@
-/*******************************************************************************************
-*
-* raylib [models] example - Cubicmap loading and drawing (adapted for HTML5 platform)
-*
-* This example has been created using raylib 1.3 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
-*
-* Copyright (c) 2017 Ramon Santamaria (@raysan5)
-*
-********************************************************************************************/
-
-#include "raylib.h"
-
-#if defined(PLATFORM_WEB)
- #include <emscripten/emscripten.h>
-#endif
-
-//----------------------------------------------------------------------------------
-// Global Variables Definition
-//----------------------------------------------------------------------------------
-const int screenWidth = 800;
-const int screenHeight = 450;
-
-// Define the camera to look into our 3d world
-Camera camera = {{ 16.0f, 14.0f, 16.0f }, { 0.0f, 0.0f, 0.0f }, { 0.0f, 1.0f, 0.0f }, 45.0f };
-
-Texture2D cubicmap = { 0 };
-Model model = { 0 };
-
-Vector3 mapPosition = { -16.0f, 0.0f, -8.0f }; // Set model position
-
-//----------------------------------------------------------------------------------
-// Module Functions Declaration
-//----------------------------------------------------------------------------------
-void UpdateDrawFrame(void); // Update and Draw one frame
-
-//----------------------------------------------------------------------------------
-// Program Main Entry Point
-//----------------------------------------------------------------------------------
-int main(void)
-{
- // Initialization
- //--------------------------------------------------------------------------------------
- InitWindow(screenWidth, screenHeight, "raylib [models] example - cubesmap loading and drawing");
-
- Image image = LoadImage("resources/cubicmap.png"); // Load cubicmap image (RAM)
- cubicmap = LoadTextureFromImage(image); // Convert image to texture to display (VRAM)
-
- Mesh mesh = GenMeshCubicmap(image, (Vector3){ 1.0f, 1.0f, 1.0f });
- model = LoadModelFromMesh(mesh);
-
- // NOTE: By default each cube is mapped to one part of texture atlas
- Texture2D texture = LoadTexture("resources/cubicmap_atlas.png"); // Load map texture
- model.materials[0].maps[MATERIAL_MAP_DIFFUSE].texture = texture; // Set map diffuse texture
-
- UnloadImage(image); // Unload cubesmap image from RAM, already uploaded to VRAM
-
- SetCameraMode(camera, CAMERA_ORBITAL); // Set an orbital camera mode
-
-#if defined(PLATFORM_WEB)
- emscripten_set_main_loop(UpdateDrawFrame, 60, 1);
-#else
- SetTargetFPS(60); // Set our game to run at 60 frames-per-second
- //--------------------------------------------------------------------------------------
-
- // Main game loop
- while (!WindowShouldClose()) // Detect window close button or ESC key
- {
- UpdateDrawFrame();
- }
-#endif
-
- // De-Initialization
- //--------------------------------------------------------------------------------------
- UnloadTexture(cubicmap); // Unload cubicmap texture
- UnloadTexture(texture); // Unload map texture
- UnloadModel(model); // Unload map model
-
- CloseWindow(); // Close window and OpenGL context
- //--------------------------------------------------------------------------------------
-
- return 0;
-}
-
-//----------------------------------------------------------------------------------
-// Module Functions Definition
-//----------------------------------------------------------------------------------
-void UpdateDrawFrame(void)
-{
- // Update
- //----------------------------------------------------------------------------------
- UpdateCamera(&camera); // Update internal camera and our camera
- //----------------------------------------------------------------------------------
-
- // Draw
- //----------------------------------------------------------------------------------
- BeginDrawing();
-
- ClearBackground(RAYWHITE);
-
- BeginMode3D(camera);
-
- DrawModel(model, mapPosition, 1.0f, WHITE);
-
- EndMode3D();
-
- DrawTextureEx(cubicmap, (Vector2){ screenWidth - cubicmap.width*4 - 20, 20 }, 0.0f, 4.0f, WHITE);
- DrawRectangleLines(screenWidth - cubicmap.width*4 - 20, 20, cubicmap.width*4, cubicmap.height*4, GREEN);
-
- DrawText("cubicmap image used to", 658, 90, 10, GRAY);
- DrawText("generate map 3d model", 658, 104, 10, GRAY);
-
- DrawFPS(10, 10);
-
- EndDrawing();
- //----------------------------------------------------------------------------------
-}
diff --git a/examples/web/models/models_cubicmap.data b/examples/web/models/models_cubicmap.data
deleted file mode 100644
index 97220c0..0000000
--- a/examples/web/models/models_cubicmap.data
+++ /dev/null
Binary files differ
diff --git a/examples/web/models/models_cubicmap.html b/examples/web/models/models_cubicmap.html
deleted file mode 100644
index c6b90be..0000000
--- a/examples/web/models/models_cubicmap.html
+++ /dev/null
@@ -1 +0,0 @@
-<!doctypehtml><html lang=en-us><head><meta charset=utf-8><meta content="text/html; charset=utf-8"http-equiv=Content-Type><title>raylib HTML5 GAME</title><meta content="raylib HTML5 GAME"name=title><meta content="New HTML5 videogame, developed using raylib videogames library"name=description><meta content="raylib, games, html5, programming, C, C++, library, learn, videogames"name=keywords><meta content="width=device-width"name=viewport><meta content="raylib HTML5 GAME"property=og:title><meta content=image/png property=og:image:type><meta content=https://www.raylib.com/common/img/raylib_logo.png property=og:image><meta content=raylib.com property=og:site_name><meta content=https://www.raylib.com/games.html property=og:url><meta content="New HTML5 videogame, developed using raylib videogames library"property=og:description><meta content=summary name=twitter:card><meta content=@raysan5 name=twitter:site><meta content="raylib HTML5 GAME"name=twitter:title><meta content=https://www.raylib.com/common/raylib_logo.png name=twitter:image><meta content=https://www.raylib.com/games.html name=twitter:url><meta content="New HTML5 videogame, developed using raylib videogames library"name=twitter:description><link href=https://www.raylib.com/favicon.ico rel="shortcut icon"><style>body{font-family:arial;margin:0;padding:none}#header{width:100%;height:80px;background-color:#888}#logo{width:64px;height:64px;float:left;position:relative;margin:10px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAAlC+aJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjExR/NCNwAAA7JJREFUaEPtk0FyWzEMQ+37X7fZhxX4YY3AD1OKF1nkzTRlSBCCLeVBnvl/AUdaELOunPno1kts1kixdtEZKVs+xIxebBkZsVknn/L5nFGDLR8T4zVC9fX19S/+tTFijrYK4jUjbPUtqBHpnEE6PkZD7jQZV8n5Recw1XQKciZuPaEtR6UjNs5ENVGMsBVqpPtER0ZMOhpyp8m4YL4OjD9yxsyZxnQycfMJETNSzsRE1+dihK3YMiJmpHTW3xpmXPC6BXlCHfqnBlsjY5hxf/6EVEOM2BTEi0fYCX4ONSI6Kq3Blg/prIOMq2CsRur4KQ0x64SdjOufEDEdHZGOhmz5RDHCVqhRuQ86YsVskbc+GXchLiHnFyYH+UigQDVGnImbT8hwFkgLg2qiM8JO6Ylx1FNLa3DmYwqCTsZd4BPqGJG7MwKzpeiWKTKxXkLMVE3MSOmsdwxLH6Rd/wCCLSNDx6djeKfJuArGeoYamRHpaEjnCBYZVy8hZqo2GI36qPjsiOiMsBXGcev4Mx9TLGTchbgEjN/uz6jGrBvDjg+LTNx8Qp2CbG2xMKgmOiPslJ4Yxx+eSnSkzlosZNwFPiHl7FRTkLNRJm4+IeVM0ymIH42wE/wcKalQI4MRl4EW3p6VcRWMua8F6WjIlqZDxvVPiHQ6CjVbYkV9ohhhp/Rk1wiYgpyJ78i4CsZbjkb8Qx+ihvzu3RPaKogZkY6GlEeMsKdPSOFIC8VoOusg44L5c+T8ouOoGhWbdWJ8tMi4egkxo4hoh2yNTGf3iIyr5Lyic4bRENXo+lvDjAt4C1Hk/OKtUaAj0+n4dMSZ2D+hrYJsaYh2SClG2jV9kJKKzhlGQ1SsW299Mq6C8dYZHTExo8fzieI5ivipYnYy7nwJqGKmOYyRwfiUBXITfh5qSHRGWEkfqJqURgvsdHyWYv7Ko8DnYYegk3EB00cxprdrJRzFd7YQzawu8L1GMTYS/KpPaAFTkIn1EmJmspJSs5xBzSyGhlkBmlxfNFiP5mw4wlbMh4F5Ddxp5jNINBdCEz9zPOC1zD7Q0HBdmXndwv0TMtydEdzlWJT4VZ8Qt9Qn4/onxMIwa5ZYGJU5yufBiCjwE50AGjLCVuS8Yt4H7OgZLKK5EKOsLviEWJSL/+0uMi7gLUSBseYwqEbXvSHCec1CJvZPyHCmYQffaBBfOTCGHM2aEbZi1+gO1XTWVXMnzrhAn5DSOZVsiQlHnSITKzGj6DeTcZWc/3oy7h9//PF4PL4BlvsWrb6RE+oAAAAASUVORK5CYII=)}.emscripten{padding-right:0;margin-left:auto;margin-right:auto;display:block}div.emscripten{text-align:center}div.emscripten_border{border:1px solid #000}canvas.emscripten{border:0 none;background:#000;width:100%}.spinner{height:30px;width:30px;margin:0;margin-top:20px;margin-left:20px;display:inline-block;vertical-align:top;-webkit-animation:rotation .8s linear infinite;-moz-animation:rotation .8s linear infinite;-o-animation:rotation .8s linear infinite;animation:rotation .8s linear infinite;border-left:5px solid #000;border-right:5px solid #000;border-bottom:5px solid #000;border-top:5px solid red;border-radius:100%;background-color:#f5f5f5}@-webkit-keyframes rotation{from{-webkit-transform:rotate(0)}to{-webkit-transform:rotate(360deg)}}@-moz-keyframes rotation{from{-moz-transform:rotate(0)}to{-moz-transform:rotate(360deg)}}@-o-keyframes rotation{from{-o-transform:rotate(0)}to{-o-transform:rotate(360deg)}}@keyframes rotation{from{transform:rotate(0)}to{transform:rotate(360deg)}}#status{display:inline-block;vertical-align:top;margin-top:30px;margin-left:20px;font-weight:700;color:#282828}#progress{height:0;width:0}#controls{display:inline-block;float:right;vertical-align:top;margin-top:15px;margin-right:20px}#output{width:100%;height:140px;margin:0 auto;margin-top:10px;display:block;background-color:#000;color:#25ae26;font-family:'Lucida Console',Monaco,monospace;outline:0}input[type=button]{background-color:#d3d3d3;border:4px solid #a9a9a9;color:#000;text-decoration:none;cursor:pointer;width:140px;height:50px}input[type=button]:hover{background-color:#f5f5f5ff;border-color:#000}</style></head><body><div id=header><a href=https://www.raylib.com id=logo></a><div class=spinner id=spinner></div><div class=emscripten id=status>Downloading...</div><span id=controls><span><input onclick=Module.requestFullscreen(!1,!1) type=button value="🖵 FULLSCREEN"></span><span><input onclick=toggleAudio() type=button value="🔇 SUSPEND"id=btn-audio></span></span><div class=emscripten><progress hidden id=progress max=100 value=0></progress></div></div><div class=emscripten_border><canvas class=emscripten id=canvas oncontextmenu=event.preventDefault() tabindex=-1></canvas></div><textarea id=output rows=8></textarea><script src=https://cdn.jsdelivr.net/gh/eligrey/FileSaver.js/dist/FileSaver.min.js></script><script>function saveFileFromMEMFSToDisk(e,a){var t,i=/^((?!chrome|android).)*safari/i.test(navigator.userAgent),o=FS.readFile(e);t=i?new Blob([o.buffer],{type:"application/octet-stream"}):new Blob([o.buffer],{type:"application/octet-binary"}),saveAs(t,a)}</script><script>var statusElement=document.querySelector("#status"),progressElement=document.querySelector("#progress"),spinnerElement=document.querySelector("#spinner"),Module={preRun:[],postRun:[],print:function(){var e=document.querySelector("#output");return e&&(e.value=""),function(t){arguments.length>1&&(t=Array.prototype.slice.call(arguments).join(" ")),console.log(t),e&&(e.value+=t+"\n",e.scrollTop=e.scrollHeight)}}(),printErr:function(e){arguments.length>1&&(e=Array.prototype.slice.call(arguments).join(" ")),console.error(e)},canvas:function(){var e=document.querySelector("#canvas");return e.addEventListener("webglcontextlost",(function(e){alert("WebGL context lost. You will need to reload the page."),e.preventDefault()}),!1),e}(),setStatus:function(e){if(Module.setStatus.last||(Module.setStatus.last={time:Date.now(),text:""}),e!==Module.setStatus.last.text){var t=e.match(/([^(]+)\((\d+(\.\d+)?)\/(\d+)\)/),n=Date.now();t&&n-Module.setStatus.last.time<30||(Module.setStatus.last.time=n,Module.setStatus.last.text=e,t?(e=t[1],progressElement.value=100*parseInt(t[2]),progressElement.max=100*parseInt(t[4]),progressElement.hidden=!0,spinnerElement.hidden=!1):(progressElement.value=null,progressElement.max=null,progressElement.hidden=!0,e||(spinnerElement.style.display="none")),statusElement.innerHTML=e)}},totalDependencies:0,monitorRunDependencies:function(e){this.totalDependencies=Math.max(this.totalDependencies,e),Module.setStatus(e?"Preparing... ("+(this.totalDependencies-e)+"/"+this.totalDependencies+")":"All downloads complete.")}};Module.setStatus("Downloading..."),window.onerror=function(){Module.setStatus("Exception thrown, see JavaScript console"),spinnerElement.style.display="none",Module.setStatus=function(e){e&&Module.printErr("[post-exception status] "+e)}}</script><script>var audioBtn=document.querySelector("#btn-audio");const audioContexList=[];function toggleAudio(){var t=!1;audioContexList.forEach(e=>{"suspended"==e.state?(e.resume(),t=!0):"running"==e.state&&e.suspend()}),audioBtn.value=t?"🔇 SUSPEND":"🔈 RESUME"}self.AudioContext=new Proxy(self.AudioContext,{construct(t,e){const n=new t(...e);return audioContexList.push(n),"suspended"==n.state&&(audioBtn.value="🔈 RESUME"),n}})</script><script src=models_cubicmap.js async></script></body></html> \ No newline at end of file
diff --git a/examples/web/models/models_cubicmap.js b/examples/web/models/models_cubicmap.js
deleted file mode 100644
index a2055e3..0000000
--- a/examples/web/models/models_cubicmap.js
+++ /dev/null
@@ -1 +0,0 @@
-var Module=typeof Module!=="undefined"?Module:{};if(!Module.expectedDataFileDownloads){Module.expectedDataFileDownloads=0}Module.expectedDataFileDownloads++;(function(){var loadPackage=function(metadata){var PACKAGE_PATH;if(typeof window==="object"){PACKAGE_PATH=window["encodeURIComponent"](window.location.pathname.toString().substring(0,window.location.pathname.toString().lastIndexOf("/"))+"/")}else if(typeof location!=="undefined"){PACKAGE_PATH=encodeURIComponent(location.pathname.toString().substring(0,location.pathname.toString().lastIndexOf("/"))+"/")}else{throw"using preloaded data can only be done on a web page or in a web worker"}var PACKAGE_NAME="models/models_cubicmap.data";var REMOTE_PACKAGE_BASE="models_cubicmap.data";if(typeof Module["locateFilePackage"]==="function"&&!Module["locateFile"]){Module["locateFile"]=Module["locateFilePackage"];err("warning: you defined Module.locateFilePackage, that has been renamed to Module.locateFile (using your locateFilePackage for now)")}var REMOTE_PACKAGE_NAME=Module["locateFile"]?Module["locateFile"](REMOTE_PACKAGE_BASE,""):REMOTE_PACKAGE_BASE;var REMOTE_PACKAGE_SIZE=metadata["remote_package_size"];var PACKAGE_UUID=metadata["package_uuid"];function fetchRemotePackage(packageName,packageSize,callback,errback){var xhr=new XMLHttpRequest;xhr.open("GET",packageName,true);xhr.responseType="arraybuffer";xhr.onprogress=function(event){var url=packageName;var size=packageSize;if(event.total)size=event.total;if(event.loaded){if(!xhr.addedTotal){xhr.addedTotal=true;if(!Module.dataFileDownloads)Module.dataFileDownloads={};Module.dataFileDownloads[url]={loaded:event.loaded,total:size}}else{Module.dataFileDownloads[url].loaded=event.loaded}var total=0;var loaded=0;var num=0;for(var download in Module.dataFileDownloads){var data=Module.dataFileDownloads[download];total+=data.total;loaded+=data.loaded;num++}total=Math.ceil(total*Module.expectedDataFileDownloads/num);if(Module["setStatus"])Module["setStatus"]("Downloading data... ("+loaded+"/"+total+")")}else if(!Module.dataFileDownloads){if(Module["setStatus"])Module["setStatus"]("Downloading data...")}};xhr.onerror=function(event){throw new Error("NetworkError for: "+packageName)};xhr.onload=function(event){if(xhr.status==200||xhr.status==304||xhr.status==206||xhr.status==0&&xhr.response){var packageData=xhr.response;callback(packageData)}else{throw new Error(xhr.statusText+" : "+xhr.responseURL)}};xhr.send(null)}function handleError(error){console.error("package error:",error)}var fetchedCallback=null;var fetched=Module["getPreloadedPackage"]?Module["getPreloadedPackage"](REMOTE_PACKAGE_NAME,REMOTE_PACKAGE_SIZE):null;if(!fetched)fetchRemotePackage(REMOTE_PACKAGE_NAME,REMOTE_PACKAGE_SIZE,function(data){if(fetchedCallback){fetchedCallback(data);fetchedCallback=null}else{fetched=data}},handleError);function runWithFS(){function assert(check,msg){if(!check)throw msg+(new Error).stack}Module["FS_createPath"]("/","resources",true,true);function DataRequest(start,end,audio){this.start=start;this.end=end;this.audio=audio}DataRequest.prototype={requests:{},open:function(mode,name){this.name=name;this.requests[name]=this;Module["addRunDependency"]("fp "+this.name)},send:function(){},onload:function(){var byteArray=this.byteArray.subarray(this.start,this.end);this.finish(byteArray)},finish:function(byteArray){var that=this;Module["FS_createDataFile"](this.name,null,byteArray,true,true,true);Module["removeRunDependency"]("fp "+that.name);this.requests[this.name]=null}};var files=metadata["files"];for(var i=0;i<files.length;++i){new DataRequest(files[i]["start"],files[i]["end"],files[i]["audio"]).open("GET",files[i]["filename"])}function processPackageData(arrayBuffer){assert(arrayBuffer,"Loading data file failed.");assert(arrayBuffer instanceof ArrayBuffer,"bad input to processPackageData");var byteArray=new Uint8Array(arrayBuffer);DataRequest.prototype.byteArray=byteArray;var files=metadata["files"];for(var i=0;i<files.length;++i){DataRequest.prototype.requests[files[i].filename].onload()}Module["removeRunDependency"]("datafile_models/models_cubicmap.data")}Module["addRunDependency"]("datafile_models/models_cubicmap.data");if(!Module.preloadResults)Module.preloadResults={};Module.preloadResults[PACKAGE_NAME]={fromCache:false};if(fetched){processPackageData(fetched);fetched=null}else{fetchedCallback=processPackageData}}if(Module["calledRun"]){runWithFS()}else{if(!Module["preRun"])Module["preRun"]=[];Module["preRun"].push(runWithFS)}};loadPackage({"files":[{"filename":"/resources/cubicmap.png","start":0,"end":164,"audio":0},{"filename":"/resources/cubicmap_atlas.png","start":164,"end":37324,"audio":0}],"remote_package_size":37324,"package_uuid":"7949804b-1070-4265-8a07-fc479be83357"})})();var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram="./this.program";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window==="object";ENVIRONMENT_IS_WORKER=typeof importScripts==="function";ENVIRONMENT_IS_NODE=typeof process==="object"&&typeof process.versions==="object"&&typeof process.versions.node==="string";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require("path").dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require("fs");if(!nodePath)nodePath=require("path");filename=nodePath["normalize"](filename);return nodeFS["readFileSync"](filename,binary?null:"utf8")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);if(typeof module!=="undefined"){module["exports"]=Module}process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",abort);quit_=function(status){process["exit"](status)};Module["inspect"]=function(){return"[Emscripten Module object]"}}else if(ENVIRONMENT_IS_SHELL){if(typeof read!="undefined"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer==="function"){return new Uint8Array(readbuffer(f))}data=read(f,"binary");assert(typeof data==="object");return data};if(typeof scriptArgs!="undefined"){arguments_=scriptArgs}else if(typeof arguments!="undefined"){arguments_=arguments}if(typeof quit==="function"){quit_=function(status){quit(status)}}if(typeof print!=="undefined"){if(typeof console==="undefined")console={};console.log=print;console.warn=console.error=typeof printErr!=="undefined"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!=="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf("/")+1)}else{scriptDirectory=""}{read_=function(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=function(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var STACK_ALIGN=16;function alignMemory(size,factor){if(!factor)factor=STACK_ALIGN;return Math.ceil(size/factor)*factor}function warnOnce(text){if(!warnOnce.shown)warnOnce.shown={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;err(text)}}var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime=Module["noExitRuntime"]||true;if(typeof WebAssembly!=="object"){abort("no native wasm support detected")}function setValue(ptr,value,type,noSafe){type=type||"i8";if(type.charAt(type.length-1)==="*")type="i32";switch(type){case"i1":HEAP8[ptr>>0]=value;break;case"i8":HEAP8[ptr>>0]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":tempI64=[value>>>0,(tempDouble=value,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;default:abort("invalid type for setValue: "+type)}}var wasmMemory;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}var ALLOC_NORMAL=0;var ALLOC_STACK=1;function allocate(slab,allocator){var ret;if(allocator==ALLOC_STACK){ret=stackAlloc(slab.length)}else{ret=_malloc(slab.length)}if(slab.subarray||slab.slice){HEAPU8.set(slab,ret)}else{HEAPU8.set(new Uint8Array(slab),ret)}return ret}var UTF8Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heap,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heap[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str="";while(idx<endPtr){var u0=heap[idx++];if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heap[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heap[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u0=(u0&7)<<18|u1<<12|u2<<6|heap[idx++]&63}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||16777216;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;__ATINIT__.push({func:function(){___wasm_call_ctors()}});function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){FS.ignorePermissions=false;callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}what+="";err(what);ABORT=true;EXITSTATUS=1;what="abort("+what+"). Build with -s ASSERTIONS=1 for more info.";var e=new WebAssembly.RuntimeError(what);throw e}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix="file://";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile="models_cubicmap.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}else{throw"both async and sync fetching of the wasm failed"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch==="function"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={"a":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;wasmMemory=Module["asm"]["_d"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module["asm"]["be"];removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiatedSource(output){receiveInstance(output["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming==="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch==="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync();return{}}var tempDouble;var tempI64;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback(Module);continue}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){wasmTable.get(func)()}else{wasmTable.get(func)(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}function ___assert_fail(condition,filename,line,func){abort("Assertion failed: "+UTF8ToString(condition)+", at: "+[filename?UTF8ToString(filename):"unknown filename",line,func?UTF8ToString(func):"unknown function"])}function setErrNo(value){HEAP32[___errno_location()>>2]=value;return value}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path==="/")return"/";path=PATH.normalize(path);path=path.replace(/\/$/,"");var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}};function getRandomDevice(){if(typeof crypto==="object"&&typeof crypto["getRandomValues"]==="function"){var randomBuffer=new Uint8Array(1);return function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]}}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");return function(){return crypto_module["randomBytes"](1)[0]}}catch(e){}}return function(){abort("randomDevice")}}var PATH_FS={resolve:function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!=="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=path.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(function(p){return!!p}),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:function(from,to){from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start<arr.length;start++){if(arr[start]!=="")break}var end=arr.length-1;for(;end>=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i<length;i++){if(fromParts[i]!==toParts[i]){samePartsLength=i;break}}var outputParts=[];for(var i=samePartsLength;i<fromParts.length;i++){outputParts.push("..")}outputParts=outputParts.concat(toParts.slice(samePartsLength));return outputParts.join("/")}};var TTY={ttys:[],init:function(){},shutdown:function(){},register:function(dev,ops){TTY.ttys[dev]={input:[],output:[],ops:ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open:function(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close:function(stream){stream.tty.ops.flush(stream.tty)},flush:function(stream){stream.tty.ops.flush(stream.tty)},read:function(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i<length;i++){var result;try{result=stream.tty.ops.get_char(stream.tty)}catch(e){throw new FS.ErrnoError(29)}if(result===undefined&&bytesRead===0){throw new FS.ErrnoError(6)}if(result===null||result===undefined)break;bytesRead++;buffer[offset+i]=result}if(bytesRead){stream.node.timestamp=Date.now()}return bytesRead},write:function(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.put_char){throw new FS.ErrnoError(60)}try{for(var i=0;i<length;i++){stream.tty.ops.put_char(stream.tty,buffer[offset+i])}}catch(e){throw new FS.ErrnoError(29)}if(length){stream.node.timestamp=Date.now()}return i}},default_tty_ops:{get_char:function(tty){if(!tty.input.length){var result=null;if(ENVIRONMENT_IS_NODE){var BUFSIZE=256;var buf=Buffer.alloc?Buffer.alloc(BUFSIZE):new Buffer(BUFSIZE);var bytesRead=0;try{bytesRead=nodeFS.readSync(process.stdin.fd,buf,0,BUFSIZE,null)}catch(e){if(e.toString().indexOf("EOF")!=-1)bytesRead=0;else throw e}if(bytesRead>0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function mmapAlloc(size){var alignedSize=alignMemory(size,16384);var ptr=_malloc(alignedSize);while(size<alignedSize)HEAP8[ptr+size++]=0;return ptr}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray:function(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage:function(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity<CAPACITY_DOUBLING_MAX?2:1.125)>>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage:function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr:function(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr:function(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp;old_node.parent=new_dir},unlink:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir:function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i<size;i++)buffer[offset+i]=contents[position+i]}return size},write:function(stream,buffer,offset,length,position,canOwn){if(!length)return 0;var node=stream.node;node.timestamp=Date.now();if(buffer.subarray&&(!node.contents||node.contents.subarray)){if(canOwn){node.contents=buffer.subarray(offset,offset+length);node.usedBytes=length;return length}else if(node.usedBytes===0&&position===0){node.contents=buffer.slice(offset,offset+length);node.usedBytes=length;return length}else if(position+length<=node.usedBytes){node.contents.set(buffer.subarray(offset,offset+length),position);return length}}MEMFS.expandFileStorage(node,position+length);if(node.contents.subarray&&buffer.subarray){node.contents.set(buffer.subarray(offset,offset+length),position)}else{for(var i=0;i<length;i++){node.contents[position+i]=buffer[offset+i]}}node.usedBytes=Math.max(node.usedBytes,position+length);return length},llseek:function(stream,offset,whence){var position=offset;if(whence===1){position+=stream.position}else if(whence===2){if(FS.isFile(stream.node.mode)){position+=stream.node.usedBytes}}if(position<0){throw new FS.ErrnoError(28)}return position},allocate:function(stream,offset,length){MEMFS.expandFileStorage(stream.node,offset+length);stream.node.usedBytes=Math.max(stream.node.usedBytes,offset+length)},mmap:function(stream,address,length,position,prot,flags){if(address!==0){throw new FS.ErrnoError(28)}if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}var ptr;var allocated;var contents=stream.node.contents;if(!(flags&2)&&contents.buffer===buffer){allocated=false;ptr=contents.byteOffset}else{if(position>0||position+length<contents.length){if(contents.subarray){contents=contents.subarray(position,position+length)}else{contents=Array.prototype.slice.call(contents,position,position+length)}}allocated=true;ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}HEAP8.set(contents,ptr)}return{ptr:ptr,allocated:allocated}},msync:function(stream,buffer,offset,length,mmapFlags){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}if(mmapFlags&2){return 0}var bytesWritten=MEMFS.stream_ops.write(stream,buffer,0,length,offset,false);return 0}}};var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,trackingDelegate:{},tracking:{openFlags:{READ:1,WRITE:2}},ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath:function(path,opts){path=PATH_FS.resolve(FS.cwd(),path);opts=opts||{};if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};for(var key in defaults){if(opts[key]===undefined){opts[key]=defaults[key]}}if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),false);var current=FS.root;var current_path="/";for(var i=0;i<parts.length;i++){var islast=i===parts.length-1;if(islast&&opts.parent){break}current=FS.lookupNode(current,parts[i]);current_path=PATH.join2(current_path,parts[i]);if(FS.isMountpoint(current)){if(!islast||islast&&opts.follow_mount){current=current.mounted.root}}if(!islast||opts.follow){var count=0;while(FS.isLink(current.mode)){var link=FS.readlink(current_path);current_path=PATH_FS.resolve(PATH.dirname(current_path),link);var lookup=FS.lookupPath(current_path,{recurse_count:opts.recurse_count});current=lookup.node;if(count++>40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath:function(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?mount+"/"+path:mount+path}path=path?node.name+"/"+path:node.name;node=node.parent}},hashName:function(parentid,name){var hash=0;for(var i=0;i<name.length;i++){hash=(hash<<5)-hash+name.charCodeAt(i)|0}return(parentid+hash>>>0)%FS.nameTable.length},hashAddNode:function(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode:function(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode:function(parent,name){var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode:function(parent,name,mode,rdev){var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:function(node){FS.hashRemoveNode(node)},isRoot:function(node){return node===node.parent},isMountpoint:function(node){return!!node.mounted},isFile:function(mode){return(mode&61440)===32768},isDir:function(mode){return(mode&61440)===16384},isLink:function(mode){return(mode&61440)===40960},isChrdev:function(mode){return(mode&61440)===8192},isBlkdev:function(mode){return(mode&61440)===24576},isFIFO:function(mode){return(mode&61440)===4096},isSocket:function(mode){return(mode&49152)===49152},flagModes:{"r":0,"r+":2,"w":577,"w+":578,"a":1089,"a+":1090},modeStringToFlags:function(str){var flags=FS.flagModes[str];if(typeof flags==="undefined"){throw new Error("Unknown file open mode: "+str)}return flags},flagsToPermissionString:function(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions:function(node,perms){if(FS.ignorePermissions){return 0}if(perms.indexOf("r")!==-1&&!(node.mode&292)){return 2}else if(perms.indexOf("w")!==-1&&!(node.mode&146)){return 2}else if(perms.indexOf("x")!==-1&&!(node.mode&73)){return 2}return 0},mayLookup:function(dir){var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate:function(dir,name){try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete:function(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen:function(node,flags){if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd:function(fd_start,fd_end){fd_start=fd_start||0;fd_end=fd_end||FS.MAX_OPEN_FDS;for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:function(fd){return FS.streams[fd]},createStream:function(stream,fd_start,fd_end){if(!FS.FSStream){FS.FSStream=function(){};FS.FSStream.prototype={object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}}}}var newStream=new FS.FSStream;for(var p in stream){newStream[p]=stream[p]}stream=newStream;var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:function(fd){FS.streams[fd]=null},chrdev_stream_ops:{open:function(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}},llseek:function(){throw new FS.ErrnoError(70)}},major:function(dev){return dev>>8},minor:function(dev){return dev&255},makedev:function(ma,mi){return ma<<8|mi},registerDevice:function(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:function(dev){return FS.devices[dev]},getMounts:function(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts},syncfs:function(populate,callback){if(typeof populate==="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err("warning: "+FS.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work")}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(function(mount){if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount:function(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount:function(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(function(hash){var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.indexOf(current.mount)!==-1){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup:function(parent,name){return parent.node_ops.lookup(parent,name)},mknod:function(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create:function(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:function(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree:function(path,mode){var dirs=path.split("/");var d="";for(var i=0;i<dirs.length;++i){if(!dirs[i])continue;d+="/"+dirs[i];try{FS.mkdir(d,mode)}catch(e){if(e.errno!=20)throw e}}},mkdev:function(path,mode,dev){if(typeof dev==="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:function(oldpath,newpath){if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:function(old_path,new_path){var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}try{if(FS.trackingDelegate["willMovePath"]){FS.trackingDelegate["willMovePath"](old_path,new_path)}}catch(e){err("FS.trackingDelegate['willMovePath']('"+old_path+"', '"+new_path+"') threw an exception: "+e.message)}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}try{if(FS.trackingDelegate["onMovePath"])FS.trackingDelegate["onMovePath"](old_path,new_path)}catch(e){err("FS.trackingDelegate['onMovePath']('"+old_path+"', '"+new_path+"') threw an exception: "+e.message)}},rmdir:function(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}try{if(FS.trackingDelegate["willDeletePath"]){FS.trackingDelegate["willDeletePath"](path)}}catch(e){err("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: "+e.message)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate["onDeletePath"])FS.trackingDelegate["onDeletePath"](path)}catch(e){err("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: "+e.message)}},readdir:function(path){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:function(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}try{if(FS.trackingDelegate["willDeletePath"]){FS.trackingDelegate["willDeletePath"](path)}}catch(e){err("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: "+e.message)}parent.node_ops.unlink(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate["onDeletePath"])FS.trackingDelegate["onDeletePath"](path)}catch(e){err("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: "+e.message)}},readlink:function(path){var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:function(path,dontFollow){var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:function(path){return FS.stat(path,true)},chmod:function(path,mode,dontFollow){var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:function(path,mode){FS.chmod(path,mode,true)},fchmod:function(fd,mode){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:function(path,uid,gid,dontFollow){var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:function(path,uid,gid){FS.chown(path,uid,gid,true)},fchown:function(fd,uid,gid){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:function(path,len){if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:function(fd,len){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:function(path,atime,mtime){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:function(path,flags,mode,fd_start,fd_end){if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags==="string"?FS.modeStringToFlags(flags):flags;mode=typeof mode==="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path==="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false},fd_start,fd_end);if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1;err("FS.trackingDelegate error on read file: "+path)}}try{if(FS.trackingDelegate["onOpenFile"]){var trackingFlags=0;if((flags&2097155)!==1){trackingFlags|=FS.tracking.openFlags.READ}if((flags&2097155)!==0){trackingFlags|=FS.tracking.openFlags.WRITE}FS.trackingDelegate["onOpenFile"](path,trackingFlags)}}catch(e){err("FS.trackingDelegate['onOpenFile']('"+path+"', flags) threw an exception: "+e.message)}return stream},close:function(stream){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:function(stream){return stream.fd===null},llseek:function(stream,offset,whence){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:function(stream,buffer,offset,length,position){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!=="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:function(stream,buffer,offset,length,position,canOwn){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!=="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;try{if(stream.path&&FS.trackingDelegate["onWriteToFile"])FS.trackingDelegate["onWriteToFile"](stream.path)}catch(e){err("FS.trackingDelegate['onWriteToFile']('"+stream.path+"') threw an exception: "+e.message)}return bytesWritten},allocate:function(stream,offset,length){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:function(stream,address,length,position,prot,flags){if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,address,length,position,prot,flags)},msync:function(stream,buffer,offset,length,mmapFlags){if(!stream||!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:function(stream){return 0},ioctl:function(stream,cmd,arg){if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:function(path,opts){opts=opts||{};opts.flags=opts.flags||0;opts.encoding=opts.encoding||"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error('Invalid encoding type "'+opts.encoding+'"')}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding==="binary"){ret=buf}FS.close(stream);return ret},writeFile:function(path,data,opts){opts=opts||{};opts.flags=opts.flags||577;var stream=FS.open(path,opts.flags,opts.mode);if(typeof data==="string"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,undefined,opts.canOwn)}else if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{throw new Error("Unsupported data type")}FS.close(stream)},cwd:function(){return FS.currentPath},chdir:function(path){var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories:function(){FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices:function(){FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:function(){return 0},write:function(stream,buffer,offset,length,pos){return length}});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var random_device=getRandomDevice();FS.createDevice("/dev","random",random_device);FS.createDevice("/dev","urandom",random_device);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories:function(){FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount:function(){var node=FS.createNode(proc_self,"fd",16384|511,73);node.node_ops={lookup:function(parent,name){var fd=+name;var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:function(){return stream.path}}};ret.parent=ret;return ret}};return node}},{},"/proc/self/fd")},createStandardStreams:function(){if(Module["stdin"]){FS.createDevice("/dev","stdin",Module["stdin"])}else{FS.symlink("/dev/tty","/dev/stdin")}if(Module["stdout"]){FS.createDevice("/dev","stdout",null,Module["stdout"])}else{FS.symlink("/dev/tty","/dev/stdout")}if(Module["stderr"]){FS.createDevice("/dev","stderr",null,Module["stderr"])}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},ensureErrnoError:function(){if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.node=node;this.setErrno=function(errno){this.errno=errno};this.setErrno(errno);this.message="FS error"};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[44].forEach(function(code){FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack="<generic error, no stack>"})},staticInit:function(){FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={"MEMFS":MEMFS}},init:function(input,output,error){FS.init.initialized=true;FS.ensureErrnoError();Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams()},quit:function(){FS.init.initialized=false;var fflush=Module["_fflush"];if(fflush)fflush(0);for(var i=0;i<FS.streams.length;i++){var stream=FS.streams[i];if(!stream){continue}FS.close(stream)}},getMode:function(canRead,canWrite){var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode},findObject:function(path,dontResolveLastLink){var ret=FS.analyzePath(path,dontResolveLastLink);if(ret.exists){return ret.object}else{return null}},analyzePath:function(path,dontResolveLastLink){try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath:function(parent,path,canRead,canWrite){parent=typeof parent==="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:function(parent,name,properties,canRead,canWrite){var path=PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:function(parent,name,data,canRead,canWrite,canOwn){var path=name?PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name):parent;var mode=FS.getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data==="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i<len;++i)arr[i]=data.charCodeAt(i);data=arr}FS.chmod(node,mode|146);var stream=FS.open(node,577);FS.write(stream,data,0,data.length,0,canOwn);FS.close(stream);FS.chmod(node,mode)}return node},createDevice:function(parent,name,input,output){var path=PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:function(stream){stream.seekable=false},close:function(stream){if(output&&output.buffer&&output.buffer.length){output(10)}},read:function(stream,buffer,offset,length,pos){var bytesRead=0;for(var i=0;i<length;i++){var result;try{result=input()}catch(e){throw new FS.ErrnoError(29)}if(result===undefined&&bytesRead===0){throw new FS.ErrnoError(6)}if(result===null||result===undefined)break;bytesRead++;buffer[offset+i]=result}if(bytesRead){stream.node.timestamp=Date.now()}return bytesRead},write:function(stream,buffer,offset,length,pos){for(var i=0;i<length;i++){try{output(buffer[offset+i])}catch(e){throw new FS.ErrnoError(29)}}if(length){stream.node.timestamp=Date.now()}return i}});return FS.mkdev(path,mode,dev)},forceLoadFile:function(obj){if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!=="undefined"){throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}},createLazyFile:function(parent,name,url,canRead,canWrite){function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=function(from,to){if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);if(typeof Uint8Array!="undefined")xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}else{return intArrayFromString(xhr.responseText||"",true)}};var lazyArray=this;lazyArray.setDataGetter(function(chunkNum){var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]==="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]==="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!=="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._length}},chunkSize:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(function(key){var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){FS.forceLoadFile(node);return fn.apply(null,arguments)}});stream_ops.read=function stream_ops_read(stream,buffer,offset,length,position){FS.forceLoadFile(node);var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i<size;i++){buffer[offset+i]=contents[position+i]}}else{for(var i=0;i<size;i++){buffer[offset+i]=contents.get(position+i)}}return size};node.stream_ops=stream_ops;return node},createPreloadedFile:function(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish){Browser.init();var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency("cp "+fullname);function processData(byteArray){function finish(byteArray){if(preFinish)preFinish();if(!dontCreateFile){FS.createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}if(onload)onload();removeRunDependency(dep)}var handled=false;Module["preloadPlugins"].forEach(function(plugin){if(handled)return;if(plugin["canHandle"](fullname)){plugin["handle"](byteArray,fullname,finish,function(){if(onerror)onerror();removeRunDependency(dep)});handled=true}});if(!handled)finish(byteArray)}addRunDependency(dep);if(typeof url=="string"){Browser.asyncLoad(url,function(byteArray){processData(byteArray)},onerror)}else{processData(url)}},indexedDB:function(){return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME:function(){return"EM_FS_"+window.location.pathname},DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:function(paths,onload,onerror){onload=onload||function(){};onerror=onerror||function(){};var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=function openRequest_onupgradeneeded(){out("creating db");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME)};openRequest.onsuccess=function openRequest_onsuccess(){var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],"readwrite");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(function(path){var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=function putRequest_onsuccess(){ok++;if(ok+fail==total)finish()};putRequest.onerror=function putRequest_onerror(){fail++;if(ok+fail==total)finish()}});transaction.onerror=onerror};openRequest.onerror=onerror},loadFilesFromDB:function(paths,onload,onerror){onload=onload||function(){};onerror=onerror||function(){};var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=function openRequest_onsuccess(){var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],"readonly")}catch(e){onerror(e);return}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(function(path){var getRequest=files.get(path);getRequest.onsuccess=function getRequest_onsuccess(){if(FS.analyzePath(path).exists){FS.unlink(path)}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish()};getRequest.onerror=function getRequest_onerror(){fail++;if(ok+fail==total)finish()}});transaction.onerror=onerror};openRequest.onerror=onerror}};var SYSCALLS={mappings:{},DEFAULT_POLLMASK:5,umask:511,calculateAt:function(dirfd,path,allowEmpty){if(path[0]==="/"){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=FS.getStream(dirfd);if(!dirstream)throw new FS.ErrnoError(8);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(func,path,buf){try{var stat=func(path)}catch(e){if(e&&e.node&&PATH.normalize(path)!==PATH.normalize(FS.getPath(e.node))){return-54}throw e}HEAP32[buf>>2]=stat.dev;HEAP32[buf+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;HEAP32[buf+56>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+76>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+80>>2]=tempI64[0],HEAP32[buf+84>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},doMkdir:function(path,mode){path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0},doMknod:function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}FS.mknod(path,mode,dev);return 0},doReadlink:function(path,buf,bufsize){if(bufsize<=0)return-28;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len},doAccess:function(path,amode){if(amode&~7){return-28}var node;var lookup=FS.lookupPath(path,{follow:true});node=lookup.node;if(!node){return-44}var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0},doDup:function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd},doReadv:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i<iovcnt;i++){var ptr=HEAP32[iov+i*8>>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr<len)break}return ret},doWritev:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i<iovcnt;i++){var ptr=HEAP32[iov+i*8>>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream},get64:function(low,high){return low}};function ___sys_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-28}var newStream;newStream=FS.open(stream.path,stream.flags,0,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0}case 12:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 13:case 14:return 0;case 16:case 8:return-28;case 9:setErrNo(28);return-1;default:{return-28}}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_ioctl(fd,op,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(op){case 21509:case 21505:{if(!stream.tty)return-59;return 0}case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-59;return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{if(!stream.tty)return-59;return 0}default:abort("bad ioctl syscall "+op)}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_open(path,flags,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(path);var mode=varargs?SYSCALLS.get():0;var stream=FS.open(pathname,flags,mode);return stream.fd}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}var JSEvents={inEventHandler:0,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return false;for(var i in arrA){if(arrA[i]!=arrB[i])return false}return true}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList)){return}}JSEvents.deferredCalls.push({targetFunction:targetFunction,precedence:precedence,argsList:argsList});JSEvents.deferredCalls.sort(function(x,y){return x.precedence<y.precedence})},removeDeferredCalls:function(targetFunction){for(var i=0;i<JSEvents.deferredCalls.length;++i){if(JSEvents.deferredCalls[i].targetFunction==targetFunction){JSEvents.deferredCalls.splice(i,1);--i}}},canPerformEventHandlerRequests:function(){return JSEvents.inEventHandler&&JSEvents.currentEventHandler.allowsDeferredCalls},runDeferredCalls:function(){if(!JSEvents.canPerformEventHandlerRequests()){return}for(var i=0;i<JSEvents.deferredCalls.length;++i){var call=JSEvents.deferredCalls[i];JSEvents.deferredCalls.splice(i,1);--i;call.targetFunction.apply(null,call.argsList)}},eventHandlers:[],removeAllHandlersOnTarget:function(target,eventTypeString){for(var i=0;i<JSEvents.eventHandlers.length;++i){if(JSEvents.eventHandlers[i].target==target&&(!eventTypeString||eventTypeString==JSEvents.eventHandlers[i].eventTypeString)){JSEvents._removeHandler(i--)}}},_removeHandler:function(i){var h=JSEvents.eventHandlers[i];h.target.removeEventListener(h.eventTypeString,h.eventListenerFunc,h.useCapture);JSEvents.eventHandlers.splice(i,1)},registerOrRemoveHandler:function(eventHandler){var jsEventHandler=function jsEventHandler(event){++JSEvents.inEventHandler;JSEvents.currentEventHandler=eventHandler;JSEvents.runDeferredCalls();eventHandler.handlerFunc(event);JSEvents.runDeferredCalls();--JSEvents.inEventHandler};if(eventHandler.callbackfunc){eventHandler.eventListenerFunc=jsEventHandler;eventHandler.target.addEventListener(eventHandler.eventTypeString,jsEventHandler,eventHandler.useCapture);JSEvents.eventHandlers.push(eventHandler);JSEvents.registerRemoveEventListeners()}else{for(var i=0;i<JSEvents.eventHandlers.length;++i){if(JSEvents.eventHandlers[i].target==eventHandler.target&&JSEvents.eventHandlers[i].eventTypeString==eventHandler.eventTypeString){JSEvents._removeHandler(i--)}}}},getNodeNameForTarget:function(target){if(!target)return"";if(target==window)return"#window";if(target==screen)return"#screen";return target&&target.nodeName?target.nodeName:""},fullscreenEnabled:function(){return document.fullscreenEnabled||document.webkitFullscreenEnabled}};function requestPointerLock(target){if(target.requestPointerLock){target.requestPointerLock()}else if(target.msRequestPointerLock){target.msRequestPointerLock()}else{if(document.body.requestPointerLock||document.body.msRequestPointerLock){return-3}else{return-1}}return 0}function _emscripten_exit_pointerlock(){JSEvents.removeDeferredCalls(requestPointerLock);if(document.exitPointerLock){document.exitPointerLock()}else if(document.msExitPointerLock){document.msExitPointerLock()}else{return-1}return 0}function maybeCStringToJsString(cString){return cString>2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!=="undefined"?document:0,typeof window!=="undefined"?window:0];function findEventTarget(target){target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!=="undefined"?document.querySelector(target):undefined);return domElement}function getBoundingClientRect(e){return specialHTMLTargets.indexOf(e)<0?e.getBoundingClientRect():{"left":0,"top":0}}function _emscripten_get_element_css_size(target,width,height){target=findEventTarget(target);if(!target)return-4;var rect=getBoundingClientRect(target);HEAPF64[width>>3]=rect.width;HEAPF64[height>>3]=rect.height;return 0}function fillGamepadEventData(eventStruct,e){HEAPF64[eventStruct>>3]=e.timestamp;for(var i=0;i<e.axes.length;++i){HEAPF64[eventStruct+i*8+16>>3]=e.axes[i]}for(var i=0;i<e.buttons.length;++i){if(typeof e.buttons[i]==="object"){HEAPF64[eventStruct+i*8+528>>3]=e.buttons[i].value}else{HEAPF64[eventStruct+i*8+528>>3]=e.buttons[i]}}for(var i=0;i<e.buttons.length;++i){if(typeof e.buttons[i]==="object"){HEAP32[eventStruct+i*4+1040>>2]=e.buttons[i].pressed}else{HEAP32[eventStruct+i*4+1040>>2]=e.buttons[i]==1}}HEAP32[eventStruct+1296>>2]=e.connected;HEAP32[eventStruct+1300>>2]=e.index;HEAP32[eventStruct+8>>2]=e.axes.length;HEAP32[eventStruct+12>>2]=e.buttons.length;stringToUTF8(e.id,eventStruct+1304,64);stringToUTF8(e.mapping,eventStruct+1368,64)}function _emscripten_get_gamepad_status(index,gamepadState){if(index<0||index>=JSEvents.lastGamepadState.length)return-5;if(!JSEvents.lastGamepadState[index])return-7;fillGamepadEventData(gamepadState,JSEvents.lastGamepadState[index]);return 0}function _emscripten_get_num_gamepads(){return JSEvents.lastGamepadState.length}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension("ANGLE_instanced_arrays");if(ext){ctx["vertexAttribDivisor"]=function(index,divisor){ext["vertexAttribDivisorANGLE"](index,divisor)};ctx["drawArraysInstanced"]=function(mode,first,count,primcount){ext["drawArraysInstancedANGLE"](mode,first,count,primcount)};ctx["drawElementsInstanced"]=function(mode,count,type,indices,primcount){ext["drawElementsInstancedANGLE"](mode,count,type,indices,primcount)};return 1}}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension("OES_vertex_array_object");if(ext){ctx["createVertexArray"]=function(){return ext["createVertexArrayOES"]()};ctx["deleteVertexArray"]=function(vao){ext["deleteVertexArrayOES"](vao)};ctx["bindVertexArray"]=function(vao){ext["bindVertexArrayOES"](vao)};ctx["isVertexArray"]=function(vao){return ext["isVertexArrayOES"](vao)};return 1}}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension("WEBGL_draw_buffers");if(ext){ctx["drawBuffers"]=function(n,bufs){ext["drawBuffersWEBGL"](n,bufs)};return 1}}function __webgl_enable_WEBGL_multi_draw(ctx){return!!(ctx.multiDrawWebgl=ctx.getExtension("WEBGL_multi_draw"))}var GL={counter:1,buffers:[],programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:[],offscreenCanvases:{},timerQueriesEXT:[],programInfos:{},stringCache:{},unpackAlignment:4,recordError:function recordError(errorCode){if(!GL.lastError){GL.lastError=errorCode}},getNewId:function(table){var ret=GL.counter++;for(var i=table.length;i<ret;i++){table[i]=null}return ret},getSource:function(shader,count,string,length){var source="";for(var i=0;i<count;++i){var len=length?HEAP32[length+i*4>>2]:-1;source+=UTF8ToString(HEAP32[string+i*4>>2],len<0?undefined:len)}return source},createContext:function(canvas,webGLContextAttributes){var ctx=canvas.getContext("webgl",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:function(ctx,webGLContextAttributes){var handle=GL.getNewId(GL.contexts);var context={handle:handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};if(ctx.canvas)ctx.canvas.GLctxObject=context;GL.contexts[handle]=context;if(typeof webGLContextAttributes.enableExtensionsByDefault==="undefined"||webGLContextAttributes.enableExtensionsByDefault){GL.initExtensions(context)}return handle},makeContextCurrent:function(contextHandle){GL.currentContext=GL.contexts[contextHandle];Module.ctx=GLctx=GL.currentContext&&GL.currentContext.GLctx;return!(contextHandle&&!GLctx)},getContext:function(contextHandle){return GL.contexts[contextHandle]},deleteContext:function(contextHandle){if(GL.currentContext===GL.contexts[contextHandle])GL.currentContext=null;if(typeof JSEvents==="object")JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas);if(GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas)GL.contexts[contextHandle].GLctx.canvas.GLctxObject=undefined;GL.contexts[contextHandle]=null},initExtensions:function(context){if(!context)context=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;__webgl_enable_ANGLE_instanced_arrays(GLctx);__webgl_enable_OES_vertex_array_object(GLctx);__webgl_enable_WEBGL_draw_buffers(GLctx);GLctx.disjointTimerQueryExt=GLctx.getExtension("EXT_disjoint_timer_query");__webgl_enable_WEBGL_multi_draw(GLctx);var exts=GLctx.getSupportedExtensions()||[];exts.forEach(function(ext){if(ext.indexOf("lose_context")<0&&ext.indexOf("debug")<0){GLctx.getExtension(ext)}})},populateUniformTable:function(program){var p=GL.programs[program];var ptable=GL.programInfos[program]={uniforms:{},maxUniformLength:0,maxAttributeLength:-1,maxUniformBlockNameLength:-1};var utable=ptable.uniforms;var numUniforms=GLctx.getProgramParameter(p,35718);for(var i=0;i<numUniforms;++i){var u=GLctx.getActiveUniform(p,i);var name=u.name;ptable.maxUniformLength=Math.max(ptable.maxUniformLength,name.length+1);if(name.slice(-1)=="]"){name=name.slice(0,name.lastIndexOf("["))}var loc=GLctx.getUniformLocation(p,name);if(loc){var id=GL.getNewId(GL.uniforms);utable[name]=[u.size,id];GL.uniforms[id]=loc;for(var j=1;j<u.size;++j){var n=name+"["+j+"]";loc=GLctx.getUniformLocation(p,n);id=GL.getNewId(GL.uniforms);GL.uniforms[id]=loc}}}}};function _emscripten_glActiveTexture(x0){GLctx["activeTexture"](x0)}function _emscripten_glAttachShader(program,shader){GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _emscripten_glBeginQueryEXT(target,id){GLctx.disjointTimerQueryExt["beginQueryEXT"](target,GL.timerQueriesEXT[id])}function _emscripten_glBindAttribLocation(program,index,name){GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))}function _emscripten_glBindBuffer(target,buffer){GLctx.bindBuffer(target,GL.buffers[buffer])}function _emscripten_glBindFramebuffer(target,framebuffer){GLctx.bindFramebuffer(target,GL.framebuffers[framebuffer])}function _emscripten_glBindRenderbuffer(target,renderbuffer){GLctx.bindRenderbuffer(target,GL.renderbuffers[renderbuffer])}function _emscripten_glBindTexture(target,texture){GLctx.bindTexture(target,GL.textures[texture])}function _emscripten_glBindVertexArrayOES(vao){GLctx["bindVertexArray"](GL.vaos[vao])}function _emscripten_glBlendColor(x0,x1,x2,x3){GLctx["blendColor"](x0,x1,x2,x3)}function _emscripten_glBlendEquation(x0){GLctx["blendEquation"](x0)}function _emscripten_glBlendEquationSeparate(x0,x1){GLctx["blendEquationSeparate"](x0,x1)}function _emscripten_glBlendFunc(x0,x1){GLctx["blendFunc"](x0,x1)}function _emscripten_glBlendFuncSeparate(x0,x1,x2,x3){GLctx["blendFuncSeparate"](x0,x1,x2,x3)}function _emscripten_glBufferData(target,size,data,usage){GLctx.bufferData(target,data?HEAPU8.subarray(data,data+size):size,usage)}function _emscripten_glBufferSubData(target,offset,size,data){GLctx.bufferSubData(target,offset,HEAPU8.subarray(data,data+size))}function _emscripten_glCheckFramebufferStatus(x0){return GLctx["checkFramebufferStatus"](x0)}function _emscripten_glClear(x0){GLctx["clear"](x0)}function _emscripten_glClearColor(x0,x1,x2,x3){GLctx["clearColor"](x0,x1,x2,x3)}function _emscripten_glClearDepthf(x0){GLctx["clearDepth"](x0)}function _emscripten_glClearStencil(x0){GLctx["clearStencil"](x0)}function _emscripten_glColorMask(red,green,blue,alpha){GLctx.colorMask(!!red,!!green,!!blue,!!alpha)}function _emscripten_glCompileShader(shader){GLctx.compileShader(GL.shaders[shader])}function _emscripten_glCompressedTexImage2D(target,level,internalFormat,width,height,border,imageSize,data){GLctx["compressedTexImage2D"](target,level,internalFormat,width,height,border,data?HEAPU8.subarray(data,data+imageSize):null)}function _emscripten_glCompressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,imageSize,data){GLctx["compressedTexSubImage2D"](target,level,xoffset,yoffset,width,height,format,data?HEAPU8.subarray(data,data+imageSize):null)}function _emscripten_glCopyTexImage2D(x0,x1,x2,x3,x4,x5,x6,x7){GLctx["copyTexImage2D"](x0,x1,x2,x3,x4,x5,x6,x7)}function _emscripten_glCopyTexSubImage2D(x0,x1,x2,x3,x4,x5,x6,x7){GLctx["copyTexSubImage2D"](x0,x1,x2,x3,x4,x5,x6,x7)}function _emscripten_glCreateProgram(){var id=GL.getNewId(GL.programs);var program=GLctx.createProgram();program.name=id;GL.programs[id]=program;return id}function _emscripten_glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}function _emscripten_glCullFace(x0){GLctx["cullFace"](x0)}function _emscripten_glDeleteBuffers(n,buffers){for(var i=0;i<n;i++){var id=HEAP32[buffers+i*4>>2];var buffer=GL.buffers[id];if(!buffer)continue;GLctx.deleteBuffer(buffer);buffer.name=0;GL.buffers[id]=null}}function _emscripten_glDeleteFramebuffers(n,framebuffers){for(var i=0;i<n;++i){var id=HEAP32[framebuffers+i*4>>2];var framebuffer=GL.framebuffers[id];if(!framebuffer)continue;GLctx.deleteFramebuffer(framebuffer);framebuffer.name=0;GL.framebuffers[id]=null}}function _emscripten_glDeleteProgram(id){if(!id)return;var program=GL.programs[id];if(!program){GL.recordError(1281);return}GLctx.deleteProgram(program);program.name=0;GL.programs[id]=null;GL.programInfos[id]=null}function _emscripten_glDeleteQueriesEXT(n,ids){for(var i=0;i<n;i++){var id=HEAP32[ids+i*4>>2];var query=GL.timerQueriesEXT[id];if(!query)continue;GLctx.disjointTimerQueryExt["deleteQueryEXT"](query);GL.timerQueriesEXT[id]=null}}function _emscripten_glDeleteRenderbuffers(n,renderbuffers){for(var i=0;i<n;i++){var id=HEAP32[renderbuffers+i*4>>2];var renderbuffer=GL.renderbuffers[id];if(!renderbuffer)continue;GLctx.deleteRenderbuffer(renderbuffer);renderbuffer.name=0;GL.renderbuffers[id]=null}}function _emscripten_glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}function _emscripten_glDeleteTextures(n,textures){for(var i=0;i<n;i++){var id=HEAP32[textures+i*4>>2];var texture=GL.textures[id];if(!texture)continue;GLctx.deleteTexture(texture);texture.name=0;GL.textures[id]=null}}function _emscripten_glDeleteVertexArraysOES(n,vaos){for(var i=0;i<n;i++){var id=HEAP32[vaos+i*4>>2];GLctx["deleteVertexArray"](GL.vaos[id]);GL.vaos[id]=null}}function _emscripten_glDepthFunc(x0){GLctx["depthFunc"](x0)}function _emscripten_glDepthMask(flag){GLctx.depthMask(!!flag)}function _emscripten_glDepthRangef(x0,x1){GLctx["depthRange"](x0,x1)}function _emscripten_glDetachShader(program,shader){GLctx.detachShader(GL.programs[program],GL.shaders[shader])}function _emscripten_glDisable(x0){GLctx["disable"](x0)}function _emscripten_glDisableVertexAttribArray(index){GLctx.disableVertexAttribArray(index)}function _emscripten_glDrawArrays(mode,first,count){GLctx.drawArrays(mode,first,count)}function _emscripten_glDrawArraysInstancedANGLE(mode,first,count,primcount){GLctx["drawArraysInstanced"](mode,first,count,primcount)}var tempFixedLengthArray=[];function _emscripten_glDrawBuffersWEBGL(n,bufs){var bufArray=tempFixedLengthArray[n];for(var i=0;i<n;i++){bufArray[i]=HEAP32[bufs+i*4>>2]}GLctx["drawBuffers"](bufArray)}function _emscripten_glDrawElements(mode,count,type,indices){GLctx.drawElements(mode,count,type,indices)}function _emscripten_glDrawElementsInstancedANGLE(mode,count,type,indices,primcount){GLctx["drawElementsInstanced"](mode,count,type,indices,primcount)}function _emscripten_glEnable(x0){GLctx["enable"](x0)}function _emscripten_glEnableVertexAttribArray(index){GLctx.enableVertexAttribArray(index)}function _emscripten_glEndQueryEXT(target){GLctx.disjointTimerQueryExt["endQueryEXT"](target)}function _emscripten_glFinish(){GLctx["finish"]()}function _emscripten_glFlush(){GLctx["flush"]()}function _emscripten_glFramebufferRenderbuffer(target,attachment,renderbuffertarget,renderbuffer){GLctx.framebufferRenderbuffer(target,attachment,renderbuffertarget,GL.renderbuffers[renderbuffer])}function _emscripten_glFramebufferTexture2D(target,attachment,textarget,texture,level){GLctx.framebufferTexture2D(target,attachment,textarget,GL.textures[texture],level)}function _emscripten_glFrontFace(x0){GLctx["frontFace"](x0)}function __glGenObject(n,buffers,createFunction,objectTable){for(var i=0;i<n;i++){var buffer=GLctx[createFunction]();var id=buffer&&GL.getNewId(objectTable);if(buffer){buffer.name=id;objectTable[id]=buffer}else{GL.recordError(1282)}HEAP32[buffers+i*4>>2]=id}}function _emscripten_glGenBuffers(n,buffers){__glGenObject(n,buffers,"createBuffer",GL.buffers)}function _emscripten_glGenFramebuffers(n,ids){__glGenObject(n,ids,"createFramebuffer",GL.framebuffers)}function _emscripten_glGenQueriesEXT(n,ids){for(var i=0;i<n;i++){var query=GLctx.disjointTimerQueryExt["createQueryEXT"]();if(!query){GL.recordError(1282);while(i<n)HEAP32[ids+i++*4>>2]=0;return}var id=GL.getNewId(GL.timerQueriesEXT);query.name=id;GL.timerQueriesEXT[id]=query;HEAP32[ids+i*4>>2]=id}}function _emscripten_glGenRenderbuffers(n,renderbuffers){__glGenObject(n,renderbuffers,"createRenderbuffer",GL.renderbuffers)}function _emscripten_glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures)}function _emscripten_glGenVertexArraysOES(n,arrays){__glGenObject(n,arrays,"createVertexArray",GL.vaos)}function _emscripten_glGenerateMipmap(x0){GLctx["generateMipmap"](x0)}function __glGetActiveAttribOrUniform(funcName,program,index,bufSize,length,size,type,name){program=GL.programs[program];var info=GLctx[funcName](program,index);if(info){var numBytesWrittenExclNull=name&&stringToUTF8(info.name,name,bufSize);if(length)HEAP32[length>>2]=numBytesWrittenExclNull;if(size)HEAP32[size>>2]=info.size;if(type)HEAP32[type>>2]=info.type}}function _emscripten_glGetActiveAttrib(program,index,bufSize,length,size,type,name){__glGetActiveAttribOrUniform("getActiveAttrib",program,index,bufSize,length,size,type,name)}function _emscripten_glGetActiveUniform(program,index,bufSize,length,size,type,name){__glGetActiveAttribOrUniform("getActiveUniform",program,index,bufSize,length,size,type,name)}function _emscripten_glGetAttachedShaders(program,maxCount,count,shaders){var result=GLctx.getAttachedShaders(GL.programs[program]);var len=result.length;if(len>maxCount){len=maxCount}HEAP32[count>>2]=len;for(var i=0;i<len;++i){var id=GL.shaders.indexOf(result[i]);HEAP32[shaders+i*4>>2]=id}}function _emscripten_glGetAttribLocation(program,name){return GLctx.getAttribLocation(GL.programs[program],UTF8ToString(name))}function writeI53ToI64(ptr,num){HEAPU32[ptr>>2]=num;HEAPU32[ptr+4>>2]=(num-HEAPU32[ptr>>2])/4294967296}function emscriptenWebGLGet(name_,p,type){if(!p){GL.recordError(1281);return}var ret=undefined;switch(name_){case 36346:ret=1;break;case 36344:if(type!=0&&type!=1){GL.recordError(1280)}return;case 36345:ret=0;break;case 34466:var formats=GLctx.getParameter(34467);ret=formats?formats.length:0;break}if(ret===undefined){var result=GLctx.getParameter(name_);switch(typeof result){case"number":ret=result;break;case"boolean":ret=result?1:0;break;case"string":GL.recordError(1280);return;case"object":if(result===null){switch(name_){case 34964:case 35725:case 34965:case 36006:case 36007:case 32873:case 34229:case 34068:{ret=0;break}default:{GL.recordError(1280);return}}}else if(result instanceof Float32Array||result instanceof Uint32Array||result instanceof Int32Array||result instanceof Array){for(var i=0;i<result.length;++i){switch(type){case 0:HEAP32[p+i*4>>2]=result[i];break;case 2:HEAPF32[p+i*4>>2]=result[i];break;case 4:HEAP8[p+i>>0]=result[i]?1:0;break}}return}else{try{ret=result.name|0}catch(e){GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v: Unknown object returned from WebGL getParameter("+name_+")! (error: "+e+")");return}}break;default:GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v: Native code calling glGet"+type+"v("+name_+") and it returns "+result+" of type "+typeof result+"!");return}}switch(type){case 1:writeI53ToI64(p,ret);break;case 0:HEAP32[p>>2]=ret;break;case 2:HEAPF32[p>>2]=ret;break;case 4:HEAP8[p>>0]=ret?1:0;break}}function _emscripten_glGetBooleanv(name_,p){emscriptenWebGLGet(name_,p,4)}function _emscripten_glGetBufferParameteriv(target,value,data){if(!data){GL.recordError(1281);return}HEAP32[data>>2]=GLctx.getBufferParameter(target,value)}function _emscripten_glGetError(){var error=GLctx.getError()||GL.lastError;GL.lastError=0;return error}function _emscripten_glGetFloatv(name_,p){emscriptenWebGLGet(name_,p,2)}function _emscripten_glGetFramebufferAttachmentParameteriv(target,attachment,pname,params){var result=GLctx.getFramebufferAttachmentParameter(target,attachment,pname);if(result instanceof WebGLRenderbuffer||result instanceof WebGLTexture){result=result.name|0}HEAP32[params>>2]=result}function _emscripten_glGetIntegerv(name_,p){emscriptenWebGLGet(name_,p,0)}function _emscripten_glGetProgramInfoLog(program,maxLength,length,infoLog){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _emscripten_glGetProgramiv(program,pname,p){if(!p){GL.recordError(1281);return}if(program>=GL.counter){GL.recordError(1281);return}var ptable=GL.programInfos[program];if(!ptable){GL.recordError(1282);return}if(pname==35716){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";HEAP32[p>>2]=log.length+1}else if(pname==35719){HEAP32[p>>2]=ptable.maxUniformLength}else if(pname==35722){if(ptable.maxAttributeLength==-1){program=GL.programs[program];var numAttribs=GLctx.getProgramParameter(program,35721);ptable.maxAttributeLength=0;for(var i=0;i<numAttribs;++i){var activeAttrib=GLctx.getActiveAttrib(program,i);ptable.maxAttributeLength=Math.max(ptable.maxAttributeLength,activeAttrib.name.length+1)}}HEAP32[p>>2]=ptable.maxAttributeLength}else if(pname==35381){if(ptable.maxUniformBlockNameLength==-1){program=GL.programs[program];var numBlocks=GLctx.getProgramParameter(program,35382);ptable.maxUniformBlockNameLength=0;for(var i=0;i<numBlocks;++i){var activeBlockName=GLctx.getActiveUniformBlockName(program,i);ptable.maxUniformBlockNameLength=Math.max(ptable.maxUniformBlockNameLength,activeBlockName.length+1)}}HEAP32[p>>2]=ptable.maxUniformBlockNameLength}else{HEAP32[p>>2]=GLctx.getProgramParameter(GL.programs[program],pname)}}function _emscripten_glGetQueryObjecti64vEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.timerQueriesEXT[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}writeI53ToI64(params,ret)}function _emscripten_glGetQueryObjectivEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.timerQueriesEXT[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}HEAP32[params>>2]=ret}function _emscripten_glGetQueryObjectui64vEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.timerQueriesEXT[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}writeI53ToI64(params,ret)}function _emscripten_glGetQueryObjectuivEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.timerQueriesEXT[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}HEAP32[params>>2]=ret}function _emscripten_glGetQueryivEXT(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.disjointTimerQueryExt["getQueryEXT"](target,pname)}function _emscripten_glGetRenderbufferParameteriv(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getRenderbufferParameter(target,pname)}function _emscripten_glGetShaderInfoLog(shader,maxLength,length,infoLog){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _emscripten_glGetShaderPrecisionFormat(shaderType,precisionType,range,precision){var result=GLctx.getShaderPrecisionFormat(shaderType,precisionType);HEAP32[range>>2]=result.rangeMin;HEAP32[range+4>>2]=result.rangeMax;HEAP32[precision>>2]=result.precision}function _emscripten_glGetShaderSource(shader,bufSize,length,source){var result=GLctx.getShaderSource(GL.shaders[shader]);if(!result)return;var numBytesWrittenExclNull=bufSize>0&&source?stringToUTF8(result,source,bufSize):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _emscripten_glGetShaderiv(shader,pname,p){if(!p){GL.recordError(1281);return}if(pname==35716){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var logLength=log?log.length+1:0;HEAP32[p>>2]=logLength}else if(pname==35720){var source=GLctx.getShaderSource(GL.shaders[shader]);var sourceLength=source?source.length+1:0;HEAP32[p>>2]=sourceLength}else{HEAP32[p>>2]=GLctx.getShaderParameter(GL.shaders[shader],pname)}}function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _emscripten_glGetString(name_){if(GL.stringCache[name_])return GL.stringCache[name_];var ret;switch(name_){case 7939:var exts=GLctx.getSupportedExtensions()||[];exts=exts.concat(exts.map(function(e){return"GL_"+e}));ret=stringToNewUTF8(exts.join(" "));break;case 7936:case 7937:case 37445:case 37446:var s=GLctx.getParameter(name_);if(!s){GL.recordError(1280)}ret=stringToNewUTF8(s);break;case 7938:var glVersion=GLctx.getParameter(7938);{glVersion="OpenGL ES 2.0 ("+glVersion+")"}ret=stringToNewUTF8(glVersion);break;case 35724:var glslVersion=GLctx.getParameter(35724);var ver_re=/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/;var ver_num=glslVersion.match(ver_re);if(ver_num!==null){if(ver_num[1].length==3)ver_num[1]=ver_num[1]+"0";glslVersion="OpenGL ES GLSL ES "+ver_num[1]+" ("+glslVersion+")"}ret=stringToNewUTF8(glslVersion);break;default:GL.recordError(1280);return 0}GL.stringCache[name_]=ret;return ret}function _emscripten_glGetTexParameterfv(target,pname,params){if(!params){GL.recordError(1281);return}HEAPF32[params>>2]=GLctx.getTexParameter(target,pname)}function _emscripten_glGetTexParameteriv(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getTexParameter(target,pname)}function jstoi_q(str){return parseInt(str)}function _emscripten_glGetUniformLocation(program,name){name=UTF8ToString(name);var arrayIndex=0;if(name[name.length-1]=="]"){var leftBrace=name.lastIndexOf("[");arrayIndex=name[leftBrace+1]!="]"?jstoi_q(name.slice(leftBrace+1)):0;name=name.slice(0,leftBrace)}var uniformInfo=GL.programInfos[program]&&GL.programInfos[program].uniforms[name];if(uniformInfo&&arrayIndex>=0&&arrayIndex<uniformInfo[0]){return uniformInfo[1]+arrayIndex}else{return-1}}function emscriptenWebGLGetUniform(program,location,params,type){if(!params){GL.recordError(1281);return}var data=GLctx.getUniform(GL.programs[program],GL.uniforms[location]);if(typeof data=="number"||typeof data=="boolean"){switch(type){case 0:HEAP32[params>>2]=data;break;case 2:HEAPF32[params>>2]=data;break}}else{for(var i=0;i<data.length;i++){switch(type){case 0:HEAP32[params+i*4>>2]=data[i];break;case 2:HEAPF32[params+i*4>>2]=data[i];break}}}}function _emscripten_glGetUniformfv(program,location,params){emscriptenWebGLGetUniform(program,location,params,2)}function _emscripten_glGetUniformiv(program,location,params){emscriptenWebGLGetUniform(program,location,params,0)}function _emscripten_glGetVertexAttribPointerv(index,pname,pointer){if(!pointer){GL.recordError(1281);return}HEAP32[pointer>>2]=GLctx.getVertexAttribOffset(index,pname)}function emscriptenWebGLGetVertexAttrib(index,pname,params,type){if(!params){GL.recordError(1281);return}var data=GLctx.getVertexAttrib(index,pname);if(pname==34975){HEAP32[params>>2]=data&&data["name"]}else if(typeof data=="number"||typeof data=="boolean"){switch(type){case 0:HEAP32[params>>2]=data;break;case 2:HEAPF32[params>>2]=data;break;case 5:HEAP32[params>>2]=Math.fround(data);break}}else{for(var i=0;i<data.length;i++){switch(type){case 0:HEAP32[params+i*4>>2]=data[i];break;case 2:HEAPF32[params+i*4>>2]=data[i];break;case 5:HEAP32[params+i*4>>2]=Math.fround(data[i]);break}}}}function _emscripten_glGetVertexAttribfv(index,pname,params){emscriptenWebGLGetVertexAttrib(index,pname,params,2)}function _emscripten_glGetVertexAttribiv(index,pname,params){emscriptenWebGLGetVertexAttrib(index,pname,params,5)}function _emscripten_glHint(x0,x1){GLctx["hint"](x0,x1)}function _emscripten_glIsBuffer(buffer){var b=GL.buffers[buffer];if(!b)return 0;return GLctx.isBuffer(b)}function _emscripten_glIsEnabled(x0){return GLctx["isEnabled"](x0)}function _emscripten_glIsFramebuffer(framebuffer){var fb=GL.framebuffers[framebuffer];if(!fb)return 0;return GLctx.isFramebuffer(fb)}function _emscripten_glIsProgram(program){program=GL.programs[program];if(!program)return 0;return GLctx.isProgram(program)}function _emscripten_glIsQueryEXT(id){var query=GL.timerQueriesEXT[id];if(!query)return 0;return GLctx.disjointTimerQueryExt["isQueryEXT"](query)}function _emscripten_glIsRenderbuffer(renderbuffer){var rb=GL.renderbuffers[renderbuffer];if(!rb)return 0;return GLctx.isRenderbuffer(rb)}function _emscripten_glIsShader(shader){var s=GL.shaders[shader];if(!s)return 0;return GLctx.isShader(s)}function _emscripten_glIsTexture(id){var texture=GL.textures[id];if(!texture)return 0;return GLctx.isTexture(texture)}function _emscripten_glIsVertexArrayOES(array){var vao=GL.vaos[array];if(!vao)return 0;return GLctx["isVertexArray"](vao)}function _emscripten_glLineWidth(x0){GLctx["lineWidth"](x0)}function _emscripten_glLinkProgram(program){GLctx.linkProgram(GL.programs[program]);GL.populateUniformTable(program)}function _emscripten_glPixelStorei(pname,param){if(pname==3317){GL.unpackAlignment=param}GLctx.pixelStorei(pname,param)}function _emscripten_glPolygonOffset(x0,x1){GLctx["polygonOffset"](x0,x1)}function _emscripten_glQueryCounterEXT(id,target){GLctx.disjointTimerQueryExt["queryCounterEXT"](GL.timerQueriesEXT[id],target)}function computeUnpackAlignedImageSize(width,height,sizePerPixel,alignment){function roundedToNextMultipleOf(x,y){return x+y-1&-y}var plainRowSize=width*sizePerPixel;var alignedRowSize=roundedToNextMultipleOf(plainRowSize,alignment);return height*alignedRowSize}function __colorChannelsInGlTextureFormat(format){var colorChannels={5:3,6:4,8:2,29502:3,29504:4};return colorChannels[format-6402]||1}function heapObjectForWebGLType(type){type-=5120;if(type==1)return HEAPU8;if(type==4)return HEAP32;if(type==6)return HEAPF32;if(type==5||type==28922)return HEAPU32;return HEAPU16}function heapAccessShiftForWebGLHeap(heap){return 31-Math.clz32(heap.BYTES_PER_ELEMENT)}function emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat){var heap=heapObjectForWebGLType(type);var shift=heapAccessShiftForWebGLHeap(heap);var byteSize=1<<shift;var sizePerPixel=__colorChannelsInGlTextureFormat(format)*byteSize;var bytes=computeUnpackAlignedImageSize(width,height,sizePerPixel,GL.unpackAlignment);return heap.subarray(pixels>>shift,pixels+bytes>>shift)}function _emscripten_glReadPixels(x,y,width,height,format,type,pixels){var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);return}GLctx.readPixels(x,y,width,height,format,type,pixelData)}function _emscripten_glReleaseShaderCompiler(){}function _emscripten_glRenderbufferStorage(x0,x1,x2,x3){GLctx["renderbufferStorage"](x0,x1,x2,x3)}function _emscripten_glSampleCoverage(value,invert){GLctx.sampleCoverage(value,!!invert)}function _emscripten_glScissor(x0,x1,x2,x3){GLctx["scissor"](x0,x1,x2,x3)}function _emscripten_glShaderBinary(){GL.recordError(1280)}function _emscripten_glShaderSource(shader,count,string,length){var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}function _emscripten_glStencilFunc(x0,x1,x2){GLctx["stencilFunc"](x0,x1,x2)}function _emscripten_glStencilFuncSeparate(x0,x1,x2,x3){GLctx["stencilFuncSeparate"](x0,x1,x2,x3)}function _emscripten_glStencilMask(x0){GLctx["stencilMask"](x0)}function _emscripten_glStencilMaskSeparate(x0,x1){GLctx["stencilMaskSeparate"](x0,x1)}function _emscripten_glStencilOp(x0,x1,x2){GLctx["stencilOp"](x0,x1,x2)}function _emscripten_glStencilOpSeparate(x0,x1,x2,x3){GLctx["stencilOpSeparate"](x0,x1,x2,x3)}function _emscripten_glTexImage2D(target,level,internalFormat,width,height,border,format,type,pixels){GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels?emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat):null)}function _emscripten_glTexParameterf(x0,x1,x2){GLctx["texParameterf"](x0,x1,x2)}function _emscripten_glTexParameterfv(target,pname,params){var param=HEAPF32[params>>2];GLctx.texParameterf(target,pname,param)}function _emscripten_glTexParameteri(x0,x1,x2){GLctx["texParameteri"](x0,x1,x2)}function _emscripten_glTexParameteriv(target,pname,params){var param=HEAP32[params>>2];GLctx.texParameteri(target,pname,param)}function _emscripten_glTexSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixels){var pixelData=null;if(pixels)pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,0);GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixelData)}function _emscripten_glUniform1f(location,v0){GLctx.uniform1f(GL.uniforms[location],v0)}var miniTempWebGLFloatBuffers=[];function _emscripten_glUniform1fv(location,count,value){if(count<=288){var view=miniTempWebGLFloatBuffers[count-1];for(var i=0;i<count;++i){view[i]=HEAPF32[value+4*i>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*4>>2)}GLctx.uniform1fv(GL.uniforms[location],view)}function _emscripten_glUniform1i(location,v0){GLctx.uniform1i(GL.uniforms[location],v0)}var __miniTempWebGLIntBuffers=[];function _emscripten_glUniform1iv(location,count,value){if(count<=288){var view=__miniTempWebGLIntBuffers[count-1];for(var i=0;i<count;++i){view[i]=HEAP32[value+4*i>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*4>>2)}GLctx.uniform1iv(GL.uniforms[location],view)}function _emscripten_glUniform2f(location,v0,v1){GLctx.uniform2f(GL.uniforms[location],v0,v1)}function _emscripten_glUniform2fv(location,count,value){if(count<=144){var view=miniTempWebGLFloatBuffers[2*count-1];for(var i=0;i<2*count;i+=2){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*8>>2)}GLctx.uniform2fv(GL.uniforms[location],view)}function _emscripten_glUniform2i(location,v0,v1){GLctx.uniform2i(GL.uniforms[location],v0,v1)}function _emscripten_glUniform2iv(location,count,value){if(count<=144){var view=__miniTempWebGLIntBuffers[2*count-1];for(var i=0;i<2*count;i+=2){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*8>>2)}GLctx.uniform2iv(GL.uniforms[location],view)}function _emscripten_glUniform3f(location,v0,v1,v2){GLctx.uniform3f(GL.uniforms[location],v0,v1,v2)}function _emscripten_glUniform3fv(location,count,value){if(count<=96){var view=miniTempWebGLFloatBuffers[3*count-1];for(var i=0;i<3*count;i+=3){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*12>>2)}GLctx.uniform3fv(GL.uniforms[location],view)}function _emscripten_glUniform3i(location,v0,v1,v2){GLctx.uniform3i(GL.uniforms[location],v0,v1,v2)}function _emscripten_glUniform3iv(location,count,value){if(count<=96){var view=__miniTempWebGLIntBuffers[3*count-1];for(var i=0;i<3*count;i+=3){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2];view[i+2]=HEAP32[value+(4*i+8)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*12>>2)}GLctx.uniform3iv(GL.uniforms[location],view)}function _emscripten_glUniform4f(location,v0,v1,v2,v3){GLctx.uniform4f(GL.uniforms[location],v0,v1,v2,v3)}function _emscripten_glUniform4fv(location,count,value){if(count<=72){var view=miniTempWebGLFloatBuffers[4*count-1];var heap=HEAPF32;value>>=2;for(var i=0;i<4*count;i+=4){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3]}}else{var view=HEAPF32.subarray(value>>2,value+count*16>>2)}GLctx.uniform4fv(GL.uniforms[location],view)}function _emscripten_glUniform4i(location,v0,v1,v2,v3){GLctx.uniform4i(GL.uniforms[location],v0,v1,v2,v3)}function _emscripten_glUniform4iv(location,count,value){if(count<=72){var view=__miniTempWebGLIntBuffers[4*count-1];for(var i=0;i<4*count;i+=4){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2];view[i+2]=HEAP32[value+(4*i+8)>>2];view[i+3]=HEAP32[value+(4*i+12)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*16>>2)}GLctx.uniform4iv(GL.uniforms[location],view)}function _emscripten_glUniformMatrix2fv(location,count,transpose,value){if(count<=72){var view=miniTempWebGLFloatBuffers[4*count-1];for(var i=0;i<4*count;i+=4){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2];view[i+3]=HEAPF32[value+(4*i+12)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*16>>2)}GLctx.uniformMatrix2fv(GL.uniforms[location],!!transpose,view)}function _emscripten_glUniformMatrix3fv(location,count,transpose,value){if(count<=32){var view=miniTempWebGLFloatBuffers[9*count-1];for(var i=0;i<9*count;i+=9){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2];view[i+3]=HEAPF32[value+(4*i+12)>>2];view[i+4]=HEAPF32[value+(4*i+16)>>2];view[i+5]=HEAPF32[value+(4*i+20)>>2];view[i+6]=HEAPF32[value+(4*i+24)>>2];view[i+7]=HEAPF32[value+(4*i+28)>>2];view[i+8]=HEAPF32[value+(4*i+32)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*36>>2)}GLctx.uniformMatrix3fv(GL.uniforms[location],!!transpose,view)}function _emscripten_glUniformMatrix4fv(location,count,transpose,value){if(count<=18){var view=miniTempWebGLFloatBuffers[16*count-1];var heap=HEAPF32;value>>=2;for(var i=0;i<16*count;i+=16){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3];view[i+4]=heap[dst+4];view[i+5]=heap[dst+5];view[i+6]=heap[dst+6];view[i+7]=heap[dst+7];view[i+8]=heap[dst+8];view[i+9]=heap[dst+9];view[i+10]=heap[dst+10];view[i+11]=heap[dst+11];view[i+12]=heap[dst+12];view[i+13]=heap[dst+13];view[i+14]=heap[dst+14];view[i+15]=heap[dst+15]}}else{var view=HEAPF32.subarray(value>>2,value+count*64>>2)}GLctx.uniformMatrix4fv(GL.uniforms[location],!!transpose,view)}function _emscripten_glUseProgram(program){GLctx.useProgram(GL.programs[program])}function _emscripten_glValidateProgram(program){GLctx.validateProgram(GL.programs[program])}function _emscripten_glVertexAttrib1f(x0,x1){GLctx["vertexAttrib1f"](x0,x1)}function _emscripten_glVertexAttrib1fv(index,v){GLctx.vertexAttrib1f(index,HEAPF32[v>>2])}function _emscripten_glVertexAttrib2f(x0,x1,x2){GLctx["vertexAttrib2f"](x0,x1,x2)}function _emscripten_glVertexAttrib2fv(index,v){GLctx.vertexAttrib2f(index,HEAPF32[v>>2],HEAPF32[v+4>>2])}function _emscripten_glVertexAttrib3f(x0,x1,x2,x3){GLctx["vertexAttrib3f"](x0,x1,x2,x3)}function _emscripten_glVertexAttrib3fv(index,v){GLctx.vertexAttrib3f(index,HEAPF32[v>>2],HEAPF32[v+4>>2],HEAPF32[v+8>>2])}function _emscripten_glVertexAttrib4f(x0,x1,x2,x3,x4){GLctx["vertexAttrib4f"](x0,x1,x2,x3,x4)}function _emscripten_glVertexAttrib4fv(index,v){GLctx.vertexAttrib4f(index,HEAPF32[v>>2],HEAPF32[v+4>>2],HEAPF32[v+8>>2],HEAPF32[v+12>>2])}function _emscripten_glVertexAttribDivisorANGLE(index,divisor){GLctx["vertexAttribDivisor"](index,divisor)}function _emscripten_glVertexAttribPointer(index,size,type,normalized,stride,ptr){GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}function _emscripten_glViewport(x0,x1,x2,x3){GLctx["viewport"](x0,x1,x2,x3)}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function abortOnCannotGrowMemory(requestedSize){abort("OOM")}function _emscripten_resize_heap(requestedSize){abortOnCannotGrowMemory(requestedSize)}function _emscripten_run_script(ptr){eval(UTF8ToString(ptr))}function _emscripten_sample_gamepad_data(){return(JSEvents.lastGamepadState=navigator.getGamepads?navigator.getGamepads():navigator.webkitGetGamepads?navigator.webkitGetGamepads():null)?0:-1}function fillMouseEventData(eventStruct,e,target){var idx=eventStruct>>2;HEAP32[idx+0]=e.screenX;HEAP32[idx+1]=e.screenY;HEAP32[idx+2]=e.clientX;HEAP32[idx+3]=e.clientY;HEAP32[idx+4]=e.ctrlKey;HEAP32[idx+5]=e.shiftKey;HEAP32[idx+6]=e.altKey;HEAP32[idx+7]=e.metaKey;HEAP16[idx*2+16]=e.button;HEAP16[idx*2+17]=e.buttons;HEAP32[idx+9]=e["movementX"];HEAP32[idx+10]=e["movementY"];var rect=getBoundingClientRect(target);HEAP32[idx+11]=e.clientX-rect.left;HEAP32[idx+12]=e.clientY-rect.top}function registerMouseEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.mouseEvent)JSEvents.mouseEvent=_malloc(64);target=findEventTarget(target);var mouseEventHandlerFunc=function(ev){var e=ev||event;fillMouseEventData(JSEvents.mouseEvent,e,target);if(wasmTable.get(callbackfunc)(eventTypeId,JSEvents.mouseEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:eventTypeString!="mousemove"&&eventTypeString!="mouseenter"&&eventTypeString!="mouseleave",eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:mouseEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_click_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,4,"click",targetThread);return 0}function fillFullscreenChangeEventData(eventStruct){var fullscreenElement=document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement||document.msFullscreenElement;var isFullscreen=!!fullscreenElement;HEAP32[eventStruct>>2]=isFullscreen;HEAP32[eventStruct+4>>2]=JSEvents.fullscreenEnabled();var reportedElement=isFullscreen?fullscreenElement:JSEvents.previousFullscreenElement;var nodeName=JSEvents.getNodeNameForTarget(reportedElement);var id=reportedElement&&reportedElement.id?reportedElement.id:"";stringToUTF8(nodeName,eventStruct+8,128);stringToUTF8(id,eventStruct+136,128);HEAP32[eventStruct+264>>2]=reportedElement?reportedElement.clientWidth:0;HEAP32[eventStruct+268>>2]=reportedElement?reportedElement.clientHeight:0;HEAP32[eventStruct+272>>2]=screen.width;HEAP32[eventStruct+276>>2]=screen.height;if(isFullscreen){JSEvents.previousFullscreenElement=fullscreenElement}}function registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.fullscreenChangeEvent)JSEvents.fullscreenChangeEvent=_malloc(280);var fullscreenChangeEventhandlerFunc=function(ev){var e=ev||event;var fullscreenChangeEvent=JSEvents.fullscreenChangeEvent;fillFullscreenChangeEventData(fullscreenChangeEvent);if(wasmTable.get(callbackfunc)(eventTypeId,fullscreenChangeEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:fullscreenChangeEventhandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_fullscreenchange_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){if(!JSEvents.fullscreenEnabled())return-1;target=findEventTarget(target);if(!target)return-4;registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,19,"fullscreenchange",targetThread);registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,19,"webkitfullscreenchange",targetThread);return 0}function registerGamepadEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.gamepadEvent)JSEvents.gamepadEvent=_malloc(1432);var gamepadEventHandlerFunc=function(ev){var e=ev||event;var gamepadEvent=JSEvents.gamepadEvent;fillGamepadEventData(gamepadEvent,e["gamepad"]);if(wasmTable.get(callbackfunc)(eventTypeId,gamepadEvent,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:gamepadEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_gamepadconnected_callback_on_thread(userData,useCapture,callbackfunc,targetThread){if(!navigator.getGamepads&&!navigator.webkitGetGamepads)return-1;registerGamepadEventCallback(2,userData,useCapture,callbackfunc,26,"gamepadconnected",targetThread);return 0}function _emscripten_set_gamepaddisconnected_callback_on_thread(userData,useCapture,callbackfunc,targetThread){if(!navigator.getGamepads&&!navigator.webkitGetGamepads)return-1;registerGamepadEventCallback(2,userData,useCapture,callbackfunc,27,"gamepaddisconnected",targetThread);return 0}function registerKeyEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.keyEvent)JSEvents.keyEvent=_malloc(164);var keyEventHandlerFunc=function(e){var keyEventData=JSEvents.keyEvent;var idx=keyEventData>>2;HEAP32[idx+0]=e.location;HEAP32[idx+1]=e.ctrlKey;HEAP32[idx+2]=e.shiftKey;HEAP32[idx+3]=e.altKey;HEAP32[idx+4]=e.metaKey;HEAP32[idx+5]=e.repeat;HEAP32[idx+6]=e.charCode;HEAP32[idx+7]=e.keyCode;HEAP32[idx+8]=e.which;stringToUTF8(e.key||"",keyEventData+36,32);stringToUTF8(e.code||"",keyEventData+68,32);stringToUTF8(e.char||"",keyEventData+100,32);stringToUTF8(e.locale||"",keyEventData+132,32);if(wasmTable.get(callbackfunc)(eventTypeId,keyEventData,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:keyEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_keydown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,2,"keydown",targetThread);return 0}var Browser={mainLoop:{scheduler:null,method:"",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause:function(){Browser.mainLoop.scheduler=null;Browser.mainLoop.currentlyRunningMainloop++},resume:function(){Browser.mainLoop.currentlyRunningMainloop++;var timingMode=Browser.mainLoop.timingMode;var timingValue=Browser.mainLoop.timingValue;var func=Browser.mainLoop.func;Browser.mainLoop.func=null;setMainLoop(func,0,false,Browser.mainLoop.arg,true);_emscripten_set_main_loop_timing(timingMode,timingValue);Browser.mainLoop.scheduler()},updateStatus:function(){if(Module["setStatus"]){var message=Module["statusMessage"]||"Please wait...";var remaining=Browser.mainLoop.remainingBlockers;var expected=Browser.mainLoop.expectedBlockers;if(remaining){if(remaining<expected){Module["setStatus"](message+" ("+(expected-remaining)+"/"+expected+")")}else{Module["setStatus"](message)}}else{Module["setStatus"]("")}}},runIter:function(func){if(ABORT)return;if(Module["preMainLoop"]){var preRet=Module["preMainLoop"]();if(preRet===false){return}}try{func()}catch(e){if(e instanceof ExitStatus){return}else if(e=="unwind"){return}else{if(e&&typeof e==="object"&&e.stack)err("exception thrown: "+[e,e.stack]);throw e}}if(Module["postMainLoop"])Module["postMainLoop"]()}},isFullscreen:false,pointerLock:false,moduleContextCreatedCallbacks:[],workers:[],init:function(){if(!Module["preloadPlugins"])Module["preloadPlugins"]=[];if(Browser.initted)return;Browser.initted=true;try{new Blob;Browser.hasBlobConstructor=true}catch(e){Browser.hasBlobConstructor=false;console.log("warning: no blob constructor, cannot create blobs with mimetypes")}Browser.BlobBuilder=typeof MozBlobBuilder!="undefined"?MozBlobBuilder:typeof WebKitBlobBuilder!="undefined"?WebKitBlobBuilder:!Browser.hasBlobConstructor?console.log("warning: no BlobBuilder"):null;Browser.URLObject=typeof window!="undefined"?window.URL?window.URL:window.webkitURL:undefined;if(!Module.noImageDecoding&&typeof Browser.URLObject==="undefined"){console.log("warning: Browser does not support creating object URLs. Built-in browser image decoding will not be available.");Module.noImageDecoding=true}var imagePlugin={};imagePlugin["canHandle"]=function imagePlugin_canHandle(name){return!Module.noImageDecoding&&/\.(jpg|jpeg|png|bmp)$/i.test(name)};imagePlugin["handle"]=function imagePlugin_handle(byteArray,name,onload,onerror){var b=null;if(Browser.hasBlobConstructor){try{b=new Blob([byteArray],{type:Browser.getMimetype(name)});if(b.size!==byteArray.length){b=new Blob([new Uint8Array(byteArray).buffer],{type:Browser.getMimetype(name)})}}catch(e){warnOnce("Blob constructor present but fails: "+e+"; falling back to blob builder")}}if(!b){var bb=new Browser.BlobBuilder;bb.append(new Uint8Array(byteArray).buffer);b=bb.getBlob()}var url=Browser.URLObject.createObjectURL(b);var img=new Image;img.onload=function img_onload(){assert(img.complete,"Image "+name+" could not be decoded");var canvas=document.createElement("canvas");canvas.width=img.width;canvas.height=img.height;var ctx=canvas.getContext("2d");ctx.drawImage(img,0,0);Module["preloadedImages"][name]=canvas;Browser.URLObject.revokeObjectURL(url);if(onload)onload(byteArray)};img.onerror=function img_onerror(event){console.log("Image "+url+" could not be decoded");if(onerror)onerror()};img.src=url};Module["preloadPlugins"].push(imagePlugin);var audioPlugin={};audioPlugin["canHandle"]=function audioPlugin_canHandle(name){return!Module.noAudioDecoding&&name.substr(-4)in{".ogg":1,".wav":1,".mp3":1}};audioPlugin["handle"]=function audioPlugin_handle(byteArray,name,onload,onerror){var done=false;function finish(audio){if(done)return;done=true;Module["preloadedAudios"][name]=audio;if(onload)onload(byteArray)}function fail(){if(done)return;done=true;Module["preloadedAudios"][name]=new Audio;if(onerror)onerror()}if(Browser.hasBlobConstructor){try{var b=new Blob([byteArray],{type:Browser.getMimetype(name)})}catch(e){return fail()}var url=Browser.URLObject.createObjectURL(b);var audio=new Audio;audio.addEventListener("canplaythrough",function(){finish(audio)},false);audio.onerror=function audio_onerror(event){if(done)return;console.log("warning: browser could not fully decode audio "+name+", trying slower base64 approach");function encode64(data){var BASE="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var PAD="=";var ret="";var leftchar=0;var leftbits=0;for(var i=0;i<data.length;i++){leftchar=leftchar<<8|data[i];leftbits+=8;while(leftbits>=6){var curr=leftchar>>leftbits-6&63;leftbits-=6;ret+=BASE[curr]}}if(leftbits==2){ret+=BASE[(leftchar&3)<<4];ret+=PAD+PAD}else if(leftbits==4){ret+=BASE[(leftchar&15)<<2];ret+=PAD}return ret}audio.src="data:audio/x-"+name.substr(-3)+";base64,"+encode64(byteArray);finish(audio)};audio.src=url;Browser.safeSetTimeout(function(){finish(audio)},1e4)}else{return fail()}};Module["preloadPlugins"].push(audioPlugin);function pointerLockChange(){Browser.pointerLock=document["pointerLockElement"]===Module["canvas"]||document["mozPointerLockElement"]===Module["canvas"]||document["webkitPointerLockElement"]===Module["canvas"]||document["msPointerLockElement"]===Module["canvas"]}var canvas=Module["canvas"];if(canvas){canvas.requestPointerLock=canvas["requestPointerLock"]||canvas["mozRequestPointerLock"]||canvas["webkitRequestPointerLock"]||canvas["msRequestPointerLock"]||function(){};canvas.exitPointerLock=document["exitPointerLock"]||document["mozExitPointerLock"]||document["webkitExitPointerLock"]||document["msExitPointerLock"]||function(){};canvas.exitPointerLock=canvas.exitPointerLock.bind(document);document.addEventListener("pointerlockchange",pointerLockChange,false);document.addEventListener("mozpointerlockchange",pointerLockChange,false);document.addEventListener("webkitpointerlockchange",pointerLockChange,false);document.addEventListener("mspointerlockchange",pointerLockChange,false);if(Module["elementPointerLock"]){canvas.addEventListener("click",function(ev){if(!Browser.pointerLock&&Module["canvas"].requestPointerLock){Module["canvas"].requestPointerLock();ev.preventDefault()}},false)}}},createContext:function(canvas,useWebGL,setInModule,webGLContextAttributes){if(useWebGL&&Module.ctx&&canvas==Module.canvas)return Module.ctx;var ctx;var contextHandle;if(useWebGL){var contextAttributes={antialias:false,alpha:false,majorVersion:1};if(webGLContextAttributes){for(var attribute in webGLContextAttributes){contextAttributes[attribute]=webGLContextAttributes[attribute]}}if(typeof GL!=="undefined"){contextHandle=GL.createContext(canvas,contextAttributes);if(contextHandle){ctx=GL.getContext(contextHandle).GLctx}}}else{ctx=canvas.getContext("2d")}if(!ctx)return null;if(setInModule){if(!useWebGL)assert(typeof GLctx==="undefined","cannot set in module if GLctx is used, but we are a non-GL context that would replace it");Module.ctx=ctx;if(useWebGL)GL.makeContextCurrent(contextHandle);Module.useWebGL=useWebGL;Browser.moduleContextCreatedCallbacks.forEach(function(callback){callback()});Browser.init()}return ctx},destroyContext:function(canvas,useWebGL,setInModule){},fullscreenHandlersInstalled:false,lockPointer:undefined,resizeCanvas:undefined,requestFullscreen:function(lockPointer,resizeCanvas){Browser.lockPointer=lockPointer;Browser.resizeCanvas=resizeCanvas;if(typeof Browser.lockPointer==="undefined")Browser.lockPointer=true;if(typeof Browser.resizeCanvas==="undefined")Browser.resizeCanvas=false;var canvas=Module["canvas"];function fullscreenChange(){Browser.isFullscreen=false;var canvasContainer=canvas.parentNode;if((document["fullscreenElement"]||document["mozFullScreenElement"]||document["msFullscreenElement"]||document["webkitFullscreenElement"]||document["webkitCurrentFullScreenElement"])===canvasContainer){canvas.exitFullscreen=Browser.exitFullscreen;if(Browser.lockPointer)canvas.requestPointerLock();Browser.isFullscreen=true;if(Browser.resizeCanvas){Browser.setFullscreenCanvasSize()}else{Browser.updateCanvasDimensions(canvas)}}else{canvasContainer.parentNode.insertBefore(canvas,canvasContainer);canvasContainer.parentNode.removeChild(canvasContainer);if(Browser.resizeCanvas){Browser.setWindowedCanvasSize()}else{Browser.updateCanvasDimensions(canvas)}}if(Module["onFullScreen"])Module["onFullScreen"](Browser.isFullscreen);if(Module["onFullscreen"])Module["onFullscreen"](Browser.isFullscreen)}if(!Browser.fullscreenHandlersInstalled){Browser.fullscreenHandlersInstalled=true;document.addEventListener("fullscreenchange",fullscreenChange,false);document.addEventListener("mozfullscreenchange",fullscreenChange,false);document.addEventListener("webkitfullscreenchange",fullscreenChange,false);document.addEventListener("MSFullscreenChange",fullscreenChange,false)}var canvasContainer=document.createElement("div");canvas.parentNode.insertBefore(canvasContainer,canvas);canvasContainer.appendChild(canvas);canvasContainer.requestFullscreen=canvasContainer["requestFullscreen"]||canvasContainer["mozRequestFullScreen"]||canvasContainer["msRequestFullscreen"]||(canvasContainer["webkitRequestFullscreen"]?function(){canvasContainer["webkitRequestFullscreen"](Element["ALLOW_KEYBOARD_INPUT"])}:null)||(canvasContainer["webkitRequestFullScreen"]?function(){canvasContainer["webkitRequestFullScreen"](Element["ALLOW_KEYBOARD_INPUT"])}:null);canvasContainer.requestFullscreen()},exitFullscreen:function(){if(!Browser.isFullscreen){return false}var CFS=document["exitFullscreen"]||document["cancelFullScreen"]||document["mozCancelFullScreen"]||document["msExitFullscreen"]||document["webkitCancelFullScreen"]||function(){};CFS.apply(document,[]);return true},nextRAF:0,fakeRequestAnimationFrame:function(func){var now=Date.now();if(Browser.nextRAF===0){Browser.nextRAF=now+1e3/60}else{while(now+2>=Browser.nextRAF){Browser.nextRAF+=1e3/60}}var delay=Math.max(Browser.nextRAF-now,0);setTimeout(func,delay)},requestAnimationFrame:function(func){if(typeof requestAnimationFrame==="function"){requestAnimationFrame(func);return}var RAF=Browser.fakeRequestAnimationFrame;RAF(func)},safeRequestAnimationFrame:function(func){return Browser.requestAnimationFrame(function(){if(ABORT)return;func()})},safeSetTimeout:function(func,timeout){noExitRuntime=true;return setTimeout(function(){if(ABORT)return;func()},timeout)},getMimetype:function(name){return{"jpg":"image/jpeg","jpeg":"image/jpeg","png":"image/png","bmp":"image/bmp","ogg":"audio/ogg","wav":"audio/wav","mp3":"audio/mpeg"}[name.substr(name.lastIndexOf(".")+1)]},getUserMedia:function(func){if(!window.getUserMedia){window.getUserMedia=navigator["getUserMedia"]||navigator["mozGetUserMedia"]}window.getUserMedia(func)},getMovementX:function(event){return event["movementX"]||event["mozMovementX"]||event["webkitMovementX"]||0},getMovementY:function(event){return event["movementY"]||event["mozMovementY"]||event["webkitMovementY"]||0},getMouseWheelDelta:function(event){var delta=0;switch(event.type){case"DOMMouseScroll":delta=event.detail/3;break;case"mousewheel":delta=event.wheelDelta/120;break;case"wheel":delta=event.deltaY;switch(event.deltaMode){case 0:delta/=100;break;case 1:delta/=3;break;case 2:delta*=80;break;default:throw"unrecognized mouse wheel delta mode: "+event.deltaMode}break;default:throw"unrecognized mouse wheel event: "+event.type}return delta},mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,touches:{},lastTouches:{},calculateMouseEvent:function(event){if(Browser.pointerLock){if(event.type!="mousemove"&&"mozMovementX"in event){Browser.mouseMovementX=Browser.mouseMovementY=0}else{Browser.mouseMovementX=Browser.getMovementX(event);Browser.mouseMovementY=Browser.getMovementY(event)}if(typeof SDL!="undefined"){Browser.mouseX=SDL.mouseX+Browser.mouseMovementX;Browser.mouseY=SDL.mouseY+Browser.mouseMovementY}else{Browser.mouseX+=Browser.mouseMovementX;Browser.mouseY+=Browser.mouseMovementY}}else{var rect=Module["canvas"].getBoundingClientRect();var cw=Module["canvas"].width;var ch=Module["canvas"].height;var scrollX=typeof window.scrollX!=="undefined"?window.scrollX:window.pageXOffset;var scrollY=typeof window.scrollY!=="undefined"?window.scrollY:window.pageYOffset;if(event.type==="touchstart"||event.type==="touchend"||event.type==="touchmove"){var touch=event.touch;if(touch===undefined){return}var adjustedX=touch.pageX-(scrollX+rect.left);var adjustedY=touch.pageY-(scrollY+rect.top);adjustedX=adjustedX*(cw/rect.width);adjustedY=adjustedY*(ch/rect.height);var coords={x:adjustedX,y:adjustedY};if(event.type==="touchstart"){Browser.lastTouches[touch.identifier]=coords;Browser.touches[touch.identifier]=coords}else if(event.type==="touchend"||event.type==="touchmove"){var last=Browser.touches[touch.identifier];if(!last)last=coords;Browser.lastTouches[touch.identifier]=last;Browser.touches[touch.identifier]=coords}return}var x=event.pageX-(scrollX+rect.left);var y=event.pageY-(scrollY+rect.top);x=x*(cw/rect.width);y=y*(ch/rect.height);Browser.mouseMovementX=x-Browser.mouseX;Browser.mouseMovementY=y-Browser.mouseY;Browser.mouseX=x;Browser.mouseY=y}},asyncLoad:function(url,onload,onerror,noRunDep){var dep=!noRunDep?getUniqueRunDependency("al "+url):"";readAsync(url,function(arrayBuffer){assert(arrayBuffer,'Loading data file "'+url+'" failed (no arrayBuffer).');onload(new Uint8Array(arrayBuffer));if(dep)removeRunDependency(dep)},function(event){if(onerror){onerror()}else{throw'Loading data file "'+url+'" failed.'}});if(dep)addRunDependency(dep)},resizeListeners:[],updateResizeListeners:function(){var canvas=Module["canvas"];Browser.resizeListeners.forEach(function(listener){listener(canvas.width,canvas.height)})},setCanvasSize:function(width,height,noUpdates){var canvas=Module["canvas"];Browser.updateCanvasDimensions(canvas,width,height);if(!noUpdates)Browser.updateResizeListeners()},windowedWidth:0,windowedHeight:0,setFullscreenCanvasSize:function(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>2];flags=flags|8388608;HEAP32[SDL.screen>>2]=flags}Browser.updateCanvasDimensions(Module["canvas"]);Browser.updateResizeListeners()},setWindowedCanvasSize:function(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>2];flags=flags&~8388608;HEAP32[SDL.screen>>2]=flags}Browser.updateCanvasDimensions(Module["canvas"]);Browser.updateResizeListeners()},updateCanvasDimensions:function(canvas,wNative,hNative){if(wNative&&hNative){canvas.widthNative=wNative;canvas.heightNative=hNative}else{wNative=canvas.widthNative;hNative=canvas.heightNative}var w=wNative;var h=hNative;if(Module["forcedAspectRatio"]&&Module["forcedAspectRatio"]>0){if(w/h<Module["forcedAspectRatio"]){w=Math.round(h*Module["forcedAspectRatio"])}else{h=Math.round(w/Module["forcedAspectRatio"])}}if((document["fullscreenElement"]||document["mozFullScreenElement"]||document["msFullscreenElement"]||document["webkitFullscreenElement"]||document["webkitCurrentFullScreenElement"])===canvas.parentNode&&typeof screen!="undefined"){var factor=Math.min(screen.width/w,screen.height/h);w=Math.round(w*factor);h=Math.round(h*factor)}if(Browser.resizeCanvas){if(canvas.width!=w)canvas.width=w;if(canvas.height!=h)canvas.height=h;if(typeof canvas.style!="undefined"){canvas.style.removeProperty("width");canvas.style.removeProperty("height")}}else{if(canvas.width!=wNative)canvas.width=wNative;if(canvas.height!=hNative)canvas.height=hNative;if(typeof canvas.style!="undefined"){if(w!=wNative||h!=hNative){canvas.style.setProperty("width",w+"px","important");canvas.style.setProperty("height",h+"px","important")}else{canvas.style.removeProperty("width");canvas.style.removeProperty("height")}}}},wgetRequests:{},nextWgetRequestHandle:0,getNextWgetRequestHandle:function(){var handle=Browser.nextWgetRequestHandle;Browser.nextWgetRequestHandle++;return handle}};function _emscripten_set_main_loop_timing(mode,value){Browser.mainLoop.timingMode=mode;Browser.mainLoop.timingValue=value;if(!Browser.mainLoop.func){return 1}if(mode==0){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setTimeout(){var timeUntilNextTick=Math.max(0,Browser.mainLoop.tickStartTime+value-_emscripten_get_now())|0;setTimeout(Browser.mainLoop.runner,timeUntilNextTick)};Browser.mainLoop.method="timeout"}else if(mode==1){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_rAF(){Browser.requestAnimationFrame(Browser.mainLoop.runner)};Browser.mainLoop.method="rAF"}else if(mode==2){if(typeof setImmediate==="undefined"){var setImmediates=[];var emscriptenMainLoopMessageId="setimmediate";var Browser_setImmediate_messageHandler=function(event){if(event.data===emscriptenMainLoopMessageId||event.data.target===emscriptenMainLoopMessageId){event.stopPropagation();setImmediates.shift()()}};addEventListener("message",Browser_setImmediate_messageHandler,true);setImmediate=function Browser_emulated_setImmediate(func){setImmediates.push(func);if(ENVIRONMENT_IS_WORKER){if(Module["setImmediates"]===undefined)Module["setImmediates"]=[];Module["setImmediates"].push(func);postMessage({target:emscriptenMainLoopMessageId})}else postMessage(emscriptenMainLoopMessageId,"*")}}Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setImmediate(){setImmediate(Browser.mainLoop.runner)};Browser.mainLoop.method="immediate"}return 0}var _emscripten_get_now;if(ENVIRONMENT_IS_NODE){_emscripten_get_now=function(){var t=process["hrtime"]();return t[0]*1e3+t[1]/1e6}}else if(typeof dateNow!=="undefined"){_emscripten_get_now=dateNow}else _emscripten_get_now=function(){return performance.now()};function setMainLoop(browserIterationFunc,fps,simulateInfiniteLoop,arg,noSetTiming){noExitRuntime=true;assert(!Browser.mainLoop.func,"emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters.");Browser.mainLoop.func=browserIterationFunc;Browser.mainLoop.arg=arg;var thisMainLoopId=Browser.mainLoop.currentlyRunningMainloop;Browser.mainLoop.runner=function Browser_mainLoop_runner(){if(ABORT)return;if(Browser.mainLoop.queue.length>0){var start=Date.now();var blocker=Browser.mainLoop.queue.shift();blocker.func(blocker.arg);if(Browser.mainLoop.remainingBlockers){var remaining=Browser.mainLoop.remainingBlockers;var next=remaining%1==0?remaining-1:Math.floor(remaining);if(blocker.counted){Browser.mainLoop.remainingBlockers=next}else{next=next+.5;Browser.mainLoop.remainingBlockers=(8*remaining+next)/9}}console.log('main loop blocker "'+blocker.name+'" took '+(Date.now()-start)+" ms");Browser.mainLoop.updateStatus();if(thisMainLoopId<Browser.mainLoop.currentlyRunningMainloop)return;setTimeout(Browser.mainLoop.runner,0);return}if(thisMainLoopId<Browser.mainLoop.currentlyRunningMainloop)return;Browser.mainLoop.currentFrameNumber=Browser.mainLoop.currentFrameNumber+1|0;if(Browser.mainLoop.timingMode==1&&Browser.mainLoop.timingValue>1&&Browser.mainLoop.currentFrameNumber%Browser.mainLoop.timingValue!=0){Browser.mainLoop.scheduler();return}else if(Browser.mainLoop.timingMode==0){Browser.mainLoop.tickStartTime=_emscripten_get_now()}Browser.mainLoop.runIter(browserIterationFunc);if(thisMainLoopId<Browser.mainLoop.currentlyRunningMainloop)return;if(typeof SDL==="object"&&SDL.audio&&SDL.audio.queueNewAudioData)SDL.audio.queueNewAudioData();Browser.mainLoop.scheduler()};if(!noSetTiming){if(fps&&fps>0)_emscripten_set_main_loop_timing(0,1e3/fps);else _emscripten_set_main_loop_timing(1,1);Browser.mainLoop.scheduler()}if(simulateInfiniteLoop){throw"unwind"}}function _emscripten_set_main_loop(func,fps,simulateInfiniteLoop){var browserIterationFunc=wasmTable.get(func);setMainLoop(browserIterationFunc,fps,simulateInfiniteLoop)}function registerTouchEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.touchEvent)JSEvents.touchEvent=_malloc(1684);target=findEventTarget(target);var touchEventHandlerFunc=function(e){var touches={};var et=e.touches;for(var i=0;i<et.length;++i){var touch=et[i];touches[touch.identifier]=touch}et=e.changedTouches;for(var i=0;i<et.length;++i){var touch=et[i];touch.isChanged=1;touches[touch.identifier]=touch}et=e.targetTouches;for(var i=0;i<et.length;++i){touches[et[i].identifier].onTarget=1}var touchEvent=JSEvents.touchEvent;var idx=touchEvent>>2;HEAP32[idx+1]=e.ctrlKey;HEAP32[idx+2]=e.shiftKey;HEAP32[idx+3]=e.altKey;HEAP32[idx+4]=e.metaKey;idx+=5;var targetRect=getBoundingClientRect(target);var numTouches=0;for(var i in touches){var t=touches[i];HEAP32[idx+0]=t.identifier;HEAP32[idx+1]=t.screenX;HEAP32[idx+2]=t.screenY;HEAP32[idx+3]=t.clientX;HEAP32[idx+4]=t.clientY;HEAP32[idx+5]=t.pageX;HEAP32[idx+6]=t.pageY;HEAP32[idx+7]=t.isChanged;HEAP32[idx+8]=t.onTarget;HEAP32[idx+9]=t.clientX-targetRect.left;HEAP32[idx+10]=t.clientY-targetRect.top;idx+=13;if(++numTouches>31){break}}HEAP32[touchEvent>>2]=numTouches;if(wasmTable.get(callbackfunc)(eventTypeId,touchEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:eventTypeString=="touchstart"||eventTypeString=="touchend",eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:touchEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_touchcancel_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerTouchEventCallback(target,userData,useCapture,callbackfunc,25,"touchcancel",targetThread);return 0}function _emscripten_set_touchend_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerTouchEventCallback(target,userData,useCapture,callbackfunc,23,"touchend",targetThread);return 0}function _emscripten_set_touchmove_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerTouchEventCallback(target,userData,useCapture,callbackfunc,24,"touchmove",targetThread);return 0}function _emscripten_set_touchstart_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerTouchEventCallback(target,userData,useCapture,callbackfunc,22,"touchstart",targetThread);return 0}function _emscripten_thread_sleep(msecs){var start=_emscripten_get_now();while(_emscripten_get_now()-start<msecs){}}function _exit(status){exit(status)}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_read(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doReadv(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var stream=SYSCALLS.getStreamFromFD(fd);var HIGH_OFFSET=4294967296;var offset=offset_high*HIGH_OFFSET+(offset_low>>>0);var DOUBLE_LIMIT=9007199254740992;if(offset<=-DOUBLE_LIMIT||offset>=DOUBLE_LIMIT){return-61}FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doWritev(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _glActiveTexture(x0){GLctx["activeTexture"](x0)}function _glAttachShader(program,shader){GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _glBindAttribLocation(program,index,name){GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))}function _glBindBuffer(target,buffer){GLctx.bindBuffer(target,GL.buffers[buffer])}function _glBindTexture(target,texture){GLctx.bindTexture(target,GL.textures[texture])}function _glBlendFunc(x0,x1){GLctx["blendFunc"](x0,x1)}function _glBufferData(target,size,data,usage){GLctx.bufferData(target,data?HEAPU8.subarray(data,data+size):size,usage)}function _glBufferSubData(target,offset,size,data){GLctx.bufferSubData(target,offset,HEAPU8.subarray(data,data+size))}function _glClear(x0){GLctx["clear"](x0)}function _glClearColor(x0,x1,x2,x3){GLctx["clearColor"](x0,x1,x2,x3)}function _glClearDepthf(x0){GLctx["clearDepth"](x0)}function _glCompileShader(shader){GLctx.compileShader(GL.shaders[shader])}function _glCompressedTexImage2D(target,level,internalFormat,width,height,border,imageSize,data){GLctx["compressedTexImage2D"](target,level,internalFormat,width,height,border,data?HEAPU8.subarray(data,data+imageSize):null)}function _glCreateProgram(){var id=GL.getNewId(GL.programs);var program=GLctx.createProgram();program.name=id;GL.programs[id]=program;return id}function _glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}function _glCullFace(x0){GLctx["cullFace"](x0)}function _glDeleteBuffers(n,buffers){for(var i=0;i<n;i++){var id=HEAP32[buffers+i*4>>2];var buffer=GL.buffers[id];if(!buffer)continue;GLctx.deleteBuffer(buffer);buffer.name=0;GL.buffers[id]=null}}function _glDeleteProgram(id){if(!id)return;var program=GL.programs[id];if(!program){GL.recordError(1281);return}GLctx.deleteProgram(program);program.name=0;GL.programs[id]=null;GL.programInfos[id]=null}function _glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}function _glDeleteTextures(n,textures){for(var i=0;i<n;i++){var id=HEAP32[textures+i*4>>2];var texture=GL.textures[id];if(!texture)continue;GLctx.deleteTexture(texture);texture.name=0;GL.textures[id]=null}}function _glDepthFunc(x0){GLctx["depthFunc"](x0)}function _glDetachShader(program,shader){GLctx.detachShader(GL.programs[program],GL.shaders[shader])}function _glDisable(x0){GLctx["disable"](x0)}function _glDisableVertexAttribArray(index){GLctx.disableVertexAttribArray(index)}function _glDrawArrays(mode,first,count){GLctx.drawArrays(mode,first,count)}function _glDrawElements(mode,count,type,indices){GLctx.drawElements(mode,count,type,indices)}function _glEnable(x0){GLctx["enable"](x0)}function _glEnableVertexAttribArray(index){GLctx.enableVertexAttribArray(index)}function _glFrontFace(x0){GLctx["frontFace"](x0)}function _glGenBuffers(n,buffers){__glGenObject(n,buffers,"createBuffer",GL.buffers)}function _glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures)}function _glGetAttribLocation(program,name){return GLctx.getAttribLocation(GL.programs[program],UTF8ToString(name))}function _glGetFloatv(name_,p){emscriptenWebGLGet(name_,p,2)}function _glGetProgramInfoLog(program,maxLength,length,infoLog){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _glGetProgramiv(program,pname,p){if(!p){GL.recordError(1281);return}if(program>=GL.counter){GL.recordError(1281);return}var ptable=GL.programInfos[program];if(!ptable){GL.recordError(1282);return}if(pname==35716){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";HEAP32[p>>2]=log.length+1}else if(pname==35719){HEAP32[p>>2]=ptable.maxUniformLength}else if(pname==35722){if(ptable.maxAttributeLength==-1){program=GL.programs[program];var numAttribs=GLctx.getProgramParameter(program,35721);ptable.maxAttributeLength=0;for(var i=0;i<numAttribs;++i){var activeAttrib=GLctx.getActiveAttrib(program,i);ptable.maxAttributeLength=Math.max(ptable.maxAttributeLength,activeAttrib.name.length+1)}}HEAP32[p>>2]=ptable.maxAttributeLength}else if(pname==35381){if(ptable.maxUniformBlockNameLength==-1){program=GL.programs[program];var numBlocks=GLctx.getProgramParameter(program,35382);ptable.maxUniformBlockNameLength=0;for(var i=0;i<numBlocks;++i){var activeBlockName=GLctx.getActiveUniformBlockName(program,i);ptable.maxUniformBlockNameLength=Math.max(ptable.maxUniformBlockNameLength,activeBlockName.length+1)}}HEAP32[p>>2]=ptable.maxUniformBlockNameLength}else{HEAP32[p>>2]=GLctx.getProgramParameter(GL.programs[program],pname)}}function _glGetShaderInfoLog(shader,maxLength,length,infoLog){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _glGetShaderiv(shader,pname,p){if(!p){GL.recordError(1281);return}if(pname==35716){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var logLength=log?log.length+1:0;HEAP32[p>>2]=logLength}else if(pname==35720){var source=GLctx.getShaderSource(GL.shaders[shader]);var sourceLength=source?source.length+1:0;HEAP32[p>>2]=sourceLength}else{HEAP32[p>>2]=GLctx.getShaderParameter(GL.shaders[shader],pname)}}function _glGetString(name_){if(GL.stringCache[name_])return GL.stringCache[name_];var ret;switch(name_){case 7939:var exts=GLctx.getSupportedExtensions()||[];exts=exts.concat(exts.map(function(e){return"GL_"+e}));ret=stringToNewUTF8(exts.join(" "));break;case 7936:case 7937:case 37445:case 37446:var s=GLctx.getParameter(name_);if(!s){GL.recordError(1280)}ret=stringToNewUTF8(s);break;case 7938:var glVersion=GLctx.getParameter(7938);{glVersion="OpenGL ES 2.0 ("+glVersion+")"}ret=stringToNewUTF8(glVersion);break;case 35724:var glslVersion=GLctx.getParameter(35724);var ver_re=/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/;var ver_num=glslVersion.match(ver_re);if(ver_num!==null){if(ver_num[1].length==3)ver_num[1]=ver_num[1]+"0";glslVersion="OpenGL ES GLSL ES "+ver_num[1]+" ("+glslVersion+")"}ret=stringToNewUTF8(glslVersion);break;default:GL.recordError(1280);return 0}GL.stringCache[name_]=ret;return ret}function _glGetUniformLocation(program,name){name=UTF8ToString(name);var arrayIndex=0;if(name[name.length-1]=="]"){var leftBrace=name.lastIndexOf("[");arrayIndex=name[leftBrace+1]!="]"?jstoi_q(name.slice(leftBrace+1)):0;name=name.slice(0,leftBrace)}var uniformInfo=GL.programInfos[program]&&GL.programInfos[program].uniforms[name];if(uniformInfo&&arrayIndex>=0&&arrayIndex<uniformInfo[0]){return uniformInfo[1]+arrayIndex}else{return-1}}function _glLinkProgram(program){GLctx.linkProgram(GL.programs[program]);GL.populateUniformTable(program)}function _glPixelStorei(pname,param){if(pname==3317){GL.unpackAlignment=param}GLctx.pixelStorei(pname,param)}function _glReadPixels(x,y,width,height,format,type,pixels){var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);return}GLctx.readPixels(x,y,width,height,format,type,pixelData)}function _glShaderSource(shader,count,string,length){var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}function _glTexImage2D(target,level,internalFormat,width,height,border,format,type,pixels){GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels?emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat):null)}function _glTexParameteri(x0,x1,x2){GLctx["texParameteri"](x0,x1,x2)}function _glUniform1i(location,v0){GLctx.uniform1i(GL.uniforms[location],v0)}function _glUniform4f(location,v0,v1,v2,v3){GLctx.uniform4f(GL.uniforms[location],v0,v1,v2,v3)}function _glUniformMatrix4fv(location,count,transpose,value){if(count<=18){var view=miniTempWebGLFloatBuffers[16*count-1];var heap=HEAPF32;value>>=2;for(var i=0;i<16*count;i+=16){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3];view[i+4]=heap[dst+4];view[i+5]=heap[dst+5];view[i+6]=heap[dst+6];view[i+7]=heap[dst+7];view[i+8]=heap[dst+8];view[i+9]=heap[dst+9];view[i+10]=heap[dst+10];view[i+11]=heap[dst+11];view[i+12]=heap[dst+12];view[i+13]=heap[dst+13];view[i+14]=heap[dst+14];view[i+15]=heap[dst+15]}}else{var view=HEAPF32.subarray(value>>2,value+count*64>>2)}GLctx.uniformMatrix4fv(GL.uniforms[location],!!transpose,view)}function _glUseProgram(program){GLctx.useProgram(GL.programs[program])}function _glVertexAttrib2f(x0,x1,x2){GLctx["vertexAttrib2f"](x0,x1,x2)}function _glVertexAttrib3f(x0,x1,x2,x3){GLctx["vertexAttrib3f"](x0,x1,x2,x3)}function _glVertexAttrib4f(x0,x1,x2,x3,x4){GLctx["vertexAttrib4f"](x0,x1,x2,x3,x4)}function _glVertexAttribPointer(index,size,type,normalized,stride,ptr){GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}function _glViewport(x0,x1,x2,x3){GLctx["viewport"](x0,x1,x2,x3)}function GLFW_Window(id,width,height,title,monitor,share){this.id=id;this.x=0;this.y=0;this.fullscreen=false;this.storedX=0;this.storedY=0;this.width=width;this.height=height;this.storedWidth=width;this.storedHeight=height;this.title=title;this.monitor=monitor;this.share=share;this.attributes=GLFW.hints;this.inputModes={208897:212993,208898:0,208899:0};this.buttons=0;this.keys=new Array;this.domKeys=new Array;this.shouldClose=0;this.title=null;this.windowPosFunc=null;this.windowSizeFunc=null;this.windowCloseFunc=null;this.windowRefreshFunc=null;this.windowFocusFunc=null;this.windowIconifyFunc=null;this.framebufferSizeFunc=null;this.mouseButtonFunc=null;this.cursorPosFunc=null;this.cursorEnterFunc=null;this.scrollFunc=null;this.dropFunc=null;this.keyFunc=null;this.charFunc=null;this.userptr=null}var GLFW={WindowFromId:function(id){if(id<=0||!GLFW.windows)return null;return GLFW.windows[id-1]},joystickFunc:null,errorFunc:null,monitorFunc:null,active:null,windows:null,monitors:null,monitorString:null,versionString:null,initialTime:null,extensions:null,hints:null,defaultHints:{131073:0,131074:0,131075:1,131076:1,131077:1,135169:8,135170:8,135171:8,135172:8,135173:24,135174:8,135175:0,135176:0,135177:0,135178:0,135179:0,135180:0,135181:0,135182:0,135183:0,139265:196609,139266:1,139267:0,139268:0,139269:0,139270:0,139271:0,139272:0},DOMToGLFWKeyCode:function(keycode){switch(keycode){case 32:return 32;case 222:return 39;case 188:return 44;case 173:return 45;case 189:return 45;case 190:return 46;case 191:return 47;case 48:return 48;case 49:return 49;case 50:return 50;case 51:return 51;case 52:return 52;case 53:return 53;case 54:return 54;case 55:return 55;case 56:return 56;case 57:return 57;case 59:return 59;case 61:return 61;case 187:return 61;case 65:return 65;case 66:return 66;case 67:return 67;case 68:return 68;case 69:return 69;case 70:return 70;case 71:return 71;case 72:return 72;case 73:return 73;case 74:return 74;case 75:return 75;case 76:return 76;case 77:return 77;case 78:return 78;case 79:return 79;case 80:return 80;case 81:return 81;case 82:return 82;case 83:return 83;case 84:return 84;case 85:return 85;case 86:return 86;case 87:return 87;case 88:return 88;case 89:return 89;case 90:return 90;case 219:return 91;case 220:return 92;case 221:return 93;case 192:return 94;case 27:return 256;case 13:return 257;case 9:return 258;case 8:return 259;case 45:return 260;case 46:return 261;case 39:return 262;case 37:return 263;case 40:return 264;case 38:return 265;case 33:return 266;case 34:return 267;case 36:return 268;case 35:return 269;case 20:return 280;case 145:return 281;case 144:return 282;case 44:return 283;case 19:return 284;case 112:return 290;case 113:return 291;case 114:return 292;case 115:return 293;case 116:return 294;case 117:return 295;case 118:return 296;case 119:return 297;case 120:return 298;case 121:return 299;case 122:return 300;case 123:return 301;case 124:return 302;case 125:return 303;case 126:return 304;case 127:return 305;case 128:return 306;case 129:return 307;case 130:return 308;case 131:return 309;case 132:return 310;case 133:return 311;case 134:return 312;case 135:return 313;case 136:return 314;case 96:return 320;case 97:return 321;case 98:return 322;case 99:return 323;case 100:return 324;case 101:return 325;case 102:return 326;case 103:return 327;case 104:return 328;case 105:return 329;case 110:return 330;case 111:return 331;case 106:return 332;case 109:return 333;case 107:return 334;case 16:return 340;case 17:return 341;case 18:return 342;case 91:return 343;case 93:return 348;default:return-1}},getModBits:function(win){var mod=0;if(win.keys[340])mod|=1;if(win.keys[341])mod|=2;if(win.keys[342])mod|=4;if(win.keys[343])mod|=8;return mod},onKeyPress:function(event){if(!GLFW.active||!GLFW.active.charFunc)return;if(event.ctrlKey||event.metaKey)return;var charCode=event.charCode;if(charCode==0||charCode>=0&&charCode<=31)return;wasmTable.get(GLFW.active.charFunc)(GLFW.active.id,charCode)},onKeyChanged:function(keyCode,status){if(!GLFW.active)return;var key=GLFW.DOMToGLFWKeyCode(keyCode);if(key==-1)return;var repeat=status&&GLFW.active.keys[key];GLFW.active.keys[key]=status;GLFW.active.domKeys[keyCode]=status;if(!GLFW.active.keyFunc)return;if(repeat)status=2;wasmTable.get(GLFW.active.keyFunc)(GLFW.active.id,key,keyCode,status,GLFW.getModBits(GLFW.active))},onGamepadConnected:function(event){GLFW.refreshJoysticks()},onGamepadDisconnected:function(event){GLFW.refreshJoysticks()},onKeydown:function(event){GLFW.onKeyChanged(event.keyCode,1);if(event.keyCode===8||event.keyCode===9){event.preventDefault()}},onKeyup:function(event){GLFW.onKeyChanged(event.keyCode,0)},onBlur:function(event){if(!GLFW.active)return;for(var i=0;i<GLFW.active.domKeys.length;++i){if(GLFW.active.domKeys[i]){GLFW.onKeyChanged(i,0)}}},onMousemove:function(event){if(!GLFW.active)return;Browser.calculateMouseEvent(event);if(event.target!=Module["canvas"]||!GLFW.active.cursorPosFunc)return;wasmTable.get(GLFW.active.cursorPosFunc)(GLFW.active.id,Browser.mouseX,Browser.mouseY)},DOMToGLFWMouseButton:function(event){var eventButton=event["button"];if(eventButton>0){if(eventButton==1){eventButton=2}else{eventButton=1}}return eventButton},onMouseenter:function(event){if(!GLFW.active)return;if(event.target!=Module["canvas"]||!GLFW.active.cursorEnterFunc)return;wasmTable.get(GLFW.active.cursorEnterFunc)(GLFW.active.id,1)},onMouseleave:function(event){if(!GLFW.active)return;if(event.target!=Module["canvas"]||!GLFW.active.cursorEnterFunc)return;wasmTable.get(GLFW.active.cursorEnterFunc)(GLFW.active.id,0)},onMouseButtonChanged:function(event,status){if(!GLFW.active)return;Browser.calculateMouseEvent(event);if(event.target!=Module["canvas"])return;var eventButton=GLFW.DOMToGLFWMouseButton(event);if(status==1){GLFW.active.buttons|=1<<eventButton;try{event.target.setCapture()}catch(e){}}else{GLFW.active.buttons&=~(1<<eventButton)}if(!GLFW.active.mouseButtonFunc)return;wasmTable.get(GLFW.active.mouseButtonFunc)(GLFW.active.id,eventButton,status,GLFW.getModBits(GLFW.active))},onMouseButtonDown:function(event){if(!GLFW.active)return;GLFW.onMouseButtonChanged(event,1)},onMouseButtonUp:function(event){if(!GLFW.active)return;GLFW.onMouseButtonChanged(event,0)},onMouseWheel:function(event){var delta=-Browser.getMouseWheelDelta(event);delta=delta==0?0:delta>0?Math.max(delta,1):Math.min(delta,-1);GLFW.wheelPos+=delta;if(!GLFW.active||!GLFW.active.scrollFunc||event.target!=Module["canvas"])return;var sx=0;var sy=0;if(event.type=="mousewheel"){sx=event.wheelDeltaX;sy=event.wheelDeltaY}else{sx=event.deltaX;sy=event.deltaY}wasmTable.get(GLFW.active.scrollFunc)(GLFW.active.id,sx,sy);event.preventDefault()},onCanvasResize:function(width,height){if(!GLFW.active)return;var resizeNeeded=true;if(document["fullscreen"]||document["fullScreen"]||document["mozFullScreen"]||document["webkitIsFullScreen"]){GLFW.active.storedX=GLFW.active.x;GLFW.active.storedY=GLFW.active.y;GLFW.active.storedWidth=GLFW.active.width;GLFW.active.storedHeight=GLFW.active.height;GLFW.active.x=GLFW.active.y=0;GLFW.active.width=screen.width;GLFW.active.height=screen.height;GLFW.active.fullscreen=true}else if(GLFW.active.fullscreen==true){GLFW.active.x=GLFW.active.storedX;GLFW.active.y=GLFW.active.storedY;GLFW.active.width=GLFW.active.storedWidth;GLFW.active.height=GLFW.active.storedHeight;GLFW.active.fullscreen=false}else if(GLFW.active.width!=width||GLFW.active.height!=height){GLFW.active.width=width;GLFW.active.height=height}else{resizeNeeded=false}if(resizeNeeded){Browser.setCanvasSize(GLFW.active.width,GLFW.active.height,true);GLFW.onWindowSizeChanged();GLFW.onFramebufferSizeChanged()}},onWindowSizeChanged:function(){if(!GLFW.active)return;if(!GLFW.active.windowSizeFunc)return;wasmTable.get(GLFW.active.windowSizeFunc)(GLFW.active.id,GLFW.active.width,GLFW.active.height)},onFramebufferSizeChanged:function(){if(!GLFW.active)return;if(!GLFW.active.framebufferSizeFunc)return;wasmTable.get(GLFW.active.framebufferSizeFunc)(GLFW.active.id,GLFW.active.width,GLFW.active.height)},getTime:function(){return _emscripten_get_now()/1e3},setWindowTitle:function(winid,title){var win=GLFW.WindowFromId(winid);if(!win)return;win.title=UTF8ToString(title);if(GLFW.active.id==win.id){document.title=win.title}},setJoystickCallback:function(cbfun){GLFW.joystickFunc=cbfun;GLFW.refreshJoysticks()},joys:{},lastGamepadState:null,lastGamepadStateFrame:null,refreshJoysticks:function(){if(Browser.mainLoop.currentFrameNumber!==GLFW.lastGamepadStateFrame||!Browser.mainLoop.currentFrameNumber){GLFW.lastGamepadState=navigator.getGamepads?navigator.getGamepads():navigator.webkitGetGamepads?navigator.webkitGetGamepads:null;GLFW.lastGamepadStateFrame=Browser.mainLoop.currentFrameNumber;for(var joy=0;joy<GLFW.lastGamepadState.length;++joy){var gamepad=GLFW.lastGamepadState[joy];if(gamepad){if(!GLFW.joys[joy]){console.log("glfw joystick connected:",joy);GLFW.joys[joy]={id:allocate(intArrayFromString(gamepad.id),ALLOC_NORMAL),buttonsCount:gamepad.buttons.length,axesCount:gamepad.axes.length,buttons:allocate(new Array(gamepad.buttons.length),ALLOC_NORMAL),axes:allocate(new Array(gamepad.axes.length*4),ALLOC_NORMAL)};if(GLFW.joystickFunc){wasmTable.get(GLFW.joystickFunc)(joy,262145)}}var data=GLFW.joys[joy];for(var i=0;i<gamepad.buttons.length;++i){setValue(data.buttons+i,gamepad.buttons[i].pressed,"i8")}for(var i=0;i<gamepad.axes.length;++i){setValue(data.axes+i*4,gamepad.axes[i],"float")}}else{if(GLFW.joys[joy]){console.log("glfw joystick disconnected",joy);if(GLFW.joystickFunc){wasmTable.get(GLFW.joystickFunc)(joy,262146)}_free(GLFW.joys[joy].id);_free(GLFW.joys[joy].buttons);_free(GLFW.joys[joy].axes);delete GLFW.joys[joy]}}}}},setKeyCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.keyFunc;win.keyFunc=cbfun;return prevcbfun},setCharCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.charFunc;win.charFunc=cbfun;return prevcbfun},setMouseButtonCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.mouseButtonFunc;win.mouseButtonFunc=cbfun;return prevcbfun},setCursorPosCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.cursorPosFunc;win.cursorPosFunc=cbfun;return prevcbfun},setScrollCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.scrollFunc;win.scrollFunc=cbfun;return prevcbfun},setDropCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.dropFunc;win.dropFunc=cbfun;return prevcbfun},onDrop:function(event){if(!GLFW.active||!GLFW.active.dropFunc)return;if(!event.dataTransfer||!event.dataTransfer.files||event.dataTransfer.files.length==0)return;event.preventDefault();var filenames=allocate(new Array(event.dataTransfer.files.length*4),ALLOC_NORMAL);var filenamesArray=[];var count=event.dataTransfer.files.length;var written=0;var drop_dir=".glfw_dropped_files";FS.createPath("/",drop_dir);function save(file){var path="/"+drop_dir+"/"+file.name.replace(/\//g,"_");var reader=new FileReader;reader.onloadend=function(e){if(reader.readyState!=2){++written;console.log("failed to read dropped file: "+file.name+": "+reader.error);return}var data=e.target.result;FS.writeFile(path,new Uint8Array(data));if(++written===count){wasmTable.get(GLFW.active.dropFunc)(GLFW.active.id,count,filenames);for(var i=0;i<filenamesArray.length;++i){_free(filenamesArray[i])}_free(filenames)}};reader.readAsArrayBuffer(file);var filename=allocate(intArrayFromString(path),ALLOC_NORMAL);filenamesArray.push(filename);setValue(filenames+i*4,filename,"i8*")}for(var i=0;i<count;++i){save(event.dataTransfer.files[i])}return false},onDragover:function(event){if(!GLFW.active||!GLFW.active.dropFunc)return;event.preventDefault();return false},setWindowSizeCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowSizeFunc;win.windowSizeFunc=cbfun;return prevcbfun},setWindowCloseCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowCloseFunc;win.windowCloseFunc=cbfun;return prevcbfun},setWindowRefreshCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowRefreshFunc;win.windowRefreshFunc=cbfun;return prevcbfun},onClickRequestPointerLock:function(e){if(!Browser.pointerLock&&Module["canvas"].requestPointerLock){Module["canvas"].requestPointerLock();e.preventDefault()}},setInputMode:function(winid,mode,value){var win=GLFW.WindowFromId(winid);if(!win)return;switch(mode){case 208897:{switch(value){case 212993:{win.inputModes[mode]=value;Module["canvas"].removeEventListener("click",GLFW.onClickRequestPointerLock,true);Module["canvas"].exitPointerLock();break}case 212994:{console.log("glfwSetInputMode called with GLFW_CURSOR_HIDDEN value not implemented.");break}case 212995:{win.inputModes[mode]=value;Module["canvas"].addEventListener("click",GLFW.onClickRequestPointerLock,true);Module["canvas"].requestPointerLock();break}default:{console.log("glfwSetInputMode called with unknown value parameter value: "+value+".");break}}break}case 208898:{console.log("glfwSetInputMode called with GLFW_STICKY_KEYS mode not implemented.");break}case 208899:{console.log("glfwSetInputMode called with GLFW_STICKY_MOUSE_BUTTONS mode not implemented.");break}default:{console.log("glfwSetInputMode called with unknown mode parameter value: "+mode+".");break}}},getKey:function(winid,key){var win=GLFW.WindowFromId(winid);if(!win)return 0;return win.keys[key]},getMouseButton:function(winid,button){var win=GLFW.WindowFromId(winid);if(!win)return 0;return(win.buttons&1<<button)>0},getCursorPos:function(winid,x,y){setValue(x,Browser.mouseX,"double");setValue(y,Browser.mouseY,"double")},getMousePos:function(winid,x,y){setValue(x,Browser.mouseX,"i32");setValue(y,Browser.mouseY,"i32")},setCursorPos:function(winid,x,y){},getWindowPos:function(winid,x,y){var wx=0;var wy=0;var win=GLFW.WindowFromId(winid);if(win){wx=win.x;wy=win.y}if(x){setValue(x,wx,"i32")}if(y){setValue(y,wy,"i32")}},setWindowPos:function(winid,x,y){var win=GLFW.WindowFromId(winid);if(!win)return;win.x=x;win.y=y},getWindowSize:function(winid,width,height){var ww=0;var wh=0;var win=GLFW.WindowFromId(winid);if(win){ww=win.width;wh=win.height}if(width){setValue(width,ww,"i32")}if(height){setValue(height,wh,"i32")}},setWindowSize:function(winid,width,height){var win=GLFW.WindowFromId(winid);if(!win)return;if(GLFW.active.id==win.id){if(width==screen.width&&height==screen.height){Browser.requestFullscreen()}else{Browser.exitFullscreen();Browser.setCanvasSize(width,height);win.width=width;win.height=height}}if(!win.windowSizeFunc)return;wasmTable.get(win.windowSizeFunc)(win.id,width,height)},createWindow:function(width,height,title,monitor,share){var i,id;for(i=0;i<GLFW.windows.length&&GLFW.windows[i]!==null;i++){}if(i>0)throw"glfwCreateWindow only supports one window at time currently";id=i+1;if(width<=0||height<=0)return 0;if(monitor){Browser.requestFullscreen()}else{Browser.setCanvasSize(width,height)}for(i=0;i<GLFW.windows.length&&GLFW.windows[i]==null;i++){}var useWebGL=GLFW.hints[139265]>0;if(i==GLFW.windows.length){if(useWebGL){var contextAttributes={antialias:GLFW.hints[135181]>1,depth:GLFW.hints[135173]>0,stencil:GLFW.hints[135174]>0,alpha:GLFW.hints[135172]>0};Module.ctx=Browser.createContext(Module["canvas"],true,true,contextAttributes)}else{Browser.init()}}if(!Module.ctx&&useWebGL)return 0;var win=new GLFW_Window(id,width,height,title,monitor,share);if(id-1==GLFW.windows.length){GLFW.windows.push(win)}else{GLFW.windows[id-1]=win}GLFW.active=win;return win.id},destroyWindow:function(winid){var win=GLFW.WindowFromId(winid);if(!win)return;if(win.windowCloseFunc)wasmTable.get(win.windowCloseFunc)(win.id);GLFW.windows[win.id-1]=null;if(GLFW.active.id==win.id)GLFW.active=null;for(var i=0;i<GLFW.windows.length;i++)if(GLFW.windows[i]!==null)return;Module.ctx=Browser.destroyContext(Module["canvas"],true,true)},swapBuffers:function(winid){},GLFW2ParamToGLFW3Param:function(param){var table={196609:0,196610:0,196611:0,196612:0,196613:0,196614:0,131073:0,131074:0,131075:0,131076:0,131077:135169,131078:135170,131079:135171,131080:135172,131081:135173,131082:135174,131083:135183,131084:135175,131085:135176,131086:135177,131087:135178,131088:135179,131089:135180,131090:0,131091:135181,131092:139266,131093:139267,131094:139270,131095:139271,131096:139272};return table[param]}};function _glfwCreateWindow(width,height,title,monitor,share){return GLFW.createWindow(width,height,title,monitor,share)}function _glfwDefaultWindowHints(){GLFW.hints=GLFW.defaultHints}function _glfwDestroyWindow(winid){return GLFW.destroyWindow(winid)}function _glfwGetPrimaryMonitor(){return 1}function _glfwGetTime(){return GLFW.getTime()-GLFW.initialTime}function _glfwGetVideoModes(monitor,count){setValue(count,0,"i32");return 0}function _glfwInit(){if(GLFW.windows)return 1;GLFW.initialTime=GLFW.getTime();GLFW.hints=GLFW.defaultHints;GLFW.windows=new Array;GLFW.active=null;window.addEventListener("gamepadconnected",GLFW.onGamepadConnected,true);window.addEventListener("gamepaddisconnected",GLFW.onGamepadDisconnected,true);window.addEventListener("keydown",GLFW.onKeydown,true);window.addEventListener("keypress",GLFW.onKeyPress,true);window.addEventListener("keyup",GLFW.onKeyup,true);window.addEventListener("blur",GLFW.onBlur,true);Module["canvas"].addEventListener("touchmove",GLFW.onMousemove,true);Module["canvas"].addEventListener("touchstart",GLFW.onMouseButtonDown,true);Module["canvas"].addEventListener("touchcancel",GLFW.onMouseButtonUp,true);Module["canvas"].addEventListener("touchend",GLFW.onMouseButtonUp,true);Module["canvas"].addEventListener("mousemove",GLFW.onMousemove,true);Module["canvas"].addEventListener("mousedown",GLFW.onMouseButtonDown,true);Module["canvas"].addEventListener("mouseup",GLFW.onMouseButtonUp,true);Module["canvas"].addEventListener("wheel",GLFW.onMouseWheel,true);Module["canvas"].addEventListener("mousewheel",GLFW.onMouseWheel,true);Module["canvas"].addEventListener("mouseenter",GLFW.onMouseenter,true);Module["canvas"].addEventListener("mouseleave",GLFW.onMouseleave,true);Module["canvas"].addEventListener("drop",GLFW.onDrop,true);Module["canvas"].addEventListener("dragover",GLFW.onDragover,true);Browser.resizeListeners.push(function(width,height){GLFW.onCanvasResize(width,height)});return 1}function _glfwMakeContextCurrent(winid){}function _glfwSetCharCallback(winid,cbfun){return GLFW.setCharCallback(winid,cbfun)}function _glfwSetCursorEnterCallback(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.cursorEnterFunc;win.cursorEnterFunc=cbfun;return prevcbfun}function _glfwSetCursorPosCallback(winid,cbfun){return GLFW.setCursorPosCallback(winid,cbfun)}function _glfwSetDropCallback(winid,cbfun){return GLFW.setDropCallback(winid,cbfun)}function _glfwSetErrorCallback(cbfun){var prevcbfun=GLFW.errorFunc;GLFW.errorFunc=cbfun;return prevcbfun}function _glfwSetKeyCallback(winid,cbfun){return GLFW.setKeyCallback(winid,cbfun)}function _glfwSetMouseButtonCallback(winid,cbfun){return GLFW.setMouseButtonCallback(winid,cbfun)}function _glfwSetScrollCallback(winid,cbfun){return GLFW.setScrollCallback(winid,cbfun)}function _glfwSetWindowFocusCallback(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowFocusFunc;win.windowFocusFunc=cbfun;return prevcbfun}function _glfwSetWindowIconifyCallback(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowIconifyFunc;win.windowIconifyFunc=cbfun;return prevcbfun}function _glfwSetWindowShouldClose(winid,value){var win=GLFW.WindowFromId(winid);if(!win)return;win.shouldClose=value}function _glfwSetWindowSizeCallback(winid,cbfun){return GLFW.setWindowSizeCallback(winid,cbfun)}function _glfwSwapBuffers(winid){GLFW.swapBuffers(winid)}function _glfwSwapInterval(interval){interval=Math.abs(interval);if(interval==0)_emscripten_set_main_loop_timing(0,0);else _emscripten_set_main_loop_timing(1,interval)}function _glfwTerminate(){window.removeEventListener("gamepadconnected",GLFW.onGamepadConnected,true);window.removeEventListener("gamepaddisconnected",GLFW.onGamepadDisconnected,true);window.removeEventListener("keydown",GLFW.onKeydown,true);window.removeEventListener("keypress",GLFW.onKeyPress,true);window.removeEventListener("keyup",GLFW.onKeyup,true);window.removeEventListener("blur",GLFW.onBlur,true);Module["canvas"].removeEventListener("touchmove",GLFW.onMousemove,true);Module["canvas"].removeEventListener("touchstart",GLFW.onMouseButtonDown,true);Module["canvas"].removeEventListener("touchcancel",GLFW.onMouseButtonUp,true);Module["canvas"].removeEventListener("touchend",GLFW.onMouseButtonUp,true);Module["canvas"].removeEventListener("mousemove",GLFW.onMousemove,true);Module["canvas"].removeEventListener("mousedown",GLFW.onMouseButtonDown,true);Module["canvas"].removeEventListener("mouseup",GLFW.onMouseButtonUp,true);Module["canvas"].removeEventListener("wheel",GLFW.onMouseWheel,true);Module["canvas"].removeEventListener("mousewheel",GLFW.onMouseWheel,true);Module["canvas"].removeEventListener("mouseenter",GLFW.onMouseenter,true);Module["canvas"].removeEventListener("mouseleave",GLFW.onMouseleave,true);Module["canvas"].removeEventListener("drop",GLFW.onDrop,true);Module["canvas"].removeEventListener("dragover",GLFW.onDragover,true);Module["canvas"].width=Module["canvas"].height=1;GLFW.windows=null;GLFW.active=null}function _glfwWindowHint(target,hint){GLFW.hints[target]=hint}function _time(ptr){var ret=Date.now()/1e3|0;if(ptr){HEAP32[ptr>>2]=ret}return ret}var FSNode=function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev};var readMode=292|73;var writeMode=146;Object.defineProperties(FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(val){val?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===writeMode},set:function(val){val?this.mode|=writeMode:this.mode&=~writeMode}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}});FS.FSNode=FSNode;FS.staticInit();Module["FS_createPath"]=FS.createPath;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createDevice"]=FS.createDevice;Module["FS_unlink"]=FS.unlink;var GLctx;for(var i=0;i<32;++i)tempFixedLengthArray.push(new Array(i));var miniTempWebGLFloatBuffersStorage=new Float32Array(288);for(var i=0;i<288;++i){miniTempWebGLFloatBuffers[i]=miniTempWebGLFloatBuffersStorage.subarray(0,i+1)}var __miniTempWebGLIntBuffersStorage=new Int32Array(288);for(var i=0;i<288;++i){__miniTempWebGLIntBuffers[i]=__miniTempWebGLIntBuffersStorage.subarray(0,i+1)}Module["requestFullscreen"]=function Module_requestFullscreen(lockPointer,resizeCanvas){Browser.requestFullscreen(lockPointer,resizeCanvas)};Module["requestAnimationFrame"]=function Module_requestAnimationFrame(func){Browser.requestAnimationFrame(func)};Module["setCanvasSize"]=function Module_setCanvasSize(width,height,noUpdates){Browser.setCanvasSize(width,height,noUpdates)};Module["pauseMainLoop"]=function Module_pauseMainLoop(){Browser.mainLoop.pause()};Module["resumeMainLoop"]=function Module_resumeMainLoop(){Browser.mainLoop.resume()};Module["getUserMedia"]=function Module_getUserMedia(){Browser.getUserMedia()};Module["createContext"]=function Module_createContext(canvas,useWebGL,setInModule,webGLContextAttributes){return Browser.createContext(canvas,useWebGL,setInModule,webGLContextAttributes)};function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var asmLibraryArg={"d":___assert_fail,"L":___sys_fcntl64,"Ta":___sys_ioctl,"Va":___sys_open,"C":_emscripten_exit_pointerlock,"aa":_emscripten_get_element_css_size,"X":_emscripten_get_gamepad_status,"Y":_emscripten_get_num_gamepads,"Hd":_emscripten_glActiveTexture,"Gd":_emscripten_glAttachShader,"Xd":_emscripten_glBeginQueryEXT,"Fd":_emscripten_glBindAttribLocation,"Ed":_emscripten_glBindBuffer,"Dd":_emscripten_glBindFramebuffer,"Cd":_emscripten_glBindRenderbuffer,"Bd":_emscripten_glBindTexture,"Pd":_emscripten_glBindVertexArrayOES,"Ad":_emscripten_glBlendColor,"zd":_emscripten_glBlendEquation,"yd":_emscripten_glBlendEquationSeparate,"xd":_emscripten_glBlendFunc,"wd":_emscripten_glBlendFuncSeparate,"vd":_emscripten_glBufferData,"ud":_emscripten_glBufferSubData,"td":_emscripten_glCheckFramebufferStatus,"sd":_emscripten_glClear,"rd":_emscripten_glClearColor,"qd":_emscripten_glClearDepthf,"pd":_emscripten_glClearStencil,"od":_emscripten_glColorMask,"nd":_emscripten_glCompileShader,"md":_emscripten_glCompressedTexImage2D,"ld":_emscripten_glCompressedTexSubImage2D,"kd":_emscripten_glCopyTexImage2D,"jd":_emscripten_glCopyTexSubImage2D,"id":_emscripten_glCreateProgram,"hd":_emscripten_glCreateShader,"gd":_emscripten_glCullFace,"fd":_emscripten_glDeleteBuffers,"ed":_emscripten_glDeleteFramebuffers,"dd":_emscripten_glDeleteProgram,"T":_emscripten_glDeleteQueriesEXT,"cd":_emscripten_glDeleteRenderbuffers,"bd":_emscripten_glDeleteShader,"ad":_emscripten_glDeleteTextures,"Od":_emscripten_glDeleteVertexArraysOES,"$c":_emscripten_glDepthFunc,"_c":_emscripten_glDepthMask,"Zc":_emscripten_glDepthRangef,"Yc":_emscripten_glDetachShader,"Xc":_emscripten_glDisable,"Wc":_emscripten_glDisableVertexAttribArray,"Vc":_emscripten_glDrawArrays,"Kd":_emscripten_glDrawArraysInstancedANGLE,"Ld":_emscripten_glDrawBuffersWEBGL,"Uc":_emscripten_glDrawElements,"Jd":_emscripten_glDrawElementsInstancedANGLE,"Tc":_emscripten_glEnable,"Sc":_emscripten_glEnableVertexAttribArray,"Wd":_emscripten_glEndQueryEXT,"Rc":_emscripten_glFinish,"Qc":_emscripten_glFlush,"Pc":_emscripten_glFramebufferRenderbuffer,"Oc":_emscripten_glFramebufferTexture2D,"Nc":_emscripten_glFrontFace,"Mc":_emscripten_glGenBuffers,"Kc":_emscripten_glGenFramebuffers,"U":_emscripten_glGenQueriesEXT,"Jc":_emscripten_glGenRenderbuffers,"Ic":_emscripten_glGenTextures,"Nd":_emscripten_glGenVertexArraysOES,"Lc":_emscripten_glGenerateMipmap,"Gc":_emscripten_glGetActiveAttrib,"Fc":_emscripten_glGetActiveUniform,"Ec":_emscripten_glGetAttachedShaders,"Dc":_emscripten_glGetAttribLocation,"Cc":_emscripten_glGetBooleanv,"Bc":_emscripten_glGetBufferParameteriv,"Ac":_emscripten_glGetError,"zc":_emscripten_glGetFloatv,"yc":_emscripten_glGetFramebufferAttachmentParameteriv,"xc":_emscripten_glGetIntegerv,"vc":_emscripten_glGetProgramInfoLog,"wc":_emscripten_glGetProgramiv,"Rd":_emscripten_glGetQueryObjecti64vEXT,"Td":_emscripten_glGetQueryObjectivEXT,"Qd":_emscripten_glGetQueryObjectui64vEXT,"Sd":_emscripten_glGetQueryObjectuivEXT,"Ud":_emscripten_glGetQueryivEXT,"uc":_emscripten_glGetRenderbufferParameteriv,"sc":_emscripten_glGetShaderInfoLog,"rc":_emscripten_glGetShaderPrecisionFormat,"qc":_emscripten_glGetShaderSource,"tc":_emscripten_glGetShaderiv,"pc":_emscripten_glGetString,"oc":_emscripten_glGetTexParameterfv,"nc":_emscripten_glGetTexParameteriv,"kc":_emscripten_glGetUniformLocation,"mc":_emscripten_glGetUniformfv,"lc":_emscripten_glGetUniformiv,"hc":_emscripten_glGetVertexAttribPointerv,"jc":_emscripten_glGetVertexAttribfv,"ic":_emscripten_glGetVertexAttribiv,"gc":_emscripten_glHint,"fc":_emscripten_glIsBuffer,"ec":_emscripten_glIsEnabled,"dc":_emscripten_glIsFramebuffer,"cc":_emscripten_glIsProgram,"S":_emscripten_glIsQueryEXT,"bc":_emscripten_glIsRenderbuffer,"ac":_emscripten_glIsShader,"$b":_emscripten_glIsTexture,"Md":_emscripten_glIsVertexArrayOES,"_b":_emscripten_glLineWidth,"Zb":_emscripten_glLinkProgram,"Yb":_emscripten_glPixelStorei,"Xb":_emscripten_glPolygonOffset,"Vd":_emscripten_glQueryCounterEXT,"Wb":_emscripten_glReadPixels,"Vb":_emscripten_glReleaseShaderCompiler,"Tb":_emscripten_glRenderbufferStorage,"Sb":_emscripten_glSampleCoverage,"Rb":_emscripten_glScissor,"Qb":_emscripten_glShaderBinary,"Pb":_emscripten_glShaderSource,"Ob":_emscripten_glStencilFunc,"Nb":_emscripten_glStencilFuncSeparate,"Mb":_emscripten_glStencilMask,"Lb":_emscripten_glStencilMaskSeparate,"Kb":_emscripten_glStencilOp,"Ib":_emscripten_glStencilOpSeparate,"Hb":_emscripten_glTexImage2D,"Gb":_emscripten_glTexParameterf,"Fb":_emscripten_glTexParameterfv,"Eb":_emscripten_glTexParameteri,"Db":_emscripten_glTexParameteriv,"Cb":_emscripten_glTexSubImage2D,"Bb":_emscripten_glUniform1f,"Ab":_emscripten_glUniform1fv,"zb":_emscripten_glUniform1i,"xb":_emscripten_glUniform1iv,"wb":_emscripten_glUniform2f,"vb":_emscripten_glUniform2fv,"ub":_emscripten_glUniform2i,"tb":_emscripten_glUniform2iv,"sb":_emscripten_glUniform3f,"rb":_emscripten_glUniform3fv,"qb":_emscripten_glUniform3i,"pb":_emscripten_glUniform3iv,"ob":_emscripten_glUniform4f,"mb":_emscripten_glUniform4fv,"lb":_emscripten_glUniform4i,"kb":_emscripten_glUniform4iv,"jb":_emscripten_glUniformMatrix2fv,"ib":_emscripten_glUniformMatrix3fv,"hb":_emscripten_glUniformMatrix4fv,"gb":_emscripten_glUseProgram,"fb":_emscripten_glValidateProgram,"eb":_emscripten_glVertexAttrib1f,"db":_emscripten_glVertexAttrib1fv,"bb":_emscripten_glVertexAttrib2f,"ab":_emscripten_glVertexAttrib2fv,"$a":_emscripten_glVertexAttrib3f,"_a":_emscripten_glVertexAttrib3fv,"Za":_emscripten_glVertexAttrib4f,"Ya":_emscripten_glVertexAttrib4fv,"Id":_emscripten_glVertexAttribDivisorANGLE,"Xa":_emscripten_glVertexAttribPointer,"Wa":_emscripten_glViewport,"Pa":_emscripten_memcpy_big,"Qa":_emscripten_resize_heap,"x":_emscripten_run_script,"Z":_emscripten_sample_gamepad_data,"ya":_emscripten_set_click_callback_on_thread,"Aa":_emscripten_set_fullscreenchange_callback_on_thread,"ta":_emscripten_set_gamepadconnected_callback_on_thread,"sa":_emscripten_set_gamepaddisconnected_callback_on_thread,"za":_emscripten_set_keydown_callback_on_thread,"Zd":_emscripten_set_main_loop,"ua":_emscripten_set_touchcancel_callback_on_thread,"wa":_emscripten_set_touchend_callback_on_thread,"va":_emscripten_set_touchmove_callback_on_thread,"xa":_emscripten_set_touchstart_callback_on_thread,"Ra":_emscripten_thread_sleep,"V":_exit,"M":_fd_close,"Sa":_fd_read,"Oa":_fd_seek,"K":_fd_write,"p":_glActiveTexture,"D":_glAttachShader,"k":_glBindAttribLocation,"a":_glBindBuffer,"j":_glBindTexture,"Jb":_glBlendFunc,"e":_glBufferData,"v":_glBufferSubData,"N":_glClear,"O":_glClearColor,"cb":_glClearDepthf,"Fa":_glCompileShader,"La":_glCompressedTexImage2D,"Da":_glCreateProgram,"Ha":_glCreateShader,"yb":_glCullFace,"m":_glDeleteBuffers,"G":_glDeleteProgram,"H":_glDeleteShader,"J":_glDeleteTextures,"Ub":_glDepthFunc,"I":_glDetachShader,"P":_glDisable,"h":_glDisableVertexAttribArray,"R":_glDrawArrays,"Q":_glDrawElements,"w":_glEnable,"b":_glEnableVertexAttribArray,"nb":_glFrontFace,"f":_glGenBuffers,"Na":_glGenTextures,"u":_glGetAttribLocation,"Hc":_glGetFloatv,"Ba":_glGetProgramInfoLog,"F":_glGetProgramiv,"Ea":_glGetShaderInfoLog,"E":_glGetShaderiv,"n":_glGetString,"t":_glGetUniformLocation,"Ca":_glLinkProgram,"Ua":_glPixelStorei,"Ia":_glReadPixels,"Ga":_glShaderSource,"Ma":_glTexImage2D,"o":_glTexParameteri,"y":_glUniform1i,"q":_glUniform4f,"r":_glUniformMatrix4fv,"l":_glUseProgram,"Ja":_glVertexAttrib2f,"Ka":_glVertexAttrib3f,"s":_glVertexAttrib4f,"c":_glVertexAttribPointer,"Yd":_glViewport,"A":_glfwCreateWindow,"pa":_glfwDefaultWindowHints,"$":_glfwDestroyWindow,"B":_glfwGetPrimaryMonitor,"i":_glfwGetTime,"oa":_glfwGetVideoModes,"qa":_glfwInit,"da":_glfwMakeContextCurrent,"ia":_glfwSetCharCallback,"ea":_glfwSetCursorEnterCallback,"ga":_glfwSetCursorPosCallback,"ka":_glfwSetDropCallback,"ra":_glfwSetErrorCallback,"ja":_glfwSetKeyCallback,"ha":_glfwSetMouseButtonCallback,"fa":_glfwSetScrollCallback,"la":_glfwSetWindowFocusCallback,"ma":_glfwSetWindowIconifyCallback,"W":_glfwSetWindowShouldClose,"na":_glfwSetWindowSizeCallback,"_":_glfwSwapBuffers,"ca":_glfwSwapInterval,"z":_glfwTerminate,"g":_glfwWindowHint,"ba":_time};var asm=createWasm();var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["$d"]).apply(null,arguments)};var _main=Module["_main"]=function(){return(_main=Module["_main"]=Module["asm"]["ae"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["ce"]).apply(null,arguments)};var _free=Module["_free"]=function(){return(_free=Module["_free"]=Module["asm"]["de"]).apply(null,arguments)};var ___errno_location=Module["___errno_location"]=function(){return(___errno_location=Module["___errno_location"]=Module["asm"]["ee"]).apply(null,arguments)};var stackAlloc=Module["stackAlloc"]=function(){return(stackAlloc=Module["stackAlloc"]=Module["asm"]["fe"]).apply(null,arguments)};Module["addRunDependency"]=addRunDependency;Module["removeRunDependency"]=removeRunDependency;Module["FS_createPath"]=FS.createPath;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createDevice"]=FS.createDevice;Module["FS_unlink"]=FS.unlink;var calledRun;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}var calledMain=false;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args){var entryFunction=Module["_main"];var argc=0;var argv=0;try{var ret=entryFunction(argc,argv);exit(ret,true)}catch(e){if(e instanceof ExitStatus){return}else if(e=="unwind"){noExitRuntime=true;return}else{var toLog=e;if(e&&typeof e==="object"&&e.stack){toLog=[e,e.stack]}err("exception thrown: "+toLog);quit_(1,e)}}finally{calledMain=true}}function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(shouldRunNow)callMain(args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}Module["run"]=run;function exit(status,implicit){if(implicit&&noExitRuntime&&status===0){return}if(noExitRuntime){}else{EXITSTATUS=status;exitRuntime();if(Module["onExit"])Module["onExit"](status);ABORT=true}quit_(status,new ExitStatus(status))}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}var shouldRunNow=true;if(Module["noInitialRun"])shouldRunNow=false;run();
diff --git a/examples/web/models/models_cubicmap.wasm b/examples/web/models/models_cubicmap.wasm
deleted file mode 100644
index 1ba70e8..0000000
--- a/examples/web/models/models_cubicmap.wasm
+++ /dev/null
Binary files differ
diff --git a/examples/web/models/models_first_person_maze.c b/examples/web/models/models_first_person_maze.c
deleted file mode 100644
index d0be66f..0000000
--- a/examples/web/models/models_first_person_maze.c
+++ /dev/null
@@ -1,165 +0,0 @@
-/*******************************************************************************************
-*
-* raylib [models] example - first person maze
-*
-* This example has been created using raylib 2.5 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
-*
-* Copyright (c) 2019 Ramon Santamaria (@raysan5)
-*
-********************************************************************************************/
-
-#include "raylib.h"
-
-#include <stdlib.h> // Required for: free()
-
-#if defined(PLATFORM_WEB)
- #include <emscripten/emscripten.h>
-#endif
-
-//----------------------------------------------------------------------------------
-// Global Variables Definition
-//----------------------------------------------------------------------------------
-const int screenWidth = 800;
-const int screenHeight = 450;
-
-// NOTE: Textures MUST be loaded after Window initialization (OpenGL context is required)
-
-Camera camera = { 0 };
-
-Model model = { 0 };
-Texture2D cubicmap = { 0 };
-Texture2D texture = { 0 };
-
-Color *mapPixels = NULL;
-
-Vector3 mapPosition = { -16.0f, 0.0f, -8.0f }; // Set model position
-Vector3 playerPosition = { 0 };
-
-//----------------------------------------------------------------------------------
-// Module Functions Declaration
-//----------------------------------------------------------------------------------
-void UpdateDrawFrame(void); // Update and Draw one frame
-
-//----------------------------------------------------------------------------------
-// Program Main Entry Point
-//----------------------------------------------------------------------------------
-int main(void)
-{
- // Initialization
- //--------------------------------------------------------------------------------------
- InitWindow(screenWidth, screenHeight, "raylib [models] example - first person maze");
-
- // Define the camera to look into our 3d world
- camera = (Camera){{ 0.2f, 0.4f, 0.2f }, { 0.0f, 0.0f, 0.0f }, { 0.0f, 1.0f, 0.0f }, 45.0f, 0 };
-
- Image imMap = LoadImage("resources/cubicmap.png"); // Load cubicmap image (RAM)
- cubicmap = LoadTextureFromImage(imMap); // Convert image to texture to display (VRAM)
- Mesh mesh = GenMeshCubicmap(imMap, (Vector3){ 1.0f, 1.0f, 1.0f });
- model = LoadModelFromMesh(mesh);
-
- // NOTE: By default each cube is mapped to one part of texture atlas
- texture = LoadTexture("resources/cubicmap_atlas.png"); // Load map texture
- model.materials[0].maps[MATERIAL_MAP_DIFFUSE].texture = texture; // Set map diffuse texture
-
- // Get map image data to be used for collision detection
- mapPixels = LoadImageColors(imMap);
- UnloadImage(imMap); // Unload image from RAM
-
- playerPosition = camera.position; // Set player position
-
- SetCameraMode(camera, CAMERA_FIRST_PERSON); // Set camera mode
-
-#if defined(PLATFORM_WEB)
- emscripten_set_main_loop(UpdateDrawFrame, 60, 1);
-#else
- SetTargetFPS(60); // Set our game to run at 60 frames-per-second
- //--------------------------------------------------------------------------------------
-
- // Main game loop
- while (!WindowShouldClose()) // Detect window close button or ESC key
- {
- UpdateDrawFrame();
- }
-#endif
-
- // De-Initialization
- //--------------------------------------------------------------------------------------
- UnloadImageColors(mapPixels); // Unload color array
-
- UnloadTexture(cubicmap); // Unload cubicmap texture
- UnloadTexture(texture); // Unload map texture
- UnloadModel(model); // Unload map model
-
- CloseWindow(); // Close window and OpenGL context
- //--------------------------------------------------------------------------------------
-
- return 0;
-}
-
-//----------------------------------------------------------------------------------
-// Module Functions Definition
-//----------------------------------------------------------------------------------
-void UpdateDrawFrame(void)
-{
- // Update
- //----------------------------------------------------------------------------------
- Vector3 oldCamPos = camera.position; // Store old camera position
-
- UpdateCamera(&camera); // Update camera
-
- // Check player collision (we simplify to 2D collision detection)
- Vector2 playerPos = { camera.position.x, camera.position.z };
- float playerRadius = 0.1f; // Collision radius (player is modelled as a cilinder for collision)
-
- int playerCellX = (int)(playerPos.x - mapPosition.x + 0.5f);
- int playerCellY = (int)(playerPos.y - mapPosition.z + 0.5f);
-
- // Out-of-limits security check
- if (playerCellX < 0) playerCellX = 0;
- else if (playerCellX >= cubicmap.width) playerCellX = cubicmap.width - 1;
-
- if (playerCellY < 0) playerCellY = 0;
- else if (playerCellY >= cubicmap.height) playerCellY = cubicmap.height - 1;
-
- // Check map collisions using image data and player position
- // TODO: Improvement: Just check player surrounding cells for collision
- for (int y = 0; y < cubicmap.height; y++)
- {
- for (int x = 0; x < cubicmap.width; x++)
- {
- if ((mapPixels[y*cubicmap.width + x].r == 255) && // Collision: white pixel, only check R channel
- (CheckCollisionCircleRec(playerPos, playerRadius,
- (Rectangle){ mapPosition.x - 0.5f + x*1.0f, mapPosition.z - 0.5f + y*1.0f, 1.0f, 1.0f })))
- {
- // Collision detected, reset camera position
- camera.position = oldCamPos;
- }
- }
- }
- //----------------------------------------------------------------------------------
-
- // Draw
- //----------------------------------------------------------------------------------
- BeginDrawing();
-
- ClearBackground(RAYWHITE);
-
- BeginMode3D(camera);
-
- DrawModel(model, mapPosition, 1.0f, WHITE); // Draw maze map
- //DrawCubeV(playerPosition, (Vector3){ 0.2f, 0.4f, 0.2f }, RED); // Draw player
-
- EndMode3D();
-
- DrawTextureEx(cubicmap, (Vector2){ GetScreenWidth() - cubicmap.width*4 - 20, 20 }, 0.0f, 4.0f, WHITE);
- DrawRectangleLines(GetScreenWidth() - cubicmap.width*4 - 20, 20, cubicmap.width*4, cubicmap.height*4, GREEN);
-
- // Draw player position radar
- DrawRectangle(GetScreenWidth() - cubicmap.width*4 - 20 + playerCellX*4, 20 + playerCellY*4, 4, 4, RED);
-
- DrawFPS(10, 10);
-
- EndDrawing();
- //----------------------------------------------------------------------------------
-}
diff --git a/examples/web/models/models_first_person_maze.data b/examples/web/models/models_first_person_maze.data
deleted file mode 100644
index 97220c0..0000000
--- a/examples/web/models/models_first_person_maze.data
+++ /dev/null
Binary files differ
diff --git a/examples/web/models/models_first_person_maze.html b/examples/web/models/models_first_person_maze.html
deleted file mode 100644
index 95efb53..0000000
--- a/examples/web/models/models_first_person_maze.html
+++ /dev/null
@@ -1 +0,0 @@
-<!doctypehtml><html lang=en-us><head><meta charset=utf-8><meta content="text/html; charset=utf-8"http-equiv=Content-Type><title>raylib HTML5 GAME</title><meta content="raylib HTML5 GAME"name=title><meta content="New HTML5 videogame, developed using raylib videogames library"name=description><meta content="raylib, games, html5, programming, C, C++, library, learn, videogames"name=keywords><meta content="width=device-width"name=viewport><meta content="raylib HTML5 GAME"property=og:title><meta content=image/png property=og:image:type><meta content=https://www.raylib.com/common/img/raylib_logo.png property=og:image><meta content=raylib.com property=og:site_name><meta content=https://www.raylib.com/games.html property=og:url><meta content="New HTML5 videogame, developed using raylib videogames library"property=og:description><meta content=summary name=twitter:card><meta content=@raysan5 name=twitter:site><meta content="raylib HTML5 GAME"name=twitter:title><meta content=https://www.raylib.com/common/raylib_logo.png name=twitter:image><meta content=https://www.raylib.com/games.html name=twitter:url><meta content="New HTML5 videogame, developed using raylib videogames library"name=twitter:description><link href=https://www.raylib.com/favicon.ico rel="shortcut icon"><style>body{font-family:arial;margin:0;padding:none}#header{width:100%;height:80px;background-color:#888}#logo{width:64px;height:64px;float:left;position:relative;margin:10px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAAlC+aJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjExR/NCNwAAA7JJREFUaEPtk0FyWzEMQ+37X7fZhxX4YY3AD1OKF1nkzTRlSBCCLeVBnvl/AUdaELOunPno1kts1kixdtEZKVs+xIxebBkZsVknn/L5nFGDLR8T4zVC9fX19S/+tTFijrYK4jUjbPUtqBHpnEE6PkZD7jQZV8n5Recw1XQKciZuPaEtR6UjNs5ENVGMsBVqpPtER0ZMOhpyp8m4YL4OjD9yxsyZxnQycfMJETNSzsRE1+dihK3YMiJmpHTW3xpmXPC6BXlCHfqnBlsjY5hxf/6EVEOM2BTEi0fYCX4ONSI6Kq3Blg/prIOMq2CsRur4KQ0x64SdjOufEDEdHZGOhmz5RDHCVqhRuQ86YsVskbc+GXchLiHnFyYH+UigQDVGnImbT8hwFkgLg2qiM8JO6Ylx1FNLa3DmYwqCTsZd4BPqGJG7MwKzpeiWKTKxXkLMVE3MSOmsdwxLH6Rd/wCCLSNDx6djeKfJuArGeoYamRHpaEjnCBYZVy8hZqo2GI36qPjsiOiMsBXGcev4Mx9TLGTchbgEjN/uz6jGrBvDjg+LTNx8Qp2CbG2xMKgmOiPslJ4Yxx+eSnSkzlosZNwFPiHl7FRTkLNRJm4+IeVM0ymIH42wE/wcKalQI4MRl4EW3p6VcRWMua8F6WjIlqZDxvVPiHQ6CjVbYkV9ohhhp/Rk1wiYgpyJ78i4CsZbjkb8Qx+ihvzu3RPaKogZkY6GlEeMsKdPSOFIC8VoOusg44L5c+T8ouOoGhWbdWJ8tMi4egkxo4hoh2yNTGf3iIyr5Lyic4bRENXo+lvDjAt4C1Hk/OKtUaAj0+n4dMSZ2D+hrYJsaYh2SClG2jV9kJKKzhlGQ1SsW299Mq6C8dYZHTExo8fzieI5ivipYnYy7nwJqGKmOYyRwfiUBXITfh5qSHRGWEkfqJqURgvsdHyWYv7Ko8DnYYegk3EB00cxprdrJRzFd7YQzawu8L1GMTYS/KpPaAFTkIn1EmJmspJSs5xBzSyGhlkBmlxfNFiP5mw4wlbMh4F5Ddxp5jNINBdCEz9zPOC1zD7Q0HBdmXndwv0TMtydEdzlWJT4VZ8Qt9Qn4/onxMIwa5ZYGJU5yufBiCjwE50AGjLCVuS8Yt4H7OgZLKK5EKOsLviEWJSL/+0uMi7gLUSBseYwqEbXvSHCec1CJvZPyHCmYQffaBBfOTCGHM2aEbZi1+gO1XTWVXMnzrhAn5DSOZVsiQlHnSITKzGj6DeTcZWc/3oy7h9//PF4PL4BlvsWrb6RE+oAAAAASUVORK5CYII=)}.emscripten{padding-right:0;margin-left:auto;margin-right:auto;display:block}div.emscripten{text-align:center}div.emscripten_border{border:1px solid #000}canvas.emscripten{border:0 none;background:#000;width:100%}.spinner{height:30px;width:30px;margin:0;margin-top:20px;margin-left:20px;display:inline-block;vertical-align:top;-webkit-animation:rotation .8s linear infinite;-moz-animation:rotation .8s linear infinite;-o-animation:rotation .8s linear infinite;animation:rotation .8s linear infinite;border-left:5px solid #000;border-right:5px solid #000;border-bottom:5px solid #000;border-top:5px solid red;border-radius:100%;background-color:#f5f5f5}@-webkit-keyframes rotation{from{-webkit-transform:rotate(0)}to{-webkit-transform:rotate(360deg)}}@-moz-keyframes rotation{from{-moz-transform:rotate(0)}to{-moz-transform:rotate(360deg)}}@-o-keyframes rotation{from{-o-transform:rotate(0)}to{-o-transform:rotate(360deg)}}@keyframes rotation{from{transform:rotate(0)}to{transform:rotate(360deg)}}#status{display:inline-block;vertical-align:top;margin-top:30px;margin-left:20px;font-weight:700;color:#282828}#progress{height:0;width:0}#controls{display:inline-block;float:right;vertical-align:top;margin-top:15px;margin-right:20px}#output{width:100%;height:140px;margin:0 auto;margin-top:10px;display:block;background-color:#000;color:#25ae26;font-family:'Lucida Console',Monaco,monospace;outline:0}input[type=button]{background-color:#d3d3d3;border:4px solid #a9a9a9;color:#000;text-decoration:none;cursor:pointer;width:140px;height:50px}input[type=button]:hover{background-color:#f5f5f5ff;border-color:#000}</style></head><body><div id=header><a href=https://www.raylib.com id=logo></a><div class=spinner id=spinner></div><div class=emscripten id=status>Downloading...</div><span id=controls><span><input onclick=Module.requestFullscreen(!1,!1) type=button value="🖵 FULLSCREEN"></span><span><input onclick=toggleAudio() type=button value="🔇 SUSPEND"id=btn-audio></span></span><div class=emscripten><progress hidden id=progress max=100 value=0></progress></div></div><div class=emscripten_border><canvas class=emscripten id=canvas oncontextmenu=event.preventDefault() tabindex=-1></canvas></div><textarea id=output rows=8></textarea><script src=https://cdn.jsdelivr.net/gh/eligrey/FileSaver.js/dist/FileSaver.min.js></script><script>function saveFileFromMEMFSToDisk(e,a){var t,i=/^((?!chrome|android).)*safari/i.test(navigator.userAgent),o=FS.readFile(e);t=i?new Blob([o.buffer],{type:"application/octet-stream"}):new Blob([o.buffer],{type:"application/octet-binary"}),saveAs(t,a)}</script><script>var statusElement=document.querySelector("#status"),progressElement=document.querySelector("#progress"),spinnerElement=document.querySelector("#spinner"),Module={preRun:[],postRun:[],print:function(){var e=document.querySelector("#output");return e&&(e.value=""),function(t){arguments.length>1&&(t=Array.prototype.slice.call(arguments).join(" ")),console.log(t),e&&(e.value+=t+"\n",e.scrollTop=e.scrollHeight)}}(),printErr:function(e){arguments.length>1&&(e=Array.prototype.slice.call(arguments).join(" ")),console.error(e)},canvas:function(){var e=document.querySelector("#canvas");return e.addEventListener("webglcontextlost",(function(e){alert("WebGL context lost. You will need to reload the page."),e.preventDefault()}),!1),e}(),setStatus:function(e){if(Module.setStatus.last||(Module.setStatus.last={time:Date.now(),text:""}),e!==Module.setStatus.last.text){var t=e.match(/([^(]+)\((\d+(\.\d+)?)\/(\d+)\)/),n=Date.now();t&&n-Module.setStatus.last.time<30||(Module.setStatus.last.time=n,Module.setStatus.last.text=e,t?(e=t[1],progressElement.value=100*parseInt(t[2]),progressElement.max=100*parseInt(t[4]),progressElement.hidden=!0,spinnerElement.hidden=!1):(progressElement.value=null,progressElement.max=null,progressElement.hidden=!0,e||(spinnerElement.style.display="none")),statusElement.innerHTML=e)}},totalDependencies:0,monitorRunDependencies:function(e){this.totalDependencies=Math.max(this.totalDependencies,e),Module.setStatus(e?"Preparing... ("+(this.totalDependencies-e)+"/"+this.totalDependencies+")":"All downloads complete.")}};Module.setStatus("Downloading..."),window.onerror=function(){Module.setStatus("Exception thrown, see JavaScript console"),spinnerElement.style.display="none",Module.setStatus=function(e){e&&Module.printErr("[post-exception status] "+e)}}</script><script>var audioBtn=document.querySelector("#btn-audio");const audioContexList=[];function toggleAudio(){var t=!1;audioContexList.forEach(e=>{"suspended"==e.state?(e.resume(),t=!0):"running"==e.state&&e.suspend()}),audioBtn.value=t?"🔇 SUSPEND":"🔈 RESUME"}self.AudioContext=new Proxy(self.AudioContext,{construct(t,e){const n=new t(...e);return audioContexList.push(n),"suspended"==n.state&&(audioBtn.value="🔈 RESUME"),n}})</script><script src=models_first_person_maze.js async></script></body></html> \ No newline at end of file
diff --git a/examples/web/models/models_first_person_maze.js b/examples/web/models/models_first_person_maze.js
deleted file mode 100644
index 54af9e3..0000000
--- a/examples/web/models/models_first_person_maze.js
+++ /dev/null
@@ -1 +0,0 @@
-var Module=typeof Module!=="undefined"?Module:{};if(!Module.expectedDataFileDownloads){Module.expectedDataFileDownloads=0}Module.expectedDataFileDownloads++;(function(){var loadPackage=function(metadata){var PACKAGE_PATH;if(typeof window==="object"){PACKAGE_PATH=window["encodeURIComponent"](window.location.pathname.toString().substring(0,window.location.pathname.toString().lastIndexOf("/"))+"/")}else if(typeof location!=="undefined"){PACKAGE_PATH=encodeURIComponent(location.pathname.toString().substring(0,location.pathname.toString().lastIndexOf("/"))+"/")}else{throw"using preloaded data can only be done on a web page or in a web worker"}var PACKAGE_NAME="models/models_first_person_maze.data";var REMOTE_PACKAGE_BASE="models_first_person_maze.data";if(typeof Module["locateFilePackage"]==="function"&&!Module["locateFile"]){Module["locateFile"]=Module["locateFilePackage"];err("warning: you defined Module.locateFilePackage, that has been renamed to Module.locateFile (using your locateFilePackage for now)")}var REMOTE_PACKAGE_NAME=Module["locateFile"]?Module["locateFile"](REMOTE_PACKAGE_BASE,""):REMOTE_PACKAGE_BASE;var REMOTE_PACKAGE_SIZE=metadata["remote_package_size"];var PACKAGE_UUID=metadata["package_uuid"];function fetchRemotePackage(packageName,packageSize,callback,errback){var xhr=new XMLHttpRequest;xhr.open("GET",packageName,true);xhr.responseType="arraybuffer";xhr.onprogress=function(event){var url=packageName;var size=packageSize;if(event.total)size=event.total;if(event.loaded){if(!xhr.addedTotal){xhr.addedTotal=true;if(!Module.dataFileDownloads)Module.dataFileDownloads={};Module.dataFileDownloads[url]={loaded:event.loaded,total:size}}else{Module.dataFileDownloads[url].loaded=event.loaded}var total=0;var loaded=0;var num=0;for(var download in Module.dataFileDownloads){var data=Module.dataFileDownloads[download];total+=data.total;loaded+=data.loaded;num++}total=Math.ceil(total*Module.expectedDataFileDownloads/num);if(Module["setStatus"])Module["setStatus"]("Downloading data... ("+loaded+"/"+total+")")}else if(!Module.dataFileDownloads){if(Module["setStatus"])Module["setStatus"]("Downloading data...")}};xhr.onerror=function(event){throw new Error("NetworkError for: "+packageName)};xhr.onload=function(event){if(xhr.status==200||xhr.status==304||xhr.status==206||xhr.status==0&&xhr.response){var packageData=xhr.response;callback(packageData)}else{throw new Error(xhr.statusText+" : "+xhr.responseURL)}};xhr.send(null)}function handleError(error){console.error("package error:",error)}var fetchedCallback=null;var fetched=Module["getPreloadedPackage"]?Module["getPreloadedPackage"](REMOTE_PACKAGE_NAME,REMOTE_PACKAGE_SIZE):null;if(!fetched)fetchRemotePackage(REMOTE_PACKAGE_NAME,REMOTE_PACKAGE_SIZE,function(data){if(fetchedCallback){fetchedCallback(data);fetchedCallback=null}else{fetched=data}},handleError);function runWithFS(){function assert(check,msg){if(!check)throw msg+(new Error).stack}Module["FS_createPath"]("/","resources",true,true);function DataRequest(start,end,audio){this.start=start;this.end=end;this.audio=audio}DataRequest.prototype={requests:{},open:function(mode,name){this.name=name;this.requests[name]=this;Module["addRunDependency"]("fp "+this.name)},send:function(){},onload:function(){var byteArray=this.byteArray.subarray(this.start,this.end);this.finish(byteArray)},finish:function(byteArray){var that=this;Module["FS_createDataFile"](this.name,null,byteArray,true,true,true);Module["removeRunDependency"]("fp "+that.name);this.requests[this.name]=null}};var files=metadata["files"];for(var i=0;i<files.length;++i){new DataRequest(files[i]["start"],files[i]["end"],files[i]["audio"]).open("GET",files[i]["filename"])}function processPackageData(arrayBuffer){assert(arrayBuffer,"Loading data file failed.");assert(arrayBuffer instanceof ArrayBuffer,"bad input to processPackageData");var byteArray=new Uint8Array(arrayBuffer);DataRequest.prototype.byteArray=byteArray;var files=metadata["files"];for(var i=0;i<files.length;++i){DataRequest.prototype.requests[files[i].filename].onload()}Module["removeRunDependency"]("datafile_models/models_first_person_maze.data")}Module["addRunDependency"]("datafile_models/models_first_person_maze.data");if(!Module.preloadResults)Module.preloadResults={};Module.preloadResults[PACKAGE_NAME]={fromCache:false};if(fetched){processPackageData(fetched);fetched=null}else{fetchedCallback=processPackageData}}if(Module["calledRun"]){runWithFS()}else{if(!Module["preRun"])Module["preRun"]=[];Module["preRun"].push(runWithFS)}};loadPackage({"files":[{"filename":"/resources/cubicmap.png","start":0,"end":164,"audio":0},{"filename":"/resources/cubicmap_atlas.png","start":164,"end":37324,"audio":0}],"remote_package_size":37324,"package_uuid":"aa253563-bfb2-4098-9751-a865cca3c169"})})();var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram="./this.program";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window==="object";ENVIRONMENT_IS_WORKER=typeof importScripts==="function";ENVIRONMENT_IS_NODE=typeof process==="object"&&typeof process.versions==="object"&&typeof process.versions.node==="string";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require("path").dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require("fs");if(!nodePath)nodePath=require("path");filename=nodePath["normalize"](filename);return nodeFS["readFileSync"](filename,binary?null:"utf8")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);if(typeof module!=="undefined"){module["exports"]=Module}process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",abort);quit_=function(status){process["exit"](status)};Module["inspect"]=function(){return"[Emscripten Module object]"}}else if(ENVIRONMENT_IS_SHELL){if(typeof read!="undefined"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer==="function"){return new Uint8Array(readbuffer(f))}data=read(f,"binary");assert(typeof data==="object");return data};if(typeof scriptArgs!="undefined"){arguments_=scriptArgs}else if(typeof arguments!="undefined"){arguments_=arguments}if(typeof quit==="function"){quit_=function(status){quit(status)}}if(typeof print!=="undefined"){if(typeof console==="undefined")console={};console.log=print;console.warn=console.error=typeof printErr!=="undefined"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!=="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf("/")+1)}else{scriptDirectory=""}{read_=function(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=function(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var STACK_ALIGN=16;function alignMemory(size,factor){if(!factor)factor=STACK_ALIGN;return Math.ceil(size/factor)*factor}function warnOnce(text){if(!warnOnce.shown)warnOnce.shown={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;err(text)}}var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime=Module["noExitRuntime"]||true;if(typeof WebAssembly!=="object"){abort("no native wasm support detected")}function setValue(ptr,value,type,noSafe){type=type||"i8";if(type.charAt(type.length-1)==="*")type="i32";switch(type){case"i1":HEAP8[ptr>>0]=value;break;case"i8":HEAP8[ptr>>0]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":tempI64=[value>>>0,(tempDouble=value,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;default:abort("invalid type for setValue: "+type)}}var wasmMemory;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}var ALLOC_NORMAL=0;var ALLOC_STACK=1;function allocate(slab,allocator){var ret;if(allocator==ALLOC_STACK){ret=stackAlloc(slab.length)}else{ret=_malloc(slab.length)}if(slab.subarray||slab.slice){HEAPU8.set(slab,ret)}else{HEAPU8.set(new Uint8Array(slab),ret)}return ret}var UTF8Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heap,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heap[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str="";while(idx<endPtr){var u0=heap[idx++];if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heap[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heap[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u0=(u0&7)<<18|u1<<12|u2<<6|heap[idx++]&63}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||16777216;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;__ATINIT__.push({func:function(){___wasm_call_ctors()}});function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){FS.ignorePermissions=false;callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}what+="";err(what);ABORT=true;EXITSTATUS=1;what="abort("+what+"). Build with -s ASSERTIONS=1 for more info.";var e=new WebAssembly.RuntimeError(what);throw e}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix="file://";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile="models_first_person_maze.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}else{throw"both async and sync fetching of the wasm failed"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch==="function"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={"a":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;wasmMemory=Module["asm"]["$d"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module["asm"]["ce"];removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiatedSource(output){receiveInstance(output["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming==="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch==="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync();return{}}var tempDouble;var tempI64;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback(Module);continue}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){wasmTable.get(func)()}else{wasmTable.get(func)(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}function ___assert_fail(condition,filename,line,func){abort("Assertion failed: "+UTF8ToString(condition)+", at: "+[filename?UTF8ToString(filename):"unknown filename",line,func?UTF8ToString(func):"unknown function"])}function setErrNo(value){HEAP32[___errno_location()>>2]=value;return value}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path==="/")return"/";path=PATH.normalize(path);path=path.replace(/\/$/,"");var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}};function getRandomDevice(){if(typeof crypto==="object"&&typeof crypto["getRandomValues"]==="function"){var randomBuffer=new Uint8Array(1);return function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]}}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");return function(){return crypto_module["randomBytes"](1)[0]}}catch(e){}}return function(){abort("randomDevice")}}var PATH_FS={resolve:function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!=="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=path.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(function(p){return!!p}),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:function(from,to){from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start<arr.length;start++){if(arr[start]!=="")break}var end=arr.length-1;for(;end>=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i<length;i++){if(fromParts[i]!==toParts[i]){samePartsLength=i;break}}var outputParts=[];for(var i=samePartsLength;i<fromParts.length;i++){outputParts.push("..")}outputParts=outputParts.concat(toParts.slice(samePartsLength));return outputParts.join("/")}};var TTY={ttys:[],init:function(){},shutdown:function(){},register:function(dev,ops){TTY.ttys[dev]={input:[],output:[],ops:ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open:function(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close:function(stream){stream.tty.ops.flush(stream.tty)},flush:function(stream){stream.tty.ops.flush(stream.tty)},read:function(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i<length;i++){var result;try{result=stream.tty.ops.get_char(stream.tty)}catch(e){throw new FS.ErrnoError(29)}if(result===undefined&&bytesRead===0){throw new FS.ErrnoError(6)}if(result===null||result===undefined)break;bytesRead++;buffer[offset+i]=result}if(bytesRead){stream.node.timestamp=Date.now()}return bytesRead},write:function(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.put_char){throw new FS.ErrnoError(60)}try{for(var i=0;i<length;i++){stream.tty.ops.put_char(stream.tty,buffer[offset+i])}}catch(e){throw new FS.ErrnoError(29)}if(length){stream.node.timestamp=Date.now()}return i}},default_tty_ops:{get_char:function(tty){if(!tty.input.length){var result=null;if(ENVIRONMENT_IS_NODE){var BUFSIZE=256;var buf=Buffer.alloc?Buffer.alloc(BUFSIZE):new Buffer(BUFSIZE);var bytesRead=0;try{bytesRead=nodeFS.readSync(process.stdin.fd,buf,0,BUFSIZE,null)}catch(e){if(e.toString().indexOf("EOF")!=-1)bytesRead=0;else throw e}if(bytesRead>0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function mmapAlloc(size){var alignedSize=alignMemory(size,16384);var ptr=_malloc(alignedSize);while(size<alignedSize)HEAP8[ptr+size++]=0;return ptr}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray:function(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage:function(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity<CAPACITY_DOUBLING_MAX?2:1.125)>>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage:function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr:function(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr:function(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp;old_node.parent=new_dir},unlink:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir:function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i<size;i++)buffer[offset+i]=contents[position+i]}return size},write:function(stream,buffer,offset,length,position,canOwn){if(!length)return 0;var node=stream.node;node.timestamp=Date.now();if(buffer.subarray&&(!node.contents||node.contents.subarray)){if(canOwn){node.contents=buffer.subarray(offset,offset+length);node.usedBytes=length;return length}else if(node.usedBytes===0&&position===0){node.contents=buffer.slice(offset,offset+length);node.usedBytes=length;return length}else if(position+length<=node.usedBytes){node.contents.set(buffer.subarray(offset,offset+length),position);return length}}MEMFS.expandFileStorage(node,position+length);if(node.contents.subarray&&buffer.subarray){node.contents.set(buffer.subarray(offset,offset+length),position)}else{for(var i=0;i<length;i++){node.contents[position+i]=buffer[offset+i]}}node.usedBytes=Math.max(node.usedBytes,position+length);return length},llseek:function(stream,offset,whence){var position=offset;if(whence===1){position+=stream.position}else if(whence===2){if(FS.isFile(stream.node.mode)){position+=stream.node.usedBytes}}if(position<0){throw new FS.ErrnoError(28)}return position},allocate:function(stream,offset,length){MEMFS.expandFileStorage(stream.node,offset+length);stream.node.usedBytes=Math.max(stream.node.usedBytes,offset+length)},mmap:function(stream,address,length,position,prot,flags){if(address!==0){throw new FS.ErrnoError(28)}if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}var ptr;var allocated;var contents=stream.node.contents;if(!(flags&2)&&contents.buffer===buffer){allocated=false;ptr=contents.byteOffset}else{if(position>0||position+length<contents.length){if(contents.subarray){contents=contents.subarray(position,position+length)}else{contents=Array.prototype.slice.call(contents,position,position+length)}}allocated=true;ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}HEAP8.set(contents,ptr)}return{ptr:ptr,allocated:allocated}},msync:function(stream,buffer,offset,length,mmapFlags){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}if(mmapFlags&2){return 0}var bytesWritten=MEMFS.stream_ops.write(stream,buffer,0,length,offset,false);return 0}}};var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,trackingDelegate:{},tracking:{openFlags:{READ:1,WRITE:2}},ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath:function(path,opts){path=PATH_FS.resolve(FS.cwd(),path);opts=opts||{};if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};for(var key in defaults){if(opts[key]===undefined){opts[key]=defaults[key]}}if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),false);var current=FS.root;var current_path="/";for(var i=0;i<parts.length;i++){var islast=i===parts.length-1;if(islast&&opts.parent){break}current=FS.lookupNode(current,parts[i]);current_path=PATH.join2(current_path,parts[i]);if(FS.isMountpoint(current)){if(!islast||islast&&opts.follow_mount){current=current.mounted.root}}if(!islast||opts.follow){var count=0;while(FS.isLink(current.mode)){var link=FS.readlink(current_path);current_path=PATH_FS.resolve(PATH.dirname(current_path),link);var lookup=FS.lookupPath(current_path,{recurse_count:opts.recurse_count});current=lookup.node;if(count++>40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath:function(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?mount+"/"+path:mount+path}path=path?node.name+"/"+path:node.name;node=node.parent}},hashName:function(parentid,name){var hash=0;for(var i=0;i<name.length;i++){hash=(hash<<5)-hash+name.charCodeAt(i)|0}return(parentid+hash>>>0)%FS.nameTable.length},hashAddNode:function(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode:function(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode:function(parent,name){var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode:function(parent,name,mode,rdev){var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:function(node){FS.hashRemoveNode(node)},isRoot:function(node){return node===node.parent},isMountpoint:function(node){return!!node.mounted},isFile:function(mode){return(mode&61440)===32768},isDir:function(mode){return(mode&61440)===16384},isLink:function(mode){return(mode&61440)===40960},isChrdev:function(mode){return(mode&61440)===8192},isBlkdev:function(mode){return(mode&61440)===24576},isFIFO:function(mode){return(mode&61440)===4096},isSocket:function(mode){return(mode&49152)===49152},flagModes:{"r":0,"r+":2,"w":577,"w+":578,"a":1089,"a+":1090},modeStringToFlags:function(str){var flags=FS.flagModes[str];if(typeof flags==="undefined"){throw new Error("Unknown file open mode: "+str)}return flags},flagsToPermissionString:function(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions:function(node,perms){if(FS.ignorePermissions){return 0}if(perms.indexOf("r")!==-1&&!(node.mode&292)){return 2}else if(perms.indexOf("w")!==-1&&!(node.mode&146)){return 2}else if(perms.indexOf("x")!==-1&&!(node.mode&73)){return 2}return 0},mayLookup:function(dir){var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate:function(dir,name){try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete:function(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen:function(node,flags){if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd:function(fd_start,fd_end){fd_start=fd_start||0;fd_end=fd_end||FS.MAX_OPEN_FDS;for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:function(fd){return FS.streams[fd]},createStream:function(stream,fd_start,fd_end){if(!FS.FSStream){FS.FSStream=function(){};FS.FSStream.prototype={object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}}}}var newStream=new FS.FSStream;for(var p in stream){newStream[p]=stream[p]}stream=newStream;var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:function(fd){FS.streams[fd]=null},chrdev_stream_ops:{open:function(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}},llseek:function(){throw new FS.ErrnoError(70)}},major:function(dev){return dev>>8},minor:function(dev){return dev&255},makedev:function(ma,mi){return ma<<8|mi},registerDevice:function(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:function(dev){return FS.devices[dev]},getMounts:function(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts},syncfs:function(populate,callback){if(typeof populate==="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err("warning: "+FS.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work")}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(function(mount){if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount:function(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount:function(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(function(hash){var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.indexOf(current.mount)!==-1){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup:function(parent,name){return parent.node_ops.lookup(parent,name)},mknod:function(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create:function(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:function(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree:function(path,mode){var dirs=path.split("/");var d="";for(var i=0;i<dirs.length;++i){if(!dirs[i])continue;d+="/"+dirs[i];try{FS.mkdir(d,mode)}catch(e){if(e.errno!=20)throw e}}},mkdev:function(path,mode,dev){if(typeof dev==="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:function(oldpath,newpath){if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:function(old_path,new_path){var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}try{if(FS.trackingDelegate["willMovePath"]){FS.trackingDelegate["willMovePath"](old_path,new_path)}}catch(e){err("FS.trackingDelegate['willMovePath']('"+old_path+"', '"+new_path+"') threw an exception: "+e.message)}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}try{if(FS.trackingDelegate["onMovePath"])FS.trackingDelegate["onMovePath"](old_path,new_path)}catch(e){err("FS.trackingDelegate['onMovePath']('"+old_path+"', '"+new_path+"') threw an exception: "+e.message)}},rmdir:function(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}try{if(FS.trackingDelegate["willDeletePath"]){FS.trackingDelegate["willDeletePath"](path)}}catch(e){err("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: "+e.message)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate["onDeletePath"])FS.trackingDelegate["onDeletePath"](path)}catch(e){err("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: "+e.message)}},readdir:function(path){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:function(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}try{if(FS.trackingDelegate["willDeletePath"]){FS.trackingDelegate["willDeletePath"](path)}}catch(e){err("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: "+e.message)}parent.node_ops.unlink(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate["onDeletePath"])FS.trackingDelegate["onDeletePath"](path)}catch(e){err("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: "+e.message)}},readlink:function(path){var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:function(path,dontFollow){var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:function(path){return FS.stat(path,true)},chmod:function(path,mode,dontFollow){var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:function(path,mode){FS.chmod(path,mode,true)},fchmod:function(fd,mode){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:function(path,uid,gid,dontFollow){var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:function(path,uid,gid){FS.chown(path,uid,gid,true)},fchown:function(fd,uid,gid){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:function(path,len){if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:function(fd,len){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:function(path,atime,mtime){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:function(path,flags,mode,fd_start,fd_end){if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags==="string"?FS.modeStringToFlags(flags):flags;mode=typeof mode==="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path==="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false},fd_start,fd_end);if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1;err("FS.trackingDelegate error on read file: "+path)}}try{if(FS.trackingDelegate["onOpenFile"]){var trackingFlags=0;if((flags&2097155)!==1){trackingFlags|=FS.tracking.openFlags.READ}if((flags&2097155)!==0){trackingFlags|=FS.tracking.openFlags.WRITE}FS.trackingDelegate["onOpenFile"](path,trackingFlags)}}catch(e){err("FS.trackingDelegate['onOpenFile']('"+path+"', flags) threw an exception: "+e.message)}return stream},close:function(stream){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:function(stream){return stream.fd===null},llseek:function(stream,offset,whence){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:function(stream,buffer,offset,length,position){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!=="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:function(stream,buffer,offset,length,position,canOwn){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!=="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;try{if(stream.path&&FS.trackingDelegate["onWriteToFile"])FS.trackingDelegate["onWriteToFile"](stream.path)}catch(e){err("FS.trackingDelegate['onWriteToFile']('"+stream.path+"') threw an exception: "+e.message)}return bytesWritten},allocate:function(stream,offset,length){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:function(stream,address,length,position,prot,flags){if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,address,length,position,prot,flags)},msync:function(stream,buffer,offset,length,mmapFlags){if(!stream||!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:function(stream){return 0},ioctl:function(stream,cmd,arg){if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:function(path,opts){opts=opts||{};opts.flags=opts.flags||0;opts.encoding=opts.encoding||"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error('Invalid encoding type "'+opts.encoding+'"')}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding==="binary"){ret=buf}FS.close(stream);return ret},writeFile:function(path,data,opts){opts=opts||{};opts.flags=opts.flags||577;var stream=FS.open(path,opts.flags,opts.mode);if(typeof data==="string"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,undefined,opts.canOwn)}else if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{throw new Error("Unsupported data type")}FS.close(stream)},cwd:function(){return FS.currentPath},chdir:function(path){var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories:function(){FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices:function(){FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:function(){return 0},write:function(stream,buffer,offset,length,pos){return length}});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var random_device=getRandomDevice();FS.createDevice("/dev","random",random_device);FS.createDevice("/dev","urandom",random_device);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories:function(){FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount:function(){var node=FS.createNode(proc_self,"fd",16384|511,73);node.node_ops={lookup:function(parent,name){var fd=+name;var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:function(){return stream.path}}};ret.parent=ret;return ret}};return node}},{},"/proc/self/fd")},createStandardStreams:function(){if(Module["stdin"]){FS.createDevice("/dev","stdin",Module["stdin"])}else{FS.symlink("/dev/tty","/dev/stdin")}if(Module["stdout"]){FS.createDevice("/dev","stdout",null,Module["stdout"])}else{FS.symlink("/dev/tty","/dev/stdout")}if(Module["stderr"]){FS.createDevice("/dev","stderr",null,Module["stderr"])}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},ensureErrnoError:function(){if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.node=node;this.setErrno=function(errno){this.errno=errno};this.setErrno(errno);this.message="FS error"};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[44].forEach(function(code){FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack="<generic error, no stack>"})},staticInit:function(){FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={"MEMFS":MEMFS}},init:function(input,output,error){FS.init.initialized=true;FS.ensureErrnoError();Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams()},quit:function(){FS.init.initialized=false;var fflush=Module["_fflush"];if(fflush)fflush(0);for(var i=0;i<FS.streams.length;i++){var stream=FS.streams[i];if(!stream){continue}FS.close(stream)}},getMode:function(canRead,canWrite){var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode},findObject:function(path,dontResolveLastLink){var ret=FS.analyzePath(path,dontResolveLastLink);if(ret.exists){return ret.object}else{return null}},analyzePath:function(path,dontResolveLastLink){try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath:function(parent,path,canRead,canWrite){parent=typeof parent==="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:function(parent,name,properties,canRead,canWrite){var path=PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:function(parent,name,data,canRead,canWrite,canOwn){var path=name?PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name):parent;var mode=FS.getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data==="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i<len;++i)arr[i]=data.charCodeAt(i);data=arr}FS.chmod(node,mode|146);var stream=FS.open(node,577);FS.write(stream,data,0,data.length,0,canOwn);FS.close(stream);FS.chmod(node,mode)}return node},createDevice:function(parent,name,input,output){var path=PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:function(stream){stream.seekable=false},close:function(stream){if(output&&output.buffer&&output.buffer.length){output(10)}},read:function(stream,buffer,offset,length,pos){var bytesRead=0;for(var i=0;i<length;i++){var result;try{result=input()}catch(e){throw new FS.ErrnoError(29)}if(result===undefined&&bytesRead===0){throw new FS.ErrnoError(6)}if(result===null||result===undefined)break;bytesRead++;buffer[offset+i]=result}if(bytesRead){stream.node.timestamp=Date.now()}return bytesRead},write:function(stream,buffer,offset,length,pos){for(var i=0;i<length;i++){try{output(buffer[offset+i])}catch(e){throw new FS.ErrnoError(29)}}if(length){stream.node.timestamp=Date.now()}return i}});return FS.mkdev(path,mode,dev)},forceLoadFile:function(obj){if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!=="undefined"){throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}},createLazyFile:function(parent,name,url,canRead,canWrite){function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=function(from,to){if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);if(typeof Uint8Array!="undefined")xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}else{return intArrayFromString(xhr.responseText||"",true)}};var lazyArray=this;lazyArray.setDataGetter(function(chunkNum){var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]==="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]==="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!=="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._length}},chunkSize:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(function(key){var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){FS.forceLoadFile(node);return fn.apply(null,arguments)}});stream_ops.read=function stream_ops_read(stream,buffer,offset,length,position){FS.forceLoadFile(node);var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i<size;i++){buffer[offset+i]=contents[position+i]}}else{for(var i=0;i<size;i++){buffer[offset+i]=contents.get(position+i)}}return size};node.stream_ops=stream_ops;return node},createPreloadedFile:function(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish){Browser.init();var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency("cp "+fullname);function processData(byteArray){function finish(byteArray){if(preFinish)preFinish();if(!dontCreateFile){FS.createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}if(onload)onload();removeRunDependency(dep)}var handled=false;Module["preloadPlugins"].forEach(function(plugin){if(handled)return;if(plugin["canHandle"](fullname)){plugin["handle"](byteArray,fullname,finish,function(){if(onerror)onerror();removeRunDependency(dep)});handled=true}});if(!handled)finish(byteArray)}addRunDependency(dep);if(typeof url=="string"){Browser.asyncLoad(url,function(byteArray){processData(byteArray)},onerror)}else{processData(url)}},indexedDB:function(){return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME:function(){return"EM_FS_"+window.location.pathname},DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:function(paths,onload,onerror){onload=onload||function(){};onerror=onerror||function(){};var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=function openRequest_onupgradeneeded(){out("creating db");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME)};openRequest.onsuccess=function openRequest_onsuccess(){var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],"readwrite");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(function(path){var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=function putRequest_onsuccess(){ok++;if(ok+fail==total)finish()};putRequest.onerror=function putRequest_onerror(){fail++;if(ok+fail==total)finish()}});transaction.onerror=onerror};openRequest.onerror=onerror},loadFilesFromDB:function(paths,onload,onerror){onload=onload||function(){};onerror=onerror||function(){};var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=function openRequest_onsuccess(){var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],"readonly")}catch(e){onerror(e);return}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(function(path){var getRequest=files.get(path);getRequest.onsuccess=function getRequest_onsuccess(){if(FS.analyzePath(path).exists){FS.unlink(path)}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish()};getRequest.onerror=function getRequest_onerror(){fail++;if(ok+fail==total)finish()}});transaction.onerror=onerror};openRequest.onerror=onerror}};var SYSCALLS={mappings:{},DEFAULT_POLLMASK:5,umask:511,calculateAt:function(dirfd,path,allowEmpty){if(path[0]==="/"){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=FS.getStream(dirfd);if(!dirstream)throw new FS.ErrnoError(8);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(func,path,buf){try{var stat=func(path)}catch(e){if(e&&e.node&&PATH.normalize(path)!==PATH.normalize(FS.getPath(e.node))){return-54}throw e}HEAP32[buf>>2]=stat.dev;HEAP32[buf+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;HEAP32[buf+56>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+76>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+80>>2]=tempI64[0],HEAP32[buf+84>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},doMkdir:function(path,mode){path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0},doMknod:function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}FS.mknod(path,mode,dev);return 0},doReadlink:function(path,buf,bufsize){if(bufsize<=0)return-28;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len},doAccess:function(path,amode){if(amode&~7){return-28}var node;var lookup=FS.lookupPath(path,{follow:true});node=lookup.node;if(!node){return-44}var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0},doDup:function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd},doReadv:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i<iovcnt;i++){var ptr=HEAP32[iov+i*8>>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr<len)break}return ret},doWritev:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i<iovcnt;i++){var ptr=HEAP32[iov+i*8>>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream},get64:function(low,high){return low}};function ___sys_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-28}var newStream;newStream=FS.open(stream.path,stream.flags,0,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0}case 12:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 13:case 14:return 0;case 16:case 8:return-28;case 9:setErrNo(28);return-1;default:{return-28}}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_ioctl(fd,op,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(op){case 21509:case 21505:{if(!stream.tty)return-59;return 0}case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-59;return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{if(!stream.tty)return-59;return 0}default:abort("bad ioctl syscall "+op)}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_open(path,flags,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(path);var mode=varargs?SYSCALLS.get():0;var stream=FS.open(pathname,flags,mode);return stream.fd}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}var JSEvents={inEventHandler:0,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return false;for(var i in arrA){if(arrA[i]!=arrB[i])return false}return true}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList)){return}}JSEvents.deferredCalls.push({targetFunction:targetFunction,precedence:precedence,argsList:argsList});JSEvents.deferredCalls.sort(function(x,y){return x.precedence<y.precedence})},removeDeferredCalls:function(targetFunction){for(var i=0;i<JSEvents.deferredCalls.length;++i){if(JSEvents.deferredCalls[i].targetFunction==targetFunction){JSEvents.deferredCalls.splice(i,1);--i}}},canPerformEventHandlerRequests:function(){return JSEvents.inEventHandler&&JSEvents.currentEventHandler.allowsDeferredCalls},runDeferredCalls:function(){if(!JSEvents.canPerformEventHandlerRequests()){return}for(var i=0;i<JSEvents.deferredCalls.length;++i){var call=JSEvents.deferredCalls[i];JSEvents.deferredCalls.splice(i,1);--i;call.targetFunction.apply(null,call.argsList)}},eventHandlers:[],removeAllHandlersOnTarget:function(target,eventTypeString){for(var i=0;i<JSEvents.eventHandlers.length;++i){if(JSEvents.eventHandlers[i].target==target&&(!eventTypeString||eventTypeString==JSEvents.eventHandlers[i].eventTypeString)){JSEvents._removeHandler(i--)}}},_removeHandler:function(i){var h=JSEvents.eventHandlers[i];h.target.removeEventListener(h.eventTypeString,h.eventListenerFunc,h.useCapture);JSEvents.eventHandlers.splice(i,1)},registerOrRemoveHandler:function(eventHandler){var jsEventHandler=function jsEventHandler(event){++JSEvents.inEventHandler;JSEvents.currentEventHandler=eventHandler;JSEvents.runDeferredCalls();eventHandler.handlerFunc(event);JSEvents.runDeferredCalls();--JSEvents.inEventHandler};if(eventHandler.callbackfunc){eventHandler.eventListenerFunc=jsEventHandler;eventHandler.target.addEventListener(eventHandler.eventTypeString,jsEventHandler,eventHandler.useCapture);JSEvents.eventHandlers.push(eventHandler);JSEvents.registerRemoveEventListeners()}else{for(var i=0;i<JSEvents.eventHandlers.length;++i){if(JSEvents.eventHandlers[i].target==eventHandler.target&&JSEvents.eventHandlers[i].eventTypeString==eventHandler.eventTypeString){JSEvents._removeHandler(i--)}}}},getNodeNameForTarget:function(target){if(!target)return"";if(target==window)return"#window";if(target==screen)return"#screen";return target&&target.nodeName?target.nodeName:""},fullscreenEnabled:function(){return document.fullscreenEnabled||document.webkitFullscreenEnabled}};function requestPointerLock(target){if(target.requestPointerLock){target.requestPointerLock()}else if(target.msRequestPointerLock){target.msRequestPointerLock()}else{if(document.body.requestPointerLock||document.body.msRequestPointerLock){return-3}else{return-1}}return 0}function _emscripten_exit_pointerlock(){JSEvents.removeDeferredCalls(requestPointerLock);if(document.exitPointerLock){document.exitPointerLock()}else if(document.msExitPointerLock){document.msExitPointerLock()}else{return-1}return 0}function maybeCStringToJsString(cString){return cString>2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!=="undefined"?document:0,typeof window!=="undefined"?window:0];function findEventTarget(target){target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!=="undefined"?document.querySelector(target):undefined);return domElement}function getBoundingClientRect(e){return specialHTMLTargets.indexOf(e)<0?e.getBoundingClientRect():{"left":0,"top":0}}function _emscripten_get_element_css_size(target,width,height){target=findEventTarget(target);if(!target)return-4;var rect=getBoundingClientRect(target);HEAPF64[width>>3]=rect.width;HEAPF64[height>>3]=rect.height;return 0}function fillGamepadEventData(eventStruct,e){HEAPF64[eventStruct>>3]=e.timestamp;for(var i=0;i<e.axes.length;++i){HEAPF64[eventStruct+i*8+16>>3]=e.axes[i]}for(var i=0;i<e.buttons.length;++i){if(typeof e.buttons[i]==="object"){HEAPF64[eventStruct+i*8+528>>3]=e.buttons[i].value}else{HEAPF64[eventStruct+i*8+528>>3]=e.buttons[i]}}for(var i=0;i<e.buttons.length;++i){if(typeof e.buttons[i]==="object"){HEAP32[eventStruct+i*4+1040>>2]=e.buttons[i].pressed}else{HEAP32[eventStruct+i*4+1040>>2]=e.buttons[i]==1}}HEAP32[eventStruct+1296>>2]=e.connected;HEAP32[eventStruct+1300>>2]=e.index;HEAP32[eventStruct+8>>2]=e.axes.length;HEAP32[eventStruct+12>>2]=e.buttons.length;stringToUTF8(e.id,eventStruct+1304,64);stringToUTF8(e.mapping,eventStruct+1368,64)}function _emscripten_get_gamepad_status(index,gamepadState){if(index<0||index>=JSEvents.lastGamepadState.length)return-5;if(!JSEvents.lastGamepadState[index])return-7;fillGamepadEventData(gamepadState,JSEvents.lastGamepadState[index]);return 0}function _emscripten_get_num_gamepads(){return JSEvents.lastGamepadState.length}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension("ANGLE_instanced_arrays");if(ext){ctx["vertexAttribDivisor"]=function(index,divisor){ext["vertexAttribDivisorANGLE"](index,divisor)};ctx["drawArraysInstanced"]=function(mode,first,count,primcount){ext["drawArraysInstancedANGLE"](mode,first,count,primcount)};ctx["drawElementsInstanced"]=function(mode,count,type,indices,primcount){ext["drawElementsInstancedANGLE"](mode,count,type,indices,primcount)};return 1}}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension("OES_vertex_array_object");if(ext){ctx["createVertexArray"]=function(){return ext["createVertexArrayOES"]()};ctx["deleteVertexArray"]=function(vao){ext["deleteVertexArrayOES"](vao)};ctx["bindVertexArray"]=function(vao){ext["bindVertexArrayOES"](vao)};ctx["isVertexArray"]=function(vao){return ext["isVertexArrayOES"](vao)};return 1}}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension("WEBGL_draw_buffers");if(ext){ctx["drawBuffers"]=function(n,bufs){ext["drawBuffersWEBGL"](n,bufs)};return 1}}function __webgl_enable_WEBGL_multi_draw(ctx){return!!(ctx.multiDrawWebgl=ctx.getExtension("WEBGL_multi_draw"))}var GL={counter:1,buffers:[],programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:[],offscreenCanvases:{},timerQueriesEXT:[],programInfos:{},stringCache:{},unpackAlignment:4,recordError:function recordError(errorCode){if(!GL.lastError){GL.lastError=errorCode}},getNewId:function(table){var ret=GL.counter++;for(var i=table.length;i<ret;i++){table[i]=null}return ret},getSource:function(shader,count,string,length){var source="";for(var i=0;i<count;++i){var len=length?HEAP32[length+i*4>>2]:-1;source+=UTF8ToString(HEAP32[string+i*4>>2],len<0?undefined:len)}return source},createContext:function(canvas,webGLContextAttributes){var ctx=canvas.getContext("webgl",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:function(ctx,webGLContextAttributes){var handle=GL.getNewId(GL.contexts);var context={handle:handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};if(ctx.canvas)ctx.canvas.GLctxObject=context;GL.contexts[handle]=context;if(typeof webGLContextAttributes.enableExtensionsByDefault==="undefined"||webGLContextAttributes.enableExtensionsByDefault){GL.initExtensions(context)}return handle},makeContextCurrent:function(contextHandle){GL.currentContext=GL.contexts[contextHandle];Module.ctx=GLctx=GL.currentContext&&GL.currentContext.GLctx;return!(contextHandle&&!GLctx)},getContext:function(contextHandle){return GL.contexts[contextHandle]},deleteContext:function(contextHandle){if(GL.currentContext===GL.contexts[contextHandle])GL.currentContext=null;if(typeof JSEvents==="object")JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas);if(GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas)GL.contexts[contextHandle].GLctx.canvas.GLctxObject=undefined;GL.contexts[contextHandle]=null},initExtensions:function(context){if(!context)context=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;__webgl_enable_ANGLE_instanced_arrays(GLctx);__webgl_enable_OES_vertex_array_object(GLctx);__webgl_enable_WEBGL_draw_buffers(GLctx);GLctx.disjointTimerQueryExt=GLctx.getExtension("EXT_disjoint_timer_query");__webgl_enable_WEBGL_multi_draw(GLctx);var exts=GLctx.getSupportedExtensions()||[];exts.forEach(function(ext){if(ext.indexOf("lose_context")<0&&ext.indexOf("debug")<0){GLctx.getExtension(ext)}})},populateUniformTable:function(program){var p=GL.programs[program];var ptable=GL.programInfos[program]={uniforms:{},maxUniformLength:0,maxAttributeLength:-1,maxUniformBlockNameLength:-1};var utable=ptable.uniforms;var numUniforms=GLctx.getProgramParameter(p,35718);for(var i=0;i<numUniforms;++i){var u=GLctx.getActiveUniform(p,i);var name=u.name;ptable.maxUniformLength=Math.max(ptable.maxUniformLength,name.length+1);if(name.slice(-1)=="]"){name=name.slice(0,name.lastIndexOf("["))}var loc=GLctx.getUniformLocation(p,name);if(loc){var id=GL.getNewId(GL.uniforms);utable[name]=[u.size,id];GL.uniforms[id]=loc;for(var j=1;j<u.size;++j){var n=name+"["+j+"]";loc=GLctx.getUniformLocation(p,n);id=GL.getNewId(GL.uniforms);GL.uniforms[id]=loc}}}}};function _emscripten_glActiveTexture(x0){GLctx["activeTexture"](x0)}function _emscripten_glAttachShader(program,shader){GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _emscripten_glBeginQueryEXT(target,id){GLctx.disjointTimerQueryExt["beginQueryEXT"](target,GL.timerQueriesEXT[id])}function _emscripten_glBindAttribLocation(program,index,name){GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))}function _emscripten_glBindBuffer(target,buffer){GLctx.bindBuffer(target,GL.buffers[buffer])}function _emscripten_glBindFramebuffer(target,framebuffer){GLctx.bindFramebuffer(target,GL.framebuffers[framebuffer])}function _emscripten_glBindRenderbuffer(target,renderbuffer){GLctx.bindRenderbuffer(target,GL.renderbuffers[renderbuffer])}function _emscripten_glBindTexture(target,texture){GLctx.bindTexture(target,GL.textures[texture])}function _emscripten_glBindVertexArrayOES(vao){GLctx["bindVertexArray"](GL.vaos[vao])}function _emscripten_glBlendColor(x0,x1,x2,x3){GLctx["blendColor"](x0,x1,x2,x3)}function _emscripten_glBlendEquation(x0){GLctx["blendEquation"](x0)}function _emscripten_glBlendEquationSeparate(x0,x1){GLctx["blendEquationSeparate"](x0,x1)}function _emscripten_glBlendFunc(x0,x1){GLctx["blendFunc"](x0,x1)}function _emscripten_glBlendFuncSeparate(x0,x1,x2,x3){GLctx["blendFuncSeparate"](x0,x1,x2,x3)}function _emscripten_glBufferData(target,size,data,usage){GLctx.bufferData(target,data?HEAPU8.subarray(data,data+size):size,usage)}function _emscripten_glBufferSubData(target,offset,size,data){GLctx.bufferSubData(target,offset,HEAPU8.subarray(data,data+size))}function _emscripten_glCheckFramebufferStatus(x0){return GLctx["checkFramebufferStatus"](x0)}function _emscripten_glClear(x0){GLctx["clear"](x0)}function _emscripten_glClearColor(x0,x1,x2,x3){GLctx["clearColor"](x0,x1,x2,x3)}function _emscripten_glClearDepthf(x0){GLctx["clearDepth"](x0)}function _emscripten_glClearStencil(x0){GLctx["clearStencil"](x0)}function _emscripten_glColorMask(red,green,blue,alpha){GLctx.colorMask(!!red,!!green,!!blue,!!alpha)}function _emscripten_glCompileShader(shader){GLctx.compileShader(GL.shaders[shader])}function _emscripten_glCompressedTexImage2D(target,level,internalFormat,width,height,border,imageSize,data){GLctx["compressedTexImage2D"](target,level,internalFormat,width,height,border,data?HEAPU8.subarray(data,data+imageSize):null)}function _emscripten_glCompressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,imageSize,data){GLctx["compressedTexSubImage2D"](target,level,xoffset,yoffset,width,height,format,data?HEAPU8.subarray(data,data+imageSize):null)}function _emscripten_glCopyTexImage2D(x0,x1,x2,x3,x4,x5,x6,x7){GLctx["copyTexImage2D"](x0,x1,x2,x3,x4,x5,x6,x7)}function _emscripten_glCopyTexSubImage2D(x0,x1,x2,x3,x4,x5,x6,x7){GLctx["copyTexSubImage2D"](x0,x1,x2,x3,x4,x5,x6,x7)}function _emscripten_glCreateProgram(){var id=GL.getNewId(GL.programs);var program=GLctx.createProgram();program.name=id;GL.programs[id]=program;return id}function _emscripten_glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}function _emscripten_glCullFace(x0){GLctx["cullFace"](x0)}function _emscripten_glDeleteBuffers(n,buffers){for(var i=0;i<n;i++){var id=HEAP32[buffers+i*4>>2];var buffer=GL.buffers[id];if(!buffer)continue;GLctx.deleteBuffer(buffer);buffer.name=0;GL.buffers[id]=null}}function _emscripten_glDeleteFramebuffers(n,framebuffers){for(var i=0;i<n;++i){var id=HEAP32[framebuffers+i*4>>2];var framebuffer=GL.framebuffers[id];if(!framebuffer)continue;GLctx.deleteFramebuffer(framebuffer);framebuffer.name=0;GL.framebuffers[id]=null}}function _emscripten_glDeleteProgram(id){if(!id)return;var program=GL.programs[id];if(!program){GL.recordError(1281);return}GLctx.deleteProgram(program);program.name=0;GL.programs[id]=null;GL.programInfos[id]=null}function _emscripten_glDeleteQueriesEXT(n,ids){for(var i=0;i<n;i++){var id=HEAP32[ids+i*4>>2];var query=GL.timerQueriesEXT[id];if(!query)continue;GLctx.disjointTimerQueryExt["deleteQueryEXT"](query);GL.timerQueriesEXT[id]=null}}function _emscripten_glDeleteRenderbuffers(n,renderbuffers){for(var i=0;i<n;i++){var id=HEAP32[renderbuffers+i*4>>2];var renderbuffer=GL.renderbuffers[id];if(!renderbuffer)continue;GLctx.deleteRenderbuffer(renderbuffer);renderbuffer.name=0;GL.renderbuffers[id]=null}}function _emscripten_glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}function _emscripten_glDeleteTextures(n,textures){for(var i=0;i<n;i++){var id=HEAP32[textures+i*4>>2];var texture=GL.textures[id];if(!texture)continue;GLctx.deleteTexture(texture);texture.name=0;GL.textures[id]=null}}function _emscripten_glDeleteVertexArraysOES(n,vaos){for(var i=0;i<n;i++){var id=HEAP32[vaos+i*4>>2];GLctx["deleteVertexArray"](GL.vaos[id]);GL.vaos[id]=null}}function _emscripten_glDepthFunc(x0){GLctx["depthFunc"](x0)}function _emscripten_glDepthMask(flag){GLctx.depthMask(!!flag)}function _emscripten_glDepthRangef(x0,x1){GLctx["depthRange"](x0,x1)}function _emscripten_glDetachShader(program,shader){GLctx.detachShader(GL.programs[program],GL.shaders[shader])}function _emscripten_glDisable(x0){GLctx["disable"](x0)}function _emscripten_glDisableVertexAttribArray(index){GLctx.disableVertexAttribArray(index)}function _emscripten_glDrawArrays(mode,first,count){GLctx.drawArrays(mode,first,count)}function _emscripten_glDrawArraysInstancedANGLE(mode,first,count,primcount){GLctx["drawArraysInstanced"](mode,first,count,primcount)}var tempFixedLengthArray=[];function _emscripten_glDrawBuffersWEBGL(n,bufs){var bufArray=tempFixedLengthArray[n];for(var i=0;i<n;i++){bufArray[i]=HEAP32[bufs+i*4>>2]}GLctx["drawBuffers"](bufArray)}function _emscripten_glDrawElements(mode,count,type,indices){GLctx.drawElements(mode,count,type,indices)}function _emscripten_glDrawElementsInstancedANGLE(mode,count,type,indices,primcount){GLctx["drawElementsInstanced"](mode,count,type,indices,primcount)}function _emscripten_glEnable(x0){GLctx["enable"](x0)}function _emscripten_glEnableVertexAttribArray(index){GLctx.enableVertexAttribArray(index)}function _emscripten_glEndQueryEXT(target){GLctx.disjointTimerQueryExt["endQueryEXT"](target)}function _emscripten_glFinish(){GLctx["finish"]()}function _emscripten_glFlush(){GLctx["flush"]()}function _emscripten_glFramebufferRenderbuffer(target,attachment,renderbuffertarget,renderbuffer){GLctx.framebufferRenderbuffer(target,attachment,renderbuffertarget,GL.renderbuffers[renderbuffer])}function _emscripten_glFramebufferTexture2D(target,attachment,textarget,texture,level){GLctx.framebufferTexture2D(target,attachment,textarget,GL.textures[texture],level)}function _emscripten_glFrontFace(x0){GLctx["frontFace"](x0)}function __glGenObject(n,buffers,createFunction,objectTable){for(var i=0;i<n;i++){var buffer=GLctx[createFunction]();var id=buffer&&GL.getNewId(objectTable);if(buffer){buffer.name=id;objectTable[id]=buffer}else{GL.recordError(1282)}HEAP32[buffers+i*4>>2]=id}}function _emscripten_glGenBuffers(n,buffers){__glGenObject(n,buffers,"createBuffer",GL.buffers)}function _emscripten_glGenFramebuffers(n,ids){__glGenObject(n,ids,"createFramebuffer",GL.framebuffers)}function _emscripten_glGenQueriesEXT(n,ids){for(var i=0;i<n;i++){var query=GLctx.disjointTimerQueryExt["createQueryEXT"]();if(!query){GL.recordError(1282);while(i<n)HEAP32[ids+i++*4>>2]=0;return}var id=GL.getNewId(GL.timerQueriesEXT);query.name=id;GL.timerQueriesEXT[id]=query;HEAP32[ids+i*4>>2]=id}}function _emscripten_glGenRenderbuffers(n,renderbuffers){__glGenObject(n,renderbuffers,"createRenderbuffer",GL.renderbuffers)}function _emscripten_glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures)}function _emscripten_glGenVertexArraysOES(n,arrays){__glGenObject(n,arrays,"createVertexArray",GL.vaos)}function _emscripten_glGenerateMipmap(x0){GLctx["generateMipmap"](x0)}function __glGetActiveAttribOrUniform(funcName,program,index,bufSize,length,size,type,name){program=GL.programs[program];var info=GLctx[funcName](program,index);if(info){var numBytesWrittenExclNull=name&&stringToUTF8(info.name,name,bufSize);if(length)HEAP32[length>>2]=numBytesWrittenExclNull;if(size)HEAP32[size>>2]=info.size;if(type)HEAP32[type>>2]=info.type}}function _emscripten_glGetActiveAttrib(program,index,bufSize,length,size,type,name){__glGetActiveAttribOrUniform("getActiveAttrib",program,index,bufSize,length,size,type,name)}function _emscripten_glGetActiveUniform(program,index,bufSize,length,size,type,name){__glGetActiveAttribOrUniform("getActiveUniform",program,index,bufSize,length,size,type,name)}function _emscripten_glGetAttachedShaders(program,maxCount,count,shaders){var result=GLctx.getAttachedShaders(GL.programs[program]);var len=result.length;if(len>maxCount){len=maxCount}HEAP32[count>>2]=len;for(var i=0;i<len;++i){var id=GL.shaders.indexOf(result[i]);HEAP32[shaders+i*4>>2]=id}}function _emscripten_glGetAttribLocation(program,name){return GLctx.getAttribLocation(GL.programs[program],UTF8ToString(name))}function writeI53ToI64(ptr,num){HEAPU32[ptr>>2]=num;HEAPU32[ptr+4>>2]=(num-HEAPU32[ptr>>2])/4294967296}function emscriptenWebGLGet(name_,p,type){if(!p){GL.recordError(1281);return}var ret=undefined;switch(name_){case 36346:ret=1;break;case 36344:if(type!=0&&type!=1){GL.recordError(1280)}return;case 36345:ret=0;break;case 34466:var formats=GLctx.getParameter(34467);ret=formats?formats.length:0;break}if(ret===undefined){var result=GLctx.getParameter(name_);switch(typeof result){case"number":ret=result;break;case"boolean":ret=result?1:0;break;case"string":GL.recordError(1280);return;case"object":if(result===null){switch(name_){case 34964:case 35725:case 34965:case 36006:case 36007:case 32873:case 34229:case 34068:{ret=0;break}default:{GL.recordError(1280);return}}}else if(result instanceof Float32Array||result instanceof Uint32Array||result instanceof Int32Array||result instanceof Array){for(var i=0;i<result.length;++i){switch(type){case 0:HEAP32[p+i*4>>2]=result[i];break;case 2:HEAPF32[p+i*4>>2]=result[i];break;case 4:HEAP8[p+i>>0]=result[i]?1:0;break}}return}else{try{ret=result.name|0}catch(e){GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v: Unknown object returned from WebGL getParameter("+name_+")! (error: "+e+")");return}}break;default:GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v: Native code calling glGet"+type+"v("+name_+") and it returns "+result+" of type "+typeof result+"!");return}}switch(type){case 1:writeI53ToI64(p,ret);break;case 0:HEAP32[p>>2]=ret;break;case 2:HEAPF32[p>>2]=ret;break;case 4:HEAP8[p>>0]=ret?1:0;break}}function _emscripten_glGetBooleanv(name_,p){emscriptenWebGLGet(name_,p,4)}function _emscripten_glGetBufferParameteriv(target,value,data){if(!data){GL.recordError(1281);return}HEAP32[data>>2]=GLctx.getBufferParameter(target,value)}function _emscripten_glGetError(){var error=GLctx.getError()||GL.lastError;GL.lastError=0;return error}function _emscripten_glGetFloatv(name_,p){emscriptenWebGLGet(name_,p,2)}function _emscripten_glGetFramebufferAttachmentParameteriv(target,attachment,pname,params){var result=GLctx.getFramebufferAttachmentParameter(target,attachment,pname);if(result instanceof WebGLRenderbuffer||result instanceof WebGLTexture){result=result.name|0}HEAP32[params>>2]=result}function _emscripten_glGetIntegerv(name_,p){emscriptenWebGLGet(name_,p,0)}function _emscripten_glGetProgramInfoLog(program,maxLength,length,infoLog){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _emscripten_glGetProgramiv(program,pname,p){if(!p){GL.recordError(1281);return}if(program>=GL.counter){GL.recordError(1281);return}var ptable=GL.programInfos[program];if(!ptable){GL.recordError(1282);return}if(pname==35716){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";HEAP32[p>>2]=log.length+1}else if(pname==35719){HEAP32[p>>2]=ptable.maxUniformLength}else if(pname==35722){if(ptable.maxAttributeLength==-1){program=GL.programs[program];var numAttribs=GLctx.getProgramParameter(program,35721);ptable.maxAttributeLength=0;for(var i=0;i<numAttribs;++i){var activeAttrib=GLctx.getActiveAttrib(program,i);ptable.maxAttributeLength=Math.max(ptable.maxAttributeLength,activeAttrib.name.length+1)}}HEAP32[p>>2]=ptable.maxAttributeLength}else if(pname==35381){if(ptable.maxUniformBlockNameLength==-1){program=GL.programs[program];var numBlocks=GLctx.getProgramParameter(program,35382);ptable.maxUniformBlockNameLength=0;for(var i=0;i<numBlocks;++i){var activeBlockName=GLctx.getActiveUniformBlockName(program,i);ptable.maxUniformBlockNameLength=Math.max(ptable.maxUniformBlockNameLength,activeBlockName.length+1)}}HEAP32[p>>2]=ptable.maxUniformBlockNameLength}else{HEAP32[p>>2]=GLctx.getProgramParameter(GL.programs[program],pname)}}function _emscripten_glGetQueryObjecti64vEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.timerQueriesEXT[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}writeI53ToI64(params,ret)}function _emscripten_glGetQueryObjectivEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.timerQueriesEXT[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}HEAP32[params>>2]=ret}function _emscripten_glGetQueryObjectui64vEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.timerQueriesEXT[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}writeI53ToI64(params,ret)}function _emscripten_glGetQueryObjectuivEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.timerQueriesEXT[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}HEAP32[params>>2]=ret}function _emscripten_glGetQueryivEXT(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.disjointTimerQueryExt["getQueryEXT"](target,pname)}function _emscripten_glGetRenderbufferParameteriv(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getRenderbufferParameter(target,pname)}function _emscripten_glGetShaderInfoLog(shader,maxLength,length,infoLog){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _emscripten_glGetShaderPrecisionFormat(shaderType,precisionType,range,precision){var result=GLctx.getShaderPrecisionFormat(shaderType,precisionType);HEAP32[range>>2]=result.rangeMin;HEAP32[range+4>>2]=result.rangeMax;HEAP32[precision>>2]=result.precision}function _emscripten_glGetShaderSource(shader,bufSize,length,source){var result=GLctx.getShaderSource(GL.shaders[shader]);if(!result)return;var numBytesWrittenExclNull=bufSize>0&&source?stringToUTF8(result,source,bufSize):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _emscripten_glGetShaderiv(shader,pname,p){if(!p){GL.recordError(1281);return}if(pname==35716){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var logLength=log?log.length+1:0;HEAP32[p>>2]=logLength}else if(pname==35720){var source=GLctx.getShaderSource(GL.shaders[shader]);var sourceLength=source?source.length+1:0;HEAP32[p>>2]=sourceLength}else{HEAP32[p>>2]=GLctx.getShaderParameter(GL.shaders[shader],pname)}}function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _emscripten_glGetString(name_){if(GL.stringCache[name_])return GL.stringCache[name_];var ret;switch(name_){case 7939:var exts=GLctx.getSupportedExtensions()||[];exts=exts.concat(exts.map(function(e){return"GL_"+e}));ret=stringToNewUTF8(exts.join(" "));break;case 7936:case 7937:case 37445:case 37446:var s=GLctx.getParameter(name_);if(!s){GL.recordError(1280)}ret=stringToNewUTF8(s);break;case 7938:var glVersion=GLctx.getParameter(7938);{glVersion="OpenGL ES 2.0 ("+glVersion+")"}ret=stringToNewUTF8(glVersion);break;case 35724:var glslVersion=GLctx.getParameter(35724);var ver_re=/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/;var ver_num=glslVersion.match(ver_re);if(ver_num!==null){if(ver_num[1].length==3)ver_num[1]=ver_num[1]+"0";glslVersion="OpenGL ES GLSL ES "+ver_num[1]+" ("+glslVersion+")"}ret=stringToNewUTF8(glslVersion);break;default:GL.recordError(1280);return 0}GL.stringCache[name_]=ret;return ret}function _emscripten_glGetTexParameterfv(target,pname,params){if(!params){GL.recordError(1281);return}HEAPF32[params>>2]=GLctx.getTexParameter(target,pname)}function _emscripten_glGetTexParameteriv(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getTexParameter(target,pname)}function jstoi_q(str){return parseInt(str)}function _emscripten_glGetUniformLocation(program,name){name=UTF8ToString(name);var arrayIndex=0;if(name[name.length-1]=="]"){var leftBrace=name.lastIndexOf("[");arrayIndex=name[leftBrace+1]!="]"?jstoi_q(name.slice(leftBrace+1)):0;name=name.slice(0,leftBrace)}var uniformInfo=GL.programInfos[program]&&GL.programInfos[program].uniforms[name];if(uniformInfo&&arrayIndex>=0&&arrayIndex<uniformInfo[0]){return uniformInfo[1]+arrayIndex}else{return-1}}function emscriptenWebGLGetUniform(program,location,params,type){if(!params){GL.recordError(1281);return}var data=GLctx.getUniform(GL.programs[program],GL.uniforms[location]);if(typeof data=="number"||typeof data=="boolean"){switch(type){case 0:HEAP32[params>>2]=data;break;case 2:HEAPF32[params>>2]=data;break}}else{for(var i=0;i<data.length;i++){switch(type){case 0:HEAP32[params+i*4>>2]=data[i];break;case 2:HEAPF32[params+i*4>>2]=data[i];break}}}}function _emscripten_glGetUniformfv(program,location,params){emscriptenWebGLGetUniform(program,location,params,2)}function _emscripten_glGetUniformiv(program,location,params){emscriptenWebGLGetUniform(program,location,params,0)}function _emscripten_glGetVertexAttribPointerv(index,pname,pointer){if(!pointer){GL.recordError(1281);return}HEAP32[pointer>>2]=GLctx.getVertexAttribOffset(index,pname)}function emscriptenWebGLGetVertexAttrib(index,pname,params,type){if(!params){GL.recordError(1281);return}var data=GLctx.getVertexAttrib(index,pname);if(pname==34975){HEAP32[params>>2]=data&&data["name"]}else if(typeof data=="number"||typeof data=="boolean"){switch(type){case 0:HEAP32[params>>2]=data;break;case 2:HEAPF32[params>>2]=data;break;case 5:HEAP32[params>>2]=Math.fround(data);break}}else{for(var i=0;i<data.length;i++){switch(type){case 0:HEAP32[params+i*4>>2]=data[i];break;case 2:HEAPF32[params+i*4>>2]=data[i];break;case 5:HEAP32[params+i*4>>2]=Math.fround(data[i]);break}}}}function _emscripten_glGetVertexAttribfv(index,pname,params){emscriptenWebGLGetVertexAttrib(index,pname,params,2)}function _emscripten_glGetVertexAttribiv(index,pname,params){emscriptenWebGLGetVertexAttrib(index,pname,params,5)}function _emscripten_glHint(x0,x1){GLctx["hint"](x0,x1)}function _emscripten_glIsBuffer(buffer){var b=GL.buffers[buffer];if(!b)return 0;return GLctx.isBuffer(b)}function _emscripten_glIsEnabled(x0){return GLctx["isEnabled"](x0)}function _emscripten_glIsFramebuffer(framebuffer){var fb=GL.framebuffers[framebuffer];if(!fb)return 0;return GLctx.isFramebuffer(fb)}function _emscripten_glIsProgram(program){program=GL.programs[program];if(!program)return 0;return GLctx.isProgram(program)}function _emscripten_glIsQueryEXT(id){var query=GL.timerQueriesEXT[id];if(!query)return 0;return GLctx.disjointTimerQueryExt["isQueryEXT"](query)}function _emscripten_glIsRenderbuffer(renderbuffer){var rb=GL.renderbuffers[renderbuffer];if(!rb)return 0;return GLctx.isRenderbuffer(rb)}function _emscripten_glIsShader(shader){var s=GL.shaders[shader];if(!s)return 0;return GLctx.isShader(s)}function _emscripten_glIsTexture(id){var texture=GL.textures[id];if(!texture)return 0;return GLctx.isTexture(texture)}function _emscripten_glIsVertexArrayOES(array){var vao=GL.vaos[array];if(!vao)return 0;return GLctx["isVertexArray"](vao)}function _emscripten_glLineWidth(x0){GLctx["lineWidth"](x0)}function _emscripten_glLinkProgram(program){GLctx.linkProgram(GL.programs[program]);GL.populateUniformTable(program)}function _emscripten_glPixelStorei(pname,param){if(pname==3317){GL.unpackAlignment=param}GLctx.pixelStorei(pname,param)}function _emscripten_glPolygonOffset(x0,x1){GLctx["polygonOffset"](x0,x1)}function _emscripten_glQueryCounterEXT(id,target){GLctx.disjointTimerQueryExt["queryCounterEXT"](GL.timerQueriesEXT[id],target)}function computeUnpackAlignedImageSize(width,height,sizePerPixel,alignment){function roundedToNextMultipleOf(x,y){return x+y-1&-y}var plainRowSize=width*sizePerPixel;var alignedRowSize=roundedToNextMultipleOf(plainRowSize,alignment);return height*alignedRowSize}function __colorChannelsInGlTextureFormat(format){var colorChannels={5:3,6:4,8:2,29502:3,29504:4};return colorChannels[format-6402]||1}function heapObjectForWebGLType(type){type-=5120;if(type==1)return HEAPU8;if(type==4)return HEAP32;if(type==6)return HEAPF32;if(type==5||type==28922)return HEAPU32;return HEAPU16}function heapAccessShiftForWebGLHeap(heap){return 31-Math.clz32(heap.BYTES_PER_ELEMENT)}function emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat){var heap=heapObjectForWebGLType(type);var shift=heapAccessShiftForWebGLHeap(heap);var byteSize=1<<shift;var sizePerPixel=__colorChannelsInGlTextureFormat(format)*byteSize;var bytes=computeUnpackAlignedImageSize(width,height,sizePerPixel,GL.unpackAlignment);return heap.subarray(pixels>>shift,pixels+bytes>>shift)}function _emscripten_glReadPixels(x,y,width,height,format,type,pixels){var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);return}GLctx.readPixels(x,y,width,height,format,type,pixelData)}function _emscripten_glReleaseShaderCompiler(){}function _emscripten_glRenderbufferStorage(x0,x1,x2,x3){GLctx["renderbufferStorage"](x0,x1,x2,x3)}function _emscripten_glSampleCoverage(value,invert){GLctx.sampleCoverage(value,!!invert)}function _emscripten_glScissor(x0,x1,x2,x3){GLctx["scissor"](x0,x1,x2,x3)}function _emscripten_glShaderBinary(){GL.recordError(1280)}function _emscripten_glShaderSource(shader,count,string,length){var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}function _emscripten_glStencilFunc(x0,x1,x2){GLctx["stencilFunc"](x0,x1,x2)}function _emscripten_glStencilFuncSeparate(x0,x1,x2,x3){GLctx["stencilFuncSeparate"](x0,x1,x2,x3)}function _emscripten_glStencilMask(x0){GLctx["stencilMask"](x0)}function _emscripten_glStencilMaskSeparate(x0,x1){GLctx["stencilMaskSeparate"](x0,x1)}function _emscripten_glStencilOp(x0,x1,x2){GLctx["stencilOp"](x0,x1,x2)}function _emscripten_glStencilOpSeparate(x0,x1,x2,x3){GLctx["stencilOpSeparate"](x0,x1,x2,x3)}function _emscripten_glTexImage2D(target,level,internalFormat,width,height,border,format,type,pixels){GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels?emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat):null)}function _emscripten_glTexParameterf(x0,x1,x2){GLctx["texParameterf"](x0,x1,x2)}function _emscripten_glTexParameterfv(target,pname,params){var param=HEAPF32[params>>2];GLctx.texParameterf(target,pname,param)}function _emscripten_glTexParameteri(x0,x1,x2){GLctx["texParameteri"](x0,x1,x2)}function _emscripten_glTexParameteriv(target,pname,params){var param=HEAP32[params>>2];GLctx.texParameteri(target,pname,param)}function _emscripten_glTexSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixels){var pixelData=null;if(pixels)pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,0);GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixelData)}function _emscripten_glUniform1f(location,v0){GLctx.uniform1f(GL.uniforms[location],v0)}var miniTempWebGLFloatBuffers=[];function _emscripten_glUniform1fv(location,count,value){if(count<=288){var view=miniTempWebGLFloatBuffers[count-1];for(var i=0;i<count;++i){view[i]=HEAPF32[value+4*i>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*4>>2)}GLctx.uniform1fv(GL.uniforms[location],view)}function _emscripten_glUniform1i(location,v0){GLctx.uniform1i(GL.uniforms[location],v0)}var __miniTempWebGLIntBuffers=[];function _emscripten_glUniform1iv(location,count,value){if(count<=288){var view=__miniTempWebGLIntBuffers[count-1];for(var i=0;i<count;++i){view[i]=HEAP32[value+4*i>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*4>>2)}GLctx.uniform1iv(GL.uniforms[location],view)}function _emscripten_glUniform2f(location,v0,v1){GLctx.uniform2f(GL.uniforms[location],v0,v1)}function _emscripten_glUniform2fv(location,count,value){if(count<=144){var view=miniTempWebGLFloatBuffers[2*count-1];for(var i=0;i<2*count;i+=2){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*8>>2)}GLctx.uniform2fv(GL.uniforms[location],view)}function _emscripten_glUniform2i(location,v0,v1){GLctx.uniform2i(GL.uniforms[location],v0,v1)}function _emscripten_glUniform2iv(location,count,value){if(count<=144){var view=__miniTempWebGLIntBuffers[2*count-1];for(var i=0;i<2*count;i+=2){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*8>>2)}GLctx.uniform2iv(GL.uniforms[location],view)}function _emscripten_glUniform3f(location,v0,v1,v2){GLctx.uniform3f(GL.uniforms[location],v0,v1,v2)}function _emscripten_glUniform3fv(location,count,value){if(count<=96){var view=miniTempWebGLFloatBuffers[3*count-1];for(var i=0;i<3*count;i+=3){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*12>>2)}GLctx.uniform3fv(GL.uniforms[location],view)}function _emscripten_glUniform3i(location,v0,v1,v2){GLctx.uniform3i(GL.uniforms[location],v0,v1,v2)}function _emscripten_glUniform3iv(location,count,value){if(count<=96){var view=__miniTempWebGLIntBuffers[3*count-1];for(var i=0;i<3*count;i+=3){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2];view[i+2]=HEAP32[value+(4*i+8)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*12>>2)}GLctx.uniform3iv(GL.uniforms[location],view)}function _emscripten_glUniform4f(location,v0,v1,v2,v3){GLctx.uniform4f(GL.uniforms[location],v0,v1,v2,v3)}function _emscripten_glUniform4fv(location,count,value){if(count<=72){var view=miniTempWebGLFloatBuffers[4*count-1];var heap=HEAPF32;value>>=2;for(var i=0;i<4*count;i+=4){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3]}}else{var view=HEAPF32.subarray(value>>2,value+count*16>>2)}GLctx.uniform4fv(GL.uniforms[location],view)}function _emscripten_glUniform4i(location,v0,v1,v2,v3){GLctx.uniform4i(GL.uniforms[location],v0,v1,v2,v3)}function _emscripten_glUniform4iv(location,count,value){if(count<=72){var view=__miniTempWebGLIntBuffers[4*count-1];for(var i=0;i<4*count;i+=4){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2];view[i+2]=HEAP32[value+(4*i+8)>>2];view[i+3]=HEAP32[value+(4*i+12)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*16>>2)}GLctx.uniform4iv(GL.uniforms[location],view)}function _emscripten_glUniformMatrix2fv(location,count,transpose,value){if(count<=72){var view=miniTempWebGLFloatBuffers[4*count-1];for(var i=0;i<4*count;i+=4){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2];view[i+3]=HEAPF32[value+(4*i+12)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*16>>2)}GLctx.uniformMatrix2fv(GL.uniforms[location],!!transpose,view)}function _emscripten_glUniformMatrix3fv(location,count,transpose,value){if(count<=32){var view=miniTempWebGLFloatBuffers[9*count-1];for(var i=0;i<9*count;i+=9){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2];view[i+3]=HEAPF32[value+(4*i+12)>>2];view[i+4]=HEAPF32[value+(4*i+16)>>2];view[i+5]=HEAPF32[value+(4*i+20)>>2];view[i+6]=HEAPF32[value+(4*i+24)>>2];view[i+7]=HEAPF32[value+(4*i+28)>>2];view[i+8]=HEAPF32[value+(4*i+32)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*36>>2)}GLctx.uniformMatrix3fv(GL.uniforms[location],!!transpose,view)}function _emscripten_glUniformMatrix4fv(location,count,transpose,value){if(count<=18){var view=miniTempWebGLFloatBuffers[16*count-1];var heap=HEAPF32;value>>=2;for(var i=0;i<16*count;i+=16){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3];view[i+4]=heap[dst+4];view[i+5]=heap[dst+5];view[i+6]=heap[dst+6];view[i+7]=heap[dst+7];view[i+8]=heap[dst+8];view[i+9]=heap[dst+9];view[i+10]=heap[dst+10];view[i+11]=heap[dst+11];view[i+12]=heap[dst+12];view[i+13]=heap[dst+13];view[i+14]=heap[dst+14];view[i+15]=heap[dst+15]}}else{var view=HEAPF32.subarray(value>>2,value+count*64>>2)}GLctx.uniformMatrix4fv(GL.uniforms[location],!!transpose,view)}function _emscripten_glUseProgram(program){GLctx.useProgram(GL.programs[program])}function _emscripten_glValidateProgram(program){GLctx.validateProgram(GL.programs[program])}function _emscripten_glVertexAttrib1f(x0,x1){GLctx["vertexAttrib1f"](x0,x1)}function _emscripten_glVertexAttrib1fv(index,v){GLctx.vertexAttrib1f(index,HEAPF32[v>>2])}function _emscripten_glVertexAttrib2f(x0,x1,x2){GLctx["vertexAttrib2f"](x0,x1,x2)}function _emscripten_glVertexAttrib2fv(index,v){GLctx.vertexAttrib2f(index,HEAPF32[v>>2],HEAPF32[v+4>>2])}function _emscripten_glVertexAttrib3f(x0,x1,x2,x3){GLctx["vertexAttrib3f"](x0,x1,x2,x3)}function _emscripten_glVertexAttrib3fv(index,v){GLctx.vertexAttrib3f(index,HEAPF32[v>>2],HEAPF32[v+4>>2],HEAPF32[v+8>>2])}function _emscripten_glVertexAttrib4f(x0,x1,x2,x3,x4){GLctx["vertexAttrib4f"](x0,x1,x2,x3,x4)}function _emscripten_glVertexAttrib4fv(index,v){GLctx.vertexAttrib4f(index,HEAPF32[v>>2],HEAPF32[v+4>>2],HEAPF32[v+8>>2],HEAPF32[v+12>>2])}function _emscripten_glVertexAttribDivisorANGLE(index,divisor){GLctx["vertexAttribDivisor"](index,divisor)}function _emscripten_glVertexAttribPointer(index,size,type,normalized,stride,ptr){GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}function _emscripten_glViewport(x0,x1,x2,x3){GLctx["viewport"](x0,x1,x2,x3)}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function _emscripten_request_pointerlock(target,deferUntilInEventHandler){target=findEventTarget(target);if(!target)return-4;if(!target.requestPointerLock&&!target.msRequestPointerLock){return-1}var canPerformRequests=JSEvents.canPerformEventHandlerRequests();if(!canPerformRequests){if(deferUntilInEventHandler){JSEvents.deferCall(requestPointerLock,2,[target]);return 1}else{return-2}}return requestPointerLock(target)}function abortOnCannotGrowMemory(requestedSize){abort("OOM")}function _emscripten_resize_heap(requestedSize){abortOnCannotGrowMemory(requestedSize)}function _emscripten_run_script(ptr){eval(UTF8ToString(ptr))}function _emscripten_sample_gamepad_data(){return(JSEvents.lastGamepadState=navigator.getGamepads?navigator.getGamepads():navigator.webkitGetGamepads?navigator.webkitGetGamepads():null)?0:-1}function fillMouseEventData(eventStruct,e,target){var idx=eventStruct>>2;HEAP32[idx+0]=e.screenX;HEAP32[idx+1]=e.screenY;HEAP32[idx+2]=e.clientX;HEAP32[idx+3]=e.clientY;HEAP32[idx+4]=e.ctrlKey;HEAP32[idx+5]=e.shiftKey;HEAP32[idx+6]=e.altKey;HEAP32[idx+7]=e.metaKey;HEAP16[idx*2+16]=e.button;HEAP16[idx*2+17]=e.buttons;HEAP32[idx+9]=e["movementX"];HEAP32[idx+10]=e["movementY"];var rect=getBoundingClientRect(target);HEAP32[idx+11]=e.clientX-rect.left;HEAP32[idx+12]=e.clientY-rect.top}function registerMouseEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.mouseEvent)JSEvents.mouseEvent=_malloc(64);target=findEventTarget(target);var mouseEventHandlerFunc=function(ev){var e=ev||event;fillMouseEventData(JSEvents.mouseEvent,e,target);if(wasmTable.get(callbackfunc)(eventTypeId,JSEvents.mouseEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:eventTypeString!="mousemove"&&eventTypeString!="mouseenter"&&eventTypeString!="mouseleave",eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:mouseEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_click_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,4,"click",targetThread);return 0}function fillFullscreenChangeEventData(eventStruct){var fullscreenElement=document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement||document.msFullscreenElement;var isFullscreen=!!fullscreenElement;HEAP32[eventStruct>>2]=isFullscreen;HEAP32[eventStruct+4>>2]=JSEvents.fullscreenEnabled();var reportedElement=isFullscreen?fullscreenElement:JSEvents.previousFullscreenElement;var nodeName=JSEvents.getNodeNameForTarget(reportedElement);var id=reportedElement&&reportedElement.id?reportedElement.id:"";stringToUTF8(nodeName,eventStruct+8,128);stringToUTF8(id,eventStruct+136,128);HEAP32[eventStruct+264>>2]=reportedElement?reportedElement.clientWidth:0;HEAP32[eventStruct+268>>2]=reportedElement?reportedElement.clientHeight:0;HEAP32[eventStruct+272>>2]=screen.width;HEAP32[eventStruct+276>>2]=screen.height;if(isFullscreen){JSEvents.previousFullscreenElement=fullscreenElement}}function registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.fullscreenChangeEvent)JSEvents.fullscreenChangeEvent=_malloc(280);var fullscreenChangeEventhandlerFunc=function(ev){var e=ev||event;var fullscreenChangeEvent=JSEvents.fullscreenChangeEvent;fillFullscreenChangeEventData(fullscreenChangeEvent);if(wasmTable.get(callbackfunc)(eventTypeId,fullscreenChangeEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:fullscreenChangeEventhandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_fullscreenchange_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){if(!JSEvents.fullscreenEnabled())return-1;target=findEventTarget(target);if(!target)return-4;registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,19,"fullscreenchange",targetThread);registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,19,"webkitfullscreenchange",targetThread);return 0}function registerGamepadEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.gamepadEvent)JSEvents.gamepadEvent=_malloc(1432);var gamepadEventHandlerFunc=function(ev){var e=ev||event;var gamepadEvent=JSEvents.gamepadEvent;fillGamepadEventData(gamepadEvent,e["gamepad"]);if(wasmTable.get(callbackfunc)(eventTypeId,gamepadEvent,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:gamepadEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_gamepadconnected_callback_on_thread(userData,useCapture,callbackfunc,targetThread){if(!navigator.getGamepads&&!navigator.webkitGetGamepads)return-1;registerGamepadEventCallback(2,userData,useCapture,callbackfunc,26,"gamepadconnected",targetThread);return 0}function _emscripten_set_gamepaddisconnected_callback_on_thread(userData,useCapture,callbackfunc,targetThread){if(!navigator.getGamepads&&!navigator.webkitGetGamepads)return-1;registerGamepadEventCallback(2,userData,useCapture,callbackfunc,27,"gamepaddisconnected",targetThread);return 0}function registerKeyEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.keyEvent)JSEvents.keyEvent=_malloc(164);var keyEventHandlerFunc=function(e){var keyEventData=JSEvents.keyEvent;var idx=keyEventData>>2;HEAP32[idx+0]=e.location;HEAP32[idx+1]=e.ctrlKey;HEAP32[idx+2]=e.shiftKey;HEAP32[idx+3]=e.altKey;HEAP32[idx+4]=e.metaKey;HEAP32[idx+5]=e.repeat;HEAP32[idx+6]=e.charCode;HEAP32[idx+7]=e.keyCode;HEAP32[idx+8]=e.which;stringToUTF8(e.key||"",keyEventData+36,32);stringToUTF8(e.code||"",keyEventData+68,32);stringToUTF8(e.char||"",keyEventData+100,32);stringToUTF8(e.locale||"",keyEventData+132,32);if(wasmTable.get(callbackfunc)(eventTypeId,keyEventData,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:keyEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_keydown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,2,"keydown",targetThread);return 0}var Browser={mainLoop:{scheduler:null,method:"",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause:function(){Browser.mainLoop.scheduler=null;Browser.mainLoop.currentlyRunningMainloop++},resume:function(){Browser.mainLoop.currentlyRunningMainloop++;var timingMode=Browser.mainLoop.timingMode;var timingValue=Browser.mainLoop.timingValue;var func=Browser.mainLoop.func;Browser.mainLoop.func=null;setMainLoop(func,0,false,Browser.mainLoop.arg,true);_emscripten_set_main_loop_timing(timingMode,timingValue);Browser.mainLoop.scheduler()},updateStatus:function(){if(Module["setStatus"]){var message=Module["statusMessage"]||"Please wait...";var remaining=Browser.mainLoop.remainingBlockers;var expected=Browser.mainLoop.expectedBlockers;if(remaining){if(remaining<expected){Module["setStatus"](message+" ("+(expected-remaining)+"/"+expected+")")}else{Module["setStatus"](message)}}else{Module["setStatus"]("")}}},runIter:function(func){if(ABORT)return;if(Module["preMainLoop"]){var preRet=Module["preMainLoop"]();if(preRet===false){return}}try{func()}catch(e){if(e instanceof ExitStatus){return}else if(e=="unwind"){return}else{if(e&&typeof e==="object"&&e.stack)err("exception thrown: "+[e,e.stack]);throw e}}if(Module["postMainLoop"])Module["postMainLoop"]()}},isFullscreen:false,pointerLock:false,moduleContextCreatedCallbacks:[],workers:[],init:function(){if(!Module["preloadPlugins"])Module["preloadPlugins"]=[];if(Browser.initted)return;Browser.initted=true;try{new Blob;Browser.hasBlobConstructor=true}catch(e){Browser.hasBlobConstructor=false;console.log("warning: no blob constructor, cannot create blobs with mimetypes")}Browser.BlobBuilder=typeof MozBlobBuilder!="undefined"?MozBlobBuilder:typeof WebKitBlobBuilder!="undefined"?WebKitBlobBuilder:!Browser.hasBlobConstructor?console.log("warning: no BlobBuilder"):null;Browser.URLObject=typeof window!="undefined"?window.URL?window.URL:window.webkitURL:undefined;if(!Module.noImageDecoding&&typeof Browser.URLObject==="undefined"){console.log("warning: Browser does not support creating object URLs. Built-in browser image decoding will not be available.");Module.noImageDecoding=true}var imagePlugin={};imagePlugin["canHandle"]=function imagePlugin_canHandle(name){return!Module.noImageDecoding&&/\.(jpg|jpeg|png|bmp)$/i.test(name)};imagePlugin["handle"]=function imagePlugin_handle(byteArray,name,onload,onerror){var b=null;if(Browser.hasBlobConstructor){try{b=new Blob([byteArray],{type:Browser.getMimetype(name)});if(b.size!==byteArray.length){b=new Blob([new Uint8Array(byteArray).buffer],{type:Browser.getMimetype(name)})}}catch(e){warnOnce("Blob constructor present but fails: "+e+"; falling back to blob builder")}}if(!b){var bb=new Browser.BlobBuilder;bb.append(new Uint8Array(byteArray).buffer);b=bb.getBlob()}var url=Browser.URLObject.createObjectURL(b);var img=new Image;img.onload=function img_onload(){assert(img.complete,"Image "+name+" could not be decoded");var canvas=document.createElement("canvas");canvas.width=img.width;canvas.height=img.height;var ctx=canvas.getContext("2d");ctx.drawImage(img,0,0);Module["preloadedImages"][name]=canvas;Browser.URLObject.revokeObjectURL(url);if(onload)onload(byteArray)};img.onerror=function img_onerror(event){console.log("Image "+url+" could not be decoded");if(onerror)onerror()};img.src=url};Module["preloadPlugins"].push(imagePlugin);var audioPlugin={};audioPlugin["canHandle"]=function audioPlugin_canHandle(name){return!Module.noAudioDecoding&&name.substr(-4)in{".ogg":1,".wav":1,".mp3":1}};audioPlugin["handle"]=function audioPlugin_handle(byteArray,name,onload,onerror){var done=false;function finish(audio){if(done)return;done=true;Module["preloadedAudios"][name]=audio;if(onload)onload(byteArray)}function fail(){if(done)return;done=true;Module["preloadedAudios"][name]=new Audio;if(onerror)onerror()}if(Browser.hasBlobConstructor){try{var b=new Blob([byteArray],{type:Browser.getMimetype(name)})}catch(e){return fail()}var url=Browser.URLObject.createObjectURL(b);var audio=new Audio;audio.addEventListener("canplaythrough",function(){finish(audio)},false);audio.onerror=function audio_onerror(event){if(done)return;console.log("warning: browser could not fully decode audio "+name+", trying slower base64 approach");function encode64(data){var BASE="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var PAD="=";var ret="";var leftchar=0;var leftbits=0;for(var i=0;i<data.length;i++){leftchar=leftchar<<8|data[i];leftbits+=8;while(leftbits>=6){var curr=leftchar>>leftbits-6&63;leftbits-=6;ret+=BASE[curr]}}if(leftbits==2){ret+=BASE[(leftchar&3)<<4];ret+=PAD+PAD}else if(leftbits==4){ret+=BASE[(leftchar&15)<<2];ret+=PAD}return ret}audio.src="data:audio/x-"+name.substr(-3)+";base64,"+encode64(byteArray);finish(audio)};audio.src=url;Browser.safeSetTimeout(function(){finish(audio)},1e4)}else{return fail()}};Module["preloadPlugins"].push(audioPlugin);function pointerLockChange(){Browser.pointerLock=document["pointerLockElement"]===Module["canvas"]||document["mozPointerLockElement"]===Module["canvas"]||document["webkitPointerLockElement"]===Module["canvas"]||document["msPointerLockElement"]===Module["canvas"]}var canvas=Module["canvas"];if(canvas){canvas.requestPointerLock=canvas["requestPointerLock"]||canvas["mozRequestPointerLock"]||canvas["webkitRequestPointerLock"]||canvas["msRequestPointerLock"]||function(){};canvas.exitPointerLock=document["exitPointerLock"]||document["mozExitPointerLock"]||document["webkitExitPointerLock"]||document["msExitPointerLock"]||function(){};canvas.exitPointerLock=canvas.exitPointerLock.bind(document);document.addEventListener("pointerlockchange",pointerLockChange,false);document.addEventListener("mozpointerlockchange",pointerLockChange,false);document.addEventListener("webkitpointerlockchange",pointerLockChange,false);document.addEventListener("mspointerlockchange",pointerLockChange,false);if(Module["elementPointerLock"]){canvas.addEventListener("click",function(ev){if(!Browser.pointerLock&&Module["canvas"].requestPointerLock){Module["canvas"].requestPointerLock();ev.preventDefault()}},false)}}},createContext:function(canvas,useWebGL,setInModule,webGLContextAttributes){if(useWebGL&&Module.ctx&&canvas==Module.canvas)return Module.ctx;var ctx;var contextHandle;if(useWebGL){var contextAttributes={antialias:false,alpha:false,majorVersion:1};if(webGLContextAttributes){for(var attribute in webGLContextAttributes){contextAttributes[attribute]=webGLContextAttributes[attribute]}}if(typeof GL!=="undefined"){contextHandle=GL.createContext(canvas,contextAttributes);if(contextHandle){ctx=GL.getContext(contextHandle).GLctx}}}else{ctx=canvas.getContext("2d")}if(!ctx)return null;if(setInModule){if(!useWebGL)assert(typeof GLctx==="undefined","cannot set in module if GLctx is used, but we are a non-GL context that would replace it");Module.ctx=ctx;if(useWebGL)GL.makeContextCurrent(contextHandle);Module.useWebGL=useWebGL;Browser.moduleContextCreatedCallbacks.forEach(function(callback){callback()});Browser.init()}return ctx},destroyContext:function(canvas,useWebGL,setInModule){},fullscreenHandlersInstalled:false,lockPointer:undefined,resizeCanvas:undefined,requestFullscreen:function(lockPointer,resizeCanvas){Browser.lockPointer=lockPointer;Browser.resizeCanvas=resizeCanvas;if(typeof Browser.lockPointer==="undefined")Browser.lockPointer=true;if(typeof Browser.resizeCanvas==="undefined")Browser.resizeCanvas=false;var canvas=Module["canvas"];function fullscreenChange(){Browser.isFullscreen=false;var canvasContainer=canvas.parentNode;if((document["fullscreenElement"]||document["mozFullScreenElement"]||document["msFullscreenElement"]||document["webkitFullscreenElement"]||document["webkitCurrentFullScreenElement"])===canvasContainer){canvas.exitFullscreen=Browser.exitFullscreen;if(Browser.lockPointer)canvas.requestPointerLock();Browser.isFullscreen=true;if(Browser.resizeCanvas){Browser.setFullscreenCanvasSize()}else{Browser.updateCanvasDimensions(canvas)}}else{canvasContainer.parentNode.insertBefore(canvas,canvasContainer);canvasContainer.parentNode.removeChild(canvasContainer);if(Browser.resizeCanvas){Browser.setWindowedCanvasSize()}else{Browser.updateCanvasDimensions(canvas)}}if(Module["onFullScreen"])Module["onFullScreen"](Browser.isFullscreen);if(Module["onFullscreen"])Module["onFullscreen"](Browser.isFullscreen)}if(!Browser.fullscreenHandlersInstalled){Browser.fullscreenHandlersInstalled=true;document.addEventListener("fullscreenchange",fullscreenChange,false);document.addEventListener("mozfullscreenchange",fullscreenChange,false);document.addEventListener("webkitfullscreenchange",fullscreenChange,false);document.addEventListener("MSFullscreenChange",fullscreenChange,false)}var canvasContainer=document.createElement("div");canvas.parentNode.insertBefore(canvasContainer,canvas);canvasContainer.appendChild(canvas);canvasContainer.requestFullscreen=canvasContainer["requestFullscreen"]||canvasContainer["mozRequestFullScreen"]||canvasContainer["msRequestFullscreen"]||(canvasContainer["webkitRequestFullscreen"]?function(){canvasContainer["webkitRequestFullscreen"](Element["ALLOW_KEYBOARD_INPUT"])}:null)||(canvasContainer["webkitRequestFullScreen"]?function(){canvasContainer["webkitRequestFullScreen"](Element["ALLOW_KEYBOARD_INPUT"])}:null);canvasContainer.requestFullscreen()},exitFullscreen:function(){if(!Browser.isFullscreen){return false}var CFS=document["exitFullscreen"]||document["cancelFullScreen"]||document["mozCancelFullScreen"]||document["msExitFullscreen"]||document["webkitCancelFullScreen"]||function(){};CFS.apply(document,[]);return true},nextRAF:0,fakeRequestAnimationFrame:function(func){var now=Date.now();if(Browser.nextRAF===0){Browser.nextRAF=now+1e3/60}else{while(now+2>=Browser.nextRAF){Browser.nextRAF+=1e3/60}}var delay=Math.max(Browser.nextRAF-now,0);setTimeout(func,delay)},requestAnimationFrame:function(func){if(typeof requestAnimationFrame==="function"){requestAnimationFrame(func);return}var RAF=Browser.fakeRequestAnimationFrame;RAF(func)},safeRequestAnimationFrame:function(func){return Browser.requestAnimationFrame(function(){if(ABORT)return;func()})},safeSetTimeout:function(func,timeout){noExitRuntime=true;return setTimeout(function(){if(ABORT)return;func()},timeout)},getMimetype:function(name){return{"jpg":"image/jpeg","jpeg":"image/jpeg","png":"image/png","bmp":"image/bmp","ogg":"audio/ogg","wav":"audio/wav","mp3":"audio/mpeg"}[name.substr(name.lastIndexOf(".")+1)]},getUserMedia:function(func){if(!window.getUserMedia){window.getUserMedia=navigator["getUserMedia"]||navigator["mozGetUserMedia"]}window.getUserMedia(func)},getMovementX:function(event){return event["movementX"]||event["mozMovementX"]||event["webkitMovementX"]||0},getMovementY:function(event){return event["movementY"]||event["mozMovementY"]||event["webkitMovementY"]||0},getMouseWheelDelta:function(event){var delta=0;switch(event.type){case"DOMMouseScroll":delta=event.detail/3;break;case"mousewheel":delta=event.wheelDelta/120;break;case"wheel":delta=event.deltaY;switch(event.deltaMode){case 0:delta/=100;break;case 1:delta/=3;break;case 2:delta*=80;break;default:throw"unrecognized mouse wheel delta mode: "+event.deltaMode}break;default:throw"unrecognized mouse wheel event: "+event.type}return delta},mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,touches:{},lastTouches:{},calculateMouseEvent:function(event){if(Browser.pointerLock){if(event.type!="mousemove"&&"mozMovementX"in event){Browser.mouseMovementX=Browser.mouseMovementY=0}else{Browser.mouseMovementX=Browser.getMovementX(event);Browser.mouseMovementY=Browser.getMovementY(event)}if(typeof SDL!="undefined"){Browser.mouseX=SDL.mouseX+Browser.mouseMovementX;Browser.mouseY=SDL.mouseY+Browser.mouseMovementY}else{Browser.mouseX+=Browser.mouseMovementX;Browser.mouseY+=Browser.mouseMovementY}}else{var rect=Module["canvas"].getBoundingClientRect();var cw=Module["canvas"].width;var ch=Module["canvas"].height;var scrollX=typeof window.scrollX!=="undefined"?window.scrollX:window.pageXOffset;var scrollY=typeof window.scrollY!=="undefined"?window.scrollY:window.pageYOffset;if(event.type==="touchstart"||event.type==="touchend"||event.type==="touchmove"){var touch=event.touch;if(touch===undefined){return}var adjustedX=touch.pageX-(scrollX+rect.left);var adjustedY=touch.pageY-(scrollY+rect.top);adjustedX=adjustedX*(cw/rect.width);adjustedY=adjustedY*(ch/rect.height);var coords={x:adjustedX,y:adjustedY};if(event.type==="touchstart"){Browser.lastTouches[touch.identifier]=coords;Browser.touches[touch.identifier]=coords}else if(event.type==="touchend"||event.type==="touchmove"){var last=Browser.touches[touch.identifier];if(!last)last=coords;Browser.lastTouches[touch.identifier]=last;Browser.touches[touch.identifier]=coords}return}var x=event.pageX-(scrollX+rect.left);var y=event.pageY-(scrollY+rect.top);x=x*(cw/rect.width);y=y*(ch/rect.height);Browser.mouseMovementX=x-Browser.mouseX;Browser.mouseMovementY=y-Browser.mouseY;Browser.mouseX=x;Browser.mouseY=y}},asyncLoad:function(url,onload,onerror,noRunDep){var dep=!noRunDep?getUniqueRunDependency("al "+url):"";readAsync(url,function(arrayBuffer){assert(arrayBuffer,'Loading data file "'+url+'" failed (no arrayBuffer).');onload(new Uint8Array(arrayBuffer));if(dep)removeRunDependency(dep)},function(event){if(onerror){onerror()}else{throw'Loading data file "'+url+'" failed.'}});if(dep)addRunDependency(dep)},resizeListeners:[],updateResizeListeners:function(){var canvas=Module["canvas"];Browser.resizeListeners.forEach(function(listener){listener(canvas.width,canvas.height)})},setCanvasSize:function(width,height,noUpdates){var canvas=Module["canvas"];Browser.updateCanvasDimensions(canvas,width,height);if(!noUpdates)Browser.updateResizeListeners()},windowedWidth:0,windowedHeight:0,setFullscreenCanvasSize:function(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>2];flags=flags|8388608;HEAP32[SDL.screen>>2]=flags}Browser.updateCanvasDimensions(Module["canvas"]);Browser.updateResizeListeners()},setWindowedCanvasSize:function(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>2];flags=flags&~8388608;HEAP32[SDL.screen>>2]=flags}Browser.updateCanvasDimensions(Module["canvas"]);Browser.updateResizeListeners()},updateCanvasDimensions:function(canvas,wNative,hNative){if(wNative&&hNative){canvas.widthNative=wNative;canvas.heightNative=hNative}else{wNative=canvas.widthNative;hNative=canvas.heightNative}var w=wNative;var h=hNative;if(Module["forcedAspectRatio"]&&Module["forcedAspectRatio"]>0){if(w/h<Module["forcedAspectRatio"]){w=Math.round(h*Module["forcedAspectRatio"])}else{h=Math.round(w/Module["forcedAspectRatio"])}}if((document["fullscreenElement"]||document["mozFullScreenElement"]||document["msFullscreenElement"]||document["webkitFullscreenElement"]||document["webkitCurrentFullScreenElement"])===canvas.parentNode&&typeof screen!="undefined"){var factor=Math.min(screen.width/w,screen.height/h);w=Math.round(w*factor);h=Math.round(h*factor)}if(Browser.resizeCanvas){if(canvas.width!=w)canvas.width=w;if(canvas.height!=h)canvas.height=h;if(typeof canvas.style!="undefined"){canvas.style.removeProperty("width");canvas.style.removeProperty("height")}}else{if(canvas.width!=wNative)canvas.width=wNative;if(canvas.height!=hNative)canvas.height=hNative;if(typeof canvas.style!="undefined"){if(w!=wNative||h!=hNative){canvas.style.setProperty("width",w+"px","important");canvas.style.setProperty("height",h+"px","important")}else{canvas.style.removeProperty("width");canvas.style.removeProperty("height")}}}},wgetRequests:{},nextWgetRequestHandle:0,getNextWgetRequestHandle:function(){var handle=Browser.nextWgetRequestHandle;Browser.nextWgetRequestHandle++;return handle}};function _emscripten_set_main_loop_timing(mode,value){Browser.mainLoop.timingMode=mode;Browser.mainLoop.timingValue=value;if(!Browser.mainLoop.func){return 1}if(mode==0){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setTimeout(){var timeUntilNextTick=Math.max(0,Browser.mainLoop.tickStartTime+value-_emscripten_get_now())|0;setTimeout(Browser.mainLoop.runner,timeUntilNextTick)};Browser.mainLoop.method="timeout"}else if(mode==1){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_rAF(){Browser.requestAnimationFrame(Browser.mainLoop.runner)};Browser.mainLoop.method="rAF"}else if(mode==2){if(typeof setImmediate==="undefined"){var setImmediates=[];var emscriptenMainLoopMessageId="setimmediate";var Browser_setImmediate_messageHandler=function(event){if(event.data===emscriptenMainLoopMessageId||event.data.target===emscriptenMainLoopMessageId){event.stopPropagation();setImmediates.shift()()}};addEventListener("message",Browser_setImmediate_messageHandler,true);setImmediate=function Browser_emulated_setImmediate(func){setImmediates.push(func);if(ENVIRONMENT_IS_WORKER){if(Module["setImmediates"]===undefined)Module["setImmediates"]=[];Module["setImmediates"].push(func);postMessage({target:emscriptenMainLoopMessageId})}else postMessage(emscriptenMainLoopMessageId,"*")}}Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setImmediate(){setImmediate(Browser.mainLoop.runner)};Browser.mainLoop.method="immediate"}return 0}var _emscripten_get_now;if(ENVIRONMENT_IS_NODE){_emscripten_get_now=function(){var t=process["hrtime"]();return t[0]*1e3+t[1]/1e6}}else if(typeof dateNow!=="undefined"){_emscripten_get_now=dateNow}else _emscripten_get_now=function(){return performance.now()};function setMainLoop(browserIterationFunc,fps,simulateInfiniteLoop,arg,noSetTiming){noExitRuntime=true;assert(!Browser.mainLoop.func,"emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters.");Browser.mainLoop.func=browserIterationFunc;Browser.mainLoop.arg=arg;var thisMainLoopId=Browser.mainLoop.currentlyRunningMainloop;Browser.mainLoop.runner=function Browser_mainLoop_runner(){if(ABORT)return;if(Browser.mainLoop.queue.length>0){var start=Date.now();var blocker=Browser.mainLoop.queue.shift();blocker.func(blocker.arg);if(Browser.mainLoop.remainingBlockers){var remaining=Browser.mainLoop.remainingBlockers;var next=remaining%1==0?remaining-1:Math.floor(remaining);if(blocker.counted){Browser.mainLoop.remainingBlockers=next}else{next=next+.5;Browser.mainLoop.remainingBlockers=(8*remaining+next)/9}}console.log('main loop blocker "'+blocker.name+'" took '+(Date.now()-start)+" ms");Browser.mainLoop.updateStatus();if(thisMainLoopId<Browser.mainLoop.currentlyRunningMainloop)return;setTimeout(Browser.mainLoop.runner,0);return}if(thisMainLoopId<Browser.mainLoop.currentlyRunningMainloop)return;Browser.mainLoop.currentFrameNumber=Browser.mainLoop.currentFrameNumber+1|0;if(Browser.mainLoop.timingMode==1&&Browser.mainLoop.timingValue>1&&Browser.mainLoop.currentFrameNumber%Browser.mainLoop.timingValue!=0){Browser.mainLoop.scheduler();return}else if(Browser.mainLoop.timingMode==0){Browser.mainLoop.tickStartTime=_emscripten_get_now()}Browser.mainLoop.runIter(browserIterationFunc);if(thisMainLoopId<Browser.mainLoop.currentlyRunningMainloop)return;if(typeof SDL==="object"&&SDL.audio&&SDL.audio.queueNewAudioData)SDL.audio.queueNewAudioData();Browser.mainLoop.scheduler()};if(!noSetTiming){if(fps&&fps>0)_emscripten_set_main_loop_timing(0,1e3/fps);else _emscripten_set_main_loop_timing(1,1);Browser.mainLoop.scheduler()}if(simulateInfiniteLoop){throw"unwind"}}function _emscripten_set_main_loop(func,fps,simulateInfiniteLoop){var browserIterationFunc=wasmTable.get(func);setMainLoop(browserIterationFunc,fps,simulateInfiniteLoop)}function registerTouchEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.touchEvent)JSEvents.touchEvent=_malloc(1684);target=findEventTarget(target);var touchEventHandlerFunc=function(e){var touches={};var et=e.touches;for(var i=0;i<et.length;++i){var touch=et[i];touches[touch.identifier]=touch}et=e.changedTouches;for(var i=0;i<et.length;++i){var touch=et[i];touch.isChanged=1;touches[touch.identifier]=touch}et=e.targetTouches;for(var i=0;i<et.length;++i){touches[et[i].identifier].onTarget=1}var touchEvent=JSEvents.touchEvent;var idx=touchEvent>>2;HEAP32[idx+1]=e.ctrlKey;HEAP32[idx+2]=e.shiftKey;HEAP32[idx+3]=e.altKey;HEAP32[idx+4]=e.metaKey;idx+=5;var targetRect=getBoundingClientRect(target);var numTouches=0;for(var i in touches){var t=touches[i];HEAP32[idx+0]=t.identifier;HEAP32[idx+1]=t.screenX;HEAP32[idx+2]=t.screenY;HEAP32[idx+3]=t.clientX;HEAP32[idx+4]=t.clientY;HEAP32[idx+5]=t.pageX;HEAP32[idx+6]=t.pageY;HEAP32[idx+7]=t.isChanged;HEAP32[idx+8]=t.onTarget;HEAP32[idx+9]=t.clientX-targetRect.left;HEAP32[idx+10]=t.clientY-targetRect.top;idx+=13;if(++numTouches>31){break}}HEAP32[touchEvent>>2]=numTouches;if(wasmTable.get(callbackfunc)(eventTypeId,touchEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:eventTypeString=="touchstart"||eventTypeString=="touchend",eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:touchEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_touchcancel_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerTouchEventCallback(target,userData,useCapture,callbackfunc,25,"touchcancel",targetThread);return 0}function _emscripten_set_touchend_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerTouchEventCallback(target,userData,useCapture,callbackfunc,23,"touchend",targetThread);return 0}function _emscripten_set_touchmove_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerTouchEventCallback(target,userData,useCapture,callbackfunc,24,"touchmove",targetThread);return 0}function _emscripten_set_touchstart_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerTouchEventCallback(target,userData,useCapture,callbackfunc,22,"touchstart",targetThread);return 0}function _emscripten_thread_sleep(msecs){var start=_emscripten_get_now();while(_emscripten_get_now()-start<msecs){}}function _exit(status){exit(status)}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_read(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doReadv(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var stream=SYSCALLS.getStreamFromFD(fd);var HIGH_OFFSET=4294967296;var offset=offset_high*HIGH_OFFSET+(offset_low>>>0);var DOUBLE_LIMIT=9007199254740992;if(offset<=-DOUBLE_LIMIT||offset>=DOUBLE_LIMIT){return-61}FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doWritev(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _glActiveTexture(x0){GLctx["activeTexture"](x0)}function _glAttachShader(program,shader){GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _glBindAttribLocation(program,index,name){GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))}function _glBindBuffer(target,buffer){GLctx.bindBuffer(target,GL.buffers[buffer])}function _glBindTexture(target,texture){GLctx.bindTexture(target,GL.textures[texture])}function _glBlendFunc(x0,x1){GLctx["blendFunc"](x0,x1)}function _glBufferData(target,size,data,usage){GLctx.bufferData(target,data?HEAPU8.subarray(data,data+size):size,usage)}function _glBufferSubData(target,offset,size,data){GLctx.bufferSubData(target,offset,HEAPU8.subarray(data,data+size))}function _glClear(x0){GLctx["clear"](x0)}function _glClearColor(x0,x1,x2,x3){GLctx["clearColor"](x0,x1,x2,x3)}function _glClearDepthf(x0){GLctx["clearDepth"](x0)}function _glCompileShader(shader){GLctx.compileShader(GL.shaders[shader])}function _glCompressedTexImage2D(target,level,internalFormat,width,height,border,imageSize,data){GLctx["compressedTexImage2D"](target,level,internalFormat,width,height,border,data?HEAPU8.subarray(data,data+imageSize):null)}function _glCreateProgram(){var id=GL.getNewId(GL.programs);var program=GLctx.createProgram();program.name=id;GL.programs[id]=program;return id}function _glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}function _glCullFace(x0){GLctx["cullFace"](x0)}function _glDeleteBuffers(n,buffers){for(var i=0;i<n;i++){var id=HEAP32[buffers+i*4>>2];var buffer=GL.buffers[id];if(!buffer)continue;GLctx.deleteBuffer(buffer);buffer.name=0;GL.buffers[id]=null}}function _glDeleteProgram(id){if(!id)return;var program=GL.programs[id];if(!program){GL.recordError(1281);return}GLctx.deleteProgram(program);program.name=0;GL.programs[id]=null;GL.programInfos[id]=null}function _glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}function _glDeleteTextures(n,textures){for(var i=0;i<n;i++){var id=HEAP32[textures+i*4>>2];var texture=GL.textures[id];if(!texture)continue;GLctx.deleteTexture(texture);texture.name=0;GL.textures[id]=null}}function _glDepthFunc(x0){GLctx["depthFunc"](x0)}function _glDetachShader(program,shader){GLctx.detachShader(GL.programs[program],GL.shaders[shader])}function _glDisable(x0){GLctx["disable"](x0)}function _glDisableVertexAttribArray(index){GLctx.disableVertexAttribArray(index)}function _glDrawArrays(mode,first,count){GLctx.drawArrays(mode,first,count)}function _glDrawElements(mode,count,type,indices){GLctx.drawElements(mode,count,type,indices)}function _glEnable(x0){GLctx["enable"](x0)}function _glEnableVertexAttribArray(index){GLctx.enableVertexAttribArray(index)}function _glFrontFace(x0){GLctx["frontFace"](x0)}function _glGenBuffers(n,buffers){__glGenObject(n,buffers,"createBuffer",GL.buffers)}function _glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures)}function _glGetAttribLocation(program,name){return GLctx.getAttribLocation(GL.programs[program],UTF8ToString(name))}function _glGetFloatv(name_,p){emscriptenWebGLGet(name_,p,2)}function _glGetProgramInfoLog(program,maxLength,length,infoLog){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _glGetProgramiv(program,pname,p){if(!p){GL.recordError(1281);return}if(program>=GL.counter){GL.recordError(1281);return}var ptable=GL.programInfos[program];if(!ptable){GL.recordError(1282);return}if(pname==35716){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";HEAP32[p>>2]=log.length+1}else if(pname==35719){HEAP32[p>>2]=ptable.maxUniformLength}else if(pname==35722){if(ptable.maxAttributeLength==-1){program=GL.programs[program];var numAttribs=GLctx.getProgramParameter(program,35721);ptable.maxAttributeLength=0;for(var i=0;i<numAttribs;++i){var activeAttrib=GLctx.getActiveAttrib(program,i);ptable.maxAttributeLength=Math.max(ptable.maxAttributeLength,activeAttrib.name.length+1)}}HEAP32[p>>2]=ptable.maxAttributeLength}else if(pname==35381){if(ptable.maxUniformBlockNameLength==-1){program=GL.programs[program];var numBlocks=GLctx.getProgramParameter(program,35382);ptable.maxUniformBlockNameLength=0;for(var i=0;i<numBlocks;++i){var activeBlockName=GLctx.getActiveUniformBlockName(program,i);ptable.maxUniformBlockNameLength=Math.max(ptable.maxUniformBlockNameLength,activeBlockName.length+1)}}HEAP32[p>>2]=ptable.maxUniformBlockNameLength}else{HEAP32[p>>2]=GLctx.getProgramParameter(GL.programs[program],pname)}}function _glGetShaderInfoLog(shader,maxLength,length,infoLog){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _glGetShaderiv(shader,pname,p){if(!p){GL.recordError(1281);return}if(pname==35716){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var logLength=log?log.length+1:0;HEAP32[p>>2]=logLength}else if(pname==35720){var source=GLctx.getShaderSource(GL.shaders[shader]);var sourceLength=source?source.length+1:0;HEAP32[p>>2]=sourceLength}else{HEAP32[p>>2]=GLctx.getShaderParameter(GL.shaders[shader],pname)}}function _glGetString(name_){if(GL.stringCache[name_])return GL.stringCache[name_];var ret;switch(name_){case 7939:var exts=GLctx.getSupportedExtensions()||[];exts=exts.concat(exts.map(function(e){return"GL_"+e}));ret=stringToNewUTF8(exts.join(" "));break;case 7936:case 7937:case 37445:case 37446:var s=GLctx.getParameter(name_);if(!s){GL.recordError(1280)}ret=stringToNewUTF8(s);break;case 7938:var glVersion=GLctx.getParameter(7938);{glVersion="OpenGL ES 2.0 ("+glVersion+")"}ret=stringToNewUTF8(glVersion);break;case 35724:var glslVersion=GLctx.getParameter(35724);var ver_re=/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/;var ver_num=glslVersion.match(ver_re);if(ver_num!==null){if(ver_num[1].length==3)ver_num[1]=ver_num[1]+"0";glslVersion="OpenGL ES GLSL ES "+ver_num[1]+" ("+glslVersion+")"}ret=stringToNewUTF8(glslVersion);break;default:GL.recordError(1280);return 0}GL.stringCache[name_]=ret;return ret}function _glGetUniformLocation(program,name){name=UTF8ToString(name);var arrayIndex=0;if(name[name.length-1]=="]"){var leftBrace=name.lastIndexOf("[");arrayIndex=name[leftBrace+1]!="]"?jstoi_q(name.slice(leftBrace+1)):0;name=name.slice(0,leftBrace)}var uniformInfo=GL.programInfos[program]&&GL.programInfos[program].uniforms[name];if(uniformInfo&&arrayIndex>=0&&arrayIndex<uniformInfo[0]){return uniformInfo[1]+arrayIndex}else{return-1}}function _glLinkProgram(program){GLctx.linkProgram(GL.programs[program]);GL.populateUniformTable(program)}function _glPixelStorei(pname,param){if(pname==3317){GL.unpackAlignment=param}GLctx.pixelStorei(pname,param)}function _glReadPixels(x,y,width,height,format,type,pixels){var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);return}GLctx.readPixels(x,y,width,height,format,type,pixelData)}function _glShaderSource(shader,count,string,length){var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}function _glTexImage2D(target,level,internalFormat,width,height,border,format,type,pixels){GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels?emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat):null)}function _glTexParameteri(x0,x1,x2){GLctx["texParameteri"](x0,x1,x2)}function _glUniform1i(location,v0){GLctx.uniform1i(GL.uniforms[location],v0)}function _glUniform4f(location,v0,v1,v2,v3){GLctx.uniform4f(GL.uniforms[location],v0,v1,v2,v3)}function _glUniformMatrix4fv(location,count,transpose,value){if(count<=18){var view=miniTempWebGLFloatBuffers[16*count-1];var heap=HEAPF32;value>>=2;for(var i=0;i<16*count;i+=16){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3];view[i+4]=heap[dst+4];view[i+5]=heap[dst+5];view[i+6]=heap[dst+6];view[i+7]=heap[dst+7];view[i+8]=heap[dst+8];view[i+9]=heap[dst+9];view[i+10]=heap[dst+10];view[i+11]=heap[dst+11];view[i+12]=heap[dst+12];view[i+13]=heap[dst+13];view[i+14]=heap[dst+14];view[i+15]=heap[dst+15]}}else{var view=HEAPF32.subarray(value>>2,value+count*64>>2)}GLctx.uniformMatrix4fv(GL.uniforms[location],!!transpose,view)}function _glUseProgram(program){GLctx.useProgram(GL.programs[program])}function _glVertexAttrib2f(x0,x1,x2){GLctx["vertexAttrib2f"](x0,x1,x2)}function _glVertexAttrib3f(x0,x1,x2,x3){GLctx["vertexAttrib3f"](x0,x1,x2,x3)}function _glVertexAttrib4f(x0,x1,x2,x3,x4){GLctx["vertexAttrib4f"](x0,x1,x2,x3,x4)}function _glVertexAttribPointer(index,size,type,normalized,stride,ptr){GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}function _glViewport(x0,x1,x2,x3){GLctx["viewport"](x0,x1,x2,x3)}function GLFW_Window(id,width,height,title,monitor,share){this.id=id;this.x=0;this.y=0;this.fullscreen=false;this.storedX=0;this.storedY=0;this.width=width;this.height=height;this.storedWidth=width;this.storedHeight=height;this.title=title;this.monitor=monitor;this.share=share;this.attributes=GLFW.hints;this.inputModes={208897:212993,208898:0,208899:0};this.buttons=0;this.keys=new Array;this.domKeys=new Array;this.shouldClose=0;this.title=null;this.windowPosFunc=null;this.windowSizeFunc=null;this.windowCloseFunc=null;this.windowRefreshFunc=null;this.windowFocusFunc=null;this.windowIconifyFunc=null;this.framebufferSizeFunc=null;this.mouseButtonFunc=null;this.cursorPosFunc=null;this.cursorEnterFunc=null;this.scrollFunc=null;this.dropFunc=null;this.keyFunc=null;this.charFunc=null;this.userptr=null}var GLFW={WindowFromId:function(id){if(id<=0||!GLFW.windows)return null;return GLFW.windows[id-1]},joystickFunc:null,errorFunc:null,monitorFunc:null,active:null,windows:null,monitors:null,monitorString:null,versionString:null,initialTime:null,extensions:null,hints:null,defaultHints:{131073:0,131074:0,131075:1,131076:1,131077:1,135169:8,135170:8,135171:8,135172:8,135173:24,135174:8,135175:0,135176:0,135177:0,135178:0,135179:0,135180:0,135181:0,135182:0,135183:0,139265:196609,139266:1,139267:0,139268:0,139269:0,139270:0,139271:0,139272:0},DOMToGLFWKeyCode:function(keycode){switch(keycode){case 32:return 32;case 222:return 39;case 188:return 44;case 173:return 45;case 189:return 45;case 190:return 46;case 191:return 47;case 48:return 48;case 49:return 49;case 50:return 50;case 51:return 51;case 52:return 52;case 53:return 53;case 54:return 54;case 55:return 55;case 56:return 56;case 57:return 57;case 59:return 59;case 61:return 61;case 187:return 61;case 65:return 65;case 66:return 66;case 67:return 67;case 68:return 68;case 69:return 69;case 70:return 70;case 71:return 71;case 72:return 72;case 73:return 73;case 74:return 74;case 75:return 75;case 76:return 76;case 77:return 77;case 78:return 78;case 79:return 79;case 80:return 80;case 81:return 81;case 82:return 82;case 83:return 83;case 84:return 84;case 85:return 85;case 86:return 86;case 87:return 87;case 88:return 88;case 89:return 89;case 90:return 90;case 219:return 91;case 220:return 92;case 221:return 93;case 192:return 94;case 27:return 256;case 13:return 257;case 9:return 258;case 8:return 259;case 45:return 260;case 46:return 261;case 39:return 262;case 37:return 263;case 40:return 264;case 38:return 265;case 33:return 266;case 34:return 267;case 36:return 268;case 35:return 269;case 20:return 280;case 145:return 281;case 144:return 282;case 44:return 283;case 19:return 284;case 112:return 290;case 113:return 291;case 114:return 292;case 115:return 293;case 116:return 294;case 117:return 295;case 118:return 296;case 119:return 297;case 120:return 298;case 121:return 299;case 122:return 300;case 123:return 301;case 124:return 302;case 125:return 303;case 126:return 304;case 127:return 305;case 128:return 306;case 129:return 307;case 130:return 308;case 131:return 309;case 132:return 310;case 133:return 311;case 134:return 312;case 135:return 313;case 136:return 314;case 96:return 320;case 97:return 321;case 98:return 322;case 99:return 323;case 100:return 324;case 101:return 325;case 102:return 326;case 103:return 327;case 104:return 328;case 105:return 329;case 110:return 330;case 111:return 331;case 106:return 332;case 109:return 333;case 107:return 334;case 16:return 340;case 17:return 341;case 18:return 342;case 91:return 343;case 93:return 348;default:return-1}},getModBits:function(win){var mod=0;if(win.keys[340])mod|=1;if(win.keys[341])mod|=2;if(win.keys[342])mod|=4;if(win.keys[343])mod|=8;return mod},onKeyPress:function(event){if(!GLFW.active||!GLFW.active.charFunc)return;if(event.ctrlKey||event.metaKey)return;var charCode=event.charCode;if(charCode==0||charCode>=0&&charCode<=31)return;wasmTable.get(GLFW.active.charFunc)(GLFW.active.id,charCode)},onKeyChanged:function(keyCode,status){if(!GLFW.active)return;var key=GLFW.DOMToGLFWKeyCode(keyCode);if(key==-1)return;var repeat=status&&GLFW.active.keys[key];GLFW.active.keys[key]=status;GLFW.active.domKeys[keyCode]=status;if(!GLFW.active.keyFunc)return;if(repeat)status=2;wasmTable.get(GLFW.active.keyFunc)(GLFW.active.id,key,keyCode,status,GLFW.getModBits(GLFW.active))},onGamepadConnected:function(event){GLFW.refreshJoysticks()},onGamepadDisconnected:function(event){GLFW.refreshJoysticks()},onKeydown:function(event){GLFW.onKeyChanged(event.keyCode,1);if(event.keyCode===8||event.keyCode===9){event.preventDefault()}},onKeyup:function(event){GLFW.onKeyChanged(event.keyCode,0)},onBlur:function(event){if(!GLFW.active)return;for(var i=0;i<GLFW.active.domKeys.length;++i){if(GLFW.active.domKeys[i]){GLFW.onKeyChanged(i,0)}}},onMousemove:function(event){if(!GLFW.active)return;Browser.calculateMouseEvent(event);if(event.target!=Module["canvas"]||!GLFW.active.cursorPosFunc)return;wasmTable.get(GLFW.active.cursorPosFunc)(GLFW.active.id,Browser.mouseX,Browser.mouseY)},DOMToGLFWMouseButton:function(event){var eventButton=event["button"];if(eventButton>0){if(eventButton==1){eventButton=2}else{eventButton=1}}return eventButton},onMouseenter:function(event){if(!GLFW.active)return;if(event.target!=Module["canvas"]||!GLFW.active.cursorEnterFunc)return;wasmTable.get(GLFW.active.cursorEnterFunc)(GLFW.active.id,1)},onMouseleave:function(event){if(!GLFW.active)return;if(event.target!=Module["canvas"]||!GLFW.active.cursorEnterFunc)return;wasmTable.get(GLFW.active.cursorEnterFunc)(GLFW.active.id,0)},onMouseButtonChanged:function(event,status){if(!GLFW.active)return;Browser.calculateMouseEvent(event);if(event.target!=Module["canvas"])return;var eventButton=GLFW.DOMToGLFWMouseButton(event);if(status==1){GLFW.active.buttons|=1<<eventButton;try{event.target.setCapture()}catch(e){}}else{GLFW.active.buttons&=~(1<<eventButton)}if(!GLFW.active.mouseButtonFunc)return;wasmTable.get(GLFW.active.mouseButtonFunc)(GLFW.active.id,eventButton,status,GLFW.getModBits(GLFW.active))},onMouseButtonDown:function(event){if(!GLFW.active)return;GLFW.onMouseButtonChanged(event,1)},onMouseButtonUp:function(event){if(!GLFW.active)return;GLFW.onMouseButtonChanged(event,0)},onMouseWheel:function(event){var delta=-Browser.getMouseWheelDelta(event);delta=delta==0?0:delta>0?Math.max(delta,1):Math.min(delta,-1);GLFW.wheelPos+=delta;if(!GLFW.active||!GLFW.active.scrollFunc||event.target!=Module["canvas"])return;var sx=0;var sy=0;if(event.type=="mousewheel"){sx=event.wheelDeltaX;sy=event.wheelDeltaY}else{sx=event.deltaX;sy=event.deltaY}wasmTable.get(GLFW.active.scrollFunc)(GLFW.active.id,sx,sy);event.preventDefault()},onCanvasResize:function(width,height){if(!GLFW.active)return;var resizeNeeded=true;if(document["fullscreen"]||document["fullScreen"]||document["mozFullScreen"]||document["webkitIsFullScreen"]){GLFW.active.storedX=GLFW.active.x;GLFW.active.storedY=GLFW.active.y;GLFW.active.storedWidth=GLFW.active.width;GLFW.active.storedHeight=GLFW.active.height;GLFW.active.x=GLFW.active.y=0;GLFW.active.width=screen.width;GLFW.active.height=screen.height;GLFW.active.fullscreen=true}else if(GLFW.active.fullscreen==true){GLFW.active.x=GLFW.active.storedX;GLFW.active.y=GLFW.active.storedY;GLFW.active.width=GLFW.active.storedWidth;GLFW.active.height=GLFW.active.storedHeight;GLFW.active.fullscreen=false}else if(GLFW.active.width!=width||GLFW.active.height!=height){GLFW.active.width=width;GLFW.active.height=height}else{resizeNeeded=false}if(resizeNeeded){Browser.setCanvasSize(GLFW.active.width,GLFW.active.height,true);GLFW.onWindowSizeChanged();GLFW.onFramebufferSizeChanged()}},onWindowSizeChanged:function(){if(!GLFW.active)return;if(!GLFW.active.windowSizeFunc)return;wasmTable.get(GLFW.active.windowSizeFunc)(GLFW.active.id,GLFW.active.width,GLFW.active.height)},onFramebufferSizeChanged:function(){if(!GLFW.active)return;if(!GLFW.active.framebufferSizeFunc)return;wasmTable.get(GLFW.active.framebufferSizeFunc)(GLFW.active.id,GLFW.active.width,GLFW.active.height)},getTime:function(){return _emscripten_get_now()/1e3},setWindowTitle:function(winid,title){var win=GLFW.WindowFromId(winid);if(!win)return;win.title=UTF8ToString(title);if(GLFW.active.id==win.id){document.title=win.title}},setJoystickCallback:function(cbfun){GLFW.joystickFunc=cbfun;GLFW.refreshJoysticks()},joys:{},lastGamepadState:null,lastGamepadStateFrame:null,refreshJoysticks:function(){if(Browser.mainLoop.currentFrameNumber!==GLFW.lastGamepadStateFrame||!Browser.mainLoop.currentFrameNumber){GLFW.lastGamepadState=navigator.getGamepads?navigator.getGamepads():navigator.webkitGetGamepads?navigator.webkitGetGamepads:null;GLFW.lastGamepadStateFrame=Browser.mainLoop.currentFrameNumber;for(var joy=0;joy<GLFW.lastGamepadState.length;++joy){var gamepad=GLFW.lastGamepadState[joy];if(gamepad){if(!GLFW.joys[joy]){console.log("glfw joystick connected:",joy);GLFW.joys[joy]={id:allocate(intArrayFromString(gamepad.id),ALLOC_NORMAL),buttonsCount:gamepad.buttons.length,axesCount:gamepad.axes.length,buttons:allocate(new Array(gamepad.buttons.length),ALLOC_NORMAL),axes:allocate(new Array(gamepad.axes.length*4),ALLOC_NORMAL)};if(GLFW.joystickFunc){wasmTable.get(GLFW.joystickFunc)(joy,262145)}}var data=GLFW.joys[joy];for(var i=0;i<gamepad.buttons.length;++i){setValue(data.buttons+i,gamepad.buttons[i].pressed,"i8")}for(var i=0;i<gamepad.axes.length;++i){setValue(data.axes+i*4,gamepad.axes[i],"float")}}else{if(GLFW.joys[joy]){console.log("glfw joystick disconnected",joy);if(GLFW.joystickFunc){wasmTable.get(GLFW.joystickFunc)(joy,262146)}_free(GLFW.joys[joy].id);_free(GLFW.joys[joy].buttons);_free(GLFW.joys[joy].axes);delete GLFW.joys[joy]}}}}},setKeyCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.keyFunc;win.keyFunc=cbfun;return prevcbfun},setCharCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.charFunc;win.charFunc=cbfun;return prevcbfun},setMouseButtonCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.mouseButtonFunc;win.mouseButtonFunc=cbfun;return prevcbfun},setCursorPosCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.cursorPosFunc;win.cursorPosFunc=cbfun;return prevcbfun},setScrollCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.scrollFunc;win.scrollFunc=cbfun;return prevcbfun},setDropCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.dropFunc;win.dropFunc=cbfun;return prevcbfun},onDrop:function(event){if(!GLFW.active||!GLFW.active.dropFunc)return;if(!event.dataTransfer||!event.dataTransfer.files||event.dataTransfer.files.length==0)return;event.preventDefault();var filenames=allocate(new Array(event.dataTransfer.files.length*4),ALLOC_NORMAL);var filenamesArray=[];var count=event.dataTransfer.files.length;var written=0;var drop_dir=".glfw_dropped_files";FS.createPath("/",drop_dir);function save(file){var path="/"+drop_dir+"/"+file.name.replace(/\//g,"_");var reader=new FileReader;reader.onloadend=function(e){if(reader.readyState!=2){++written;console.log("failed to read dropped file: "+file.name+": "+reader.error);return}var data=e.target.result;FS.writeFile(path,new Uint8Array(data));if(++written===count){wasmTable.get(GLFW.active.dropFunc)(GLFW.active.id,count,filenames);for(var i=0;i<filenamesArray.length;++i){_free(filenamesArray[i])}_free(filenames)}};reader.readAsArrayBuffer(file);var filename=allocate(intArrayFromString(path),ALLOC_NORMAL);filenamesArray.push(filename);setValue(filenames+i*4,filename,"i8*")}for(var i=0;i<count;++i){save(event.dataTransfer.files[i])}return false},onDragover:function(event){if(!GLFW.active||!GLFW.active.dropFunc)return;event.preventDefault();return false},setWindowSizeCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowSizeFunc;win.windowSizeFunc=cbfun;return prevcbfun},setWindowCloseCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowCloseFunc;win.windowCloseFunc=cbfun;return prevcbfun},setWindowRefreshCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowRefreshFunc;win.windowRefreshFunc=cbfun;return prevcbfun},onClickRequestPointerLock:function(e){if(!Browser.pointerLock&&Module["canvas"].requestPointerLock){Module["canvas"].requestPointerLock();e.preventDefault()}},setInputMode:function(winid,mode,value){var win=GLFW.WindowFromId(winid);if(!win)return;switch(mode){case 208897:{switch(value){case 212993:{win.inputModes[mode]=value;Module["canvas"].removeEventListener("click",GLFW.onClickRequestPointerLock,true);Module["canvas"].exitPointerLock();break}case 212994:{console.log("glfwSetInputMode called with GLFW_CURSOR_HIDDEN value not implemented.");break}case 212995:{win.inputModes[mode]=value;Module["canvas"].addEventListener("click",GLFW.onClickRequestPointerLock,true);Module["canvas"].requestPointerLock();break}default:{console.log("glfwSetInputMode called with unknown value parameter value: "+value+".");break}}break}case 208898:{console.log("glfwSetInputMode called with GLFW_STICKY_KEYS mode not implemented.");break}case 208899:{console.log("glfwSetInputMode called with GLFW_STICKY_MOUSE_BUTTONS mode not implemented.");break}default:{console.log("glfwSetInputMode called with unknown mode parameter value: "+mode+".");break}}},getKey:function(winid,key){var win=GLFW.WindowFromId(winid);if(!win)return 0;return win.keys[key]},getMouseButton:function(winid,button){var win=GLFW.WindowFromId(winid);if(!win)return 0;return(win.buttons&1<<button)>0},getCursorPos:function(winid,x,y){setValue(x,Browser.mouseX,"double");setValue(y,Browser.mouseY,"double")},getMousePos:function(winid,x,y){setValue(x,Browser.mouseX,"i32");setValue(y,Browser.mouseY,"i32")},setCursorPos:function(winid,x,y){},getWindowPos:function(winid,x,y){var wx=0;var wy=0;var win=GLFW.WindowFromId(winid);if(win){wx=win.x;wy=win.y}if(x){setValue(x,wx,"i32")}if(y){setValue(y,wy,"i32")}},setWindowPos:function(winid,x,y){var win=GLFW.WindowFromId(winid);if(!win)return;win.x=x;win.y=y},getWindowSize:function(winid,width,height){var ww=0;var wh=0;var win=GLFW.WindowFromId(winid);if(win){ww=win.width;wh=win.height}if(width){setValue(width,ww,"i32")}if(height){setValue(height,wh,"i32")}},setWindowSize:function(winid,width,height){var win=GLFW.WindowFromId(winid);if(!win)return;if(GLFW.active.id==win.id){if(width==screen.width&&height==screen.height){Browser.requestFullscreen()}else{Browser.exitFullscreen();Browser.setCanvasSize(width,height);win.width=width;win.height=height}}if(!win.windowSizeFunc)return;wasmTable.get(win.windowSizeFunc)(win.id,width,height)},createWindow:function(width,height,title,monitor,share){var i,id;for(i=0;i<GLFW.windows.length&&GLFW.windows[i]!==null;i++){}if(i>0)throw"glfwCreateWindow only supports one window at time currently";id=i+1;if(width<=0||height<=0)return 0;if(monitor){Browser.requestFullscreen()}else{Browser.setCanvasSize(width,height)}for(i=0;i<GLFW.windows.length&&GLFW.windows[i]==null;i++){}var useWebGL=GLFW.hints[139265]>0;if(i==GLFW.windows.length){if(useWebGL){var contextAttributes={antialias:GLFW.hints[135181]>1,depth:GLFW.hints[135173]>0,stencil:GLFW.hints[135174]>0,alpha:GLFW.hints[135172]>0};Module.ctx=Browser.createContext(Module["canvas"],true,true,contextAttributes)}else{Browser.init()}}if(!Module.ctx&&useWebGL)return 0;var win=new GLFW_Window(id,width,height,title,monitor,share);if(id-1==GLFW.windows.length){GLFW.windows.push(win)}else{GLFW.windows[id-1]=win}GLFW.active=win;return win.id},destroyWindow:function(winid){var win=GLFW.WindowFromId(winid);if(!win)return;if(win.windowCloseFunc)wasmTable.get(win.windowCloseFunc)(win.id);GLFW.windows[win.id-1]=null;if(GLFW.active.id==win.id)GLFW.active=null;for(var i=0;i<GLFW.windows.length;i++)if(GLFW.windows[i]!==null)return;Module.ctx=Browser.destroyContext(Module["canvas"],true,true)},swapBuffers:function(winid){},GLFW2ParamToGLFW3Param:function(param){var table={196609:0,196610:0,196611:0,196612:0,196613:0,196614:0,131073:0,131074:0,131075:0,131076:0,131077:135169,131078:135170,131079:135171,131080:135172,131081:135173,131082:135174,131083:135183,131084:135175,131085:135176,131086:135177,131087:135178,131088:135179,131089:135180,131090:0,131091:135181,131092:139266,131093:139267,131094:139270,131095:139271,131096:139272};return table[param]}};function _glfwCreateWindow(width,height,title,monitor,share){return GLFW.createWindow(width,height,title,monitor,share)}function _glfwDefaultWindowHints(){GLFW.hints=GLFW.defaultHints}function _glfwDestroyWindow(winid){return GLFW.destroyWindow(winid)}function _glfwGetPrimaryMonitor(){return 1}function _glfwGetTime(){return GLFW.getTime()-GLFW.initialTime}function _glfwGetVideoModes(monitor,count){setValue(count,0,"i32");return 0}function _glfwInit(){if(GLFW.windows)return 1;GLFW.initialTime=GLFW.getTime();GLFW.hints=GLFW.defaultHints;GLFW.windows=new Array;GLFW.active=null;window.addEventListener("gamepadconnected",GLFW.onGamepadConnected,true);window.addEventListener("gamepaddisconnected",GLFW.onGamepadDisconnected,true);window.addEventListener("keydown",GLFW.onKeydown,true);window.addEventListener("keypress",GLFW.onKeyPress,true);window.addEventListener("keyup",GLFW.onKeyup,true);window.addEventListener("blur",GLFW.onBlur,true);Module["canvas"].addEventListener("touchmove",GLFW.onMousemove,true);Module["canvas"].addEventListener("touchstart",GLFW.onMouseButtonDown,true);Module["canvas"].addEventListener("touchcancel",GLFW.onMouseButtonUp,true);Module["canvas"].addEventListener("touchend",GLFW.onMouseButtonUp,true);Module["canvas"].addEventListener("mousemove",GLFW.onMousemove,true);Module["canvas"].addEventListener("mousedown",GLFW.onMouseButtonDown,true);Module["canvas"].addEventListener("mouseup",GLFW.onMouseButtonUp,true);Module["canvas"].addEventListener("wheel",GLFW.onMouseWheel,true);Module["canvas"].addEventListener("mousewheel",GLFW.onMouseWheel,true);Module["canvas"].addEventListener("mouseenter",GLFW.onMouseenter,true);Module["canvas"].addEventListener("mouseleave",GLFW.onMouseleave,true);Module["canvas"].addEventListener("drop",GLFW.onDrop,true);Module["canvas"].addEventListener("dragover",GLFW.onDragover,true);Browser.resizeListeners.push(function(width,height){GLFW.onCanvasResize(width,height)});return 1}function _glfwMakeContextCurrent(winid){}function _glfwSetCharCallback(winid,cbfun){return GLFW.setCharCallback(winid,cbfun)}function _glfwSetCursorEnterCallback(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.cursorEnterFunc;win.cursorEnterFunc=cbfun;return prevcbfun}function _glfwSetCursorPosCallback(winid,cbfun){return GLFW.setCursorPosCallback(winid,cbfun)}function _glfwSetDropCallback(winid,cbfun){return GLFW.setDropCallback(winid,cbfun)}function _glfwSetErrorCallback(cbfun){var prevcbfun=GLFW.errorFunc;GLFW.errorFunc=cbfun;return prevcbfun}function _glfwSetKeyCallback(winid,cbfun){return GLFW.setKeyCallback(winid,cbfun)}function _glfwSetMouseButtonCallback(winid,cbfun){return GLFW.setMouseButtonCallback(winid,cbfun)}function _glfwSetScrollCallback(winid,cbfun){return GLFW.setScrollCallback(winid,cbfun)}function _glfwSetWindowFocusCallback(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowFocusFunc;win.windowFocusFunc=cbfun;return prevcbfun}function _glfwSetWindowIconifyCallback(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowIconifyFunc;win.windowIconifyFunc=cbfun;return prevcbfun}function _glfwSetWindowShouldClose(winid,value){var win=GLFW.WindowFromId(winid);if(!win)return;win.shouldClose=value}function _glfwSetWindowSizeCallback(winid,cbfun){return GLFW.setWindowSizeCallback(winid,cbfun)}function _glfwSwapBuffers(winid){GLFW.swapBuffers(winid)}function _glfwSwapInterval(interval){interval=Math.abs(interval);if(interval==0)_emscripten_set_main_loop_timing(0,0);else _emscripten_set_main_loop_timing(1,interval)}function _glfwTerminate(){window.removeEventListener("gamepadconnected",GLFW.onGamepadConnected,true);window.removeEventListener("gamepaddisconnected",GLFW.onGamepadDisconnected,true);window.removeEventListener("keydown",GLFW.onKeydown,true);window.removeEventListener("keypress",GLFW.onKeyPress,true);window.removeEventListener("keyup",GLFW.onKeyup,true);window.removeEventListener("blur",GLFW.onBlur,true);Module["canvas"].removeEventListener("touchmove",GLFW.onMousemove,true);Module["canvas"].removeEventListener("touchstart",GLFW.onMouseButtonDown,true);Module["canvas"].removeEventListener("touchcancel",GLFW.onMouseButtonUp,true);Module["canvas"].removeEventListener("touchend",GLFW.onMouseButtonUp,true);Module["canvas"].removeEventListener("mousemove",GLFW.onMousemove,true);Module["canvas"].removeEventListener("mousedown",GLFW.onMouseButtonDown,true);Module["canvas"].removeEventListener("mouseup",GLFW.onMouseButtonUp,true);Module["canvas"].removeEventListener("wheel",GLFW.onMouseWheel,true);Module["canvas"].removeEventListener("mousewheel",GLFW.onMouseWheel,true);Module["canvas"].removeEventListener("mouseenter",GLFW.onMouseenter,true);Module["canvas"].removeEventListener("mouseleave",GLFW.onMouseleave,true);Module["canvas"].removeEventListener("drop",GLFW.onDrop,true);Module["canvas"].removeEventListener("dragover",GLFW.onDragover,true);Module["canvas"].width=Module["canvas"].height=1;GLFW.windows=null;GLFW.active=null}function _glfwWindowHint(target,hint){GLFW.hints[target]=hint}function _time(ptr){var ret=Date.now()/1e3|0;if(ptr){HEAP32[ptr>>2]=ret}return ret}var FSNode=function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev};var readMode=292|73;var writeMode=146;Object.defineProperties(FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(val){val?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===writeMode},set:function(val){val?this.mode|=writeMode:this.mode&=~writeMode}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}});FS.FSNode=FSNode;FS.staticInit();Module["FS_createPath"]=FS.createPath;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createDevice"]=FS.createDevice;Module["FS_unlink"]=FS.unlink;var GLctx;for(var i=0;i<32;++i)tempFixedLengthArray.push(new Array(i));var miniTempWebGLFloatBuffersStorage=new Float32Array(288);for(var i=0;i<288;++i){miniTempWebGLFloatBuffers[i]=miniTempWebGLFloatBuffersStorage.subarray(0,i+1)}var __miniTempWebGLIntBuffersStorage=new Int32Array(288);for(var i=0;i<288;++i){__miniTempWebGLIntBuffers[i]=__miniTempWebGLIntBuffersStorage.subarray(0,i+1)}Module["requestFullscreen"]=function Module_requestFullscreen(lockPointer,resizeCanvas){Browser.requestFullscreen(lockPointer,resizeCanvas)};Module["requestAnimationFrame"]=function Module_requestAnimationFrame(func){Browser.requestAnimationFrame(func)};Module["setCanvasSize"]=function Module_setCanvasSize(width,height,noUpdates){Browser.setCanvasSize(width,height,noUpdates)};Module["pauseMainLoop"]=function Module_pauseMainLoop(){Browser.mainLoop.pause()};Module["resumeMainLoop"]=function Module_resumeMainLoop(){Browser.mainLoop.resume()};Module["getUserMedia"]=function Module_getUserMedia(){Browser.getUserMedia()};Module["createContext"]=function Module_createContext(canvas,useWebGL,setInModule,webGLContextAttributes){return Browser.createContext(canvas,useWebGL,setInModule,webGLContextAttributes)};function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var asmLibraryArg={"d":___assert_fail,"K":___sys_fcntl64,"Ta":___sys_ioctl,"Ua":___sys_open,"za":_emscripten_exit_pointerlock,"_":_emscripten_get_element_css_size,"V":_emscripten_get_gamepad_status,"W":_emscripten_get_num_gamepads,"Hd":_emscripten_glActiveTexture,"Gd":_emscripten_glAttachShader,"Xd":_emscripten_glBeginQueryEXT,"Fd":_emscripten_glBindAttribLocation,"Ed":_emscripten_glBindBuffer,"Dd":_emscripten_glBindFramebuffer,"Cd":_emscripten_glBindRenderbuffer,"Bd":_emscripten_glBindTexture,"Pd":_emscripten_glBindVertexArrayOES,"Ad":_emscripten_glBlendColor,"zd":_emscripten_glBlendEquation,"yd":_emscripten_glBlendEquationSeparate,"xd":_emscripten_glBlendFunc,"wd":_emscripten_glBlendFuncSeparate,"vd":_emscripten_glBufferData,"ud":_emscripten_glBufferSubData,"td":_emscripten_glCheckFramebufferStatus,"sd":_emscripten_glClear,"rd":_emscripten_glClearColor,"qd":_emscripten_glClearDepthf,"pd":_emscripten_glClearStencil,"od":_emscripten_glColorMask,"nd":_emscripten_glCompileShader,"md":_emscripten_glCompressedTexImage2D,"ld":_emscripten_glCompressedTexSubImage2D,"kd":_emscripten_glCopyTexImage2D,"jd":_emscripten_glCopyTexSubImage2D,"id":_emscripten_glCreateProgram,"hd":_emscripten_glCreateShader,"gd":_emscripten_glCullFace,"fd":_emscripten_glDeleteBuffers,"ed":_emscripten_glDeleteFramebuffers,"dd":_emscripten_glDeleteProgram,"R":_emscripten_glDeleteQueriesEXT,"cd":_emscripten_glDeleteRenderbuffers,"bd":_emscripten_glDeleteShader,"ad":_emscripten_glDeleteTextures,"Od":_emscripten_glDeleteVertexArraysOES,"$c":_emscripten_glDepthFunc,"_c":_emscripten_glDepthMask,"Zc":_emscripten_glDepthRangef,"Yc":_emscripten_glDetachShader,"Xc":_emscripten_glDisable,"Wc":_emscripten_glDisableVertexAttribArray,"Vc":_emscripten_glDrawArrays,"Kd":_emscripten_glDrawArraysInstancedANGLE,"Ld":_emscripten_glDrawBuffersWEBGL,"Uc":_emscripten_glDrawElements,"Jd":_emscripten_glDrawElementsInstancedANGLE,"Tc":_emscripten_glEnable,"Sc":_emscripten_glEnableVertexAttribArray,"Wd":_emscripten_glEndQueryEXT,"Rc":_emscripten_glFinish,"Qc":_emscripten_glFlush,"Pc":_emscripten_glFramebufferRenderbuffer,"Oc":_emscripten_glFramebufferTexture2D,"Nc":_emscripten_glFrontFace,"Mc":_emscripten_glGenBuffers,"Kc":_emscripten_glGenFramebuffers,"S":_emscripten_glGenQueriesEXT,"Jc":_emscripten_glGenRenderbuffers,"Hc":_emscripten_glGenTextures,"Nd":_emscripten_glGenVertexArraysOES,"Lc":_emscripten_glGenerateMipmap,"Gc":_emscripten_glGetActiveAttrib,"Fc":_emscripten_glGetActiveUniform,"Ec":_emscripten_glGetAttachedShaders,"Dc":_emscripten_glGetAttribLocation,"Cc":_emscripten_glGetBooleanv,"Bc":_emscripten_glGetBufferParameteriv,"Ac":_emscripten_glGetError,"zc":_emscripten_glGetFloatv,"yc":_emscripten_glGetFramebufferAttachmentParameteriv,"xc":_emscripten_glGetIntegerv,"vc":_emscripten_glGetProgramInfoLog,"wc":_emscripten_glGetProgramiv,"Rd":_emscripten_glGetQueryObjecti64vEXT,"Td":_emscripten_glGetQueryObjectivEXT,"Qd":_emscripten_glGetQueryObjectui64vEXT,"Sd":_emscripten_glGetQueryObjectuivEXT,"Ud":_emscripten_glGetQueryivEXT,"uc":_emscripten_glGetRenderbufferParameteriv,"sc":_emscripten_glGetShaderInfoLog,"rc":_emscripten_glGetShaderPrecisionFormat,"qc":_emscripten_glGetShaderSource,"tc":_emscripten_glGetShaderiv,"pc":_emscripten_glGetString,"oc":_emscripten_glGetTexParameterfv,"nc":_emscripten_glGetTexParameteriv,"kc":_emscripten_glGetUniformLocation,"mc":_emscripten_glGetUniformfv,"lc":_emscripten_glGetUniformiv,"hc":_emscripten_glGetVertexAttribPointerv,"jc":_emscripten_glGetVertexAttribfv,"ic":_emscripten_glGetVertexAttribiv,"gc":_emscripten_glHint,"fc":_emscripten_glIsBuffer,"ec":_emscripten_glIsEnabled,"dc":_emscripten_glIsFramebuffer,"cc":_emscripten_glIsProgram,"Yd":_emscripten_glIsQueryEXT,"bc":_emscripten_glIsRenderbuffer,"ac":_emscripten_glIsShader,"$b":_emscripten_glIsTexture,"Md":_emscripten_glIsVertexArrayOES,"_b":_emscripten_glLineWidth,"Zb":_emscripten_glLinkProgram,"Yb":_emscripten_glPixelStorei,"Xb":_emscripten_glPolygonOffset,"Vd":_emscripten_glQueryCounterEXT,"Wb":_emscripten_glReadPixels,"Ub":_emscripten_glReleaseShaderCompiler,"Tb":_emscripten_glRenderbufferStorage,"Sb":_emscripten_glSampleCoverage,"Rb":_emscripten_glScissor,"Qb":_emscripten_glShaderBinary,"Pb":_emscripten_glShaderSource,"Ob":_emscripten_glStencilFunc,"Nb":_emscripten_glStencilFuncSeparate,"Mb":_emscripten_glStencilMask,"Lb":_emscripten_glStencilMaskSeparate,"Jb":_emscripten_glStencilOp,"Ib":_emscripten_glStencilOpSeparate,"Hb":_emscripten_glTexImage2D,"Gb":_emscripten_glTexParameterf,"Fb":_emscripten_glTexParameterfv,"Eb":_emscripten_glTexParameteri,"Db":_emscripten_glTexParameteriv,"Cb":_emscripten_glTexSubImage2D,"Bb":_emscripten_glUniform1f,"Ab":_emscripten_glUniform1fv,"yb":_emscripten_glUniform1i,"xb":_emscripten_glUniform1iv,"wb":_emscripten_glUniform2f,"vb":_emscripten_glUniform2fv,"ub":_emscripten_glUniform2i,"tb":_emscripten_glUniform2iv,"sb":_emscripten_glUniform3f,"rb":_emscripten_glUniform3fv,"qb":_emscripten_glUniform3i,"pb":_emscripten_glUniform3iv,"nb":_emscripten_glUniform4f,"mb":_emscripten_glUniform4fv,"lb":_emscripten_glUniform4i,"kb":_emscripten_glUniform4iv,"jb":_emscripten_glUniformMatrix2fv,"ib":_emscripten_glUniformMatrix3fv,"hb":_emscripten_glUniformMatrix4fv,"gb":_emscripten_glUseProgram,"fb":_emscripten_glValidateProgram,"eb":_emscripten_glVertexAttrib1f,"cb":_emscripten_glVertexAttrib1fv,"bb":_emscripten_glVertexAttrib2f,"ab":_emscripten_glVertexAttrib2fv,"$a":_emscripten_glVertexAttrib3f,"_a":_emscripten_glVertexAttrib3fv,"Za":_emscripten_glVertexAttrib4f,"Ya":_emscripten_glVertexAttrib4fv,"Id":_emscripten_glVertexAttribDivisorANGLE,"Xa":_emscripten_glVertexAttribPointer,"Wa":_emscripten_glViewport,"Pa":_emscripten_memcpy_big,"Aa":_emscripten_request_pointerlock,"Qa":_emscripten_resize_heap,"x":_emscripten_run_script,"X":_emscripten_sample_gamepad_data,"wa":_emscripten_set_click_callback_on_thread,"ya":_emscripten_set_fullscreenchange_callback_on_thread,"ra":_emscripten_set_gamepadconnected_callback_on_thread,"qa":_emscripten_set_gamepaddisconnected_callback_on_thread,"xa":_emscripten_set_keydown_callback_on_thread,"_d":_emscripten_set_main_loop,"sa":_emscripten_set_touchcancel_callback_on_thread,"ua":_emscripten_set_touchend_callback_on_thread,"ta":_emscripten_set_touchmove_callback_on_thread,"va":_emscripten_set_touchstart_callback_on_thread,"Ra":_emscripten_thread_sleep,"T":_exit,"L":_fd_close,"Sa":_fd_read,"Oa":_fd_seek,"J":_fd_write,"p":_glActiveTexture,"C":_glAttachShader,"k":_glBindAttribLocation,"a":_glBindBuffer,"j":_glBindTexture,"Kb":_glBlendFunc,"e":_glBufferData,"v":_glBufferSubData,"M":_glClear,"N":_glClearColor,"db":_glClearDepthf,"Fa":_glCompileShader,"La":_glCompressedTexImage2D,"Da":_glCreateProgram,"Ha":_glCreateShader,"zb":_glCullFace,"m":_glDeleteBuffers,"F":_glDeleteProgram,"G":_glDeleteShader,"I":_glDeleteTextures,"Vb":_glDepthFunc,"H":_glDetachShader,"O":_glDisable,"h":_glDisableVertexAttribArray,"Q":_glDrawArrays,"P":_glDrawElements,"w":_glEnable,"b":_glEnableVertexAttribArray,"ob":_glFrontFace,"f":_glGenBuffers,"Na":_glGenTextures,"u":_glGetAttribLocation,"Ic":_glGetFloatv,"Ba":_glGetProgramInfoLog,"E":_glGetProgramiv,"Ea":_glGetShaderInfoLog,"D":_glGetShaderiv,"n":_glGetString,"t":_glGetUniformLocation,"Ca":_glLinkProgram,"Va":_glPixelStorei,"Ia":_glReadPixels,"Ga":_glShaderSource,"Ma":_glTexImage2D,"o":_glTexParameteri,"y":_glUniform1i,"q":_glUniform4f,"r":_glUniformMatrix4fv,"l":_glUseProgram,"Ja":_glVertexAttrib2f,"Ka":_glVertexAttrib3f,"s":_glVertexAttrib4f,"c":_glVertexAttribPointer,"Zd":_glViewport,"A":_glfwCreateWindow,"na":_glfwDefaultWindowHints,"Z":_glfwDestroyWindow,"B":_glfwGetPrimaryMonitor,"i":_glfwGetTime,"ma":_glfwGetVideoModes,"oa":_glfwInit,"ba":_glfwMakeContextCurrent,"ga":_glfwSetCharCallback,"ca":_glfwSetCursorEnterCallback,"ea":_glfwSetCursorPosCallback,"ia":_glfwSetDropCallback,"pa":_glfwSetErrorCallback,"ha":_glfwSetKeyCallback,"fa":_glfwSetMouseButtonCallback,"da":_glfwSetScrollCallback,"ja":_glfwSetWindowFocusCallback,"ka":_glfwSetWindowIconifyCallback,"U":_glfwSetWindowShouldClose,"la":_glfwSetWindowSizeCallback,"Y":_glfwSwapBuffers,"aa":_glfwSwapInterval,"z":_glfwTerminate,"g":_glfwWindowHint,"$":_time};var asm=createWasm();var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["ae"]).apply(null,arguments)};var _main=Module["_main"]=function(){return(_main=Module["_main"]=Module["asm"]["be"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["de"]).apply(null,arguments)};var _free=Module["_free"]=function(){return(_free=Module["_free"]=Module["asm"]["ee"]).apply(null,arguments)};var ___errno_location=Module["___errno_location"]=function(){return(___errno_location=Module["___errno_location"]=Module["asm"]["fe"]).apply(null,arguments)};var stackAlloc=Module["stackAlloc"]=function(){return(stackAlloc=Module["stackAlloc"]=Module["asm"]["ge"]).apply(null,arguments)};Module["addRunDependency"]=addRunDependency;Module["removeRunDependency"]=removeRunDependency;Module["FS_createPath"]=FS.createPath;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createDevice"]=FS.createDevice;Module["FS_unlink"]=FS.unlink;var calledRun;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}var calledMain=false;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args){var entryFunction=Module["_main"];var argc=0;var argv=0;try{var ret=entryFunction(argc,argv);exit(ret,true)}catch(e){if(e instanceof ExitStatus){return}else if(e=="unwind"){noExitRuntime=true;return}else{var toLog=e;if(e&&typeof e==="object"&&e.stack){toLog=[e,e.stack]}err("exception thrown: "+toLog);quit_(1,e)}}finally{calledMain=true}}function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(shouldRunNow)callMain(args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}Module["run"]=run;function exit(status,implicit){if(implicit&&noExitRuntime&&status===0){return}if(noExitRuntime){}else{EXITSTATUS=status;exitRuntime();if(Module["onExit"])Module["onExit"](status);ABORT=true}quit_(status,new ExitStatus(status))}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}var shouldRunNow=true;if(Module["noInitialRun"])shouldRunNow=false;run();
diff --git a/examples/web/models/models_first_person_maze.wasm b/examples/web/models/models_first_person_maze.wasm
deleted file mode 100644
index 1389c2d..0000000
--- a/examples/web/models/models_first_person_maze.wasm
+++ /dev/null
Binary files differ
diff --git a/examples/web/models/models_geometric_shapes.c b/examples/web/models/models_geometric_shapes.c
deleted file mode 100644
index 612a19c..0000000
--- a/examples/web/models/models_geometric_shapes.c
+++ /dev/null
@@ -1,108 +0,0 @@
-/*******************************************************************************************
-*
-* raylib [models] example - Draw some basic geometric shapes (cube, sphere, cylinder...) (adapted for HTML5 platform)
-*
-* This example has been created using raylib 1.0 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
-*
-* Copyright (c) 2014 Ramon Santamaria (@raysan5)
-*
-********************************************************************************************/
-
-#include "raylib.h"
-
-#if defined(PLATFORM_WEB)
- #include <emscripten/emscripten.h>
-#endif
-
-//----------------------------------------------------------------------------------
-// Global Variables Definition
-//----------------------------------------------------------------------------------
-const int screenWidth = 800;
-const int screenHeight = 450;
-
-// Define the camera to look into our 3d world
-Camera camera = { 0 };
-
-//----------------------------------------------------------------------------------
-// Module Functions Declaration
-//----------------------------------------------------------------------------------
-void UpdateDrawFrame(void); // Update and Draw one frame
-
-//----------------------------------------------------------------------------------
-// Program Main Entry Point
-//----------------------------------------------------------------------------------
-int main(void)
-{
- // Initialization
- //--------------------------------------------------------------------------------------
- InitWindow(screenWidth, screenHeight, "raylib [models] example - geometric shapes");
-
- camera.position = (Vector3){ 0.0f, 10.0f, 10.0f };
- camera.target = (Vector3){ 0.0f, 0.0f, 0.0f };
- camera.up = (Vector3){ 0.0f, 1.0f, 0.0f };
- camera.fovy = 45.0f;
- camera.projection = CAMERA_PERSPECTIVE;
-
-#if defined(PLATFORM_WEB)
- emscripten_set_main_loop(UpdateDrawFrame, 60, 1);
-#else
- SetTargetFPS(60); // Set our game to run at 60 frames-per-second
- //--------------------------------------------------------------------------------------
-
- // Main game loop
- while (!WindowShouldClose()) // Detect window close button or ESC key
- {
- UpdateDrawFrame();
- }
-#endif
-
- // De-Initialization
- //--------------------------------------------------------------------------------------
- CloseWindow(); // Close window and OpenGL context
- //--------------------------------------------------------------------------------------
-
- return 0;
-}
-
-//----------------------------------------------------------------------------------
-// Module Functions Definition
-//----------------------------------------------------------------------------------
-void UpdateDrawFrame(void)
-{
- // Update
- //----------------------------------------------------------------------------------
- // TODO: Update your variables here
- //----------------------------------------------------------------------------------
-
- // Draw
- //----------------------------------------------------------------------------------
- BeginDrawing();
-
- ClearBackground(RAYWHITE);
-
- BeginMode3D(camera);
-
- DrawCube((Vector3){-4.0f, 0.0f, 2.0f}, 2.0f, 5.0f, 2.0f, RED);
- DrawCubeWires((Vector3){-4.0f, 0.0f, 2.0f}, 2.0f, 5.0f, 2.0f, GOLD);
- DrawCubeWires((Vector3){-4.0f, 0.0f, -2.0f}, 3.0f, 6.0f, 2.0f, MAROON);
-
- DrawSphere((Vector3){-1.0f, 0.0f, -2.0f}, 1.0f, GREEN);
- DrawSphereWires((Vector3){1.0f, 0.0f, 2.0f}, 2.0f, 16, 16, LIME);
-
- DrawCylinder((Vector3){4.0f, 0.0f, -2.0f}, 1.0f, 2.0f, 3.0f, 4, SKYBLUE);
- DrawCylinderWires((Vector3){4.0f, 0.0f, -2.0f}, 1.0f, 2.0f, 3.0f, 4, DARKBLUE);
- DrawCylinderWires((Vector3){4.5f, -1.0f, 2.0f}, 1.0f, 1.0f, 2.0f, 6, BROWN);
-
- DrawCylinder((Vector3){1.0f, 0.0f, -4.0f}, 0.0f, 1.5f, 3.0f, 8, GOLD);
- DrawCylinderWires((Vector3){1.0f, 0.0f, -4.0f}, 0.0f, 1.5f, 3.0f, 8, PINK);
-
- DrawGrid(10, 1.0f); // Draw a grid
-
- EndMode3D();
-
- DrawFPS(10, 10);
-
- EndDrawing();
- //----------------------------------------------------------------------------------
-} \ No newline at end of file
diff --git a/examples/web/models/models_geometric_shapes.html b/examples/web/models/models_geometric_shapes.html
deleted file mode 100644
index 1207668..0000000
--- a/examples/web/models/models_geometric_shapes.html
+++ /dev/null
@@ -1 +0,0 @@
-<!doctypehtml><html lang=en-us><head><meta charset=utf-8><meta content="text/html; charset=utf-8"http-equiv=Content-Type><title>raylib HTML5 GAME</title><meta content="raylib HTML5 GAME"name=title><meta content="New HTML5 videogame, developed using raylib videogames library"name=description><meta content="raylib, games, html5, programming, C, C++, library, learn, videogames"name=keywords><meta content="width=device-width"name=viewport><meta content="raylib HTML5 GAME"property=og:title><meta content=image/png property=og:image:type><meta content=https://www.raylib.com/common/img/raylib_logo.png property=og:image><meta content=raylib.com property=og:site_name><meta content=https://www.raylib.com/games.html property=og:url><meta content="New HTML5 videogame, developed using raylib videogames library"property=og:description><meta content=summary name=twitter:card><meta content=@raysan5 name=twitter:site><meta content="raylib HTML5 GAME"name=twitter:title><meta content=https://www.raylib.com/common/raylib_logo.png name=twitter:image><meta content=https://www.raylib.com/games.html name=twitter:url><meta content="New HTML5 videogame, developed using raylib videogames library"name=twitter:description><link href=https://www.raylib.com/favicon.ico rel="shortcut icon"><style>body{font-family:arial;margin:0;padding:none}#header{width:100%;height:80px;background-color:#888}#logo{width:64px;height:64px;float:left;position:relative;margin:10px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAAlC+aJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjExR/NCNwAAA7JJREFUaEPtk0FyWzEMQ+37X7fZhxX4YY3AD1OKF1nkzTRlSBCCLeVBnvl/AUdaELOunPno1kts1kixdtEZKVs+xIxebBkZsVknn/L5nFGDLR8T4zVC9fX19S/+tTFijrYK4jUjbPUtqBHpnEE6PkZD7jQZV8n5Recw1XQKciZuPaEtR6UjNs5ENVGMsBVqpPtER0ZMOhpyp8m4YL4OjD9yxsyZxnQycfMJETNSzsRE1+dihK3YMiJmpHTW3xpmXPC6BXlCHfqnBlsjY5hxf/6EVEOM2BTEi0fYCX4ONSI6Kq3Blg/prIOMq2CsRur4KQ0x64SdjOufEDEdHZGOhmz5RDHCVqhRuQ86YsVskbc+GXchLiHnFyYH+UigQDVGnImbT8hwFkgLg2qiM8JO6Ylx1FNLa3DmYwqCTsZd4BPqGJG7MwKzpeiWKTKxXkLMVE3MSOmsdwxLH6Rd/wCCLSNDx6djeKfJuArGeoYamRHpaEjnCBYZVy8hZqo2GI36qPjsiOiMsBXGcev4Mx9TLGTchbgEjN/uz6jGrBvDjg+LTNx8Qp2CbG2xMKgmOiPslJ4Yxx+eSnSkzlosZNwFPiHl7FRTkLNRJm4+IeVM0ymIH42wE/wcKalQI4MRl4EW3p6VcRWMua8F6WjIlqZDxvVPiHQ6CjVbYkV9ohhhp/Rk1wiYgpyJ78i4CsZbjkb8Qx+ihvzu3RPaKogZkY6GlEeMsKdPSOFIC8VoOusg44L5c+T8ouOoGhWbdWJ8tMi4egkxo4hoh2yNTGf3iIyr5Lyic4bRENXo+lvDjAt4C1Hk/OKtUaAj0+n4dMSZ2D+hrYJsaYh2SClG2jV9kJKKzhlGQ1SsW299Mq6C8dYZHTExo8fzieI5ivipYnYy7nwJqGKmOYyRwfiUBXITfh5qSHRGWEkfqJqURgvsdHyWYv7Ko8DnYYegk3EB00cxprdrJRzFd7YQzawu8L1GMTYS/KpPaAFTkIn1EmJmspJSs5xBzSyGhlkBmlxfNFiP5mw4wlbMh4F5Ddxp5jNINBdCEz9zPOC1zD7Q0HBdmXndwv0TMtydEdzlWJT4VZ8Qt9Qn4/onxMIwa5ZYGJU5yufBiCjwE50AGjLCVuS8Yt4H7OgZLKK5EKOsLviEWJSL/+0uMi7gLUSBseYwqEbXvSHCec1CJvZPyHCmYQffaBBfOTCGHM2aEbZi1+gO1XTWVXMnzrhAn5DSOZVsiQlHnSITKzGj6DeTcZWc/3oy7h9//PF4PL4BlvsWrb6RE+oAAAAASUVORK5CYII=)}.emscripten{padding-right:0;margin-left:auto;margin-right:auto;display:block}div.emscripten{text-align:center}div.emscripten_border{border:1px solid #000}canvas.emscripten{border:0 none;background:#000;width:100%}.spinner{height:30px;width:30px;margin:0;margin-top:20px;margin-left:20px;display:inline-block;vertical-align:top;-webkit-animation:rotation .8s linear infinite;-moz-animation:rotation .8s linear infinite;-o-animation:rotation .8s linear infinite;animation:rotation .8s linear infinite;border-left:5px solid #000;border-right:5px solid #000;border-bottom:5px solid #000;border-top:5px solid red;border-radius:100%;background-color:#f5f5f5}@-webkit-keyframes rotation{from{-webkit-transform:rotate(0)}to{-webkit-transform:rotate(360deg)}}@-moz-keyframes rotation{from{-moz-transform:rotate(0)}to{-moz-transform:rotate(360deg)}}@-o-keyframes rotation{from{-o-transform:rotate(0)}to{-o-transform:rotate(360deg)}}@keyframes rotation{from{transform:rotate(0)}to{transform:rotate(360deg)}}#status{display:inline-block;vertical-align:top;margin-top:30px;margin-left:20px;font-weight:700;color:#282828}#progress{height:0;width:0}#controls{display:inline-block;float:right;vertical-align:top;margin-top:15px;margin-right:20px}#output{width:100%;height:140px;margin:0 auto;margin-top:10px;display:block;background-color:#000;color:#25ae26;font-family:'Lucida Console',Monaco,monospace;outline:0}input[type=button]{background-color:#d3d3d3;border:4px solid #a9a9a9;color:#000;text-decoration:none;cursor:pointer;width:140px;height:50px}input[type=button]:hover{background-color:#f5f5f5ff;border-color:#000}</style></head><body><div id=header><a href=https://www.raylib.com id=logo></a><div class=spinner id=spinner></div><div class=emscripten id=status>Downloading...</div><span id=controls><span><input onclick=Module.requestFullscreen(!1,!1) type=button value="🖵 FULLSCREEN"></span><span><input onclick=toggleAudio() type=button value="🔇 SUSPEND"id=btn-audio></span></span><div class=emscripten><progress hidden id=progress max=100 value=0></progress></div></div><div class=emscripten_border><canvas class=emscripten id=canvas oncontextmenu=event.preventDefault() tabindex=-1></canvas></div><textarea id=output rows=8></textarea><script src=https://cdn.jsdelivr.net/gh/eligrey/FileSaver.js/dist/FileSaver.min.js></script><script>function saveFileFromMEMFSToDisk(e,a){var t,i=/^((?!chrome|android).)*safari/i.test(navigator.userAgent),o=FS.readFile(e);t=i?new Blob([o.buffer],{type:"application/octet-stream"}):new Blob([o.buffer],{type:"application/octet-binary"}),saveAs(t,a)}</script><script>var statusElement=document.querySelector("#status"),progressElement=document.querySelector("#progress"),spinnerElement=document.querySelector("#spinner"),Module={preRun:[],postRun:[],print:function(){var e=document.querySelector("#output");return e&&(e.value=""),function(t){arguments.length>1&&(t=Array.prototype.slice.call(arguments).join(" ")),console.log(t),e&&(e.value+=t+"\n",e.scrollTop=e.scrollHeight)}}(),printErr:function(e){arguments.length>1&&(e=Array.prototype.slice.call(arguments).join(" ")),console.error(e)},canvas:function(){var e=document.querySelector("#canvas");return e.addEventListener("webglcontextlost",(function(e){alert("WebGL context lost. You will need to reload the page."),e.preventDefault()}),!1),e}(),setStatus:function(e){if(Module.setStatus.last||(Module.setStatus.last={time:Date.now(),text:""}),e!==Module.setStatus.last.text){var t=e.match(/([^(]+)\((\d+(\.\d+)?)\/(\d+)\)/),n=Date.now();t&&n-Module.setStatus.last.time<30||(Module.setStatus.last.time=n,Module.setStatus.last.text=e,t?(e=t[1],progressElement.value=100*parseInt(t[2]),progressElement.max=100*parseInt(t[4]),progressElement.hidden=!0,spinnerElement.hidden=!1):(progressElement.value=null,progressElement.max=null,progressElement.hidden=!0,e||(spinnerElement.style.display="none")),statusElement.innerHTML=e)}},totalDependencies:0,monitorRunDependencies:function(e){this.totalDependencies=Math.max(this.totalDependencies,e),Module.setStatus(e?"Preparing... ("+(this.totalDependencies-e)+"/"+this.totalDependencies+")":"All downloads complete.")}};Module.setStatus("Downloading..."),window.onerror=function(){Module.setStatus("Exception thrown, see JavaScript console"),spinnerElement.style.display="none",Module.setStatus=function(e){e&&Module.printErr("[post-exception status] "+e)}}</script><script>var audioBtn=document.querySelector("#btn-audio");const audioContexList=[];function toggleAudio(){var t=!1;audioContexList.forEach(e=>{"suspended"==e.state?(e.resume(),t=!0):"running"==e.state&&e.suspend()}),audioBtn.value=t?"🔇 SUSPEND":"🔈 RESUME"}self.AudioContext=new Proxy(self.AudioContext,{construct(t,e){const n=new t(...e);return audioContexList.push(n),"suspended"==n.state&&(audioBtn.value="🔈 RESUME"),n}})</script><script src=models_geometric_shapes.js async></script></body></html> \ No newline at end of file
diff --git a/examples/web/models/models_geometric_shapes.js b/examples/web/models/models_geometric_shapes.js
deleted file mode 100644
index a9e37cd..0000000
--- a/examples/web/models/models_geometric_shapes.js
+++ /dev/null
@@ -1 +0,0 @@
-var Module=typeof Module!=="undefined"?Module:{};var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram="./this.program";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window==="object";ENVIRONMENT_IS_WORKER=typeof importScripts==="function";ENVIRONMENT_IS_NODE=typeof process==="object"&&typeof process.versions==="object"&&typeof process.versions.node==="string";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require("path").dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require("fs");if(!nodePath)nodePath=require("path");filename=nodePath["normalize"](filename);return nodeFS["readFileSync"](filename,binary?null:"utf8")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);if(typeof module!=="undefined"){module["exports"]=Module}process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",abort);quit_=function(status){process["exit"](status)};Module["inspect"]=function(){return"[Emscripten Module object]"}}else if(ENVIRONMENT_IS_SHELL){if(typeof read!="undefined"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer==="function"){return new Uint8Array(readbuffer(f))}data=read(f,"binary");assert(typeof data==="object");return data};if(typeof scriptArgs!="undefined"){arguments_=scriptArgs}else if(typeof arguments!="undefined"){arguments_=arguments}if(typeof quit==="function"){quit_=function(status){quit(status)}}if(typeof print!=="undefined"){if(typeof console==="undefined")console={};console.log=print;console.warn=console.error=typeof printErr!=="undefined"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!=="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf("/")+1)}else{scriptDirectory=""}{read_=function(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=function(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var STACK_ALIGN=16;function alignMemory(size,factor){if(!factor)factor=STACK_ALIGN;return Math.ceil(size/factor)*factor}function warnOnce(text){if(!warnOnce.shown)warnOnce.shown={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;err(text)}}var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime=Module["noExitRuntime"]||true;if(typeof WebAssembly!=="object"){abort("no native wasm support detected")}function setValue(ptr,value,type,noSafe){type=type||"i8";if(type.charAt(type.length-1)==="*")type="i32";switch(type){case"i1":HEAP8[ptr>>0]=value;break;case"i8":HEAP8[ptr>>0]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":tempI64=[value>>>0,(tempDouble=value,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;default:abort("invalid type for setValue: "+type)}}var wasmMemory;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}var ALLOC_NORMAL=0;var ALLOC_STACK=1;function allocate(slab,allocator){var ret;if(allocator==ALLOC_STACK){ret=stackAlloc(slab.length)}else{ret=_malloc(slab.length)}if(slab.subarray||slab.slice){HEAPU8.set(slab,ret)}else{HEAPU8.set(new Uint8Array(slab),ret)}return ret}var UTF8Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heap,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heap[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str="";while(idx<endPtr){var u0=heap[idx++];if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heap[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heap[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u0=(u0&7)<<18|u1<<12|u2<<6|heap[idx++]&63}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||16777216;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;__ATINIT__.push({func:function(){___wasm_call_ctors()}});function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){FS.ignorePermissions=false;callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}what+="";err(what);ABORT=true;EXITSTATUS=1;what="abort("+what+"). Build with -s ASSERTIONS=1 for more info.";var e=new WebAssembly.RuntimeError(what);throw e}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix="file://";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile="models_geometric_shapes.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}else{throw"both async and sync fetching of the wasm failed"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch==="function"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={"a":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;wasmMemory=Module["asm"]["Xd"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module["asm"]["_d"];removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiatedSource(output){receiveInstance(output["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming==="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch==="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync();return{}}var tempDouble;var tempI64;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback(Module);continue}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){wasmTable.get(func)()}else{wasmTable.get(func)(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}function ___assert_fail(condition,filename,line,func){abort("Assertion failed: "+UTF8ToString(condition)+", at: "+[filename?UTF8ToString(filename):"unknown filename",line,func?UTF8ToString(func):"unknown function"])}function setErrNo(value){HEAP32[___errno_location()>>2]=value;return value}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path==="/")return"/";path=PATH.normalize(path);path=path.replace(/\/$/,"");var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}};function getRandomDevice(){if(typeof crypto==="object"&&typeof crypto["getRandomValues"]==="function"){var randomBuffer=new Uint8Array(1);return function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]}}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");return function(){return crypto_module["randomBytes"](1)[0]}}catch(e){}}return function(){abort("randomDevice")}}var PATH_FS={resolve:function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!=="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=path.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(function(p){return!!p}),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:function(from,to){from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start<arr.length;start++){if(arr[start]!=="")break}var end=arr.length-1;for(;end>=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i<length;i++){if(fromParts[i]!==toParts[i]){samePartsLength=i;break}}var outputParts=[];for(var i=samePartsLength;i<fromParts.length;i++){outputParts.push("..")}outputParts=outputParts.concat(toParts.slice(samePartsLength));return outputParts.join("/")}};var TTY={ttys:[],init:function(){},shutdown:function(){},register:function(dev,ops){TTY.ttys[dev]={input:[],output:[],ops:ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open:function(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close:function(stream){stream.tty.ops.flush(stream.tty)},flush:function(stream){stream.tty.ops.flush(stream.tty)},read:function(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i<length;i++){var result;try{result=stream.tty.ops.get_char(stream.tty)}catch(e){throw new FS.ErrnoError(29)}if(result===undefined&&bytesRead===0){throw new FS.ErrnoError(6)}if(result===null||result===undefined)break;bytesRead++;buffer[offset+i]=result}if(bytesRead){stream.node.timestamp=Date.now()}return bytesRead},write:function(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.put_char){throw new FS.ErrnoError(60)}try{for(var i=0;i<length;i++){stream.tty.ops.put_char(stream.tty,buffer[offset+i])}}catch(e){throw new FS.ErrnoError(29)}if(length){stream.node.timestamp=Date.now()}return i}},default_tty_ops:{get_char:function(tty){if(!tty.input.length){var result=null;if(ENVIRONMENT_IS_NODE){var BUFSIZE=256;var buf=Buffer.alloc?Buffer.alloc(BUFSIZE):new Buffer(BUFSIZE);var bytesRead=0;try{bytesRead=nodeFS.readSync(process.stdin.fd,buf,0,BUFSIZE,null)}catch(e){if(e.toString().indexOf("EOF")!=-1)bytesRead=0;else throw e}if(bytesRead>0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function mmapAlloc(size){var alignedSize=alignMemory(size,16384);var ptr=_malloc(alignedSize);while(size<alignedSize)HEAP8[ptr+size++]=0;return ptr}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray:function(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage:function(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity<CAPACITY_DOUBLING_MAX?2:1.125)>>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage:function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr:function(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr:function(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp;old_node.parent=new_dir},unlink:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir:function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i<size;i++)buffer[offset+i]=contents[position+i]}return size},write:function(stream,buffer,offset,length,position,canOwn){if(!length)return 0;var node=stream.node;node.timestamp=Date.now();if(buffer.subarray&&(!node.contents||node.contents.subarray)){if(canOwn){node.contents=buffer.subarray(offset,offset+length);node.usedBytes=length;return length}else if(node.usedBytes===0&&position===0){node.contents=buffer.slice(offset,offset+length);node.usedBytes=length;return length}else if(position+length<=node.usedBytes){node.contents.set(buffer.subarray(offset,offset+length),position);return length}}MEMFS.expandFileStorage(node,position+length);if(node.contents.subarray&&buffer.subarray){node.contents.set(buffer.subarray(offset,offset+length),position)}else{for(var i=0;i<length;i++){node.contents[position+i]=buffer[offset+i]}}node.usedBytes=Math.max(node.usedBytes,position+length);return length},llseek:function(stream,offset,whence){var position=offset;if(whence===1){position+=stream.position}else if(whence===2){if(FS.isFile(stream.node.mode)){position+=stream.node.usedBytes}}if(position<0){throw new FS.ErrnoError(28)}return position},allocate:function(stream,offset,length){MEMFS.expandFileStorage(stream.node,offset+length);stream.node.usedBytes=Math.max(stream.node.usedBytes,offset+length)},mmap:function(stream,address,length,position,prot,flags){if(address!==0){throw new FS.ErrnoError(28)}if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}var ptr;var allocated;var contents=stream.node.contents;if(!(flags&2)&&contents.buffer===buffer){allocated=false;ptr=contents.byteOffset}else{if(position>0||position+length<contents.length){if(contents.subarray){contents=contents.subarray(position,position+length)}else{contents=Array.prototype.slice.call(contents,position,position+length)}}allocated=true;ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}HEAP8.set(contents,ptr)}return{ptr:ptr,allocated:allocated}},msync:function(stream,buffer,offset,length,mmapFlags){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}if(mmapFlags&2){return 0}var bytesWritten=MEMFS.stream_ops.write(stream,buffer,0,length,offset,false);return 0}}};var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,trackingDelegate:{},tracking:{openFlags:{READ:1,WRITE:2}},ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath:function(path,opts){path=PATH_FS.resolve(FS.cwd(),path);opts=opts||{};if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};for(var key in defaults){if(opts[key]===undefined){opts[key]=defaults[key]}}if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),false);var current=FS.root;var current_path="/";for(var i=0;i<parts.length;i++){var islast=i===parts.length-1;if(islast&&opts.parent){break}current=FS.lookupNode(current,parts[i]);current_path=PATH.join2(current_path,parts[i]);if(FS.isMountpoint(current)){if(!islast||islast&&opts.follow_mount){current=current.mounted.root}}if(!islast||opts.follow){var count=0;while(FS.isLink(current.mode)){var link=FS.readlink(current_path);current_path=PATH_FS.resolve(PATH.dirname(current_path),link);var lookup=FS.lookupPath(current_path,{recurse_count:opts.recurse_count});current=lookup.node;if(count++>40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath:function(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?mount+"/"+path:mount+path}path=path?node.name+"/"+path:node.name;node=node.parent}},hashName:function(parentid,name){var hash=0;for(var i=0;i<name.length;i++){hash=(hash<<5)-hash+name.charCodeAt(i)|0}return(parentid+hash>>>0)%FS.nameTable.length},hashAddNode:function(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode:function(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode:function(parent,name){var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode:function(parent,name,mode,rdev){var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:function(node){FS.hashRemoveNode(node)},isRoot:function(node){return node===node.parent},isMountpoint:function(node){return!!node.mounted},isFile:function(mode){return(mode&61440)===32768},isDir:function(mode){return(mode&61440)===16384},isLink:function(mode){return(mode&61440)===40960},isChrdev:function(mode){return(mode&61440)===8192},isBlkdev:function(mode){return(mode&61440)===24576},isFIFO:function(mode){return(mode&61440)===4096},isSocket:function(mode){return(mode&49152)===49152},flagModes:{"r":0,"r+":2,"w":577,"w+":578,"a":1089,"a+":1090},modeStringToFlags:function(str){var flags=FS.flagModes[str];if(typeof flags==="undefined"){throw new Error("Unknown file open mode: "+str)}return flags},flagsToPermissionString:function(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions:function(node,perms){if(FS.ignorePermissions){return 0}if(perms.indexOf("r")!==-1&&!(node.mode&292)){return 2}else if(perms.indexOf("w")!==-1&&!(node.mode&146)){return 2}else if(perms.indexOf("x")!==-1&&!(node.mode&73)){return 2}return 0},mayLookup:function(dir){var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate:function(dir,name){try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete:function(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen:function(node,flags){if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd:function(fd_start,fd_end){fd_start=fd_start||0;fd_end=fd_end||FS.MAX_OPEN_FDS;for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:function(fd){return FS.streams[fd]},createStream:function(stream,fd_start,fd_end){if(!FS.FSStream){FS.FSStream=function(){};FS.FSStream.prototype={object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}}}}var newStream=new FS.FSStream;for(var p in stream){newStream[p]=stream[p]}stream=newStream;var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:function(fd){FS.streams[fd]=null},chrdev_stream_ops:{open:function(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}},llseek:function(){throw new FS.ErrnoError(70)}},major:function(dev){return dev>>8},minor:function(dev){return dev&255},makedev:function(ma,mi){return ma<<8|mi},registerDevice:function(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:function(dev){return FS.devices[dev]},getMounts:function(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts},syncfs:function(populate,callback){if(typeof populate==="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err("warning: "+FS.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work")}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(function(mount){if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount:function(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount:function(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(function(hash){var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.indexOf(current.mount)!==-1){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup:function(parent,name){return parent.node_ops.lookup(parent,name)},mknod:function(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create:function(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:function(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree:function(path,mode){var dirs=path.split("/");var d="";for(var i=0;i<dirs.length;++i){if(!dirs[i])continue;d+="/"+dirs[i];try{FS.mkdir(d,mode)}catch(e){if(e.errno!=20)throw e}}},mkdev:function(path,mode,dev){if(typeof dev==="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:function(oldpath,newpath){if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:function(old_path,new_path){var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}try{if(FS.trackingDelegate["willMovePath"]){FS.trackingDelegate["willMovePath"](old_path,new_path)}}catch(e){err("FS.trackingDelegate['willMovePath']('"+old_path+"', '"+new_path+"') threw an exception: "+e.message)}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}try{if(FS.trackingDelegate["onMovePath"])FS.trackingDelegate["onMovePath"](old_path,new_path)}catch(e){err("FS.trackingDelegate['onMovePath']('"+old_path+"', '"+new_path+"') threw an exception: "+e.message)}},rmdir:function(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}try{if(FS.trackingDelegate["willDeletePath"]){FS.trackingDelegate["willDeletePath"](path)}}catch(e){err("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: "+e.message)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate["onDeletePath"])FS.trackingDelegate["onDeletePath"](path)}catch(e){err("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: "+e.message)}},readdir:function(path){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:function(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}try{if(FS.trackingDelegate["willDeletePath"]){FS.trackingDelegate["willDeletePath"](path)}}catch(e){err("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: "+e.message)}parent.node_ops.unlink(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate["onDeletePath"])FS.trackingDelegate["onDeletePath"](path)}catch(e){err("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: "+e.message)}},readlink:function(path){var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:function(path,dontFollow){var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:function(path){return FS.stat(path,true)},chmod:function(path,mode,dontFollow){var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:function(path,mode){FS.chmod(path,mode,true)},fchmod:function(fd,mode){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:function(path,uid,gid,dontFollow){var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:function(path,uid,gid){FS.chown(path,uid,gid,true)},fchown:function(fd,uid,gid){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:function(path,len){if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:function(fd,len){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:function(path,atime,mtime){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:function(path,flags,mode,fd_start,fd_end){if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags==="string"?FS.modeStringToFlags(flags):flags;mode=typeof mode==="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path==="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false},fd_start,fd_end);if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1;err("FS.trackingDelegate error on read file: "+path)}}try{if(FS.trackingDelegate["onOpenFile"]){var trackingFlags=0;if((flags&2097155)!==1){trackingFlags|=FS.tracking.openFlags.READ}if((flags&2097155)!==0){trackingFlags|=FS.tracking.openFlags.WRITE}FS.trackingDelegate["onOpenFile"](path,trackingFlags)}}catch(e){err("FS.trackingDelegate['onOpenFile']('"+path+"', flags) threw an exception: "+e.message)}return stream},close:function(stream){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:function(stream){return stream.fd===null},llseek:function(stream,offset,whence){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:function(stream,buffer,offset,length,position){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!=="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:function(stream,buffer,offset,length,position,canOwn){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!=="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;try{if(stream.path&&FS.trackingDelegate["onWriteToFile"])FS.trackingDelegate["onWriteToFile"](stream.path)}catch(e){err("FS.trackingDelegate['onWriteToFile']('"+stream.path+"') threw an exception: "+e.message)}return bytesWritten},allocate:function(stream,offset,length){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:function(stream,address,length,position,prot,flags){if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,address,length,position,prot,flags)},msync:function(stream,buffer,offset,length,mmapFlags){if(!stream||!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:function(stream){return 0},ioctl:function(stream,cmd,arg){if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:function(path,opts){opts=opts||{};opts.flags=opts.flags||0;opts.encoding=opts.encoding||"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error('Invalid encoding type "'+opts.encoding+'"')}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding==="binary"){ret=buf}FS.close(stream);return ret},writeFile:function(path,data,opts){opts=opts||{};opts.flags=opts.flags||577;var stream=FS.open(path,opts.flags,opts.mode);if(typeof data==="string"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,undefined,opts.canOwn)}else if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{throw new Error("Unsupported data type")}FS.close(stream)},cwd:function(){return FS.currentPath},chdir:function(path){var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories:function(){FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices:function(){FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:function(){return 0},write:function(stream,buffer,offset,length,pos){return length}});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var random_device=getRandomDevice();FS.createDevice("/dev","random",random_device);FS.createDevice("/dev","urandom",random_device);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories:function(){FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount:function(){var node=FS.createNode(proc_self,"fd",16384|511,73);node.node_ops={lookup:function(parent,name){var fd=+name;var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:function(){return stream.path}}};ret.parent=ret;return ret}};return node}},{},"/proc/self/fd")},createStandardStreams:function(){if(Module["stdin"]){FS.createDevice("/dev","stdin",Module["stdin"])}else{FS.symlink("/dev/tty","/dev/stdin")}if(Module["stdout"]){FS.createDevice("/dev","stdout",null,Module["stdout"])}else{FS.symlink("/dev/tty","/dev/stdout")}if(Module["stderr"]){FS.createDevice("/dev","stderr",null,Module["stderr"])}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},ensureErrnoError:function(){if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.node=node;this.setErrno=function(errno){this.errno=errno};this.setErrno(errno);this.message="FS error"};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[44].forEach(function(code){FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack="<generic error, no stack>"})},staticInit:function(){FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={"MEMFS":MEMFS}},init:function(input,output,error){FS.init.initialized=true;FS.ensureErrnoError();Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams()},quit:function(){FS.init.initialized=false;var fflush=Module["_fflush"];if(fflush)fflush(0);for(var i=0;i<FS.streams.length;i++){var stream=FS.streams[i];if(!stream){continue}FS.close(stream)}},getMode:function(canRead,canWrite){var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode},findObject:function(path,dontResolveLastLink){var ret=FS.analyzePath(path,dontResolveLastLink);if(ret.exists){return ret.object}else{return null}},analyzePath:function(path,dontResolveLastLink){try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath:function(parent,path,canRead,canWrite){parent=typeof parent==="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:function(parent,name,properties,canRead,canWrite){var path=PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:function(parent,name,data,canRead,canWrite,canOwn){var path=name?PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name):parent;var mode=FS.getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data==="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i<len;++i)arr[i]=data.charCodeAt(i);data=arr}FS.chmod(node,mode|146);var stream=FS.open(node,577);FS.write(stream,data,0,data.length,0,canOwn);FS.close(stream);FS.chmod(node,mode)}return node},createDevice:function(parent,name,input,output){var path=PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:function(stream){stream.seekable=false},close:function(stream){if(output&&output.buffer&&output.buffer.length){output(10)}},read:function(stream,buffer,offset,length,pos){var bytesRead=0;for(var i=0;i<length;i++){var result;try{result=input()}catch(e){throw new FS.ErrnoError(29)}if(result===undefined&&bytesRead===0){throw new FS.ErrnoError(6)}if(result===null||result===undefined)break;bytesRead++;buffer[offset+i]=result}if(bytesRead){stream.node.timestamp=Date.now()}return bytesRead},write:function(stream,buffer,offset,length,pos){for(var i=0;i<length;i++){try{output(buffer[offset+i])}catch(e){throw new FS.ErrnoError(29)}}if(length){stream.node.timestamp=Date.now()}return i}});return FS.mkdev(path,mode,dev)},forceLoadFile:function(obj){if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!=="undefined"){throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}},createLazyFile:function(parent,name,url,canRead,canWrite){function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=function(from,to){if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);if(typeof Uint8Array!="undefined")xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}else{return intArrayFromString(xhr.responseText||"",true)}};var lazyArray=this;lazyArray.setDataGetter(function(chunkNum){var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]==="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]==="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!=="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._length}},chunkSize:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(function(key){var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){FS.forceLoadFile(node);return fn.apply(null,arguments)}});stream_ops.read=function stream_ops_read(stream,buffer,offset,length,position){FS.forceLoadFile(node);var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i<size;i++){buffer[offset+i]=contents[position+i]}}else{for(var i=0;i<size;i++){buffer[offset+i]=contents.get(position+i)}}return size};node.stream_ops=stream_ops;return node},createPreloadedFile:function(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish){Browser.init();var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency("cp "+fullname);function processData(byteArray){function finish(byteArray){if(preFinish)preFinish();if(!dontCreateFile){FS.createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}if(onload)onload();removeRunDependency(dep)}var handled=false;Module["preloadPlugins"].forEach(function(plugin){if(handled)return;if(plugin["canHandle"](fullname)){plugin["handle"](byteArray,fullname,finish,function(){if(onerror)onerror();removeRunDependency(dep)});handled=true}});if(!handled)finish(byteArray)}addRunDependency(dep);if(typeof url=="string"){Browser.asyncLoad(url,function(byteArray){processData(byteArray)},onerror)}else{processData(url)}},indexedDB:function(){return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME:function(){return"EM_FS_"+window.location.pathname},DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:function(paths,onload,onerror){onload=onload||function(){};onerror=onerror||function(){};var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=function openRequest_onupgradeneeded(){out("creating db");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME)};openRequest.onsuccess=function openRequest_onsuccess(){var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],"readwrite");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(function(path){var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=function putRequest_onsuccess(){ok++;if(ok+fail==total)finish()};putRequest.onerror=function putRequest_onerror(){fail++;if(ok+fail==total)finish()}});transaction.onerror=onerror};openRequest.onerror=onerror},loadFilesFromDB:function(paths,onload,onerror){onload=onload||function(){};onerror=onerror||function(){};var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=function openRequest_onsuccess(){var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],"readonly")}catch(e){onerror(e);return}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(function(path){var getRequest=files.get(path);getRequest.onsuccess=function getRequest_onsuccess(){if(FS.analyzePath(path).exists){FS.unlink(path)}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish()};getRequest.onerror=function getRequest_onerror(){fail++;if(ok+fail==total)finish()}});transaction.onerror=onerror};openRequest.onerror=onerror}};var SYSCALLS={mappings:{},DEFAULT_POLLMASK:5,umask:511,calculateAt:function(dirfd,path,allowEmpty){if(path[0]==="/"){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=FS.getStream(dirfd);if(!dirstream)throw new FS.ErrnoError(8);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(func,path,buf){try{var stat=func(path)}catch(e){if(e&&e.node&&PATH.normalize(path)!==PATH.normalize(FS.getPath(e.node))){return-54}throw e}HEAP32[buf>>2]=stat.dev;HEAP32[buf+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;HEAP32[buf+56>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+76>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+80>>2]=tempI64[0],HEAP32[buf+84>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},doMkdir:function(path,mode){path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0},doMknod:function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}FS.mknod(path,mode,dev);return 0},doReadlink:function(path,buf,bufsize){if(bufsize<=0)return-28;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len},doAccess:function(path,amode){if(amode&~7){return-28}var node;var lookup=FS.lookupPath(path,{follow:true});node=lookup.node;if(!node){return-44}var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0},doDup:function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd},doReadv:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i<iovcnt;i++){var ptr=HEAP32[iov+i*8>>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr<len)break}return ret},doWritev:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i<iovcnt;i++){var ptr=HEAP32[iov+i*8>>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream},get64:function(low,high){return low}};function ___sys_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-28}var newStream;newStream=FS.open(stream.path,stream.flags,0,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0}case 12:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 13:case 14:return 0;case 16:case 8:return-28;case 9:setErrNo(28);return-1;default:{return-28}}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_ioctl(fd,op,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(op){case 21509:case 21505:{if(!stream.tty)return-59;return 0}case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-59;return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{if(!stream.tty)return-59;return 0}default:abort("bad ioctl syscall "+op)}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_open(path,flags,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(path);var mode=varargs?SYSCALLS.get():0;var stream=FS.open(pathname,flags,mode);return stream.fd}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}var JSEvents={inEventHandler:0,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return false;for(var i in arrA){if(arrA[i]!=arrB[i])return false}return true}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList)){return}}JSEvents.deferredCalls.push({targetFunction:targetFunction,precedence:precedence,argsList:argsList});JSEvents.deferredCalls.sort(function(x,y){return x.precedence<y.precedence})},removeDeferredCalls:function(targetFunction){for(var i=0;i<JSEvents.deferredCalls.length;++i){if(JSEvents.deferredCalls[i].targetFunction==targetFunction){JSEvents.deferredCalls.splice(i,1);--i}}},canPerformEventHandlerRequests:function(){return JSEvents.inEventHandler&&JSEvents.currentEventHandler.allowsDeferredCalls},runDeferredCalls:function(){if(!JSEvents.canPerformEventHandlerRequests()){return}for(var i=0;i<JSEvents.deferredCalls.length;++i){var call=JSEvents.deferredCalls[i];JSEvents.deferredCalls.splice(i,1);--i;call.targetFunction.apply(null,call.argsList)}},eventHandlers:[],removeAllHandlersOnTarget:function(target,eventTypeString){for(var i=0;i<JSEvents.eventHandlers.length;++i){if(JSEvents.eventHandlers[i].target==target&&(!eventTypeString||eventTypeString==JSEvents.eventHandlers[i].eventTypeString)){JSEvents._removeHandler(i--)}}},_removeHandler:function(i){var h=JSEvents.eventHandlers[i];h.target.removeEventListener(h.eventTypeString,h.eventListenerFunc,h.useCapture);JSEvents.eventHandlers.splice(i,1)},registerOrRemoveHandler:function(eventHandler){var jsEventHandler=function jsEventHandler(event){++JSEvents.inEventHandler;JSEvents.currentEventHandler=eventHandler;JSEvents.runDeferredCalls();eventHandler.handlerFunc(event);JSEvents.runDeferredCalls();--JSEvents.inEventHandler};if(eventHandler.callbackfunc){eventHandler.eventListenerFunc=jsEventHandler;eventHandler.target.addEventListener(eventHandler.eventTypeString,jsEventHandler,eventHandler.useCapture);JSEvents.eventHandlers.push(eventHandler);JSEvents.registerRemoveEventListeners()}else{for(var i=0;i<JSEvents.eventHandlers.length;++i){if(JSEvents.eventHandlers[i].target==eventHandler.target&&JSEvents.eventHandlers[i].eventTypeString==eventHandler.eventTypeString){JSEvents._removeHandler(i--)}}}},getNodeNameForTarget:function(target){if(!target)return"";if(target==window)return"#window";if(target==screen)return"#screen";return target&&target.nodeName?target.nodeName:""},fullscreenEnabled:function(){return document.fullscreenEnabled||document.webkitFullscreenEnabled}};function requestPointerLock(target){if(target.requestPointerLock){target.requestPointerLock()}else if(target.msRequestPointerLock){target.msRequestPointerLock()}else{if(document.body.requestPointerLock||document.body.msRequestPointerLock){return-3}else{return-1}}return 0}function _emscripten_exit_pointerlock(){JSEvents.removeDeferredCalls(requestPointerLock);if(document.exitPointerLock){document.exitPointerLock()}else if(document.msExitPointerLock){document.msExitPointerLock()}else{return-1}return 0}function maybeCStringToJsString(cString){return cString>2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!=="undefined"?document:0,typeof window!=="undefined"?window:0];function findEventTarget(target){target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!=="undefined"?document.querySelector(target):undefined);return domElement}function getBoundingClientRect(e){return specialHTMLTargets.indexOf(e)<0?e.getBoundingClientRect():{"left":0,"top":0}}function _emscripten_get_element_css_size(target,width,height){target=findEventTarget(target);if(!target)return-4;var rect=getBoundingClientRect(target);HEAPF64[width>>3]=rect.width;HEAPF64[height>>3]=rect.height;return 0}function fillGamepadEventData(eventStruct,e){HEAPF64[eventStruct>>3]=e.timestamp;for(var i=0;i<e.axes.length;++i){HEAPF64[eventStruct+i*8+16>>3]=e.axes[i]}for(var i=0;i<e.buttons.length;++i){if(typeof e.buttons[i]==="object"){HEAPF64[eventStruct+i*8+528>>3]=e.buttons[i].value}else{HEAPF64[eventStruct+i*8+528>>3]=e.buttons[i]}}for(var i=0;i<e.buttons.length;++i){if(typeof e.buttons[i]==="object"){HEAP32[eventStruct+i*4+1040>>2]=e.buttons[i].pressed}else{HEAP32[eventStruct+i*4+1040>>2]=e.buttons[i]==1}}HEAP32[eventStruct+1296>>2]=e.connected;HEAP32[eventStruct+1300>>2]=e.index;HEAP32[eventStruct+8>>2]=e.axes.length;HEAP32[eventStruct+12>>2]=e.buttons.length;stringToUTF8(e.id,eventStruct+1304,64);stringToUTF8(e.mapping,eventStruct+1368,64)}function _emscripten_get_gamepad_status(index,gamepadState){if(index<0||index>=JSEvents.lastGamepadState.length)return-5;if(!JSEvents.lastGamepadState[index])return-7;fillGamepadEventData(gamepadState,JSEvents.lastGamepadState[index]);return 0}function _emscripten_get_num_gamepads(){return JSEvents.lastGamepadState.length}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension("ANGLE_instanced_arrays");if(ext){ctx["vertexAttribDivisor"]=function(index,divisor){ext["vertexAttribDivisorANGLE"](index,divisor)};ctx["drawArraysInstanced"]=function(mode,first,count,primcount){ext["drawArraysInstancedANGLE"](mode,first,count,primcount)};ctx["drawElementsInstanced"]=function(mode,count,type,indices,primcount){ext["drawElementsInstancedANGLE"](mode,count,type,indices,primcount)};return 1}}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension("OES_vertex_array_object");if(ext){ctx["createVertexArray"]=function(){return ext["createVertexArrayOES"]()};ctx["deleteVertexArray"]=function(vao){ext["deleteVertexArrayOES"](vao)};ctx["bindVertexArray"]=function(vao){ext["bindVertexArrayOES"](vao)};ctx["isVertexArray"]=function(vao){return ext["isVertexArrayOES"](vao)};return 1}}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension("WEBGL_draw_buffers");if(ext){ctx["drawBuffers"]=function(n,bufs){ext["drawBuffersWEBGL"](n,bufs)};return 1}}function __webgl_enable_WEBGL_multi_draw(ctx){return!!(ctx.multiDrawWebgl=ctx.getExtension("WEBGL_multi_draw"))}var GL={counter:1,buffers:[],programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:[],offscreenCanvases:{},timerQueriesEXT:[],programInfos:{},stringCache:{},unpackAlignment:4,recordError:function recordError(errorCode){if(!GL.lastError){GL.lastError=errorCode}},getNewId:function(table){var ret=GL.counter++;for(var i=table.length;i<ret;i++){table[i]=null}return ret},getSource:function(shader,count,string,length){var source="";for(var i=0;i<count;++i){var len=length?HEAP32[length+i*4>>2]:-1;source+=UTF8ToString(HEAP32[string+i*4>>2],len<0?undefined:len)}return source},createContext:function(canvas,webGLContextAttributes){var ctx=canvas.getContext("webgl",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:function(ctx,webGLContextAttributes){var handle=GL.getNewId(GL.contexts);var context={handle:handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};if(ctx.canvas)ctx.canvas.GLctxObject=context;GL.contexts[handle]=context;if(typeof webGLContextAttributes.enableExtensionsByDefault==="undefined"||webGLContextAttributes.enableExtensionsByDefault){GL.initExtensions(context)}return handle},makeContextCurrent:function(contextHandle){GL.currentContext=GL.contexts[contextHandle];Module.ctx=GLctx=GL.currentContext&&GL.currentContext.GLctx;return!(contextHandle&&!GLctx)},getContext:function(contextHandle){return GL.contexts[contextHandle]},deleteContext:function(contextHandle){if(GL.currentContext===GL.contexts[contextHandle])GL.currentContext=null;if(typeof JSEvents==="object")JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas);if(GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas)GL.contexts[contextHandle].GLctx.canvas.GLctxObject=undefined;GL.contexts[contextHandle]=null},initExtensions:function(context){if(!context)context=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;__webgl_enable_ANGLE_instanced_arrays(GLctx);__webgl_enable_OES_vertex_array_object(GLctx);__webgl_enable_WEBGL_draw_buffers(GLctx);GLctx.disjointTimerQueryExt=GLctx.getExtension("EXT_disjoint_timer_query");__webgl_enable_WEBGL_multi_draw(GLctx);var exts=GLctx.getSupportedExtensions()||[];exts.forEach(function(ext){if(ext.indexOf("lose_context")<0&&ext.indexOf("debug")<0){GLctx.getExtension(ext)}})},populateUniformTable:function(program){var p=GL.programs[program];var ptable=GL.programInfos[program]={uniforms:{},maxUniformLength:0,maxAttributeLength:-1,maxUniformBlockNameLength:-1};var utable=ptable.uniforms;var numUniforms=GLctx.getProgramParameter(p,35718);for(var i=0;i<numUniforms;++i){var u=GLctx.getActiveUniform(p,i);var name=u.name;ptable.maxUniformLength=Math.max(ptable.maxUniformLength,name.length+1);if(name.slice(-1)=="]"){name=name.slice(0,name.lastIndexOf("["))}var loc=GLctx.getUniformLocation(p,name);if(loc){var id=GL.getNewId(GL.uniforms);utable[name]=[u.size,id];GL.uniforms[id]=loc;for(var j=1;j<u.size;++j){var n=name+"["+j+"]";loc=GLctx.getUniformLocation(p,n);id=GL.getNewId(GL.uniforms);GL.uniforms[id]=loc}}}}};function _emscripten_glActiveTexture(x0){GLctx["activeTexture"](x0)}function _emscripten_glAttachShader(program,shader){GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _emscripten_glBeginQueryEXT(target,id){GLctx.disjointTimerQueryExt["beginQueryEXT"](target,GL.timerQueriesEXT[id])}function _emscripten_glBindAttribLocation(program,index,name){GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))}function _emscripten_glBindBuffer(target,buffer){GLctx.bindBuffer(target,GL.buffers[buffer])}function _emscripten_glBindFramebuffer(target,framebuffer){GLctx.bindFramebuffer(target,GL.framebuffers[framebuffer])}function _emscripten_glBindRenderbuffer(target,renderbuffer){GLctx.bindRenderbuffer(target,GL.renderbuffers[renderbuffer])}function _emscripten_glBindTexture(target,texture){GLctx.bindTexture(target,GL.textures[texture])}function _emscripten_glBindVertexArrayOES(vao){GLctx["bindVertexArray"](GL.vaos[vao])}function _emscripten_glBlendColor(x0,x1,x2,x3){GLctx["blendColor"](x0,x1,x2,x3)}function _emscripten_glBlendEquation(x0){GLctx["blendEquation"](x0)}function _emscripten_glBlendEquationSeparate(x0,x1){GLctx["blendEquationSeparate"](x0,x1)}function _emscripten_glBlendFunc(x0,x1){GLctx["blendFunc"](x0,x1)}function _emscripten_glBlendFuncSeparate(x0,x1,x2,x3){GLctx["blendFuncSeparate"](x0,x1,x2,x3)}function _emscripten_glBufferData(target,size,data,usage){GLctx.bufferData(target,data?HEAPU8.subarray(data,data+size):size,usage)}function _emscripten_glBufferSubData(target,offset,size,data){GLctx.bufferSubData(target,offset,HEAPU8.subarray(data,data+size))}function _emscripten_glCheckFramebufferStatus(x0){return GLctx["checkFramebufferStatus"](x0)}function _emscripten_glClear(x0){GLctx["clear"](x0)}function _emscripten_glClearColor(x0,x1,x2,x3){GLctx["clearColor"](x0,x1,x2,x3)}function _emscripten_glClearDepthf(x0){GLctx["clearDepth"](x0)}function _emscripten_glClearStencil(x0){GLctx["clearStencil"](x0)}function _emscripten_glColorMask(red,green,blue,alpha){GLctx.colorMask(!!red,!!green,!!blue,!!alpha)}function _emscripten_glCompileShader(shader){GLctx.compileShader(GL.shaders[shader])}function _emscripten_glCompressedTexImage2D(target,level,internalFormat,width,height,border,imageSize,data){GLctx["compressedTexImage2D"](target,level,internalFormat,width,height,border,data?HEAPU8.subarray(data,data+imageSize):null)}function _emscripten_glCompressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,imageSize,data){GLctx["compressedTexSubImage2D"](target,level,xoffset,yoffset,width,height,format,data?HEAPU8.subarray(data,data+imageSize):null)}function _emscripten_glCopyTexImage2D(x0,x1,x2,x3,x4,x5,x6,x7){GLctx["copyTexImage2D"](x0,x1,x2,x3,x4,x5,x6,x7)}function _emscripten_glCopyTexSubImage2D(x0,x1,x2,x3,x4,x5,x6,x7){GLctx["copyTexSubImage2D"](x0,x1,x2,x3,x4,x5,x6,x7)}function _emscripten_glCreateProgram(){var id=GL.getNewId(GL.programs);var program=GLctx.createProgram();program.name=id;GL.programs[id]=program;return id}function _emscripten_glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}function _emscripten_glCullFace(x0){GLctx["cullFace"](x0)}function _emscripten_glDeleteBuffers(n,buffers){for(var i=0;i<n;i++){var id=HEAP32[buffers+i*4>>2];var buffer=GL.buffers[id];if(!buffer)continue;GLctx.deleteBuffer(buffer);buffer.name=0;GL.buffers[id]=null}}function _emscripten_glDeleteFramebuffers(n,framebuffers){for(var i=0;i<n;++i){var id=HEAP32[framebuffers+i*4>>2];var framebuffer=GL.framebuffers[id];if(!framebuffer)continue;GLctx.deleteFramebuffer(framebuffer);framebuffer.name=0;GL.framebuffers[id]=null}}function _emscripten_glDeleteProgram(id){if(!id)return;var program=GL.programs[id];if(!program){GL.recordError(1281);return}GLctx.deleteProgram(program);program.name=0;GL.programs[id]=null;GL.programInfos[id]=null}function _emscripten_glDeleteQueriesEXT(n,ids){for(var i=0;i<n;i++){var id=HEAP32[ids+i*4>>2];var query=GL.timerQueriesEXT[id];if(!query)continue;GLctx.disjointTimerQueryExt["deleteQueryEXT"](query);GL.timerQueriesEXT[id]=null}}function _emscripten_glDeleteRenderbuffers(n,renderbuffers){for(var i=0;i<n;i++){var id=HEAP32[renderbuffers+i*4>>2];var renderbuffer=GL.renderbuffers[id];if(!renderbuffer)continue;GLctx.deleteRenderbuffer(renderbuffer);renderbuffer.name=0;GL.renderbuffers[id]=null}}function _emscripten_glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}function _emscripten_glDeleteTextures(n,textures){for(var i=0;i<n;i++){var id=HEAP32[textures+i*4>>2];var texture=GL.textures[id];if(!texture)continue;GLctx.deleteTexture(texture);texture.name=0;GL.textures[id]=null}}function _emscripten_glDeleteVertexArraysOES(n,vaos){for(var i=0;i<n;i++){var id=HEAP32[vaos+i*4>>2];GLctx["deleteVertexArray"](GL.vaos[id]);GL.vaos[id]=null}}function _emscripten_glDepthFunc(x0){GLctx["depthFunc"](x0)}function _emscripten_glDepthMask(flag){GLctx.depthMask(!!flag)}function _emscripten_glDepthRangef(x0,x1){GLctx["depthRange"](x0,x1)}function _emscripten_glDetachShader(program,shader){GLctx.detachShader(GL.programs[program],GL.shaders[shader])}function _emscripten_glDisable(x0){GLctx["disable"](x0)}function _emscripten_glDisableVertexAttribArray(index){GLctx.disableVertexAttribArray(index)}function _emscripten_glDrawArrays(mode,first,count){GLctx.drawArrays(mode,first,count)}function _emscripten_glDrawArraysInstancedANGLE(mode,first,count,primcount){GLctx["drawArraysInstanced"](mode,first,count,primcount)}var tempFixedLengthArray=[];function _emscripten_glDrawBuffersWEBGL(n,bufs){var bufArray=tempFixedLengthArray[n];for(var i=0;i<n;i++){bufArray[i]=HEAP32[bufs+i*4>>2]}GLctx["drawBuffers"](bufArray)}function _emscripten_glDrawElements(mode,count,type,indices){GLctx.drawElements(mode,count,type,indices)}function _emscripten_glDrawElementsInstancedANGLE(mode,count,type,indices,primcount){GLctx["drawElementsInstanced"](mode,count,type,indices,primcount)}function _emscripten_glEnable(x0){GLctx["enable"](x0)}function _emscripten_glEnableVertexAttribArray(index){GLctx.enableVertexAttribArray(index)}function _emscripten_glEndQueryEXT(target){GLctx.disjointTimerQueryExt["endQueryEXT"](target)}function _emscripten_glFinish(){GLctx["finish"]()}function _emscripten_glFlush(){GLctx["flush"]()}function _emscripten_glFramebufferRenderbuffer(target,attachment,renderbuffertarget,renderbuffer){GLctx.framebufferRenderbuffer(target,attachment,renderbuffertarget,GL.renderbuffers[renderbuffer])}function _emscripten_glFramebufferTexture2D(target,attachment,textarget,texture,level){GLctx.framebufferTexture2D(target,attachment,textarget,GL.textures[texture],level)}function _emscripten_glFrontFace(x0){GLctx["frontFace"](x0)}function __glGenObject(n,buffers,createFunction,objectTable){for(var i=0;i<n;i++){var buffer=GLctx[createFunction]();var id=buffer&&GL.getNewId(objectTable);if(buffer){buffer.name=id;objectTable[id]=buffer}else{GL.recordError(1282)}HEAP32[buffers+i*4>>2]=id}}function _emscripten_glGenBuffers(n,buffers){__glGenObject(n,buffers,"createBuffer",GL.buffers)}function _emscripten_glGenFramebuffers(n,ids){__glGenObject(n,ids,"createFramebuffer",GL.framebuffers)}function _emscripten_glGenQueriesEXT(n,ids){for(var i=0;i<n;i++){var query=GLctx.disjointTimerQueryExt["createQueryEXT"]();if(!query){GL.recordError(1282);while(i<n)HEAP32[ids+i++*4>>2]=0;return}var id=GL.getNewId(GL.timerQueriesEXT);query.name=id;GL.timerQueriesEXT[id]=query;HEAP32[ids+i*4>>2]=id}}function _emscripten_glGenRenderbuffers(n,renderbuffers){__glGenObject(n,renderbuffers,"createRenderbuffer",GL.renderbuffers)}function _emscripten_glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures)}function _emscripten_glGenVertexArraysOES(n,arrays){__glGenObject(n,arrays,"createVertexArray",GL.vaos)}function _emscripten_glGenerateMipmap(x0){GLctx["generateMipmap"](x0)}function __glGetActiveAttribOrUniform(funcName,program,index,bufSize,length,size,type,name){program=GL.programs[program];var info=GLctx[funcName](program,index);if(info){var numBytesWrittenExclNull=name&&stringToUTF8(info.name,name,bufSize);if(length)HEAP32[length>>2]=numBytesWrittenExclNull;if(size)HEAP32[size>>2]=info.size;if(type)HEAP32[type>>2]=info.type}}function _emscripten_glGetActiveAttrib(program,index,bufSize,length,size,type,name){__glGetActiveAttribOrUniform("getActiveAttrib",program,index,bufSize,length,size,type,name)}function _emscripten_glGetActiveUniform(program,index,bufSize,length,size,type,name){__glGetActiveAttribOrUniform("getActiveUniform",program,index,bufSize,length,size,type,name)}function _emscripten_glGetAttachedShaders(program,maxCount,count,shaders){var result=GLctx.getAttachedShaders(GL.programs[program]);var len=result.length;if(len>maxCount){len=maxCount}HEAP32[count>>2]=len;for(var i=0;i<len;++i){var id=GL.shaders.indexOf(result[i]);HEAP32[shaders+i*4>>2]=id}}function _emscripten_glGetAttribLocation(program,name){return GLctx.getAttribLocation(GL.programs[program],UTF8ToString(name))}function writeI53ToI64(ptr,num){HEAPU32[ptr>>2]=num;HEAPU32[ptr+4>>2]=(num-HEAPU32[ptr>>2])/4294967296}function emscriptenWebGLGet(name_,p,type){if(!p){GL.recordError(1281);return}var ret=undefined;switch(name_){case 36346:ret=1;break;case 36344:if(type!=0&&type!=1){GL.recordError(1280)}return;case 36345:ret=0;break;case 34466:var formats=GLctx.getParameter(34467);ret=formats?formats.length:0;break}if(ret===undefined){var result=GLctx.getParameter(name_);switch(typeof result){case"number":ret=result;break;case"boolean":ret=result?1:0;break;case"string":GL.recordError(1280);return;case"object":if(result===null){switch(name_){case 34964:case 35725:case 34965:case 36006:case 36007:case 32873:case 34229:case 34068:{ret=0;break}default:{GL.recordError(1280);return}}}else if(result instanceof Float32Array||result instanceof Uint32Array||result instanceof Int32Array||result instanceof Array){for(var i=0;i<result.length;++i){switch(type){case 0:HEAP32[p+i*4>>2]=result[i];break;case 2:HEAPF32[p+i*4>>2]=result[i];break;case 4:HEAP8[p+i>>0]=result[i]?1:0;break}}return}else{try{ret=result.name|0}catch(e){GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v: Unknown object returned from WebGL getParameter("+name_+")! (error: "+e+")");return}}break;default:GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v: Native code calling glGet"+type+"v("+name_+") and it returns "+result+" of type "+typeof result+"!");return}}switch(type){case 1:writeI53ToI64(p,ret);break;case 0:HEAP32[p>>2]=ret;break;case 2:HEAPF32[p>>2]=ret;break;case 4:HEAP8[p>>0]=ret?1:0;break}}function _emscripten_glGetBooleanv(name_,p){emscriptenWebGLGet(name_,p,4)}function _emscripten_glGetBufferParameteriv(target,value,data){if(!data){GL.recordError(1281);return}HEAP32[data>>2]=GLctx.getBufferParameter(target,value)}function _emscripten_glGetError(){var error=GLctx.getError()||GL.lastError;GL.lastError=0;return error}function _emscripten_glGetFloatv(name_,p){emscriptenWebGLGet(name_,p,2)}function _emscripten_glGetFramebufferAttachmentParameteriv(target,attachment,pname,params){var result=GLctx.getFramebufferAttachmentParameter(target,attachment,pname);if(result instanceof WebGLRenderbuffer||result instanceof WebGLTexture){result=result.name|0}HEAP32[params>>2]=result}function _emscripten_glGetIntegerv(name_,p){emscriptenWebGLGet(name_,p,0)}function _emscripten_glGetProgramInfoLog(program,maxLength,length,infoLog){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _emscripten_glGetProgramiv(program,pname,p){if(!p){GL.recordError(1281);return}if(program>=GL.counter){GL.recordError(1281);return}var ptable=GL.programInfos[program];if(!ptable){GL.recordError(1282);return}if(pname==35716){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";HEAP32[p>>2]=log.length+1}else if(pname==35719){HEAP32[p>>2]=ptable.maxUniformLength}else if(pname==35722){if(ptable.maxAttributeLength==-1){program=GL.programs[program];var numAttribs=GLctx.getProgramParameter(program,35721);ptable.maxAttributeLength=0;for(var i=0;i<numAttribs;++i){var activeAttrib=GLctx.getActiveAttrib(program,i);ptable.maxAttributeLength=Math.max(ptable.maxAttributeLength,activeAttrib.name.length+1)}}HEAP32[p>>2]=ptable.maxAttributeLength}else if(pname==35381){if(ptable.maxUniformBlockNameLength==-1){program=GL.programs[program];var numBlocks=GLctx.getProgramParameter(program,35382);ptable.maxUniformBlockNameLength=0;for(var i=0;i<numBlocks;++i){var activeBlockName=GLctx.getActiveUniformBlockName(program,i);ptable.maxUniformBlockNameLength=Math.max(ptable.maxUniformBlockNameLength,activeBlockName.length+1)}}HEAP32[p>>2]=ptable.maxUniformBlockNameLength}else{HEAP32[p>>2]=GLctx.getProgramParameter(GL.programs[program],pname)}}function _emscripten_glGetQueryObjecti64vEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.timerQueriesEXT[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}writeI53ToI64(params,ret)}function _emscripten_glGetQueryObjectivEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.timerQueriesEXT[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}HEAP32[params>>2]=ret}function _emscripten_glGetQueryObjectui64vEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.timerQueriesEXT[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}writeI53ToI64(params,ret)}function _emscripten_glGetQueryObjectuivEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.timerQueriesEXT[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}HEAP32[params>>2]=ret}function _emscripten_glGetQueryivEXT(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.disjointTimerQueryExt["getQueryEXT"](target,pname)}function _emscripten_glGetRenderbufferParameteriv(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getRenderbufferParameter(target,pname)}function _emscripten_glGetShaderInfoLog(shader,maxLength,length,infoLog){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _emscripten_glGetShaderPrecisionFormat(shaderType,precisionType,range,precision){var result=GLctx.getShaderPrecisionFormat(shaderType,precisionType);HEAP32[range>>2]=result.rangeMin;HEAP32[range+4>>2]=result.rangeMax;HEAP32[precision>>2]=result.precision}function _emscripten_glGetShaderSource(shader,bufSize,length,source){var result=GLctx.getShaderSource(GL.shaders[shader]);if(!result)return;var numBytesWrittenExclNull=bufSize>0&&source?stringToUTF8(result,source,bufSize):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _emscripten_glGetShaderiv(shader,pname,p){if(!p){GL.recordError(1281);return}if(pname==35716){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var logLength=log?log.length+1:0;HEAP32[p>>2]=logLength}else if(pname==35720){var source=GLctx.getShaderSource(GL.shaders[shader]);var sourceLength=source?source.length+1:0;HEAP32[p>>2]=sourceLength}else{HEAP32[p>>2]=GLctx.getShaderParameter(GL.shaders[shader],pname)}}function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _emscripten_glGetString(name_){if(GL.stringCache[name_])return GL.stringCache[name_];var ret;switch(name_){case 7939:var exts=GLctx.getSupportedExtensions()||[];exts=exts.concat(exts.map(function(e){return"GL_"+e}));ret=stringToNewUTF8(exts.join(" "));break;case 7936:case 7937:case 37445:case 37446:var s=GLctx.getParameter(name_);if(!s){GL.recordError(1280)}ret=stringToNewUTF8(s);break;case 7938:var glVersion=GLctx.getParameter(7938);{glVersion="OpenGL ES 2.0 ("+glVersion+")"}ret=stringToNewUTF8(glVersion);break;case 35724:var glslVersion=GLctx.getParameter(35724);var ver_re=/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/;var ver_num=glslVersion.match(ver_re);if(ver_num!==null){if(ver_num[1].length==3)ver_num[1]=ver_num[1]+"0";glslVersion="OpenGL ES GLSL ES "+ver_num[1]+" ("+glslVersion+")"}ret=stringToNewUTF8(glslVersion);break;default:GL.recordError(1280);return 0}GL.stringCache[name_]=ret;return ret}function _emscripten_glGetTexParameterfv(target,pname,params){if(!params){GL.recordError(1281);return}HEAPF32[params>>2]=GLctx.getTexParameter(target,pname)}function _emscripten_glGetTexParameteriv(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getTexParameter(target,pname)}function jstoi_q(str){return parseInt(str)}function _emscripten_glGetUniformLocation(program,name){name=UTF8ToString(name);var arrayIndex=0;if(name[name.length-1]=="]"){var leftBrace=name.lastIndexOf("[");arrayIndex=name[leftBrace+1]!="]"?jstoi_q(name.slice(leftBrace+1)):0;name=name.slice(0,leftBrace)}var uniformInfo=GL.programInfos[program]&&GL.programInfos[program].uniforms[name];if(uniformInfo&&arrayIndex>=0&&arrayIndex<uniformInfo[0]){return uniformInfo[1]+arrayIndex}else{return-1}}function emscriptenWebGLGetUniform(program,location,params,type){if(!params){GL.recordError(1281);return}var data=GLctx.getUniform(GL.programs[program],GL.uniforms[location]);if(typeof data=="number"||typeof data=="boolean"){switch(type){case 0:HEAP32[params>>2]=data;break;case 2:HEAPF32[params>>2]=data;break}}else{for(var i=0;i<data.length;i++){switch(type){case 0:HEAP32[params+i*4>>2]=data[i];break;case 2:HEAPF32[params+i*4>>2]=data[i];break}}}}function _emscripten_glGetUniformfv(program,location,params){emscriptenWebGLGetUniform(program,location,params,2)}function _emscripten_glGetUniformiv(program,location,params){emscriptenWebGLGetUniform(program,location,params,0)}function _emscripten_glGetVertexAttribPointerv(index,pname,pointer){if(!pointer){GL.recordError(1281);return}HEAP32[pointer>>2]=GLctx.getVertexAttribOffset(index,pname)}function emscriptenWebGLGetVertexAttrib(index,pname,params,type){if(!params){GL.recordError(1281);return}var data=GLctx.getVertexAttrib(index,pname);if(pname==34975){HEAP32[params>>2]=data&&data["name"]}else if(typeof data=="number"||typeof data=="boolean"){switch(type){case 0:HEAP32[params>>2]=data;break;case 2:HEAPF32[params>>2]=data;break;case 5:HEAP32[params>>2]=Math.fround(data);break}}else{for(var i=0;i<data.length;i++){switch(type){case 0:HEAP32[params+i*4>>2]=data[i];break;case 2:HEAPF32[params+i*4>>2]=data[i];break;case 5:HEAP32[params+i*4>>2]=Math.fround(data[i]);break}}}}function _emscripten_glGetVertexAttribfv(index,pname,params){emscriptenWebGLGetVertexAttrib(index,pname,params,2)}function _emscripten_glGetVertexAttribiv(index,pname,params){emscriptenWebGLGetVertexAttrib(index,pname,params,5)}function _emscripten_glHint(x0,x1){GLctx["hint"](x0,x1)}function _emscripten_glIsBuffer(buffer){var b=GL.buffers[buffer];if(!b)return 0;return GLctx.isBuffer(b)}function _emscripten_glIsEnabled(x0){return GLctx["isEnabled"](x0)}function _emscripten_glIsFramebuffer(framebuffer){var fb=GL.framebuffers[framebuffer];if(!fb)return 0;return GLctx.isFramebuffer(fb)}function _emscripten_glIsProgram(program){program=GL.programs[program];if(!program)return 0;return GLctx.isProgram(program)}function _emscripten_glIsQueryEXT(id){var query=GL.timerQueriesEXT[id];if(!query)return 0;return GLctx.disjointTimerQueryExt["isQueryEXT"](query)}function _emscripten_glIsRenderbuffer(renderbuffer){var rb=GL.renderbuffers[renderbuffer];if(!rb)return 0;return GLctx.isRenderbuffer(rb)}function _emscripten_glIsShader(shader){var s=GL.shaders[shader];if(!s)return 0;return GLctx.isShader(s)}function _emscripten_glIsTexture(id){var texture=GL.textures[id];if(!texture)return 0;return GLctx.isTexture(texture)}function _emscripten_glIsVertexArrayOES(array){var vao=GL.vaos[array];if(!vao)return 0;return GLctx["isVertexArray"](vao)}function _emscripten_glLineWidth(x0){GLctx["lineWidth"](x0)}function _emscripten_glLinkProgram(program){GLctx.linkProgram(GL.programs[program]);GL.populateUniformTable(program)}function _emscripten_glPixelStorei(pname,param){if(pname==3317){GL.unpackAlignment=param}GLctx.pixelStorei(pname,param)}function _emscripten_glPolygonOffset(x0,x1){GLctx["polygonOffset"](x0,x1)}function _emscripten_glQueryCounterEXT(id,target){GLctx.disjointTimerQueryExt["queryCounterEXT"](GL.timerQueriesEXT[id],target)}function computeUnpackAlignedImageSize(width,height,sizePerPixel,alignment){function roundedToNextMultipleOf(x,y){return x+y-1&-y}var plainRowSize=width*sizePerPixel;var alignedRowSize=roundedToNextMultipleOf(plainRowSize,alignment);return height*alignedRowSize}function __colorChannelsInGlTextureFormat(format){var colorChannels={5:3,6:4,8:2,29502:3,29504:4};return colorChannels[format-6402]||1}function heapObjectForWebGLType(type){type-=5120;if(type==1)return HEAPU8;if(type==4)return HEAP32;if(type==6)return HEAPF32;if(type==5||type==28922)return HEAPU32;return HEAPU16}function heapAccessShiftForWebGLHeap(heap){return 31-Math.clz32(heap.BYTES_PER_ELEMENT)}function emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat){var heap=heapObjectForWebGLType(type);var shift=heapAccessShiftForWebGLHeap(heap);var byteSize=1<<shift;var sizePerPixel=__colorChannelsInGlTextureFormat(format)*byteSize;var bytes=computeUnpackAlignedImageSize(width,height,sizePerPixel,GL.unpackAlignment);return heap.subarray(pixels>>shift,pixels+bytes>>shift)}function _emscripten_glReadPixels(x,y,width,height,format,type,pixels){var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);return}GLctx.readPixels(x,y,width,height,format,type,pixelData)}function _emscripten_glReleaseShaderCompiler(){}function _emscripten_glRenderbufferStorage(x0,x1,x2,x3){GLctx["renderbufferStorage"](x0,x1,x2,x3)}function _emscripten_glSampleCoverage(value,invert){GLctx.sampleCoverage(value,!!invert)}function _emscripten_glScissor(x0,x1,x2,x3){GLctx["scissor"](x0,x1,x2,x3)}function _emscripten_glShaderBinary(){GL.recordError(1280)}function _emscripten_glShaderSource(shader,count,string,length){var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}function _emscripten_glStencilFunc(x0,x1,x2){GLctx["stencilFunc"](x0,x1,x2)}function _emscripten_glStencilFuncSeparate(x0,x1,x2,x3){GLctx["stencilFuncSeparate"](x0,x1,x2,x3)}function _emscripten_glStencilMask(x0){GLctx["stencilMask"](x0)}function _emscripten_glStencilMaskSeparate(x0,x1){GLctx["stencilMaskSeparate"](x0,x1)}function _emscripten_glStencilOp(x0,x1,x2){GLctx["stencilOp"](x0,x1,x2)}function _emscripten_glStencilOpSeparate(x0,x1,x2,x3){GLctx["stencilOpSeparate"](x0,x1,x2,x3)}function _emscripten_glTexImage2D(target,level,internalFormat,width,height,border,format,type,pixels){GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels?emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat):null)}function _emscripten_glTexParameterf(x0,x1,x2){GLctx["texParameterf"](x0,x1,x2)}function _emscripten_glTexParameterfv(target,pname,params){var param=HEAPF32[params>>2];GLctx.texParameterf(target,pname,param)}function _emscripten_glTexParameteri(x0,x1,x2){GLctx["texParameteri"](x0,x1,x2)}function _emscripten_glTexParameteriv(target,pname,params){var param=HEAP32[params>>2];GLctx.texParameteri(target,pname,param)}function _emscripten_glTexSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixels){var pixelData=null;if(pixels)pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,0);GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixelData)}function _emscripten_glUniform1f(location,v0){GLctx.uniform1f(GL.uniforms[location],v0)}var miniTempWebGLFloatBuffers=[];function _emscripten_glUniform1fv(location,count,value){if(count<=288){var view=miniTempWebGLFloatBuffers[count-1];for(var i=0;i<count;++i){view[i]=HEAPF32[value+4*i>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*4>>2)}GLctx.uniform1fv(GL.uniforms[location],view)}function _emscripten_glUniform1i(location,v0){GLctx.uniform1i(GL.uniforms[location],v0)}var __miniTempWebGLIntBuffers=[];function _emscripten_glUniform1iv(location,count,value){if(count<=288){var view=__miniTempWebGLIntBuffers[count-1];for(var i=0;i<count;++i){view[i]=HEAP32[value+4*i>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*4>>2)}GLctx.uniform1iv(GL.uniforms[location],view)}function _emscripten_glUniform2f(location,v0,v1){GLctx.uniform2f(GL.uniforms[location],v0,v1)}function _emscripten_glUniform2fv(location,count,value){if(count<=144){var view=miniTempWebGLFloatBuffers[2*count-1];for(var i=0;i<2*count;i+=2){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*8>>2)}GLctx.uniform2fv(GL.uniforms[location],view)}function _emscripten_glUniform2i(location,v0,v1){GLctx.uniform2i(GL.uniforms[location],v0,v1)}function _emscripten_glUniform2iv(location,count,value){if(count<=144){var view=__miniTempWebGLIntBuffers[2*count-1];for(var i=0;i<2*count;i+=2){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*8>>2)}GLctx.uniform2iv(GL.uniforms[location],view)}function _emscripten_glUniform3f(location,v0,v1,v2){GLctx.uniform3f(GL.uniforms[location],v0,v1,v2)}function _emscripten_glUniform3fv(location,count,value){if(count<=96){var view=miniTempWebGLFloatBuffers[3*count-1];for(var i=0;i<3*count;i+=3){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*12>>2)}GLctx.uniform3fv(GL.uniforms[location],view)}function _emscripten_glUniform3i(location,v0,v1,v2){GLctx.uniform3i(GL.uniforms[location],v0,v1,v2)}function _emscripten_glUniform3iv(location,count,value){if(count<=96){var view=__miniTempWebGLIntBuffers[3*count-1];for(var i=0;i<3*count;i+=3){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2];view[i+2]=HEAP32[value+(4*i+8)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*12>>2)}GLctx.uniform3iv(GL.uniforms[location],view)}function _emscripten_glUniform4f(location,v0,v1,v2,v3){GLctx.uniform4f(GL.uniforms[location],v0,v1,v2,v3)}function _emscripten_glUniform4fv(location,count,value){if(count<=72){var view=miniTempWebGLFloatBuffers[4*count-1];var heap=HEAPF32;value>>=2;for(var i=0;i<4*count;i+=4){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3]}}else{var view=HEAPF32.subarray(value>>2,value+count*16>>2)}GLctx.uniform4fv(GL.uniforms[location],view)}function _emscripten_glUniform4i(location,v0,v1,v2,v3){GLctx.uniform4i(GL.uniforms[location],v0,v1,v2,v3)}function _emscripten_glUniform4iv(location,count,value){if(count<=72){var view=__miniTempWebGLIntBuffers[4*count-1];for(var i=0;i<4*count;i+=4){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2];view[i+2]=HEAP32[value+(4*i+8)>>2];view[i+3]=HEAP32[value+(4*i+12)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*16>>2)}GLctx.uniform4iv(GL.uniforms[location],view)}function _emscripten_glUniformMatrix2fv(location,count,transpose,value){if(count<=72){var view=miniTempWebGLFloatBuffers[4*count-1];for(var i=0;i<4*count;i+=4){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2];view[i+3]=HEAPF32[value+(4*i+12)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*16>>2)}GLctx.uniformMatrix2fv(GL.uniforms[location],!!transpose,view)}function _emscripten_glUniformMatrix3fv(location,count,transpose,value){if(count<=32){var view=miniTempWebGLFloatBuffers[9*count-1];for(var i=0;i<9*count;i+=9){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2];view[i+3]=HEAPF32[value+(4*i+12)>>2];view[i+4]=HEAPF32[value+(4*i+16)>>2];view[i+5]=HEAPF32[value+(4*i+20)>>2];view[i+6]=HEAPF32[value+(4*i+24)>>2];view[i+7]=HEAPF32[value+(4*i+28)>>2];view[i+8]=HEAPF32[value+(4*i+32)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*36>>2)}GLctx.uniformMatrix3fv(GL.uniforms[location],!!transpose,view)}function _emscripten_glUniformMatrix4fv(location,count,transpose,value){if(count<=18){var view=miniTempWebGLFloatBuffers[16*count-1];var heap=HEAPF32;value>>=2;for(var i=0;i<16*count;i+=16){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3];view[i+4]=heap[dst+4];view[i+5]=heap[dst+5];view[i+6]=heap[dst+6];view[i+7]=heap[dst+7];view[i+8]=heap[dst+8];view[i+9]=heap[dst+9];view[i+10]=heap[dst+10];view[i+11]=heap[dst+11];view[i+12]=heap[dst+12];view[i+13]=heap[dst+13];view[i+14]=heap[dst+14];view[i+15]=heap[dst+15]}}else{var view=HEAPF32.subarray(value>>2,value+count*64>>2)}GLctx.uniformMatrix4fv(GL.uniforms[location],!!transpose,view)}function _emscripten_glUseProgram(program){GLctx.useProgram(GL.programs[program])}function _emscripten_glValidateProgram(program){GLctx.validateProgram(GL.programs[program])}function _emscripten_glVertexAttrib1f(x0,x1){GLctx["vertexAttrib1f"](x0,x1)}function _emscripten_glVertexAttrib1fv(index,v){GLctx.vertexAttrib1f(index,HEAPF32[v>>2])}function _emscripten_glVertexAttrib2f(x0,x1,x2){GLctx["vertexAttrib2f"](x0,x1,x2)}function _emscripten_glVertexAttrib2fv(index,v){GLctx.vertexAttrib2f(index,HEAPF32[v>>2],HEAPF32[v+4>>2])}function _emscripten_glVertexAttrib3f(x0,x1,x2,x3){GLctx["vertexAttrib3f"](x0,x1,x2,x3)}function _emscripten_glVertexAttrib3fv(index,v){GLctx.vertexAttrib3f(index,HEAPF32[v>>2],HEAPF32[v+4>>2],HEAPF32[v+8>>2])}function _emscripten_glVertexAttrib4f(x0,x1,x2,x3,x4){GLctx["vertexAttrib4f"](x0,x1,x2,x3,x4)}function _emscripten_glVertexAttrib4fv(index,v){GLctx.vertexAttrib4f(index,HEAPF32[v>>2],HEAPF32[v+4>>2],HEAPF32[v+8>>2],HEAPF32[v+12>>2])}function _emscripten_glVertexAttribDivisorANGLE(index,divisor){GLctx["vertexAttribDivisor"](index,divisor)}function _emscripten_glVertexAttribPointer(index,size,type,normalized,stride,ptr){GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}function _emscripten_glViewport(x0,x1,x2,x3){GLctx["viewport"](x0,x1,x2,x3)}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function abortOnCannotGrowMemory(requestedSize){abort("OOM")}function _emscripten_resize_heap(requestedSize){abortOnCannotGrowMemory(requestedSize)}function _emscripten_run_script(ptr){eval(UTF8ToString(ptr))}function _emscripten_sample_gamepad_data(){return(JSEvents.lastGamepadState=navigator.getGamepads?navigator.getGamepads():navigator.webkitGetGamepads?navigator.webkitGetGamepads():null)?0:-1}function fillMouseEventData(eventStruct,e,target){var idx=eventStruct>>2;HEAP32[idx+0]=e.screenX;HEAP32[idx+1]=e.screenY;HEAP32[idx+2]=e.clientX;HEAP32[idx+3]=e.clientY;HEAP32[idx+4]=e.ctrlKey;HEAP32[idx+5]=e.shiftKey;HEAP32[idx+6]=e.altKey;HEAP32[idx+7]=e.metaKey;HEAP16[idx*2+16]=e.button;HEAP16[idx*2+17]=e.buttons;HEAP32[idx+9]=e["movementX"];HEAP32[idx+10]=e["movementY"];var rect=getBoundingClientRect(target);HEAP32[idx+11]=e.clientX-rect.left;HEAP32[idx+12]=e.clientY-rect.top}function registerMouseEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.mouseEvent)JSEvents.mouseEvent=_malloc(64);target=findEventTarget(target);var mouseEventHandlerFunc=function(ev){var e=ev||event;fillMouseEventData(JSEvents.mouseEvent,e,target);if(wasmTable.get(callbackfunc)(eventTypeId,JSEvents.mouseEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:eventTypeString!="mousemove"&&eventTypeString!="mouseenter"&&eventTypeString!="mouseleave",eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:mouseEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_click_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,4,"click",targetThread);return 0}function fillFullscreenChangeEventData(eventStruct){var fullscreenElement=document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement||document.msFullscreenElement;var isFullscreen=!!fullscreenElement;HEAP32[eventStruct>>2]=isFullscreen;HEAP32[eventStruct+4>>2]=JSEvents.fullscreenEnabled();var reportedElement=isFullscreen?fullscreenElement:JSEvents.previousFullscreenElement;var nodeName=JSEvents.getNodeNameForTarget(reportedElement);var id=reportedElement&&reportedElement.id?reportedElement.id:"";stringToUTF8(nodeName,eventStruct+8,128);stringToUTF8(id,eventStruct+136,128);HEAP32[eventStruct+264>>2]=reportedElement?reportedElement.clientWidth:0;HEAP32[eventStruct+268>>2]=reportedElement?reportedElement.clientHeight:0;HEAP32[eventStruct+272>>2]=screen.width;HEAP32[eventStruct+276>>2]=screen.height;if(isFullscreen){JSEvents.previousFullscreenElement=fullscreenElement}}function registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.fullscreenChangeEvent)JSEvents.fullscreenChangeEvent=_malloc(280);var fullscreenChangeEventhandlerFunc=function(ev){var e=ev||event;var fullscreenChangeEvent=JSEvents.fullscreenChangeEvent;fillFullscreenChangeEventData(fullscreenChangeEvent);if(wasmTable.get(callbackfunc)(eventTypeId,fullscreenChangeEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:fullscreenChangeEventhandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_fullscreenchange_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){if(!JSEvents.fullscreenEnabled())return-1;target=findEventTarget(target);if(!target)return-4;registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,19,"fullscreenchange",targetThread);registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,19,"webkitfullscreenchange",targetThread);return 0}function registerGamepadEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.gamepadEvent)JSEvents.gamepadEvent=_malloc(1432);var gamepadEventHandlerFunc=function(ev){var e=ev||event;var gamepadEvent=JSEvents.gamepadEvent;fillGamepadEventData(gamepadEvent,e["gamepad"]);if(wasmTable.get(callbackfunc)(eventTypeId,gamepadEvent,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:gamepadEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_gamepadconnected_callback_on_thread(userData,useCapture,callbackfunc,targetThread){if(!navigator.getGamepads&&!navigator.webkitGetGamepads)return-1;registerGamepadEventCallback(2,userData,useCapture,callbackfunc,26,"gamepadconnected",targetThread);return 0}function _emscripten_set_gamepaddisconnected_callback_on_thread(userData,useCapture,callbackfunc,targetThread){if(!navigator.getGamepads&&!navigator.webkitGetGamepads)return-1;registerGamepadEventCallback(2,userData,useCapture,callbackfunc,27,"gamepaddisconnected",targetThread);return 0}function registerKeyEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.keyEvent)JSEvents.keyEvent=_malloc(164);var keyEventHandlerFunc=function(e){var keyEventData=JSEvents.keyEvent;var idx=keyEventData>>2;HEAP32[idx+0]=e.location;HEAP32[idx+1]=e.ctrlKey;HEAP32[idx+2]=e.shiftKey;HEAP32[idx+3]=e.altKey;HEAP32[idx+4]=e.metaKey;HEAP32[idx+5]=e.repeat;HEAP32[idx+6]=e.charCode;HEAP32[idx+7]=e.keyCode;HEAP32[idx+8]=e.which;stringToUTF8(e.key||"",keyEventData+36,32);stringToUTF8(e.code||"",keyEventData+68,32);stringToUTF8(e.char||"",keyEventData+100,32);stringToUTF8(e.locale||"",keyEventData+132,32);if(wasmTable.get(callbackfunc)(eventTypeId,keyEventData,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:keyEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_keydown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,2,"keydown",targetThread);return 0}var Browser={mainLoop:{scheduler:null,method:"",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause:function(){Browser.mainLoop.scheduler=null;Browser.mainLoop.currentlyRunningMainloop++},resume:function(){Browser.mainLoop.currentlyRunningMainloop++;var timingMode=Browser.mainLoop.timingMode;var timingValue=Browser.mainLoop.timingValue;var func=Browser.mainLoop.func;Browser.mainLoop.func=null;setMainLoop(func,0,false,Browser.mainLoop.arg,true);_emscripten_set_main_loop_timing(timingMode,timingValue);Browser.mainLoop.scheduler()},updateStatus:function(){if(Module["setStatus"]){var message=Module["statusMessage"]||"Please wait...";var remaining=Browser.mainLoop.remainingBlockers;var expected=Browser.mainLoop.expectedBlockers;if(remaining){if(remaining<expected){Module["setStatus"](message+" ("+(expected-remaining)+"/"+expected+")")}else{Module["setStatus"](message)}}else{Module["setStatus"]("")}}},runIter:function(func){if(ABORT)return;if(Module["preMainLoop"]){var preRet=Module["preMainLoop"]();if(preRet===false){return}}try{func()}catch(e){if(e instanceof ExitStatus){return}else if(e=="unwind"){return}else{if(e&&typeof e==="object"&&e.stack)err("exception thrown: "+[e,e.stack]);throw e}}if(Module["postMainLoop"])Module["postMainLoop"]()}},isFullscreen:false,pointerLock:false,moduleContextCreatedCallbacks:[],workers:[],init:function(){if(!Module["preloadPlugins"])Module["preloadPlugins"]=[];if(Browser.initted)return;Browser.initted=true;try{new Blob;Browser.hasBlobConstructor=true}catch(e){Browser.hasBlobConstructor=false;console.log("warning: no blob constructor, cannot create blobs with mimetypes")}Browser.BlobBuilder=typeof MozBlobBuilder!="undefined"?MozBlobBuilder:typeof WebKitBlobBuilder!="undefined"?WebKitBlobBuilder:!Browser.hasBlobConstructor?console.log("warning: no BlobBuilder"):null;Browser.URLObject=typeof window!="undefined"?window.URL?window.URL:window.webkitURL:undefined;if(!Module.noImageDecoding&&typeof Browser.URLObject==="undefined"){console.log("warning: Browser does not support creating object URLs. Built-in browser image decoding will not be available.");Module.noImageDecoding=true}var imagePlugin={};imagePlugin["canHandle"]=function imagePlugin_canHandle(name){return!Module.noImageDecoding&&/\.(jpg|jpeg|png|bmp)$/i.test(name)};imagePlugin["handle"]=function imagePlugin_handle(byteArray,name,onload,onerror){var b=null;if(Browser.hasBlobConstructor){try{b=new Blob([byteArray],{type:Browser.getMimetype(name)});if(b.size!==byteArray.length){b=new Blob([new Uint8Array(byteArray).buffer],{type:Browser.getMimetype(name)})}}catch(e){warnOnce("Blob constructor present but fails: "+e+"; falling back to blob builder")}}if(!b){var bb=new Browser.BlobBuilder;bb.append(new Uint8Array(byteArray).buffer);b=bb.getBlob()}var url=Browser.URLObject.createObjectURL(b);var img=new Image;img.onload=function img_onload(){assert(img.complete,"Image "+name+" could not be decoded");var canvas=document.createElement("canvas");canvas.width=img.width;canvas.height=img.height;var ctx=canvas.getContext("2d");ctx.drawImage(img,0,0);Module["preloadedImages"][name]=canvas;Browser.URLObject.revokeObjectURL(url);if(onload)onload(byteArray)};img.onerror=function img_onerror(event){console.log("Image "+url+" could not be decoded");if(onerror)onerror()};img.src=url};Module["preloadPlugins"].push(imagePlugin);var audioPlugin={};audioPlugin["canHandle"]=function audioPlugin_canHandle(name){return!Module.noAudioDecoding&&name.substr(-4)in{".ogg":1,".wav":1,".mp3":1}};audioPlugin["handle"]=function audioPlugin_handle(byteArray,name,onload,onerror){var done=false;function finish(audio){if(done)return;done=true;Module["preloadedAudios"][name]=audio;if(onload)onload(byteArray)}function fail(){if(done)return;done=true;Module["preloadedAudios"][name]=new Audio;if(onerror)onerror()}if(Browser.hasBlobConstructor){try{var b=new Blob([byteArray],{type:Browser.getMimetype(name)})}catch(e){return fail()}var url=Browser.URLObject.createObjectURL(b);var audio=new Audio;audio.addEventListener("canplaythrough",function(){finish(audio)},false);audio.onerror=function audio_onerror(event){if(done)return;console.log("warning: browser could not fully decode audio "+name+", trying slower base64 approach");function encode64(data){var BASE="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var PAD="=";var ret="";var leftchar=0;var leftbits=0;for(var i=0;i<data.length;i++){leftchar=leftchar<<8|data[i];leftbits+=8;while(leftbits>=6){var curr=leftchar>>leftbits-6&63;leftbits-=6;ret+=BASE[curr]}}if(leftbits==2){ret+=BASE[(leftchar&3)<<4];ret+=PAD+PAD}else if(leftbits==4){ret+=BASE[(leftchar&15)<<2];ret+=PAD}return ret}audio.src="data:audio/x-"+name.substr(-3)+";base64,"+encode64(byteArray);finish(audio)};audio.src=url;Browser.safeSetTimeout(function(){finish(audio)},1e4)}else{return fail()}};Module["preloadPlugins"].push(audioPlugin);function pointerLockChange(){Browser.pointerLock=document["pointerLockElement"]===Module["canvas"]||document["mozPointerLockElement"]===Module["canvas"]||document["webkitPointerLockElement"]===Module["canvas"]||document["msPointerLockElement"]===Module["canvas"]}var canvas=Module["canvas"];if(canvas){canvas.requestPointerLock=canvas["requestPointerLock"]||canvas["mozRequestPointerLock"]||canvas["webkitRequestPointerLock"]||canvas["msRequestPointerLock"]||function(){};canvas.exitPointerLock=document["exitPointerLock"]||document["mozExitPointerLock"]||document["webkitExitPointerLock"]||document["msExitPointerLock"]||function(){};canvas.exitPointerLock=canvas.exitPointerLock.bind(document);document.addEventListener("pointerlockchange",pointerLockChange,false);document.addEventListener("mozpointerlockchange",pointerLockChange,false);document.addEventListener("webkitpointerlockchange",pointerLockChange,false);document.addEventListener("mspointerlockchange",pointerLockChange,false);if(Module["elementPointerLock"]){canvas.addEventListener("click",function(ev){if(!Browser.pointerLock&&Module["canvas"].requestPointerLock){Module["canvas"].requestPointerLock();ev.preventDefault()}},false)}}},createContext:function(canvas,useWebGL,setInModule,webGLContextAttributes){if(useWebGL&&Module.ctx&&canvas==Module.canvas)return Module.ctx;var ctx;var contextHandle;if(useWebGL){var contextAttributes={antialias:false,alpha:false,majorVersion:1};if(webGLContextAttributes){for(var attribute in webGLContextAttributes){contextAttributes[attribute]=webGLContextAttributes[attribute]}}if(typeof GL!=="undefined"){contextHandle=GL.createContext(canvas,contextAttributes);if(contextHandle){ctx=GL.getContext(contextHandle).GLctx}}}else{ctx=canvas.getContext("2d")}if(!ctx)return null;if(setInModule){if(!useWebGL)assert(typeof GLctx==="undefined","cannot set in module if GLctx is used, but we are a non-GL context that would replace it");Module.ctx=ctx;if(useWebGL)GL.makeContextCurrent(contextHandle);Module.useWebGL=useWebGL;Browser.moduleContextCreatedCallbacks.forEach(function(callback){callback()});Browser.init()}return ctx},destroyContext:function(canvas,useWebGL,setInModule){},fullscreenHandlersInstalled:false,lockPointer:undefined,resizeCanvas:undefined,requestFullscreen:function(lockPointer,resizeCanvas){Browser.lockPointer=lockPointer;Browser.resizeCanvas=resizeCanvas;if(typeof Browser.lockPointer==="undefined")Browser.lockPointer=true;if(typeof Browser.resizeCanvas==="undefined")Browser.resizeCanvas=false;var canvas=Module["canvas"];function fullscreenChange(){Browser.isFullscreen=false;var canvasContainer=canvas.parentNode;if((document["fullscreenElement"]||document["mozFullScreenElement"]||document["msFullscreenElement"]||document["webkitFullscreenElement"]||document["webkitCurrentFullScreenElement"])===canvasContainer){canvas.exitFullscreen=Browser.exitFullscreen;if(Browser.lockPointer)canvas.requestPointerLock();Browser.isFullscreen=true;if(Browser.resizeCanvas){Browser.setFullscreenCanvasSize()}else{Browser.updateCanvasDimensions(canvas)}}else{canvasContainer.parentNode.insertBefore(canvas,canvasContainer);canvasContainer.parentNode.removeChild(canvasContainer);if(Browser.resizeCanvas){Browser.setWindowedCanvasSize()}else{Browser.updateCanvasDimensions(canvas)}}if(Module["onFullScreen"])Module["onFullScreen"](Browser.isFullscreen);if(Module["onFullscreen"])Module["onFullscreen"](Browser.isFullscreen)}if(!Browser.fullscreenHandlersInstalled){Browser.fullscreenHandlersInstalled=true;document.addEventListener("fullscreenchange",fullscreenChange,false);document.addEventListener("mozfullscreenchange",fullscreenChange,false);document.addEventListener("webkitfullscreenchange",fullscreenChange,false);document.addEventListener("MSFullscreenChange",fullscreenChange,false)}var canvasContainer=document.createElement("div");canvas.parentNode.insertBefore(canvasContainer,canvas);canvasContainer.appendChild(canvas);canvasContainer.requestFullscreen=canvasContainer["requestFullscreen"]||canvasContainer["mozRequestFullScreen"]||canvasContainer["msRequestFullscreen"]||(canvasContainer["webkitRequestFullscreen"]?function(){canvasContainer["webkitRequestFullscreen"](Element["ALLOW_KEYBOARD_INPUT"])}:null)||(canvasContainer["webkitRequestFullScreen"]?function(){canvasContainer["webkitRequestFullScreen"](Element["ALLOW_KEYBOARD_INPUT"])}:null);canvasContainer.requestFullscreen()},exitFullscreen:function(){if(!Browser.isFullscreen){return false}var CFS=document["exitFullscreen"]||document["cancelFullScreen"]||document["mozCancelFullScreen"]||document["msExitFullscreen"]||document["webkitCancelFullScreen"]||function(){};CFS.apply(document,[]);return true},nextRAF:0,fakeRequestAnimationFrame:function(func){var now=Date.now();if(Browser.nextRAF===0){Browser.nextRAF=now+1e3/60}else{while(now+2>=Browser.nextRAF){Browser.nextRAF+=1e3/60}}var delay=Math.max(Browser.nextRAF-now,0);setTimeout(func,delay)},requestAnimationFrame:function(func){if(typeof requestAnimationFrame==="function"){requestAnimationFrame(func);return}var RAF=Browser.fakeRequestAnimationFrame;RAF(func)},safeRequestAnimationFrame:function(func){return Browser.requestAnimationFrame(function(){if(ABORT)return;func()})},safeSetTimeout:function(func,timeout){noExitRuntime=true;return setTimeout(function(){if(ABORT)return;func()},timeout)},getMimetype:function(name){return{"jpg":"image/jpeg","jpeg":"image/jpeg","png":"image/png","bmp":"image/bmp","ogg":"audio/ogg","wav":"audio/wav","mp3":"audio/mpeg"}[name.substr(name.lastIndexOf(".")+1)]},getUserMedia:function(func){if(!window.getUserMedia){window.getUserMedia=navigator["getUserMedia"]||navigator["mozGetUserMedia"]}window.getUserMedia(func)},getMovementX:function(event){return event["movementX"]||event["mozMovementX"]||event["webkitMovementX"]||0},getMovementY:function(event){return event["movementY"]||event["mozMovementY"]||event["webkitMovementY"]||0},getMouseWheelDelta:function(event){var delta=0;switch(event.type){case"DOMMouseScroll":delta=event.detail/3;break;case"mousewheel":delta=event.wheelDelta/120;break;case"wheel":delta=event.deltaY;switch(event.deltaMode){case 0:delta/=100;break;case 1:delta/=3;break;case 2:delta*=80;break;default:throw"unrecognized mouse wheel delta mode: "+event.deltaMode}break;default:throw"unrecognized mouse wheel event: "+event.type}return delta},mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,touches:{},lastTouches:{},calculateMouseEvent:function(event){if(Browser.pointerLock){if(event.type!="mousemove"&&"mozMovementX"in event){Browser.mouseMovementX=Browser.mouseMovementY=0}else{Browser.mouseMovementX=Browser.getMovementX(event);Browser.mouseMovementY=Browser.getMovementY(event)}if(typeof SDL!="undefined"){Browser.mouseX=SDL.mouseX+Browser.mouseMovementX;Browser.mouseY=SDL.mouseY+Browser.mouseMovementY}else{Browser.mouseX+=Browser.mouseMovementX;Browser.mouseY+=Browser.mouseMovementY}}else{var rect=Module["canvas"].getBoundingClientRect();var cw=Module["canvas"].width;var ch=Module["canvas"].height;var scrollX=typeof window.scrollX!=="undefined"?window.scrollX:window.pageXOffset;var scrollY=typeof window.scrollY!=="undefined"?window.scrollY:window.pageYOffset;if(event.type==="touchstart"||event.type==="touchend"||event.type==="touchmove"){var touch=event.touch;if(touch===undefined){return}var adjustedX=touch.pageX-(scrollX+rect.left);var adjustedY=touch.pageY-(scrollY+rect.top);adjustedX=adjustedX*(cw/rect.width);adjustedY=adjustedY*(ch/rect.height);var coords={x:adjustedX,y:adjustedY};if(event.type==="touchstart"){Browser.lastTouches[touch.identifier]=coords;Browser.touches[touch.identifier]=coords}else if(event.type==="touchend"||event.type==="touchmove"){var last=Browser.touches[touch.identifier];if(!last)last=coords;Browser.lastTouches[touch.identifier]=last;Browser.touches[touch.identifier]=coords}return}var x=event.pageX-(scrollX+rect.left);var y=event.pageY-(scrollY+rect.top);x=x*(cw/rect.width);y=y*(ch/rect.height);Browser.mouseMovementX=x-Browser.mouseX;Browser.mouseMovementY=y-Browser.mouseY;Browser.mouseX=x;Browser.mouseY=y}},asyncLoad:function(url,onload,onerror,noRunDep){var dep=!noRunDep?getUniqueRunDependency("al "+url):"";readAsync(url,function(arrayBuffer){assert(arrayBuffer,'Loading data file "'+url+'" failed (no arrayBuffer).');onload(new Uint8Array(arrayBuffer));if(dep)removeRunDependency(dep)},function(event){if(onerror){onerror()}else{throw'Loading data file "'+url+'" failed.'}});if(dep)addRunDependency(dep)},resizeListeners:[],updateResizeListeners:function(){var canvas=Module["canvas"];Browser.resizeListeners.forEach(function(listener){listener(canvas.width,canvas.height)})},setCanvasSize:function(width,height,noUpdates){var canvas=Module["canvas"];Browser.updateCanvasDimensions(canvas,width,height);if(!noUpdates)Browser.updateResizeListeners()},windowedWidth:0,windowedHeight:0,setFullscreenCanvasSize:function(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>2];flags=flags|8388608;HEAP32[SDL.screen>>2]=flags}Browser.updateCanvasDimensions(Module["canvas"]);Browser.updateResizeListeners()},setWindowedCanvasSize:function(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>2];flags=flags&~8388608;HEAP32[SDL.screen>>2]=flags}Browser.updateCanvasDimensions(Module["canvas"]);Browser.updateResizeListeners()},updateCanvasDimensions:function(canvas,wNative,hNative){if(wNative&&hNative){canvas.widthNative=wNative;canvas.heightNative=hNative}else{wNative=canvas.widthNative;hNative=canvas.heightNative}var w=wNative;var h=hNative;if(Module["forcedAspectRatio"]&&Module["forcedAspectRatio"]>0){if(w/h<Module["forcedAspectRatio"]){w=Math.round(h*Module["forcedAspectRatio"])}else{h=Math.round(w/Module["forcedAspectRatio"])}}if((document["fullscreenElement"]||document["mozFullScreenElement"]||document["msFullscreenElement"]||document["webkitFullscreenElement"]||document["webkitCurrentFullScreenElement"])===canvas.parentNode&&typeof screen!="undefined"){var factor=Math.min(screen.width/w,screen.height/h);w=Math.round(w*factor);h=Math.round(h*factor)}if(Browser.resizeCanvas){if(canvas.width!=w)canvas.width=w;if(canvas.height!=h)canvas.height=h;if(typeof canvas.style!="undefined"){canvas.style.removeProperty("width");canvas.style.removeProperty("height")}}else{if(canvas.width!=wNative)canvas.width=wNative;if(canvas.height!=hNative)canvas.height=hNative;if(typeof canvas.style!="undefined"){if(w!=wNative||h!=hNative){canvas.style.setProperty("width",w+"px","important");canvas.style.setProperty("height",h+"px","important")}else{canvas.style.removeProperty("width");canvas.style.removeProperty("height")}}}},wgetRequests:{},nextWgetRequestHandle:0,getNextWgetRequestHandle:function(){var handle=Browser.nextWgetRequestHandle;Browser.nextWgetRequestHandle++;return handle}};function _emscripten_set_main_loop_timing(mode,value){Browser.mainLoop.timingMode=mode;Browser.mainLoop.timingValue=value;if(!Browser.mainLoop.func){return 1}if(mode==0){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setTimeout(){var timeUntilNextTick=Math.max(0,Browser.mainLoop.tickStartTime+value-_emscripten_get_now())|0;setTimeout(Browser.mainLoop.runner,timeUntilNextTick)};Browser.mainLoop.method="timeout"}else if(mode==1){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_rAF(){Browser.requestAnimationFrame(Browser.mainLoop.runner)};Browser.mainLoop.method="rAF"}else if(mode==2){if(typeof setImmediate==="undefined"){var setImmediates=[];var emscriptenMainLoopMessageId="setimmediate";var Browser_setImmediate_messageHandler=function(event){if(event.data===emscriptenMainLoopMessageId||event.data.target===emscriptenMainLoopMessageId){event.stopPropagation();setImmediates.shift()()}};addEventListener("message",Browser_setImmediate_messageHandler,true);setImmediate=function Browser_emulated_setImmediate(func){setImmediates.push(func);if(ENVIRONMENT_IS_WORKER){if(Module["setImmediates"]===undefined)Module["setImmediates"]=[];Module["setImmediates"].push(func);postMessage({target:emscriptenMainLoopMessageId})}else postMessage(emscriptenMainLoopMessageId,"*")}}Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setImmediate(){setImmediate(Browser.mainLoop.runner)};Browser.mainLoop.method="immediate"}return 0}var _emscripten_get_now;if(ENVIRONMENT_IS_NODE){_emscripten_get_now=function(){var t=process["hrtime"]();return t[0]*1e3+t[1]/1e6}}else if(typeof dateNow!=="undefined"){_emscripten_get_now=dateNow}else _emscripten_get_now=function(){return performance.now()};function setMainLoop(browserIterationFunc,fps,simulateInfiniteLoop,arg,noSetTiming){noExitRuntime=true;assert(!Browser.mainLoop.func,"emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters.");Browser.mainLoop.func=browserIterationFunc;Browser.mainLoop.arg=arg;var thisMainLoopId=Browser.mainLoop.currentlyRunningMainloop;Browser.mainLoop.runner=function Browser_mainLoop_runner(){if(ABORT)return;if(Browser.mainLoop.queue.length>0){var start=Date.now();var blocker=Browser.mainLoop.queue.shift();blocker.func(blocker.arg);if(Browser.mainLoop.remainingBlockers){var remaining=Browser.mainLoop.remainingBlockers;var next=remaining%1==0?remaining-1:Math.floor(remaining);if(blocker.counted){Browser.mainLoop.remainingBlockers=next}else{next=next+.5;Browser.mainLoop.remainingBlockers=(8*remaining+next)/9}}console.log('main loop blocker "'+blocker.name+'" took '+(Date.now()-start)+" ms");Browser.mainLoop.updateStatus();if(thisMainLoopId<Browser.mainLoop.currentlyRunningMainloop)return;setTimeout(Browser.mainLoop.runner,0);return}if(thisMainLoopId<Browser.mainLoop.currentlyRunningMainloop)return;Browser.mainLoop.currentFrameNumber=Browser.mainLoop.currentFrameNumber+1|0;if(Browser.mainLoop.timingMode==1&&Browser.mainLoop.timingValue>1&&Browser.mainLoop.currentFrameNumber%Browser.mainLoop.timingValue!=0){Browser.mainLoop.scheduler();return}else if(Browser.mainLoop.timingMode==0){Browser.mainLoop.tickStartTime=_emscripten_get_now()}Browser.mainLoop.runIter(browserIterationFunc);if(thisMainLoopId<Browser.mainLoop.currentlyRunningMainloop)return;if(typeof SDL==="object"&&SDL.audio&&SDL.audio.queueNewAudioData)SDL.audio.queueNewAudioData();Browser.mainLoop.scheduler()};if(!noSetTiming){if(fps&&fps>0)_emscripten_set_main_loop_timing(0,1e3/fps);else _emscripten_set_main_loop_timing(1,1);Browser.mainLoop.scheduler()}if(simulateInfiniteLoop){throw"unwind"}}function _emscripten_set_main_loop(func,fps,simulateInfiniteLoop){var browserIterationFunc=wasmTable.get(func);setMainLoop(browserIterationFunc,fps,simulateInfiniteLoop)}function registerTouchEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.touchEvent)JSEvents.touchEvent=_malloc(1684);target=findEventTarget(target);var touchEventHandlerFunc=function(e){var touches={};var et=e.touches;for(var i=0;i<et.length;++i){var touch=et[i];touches[touch.identifier]=touch}et=e.changedTouches;for(var i=0;i<et.length;++i){var touch=et[i];touch.isChanged=1;touches[touch.identifier]=touch}et=e.targetTouches;for(var i=0;i<et.length;++i){touches[et[i].identifier].onTarget=1}var touchEvent=JSEvents.touchEvent;var idx=touchEvent>>2;HEAP32[idx+1]=e.ctrlKey;HEAP32[idx+2]=e.shiftKey;HEAP32[idx+3]=e.altKey;HEAP32[idx+4]=e.metaKey;idx+=5;var targetRect=getBoundingClientRect(target);var numTouches=0;for(var i in touches){var t=touches[i];HEAP32[idx+0]=t.identifier;HEAP32[idx+1]=t.screenX;HEAP32[idx+2]=t.screenY;HEAP32[idx+3]=t.clientX;HEAP32[idx+4]=t.clientY;HEAP32[idx+5]=t.pageX;HEAP32[idx+6]=t.pageY;HEAP32[idx+7]=t.isChanged;HEAP32[idx+8]=t.onTarget;HEAP32[idx+9]=t.clientX-targetRect.left;HEAP32[idx+10]=t.clientY-targetRect.top;idx+=13;if(++numTouches>31){break}}HEAP32[touchEvent>>2]=numTouches;if(wasmTable.get(callbackfunc)(eventTypeId,touchEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:eventTypeString=="touchstart"||eventTypeString=="touchend",eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:touchEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_touchcancel_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerTouchEventCallback(target,userData,useCapture,callbackfunc,25,"touchcancel",targetThread);return 0}function _emscripten_set_touchend_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerTouchEventCallback(target,userData,useCapture,callbackfunc,23,"touchend",targetThread);return 0}function _emscripten_set_touchmove_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerTouchEventCallback(target,userData,useCapture,callbackfunc,24,"touchmove",targetThread);return 0}function _emscripten_set_touchstart_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerTouchEventCallback(target,userData,useCapture,callbackfunc,22,"touchstart",targetThread);return 0}function _emscripten_thread_sleep(msecs){var start=_emscripten_get_now();while(_emscripten_get_now()-start<msecs){}}function _exit(status){exit(status)}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_read(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doReadv(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var stream=SYSCALLS.getStreamFromFD(fd);var HIGH_OFFSET=4294967296;var offset=offset_high*HIGH_OFFSET+(offset_low>>>0);var DOUBLE_LIMIT=9007199254740992;if(offset<=-DOUBLE_LIMIT||offset>=DOUBLE_LIMIT){return-61}FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doWritev(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _glActiveTexture(x0){GLctx["activeTexture"](x0)}function _glAttachShader(program,shader){GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _glBindAttribLocation(program,index,name){GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))}function _glBindBuffer(target,buffer){GLctx.bindBuffer(target,GL.buffers[buffer])}function _glBindTexture(target,texture){GLctx.bindTexture(target,GL.textures[texture])}function _glBlendFunc(x0,x1){GLctx["blendFunc"](x0,x1)}function _glBufferData(target,size,data,usage){GLctx.bufferData(target,data?HEAPU8.subarray(data,data+size):size,usage)}function _glBufferSubData(target,offset,size,data){GLctx.bufferSubData(target,offset,HEAPU8.subarray(data,data+size))}function _glClear(x0){GLctx["clear"](x0)}function _glClearColor(x0,x1,x2,x3){GLctx["clearColor"](x0,x1,x2,x3)}function _glClearDepthf(x0){GLctx["clearDepth"](x0)}function _glCompileShader(shader){GLctx.compileShader(GL.shaders[shader])}function _glCompressedTexImage2D(target,level,internalFormat,width,height,border,imageSize,data){GLctx["compressedTexImage2D"](target,level,internalFormat,width,height,border,data?HEAPU8.subarray(data,data+imageSize):null)}function _glCreateProgram(){var id=GL.getNewId(GL.programs);var program=GLctx.createProgram();program.name=id;GL.programs[id]=program;return id}function _glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}function _glCullFace(x0){GLctx["cullFace"](x0)}function _glDeleteBuffers(n,buffers){for(var i=0;i<n;i++){var id=HEAP32[buffers+i*4>>2];var buffer=GL.buffers[id];if(!buffer)continue;GLctx.deleteBuffer(buffer);buffer.name=0;GL.buffers[id]=null}}function _glDeleteProgram(id){if(!id)return;var program=GL.programs[id];if(!program){GL.recordError(1281);return}GLctx.deleteProgram(program);program.name=0;GL.programs[id]=null;GL.programInfos[id]=null}function _glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}function _glDeleteTextures(n,textures){for(var i=0;i<n;i++){var id=HEAP32[textures+i*4>>2];var texture=GL.textures[id];if(!texture)continue;GLctx.deleteTexture(texture);texture.name=0;GL.textures[id]=null}}function _glDepthFunc(x0){GLctx["depthFunc"](x0)}function _glDetachShader(program,shader){GLctx.detachShader(GL.programs[program],GL.shaders[shader])}function _glDisable(x0){GLctx["disable"](x0)}function _glDisableVertexAttribArray(index){GLctx.disableVertexAttribArray(index)}function _glDrawArrays(mode,first,count){GLctx.drawArrays(mode,first,count)}function _glDrawElements(mode,count,type,indices){GLctx.drawElements(mode,count,type,indices)}function _glEnable(x0){GLctx["enable"](x0)}function _glEnableVertexAttribArray(index){GLctx.enableVertexAttribArray(index)}function _glFrontFace(x0){GLctx["frontFace"](x0)}function _glGenBuffers(n,buffers){__glGenObject(n,buffers,"createBuffer",GL.buffers)}function _glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures)}function _glGetAttribLocation(program,name){return GLctx.getAttribLocation(GL.programs[program],UTF8ToString(name))}function _glGetFloatv(name_,p){emscriptenWebGLGet(name_,p,2)}function _glGetProgramInfoLog(program,maxLength,length,infoLog){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _glGetProgramiv(program,pname,p){if(!p){GL.recordError(1281);return}if(program>=GL.counter){GL.recordError(1281);return}var ptable=GL.programInfos[program];if(!ptable){GL.recordError(1282);return}if(pname==35716){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";HEAP32[p>>2]=log.length+1}else if(pname==35719){HEAP32[p>>2]=ptable.maxUniformLength}else if(pname==35722){if(ptable.maxAttributeLength==-1){program=GL.programs[program];var numAttribs=GLctx.getProgramParameter(program,35721);ptable.maxAttributeLength=0;for(var i=0;i<numAttribs;++i){var activeAttrib=GLctx.getActiveAttrib(program,i);ptable.maxAttributeLength=Math.max(ptable.maxAttributeLength,activeAttrib.name.length+1)}}HEAP32[p>>2]=ptable.maxAttributeLength}else if(pname==35381){if(ptable.maxUniformBlockNameLength==-1){program=GL.programs[program];var numBlocks=GLctx.getProgramParameter(program,35382);ptable.maxUniformBlockNameLength=0;for(var i=0;i<numBlocks;++i){var activeBlockName=GLctx.getActiveUniformBlockName(program,i);ptable.maxUniformBlockNameLength=Math.max(ptable.maxUniformBlockNameLength,activeBlockName.length+1)}}HEAP32[p>>2]=ptable.maxUniformBlockNameLength}else{HEAP32[p>>2]=GLctx.getProgramParameter(GL.programs[program],pname)}}function _glGetShaderInfoLog(shader,maxLength,length,infoLog){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _glGetShaderiv(shader,pname,p){if(!p){GL.recordError(1281);return}if(pname==35716){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var logLength=log?log.length+1:0;HEAP32[p>>2]=logLength}else if(pname==35720){var source=GLctx.getShaderSource(GL.shaders[shader]);var sourceLength=source?source.length+1:0;HEAP32[p>>2]=sourceLength}else{HEAP32[p>>2]=GLctx.getShaderParameter(GL.shaders[shader],pname)}}function _glGetString(name_){if(GL.stringCache[name_])return GL.stringCache[name_];var ret;switch(name_){case 7939:var exts=GLctx.getSupportedExtensions()||[];exts=exts.concat(exts.map(function(e){return"GL_"+e}));ret=stringToNewUTF8(exts.join(" "));break;case 7936:case 7937:case 37445:case 37446:var s=GLctx.getParameter(name_);if(!s){GL.recordError(1280)}ret=stringToNewUTF8(s);break;case 7938:var glVersion=GLctx.getParameter(7938);{glVersion="OpenGL ES 2.0 ("+glVersion+")"}ret=stringToNewUTF8(glVersion);break;case 35724:var glslVersion=GLctx.getParameter(35724);var ver_re=/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/;var ver_num=glslVersion.match(ver_re);if(ver_num!==null){if(ver_num[1].length==3)ver_num[1]=ver_num[1]+"0";glslVersion="OpenGL ES GLSL ES "+ver_num[1]+" ("+glslVersion+")"}ret=stringToNewUTF8(glslVersion);break;default:GL.recordError(1280);return 0}GL.stringCache[name_]=ret;return ret}function _glGetUniformLocation(program,name){name=UTF8ToString(name);var arrayIndex=0;if(name[name.length-1]=="]"){var leftBrace=name.lastIndexOf("[");arrayIndex=name[leftBrace+1]!="]"?jstoi_q(name.slice(leftBrace+1)):0;name=name.slice(0,leftBrace)}var uniformInfo=GL.programInfos[program]&&GL.programInfos[program].uniforms[name];if(uniformInfo&&arrayIndex>=0&&arrayIndex<uniformInfo[0]){return uniformInfo[1]+arrayIndex}else{return-1}}function _glLinkProgram(program){GLctx.linkProgram(GL.programs[program]);GL.populateUniformTable(program)}function _glPixelStorei(pname,param){if(pname==3317){GL.unpackAlignment=param}GLctx.pixelStorei(pname,param)}function _glReadPixels(x,y,width,height,format,type,pixels){var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);return}GLctx.readPixels(x,y,width,height,format,type,pixelData)}function _glShaderSource(shader,count,string,length){var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}function _glTexImage2D(target,level,internalFormat,width,height,border,format,type,pixels){GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels?emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat):null)}function _glTexParameteri(x0,x1,x2){GLctx["texParameteri"](x0,x1,x2)}function _glUniform1i(location,v0){GLctx.uniform1i(GL.uniforms[location],v0)}function _glUniform4f(location,v0,v1,v2,v3){GLctx.uniform4f(GL.uniforms[location],v0,v1,v2,v3)}function _glUniformMatrix4fv(location,count,transpose,value){if(count<=18){var view=miniTempWebGLFloatBuffers[16*count-1];var heap=HEAPF32;value>>=2;for(var i=0;i<16*count;i+=16){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3];view[i+4]=heap[dst+4];view[i+5]=heap[dst+5];view[i+6]=heap[dst+6];view[i+7]=heap[dst+7];view[i+8]=heap[dst+8];view[i+9]=heap[dst+9];view[i+10]=heap[dst+10];view[i+11]=heap[dst+11];view[i+12]=heap[dst+12];view[i+13]=heap[dst+13];view[i+14]=heap[dst+14];view[i+15]=heap[dst+15]}}else{var view=HEAPF32.subarray(value>>2,value+count*64>>2)}GLctx.uniformMatrix4fv(GL.uniforms[location],!!transpose,view)}function _glUseProgram(program){GLctx.useProgram(GL.programs[program])}function _glVertexAttribPointer(index,size,type,normalized,stride,ptr){GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}function _glViewport(x0,x1,x2,x3){GLctx["viewport"](x0,x1,x2,x3)}function GLFW_Window(id,width,height,title,monitor,share){this.id=id;this.x=0;this.y=0;this.fullscreen=false;this.storedX=0;this.storedY=0;this.width=width;this.height=height;this.storedWidth=width;this.storedHeight=height;this.title=title;this.monitor=monitor;this.share=share;this.attributes=GLFW.hints;this.inputModes={208897:212993,208898:0,208899:0};this.buttons=0;this.keys=new Array;this.domKeys=new Array;this.shouldClose=0;this.title=null;this.windowPosFunc=null;this.windowSizeFunc=null;this.windowCloseFunc=null;this.windowRefreshFunc=null;this.windowFocusFunc=null;this.windowIconifyFunc=null;this.framebufferSizeFunc=null;this.mouseButtonFunc=null;this.cursorPosFunc=null;this.cursorEnterFunc=null;this.scrollFunc=null;this.dropFunc=null;this.keyFunc=null;this.charFunc=null;this.userptr=null}var GLFW={WindowFromId:function(id){if(id<=0||!GLFW.windows)return null;return GLFW.windows[id-1]},joystickFunc:null,errorFunc:null,monitorFunc:null,active:null,windows:null,monitors:null,monitorString:null,versionString:null,initialTime:null,extensions:null,hints:null,defaultHints:{131073:0,131074:0,131075:1,131076:1,131077:1,135169:8,135170:8,135171:8,135172:8,135173:24,135174:8,135175:0,135176:0,135177:0,135178:0,135179:0,135180:0,135181:0,135182:0,135183:0,139265:196609,139266:1,139267:0,139268:0,139269:0,139270:0,139271:0,139272:0},DOMToGLFWKeyCode:function(keycode){switch(keycode){case 32:return 32;case 222:return 39;case 188:return 44;case 173:return 45;case 189:return 45;case 190:return 46;case 191:return 47;case 48:return 48;case 49:return 49;case 50:return 50;case 51:return 51;case 52:return 52;case 53:return 53;case 54:return 54;case 55:return 55;case 56:return 56;case 57:return 57;case 59:return 59;case 61:return 61;case 187:return 61;case 65:return 65;case 66:return 66;case 67:return 67;case 68:return 68;case 69:return 69;case 70:return 70;case 71:return 71;case 72:return 72;case 73:return 73;case 74:return 74;case 75:return 75;case 76:return 76;case 77:return 77;case 78:return 78;case 79:return 79;case 80:return 80;case 81:return 81;case 82:return 82;case 83:return 83;case 84:return 84;case 85:return 85;case 86:return 86;case 87:return 87;case 88:return 88;case 89:return 89;case 90:return 90;case 219:return 91;case 220:return 92;case 221:return 93;case 192:return 94;case 27:return 256;case 13:return 257;case 9:return 258;case 8:return 259;case 45:return 260;case 46:return 261;case 39:return 262;case 37:return 263;case 40:return 264;case 38:return 265;case 33:return 266;case 34:return 267;case 36:return 268;case 35:return 269;case 20:return 280;case 145:return 281;case 144:return 282;case 44:return 283;case 19:return 284;case 112:return 290;case 113:return 291;case 114:return 292;case 115:return 293;case 116:return 294;case 117:return 295;case 118:return 296;case 119:return 297;case 120:return 298;case 121:return 299;case 122:return 300;case 123:return 301;case 124:return 302;case 125:return 303;case 126:return 304;case 127:return 305;case 128:return 306;case 129:return 307;case 130:return 308;case 131:return 309;case 132:return 310;case 133:return 311;case 134:return 312;case 135:return 313;case 136:return 314;case 96:return 320;case 97:return 321;case 98:return 322;case 99:return 323;case 100:return 324;case 101:return 325;case 102:return 326;case 103:return 327;case 104:return 328;case 105:return 329;case 110:return 330;case 111:return 331;case 106:return 332;case 109:return 333;case 107:return 334;case 16:return 340;case 17:return 341;case 18:return 342;case 91:return 343;case 93:return 348;default:return-1}},getModBits:function(win){var mod=0;if(win.keys[340])mod|=1;if(win.keys[341])mod|=2;if(win.keys[342])mod|=4;if(win.keys[343])mod|=8;return mod},onKeyPress:function(event){if(!GLFW.active||!GLFW.active.charFunc)return;if(event.ctrlKey||event.metaKey)return;var charCode=event.charCode;if(charCode==0||charCode>=0&&charCode<=31)return;wasmTable.get(GLFW.active.charFunc)(GLFW.active.id,charCode)},onKeyChanged:function(keyCode,status){if(!GLFW.active)return;var key=GLFW.DOMToGLFWKeyCode(keyCode);if(key==-1)return;var repeat=status&&GLFW.active.keys[key];GLFW.active.keys[key]=status;GLFW.active.domKeys[keyCode]=status;if(!GLFW.active.keyFunc)return;if(repeat)status=2;wasmTable.get(GLFW.active.keyFunc)(GLFW.active.id,key,keyCode,status,GLFW.getModBits(GLFW.active))},onGamepadConnected:function(event){GLFW.refreshJoysticks()},onGamepadDisconnected:function(event){GLFW.refreshJoysticks()},onKeydown:function(event){GLFW.onKeyChanged(event.keyCode,1);if(event.keyCode===8||event.keyCode===9){event.preventDefault()}},onKeyup:function(event){GLFW.onKeyChanged(event.keyCode,0)},onBlur:function(event){if(!GLFW.active)return;for(var i=0;i<GLFW.active.domKeys.length;++i){if(GLFW.active.domKeys[i]){GLFW.onKeyChanged(i,0)}}},onMousemove:function(event){if(!GLFW.active)return;Browser.calculateMouseEvent(event);if(event.target!=Module["canvas"]||!GLFW.active.cursorPosFunc)return;wasmTable.get(GLFW.active.cursorPosFunc)(GLFW.active.id,Browser.mouseX,Browser.mouseY)},DOMToGLFWMouseButton:function(event){var eventButton=event["button"];if(eventButton>0){if(eventButton==1){eventButton=2}else{eventButton=1}}return eventButton},onMouseenter:function(event){if(!GLFW.active)return;if(event.target!=Module["canvas"]||!GLFW.active.cursorEnterFunc)return;wasmTable.get(GLFW.active.cursorEnterFunc)(GLFW.active.id,1)},onMouseleave:function(event){if(!GLFW.active)return;if(event.target!=Module["canvas"]||!GLFW.active.cursorEnterFunc)return;wasmTable.get(GLFW.active.cursorEnterFunc)(GLFW.active.id,0)},onMouseButtonChanged:function(event,status){if(!GLFW.active)return;Browser.calculateMouseEvent(event);if(event.target!=Module["canvas"])return;var eventButton=GLFW.DOMToGLFWMouseButton(event);if(status==1){GLFW.active.buttons|=1<<eventButton;try{event.target.setCapture()}catch(e){}}else{GLFW.active.buttons&=~(1<<eventButton)}if(!GLFW.active.mouseButtonFunc)return;wasmTable.get(GLFW.active.mouseButtonFunc)(GLFW.active.id,eventButton,status,GLFW.getModBits(GLFW.active))},onMouseButtonDown:function(event){if(!GLFW.active)return;GLFW.onMouseButtonChanged(event,1)},onMouseButtonUp:function(event){if(!GLFW.active)return;GLFW.onMouseButtonChanged(event,0)},onMouseWheel:function(event){var delta=-Browser.getMouseWheelDelta(event);delta=delta==0?0:delta>0?Math.max(delta,1):Math.min(delta,-1);GLFW.wheelPos+=delta;if(!GLFW.active||!GLFW.active.scrollFunc||event.target!=Module["canvas"])return;var sx=0;var sy=0;if(event.type=="mousewheel"){sx=event.wheelDeltaX;sy=event.wheelDeltaY}else{sx=event.deltaX;sy=event.deltaY}wasmTable.get(GLFW.active.scrollFunc)(GLFW.active.id,sx,sy);event.preventDefault()},onCanvasResize:function(width,height){if(!GLFW.active)return;var resizeNeeded=true;if(document["fullscreen"]||document["fullScreen"]||document["mozFullScreen"]||document["webkitIsFullScreen"]){GLFW.active.storedX=GLFW.active.x;GLFW.active.storedY=GLFW.active.y;GLFW.active.storedWidth=GLFW.active.width;GLFW.active.storedHeight=GLFW.active.height;GLFW.active.x=GLFW.active.y=0;GLFW.active.width=screen.width;GLFW.active.height=screen.height;GLFW.active.fullscreen=true}else if(GLFW.active.fullscreen==true){GLFW.active.x=GLFW.active.storedX;GLFW.active.y=GLFW.active.storedY;GLFW.active.width=GLFW.active.storedWidth;GLFW.active.height=GLFW.active.storedHeight;GLFW.active.fullscreen=false}else if(GLFW.active.width!=width||GLFW.active.height!=height){GLFW.active.width=width;GLFW.active.height=height}else{resizeNeeded=false}if(resizeNeeded){Browser.setCanvasSize(GLFW.active.width,GLFW.active.height,true);GLFW.onWindowSizeChanged();GLFW.onFramebufferSizeChanged()}},onWindowSizeChanged:function(){if(!GLFW.active)return;if(!GLFW.active.windowSizeFunc)return;wasmTable.get(GLFW.active.windowSizeFunc)(GLFW.active.id,GLFW.active.width,GLFW.active.height)},onFramebufferSizeChanged:function(){if(!GLFW.active)return;if(!GLFW.active.framebufferSizeFunc)return;wasmTable.get(GLFW.active.framebufferSizeFunc)(GLFW.active.id,GLFW.active.width,GLFW.active.height)},getTime:function(){return _emscripten_get_now()/1e3},setWindowTitle:function(winid,title){var win=GLFW.WindowFromId(winid);if(!win)return;win.title=UTF8ToString(title);if(GLFW.active.id==win.id){document.title=win.title}},setJoystickCallback:function(cbfun){GLFW.joystickFunc=cbfun;GLFW.refreshJoysticks()},joys:{},lastGamepadState:null,lastGamepadStateFrame:null,refreshJoysticks:function(){if(Browser.mainLoop.currentFrameNumber!==GLFW.lastGamepadStateFrame||!Browser.mainLoop.currentFrameNumber){GLFW.lastGamepadState=navigator.getGamepads?navigator.getGamepads():navigator.webkitGetGamepads?navigator.webkitGetGamepads:null;GLFW.lastGamepadStateFrame=Browser.mainLoop.currentFrameNumber;for(var joy=0;joy<GLFW.lastGamepadState.length;++joy){var gamepad=GLFW.lastGamepadState[joy];if(gamepad){if(!GLFW.joys[joy]){console.log("glfw joystick connected:",joy);GLFW.joys[joy]={id:allocate(intArrayFromString(gamepad.id),ALLOC_NORMAL),buttonsCount:gamepad.buttons.length,axesCount:gamepad.axes.length,buttons:allocate(new Array(gamepad.buttons.length),ALLOC_NORMAL),axes:allocate(new Array(gamepad.axes.length*4),ALLOC_NORMAL)};if(GLFW.joystickFunc){wasmTable.get(GLFW.joystickFunc)(joy,262145)}}var data=GLFW.joys[joy];for(var i=0;i<gamepad.buttons.length;++i){setValue(data.buttons+i,gamepad.buttons[i].pressed,"i8")}for(var i=0;i<gamepad.axes.length;++i){setValue(data.axes+i*4,gamepad.axes[i],"float")}}else{if(GLFW.joys[joy]){console.log("glfw joystick disconnected",joy);if(GLFW.joystickFunc){wasmTable.get(GLFW.joystickFunc)(joy,262146)}_free(GLFW.joys[joy].id);_free(GLFW.joys[joy].buttons);_free(GLFW.joys[joy].axes);delete GLFW.joys[joy]}}}}},setKeyCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.keyFunc;win.keyFunc=cbfun;return prevcbfun},setCharCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.charFunc;win.charFunc=cbfun;return prevcbfun},setMouseButtonCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.mouseButtonFunc;win.mouseButtonFunc=cbfun;return prevcbfun},setCursorPosCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.cursorPosFunc;win.cursorPosFunc=cbfun;return prevcbfun},setScrollCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.scrollFunc;win.scrollFunc=cbfun;return prevcbfun},setDropCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.dropFunc;win.dropFunc=cbfun;return prevcbfun},onDrop:function(event){if(!GLFW.active||!GLFW.active.dropFunc)return;if(!event.dataTransfer||!event.dataTransfer.files||event.dataTransfer.files.length==0)return;event.preventDefault();var filenames=allocate(new Array(event.dataTransfer.files.length*4),ALLOC_NORMAL);var filenamesArray=[];var count=event.dataTransfer.files.length;var written=0;var drop_dir=".glfw_dropped_files";FS.createPath("/",drop_dir);function save(file){var path="/"+drop_dir+"/"+file.name.replace(/\//g,"_");var reader=new FileReader;reader.onloadend=function(e){if(reader.readyState!=2){++written;console.log("failed to read dropped file: "+file.name+": "+reader.error);return}var data=e.target.result;FS.writeFile(path,new Uint8Array(data));if(++written===count){wasmTable.get(GLFW.active.dropFunc)(GLFW.active.id,count,filenames);for(var i=0;i<filenamesArray.length;++i){_free(filenamesArray[i])}_free(filenames)}};reader.readAsArrayBuffer(file);var filename=allocate(intArrayFromString(path),ALLOC_NORMAL);filenamesArray.push(filename);setValue(filenames+i*4,filename,"i8*")}for(var i=0;i<count;++i){save(event.dataTransfer.files[i])}return false},onDragover:function(event){if(!GLFW.active||!GLFW.active.dropFunc)return;event.preventDefault();return false},setWindowSizeCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowSizeFunc;win.windowSizeFunc=cbfun;return prevcbfun},setWindowCloseCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowCloseFunc;win.windowCloseFunc=cbfun;return prevcbfun},setWindowRefreshCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowRefreshFunc;win.windowRefreshFunc=cbfun;return prevcbfun},onClickRequestPointerLock:function(e){if(!Browser.pointerLock&&Module["canvas"].requestPointerLock){Module["canvas"].requestPointerLock();e.preventDefault()}},setInputMode:function(winid,mode,value){var win=GLFW.WindowFromId(winid);if(!win)return;switch(mode){case 208897:{switch(value){case 212993:{win.inputModes[mode]=value;Module["canvas"].removeEventListener("click",GLFW.onClickRequestPointerLock,true);Module["canvas"].exitPointerLock();break}case 212994:{console.log("glfwSetInputMode called with GLFW_CURSOR_HIDDEN value not implemented.");break}case 212995:{win.inputModes[mode]=value;Module["canvas"].addEventListener("click",GLFW.onClickRequestPointerLock,true);Module["canvas"].requestPointerLock();break}default:{console.log("glfwSetInputMode called with unknown value parameter value: "+value+".");break}}break}case 208898:{console.log("glfwSetInputMode called with GLFW_STICKY_KEYS mode not implemented.");break}case 208899:{console.log("glfwSetInputMode called with GLFW_STICKY_MOUSE_BUTTONS mode not implemented.");break}default:{console.log("glfwSetInputMode called with unknown mode parameter value: "+mode+".");break}}},getKey:function(winid,key){var win=GLFW.WindowFromId(winid);if(!win)return 0;return win.keys[key]},getMouseButton:function(winid,button){var win=GLFW.WindowFromId(winid);if(!win)return 0;return(win.buttons&1<<button)>0},getCursorPos:function(winid,x,y){setValue(x,Browser.mouseX,"double");setValue(y,Browser.mouseY,"double")},getMousePos:function(winid,x,y){setValue(x,Browser.mouseX,"i32");setValue(y,Browser.mouseY,"i32")},setCursorPos:function(winid,x,y){},getWindowPos:function(winid,x,y){var wx=0;var wy=0;var win=GLFW.WindowFromId(winid);if(win){wx=win.x;wy=win.y}if(x){setValue(x,wx,"i32")}if(y){setValue(y,wy,"i32")}},setWindowPos:function(winid,x,y){var win=GLFW.WindowFromId(winid);if(!win)return;win.x=x;win.y=y},getWindowSize:function(winid,width,height){var ww=0;var wh=0;var win=GLFW.WindowFromId(winid);if(win){ww=win.width;wh=win.height}if(width){setValue(width,ww,"i32")}if(height){setValue(height,wh,"i32")}},setWindowSize:function(winid,width,height){var win=GLFW.WindowFromId(winid);if(!win)return;if(GLFW.active.id==win.id){if(width==screen.width&&height==screen.height){Browser.requestFullscreen()}else{Browser.exitFullscreen();Browser.setCanvasSize(width,height);win.width=width;win.height=height}}if(!win.windowSizeFunc)return;wasmTable.get(win.windowSizeFunc)(win.id,width,height)},createWindow:function(width,height,title,monitor,share){var i,id;for(i=0;i<GLFW.windows.length&&GLFW.windows[i]!==null;i++){}if(i>0)throw"glfwCreateWindow only supports one window at time currently";id=i+1;if(width<=0||height<=0)return 0;if(monitor){Browser.requestFullscreen()}else{Browser.setCanvasSize(width,height)}for(i=0;i<GLFW.windows.length&&GLFW.windows[i]==null;i++){}var useWebGL=GLFW.hints[139265]>0;if(i==GLFW.windows.length){if(useWebGL){var contextAttributes={antialias:GLFW.hints[135181]>1,depth:GLFW.hints[135173]>0,stencil:GLFW.hints[135174]>0,alpha:GLFW.hints[135172]>0};Module.ctx=Browser.createContext(Module["canvas"],true,true,contextAttributes)}else{Browser.init()}}if(!Module.ctx&&useWebGL)return 0;var win=new GLFW_Window(id,width,height,title,monitor,share);if(id-1==GLFW.windows.length){GLFW.windows.push(win)}else{GLFW.windows[id-1]=win}GLFW.active=win;return win.id},destroyWindow:function(winid){var win=GLFW.WindowFromId(winid);if(!win)return;if(win.windowCloseFunc)wasmTable.get(win.windowCloseFunc)(win.id);GLFW.windows[win.id-1]=null;if(GLFW.active.id==win.id)GLFW.active=null;for(var i=0;i<GLFW.windows.length;i++)if(GLFW.windows[i]!==null)return;Module.ctx=Browser.destroyContext(Module["canvas"],true,true)},swapBuffers:function(winid){},GLFW2ParamToGLFW3Param:function(param){var table={196609:0,196610:0,196611:0,196612:0,196613:0,196614:0,131073:0,131074:0,131075:0,131076:0,131077:135169,131078:135170,131079:135171,131080:135172,131081:135173,131082:135174,131083:135183,131084:135175,131085:135176,131086:135177,131087:135178,131088:135179,131089:135180,131090:0,131091:135181,131092:139266,131093:139267,131094:139270,131095:139271,131096:139272};return table[param]}};function _glfwCreateWindow(width,height,title,monitor,share){return GLFW.createWindow(width,height,title,monitor,share)}function _glfwDefaultWindowHints(){GLFW.hints=GLFW.defaultHints}function _glfwDestroyWindow(winid){return GLFW.destroyWindow(winid)}function _glfwGetPrimaryMonitor(){return 1}function _glfwGetTime(){return GLFW.getTime()-GLFW.initialTime}function _glfwGetVideoModes(monitor,count){setValue(count,0,"i32");return 0}function _glfwInit(){if(GLFW.windows)return 1;GLFW.initialTime=GLFW.getTime();GLFW.hints=GLFW.defaultHints;GLFW.windows=new Array;GLFW.active=null;window.addEventListener("gamepadconnected",GLFW.onGamepadConnected,true);window.addEventListener("gamepaddisconnected",GLFW.onGamepadDisconnected,true);window.addEventListener("keydown",GLFW.onKeydown,true);window.addEventListener("keypress",GLFW.onKeyPress,true);window.addEventListener("keyup",GLFW.onKeyup,true);window.addEventListener("blur",GLFW.onBlur,true);Module["canvas"].addEventListener("touchmove",GLFW.onMousemove,true);Module["canvas"].addEventListener("touchstart",GLFW.onMouseButtonDown,true);Module["canvas"].addEventListener("touchcancel",GLFW.onMouseButtonUp,true);Module["canvas"].addEventListener("touchend",GLFW.onMouseButtonUp,true);Module["canvas"].addEventListener("mousemove",GLFW.onMousemove,true);Module["canvas"].addEventListener("mousedown",GLFW.onMouseButtonDown,true);Module["canvas"].addEventListener("mouseup",GLFW.onMouseButtonUp,true);Module["canvas"].addEventListener("wheel",GLFW.onMouseWheel,true);Module["canvas"].addEventListener("mousewheel",GLFW.onMouseWheel,true);Module["canvas"].addEventListener("mouseenter",GLFW.onMouseenter,true);Module["canvas"].addEventListener("mouseleave",GLFW.onMouseleave,true);Module["canvas"].addEventListener("drop",GLFW.onDrop,true);Module["canvas"].addEventListener("dragover",GLFW.onDragover,true);Browser.resizeListeners.push(function(width,height){GLFW.onCanvasResize(width,height)});return 1}function _glfwMakeContextCurrent(winid){}function _glfwSetCharCallback(winid,cbfun){return GLFW.setCharCallback(winid,cbfun)}function _glfwSetCursorEnterCallback(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.cursorEnterFunc;win.cursorEnterFunc=cbfun;return prevcbfun}function _glfwSetCursorPosCallback(winid,cbfun){return GLFW.setCursorPosCallback(winid,cbfun)}function _glfwSetDropCallback(winid,cbfun){return GLFW.setDropCallback(winid,cbfun)}function _glfwSetErrorCallback(cbfun){var prevcbfun=GLFW.errorFunc;GLFW.errorFunc=cbfun;return prevcbfun}function _glfwSetKeyCallback(winid,cbfun){return GLFW.setKeyCallback(winid,cbfun)}function _glfwSetMouseButtonCallback(winid,cbfun){return GLFW.setMouseButtonCallback(winid,cbfun)}function _glfwSetScrollCallback(winid,cbfun){return GLFW.setScrollCallback(winid,cbfun)}function _glfwSetWindowFocusCallback(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowFocusFunc;win.windowFocusFunc=cbfun;return prevcbfun}function _glfwSetWindowIconifyCallback(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowIconifyFunc;win.windowIconifyFunc=cbfun;return prevcbfun}function _glfwSetWindowShouldClose(winid,value){var win=GLFW.WindowFromId(winid);if(!win)return;win.shouldClose=value}function _glfwSetWindowSizeCallback(winid,cbfun){return GLFW.setWindowSizeCallback(winid,cbfun)}function _glfwSwapBuffers(winid){GLFW.swapBuffers(winid)}function _glfwSwapInterval(interval){interval=Math.abs(interval);if(interval==0)_emscripten_set_main_loop_timing(0,0);else _emscripten_set_main_loop_timing(1,interval)}function _glfwTerminate(){window.removeEventListener("gamepadconnected",GLFW.onGamepadConnected,true);window.removeEventListener("gamepaddisconnected",GLFW.onGamepadDisconnected,true);window.removeEventListener("keydown",GLFW.onKeydown,true);window.removeEventListener("keypress",GLFW.onKeyPress,true);window.removeEventListener("keyup",GLFW.onKeyup,true);window.removeEventListener("blur",GLFW.onBlur,true);Module["canvas"].removeEventListener("touchmove",GLFW.onMousemove,true);Module["canvas"].removeEventListener("touchstart",GLFW.onMouseButtonDown,true);Module["canvas"].removeEventListener("touchcancel",GLFW.onMouseButtonUp,true);Module["canvas"].removeEventListener("touchend",GLFW.onMouseButtonUp,true);Module["canvas"].removeEventListener("mousemove",GLFW.onMousemove,true);Module["canvas"].removeEventListener("mousedown",GLFW.onMouseButtonDown,true);Module["canvas"].removeEventListener("mouseup",GLFW.onMouseButtonUp,true);Module["canvas"].removeEventListener("wheel",GLFW.onMouseWheel,true);Module["canvas"].removeEventListener("mousewheel",GLFW.onMouseWheel,true);Module["canvas"].removeEventListener("mouseenter",GLFW.onMouseenter,true);Module["canvas"].removeEventListener("mouseleave",GLFW.onMouseleave,true);Module["canvas"].removeEventListener("drop",GLFW.onDrop,true);Module["canvas"].removeEventListener("dragover",GLFW.onDragover,true);Module["canvas"].width=Module["canvas"].height=1;GLFW.windows=null;GLFW.active=null}function _glfwWindowHint(target,hint){GLFW.hints[target]=hint}function _time(ptr){var ret=Date.now()/1e3|0;if(ptr){HEAP32[ptr>>2]=ret}return ret}var FSNode=function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev};var readMode=292|73;var writeMode=146;Object.defineProperties(FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(val){val?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===writeMode},set:function(val){val?this.mode|=writeMode:this.mode&=~writeMode}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}});FS.FSNode=FSNode;FS.staticInit();var GLctx;for(var i=0;i<32;++i)tempFixedLengthArray.push(new Array(i));var miniTempWebGLFloatBuffersStorage=new Float32Array(288);for(var i=0;i<288;++i){miniTempWebGLFloatBuffers[i]=miniTempWebGLFloatBuffersStorage.subarray(0,i+1)}var __miniTempWebGLIntBuffersStorage=new Int32Array(288);for(var i=0;i<288;++i){__miniTempWebGLIntBuffers[i]=__miniTempWebGLIntBuffersStorage.subarray(0,i+1)}Module["requestFullscreen"]=function Module_requestFullscreen(lockPointer,resizeCanvas){Browser.requestFullscreen(lockPointer,resizeCanvas)};Module["requestAnimationFrame"]=function Module_requestAnimationFrame(func){Browser.requestAnimationFrame(func)};Module["setCanvasSize"]=function Module_setCanvasSize(width,height,noUpdates){Browser.setCanvasSize(width,height,noUpdates)};Module["pauseMainLoop"]=function Module_pauseMainLoop(){Browser.mainLoop.pause()};Module["resumeMainLoop"]=function Module_resumeMainLoop(){Browser.mainLoop.resume()};Module["getUserMedia"]=function Module_getUserMedia(){Browser.getUserMedia()};Module["createContext"]=function Module_createContext(canvas,useWebGL,setInModule,webGLContextAttributes){return Browser.createContext(canvas,useWebGL,setInModule,webGLContextAttributes)};function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var asmLibraryArg={"n":___assert_fail,"F":___sys_fcntl64,"Sa":___sys_ioctl,"Ta":___sys_open,"za":_emscripten_exit_pointerlock,"Z":_emscripten_get_element_css_size,"U":_emscripten_get_gamepad_status,"V":_emscripten_get_num_gamepads,"Hd":_emscripten_glActiveTexture,"Gd":_emscripten_glAttachShader,"N":_emscripten_glBeginQueryEXT,"Fd":_emscripten_glBindAttribLocation,"Ed":_emscripten_glBindBuffer,"Dd":_emscripten_glBindFramebuffer,"Cd":_emscripten_glBindRenderbuffer,"Bd":_emscripten_glBindTexture,"Pd":_emscripten_glBindVertexArrayOES,"zd":_emscripten_glBlendColor,"yd":_emscripten_glBlendEquation,"xd":_emscripten_glBlendEquationSeparate,"wd":_emscripten_glBlendFunc,"vd":_emscripten_glBlendFuncSeparate,"ud":_emscripten_glBufferData,"td":_emscripten_glBufferSubData,"sd":_emscripten_glCheckFramebufferStatus,"rd":_emscripten_glClear,"qd":_emscripten_glClearColor,"od":_emscripten_glClearDepthf,"nd":_emscripten_glClearStencil,"md":_emscripten_glColorMask,"ld":_emscripten_glCompileShader,"kd":_emscripten_glCompressedTexImage2D,"jd":_emscripten_glCompressedTexSubImage2D,"id":_emscripten_glCopyTexImage2D,"hd":_emscripten_glCopyTexSubImage2D,"gd":_emscripten_glCreateProgram,"fd":_emscripten_glCreateShader,"ed":_emscripten_glCullFace,"dd":_emscripten_glDeleteBuffers,"cd":_emscripten_glDeleteFramebuffers,"bd":_emscripten_glDeleteProgram,"P":_emscripten_glDeleteQueriesEXT,"ad":_emscripten_glDeleteRenderbuffers,"$c":_emscripten_glDeleteShader,"_c":_emscripten_glDeleteTextures,"Od":_emscripten_glDeleteVertexArraysOES,"Zc":_emscripten_glDepthFunc,"Yc":_emscripten_glDepthMask,"Xc":_emscripten_glDepthRangef,"Wc":_emscripten_glDetachShader,"Vc":_emscripten_glDisable,"Uc":_emscripten_glDisableVertexAttribArray,"Tc":_emscripten_glDrawArrays,"Kd":_emscripten_glDrawArraysInstancedANGLE,"Ld":_emscripten_glDrawBuffersWEBGL,"Sc":_emscripten_glDrawElements,"Jd":_emscripten_glDrawElementsInstancedANGLE,"Rc":_emscripten_glEnable,"Qc":_emscripten_glEnableVertexAttribArray,"M":_emscripten_glEndQueryEXT,"Pc":_emscripten_glFinish,"Oc":_emscripten_glFlush,"Nc":_emscripten_glFramebufferRenderbuffer,"Mc":_emscripten_glFramebufferTexture2D,"Lc":_emscripten_glFrontFace,"Kc":_emscripten_glGenBuffers,"Ic":_emscripten_glGenFramebuffers,"Q":_emscripten_glGenQueriesEXT,"Hc":_emscripten_glGenRenderbuffers,"Gc":_emscripten_glGenTextures,"Nd":_emscripten_glGenVertexArraysOES,"Jc":_emscripten_glGenerateMipmap,"Fc":_emscripten_glGetActiveAttrib,"Ec":_emscripten_glGetActiveUniform,"Dc":_emscripten_glGetAttachedShaders,"Bc":_emscripten_glGetAttribLocation,"Ac":_emscripten_glGetBooleanv,"zc":_emscripten_glGetBufferParameteriv,"yc":_emscripten_glGetError,"xc":_emscripten_glGetFloatv,"wc":_emscripten_glGetFramebufferAttachmentParameteriv,"vc":_emscripten_glGetIntegerv,"tc":_emscripten_glGetProgramInfoLog,"uc":_emscripten_glGetProgramiv,"Rd":_emscripten_glGetQueryObjecti64vEXT,"Td":_emscripten_glGetQueryObjectivEXT,"Qd":_emscripten_glGetQueryObjectui64vEXT,"Sd":_emscripten_glGetQueryObjectuivEXT,"Ud":_emscripten_glGetQueryivEXT,"sc":_emscripten_glGetRenderbufferParameteriv,"qc":_emscripten_glGetShaderInfoLog,"pc":_emscripten_glGetShaderPrecisionFormat,"oc":_emscripten_glGetShaderSource,"rc":_emscripten_glGetShaderiv,"nc":_emscripten_glGetString,"mc":_emscripten_glGetTexParameterfv,"lc":_emscripten_glGetTexParameteriv,"ic":_emscripten_glGetUniformLocation,"kc":_emscripten_glGetUniformfv,"jc":_emscripten_glGetUniformiv,"fc":_emscripten_glGetVertexAttribPointerv,"hc":_emscripten_glGetVertexAttribfv,"gc":_emscripten_glGetVertexAttribiv,"ec":_emscripten_glHint,"dc":_emscripten_glIsBuffer,"cc":_emscripten_glIsEnabled,"bc":_emscripten_glIsFramebuffer,"ac":_emscripten_glIsProgram,"O":_emscripten_glIsQueryEXT,"$b":_emscripten_glIsRenderbuffer,"_b":_emscripten_glIsShader,"Zb":_emscripten_glIsTexture,"Md":_emscripten_glIsVertexArrayOES,"Yb":_emscripten_glLineWidth,"Xb":_emscripten_glLinkProgram,"Wb":_emscripten_glPixelStorei,"Vb":_emscripten_glPolygonOffset,"L":_emscripten_glQueryCounterEXT,"Ub":_emscripten_glReadPixels,"Tb":_emscripten_glReleaseShaderCompiler,"Sb":_emscripten_glRenderbufferStorage,"Rb":_emscripten_glSampleCoverage,"Qb":_emscripten_glScissor,"Ob":_emscripten_glShaderBinary,"Nb":_emscripten_glShaderSource,"Mb":_emscripten_glStencilFunc,"Lb":_emscripten_glStencilFuncSeparate,"Kb":_emscripten_glStencilMask,"Jb":_emscripten_glStencilMaskSeparate,"Ib":_emscripten_glStencilOp,"Hb":_emscripten_glStencilOpSeparate,"Gb":_emscripten_glTexImage2D,"Fb":_emscripten_glTexParameterf,"Db":_emscripten_glTexParameterfv,"Cb":_emscripten_glTexParameteri,"Bb":_emscripten_glTexParameteriv,"Ab":_emscripten_glTexSubImage2D,"zb":_emscripten_glUniform1f,"yb":_emscripten_glUniform1fv,"xb":_emscripten_glUniform1i,"wb":_emscripten_glUniform1iv,"vb":_emscripten_glUniform2f,"ub":_emscripten_glUniform2fv,"sb":_emscripten_glUniform2i,"rb":_emscripten_glUniform2iv,"qb":_emscripten_glUniform3f,"pb":_emscripten_glUniform3fv,"ob":_emscripten_glUniform3i,"nb":_emscripten_glUniform3iv,"mb":_emscripten_glUniform4f,"lb":_emscripten_glUniform4fv,"kb":_emscripten_glUniform4i,"jb":_emscripten_glUniform4iv,"hb":_emscripten_glUniformMatrix2fv,"gb":_emscripten_glUniformMatrix3fv,"fb":_emscripten_glUniformMatrix4fv,"eb":_emscripten_glUseProgram,"db":_emscripten_glValidateProgram,"cb":_emscripten_glVertexAttrib1f,"bb":_emscripten_glVertexAttrib1fv,"ab":_emscripten_glVertexAttrib2f,"$a":_emscripten_glVertexAttrib2fv,"_a":_emscripten_glVertexAttrib3f,"Ya":_emscripten_glVertexAttrib3fv,"Xa":_emscripten_glVertexAttrib4f,"Wa":_emscripten_glVertexAttrib4fv,"Id":_emscripten_glVertexAttribDivisorANGLE,"Va":_emscripten_glVertexAttribPointer,"Ua":_emscripten_glViewport,"Na":_emscripten_memcpy_big,"Oa":_emscripten_resize_heap,"t":_emscripten_run_script,"W":_emscripten_sample_gamepad_data,"wa":_emscripten_set_click_callback_on_thread,"ya":_emscripten_set_fullscreenchange_callback_on_thread,"ra":_emscripten_set_gamepadconnected_callback_on_thread,"qa":_emscripten_set_gamepaddisconnected_callback_on_thread,"xa":_emscripten_set_keydown_callback_on_thread,"Wd":_emscripten_set_main_loop,"sa":_emscripten_set_touchcancel_callback_on_thread,"ua":_emscripten_set_touchend_callback_on_thread,"ta":_emscripten_set_touchmove_callback_on_thread,"va":_emscripten_set_touchstart_callback_on_thread,"Pa":_emscripten_thread_sleep,"R":_exit,"G":_fd_close,"Ra":_fd_read,"Ma":_fd_seek,"E":_fd_write,"K":_glActiveTexture,"x":_glAttachShader,"f":_glBindAttribLocation,"a":_glBindBuffer,"g":_glBindTexture,"Eb":_glBlendFunc,"k":_glBufferData,"r":_glBufferSubData,"H":_glClear,"I":_glClearColor,"Za":_glClearDepthf,"Fa":_glCompileShader,"Ja":_glCompressedTexImage2D,"Da":_glCreateProgram,"Ha":_glCreateShader,"tb":_glCullFace,"i":_glDeleteBuffers,"A":_glDeleteProgram,"B":_glDeleteShader,"D":_glDeleteTextures,"Pb":_glDepthFunc,"C":_glDetachShader,"J":_glDisable,"j":_glDisableVertexAttribArray,"Ad":_glDrawArrays,"pd":_glDrawElements,"s":_glEnable,"d":_glEnableVertexAttribArray,"ib":_glFrontFace,"l":_glGenBuffers,"La":_glGenTextures,"q":_glGetAttribLocation,"Cc":_glGetFloatv,"Aa":_glGetProgramInfoLog,"z":_glGetProgramiv,"Ea":_glGetShaderInfoLog,"y":_glGetShaderiv,"h":_glGetString,"p":_glGetUniformLocation,"Ba":_glLinkProgram,"Qa":_glPixelStorei,"Ia":_glReadPixels,"Ga":_glShaderSource,"Ka":_glTexImage2D,"m":_glTexParameteri,"T":_glUniform1i,"aa":_glUniform4f,"Ca":_glUniformMatrix4fv,"o":_glUseProgram,"e":_glVertexAttribPointer,"Vd":_glViewport,"v":_glfwCreateWindow,"na":_glfwDefaultWindowHints,"Y":_glfwDestroyWindow,"w":_glfwGetPrimaryMonitor,"c":_glfwGetTime,"ma":_glfwGetVideoModes,"oa":_glfwInit,"ba":_glfwMakeContextCurrent,"ga":_glfwSetCharCallback,"ca":_glfwSetCursorEnterCallback,"ea":_glfwSetCursorPosCallback,"ia":_glfwSetDropCallback,"pa":_glfwSetErrorCallback,"ha":_glfwSetKeyCallback,"fa":_glfwSetMouseButtonCallback,"da":_glfwSetScrollCallback,"ja":_glfwSetWindowFocusCallback,"ka":_glfwSetWindowIconifyCallback,"S":_glfwSetWindowShouldClose,"la":_glfwSetWindowSizeCallback,"X":_glfwSwapBuffers,"$":_glfwSwapInterval,"u":_glfwTerminate,"b":_glfwWindowHint,"_":_time};var asm=createWasm();var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["Yd"]).apply(null,arguments)};var _main=Module["_main"]=function(){return(_main=Module["_main"]=Module["asm"]["Zd"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["$d"]).apply(null,arguments)};var _free=Module["_free"]=function(){return(_free=Module["_free"]=Module["asm"]["ae"]).apply(null,arguments)};var ___errno_location=Module["___errno_location"]=function(){return(___errno_location=Module["___errno_location"]=Module["asm"]["be"]).apply(null,arguments)};var stackAlloc=Module["stackAlloc"]=function(){return(stackAlloc=Module["stackAlloc"]=Module["asm"]["ce"]).apply(null,arguments)};var calledRun;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}var calledMain=false;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args){var entryFunction=Module["_main"];var argc=0;var argv=0;try{var ret=entryFunction(argc,argv);exit(ret,true)}catch(e){if(e instanceof ExitStatus){return}else if(e=="unwind"){noExitRuntime=true;return}else{var toLog=e;if(e&&typeof e==="object"&&e.stack){toLog=[e,e.stack]}err("exception thrown: "+toLog);quit_(1,e)}}finally{calledMain=true}}function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(shouldRunNow)callMain(args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}Module["run"]=run;function exit(status,implicit){if(implicit&&noExitRuntime&&status===0){return}if(noExitRuntime){}else{EXITSTATUS=status;exitRuntime();if(Module["onExit"])Module["onExit"](status);ABORT=true}quit_(status,new ExitStatus(status))}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}var shouldRunNow=true;if(Module["noInitialRun"])shouldRunNow=false;run();
diff --git a/examples/web/models/models_geometric_shapes.wasm b/examples/web/models/models_geometric_shapes.wasm
deleted file mode 100644
index 782513b..0000000
--- a/examples/web/models/models_geometric_shapes.wasm
+++ /dev/null
Binary files differ
diff --git a/examples/web/models/models_heightmap.c b/examples/web/models/models_heightmap.c
deleted file mode 100644
index c048961..0000000
--- a/examples/web/models/models_heightmap.c
+++ /dev/null
@@ -1,112 +0,0 @@
-/*******************************************************************************************
-*
-* raylib [models] example - Heightmap loading and drawing (adapted for HTML5 platform)
-*
-* This example has been created using raylib 1.3 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
-*
-* Copyright (c) 2017 Ramon Santamaria (@raysan5)
-*
-********************************************************************************************/
-
-#include "raylib.h"
-
-#if defined(PLATFORM_WEB)
- #include <emscripten/emscripten.h>
-#endif
-
-//----------------------------------------------------------------------------------
-// Global Variables Definition
-//----------------------------------------------------------------------------------
-const int screenWidth = 800;
-const int screenHeight = 450;
-
-// Define our custom camera to look into our 3d world
-Camera camera = {{ 18.0f, 16.0f, 18.0f }, { 0.0f, 0.0f, 0.0f }, { 0.0f, 1.0f, 0.0f }, 45.0f };
-
-Texture2D texture = { 0 };
-Model model = { 0 };
-
-Vector3 mapPosition = { -8.0f, 0.0f, -8.0f }; // Set model position (depends on model scaling!)
-
-//----------------------------------------------------------------------------------
-// Module Functions Declaration
-//----------------------------------------------------------------------------------
-void UpdateDrawFrame(void); // Update and Draw one frame
-
-//----------------------------------------------------------------------------------
-// Program Main Entry Point
-//----------------------------------------------------------------------------------
-int main(void)
-{
- // Initialization
- //--------------------------------------------------------------------------------------
- InitWindow(screenWidth, screenHeight, "raylib [models] example - heightmap loading and drawing");
-
- Image image = LoadImage("resources/heightmap.png"); // Load heightmap image (RAM)
- texture = LoadTextureFromImage(image); // Convert image to texture (VRAM)
-
- Mesh mesh = GenMeshHeightmap(image, (Vector3){ 16, 8, 16 }); // Generate heightmap mesh (RAM and VRAM)
- model = LoadModelFromMesh(mesh); // Load model from generated mesh
- model.materials[0].maps[MATERIAL_MAP_DIFFUSE].texture = texture; // Set map diffuse texture
-
- UnloadImage(image); // Unload heightmap image from RAM, already uploaded to VRAM
-
- SetCameraMode(camera, CAMERA_ORBITAL); // Set an orbital camera mode
-
-#if defined(PLATFORM_WEB)
- emscripten_set_main_loop(UpdateDrawFrame, 60, 1);
-#else
- SetTargetFPS(60); // Set our game to run at 60 frames-per-second
- //--------------------------------------------------------------------------------------
-
- // Main game loop
- while (!WindowShouldClose()) // Detect window close button or ESC key
- {
- UpdateDrawFrame();
- }
-#endif
-
- // De-Initialization
- //--------------------------------------------------------------------------------------
- UnloadTexture(texture); // Unload texture
- UnloadModel(model); // Unload model
-
- CloseWindow(); // Close window and OpenGL context
- //--------------------------------------------------------------------------------------
-
- return 0;
-}
-
-//----------------------------------------------------------------------------------
-// Module Functions Definition
-//----------------------------------------------------------------------------------
-void UpdateDrawFrame(void)
-{
- // Update
- //----------------------------------------------------------------------------------
- UpdateCamera(&camera); // Update internal camera and our camera
- //----------------------------------------------------------------------------------
-
- // Draw
- //----------------------------------------------------------------------------------
- BeginDrawing();
-
- ClearBackground(RAYWHITE);
-
- BeginMode3D(camera);
-
- DrawModel(model, mapPosition, 1.0f, RED);
-
- DrawGrid(20, 1.0f);
-
- EndMode3D();
-
- DrawTexture(texture, screenWidth - texture.width - 20, 20, WHITE);
- DrawRectangleLines(screenWidth - texture.width - 20, 20, texture.width, texture.height, GREEN);
-
- DrawFPS(10, 10);
-
- EndDrawing();
- //----------------------------------------------------------------------------------
-} \ No newline at end of file
diff --git a/examples/web/models/models_heightmap.data b/examples/web/models/models_heightmap.data
deleted file mode 100644
index 474db87..0000000
--- a/examples/web/models/models_heightmap.data
+++ /dev/null
Binary files differ
diff --git a/examples/web/models/models_heightmap.html b/examples/web/models/models_heightmap.html
deleted file mode 100644
index 724e0b1..0000000
--- a/examples/web/models/models_heightmap.html
+++ /dev/null
@@ -1 +0,0 @@
-<!doctypehtml><html lang=en-us><head><meta charset=utf-8><meta content="text/html; charset=utf-8"http-equiv=Content-Type><title>raylib HTML5 GAME</title><meta content="raylib HTML5 GAME"name=title><meta content="New HTML5 videogame, developed using raylib videogames library"name=description><meta content="raylib, games, html5, programming, C, C++, library, learn, videogames"name=keywords><meta content="width=device-width"name=viewport><meta content="raylib HTML5 GAME"property=og:title><meta content=image/png property=og:image:type><meta content=https://www.raylib.com/common/img/raylib_logo.png property=og:image><meta content=raylib.com property=og:site_name><meta content=https://www.raylib.com/games.html property=og:url><meta content="New HTML5 videogame, developed using raylib videogames library"property=og:description><meta content=summary name=twitter:card><meta content=@raysan5 name=twitter:site><meta content="raylib HTML5 GAME"name=twitter:title><meta content=https://www.raylib.com/common/raylib_logo.png name=twitter:image><meta content=https://www.raylib.com/games.html name=twitter:url><meta content="New HTML5 videogame, developed using raylib videogames library"name=twitter:description><link href=https://www.raylib.com/favicon.ico rel="shortcut icon"><style>body{font-family:arial;margin:0;padding:none}#header{width:100%;height:80px;background-color:#888}#logo{width:64px;height:64px;float:left;position:relative;margin:10px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAAlC+aJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjExR/NCNwAAA7JJREFUaEPtk0FyWzEMQ+37X7fZhxX4YY3AD1OKF1nkzTRlSBCCLeVBnvl/AUdaELOunPno1kts1kixdtEZKVs+xIxebBkZsVknn/L5nFGDLR8T4zVC9fX19S/+tTFijrYK4jUjbPUtqBHpnEE6PkZD7jQZV8n5Recw1XQKciZuPaEtR6UjNs5ENVGMsBVqpPtER0ZMOhpyp8m4YL4OjD9yxsyZxnQycfMJETNSzsRE1+dihK3YMiJmpHTW3xpmXPC6BXlCHfqnBlsjY5hxf/6EVEOM2BTEi0fYCX4ONSI6Kq3Blg/prIOMq2CsRur4KQ0x64SdjOufEDEdHZGOhmz5RDHCVqhRuQ86YsVskbc+GXchLiHnFyYH+UigQDVGnImbT8hwFkgLg2qiM8JO6Ylx1FNLa3DmYwqCTsZd4BPqGJG7MwKzpeiWKTKxXkLMVE3MSOmsdwxLH6Rd/wCCLSNDx6djeKfJuArGeoYamRHpaEjnCBYZVy8hZqo2GI36qPjsiOiMsBXGcev4Mx9TLGTchbgEjN/uz6jGrBvDjg+LTNx8Qp2CbG2xMKgmOiPslJ4Yxx+eSnSkzlosZNwFPiHl7FRTkLNRJm4+IeVM0ymIH42wE/wcKalQI4MRl4EW3p6VcRWMua8F6WjIlqZDxvVPiHQ6CjVbYkV9ohhhp/Rk1wiYgpyJ78i4CsZbjkb8Qx+ihvzu3RPaKogZkY6GlEeMsKdPSOFIC8VoOusg44L5c+T8ouOoGhWbdWJ8tMi4egkxo4hoh2yNTGf3iIyr5Lyic4bRENXo+lvDjAt4C1Hk/OKtUaAj0+n4dMSZ2D+hrYJsaYh2SClG2jV9kJKKzhlGQ1SsW299Mq6C8dYZHTExo8fzieI5ivipYnYy7nwJqGKmOYyRwfiUBXITfh5qSHRGWEkfqJqURgvsdHyWYv7Ko8DnYYegk3EB00cxprdrJRzFd7YQzawu8L1GMTYS/KpPaAFTkIn1EmJmspJSs5xBzSyGhlkBmlxfNFiP5mw4wlbMh4F5Ddxp5jNINBdCEz9zPOC1zD7Q0HBdmXndwv0TMtydEdzlWJT4VZ8Qt9Qn4/onxMIwa5ZYGJU5yufBiCjwE50AGjLCVuS8Yt4H7OgZLKK5EKOsLviEWJSL/+0uMi7gLUSBseYwqEbXvSHCec1CJvZPyHCmYQffaBBfOTCGHM2aEbZi1+gO1XTWVXMnzrhAn5DSOZVsiQlHnSITKzGj6DeTcZWc/3oy7h9//PF4PL4BlvsWrb6RE+oAAAAASUVORK5CYII=)}.emscripten{padding-right:0;margin-left:auto;margin-right:auto;display:block}div.emscripten{text-align:center}div.emscripten_border{border:1px solid #000}canvas.emscripten{border:0 none;background:#000;width:100%}.spinner{height:30px;width:30px;margin:0;margin-top:20px;margin-left:20px;display:inline-block;vertical-align:top;-webkit-animation:rotation .8s linear infinite;-moz-animation:rotation .8s linear infinite;-o-animation:rotation .8s linear infinite;animation:rotation .8s linear infinite;border-left:5px solid #000;border-right:5px solid #000;border-bottom:5px solid #000;border-top:5px solid red;border-radius:100%;background-color:#f5f5f5}@-webkit-keyframes rotation{from{-webkit-transform:rotate(0)}to{-webkit-transform:rotate(360deg)}}@-moz-keyframes rotation{from{-moz-transform:rotate(0)}to{-moz-transform:rotate(360deg)}}@-o-keyframes rotation{from{-o-transform:rotate(0)}to{-o-transform:rotate(360deg)}}@keyframes rotation{from{transform:rotate(0)}to{transform:rotate(360deg)}}#status{display:inline-block;vertical-align:top;margin-top:30px;margin-left:20px;font-weight:700;color:#282828}#progress{height:0;width:0}#controls{display:inline-block;float:right;vertical-align:top;margin-top:15px;margin-right:20px}#output{width:100%;height:140px;margin:0 auto;margin-top:10px;display:block;background-color:#000;color:#25ae26;font-family:'Lucida Console',Monaco,monospace;outline:0}input[type=button]{background-color:#d3d3d3;border:4px solid #a9a9a9;color:#000;text-decoration:none;cursor:pointer;width:140px;height:50px}input[type=button]:hover{background-color:#f5f5f5ff;border-color:#000}</style></head><body><div id=header><a href=https://www.raylib.com id=logo></a><div class=spinner id=spinner></div><div class=emscripten id=status>Downloading...</div><span id=controls><span><input onclick=Module.requestFullscreen(!1,!1) type=button value="🖵 FULLSCREEN"></span><span><input onclick=toggleAudio() type=button value="🔇 SUSPEND"id=btn-audio></span></span><div class=emscripten><progress hidden id=progress max=100 value=0></progress></div></div><div class=emscripten_border><canvas class=emscripten id=canvas oncontextmenu=event.preventDefault() tabindex=-1></canvas></div><textarea id=output rows=8></textarea><script src=https://cdn.jsdelivr.net/gh/eligrey/FileSaver.js/dist/FileSaver.min.js></script><script>function saveFileFromMEMFSToDisk(e,a){var t,i=/^((?!chrome|android).)*safari/i.test(navigator.userAgent),o=FS.readFile(e);t=i?new Blob([o.buffer],{type:"application/octet-stream"}):new Blob([o.buffer],{type:"application/octet-binary"}),saveAs(t,a)}</script><script>var statusElement=document.querySelector("#status"),progressElement=document.querySelector("#progress"),spinnerElement=document.querySelector("#spinner"),Module={preRun:[],postRun:[],print:function(){var e=document.querySelector("#output");return e&&(e.value=""),function(t){arguments.length>1&&(t=Array.prototype.slice.call(arguments).join(" ")),console.log(t),e&&(e.value+=t+"\n",e.scrollTop=e.scrollHeight)}}(),printErr:function(e){arguments.length>1&&(e=Array.prototype.slice.call(arguments).join(" ")),console.error(e)},canvas:function(){var e=document.querySelector("#canvas");return e.addEventListener("webglcontextlost",(function(e){alert("WebGL context lost. You will need to reload the page."),e.preventDefault()}),!1),e}(),setStatus:function(e){if(Module.setStatus.last||(Module.setStatus.last={time:Date.now(),text:""}),e!==Module.setStatus.last.text){var t=e.match(/([^(]+)\((\d+(\.\d+)?)\/(\d+)\)/),n=Date.now();t&&n-Module.setStatus.last.time<30||(Module.setStatus.last.time=n,Module.setStatus.last.text=e,t?(e=t[1],progressElement.value=100*parseInt(t[2]),progressElement.max=100*parseInt(t[4]),progressElement.hidden=!0,spinnerElement.hidden=!1):(progressElement.value=null,progressElement.max=null,progressElement.hidden=!0,e||(spinnerElement.style.display="none")),statusElement.innerHTML=e)}},totalDependencies:0,monitorRunDependencies:function(e){this.totalDependencies=Math.max(this.totalDependencies,e),Module.setStatus(e?"Preparing... ("+(this.totalDependencies-e)+"/"+this.totalDependencies+")":"All downloads complete.")}};Module.setStatus("Downloading..."),window.onerror=function(){Module.setStatus("Exception thrown, see JavaScript console"),spinnerElement.style.display="none",Module.setStatus=function(e){e&&Module.printErr("[post-exception status] "+e)}}</script><script>var audioBtn=document.querySelector("#btn-audio");const audioContexList=[];function toggleAudio(){var t=!1;audioContexList.forEach(e=>{"suspended"==e.state?(e.resume(),t=!0):"running"==e.state&&e.suspend()}),audioBtn.value=t?"🔇 SUSPEND":"🔈 RESUME"}self.AudioContext=new Proxy(self.AudioContext,{construct(t,e){const n=new t(...e);return audioContexList.push(n),"suspended"==n.state&&(audioBtn.value="🔈 RESUME"),n}})</script><script src=models_heightmap.js async></script></body></html> \ No newline at end of file
diff --git a/examples/web/models/models_heightmap.js b/examples/web/models/models_heightmap.js
deleted file mode 100644
index 20ecde1..0000000
--- a/examples/web/models/models_heightmap.js
+++ /dev/null
@@ -1 +0,0 @@
-var Module=typeof Module!=="undefined"?Module:{};if(!Module.expectedDataFileDownloads){Module.expectedDataFileDownloads=0}Module.expectedDataFileDownloads++;(function(){var loadPackage=function(metadata){var PACKAGE_PATH;if(typeof window==="object"){PACKAGE_PATH=window["encodeURIComponent"](window.location.pathname.toString().substring(0,window.location.pathname.toString().lastIndexOf("/"))+"/")}else if(typeof location!=="undefined"){PACKAGE_PATH=encodeURIComponent(location.pathname.toString().substring(0,location.pathname.toString().lastIndexOf("/"))+"/")}else{throw"using preloaded data can only be done on a web page or in a web worker"}var PACKAGE_NAME="models/models_heightmap.data";var REMOTE_PACKAGE_BASE="models_heightmap.data";if(typeof Module["locateFilePackage"]==="function"&&!Module["locateFile"]){Module["locateFile"]=Module["locateFilePackage"];err("warning: you defined Module.locateFilePackage, that has been renamed to Module.locateFile (using your locateFilePackage for now)")}var REMOTE_PACKAGE_NAME=Module["locateFile"]?Module["locateFile"](REMOTE_PACKAGE_BASE,""):REMOTE_PACKAGE_BASE;var REMOTE_PACKAGE_SIZE=metadata["remote_package_size"];var PACKAGE_UUID=metadata["package_uuid"];function fetchRemotePackage(packageName,packageSize,callback,errback){var xhr=new XMLHttpRequest;xhr.open("GET",packageName,true);xhr.responseType="arraybuffer";xhr.onprogress=function(event){var url=packageName;var size=packageSize;if(event.total)size=event.total;if(event.loaded){if(!xhr.addedTotal){xhr.addedTotal=true;if(!Module.dataFileDownloads)Module.dataFileDownloads={};Module.dataFileDownloads[url]={loaded:event.loaded,total:size}}else{Module.dataFileDownloads[url].loaded=event.loaded}var total=0;var loaded=0;var num=0;for(var download in Module.dataFileDownloads){var data=Module.dataFileDownloads[download];total+=data.total;loaded+=data.loaded;num++}total=Math.ceil(total*Module.expectedDataFileDownloads/num);if(Module["setStatus"])Module["setStatus"]("Downloading data... ("+loaded+"/"+total+")")}else if(!Module.dataFileDownloads){if(Module["setStatus"])Module["setStatus"]("Downloading data...")}};xhr.onerror=function(event){throw new Error("NetworkError for: "+packageName)};xhr.onload=function(event){if(xhr.status==200||xhr.status==304||xhr.status==206||xhr.status==0&&xhr.response){var packageData=xhr.response;callback(packageData)}else{throw new Error(xhr.statusText+" : "+xhr.responseURL)}};xhr.send(null)}function handleError(error){console.error("package error:",error)}var fetchedCallback=null;var fetched=Module["getPreloadedPackage"]?Module["getPreloadedPackage"](REMOTE_PACKAGE_NAME,REMOTE_PACKAGE_SIZE):null;if(!fetched)fetchRemotePackage(REMOTE_PACKAGE_NAME,REMOTE_PACKAGE_SIZE,function(data){if(fetchedCallback){fetchedCallback(data);fetchedCallback=null}else{fetched=data}},handleError);function runWithFS(){function assert(check,msg){if(!check)throw msg+(new Error).stack}Module["FS_createPath"]("/","resources",true,true);function DataRequest(start,end,audio){this.start=start;this.end=end;this.audio=audio}DataRequest.prototype={requests:{},open:function(mode,name){this.name=name;this.requests[name]=this;Module["addRunDependency"]("fp "+this.name)},send:function(){},onload:function(){var byteArray=this.byteArray.subarray(this.start,this.end);this.finish(byteArray)},finish:function(byteArray){var that=this;Module["FS_createDataFile"](this.name,null,byteArray,true,true,true);Module["removeRunDependency"]("fp "+that.name);this.requests[this.name]=null}};var files=metadata["files"];for(var i=0;i<files.length;++i){new DataRequest(files[i]["start"],files[i]["end"],files[i]["audio"]).open("GET",files[i]["filename"])}function processPackageData(arrayBuffer){assert(arrayBuffer,"Loading data file failed.");assert(arrayBuffer instanceof ArrayBuffer,"bad input to processPackageData");var byteArray=new Uint8Array(arrayBuffer);DataRequest.prototype.byteArray=byteArray;var files=metadata["files"];for(var i=0;i<files.length;++i){DataRequest.prototype.requests[files[i].filename].onload()}Module["removeRunDependency"]("datafile_models/models_heightmap.data")}Module["addRunDependency"]("datafile_models/models_heightmap.data");if(!Module.preloadResults)Module.preloadResults={};Module.preloadResults[PACKAGE_NAME]={fromCache:false};if(fetched){processPackageData(fetched);fetched=null}else{fetchedCallback=processPackageData}}if(Module["calledRun"]){runWithFS()}else{if(!Module["preRun"])Module["preRun"]=[];Module["preRun"].push(runWithFS)}};loadPackage({"files":[{"filename":"/resources/heightmap.png","start":0,"end":10883,"audio":0}],"remote_package_size":10883,"package_uuid":"b9346f95-b741-4d1a-b708-ed3ef209117e"})})();var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram="./this.program";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window==="object";ENVIRONMENT_IS_WORKER=typeof importScripts==="function";ENVIRONMENT_IS_NODE=typeof process==="object"&&typeof process.versions==="object"&&typeof process.versions.node==="string";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require("path").dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require("fs");if(!nodePath)nodePath=require("path");filename=nodePath["normalize"](filename);return nodeFS["readFileSync"](filename,binary?null:"utf8")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);if(typeof module!=="undefined"){module["exports"]=Module}process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",abort);quit_=function(status){process["exit"](status)};Module["inspect"]=function(){return"[Emscripten Module object]"}}else if(ENVIRONMENT_IS_SHELL){if(typeof read!="undefined"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer==="function"){return new Uint8Array(readbuffer(f))}data=read(f,"binary");assert(typeof data==="object");return data};if(typeof scriptArgs!="undefined"){arguments_=scriptArgs}else if(typeof arguments!="undefined"){arguments_=arguments}if(typeof quit==="function"){quit_=function(status){quit(status)}}if(typeof print!=="undefined"){if(typeof console==="undefined")console={};console.log=print;console.warn=console.error=typeof printErr!=="undefined"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!=="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf("/")+1)}else{scriptDirectory=""}{read_=function(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=function(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var STACK_ALIGN=16;function alignMemory(size,factor){if(!factor)factor=STACK_ALIGN;return Math.ceil(size/factor)*factor}function warnOnce(text){if(!warnOnce.shown)warnOnce.shown={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;err(text)}}var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime=Module["noExitRuntime"]||true;if(typeof WebAssembly!=="object"){abort("no native wasm support detected")}function setValue(ptr,value,type,noSafe){type=type||"i8";if(type.charAt(type.length-1)==="*")type="i32";switch(type){case"i1":HEAP8[ptr>>0]=value;break;case"i8":HEAP8[ptr>>0]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":tempI64=[value>>>0,(tempDouble=value,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;default:abort("invalid type for setValue: "+type)}}var wasmMemory;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}var ALLOC_NORMAL=0;var ALLOC_STACK=1;function allocate(slab,allocator){var ret;if(allocator==ALLOC_STACK){ret=stackAlloc(slab.length)}else{ret=_malloc(slab.length)}if(slab.subarray||slab.slice){HEAPU8.set(slab,ret)}else{HEAPU8.set(new Uint8Array(slab),ret)}return ret}var UTF8Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heap,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heap[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str="";while(idx<endPtr){var u0=heap[idx++];if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heap[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heap[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u0=(u0&7)<<18|u1<<12|u2<<6|heap[idx++]&63}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||16777216;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;__ATINIT__.push({func:function(){___wasm_call_ctors()}});function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){FS.ignorePermissions=false;callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}what+="";err(what);ABORT=true;EXITSTATUS=1;what="abort("+what+"). Build with -s ASSERTIONS=1 for more info.";var e=new WebAssembly.RuntimeError(what);throw e}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix="file://";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile="models_heightmap.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}else{throw"both async and sync fetching of the wasm failed"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch==="function"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={"a":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;wasmMemory=Module["asm"]["_d"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module["asm"]["be"];removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiatedSource(output){receiveInstance(output["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming==="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch==="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync();return{}}var tempDouble;var tempI64;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback(Module);continue}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){wasmTable.get(func)()}else{wasmTable.get(func)(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}function ___assert_fail(condition,filename,line,func){abort("Assertion failed: "+UTF8ToString(condition)+", at: "+[filename?UTF8ToString(filename):"unknown filename",line,func?UTF8ToString(func):"unknown function"])}function setErrNo(value){HEAP32[___errno_location()>>2]=value;return value}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path==="/")return"/";path=PATH.normalize(path);path=path.replace(/\/$/,"");var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}};function getRandomDevice(){if(typeof crypto==="object"&&typeof crypto["getRandomValues"]==="function"){var randomBuffer=new Uint8Array(1);return function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]}}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");return function(){return crypto_module["randomBytes"](1)[0]}}catch(e){}}return function(){abort("randomDevice")}}var PATH_FS={resolve:function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!=="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=path.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(function(p){return!!p}),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:function(from,to){from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start<arr.length;start++){if(arr[start]!=="")break}var end=arr.length-1;for(;end>=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i<length;i++){if(fromParts[i]!==toParts[i]){samePartsLength=i;break}}var outputParts=[];for(var i=samePartsLength;i<fromParts.length;i++){outputParts.push("..")}outputParts=outputParts.concat(toParts.slice(samePartsLength));return outputParts.join("/")}};var TTY={ttys:[],init:function(){},shutdown:function(){},register:function(dev,ops){TTY.ttys[dev]={input:[],output:[],ops:ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open:function(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close:function(stream){stream.tty.ops.flush(stream.tty)},flush:function(stream){stream.tty.ops.flush(stream.tty)},read:function(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i<length;i++){var result;try{result=stream.tty.ops.get_char(stream.tty)}catch(e){throw new FS.ErrnoError(29)}if(result===undefined&&bytesRead===0){throw new FS.ErrnoError(6)}if(result===null||result===undefined)break;bytesRead++;buffer[offset+i]=result}if(bytesRead){stream.node.timestamp=Date.now()}return bytesRead},write:function(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.put_char){throw new FS.ErrnoError(60)}try{for(var i=0;i<length;i++){stream.tty.ops.put_char(stream.tty,buffer[offset+i])}}catch(e){throw new FS.ErrnoError(29)}if(length){stream.node.timestamp=Date.now()}return i}},default_tty_ops:{get_char:function(tty){if(!tty.input.length){var result=null;if(ENVIRONMENT_IS_NODE){var BUFSIZE=256;var buf=Buffer.alloc?Buffer.alloc(BUFSIZE):new Buffer(BUFSIZE);var bytesRead=0;try{bytesRead=nodeFS.readSync(process.stdin.fd,buf,0,BUFSIZE,null)}catch(e){if(e.toString().indexOf("EOF")!=-1)bytesRead=0;else throw e}if(bytesRead>0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function mmapAlloc(size){var alignedSize=alignMemory(size,16384);var ptr=_malloc(alignedSize);while(size<alignedSize)HEAP8[ptr+size++]=0;return ptr}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray:function(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage:function(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity<CAPACITY_DOUBLING_MAX?2:1.125)>>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage:function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr:function(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr:function(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp;old_node.parent=new_dir},unlink:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir:function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i<size;i++)buffer[offset+i]=contents[position+i]}return size},write:function(stream,buffer,offset,length,position,canOwn){if(!length)return 0;var node=stream.node;node.timestamp=Date.now();if(buffer.subarray&&(!node.contents||node.contents.subarray)){if(canOwn){node.contents=buffer.subarray(offset,offset+length);node.usedBytes=length;return length}else if(node.usedBytes===0&&position===0){node.contents=buffer.slice(offset,offset+length);node.usedBytes=length;return length}else if(position+length<=node.usedBytes){node.contents.set(buffer.subarray(offset,offset+length),position);return length}}MEMFS.expandFileStorage(node,position+length);if(node.contents.subarray&&buffer.subarray){node.contents.set(buffer.subarray(offset,offset+length),position)}else{for(var i=0;i<length;i++){node.contents[position+i]=buffer[offset+i]}}node.usedBytes=Math.max(node.usedBytes,position+length);return length},llseek:function(stream,offset,whence){var position=offset;if(whence===1){position+=stream.position}else if(whence===2){if(FS.isFile(stream.node.mode)){position+=stream.node.usedBytes}}if(position<0){throw new FS.ErrnoError(28)}return position},allocate:function(stream,offset,length){MEMFS.expandFileStorage(stream.node,offset+length);stream.node.usedBytes=Math.max(stream.node.usedBytes,offset+length)},mmap:function(stream,address,length,position,prot,flags){if(address!==0){throw new FS.ErrnoError(28)}if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}var ptr;var allocated;var contents=stream.node.contents;if(!(flags&2)&&contents.buffer===buffer){allocated=false;ptr=contents.byteOffset}else{if(position>0||position+length<contents.length){if(contents.subarray){contents=contents.subarray(position,position+length)}else{contents=Array.prototype.slice.call(contents,position,position+length)}}allocated=true;ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}HEAP8.set(contents,ptr)}return{ptr:ptr,allocated:allocated}},msync:function(stream,buffer,offset,length,mmapFlags){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}if(mmapFlags&2){return 0}var bytesWritten=MEMFS.stream_ops.write(stream,buffer,0,length,offset,false);return 0}}};var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,trackingDelegate:{},tracking:{openFlags:{READ:1,WRITE:2}},ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath:function(path,opts){path=PATH_FS.resolve(FS.cwd(),path);opts=opts||{};if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};for(var key in defaults){if(opts[key]===undefined){opts[key]=defaults[key]}}if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),false);var current=FS.root;var current_path="/";for(var i=0;i<parts.length;i++){var islast=i===parts.length-1;if(islast&&opts.parent){break}current=FS.lookupNode(current,parts[i]);current_path=PATH.join2(current_path,parts[i]);if(FS.isMountpoint(current)){if(!islast||islast&&opts.follow_mount){current=current.mounted.root}}if(!islast||opts.follow){var count=0;while(FS.isLink(current.mode)){var link=FS.readlink(current_path);current_path=PATH_FS.resolve(PATH.dirname(current_path),link);var lookup=FS.lookupPath(current_path,{recurse_count:opts.recurse_count});current=lookup.node;if(count++>40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath:function(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?mount+"/"+path:mount+path}path=path?node.name+"/"+path:node.name;node=node.parent}},hashName:function(parentid,name){var hash=0;for(var i=0;i<name.length;i++){hash=(hash<<5)-hash+name.charCodeAt(i)|0}return(parentid+hash>>>0)%FS.nameTable.length},hashAddNode:function(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode:function(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode:function(parent,name){var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode:function(parent,name,mode,rdev){var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:function(node){FS.hashRemoveNode(node)},isRoot:function(node){return node===node.parent},isMountpoint:function(node){return!!node.mounted},isFile:function(mode){return(mode&61440)===32768},isDir:function(mode){return(mode&61440)===16384},isLink:function(mode){return(mode&61440)===40960},isChrdev:function(mode){return(mode&61440)===8192},isBlkdev:function(mode){return(mode&61440)===24576},isFIFO:function(mode){return(mode&61440)===4096},isSocket:function(mode){return(mode&49152)===49152},flagModes:{"r":0,"r+":2,"w":577,"w+":578,"a":1089,"a+":1090},modeStringToFlags:function(str){var flags=FS.flagModes[str];if(typeof flags==="undefined"){throw new Error("Unknown file open mode: "+str)}return flags},flagsToPermissionString:function(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions:function(node,perms){if(FS.ignorePermissions){return 0}if(perms.indexOf("r")!==-1&&!(node.mode&292)){return 2}else if(perms.indexOf("w")!==-1&&!(node.mode&146)){return 2}else if(perms.indexOf("x")!==-1&&!(node.mode&73)){return 2}return 0},mayLookup:function(dir){var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate:function(dir,name){try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete:function(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen:function(node,flags){if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd:function(fd_start,fd_end){fd_start=fd_start||0;fd_end=fd_end||FS.MAX_OPEN_FDS;for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:function(fd){return FS.streams[fd]},createStream:function(stream,fd_start,fd_end){if(!FS.FSStream){FS.FSStream=function(){};FS.FSStream.prototype={object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}}}}var newStream=new FS.FSStream;for(var p in stream){newStream[p]=stream[p]}stream=newStream;var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:function(fd){FS.streams[fd]=null},chrdev_stream_ops:{open:function(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}},llseek:function(){throw new FS.ErrnoError(70)}},major:function(dev){return dev>>8},minor:function(dev){return dev&255},makedev:function(ma,mi){return ma<<8|mi},registerDevice:function(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:function(dev){return FS.devices[dev]},getMounts:function(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts},syncfs:function(populate,callback){if(typeof populate==="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err("warning: "+FS.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work")}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(function(mount){if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount:function(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount:function(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(function(hash){var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.indexOf(current.mount)!==-1){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup:function(parent,name){return parent.node_ops.lookup(parent,name)},mknod:function(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create:function(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:function(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree:function(path,mode){var dirs=path.split("/");var d="";for(var i=0;i<dirs.length;++i){if(!dirs[i])continue;d+="/"+dirs[i];try{FS.mkdir(d,mode)}catch(e){if(e.errno!=20)throw e}}},mkdev:function(path,mode,dev){if(typeof dev==="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:function(oldpath,newpath){if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:function(old_path,new_path){var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}try{if(FS.trackingDelegate["willMovePath"]){FS.trackingDelegate["willMovePath"](old_path,new_path)}}catch(e){err("FS.trackingDelegate['willMovePath']('"+old_path+"', '"+new_path+"') threw an exception: "+e.message)}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}try{if(FS.trackingDelegate["onMovePath"])FS.trackingDelegate["onMovePath"](old_path,new_path)}catch(e){err("FS.trackingDelegate['onMovePath']('"+old_path+"', '"+new_path+"') threw an exception: "+e.message)}},rmdir:function(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}try{if(FS.trackingDelegate["willDeletePath"]){FS.trackingDelegate["willDeletePath"](path)}}catch(e){err("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: "+e.message)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate["onDeletePath"])FS.trackingDelegate["onDeletePath"](path)}catch(e){err("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: "+e.message)}},readdir:function(path){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:function(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}try{if(FS.trackingDelegate["willDeletePath"]){FS.trackingDelegate["willDeletePath"](path)}}catch(e){err("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: "+e.message)}parent.node_ops.unlink(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate["onDeletePath"])FS.trackingDelegate["onDeletePath"](path)}catch(e){err("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: "+e.message)}},readlink:function(path){var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:function(path,dontFollow){var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:function(path){return FS.stat(path,true)},chmod:function(path,mode,dontFollow){var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:function(path,mode){FS.chmod(path,mode,true)},fchmod:function(fd,mode){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:function(path,uid,gid,dontFollow){var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:function(path,uid,gid){FS.chown(path,uid,gid,true)},fchown:function(fd,uid,gid){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:function(path,len){if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:function(fd,len){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:function(path,atime,mtime){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:function(path,flags,mode,fd_start,fd_end){if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags==="string"?FS.modeStringToFlags(flags):flags;mode=typeof mode==="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path==="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false},fd_start,fd_end);if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1;err("FS.trackingDelegate error on read file: "+path)}}try{if(FS.trackingDelegate["onOpenFile"]){var trackingFlags=0;if((flags&2097155)!==1){trackingFlags|=FS.tracking.openFlags.READ}if((flags&2097155)!==0){trackingFlags|=FS.tracking.openFlags.WRITE}FS.trackingDelegate["onOpenFile"](path,trackingFlags)}}catch(e){err("FS.trackingDelegate['onOpenFile']('"+path+"', flags) threw an exception: "+e.message)}return stream},close:function(stream){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:function(stream){return stream.fd===null},llseek:function(stream,offset,whence){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:function(stream,buffer,offset,length,position){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!=="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:function(stream,buffer,offset,length,position,canOwn){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!=="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;try{if(stream.path&&FS.trackingDelegate["onWriteToFile"])FS.trackingDelegate["onWriteToFile"](stream.path)}catch(e){err("FS.trackingDelegate['onWriteToFile']('"+stream.path+"') threw an exception: "+e.message)}return bytesWritten},allocate:function(stream,offset,length){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:function(stream,address,length,position,prot,flags){if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,address,length,position,prot,flags)},msync:function(stream,buffer,offset,length,mmapFlags){if(!stream||!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:function(stream){return 0},ioctl:function(stream,cmd,arg){if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:function(path,opts){opts=opts||{};opts.flags=opts.flags||0;opts.encoding=opts.encoding||"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error('Invalid encoding type "'+opts.encoding+'"')}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding==="binary"){ret=buf}FS.close(stream);return ret},writeFile:function(path,data,opts){opts=opts||{};opts.flags=opts.flags||577;var stream=FS.open(path,opts.flags,opts.mode);if(typeof data==="string"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,undefined,opts.canOwn)}else if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{throw new Error("Unsupported data type")}FS.close(stream)},cwd:function(){return FS.currentPath},chdir:function(path){var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories:function(){FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices:function(){FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:function(){return 0},write:function(stream,buffer,offset,length,pos){return length}});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var random_device=getRandomDevice();FS.createDevice("/dev","random",random_device);FS.createDevice("/dev","urandom",random_device);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories:function(){FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount:function(){var node=FS.createNode(proc_self,"fd",16384|511,73);node.node_ops={lookup:function(parent,name){var fd=+name;var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:function(){return stream.path}}};ret.parent=ret;return ret}};return node}},{},"/proc/self/fd")},createStandardStreams:function(){if(Module["stdin"]){FS.createDevice("/dev","stdin",Module["stdin"])}else{FS.symlink("/dev/tty","/dev/stdin")}if(Module["stdout"]){FS.createDevice("/dev","stdout",null,Module["stdout"])}else{FS.symlink("/dev/tty","/dev/stdout")}if(Module["stderr"]){FS.createDevice("/dev","stderr",null,Module["stderr"])}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},ensureErrnoError:function(){if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.node=node;this.setErrno=function(errno){this.errno=errno};this.setErrno(errno);this.message="FS error"};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[44].forEach(function(code){FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack="<generic error, no stack>"})},staticInit:function(){FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={"MEMFS":MEMFS}},init:function(input,output,error){FS.init.initialized=true;FS.ensureErrnoError();Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams()},quit:function(){FS.init.initialized=false;var fflush=Module["_fflush"];if(fflush)fflush(0);for(var i=0;i<FS.streams.length;i++){var stream=FS.streams[i];if(!stream){continue}FS.close(stream)}},getMode:function(canRead,canWrite){var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode},findObject:function(path,dontResolveLastLink){var ret=FS.analyzePath(path,dontResolveLastLink);if(ret.exists){return ret.object}else{return null}},analyzePath:function(path,dontResolveLastLink){try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath:function(parent,path,canRead,canWrite){parent=typeof parent==="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:function(parent,name,properties,canRead,canWrite){var path=PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:function(parent,name,data,canRead,canWrite,canOwn){var path=name?PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name):parent;var mode=FS.getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data==="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i<len;++i)arr[i]=data.charCodeAt(i);data=arr}FS.chmod(node,mode|146);var stream=FS.open(node,577);FS.write(stream,data,0,data.length,0,canOwn);FS.close(stream);FS.chmod(node,mode)}return node},createDevice:function(parent,name,input,output){var path=PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:function(stream){stream.seekable=false},close:function(stream){if(output&&output.buffer&&output.buffer.length){output(10)}},read:function(stream,buffer,offset,length,pos){var bytesRead=0;for(var i=0;i<length;i++){var result;try{result=input()}catch(e){throw new FS.ErrnoError(29)}if(result===undefined&&bytesRead===0){throw new FS.ErrnoError(6)}if(result===null||result===undefined)break;bytesRead++;buffer[offset+i]=result}if(bytesRead){stream.node.timestamp=Date.now()}return bytesRead},write:function(stream,buffer,offset,length,pos){for(var i=0;i<length;i++){try{output(buffer[offset+i])}catch(e){throw new FS.ErrnoError(29)}}if(length){stream.node.timestamp=Date.now()}return i}});return FS.mkdev(path,mode,dev)},forceLoadFile:function(obj){if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!=="undefined"){throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}},createLazyFile:function(parent,name,url,canRead,canWrite){function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=function(from,to){if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);if(typeof Uint8Array!="undefined")xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}else{return intArrayFromString(xhr.responseText||"",true)}};var lazyArray=this;lazyArray.setDataGetter(function(chunkNum){var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]==="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]==="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!=="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._length}},chunkSize:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(function(key){var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){FS.forceLoadFile(node);return fn.apply(null,arguments)}});stream_ops.read=function stream_ops_read(stream,buffer,offset,length,position){FS.forceLoadFile(node);var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i<size;i++){buffer[offset+i]=contents[position+i]}}else{for(var i=0;i<size;i++){buffer[offset+i]=contents.get(position+i)}}return size};node.stream_ops=stream_ops;return node},createPreloadedFile:function(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish){Browser.init();var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency("cp "+fullname);function processData(byteArray){function finish(byteArray){if(preFinish)preFinish();if(!dontCreateFile){FS.createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}if(onload)onload();removeRunDependency(dep)}var handled=false;Module["preloadPlugins"].forEach(function(plugin){if(handled)return;if(plugin["canHandle"](fullname)){plugin["handle"](byteArray,fullname,finish,function(){if(onerror)onerror();removeRunDependency(dep)});handled=true}});if(!handled)finish(byteArray)}addRunDependency(dep);if(typeof url=="string"){Browser.asyncLoad(url,function(byteArray){processData(byteArray)},onerror)}else{processData(url)}},indexedDB:function(){return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME:function(){return"EM_FS_"+window.location.pathname},DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:function(paths,onload,onerror){onload=onload||function(){};onerror=onerror||function(){};var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=function openRequest_onupgradeneeded(){out("creating db");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME)};openRequest.onsuccess=function openRequest_onsuccess(){var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],"readwrite");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(function(path){var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=function putRequest_onsuccess(){ok++;if(ok+fail==total)finish()};putRequest.onerror=function putRequest_onerror(){fail++;if(ok+fail==total)finish()}});transaction.onerror=onerror};openRequest.onerror=onerror},loadFilesFromDB:function(paths,onload,onerror){onload=onload||function(){};onerror=onerror||function(){};var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=function openRequest_onsuccess(){var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],"readonly")}catch(e){onerror(e);return}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(function(path){var getRequest=files.get(path);getRequest.onsuccess=function getRequest_onsuccess(){if(FS.analyzePath(path).exists){FS.unlink(path)}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish()};getRequest.onerror=function getRequest_onerror(){fail++;if(ok+fail==total)finish()}});transaction.onerror=onerror};openRequest.onerror=onerror}};var SYSCALLS={mappings:{},DEFAULT_POLLMASK:5,umask:511,calculateAt:function(dirfd,path,allowEmpty){if(path[0]==="/"){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=FS.getStream(dirfd);if(!dirstream)throw new FS.ErrnoError(8);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(func,path,buf){try{var stat=func(path)}catch(e){if(e&&e.node&&PATH.normalize(path)!==PATH.normalize(FS.getPath(e.node))){return-54}throw e}HEAP32[buf>>2]=stat.dev;HEAP32[buf+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;HEAP32[buf+56>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+76>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+80>>2]=tempI64[0],HEAP32[buf+84>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},doMkdir:function(path,mode){path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0},doMknod:function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}FS.mknod(path,mode,dev);return 0},doReadlink:function(path,buf,bufsize){if(bufsize<=0)return-28;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len},doAccess:function(path,amode){if(amode&~7){return-28}var node;var lookup=FS.lookupPath(path,{follow:true});node=lookup.node;if(!node){return-44}var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0},doDup:function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd},doReadv:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i<iovcnt;i++){var ptr=HEAP32[iov+i*8>>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr<len)break}return ret},doWritev:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i<iovcnt;i++){var ptr=HEAP32[iov+i*8>>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream},get64:function(low,high){return low}};function ___sys_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-28}var newStream;newStream=FS.open(stream.path,stream.flags,0,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0}case 12:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 13:case 14:return 0;case 16:case 8:return-28;case 9:setErrNo(28);return-1;default:{return-28}}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_ioctl(fd,op,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(op){case 21509:case 21505:{if(!stream.tty)return-59;return 0}case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-59;return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{if(!stream.tty)return-59;return 0}default:abort("bad ioctl syscall "+op)}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_open(path,flags,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(path);var mode=varargs?SYSCALLS.get():0;var stream=FS.open(pathname,flags,mode);return stream.fd}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}var JSEvents={inEventHandler:0,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return false;for(var i in arrA){if(arrA[i]!=arrB[i])return false}return true}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList)){return}}JSEvents.deferredCalls.push({targetFunction:targetFunction,precedence:precedence,argsList:argsList});JSEvents.deferredCalls.sort(function(x,y){return x.precedence<y.precedence})},removeDeferredCalls:function(targetFunction){for(var i=0;i<JSEvents.deferredCalls.length;++i){if(JSEvents.deferredCalls[i].targetFunction==targetFunction){JSEvents.deferredCalls.splice(i,1);--i}}},canPerformEventHandlerRequests:function(){return JSEvents.inEventHandler&&JSEvents.currentEventHandler.allowsDeferredCalls},runDeferredCalls:function(){if(!JSEvents.canPerformEventHandlerRequests()){return}for(var i=0;i<JSEvents.deferredCalls.length;++i){var call=JSEvents.deferredCalls[i];JSEvents.deferredCalls.splice(i,1);--i;call.targetFunction.apply(null,call.argsList)}},eventHandlers:[],removeAllHandlersOnTarget:function(target,eventTypeString){for(var i=0;i<JSEvents.eventHandlers.length;++i){if(JSEvents.eventHandlers[i].target==target&&(!eventTypeString||eventTypeString==JSEvents.eventHandlers[i].eventTypeString)){JSEvents._removeHandler(i--)}}},_removeHandler:function(i){var h=JSEvents.eventHandlers[i];h.target.removeEventListener(h.eventTypeString,h.eventListenerFunc,h.useCapture);JSEvents.eventHandlers.splice(i,1)},registerOrRemoveHandler:function(eventHandler){var jsEventHandler=function jsEventHandler(event){++JSEvents.inEventHandler;JSEvents.currentEventHandler=eventHandler;JSEvents.runDeferredCalls();eventHandler.handlerFunc(event);JSEvents.runDeferredCalls();--JSEvents.inEventHandler};if(eventHandler.callbackfunc){eventHandler.eventListenerFunc=jsEventHandler;eventHandler.target.addEventListener(eventHandler.eventTypeString,jsEventHandler,eventHandler.useCapture);JSEvents.eventHandlers.push(eventHandler);JSEvents.registerRemoveEventListeners()}else{for(var i=0;i<JSEvents.eventHandlers.length;++i){if(JSEvents.eventHandlers[i].target==eventHandler.target&&JSEvents.eventHandlers[i].eventTypeString==eventHandler.eventTypeString){JSEvents._removeHandler(i--)}}}},getNodeNameForTarget:function(target){if(!target)return"";if(target==window)return"#window";if(target==screen)return"#screen";return target&&target.nodeName?target.nodeName:""},fullscreenEnabled:function(){return document.fullscreenEnabled||document.webkitFullscreenEnabled}};function requestPointerLock(target){if(target.requestPointerLock){target.requestPointerLock()}else if(target.msRequestPointerLock){target.msRequestPointerLock()}else{if(document.body.requestPointerLock||document.body.msRequestPointerLock){return-3}else{return-1}}return 0}function _emscripten_exit_pointerlock(){JSEvents.removeDeferredCalls(requestPointerLock);if(document.exitPointerLock){document.exitPointerLock()}else if(document.msExitPointerLock){document.msExitPointerLock()}else{return-1}return 0}function maybeCStringToJsString(cString){return cString>2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!=="undefined"?document:0,typeof window!=="undefined"?window:0];function findEventTarget(target){target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!=="undefined"?document.querySelector(target):undefined);return domElement}function getBoundingClientRect(e){return specialHTMLTargets.indexOf(e)<0?e.getBoundingClientRect():{"left":0,"top":0}}function _emscripten_get_element_css_size(target,width,height){target=findEventTarget(target);if(!target)return-4;var rect=getBoundingClientRect(target);HEAPF64[width>>3]=rect.width;HEAPF64[height>>3]=rect.height;return 0}function fillGamepadEventData(eventStruct,e){HEAPF64[eventStruct>>3]=e.timestamp;for(var i=0;i<e.axes.length;++i){HEAPF64[eventStruct+i*8+16>>3]=e.axes[i]}for(var i=0;i<e.buttons.length;++i){if(typeof e.buttons[i]==="object"){HEAPF64[eventStruct+i*8+528>>3]=e.buttons[i].value}else{HEAPF64[eventStruct+i*8+528>>3]=e.buttons[i]}}for(var i=0;i<e.buttons.length;++i){if(typeof e.buttons[i]==="object"){HEAP32[eventStruct+i*4+1040>>2]=e.buttons[i].pressed}else{HEAP32[eventStruct+i*4+1040>>2]=e.buttons[i]==1}}HEAP32[eventStruct+1296>>2]=e.connected;HEAP32[eventStruct+1300>>2]=e.index;HEAP32[eventStruct+8>>2]=e.axes.length;HEAP32[eventStruct+12>>2]=e.buttons.length;stringToUTF8(e.id,eventStruct+1304,64);stringToUTF8(e.mapping,eventStruct+1368,64)}function _emscripten_get_gamepad_status(index,gamepadState){if(index<0||index>=JSEvents.lastGamepadState.length)return-5;if(!JSEvents.lastGamepadState[index])return-7;fillGamepadEventData(gamepadState,JSEvents.lastGamepadState[index]);return 0}function _emscripten_get_num_gamepads(){return JSEvents.lastGamepadState.length}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension("ANGLE_instanced_arrays");if(ext){ctx["vertexAttribDivisor"]=function(index,divisor){ext["vertexAttribDivisorANGLE"](index,divisor)};ctx["drawArraysInstanced"]=function(mode,first,count,primcount){ext["drawArraysInstancedANGLE"](mode,first,count,primcount)};ctx["drawElementsInstanced"]=function(mode,count,type,indices,primcount){ext["drawElementsInstancedANGLE"](mode,count,type,indices,primcount)};return 1}}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension("OES_vertex_array_object");if(ext){ctx["createVertexArray"]=function(){return ext["createVertexArrayOES"]()};ctx["deleteVertexArray"]=function(vao){ext["deleteVertexArrayOES"](vao)};ctx["bindVertexArray"]=function(vao){ext["bindVertexArrayOES"](vao)};ctx["isVertexArray"]=function(vao){return ext["isVertexArrayOES"](vao)};return 1}}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension("WEBGL_draw_buffers");if(ext){ctx["drawBuffers"]=function(n,bufs){ext["drawBuffersWEBGL"](n,bufs)};return 1}}function __webgl_enable_WEBGL_multi_draw(ctx){return!!(ctx.multiDrawWebgl=ctx.getExtension("WEBGL_multi_draw"))}var GL={counter:1,buffers:[],programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:[],offscreenCanvases:{},timerQueriesEXT:[],programInfos:{},stringCache:{},unpackAlignment:4,recordError:function recordError(errorCode){if(!GL.lastError){GL.lastError=errorCode}},getNewId:function(table){var ret=GL.counter++;for(var i=table.length;i<ret;i++){table[i]=null}return ret},getSource:function(shader,count,string,length){var source="";for(var i=0;i<count;++i){var len=length?HEAP32[length+i*4>>2]:-1;source+=UTF8ToString(HEAP32[string+i*4>>2],len<0?undefined:len)}return source},createContext:function(canvas,webGLContextAttributes){var ctx=canvas.getContext("webgl",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:function(ctx,webGLContextAttributes){var handle=GL.getNewId(GL.contexts);var context={handle:handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};if(ctx.canvas)ctx.canvas.GLctxObject=context;GL.contexts[handle]=context;if(typeof webGLContextAttributes.enableExtensionsByDefault==="undefined"||webGLContextAttributes.enableExtensionsByDefault){GL.initExtensions(context)}return handle},makeContextCurrent:function(contextHandle){GL.currentContext=GL.contexts[contextHandle];Module.ctx=GLctx=GL.currentContext&&GL.currentContext.GLctx;return!(contextHandle&&!GLctx)},getContext:function(contextHandle){return GL.contexts[contextHandle]},deleteContext:function(contextHandle){if(GL.currentContext===GL.contexts[contextHandle])GL.currentContext=null;if(typeof JSEvents==="object")JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas);if(GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas)GL.contexts[contextHandle].GLctx.canvas.GLctxObject=undefined;GL.contexts[contextHandle]=null},initExtensions:function(context){if(!context)context=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;__webgl_enable_ANGLE_instanced_arrays(GLctx);__webgl_enable_OES_vertex_array_object(GLctx);__webgl_enable_WEBGL_draw_buffers(GLctx);GLctx.disjointTimerQueryExt=GLctx.getExtension("EXT_disjoint_timer_query");__webgl_enable_WEBGL_multi_draw(GLctx);var exts=GLctx.getSupportedExtensions()||[];exts.forEach(function(ext){if(ext.indexOf("lose_context")<0&&ext.indexOf("debug")<0){GLctx.getExtension(ext)}})},populateUniformTable:function(program){var p=GL.programs[program];var ptable=GL.programInfos[program]={uniforms:{},maxUniformLength:0,maxAttributeLength:-1,maxUniformBlockNameLength:-1};var utable=ptable.uniforms;var numUniforms=GLctx.getProgramParameter(p,35718);for(var i=0;i<numUniforms;++i){var u=GLctx.getActiveUniform(p,i);var name=u.name;ptable.maxUniformLength=Math.max(ptable.maxUniformLength,name.length+1);if(name.slice(-1)=="]"){name=name.slice(0,name.lastIndexOf("["))}var loc=GLctx.getUniformLocation(p,name);if(loc){var id=GL.getNewId(GL.uniforms);utable[name]=[u.size,id];GL.uniforms[id]=loc;for(var j=1;j<u.size;++j){var n=name+"["+j+"]";loc=GLctx.getUniformLocation(p,n);id=GL.getNewId(GL.uniforms);GL.uniforms[id]=loc}}}}};function _emscripten_glActiveTexture(x0){GLctx["activeTexture"](x0)}function _emscripten_glAttachShader(program,shader){GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _emscripten_glBeginQueryEXT(target,id){GLctx.disjointTimerQueryExt["beginQueryEXT"](target,GL.timerQueriesEXT[id])}function _emscripten_glBindAttribLocation(program,index,name){GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))}function _emscripten_glBindBuffer(target,buffer){GLctx.bindBuffer(target,GL.buffers[buffer])}function _emscripten_glBindFramebuffer(target,framebuffer){GLctx.bindFramebuffer(target,GL.framebuffers[framebuffer])}function _emscripten_glBindRenderbuffer(target,renderbuffer){GLctx.bindRenderbuffer(target,GL.renderbuffers[renderbuffer])}function _emscripten_glBindTexture(target,texture){GLctx.bindTexture(target,GL.textures[texture])}function _emscripten_glBindVertexArrayOES(vao){GLctx["bindVertexArray"](GL.vaos[vao])}function _emscripten_glBlendColor(x0,x1,x2,x3){GLctx["blendColor"](x0,x1,x2,x3)}function _emscripten_glBlendEquation(x0){GLctx["blendEquation"](x0)}function _emscripten_glBlendEquationSeparate(x0,x1){GLctx["blendEquationSeparate"](x0,x1)}function _emscripten_glBlendFunc(x0,x1){GLctx["blendFunc"](x0,x1)}function _emscripten_glBlendFuncSeparate(x0,x1,x2,x3){GLctx["blendFuncSeparate"](x0,x1,x2,x3)}function _emscripten_glBufferData(target,size,data,usage){GLctx.bufferData(target,data?HEAPU8.subarray(data,data+size):size,usage)}function _emscripten_glBufferSubData(target,offset,size,data){GLctx.bufferSubData(target,offset,HEAPU8.subarray(data,data+size))}function _emscripten_glCheckFramebufferStatus(x0){return GLctx["checkFramebufferStatus"](x0)}function _emscripten_glClear(x0){GLctx["clear"](x0)}function _emscripten_glClearColor(x0,x1,x2,x3){GLctx["clearColor"](x0,x1,x2,x3)}function _emscripten_glClearDepthf(x0){GLctx["clearDepth"](x0)}function _emscripten_glClearStencil(x0){GLctx["clearStencil"](x0)}function _emscripten_glColorMask(red,green,blue,alpha){GLctx.colorMask(!!red,!!green,!!blue,!!alpha)}function _emscripten_glCompileShader(shader){GLctx.compileShader(GL.shaders[shader])}function _emscripten_glCompressedTexImage2D(target,level,internalFormat,width,height,border,imageSize,data){GLctx["compressedTexImage2D"](target,level,internalFormat,width,height,border,data?HEAPU8.subarray(data,data+imageSize):null)}function _emscripten_glCompressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,imageSize,data){GLctx["compressedTexSubImage2D"](target,level,xoffset,yoffset,width,height,format,data?HEAPU8.subarray(data,data+imageSize):null)}function _emscripten_glCopyTexImage2D(x0,x1,x2,x3,x4,x5,x6,x7){GLctx["copyTexImage2D"](x0,x1,x2,x3,x4,x5,x6,x7)}function _emscripten_glCopyTexSubImage2D(x0,x1,x2,x3,x4,x5,x6,x7){GLctx["copyTexSubImage2D"](x0,x1,x2,x3,x4,x5,x6,x7)}function _emscripten_glCreateProgram(){var id=GL.getNewId(GL.programs);var program=GLctx.createProgram();program.name=id;GL.programs[id]=program;return id}function _emscripten_glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}function _emscripten_glCullFace(x0){GLctx["cullFace"](x0)}function _emscripten_glDeleteBuffers(n,buffers){for(var i=0;i<n;i++){var id=HEAP32[buffers+i*4>>2];var buffer=GL.buffers[id];if(!buffer)continue;GLctx.deleteBuffer(buffer);buffer.name=0;GL.buffers[id]=null}}function _emscripten_glDeleteFramebuffers(n,framebuffers){for(var i=0;i<n;++i){var id=HEAP32[framebuffers+i*4>>2];var framebuffer=GL.framebuffers[id];if(!framebuffer)continue;GLctx.deleteFramebuffer(framebuffer);framebuffer.name=0;GL.framebuffers[id]=null}}function _emscripten_glDeleteProgram(id){if(!id)return;var program=GL.programs[id];if(!program){GL.recordError(1281);return}GLctx.deleteProgram(program);program.name=0;GL.programs[id]=null;GL.programInfos[id]=null}function _emscripten_glDeleteQueriesEXT(n,ids){for(var i=0;i<n;i++){var id=HEAP32[ids+i*4>>2];var query=GL.timerQueriesEXT[id];if(!query)continue;GLctx.disjointTimerQueryExt["deleteQueryEXT"](query);GL.timerQueriesEXT[id]=null}}function _emscripten_glDeleteRenderbuffers(n,renderbuffers){for(var i=0;i<n;i++){var id=HEAP32[renderbuffers+i*4>>2];var renderbuffer=GL.renderbuffers[id];if(!renderbuffer)continue;GLctx.deleteRenderbuffer(renderbuffer);renderbuffer.name=0;GL.renderbuffers[id]=null}}function _emscripten_glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}function _emscripten_glDeleteTextures(n,textures){for(var i=0;i<n;i++){var id=HEAP32[textures+i*4>>2];var texture=GL.textures[id];if(!texture)continue;GLctx.deleteTexture(texture);texture.name=0;GL.textures[id]=null}}function _emscripten_glDeleteVertexArraysOES(n,vaos){for(var i=0;i<n;i++){var id=HEAP32[vaos+i*4>>2];GLctx["deleteVertexArray"](GL.vaos[id]);GL.vaos[id]=null}}function _emscripten_glDepthFunc(x0){GLctx["depthFunc"](x0)}function _emscripten_glDepthMask(flag){GLctx.depthMask(!!flag)}function _emscripten_glDepthRangef(x0,x1){GLctx["depthRange"](x0,x1)}function _emscripten_glDetachShader(program,shader){GLctx.detachShader(GL.programs[program],GL.shaders[shader])}function _emscripten_glDisable(x0){GLctx["disable"](x0)}function _emscripten_glDisableVertexAttribArray(index){GLctx.disableVertexAttribArray(index)}function _emscripten_glDrawArrays(mode,first,count){GLctx.drawArrays(mode,first,count)}function _emscripten_glDrawArraysInstancedANGLE(mode,first,count,primcount){GLctx["drawArraysInstanced"](mode,first,count,primcount)}var tempFixedLengthArray=[];function _emscripten_glDrawBuffersWEBGL(n,bufs){var bufArray=tempFixedLengthArray[n];for(var i=0;i<n;i++){bufArray[i]=HEAP32[bufs+i*4>>2]}GLctx["drawBuffers"](bufArray)}function _emscripten_glDrawElements(mode,count,type,indices){GLctx.drawElements(mode,count,type,indices)}function _emscripten_glDrawElementsInstancedANGLE(mode,count,type,indices,primcount){GLctx["drawElementsInstanced"](mode,count,type,indices,primcount)}function _emscripten_glEnable(x0){GLctx["enable"](x0)}function _emscripten_glEnableVertexAttribArray(index){GLctx.enableVertexAttribArray(index)}function _emscripten_glEndQueryEXT(target){GLctx.disjointTimerQueryExt["endQueryEXT"](target)}function _emscripten_glFinish(){GLctx["finish"]()}function _emscripten_glFlush(){GLctx["flush"]()}function _emscripten_glFramebufferRenderbuffer(target,attachment,renderbuffertarget,renderbuffer){GLctx.framebufferRenderbuffer(target,attachment,renderbuffertarget,GL.renderbuffers[renderbuffer])}function _emscripten_glFramebufferTexture2D(target,attachment,textarget,texture,level){GLctx.framebufferTexture2D(target,attachment,textarget,GL.textures[texture],level)}function _emscripten_glFrontFace(x0){GLctx["frontFace"](x0)}function __glGenObject(n,buffers,createFunction,objectTable){for(var i=0;i<n;i++){var buffer=GLctx[createFunction]();var id=buffer&&GL.getNewId(objectTable);if(buffer){buffer.name=id;objectTable[id]=buffer}else{GL.recordError(1282)}HEAP32[buffers+i*4>>2]=id}}function _emscripten_glGenBuffers(n,buffers){__glGenObject(n,buffers,"createBuffer",GL.buffers)}function _emscripten_glGenFramebuffers(n,ids){__glGenObject(n,ids,"createFramebuffer",GL.framebuffers)}function _emscripten_glGenQueriesEXT(n,ids){for(var i=0;i<n;i++){var query=GLctx.disjointTimerQueryExt["createQueryEXT"]();if(!query){GL.recordError(1282);while(i<n)HEAP32[ids+i++*4>>2]=0;return}var id=GL.getNewId(GL.timerQueriesEXT);query.name=id;GL.timerQueriesEXT[id]=query;HEAP32[ids+i*4>>2]=id}}function _emscripten_glGenRenderbuffers(n,renderbuffers){__glGenObject(n,renderbuffers,"createRenderbuffer",GL.renderbuffers)}function _emscripten_glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures)}function _emscripten_glGenVertexArraysOES(n,arrays){__glGenObject(n,arrays,"createVertexArray",GL.vaos)}function _emscripten_glGenerateMipmap(x0){GLctx["generateMipmap"](x0)}function __glGetActiveAttribOrUniform(funcName,program,index,bufSize,length,size,type,name){program=GL.programs[program];var info=GLctx[funcName](program,index);if(info){var numBytesWrittenExclNull=name&&stringToUTF8(info.name,name,bufSize);if(length)HEAP32[length>>2]=numBytesWrittenExclNull;if(size)HEAP32[size>>2]=info.size;if(type)HEAP32[type>>2]=info.type}}function _emscripten_glGetActiveAttrib(program,index,bufSize,length,size,type,name){__glGetActiveAttribOrUniform("getActiveAttrib",program,index,bufSize,length,size,type,name)}function _emscripten_glGetActiveUniform(program,index,bufSize,length,size,type,name){__glGetActiveAttribOrUniform("getActiveUniform",program,index,bufSize,length,size,type,name)}function _emscripten_glGetAttachedShaders(program,maxCount,count,shaders){var result=GLctx.getAttachedShaders(GL.programs[program]);var len=result.length;if(len>maxCount){len=maxCount}HEAP32[count>>2]=len;for(var i=0;i<len;++i){var id=GL.shaders.indexOf(result[i]);HEAP32[shaders+i*4>>2]=id}}function _emscripten_glGetAttribLocation(program,name){return GLctx.getAttribLocation(GL.programs[program],UTF8ToString(name))}function writeI53ToI64(ptr,num){HEAPU32[ptr>>2]=num;HEAPU32[ptr+4>>2]=(num-HEAPU32[ptr>>2])/4294967296}function emscriptenWebGLGet(name_,p,type){if(!p){GL.recordError(1281);return}var ret=undefined;switch(name_){case 36346:ret=1;break;case 36344:if(type!=0&&type!=1){GL.recordError(1280)}return;case 36345:ret=0;break;case 34466:var formats=GLctx.getParameter(34467);ret=formats?formats.length:0;break}if(ret===undefined){var result=GLctx.getParameter(name_);switch(typeof result){case"number":ret=result;break;case"boolean":ret=result?1:0;break;case"string":GL.recordError(1280);return;case"object":if(result===null){switch(name_){case 34964:case 35725:case 34965:case 36006:case 36007:case 32873:case 34229:case 34068:{ret=0;break}default:{GL.recordError(1280);return}}}else if(result instanceof Float32Array||result instanceof Uint32Array||result instanceof Int32Array||result instanceof Array){for(var i=0;i<result.length;++i){switch(type){case 0:HEAP32[p+i*4>>2]=result[i];break;case 2:HEAPF32[p+i*4>>2]=result[i];break;case 4:HEAP8[p+i>>0]=result[i]?1:0;break}}return}else{try{ret=result.name|0}catch(e){GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v: Unknown object returned from WebGL getParameter("+name_+")! (error: "+e+")");return}}break;default:GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v: Native code calling glGet"+type+"v("+name_+") and it returns "+result+" of type "+typeof result+"!");return}}switch(type){case 1:writeI53ToI64(p,ret);break;case 0:HEAP32[p>>2]=ret;break;case 2:HEAPF32[p>>2]=ret;break;case 4:HEAP8[p>>0]=ret?1:0;break}}function _emscripten_glGetBooleanv(name_,p){emscriptenWebGLGet(name_,p,4)}function _emscripten_glGetBufferParameteriv(target,value,data){if(!data){GL.recordError(1281);return}HEAP32[data>>2]=GLctx.getBufferParameter(target,value)}function _emscripten_glGetError(){var error=GLctx.getError()||GL.lastError;GL.lastError=0;return error}function _emscripten_glGetFloatv(name_,p){emscriptenWebGLGet(name_,p,2)}function _emscripten_glGetFramebufferAttachmentParameteriv(target,attachment,pname,params){var result=GLctx.getFramebufferAttachmentParameter(target,attachment,pname);if(result instanceof WebGLRenderbuffer||result instanceof WebGLTexture){result=result.name|0}HEAP32[params>>2]=result}function _emscripten_glGetIntegerv(name_,p){emscriptenWebGLGet(name_,p,0)}function _emscripten_glGetProgramInfoLog(program,maxLength,length,infoLog){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _emscripten_glGetProgramiv(program,pname,p){if(!p){GL.recordError(1281);return}if(program>=GL.counter){GL.recordError(1281);return}var ptable=GL.programInfos[program];if(!ptable){GL.recordError(1282);return}if(pname==35716){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";HEAP32[p>>2]=log.length+1}else if(pname==35719){HEAP32[p>>2]=ptable.maxUniformLength}else if(pname==35722){if(ptable.maxAttributeLength==-1){program=GL.programs[program];var numAttribs=GLctx.getProgramParameter(program,35721);ptable.maxAttributeLength=0;for(var i=0;i<numAttribs;++i){var activeAttrib=GLctx.getActiveAttrib(program,i);ptable.maxAttributeLength=Math.max(ptable.maxAttributeLength,activeAttrib.name.length+1)}}HEAP32[p>>2]=ptable.maxAttributeLength}else if(pname==35381){if(ptable.maxUniformBlockNameLength==-1){program=GL.programs[program];var numBlocks=GLctx.getProgramParameter(program,35382);ptable.maxUniformBlockNameLength=0;for(var i=0;i<numBlocks;++i){var activeBlockName=GLctx.getActiveUniformBlockName(program,i);ptable.maxUniformBlockNameLength=Math.max(ptable.maxUniformBlockNameLength,activeBlockName.length+1)}}HEAP32[p>>2]=ptable.maxUniformBlockNameLength}else{HEAP32[p>>2]=GLctx.getProgramParameter(GL.programs[program],pname)}}function _emscripten_glGetQueryObjecti64vEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.timerQueriesEXT[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}writeI53ToI64(params,ret)}function _emscripten_glGetQueryObjectivEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.timerQueriesEXT[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}HEAP32[params>>2]=ret}function _emscripten_glGetQueryObjectui64vEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.timerQueriesEXT[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}writeI53ToI64(params,ret)}function _emscripten_glGetQueryObjectuivEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.timerQueriesEXT[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}HEAP32[params>>2]=ret}function _emscripten_glGetQueryivEXT(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.disjointTimerQueryExt["getQueryEXT"](target,pname)}function _emscripten_glGetRenderbufferParameteriv(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getRenderbufferParameter(target,pname)}function _emscripten_glGetShaderInfoLog(shader,maxLength,length,infoLog){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _emscripten_glGetShaderPrecisionFormat(shaderType,precisionType,range,precision){var result=GLctx.getShaderPrecisionFormat(shaderType,precisionType);HEAP32[range>>2]=result.rangeMin;HEAP32[range+4>>2]=result.rangeMax;HEAP32[precision>>2]=result.precision}function _emscripten_glGetShaderSource(shader,bufSize,length,source){var result=GLctx.getShaderSource(GL.shaders[shader]);if(!result)return;var numBytesWrittenExclNull=bufSize>0&&source?stringToUTF8(result,source,bufSize):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _emscripten_glGetShaderiv(shader,pname,p){if(!p){GL.recordError(1281);return}if(pname==35716){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var logLength=log?log.length+1:0;HEAP32[p>>2]=logLength}else if(pname==35720){var source=GLctx.getShaderSource(GL.shaders[shader]);var sourceLength=source?source.length+1:0;HEAP32[p>>2]=sourceLength}else{HEAP32[p>>2]=GLctx.getShaderParameter(GL.shaders[shader],pname)}}function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _emscripten_glGetString(name_){if(GL.stringCache[name_])return GL.stringCache[name_];var ret;switch(name_){case 7939:var exts=GLctx.getSupportedExtensions()||[];exts=exts.concat(exts.map(function(e){return"GL_"+e}));ret=stringToNewUTF8(exts.join(" "));break;case 7936:case 7937:case 37445:case 37446:var s=GLctx.getParameter(name_);if(!s){GL.recordError(1280)}ret=stringToNewUTF8(s);break;case 7938:var glVersion=GLctx.getParameter(7938);{glVersion="OpenGL ES 2.0 ("+glVersion+")"}ret=stringToNewUTF8(glVersion);break;case 35724:var glslVersion=GLctx.getParameter(35724);var ver_re=/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/;var ver_num=glslVersion.match(ver_re);if(ver_num!==null){if(ver_num[1].length==3)ver_num[1]=ver_num[1]+"0";glslVersion="OpenGL ES GLSL ES "+ver_num[1]+" ("+glslVersion+")"}ret=stringToNewUTF8(glslVersion);break;default:GL.recordError(1280);return 0}GL.stringCache[name_]=ret;return ret}function _emscripten_glGetTexParameterfv(target,pname,params){if(!params){GL.recordError(1281);return}HEAPF32[params>>2]=GLctx.getTexParameter(target,pname)}function _emscripten_glGetTexParameteriv(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getTexParameter(target,pname)}function jstoi_q(str){return parseInt(str)}function _emscripten_glGetUniformLocation(program,name){name=UTF8ToString(name);var arrayIndex=0;if(name[name.length-1]=="]"){var leftBrace=name.lastIndexOf("[");arrayIndex=name[leftBrace+1]!="]"?jstoi_q(name.slice(leftBrace+1)):0;name=name.slice(0,leftBrace)}var uniformInfo=GL.programInfos[program]&&GL.programInfos[program].uniforms[name];if(uniformInfo&&arrayIndex>=0&&arrayIndex<uniformInfo[0]){return uniformInfo[1]+arrayIndex}else{return-1}}function emscriptenWebGLGetUniform(program,location,params,type){if(!params){GL.recordError(1281);return}var data=GLctx.getUniform(GL.programs[program],GL.uniforms[location]);if(typeof data=="number"||typeof data=="boolean"){switch(type){case 0:HEAP32[params>>2]=data;break;case 2:HEAPF32[params>>2]=data;break}}else{for(var i=0;i<data.length;i++){switch(type){case 0:HEAP32[params+i*4>>2]=data[i];break;case 2:HEAPF32[params+i*4>>2]=data[i];break}}}}function _emscripten_glGetUniformfv(program,location,params){emscriptenWebGLGetUniform(program,location,params,2)}function _emscripten_glGetUniformiv(program,location,params){emscriptenWebGLGetUniform(program,location,params,0)}function _emscripten_glGetVertexAttribPointerv(index,pname,pointer){if(!pointer){GL.recordError(1281);return}HEAP32[pointer>>2]=GLctx.getVertexAttribOffset(index,pname)}function emscriptenWebGLGetVertexAttrib(index,pname,params,type){if(!params){GL.recordError(1281);return}var data=GLctx.getVertexAttrib(index,pname);if(pname==34975){HEAP32[params>>2]=data&&data["name"]}else if(typeof data=="number"||typeof data=="boolean"){switch(type){case 0:HEAP32[params>>2]=data;break;case 2:HEAPF32[params>>2]=data;break;case 5:HEAP32[params>>2]=Math.fround(data);break}}else{for(var i=0;i<data.length;i++){switch(type){case 0:HEAP32[params+i*4>>2]=data[i];break;case 2:HEAPF32[params+i*4>>2]=data[i];break;case 5:HEAP32[params+i*4>>2]=Math.fround(data[i]);break}}}}function _emscripten_glGetVertexAttribfv(index,pname,params){emscriptenWebGLGetVertexAttrib(index,pname,params,2)}function _emscripten_glGetVertexAttribiv(index,pname,params){emscriptenWebGLGetVertexAttrib(index,pname,params,5)}function _emscripten_glHint(x0,x1){GLctx["hint"](x0,x1)}function _emscripten_glIsBuffer(buffer){var b=GL.buffers[buffer];if(!b)return 0;return GLctx.isBuffer(b)}function _emscripten_glIsEnabled(x0){return GLctx["isEnabled"](x0)}function _emscripten_glIsFramebuffer(framebuffer){var fb=GL.framebuffers[framebuffer];if(!fb)return 0;return GLctx.isFramebuffer(fb)}function _emscripten_glIsProgram(program){program=GL.programs[program];if(!program)return 0;return GLctx.isProgram(program)}function _emscripten_glIsQueryEXT(id){var query=GL.timerQueriesEXT[id];if(!query)return 0;return GLctx.disjointTimerQueryExt["isQueryEXT"](query)}function _emscripten_glIsRenderbuffer(renderbuffer){var rb=GL.renderbuffers[renderbuffer];if(!rb)return 0;return GLctx.isRenderbuffer(rb)}function _emscripten_glIsShader(shader){var s=GL.shaders[shader];if(!s)return 0;return GLctx.isShader(s)}function _emscripten_glIsTexture(id){var texture=GL.textures[id];if(!texture)return 0;return GLctx.isTexture(texture)}function _emscripten_glIsVertexArrayOES(array){var vao=GL.vaos[array];if(!vao)return 0;return GLctx["isVertexArray"](vao)}function _emscripten_glLineWidth(x0){GLctx["lineWidth"](x0)}function _emscripten_glLinkProgram(program){GLctx.linkProgram(GL.programs[program]);GL.populateUniformTable(program)}function _emscripten_glPixelStorei(pname,param){if(pname==3317){GL.unpackAlignment=param}GLctx.pixelStorei(pname,param)}function _emscripten_glPolygonOffset(x0,x1){GLctx["polygonOffset"](x0,x1)}function _emscripten_glQueryCounterEXT(id,target){GLctx.disjointTimerQueryExt["queryCounterEXT"](GL.timerQueriesEXT[id],target)}function computeUnpackAlignedImageSize(width,height,sizePerPixel,alignment){function roundedToNextMultipleOf(x,y){return x+y-1&-y}var plainRowSize=width*sizePerPixel;var alignedRowSize=roundedToNextMultipleOf(plainRowSize,alignment);return height*alignedRowSize}function __colorChannelsInGlTextureFormat(format){var colorChannels={5:3,6:4,8:2,29502:3,29504:4};return colorChannels[format-6402]||1}function heapObjectForWebGLType(type){type-=5120;if(type==1)return HEAPU8;if(type==4)return HEAP32;if(type==6)return HEAPF32;if(type==5||type==28922)return HEAPU32;return HEAPU16}function heapAccessShiftForWebGLHeap(heap){return 31-Math.clz32(heap.BYTES_PER_ELEMENT)}function emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat){var heap=heapObjectForWebGLType(type);var shift=heapAccessShiftForWebGLHeap(heap);var byteSize=1<<shift;var sizePerPixel=__colorChannelsInGlTextureFormat(format)*byteSize;var bytes=computeUnpackAlignedImageSize(width,height,sizePerPixel,GL.unpackAlignment);return heap.subarray(pixels>>shift,pixels+bytes>>shift)}function _emscripten_glReadPixels(x,y,width,height,format,type,pixels){var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);return}GLctx.readPixels(x,y,width,height,format,type,pixelData)}function _emscripten_glReleaseShaderCompiler(){}function _emscripten_glRenderbufferStorage(x0,x1,x2,x3){GLctx["renderbufferStorage"](x0,x1,x2,x3)}function _emscripten_glSampleCoverage(value,invert){GLctx.sampleCoverage(value,!!invert)}function _emscripten_glScissor(x0,x1,x2,x3){GLctx["scissor"](x0,x1,x2,x3)}function _emscripten_glShaderBinary(){GL.recordError(1280)}function _emscripten_glShaderSource(shader,count,string,length){var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}function _emscripten_glStencilFunc(x0,x1,x2){GLctx["stencilFunc"](x0,x1,x2)}function _emscripten_glStencilFuncSeparate(x0,x1,x2,x3){GLctx["stencilFuncSeparate"](x0,x1,x2,x3)}function _emscripten_glStencilMask(x0){GLctx["stencilMask"](x0)}function _emscripten_glStencilMaskSeparate(x0,x1){GLctx["stencilMaskSeparate"](x0,x1)}function _emscripten_glStencilOp(x0,x1,x2){GLctx["stencilOp"](x0,x1,x2)}function _emscripten_glStencilOpSeparate(x0,x1,x2,x3){GLctx["stencilOpSeparate"](x0,x1,x2,x3)}function _emscripten_glTexImage2D(target,level,internalFormat,width,height,border,format,type,pixels){GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels?emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat):null)}function _emscripten_glTexParameterf(x0,x1,x2){GLctx["texParameterf"](x0,x1,x2)}function _emscripten_glTexParameterfv(target,pname,params){var param=HEAPF32[params>>2];GLctx.texParameterf(target,pname,param)}function _emscripten_glTexParameteri(x0,x1,x2){GLctx["texParameteri"](x0,x1,x2)}function _emscripten_glTexParameteriv(target,pname,params){var param=HEAP32[params>>2];GLctx.texParameteri(target,pname,param)}function _emscripten_glTexSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixels){var pixelData=null;if(pixels)pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,0);GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixelData)}function _emscripten_glUniform1f(location,v0){GLctx.uniform1f(GL.uniforms[location],v0)}var miniTempWebGLFloatBuffers=[];function _emscripten_glUniform1fv(location,count,value){if(count<=288){var view=miniTempWebGLFloatBuffers[count-1];for(var i=0;i<count;++i){view[i]=HEAPF32[value+4*i>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*4>>2)}GLctx.uniform1fv(GL.uniforms[location],view)}function _emscripten_glUniform1i(location,v0){GLctx.uniform1i(GL.uniforms[location],v0)}var __miniTempWebGLIntBuffers=[];function _emscripten_glUniform1iv(location,count,value){if(count<=288){var view=__miniTempWebGLIntBuffers[count-1];for(var i=0;i<count;++i){view[i]=HEAP32[value+4*i>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*4>>2)}GLctx.uniform1iv(GL.uniforms[location],view)}function _emscripten_glUniform2f(location,v0,v1){GLctx.uniform2f(GL.uniforms[location],v0,v1)}function _emscripten_glUniform2fv(location,count,value){if(count<=144){var view=miniTempWebGLFloatBuffers[2*count-1];for(var i=0;i<2*count;i+=2){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*8>>2)}GLctx.uniform2fv(GL.uniforms[location],view)}function _emscripten_glUniform2i(location,v0,v1){GLctx.uniform2i(GL.uniforms[location],v0,v1)}function _emscripten_glUniform2iv(location,count,value){if(count<=144){var view=__miniTempWebGLIntBuffers[2*count-1];for(var i=0;i<2*count;i+=2){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*8>>2)}GLctx.uniform2iv(GL.uniforms[location],view)}function _emscripten_glUniform3f(location,v0,v1,v2){GLctx.uniform3f(GL.uniforms[location],v0,v1,v2)}function _emscripten_glUniform3fv(location,count,value){if(count<=96){var view=miniTempWebGLFloatBuffers[3*count-1];for(var i=0;i<3*count;i+=3){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*12>>2)}GLctx.uniform3fv(GL.uniforms[location],view)}function _emscripten_glUniform3i(location,v0,v1,v2){GLctx.uniform3i(GL.uniforms[location],v0,v1,v2)}function _emscripten_glUniform3iv(location,count,value){if(count<=96){var view=__miniTempWebGLIntBuffers[3*count-1];for(var i=0;i<3*count;i+=3){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2];view[i+2]=HEAP32[value+(4*i+8)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*12>>2)}GLctx.uniform3iv(GL.uniforms[location],view)}function _emscripten_glUniform4f(location,v0,v1,v2,v3){GLctx.uniform4f(GL.uniforms[location],v0,v1,v2,v3)}function _emscripten_glUniform4fv(location,count,value){if(count<=72){var view=miniTempWebGLFloatBuffers[4*count-1];var heap=HEAPF32;value>>=2;for(var i=0;i<4*count;i+=4){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3]}}else{var view=HEAPF32.subarray(value>>2,value+count*16>>2)}GLctx.uniform4fv(GL.uniforms[location],view)}function _emscripten_glUniform4i(location,v0,v1,v2,v3){GLctx.uniform4i(GL.uniforms[location],v0,v1,v2,v3)}function _emscripten_glUniform4iv(location,count,value){if(count<=72){var view=__miniTempWebGLIntBuffers[4*count-1];for(var i=0;i<4*count;i+=4){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2];view[i+2]=HEAP32[value+(4*i+8)>>2];view[i+3]=HEAP32[value+(4*i+12)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*16>>2)}GLctx.uniform4iv(GL.uniforms[location],view)}function _emscripten_glUniformMatrix2fv(location,count,transpose,value){if(count<=72){var view=miniTempWebGLFloatBuffers[4*count-1];for(var i=0;i<4*count;i+=4){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2];view[i+3]=HEAPF32[value+(4*i+12)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*16>>2)}GLctx.uniformMatrix2fv(GL.uniforms[location],!!transpose,view)}function _emscripten_glUniformMatrix3fv(location,count,transpose,value){if(count<=32){var view=miniTempWebGLFloatBuffers[9*count-1];for(var i=0;i<9*count;i+=9){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2];view[i+3]=HEAPF32[value+(4*i+12)>>2];view[i+4]=HEAPF32[value+(4*i+16)>>2];view[i+5]=HEAPF32[value+(4*i+20)>>2];view[i+6]=HEAPF32[value+(4*i+24)>>2];view[i+7]=HEAPF32[value+(4*i+28)>>2];view[i+8]=HEAPF32[value+(4*i+32)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*36>>2)}GLctx.uniformMatrix3fv(GL.uniforms[location],!!transpose,view)}function _emscripten_glUniformMatrix4fv(location,count,transpose,value){if(count<=18){var view=miniTempWebGLFloatBuffers[16*count-1];var heap=HEAPF32;value>>=2;for(var i=0;i<16*count;i+=16){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3];view[i+4]=heap[dst+4];view[i+5]=heap[dst+5];view[i+6]=heap[dst+6];view[i+7]=heap[dst+7];view[i+8]=heap[dst+8];view[i+9]=heap[dst+9];view[i+10]=heap[dst+10];view[i+11]=heap[dst+11];view[i+12]=heap[dst+12];view[i+13]=heap[dst+13];view[i+14]=heap[dst+14];view[i+15]=heap[dst+15]}}else{var view=HEAPF32.subarray(value>>2,value+count*64>>2)}GLctx.uniformMatrix4fv(GL.uniforms[location],!!transpose,view)}function _emscripten_glUseProgram(program){GLctx.useProgram(GL.programs[program])}function _emscripten_glValidateProgram(program){GLctx.validateProgram(GL.programs[program])}function _emscripten_glVertexAttrib1f(x0,x1){GLctx["vertexAttrib1f"](x0,x1)}function _emscripten_glVertexAttrib1fv(index,v){GLctx.vertexAttrib1f(index,HEAPF32[v>>2])}function _emscripten_glVertexAttrib2f(x0,x1,x2){GLctx["vertexAttrib2f"](x0,x1,x2)}function _emscripten_glVertexAttrib2fv(index,v){GLctx.vertexAttrib2f(index,HEAPF32[v>>2],HEAPF32[v+4>>2])}function _emscripten_glVertexAttrib3f(x0,x1,x2,x3){GLctx["vertexAttrib3f"](x0,x1,x2,x3)}function _emscripten_glVertexAttrib3fv(index,v){GLctx.vertexAttrib3f(index,HEAPF32[v>>2],HEAPF32[v+4>>2],HEAPF32[v+8>>2])}function _emscripten_glVertexAttrib4f(x0,x1,x2,x3,x4){GLctx["vertexAttrib4f"](x0,x1,x2,x3,x4)}function _emscripten_glVertexAttrib4fv(index,v){GLctx.vertexAttrib4f(index,HEAPF32[v>>2],HEAPF32[v+4>>2],HEAPF32[v+8>>2],HEAPF32[v+12>>2])}function _emscripten_glVertexAttribDivisorANGLE(index,divisor){GLctx["vertexAttribDivisor"](index,divisor)}function _emscripten_glVertexAttribPointer(index,size,type,normalized,stride,ptr){GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}function _emscripten_glViewport(x0,x1,x2,x3){GLctx["viewport"](x0,x1,x2,x3)}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function abortOnCannotGrowMemory(requestedSize){abort("OOM")}function _emscripten_resize_heap(requestedSize){abortOnCannotGrowMemory(requestedSize)}function _emscripten_run_script(ptr){eval(UTF8ToString(ptr))}function _emscripten_sample_gamepad_data(){return(JSEvents.lastGamepadState=navigator.getGamepads?navigator.getGamepads():navigator.webkitGetGamepads?navigator.webkitGetGamepads():null)?0:-1}function fillMouseEventData(eventStruct,e,target){var idx=eventStruct>>2;HEAP32[idx+0]=e.screenX;HEAP32[idx+1]=e.screenY;HEAP32[idx+2]=e.clientX;HEAP32[idx+3]=e.clientY;HEAP32[idx+4]=e.ctrlKey;HEAP32[idx+5]=e.shiftKey;HEAP32[idx+6]=e.altKey;HEAP32[idx+7]=e.metaKey;HEAP16[idx*2+16]=e.button;HEAP16[idx*2+17]=e.buttons;HEAP32[idx+9]=e["movementX"];HEAP32[idx+10]=e["movementY"];var rect=getBoundingClientRect(target);HEAP32[idx+11]=e.clientX-rect.left;HEAP32[idx+12]=e.clientY-rect.top}function registerMouseEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.mouseEvent)JSEvents.mouseEvent=_malloc(64);target=findEventTarget(target);var mouseEventHandlerFunc=function(ev){var e=ev||event;fillMouseEventData(JSEvents.mouseEvent,e,target);if(wasmTable.get(callbackfunc)(eventTypeId,JSEvents.mouseEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:eventTypeString!="mousemove"&&eventTypeString!="mouseenter"&&eventTypeString!="mouseleave",eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:mouseEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_click_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,4,"click",targetThread);return 0}function fillFullscreenChangeEventData(eventStruct){var fullscreenElement=document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement||document.msFullscreenElement;var isFullscreen=!!fullscreenElement;HEAP32[eventStruct>>2]=isFullscreen;HEAP32[eventStruct+4>>2]=JSEvents.fullscreenEnabled();var reportedElement=isFullscreen?fullscreenElement:JSEvents.previousFullscreenElement;var nodeName=JSEvents.getNodeNameForTarget(reportedElement);var id=reportedElement&&reportedElement.id?reportedElement.id:"";stringToUTF8(nodeName,eventStruct+8,128);stringToUTF8(id,eventStruct+136,128);HEAP32[eventStruct+264>>2]=reportedElement?reportedElement.clientWidth:0;HEAP32[eventStruct+268>>2]=reportedElement?reportedElement.clientHeight:0;HEAP32[eventStruct+272>>2]=screen.width;HEAP32[eventStruct+276>>2]=screen.height;if(isFullscreen){JSEvents.previousFullscreenElement=fullscreenElement}}function registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.fullscreenChangeEvent)JSEvents.fullscreenChangeEvent=_malloc(280);var fullscreenChangeEventhandlerFunc=function(ev){var e=ev||event;var fullscreenChangeEvent=JSEvents.fullscreenChangeEvent;fillFullscreenChangeEventData(fullscreenChangeEvent);if(wasmTable.get(callbackfunc)(eventTypeId,fullscreenChangeEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:fullscreenChangeEventhandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_fullscreenchange_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){if(!JSEvents.fullscreenEnabled())return-1;target=findEventTarget(target);if(!target)return-4;registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,19,"fullscreenchange",targetThread);registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,19,"webkitfullscreenchange",targetThread);return 0}function registerGamepadEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.gamepadEvent)JSEvents.gamepadEvent=_malloc(1432);var gamepadEventHandlerFunc=function(ev){var e=ev||event;var gamepadEvent=JSEvents.gamepadEvent;fillGamepadEventData(gamepadEvent,e["gamepad"]);if(wasmTable.get(callbackfunc)(eventTypeId,gamepadEvent,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:gamepadEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_gamepadconnected_callback_on_thread(userData,useCapture,callbackfunc,targetThread){if(!navigator.getGamepads&&!navigator.webkitGetGamepads)return-1;registerGamepadEventCallback(2,userData,useCapture,callbackfunc,26,"gamepadconnected",targetThread);return 0}function _emscripten_set_gamepaddisconnected_callback_on_thread(userData,useCapture,callbackfunc,targetThread){if(!navigator.getGamepads&&!navigator.webkitGetGamepads)return-1;registerGamepadEventCallback(2,userData,useCapture,callbackfunc,27,"gamepaddisconnected",targetThread);return 0}function registerKeyEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.keyEvent)JSEvents.keyEvent=_malloc(164);var keyEventHandlerFunc=function(e){var keyEventData=JSEvents.keyEvent;var idx=keyEventData>>2;HEAP32[idx+0]=e.location;HEAP32[idx+1]=e.ctrlKey;HEAP32[idx+2]=e.shiftKey;HEAP32[idx+3]=e.altKey;HEAP32[idx+4]=e.metaKey;HEAP32[idx+5]=e.repeat;HEAP32[idx+6]=e.charCode;HEAP32[idx+7]=e.keyCode;HEAP32[idx+8]=e.which;stringToUTF8(e.key||"",keyEventData+36,32);stringToUTF8(e.code||"",keyEventData+68,32);stringToUTF8(e.char||"",keyEventData+100,32);stringToUTF8(e.locale||"",keyEventData+132,32);if(wasmTable.get(callbackfunc)(eventTypeId,keyEventData,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:keyEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_keydown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,2,"keydown",targetThread);return 0}var Browser={mainLoop:{scheduler:null,method:"",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause:function(){Browser.mainLoop.scheduler=null;Browser.mainLoop.currentlyRunningMainloop++},resume:function(){Browser.mainLoop.currentlyRunningMainloop++;var timingMode=Browser.mainLoop.timingMode;var timingValue=Browser.mainLoop.timingValue;var func=Browser.mainLoop.func;Browser.mainLoop.func=null;setMainLoop(func,0,false,Browser.mainLoop.arg,true);_emscripten_set_main_loop_timing(timingMode,timingValue);Browser.mainLoop.scheduler()},updateStatus:function(){if(Module["setStatus"]){var message=Module["statusMessage"]||"Please wait...";var remaining=Browser.mainLoop.remainingBlockers;var expected=Browser.mainLoop.expectedBlockers;if(remaining){if(remaining<expected){Module["setStatus"](message+" ("+(expected-remaining)+"/"+expected+")")}else{Module["setStatus"](message)}}else{Module["setStatus"]("")}}},runIter:function(func){if(ABORT)return;if(Module["preMainLoop"]){var preRet=Module["preMainLoop"]();if(preRet===false){return}}try{func()}catch(e){if(e instanceof ExitStatus){return}else if(e=="unwind"){return}else{if(e&&typeof e==="object"&&e.stack)err("exception thrown: "+[e,e.stack]);throw e}}if(Module["postMainLoop"])Module["postMainLoop"]()}},isFullscreen:false,pointerLock:false,moduleContextCreatedCallbacks:[],workers:[],init:function(){if(!Module["preloadPlugins"])Module["preloadPlugins"]=[];if(Browser.initted)return;Browser.initted=true;try{new Blob;Browser.hasBlobConstructor=true}catch(e){Browser.hasBlobConstructor=false;console.log("warning: no blob constructor, cannot create blobs with mimetypes")}Browser.BlobBuilder=typeof MozBlobBuilder!="undefined"?MozBlobBuilder:typeof WebKitBlobBuilder!="undefined"?WebKitBlobBuilder:!Browser.hasBlobConstructor?console.log("warning: no BlobBuilder"):null;Browser.URLObject=typeof window!="undefined"?window.URL?window.URL:window.webkitURL:undefined;if(!Module.noImageDecoding&&typeof Browser.URLObject==="undefined"){console.log("warning: Browser does not support creating object URLs. Built-in browser image decoding will not be available.");Module.noImageDecoding=true}var imagePlugin={};imagePlugin["canHandle"]=function imagePlugin_canHandle(name){return!Module.noImageDecoding&&/\.(jpg|jpeg|png|bmp)$/i.test(name)};imagePlugin["handle"]=function imagePlugin_handle(byteArray,name,onload,onerror){var b=null;if(Browser.hasBlobConstructor){try{b=new Blob([byteArray],{type:Browser.getMimetype(name)});if(b.size!==byteArray.length){b=new Blob([new Uint8Array(byteArray).buffer],{type:Browser.getMimetype(name)})}}catch(e){warnOnce("Blob constructor present but fails: "+e+"; falling back to blob builder")}}if(!b){var bb=new Browser.BlobBuilder;bb.append(new Uint8Array(byteArray).buffer);b=bb.getBlob()}var url=Browser.URLObject.createObjectURL(b);var img=new Image;img.onload=function img_onload(){assert(img.complete,"Image "+name+" could not be decoded");var canvas=document.createElement("canvas");canvas.width=img.width;canvas.height=img.height;var ctx=canvas.getContext("2d");ctx.drawImage(img,0,0);Module["preloadedImages"][name]=canvas;Browser.URLObject.revokeObjectURL(url);if(onload)onload(byteArray)};img.onerror=function img_onerror(event){console.log("Image "+url+" could not be decoded");if(onerror)onerror()};img.src=url};Module["preloadPlugins"].push(imagePlugin);var audioPlugin={};audioPlugin["canHandle"]=function audioPlugin_canHandle(name){return!Module.noAudioDecoding&&name.substr(-4)in{".ogg":1,".wav":1,".mp3":1}};audioPlugin["handle"]=function audioPlugin_handle(byteArray,name,onload,onerror){var done=false;function finish(audio){if(done)return;done=true;Module["preloadedAudios"][name]=audio;if(onload)onload(byteArray)}function fail(){if(done)return;done=true;Module["preloadedAudios"][name]=new Audio;if(onerror)onerror()}if(Browser.hasBlobConstructor){try{var b=new Blob([byteArray],{type:Browser.getMimetype(name)})}catch(e){return fail()}var url=Browser.URLObject.createObjectURL(b);var audio=new Audio;audio.addEventListener("canplaythrough",function(){finish(audio)},false);audio.onerror=function audio_onerror(event){if(done)return;console.log("warning: browser could not fully decode audio "+name+", trying slower base64 approach");function encode64(data){var BASE="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var PAD="=";var ret="";var leftchar=0;var leftbits=0;for(var i=0;i<data.length;i++){leftchar=leftchar<<8|data[i];leftbits+=8;while(leftbits>=6){var curr=leftchar>>leftbits-6&63;leftbits-=6;ret+=BASE[curr]}}if(leftbits==2){ret+=BASE[(leftchar&3)<<4];ret+=PAD+PAD}else if(leftbits==4){ret+=BASE[(leftchar&15)<<2];ret+=PAD}return ret}audio.src="data:audio/x-"+name.substr(-3)+";base64,"+encode64(byteArray);finish(audio)};audio.src=url;Browser.safeSetTimeout(function(){finish(audio)},1e4)}else{return fail()}};Module["preloadPlugins"].push(audioPlugin);function pointerLockChange(){Browser.pointerLock=document["pointerLockElement"]===Module["canvas"]||document["mozPointerLockElement"]===Module["canvas"]||document["webkitPointerLockElement"]===Module["canvas"]||document["msPointerLockElement"]===Module["canvas"]}var canvas=Module["canvas"];if(canvas){canvas.requestPointerLock=canvas["requestPointerLock"]||canvas["mozRequestPointerLock"]||canvas["webkitRequestPointerLock"]||canvas["msRequestPointerLock"]||function(){};canvas.exitPointerLock=document["exitPointerLock"]||document["mozExitPointerLock"]||document["webkitExitPointerLock"]||document["msExitPointerLock"]||function(){};canvas.exitPointerLock=canvas.exitPointerLock.bind(document);document.addEventListener("pointerlockchange",pointerLockChange,false);document.addEventListener("mozpointerlockchange",pointerLockChange,false);document.addEventListener("webkitpointerlockchange",pointerLockChange,false);document.addEventListener("mspointerlockchange",pointerLockChange,false);if(Module["elementPointerLock"]){canvas.addEventListener("click",function(ev){if(!Browser.pointerLock&&Module["canvas"].requestPointerLock){Module["canvas"].requestPointerLock();ev.preventDefault()}},false)}}},createContext:function(canvas,useWebGL,setInModule,webGLContextAttributes){if(useWebGL&&Module.ctx&&canvas==Module.canvas)return Module.ctx;var ctx;var contextHandle;if(useWebGL){var contextAttributes={antialias:false,alpha:false,majorVersion:1};if(webGLContextAttributes){for(var attribute in webGLContextAttributes){contextAttributes[attribute]=webGLContextAttributes[attribute]}}if(typeof GL!=="undefined"){contextHandle=GL.createContext(canvas,contextAttributes);if(contextHandle){ctx=GL.getContext(contextHandle).GLctx}}}else{ctx=canvas.getContext("2d")}if(!ctx)return null;if(setInModule){if(!useWebGL)assert(typeof GLctx==="undefined","cannot set in module if GLctx is used, but we are a non-GL context that would replace it");Module.ctx=ctx;if(useWebGL)GL.makeContextCurrent(contextHandle);Module.useWebGL=useWebGL;Browser.moduleContextCreatedCallbacks.forEach(function(callback){callback()});Browser.init()}return ctx},destroyContext:function(canvas,useWebGL,setInModule){},fullscreenHandlersInstalled:false,lockPointer:undefined,resizeCanvas:undefined,requestFullscreen:function(lockPointer,resizeCanvas){Browser.lockPointer=lockPointer;Browser.resizeCanvas=resizeCanvas;if(typeof Browser.lockPointer==="undefined")Browser.lockPointer=true;if(typeof Browser.resizeCanvas==="undefined")Browser.resizeCanvas=false;var canvas=Module["canvas"];function fullscreenChange(){Browser.isFullscreen=false;var canvasContainer=canvas.parentNode;if((document["fullscreenElement"]||document["mozFullScreenElement"]||document["msFullscreenElement"]||document["webkitFullscreenElement"]||document["webkitCurrentFullScreenElement"])===canvasContainer){canvas.exitFullscreen=Browser.exitFullscreen;if(Browser.lockPointer)canvas.requestPointerLock();Browser.isFullscreen=true;if(Browser.resizeCanvas){Browser.setFullscreenCanvasSize()}else{Browser.updateCanvasDimensions(canvas)}}else{canvasContainer.parentNode.insertBefore(canvas,canvasContainer);canvasContainer.parentNode.removeChild(canvasContainer);if(Browser.resizeCanvas){Browser.setWindowedCanvasSize()}else{Browser.updateCanvasDimensions(canvas)}}if(Module["onFullScreen"])Module["onFullScreen"](Browser.isFullscreen);if(Module["onFullscreen"])Module["onFullscreen"](Browser.isFullscreen)}if(!Browser.fullscreenHandlersInstalled){Browser.fullscreenHandlersInstalled=true;document.addEventListener("fullscreenchange",fullscreenChange,false);document.addEventListener("mozfullscreenchange",fullscreenChange,false);document.addEventListener("webkitfullscreenchange",fullscreenChange,false);document.addEventListener("MSFullscreenChange",fullscreenChange,false)}var canvasContainer=document.createElement("div");canvas.parentNode.insertBefore(canvasContainer,canvas);canvasContainer.appendChild(canvas);canvasContainer.requestFullscreen=canvasContainer["requestFullscreen"]||canvasContainer["mozRequestFullScreen"]||canvasContainer["msRequestFullscreen"]||(canvasContainer["webkitRequestFullscreen"]?function(){canvasContainer["webkitRequestFullscreen"](Element["ALLOW_KEYBOARD_INPUT"])}:null)||(canvasContainer["webkitRequestFullScreen"]?function(){canvasContainer["webkitRequestFullScreen"](Element["ALLOW_KEYBOARD_INPUT"])}:null);canvasContainer.requestFullscreen()},exitFullscreen:function(){if(!Browser.isFullscreen){return false}var CFS=document["exitFullscreen"]||document["cancelFullScreen"]||document["mozCancelFullScreen"]||document["msExitFullscreen"]||document["webkitCancelFullScreen"]||function(){};CFS.apply(document,[]);return true},nextRAF:0,fakeRequestAnimationFrame:function(func){var now=Date.now();if(Browser.nextRAF===0){Browser.nextRAF=now+1e3/60}else{while(now+2>=Browser.nextRAF){Browser.nextRAF+=1e3/60}}var delay=Math.max(Browser.nextRAF-now,0);setTimeout(func,delay)},requestAnimationFrame:function(func){if(typeof requestAnimationFrame==="function"){requestAnimationFrame(func);return}var RAF=Browser.fakeRequestAnimationFrame;RAF(func)},safeRequestAnimationFrame:function(func){return Browser.requestAnimationFrame(function(){if(ABORT)return;func()})},safeSetTimeout:function(func,timeout){noExitRuntime=true;return setTimeout(function(){if(ABORT)return;func()},timeout)},getMimetype:function(name){return{"jpg":"image/jpeg","jpeg":"image/jpeg","png":"image/png","bmp":"image/bmp","ogg":"audio/ogg","wav":"audio/wav","mp3":"audio/mpeg"}[name.substr(name.lastIndexOf(".")+1)]},getUserMedia:function(func){if(!window.getUserMedia){window.getUserMedia=navigator["getUserMedia"]||navigator["mozGetUserMedia"]}window.getUserMedia(func)},getMovementX:function(event){return event["movementX"]||event["mozMovementX"]||event["webkitMovementX"]||0},getMovementY:function(event){return event["movementY"]||event["mozMovementY"]||event["webkitMovementY"]||0},getMouseWheelDelta:function(event){var delta=0;switch(event.type){case"DOMMouseScroll":delta=event.detail/3;break;case"mousewheel":delta=event.wheelDelta/120;break;case"wheel":delta=event.deltaY;switch(event.deltaMode){case 0:delta/=100;break;case 1:delta/=3;break;case 2:delta*=80;break;default:throw"unrecognized mouse wheel delta mode: "+event.deltaMode}break;default:throw"unrecognized mouse wheel event: "+event.type}return delta},mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,touches:{},lastTouches:{},calculateMouseEvent:function(event){if(Browser.pointerLock){if(event.type!="mousemove"&&"mozMovementX"in event){Browser.mouseMovementX=Browser.mouseMovementY=0}else{Browser.mouseMovementX=Browser.getMovementX(event);Browser.mouseMovementY=Browser.getMovementY(event)}if(typeof SDL!="undefined"){Browser.mouseX=SDL.mouseX+Browser.mouseMovementX;Browser.mouseY=SDL.mouseY+Browser.mouseMovementY}else{Browser.mouseX+=Browser.mouseMovementX;Browser.mouseY+=Browser.mouseMovementY}}else{var rect=Module["canvas"].getBoundingClientRect();var cw=Module["canvas"].width;var ch=Module["canvas"].height;var scrollX=typeof window.scrollX!=="undefined"?window.scrollX:window.pageXOffset;var scrollY=typeof window.scrollY!=="undefined"?window.scrollY:window.pageYOffset;if(event.type==="touchstart"||event.type==="touchend"||event.type==="touchmove"){var touch=event.touch;if(touch===undefined){return}var adjustedX=touch.pageX-(scrollX+rect.left);var adjustedY=touch.pageY-(scrollY+rect.top);adjustedX=adjustedX*(cw/rect.width);adjustedY=adjustedY*(ch/rect.height);var coords={x:adjustedX,y:adjustedY};if(event.type==="touchstart"){Browser.lastTouches[touch.identifier]=coords;Browser.touches[touch.identifier]=coords}else if(event.type==="touchend"||event.type==="touchmove"){var last=Browser.touches[touch.identifier];if(!last)last=coords;Browser.lastTouches[touch.identifier]=last;Browser.touches[touch.identifier]=coords}return}var x=event.pageX-(scrollX+rect.left);var y=event.pageY-(scrollY+rect.top);x=x*(cw/rect.width);y=y*(ch/rect.height);Browser.mouseMovementX=x-Browser.mouseX;Browser.mouseMovementY=y-Browser.mouseY;Browser.mouseX=x;Browser.mouseY=y}},asyncLoad:function(url,onload,onerror,noRunDep){var dep=!noRunDep?getUniqueRunDependency("al "+url):"";readAsync(url,function(arrayBuffer){assert(arrayBuffer,'Loading data file "'+url+'" failed (no arrayBuffer).');onload(new Uint8Array(arrayBuffer));if(dep)removeRunDependency(dep)},function(event){if(onerror){onerror()}else{throw'Loading data file "'+url+'" failed.'}});if(dep)addRunDependency(dep)},resizeListeners:[],updateResizeListeners:function(){var canvas=Module["canvas"];Browser.resizeListeners.forEach(function(listener){listener(canvas.width,canvas.height)})},setCanvasSize:function(width,height,noUpdates){var canvas=Module["canvas"];Browser.updateCanvasDimensions(canvas,width,height);if(!noUpdates)Browser.updateResizeListeners()},windowedWidth:0,windowedHeight:0,setFullscreenCanvasSize:function(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>2];flags=flags|8388608;HEAP32[SDL.screen>>2]=flags}Browser.updateCanvasDimensions(Module["canvas"]);Browser.updateResizeListeners()},setWindowedCanvasSize:function(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>2];flags=flags&~8388608;HEAP32[SDL.screen>>2]=flags}Browser.updateCanvasDimensions(Module["canvas"]);Browser.updateResizeListeners()},updateCanvasDimensions:function(canvas,wNative,hNative){if(wNative&&hNative){canvas.widthNative=wNative;canvas.heightNative=hNative}else{wNative=canvas.widthNative;hNative=canvas.heightNative}var w=wNative;var h=hNative;if(Module["forcedAspectRatio"]&&Module["forcedAspectRatio"]>0){if(w/h<Module["forcedAspectRatio"]){w=Math.round(h*Module["forcedAspectRatio"])}else{h=Math.round(w/Module["forcedAspectRatio"])}}if((document["fullscreenElement"]||document["mozFullScreenElement"]||document["msFullscreenElement"]||document["webkitFullscreenElement"]||document["webkitCurrentFullScreenElement"])===canvas.parentNode&&typeof screen!="undefined"){var factor=Math.min(screen.width/w,screen.height/h);w=Math.round(w*factor);h=Math.round(h*factor)}if(Browser.resizeCanvas){if(canvas.width!=w)canvas.width=w;if(canvas.height!=h)canvas.height=h;if(typeof canvas.style!="undefined"){canvas.style.removeProperty("width");canvas.style.removeProperty("height")}}else{if(canvas.width!=wNative)canvas.width=wNative;if(canvas.height!=hNative)canvas.height=hNative;if(typeof canvas.style!="undefined"){if(w!=wNative||h!=hNative){canvas.style.setProperty("width",w+"px","important");canvas.style.setProperty("height",h+"px","important")}else{canvas.style.removeProperty("width");canvas.style.removeProperty("height")}}}},wgetRequests:{},nextWgetRequestHandle:0,getNextWgetRequestHandle:function(){var handle=Browser.nextWgetRequestHandle;Browser.nextWgetRequestHandle++;return handle}};function _emscripten_set_main_loop_timing(mode,value){Browser.mainLoop.timingMode=mode;Browser.mainLoop.timingValue=value;if(!Browser.mainLoop.func){return 1}if(mode==0){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setTimeout(){var timeUntilNextTick=Math.max(0,Browser.mainLoop.tickStartTime+value-_emscripten_get_now())|0;setTimeout(Browser.mainLoop.runner,timeUntilNextTick)};Browser.mainLoop.method="timeout"}else if(mode==1){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_rAF(){Browser.requestAnimationFrame(Browser.mainLoop.runner)};Browser.mainLoop.method="rAF"}else if(mode==2){if(typeof setImmediate==="undefined"){var setImmediates=[];var emscriptenMainLoopMessageId="setimmediate";var Browser_setImmediate_messageHandler=function(event){if(event.data===emscriptenMainLoopMessageId||event.data.target===emscriptenMainLoopMessageId){event.stopPropagation();setImmediates.shift()()}};addEventListener("message",Browser_setImmediate_messageHandler,true);setImmediate=function Browser_emulated_setImmediate(func){setImmediates.push(func);if(ENVIRONMENT_IS_WORKER){if(Module["setImmediates"]===undefined)Module["setImmediates"]=[];Module["setImmediates"].push(func);postMessage({target:emscriptenMainLoopMessageId})}else postMessage(emscriptenMainLoopMessageId,"*")}}Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setImmediate(){setImmediate(Browser.mainLoop.runner)};Browser.mainLoop.method="immediate"}return 0}var _emscripten_get_now;if(ENVIRONMENT_IS_NODE){_emscripten_get_now=function(){var t=process["hrtime"]();return t[0]*1e3+t[1]/1e6}}else if(typeof dateNow!=="undefined"){_emscripten_get_now=dateNow}else _emscripten_get_now=function(){return performance.now()};function setMainLoop(browserIterationFunc,fps,simulateInfiniteLoop,arg,noSetTiming){noExitRuntime=true;assert(!Browser.mainLoop.func,"emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters.");Browser.mainLoop.func=browserIterationFunc;Browser.mainLoop.arg=arg;var thisMainLoopId=Browser.mainLoop.currentlyRunningMainloop;Browser.mainLoop.runner=function Browser_mainLoop_runner(){if(ABORT)return;if(Browser.mainLoop.queue.length>0){var start=Date.now();var blocker=Browser.mainLoop.queue.shift();blocker.func(blocker.arg);if(Browser.mainLoop.remainingBlockers){var remaining=Browser.mainLoop.remainingBlockers;var next=remaining%1==0?remaining-1:Math.floor(remaining);if(blocker.counted){Browser.mainLoop.remainingBlockers=next}else{next=next+.5;Browser.mainLoop.remainingBlockers=(8*remaining+next)/9}}console.log('main loop blocker "'+blocker.name+'" took '+(Date.now()-start)+" ms");Browser.mainLoop.updateStatus();if(thisMainLoopId<Browser.mainLoop.currentlyRunningMainloop)return;setTimeout(Browser.mainLoop.runner,0);return}if(thisMainLoopId<Browser.mainLoop.currentlyRunningMainloop)return;Browser.mainLoop.currentFrameNumber=Browser.mainLoop.currentFrameNumber+1|0;if(Browser.mainLoop.timingMode==1&&Browser.mainLoop.timingValue>1&&Browser.mainLoop.currentFrameNumber%Browser.mainLoop.timingValue!=0){Browser.mainLoop.scheduler();return}else if(Browser.mainLoop.timingMode==0){Browser.mainLoop.tickStartTime=_emscripten_get_now()}Browser.mainLoop.runIter(browserIterationFunc);if(thisMainLoopId<Browser.mainLoop.currentlyRunningMainloop)return;if(typeof SDL==="object"&&SDL.audio&&SDL.audio.queueNewAudioData)SDL.audio.queueNewAudioData();Browser.mainLoop.scheduler()};if(!noSetTiming){if(fps&&fps>0)_emscripten_set_main_loop_timing(0,1e3/fps);else _emscripten_set_main_loop_timing(1,1);Browser.mainLoop.scheduler()}if(simulateInfiniteLoop){throw"unwind"}}function _emscripten_set_main_loop(func,fps,simulateInfiniteLoop){var browserIterationFunc=wasmTable.get(func);setMainLoop(browserIterationFunc,fps,simulateInfiniteLoop)}function registerTouchEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.touchEvent)JSEvents.touchEvent=_malloc(1684);target=findEventTarget(target);var touchEventHandlerFunc=function(e){var touches={};var et=e.touches;for(var i=0;i<et.length;++i){var touch=et[i];touches[touch.identifier]=touch}et=e.changedTouches;for(var i=0;i<et.length;++i){var touch=et[i];touch.isChanged=1;touches[touch.identifier]=touch}et=e.targetTouches;for(var i=0;i<et.length;++i){touches[et[i].identifier].onTarget=1}var touchEvent=JSEvents.touchEvent;var idx=touchEvent>>2;HEAP32[idx+1]=e.ctrlKey;HEAP32[idx+2]=e.shiftKey;HEAP32[idx+3]=e.altKey;HEAP32[idx+4]=e.metaKey;idx+=5;var targetRect=getBoundingClientRect(target);var numTouches=0;for(var i in touches){var t=touches[i];HEAP32[idx+0]=t.identifier;HEAP32[idx+1]=t.screenX;HEAP32[idx+2]=t.screenY;HEAP32[idx+3]=t.clientX;HEAP32[idx+4]=t.clientY;HEAP32[idx+5]=t.pageX;HEAP32[idx+6]=t.pageY;HEAP32[idx+7]=t.isChanged;HEAP32[idx+8]=t.onTarget;HEAP32[idx+9]=t.clientX-targetRect.left;HEAP32[idx+10]=t.clientY-targetRect.top;idx+=13;if(++numTouches>31){break}}HEAP32[touchEvent>>2]=numTouches;if(wasmTable.get(callbackfunc)(eventTypeId,touchEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:eventTypeString=="touchstart"||eventTypeString=="touchend",eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:touchEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_touchcancel_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerTouchEventCallback(target,userData,useCapture,callbackfunc,25,"touchcancel",targetThread);return 0}function _emscripten_set_touchend_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerTouchEventCallback(target,userData,useCapture,callbackfunc,23,"touchend",targetThread);return 0}function _emscripten_set_touchmove_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerTouchEventCallback(target,userData,useCapture,callbackfunc,24,"touchmove",targetThread);return 0}function _emscripten_set_touchstart_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerTouchEventCallback(target,userData,useCapture,callbackfunc,22,"touchstart",targetThread);return 0}function _emscripten_thread_sleep(msecs){var start=_emscripten_get_now();while(_emscripten_get_now()-start<msecs){}}function _exit(status){exit(status)}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_read(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doReadv(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var stream=SYSCALLS.getStreamFromFD(fd);var HIGH_OFFSET=4294967296;var offset=offset_high*HIGH_OFFSET+(offset_low>>>0);var DOUBLE_LIMIT=9007199254740992;if(offset<=-DOUBLE_LIMIT||offset>=DOUBLE_LIMIT){return-61}FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doWritev(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _glActiveTexture(x0){GLctx["activeTexture"](x0)}function _glAttachShader(program,shader){GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _glBindAttribLocation(program,index,name){GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))}function _glBindBuffer(target,buffer){GLctx.bindBuffer(target,GL.buffers[buffer])}function _glBindTexture(target,texture){GLctx.bindTexture(target,GL.textures[texture])}function _glBlendFunc(x0,x1){GLctx["blendFunc"](x0,x1)}function _glBufferData(target,size,data,usage){GLctx.bufferData(target,data?HEAPU8.subarray(data,data+size):size,usage)}function _glBufferSubData(target,offset,size,data){GLctx.bufferSubData(target,offset,HEAPU8.subarray(data,data+size))}function _glClear(x0){GLctx["clear"](x0)}function _glClearColor(x0,x1,x2,x3){GLctx["clearColor"](x0,x1,x2,x3)}function _glClearDepthf(x0){GLctx["clearDepth"](x0)}function _glCompileShader(shader){GLctx.compileShader(GL.shaders[shader])}function _glCompressedTexImage2D(target,level,internalFormat,width,height,border,imageSize,data){GLctx["compressedTexImage2D"](target,level,internalFormat,width,height,border,data?HEAPU8.subarray(data,data+imageSize):null)}function _glCreateProgram(){var id=GL.getNewId(GL.programs);var program=GLctx.createProgram();program.name=id;GL.programs[id]=program;return id}function _glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}function _glCullFace(x0){GLctx["cullFace"](x0)}function _glDeleteBuffers(n,buffers){for(var i=0;i<n;i++){var id=HEAP32[buffers+i*4>>2];var buffer=GL.buffers[id];if(!buffer)continue;GLctx.deleteBuffer(buffer);buffer.name=0;GL.buffers[id]=null}}function _glDeleteProgram(id){if(!id)return;var program=GL.programs[id];if(!program){GL.recordError(1281);return}GLctx.deleteProgram(program);program.name=0;GL.programs[id]=null;GL.programInfos[id]=null}function _glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}function _glDeleteTextures(n,textures){for(var i=0;i<n;i++){var id=HEAP32[textures+i*4>>2];var texture=GL.textures[id];if(!texture)continue;GLctx.deleteTexture(texture);texture.name=0;GL.textures[id]=null}}function _glDepthFunc(x0){GLctx["depthFunc"](x0)}function _glDetachShader(program,shader){GLctx.detachShader(GL.programs[program],GL.shaders[shader])}function _glDisable(x0){GLctx["disable"](x0)}function _glDisableVertexAttribArray(index){GLctx.disableVertexAttribArray(index)}function _glDrawArrays(mode,first,count){GLctx.drawArrays(mode,first,count)}function _glDrawElements(mode,count,type,indices){GLctx.drawElements(mode,count,type,indices)}function _glEnable(x0){GLctx["enable"](x0)}function _glEnableVertexAttribArray(index){GLctx.enableVertexAttribArray(index)}function _glFrontFace(x0){GLctx["frontFace"](x0)}function _glGenBuffers(n,buffers){__glGenObject(n,buffers,"createBuffer",GL.buffers)}function _glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures)}function _glGetAttribLocation(program,name){return GLctx.getAttribLocation(GL.programs[program],UTF8ToString(name))}function _glGetFloatv(name_,p){emscriptenWebGLGet(name_,p,2)}function _glGetProgramInfoLog(program,maxLength,length,infoLog){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _glGetProgramiv(program,pname,p){if(!p){GL.recordError(1281);return}if(program>=GL.counter){GL.recordError(1281);return}var ptable=GL.programInfos[program];if(!ptable){GL.recordError(1282);return}if(pname==35716){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";HEAP32[p>>2]=log.length+1}else if(pname==35719){HEAP32[p>>2]=ptable.maxUniformLength}else if(pname==35722){if(ptable.maxAttributeLength==-1){program=GL.programs[program];var numAttribs=GLctx.getProgramParameter(program,35721);ptable.maxAttributeLength=0;for(var i=0;i<numAttribs;++i){var activeAttrib=GLctx.getActiveAttrib(program,i);ptable.maxAttributeLength=Math.max(ptable.maxAttributeLength,activeAttrib.name.length+1)}}HEAP32[p>>2]=ptable.maxAttributeLength}else if(pname==35381){if(ptable.maxUniformBlockNameLength==-1){program=GL.programs[program];var numBlocks=GLctx.getProgramParameter(program,35382);ptable.maxUniformBlockNameLength=0;for(var i=0;i<numBlocks;++i){var activeBlockName=GLctx.getActiveUniformBlockName(program,i);ptable.maxUniformBlockNameLength=Math.max(ptable.maxUniformBlockNameLength,activeBlockName.length+1)}}HEAP32[p>>2]=ptable.maxUniformBlockNameLength}else{HEAP32[p>>2]=GLctx.getProgramParameter(GL.programs[program],pname)}}function _glGetShaderInfoLog(shader,maxLength,length,infoLog){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _glGetShaderiv(shader,pname,p){if(!p){GL.recordError(1281);return}if(pname==35716){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var logLength=log?log.length+1:0;HEAP32[p>>2]=logLength}else if(pname==35720){var source=GLctx.getShaderSource(GL.shaders[shader]);var sourceLength=source?source.length+1:0;HEAP32[p>>2]=sourceLength}else{HEAP32[p>>2]=GLctx.getShaderParameter(GL.shaders[shader],pname)}}function _glGetString(name_){if(GL.stringCache[name_])return GL.stringCache[name_];var ret;switch(name_){case 7939:var exts=GLctx.getSupportedExtensions()||[];exts=exts.concat(exts.map(function(e){return"GL_"+e}));ret=stringToNewUTF8(exts.join(" "));break;case 7936:case 7937:case 37445:case 37446:var s=GLctx.getParameter(name_);if(!s){GL.recordError(1280)}ret=stringToNewUTF8(s);break;case 7938:var glVersion=GLctx.getParameter(7938);{glVersion="OpenGL ES 2.0 ("+glVersion+")"}ret=stringToNewUTF8(glVersion);break;case 35724:var glslVersion=GLctx.getParameter(35724);var ver_re=/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/;var ver_num=glslVersion.match(ver_re);if(ver_num!==null){if(ver_num[1].length==3)ver_num[1]=ver_num[1]+"0";glslVersion="OpenGL ES GLSL ES "+ver_num[1]+" ("+glslVersion+")"}ret=stringToNewUTF8(glslVersion);break;default:GL.recordError(1280);return 0}GL.stringCache[name_]=ret;return ret}function _glGetUniformLocation(program,name){name=UTF8ToString(name);var arrayIndex=0;if(name[name.length-1]=="]"){var leftBrace=name.lastIndexOf("[");arrayIndex=name[leftBrace+1]!="]"?jstoi_q(name.slice(leftBrace+1)):0;name=name.slice(0,leftBrace)}var uniformInfo=GL.programInfos[program]&&GL.programInfos[program].uniforms[name];if(uniformInfo&&arrayIndex>=0&&arrayIndex<uniformInfo[0]){return uniformInfo[1]+arrayIndex}else{return-1}}function _glLinkProgram(program){GLctx.linkProgram(GL.programs[program]);GL.populateUniformTable(program)}function _glPixelStorei(pname,param){if(pname==3317){GL.unpackAlignment=param}GLctx.pixelStorei(pname,param)}function _glReadPixels(x,y,width,height,format,type,pixels){var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);return}GLctx.readPixels(x,y,width,height,format,type,pixelData)}function _glShaderSource(shader,count,string,length){var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}function _glTexImage2D(target,level,internalFormat,width,height,border,format,type,pixels){GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels?emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat):null)}function _glTexParameteri(x0,x1,x2){GLctx["texParameteri"](x0,x1,x2)}function _glUniform1i(location,v0){GLctx.uniform1i(GL.uniforms[location],v0)}function _glUniform4f(location,v0,v1,v2,v3){GLctx.uniform4f(GL.uniforms[location],v0,v1,v2,v3)}function _glUniformMatrix4fv(location,count,transpose,value){if(count<=18){var view=miniTempWebGLFloatBuffers[16*count-1];var heap=HEAPF32;value>>=2;for(var i=0;i<16*count;i+=16){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3];view[i+4]=heap[dst+4];view[i+5]=heap[dst+5];view[i+6]=heap[dst+6];view[i+7]=heap[dst+7];view[i+8]=heap[dst+8];view[i+9]=heap[dst+9];view[i+10]=heap[dst+10];view[i+11]=heap[dst+11];view[i+12]=heap[dst+12];view[i+13]=heap[dst+13];view[i+14]=heap[dst+14];view[i+15]=heap[dst+15]}}else{var view=HEAPF32.subarray(value>>2,value+count*64>>2)}GLctx.uniformMatrix4fv(GL.uniforms[location],!!transpose,view)}function _glUseProgram(program){GLctx.useProgram(GL.programs[program])}function _glVertexAttrib2f(x0,x1,x2){GLctx["vertexAttrib2f"](x0,x1,x2)}function _glVertexAttrib3f(x0,x1,x2,x3){GLctx["vertexAttrib3f"](x0,x1,x2,x3)}function _glVertexAttrib4f(x0,x1,x2,x3,x4){GLctx["vertexAttrib4f"](x0,x1,x2,x3,x4)}function _glVertexAttribPointer(index,size,type,normalized,stride,ptr){GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}function _glViewport(x0,x1,x2,x3){GLctx["viewport"](x0,x1,x2,x3)}function GLFW_Window(id,width,height,title,monitor,share){this.id=id;this.x=0;this.y=0;this.fullscreen=false;this.storedX=0;this.storedY=0;this.width=width;this.height=height;this.storedWidth=width;this.storedHeight=height;this.title=title;this.monitor=monitor;this.share=share;this.attributes=GLFW.hints;this.inputModes={208897:212993,208898:0,208899:0};this.buttons=0;this.keys=new Array;this.domKeys=new Array;this.shouldClose=0;this.title=null;this.windowPosFunc=null;this.windowSizeFunc=null;this.windowCloseFunc=null;this.windowRefreshFunc=null;this.windowFocusFunc=null;this.windowIconifyFunc=null;this.framebufferSizeFunc=null;this.mouseButtonFunc=null;this.cursorPosFunc=null;this.cursorEnterFunc=null;this.scrollFunc=null;this.dropFunc=null;this.keyFunc=null;this.charFunc=null;this.userptr=null}var GLFW={WindowFromId:function(id){if(id<=0||!GLFW.windows)return null;return GLFW.windows[id-1]},joystickFunc:null,errorFunc:null,monitorFunc:null,active:null,windows:null,monitors:null,monitorString:null,versionString:null,initialTime:null,extensions:null,hints:null,defaultHints:{131073:0,131074:0,131075:1,131076:1,131077:1,135169:8,135170:8,135171:8,135172:8,135173:24,135174:8,135175:0,135176:0,135177:0,135178:0,135179:0,135180:0,135181:0,135182:0,135183:0,139265:196609,139266:1,139267:0,139268:0,139269:0,139270:0,139271:0,139272:0},DOMToGLFWKeyCode:function(keycode){switch(keycode){case 32:return 32;case 222:return 39;case 188:return 44;case 173:return 45;case 189:return 45;case 190:return 46;case 191:return 47;case 48:return 48;case 49:return 49;case 50:return 50;case 51:return 51;case 52:return 52;case 53:return 53;case 54:return 54;case 55:return 55;case 56:return 56;case 57:return 57;case 59:return 59;case 61:return 61;case 187:return 61;case 65:return 65;case 66:return 66;case 67:return 67;case 68:return 68;case 69:return 69;case 70:return 70;case 71:return 71;case 72:return 72;case 73:return 73;case 74:return 74;case 75:return 75;case 76:return 76;case 77:return 77;case 78:return 78;case 79:return 79;case 80:return 80;case 81:return 81;case 82:return 82;case 83:return 83;case 84:return 84;case 85:return 85;case 86:return 86;case 87:return 87;case 88:return 88;case 89:return 89;case 90:return 90;case 219:return 91;case 220:return 92;case 221:return 93;case 192:return 94;case 27:return 256;case 13:return 257;case 9:return 258;case 8:return 259;case 45:return 260;case 46:return 261;case 39:return 262;case 37:return 263;case 40:return 264;case 38:return 265;case 33:return 266;case 34:return 267;case 36:return 268;case 35:return 269;case 20:return 280;case 145:return 281;case 144:return 282;case 44:return 283;case 19:return 284;case 112:return 290;case 113:return 291;case 114:return 292;case 115:return 293;case 116:return 294;case 117:return 295;case 118:return 296;case 119:return 297;case 120:return 298;case 121:return 299;case 122:return 300;case 123:return 301;case 124:return 302;case 125:return 303;case 126:return 304;case 127:return 305;case 128:return 306;case 129:return 307;case 130:return 308;case 131:return 309;case 132:return 310;case 133:return 311;case 134:return 312;case 135:return 313;case 136:return 314;case 96:return 320;case 97:return 321;case 98:return 322;case 99:return 323;case 100:return 324;case 101:return 325;case 102:return 326;case 103:return 327;case 104:return 328;case 105:return 329;case 110:return 330;case 111:return 331;case 106:return 332;case 109:return 333;case 107:return 334;case 16:return 340;case 17:return 341;case 18:return 342;case 91:return 343;case 93:return 348;default:return-1}},getModBits:function(win){var mod=0;if(win.keys[340])mod|=1;if(win.keys[341])mod|=2;if(win.keys[342])mod|=4;if(win.keys[343])mod|=8;return mod},onKeyPress:function(event){if(!GLFW.active||!GLFW.active.charFunc)return;if(event.ctrlKey||event.metaKey)return;var charCode=event.charCode;if(charCode==0||charCode>=0&&charCode<=31)return;wasmTable.get(GLFW.active.charFunc)(GLFW.active.id,charCode)},onKeyChanged:function(keyCode,status){if(!GLFW.active)return;var key=GLFW.DOMToGLFWKeyCode(keyCode);if(key==-1)return;var repeat=status&&GLFW.active.keys[key];GLFW.active.keys[key]=status;GLFW.active.domKeys[keyCode]=status;if(!GLFW.active.keyFunc)return;if(repeat)status=2;wasmTable.get(GLFW.active.keyFunc)(GLFW.active.id,key,keyCode,status,GLFW.getModBits(GLFW.active))},onGamepadConnected:function(event){GLFW.refreshJoysticks()},onGamepadDisconnected:function(event){GLFW.refreshJoysticks()},onKeydown:function(event){GLFW.onKeyChanged(event.keyCode,1);if(event.keyCode===8||event.keyCode===9){event.preventDefault()}},onKeyup:function(event){GLFW.onKeyChanged(event.keyCode,0)},onBlur:function(event){if(!GLFW.active)return;for(var i=0;i<GLFW.active.domKeys.length;++i){if(GLFW.active.domKeys[i]){GLFW.onKeyChanged(i,0)}}},onMousemove:function(event){if(!GLFW.active)return;Browser.calculateMouseEvent(event);if(event.target!=Module["canvas"]||!GLFW.active.cursorPosFunc)return;wasmTable.get(GLFW.active.cursorPosFunc)(GLFW.active.id,Browser.mouseX,Browser.mouseY)},DOMToGLFWMouseButton:function(event){var eventButton=event["button"];if(eventButton>0){if(eventButton==1){eventButton=2}else{eventButton=1}}return eventButton},onMouseenter:function(event){if(!GLFW.active)return;if(event.target!=Module["canvas"]||!GLFW.active.cursorEnterFunc)return;wasmTable.get(GLFW.active.cursorEnterFunc)(GLFW.active.id,1)},onMouseleave:function(event){if(!GLFW.active)return;if(event.target!=Module["canvas"]||!GLFW.active.cursorEnterFunc)return;wasmTable.get(GLFW.active.cursorEnterFunc)(GLFW.active.id,0)},onMouseButtonChanged:function(event,status){if(!GLFW.active)return;Browser.calculateMouseEvent(event);if(event.target!=Module["canvas"])return;var eventButton=GLFW.DOMToGLFWMouseButton(event);if(status==1){GLFW.active.buttons|=1<<eventButton;try{event.target.setCapture()}catch(e){}}else{GLFW.active.buttons&=~(1<<eventButton)}if(!GLFW.active.mouseButtonFunc)return;wasmTable.get(GLFW.active.mouseButtonFunc)(GLFW.active.id,eventButton,status,GLFW.getModBits(GLFW.active))},onMouseButtonDown:function(event){if(!GLFW.active)return;GLFW.onMouseButtonChanged(event,1)},onMouseButtonUp:function(event){if(!GLFW.active)return;GLFW.onMouseButtonChanged(event,0)},onMouseWheel:function(event){var delta=-Browser.getMouseWheelDelta(event);delta=delta==0?0:delta>0?Math.max(delta,1):Math.min(delta,-1);GLFW.wheelPos+=delta;if(!GLFW.active||!GLFW.active.scrollFunc||event.target!=Module["canvas"])return;var sx=0;var sy=0;if(event.type=="mousewheel"){sx=event.wheelDeltaX;sy=event.wheelDeltaY}else{sx=event.deltaX;sy=event.deltaY}wasmTable.get(GLFW.active.scrollFunc)(GLFW.active.id,sx,sy);event.preventDefault()},onCanvasResize:function(width,height){if(!GLFW.active)return;var resizeNeeded=true;if(document["fullscreen"]||document["fullScreen"]||document["mozFullScreen"]||document["webkitIsFullScreen"]){GLFW.active.storedX=GLFW.active.x;GLFW.active.storedY=GLFW.active.y;GLFW.active.storedWidth=GLFW.active.width;GLFW.active.storedHeight=GLFW.active.height;GLFW.active.x=GLFW.active.y=0;GLFW.active.width=screen.width;GLFW.active.height=screen.height;GLFW.active.fullscreen=true}else if(GLFW.active.fullscreen==true){GLFW.active.x=GLFW.active.storedX;GLFW.active.y=GLFW.active.storedY;GLFW.active.width=GLFW.active.storedWidth;GLFW.active.height=GLFW.active.storedHeight;GLFW.active.fullscreen=false}else if(GLFW.active.width!=width||GLFW.active.height!=height){GLFW.active.width=width;GLFW.active.height=height}else{resizeNeeded=false}if(resizeNeeded){Browser.setCanvasSize(GLFW.active.width,GLFW.active.height,true);GLFW.onWindowSizeChanged();GLFW.onFramebufferSizeChanged()}},onWindowSizeChanged:function(){if(!GLFW.active)return;if(!GLFW.active.windowSizeFunc)return;wasmTable.get(GLFW.active.windowSizeFunc)(GLFW.active.id,GLFW.active.width,GLFW.active.height)},onFramebufferSizeChanged:function(){if(!GLFW.active)return;if(!GLFW.active.framebufferSizeFunc)return;wasmTable.get(GLFW.active.framebufferSizeFunc)(GLFW.active.id,GLFW.active.width,GLFW.active.height)},getTime:function(){return _emscripten_get_now()/1e3},setWindowTitle:function(winid,title){var win=GLFW.WindowFromId(winid);if(!win)return;win.title=UTF8ToString(title);if(GLFW.active.id==win.id){document.title=win.title}},setJoystickCallback:function(cbfun){GLFW.joystickFunc=cbfun;GLFW.refreshJoysticks()},joys:{},lastGamepadState:null,lastGamepadStateFrame:null,refreshJoysticks:function(){if(Browser.mainLoop.currentFrameNumber!==GLFW.lastGamepadStateFrame||!Browser.mainLoop.currentFrameNumber){GLFW.lastGamepadState=navigator.getGamepads?navigator.getGamepads():navigator.webkitGetGamepads?navigator.webkitGetGamepads:null;GLFW.lastGamepadStateFrame=Browser.mainLoop.currentFrameNumber;for(var joy=0;joy<GLFW.lastGamepadState.length;++joy){var gamepad=GLFW.lastGamepadState[joy];if(gamepad){if(!GLFW.joys[joy]){console.log("glfw joystick connected:",joy);GLFW.joys[joy]={id:allocate(intArrayFromString(gamepad.id),ALLOC_NORMAL),buttonsCount:gamepad.buttons.length,axesCount:gamepad.axes.length,buttons:allocate(new Array(gamepad.buttons.length),ALLOC_NORMAL),axes:allocate(new Array(gamepad.axes.length*4),ALLOC_NORMAL)};if(GLFW.joystickFunc){wasmTable.get(GLFW.joystickFunc)(joy,262145)}}var data=GLFW.joys[joy];for(var i=0;i<gamepad.buttons.length;++i){setValue(data.buttons+i,gamepad.buttons[i].pressed,"i8")}for(var i=0;i<gamepad.axes.length;++i){setValue(data.axes+i*4,gamepad.axes[i],"float")}}else{if(GLFW.joys[joy]){console.log("glfw joystick disconnected",joy);if(GLFW.joystickFunc){wasmTable.get(GLFW.joystickFunc)(joy,262146)}_free(GLFW.joys[joy].id);_free(GLFW.joys[joy].buttons);_free(GLFW.joys[joy].axes);delete GLFW.joys[joy]}}}}},setKeyCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.keyFunc;win.keyFunc=cbfun;return prevcbfun},setCharCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.charFunc;win.charFunc=cbfun;return prevcbfun},setMouseButtonCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.mouseButtonFunc;win.mouseButtonFunc=cbfun;return prevcbfun},setCursorPosCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.cursorPosFunc;win.cursorPosFunc=cbfun;return prevcbfun},setScrollCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.scrollFunc;win.scrollFunc=cbfun;return prevcbfun},setDropCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.dropFunc;win.dropFunc=cbfun;return prevcbfun},onDrop:function(event){if(!GLFW.active||!GLFW.active.dropFunc)return;if(!event.dataTransfer||!event.dataTransfer.files||event.dataTransfer.files.length==0)return;event.preventDefault();var filenames=allocate(new Array(event.dataTransfer.files.length*4),ALLOC_NORMAL);var filenamesArray=[];var count=event.dataTransfer.files.length;var written=0;var drop_dir=".glfw_dropped_files";FS.createPath("/",drop_dir);function save(file){var path="/"+drop_dir+"/"+file.name.replace(/\//g,"_");var reader=new FileReader;reader.onloadend=function(e){if(reader.readyState!=2){++written;console.log("failed to read dropped file: "+file.name+": "+reader.error);return}var data=e.target.result;FS.writeFile(path,new Uint8Array(data));if(++written===count){wasmTable.get(GLFW.active.dropFunc)(GLFW.active.id,count,filenames);for(var i=0;i<filenamesArray.length;++i){_free(filenamesArray[i])}_free(filenames)}};reader.readAsArrayBuffer(file);var filename=allocate(intArrayFromString(path),ALLOC_NORMAL);filenamesArray.push(filename);setValue(filenames+i*4,filename,"i8*")}for(var i=0;i<count;++i){save(event.dataTransfer.files[i])}return false},onDragover:function(event){if(!GLFW.active||!GLFW.active.dropFunc)return;event.preventDefault();return false},setWindowSizeCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowSizeFunc;win.windowSizeFunc=cbfun;return prevcbfun},setWindowCloseCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowCloseFunc;win.windowCloseFunc=cbfun;return prevcbfun},setWindowRefreshCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowRefreshFunc;win.windowRefreshFunc=cbfun;return prevcbfun},onClickRequestPointerLock:function(e){if(!Browser.pointerLock&&Module["canvas"].requestPointerLock){Module["canvas"].requestPointerLock();e.preventDefault()}},setInputMode:function(winid,mode,value){var win=GLFW.WindowFromId(winid);if(!win)return;switch(mode){case 208897:{switch(value){case 212993:{win.inputModes[mode]=value;Module["canvas"].removeEventListener("click",GLFW.onClickRequestPointerLock,true);Module["canvas"].exitPointerLock();break}case 212994:{console.log("glfwSetInputMode called with GLFW_CURSOR_HIDDEN value not implemented.");break}case 212995:{win.inputModes[mode]=value;Module["canvas"].addEventListener("click",GLFW.onClickRequestPointerLock,true);Module["canvas"].requestPointerLock();break}default:{console.log("glfwSetInputMode called with unknown value parameter value: "+value+".");break}}break}case 208898:{console.log("glfwSetInputMode called with GLFW_STICKY_KEYS mode not implemented.");break}case 208899:{console.log("glfwSetInputMode called with GLFW_STICKY_MOUSE_BUTTONS mode not implemented.");break}default:{console.log("glfwSetInputMode called with unknown mode parameter value: "+mode+".");break}}},getKey:function(winid,key){var win=GLFW.WindowFromId(winid);if(!win)return 0;return win.keys[key]},getMouseButton:function(winid,button){var win=GLFW.WindowFromId(winid);if(!win)return 0;return(win.buttons&1<<button)>0},getCursorPos:function(winid,x,y){setValue(x,Browser.mouseX,"double");setValue(y,Browser.mouseY,"double")},getMousePos:function(winid,x,y){setValue(x,Browser.mouseX,"i32");setValue(y,Browser.mouseY,"i32")},setCursorPos:function(winid,x,y){},getWindowPos:function(winid,x,y){var wx=0;var wy=0;var win=GLFW.WindowFromId(winid);if(win){wx=win.x;wy=win.y}if(x){setValue(x,wx,"i32")}if(y){setValue(y,wy,"i32")}},setWindowPos:function(winid,x,y){var win=GLFW.WindowFromId(winid);if(!win)return;win.x=x;win.y=y},getWindowSize:function(winid,width,height){var ww=0;var wh=0;var win=GLFW.WindowFromId(winid);if(win){ww=win.width;wh=win.height}if(width){setValue(width,ww,"i32")}if(height){setValue(height,wh,"i32")}},setWindowSize:function(winid,width,height){var win=GLFW.WindowFromId(winid);if(!win)return;if(GLFW.active.id==win.id){if(width==screen.width&&height==screen.height){Browser.requestFullscreen()}else{Browser.exitFullscreen();Browser.setCanvasSize(width,height);win.width=width;win.height=height}}if(!win.windowSizeFunc)return;wasmTable.get(win.windowSizeFunc)(win.id,width,height)},createWindow:function(width,height,title,monitor,share){var i,id;for(i=0;i<GLFW.windows.length&&GLFW.windows[i]!==null;i++){}if(i>0)throw"glfwCreateWindow only supports one window at time currently";id=i+1;if(width<=0||height<=0)return 0;if(monitor){Browser.requestFullscreen()}else{Browser.setCanvasSize(width,height)}for(i=0;i<GLFW.windows.length&&GLFW.windows[i]==null;i++){}var useWebGL=GLFW.hints[139265]>0;if(i==GLFW.windows.length){if(useWebGL){var contextAttributes={antialias:GLFW.hints[135181]>1,depth:GLFW.hints[135173]>0,stencil:GLFW.hints[135174]>0,alpha:GLFW.hints[135172]>0};Module.ctx=Browser.createContext(Module["canvas"],true,true,contextAttributes)}else{Browser.init()}}if(!Module.ctx&&useWebGL)return 0;var win=new GLFW_Window(id,width,height,title,monitor,share);if(id-1==GLFW.windows.length){GLFW.windows.push(win)}else{GLFW.windows[id-1]=win}GLFW.active=win;return win.id},destroyWindow:function(winid){var win=GLFW.WindowFromId(winid);if(!win)return;if(win.windowCloseFunc)wasmTable.get(win.windowCloseFunc)(win.id);GLFW.windows[win.id-1]=null;if(GLFW.active.id==win.id)GLFW.active=null;for(var i=0;i<GLFW.windows.length;i++)if(GLFW.windows[i]!==null)return;Module.ctx=Browser.destroyContext(Module["canvas"],true,true)},swapBuffers:function(winid){},GLFW2ParamToGLFW3Param:function(param){var table={196609:0,196610:0,196611:0,196612:0,196613:0,196614:0,131073:0,131074:0,131075:0,131076:0,131077:135169,131078:135170,131079:135171,131080:135172,131081:135173,131082:135174,131083:135183,131084:135175,131085:135176,131086:135177,131087:135178,131088:135179,131089:135180,131090:0,131091:135181,131092:139266,131093:139267,131094:139270,131095:139271,131096:139272};return table[param]}};function _glfwCreateWindow(width,height,title,monitor,share){return GLFW.createWindow(width,height,title,monitor,share)}function _glfwDefaultWindowHints(){GLFW.hints=GLFW.defaultHints}function _glfwDestroyWindow(winid){return GLFW.destroyWindow(winid)}function _glfwGetPrimaryMonitor(){return 1}function _glfwGetTime(){return GLFW.getTime()-GLFW.initialTime}function _glfwGetVideoModes(monitor,count){setValue(count,0,"i32");return 0}function _glfwInit(){if(GLFW.windows)return 1;GLFW.initialTime=GLFW.getTime();GLFW.hints=GLFW.defaultHints;GLFW.windows=new Array;GLFW.active=null;window.addEventListener("gamepadconnected",GLFW.onGamepadConnected,true);window.addEventListener("gamepaddisconnected",GLFW.onGamepadDisconnected,true);window.addEventListener("keydown",GLFW.onKeydown,true);window.addEventListener("keypress",GLFW.onKeyPress,true);window.addEventListener("keyup",GLFW.onKeyup,true);window.addEventListener("blur",GLFW.onBlur,true);Module["canvas"].addEventListener("touchmove",GLFW.onMousemove,true);Module["canvas"].addEventListener("touchstart",GLFW.onMouseButtonDown,true);Module["canvas"].addEventListener("touchcancel",GLFW.onMouseButtonUp,true);Module["canvas"].addEventListener("touchend",GLFW.onMouseButtonUp,true);Module["canvas"].addEventListener("mousemove",GLFW.onMousemove,true);Module["canvas"].addEventListener("mousedown",GLFW.onMouseButtonDown,true);Module["canvas"].addEventListener("mouseup",GLFW.onMouseButtonUp,true);Module["canvas"].addEventListener("wheel",GLFW.onMouseWheel,true);Module["canvas"].addEventListener("mousewheel",GLFW.onMouseWheel,true);Module["canvas"].addEventListener("mouseenter",GLFW.onMouseenter,true);Module["canvas"].addEventListener("mouseleave",GLFW.onMouseleave,true);Module["canvas"].addEventListener("drop",GLFW.onDrop,true);Module["canvas"].addEventListener("dragover",GLFW.onDragover,true);Browser.resizeListeners.push(function(width,height){GLFW.onCanvasResize(width,height)});return 1}function _glfwMakeContextCurrent(winid){}function _glfwSetCharCallback(winid,cbfun){return GLFW.setCharCallback(winid,cbfun)}function _glfwSetCursorEnterCallback(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.cursorEnterFunc;win.cursorEnterFunc=cbfun;return prevcbfun}function _glfwSetCursorPosCallback(winid,cbfun){return GLFW.setCursorPosCallback(winid,cbfun)}function _glfwSetDropCallback(winid,cbfun){return GLFW.setDropCallback(winid,cbfun)}function _glfwSetErrorCallback(cbfun){var prevcbfun=GLFW.errorFunc;GLFW.errorFunc=cbfun;return prevcbfun}function _glfwSetKeyCallback(winid,cbfun){return GLFW.setKeyCallback(winid,cbfun)}function _glfwSetMouseButtonCallback(winid,cbfun){return GLFW.setMouseButtonCallback(winid,cbfun)}function _glfwSetScrollCallback(winid,cbfun){return GLFW.setScrollCallback(winid,cbfun)}function _glfwSetWindowFocusCallback(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowFocusFunc;win.windowFocusFunc=cbfun;return prevcbfun}function _glfwSetWindowIconifyCallback(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowIconifyFunc;win.windowIconifyFunc=cbfun;return prevcbfun}function _glfwSetWindowShouldClose(winid,value){var win=GLFW.WindowFromId(winid);if(!win)return;win.shouldClose=value}function _glfwSetWindowSizeCallback(winid,cbfun){return GLFW.setWindowSizeCallback(winid,cbfun)}function _glfwSwapBuffers(winid){GLFW.swapBuffers(winid)}function _glfwSwapInterval(interval){interval=Math.abs(interval);if(interval==0)_emscripten_set_main_loop_timing(0,0);else _emscripten_set_main_loop_timing(1,interval)}function _glfwTerminate(){window.removeEventListener("gamepadconnected",GLFW.onGamepadConnected,true);window.removeEventListener("gamepaddisconnected",GLFW.onGamepadDisconnected,true);window.removeEventListener("keydown",GLFW.onKeydown,true);window.removeEventListener("keypress",GLFW.onKeyPress,true);window.removeEventListener("keyup",GLFW.onKeyup,true);window.removeEventListener("blur",GLFW.onBlur,true);Module["canvas"].removeEventListener("touchmove",GLFW.onMousemove,true);Module["canvas"].removeEventListener("touchstart",GLFW.onMouseButtonDown,true);Module["canvas"].removeEventListener("touchcancel",GLFW.onMouseButtonUp,true);Module["canvas"].removeEventListener("touchend",GLFW.onMouseButtonUp,true);Module["canvas"].removeEventListener("mousemove",GLFW.onMousemove,true);Module["canvas"].removeEventListener("mousedown",GLFW.onMouseButtonDown,true);Module["canvas"].removeEventListener("mouseup",GLFW.onMouseButtonUp,true);Module["canvas"].removeEventListener("wheel",GLFW.onMouseWheel,true);Module["canvas"].removeEventListener("mousewheel",GLFW.onMouseWheel,true);Module["canvas"].removeEventListener("mouseenter",GLFW.onMouseenter,true);Module["canvas"].removeEventListener("mouseleave",GLFW.onMouseleave,true);Module["canvas"].removeEventListener("drop",GLFW.onDrop,true);Module["canvas"].removeEventListener("dragover",GLFW.onDragover,true);Module["canvas"].width=Module["canvas"].height=1;GLFW.windows=null;GLFW.active=null}function _glfwWindowHint(target,hint){GLFW.hints[target]=hint}function _time(ptr){var ret=Date.now()/1e3|0;if(ptr){HEAP32[ptr>>2]=ret}return ret}var FSNode=function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev};var readMode=292|73;var writeMode=146;Object.defineProperties(FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(val){val?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===writeMode},set:function(val){val?this.mode|=writeMode:this.mode&=~writeMode}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}});FS.FSNode=FSNode;FS.staticInit();Module["FS_createPath"]=FS.createPath;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createDevice"]=FS.createDevice;Module["FS_unlink"]=FS.unlink;var GLctx;for(var i=0;i<32;++i)tempFixedLengthArray.push(new Array(i));var miniTempWebGLFloatBuffersStorage=new Float32Array(288);for(var i=0;i<288;++i){miniTempWebGLFloatBuffers[i]=miniTempWebGLFloatBuffersStorage.subarray(0,i+1)}var __miniTempWebGLIntBuffersStorage=new Int32Array(288);for(var i=0;i<288;++i){__miniTempWebGLIntBuffers[i]=__miniTempWebGLIntBuffersStorage.subarray(0,i+1)}Module["requestFullscreen"]=function Module_requestFullscreen(lockPointer,resizeCanvas){Browser.requestFullscreen(lockPointer,resizeCanvas)};Module["requestAnimationFrame"]=function Module_requestAnimationFrame(func){Browser.requestAnimationFrame(func)};Module["setCanvasSize"]=function Module_setCanvasSize(width,height,noUpdates){Browser.setCanvasSize(width,height,noUpdates)};Module["pauseMainLoop"]=function Module_pauseMainLoop(){Browser.mainLoop.pause()};Module["resumeMainLoop"]=function Module_resumeMainLoop(){Browser.mainLoop.resume()};Module["getUserMedia"]=function Module_getUserMedia(){Browser.getUserMedia()};Module["createContext"]=function Module_createContext(canvas,useWebGL,setInModule,webGLContextAttributes){return Browser.createContext(canvas,useWebGL,setInModule,webGLContextAttributes)};function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var asmLibraryArg={"d":___assert_fail,"L":___sys_fcntl64,"Ta":___sys_ioctl,"Va":___sys_open,"C":_emscripten_exit_pointerlock,"aa":_emscripten_get_element_css_size,"X":_emscripten_get_gamepad_status,"Y":_emscripten_get_num_gamepads,"Hd":_emscripten_glActiveTexture,"Gd":_emscripten_glAttachShader,"Xd":_emscripten_glBeginQueryEXT,"Fd":_emscripten_glBindAttribLocation,"Ed":_emscripten_glBindBuffer,"Dd":_emscripten_glBindFramebuffer,"Cd":_emscripten_glBindRenderbuffer,"Bd":_emscripten_glBindTexture,"Pd":_emscripten_glBindVertexArrayOES,"Ad":_emscripten_glBlendColor,"zd":_emscripten_glBlendEquation,"yd":_emscripten_glBlendEquationSeparate,"xd":_emscripten_glBlendFunc,"wd":_emscripten_glBlendFuncSeparate,"vd":_emscripten_glBufferData,"ud":_emscripten_glBufferSubData,"td":_emscripten_glCheckFramebufferStatus,"sd":_emscripten_glClear,"rd":_emscripten_glClearColor,"qd":_emscripten_glClearDepthf,"pd":_emscripten_glClearStencil,"od":_emscripten_glColorMask,"nd":_emscripten_glCompileShader,"md":_emscripten_glCompressedTexImage2D,"ld":_emscripten_glCompressedTexSubImage2D,"kd":_emscripten_glCopyTexImage2D,"jd":_emscripten_glCopyTexSubImage2D,"id":_emscripten_glCreateProgram,"hd":_emscripten_glCreateShader,"gd":_emscripten_glCullFace,"fd":_emscripten_glDeleteBuffers,"ed":_emscripten_glDeleteFramebuffers,"dd":_emscripten_glDeleteProgram,"T":_emscripten_glDeleteQueriesEXT,"cd":_emscripten_glDeleteRenderbuffers,"bd":_emscripten_glDeleteShader,"ad":_emscripten_glDeleteTextures,"Od":_emscripten_glDeleteVertexArraysOES,"$c":_emscripten_glDepthFunc,"_c":_emscripten_glDepthMask,"Zc":_emscripten_glDepthRangef,"Yc":_emscripten_glDetachShader,"Xc":_emscripten_glDisable,"Wc":_emscripten_glDisableVertexAttribArray,"Vc":_emscripten_glDrawArrays,"Kd":_emscripten_glDrawArraysInstancedANGLE,"Ld":_emscripten_glDrawBuffersWEBGL,"Uc":_emscripten_glDrawElements,"Jd":_emscripten_glDrawElementsInstancedANGLE,"Tc":_emscripten_glEnable,"Sc":_emscripten_glEnableVertexAttribArray,"Wd":_emscripten_glEndQueryEXT,"Rc":_emscripten_glFinish,"Qc":_emscripten_glFlush,"Pc":_emscripten_glFramebufferRenderbuffer,"Oc":_emscripten_glFramebufferTexture2D,"Nc":_emscripten_glFrontFace,"Mc":_emscripten_glGenBuffers,"Kc":_emscripten_glGenFramebuffers,"U":_emscripten_glGenQueriesEXT,"Jc":_emscripten_glGenRenderbuffers,"Ic":_emscripten_glGenTextures,"Nd":_emscripten_glGenVertexArraysOES,"Lc":_emscripten_glGenerateMipmap,"Gc":_emscripten_glGetActiveAttrib,"Fc":_emscripten_glGetActiveUniform,"Ec":_emscripten_glGetAttachedShaders,"Dc":_emscripten_glGetAttribLocation,"Cc":_emscripten_glGetBooleanv,"Bc":_emscripten_glGetBufferParameteriv,"Ac":_emscripten_glGetError,"zc":_emscripten_glGetFloatv,"yc":_emscripten_glGetFramebufferAttachmentParameteriv,"xc":_emscripten_glGetIntegerv,"vc":_emscripten_glGetProgramInfoLog,"wc":_emscripten_glGetProgramiv,"Rd":_emscripten_glGetQueryObjecti64vEXT,"Td":_emscripten_glGetQueryObjectivEXT,"Qd":_emscripten_glGetQueryObjectui64vEXT,"Sd":_emscripten_glGetQueryObjectuivEXT,"Ud":_emscripten_glGetQueryivEXT,"uc":_emscripten_glGetRenderbufferParameteriv,"sc":_emscripten_glGetShaderInfoLog,"rc":_emscripten_glGetShaderPrecisionFormat,"qc":_emscripten_glGetShaderSource,"tc":_emscripten_glGetShaderiv,"pc":_emscripten_glGetString,"oc":_emscripten_glGetTexParameterfv,"nc":_emscripten_glGetTexParameteriv,"kc":_emscripten_glGetUniformLocation,"mc":_emscripten_glGetUniformfv,"lc":_emscripten_glGetUniformiv,"hc":_emscripten_glGetVertexAttribPointerv,"jc":_emscripten_glGetVertexAttribfv,"ic":_emscripten_glGetVertexAttribiv,"gc":_emscripten_glHint,"fc":_emscripten_glIsBuffer,"ec":_emscripten_glIsEnabled,"dc":_emscripten_glIsFramebuffer,"cc":_emscripten_glIsProgram,"S":_emscripten_glIsQueryEXT,"bc":_emscripten_glIsRenderbuffer,"ac":_emscripten_glIsShader,"$b":_emscripten_glIsTexture,"Md":_emscripten_glIsVertexArrayOES,"_b":_emscripten_glLineWidth,"Zb":_emscripten_glLinkProgram,"Yb":_emscripten_glPixelStorei,"Xb":_emscripten_glPolygonOffset,"Vd":_emscripten_glQueryCounterEXT,"Wb":_emscripten_glReadPixels,"Vb":_emscripten_glReleaseShaderCompiler,"Tb":_emscripten_glRenderbufferStorage,"Sb":_emscripten_glSampleCoverage,"Rb":_emscripten_glScissor,"Qb":_emscripten_glShaderBinary,"Pb":_emscripten_glShaderSource,"Ob":_emscripten_glStencilFunc,"Nb":_emscripten_glStencilFuncSeparate,"Mb":_emscripten_glStencilMask,"Lb":_emscripten_glStencilMaskSeparate,"Kb":_emscripten_glStencilOp,"Ib":_emscripten_glStencilOpSeparate,"Hb":_emscripten_glTexImage2D,"Gb":_emscripten_glTexParameterf,"Fb":_emscripten_glTexParameterfv,"Eb":_emscripten_glTexParameteri,"Db":_emscripten_glTexParameteriv,"Cb":_emscripten_glTexSubImage2D,"Bb":_emscripten_glUniform1f,"Ab":_emscripten_glUniform1fv,"zb":_emscripten_glUniform1i,"xb":_emscripten_glUniform1iv,"wb":_emscripten_glUniform2f,"vb":_emscripten_glUniform2fv,"ub":_emscripten_glUniform2i,"tb":_emscripten_glUniform2iv,"sb":_emscripten_glUniform3f,"rb":_emscripten_glUniform3fv,"qb":_emscripten_glUniform3i,"pb":_emscripten_glUniform3iv,"ob":_emscripten_glUniform4f,"mb":_emscripten_glUniform4fv,"lb":_emscripten_glUniform4i,"kb":_emscripten_glUniform4iv,"jb":_emscripten_glUniformMatrix2fv,"ib":_emscripten_glUniformMatrix3fv,"hb":_emscripten_glUniformMatrix4fv,"gb":_emscripten_glUseProgram,"fb":_emscripten_glValidateProgram,"eb":_emscripten_glVertexAttrib1f,"db":_emscripten_glVertexAttrib1fv,"bb":_emscripten_glVertexAttrib2f,"ab":_emscripten_glVertexAttrib2fv,"$a":_emscripten_glVertexAttrib3f,"_a":_emscripten_glVertexAttrib3fv,"Za":_emscripten_glVertexAttrib4f,"Ya":_emscripten_glVertexAttrib4fv,"Id":_emscripten_glVertexAttribDivisorANGLE,"Xa":_emscripten_glVertexAttribPointer,"Wa":_emscripten_glViewport,"Pa":_emscripten_memcpy_big,"Qa":_emscripten_resize_heap,"x":_emscripten_run_script,"Z":_emscripten_sample_gamepad_data,"ya":_emscripten_set_click_callback_on_thread,"Aa":_emscripten_set_fullscreenchange_callback_on_thread,"ta":_emscripten_set_gamepadconnected_callback_on_thread,"sa":_emscripten_set_gamepaddisconnected_callback_on_thread,"za":_emscripten_set_keydown_callback_on_thread,"Zd":_emscripten_set_main_loop,"ua":_emscripten_set_touchcancel_callback_on_thread,"wa":_emscripten_set_touchend_callback_on_thread,"va":_emscripten_set_touchmove_callback_on_thread,"xa":_emscripten_set_touchstart_callback_on_thread,"Ra":_emscripten_thread_sleep,"V":_exit,"M":_fd_close,"Sa":_fd_read,"Oa":_fd_seek,"K":_fd_write,"p":_glActiveTexture,"D":_glAttachShader,"k":_glBindAttribLocation,"a":_glBindBuffer,"j":_glBindTexture,"Jb":_glBlendFunc,"e":_glBufferData,"v":_glBufferSubData,"N":_glClear,"O":_glClearColor,"cb":_glClearDepthf,"Fa":_glCompileShader,"La":_glCompressedTexImage2D,"Da":_glCreateProgram,"Ha":_glCreateShader,"yb":_glCullFace,"m":_glDeleteBuffers,"G":_glDeleteProgram,"H":_glDeleteShader,"J":_glDeleteTextures,"Ub":_glDepthFunc,"I":_glDetachShader,"P":_glDisable,"h":_glDisableVertexAttribArray,"R":_glDrawArrays,"Q":_glDrawElements,"w":_glEnable,"b":_glEnableVertexAttribArray,"nb":_glFrontFace,"f":_glGenBuffers,"Na":_glGenTextures,"u":_glGetAttribLocation,"Hc":_glGetFloatv,"Ba":_glGetProgramInfoLog,"F":_glGetProgramiv,"Ea":_glGetShaderInfoLog,"E":_glGetShaderiv,"n":_glGetString,"t":_glGetUniformLocation,"Ca":_glLinkProgram,"Ua":_glPixelStorei,"Ia":_glReadPixels,"Ga":_glShaderSource,"Ma":_glTexImage2D,"o":_glTexParameteri,"y":_glUniform1i,"q":_glUniform4f,"r":_glUniformMatrix4fv,"l":_glUseProgram,"Ja":_glVertexAttrib2f,"Ka":_glVertexAttrib3f,"s":_glVertexAttrib4f,"c":_glVertexAttribPointer,"Yd":_glViewport,"A":_glfwCreateWindow,"pa":_glfwDefaultWindowHints,"$":_glfwDestroyWindow,"B":_glfwGetPrimaryMonitor,"i":_glfwGetTime,"oa":_glfwGetVideoModes,"qa":_glfwInit,"da":_glfwMakeContextCurrent,"ia":_glfwSetCharCallback,"ea":_glfwSetCursorEnterCallback,"ga":_glfwSetCursorPosCallback,"ka":_glfwSetDropCallback,"ra":_glfwSetErrorCallback,"ja":_glfwSetKeyCallback,"ha":_glfwSetMouseButtonCallback,"fa":_glfwSetScrollCallback,"la":_glfwSetWindowFocusCallback,"ma":_glfwSetWindowIconifyCallback,"W":_glfwSetWindowShouldClose,"na":_glfwSetWindowSizeCallback,"_":_glfwSwapBuffers,"ca":_glfwSwapInterval,"z":_glfwTerminate,"g":_glfwWindowHint,"ba":_time};var asm=createWasm();var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["$d"]).apply(null,arguments)};var _main=Module["_main"]=function(){return(_main=Module["_main"]=Module["asm"]["ae"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["ce"]).apply(null,arguments)};var _free=Module["_free"]=function(){return(_free=Module["_free"]=Module["asm"]["de"]).apply(null,arguments)};var ___errno_location=Module["___errno_location"]=function(){return(___errno_location=Module["___errno_location"]=Module["asm"]["ee"]).apply(null,arguments)};var stackAlloc=Module["stackAlloc"]=function(){return(stackAlloc=Module["stackAlloc"]=Module["asm"]["fe"]).apply(null,arguments)};Module["addRunDependency"]=addRunDependency;Module["removeRunDependency"]=removeRunDependency;Module["FS_createPath"]=FS.createPath;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createDevice"]=FS.createDevice;Module["FS_unlink"]=FS.unlink;var calledRun;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}var calledMain=false;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args){var entryFunction=Module["_main"];var argc=0;var argv=0;try{var ret=entryFunction(argc,argv);exit(ret,true)}catch(e){if(e instanceof ExitStatus){return}else if(e=="unwind"){noExitRuntime=true;return}else{var toLog=e;if(e&&typeof e==="object"&&e.stack){toLog=[e,e.stack]}err("exception thrown: "+toLog);quit_(1,e)}}finally{calledMain=true}}function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(shouldRunNow)callMain(args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}Module["run"]=run;function exit(status,implicit){if(implicit&&noExitRuntime&&status===0){return}if(noExitRuntime){}else{EXITSTATUS=status;exitRuntime();if(Module["onExit"])Module["onExit"](status);ABORT=true}quit_(status,new ExitStatus(status))}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}var shouldRunNow=true;if(Module["noInitialRun"])shouldRunNow=false;run();
diff --git a/examples/web/models/models_heightmap.wasm b/examples/web/models/models_heightmap.wasm
deleted file mode 100644
index ff3a0b3..0000000
--- a/examples/web/models/models_heightmap.wasm
+++ /dev/null
Binary files differ
diff --git a/examples/web/models/models_loading.c b/examples/web/models/models_loading.c
deleted file mode 100644
index 439bf49..0000000
--- a/examples/web/models/models_loading.c
+++ /dev/null
@@ -1,177 +0,0 @@
-/*******************************************************************************************
-*
-* raylib [models] example - Models loading
-*
-* raylib supports multiple models file formats:
-*
-* - OBJ > Text file, must include vertex position-texcoords-normals information,
-* if files references some .mtl materials file, it will be loaded (or try to)
-* - GLTF > Modern text/binary file format, includes lot of information and it could
-* also reference external files, raylib will try loading mesh and materials data
-* - IQM > Binary file format including mesh vertex data but also animation data,
-* raylib can load .iqm animations.
-*
-* This example has been created using raylib 2.6 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
-*
-* Copyright (c) 2014-2019 Ramon Santamaria (@raysan5)
-*
-********************************************************************************************/
-
-#include "raylib.h"
-
-#if defined(PLATFORM_WEB)
- #include <emscripten/emscripten.h>
-#endif
-
-//----------------------------------------------------------------------------------
-// Global Variables Definition
-//----------------------------------------------------------------------------------
-const int screenWidth = 800;
-const int screenHeight = 450;
-
-static Camera camera = { 0 };
-
-static Model model = { 0 };
-static Texture2D texture = { 0 };
-static Vector3 position = { 0.0f, 0.0f, 0.0f };
-
-static BoundingBox bounds = { 0 };
-
-static bool selected = false;
-
-//----------------------------------------------------------------------------------
-// Module Functions Declaration
-//----------------------------------------------------------------------------------
-void UpdateDrawFrame(void); // Update and Draw one frame
-
-//----------------------------------------------------------------------------------
-// Program Main Entry Point
-//----------------------------------------------------------------------------------
-int main(void)
-{
- // Initialization
- //--------------------------------------------------------------------------------------
- const int screenWidth = 800;
- const int screenHeight = 450;
-
- InitWindow(screenWidth, screenHeight, "raylib [models] example - models loading");
-
- // Define the camera to look into our 3d world
- camera.position = (Vector3){ 50.0f, 50.0f, 50.0f }; // Camera position
- camera.target = (Vector3){ 0.0f, 10.0f, 0.0f }; // Camera looking at point
- camera.up = (Vector3){ 0.0f, 1.0f, 0.0f }; // Camera up vector (rotation towards target)
- camera.fovy = 45.0f; // Camera field-of-view Y
- camera.projection = CAMERA_PERSPECTIVE; // Camera mode type
-
- model = LoadModel("resources/models/castle.obj"); // Load model
- texture = LoadTexture("resources/models/castle_diffuse.png"); // Load model texture
- model.materials[0].maps[MATERIAL_MAP_DIFFUSE].texture = texture; // Set map diffuse texture
-
- bounds = GetMeshBoundingBox(model.meshes[0]); // Set model bounds
-
- // NOTE: bounds are calculated from the original size of the model,
- // if model is scaled on drawing, bounds must be also scaled
-
- SetCameraMode(camera, CAMERA_FREE); // Set a free camera mode
-
-#if defined(PLATFORM_WEB)
- emscripten_set_main_loop(UpdateDrawFrame, 60, 1);
-#else
- SetTargetFPS(60); // Set our game to run at 60 frames-per-second
- //--------------------------------------------------------------------------------------
-
- // Main game loop
- while (!WindowShouldClose()) // Detect window close button or ESC key
- {
- UpdateDrawFrame();
- }
-#endif
-
- // De-Initialization
- //--------------------------------------------------------------------------------------
- UnloadTexture(texture); // Unload texture
- UnloadModel(model); // Unload model
-
- CloseWindow(); // Close window and OpenGL context
- //--------------------------------------------------------------------------------------
-
- return 0;
-}
-
-//----------------------------------------------------------------------------------
-// Module Functions Definitions
-//----------------------------------------------------------------------------------
-void UpdateDrawFrame(void)
-{
- // Update
- //----------------------------------------------------------------------------------
- UpdateCamera(&camera);
-
- // Load new models/textures on drag&drop
- if (IsFileDropped())
- {
- int count = 0;
- char **droppedFiles = GetDroppedFiles(&count);
-
- if (count == 1) // Only support one file dropped
- {
- if (IsFileExtension(droppedFiles[0], ".obj") ||
- IsFileExtension(droppedFiles[0], ".gltf") ||
- IsFileExtension(droppedFiles[0], ".iqm")) // Model file formats supported
- {
- UnloadModel(model); // Unload previous model
- model = LoadModel(droppedFiles[0]); // Load new model
- model.materials[0].maps[MATERIAL_MAP_DIFFUSE].texture = texture; // Set current map diffuse texture
-
- bounds = GetMeshBoundingBox(model.meshes[0]);
-
- // TODO: Move camera position from target enough distance to visualize model properly
- }
- else if (IsFileExtension(droppedFiles[0], ".png")) // Texture file formats supported
- {
- // Unload current model texture and load new one
- UnloadTexture(texture);
- texture = LoadTexture(droppedFiles[0]);
- model.materials[0].maps[MATERIAL_MAP_DIFFUSE].texture = texture;
- }
- }
-
- ClearDroppedFiles(); // Clear internal buffers
- }
-
- // Select model on mouse click
- if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON))
- {
- // Check collision between ray and box
- if (CheckCollisionRayBox(GetMouseRay(GetMousePosition(), camera), bounds)) selected = !selected;
- else selected = false;
- }
- //----------------------------------------------------------------------------------
-
- // Draw
- //----------------------------------------------------------------------------------
- BeginDrawing();
-
- ClearBackground(RAYWHITE);
-
- BeginMode3D(camera);
-
- DrawModel(model, position, 1.0f, WHITE); // Draw 3d model with texture
-
- DrawGrid(20, 10.0f); // Draw a grid
-
- if (selected) DrawBoundingBox(bounds, GREEN); // Draw selection box
-
- EndMode3D();
-
- DrawText("Drag & drop model to load mesh/texture.", 10, GetScreenHeight() - 20, 10, DARKGRAY);
- if (selected) DrawText("MODEL SELECTED", GetScreenWidth() - 110, 10, 10, GREEN);
-
- DrawText("(c) Castle 3D model by Alberto Cano", screenWidth - 200, screenHeight - 20, 10, GRAY);
-
- DrawFPS(10, 10);
-
- EndDrawing();
- //----------------------------------------------------------------------------------
-} \ No newline at end of file
diff --git a/examples/web/models/models_loading.data b/examples/web/models/models_loading.data
deleted file mode 100644
index a38ea69..0000000
--- a/examples/web/models/models_loading.data
+++ /dev/null
@@ -1,14846 +0,0 @@
-# (c) 2018 Medieval Assets Pack by Alberto Cano
-# Licensed as Creative Commons Attribution-NonCommercial 4.0
-
-#
-# object castle
-#
-
-v -17.17 7.76 -10.68
-v -16.55 7.76 -12.98
-v -16.55 0.00 -12.98
-v -17.17 0.00 -10.68
-v -14.87 7.76 -14.66
-v -14.87 0.00 -14.66
-v -12.57 7.76 -15.28
-v -12.57 0.00 -15.28
-v -10.27 7.76 -14.66
-v -10.27 0.00 -14.66
-v -8.58 7.76 -12.98
-v -8.58 0.00 -12.98
-v -7.97 7.76 -10.68
-v -7.97 0.00 -10.68
-v -8.58 7.76 -8.38
-v -8.58 0.00 -8.38
-v -10.27 7.76 -6.69
-v -10.27 0.00 -6.69
-v -12.57 7.76 -6.08
-v -12.57 0.00 -6.08
-v -14.87 7.76 -6.69
-v -14.87 0.00 -6.69
-v -16.55 7.76 -8.38
-v -16.55 0.00 -8.38
-v -16.78 7.76 -13.11
-v -17.43 7.76 -10.68
-v -17.43 8.57 -10.68
-v -16.78 8.57 -13.11
-v -15.00 7.76 -14.89
-v -15.00 8.57 -14.89
-v -12.57 7.76 -15.54
-v -12.57 8.57 -15.54
-v -10.13 7.76 -14.89
-v -10.13 8.57 -14.89
-v -8.35 7.76 -13.11
-v -8.35 8.57 -13.11
-v -7.70 7.76 -10.68
-v -7.70 8.57 -10.68
-v -8.35 7.76 -8.24
-v -8.35 8.57 -8.24
-v -10.13 7.76 -6.46
-v -10.13 8.57 -6.46
-v -12.57 7.76 -5.81
-v -12.57 8.57 -5.81
-v -15.00 7.76 -6.46
-v -15.00 8.57 -6.46
-v -16.78 7.76 -8.24
-v -16.78 8.57 -8.24
-v -17.17 8.57 -10.68
-v -16.55 8.57 -12.98
-v -14.87 8.57 -14.66
-v -12.57 8.57 -15.28
-v -10.27 8.57 -14.66
-v -8.58 8.57 -12.98
-v -7.97 8.57 -10.68
-v -8.58 8.57 -8.38
-v -10.27 8.57 -6.69
-v -12.57 8.57 -6.08
-v -14.87 8.57 -6.69
-v -16.55 8.57 -8.38
-v -17.17 16.89 -10.68
-v -16.55 16.89 -12.98
-v -14.87 16.89 -14.66
-v -12.57 16.89 -15.28
-v -10.27 16.89 -14.66
-v -8.58 16.89 -12.98
-v -7.97 16.89 -10.68
-v -8.58 16.89 -8.38
-v -10.27 16.89 -6.69
-v -12.57 16.89 -6.08
-v -14.87 16.89 -6.69
-v -16.55 16.89 -8.38
-v -17.13 21.30 -13.31
-v -17.83 21.30 -10.68
-v -18.23 21.30 -10.68
-v -17.47 21.30 -13.51
-v -15.20 21.30 -15.24
-v -15.40 21.30 -15.58
-v -12.57 21.30 -15.94
-v -12.57 21.30 -16.34
-v -9.93 21.30 -15.24
-v -9.73 21.30 -15.58
-v -8.01 21.30 -13.31
-v -7.66 21.30 -13.51
-v -7.30 21.30 -10.68
-v -6.90 21.30 -10.68
-v -8.01 21.30 -8.04
-v -7.66 21.30 -7.84
-v -9.93 21.30 -6.12
-v -9.73 21.30 -5.77
-v -12.57 21.30 -5.41
-v -12.57 21.30 -5.01
-v -15.20 21.30 -6.12
-v -15.40 21.30 -5.77
-v -17.13 21.30 -8.04
-v -17.47 21.30 -7.84
-v -16.72 24.76 -10.68
-v -16.17 24.76 -12.76
-v -14.64 24.76 -14.28
-v -12.57 24.76 -14.83
-v -10.49 24.76 -14.28
-v -8.97 24.76 -12.76
-v -8.41 24.76 -10.68
-v -8.97 24.76 -8.60
-v -10.49 24.76 -7.08
-v -12.57 24.76 -6.52
-v -14.64 24.76 -7.08
-v -16.17 24.76 -8.60
-v -16.69 28.50 -10.68
-v -16.13 28.50 -12.74
-v -14.63 28.50 -14.24
-v -12.57 28.50 -14.80
-v -10.51 28.50 -14.24
-v -9.00 28.50 -12.74
-v -8.45 28.50 -10.68
-v -9.00 28.50 -8.62
-v -10.51 28.50 -7.11
-v -12.57 28.50 -6.56
-v -14.63 28.50 -7.11
-v -16.13 28.50 -8.62
-v -17.83 17.36 -10.68
-v -17.13 17.36 -13.31
-v -15.20 17.36 -15.24
-v -12.57 17.36 -15.94
-v -9.93 17.36 -15.24
-v -8.01 17.36 -13.31
-v -7.30 17.36 -10.68
-v -8.01 17.36 -8.04
-v -9.93 17.36 -6.12
-v -12.57 17.36 -5.41
-v -15.20 17.36 -6.12
-v -17.13 17.36 -8.04
-v -17.91 20.21 -10.37
-v -17.91 20.52 -10.80
-v -17.91 19.21 -10.80
-v -17.91 19.23 -10.37
-v -17.81 19.26 -10.03
-v -17.91 19.26 -10.04
-v -17.91 19.12 -10.04
-v -17.81 19.12 -10.03
-v -17.89 20.75 -10.80
-v -17.98 20.75 -10.81
-v -17.94 20.29 -10.15
-v -17.84 20.29 -10.15
-v -17.68 19.12 -11.55
-v -17.78 19.12 -11.56
-v -17.78 19.26 -11.56
-v -17.68 19.26 -11.55
-v -17.89 19.07 -10.80
-v -17.98 19.07 -10.81
-v -17.82 19.12 -11.45
-v -17.73 19.12 -11.45
-v -18.05 19.12 -10.16
-v -18.05 19.26 -10.16
-v -18.08 19.23 -10.39
-v -17.98 20.52 -10.81
-v -17.98 20.21 -10.38
-v -17.93 19.26 -11.46
-v -17.93 19.12 -11.46
-v -18.01 19.24 -11.24
-v -18.09 19.07 -10.82
-v -18.09 19.21 -10.82
-v -17.83 20.21 -11.23
-v -17.83 19.24 -11.23
-v -17.73 20.29 -11.45
-v -17.82 20.29 -11.45
-v -17.84 19.12 -10.15
-v -17.94 19.12 -10.15
-v -17.90 20.21 -11.23
-v -17.98 19.23 -10.38
-v -17.90 19.24 -11.23
-v -17.98 19.21 -10.81
-v -17.82 19.26 -11.45
-v -17.73 19.26 -11.45
-v -17.94 19.26 -10.15
-v -17.84 19.26 -10.15
-v -18.02 19.26 -10.05
-v -18.02 19.12 -10.05
-v -17.88 19.12 -11.57
-v -17.88 19.26 -11.57
-v -12.87 20.21 -16.02
-v -12.44 20.52 -16.02
-v -12.44 19.21 -16.02
-v -12.87 19.23 -16.02
-v -13.21 19.26 -15.92
-v -13.20 19.26 -16.02
-v -13.20 19.12 -16.02
-v -13.21 19.12 -15.92
-v -12.44 20.75 -16.00
-v -12.43 20.75 -16.10
-v -13.09 20.29 -16.05
-v -13.10 20.29 -15.95
-v -11.69 19.12 -15.79
-v -11.68 19.12 -15.89
-v -11.68 19.26 -15.89
-v -11.69 19.26 -15.79
-v -12.44 19.07 -16.00
-v -12.43 19.07 -16.10
-v -11.79 19.12 -15.94
-v -11.80 19.12 -15.84
-v -13.08 19.12 -16.16
-v -13.08 19.26 -16.16
-v -12.85 19.23 -16.20
-v -12.43 20.52 -16.10
-v -12.86 20.21 -16.09
-v -11.78 19.26 -16.04
-v -11.78 19.12 -16.04
-v -12.00 19.24 -16.12
-v -12.42 19.07 -16.20
-v -12.42 19.21 -16.20
-v -12.01 20.21 -15.94
-v -12.01 19.24 -15.94
-v -11.80 20.29 -15.84
-v -11.79 20.29 -15.94
-v -13.10 19.12 -15.95
-v -13.09 19.12 -16.05
-v -12.01 20.21 -16.01
-v -12.86 19.23 -16.09
-v -12.01 19.24 -16.01
-v -12.43 19.21 -16.10
-v -11.79 19.26 -15.94
-v -11.80 19.26 -15.84
-v -13.09 19.26 -16.05
-v -13.10 19.26 -15.95
-v -13.19 19.26 -16.13
-v -13.19 19.12 -16.13
-v -11.67 19.12 -16.00
-v -11.67 19.26 -16.00
-v -9.24 23.34 -12.52
-v -9.78 23.34 -13.29
-v -9.10 24.92 -13.76
-v -8.56 24.92 -12.99
-v -8.63 28.41 -12.92
-v -9.53 28.41 -12.29
-v -9.18 28.41 -13.70
-v -10.08 28.41 -13.07
-v -12.87 27.21 -14.81
-v -12.44 27.52 -14.82
-v -12.44 26.21 -14.82
-v -12.87 26.24 -14.81
-v -13.21 26.26 -14.72
-v -13.20 26.26 -14.82
-v -13.20 26.12 -14.82
-v -13.21 26.12 -14.72
-v -12.44 27.75 -14.80
-v -12.43 27.75 -14.89
-v -13.09 27.30 -14.85
-v -13.10 27.30 -14.75
-v -11.69 26.12 -14.59
-v -11.68 26.12 -14.69
-v -11.68 26.26 -14.69
-v -11.69 26.26 -14.59
-v -12.44 26.07 -14.80
-v -12.43 26.07 -14.89
-v -11.79 26.12 -14.73
-v -11.80 26.12 -14.64
-v -13.08 26.12 -14.96
-v -13.08 26.26 -14.96
-v -12.85 26.24 -14.99
-v -12.43 27.52 -14.89
-v -12.86 27.21 -14.89
-v -11.78 26.26 -14.84
-v -11.78 26.12 -14.84
-v -12.00 26.25 -14.92
-v -12.42 26.07 -15.00
-v -12.42 26.21 -15.00
-v -12.01 27.21 -14.74
-v -12.01 26.25 -14.74
-v -11.80 27.30 -14.64
-v -11.79 27.30 -14.73
-v -13.10 26.12 -14.75
-v -13.09 26.12 -14.85
-v -12.01 27.21 -14.81
-v -12.86 26.24 -14.89
-v -12.01 26.25 -14.81
-v -12.43 26.21 -14.89
-v -11.79 26.26 -14.73
-v -11.80 26.26 -14.64
-v -13.09 26.26 -14.85
-v -13.10 26.26 -14.75
-v -13.19 26.26 -14.93
-v -13.19 26.12 -14.93
-v -11.67 26.12 -14.79
-v -11.67 26.26 -14.79
-v -14.41 23.34 -14.01
-v -15.18 23.34 -13.46
-v -15.65 24.92 -14.14
-v -14.88 24.92 -14.68
-v -14.81 28.41 -14.61
-v -14.18 28.41 -13.71
-v -15.59 28.41 -14.07
-v -14.96 28.41 -13.17
-v -8.43 27.21 -10.98
-v -8.42 27.52 -10.55
-v -8.42 26.21 -10.55
-v -8.43 26.24 -10.98
-v -8.52 26.26 -11.32
-v -8.42 26.26 -11.31
-v -8.42 26.12 -11.31
-v -8.52 26.12 -11.32
-v -8.45 27.75 -10.55
-v -8.35 27.75 -10.54
-v -8.39 27.30 -11.20
-v -8.49 27.30 -11.21
-v -8.65 26.12 -9.80
-v -8.56 26.12 -9.79
-v -8.56 26.26 -9.79
-v -8.65 26.26 -9.80
-v -8.45 26.07 -10.55
-v -8.35 26.07 -10.54
-v -8.51 26.12 -9.90
-v -8.61 26.12 -9.91
-v -8.29 26.12 -11.19
-v -8.29 26.26 -11.19
-v -8.25 26.24 -10.96
-v -8.35 27.52 -10.54
-v -8.35 27.21 -10.97
-v -8.40 26.26 -9.89
-v -8.40 26.12 -9.89
-v -8.32 26.25 -10.11
-v -8.24 26.07 -10.53
-v -8.24 26.21 -10.53
-v -8.50 27.21 -10.13
-v -8.50 26.25 -10.13
-v -8.61 27.30 -9.91
-v -8.51 27.30 -9.90
-v -8.49 26.12 -11.21
-v -8.39 26.12 -11.20
-v -8.43 27.21 -10.12
-v -8.35 26.24 -10.97
-v -8.43 26.25 -10.12
-v -8.35 26.21 -10.54
-v -8.51 26.26 -9.90
-v -8.61 26.26 -9.91
-v -8.39 26.26 -11.20
-v -8.49 26.26 -11.21
-v -8.32 26.26 -11.30
-v -8.32 26.12 -11.30
-v -8.45 26.12 -9.78
-v -8.45 26.26 -9.78
-v -13.04 12.70 -6.81
-v -12.09 12.70 -6.81
-v -12.09 14.28 -5.99
-v -13.04 14.28 -5.99
-v -13.04 17.34 -5.64
-v -13.04 17.34 -6.74
-v -12.09 17.34 -5.64
-v -12.09 17.34 -6.74
-v -8.98 12.70 -12.20
-v -9.46 12.70 -13.02
-v -8.74 14.28 -13.43
-v -8.27 14.28 -12.61
-v -7.97 17.34 -12.79
-v -8.92 17.34 -12.24
-v -8.44 17.34 -13.61
-v -9.39 17.34 -13.06
-v -12.09 12.70 -14.54
-v -13.04 12.70 -14.54
-v -13.04 14.28 -15.36
-v -12.09 14.28 -15.36
-v -12.09 17.34 -15.71
-v -12.09 17.34 -14.62
-v -13.04 17.34 -15.71
-v -13.04 17.34 -14.62
-v -10.73 23.34 -7.35
-v -9.95 23.34 -7.89
-v -9.48 24.92 -7.22
-v -10.25 24.92 -6.67
-v -10.32 28.41 -6.74
-v -10.95 28.41 -7.65
-v -9.55 28.41 -7.29
-v -10.18 28.41 -8.19
-v -9.46 12.70 -8.34
-v -8.98 12.70 -9.15
-v -8.27 14.28 -8.74
-v -8.74 14.28 -7.92
-v -8.44 17.34 -7.75
-v -9.39 17.34 -8.30
-v -7.97 17.34 -8.57
-v -8.92 17.34 -9.12
-v -7.23 20.21 -10.98
-v -7.22 20.52 -10.55
-v -7.22 19.21 -10.55
-v -7.23 19.23 -10.98
-v -7.32 19.26 -11.32
-v -7.22 19.26 -11.31
-v -7.22 19.12 -11.31
-v -7.32 19.12 -11.32
-v -7.24 20.75 -10.55
-v -7.15 20.75 -10.54
-v -7.19 20.29 -11.20
-v -7.29 20.29 -11.21
-v -7.45 19.12 -9.80
-v -7.35 19.12 -9.79
-v -7.35 19.26 -9.79
-v -7.45 19.26 -9.80
-v -7.24 19.07 -10.55
-v -7.15 19.07 -10.54
-v -7.31 19.12 -9.90
-v -7.41 19.12 -9.91
-v -7.09 19.12 -11.19
-v -7.09 19.26 -11.19
-v -7.05 19.23 -10.96
-v -7.15 20.52 -10.54
-v -7.15 20.21 -10.97
-v -7.20 19.26 -9.89
-v -7.20 19.12 -9.89
-v -7.12 19.24 -10.11
-v -7.04 19.07 -10.53
-v -7.04 19.21 -10.53
-v -7.30 20.21 -10.13
-v -7.30 19.24 -10.13
-v -7.41 20.29 -9.91
-v -7.31 20.29 -9.90
-v -7.29 19.12 -11.21
-v -7.19 19.12 -11.20
-v -7.23 20.21 -10.12
-v -7.15 19.23 -10.97
-v -7.23 19.24 -10.12
-v -7.15 19.21 -10.54
-v -7.31 19.26 -9.90
-v -7.41 19.26 -9.91
-v -7.19 19.26 -11.20
-v -7.29 19.26 -11.21
-v -7.11 19.26 -11.30
-v -7.11 19.12 -11.30
-v -7.25 19.12 -9.78
-v -7.25 19.26 -9.78
-v -12.26 27.21 -6.54
-v -12.69 27.52 -6.53
-v -12.69 26.21 -6.53
-v -12.26 26.24 -6.54
-v -11.92 26.26 -6.63
-v -11.93 26.26 -6.53
-v -11.93 26.12 -6.53
-v -11.92 26.12 -6.63
-v -12.69 27.75 -6.56
-v -12.70 27.75 -6.46
-v -12.04 27.30 -6.51
-v -12.03 27.30 -6.60
-v -13.44 26.12 -6.76
-v -13.45 26.12 -6.67
-v -13.45 26.26 -6.67
-v -13.44 26.26 -6.76
-v -12.69 26.07 -6.56
-v -12.70 26.07 -6.46
-v -13.34 26.12 -6.62
-v -13.34 26.12 -6.72
-v -12.05 26.12 -6.40
-v -12.05 26.26 -6.40
-v -12.28 26.24 -6.36
-v -12.70 27.52 -6.46
-v -12.27 27.21 -6.47
-v -13.35 26.26 -6.51
-v -13.35 26.12 -6.51
-v -13.13 26.25 -6.43
-v -12.71 26.07 -6.35
-v -12.71 26.21 -6.35
-v -13.12 27.21 -6.61
-v -13.12 26.25 -6.61
-v -13.34 27.30 -6.72
-v -13.34 27.30 -6.62
-v -12.03 26.12 -6.60
-v -12.04 26.12 -6.51
-v -13.12 27.21 -6.54
-v -12.27 26.24 -6.47
-v -13.12 26.25 -6.54
-v -12.70 26.21 -6.46
-v -13.34 26.26 -6.62
-v -13.34 26.26 -6.72
-v -12.04 26.26 -6.51
-v -12.03 26.26 -6.60
-v -11.94 26.26 -6.43
-v -11.94 26.12 -6.43
-v -13.46 26.12 -6.56
-v -13.46 26.26 -6.56
-v -16.15 12.70 -9.15
-v -15.67 12.70 -8.34
-v -16.39 14.28 -7.92
-v -16.86 14.28 -8.74
-v -17.17 17.34 -8.57
-v -16.21 17.34 -9.12
-v -16.69 17.34 -7.75
-v -15.74 17.34 -8.30
-v -12.26 20.21 -5.34
-v -12.69 20.52 -5.33
-v -12.69 19.21 -5.33
-v -12.26 19.23 -5.34
-v -11.92 19.26 -5.43
-v -11.93 19.26 -5.33
-v -11.93 19.12 -5.33
-v -11.92 19.12 -5.43
-v -12.69 20.75 -5.36
-v -12.70 20.75 -5.26
-v -12.04 20.29 -5.30
-v -12.03 20.29 -5.40
-v -13.44 19.12 -5.56
-v -13.45 19.12 -5.47
-v -13.45 19.26 -5.47
-v -13.44 19.26 -5.56
-v -12.69 19.07 -5.36
-v -12.70 19.07 -5.26
-v -13.34 19.12 -5.42
-v -13.34 19.12 -5.52
-v -12.05 19.12 -5.20
-v -12.05 19.26 -5.20
-v -12.28 19.23 -5.16
-v -12.70 20.52 -5.26
-v -12.27 20.21 -5.26
-v -13.35 19.26 -5.31
-v -13.35 19.12 -5.31
-v -13.13 19.24 -5.23
-v -12.71 19.07 -5.15
-v -12.71 19.21 -5.15
-v -13.12 20.21 -5.41
-v -13.12 19.24 -5.41
-v -13.34 20.29 -5.52
-v -13.34 20.29 -5.42
-v -12.03 19.12 -5.40
-v -12.04 19.12 -5.30
-v -13.12 20.21 -5.34
-v -12.27 19.23 -5.26
-v -13.12 19.24 -5.34
-v -12.70 19.21 -5.26
-v -13.34 19.26 -5.42
-v -13.34 19.26 -5.52
-v -12.04 19.26 -5.30
-v -12.03 19.26 -5.40
-v -11.94 19.26 -5.23
-v -11.94 19.12 -5.23
-v -13.46 19.12 -5.36
-v -13.46 19.26 -5.36
-v -15.89 23.34 -8.84
-v -15.35 23.34 -8.06
-v -16.03 24.92 -7.59
-v -16.57 24.92 -8.36
-v -16.50 28.41 -8.43
-v -15.60 28.41 -9.06
-v -15.96 28.41 -7.66
-v -15.06 28.41 -8.29
-v -16.70 27.21 -10.37
-v -16.71 27.52 -10.80
-v -16.71 26.21 -10.80
-v -16.70 26.24 -10.37
-v -16.61 26.26 -10.03
-v -16.71 26.26 -10.04
-v -16.71 26.12 -10.04
-v -16.61 26.12 -10.03
-v -16.69 27.75 -10.80
-v -16.78 27.75 -10.81
-v -16.74 27.30 -10.15
-v -16.64 27.30 -10.15
-v -16.48 26.12 -11.55
-v -16.58 26.12 -11.56
-v -16.58 26.26 -11.56
-v -16.48 26.26 -11.55
-v -16.69 26.07 -10.80
-v -16.78 26.07 -10.81
-v -16.62 26.12 -11.45
-v -16.53 26.12 -11.45
-v -16.84 26.12 -10.16
-v -16.84 26.26 -10.16
-v -16.88 26.24 -10.39
-v -16.78 27.52 -10.81
-v -16.78 27.21 -10.38
-v -16.73 26.26 -11.46
-v -16.73 26.12 -11.46
-v -16.81 26.25 -11.24
-v -16.89 26.07 -10.82
-v -16.89 26.21 -10.82
-v -16.63 27.21 -11.23
-v -16.63 26.25 -11.23
-v -16.53 27.30 -11.45
-v -16.62 27.30 -11.45
-v -16.64 26.12 -10.15
-v -16.74 26.12 -10.15
-v -16.70 27.21 -11.23
-v -16.78 26.24 -10.38
-v -16.70 26.25 -11.23
-v -16.78 26.21 -10.81
-v -16.62 26.26 -11.45
-v -16.53 26.26 -11.45
-v -16.74 26.26 -10.15
-v -16.64 26.26 -10.15
-v -16.82 26.26 -10.05
-v -16.82 26.12 -10.05
-v -16.68 26.12 -11.57
-v -16.68 26.26 -11.57
-v -15.67 12.70 -13.02
-v -16.15 12.70 -12.20
-v -16.86 14.28 -12.61
-v -16.39 14.28 -13.43
-v -16.69 17.34 -13.61
-v -15.74 17.34 -13.06
-v -17.17 17.34 -12.79
-v -16.21 17.34 -12.24
-v -16.83 28.50 -13.14
-v -17.49 28.50 -10.68
-v -17.49 30.29 -10.68
-v -16.83 30.29 -13.14
-v -15.03 28.50 -14.94
-v -15.03 30.29 -14.94
-v -12.57 28.50 -15.60
-v -12.57 30.29 -15.60
-v -10.10 28.50 -14.94
-v -10.10 30.29 -14.94
-v -8.30 28.50 -13.14
-v -8.30 30.29 -13.14
-v -7.64 28.50 -10.68
-v -7.64 30.29 -10.68
-v -8.30 28.50 -8.21
-v -8.30 30.29 -8.21
-v -10.10 28.50 -6.41
-v -10.10 30.29 -6.41
-v -12.57 28.50 -5.75
-v -12.57 30.29 -5.75
-v -15.03 28.50 -6.41
-v -15.03 30.29 -6.41
-v -16.83 28.50 -8.21
-v -16.83 30.29 -8.21
-v -16.78 30.29 -10.68
-v -16.21 30.29 -12.78
-v -15.03 30.90 -14.94
-v -16.83 30.90 -13.14
-v -16.21 30.90 -12.78
-v -14.67 30.90 -14.32
-v -14.67 30.29 -14.32
-v -12.57 30.29 -14.89
-v -10.10 30.90 -14.94
-v -12.57 30.90 -15.60
-v -12.57 30.90 -14.89
-v -10.46 30.90 -14.32
-v -10.46 30.29 -14.32
-v -8.92 30.29 -12.78
-v -7.64 30.90 -10.68
-v -8.30 30.90 -13.14
-v -8.92 30.90 -12.78
-v -8.36 30.90 -10.68
-v -8.36 30.29 -10.68
-v -8.92 30.29 -8.57
-v -10.10 30.90 -6.41
-v -8.30 30.90 -8.21
-v -8.92 30.90 -8.57
-v -10.46 30.90 -7.03
-v -10.46 30.29 -7.03
-v -12.57 30.29 -6.47
-v -15.03 30.90 -6.41
-v -12.57 30.90 -5.75
-v -12.57 30.90 -6.47
-v -14.67 30.90 -7.03
-v -14.67 30.29 -7.03
-v -16.21 30.29 -8.57
-v -17.49 30.90 -10.68
-v -16.83 30.90 -8.21
-v -16.21 30.90 -8.57
-v -16.78 30.90 -10.68
-v -16.78 29.42 -10.68
-v -16.21 29.42 -12.78
-v -14.67 29.42 -14.32
-v -12.57 29.42 -14.89
-v -10.46 29.42 -14.32
-v -8.92 29.42 -12.78
-v -8.36 29.42 -10.68
-v -8.92 29.42 -8.57
-v -10.46 29.42 -7.03
-v -12.57 29.42 -6.47
-v -14.67 29.42 -7.03
-v -16.21 29.42 -8.57
-v -12.57 29.42 -10.68
-v 15.69 11.78 11.98
-v 15.69 11.78 -12.46
-v 10.74 17.79 -7.40
-v 10.74 17.79 7.40
-v -15.69 11.78 -12.46
-v -10.74 17.79 -7.40
-v -15.69 11.78 11.98
-v -10.74 17.79 7.40
-v 12.89 0.00 11.03
-v 12.89 0.00 -11.03
-v 12.89 11.78 -11.03
-v 12.89 11.78 11.03
-v -12.89 0.00 -11.03
-v -12.89 11.78 -11.03
-v -23.42 0.00 -6.76
-v -23.42 0.00 6.76
-v -23.42 6.95 6.76
-v -23.42 6.95 -6.76
-v -12.89 0.00 11.03
-v -12.89 11.78 11.03
-v 8.74 17.79 -3.62
-v 8.74 17.79 3.62
-v -8.74 17.79 -3.62
-v -8.74 17.79 3.62
-v -12.89 6.95 6.76
-v -12.89 0.00 6.76
-v -12.89 6.95 -6.76
-v -12.89 0.00 -6.76
-v -9.46 12.70 7.57
-v -8.74 14.28 7.16
-v -8.27 14.28 7.98
-v -8.98 12.70 8.39
-v -9.39 17.34 7.53
-v -8.44 17.34 6.98
-v -7.97 17.34 7.80
-v -8.92 17.34 8.35
-v -9.31 28.15 -0.00
-v -9.31 23.30 4.54
-v 0.00 22.65 4.30
-v -0.11 25.84 -0.00
-v -9.31 27.72 -0.00
-v -9.31 22.87 4.55
-v 0.00 22.23 4.31
-v 0.00 22.65 -4.30
-v -9.31 23.30 -4.54
-v -9.31 22.87 -4.55
-v 0.00 22.23 -4.31
-v 9.31 28.15 -0.00
-v 9.31 23.30 4.54
-v 9.31 27.72 -0.00
-v 9.31 22.87 4.55
-v 9.31 23.30 -4.54
-v 9.31 22.87 -4.55
-v 4.76 26.71 -0.63
-v 5.87 26.95 -0.63
-v 5.91 26.75 -0.63
-v 4.80 26.52 -0.63
-v 4.68 27.10 -0.11
-v 5.79 27.34 -0.11
-v 4.72 26.91 -0.11
-v 5.79 27.35 -0.00
-v 4.68 27.12 -0.00
-v 4.72 26.93 -0.00
-v 5.91 26.75 0.63
-v 5.87 26.95 0.63
-v 4.76 26.71 0.63
-v 4.80 26.52 0.63
-v 5.79 27.34 0.11
-v 4.68 27.10 0.11
-v 4.72 26.91 0.11
-v 3.88 26.49 -0.63
-v 5.00 26.69 -0.63
-v 5.03 26.49 -0.63
-v 3.91 26.30 -0.63
-v 3.81 26.89 -0.11
-v 4.93 27.08 -0.11
-v 3.84 26.69 -0.11
-v 4.92 27.09 -0.00
-v 3.81 26.90 -0.00
-v 3.84 26.71 -0.00
-v 5.03 26.49 0.63
-v 5.00 26.69 0.63
-v 3.88 26.49 0.63
-v 3.91 26.30 0.63
-v 4.93 27.08 0.11
-v 3.81 26.89 0.11
-v 3.84 26.69 0.11
-v 2.89 26.32 -0.63
-v 4.01 26.46 -0.63
-v 4.04 26.27 -0.63
-v 2.91 26.13 -0.63
-v 2.84 26.72 -0.11
-v 3.96 26.86 -0.11
-v 2.86 26.53 -0.11
-v 3.96 26.87 -0.00
-v 2.84 26.74 -0.00
-v 2.86 26.54 -0.00
-v 4.04 26.27 0.63
-v 4.01 26.46 0.63
-v 2.89 26.32 0.63
-v 2.91 26.13 0.63
-v 3.96 26.86 0.11
-v 2.84 26.72 0.11
-v 2.86 26.53 0.11
-v 1.88 26.15 -0.63
-v 3.00 26.29 -0.63
-v 3.02 26.09 -0.63
-v 1.90 25.96 -0.63
-v 1.83 26.55 -0.11
-v 2.95 26.69 -0.11
-v 1.85 26.36 -0.11
-v 2.95 26.70 -0.00
-v 1.83 26.56 -0.00
-v 1.85 26.37 -0.00
-v 3.02 26.09 0.63
-v 3.00 26.29 0.63
-v 1.88 26.15 0.63
-v 1.90 25.96 0.63
-v 2.95 26.69 0.11
-v 1.83 26.55 0.11
-v 1.85 26.36 0.11
-v 0.78 26.08 -0.63
-v 1.91 26.12 -0.63
-v 1.92 25.93 -0.63
-v 0.79 25.89 -0.63
-v 0.77 26.49 -0.11
-v 1.90 26.52 -0.11
-v 0.77 26.29 -0.11
-v 1.90 26.54 -0.00
-v 0.77 26.50 -0.00
-v 0.77 26.30 -0.00
-v 1.92 25.93 0.63
-v 1.91 26.12 0.63
-v 0.78 26.08 0.63
-v 0.79 25.89 0.63
-v 1.90 26.52 0.11
-v 0.77 26.49 0.11
-v 0.77 26.29 0.11
-v -0.35 26.05 -0.63
-v 0.78 26.11 -0.63
-v 0.79 25.91 -0.63
-v -0.34 25.85 -0.63
-v -0.37 26.45 -0.11
-v 0.76 26.51 -0.11
-v -0.36 26.25 -0.11
-v 0.76 26.52 -0.00
-v -0.38 26.46 -0.00
-v -0.37 26.27 -0.00
-v 0.79 25.91 0.63
-v 0.78 26.11 0.63
-v -0.35 26.05 0.63
-v -0.34 25.85 0.63
-v 0.76 26.51 0.11
-v -0.37 26.45 0.11
-v -0.36 26.25 0.11
-v 6.98 27.27 -0.63
-v 8.09 27.50 -0.63
-v 8.13 27.31 -0.63
-v 7.02 27.08 -0.63
-v 6.90 27.66 -0.11
-v 8.01 27.90 -0.11
-v 6.94 27.47 -0.11
-v 8.00 27.91 -0.00
-v 6.89 27.68 -0.00
-v 6.93 27.48 -0.00
-v 8.13 27.31 0.63
-v 8.09 27.50 0.63
-v 6.98 27.27 0.63
-v 7.02 27.08 0.63
-v 8.01 27.90 0.11
-v 6.90 27.66 0.11
-v 6.94 27.47 0.11
-v 5.87 26.96 -0.63
-v 6.98 27.20 -0.63
-v 7.02 27.01 -0.63
-v 5.91 26.77 -0.63
-v 5.79 27.36 -0.11
-v 6.90 27.59 -0.11
-v 5.83 27.17 -0.11
-v 6.89 27.60 -0.00
-v 5.79 27.37 -0.00
-v 5.83 27.18 -0.00
-v 7.02 27.01 0.63
-v 6.98 27.20 0.63
-v 5.87 26.96 0.63
-v 5.91 26.77 0.63
-v 6.90 27.59 0.11
-v 5.79 27.36 0.11
-v 5.83 27.17 0.11
-v -6.20 26.77 -0.63
-v -6.16 26.96 -0.63
-v -5.05 26.72 -0.63
-v -5.09 26.53 -0.63
-v -4.97 27.12 -0.11
-v -6.08 27.35 -0.11
-v -5.01 26.92 -0.11
-v -6.07 27.36 -0.00
-v -4.96 27.13 -0.00
-v -5.01 26.94 -0.00
-v -5.05 26.72 0.63
-v -6.16 26.96 0.63
-v -6.20 26.77 0.63
-v -5.09 26.53 0.63
-v -4.97 27.12 0.11
-v -6.08 27.35 0.11
-v -5.01 26.92 0.11
-v -5.32 26.52 -0.63
-v -5.28 26.71 -0.63
-v -4.17 26.51 -0.63
-v -4.20 26.32 -0.63
-v -4.10 26.91 -0.11
-v -5.21 27.11 -0.11
-v -4.13 26.72 -0.11
-v -5.21 27.12 -0.00
-v -4.10 26.92 -0.00
-v -4.13 26.73 -0.00
-v -4.17 26.51 0.63
-v -5.28 26.71 0.63
-v -5.32 26.52 0.63
-v -4.20 26.32 0.63
-v -4.10 26.91 0.11
-v -5.21 27.11 0.11
-v -4.13 26.72 0.11
-v -4.32 26.27 -0.63
-v -4.30 26.46 -0.63
-v -3.18 26.32 -0.63
-v -3.20 26.13 -0.63
-v -3.13 26.72 -0.11
-v -4.25 26.86 -0.11
-v -3.15 26.53 -0.11
-v -4.25 26.87 -0.00
-v -3.13 26.73 -0.00
-v -3.15 26.54 -0.00
-v -3.18 26.32 0.63
-v -4.30 26.46 0.63
-v -4.32 26.27 0.63
-v -3.20 26.13 0.63
-v -3.13 26.72 0.11
-v -4.25 26.86 0.11
-v -3.15 26.53 0.11
-v -3.31 26.05 -0.63
-v -3.29 26.24 -0.63
-v -2.16 26.11 -0.63
-v -2.19 25.91 -0.63
-v -2.12 26.50 -0.11
-v -3.24 26.64 -0.11
-v -2.14 26.31 -0.11
-v -3.24 26.65 -0.00
-v -2.11 26.52 -0.00
-v -2.14 26.32 -0.00
-v -2.16 26.11 0.63
-v -3.29 26.24 0.63
-v -3.31 26.05 0.63
-v -2.19 25.91 0.63
-v -2.12 26.50 0.11
-v -3.24 26.64 0.11
-v -2.14 26.31 0.11
-v -2.21 25.88 -0.63
-v -2.20 26.08 -0.63
-v -1.07 26.04 -0.63
-v -1.07 25.84 -0.63
-v -1.05 26.44 -0.11
-v -2.19 26.48 -0.11
-v -1.06 26.25 -0.11
-v -2.19 26.49 -0.00
-v -1.05 26.45 -0.00
-v -1.06 26.26 -0.00
-v -1.07 26.04 0.63
-v -2.20 26.08 0.63
-v -2.21 25.88 0.63
-v -1.07 25.84 0.63
-v -1.05 26.44 0.11
-v -2.19 26.48 0.11
-v -1.06 26.25 0.11
-v -1.08 25.87 -0.63
-v -1.07 26.06 -0.63
-v 0.07 26.00 -0.63
-v 0.06 25.80 -0.63
-v 0.09 26.40 -0.11
-v -1.04 26.46 -0.11
-v 0.08 26.21 -0.11
-v -1.04 26.47 -0.00
-v 0.09 26.41 -0.00
-v 0.08 26.22 -0.00
-v 0.07 26.00 0.63
-v -1.07 26.06 0.63
-v -1.08 25.87 0.63
-v 0.06 25.80 0.63
-v 0.09 26.40 0.11
-v -1.04 26.46 0.11
-v 0.08 26.21 0.11
-v -8.19 27.32 -0.63
-v -8.15 27.51 -0.63
-v -7.04 27.28 -0.63
-v -7.08 27.09 -0.63
-v -6.96 27.67 -0.11
-v -8.07 27.90 -0.11
-v -7.00 27.48 -0.11
-v -8.06 27.92 -0.00
-v -6.95 27.68 -0.00
-v -6.99 27.49 -0.00
-v -7.04 27.28 0.63
-v -8.15 27.51 0.63
-v -8.19 27.32 0.63
-v -7.08 27.09 0.63
-v -6.96 27.67 0.11
-v -8.07 27.90 0.11
-v -7.00 27.48 0.11
-v -7.06 27.02 -0.63
-v -7.02 27.21 -0.63
-v -5.92 26.97 -0.63
-v -5.96 26.78 -0.63
-v -5.83 27.37 -0.11
-v -6.94 27.60 -0.11
-v -5.87 27.18 -0.11
-v -6.94 27.61 -0.00
-v -5.83 27.38 -0.00
-v -5.87 27.19 -0.00
-v -5.92 26.97 0.63
-v -7.02 27.21 0.63
-v -7.06 27.02 0.63
-v -5.96 26.78 0.63
-v -5.83 27.37 0.11
-v -6.94 27.60 0.11
-v -5.87 27.18 0.11
-v -9.18 27.83 -0.63
-v -8.10 27.48 -0.63
-v -8.16 27.29 -0.63
-v -9.24 27.64 -0.63
-v -9.05 28.21 -0.11
-v -7.98 27.86 -0.11
-v -9.11 28.02 -0.11
-v -7.97 27.87 -0.00
-v -9.05 28.22 -0.00
-v -9.11 28.04 -0.00
-v -8.16 27.29 0.63
-v -8.10 27.48 0.63
-v -9.18 27.83 0.63
-v -9.24 27.64 0.63
-v -7.98 27.86 0.11
-v -9.05 28.21 0.11
-v -9.11 28.02 0.11
-v 8.19 27.28 -0.63
-v 8.13 27.46 -0.63
-v 9.21 27.81 -0.63
-v 9.27 27.63 -0.63
-v 9.08 28.20 -0.11
-v 8.01 27.84 -0.11
-v 9.15 28.01 -0.11
-v 8.00 27.86 -0.00
-v 9.08 28.21 -0.00
-v 9.14 28.02 -0.00
-v 9.21 27.81 0.63
-v 8.13 27.46 0.63
-v 8.19 27.28 0.63
-v 9.27 27.63 0.63
-v 9.08 28.20 0.11
-v 8.01 27.84 0.11
-v 9.15 28.01 0.11
-v 9.46 12.70 7.57
-v 8.98 12.70 8.39
-v 8.27 14.28 7.98
-v 8.74 14.28 7.16
-v 8.44 17.34 6.98
-v 9.39 17.34 7.53
-v 7.97 17.34 7.80
-v 8.92 17.34 8.35
-v -15.48 7.80 6.90
-v -15.48 7.80 6.03
-v -17.46 7.80 6.03
-v -17.46 7.80 6.90
-v -15.48 6.95 6.90
-v -15.48 6.95 6.03
-v -17.46 6.95 6.03
-v -17.46 6.95 6.90
-v -18.47 7.80 6.90
-v -18.47 7.80 6.03
-v -20.45 7.80 6.03
-v -20.45 7.80 6.90
-v -18.47 6.95 6.90
-v -18.47 6.95 6.03
-v -20.45 6.95 6.03
-v -20.45 6.95 6.90
-v -21.45 7.80 6.90
-v -21.45 7.80 6.03
-v -23.44 7.80 6.03
-v -23.44 7.80 6.90
-v -21.45 6.95 6.90
-v -21.45 6.95 6.03
-v -23.44 6.95 6.03
-v -23.44 6.95 6.90
-v -23.40 7.80 5.50
-v -22.53 7.80 5.50
-v -22.53 7.80 3.51
-v -23.40 7.80 3.51
-v -23.40 6.95 5.50
-v -22.53 6.95 5.50
-v -22.53 6.95 3.51
-v -23.40 6.95 3.51
-v -23.40 7.80 2.51
-v -22.53 7.80 2.51
-v -22.53 7.80 0.53
-v -23.40 7.80 0.53
-v -23.40 6.95 2.51
-v -22.53 6.95 2.51
-v -22.53 6.95 0.53
-v -23.40 6.95 0.53
-v -23.40 7.80 -0.48
-v -22.53 7.80 -0.48
-v -22.53 7.80 -2.46
-v -23.40 7.80 -2.46
-v -23.40 6.95 -0.48
-v -22.53 6.95 -0.48
-v -22.53 6.95 -2.46
-v -23.40 6.95 -2.46
-v -23.40 7.80 -3.47
-v -22.53 7.80 -3.47
-v -22.53 7.80 -5.45
-v -23.40 7.80 -5.45
-v -23.40 6.95 -3.47
-v -22.53 6.95 -3.47
-v -22.53 6.95 -5.45
-v -23.40 6.95 -5.45
-v -21.45 7.80 -6.02
-v -21.45 7.80 -6.88
-v -23.44 7.80 -6.88
-v -23.44 7.80 -6.02
-v -21.45 6.95 -6.02
-v -21.45 6.95 -6.88
-v -23.44 6.95 -6.88
-v -23.44 6.95 -6.02
-v -18.47 7.80 -6.02
-v -18.47 7.80 -6.88
-v -20.45 7.80 -6.88
-v -20.45 7.80 -6.02
-v -18.47 6.95 -6.02
-v -18.47 6.95 -6.88
-v -20.45 6.95 -6.88
-v -20.45 6.95 -6.02
-v -15.48 7.80 -6.02
-v -15.48 7.80 -6.88
-v -17.46 7.80 -6.88
-v -17.46 7.80 -6.02
-v -15.48 6.95 -6.02
-v -15.48 6.95 -6.88
-v -17.46 6.95 -6.88
-v -17.46 6.95 -6.02
-v -7.10 7.80 -12.06
-v -7.10 7.80 -12.93
-v -9.08 7.80 -12.93
-v -9.08 7.80 -12.06
-v -7.10 6.95 -12.06
-v -7.10 6.95 -12.93
-v -9.08 6.95 -12.93
-v -9.08 6.95 -12.06
-v -4.46 7.80 -12.06
-v -4.46 7.80 -12.93
-v -6.45 7.80 -12.93
-v -6.45 7.80 -12.06
-v -4.46 6.95 -12.06
-v -4.46 6.95 -12.93
-v -6.45 6.95 -12.93
-v -6.45 6.95 -12.06
-v -1.83 7.80 -12.06
-v -1.83 7.80 -12.93
-v -3.81 7.80 -12.93
-v -3.81 7.80 -12.06
-v -1.83 6.95 -12.06
-v -1.83 6.95 -12.93
-v -3.81 6.95 -12.93
-v -3.81 6.95 -12.06
-v 0.81 7.80 -12.06
-v 0.81 7.80 -12.93
-v -1.17 7.80 -12.93
-v -1.17 7.80 -12.06
-v 0.81 6.95 -12.06
-v 0.81 6.95 -12.93
-v -1.17 6.95 -12.93
-v -1.17 6.95 -12.06
-v 3.44 7.80 -12.06
-v 3.44 7.80 -12.93
-v 1.46 7.80 -12.93
-v 1.46 7.80 -12.06
-v 3.44 6.95 -12.06
-v 3.44 6.95 -12.93
-v 1.46 6.95 -12.93
-v 1.46 6.95 -12.06
-v 6.08 7.80 -12.06
-v 6.08 7.80 -12.93
-v 4.10 7.80 -12.93
-v 4.10 7.80 -12.06
-v 6.08 6.95 -12.06
-v 6.08 6.95 -12.93
-v 4.10 6.95 -12.93
-v 4.10 6.95 -12.06
-v 8.72 7.80 -12.06
-v 8.72 7.80 -12.93
-v 6.74 7.80 -12.93
-v 6.74 7.80 -12.06
-v 8.72 6.95 -12.06
-v 8.72 6.95 -12.93
-v 6.74 6.95 -12.93
-v 6.74 6.95 -12.06
-v -4.39 18.64 -6.78
-v -4.39 18.64 -7.64
-v -6.37 18.64 -7.64
-v -6.37 18.64 -6.78
-v -4.39 17.79 -6.78
-v -4.39 17.79 -7.64
-v -6.37 17.79 -7.64
-v -6.37 17.79 -6.78
-v -1.66 18.64 -6.78
-v -1.66 18.64 -7.64
-v -3.64 18.64 -7.64
-v -3.64 18.64 -6.78
-v -1.66 17.79 -6.78
-v -1.66 17.79 -7.64
-v -3.64 17.79 -7.64
-v -3.64 17.79 -6.78
-v 1.06 18.64 -6.78
-v 1.06 18.64 -7.64
-v -0.92 18.64 -7.64
-v -0.92 18.64 -6.78
-v 1.06 17.79 -6.78
-v 1.06 17.79 -7.64
-v -0.92 17.79 -7.64
-v -0.92 17.79 -6.78
-v 3.79 18.64 -6.78
-v 3.79 18.64 -7.64
-v 1.80 18.64 -7.64
-v 1.80 18.64 -6.78
-v 3.79 17.79 -6.78
-v 3.79 17.79 -7.64
-v 1.80 17.79 -7.64
-v 1.80 17.79 -6.78
-v 6.51 18.64 -6.78
-v 6.51 18.64 -7.64
-v 4.53 18.64 -7.64
-v 4.53 18.64 -6.78
-v 6.51 17.79 -6.78
-v 6.51 17.79 -7.64
-v 4.53 17.79 -7.64
-v 4.53 17.79 -6.78
-v 9.24 18.64 -6.78
-v 9.24 18.64 -7.64
-v 7.25 18.64 -7.64
-v 7.25 18.64 -6.78
-v 9.24 17.79 -6.78
-v 9.24 17.79 -7.64
-v 7.25 17.79 -7.64
-v 7.25 17.79 -6.78
-v -7.11 18.64 -6.78
-v -7.11 18.64 -7.64
-v -9.09 18.64 -7.64
-v -9.09 18.64 -6.78
-v -7.11 17.79 -6.78
-v -7.11 17.79 -7.64
-v -9.09 17.79 -7.64
-v -9.09 17.79 -6.78
-v -9.92 18.64 -6.55
-v -10.78 18.64 -6.55
-v -10.78 18.64 -4.56
-v -9.92 18.64 -4.56
-v -9.92 17.79 -6.55
-v -10.78 17.79 -6.55
-v -10.78 17.79 -4.56
-v -9.92 17.79 -4.56
-v -9.92 18.64 -3.82
-v -10.78 18.64 -3.82
-v -10.78 18.64 -1.84
-v -9.92 18.64 -1.84
-v -9.92 17.79 -3.82
-v -10.78 17.79 -3.82
-v -10.78 17.79 -1.84
-v -9.92 17.79 -1.84
-v -9.92 18.64 -1.10
-v -10.78 18.64 -1.10
-v -10.78 18.64 0.88
-v -9.92 18.64 0.88
-v -9.92 17.79 -1.10
-v -10.78 17.79 -1.10
-v -10.78 17.79 0.88
-v -9.92 17.79 0.88
-v -9.92 18.64 1.63
-v -10.78 18.64 1.63
-v -10.78 18.64 3.61
-v -9.92 18.64 3.61
-v -9.92 17.79 1.63
-v -10.78 17.79 1.63
-v -10.78 17.79 3.61
-v -9.92 17.79 3.61
-v -7.11 18.64 7.48
-v -7.11 18.64 6.62
-v -9.09 18.64 6.62
-v -9.09 18.64 7.48
-v -7.11 17.79 7.48
-v -7.11 17.79 6.62
-v -9.09 17.79 6.62
-v -9.09 17.79 7.48
-v -4.39 18.64 7.48
-v -4.39 18.64 6.62
-v -6.37 18.64 6.62
-v -6.37 18.64 7.48
-v -4.39 17.79 7.48
-v -4.39 17.79 6.62
-v -6.37 17.79 6.62
-v -6.37 17.79 7.48
-v -1.66 18.64 7.48
-v -1.66 18.64 6.62
-v -3.64 18.64 6.62
-v -3.64 18.64 7.48
-v -1.66 17.79 7.48
-v -1.66 17.79 6.62
-v -3.64 17.79 6.62
-v -3.64 17.79 7.48
-v 1.06 18.64 7.48
-v 1.06 18.64 6.62
-v -0.92 18.64 6.62
-v -0.92 18.64 7.48
-v 1.06 17.79 7.48
-v 1.06 17.79 6.62
-v -0.92 17.79 6.62
-v -0.92 17.79 7.48
-v 3.79 18.64 7.48
-v 3.79 18.64 6.62
-v 1.80 18.64 6.62
-v 1.80 18.64 7.48
-v 3.79 17.79 7.48
-v 3.79 17.79 6.62
-v 1.80 17.79 6.62
-v 1.80 17.79 7.48
-v 9.24 18.64 7.48
-v 9.24 18.64 6.62
-v 7.25 18.64 6.62
-v 7.25 18.64 7.48
-v 9.24 17.79 7.48
-v 9.24 17.79 6.62
-v 7.25 17.79 6.62
-v 7.25 17.79 7.48
-v 6.51 18.64 7.48
-v 6.51 18.64 6.62
-v 4.53 18.64 6.62
-v 4.53 18.64 7.48
-v 6.51 17.79 7.48
-v 6.51 17.79 6.62
-v 4.53 17.79 6.62
-v 4.53 17.79 7.48
-v 10.85 18.64 -6.55
-v 9.99 18.64 -6.55
-v 9.99 18.64 -4.56
-v 10.85 18.64 -4.56
-v 10.85 17.79 -6.55
-v 9.99 17.79 -6.55
-v 9.99 17.79 -4.56
-v 10.85 17.79 -4.56
-v 10.85 18.64 -3.82
-v 9.99 18.64 -3.82
-v 9.99 18.64 -1.84
-v 10.85 18.64 -1.84
-v 10.85 17.79 -3.82
-v 9.99 17.79 -3.82
-v 9.99 17.79 -1.84
-v 10.85 17.79 -1.84
-v 10.85 18.64 -1.10
-v 9.99 18.64 -1.10
-v 9.99 18.64 0.88
-v 10.85 18.64 0.88
-v 10.85 17.79 -1.10
-v 9.99 17.79 -1.10
-v 9.99 17.79 0.88
-v 10.85 17.79 0.88
-v 10.85 18.64 1.63
-v 9.99 18.64 1.63
-v 9.99 18.64 3.61
-v 10.85 18.64 3.61
-v 10.85 17.79 1.63
-v 9.99 17.79 1.63
-v 9.99 17.79 3.61
-v 10.85 17.79 3.61
-v 10.85 18.64 4.35
-v 9.99 18.64 4.35
-v 9.99 18.64 6.33
-v 10.85 18.64 6.33
-v 10.85 17.79 4.35
-v 9.99 17.79 4.35
-v 9.99 17.79 6.33
-v 10.85 17.79 6.33
-v 11.17 6.95 -11.03
-v 11.17 6.95 -12.83
-v -11.17 6.95 -12.83
-v -11.17 6.95 -11.03
-v 11.17 -0.02 -12.83
-v -11.17 -0.02 -12.83
-v -19.96 4.66 -6.77
-v -19.60 5.22 -6.77
-v -19.60 2.88 -6.77
-v -19.96 2.92 -6.77
-v -20.24 2.96 -6.83
-v -20.24 2.71 -6.83
-v -20.24 2.71 -6.75
-v -20.24 2.96 -6.75
-v -19.60 5.63 -6.83
-v -20.15 4.82 -6.83
-v -20.15 4.82 -6.75
-v -19.60 5.63 -6.75
-v -18.96 2.71 -6.83
-v -18.96 2.96 -6.83
-v -18.96 2.96 -6.75
-v -18.96 2.71 -6.75
-v -19.60 2.63 -6.83
-v -19.05 2.71 -6.83
-v -19.05 2.71 -6.75
-v -19.60 2.63 -6.75
-v -20.15 2.71 -6.92
-v -20.15 2.96 -6.92
-v -19.96 2.92 -6.92
-v -19.60 5.22 -6.83
-v -19.96 4.66 -6.83
-v -19.05 2.96 -6.92
-v -19.05 2.71 -6.92
-v -19.24 2.94 -6.92
-v -19.60 2.63 -6.92
-v -19.60 2.88 -6.92
-v -19.24 4.66 -6.77
-v -19.24 2.94 -6.77
-v -19.05 4.82 -6.83
-v -19.05 4.82 -6.75
-v -20.15 2.71 -6.83
-v -20.15 2.71 -6.75
-v -19.24 4.66 -6.83
-v -19.96 2.92 -6.83
-v -19.24 2.94 -6.83
-v -19.60 2.88 -6.83
-v -19.05 2.96 -6.83
-v -19.05 2.96 -6.75
-v -20.15 2.96 -6.83
-v -20.15 2.96 -6.75
-v -20.24 2.96 -6.92
-v -20.24 2.71 -6.92
-v -18.96 2.71 -6.92
-v -18.96 2.96 -6.92
-v -6.81 4.66 -12.83
-v -6.45 5.22 -12.83
-v -6.45 2.88 -12.83
-v -6.81 2.92 -12.83
-v -7.09 2.96 -12.89
-v -7.09 2.71 -12.89
-v -7.09 2.71 -12.81
-v -7.09 2.96 -12.81
-v -6.45 5.63 -12.89
-v -6.99 4.82 -12.89
-v -6.99 4.82 -12.81
-v -6.45 5.63 -12.81
-v -5.81 2.71 -12.89
-v -5.81 2.96 -12.89
-v -5.81 2.96 -12.81
-v -5.81 2.71 -12.81
-v -6.45 2.63 -12.89
-v -5.90 2.71 -12.89
-v -5.90 2.71 -12.81
-v -6.45 2.63 -12.81
-v -6.99 2.71 -12.98
-v -6.99 2.96 -12.98
-v -6.81 2.92 -12.98
-v -6.45 5.22 -12.89
-v -6.81 4.66 -12.89
-v -5.90 2.96 -12.98
-v -5.90 2.71 -12.98
-v -6.09 2.94 -12.98
-v -6.45 2.63 -12.98
-v -6.45 2.88 -12.98
-v -6.09 4.66 -12.83
-v -6.09 2.94 -12.83
-v -5.90 4.82 -12.89
-v -5.90 4.82 -12.81
-v -6.99 2.71 -12.89
-v -6.99 2.71 -12.81
-v -6.09 4.66 -12.89
-v -6.81 2.92 -12.89
-v -6.09 2.94 -12.89
-v -6.45 2.88 -12.89
-v -5.90 2.96 -12.89
-v -5.90 2.96 -12.81
-v -6.99 2.96 -12.89
-v -6.99 2.96 -12.81
-v -7.09 2.96 -12.98
-v -7.09 2.71 -12.98
-v -5.81 2.71 -12.98
-v -5.81 2.96 -12.98
-v -4.17 10.56 -11.04
-v -3.81 11.12 -11.04
-v -3.81 8.77 -11.04
-v -4.17 8.82 -11.04
-v -4.45 8.86 -11.10
-v -4.45 8.61 -11.10
-v -4.45 8.61 -11.02
-v -4.45 8.86 -11.02
-v -3.81 11.53 -11.10
-v -4.36 10.72 -11.10
-v -4.36 10.72 -11.02
-v -3.81 11.53 -11.02
-v -3.17 8.61 -11.10
-v -3.17 8.86 -11.10
-v -3.17 8.86 -11.02
-v -3.17 8.61 -11.02
-v -3.81 8.52 -11.10
-v -3.27 8.61 -11.10
-v -3.27 8.61 -11.02
-v -3.81 8.52 -11.02
-v -4.36 8.61 -11.19
-v -4.36 8.86 -11.19
-v -4.17 8.82 -11.19
-v -3.81 11.12 -11.10
-v -4.17 10.56 -11.10
-v -3.27 8.86 -11.19
-v -3.27 8.61 -11.19
-v -3.45 8.83 -11.19
-v -3.81 8.52 -11.19
-v -3.81 8.77 -11.19
-v -3.45 10.56 -11.04
-v -3.45 8.83 -11.04
-v -3.27 10.72 -11.10
-v -3.27 10.72 -11.02
-v -4.36 8.61 -11.10
-v -4.36 8.61 -11.02
-v -3.45 10.56 -11.10
-v -4.17 8.82 -11.10
-v -3.45 8.83 -11.10
-v -3.81 8.77 -11.10
-v -3.27 8.86 -11.10
-v -3.27 8.86 -11.02
-v -4.36 8.86 -11.10
-v -4.36 8.86 -11.02
-v -4.45 8.86 -11.19
-v -4.45 8.61 -11.19
-v -3.17 8.61 -11.19
-v -3.17 8.86 -11.19
-v 3.09 10.56 -11.04
-v 3.44 11.12 -11.04
-v 3.44 8.77 -11.04
-v 3.09 8.82 -11.04
-v 2.81 8.86 -11.10
-v 2.81 8.61 -11.10
-v 2.81 8.61 -11.02
-v 2.81 8.86 -11.02
-v 3.44 11.53 -11.10
-v 2.90 10.72 -11.10
-v 2.90 10.72 -11.02
-v 3.44 11.53 -11.02
-v 4.08 8.61 -11.10
-v 4.08 8.86 -11.10
-v 4.08 8.86 -11.02
-v 4.08 8.61 -11.02
-v 3.44 8.52 -11.10
-v 3.99 8.61 -11.10
-v 3.99 8.61 -11.02
-v 3.44 8.52 -11.02
-v 2.90 8.61 -11.19
-v 2.90 8.86 -11.19
-v 3.09 8.82 -11.19
-v 3.44 11.12 -11.10
-v 3.09 10.56 -11.10
-v 3.99 8.86 -11.19
-v 3.99 8.61 -11.19
-v 3.80 8.83 -11.19
-v 3.44 8.52 -11.19
-v 3.44 8.77 -11.19
-v 3.80 10.56 -11.04
-v 3.80 8.83 -11.04
-v 3.99 10.72 -11.10
-v 3.99 10.72 -11.02
-v 2.90 8.61 -11.10
-v 2.90 8.61 -11.02
-v 3.80 10.56 -11.10
-v 3.09 8.82 -11.10
-v 3.80 8.83 -11.10
-v 3.44 8.77 -11.10
-v 3.99 8.86 -11.10
-v 3.99 8.86 -11.02
-v 2.90 8.86 -11.10
-v 2.90 8.86 -11.02
-v 2.81 8.86 -11.19
-v 2.81 8.61 -11.19
-v 4.08 8.61 -11.19
-v 4.08 8.86 -11.19
-v 5.72 4.66 -12.83
-v 6.08 5.22 -12.83
-v 6.08 2.88 -12.83
-v 5.72 2.92 -12.83
-v 5.44 2.96 -12.89
-v 5.44 2.71 -12.89
-v 5.44 2.71 -12.81
-v 5.44 2.96 -12.81
-v 6.08 5.63 -12.89
-v 5.54 4.82 -12.89
-v 5.54 4.82 -12.81
-v 6.08 5.63 -12.81
-v 6.72 2.71 -12.89
-v 6.72 2.96 -12.89
-v 6.72 2.96 -12.81
-v 6.72 2.71 -12.81
-v 6.08 2.63 -12.89
-v 6.63 2.71 -12.89
-v 6.63 2.71 -12.81
-v 6.08 2.63 -12.81
-v 5.54 2.71 -12.98
-v 5.54 2.96 -12.98
-v 5.72 2.92 -12.98
-v 6.08 5.22 -12.89
-v 5.72 4.66 -12.89
-v 6.63 2.96 -12.98
-v 6.63 2.71 -12.98
-v 6.44 2.94 -12.98
-v 6.08 2.63 -12.98
-v 6.08 2.88 -12.98
-v 6.44 4.66 -12.83
-v 6.44 2.94 -12.83
-v 6.63 4.82 -12.89
-v 6.63 4.82 -12.81
-v 5.54 2.71 -12.89
-v 5.54 2.71 -12.81
-v 6.44 4.66 -12.89
-v 5.72 2.92 -12.89
-v 6.44 2.94 -12.89
-v 6.08 2.88 -12.89
-v 6.63 2.96 -12.89
-v 6.63 2.96 -12.81
-v 5.54 2.96 -12.89
-v 5.54 2.96 -12.81
-v 5.44 2.96 -12.98
-v 5.44 2.71 -12.98
-v 6.72 2.71 -12.98
-v 6.72 2.96 -12.98
-v -6.30 20.76 -3.63
-v -5.94 21.32 -3.63
-v -5.94 18.98 -3.63
-v -6.30 19.02 -3.63
-v -6.58 19.06 -3.69
-v -6.58 18.81 -3.69
-v -6.58 18.81 -3.60
-v -6.58 19.06 -3.60
-v -5.94 21.73 -3.69
-v -6.49 20.92 -3.69
-v -6.49 20.92 -3.60
-v -5.94 21.73 -3.60
-v -5.30 18.81 -3.69
-v -5.30 19.06 -3.69
-v -5.30 19.06 -3.60
-v -5.30 18.81 -3.60
-v -5.94 18.73 -3.69
-v -5.40 18.81 -3.69
-v -5.40 18.81 -3.60
-v -5.94 18.73 -3.60
-v -6.49 18.81 -3.78
-v -6.49 19.06 -3.78
-v -6.30 19.02 -3.78
-v -5.94 21.32 -3.69
-v -6.30 20.76 -3.69
-v -5.40 19.06 -3.78
-v -5.40 18.81 -3.78
-v -5.58 19.04 -3.78
-v -5.94 18.73 -3.78
-v -5.94 18.98 -3.78
-v -5.58 20.76 -3.63
-v -5.58 19.04 -3.63
-v -5.40 20.92 -3.69
-v -5.40 20.92 -3.60
-v -6.49 18.81 -3.69
-v -6.49 18.81 -3.60
-v -5.58 20.76 -3.69
-v -6.30 19.02 -3.69
-v -5.58 19.04 -3.69
-v -5.94 18.98 -3.69
-v -5.40 19.06 -3.69
-v -5.40 19.06 -3.60
-v -6.49 19.06 -3.69
-v -6.49 19.06 -3.60
-v -6.58 19.06 -3.78
-v -6.58 18.81 -3.78
-v -5.30 18.81 -3.78
-v -5.30 19.06 -3.78
-v 5.89 20.76 -3.63
-v 6.25 21.32 -3.63
-v 6.25 18.98 -3.63
-v 5.89 19.02 -3.63
-v 5.61 19.06 -3.69
-v 5.61 18.81 -3.69
-v 5.61 18.81 -3.60
-v 5.61 19.06 -3.60
-v 6.25 21.73 -3.69
-v 5.70 20.92 -3.69
-v 5.70 20.92 -3.60
-v 6.25 21.73 -3.60
-v 6.89 18.81 -3.69
-v 6.89 19.06 -3.69
-v 6.89 19.06 -3.60
-v 6.89 18.81 -3.60
-v 6.25 18.73 -3.69
-v 6.79 18.81 -3.69
-v 6.79 18.81 -3.60
-v 6.25 18.73 -3.60
-v 5.70 18.81 -3.78
-v 5.70 19.06 -3.78
-v 5.89 19.02 -3.78
-v 6.25 21.32 -3.69
-v 5.89 20.76 -3.69
-v 6.79 19.06 -3.78
-v 6.79 18.81 -3.78
-v 6.61 19.04 -3.78
-v 6.25 18.73 -3.78
-v 6.25 18.98 -3.78
-v 6.61 20.76 -3.63
-v 6.61 19.04 -3.63
-v 6.79 20.92 -3.69
-v 6.79 20.92 -3.60
-v 5.70 18.81 -3.69
-v 5.70 18.81 -3.60
-v 6.61 20.76 -3.69
-v 5.89 19.02 -3.69
-v 6.61 19.04 -3.69
-v 6.25 18.98 -3.69
-v 6.79 19.06 -3.69
-v 6.79 19.06 -3.60
-v 5.70 19.06 -3.69
-v 5.70 19.06 -3.60
-v 5.61 19.06 -3.78
-v 5.61 18.81 -3.78
-v 6.89 18.81 -3.78
-v 6.89 19.06 -3.78
-v -8.76 20.76 0.36
-v -8.76 21.32 -0.00
-v -8.76 18.98 -0.00
-v -8.76 19.02 0.36
-v -8.82 19.06 0.64
-v -8.82 18.81 0.64
-v -8.74 18.81 0.64
-v -8.74 19.06 0.64
-v -8.82 21.73 -0.00
-v -8.82 20.92 0.55
-v -8.74 20.92 0.55
-v -8.74 21.73 -0.00
-v -8.82 18.81 -0.64
-v -8.82 19.06 -0.64
-v -8.74 19.06 -0.64
-v -8.74 18.81 -0.64
-v -8.82 18.73 -0.00
-v -8.82 18.81 -0.55
-v -8.74 18.81 -0.55
-v -8.74 18.73 -0.00
-v -8.91 18.81 0.55
-v -8.91 19.06 0.55
-v -8.91 19.02 0.36
-v -8.82 21.32 -0.00
-v -8.82 20.76 0.36
-v -8.91 19.06 -0.55
-v -8.91 18.81 -0.55
-v -8.91 19.04 -0.36
-v -8.91 18.73 -0.00
-v -8.91 18.98 -0.00
-v -8.76 20.76 -0.36
-v -8.76 19.04 -0.36
-v -8.82 20.92 -0.55
-v -8.74 20.92 -0.55
-v -8.82 18.81 0.55
-v -8.74 18.81 0.55
-v -8.82 20.76 -0.36
-v -8.82 19.02 0.36
-v -8.82 19.04 -0.36
-v -8.82 18.98 -0.00
-v -8.82 19.06 -0.55
-v -8.74 19.06 -0.55
-v -8.82 19.06 0.55
-v -8.74 19.06 0.55
-v -8.91 19.06 0.64
-v -8.91 18.81 0.64
-v -8.91 18.81 -0.64
-v -8.91 19.06 -0.64
-v -23.42 4.66 -0.35
-v -23.42 2.92 -0.35
-v -23.42 2.88 0.01
-v -23.42 5.22 0.01
-v -23.48 2.96 -0.63
-v -23.40 2.96 -0.63
-v -23.40 2.71 -0.63
-v -23.48 2.71 -0.63
-v -23.48 5.63 0.01
-v -23.40 5.63 0.01
-v -23.40 4.82 -0.54
-v -23.48 4.82 -0.54
-v -23.48 2.71 0.65
-v -23.40 2.71 0.65
-v -23.40 2.96 0.65
-v -23.48 2.96 0.65
-v -23.48 2.63 0.01
-v -23.40 2.63 0.01
-v -23.40 2.71 0.55
-v -23.48 2.71 0.55
-v -23.57 2.71 -0.54
-v -23.57 2.92 -0.35
-v -23.57 2.96 -0.54
-v -23.48 5.22 0.01
-v -23.48 4.66 -0.35
-v -23.57 2.96 0.55
-v -23.57 2.94 0.37
-v -23.57 2.71 0.55
-v -23.57 2.63 0.01
-v -23.57 2.88 0.01
-v -23.42 4.66 0.37
-v -23.42 2.94 0.37
-v -23.48 4.82 0.55
-v -23.40 4.82 0.55
-v -23.48 2.71 -0.54
-v -23.40 2.71 -0.54
-v -23.48 4.66 0.37
-v -23.48 2.92 -0.35
-v -23.48 2.94 0.37
-v -23.48 2.88 0.01
-v -23.48 2.96 0.55
-v -23.40 2.96 0.55
-v -23.40 2.96 -0.54
-v -23.48 2.96 -0.54
-v -23.57 2.71 -0.63
-v -23.57 2.96 -0.63
-v -23.57 2.96 0.65
-v -23.57 2.71 0.65
-v -19.96 4.66 6.78
-v -19.96 2.92 6.78
-v -19.60 2.88 6.78
-v -19.60 5.22 6.78
-v -20.24 2.96 6.85
-v -20.24 2.96 6.76
-v -20.24 2.71 6.76
-v -20.24 2.71 6.85
-v -19.60 5.63 6.85
-v -19.60 5.63 6.76
-v -20.15 4.82 6.76
-v -20.15 4.82 6.85
-v -18.96 2.71 6.85
-v -18.96 2.71 6.76
-v -18.96 2.96 6.76
-v -18.96 2.96 6.85
-v -19.60 2.63 6.85
-v -19.60 2.63 6.76
-v -19.05 2.71 6.76
-v -19.05 2.71 6.85
-v -20.15 2.71 6.94
-v -19.96 2.92 6.94
-v -20.15 2.96 6.94
-v -19.60 5.22 6.85
-v -19.96 4.66 6.85
-v -19.05 2.96 6.94
-v -19.24 2.94 6.94
-v -19.05 2.71 6.94
-v -19.60 2.63 6.94
-v -19.60 2.88 6.94
-v -19.24 4.66 6.78
-v -19.24 2.94 6.78
-v -19.05 4.82 6.85
-v -19.05 4.82 6.76
-v -20.15 2.71 6.85
-v -20.15 2.71 6.76
-v -19.24 4.66 6.85
-v -19.96 2.92 6.85
-v -19.24 2.94 6.85
-v -19.60 2.88 6.85
-v -19.05 2.96 6.85
-v -19.05 2.96 6.76
-v -20.15 2.96 6.76
-v -20.15 2.96 6.85
-v -20.24 2.71 6.94
-v -20.24 2.96 6.94
-v -18.96 2.96 6.94
-v -18.96 2.71 6.94
-v -5.42 9.62 11.04
-v -5.42 7.88 11.04
-v -5.06 7.83 11.04
-v -5.06 10.18 11.04
-v -5.70 7.92 11.10
-v -5.70 7.92 11.01
-v -5.70 7.67 11.01
-v -5.70 7.67 11.10
-v -5.06 10.59 11.10
-v -5.06 10.59 11.01
-v -5.61 9.78 11.01
-v -5.61 9.78 11.10
-v -4.43 7.67 11.10
-v -4.43 7.67 11.01
-v -4.43 7.92 11.01
-v -4.43 7.92 11.10
-v -5.06 7.58 11.10
-v -5.06 7.58 11.01
-v -4.52 7.67 11.01
-v -4.52 7.67 11.10
-v -5.61 7.67 11.19
-v -5.42 7.88 11.19
-v -5.61 7.92 11.19
-v -5.06 10.18 11.10
-v -5.42 9.62 11.10
-v -4.52 7.92 11.19
-v -4.71 7.89 11.19
-v -4.52 7.67 11.19
-v -5.06 7.58 11.19
-v -5.06 7.83 11.19
-v -4.71 9.62 11.04
-v -4.71 7.89 11.04
-v -4.52 9.78 11.10
-v -4.52 9.78 11.01
-v -5.61 7.67 11.10
-v -5.61 7.67 11.01
-v -4.71 9.62 11.10
-v -5.42 7.88 11.10
-v -4.71 7.89 11.10
-v -5.06 7.83 11.10
-v -4.52 7.92 11.10
-v -4.52 7.92 11.01
-v -5.61 7.92 11.01
-v -5.61 7.92 11.10
-v -5.70 7.67 11.19
-v -5.70 7.92 11.19
-v -4.43 7.92 11.19
-v -4.43 7.67 11.19
-v 3.43 9.62 11.04
-v 3.43 7.88 11.04
-v 3.79 7.83 11.04
-v 3.79 10.18 11.04
-v 3.15 7.92 11.10
-v 3.15 7.92 11.01
-v 3.15 7.67 11.01
-v 3.15 7.67 11.10
-v 3.79 10.59 11.10
-v 3.79 10.59 11.01
-v 3.24 9.78 11.01
-v 3.24 9.78 11.10
-v 4.43 7.67 11.10
-v 4.43 7.67 11.01
-v 4.43 7.92 11.01
-v 4.43 7.92 11.10
-v 3.79 7.58 11.10
-v 3.79 7.58 11.01
-v 4.33 7.67 11.01
-v 4.33 7.67 11.10
-v 3.24 7.67 11.19
-v 3.43 7.88 11.19
-v 3.24 7.92 11.19
-v 3.79 10.18 11.10
-v 3.43 9.62 11.10
-v 4.33 7.92 11.19
-v 4.15 7.89 11.19
-v 4.33 7.67 11.19
-v 3.79 7.58 11.19
-v 3.79 7.83 11.19
-v 4.15 9.62 11.04
-v 4.15 7.89 11.04
-v 4.33 9.78 11.10
-v 4.33 9.78 11.01
-v 3.24 7.67 11.10
-v 3.24 7.67 11.01
-v 4.15 9.62 11.10
-v 3.43 7.88 11.10
-v 4.15 7.89 11.10
-v 3.79 7.83 11.10
-v 4.33 7.92 11.10
-v 4.33 7.92 11.01
-v 3.24 7.92 11.01
-v 3.24 7.92 11.10
-v 3.15 7.67 11.19
-v 3.15 7.92 11.19
-v 4.43 7.92 11.19
-v 4.43 7.67 11.19
-v -0.84 4.66 11.04
-v -0.84 2.92 11.04
-v -0.48 2.88 11.04
-v -0.48 5.22 11.04
-v -1.12 2.96 11.10
-v -1.12 2.96 11.01
-v -1.12 2.71 11.01
-v -1.12 2.71 11.10
-v -0.48 5.63 11.10
-v -0.48 5.63 11.01
-v -1.03 4.82 11.01
-v -1.03 4.82 11.10
-v 0.15 2.71 11.10
-v 0.15 2.71 11.01
-v 0.15 2.96 11.01
-v 0.15 2.96 11.10
-v -0.48 2.63 11.10
-v -0.48 2.63 11.01
-v 0.06 2.71 11.01
-v 0.06 2.71 11.10
-v -1.03 2.71 11.19
-v -0.84 2.92 11.19
-v -1.03 2.96 11.19
-v -0.48 5.22 11.10
-v -0.84 4.66 11.10
-v 0.06 2.96 11.19
-v -0.13 2.94 11.19
-v 0.06 2.71 11.19
-v -0.48 2.63 11.19
-v -0.48 2.88 11.19
-v -0.13 4.66 11.04
-v -0.13 2.94 11.04
-v 0.06 4.82 11.10
-v 0.06 4.82 11.01
-v -1.03 2.71 11.10
-v -1.03 2.71 11.01
-v -0.13 4.66 11.10
-v -0.84 2.92 11.10
-v -0.13 2.94 11.10
-v -0.48 2.88 11.10
-v 0.06 2.96 11.10
-v 0.06 2.96 11.01
-v -1.03 2.96 11.01
-v -1.03 2.96 11.10
-v -1.12 2.71 11.19
-v -1.12 2.96 11.19
-v 0.15 2.96 11.19
-v 0.15 2.71 11.19
-v 0.43 20.76 3.64
-v 0.07 21.32 3.64
-v 0.07 18.98 3.64
-v 0.43 19.02 3.64
-v 0.71 19.06 3.70
-v 0.71 18.81 3.70
-v 0.71 18.81 3.61
-v 0.71 19.06 3.61
-v 0.07 21.73 3.70
-v 0.62 20.92 3.70
-v 0.62 20.92 3.61
-v 0.07 21.73 3.61
-v -0.57 18.81 3.70
-v -0.57 19.06 3.70
-v -0.57 19.06 3.61
-v -0.57 18.81 3.61
-v 0.07 18.73 3.70
-v -0.47 18.81 3.70
-v -0.47 18.81 3.61
-v 0.07 18.73 3.61
-v 0.62 18.81 3.79
-v 0.62 19.06 3.79
-v 0.43 19.02 3.79
-v 0.07 21.32 3.70
-v 0.43 20.76 3.70
-v -0.47 19.06 3.79
-v -0.47 18.81 3.79
-v -0.29 19.04 3.79
-v 0.07 18.73 3.79
-v 0.07 18.98 3.79
-v -0.29 20.76 3.64
-v -0.29 19.04 3.64
-v -0.47 20.92 3.70
-v -0.47 20.92 3.61
-v 0.62 18.81 3.70
-v 0.62 18.81 3.61
-v -0.29 20.76 3.70
-v 0.43 19.02 3.70
-v -0.29 19.04 3.70
-v 0.07 18.98 3.70
-v -0.47 19.06 3.70
-v -0.47 19.06 3.61
-v 0.62 19.06 3.70
-v 0.62 19.06 3.61
-v 0.71 19.06 3.79
-v 0.71 18.81 3.79
-v -0.57 18.81 3.79
-v -0.57 19.06 3.79
-v 6.58 20.76 3.64
-v 6.22 21.32 3.64
-v 6.22 18.98 3.64
-v 6.58 19.02 3.64
-v 6.86 19.06 3.70
-v 6.86 18.81 3.70
-v 6.86 18.81 3.61
-v 6.86 19.06 3.61
-v 6.22 21.73 3.70
-v 6.76 20.92 3.70
-v 6.76 20.92 3.61
-v 6.22 21.73 3.61
-v 5.58 18.81 3.70
-v 5.58 19.06 3.70
-v 5.58 19.06 3.61
-v 5.58 18.81 3.61
-v 6.22 18.73 3.70
-v 5.67 18.81 3.70
-v 5.67 18.81 3.61
-v 6.22 18.73 3.61
-v 6.76 18.81 3.79
-v 6.76 19.06 3.79
-v 6.58 19.02 3.79
-v 6.22 21.32 3.70
-v 6.58 20.76 3.70
-v 5.67 19.06 3.79
-v 5.67 18.81 3.79
-v 5.86 19.04 3.79
-v 6.22 18.73 3.79
-v 6.22 18.98 3.79
-v 5.86 20.76 3.64
-v 5.86 19.04 3.64
-v 5.67 20.92 3.70
-v 5.67 20.92 3.61
-v 6.76 18.81 3.70
-v 6.76 18.81 3.61
-v 5.86 20.76 3.70
-v 6.58 19.02 3.70
-v 5.86 19.04 3.70
-v 6.22 18.98 3.70
-v 5.67 19.06 3.70
-v 5.67 19.06 3.61
-v 6.76 19.06 3.70
-v 6.76 19.06 3.61
-v 6.86 19.06 3.79
-v 6.86 18.81 3.79
-v 5.58 18.81 3.79
-v 5.58 19.06 3.79
-v 12.89 4.66 -3.98
-v 12.89 5.22 -3.62
-v 12.89 2.88 -3.62
-v 12.89 2.92 -3.98
-v 12.96 2.96 -4.26
-v 12.96 2.71 -4.26
-v 12.87 2.71 -4.26
-v 12.87 2.96 -4.26
-v 12.96 5.63 -3.62
-v 12.96 4.82 -4.17
-v 12.87 4.82 -4.17
-v 12.87 5.63 -3.62
-v 12.96 2.71 -2.98
-v 12.96 2.96 -2.98
-v 12.87 2.96 -2.98
-v 12.87 2.71 -2.98
-v 12.96 2.63 -3.62
-v 12.96 2.71 -3.08
-v 12.87 2.71 -3.08
-v 12.87 2.63 -3.62
-v 13.05 2.71 -4.17
-v 13.05 2.96 -4.17
-v 13.05 2.92 -3.98
-v 12.96 5.22 -3.62
-v 12.96 4.66 -3.98
-v 13.05 2.96 -3.08
-v 13.05 2.71 -3.08
-v 13.05 2.94 -3.26
-v 13.05 2.63 -3.62
-v 13.05 2.88 -3.62
-v 12.89 4.66 -3.26
-v 12.89 2.94 -3.26
-v 12.96 4.82 -3.08
-v 12.87 4.82 -3.08
-v 12.96 2.71 -4.17
-v 12.87 2.71 -4.17
-v 12.96 4.66 -3.26
-v 12.96 2.92 -3.98
-v 12.96 2.94 -3.26
-v 12.96 2.88 -3.62
-v 12.96 2.96 -3.08
-v 12.87 2.96 -3.08
-v 12.96 2.96 -4.17
-v 12.87 2.96 -4.17
-v 13.05 2.96 -4.26
-v 13.05 2.71 -4.26
-v 13.05 2.71 -2.98
-v 13.05 2.96 -2.98
-v 12.89 4.66 3.26
-v 12.89 5.22 3.62
-v 12.89 2.88 3.62
-v 12.89 2.92 3.26
-v 12.96 2.96 2.98
-v 12.96 2.71 2.98
-v 12.87 2.71 2.98
-v 12.87 2.96 2.98
-v 12.96 5.63 3.62
-v 12.96 4.82 3.08
-v 12.87 4.82 3.08
-v 12.87 5.63 3.62
-v 12.96 2.71 4.26
-v 12.96 2.96 4.26
-v 12.87 2.96 4.26
-v 12.87 2.71 4.26
-v 12.96 2.63 3.62
-v 12.96 2.71 4.17
-v 12.87 2.71 4.17
-v 12.87 2.63 3.62
-v 13.05 2.71 3.08
-v 13.05 2.96 3.08
-v 13.05 2.92 3.26
-v 12.96 5.22 3.62
-v 12.96 4.66 3.26
-v 13.05 2.96 4.17
-v 13.05 2.71 4.17
-v 13.05 2.94 3.98
-v 13.05 2.63 3.62
-v 13.05 2.88 3.62
-v 12.89 4.66 3.98
-v 12.89 2.94 3.98
-v 12.96 4.82 4.17
-v 12.87 4.82 4.17
-v 12.96 2.71 3.08
-v 12.87 2.71 3.08
-v 12.96 4.66 3.98
-v 12.96 2.92 3.26
-v 12.96 2.94 3.98
-v 12.96 2.88 3.62
-v 12.96 2.96 4.17
-v 12.87 2.96 4.17
-v 12.96 2.96 3.08
-v 12.87 2.96 3.08
-v 13.05 2.96 2.98
-v 13.05 2.71 2.98
-v 13.05 2.71 4.26
-v 13.05 2.96 4.26
-v 8.75 20.76 0.36
-v 8.75 19.02 0.36
-v 8.75 18.98 -0.00
-v 8.75 21.32 -0.00
-v 8.81 19.06 0.64
-v 8.73 19.06 0.64
-v 8.73 18.81 0.64
-v 8.81 18.81 0.64
-v 8.81 21.73 -0.00
-v 8.73 21.73 -0.00
-v 8.73 20.92 0.55
-v 8.81 20.92 0.55
-v 8.81 18.81 -0.64
-v 8.73 18.81 -0.64
-v 8.73 19.06 -0.64
-v 8.81 19.06 -0.64
-v 8.81 18.73 -0.00
-v 8.73 18.73 -0.00
-v 8.73 18.81 -0.55
-v 8.81 18.81 -0.55
-v 8.90 18.81 0.55
-v 8.90 19.02 0.36
-v 8.90 19.06 0.55
-v 8.81 21.32 -0.00
-v 8.81 20.76 0.36
-v 8.90 19.06 -0.55
-v 8.90 19.04 -0.36
-v 8.90 18.81 -0.55
-v 8.90 18.73 -0.00
-v 8.90 18.98 -0.00
-v 8.75 20.76 -0.36
-v 8.75 19.04 -0.36
-v 8.81 20.92 -0.55
-v 8.73 20.92 -0.55
-v 8.81 18.81 0.55
-v 8.73 18.81 0.55
-v 8.81 20.76 -0.36
-v 8.81 19.02 0.36
-v 8.81 19.04 -0.36
-v 8.81 18.98 -0.00
-v 8.81 19.06 -0.55
-v 8.73 19.06 -0.55
-v 8.73 19.06 0.55
-v 8.81 19.06 0.55
-v 8.90 18.81 0.64
-v 8.90 19.06 0.64
-v 8.90 19.06 -0.64
-v 8.90 18.81 -0.64
-v -5.91 20.76 3.64
-v -6.27 21.32 3.64
-v -6.27 18.98 3.64
-v -5.91 19.02 3.64
-v -5.63 19.06 3.70
-v -5.63 18.81 3.70
-v -5.63 18.81 3.61
-v -5.63 19.06 3.61
-v -6.27 21.73 3.70
-v -5.73 20.92 3.70
-v -5.73 20.92 3.61
-v -6.27 21.73 3.61
-v -6.91 18.81 3.70
-v -6.91 19.06 3.70
-v -6.91 19.06 3.61
-v -6.91 18.81 3.61
-v -6.27 18.73 3.70
-v -6.82 18.81 3.70
-v -6.82 18.81 3.61
-v -6.27 18.73 3.61
-v -5.73 18.81 3.79
-v -5.73 19.06 3.79
-v -5.91 19.02 3.79
-v -6.27 21.32 3.70
-v -5.91 20.76 3.70
-v -6.82 19.06 3.79
-v -6.82 18.81 3.79
-v -6.63 19.04 3.79
-v -6.27 18.73 3.79
-v -6.27 18.98 3.79
-v -6.63 20.76 3.64
-v -6.63 19.04 3.64
-v -6.82 20.92 3.70
-v -6.82 20.92 3.61
-v -5.73 18.81 3.70
-v -5.73 18.81 3.61
-v -6.63 20.76 3.70
-v -5.91 19.02 3.70
-v -6.63 19.04 3.70
-v -6.27 18.98 3.70
-v -6.82 19.06 3.70
-v -6.82 19.06 3.61
-v -5.73 19.06 3.70
-v -5.73 19.06 3.61
-v -5.63 19.06 3.79
-v -5.63 18.81 3.79
-v -6.91 18.81 3.79
-v -6.91 19.06 3.79
-v 1.22 3.89 -13.04
-v 1.22 0.00 -13.04
-v 0.00 0.00 -13.04
-v 0.00 4.45 -13.04
-v -2.44 3.02 -13.04
-v -1.22 3.89 -13.04
-v -1.22 0.00 -13.04
-v -2.44 0.00 -13.04
-v 2.44 3.02 -13.04
-v 2.44 0.00 -13.04
-v 2.76 0.00 -12.61
-v 2.76 0.00 -13.28
-v 2.72 2.63 -13.28
-v 2.72 2.63 -12.61
-v 2.32 0.00 -13.28
-v 2.28 2.21 -13.28
-v 2.32 0.00 -12.61
-v 2.28 2.21 -12.61
-v 1.57 4.51 -13.28
-v 1.57 4.51 -12.61
-v 1.32 3.79 -13.28
-v 1.32 3.79 -12.61
-v 0.00 5.20 -13.28
-v 0.00 5.20 -12.61
-v 0.00 4.45 -13.28
-v 0.00 4.45 -12.61
-v -1.57 4.51 -13.28
-v -1.57 4.51 -12.61
-v -1.32 3.79 -13.28
-v -1.32 3.79 -12.61
-v -2.72 2.63 -13.28
-v -2.72 2.63 -12.61
-v -2.28 2.21 -13.28
-v -2.28 2.21 -12.61
-v -2.76 0.00 -13.28
-v -2.76 0.00 -12.61
-v -2.32 0.00 -13.28
-v -2.32 0.00 -12.61
-v -23.02 0.02 -7.19
-v -23.81 0.02 -7.26
-v -23.50 3.76 -6.94
-v -22.95 3.76 -6.89
-v -23.10 0.02 -6.35
-v -23.01 3.76 -6.25
-v -23.88 0.02 -6.42
-v -23.56 3.76 -6.30
-v -23.00 6.77 -7.20
-v -23.83 6.77 -7.27
-v -23.08 7.23 -6.33
-v -23.90 7.23 -6.41
-v -23.14 6.61 -6.66
-v -23.14 6.39 0.01
-v -23.82 6.39 0.01
-v -23.82 6.61 -6.66
-v -23.82 7.03 0.01
-v -23.82 7.24 -6.66
-v -23.14 7.03 0.01
-v -23.14 7.24 -6.66
-v -23.14 6.61 6.68
-v -23.82 6.61 6.68
-v -23.82 7.24 6.68
-v -23.14 7.24 6.68
-v -10.64 6.61 -6.65
-v -17.31 6.39 -6.65
-v -17.31 6.39 -7.33
-v -10.64 6.61 -7.33
-v -17.31 7.03 -7.33
-v -10.64 7.24 -7.33
-v -17.31 7.03 -6.65
-v -10.64 7.24 -6.65
-v -23.99 6.61 -6.65
-v -23.99 6.61 -7.33
-v -23.99 7.24 -7.33
-v -23.99 7.24 -6.65
-v -23.02 0.02 7.20
-v -22.95 3.76 6.91
-v -23.50 3.76 6.95
-v -23.81 0.02 7.27
-v -23.10 0.02 6.37
-v -23.01 3.76 6.27
-v -23.88 0.02 6.44
-v -23.56 3.76 6.32
-v -23.00 6.77 7.22
-v -23.83 6.77 7.29
-v -23.08 7.23 6.35
-v -23.90 7.23 6.42
-v -10.64 6.61 6.68
-v -10.64 6.61 7.36
-v -17.31 6.39 7.36
-v -17.31 6.39 6.68
-v -10.64 7.24 7.36
-v -17.31 7.03 7.36
-v -10.64 7.24 6.68
-v -17.31 7.03 6.68
-v -23.99 6.61 7.36
-v -23.99 6.61 6.68
-v -23.99 7.24 7.36
-v -23.99 7.24 6.68
-v 8.74 6.44 10.70
-v 8.74 6.44 11.59
-v 0.00 6.16 11.59
-v 0.00 6.16 10.70
-v 8.74 7.27 11.59
-v 0.00 6.98 11.59
-v 8.74 7.27 10.70
-v 0.00 6.98 10.70
-v -8.74 6.44 11.59
-v -8.74 6.44 10.70
-v -8.74 7.27 11.59
-v -8.74 7.27 10.70
-v 8.74 17.79 -0.00
-v 8.74 27.72 -0.00
-v 8.74 23.62 3.62
-v 0.00 17.79 -3.62
-v 0.00 23.02 -3.62
-v 8.74 23.62 -3.62
-v -8.74 17.79 -0.00
-v -8.74 27.60 -0.00
-v -8.74 23.62 -3.62
-v 0.00 17.79 3.62
-v 0.00 23.02 3.62
-v -8.74 23.62 3.62
-v 8.34 17.58 -3.11
-v 8.50 20.48 -3.15
-v 8.50 20.48 -3.73
-v 8.34 17.58 -3.92
-v 8.34 24.35 -3.11
-v 8.34 23.76 -3.83
-v 9.14 17.58 -3.11
-v 9.09 20.48 -3.15
-v 9.14 24.35 -3.11
-v 9.14 17.58 -3.92
-v 9.09 20.48 -3.73
-v 9.14 23.76 -3.83
-v -0.81 20.18 -3.56
-v -0.81 17.74 -3.56
-v -0.81 17.74 -3.74
-v -0.81 20.18 -3.74
-v -0.95 20.13 -3.74
-v -0.95 17.74 -3.74
-v -0.95 17.74 -3.56
-v -0.95 20.13 -3.56
-v -1.04 20.10 -3.76
-v -1.04 20.10 -3.58
-v -1.04 20.32 -3.58
-v -1.04 20.32 -3.76
-v 1.04 20.32 -3.58
-v 1.04 20.10 -3.58
-v 1.04 20.10 -3.76
-v 1.04 20.32 -3.76
-v -0.39 20.29 -3.76
-v -0.39 20.29 -3.58
-v -0.39 20.51 -3.76
-v -0.39 20.51 -3.58
-v 0.94 20.15 -3.56
-v 0.94 17.74 -3.56
-v 0.94 17.74 -3.74
-v 0.94 20.15 -3.74
-v 0.80 17.74 -3.74
-v 0.80 20.19 -3.74
-v 0.80 17.74 -3.56
-v 0.80 20.19 -3.56
-v 0.39 20.29 -3.76
-v 0.39 20.29 -3.58
-v 0.39 20.51 -3.76
-v 0.39 20.51 -3.58
-v 0.00 20.34 -3.76
-v 0.00 20.34 -3.58
-v 0.00 20.56 -3.76
-v 0.00 20.56 -3.58
-v -0.01 17.69 -4.00
-v 0.78 17.69 -4.00
-v 0.78 17.66 -3.95
-v -0.01 17.66 -3.95
-v -0.01 17.76 -4.01
-v 0.78 17.76 -4.01
-v 0.78 17.75 -3.95
-v 0.78 17.85 -3.95
-v 0.78 17.85 -3.64
-v 0.78 17.75 -3.64
-v 0.78 17.82 -4.00
-v 0.78 17.66 -3.64
-v -0.01 17.85 -3.95
-v -0.01 17.85 -3.64
-v -0.01 17.82 -4.00
-v -0.80 17.66 -3.95
-v -0.80 17.69 -4.00
-v -0.80 17.76 -4.01
-v -0.80 17.85 -3.64
-v -0.80 17.85 -3.95
-v -0.80 17.75 -3.95
-v -0.80 17.75 -3.64
-v -0.80 17.82 -4.00
-v -0.80 17.66 -3.64
-v 0.86 20.19 -3.66
-v 0.86 17.72 -3.66
-v 0.02 17.72 -3.66
-v 0.02 20.45 -3.66
-v -0.82 20.19 -3.66
-v -0.82 17.72 -3.66
-v -9.14 17.58 -3.11
-v -8.97 20.48 -3.15
-v -8.97 20.48 -3.73
-v -9.14 17.58 -3.92
-v -9.14 24.35 -3.11
-v -9.14 23.76 -3.83
-v -8.34 17.58 -3.11
-v -8.39 20.48 -3.15
-v -8.34 24.35 -3.11
-v -8.34 17.58 -3.92
-v -8.39 20.48 -3.73
-v -8.34 23.76 -3.83
-v -9.14 17.58 3.11
-v -9.14 17.58 3.92
-v -8.97 20.48 3.73
-v -8.97 20.48 3.15
-v -9.14 23.76 3.83
-v -9.14 24.35 3.11
-v -8.34 17.58 3.11
-v -8.39 20.48 3.15
-v -8.34 24.35 3.11
-v -8.39 20.48 3.73
-v -8.34 17.58 3.92
-v -8.34 23.76 3.83
-v 8.34 17.58 3.11
-v 8.34 17.58 3.92
-v 8.50 20.48 3.73
-v 8.50 20.48 3.15
-v 8.34 23.76 3.83
-v 8.34 24.35 3.11
-v 9.14 17.58 3.11
-v 9.09 20.48 3.15
-v 9.14 24.35 3.11
-v 9.09 20.48 3.73
-v 9.14 17.58 3.92
-v 9.14 23.76 3.83
-v 12.59 6.44 -8.74
-v 13.48 6.44 -8.74
-v 13.48 6.16 -0.00
-v 12.59 6.16 -0.00
-v 13.48 7.27 -8.74
-v 13.48 6.98 -0.00
-v 12.59 7.27 -8.74
-v 12.59 6.98 -0.00
-v 13.48 6.44 8.74
-v 12.59 6.44 8.74
-v 13.48 7.27 8.74
-v 12.59 7.27 8.74
-v -9.92 18.64 4.67
-v -10.78 18.64 4.67
-v -10.78 18.64 6.66
-v -9.92 18.64 6.66
-v -9.92 17.79 4.67
-v -10.78 17.79 4.67
-v -10.78 17.79 6.66
-v -9.92 17.79 6.66
-v -12.40 7.80 6.90
-v -12.40 7.80 6.03
-v -14.38 7.80 6.03
-v -14.38 7.80 6.90
-v -12.40 6.95 6.90
-v -12.40 6.95 6.03
-v -14.38 6.95 6.03
-v -14.38 6.95 6.90
-v -12.40 7.80 -5.99
-v -12.40 7.80 -6.86
-v -14.38 7.80 -6.86
-v -14.38 7.80 -5.99
-v -12.40 6.95 -5.99
-v -12.40 6.95 -6.86
-v -14.38 6.95 -6.86
-v -14.38 6.95 -5.99
-v -16.55 0.00 12.98
-v -16.55 7.76 12.98
-v -17.17 7.76 10.68
-v -17.17 0.00 10.68
-v -14.87 0.00 14.66
-v -14.87 7.76 14.66
-v -12.57 0.00 15.28
-v -12.57 7.76 15.28
-v -10.27 0.00 14.66
-v -10.27 7.76 14.66
-v -8.58 0.00 12.98
-v -8.58 7.76 12.98
-v -7.97 0.00 10.68
-v -7.97 7.76 10.68
-v -8.58 0.00 8.38
-v -8.58 7.76 8.38
-v -10.27 0.00 6.69
-v -10.27 7.76 6.69
-v -12.57 0.00 6.08
-v -12.57 7.76 6.08
-v -14.87 0.00 6.69
-v -14.87 7.76 6.69
-v -16.55 0.00 8.38
-v -16.55 7.76 8.38
-v -16.78 7.76 13.11
-v -16.78 8.57 13.11
-v -17.43 8.57 10.68
-v -17.43 7.76 10.68
-v -15.00 7.76 14.89
-v -15.00 8.57 14.89
-v -12.57 7.76 15.54
-v -12.57 8.57 15.54
-v -10.13 7.76 14.89
-v -10.13 8.57 14.89
-v -8.35 7.76 13.11
-v -8.35 8.57 13.11
-v -7.70 7.76 10.68
-v -7.70 8.57 10.68
-v -8.35 7.76 8.24
-v -8.35 8.57 8.24
-v -10.13 7.76 6.46
-v -10.13 8.57 6.46
-v -12.57 7.76 5.81
-v -12.57 8.57 5.81
-v -15.00 7.76 6.46
-v -15.00 8.57 6.46
-v -16.78 7.76 8.24
-v -16.78 8.57 8.24
-v -17.17 8.57 10.68
-v -16.55 8.57 12.98
-v -14.87 8.57 14.66
-v -12.57 8.57 15.28
-v -10.27 8.57 14.66
-v -8.58 8.57 12.98
-v -7.97 8.57 10.68
-v -8.58 8.57 8.38
-v -10.27 8.57 6.69
-v -12.57 8.57 6.08
-v -14.87 8.57 6.69
-v -16.55 8.57 8.38
-v -16.55 16.89 12.98
-v -17.17 16.89 10.68
-v -14.87 16.89 14.66
-v -12.57 16.89 15.28
-v -10.27 16.89 14.66
-v -8.58 16.89 12.98
-v -7.97 16.89 10.68
-v -8.58 16.89 8.38
-v -10.27 16.89 6.69
-v -12.57 16.89 6.08
-v -14.87 16.89 6.69
-v -16.55 16.89 8.38
-v -17.13 21.30 13.31
-v -17.47 21.30 13.51
-v -18.23 21.30 10.68
-v -17.83 21.30 10.68
-v -15.20 21.30 15.24
-v -15.40 21.30 15.58
-v -12.57 21.30 15.94
-v -12.57 21.30 16.34
-v -9.93 21.30 15.24
-v -9.73 21.30 15.58
-v -8.01 21.30 13.31
-v -7.66 21.30 13.51
-v -7.30 21.30 10.68
-v -6.90 21.30 10.68
-v -8.01 21.30 8.04
-v -7.66 21.30 7.84
-v -9.93 21.30 6.12
-v -9.73 21.30 5.77
-v -12.57 21.30 5.41
-v -12.57 21.30 5.01
-v -15.20 21.30 6.12
-v -15.40 21.30 5.77
-v -17.13 21.30 8.04
-v -17.47 21.30 7.84
-v -16.17 24.76 12.76
-v -16.72 24.76 10.68
-v -14.64 24.76 14.28
-v -12.57 24.76 14.83
-v -10.49 24.76 14.28
-v -8.97 24.76 12.76
-v -8.41 24.76 10.68
-v -8.97 24.76 8.60
-v -10.49 24.76 7.08
-v -12.57 24.76 6.52
-v -14.64 24.76 7.08
-v -16.17 24.76 8.60
-v -16.13 28.50 12.74
-v -16.69 28.50 10.68
-v -14.63 28.50 14.24
-v -12.57 28.50 14.80
-v -10.51 28.50 14.24
-v -9.00 28.50 12.74
-v -8.45 28.50 10.68
-v -9.00 28.50 8.62
-v -10.51 28.50 7.11
-v -12.57 28.50 6.56
-v -14.63 28.50 7.11
-v -16.13 28.50 8.62
-v -17.13 17.36 13.31
-v -17.83 17.36 10.68
-v -15.20 17.36 15.24
-v -12.57 17.36 15.94
-v -9.93 17.36 15.24
-v -8.01 17.36 13.31
-v -7.30 17.36 10.68
-v -8.01 17.36 8.04
-v -9.93 17.36 6.12
-v -12.57 17.36 5.41
-v -15.20 17.36 6.12
-v -17.13 17.36 8.04
-v -17.91 20.21 10.37
-v -17.91 19.23 10.37
-v -17.91 19.21 10.80
-v -17.91 20.52 10.80
-v -17.81 19.26 10.03
-v -17.81 19.12 10.03
-v -17.91 19.12 10.04
-v -17.91 19.26 10.04
-v -17.89 20.75 10.80
-v -17.84 20.29 10.15
-v -17.94 20.29 10.15
-v -17.98 20.75 10.81
-v -17.68 19.12 11.55
-v -17.68 19.26 11.55
-v -17.78 19.26 11.56
-v -17.78 19.12 11.56
-v -17.89 19.07 10.80
-v -17.73 19.12 11.45
-v -17.82 19.12 11.45
-v -17.98 19.07 10.81
-v -18.05 19.12 10.16
-v -18.08 19.23 10.39
-v -18.05 19.26 10.16
-v -17.98 20.21 10.38
-v -17.98 20.52 10.81
-v -17.93 19.26 11.46
-v -18.01 19.24 11.24
-v -17.93 19.12 11.46
-v -18.09 19.07 10.82
-v -18.09 19.21 10.82
-v -17.83 20.21 11.23
-v -17.83 19.24 11.23
-v -17.73 20.29 11.45
-v -17.82 20.29 11.45
-v -17.84 19.12 10.15
-v -17.94 19.12 10.15
-v -17.90 20.21 11.23
-v -17.98 19.23 10.38
-v -17.90 19.24 11.23
-v -17.98 19.21 10.81
-v -17.82 19.26 11.45
-v -17.73 19.26 11.45
-v -17.84 19.26 10.15
-v -17.94 19.26 10.15
-v -18.02 19.12 10.05
-v -18.02 19.26 10.05
-v -17.88 19.26 11.57
-v -17.88 19.12 11.57
-v -12.87 20.21 16.02
-v -12.87 19.23 16.02
-v -12.44 19.21 16.02
-v -12.44 20.52 16.02
-v -13.21 19.26 15.92
-v -13.21 19.12 15.92
-v -13.20 19.12 16.02
-v -13.20 19.26 16.02
-v -12.44 20.75 16.00
-v -13.10 20.29 15.95
-v -13.09 20.29 16.05
-v -12.43 20.75 16.10
-v -11.69 19.12 15.79
-v -11.69 19.26 15.79
-v -11.68 19.26 15.89
-v -11.68 19.12 15.89
-v -12.44 19.07 16.00
-v -11.80 19.12 15.84
-v -11.79 19.12 15.94
-v -12.43 19.07 16.10
-v -13.08 19.12 16.16
-v -12.85 19.23 16.20
-v -13.08 19.26 16.16
-v -12.86 20.21 16.09
-v -12.43 20.52 16.10
-v -11.78 19.26 16.04
-v -12.00 19.24 16.12
-v -11.78 19.12 16.04
-v -12.42 19.07 16.20
-v -12.42 19.21 16.20
-v -12.01 20.21 15.94
-v -12.01 19.24 15.94
-v -11.80 20.29 15.84
-v -11.79 20.29 15.94
-v -13.10 19.12 15.95
-v -13.09 19.12 16.05
-v -12.01 20.21 16.01
-v -12.86 19.23 16.09
-v -12.01 19.24 16.01
-v -12.43 19.21 16.10
-v -11.79 19.26 15.94
-v -11.80 19.26 15.84
-v -13.10 19.26 15.95
-v -13.09 19.26 16.05
-v -13.19 19.12 16.13
-v -13.19 19.26 16.13
-v -11.67 19.26 16.00
-v -11.67 19.12 16.00
-v -9.24 23.34 12.52
-v -8.56 24.92 12.99
-v -9.10 24.92 13.76
-v -9.78 23.34 13.29
-v -9.53 28.41 12.29
-v -8.63 28.41 12.92
-v -9.18 28.41 13.70
-v -10.08 28.41 13.07
-v -12.87 27.21 14.81
-v -12.87 26.24 14.81
-v -12.44 26.21 14.82
-v -12.44 27.52 14.82
-v -13.21 26.26 14.72
-v -13.21 26.12 14.72
-v -13.20 26.12 14.82
-v -13.20 26.26 14.82
-v -12.44 27.75 14.80
-v -13.10 27.30 14.75
-v -13.09 27.30 14.85
-v -12.43 27.75 14.89
-v -11.69 26.12 14.59
-v -11.69 26.26 14.59
-v -11.68 26.26 14.69
-v -11.68 26.12 14.69
-v -12.44 26.07 14.80
-v -11.80 26.12 14.64
-v -11.79 26.12 14.73
-v -12.43 26.07 14.89
-v -13.08 26.12 14.96
-v -12.85 26.24 14.99
-v -13.08 26.26 14.96
-v -12.86 27.21 14.89
-v -12.43 27.52 14.89
-v -11.78 26.26 14.84
-v -12.00 26.25 14.92
-v -11.78 26.12 14.84
-v -12.42 26.07 15.00
-v -12.42 26.21 15.00
-v -12.01 27.21 14.74
-v -12.01 26.25 14.74
-v -11.80 27.30 14.64
-v -11.79 27.30 14.73
-v -13.10 26.12 14.75
-v -13.09 26.12 14.85
-v -12.01 27.21 14.81
-v -12.86 26.24 14.89
-v -12.01 26.25 14.81
-v -12.43 26.21 14.89
-v -11.79 26.26 14.73
-v -11.80 26.26 14.64
-v -13.10 26.26 14.75
-v -13.09 26.26 14.85
-v -13.19 26.12 14.93
-v -13.19 26.26 14.93
-v -11.67 26.26 14.79
-v -11.67 26.12 14.79
-v -14.41 23.34 14.01
-v -14.88 24.92 14.68
-v -15.65 24.92 14.14
-v -15.18 23.34 13.46
-v -14.18 28.41 13.71
-v -14.81 28.41 14.61
-v -15.59 28.41 14.07
-v -14.96 28.41 13.17
-v -8.43 27.21 10.98
-v -8.43 26.24 10.98
-v -8.42 26.21 10.55
-v -8.42 27.52 10.55
-v -8.52 26.26 11.32
-v -8.52 26.12 11.32
-v -8.42 26.12 11.31
-v -8.42 26.26 11.31
-v -8.45 27.75 10.55
-v -8.49 27.30 11.21
-v -8.39 27.30 11.20
-v -8.35 27.75 10.54
-v -8.65 26.12 9.80
-v -8.65 26.26 9.80
-v -8.56 26.26 9.79
-v -8.56 26.12 9.79
-v -8.45 26.07 10.55
-v -8.61 26.12 9.91
-v -8.51 26.12 9.90
-v -8.35 26.07 10.54
-v -8.29 26.12 11.19
-v -8.25 26.24 10.96
-v -8.29 26.26 11.19
-v -8.35 27.21 10.97
-v -8.35 27.52 10.54
-v -8.40 26.26 9.89
-v -8.32 26.25 10.11
-v -8.40 26.12 9.89
-v -8.24 26.07 10.53
-v -8.24 26.21 10.53
-v -8.50 27.21 10.13
-v -8.50 26.25 10.13
-v -8.61 27.30 9.91
-v -8.51 27.30 9.90
-v -8.49 26.12 11.21
-v -8.39 26.12 11.20
-v -8.43 27.21 10.12
-v -8.35 26.24 10.97
-v -8.43 26.25 10.12
-v -8.35 26.21 10.54
-v -8.51 26.26 9.90
-v -8.61 26.26 9.91
-v -8.49 26.26 11.21
-v -8.39 26.26 11.20
-v -8.32 26.12 11.30
-v -8.32 26.26 11.30
-v -8.45 26.26 9.78
-v -8.45 26.12 9.78
-v -13.04 12.70 6.81
-v -13.04 14.28 5.99
-v -12.09 14.28 5.99
-v -12.09 12.70 6.81
-v -13.04 17.34 6.74
-v -13.04 17.34 5.64
-v -12.09 17.34 5.64
-v -12.09 17.34 6.74
-v -8.98 12.70 12.20
-v -8.27 14.28 12.61
-v -8.74 14.28 13.43
-v -9.46 12.70 13.02
-v -8.92 17.34 12.24
-v -7.97 17.34 12.79
-v -8.44 17.34 13.61
-v -9.39 17.34 13.06
-v -12.09 12.70 14.54
-v -12.09 14.28 15.36
-v -13.04 14.28 15.36
-v -13.04 12.70 14.54
-v -12.09 17.34 14.62
-v -12.09 17.34 15.71
-v -13.04 17.34 15.71
-v -13.04 17.34 14.62
-v -10.73 23.34 7.35
-v -10.25 24.92 6.67
-v -9.48 24.92 7.22
-v -9.95 23.34 7.89
-v -10.95 28.41 7.65
-v -10.32 28.41 6.74
-v -9.55 28.41 7.29
-v -10.18 28.41 8.19
-v -9.46 12.70 8.34
-v -8.74 14.28 7.92
-v -8.27 14.28 8.74
-v -8.98 12.70 9.15
-v -9.39 17.34 8.30
-v -8.44 17.34 7.75
-v -7.97 17.34 8.57
-v -8.92 17.34 9.12
-v -7.23 20.21 10.98
-v -7.23 19.23 10.98
-v -7.22 19.21 10.55
-v -7.22 20.52 10.55
-v -7.32 19.26 11.32
-v -7.32 19.12 11.32
-v -7.22 19.12 11.31
-v -7.22 19.26 11.31
-v -7.24 20.75 10.55
-v -7.29 20.29 11.21
-v -7.19 20.29 11.20
-v -7.15 20.75 10.54
-v -7.45 19.12 9.80
-v -7.45 19.26 9.80
-v -7.35 19.26 9.79
-v -7.35 19.12 9.79
-v -7.24 19.07 10.55
-v -7.41 19.12 9.91
-v -7.31 19.12 9.90
-v -7.15 19.07 10.54
-v -7.09 19.12 11.19
-v -7.05 19.23 10.96
-v -7.09 19.26 11.19
-v -7.15 20.21 10.97
-v -7.15 20.52 10.54
-v -7.20 19.26 9.89
-v -7.12 19.24 10.11
-v -7.20 19.12 9.89
-v -7.04 19.07 10.53
-v -7.04 19.21 10.53
-v -7.30 20.21 10.13
-v -7.30 19.24 10.13
-v -7.41 20.29 9.91
-v -7.31 20.29 9.90
-v -7.29 19.12 11.21
-v -7.19 19.12 11.20
-v -7.23 20.21 10.12
-v -7.15 19.23 10.97
-v -7.23 19.24 10.12
-v -7.15 19.21 10.54
-v -7.31 19.26 9.90
-v -7.41 19.26 9.91
-v -7.29 19.26 11.21
-v -7.19 19.26 11.20
-v -7.11 19.12 11.30
-v -7.11 19.26 11.30
-v -7.25 19.26 9.78
-v -7.25 19.12 9.78
-v -12.26 27.21 6.54
-v -12.26 26.24 6.54
-v -12.69 26.21 6.53
-v -12.69 27.52 6.53
-v -11.92 26.26 6.63
-v -11.92 26.12 6.63
-v -11.93 26.12 6.53
-v -11.93 26.26 6.53
-v -12.69 27.75 6.56
-v -12.03 27.30 6.60
-v -12.04 27.30 6.51
-v -12.70 27.75 6.46
-v -13.44 26.12 6.76
-v -13.44 26.26 6.76
-v -13.45 26.26 6.67
-v -13.45 26.12 6.67
-v -12.69 26.07 6.56
-v -13.34 26.12 6.72
-v -13.34 26.12 6.62
-v -12.70 26.07 6.46
-v -12.05 26.12 6.40
-v -12.28 26.24 6.36
-v -12.05 26.26 6.40
-v -12.27 27.21 6.47
-v -12.70 27.52 6.46
-v -13.35 26.26 6.51
-v -13.13 26.25 6.43
-v -13.35 26.12 6.51
-v -12.71 26.07 6.35
-v -12.71 26.21 6.35
-v -13.12 27.21 6.61
-v -13.12 26.25 6.61
-v -13.34 27.30 6.72
-v -13.34 27.30 6.62
-v -12.03 26.12 6.60
-v -12.04 26.12 6.51
-v -13.12 27.21 6.54
-v -12.27 26.24 6.47
-v -13.12 26.25 6.54
-v -12.70 26.21 6.46
-v -13.34 26.26 6.62
-v -13.34 26.26 6.72
-v -12.03 26.26 6.60
-v -12.04 26.26 6.51
-v -11.94 26.12 6.43
-v -11.94 26.26 6.43
-v -13.46 26.26 6.56
-v -13.46 26.12 6.56
-v -16.15 12.70 9.15
-v -16.86 14.28 8.74
-v -16.39 14.28 7.92
-v -15.67 12.70 8.34
-v -16.21 17.34 9.12
-v -17.17 17.34 8.57
-v -16.69 17.34 7.75
-v -15.74 17.34 8.30
-v -12.26 20.21 5.34
-v -12.26 19.23 5.34
-v -12.69 19.21 5.33
-v -12.69 20.52 5.33
-v -11.92 19.26 5.43
-v -11.92 19.12 5.43
-v -11.93 19.12 5.33
-v -11.93 19.26 5.33
-v -12.69 20.75 5.36
-v -12.03 20.29 5.40
-v -12.04 20.29 5.30
-v -12.70 20.75 5.26
-v -13.44 19.12 5.56
-v -13.44 19.26 5.56
-v -13.45 19.26 5.47
-v -13.45 19.12 5.47
-v -12.69 19.07 5.36
-v -13.34 19.12 5.52
-v -13.34 19.12 5.42
-v -12.70 19.07 5.26
-v -12.05 19.12 5.20
-v -12.28 19.23 5.16
-v -12.05 19.26 5.20
-v -12.27 20.21 5.26
-v -12.70 20.52 5.26
-v -13.35 19.26 5.31
-v -13.13 19.24 5.23
-v -13.35 19.12 5.31
-v -12.71 19.07 5.15
-v -12.71 19.21 5.15
-v -13.12 20.21 5.41
-v -13.12 19.24 5.41
-v -13.34 20.29 5.52
-v -13.34 20.29 5.42
-v -12.03 19.12 5.40
-v -12.04 19.12 5.30
-v -13.12 20.21 5.34
-v -12.27 19.23 5.26
-v -13.12 19.24 5.34
-v -12.70 19.21 5.26
-v -13.34 19.26 5.42
-v -13.34 19.26 5.52
-v -12.03 19.26 5.40
-v -12.04 19.26 5.30
-v -11.94 19.12 5.23
-v -11.94 19.26 5.23
-v -13.46 19.26 5.36
-v -13.46 19.12 5.36
-v -15.89 23.34 8.84
-v -16.57 24.92 8.36
-v -16.03 24.92 7.59
-v -15.35 23.34 8.06
-v -15.60 28.41 9.06
-v -16.50 28.41 8.43
-v -15.96 28.41 7.66
-v -15.06 28.41 8.29
-v -16.70 27.21 10.37
-v -16.70 26.24 10.37
-v -16.71 26.21 10.80
-v -16.71 27.52 10.80
-v -16.61 26.26 10.03
-v -16.61 26.12 10.03
-v -16.71 26.12 10.04
-v -16.71 26.26 10.04
-v -16.69 27.75 10.80
-v -16.64 27.30 10.15
-v -16.74 27.30 10.15
-v -16.78 27.75 10.81
-v -16.48 26.12 11.55
-v -16.48 26.26 11.55
-v -16.58 26.26 11.56
-v -16.58 26.12 11.56
-v -16.69 26.07 10.80
-v -16.53 26.12 11.45
-v -16.62 26.12 11.45
-v -16.78 26.07 10.81
-v -16.84 26.12 10.16
-v -16.88 26.24 10.39
-v -16.84 26.26 10.16
-v -16.78 27.21 10.38
-v -16.78 27.52 10.81
-v -16.73 26.26 11.46
-v -16.81 26.25 11.24
-v -16.73 26.12 11.46
-v -16.89 26.07 10.82
-v -16.89 26.21 10.82
-v -16.63 27.21 11.23
-v -16.63 26.25 11.23
-v -16.53 27.30 11.45
-v -16.62 27.30 11.45
-v -16.64 26.12 10.15
-v -16.74 26.12 10.15
-v -16.70 27.21 11.23
-v -16.78 26.24 10.38
-v -16.70 26.25 11.23
-v -16.78 26.21 10.81
-v -16.62 26.26 11.45
-v -16.53 26.26 11.45
-v -16.64 26.26 10.15
-v -16.74 26.26 10.15
-v -16.82 26.12 10.05
-v -16.82 26.26 10.05
-v -16.68 26.26 11.57
-v -16.68 26.12 11.57
-v -15.67 12.70 13.02
-v -16.39 14.28 13.43
-v -16.86 14.28 12.61
-v -16.15 12.70 12.20
-v -15.74 17.34 13.06
-v -16.69 17.34 13.61
-v -17.17 17.34 12.79
-v -16.21 17.34 12.24
-v -16.83 28.50 13.14
-v -16.83 30.29 13.14
-v -17.49 30.29 10.68
-v -17.49 28.50 10.68
-v -15.03 28.50 14.94
-v -15.03 30.29 14.94
-v -12.57 28.50 15.60
-v -12.57 30.29 15.60
-v -10.10 28.50 14.94
-v -10.10 30.29 14.94
-v -8.30 28.50 13.14
-v -8.30 30.29 13.14
-v -7.64 28.50 10.68
-v -7.64 30.29 10.68
-v -8.30 28.50 8.21
-v -8.30 30.29 8.21
-v -10.10 28.50 6.41
-v -10.10 30.29 6.41
-v -12.57 28.50 5.75
-v -12.57 30.29 5.75
-v -15.03 28.50 6.41
-v -15.03 30.29 6.41
-v -16.83 28.50 8.21
-v -16.83 30.29 8.21
-v -16.21 30.29 12.78
-v -16.78 30.29 10.68
-v -15.03 30.90 14.94
-v -14.67 30.90 14.32
-v -16.21 30.90 12.78
-v -16.83 30.90 13.14
-v -12.57 30.29 14.89
-v -14.67 30.29 14.32
-v -10.10 30.90 14.94
-v -10.46 30.90 14.32
-v -12.57 30.90 14.89
-v -12.57 30.90 15.60
-v -8.92 30.29 12.78
-v -10.46 30.29 14.32
-v -7.64 30.90 10.68
-v -8.36 30.90 10.68
-v -8.92 30.90 12.78
-v -8.30 30.90 13.14
-v -8.92 30.29 8.57
-v -8.36 30.29 10.68
-v -10.10 30.90 6.41
-v -10.46 30.90 7.03
-v -8.92 30.90 8.57
-v -8.30 30.90 8.21
-v -12.57 30.29 6.47
-v -10.46 30.29 7.03
-v -15.03 30.90 6.41
-v -14.67 30.90 7.03
-v -12.57 30.90 6.47
-v -12.57 30.90 5.75
-v -16.21 30.29 8.57
-v -14.67 30.29 7.03
-v -17.49 30.90 10.68
-v -16.78 30.90 10.68
-v -16.21 30.90 8.57
-v -16.83 30.90 8.21
-v -16.21 29.42 12.78
-v -16.78 29.42 10.68
-v -14.67 29.42 14.32
-v -12.57 29.42 14.89
-v -10.46 29.42 14.32
-v -8.92 29.42 12.78
-v -8.36 29.42 10.68
-v -8.92 29.42 8.57
-v -10.46 29.42 7.03
-v -12.57 29.42 6.47
-v -14.67 29.42 7.03
-v -16.21 29.42 8.57
-v -12.57 29.42 10.68
-v 17.17 7.76 10.68
-v 16.55 7.76 12.98
-v 16.55 0.00 12.98
-v 17.17 0.00 10.68
-v 14.87 7.76 14.66
-v 14.87 0.00 14.66
-v 12.57 7.76 15.28
-v 12.57 0.00 15.28
-v 10.27 7.76 14.66
-v 10.27 0.00 14.66
-v 8.58 7.76 12.98
-v 8.58 0.00 12.98
-v 7.97 7.76 10.68
-v 7.97 0.00 10.68
-v 8.58 7.76 8.38
-v 8.58 0.00 8.38
-v 10.27 7.76 6.69
-v 10.27 0.00 6.69
-v 12.57 7.76 6.08
-v 12.57 0.00 6.08
-v 14.87 7.76 6.69
-v 14.87 0.00 6.69
-v 16.55 7.76 8.38
-v 16.55 0.00 8.38
-v 16.78 7.76 13.11
-v 17.43 7.76 10.68
-v 17.43 8.57 10.68
-v 16.78 8.57 13.11
-v 15.00 7.76 14.89
-v 15.00 8.57 14.89
-v 12.57 7.76 15.54
-v 12.57 8.57 15.54
-v 10.13 7.76 14.89
-v 10.13 8.57 14.89
-v 8.35 7.76 13.11
-v 8.35 8.57 13.11
-v 7.70 7.76 10.68
-v 7.70 8.57 10.68
-v 8.35 7.76 8.24
-v 8.35 8.57 8.24
-v 10.13 7.76 6.46
-v 10.13 8.57 6.46
-v 12.57 7.76 5.81
-v 12.57 8.57 5.81
-v 15.00 7.76 6.46
-v 15.00 8.57 6.46
-v 16.78 7.76 8.24
-v 16.78 8.57 8.24
-v 17.17 8.57 10.68
-v 16.55 8.57 12.98
-v 14.87 8.57 14.66
-v 12.57 8.57 15.28
-v 10.27 8.57 14.66
-v 8.58 8.57 12.98
-v 7.97 8.57 10.68
-v 8.58 8.57 8.38
-v 10.27 8.57 6.69
-v 12.57 8.57 6.08
-v 14.87 8.57 6.69
-v 16.55 8.57 8.38
-v 17.17 16.89 10.68
-v 16.55 16.89 12.98
-v 14.87 16.89 14.66
-v 12.57 16.89 15.28
-v 10.27 16.89 14.66
-v 8.58 16.89 12.98
-v 7.97 16.89 10.68
-v 8.58 16.89 8.38
-v 10.27 16.89 6.69
-v 12.57 16.89 6.08
-v 14.87 16.89 6.69
-v 16.55 16.89 8.38
-v 17.13 21.30 13.31
-v 17.83 21.30 10.68
-v 18.23 21.30 10.68
-v 17.47 21.30 13.51
-v 15.20 21.30 15.24
-v 15.40 21.30 15.58
-v 12.57 21.30 15.94
-v 12.57 21.30 16.34
-v 9.93 21.30 15.24
-v 9.73 21.30 15.58
-v 8.01 21.30 13.31
-v 7.66 21.30 13.51
-v 7.30 21.30 10.68
-v 6.90 21.30 10.68
-v 8.01 21.30 8.04
-v 7.66 21.30 7.84
-v 9.93 21.30 6.12
-v 9.73 21.30 5.77
-v 12.57 21.30 5.41
-v 12.57 21.30 5.01
-v 15.20 21.30 6.12
-v 15.40 21.30 5.77
-v 17.13 21.30 8.04
-v 17.47 21.30 7.84
-v 16.72 24.76 10.68
-v 16.17 24.76 12.76
-v 14.64 24.76 14.28
-v 12.57 24.76 14.83
-v 10.49 24.76 14.28
-v 8.97 24.76 12.76
-v 8.41 24.76 10.68
-v 8.97 24.76 8.60
-v 10.49 24.76 7.08
-v 12.57 24.76 6.52
-v 14.64 24.76 7.08
-v 16.17 24.76 8.60
-v 16.69 28.50 10.68
-v 16.13 28.50 12.74
-v 14.63 28.50 14.24
-v 12.57 28.50 14.80
-v 10.51 28.50 14.24
-v 9.00 28.50 12.74
-v 8.45 28.50 10.68
-v 9.00 28.50 8.62
-v 10.51 28.50 7.11
-v 12.57 28.50 6.56
-v 14.63 28.50 7.11
-v 16.13 28.50 8.62
-v 17.83 17.36 10.68
-v 17.13 17.36 13.31
-v 15.20 17.36 15.24
-v 12.57 17.36 15.94
-v 9.93 17.36 15.24
-v 8.01 17.36 13.31
-v 7.30 17.36 10.68
-v 8.01 17.36 8.04
-v 9.93 17.36 6.12
-v 12.57 17.36 5.41
-v 15.20 17.36 6.12
-v 17.13 17.36 8.04
-v 17.91 20.21 10.37
-v 17.91 20.52 10.80
-v 17.91 19.21 10.80
-v 17.91 19.23 10.37
-v 17.81 19.26 10.03
-v 17.91 19.26 10.04
-v 17.91 19.12 10.04
-v 17.81 19.12 10.03
-v 17.89 20.75 10.80
-v 17.98 20.75 10.81
-v 17.94 20.29 10.15
-v 17.84 20.29 10.15
-v 17.68 19.12 11.55
-v 17.78 19.12 11.56
-v 17.78 19.26 11.56
-v 17.68 19.26 11.55
-v 17.89 19.07 10.80
-v 17.98 19.07 10.81
-v 17.82 19.12 11.45
-v 17.73 19.12 11.45
-v 18.05 19.12 10.16
-v 18.05 19.26 10.16
-v 18.08 19.23 10.39
-v 17.98 20.52 10.81
-v 17.98 20.21 10.38
-v 17.93 19.26 11.46
-v 17.93 19.12 11.46
-v 18.01 19.24 11.24
-v 18.09 19.07 10.82
-v 18.09 19.21 10.82
-v 17.83 20.21 11.23
-v 17.83 19.24 11.23
-v 17.73 20.29 11.45
-v 17.82 20.29 11.45
-v 17.84 19.12 10.15
-v 17.94 19.12 10.15
-v 17.90 20.21 11.23
-v 17.98 19.23 10.38
-v 17.90 19.24 11.23
-v 17.98 19.21 10.81
-v 17.82 19.26 11.45
-v 17.73 19.26 11.45
-v 17.94 19.26 10.15
-v 17.84 19.26 10.15
-v 18.02 19.26 10.05
-v 18.02 19.12 10.05
-v 17.88 19.12 11.57
-v 17.88 19.26 11.57
-v 12.87 20.21 16.02
-v 12.44 20.52 16.02
-v 12.44 19.21 16.02
-v 12.87 19.23 16.02
-v 13.21 19.26 15.92
-v 13.20 19.26 16.02
-v 13.20 19.12 16.02
-v 13.21 19.12 15.92
-v 12.44 20.75 16.00
-v 12.43 20.75 16.10
-v 13.09 20.29 16.05
-v 13.10 20.29 15.95
-v 11.69 19.12 15.79
-v 11.68 19.12 15.89
-v 11.68 19.26 15.89
-v 11.69 19.26 15.79
-v 12.44 19.07 16.00
-v 12.43 19.07 16.10
-v 11.79 19.12 15.94
-v 11.80 19.12 15.84
-v 13.08 19.12 16.16
-v 13.08 19.26 16.16
-v 12.85 19.23 16.20
-v 12.43 20.52 16.10
-v 12.86 20.21 16.09
-v 11.78 19.26 16.04
-v 11.78 19.12 16.04
-v 12.00 19.24 16.12
-v 12.42 19.07 16.20
-v 12.42 19.21 16.20
-v 12.01 20.21 15.94
-v 12.01 19.24 15.94
-v 11.80 20.29 15.84
-v 11.79 20.29 15.94
-v 13.10 19.12 15.95
-v 13.09 19.12 16.05
-v 12.01 20.21 16.01
-v 12.86 19.23 16.09
-v 12.01 19.24 16.01
-v 12.43 19.21 16.10
-v 11.79 19.26 15.94
-v 11.80 19.26 15.84
-v 13.09 19.26 16.05
-v 13.10 19.26 15.95
-v 13.19 19.26 16.13
-v 13.19 19.12 16.13
-v 11.67 19.12 16.00
-v 11.67 19.26 16.00
-v 9.24 23.34 12.52
-v 9.78 23.34 13.29
-v 9.10 24.92 13.76
-v 8.56 24.92 12.99
-v 8.63 28.41 12.92
-v 9.53 28.41 12.29
-v 9.18 28.41 13.70
-v 10.08 28.41 13.07
-v 12.87 27.21 14.81
-v 12.44 27.52 14.82
-v 12.44 26.21 14.82
-v 12.87 26.24 14.81
-v 13.21 26.26 14.72
-v 13.20 26.26 14.82
-v 13.20 26.12 14.82
-v 13.21 26.12 14.72
-v 12.44 27.75 14.80
-v 12.43 27.75 14.89
-v 13.09 27.30 14.85
-v 13.10 27.30 14.75
-v 11.69 26.12 14.59
-v 11.68 26.12 14.69
-v 11.68 26.26 14.69
-v 11.69 26.26 14.59
-v 12.44 26.07 14.80
-v 12.43 26.07 14.89
-v 11.79 26.12 14.73
-v 11.80 26.12 14.64
-v 13.08 26.12 14.96
-v 13.08 26.26 14.96
-v 12.85 26.24 14.99
-v 12.43 27.52 14.89
-v 12.86 27.21 14.89
-v 11.78 26.26 14.84
-v 11.78 26.12 14.84
-v 12.00 26.25 14.92
-v 12.42 26.07 15.00
-v 12.42 26.21 15.00
-v 12.01 27.21 14.74
-v 12.01 26.25 14.74
-v 11.80 27.30 14.64
-v 11.79 27.30 14.73
-v 13.10 26.12 14.75
-v 13.09 26.12 14.85
-v 12.01 27.21 14.81
-v 12.86 26.24 14.89
-v 12.01 26.25 14.81
-v 12.43 26.21 14.89
-v 11.79 26.26 14.73
-v 11.80 26.26 14.64
-v 13.09 26.26 14.85
-v 13.10 26.26 14.75
-v 13.19 26.26 14.93
-v 13.19 26.12 14.93
-v 11.67 26.12 14.79
-v 11.67 26.26 14.79
-v 14.41 23.34 14.01
-v 15.18 23.34 13.46
-v 15.65 24.92 14.14
-v 14.88 24.92 14.68
-v 14.81 28.41 14.61
-v 14.18 28.41 13.71
-v 15.59 28.41 14.07
-v 14.96 28.41 13.17
-v 8.43 27.21 10.98
-v 8.42 27.52 10.55
-v 8.42 26.21 10.55
-v 8.43 26.24 10.98
-v 8.52 26.26 11.32
-v 8.42 26.26 11.31
-v 8.42 26.12 11.31
-v 8.52 26.12 11.32
-v 8.45 27.75 10.55
-v 8.35 27.75 10.54
-v 8.39 27.30 11.20
-v 8.49 27.30 11.21
-v 8.65 26.12 9.80
-v 8.56 26.12 9.79
-v 8.56 26.26 9.79
-v 8.65 26.26 9.80
-v 8.45 26.07 10.55
-v 8.35 26.07 10.54
-v 8.51 26.12 9.90
-v 8.61 26.12 9.91
-v 8.29 26.12 11.19
-v 8.29 26.26 11.19
-v 8.25 26.24 10.96
-v 8.35 27.52 10.54
-v 8.35 27.21 10.97
-v 8.40 26.26 9.89
-v 8.40 26.12 9.89
-v 8.32 26.25 10.11
-v 8.24 26.07 10.53
-v 8.24 26.21 10.53
-v 8.50 27.21 10.13
-v 8.50 26.25 10.13
-v 8.61 27.30 9.91
-v 8.51 27.30 9.90
-v 8.49 26.12 11.21
-v 8.39 26.12 11.20
-v 8.43 27.21 10.12
-v 8.35 26.24 10.97
-v 8.43 26.25 10.12
-v 8.35 26.21 10.54
-v 8.51 26.26 9.90
-v 8.61 26.26 9.91
-v 8.39 26.26 11.20
-v 8.49 26.26 11.21
-v 8.32 26.26 11.30
-v 8.32 26.12 11.30
-v 8.45 26.12 9.78
-v 8.45 26.26 9.78
-v 13.04 12.70 6.81
-v 12.09 12.70 6.81
-v 12.09 14.28 5.99
-v 13.04 14.28 5.99
-v 13.04 17.34 5.64
-v 13.04 17.34 6.74
-v 12.09 17.34 5.64
-v 12.09 17.34 6.74
-v 8.98 12.70 12.20
-v 9.46 12.70 13.02
-v 8.74 14.28 13.43
-v 8.27 14.28 12.61
-v 7.97 17.34 12.79
-v 8.92 17.34 12.24
-v 8.44 17.34 13.61
-v 9.39 17.34 13.06
-v 12.09 12.70 14.54
-v 13.04 12.70 14.54
-v 13.04 14.28 15.36
-v 12.09 14.28 15.36
-v 12.09 17.34 15.71
-v 12.09 17.34 14.62
-v 13.04 17.34 15.71
-v 13.04 17.34 14.62
-v 10.73 23.34 7.35
-v 9.95 23.34 7.89
-v 9.48 24.92 7.22
-v 10.25 24.92 6.67
-v 10.32 28.41 6.74
-v 10.95 28.41 7.65
-v 9.55 28.41 7.29
-v 10.18 28.41 8.19
-v 9.46 12.70 8.34
-v 8.98 12.70 9.15
-v 8.27 14.28 8.74
-v 8.74 14.28 7.92
-v 8.44 17.34 7.75
-v 9.39 17.34 8.30
-v 7.97 17.34 8.57
-v 8.92 17.34 9.12
-v 7.23 20.21 10.98
-v 7.22 20.52 10.55
-v 7.22 19.21 10.55
-v 7.23 19.23 10.98
-v 7.32 19.26 11.32
-v 7.22 19.26 11.31
-v 7.22 19.12 11.31
-v 7.32 19.12 11.32
-v 7.24 20.75 10.55
-v 7.15 20.75 10.54
-v 7.19 20.29 11.20
-v 7.29 20.29 11.21
-v 7.45 19.12 9.80
-v 7.35 19.12 9.79
-v 7.35 19.26 9.79
-v 7.45 19.26 9.80
-v 7.24 19.07 10.55
-v 7.15 19.07 10.54
-v 7.31 19.12 9.90
-v 7.41 19.12 9.91
-v 7.09 19.12 11.19
-v 7.09 19.26 11.19
-v 7.05 19.23 10.96
-v 7.15 20.52 10.54
-v 7.15 20.21 10.97
-v 7.20 19.26 9.89
-v 7.20 19.12 9.89
-v 7.12 19.24 10.11
-v 7.04 19.07 10.53
-v 7.04 19.21 10.53
-v 7.30 20.21 10.13
-v 7.30 19.24 10.13
-v 7.41 20.29 9.91
-v 7.31 20.29 9.90
-v 7.29 19.12 11.21
-v 7.19 19.12 11.20
-v 7.23 20.21 10.12
-v 7.15 19.23 10.97
-v 7.23 19.24 10.12
-v 7.15 19.21 10.54
-v 7.31 19.26 9.90
-v 7.41 19.26 9.91
-v 7.19 19.26 11.20
-v 7.29 19.26 11.21
-v 7.11 19.26 11.30
-v 7.11 19.12 11.30
-v 7.25 19.12 9.78
-v 7.25 19.26 9.78
-v 12.26 27.21 6.54
-v 12.69 27.52 6.53
-v 12.69 26.21 6.53
-v 12.26 26.24 6.54
-v 11.92 26.26 6.63
-v 11.93 26.26 6.53
-v 11.93 26.12 6.53
-v 11.92 26.12 6.63
-v 12.69 27.75 6.56
-v 12.70 27.75 6.46
-v 12.04 27.30 6.51
-v 12.03 27.30 6.60
-v 13.44 26.12 6.76
-v 13.45 26.12 6.67
-v 13.45 26.26 6.67
-v 13.44 26.26 6.76
-v 12.69 26.07 6.56
-v 12.70 26.07 6.46
-v 13.34 26.12 6.62
-v 13.34 26.12 6.72
-v 12.05 26.12 6.40
-v 12.05 26.26 6.40
-v 12.28 26.24 6.36
-v 12.70 27.52 6.46
-v 12.27 27.21 6.47
-v 13.35 26.26 6.51
-v 13.35 26.12 6.51
-v 13.13 26.25 6.43
-v 12.71 26.07 6.35
-v 12.71 26.21 6.35
-v 13.12 27.21 6.61
-v 13.12 26.25 6.61
-v 13.34 27.30 6.72
-v 13.34 27.30 6.62
-v 12.03 26.12 6.60
-v 12.04 26.12 6.51
-v 13.12 27.21 6.54
-v 12.27 26.24 6.47
-v 13.12 26.25 6.54
-v 12.70 26.21 6.46
-v 13.34 26.26 6.62
-v 13.34 26.26 6.72
-v 12.04 26.26 6.51
-v 12.03 26.26 6.60
-v 11.94 26.26 6.43
-v 11.94 26.12 6.43
-v 13.46 26.12 6.56
-v 13.46 26.26 6.56
-v 16.15 12.70 9.15
-v 15.67 12.70 8.34
-v 16.39 14.28 7.92
-v 16.86 14.28 8.74
-v 17.17 17.34 8.57
-v 16.21 17.34 9.12
-v 16.69 17.34 7.75
-v 15.74 17.34 8.30
-v 12.26 20.21 5.34
-v 12.69 20.52 5.33
-v 12.69 19.21 5.33
-v 12.26 19.23 5.34
-v 11.92 19.26 5.43
-v 11.93 19.26 5.33
-v 11.93 19.12 5.33
-v 11.92 19.12 5.43
-v 12.69 20.75 5.36
-v 12.70 20.75 5.26
-v 12.04 20.29 5.30
-v 12.03 20.29 5.40
-v 13.44 19.12 5.56
-v 13.45 19.12 5.47
-v 13.45 19.26 5.47
-v 13.44 19.26 5.56
-v 12.69 19.07 5.36
-v 12.70 19.07 5.26
-v 13.34 19.12 5.42
-v 13.34 19.12 5.52
-v 12.05 19.12 5.20
-v 12.05 19.26 5.20
-v 12.28 19.23 5.16
-v 12.70 20.52 5.26
-v 12.27 20.21 5.26
-v 13.35 19.26 5.31
-v 13.35 19.12 5.31
-v 13.13 19.24 5.23
-v 12.71 19.07 5.15
-v 12.71 19.21 5.15
-v 13.12 20.21 5.41
-v 13.12 19.24 5.41
-v 13.34 20.29 5.52
-v 13.34 20.29 5.42
-v 12.03 19.12 5.40
-v 12.04 19.12 5.30
-v 13.12 20.21 5.34
-v 12.27 19.23 5.26
-v 13.12 19.24 5.34
-v 12.70 19.21 5.26
-v 13.34 19.26 5.42
-v 13.34 19.26 5.52
-v 12.04 19.26 5.30
-v 12.03 19.26 5.40
-v 11.94 19.26 5.23
-v 11.94 19.12 5.23
-v 13.46 19.12 5.36
-v 13.46 19.26 5.36
-v 15.89 23.34 8.84
-v 15.35 23.34 8.06
-v 16.03 24.92 7.59
-v 16.57 24.92 8.36
-v 16.50 28.41 8.43
-v 15.60 28.41 9.06
-v 15.96 28.41 7.66
-v 15.06 28.41 8.29
-v 16.70 27.21 10.37
-v 16.71 27.52 10.80
-v 16.71 26.21 10.80
-v 16.70 26.24 10.37
-v 16.61 26.26 10.03
-v 16.71 26.26 10.04
-v 16.71 26.12 10.04
-v 16.61 26.12 10.03
-v 16.69 27.75 10.80
-v 16.78 27.75 10.81
-v 16.74 27.30 10.15
-v 16.64 27.30 10.15
-v 16.48 26.12 11.55
-v 16.58 26.12 11.56
-v 16.58 26.26 11.56
-v 16.48 26.26 11.55
-v 16.69 26.07 10.80
-v 16.78 26.07 10.81
-v 16.62 26.12 11.45
-v 16.53 26.12 11.45
-v 16.84 26.12 10.16
-v 16.84 26.26 10.16
-v 16.88 26.24 10.39
-v 16.78 27.52 10.81
-v 16.78 27.21 10.38
-v 16.73 26.26 11.46
-v 16.73 26.12 11.46
-v 16.81 26.25 11.24
-v 16.89 26.07 10.82
-v 16.89 26.21 10.82
-v 16.63 27.21 11.23
-v 16.63 26.25 11.23
-v 16.53 27.30 11.45
-v 16.62 27.30 11.45
-v 16.64 26.12 10.15
-v 16.74 26.12 10.15
-v 16.70 27.21 11.23
-v 16.78 26.24 10.38
-v 16.70 26.25 11.23
-v 16.78 26.21 10.81
-v 16.62 26.26 11.45
-v 16.53 26.26 11.45
-v 16.74 26.26 10.15
-v 16.64 26.26 10.15
-v 16.82 26.26 10.05
-v 16.82 26.12 10.05
-v 16.68 26.12 11.57
-v 16.68 26.26 11.57
-v 15.67 12.70 13.02
-v 16.15 12.70 12.20
-v 16.86 14.28 12.61
-v 16.39 14.28 13.43
-v 16.69 17.34 13.61
-v 15.74 17.34 13.06
-v 17.17 17.34 12.79
-v 16.21 17.34 12.24
-v 16.83 28.50 13.14
-v 17.49 28.50 10.68
-v 17.49 30.29 10.68
-v 16.83 30.29 13.14
-v 15.03 28.50 14.94
-v 15.03 30.29 14.94
-v 12.57 28.50 15.60
-v 12.57 30.29 15.60
-v 10.10 28.50 14.94
-v 10.10 30.29 14.94
-v 8.30 28.50 13.14
-v 8.30 30.29 13.14
-v 7.64 28.50 10.68
-v 7.64 30.29 10.68
-v 8.30 28.50 8.21
-v 8.30 30.29 8.21
-v 10.10 28.50 6.41
-v 10.10 30.29 6.41
-v 12.57 28.50 5.75
-v 12.57 30.29 5.75
-v 15.03 28.50 6.41
-v 15.03 30.29 6.41
-v 16.83 28.50 8.21
-v 16.83 30.29 8.21
-v 16.78 30.29 10.68
-v 16.21 30.29 12.78
-v 15.03 30.90 14.94
-v 16.83 30.90 13.14
-v 16.21 30.90 12.78
-v 14.67 30.90 14.32
-v 14.67 30.29 14.32
-v 12.57 30.29 14.89
-v 10.10 30.90 14.94
-v 12.57 30.90 15.60
-v 12.57 30.90 14.89
-v 10.46 30.90 14.32
-v 10.46 30.29 14.32
-v 8.92 30.29 12.78
-v 7.64 30.90 10.68
-v 8.30 30.90 13.14
-v 8.92 30.90 12.78
-v 8.36 30.90 10.68
-v 8.36 30.29 10.68
-v 8.92 30.29 8.57
-v 10.10 30.90 6.41
-v 8.30 30.90 8.21
-v 8.92 30.90 8.57
-v 10.46 30.90 7.03
-v 10.46 30.29 7.03
-v 12.57 30.29 6.47
-v 15.03 30.90 6.41
-v 12.57 30.90 5.75
-v 12.57 30.90 6.47
-v 14.67 30.90 7.03
-v 14.67 30.29 7.03
-v 16.21 30.29 8.57
-v 17.49 30.90 10.68
-v 16.83 30.90 8.21
-v 16.21 30.90 8.57
-v 16.78 30.90 10.68
-v 16.78 29.42 10.68
-v 16.21 29.42 12.78
-v 14.67 29.42 14.32
-v 12.57 29.42 14.89
-v 10.46 29.42 14.32
-v 8.92 29.42 12.78
-v 8.36 29.42 10.68
-v 8.92 29.42 8.57
-v 10.46 29.42 7.03
-v 12.57 29.42 6.47
-v 14.67 29.42 7.03
-v 16.21 29.42 8.57
-v 12.57 29.42 10.68
-v 16.55 0.00 -12.98
-v 16.55 7.76 -12.98
-v 17.17 7.76 -10.68
-v 17.17 0.00 -10.68
-v 14.87 0.00 -14.66
-v 14.87 7.76 -14.66
-v 12.57 0.00 -15.28
-v 12.57 7.76 -15.28
-v 10.27 0.00 -14.66
-v 10.27 7.76 -14.66
-v 8.58 0.00 -12.98
-v 8.58 7.76 -12.98
-v 7.97 0.00 -10.68
-v 7.97 7.76 -10.68
-v 8.58 0.00 -8.38
-v 8.58 7.76 -8.38
-v 10.27 0.00 -6.69
-v 10.27 7.76 -6.69
-v 12.57 0.00 -6.08
-v 12.57 7.76 -6.08
-v 14.87 0.00 -6.69
-v 14.87 7.76 -6.69
-v 16.55 0.00 -8.38
-v 16.55 7.76 -8.38
-v 16.78 7.76 -13.11
-v 16.78 8.57 -13.11
-v 17.43 8.57 -10.68
-v 17.43 7.76 -10.68
-v 15.00 7.76 -14.89
-v 15.00 8.57 -14.89
-v 12.57 7.76 -15.54
-v 12.57 8.57 -15.54
-v 10.13 7.76 -14.89
-v 10.13 8.57 -14.89
-v 8.35 7.76 -13.11
-v 8.35 8.57 -13.11
-v 7.70 7.76 -10.68
-v 7.70 8.57 -10.68
-v 8.35 7.76 -8.24
-v 8.35 8.57 -8.24
-v 10.13 7.76 -6.46
-v 10.13 8.57 -6.46
-v 12.57 7.76 -5.81
-v 12.57 8.57 -5.81
-v 15.00 7.76 -6.46
-v 15.00 8.57 -6.46
-v 16.78 7.76 -8.24
-v 16.78 8.57 -8.24
-v 17.17 8.57 -10.68
-v 16.55 8.57 -12.98
-v 14.87 8.57 -14.66
-v 12.57 8.57 -15.28
-v 10.27 8.57 -14.66
-v 8.58 8.57 -12.98
-v 7.97 8.57 -10.68
-v 8.58 8.57 -8.38
-v 10.27 8.57 -6.69
-v 12.57 8.57 -6.08
-v 14.87 8.57 -6.69
-v 16.55 8.57 -8.38
-v 16.55 16.89 -12.98
-v 17.17 16.89 -10.68
-v 14.87 16.89 -14.66
-v 12.57 16.89 -15.28
-v 10.27 16.89 -14.66
-v 8.58 16.89 -12.98
-v 7.97 16.89 -10.68
-v 8.58 16.89 -8.38
-v 10.27 16.89 -6.69
-v 12.57 16.89 -6.08
-v 14.87 16.89 -6.69
-v 16.55 16.89 -8.38
-v 17.13 21.30 -13.31
-v 17.47 21.30 -13.51
-v 18.23 21.30 -10.68
-v 17.83 21.30 -10.68
-v 15.20 21.30 -15.24
-v 15.40 21.30 -15.58
-v 12.57 21.30 -15.94
-v 12.57 21.30 -16.34
-v 9.93 21.30 -15.24
-v 9.73 21.30 -15.58
-v 8.01 21.30 -13.31
-v 7.66 21.30 -13.51
-v 7.30 21.30 -10.68
-v 6.90 21.30 -10.68
-v 8.01 21.30 -8.04
-v 7.66 21.30 -7.84
-v 9.93 21.30 -6.12
-v 9.73 21.30 -5.77
-v 12.57 21.30 -5.41
-v 12.57 21.30 -5.01
-v 15.20 21.30 -6.12
-v 15.40 21.30 -5.77
-v 17.13 21.30 -8.04
-v 17.47 21.30 -7.84
-v 16.17 24.76 -12.76
-v 16.72 24.76 -10.68
-v 14.64 24.76 -14.28
-v 12.57 24.76 -14.83
-v 10.49 24.76 -14.28
-v 8.97 24.76 -12.76
-v 8.41 24.76 -10.68
-v 8.97 24.76 -8.60
-v 10.49 24.76 -7.08
-v 12.57 24.76 -6.52
-v 14.64 24.76 -7.08
-v 16.17 24.76 -8.60
-v 16.13 28.50 -12.74
-v 16.69 28.50 -10.68
-v 14.63 28.50 -14.24
-v 12.57 28.50 -14.80
-v 10.51 28.50 -14.24
-v 9.00 28.50 -12.74
-v 8.45 28.50 -10.68
-v 9.00 28.50 -8.62
-v 10.51 28.50 -7.11
-v 12.57 28.50 -6.56
-v 14.63 28.50 -7.11
-v 16.13 28.50 -8.62
-v 17.13 17.36 -13.31
-v 17.83 17.36 -10.68
-v 15.20 17.36 -15.24
-v 12.57 17.36 -15.94
-v 9.93 17.36 -15.24
-v 8.01 17.36 -13.31
-v 7.30 17.36 -10.68
-v 8.01 17.36 -8.04
-v 9.93 17.36 -6.12
-v 12.57 17.36 -5.41
-v 15.20 17.36 -6.12
-v 17.13 17.36 -8.04
-v 17.91 20.21 -10.37
-v 17.91 19.23 -10.37
-v 17.91 19.21 -10.80
-v 17.91 20.52 -10.80
-v 17.81 19.26 -10.03
-v 17.81 19.12 -10.03
-v 17.91 19.12 -10.04
-v 17.91 19.26 -10.04
-v 17.89 20.75 -10.80
-v 17.84 20.29 -10.15
-v 17.94 20.29 -10.15
-v 17.98 20.75 -10.81
-v 17.68 19.12 -11.55
-v 17.68 19.26 -11.55
-v 17.78 19.26 -11.56
-v 17.78 19.12 -11.56
-v 17.89 19.07 -10.80
-v 17.73 19.12 -11.45
-v 17.82 19.12 -11.45
-v 17.98 19.07 -10.81
-v 18.05 19.12 -10.16
-v 18.08 19.23 -10.39
-v 18.05 19.26 -10.16
-v 17.98 20.21 -10.38
-v 17.98 20.52 -10.81
-v 17.93 19.26 -11.46
-v 18.01 19.24 -11.24
-v 17.93 19.12 -11.46
-v 18.09 19.07 -10.82
-v 18.09 19.21 -10.82
-v 17.83 20.21 -11.23
-v 17.83 19.24 -11.23
-v 17.73 20.29 -11.45
-v 17.82 20.29 -11.45
-v 17.84 19.12 -10.15
-v 17.94 19.12 -10.15
-v 17.90 20.21 -11.23
-v 17.98 19.23 -10.38
-v 17.90 19.24 -11.23
-v 17.98 19.21 -10.81
-v 17.82 19.26 -11.45
-v 17.73 19.26 -11.45
-v 17.84 19.26 -10.15
-v 17.94 19.26 -10.15
-v 18.02 19.12 -10.05
-v 18.02 19.26 -10.05
-v 17.88 19.26 -11.57
-v 17.88 19.12 -11.57
-v 12.87 20.21 -16.02
-v 12.87 19.23 -16.02
-v 12.44 19.21 -16.02
-v 12.44 20.52 -16.02
-v 13.21 19.26 -15.92
-v 13.21 19.12 -15.92
-v 13.20 19.12 -16.02
-v 13.20 19.26 -16.02
-v 12.44 20.75 -16.00
-v 13.10 20.29 -15.95
-v 13.09 20.29 -16.05
-v 12.43 20.75 -16.10
-v 11.69 19.12 -15.79
-v 11.69 19.26 -15.79
-v 11.68 19.26 -15.89
-v 11.68 19.12 -15.89
-v 12.44 19.07 -16.00
-v 11.80 19.12 -15.84
-v 11.79 19.12 -15.94
-v 12.43 19.07 -16.10
-v 13.08 19.12 -16.16
-v 12.85 19.23 -16.20
-v 13.08 19.26 -16.16
-v 12.86 20.21 -16.09
-v 12.43 20.52 -16.10
-v 11.78 19.26 -16.04
-v 12.00 19.24 -16.12
-v 11.78 19.12 -16.04
-v 12.42 19.07 -16.20
-v 12.42 19.21 -16.20
-v 12.01 20.21 -15.94
-v 12.01 19.24 -15.94
-v 11.80 20.29 -15.84
-v 11.79 20.29 -15.94
-v 13.10 19.12 -15.95
-v 13.09 19.12 -16.05
-v 12.01 20.21 -16.01
-v 12.86 19.23 -16.09
-v 12.01 19.24 -16.01
-v 12.43 19.21 -16.10
-v 11.79 19.26 -15.94
-v 11.80 19.26 -15.84
-v 13.10 19.26 -15.95
-v 13.09 19.26 -16.05
-v 13.19 19.12 -16.13
-v 13.19 19.26 -16.13
-v 11.67 19.26 -16.00
-v 11.67 19.12 -16.00
-v 9.24 23.34 -12.52
-v 8.56 24.92 -12.99
-v 9.10 24.92 -13.76
-v 9.78 23.34 -13.29
-v 9.53 28.41 -12.29
-v 8.63 28.41 -12.92
-v 9.18 28.41 -13.70
-v 10.08 28.41 -13.07
-v 12.87 27.21 -14.81
-v 12.87 26.24 -14.81
-v 12.44 26.21 -14.82
-v 12.44 27.52 -14.82
-v 13.21 26.26 -14.72
-v 13.21 26.12 -14.72
-v 13.20 26.12 -14.82
-v 13.20 26.26 -14.82
-v 12.44 27.75 -14.80
-v 13.10 27.30 -14.75
-v 13.09 27.30 -14.85
-v 12.43 27.75 -14.89
-v 11.69 26.12 -14.59
-v 11.69 26.26 -14.59
-v 11.68 26.26 -14.69
-v 11.68 26.12 -14.69
-v 12.44 26.07 -14.80
-v 11.80 26.12 -14.64
-v 11.79 26.12 -14.73
-v 12.43 26.07 -14.89
-v 13.08 26.12 -14.96
-v 12.85 26.24 -14.99
-v 13.08 26.26 -14.96
-v 12.86 27.21 -14.89
-v 12.43 27.52 -14.89
-v 11.78 26.26 -14.84
-v 12.00 26.25 -14.92
-v 11.78 26.12 -14.84
-v 12.42 26.07 -15.00
-v 12.42 26.21 -15.00
-v 12.01 27.21 -14.74
-v 12.01 26.25 -14.74
-v 11.80 27.30 -14.64
-v 11.79 27.30 -14.73
-v 13.10 26.12 -14.75
-v 13.09 26.12 -14.85
-v 12.01 27.21 -14.81
-v 12.86 26.24 -14.89
-v 12.01 26.25 -14.81
-v 12.43 26.21 -14.89
-v 11.79 26.26 -14.73
-v 11.80 26.26 -14.64
-v 13.10 26.26 -14.75
-v 13.09 26.26 -14.85
-v 13.19 26.12 -14.93
-v 13.19 26.26 -14.93
-v 11.67 26.26 -14.79
-v 11.67 26.12 -14.79
-v 14.41 23.34 -14.01
-v 14.88 24.92 -14.68
-v 15.65 24.92 -14.14
-v 15.18 23.34 -13.46
-v 14.18 28.41 -13.71
-v 14.81 28.41 -14.61
-v 15.59 28.41 -14.07
-v 14.96 28.41 -13.17
-v 8.43 27.21 -10.98
-v 8.43 26.24 -10.98
-v 8.42 26.21 -10.55
-v 8.42 27.52 -10.55
-v 8.52 26.26 -11.32
-v 8.52 26.12 -11.32
-v 8.42 26.12 -11.31
-v 8.42 26.26 -11.31
-v 8.45 27.75 -10.55
-v 8.49 27.30 -11.21
-v 8.39 27.30 -11.20
-v 8.35 27.75 -10.54
-v 8.65 26.12 -9.80
-v 8.65 26.26 -9.80
-v 8.56 26.26 -9.79
-v 8.56 26.12 -9.79
-v 8.45 26.07 -10.55
-v 8.61 26.12 -9.91
-v 8.51 26.12 -9.90
-v 8.35 26.07 -10.54
-v 8.29 26.12 -11.19
-v 8.25 26.24 -10.96
-v 8.29 26.26 -11.19
-v 8.35 27.21 -10.97
-v 8.35 27.52 -10.54
-v 8.40 26.26 -9.89
-v 8.32 26.25 -10.11
-v 8.40 26.12 -9.89
-v 8.24 26.07 -10.53
-v 8.24 26.21 -10.53
-v 8.50 27.21 -10.13
-v 8.50 26.25 -10.13
-v 8.61 27.30 -9.91
-v 8.51 27.30 -9.90
-v 8.49 26.12 -11.21
-v 8.39 26.12 -11.20
-v 8.43 27.21 -10.12
-v 8.35 26.24 -10.97
-v 8.43 26.25 -10.12
-v 8.35 26.21 -10.54
-v 8.51 26.26 -9.90
-v 8.61 26.26 -9.91
-v 8.49 26.26 -11.21
-v 8.39 26.26 -11.20
-v 8.32 26.12 -11.30
-v 8.32 26.26 -11.30
-v 8.45 26.26 -9.78
-v 8.45 26.12 -9.78
-v 13.04 12.70 -6.81
-v 13.04 14.28 -5.99
-v 12.09 14.28 -5.99
-v 12.09 12.70 -6.81
-v 13.04 17.34 -6.74
-v 13.04 17.34 -5.64
-v 12.09 17.34 -5.64
-v 12.09 17.34 -6.74
-v 8.98 12.70 -12.20
-v 8.27 14.28 -12.61
-v 8.74 14.28 -13.43
-v 9.46 12.70 -13.02
-v 8.92 17.34 -12.24
-v 7.97 17.34 -12.79
-v 8.44 17.34 -13.61
-v 9.39 17.34 -13.06
-v 12.09 12.70 -14.54
-v 12.09 14.28 -15.36
-v 13.04 14.28 -15.36
-v 13.04 12.70 -14.54
-v 12.09 17.34 -14.62
-v 12.09 17.34 -15.71
-v 13.04 17.34 -15.71
-v 13.04 17.34 -14.62
-v 10.73 23.34 -7.35
-v 10.25 24.92 -6.67
-v 9.48 24.92 -7.22
-v 9.95 23.34 -7.89
-v 10.95 28.41 -7.65
-v 10.32 28.41 -6.74
-v 9.55 28.41 -7.29
-v 10.18 28.41 -8.19
-v 9.46 12.70 -8.34
-v 8.74 14.28 -7.92
-v 8.27 14.28 -8.74
-v 8.98 12.70 -9.15
-v 9.39 17.34 -8.30
-v 8.44 17.34 -7.75
-v 7.97 17.34 -8.57
-v 8.92 17.34 -9.12
-v 7.23 20.21 -10.98
-v 7.23 19.23 -10.98
-v 7.22 19.21 -10.55
-v 7.22 20.52 -10.55
-v 7.32 19.26 -11.32
-v 7.32 19.12 -11.32
-v 7.22 19.12 -11.31
-v 7.22 19.26 -11.31
-v 7.24 20.75 -10.55
-v 7.29 20.29 -11.21
-v 7.19 20.29 -11.20
-v 7.15 20.75 -10.54
-v 7.45 19.12 -9.80
-v 7.45 19.26 -9.80
-v 7.35 19.26 -9.79
-v 7.35 19.12 -9.79
-v 7.24 19.07 -10.55
-v 7.41 19.12 -9.91
-v 7.31 19.12 -9.90
-v 7.15 19.07 -10.54
-v 7.09 19.12 -11.19
-v 7.05 19.23 -10.96
-v 7.09 19.26 -11.19
-v 7.15 20.21 -10.97
-v 7.15 20.52 -10.54
-v 7.20 19.26 -9.89
-v 7.12 19.24 -10.11
-v 7.20 19.12 -9.89
-v 7.04 19.07 -10.53
-v 7.04 19.21 -10.53
-v 7.30 20.21 -10.13
-v 7.30 19.24 -10.13
-v 7.41 20.29 -9.91
-v 7.31 20.29 -9.90
-v 7.29 19.12 -11.21
-v 7.19 19.12 -11.20
-v 7.23 20.21 -10.12
-v 7.15 19.23 -10.97
-v 7.23 19.24 -10.12
-v 7.15 19.21 -10.54
-v 7.31 19.26 -9.90
-v 7.41 19.26 -9.91
-v 7.29 19.26 -11.21
-v 7.19 19.26 -11.20
-v 7.11 19.12 -11.30
-v 7.11 19.26 -11.30
-v 7.25 19.26 -9.78
-v 7.25 19.12 -9.78
-v 12.26 27.21 -6.54
-v 12.26 26.24 -6.54
-v 12.69 26.21 -6.53
-v 12.69 27.52 -6.53
-v 11.92 26.26 -6.63
-v 11.92 26.12 -6.63
-v 11.93 26.12 -6.53
-v 11.93 26.26 -6.53
-v 12.69 27.75 -6.56
-v 12.03 27.30 -6.60
-v 12.04 27.30 -6.51
-v 12.70 27.75 -6.46
-v 13.44 26.12 -6.76
-v 13.44 26.26 -6.76
-v 13.45 26.26 -6.67
-v 13.45 26.12 -6.67
-v 12.69 26.07 -6.56
-v 13.34 26.12 -6.72
-v 13.34 26.12 -6.62
-v 12.70 26.07 -6.46
-v 12.05 26.12 -6.40
-v 12.28 26.24 -6.36
-v 12.05 26.26 -6.40
-v 12.27 27.21 -6.47
-v 12.70 27.52 -6.46
-v 13.35 26.26 -6.51
-v 13.13 26.25 -6.43
-v 13.35 26.12 -6.51
-v 12.71 26.07 -6.35
-v 12.71 26.21 -6.35
-v 13.12 27.21 -6.61
-v 13.12 26.25 -6.61
-v 13.34 27.30 -6.72
-v 13.34 27.30 -6.62
-v 12.03 26.12 -6.60
-v 12.04 26.12 -6.51
-v 13.12 27.21 -6.54
-v 12.27 26.24 -6.47
-v 13.12 26.25 -6.54
-v 12.70 26.21 -6.46
-v 13.34 26.26 -6.62
-v 13.34 26.26 -6.72
-v 12.03 26.26 -6.60
-v 12.04 26.26 -6.51
-v 11.94 26.12 -6.43
-v 11.94 26.26 -6.43
-v 13.46 26.26 -6.56
-v 13.46 26.12 -6.56
-v 16.15 12.70 -9.15
-v 16.86 14.28 -8.74
-v 16.39 14.28 -7.92
-v 15.67 12.70 -8.34
-v 16.21 17.34 -9.12
-v 17.17 17.34 -8.57
-v 16.69 17.34 -7.75
-v 15.74 17.34 -8.30
-v 12.26 20.21 -5.34
-v 12.26 19.23 -5.34
-v 12.69 19.21 -5.33
-v 12.69 20.52 -5.33
-v 11.92 19.26 -5.43
-v 11.92 19.12 -5.43
-v 11.93 19.12 -5.33
-v 11.93 19.26 -5.33
-v 12.69 20.75 -5.36
-v 12.03 20.29 -5.40
-v 12.04 20.29 -5.30
-v 12.70 20.75 -5.26
-v 13.44 19.12 -5.56
-v 13.44 19.26 -5.56
-v 13.45 19.26 -5.47
-v 13.45 19.12 -5.47
-v 12.69 19.07 -5.36
-v 13.34 19.12 -5.52
-v 13.34 19.12 -5.42
-v 12.70 19.07 -5.26
-v 12.05 19.12 -5.20
-v 12.28 19.23 -5.16
-v 12.05 19.26 -5.20
-v 12.27 20.21 -5.26
-v 12.70 20.52 -5.26
-v 13.35 19.26 -5.31
-v 13.13 19.24 -5.23
-v 13.35 19.12 -5.31
-v 12.71 19.07 -5.15
-v 12.71 19.21 -5.15
-v 13.12 20.21 -5.41
-v 13.12 19.24 -5.41
-v 13.34 20.29 -5.52
-v 13.34 20.29 -5.42
-v 12.03 19.12 -5.40
-v 12.04 19.12 -5.30
-v 13.12 20.21 -5.34
-v 12.27 19.23 -5.26
-v 13.12 19.24 -5.34
-v 12.70 19.21 -5.26
-v 13.34 19.26 -5.42
-v 13.34 19.26 -5.52
-v 12.03 19.26 -5.40
-v 12.04 19.26 -5.30
-v 11.94 19.12 -5.23
-v 11.94 19.26 -5.23
-v 13.46 19.26 -5.36
-v 13.46 19.12 -5.36
-v 15.89 23.34 -8.84
-v 16.57 24.92 -8.36
-v 16.03 24.92 -7.59
-v 15.35 23.34 -8.06
-v 15.60 28.41 -9.06
-v 16.50 28.41 -8.43
-v 15.96 28.41 -7.66
-v 15.06 28.41 -8.29
-v 16.70 27.21 -10.37
-v 16.70 26.24 -10.37
-v 16.71 26.21 -10.80
-v 16.71 27.52 -10.80
-v 16.61 26.26 -10.03
-v 16.61 26.12 -10.03
-v 16.71 26.12 -10.04
-v 16.71 26.26 -10.04
-v 16.69 27.75 -10.80
-v 16.64 27.30 -10.15
-v 16.74 27.30 -10.15
-v 16.78 27.75 -10.81
-v 16.48 26.12 -11.55
-v 16.48 26.26 -11.55
-v 16.58 26.26 -11.56
-v 16.58 26.12 -11.56
-v 16.69 26.07 -10.80
-v 16.53 26.12 -11.45
-v 16.62 26.12 -11.45
-v 16.78 26.07 -10.81
-v 16.84 26.12 -10.16
-v 16.88 26.24 -10.39
-v 16.84 26.26 -10.16
-v 16.78 27.21 -10.38
-v 16.78 27.52 -10.81
-v 16.73 26.26 -11.46
-v 16.81 26.25 -11.24
-v 16.73 26.12 -11.46
-v 16.89 26.07 -10.82
-v 16.89 26.21 -10.82
-v 16.63 27.21 -11.23
-v 16.63 26.25 -11.23
-v 16.53 27.30 -11.45
-v 16.62 27.30 -11.45
-v 16.64 26.12 -10.15
-v 16.74 26.12 -10.15
-v 16.70 27.21 -11.23
-v 16.78 26.24 -10.38
-v 16.70 26.25 -11.23
-v 16.78 26.21 -10.81
-v 16.62 26.26 -11.45
-v 16.53 26.26 -11.45
-v 16.64 26.26 -10.15
-v 16.74 26.26 -10.15
-v 16.82 26.12 -10.05
-v 16.82 26.26 -10.05
-v 16.68 26.26 -11.57
-v 16.68 26.12 -11.57
-v 15.67 12.70 -13.02
-v 16.39 14.28 -13.43
-v 16.86 14.28 -12.61
-v 16.15 12.70 -12.20
-v 15.74 17.34 -13.06
-v 16.69 17.34 -13.61
-v 17.17 17.34 -12.79
-v 16.21 17.34 -12.24
-v 16.83 28.50 -13.14
-v 16.83 30.29 -13.14
-v 17.49 30.29 -10.68
-v 17.49 28.50 -10.68
-v 15.03 28.50 -14.94
-v 15.03 30.29 -14.94
-v 12.57 28.50 -15.60
-v 12.57 30.29 -15.60
-v 10.10 28.50 -14.94
-v 10.10 30.29 -14.94
-v 8.30 28.50 -13.14
-v 8.30 30.29 -13.14
-v 7.64 28.50 -10.68
-v 7.64 30.29 -10.68
-v 8.30 28.50 -8.21
-v 8.30 30.29 -8.21
-v 10.10 28.50 -6.41
-v 10.10 30.29 -6.41
-v 12.57 28.50 -5.75
-v 12.57 30.29 -5.75
-v 15.03 28.50 -6.41
-v 15.03 30.29 -6.41
-v 16.83 28.50 -8.21
-v 16.83 30.29 -8.21
-v 16.21 30.29 -12.78
-v 16.78 30.29 -10.68
-v 15.03 30.90 -14.94
-v 14.67 30.90 -14.32
-v 16.21 30.90 -12.78
-v 16.83 30.90 -13.14
-v 12.57 30.29 -14.89
-v 14.67 30.29 -14.32
-v 10.10 30.90 -14.94
-v 10.46 30.90 -14.32
-v 12.57 30.90 -14.89
-v 12.57 30.90 -15.60
-v 8.92 30.29 -12.78
-v 10.46 30.29 -14.32
-v 7.64 30.90 -10.68
-v 8.36 30.90 -10.68
-v 8.92 30.90 -12.78
-v 8.30 30.90 -13.14
-v 8.92 30.29 -8.57
-v 8.36 30.29 -10.68
-v 10.10 30.90 -6.41
-v 10.46 30.90 -7.03
-v 8.92 30.90 -8.57
-v 8.30 30.90 -8.21
-v 12.57 30.29 -6.47
-v 10.46 30.29 -7.03
-v 15.03 30.90 -6.41
-v 14.67 30.90 -7.03
-v 12.57 30.90 -6.47
-v 12.57 30.90 -5.75
-v 16.21 30.29 -8.57
-v 14.67 30.29 -7.03
-v 17.49 30.90 -10.68
-v 16.78 30.90 -10.68
-v 16.21 30.90 -8.57
-v 16.83 30.90 -8.21
-v 16.21 29.42 -12.78
-v 16.78 29.42 -10.68
-v 14.67 29.42 -14.32
-v 12.57 29.42 -14.89
-v 10.46 29.42 -14.32
-v 8.92 29.42 -12.78
-v 8.36 29.42 -10.68
-v 8.92 29.42 -8.57
-v 10.46 29.42 -7.03
-v 12.57 29.42 -6.47
-v 14.67 29.42 -7.03
-v 16.21 29.42 -8.57
-v 12.57 29.42 -10.68
-# 4553 vertices
-
-vn -1.00 0.00 -0.00
-vn -0.48 0.00 -0.88
-vn -0.17 0.00 -0.99
-vn 0.00 0.00 -1.00
-vn 0.17 0.00 -0.99
-vn 0.48 0.00 -0.88
-vn 1.00 0.00 -0.00
-vn 0.48 0.00 0.88
-vn 0.17 0.00 0.99
-vn 0.00 0.00 1.00
-vn -0.17 0.00 0.99
-vn -0.48 0.00 0.88
-vn -0.73 0.00 -0.69
-vn -0.27 0.00 -0.96
-vn -0.08 0.00 -1.00
-vn 0.08 0.00 -1.00
-vn 0.27 0.00 -0.96
-vn 0.73 0.00 -0.69
-vn 0.73 0.00 0.69
-vn 0.27 0.00 0.96
-vn 0.08 0.00 1.00
-vn -0.08 0.00 1.00
-vn -0.27 0.00 0.96
-vn -0.73 0.00 0.69
-vn -0.72 0.00 0.69
-vn 0.00 -1.00 -0.00
-vn 0.00 1.00 -0.00
-vn -0.60 0.56 -0.57
-vn -0.26 0.33 -0.91
-vn -0.07 0.25 -0.96
-vn 0.07 0.25 -0.96
-vn 0.26 0.33 -0.91
-vn 0.60 0.56 -0.57
-vn 0.60 0.56 0.57
-vn 0.26 0.33 0.91
-vn 0.07 0.25 0.96
-vn -0.07 0.25 0.96
-vn -0.26 0.33 0.91
-vn -0.60 0.56 0.57
-vn -0.73 0.01 -0.69
-vn -0.27 0.01 -0.96
-vn -0.08 0.01 -1.00
-vn -0.07 0.01 -1.00
-vn 0.08 0.01 -1.00
-vn 0.27 0.01 -0.96
-vn 0.73 0.01 -0.69
-vn 0.72 0.01 0.69
-vn 0.73 0.01 0.69
-vn 0.27 0.01 0.96
-vn 0.08 0.01 1.00
-vn -0.08 0.01 1.00
-vn -0.07 0.01 1.00
-vn -0.27 0.01 0.96
-vn -0.73 0.01 0.69
-vn -0.72 0.01 0.69
-vn -0.30 -0.91 -0.29
-vn -0.18 -0.75 -0.64
-vn -0.18 -0.74 -0.64
-vn -0.06 -0.65 -0.76
-vn 0.06 -0.65 -0.76
-vn 0.18 -0.75 -0.64
-vn 0.18 -0.74 -0.64
-vn 0.30 -0.91 -0.29
-vn 0.30 -0.91 0.29
-vn 0.18 -0.74 0.64
-vn 0.18 -0.75 0.64
-vn 0.06 -0.65 0.76
-vn -0.06 -0.65 0.76
-vn -0.18 -0.74 0.64
-vn -0.18 -0.75 0.64
-vn -0.30 -0.91 0.29
-vn -1.00 0.00 0.06
-vn -0.02 0.00 1.00
-vn -0.02 0.65 0.76
-vn 0.02 0.00 -1.00
-vn 0.00 -0.99 -0.12
-vn -0.85 0.00 0.52
-vn -0.95 0.12 0.30
-vn -0.62 0.00 -0.78
-vn -0.76 -0.16 -0.63
-vn -0.83 0.00 -0.56
-vn 0.02 0.66 -0.75
-vn -0.00 -0.99 0.12
-vn -0.72 0.09 -0.69
-vn -0.96 -0.21 0.19
-vn 0.02 -0.64 -0.77
-vn -0.02 -0.64 0.77
-vn -0.00 0.99 0.13
-vn 0.00 1.00 -0.10
-vn 0.00 0.99 -0.17
-vn 0.01 0.99 -0.17
-vn -0.00 0.99 0.10
-vn -0.74 0.00 0.67
-vn -0.75 0.00 0.67
-vn -0.54 0.00 -0.84
-vn -0.00 0.00 -1.00
-vn -0.96 0.00 -0.29
-vn -0.95 0.00 -0.30
-vn -0.31 0.95 -0.10
-vn 0.95 0.00 0.30
-vn 0.96 0.00 0.29
-vn 0.03 -1.00 0.01
-vn -0.05 0.00 -1.00
-vn -0.03 0.04 -1.00
-vn 0.10 0.00 -1.00
-vn 0.07 -0.06 -1.00
-vn 0.05 0.00 -1.00
-vn 0.31 0.95 0.10
-vn -0.04 -1.00 -0.01
-vn 0.08 0.04 -1.00
-vn -0.02 -0.06 -1.00
-vn 0.32 -0.94 0.10
-vn -0.32 -0.94 -0.10
-vn -0.04 1.00 -0.01
-vn 0.03 1.00 0.01
-vn 0.05 1.00 0.01
-vn -0.03 1.00 -0.01
-vn -0.07 0.00 -1.00
-vn 0.12 0.00 -0.99
-vn 0.33 -0.45 -0.83
-vn 0.19 -0.00 0.98
-vn 0.37 0.03 -0.93
-vn -0.19 0.00 -0.98
-vn -0.01 0.00 -1.00
-vn -0.96 0.00 -0.30
-vn 0.31 0.95 0.09
-vn -0.18 -0.35 -0.92
-vn 0.37 -0.00 -0.93
-vn -0.19 0.02 -0.98
-vn -0.37 0.00 0.93
-vn 1.00 0.00 -0.06
-vn 0.02 0.65 -0.76
-vn 0.85 0.00 -0.52
-vn 0.95 0.12 -0.30
-vn 0.62 0.00 0.78
-vn 0.76 -0.16 0.63
-vn 0.83 0.00 0.56
-vn 0.82 0.00 0.57
-vn -0.02 0.66 0.75
-vn 0.72 0.09 0.69
-vn 0.96 -0.21 -0.19
-vn 0.00 0.99 -0.13
-vn -0.00 1.00 0.10
-vn -0.00 0.99 0.17
-vn 0.00 0.99 -0.10
-vn 0.75 0.00 -0.67
-vn 0.54 0.00 0.84
-vn 0.00 -0.30 0.95
-vn 0.00 -0.07 1.00
-vn 0.38 -0.49 -0.78
-vn 0.16 0.00 0.99
-vn 0.44 -0.12 -0.89
-vn -0.16 0.00 -0.99
-vn 0.00 -0.30 -0.95
-vn 0.00 -0.07 -1.00
-vn 0.18 -0.35 0.92
-vn -0.37 -0.00 0.93
-vn 0.19 0.02 0.98
-vn 0.37 0.00 -0.93
-vn 0.38 -0.49 0.78
-vn -0.16 0.00 0.99
-vn 0.44 -0.12 0.89
-vn 0.16 0.00 -0.99
-vn 0.01 0.00 1.00
-vn 0.96 0.00 0.30
-vn -0.03 -1.00 -0.01
-vn 0.05 0.00 1.00
-vn 0.03 0.04 1.00
-vn -0.10 0.00 1.00
-vn -0.07 -0.06 1.00
-vn -0.05 0.00 1.00
-vn -0.31 0.95 -0.09
-vn 0.04 -1.00 0.01
-vn -0.08 0.04 1.00
-vn 0.02 -0.06 1.00
-vn 0.04 1.00 0.01
-vn -0.05 1.00 -0.02
-vn 0.07 0.00 1.00
-vn -0.12 0.00 0.99
-vn -0.38 -0.49 0.78
-vn -0.44 -0.12 0.89
-vn -0.43 -0.12 0.89
-vn -0.33 -0.45 0.83
-vn -0.19 -0.00 -0.98
-vn -0.37 0.03 0.93
-vn 0.19 0.00 0.98
-vn -0.38 -0.49 -0.78
-vn -0.44 -0.12 -0.89
-vn -0.43 -0.12 -0.89
-vn 0.72 0.00 0.69
-vn -0.07 0.00 1.00
-vn -0.72 0.00 -0.69
-vn 0.07 0.00 -1.00
-vn 0.72 0.00 -0.69
-vn 0.44 0.00 -0.90
-vn 0.44 0.00 0.90
-vn -0.44 0.00 0.90
-vn -0.44 0.00 -0.90
-vn 0.50 0.87 -0.00
-vn 0.00 0.45 -0.89
-vn -0.50 0.87 -0.00
-vn 0.00 0.42 0.91
-vn 0.08 1.00 -0.00
-vn 0.04 0.55 0.83
-vn -0.00 0.55 0.83
-vn 0.01 0.01 1.00
-vn -0.00 0.55 -0.83
-vn 0.04 0.55 -0.83
-vn 0.01 0.01 -1.00
-vn -0.08 1.00 -0.00
-vn -0.04 0.55 0.83
-vn -0.01 0.01 1.00
-vn -0.04 0.55 -0.83
-vn -0.01 0.01 -1.00
-vn -0.06 0.60 -0.79
-vn -0.91 -0.41 0.00
-vn -0.10 0.98 -0.19
-vn -0.06 0.60 0.79
-vn -0.91 -0.41 -0.00
-vn -0.10 0.98 0.19
-vn -0.05 0.61 -0.79
-vn -0.94 -0.35 -0.00
-vn -0.08 0.98 -0.19
-vn -0.05 0.61 0.79
-vn -0.08 0.98 0.19
-vn -0.04 0.61 -0.79
-vn -0.03 0.61 -0.79
-vn -0.97 -0.25 0.00
-vn -0.97 -0.25 -0.00
-vn -0.06 0.98 -0.19
-vn -0.04 0.61 0.79
-vn -0.03 0.61 0.79
-vn -0.06 0.98 0.19
-vn -0.01 0.61 -0.79
-vn -1.00 -0.07 -0.00
-vn -0.02 0.98 -0.19
-vn -0.01 0.61 0.79
-vn -0.02 0.98 0.19
-vn -1.00 -0.07 0.00
-vn -0.02 0.61 -0.79
-vn -0.99 -0.11 -0.00
-vn -0.02 0.61 0.79
-vn -0.99 -0.11 0.00
-vn 0.06 0.60 -0.79
-vn 0.91 -0.41 0.00
-vn 0.10 0.98 -0.19
-vn 0.06 0.60 0.79
-vn 0.91 -0.41 -0.00
-vn 0.10 0.98 0.19
-vn 0.05 0.61 -0.79
-vn 0.94 -0.35 -0.00
-vn 0.08 0.98 -0.19
-vn 0.05 0.61 0.79
-vn 0.94 -0.35 0.00
-vn 0.08 0.98 0.19
-vn 0.03 0.61 -0.79
-vn 0.04 0.61 -0.79
-vn 0.97 -0.25 0.00
-vn 0.06 0.98 -0.19
-vn 0.03 0.61 0.79
-vn 0.97 -0.25 -0.00
-vn 0.06 0.98 0.19
-vn 0.04 0.61 0.79
-vn 0.01 0.61 -0.79
-vn 1.00 -0.07 -0.00
-vn 0.02 0.98 -0.19
-vn 0.01 0.61 0.79
-vn 0.02 0.98 0.19
-vn 1.00 -0.07 0.00
-vn 0.02 0.61 -0.79
-vn 0.99 -0.11 -0.00
-vn 0.02 0.61 0.79
-vn 0.99 -0.11 0.00
-vn 0.10 0.98 -0.20
-vn 0.10 0.98 0.20
-vn 0.09 0.59 -0.80
-vn -0.82 0.57 0.00
-vn -0.82 0.57 -0.00
-vn 0.15 0.97 -0.20
-vn 0.09 0.59 0.80
-vn 0.15 0.97 0.20
-vn -0.09 0.59 -0.80
-vn 0.82 0.57 0.00
-vn -0.15 0.97 -0.20
-vn -0.09 0.59 0.80
-vn 0.82 0.57 -0.00
-vn -0.15 0.97 0.20
-vn -0.57 0.82 -0.00
-vn 0.08 -1.00 -0.00
-vn 0.57 0.82 -0.00
-vn -0.08 -1.00 -0.00
-vn 0.59 -0.81 -0.00
-vn -0.59 -0.81 -0.00
-vn 0.06 1.00 -0.00
-vn 0.10 0.99 -0.00
-vn -0.06 1.00 -0.00
-vn -0.07 -1.00 -0.00
-vn 0.07 -1.00 -0.00
-vn 0.00 0.37 0.93
-vn 0.00 -0.97 -0.26
-vn 0.00 0.37 -0.93
-vn 0.00 -0.97 0.26
-vn 0.00 -0.36 -0.93
-vn 0.00 -0.36 0.93
-vn 0.00 0.96 0.28
-vn 0.00 0.98 -0.21
-vn 0.00 0.94 -0.35
-vn 0.00 0.98 0.22
-vn 0.00 0.96 -0.28
-vn 0.00 0.98 0.21
-vn 0.00 0.94 0.35
-vn 0.00 0.98 -0.22
-vn 0.11 0.99 -0.00
-vn -0.10 0.99 -0.00
-vn 1.00 0.04 -0.00
-vn 0.87 0.50 -0.00
-vn -1.00 -0.04 -0.00
-vn -0.87 -0.50 -0.00
-vn 0.40 0.92 -0.00
-vn -0.42 -0.91 -0.00
-vn -0.40 0.92 -0.00
-vn 0.42 -0.91 -0.00
-vn -0.87 0.50 -0.00
-vn 0.87 -0.50 -0.00
-vn -1.00 0.04 -0.00
-vn 1.00 -0.04 -0.00
-vn 0.02 0.05 -1.00
-vn 0.95 -0.05 0.30
-vn -0.02 -0.01 1.00
-vn -0.94 0.18 -0.29
-vn 0.03 -0.06 -1.00
-vn 0.02 -0.06 -1.00
-vn 0.96 0.05 0.27
-vn -0.02 0.01 1.00
-vn -0.96 -0.22 -0.19
-vn 0.00 -1.00 -0.05
-vn 0.00 1.00 0.05
-vn 0.00 -1.00 0.05
-vn 0.00 1.00 -0.05
-vn 0.02 -1.00 -0.00
-vn -0.02 1.00 -0.00
-vn -0.01 1.00 -0.00
-vn -0.01 -1.00 -0.00
-vn 0.01 1.00 -0.00
-vn 0.02 0.05 1.00
-vn 0.95 -0.05 -0.30
-vn -0.02 -0.01 -1.00
-vn -0.94 0.18 0.29
-vn 0.03 -0.06 1.00
-vn 0.96 0.05 -0.27
-vn -0.02 0.01 -1.00
-vn -0.96 -0.22 0.19
-vn -0.96 -0.22 0.18
-vn 0.01 -1.00 -0.00
-vn -0.02 -1.00 -0.00
-vn 0.02 1.00 -0.00
-vn -0.99 0.12 -0.00
-vn -1.00 0.01 0.04
-vn -0.99 -0.10 0.07
-vn 0.00 0.01 1.00
-vn 0.00 -0.00 1.00
-vn 1.00 0.01 0.01
-vn 1.00 -0.03 0.02
-vn 0.00 0.04 -1.00
-vn 0.00 0.01 -1.00
-vn 0.00 -0.02 -1.00
-vn 0.13 -0.99 -0.00
-vn -0.13 0.99 -0.00
-vn -0.13 -0.99 -0.00
-vn 0.13 0.99 -0.00
-vn -0.07 1.00 -0.00
-vn 0.07 1.00 -0.00
-vn 0.00 -0.67 -0.74
-vn 0.00 -0.13 -0.99
-vn 0.00 0.67 -0.74
-vn 0.00 0.13 -0.99
-vn 0.00 0.12 -0.99
-vn -1.00 0.01 -0.04
-vn -0.99 -0.10 -0.07
-vn 0.00 -0.00 -1.00
-vn 1.00 0.01 -0.01
-vn 1.00 -0.03 -0.02
-vn 0.00 0.04 1.00
-vn 0.00 -0.02 1.00
-vn 0.72 0.01 -0.69
-vn -0.72 0.01 -0.69
-vn -1.00 0.00 -0.06
-vn -0.02 0.00 -1.00
-vn -0.02 0.65 -0.76
-vn 0.02 0.00 1.00
-vn 0.00 -0.99 0.12
-vn -0.85 0.00 -0.52
-vn -0.95 0.12 -0.30
-vn -0.62 0.00 0.78
-vn -0.76 -0.16 0.63
-vn -0.83 0.00 0.56
-vn 0.02 0.66 0.75
-vn -0.00 -0.99 -0.12
-vn -0.72 0.09 0.69
-vn -0.96 -0.21 -0.19
-vn 0.02 -0.64 0.77
-vn -0.02 -0.64 -0.77
-vn -0.00 0.99 -0.13
-vn 0.00 1.00 0.10
-vn 0.00 0.99 0.17
-vn 0.01 0.99 0.17
-vn -0.00 0.99 -0.10
-vn -0.74 0.00 -0.67
-vn -0.75 0.00 -0.67
-vn -0.54 0.00 0.84
-vn -0.00 0.00 1.00
-vn -0.96 0.00 0.29
-vn -0.95 0.00 0.30
-vn -0.31 0.95 0.10
-vn 0.95 0.00 -0.30
-vn 0.96 0.00 -0.29
-vn 0.03 -1.00 -0.01
-vn -0.03 0.04 1.00
-vn 0.10 0.00 1.00
-vn 0.07 -0.06 1.00
-vn 0.31 0.95 -0.10
-vn -0.04 -1.00 0.01
-vn 0.08 0.04 1.00
-vn -0.02 -0.06 1.00
-vn 0.32 -0.94 -0.10
-vn -0.32 -0.94 0.10
-vn -0.04 1.00 0.01
-vn 0.03 1.00 -0.01
-vn 0.05 1.00 -0.01
-vn -0.03 1.00 0.01
-vn 0.12 0.00 0.99
-vn 0.33 -0.45 0.83
-vn 0.19 -0.00 -0.98
-vn 0.37 0.03 0.93
-vn -0.19 0.00 0.98
-vn -0.01 0.00 1.00
-vn -0.96 0.00 0.30
-vn 0.31 0.95 -0.09
-vn -0.18 -0.35 0.92
-vn 0.37 -0.00 0.93
-vn -0.19 0.02 0.98
-vn -0.37 0.00 -0.93
-vn 1.00 0.00 0.06
-vn 0.02 0.65 0.76
-vn 0.85 0.00 0.52
-vn 0.95 0.12 0.30
-vn 0.62 0.00 -0.78
-vn 0.76 -0.16 -0.63
-vn 0.83 0.00 -0.56
-vn 0.82 0.00 -0.57
-vn -0.02 0.66 -0.75
-vn 0.72 0.09 -0.69
-vn 0.96 -0.21 0.19
-vn 0.00 0.99 0.13
-vn -0.00 1.00 -0.10
-vn -0.00 0.99 -0.17
-vn 0.00 0.99 0.10
-vn 0.75 0.00 0.67
-vn 0.54 0.00 -0.84
-vn 0.18 -0.35 -0.92
-vn -0.37 -0.00 -0.93
-vn 0.19 0.02 -0.98
-vn 0.37 0.00 0.93
-vn 0.01 0.00 -1.00
-vn 0.96 0.00 -0.30
-vn -0.03 -1.00 0.01
-vn 0.03 0.04 -1.00
-vn -0.10 0.00 -1.00
-vn -0.07 -0.06 -1.00
-vn -0.31 0.95 0.09
-vn 0.04 -1.00 -0.01
-vn -0.08 0.04 -1.00
-vn 0.04 1.00 -0.01
-vn -0.05 1.00 0.02
-vn -0.12 0.00 -0.99
-vn -0.33 -0.45 -0.83
-vn -0.19 -0.00 0.98
-vn -0.37 0.03 -0.93
-vn 0.19 0.00 -0.98
-vn 0.74 0.00 -0.67
-vn -0.05 1.00 -0.01
-vn -0.82 0.00 -0.57
-vn 0.05 1.00 0.02
-vn 0.74 0.00 0.67
-vn -0.05 1.00 0.01
-vn -0.82 0.00 0.57
-vn 0.05 1.00 -0.02
-# 487 vertex normals
-
-vt 0.10 0.10 0.00
-vt 0.07 0.10 0.00
-vt 0.07 0.01 0.00
-vt 0.10 0.01 0.00
-vt 0.05 0.10 0.00
-vt 0.05 0.01 0.00
-vt 0.02 0.10 0.00
-vt 0.02 0.01 0.00
-vt 0.38 0.10 0.00
-vt 0.35 0.10 0.00
-vt 0.35 0.01 0.00
-vt 0.38 0.01 0.00
-vt 0.32 0.10 0.00
-vt 0.32 0.01 0.00
-vt 0.29 0.10 0.00
-vt 0.29 0.01 0.00
-vt 0.27 0.10 0.00
-vt 0.27 0.01 0.00
-vt 0.24 0.10 0.00
-vt 0.24 0.01 0.00
-vt 0.21 0.10 0.00
-vt 0.21 0.01 0.00
-vt 0.17 0.10 0.00
-vt 0.17 0.01 0.00
-vt 0.13 0.10 0.00
-vt 0.13 0.01 0.00
-vt 0.34 0.56 0.00
-vt 0.37 0.56 0.00
-vt 0.37 0.57 0.00
-vt 0.34 0.57 0.00
-vt 0.30 0.56 0.00
-vt 0.30 0.57 0.00
-vt 0.27 0.56 0.00
-vt 0.27 0.57 0.00
-vt 0.61 0.56 0.00
-vt 0.64 0.56 0.00
-vt 0.64 0.57 0.00
-vt 0.61 0.57 0.00
-vt 0.58 0.56 0.00
-vt 0.58 0.57 0.00
-vt 0.55 0.56 0.00
-vt 0.55 0.57 0.00
-vt 0.52 0.56 0.00
-vt 0.52 0.57 0.00
-vt 0.49 0.56 0.00
-vt 0.49 0.57 0.00
-vt 0.46 0.56 0.00
-vt 0.46 0.57 0.00
-vt 0.43 0.56 0.00
-vt 0.43 0.57 0.00
-vt 0.40 0.56 0.00
-vt 0.40 0.57 0.00
-vt 0.97 0.27 0.00
-vt 0.96 0.28 0.00
-vt 0.94 0.27 0.00
-vt 0.93 0.26 0.00
-vt 0.93 0.25 0.00
-vt 0.93 0.24 0.00
-vt 0.93 0.23 0.00
-vt 0.94 0.23 0.00
-vt 0.94 0.22 0.00
-vt 0.96 0.22 0.00
-vt 0.97 0.23 0.00
-vt 0.97 0.22 0.00
-vt 0.98 0.24 0.00
-vt 0.98 0.23 0.00
-vt 0.99 0.25 0.00
-vt 0.98 0.26 0.00
-vt 0.81 0.06 0.00
-vt 0.81 0.16 0.00
-vt 0.78 0.16 0.00
-vt 0.78 0.06 0.00
-vt 0.76 0.16 0.00
-vt 0.76 0.06 0.00
-vt 0.73 0.16 0.00
-vt 0.73 0.06 0.00
-vt 0.71 0.16 0.00
-vt 0.71 0.06 0.00
-vt 0.69 0.16 0.00
-vt 0.69 0.06 0.00
-vt 0.98 0.06 0.00
-vt 0.98 0.16 0.00
-vt 0.95 0.16 0.00
-vt 0.95 0.06 0.00
-vt 0.93 0.16 0.00
-vt 0.93 0.06 0.00
-vt 0.91 0.16 0.00
-vt 0.91 0.06 0.00
-vt 0.88 0.16 0.00
-vt 0.88 0.06 0.00
-vt 0.86 0.16 0.00
-vt 0.86 0.07 0.00
-vt 0.83 0.16 0.00
-vt 0.83 0.07 0.00
-vt 0.98 0.28 0.00
-vt 0.96 0.29 0.00
-vt 0.99 0.27 0.00
-vt 1.00 0.25 0.00
-vt 0.99 0.23 0.00
-vt 0.98 0.22 0.00
-vt 0.96 0.21 0.00
-vt 0.92 0.23 0.00
-vt 0.92 0.25 0.00
-vt 0.93 0.27 0.00
-vt 0.92 0.27 0.00
-vt 0.94 0.28 0.00
-vt 0.11 0.23 0.00
-vt 0.09 0.22 0.00
-vt 0.10 0.18 0.00
-vt 0.13 0.19 0.00
-vt 0.14 0.24 0.00
-vt 0.15 0.19 0.00
-vt 0.17 0.24 0.00
-vt 0.18 0.20 0.00
-vt 0.21 0.24 0.00
-vt 0.20 0.20 0.00
-vt 0.24 0.24 0.00
-vt 0.23 0.19 0.00
-vt 0.27 0.23 0.00
-vt 0.25 0.19 0.00
-vt 0.30 0.22 0.00
-vt 0.28 0.18 0.00
-vt 0.32 0.21 0.00
-vt 0.30 0.17 0.00
-vt 0.35 0.19 0.00
-vt 0.32 0.16 0.00
-vt 0.03 0.19 0.00
-vt 0.01 0.17 0.00
-vt 0.04 0.14 0.00
-vt 0.06 0.16 0.00
-vt 0.06 0.21 0.00
-vt 0.08 0.17 0.00
-vt 0.12 0.14 0.00
-vt 0.14 0.15 0.00
-vt 0.16 0.15 0.00
-vt 0.18 0.16 0.00
-vt 0.20 0.16 0.00
-vt 0.22 0.15 0.00
-vt 0.24 0.15 0.00
-vt 0.26 0.14 0.00
-vt 0.28 0.13 0.00
-vt 0.31 0.12 0.00
-vt 0.06 0.11 0.00
-vt 0.08 0.12 0.00
-vt 0.10 0.13 0.00
-vt 0.14 0.12 0.00
-vt 0.12 0.12 0.00
-vt 0.12 0.11 0.00
-vt 0.14 0.11 0.00
-vt 0.10 0.12 0.00
-vt 0.10 0.11 0.00
-vt 0.35 0.12 0.00
-vt 0.33 0.12 0.00
-vt 0.33 0.11 0.00
-vt 0.35 0.11 0.00
-vt 0.31 0.11 0.00
-vt 0.29 0.12 0.00
-vt 0.29 0.11 0.00
-vt 0.27 0.12 0.00
-vt 0.27 0.11 0.00
-vt 0.24 0.12 0.00
-vt 0.24 0.11 0.00
-vt 0.22 0.12 0.00
-vt 0.22 0.11 0.00
-vt 0.20 0.12 0.00
-vt 0.20 0.11 0.00
-vt 0.18 0.12 0.00
-vt 0.18 0.11 0.00
-vt 0.16 0.12 0.00
-vt 0.16 0.11 0.00
-vt 0.67 0.06 0.00
-vt 0.64 0.06 0.00
-vt 0.64 0.01 0.00
-vt 0.67 0.01 0.00
-vt 0.60 0.06 0.00
-vt 0.60 0.01 0.00
-vt 0.99 0.06 0.00
-vt 0.96 0.06 0.00
-vt 0.96 0.01 0.00
-vt 0.99 0.01 0.00
-vt 0.93 0.01 0.00
-vt 0.89 0.06 0.00
-vt 0.89 0.01 0.00
-vt 0.86 0.06 0.00
-vt 0.86 0.01 0.00
-vt 0.83 0.06 0.00
-vt 0.83 0.01 0.00
-vt 0.80 0.06 0.00
-vt 0.80 0.01 0.00
-vt 0.77 0.06 0.00
-vt 0.77 0.01 0.00
-vt 0.73 0.01 0.00
-vt 0.70 0.06 0.00
-vt 0.70 0.01 0.00
-vt 0.95 0.87 0.00
-vt 0.93 0.89 0.00
-vt 0.92 0.82 0.00
-vt 0.95 0.82 0.00
-vt 0.92 0.79 0.00
-vt 0.90 0.79 0.00
-vt 0.90 0.77 0.00
-vt 0.92 0.77 0.00
-vt 0.99 0.56 0.00
-vt 0.98 0.56 0.00
-vt 0.98 0.52 0.00
-vt 0.99 0.52 0.00
-vt 0.93 0.78 0.00
-vt 0.96 0.78 0.00
-vt 0.96 0.79 0.00
-vt 0.96 0.81 0.00
-vt 0.94 0.81 0.00
-vt 0.93 0.90 0.00
-vt 0.95 0.88 0.00
-vt 0.96 0.88 0.00
-vt 0.89 0.79 0.00
-vt 0.89 0.81 0.00
-vt 0.90 0.87 0.00
-vt 0.90 0.82 0.00
-vt 0.99 0.60 0.00
-vt 0.98 0.60 0.00
-vt 0.99 0.66 0.00
-vt 0.99 0.59 0.00
-vt 0.99 0.46 0.00
-vt 0.92 0.76 0.00
-vt 0.86 0.76 0.00
-vt 0.86 0.77 0.00
-vt 0.96 0.83 0.00
-vt 0.95 0.83 0.00
-vt 0.98 0.66 0.00
-vt 0.98 0.46 0.00
-vt 0.96 0.76 0.00
-vt 0.92 0.75 0.00
-vt 0.96 0.75 0.00
-vt 0.86 0.75 0.00
-vt 0.93 0.77 0.00
-vt 0.96 0.77 0.00
-vt 0.97 0.76 0.00
-vt 0.97 0.77 0.00
-vt 0.97 0.75 0.00
-vt 0.97 0.79 0.00
-vt 0.98 0.80 0.00
-vt 0.97 0.78 0.00
-vt 0.62 0.90 0.00
-vt 0.63 0.90 0.00
-vt 0.63 0.93 0.00
-vt 0.62 0.93 0.00
-vt 0.66 0.90 0.00
-vt 0.64 0.93 0.00
-vt 0.64 0.98 0.00
-vt 0.66 0.98 0.00
-vt 0.63 0.99 0.00
-vt 0.62 0.99 0.00
-vt 0.60 0.18 0.00
-vt 0.63 0.18 0.00
-vt 0.63 0.20 0.00
-vt 0.60 0.20 0.00
-vt 0.56 0.18 0.00
-vt 0.56 0.20 0.00
-vt 0.53 0.18 0.00
-vt 0.53 0.20 0.00
-vt 0.89 0.18 0.00
-vt 0.92 0.18 0.00
-vt 0.92 0.20 0.00
-vt 0.89 0.20 0.00
-vt 0.86 0.18 0.00
-vt 0.86 0.20 0.00
-vt 0.82 0.18 0.00
-vt 0.82 0.20 0.00
-vt 0.79 0.18 0.00
-vt 0.79 0.20 0.00
-vt 0.76 0.18 0.00
-vt 0.76 0.20 0.00
-vt 0.73 0.18 0.00
-vt 0.73 0.20 0.00
-vt 0.69 0.18 0.00
-vt 0.69 0.20 0.00
-vt 0.66 0.18 0.00
-vt 0.66 0.20 0.00
-vt 0.86 0.88 0.00
-vt 0.83 0.89 0.00
-vt 0.83 0.88 0.00
-vt 0.85 0.88 0.00
-vt 0.88 0.87 0.00
-vt 0.87 0.86 0.00
-vt 0.88 0.84 0.00
-vt 0.88 0.81 0.00
-vt 0.87 0.82 0.00
-vt 0.86 0.79 0.00
-vt 0.85 0.80 0.00
-vt 0.83 0.79 0.00
-vt 0.83 0.80 0.00
-vt 0.81 0.79 0.00
-vt 0.81 0.80 0.00
-vt 0.79 0.81 0.00
-vt 0.79 0.82 0.00
-vt 0.78 0.84 0.00
-vt 0.79 0.84 0.00
-vt 0.79 0.87 0.00
-vt 0.79 0.86 0.00
-vt 0.81 0.88 0.00
-vt 0.60 0.67 0.00
-vt 0.58 0.67 0.00
-vt 0.58 0.66 0.00
-vt 0.61 0.66 0.00
-vt 0.64 0.67 0.00
-vt 0.64 0.66 0.00
-vt 0.68 0.67 0.00
-vt 0.68 0.66 0.00
-vt 0.72 0.67 0.00
-vt 0.72 0.66 0.00
-vt 0.76 0.67 0.00
-vt 0.76 0.66 0.00
-vt 0.79 0.67 0.00
-vt 0.79 0.66 0.00
-vt 0.81 0.67 0.00
-vt 0.81 0.66 0.00
-vt 0.84 0.67 0.00
-vt 0.84 0.66 0.00
-vt 0.88 0.67 0.00
-vt 0.88 0.66 0.00
-vt 0.53 0.67 0.00
-vt 0.49 0.67 0.00
-vt 0.50 0.66 0.00
-vt 0.53 0.66 0.00
-vt 0.56 0.67 0.00
-vt 0.56 0.66 0.00
-vt 0.66 0.16 0.00
-vt 0.63 0.17 0.00
-vt 0.63 0.12 0.00
-vt 0.68 0.14 0.00
-vt 0.68 0.12 0.00
-vt 0.68 0.09 0.00
-vt 0.66 0.07 0.00
-vt 0.63 0.07 0.00
-vt 0.61 0.07 0.00
-vt 0.59 0.09 0.00
-vt 0.59 0.12 0.00
-vt 0.59 0.14 0.00
-vt 0.61 0.16 0.00
-vt 0.60 0.21 0.00
-vt 0.56 0.21 0.00
-vt 0.64 0.68 0.00
-vt 0.60 0.68 0.00
-vt 0.92 0.21 0.00
-vt 0.89 0.21 0.00
-vt 0.72 0.68 0.00
-vt 0.68 0.68 0.00
-vt 0.86 0.21 0.00
-vt 0.82 0.21 0.00
-vt 0.79 0.68 0.00
-vt 0.76 0.68 0.00
-vt 0.79 0.21 0.00
-vt 0.76 0.21 0.00
-vt 0.84 0.68 0.00
-vt 0.81 0.68 0.00
-vt 0.73 0.21 0.00
-vt 0.69 0.21 0.00
-vt 0.53 0.68 0.00
-vt 0.49 0.68 0.00
-vt 0.66 0.21 0.00
-vt 0.63 0.21 0.00
-vt 0.58 0.68 0.00
-vt 0.56 0.68 0.00
-vt 0.24 0.62 0.00
-vt 0.00 0.62 0.00
-vt 0.05 0.71 0.00
-vt 0.19 0.71 0.00
-vt 0.00 0.41 0.00
-vt 0.28 0.41 0.00
-vt 0.24 0.49 0.00
-vt 0.05 0.49 0.00
-vt 0.01 0.52 0.00
-vt 0.29 0.52 0.00
-vt 0.24 0.59 0.00
-vt 0.05 0.59 0.00
-vt 0.38 0.32 0.00
-vt 0.53 0.32 0.00
-vt 0.53 0.42 0.00
-vt 0.38 0.42 0.00
-vt 0.67 0.21 0.00
-vt 0.49 0.21 0.00
-vt 0.49 0.30 0.00
-vt 0.67 0.30 0.00
-vt 0.46 0.89 0.00
-vt 0.27 0.89 0.00
-vt 0.27 0.99 0.00
-vt 0.46 0.99 0.00
-vt 0.62 0.80 0.00
-vt 0.77 0.80 0.00
-vt 0.77 0.88 0.00
-vt 0.62 0.88 0.00
-vt 0.24 0.73 0.00
-vt 0.32 0.73 0.00
-vt 0.31 0.72 0.00
-vt 0.24 0.72 0.00
-vt 0.32 0.63 0.00
-vt 0.31 0.64 0.00
-vt 0.24 0.63 0.00
-vt 0.24 0.64 0.00
-vt 0.19 0.33 0.00
-vt 0.19 0.25 0.00
-vt 0.20 0.27 0.00
-vt 0.20 0.31 0.00
-vt 0.31 0.25 0.00
-vt 0.30 0.27 0.00
-vt 0.31 0.33 0.00
-vt 0.30 0.31 0.00
-vt 0.14 0.26 0.00
-vt 0.14 0.40 0.00
-vt 0.18 0.34 0.00
-vt 0.18 0.26 0.00
-vt 0.36 0.40 0.00
-vt 0.32 0.34 0.00
-vt 0.36 0.26 0.00
-vt 0.32 0.26 0.00
-vt 0.49 0.15 0.00
-vt 0.49 0.25 0.00
-vt 0.36 0.25 0.00
-vt 0.36 0.15 0.00
-vt 0.41 0.01 0.00
-vt 0.58 0.01 0.00
-vt 0.58 0.14 0.00
-vt 0.41 0.14 0.00
-vt 0.58 0.42 0.00
-vt 0.58 0.54 0.00
-vt 0.45 0.53 0.00
-vt 0.45 0.45 0.00
-vt 0.71 0.95 0.00
-vt 0.66 0.89 0.00
-vt 0.14 0.94 0.00
-vt 0.01 0.95 0.00
-vt 0.76 0.89 0.00
-vt 0.32 0.41 0.00
-vt 0.32 0.53 0.00
-vt 0.27 0.95 0.00
-vt 0.80 0.98 0.00
-vt 0.80 0.93 0.00
-vt 0.81 0.93 0.00
-vt 0.81 0.98 0.00
-vt 0.78 0.98 0.00
-vt 0.78 0.93 0.00
-vt 0.77 0.93 0.00
-vt 0.77 0.98 0.00
-vt 0.77 0.99 0.00
-vt 0.78 0.99 0.00
-vt 0.73 0.93 0.00
-vt 0.74 0.93 0.00
-vt 0.74 0.98 0.00
-vt 0.73 0.98 0.00
-vt 0.76 0.98 0.00
-vt 0.86 0.48 0.00
-vt 0.86 0.45 0.00
-vt 0.94 0.45 0.00
-vt 0.94 0.48 0.00
-vt 0.95 0.40 0.00
-vt 0.99 0.40 0.00
-vt 0.99 0.45 0.00
-vt 0.95 0.45 0.00
-vt 0.99 0.35 0.00
-vt 0.90 0.35 0.00
-vt 0.90 0.39 0.00
-vt 0.99 0.39 0.00
-vt 0.68 0.24 0.00
-vt 0.71 0.24 0.00
-vt 0.71 0.62 0.00
-vt 0.68 0.62 0.00
-vt 0.61 0.69 0.00
-vt 0.80 0.69 0.00
-vt 0.80 0.76 0.00
-vt 0.61 0.76 0.00
-vt 0.87 0.95 0.00
-vt 0.86 0.97 0.00
-vt 0.86 0.91 0.00
-vt 0.87 0.91 0.00
-vt 0.90 0.94 0.00
-vt 0.90 0.91 0.00
-vt 0.91 0.91 0.00
-vt 0.91 0.94 0.00
-vt 0.98 0.83 0.00
-vt 0.98 0.76 0.00
-vt 0.89 0.94 0.00
-vt 0.89 0.91 0.00
-vt 0.95 0.93 0.00
-vt 0.97 0.93 0.00
-vt 0.97 0.94 0.00
-vt 0.97 0.97 0.00
-vt 0.97 0.99 0.00
-vt 0.96 0.99 0.00
-vt 0.86 0.98 0.00
-vt 0.87 0.97 0.00
-vt 0.88 0.97 0.00
-vt 0.86 0.99 0.00
-vt 0.90 0.99 0.00
-vt 0.90 0.97 0.00
-vt 0.91 0.99 0.00
-vt 0.93 0.97 0.00
-vt 0.93 0.98 0.00
-vt 0.85 0.95 0.00
-vt 0.85 0.91 0.00
-vt 0.98 0.90 0.00
-vt 0.93 0.93 0.00
-vt 0.84 0.97 0.00
-vt 0.85 0.97 0.00
-vt 0.99 0.78 0.00
-vt 0.99 0.67 0.00
-vt 0.99 0.83 0.00
-vt 0.99 0.89 0.00
-vt 0.99 0.99 0.00
-vt 0.93 0.95 0.00
-vt 0.93 0.96 0.00
-vt 0.90 0.96 0.00
-vt 0.90 0.95 0.00
-vt 0.96 0.95 0.00
-vt 0.96 0.96 0.00
-vt 0.84 0.92 0.00
-vt 0.85 0.92 0.00
-vt 0.98 0.99 0.00
-vt 0.98 0.67 0.00
-vt 0.88 0.92 0.00
-vt 0.97 0.95 0.00
-vt 0.89 0.95 0.00
-vt 0.95 0.92 0.00
-vt 0.97 0.92 0.00
-vt 0.93 0.92 0.00
-vt 0.98 0.95 0.00
-vt 0.98 0.96 0.00
-vt 0.97 0.96 0.00
-vt 0.98 0.94 0.00
-vt 0.89 0.99 0.00
-vt 0.89 0.97 0.00
-vt 0.88 0.96 0.00
-vt 0.88 0.95 0.00
-vt 0.89 0.96 0.00
-vt 0.04 0.35 0.00
-vt 0.04 0.25 0.00
-vt 0.07 0.25 0.00
-vt 0.07 0.36 0.00
-vt 0.13 0.33 0.00
-vt 0.10 0.35 0.00
-vt 0.10 0.25 0.00
-vt 0.13 0.25 0.00
-vt 0.01 0.33 0.00
-vt 0.01 0.25 0.00
-vt 0.93 0.52 0.00
-vt 0.94 0.52 0.00
-vt 0.94 0.58 0.00
-vt 0.93 0.58 0.00
-vt 0.92 0.49 0.00
-vt 0.91 0.49 0.00
-vt 0.91 0.54 0.00
-vt 0.92 0.55 0.00
-vt 0.97 0.52 0.00
-vt 0.95 0.52 0.00
-vt 0.95 0.58 0.00
-vt 0.97 0.58 0.00
-vt 0.94 0.64 0.00
-vt 0.93 0.64 0.00
-vt 0.89 0.58 0.00
-vt 0.89 0.59 0.00
-vt 0.95 0.64 0.00
-vt 0.97 0.64 0.00
-vt 0.94 0.69 0.00
-vt 0.93 0.69 0.00
-vt 0.86 0.59 0.00
-vt 0.86 0.61 0.00
-vt 0.95 0.69 0.00
-vt 0.97 0.69 0.00
-vt 0.83 0.58 0.00
-vt 0.83 0.59 0.00
-vt 0.81 0.54 0.00
-vt 0.80 0.55 0.00
-vt 0.81 0.49 0.00
-vt 0.80 0.49 0.00
-vt 0.82 0.22 0.00
-vt 0.85 0.22 0.00
-vt 0.84 0.39 0.00
-vt 0.81 0.39 0.00
-vt 0.76 0.22 0.00
-vt 0.80 0.22 0.00
-vt 0.79 0.38 0.00
-vt 0.76 0.38 0.00
-vt 0.82 0.52 0.00
-vt 0.85 0.52 0.00
-vt 0.80 0.51 0.00
-vt 0.76 0.53 0.00
-vt 0.18 0.92 0.00
-vt 0.09 0.92 0.00
-vt 0.09 0.93 0.00
-vt 0.18 0.93 0.00
-vt 0.00 0.90 0.00
-vt 0.10 0.89 0.00
-vt 0.10 0.90 0.00
-vt 0.00 0.91 0.00
-vt 0.00 0.92 0.00
-vt 0.00 0.93 0.00
-vt 0.20 0.90 0.00
-vt 0.20 0.91 0.00
-vt 0.20 0.93 0.00
-vt 0.23 0.90 0.00
-vt 0.23 0.93 0.00
-vt 0.26 0.76 0.00
-vt 0.26 0.90 0.00
-vt 0.22 0.84 0.00
-vt 0.22 0.76 0.00
-vt 0.11 0.81 0.00
-vt 0.11 0.87 0.00
-vt 0.02 0.88 0.00
-vt 0.02 0.81 0.00
-vt 0.31 0.84 0.00
-vt 0.31 0.76 0.00
-vt 0.11 0.74 0.00
-vt 0.11 0.80 0.00
-vt 0.01 0.80 0.00
-vt 0.01 0.74 0.00
-vt 0.20 0.81 0.00
-vt 0.20 0.88 0.00
-vt 0.20 0.74 0.00
-vt 0.20 0.80 0.00
-vt 0.36 0.65 0.00
-vt 0.36 0.75 0.00
-vt 0.34 0.75 0.00
-vt 0.33 0.65 0.00
-vt 0.36 0.89 0.00
-vt 0.33 0.87 0.00
-vt 0.45 0.67 0.00
-vt 0.45 0.76 0.00
-vt 0.43 0.76 0.00
-vt 0.42 0.67 0.00
-vt 0.45 0.89 0.00
-vt 0.42 0.89 0.00
-vt 0.41 0.66 0.00
-vt 0.38 0.66 0.00
-vt 0.39 0.77 0.00
-vt 0.41 0.77 0.00
-vt 0.38 0.88 0.00
-vt 0.41 0.88 0.00
-vt 0.72 0.62 0.00
-vt 0.72 0.52 0.00
-vt 0.73 0.52 0.00
-vt 0.73 0.62 0.00
-vt 0.74 0.62 0.00
-vt 0.74 0.43 0.00
-vt 0.73 0.43 0.00
-vt 0.59 0.58 0.00
-vt 0.64 0.58 0.00
-vt 0.64 0.63 0.00
-vt 0.59 0.63 0.00
-vt 0.75 0.42 0.00
-vt 0.73 0.42 0.00
-vt 0.73 0.36 0.00
-vt 0.75 0.36 0.00
-vt 0.92 0.71 0.00
-vt 0.97 0.71 0.00
-vt 0.92 0.73 0.00
-vt 0.73 0.29 0.00
-vt 0.73 0.24 0.00
-vt 0.75 0.24 0.00
-vt 0.75 0.29 0.00
-vt 0.86 0.72 0.00
-vt 0.86 0.73 0.00
-vt 0.81 0.72 0.00
-vt 0.81 0.70 0.00
-vt 0.73 0.33 0.00
-vt 0.75 0.33 0.00
-vt 0.89 0.74 0.00
-vt 0.89 0.72 0.00
-vt 0.83 0.62 0.00
-vt 0.92 0.62 0.00
-vt 0.92 0.61 0.00
-vt 0.83 0.61 0.00
-vt 0.83 0.63 0.00
-vt 0.92 0.63 0.00
-vt 0.71 0.65 0.00
-vt 0.71 0.66 0.00
-vt 0.75 0.66 0.00
-vt 0.75 0.65 0.00
-vt 0.71 0.64 0.00
-vt 0.75 0.64 0.00
-vt 0.58 0.64 0.00
-vt 0.62 0.66 0.00
-vt 0.62 0.64 0.00
-vt 0.92 0.64 0.00
-vt 0.83 0.64 0.00
-vt 0.75 0.61 0.00
-vt 0.75 0.62 0.00
-vt 0.75 0.63 0.00
-vt 0.67 0.66 0.00
-vt 0.67 0.64 0.00
-vt 0.41 0.65 0.00
-vt 0.41 0.57 0.00
-vt 0.44 0.57 0.00
-vt 0.44 0.66 0.00
-vt 0.48 0.65 0.00
-vt 0.48 0.57 0.00
-# 694 texture coords
-
-o castle
-g castle
-f 1/1/1 2/2/2 3/3/2
-f 3/3/2 4/4/1 1/1/1
-f 2/2/2 5/5/3 6/6/3
-f 6/6/3 3/3/2 2/2/2
-f 5/5/3 7/7/4 8/8/4
-f 8/8/4 6/6/3 5/5/3
-f 7/9/4 9/10/5 10/11/5
-f 10/11/5 8/12/4 7/9/4
-f 9/10/5 11/13/6 12/14/6
-f 12/14/6 10/11/5 9/10/5
-f 11/13/6 13/15/7 14/16/7
-f 14/16/7 12/14/6 11/13/6
-f 13/15/7 15/17/8 16/18/8
-f 16/18/8 14/16/7 13/15/7
-f 15/17/8 17/19/9 18/20/9
-f 18/20/9 16/18/8 15/17/8
-f 17/19/9 19/21/10 20/22/10
-f 20/22/10 18/20/9 17/19/9
-f 19/21/10 21/23/11 22/24/11
-f 22/24/11 20/22/10 19/21/10
-f 21/23/11 23/25/12 24/26/12
-f 24/26/12 22/24/11 21/23/11
-f 23/25/12 1/1/1 4/4/1
-f 4/4/1 24/26/12 23/25/12
-f 25/27/13 26/28/13 27/29/13
-f 27/29/13 28/30/13 25/27/13
-f 29/31/14 25/27/14 28/30/14
-f 28/30/14 30/32/14 29/31/14
-f 31/33/15 29/31/15 30/32/15
-f 30/32/15 32/34/15 31/33/15
-f 33/35/16 31/36/16 32/37/16
-f 32/37/16 34/38/16 33/35/16
-f 35/39/17 33/35/17 34/38/17
-f 34/38/17 36/40/17 35/39/17
-f 37/41/18 35/39/18 36/40/18
-f 36/40/18 38/42/18 37/41/18
-f 39/43/19 37/41/19 38/42/19
-f 38/42/19 40/44/19 39/43/19
-f 41/45/20 39/43/20 40/44/20
-f 40/44/20 42/46/20 41/45/20
-f 43/47/21 41/45/21 42/46/21
-f 42/46/21 44/48/21 43/47/21
-f 45/49/22 43/47/22 44/48/22
-f 44/48/22 46/50/22 45/49/22
-f 47/51/23 45/49/23 46/50/23
-f 46/50/23 48/52/23 47/51/23
-f 26/28/24 47/51/25 48/52/25
-f 48/52/25 27/29/24 26/28/24
-f 2/53/26 1/54/26 26/54/26
-f 26/54/26 25/53/26 2/53/26
-f 1/54/26 23/55/26 47/55/26
-f 47/55/26 26/54/26 1/54/26
-f 23/55/26 21/56/26 45/56/26
-f 45/56/26 47/55/26 23/55/26
-f 21/56/26 19/57/26 43/57/26
-f 43/57/26 45/56/26 21/56/26
-f 19/57/26 17/58/26 41/59/26
-f 41/59/26 43/57/26 19/57/26
-f 17/58/26 15/60/26 39/61/26
-f 39/61/26 41/59/26 17/58/26
-f 15/60/26 13/62/26 37/62/26
-f 37/62/26 39/61/26 15/60/26
-f 13/62/26 11/63/26 35/64/26
-f 35/64/26 37/62/26 13/62/26
-f 11/63/26 9/65/26 33/66/26
-f 33/66/26 35/64/26 11/63/26
-f 9/65/26 7/67/26 31/67/26
-f 31/67/26 33/66/26 9/65/26
-f 7/67/26 5/68/26 29/68/26
-f 29/68/26 31/67/26 7/67/26
-f 5/68/26 2/53/26 25/53/26
-f 25/53/26 29/68/26 5/68/26
-f 49/54/27 50/53/27 28/53/27
-f 28/53/27 27/54/27 49/54/27
-f 50/53/27 51/68/27 30/68/27
-f 30/68/27 28/53/27 50/53/27
-f 51/68/27 52/67/27 32/67/27
-f 32/67/27 30/68/27 51/68/27
-f 52/67/27 53/65/27 34/66/27
-f 34/66/27 32/67/27 52/67/27
-f 53/65/27 54/63/27 36/64/27
-f 36/64/27 34/66/27 53/65/27
-f 54/63/27 55/62/27 38/62/27
-f 38/62/27 36/64/27 54/63/27
-f 55/62/27 56/60/27 40/61/27
-f 40/61/27 38/62/27 55/62/27
-f 56/60/27 57/58/27 42/59/27
-f 42/59/27 40/61/27 56/60/27
-f 57/58/27 58/57/27 44/57/27
-f 44/57/27 42/59/27 57/58/27
-f 58/57/27 59/56/27 46/56/27
-f 46/56/27 44/57/27 58/57/27
-f 59/56/27 60/55/27 48/55/27
-f 48/55/27 46/56/27 59/56/27
-f 60/55/27 49/54/27 27/54/27
-f 27/54/27 48/55/27 60/55/27
-f 49/69/1 61/70/1 62/71/2
-f 62/71/2 50/72/2 49/69/1
-f 50/72/2 62/71/2 63/73/14
-f 63/73/14 51/74/14 50/72/2
-f 51/74/15 63/73/15 64/75/15
-f 64/75/15 52/76/15 51/74/15
-f 52/76/16 64/75/16 65/77/5
-f 65/77/5 53/78/5 52/76/16
-f 53/78/5 65/77/5 66/79/6
-f 66/79/6 54/80/6 53/78/5
-f 54/81/6 66/82/6 67/83/7
-f 67/83/7 55/84/7 54/81/6
-f 55/84/7 67/83/7 68/85/8
-f 68/85/8 56/86/8 55/84/7
-f 56/86/8 68/85/8 69/87/9
-f 69/87/9 57/88/9 56/86/8
-f 57/88/9 69/87/9 70/89/10
-f 70/89/10 58/90/10 57/88/9
-f 58/90/10 70/89/10 71/91/11
-f 71/91/11 59/92/11 58/90/10
-f 59/92/11 71/91/11 72/93/12
-f 72/93/12 60/94/12 59/92/11
-f 60/94/12 72/93/12 61/70/1
-f 61/70/1 49/69/1 60/94/12
-f 73/95/26 74/96/26 75/96/26
-f 75/96/26 76/95/26 73/95/26
-f 77/97/26 73/95/26 76/95/26
-f 76/95/26 78/97/26 77/97/26
-f 79/67/26 77/97/26 78/97/26
-f 78/97/26 80/98/26 79/67/26
-f 81/99/26 79/67/26 80/98/26
-f 80/98/26 82/99/26 81/99/26
-f 83/100/26 81/99/26 82/99/26
-f 82/99/26 84/100/26 83/100/26
-f 85/101/26 83/100/26 84/100/26
-f 84/100/26 86/101/26 85/101/26
-f 87/61/26 85/101/26 86/101/26
-f 86/101/26 88/61/26 87/61/26
-f 89/59/26 87/61/26 88/61/26
-f 88/61/26 90/102/26 89/59/26
-f 91/103/26 89/59/26 90/102/26
-f 90/102/26 92/103/26 91/103/26
-f 93/104/26 91/103/26 92/103/26
-f 92/103/26 94/105/26 93/104/26
-f 95/106/26 93/104/26 94/105/26
-f 94/105/26 96/106/26 95/106/26
-f 74/96/26 95/106/26 96/106/26
-f 96/106/26 75/96/26 74/96/26
-f 76/107/28 75/108/28 97/109/28
-f 97/109/28 98/110/28 76/107/28
-f 78/111/29 76/107/29 98/110/29
-f 98/110/29 99/112/29 78/111/29
-f 80/113/30 78/111/30 99/112/30
-f 99/112/30 100/114/30 80/113/30
-f 82/115/31 80/113/31 100/114/31
-f 100/114/31 101/116/31 82/115/31
-f 84/117/32 82/115/32 101/116/32
-f 101/116/32 102/118/32 84/117/32
-f 86/119/33 84/117/33 102/118/33
-f 102/118/33 103/120/33 86/119/33
-f 88/121/34 86/119/34 103/120/34
-f 103/120/34 104/122/34 88/121/34
-f 90/123/35 88/121/35 104/122/35
-f 104/122/35 105/124/35 90/123/35
-f 92/125/36 90/123/36 105/124/36
-f 105/124/36 106/126/36 92/125/36
-f 94/127/37 92/128/37 106/129/37
-f 106/129/37 107/130/37 94/127/37
-f 96/131/38 94/127/38 107/130/38
-f 107/130/38 108/132/38 96/131/38
-f 75/108/39 96/131/39 108/132/39
-f 108/132/39 97/109/39 75/108/39
-f 98/110/40 97/109/40 109/133/40
-f 109/133/40 110/134/40 98/110/40
-f 99/112/41 98/110/41 110/134/41
-f 110/134/41 111/135/41 99/112/41
-f 100/114/42 99/112/42 111/135/42
-f 111/135/42 112/136/43 100/114/42
-f 101/116/44 100/114/44 112/136/44
-f 112/136/44 113/137/44 101/116/44
-f 102/118/45 101/116/45 113/137/45
-f 113/137/45 114/138/45 102/118/45
-f 103/120/46 102/118/46 114/138/46
-f 114/138/46 115/139/46 103/120/46
-f 104/122/47 103/120/48 115/139/48
-f 115/139/48 116/140/48 104/122/47
-f 105/124/49 104/122/49 116/140/49
-f 116/140/49 117/141/49 105/124/49
-f 106/126/50 105/124/50 117/141/50
-f 117/141/50 118/142/50 106/126/50
-f 107/130/51 106/129/51 118/143/52
-f 118/143/52 119/144/51 107/130/51
-f 108/132/53 107/130/53 119/144/53
-f 119/144/53 120/145/53 108/132/53
-f 97/109/54 108/132/55 120/145/54
-f 120/145/54 109/133/54 97/109/54
-f 121/146/56 122/147/56 62/148/56
-f 62/148/56 61/149/56 121/146/56
-f 122/147/57 123/150/58 63/151/58
-f 63/151/58 62/148/57 122/147/57
-f 123/152/59 124/153/59 64/154/59
-f 64/154/59 63/155/59 123/152/59
-f 124/153/60 125/142/60 65/156/60
-f 65/156/60 64/154/60 124/153/60
-f 125/142/61 126/157/62 66/158/61
-f 66/158/61 65/156/62 125/142/61
-f 126/157/63 127/159/63 67/160/63
-f 67/160/63 66/158/63 126/157/63
-f 127/159/64 128/161/64 68/162/64
-f 68/162/64 67/160/64 127/159/64
-f 128/161/65 129/163/66 69/164/66
-f 69/164/66 68/162/66 128/161/65
-f 129/163/67 130/165/67 70/166/67
-f 70/166/67 69/164/67 129/163/67
-f 130/165/68 131/167/68 71/168/68
-f 71/168/68 70/166/68 130/165/68
-f 131/167/69 132/169/70 72/170/70
-f 72/170/70 71/168/70 131/167/69
-f 132/169/71 121/146/71 61/149/71
-f 61/149/71 72/170/71 132/169/71
-f 74/171/1 73/172/2 122/173/2
-f 122/173/2 121/174/1 74/171/1
-f 73/172/2 77/175/3 123/176/3
-f 123/176/3 122/173/2 73/172/2
-f 77/177/3 79/178/4 124/179/4
-f 124/179/4 123/180/3 77/177/3
-f 79/178/4 81/86/5 125/181/5
-f 125/181/5 124/179/4 79/178/4
-f 81/86/5 83/182/6 126/183/6
-f 126/183/6 125/181/5 81/86/5
-f 83/182/6 85/184/7 127/185/7
-f 127/185/7 126/183/6 83/182/6
-f 85/184/7 87/186/8 128/187/8
-f 128/187/8 127/185/7 85/184/7
-f 87/186/8 89/188/9 129/189/9
-f 129/189/9 128/187/8 87/186/8
-f 89/188/9 91/190/10 130/191/10
-f 130/191/10 129/189/9 89/188/9
-f 91/190/10 93/76/11 131/192/11
-f 131/192/11 130/191/10 91/190/10
-f 93/76/11 95/193/12 132/194/12
-f 132/194/12 131/192/11 93/76/11
-f 95/193/12 74/171/1 121/174/1
-f 121/174/1 132/194/12 95/193/12
-f 133/195/72 134/196/72 135/197/72
-f 135/197/72 136/198/72 133/195/72
-f 137/199/73 138/200/73 139/201/73
-f 139/201/73 140/202/73 137/199/73
-f 141/203/74 142/204/74 143/205/74
-f 143/205/74 144/206/74 141/203/74
-f 145/202/75 146/201/75 147/200/75
-f 147/200/75 148/199/75 145/202/75
-f 149/207/76 150/207/76 151/208/76
-f 151/208/76 152/209/76 149/207/76
-f 153/209/77 154/210/77 155/211/77
-f 142/212/78 156/196/78 157/213/78
-f 157/213/78 143/214/78 142/212/78
-f 158/210/79 159/209/79 160/211/79
-f 161/215/80 162/216/80 160/211/80
-f 160/211/80 159/209/80 161/215/80
-f 163/217/81 164/218/81 135/197/81
-f 135/197/81 134/196/81 163/217/81
-f 165/219/82 166/220/82 142/204/82
-f 142/204/82 141/203/82 165/219/82
-f 167/209/83 168/208/83 150/207/83
-f 150/207/83 149/207/83 167/209/83
-f 142/212/84 166/214/84 169/213/84
-f 169/213/84 156/196/84 142/212/84
-f 161/215/85 153/209/85 155/211/85
-f 155/211/85 162/216/85 161/215/85
-f 170/221/75 157/222/75 133/222/75
-f 133/222/75 136/221/75 170/221/75
-f 157/222/86 156/203/86 134/203/86
-f 134/203/86 133/222/86 157/222/86
-f 156/203/87 169/206/87 163/206/87
-f 163/206/87 134/203/87 156/203/87
-f 169/206/73 171/223/73 164/223/73
-f 164/223/73 163/206/73 169/206/73
-f 171/224/88 172/225/88 135/226/88
-f 135/226/88 164/224/88 171/224/88
-f 172/225/89 170/224/89 136/224/89
-f 136/224/89 135/226/89 172/225/89
-f 166/214/79 173/227/79 171/228/79
-f 171/228/79 169/213/79 166/214/79
-f 173/229/75 166/220/75 165/219/75
-f 165/219/75 174/221/75 173/229/75
-f 144/206/73 143/205/73 175/230/73
-f 175/230/73 176/223/73 144/206/73
-f 175/227/77 143/214/77 157/213/77
-f 157/213/77 170/228/77 175/227/77
-f 139/201/73 138/200/73 177/199/73
-f 177/199/73 178/202/73 139/201/73
-f 175/231/90 170/224/90 155/232/90
-f 155/232/90 154/233/91 175/231/90
-f 170/224/89 172/225/89 162/234/89
-f 162/234/89 155/232/89 170/224/89
-f 172/225/88 171/224/88 160/232/88
-f 160/232/88 162/234/88 172/225/88
-f 171/224/92 173/231/92 158/233/92
-f 158/233/92 160/232/92 171/224/92
-f 147/200/75 146/201/75 179/202/75
-f 179/202/75 180/199/75 147/200/75
-f 151/208/76 150/207/76 161/235/76
-f 161/235/76 159/236/76 151/208/76
-f 150/207/83 168/208/83 153/236/83
-f 153/236/83 161/235/83 150/207/83
-f 176/236/27 175/231/27 138/237/27
-f 138/237/27 137/238/27 176/236/27
-f 175/231/27 154/233/27 177/239/27
-f 177/239/27 138/237/27 175/231/27
-f 154/210/93 153/209/93 178/240/94
-f 178/240/94 177/241/94 154/210/93
-f 153/236/26 168/208/26 139/242/26
-f 139/242/26 178/238/26 153/236/26
-f 168/208/26 167/209/26 140/240/26
-f 140/240/26 139/242/26 168/208/26
-f 152/209/26 151/208/26 146/242/26
-f 146/242/26 145/240/26 152/209/26
-f 151/208/26 159/236/26 179/238/26
-f 179/238/26 146/242/26 151/208/26
-f 159/209/95 158/210/95 180/241/95
-f 180/241/95 179/240/95 159/209/95
-f 158/233/27 173/231/27 147/237/27
-f 147/237/27 180/239/27 158/233/27
-f 173/231/27 174/236/27 148/238/27
-f 148/238/27 147/237/27 173/231/27
-f 181/195/96 182/196/96 183/197/96
-f 183/197/96 184/198/96 181/195/96
-f 185/199/97 186/200/98 187/201/98
-f 187/201/98 188/202/97 185/199/97
-f 189/203/99 190/204/99 191/205/99
-f 191/205/99 192/206/99 189/203/99
-f 193/202/100 194/201/101 195/200/101
-f 195/200/101 196/199/100 193/202/100
-f 197/207/102 198/207/102 199/208/102
-f 199/208/102 200/209/102 197/207/102
-f 201/209/103 202/210/103 203/211/103
-f 190/212/104 204/196/104 205/213/104
-f 205/213/104 191/214/104 190/212/104
-f 206/210/105 207/209/105 208/211/105
-f 209/215/106 210/216/106 208/211/106
-f 208/211/106 207/209/106 209/215/106
-f 211/217/107 212/218/107 183/197/107
-f 183/197/107 182/196/107 211/217/107
-f 213/219/108 214/220/108 190/204/108
-f 190/204/108 189/203/108 213/219/108
-f 215/209/109 216/208/109 198/207/109
-f 198/207/109 197/207/109 215/209/109
-f 190/212/110 214/214/110 217/213/110
-f 217/213/110 204/196/110 190/212/110
-f 209/215/111 201/209/111 203/211/111
-f 203/211/111 210/216/111 209/215/111
-f 218/221/100 205/222/100 181/222/101
-f 181/222/101 184/221/101 218/221/100
-f 205/222/112 204/203/112 182/203/112
-f 182/203/112 181/222/112 205/222/112
-f 204/203/113 217/206/113 211/206/113
-f 211/206/113 182/203/113 204/203/113
-f 217/206/98 219/223/98 212/223/98
-f 212/223/98 211/206/98 217/206/98
-f 219/224/114 220/225/114 183/226/114
-f 183/226/114 212/224/114 219/224/114
-f 220/225/115 218/224/115 184/224/115
-f 184/224/115 183/226/115 220/225/115
-f 214/214/105 221/227/105 219/228/105
-f 219/228/105 217/213/105 214/214/105
-f 221/229/100 214/220/100 213/219/100
-f 213/219/100 222/221/100 221/229/100
-f 192/206/98 191/205/98 223/230/98
-f 223/230/98 224/223/98 192/206/98
-f 223/227/103 191/214/103 205/213/103
-f 205/213/103 218/228/103 223/227/103
-f 187/201/98 186/200/98 225/199/97
-f 225/199/97 226/202/97 187/201/98
-f 223/231/116 218/224/116 203/232/116
-f 203/232/116 202/233/116 223/231/116
-f 218/224/115 220/225/115 210/234/115
-f 210/234/115 203/232/115 218/224/115
-f 220/225/114 219/224/114 208/232/114
-f 208/232/114 210/234/114 220/225/114
-f 219/224/117 221/231/117 206/233/117
-f 206/233/117 208/232/117 219/224/117
-f 195/200/101 194/201/101 227/202/100
-f 227/202/100 228/199/100 195/200/101
-f 199/208/102 198/207/102 209/235/102
-f 209/235/102 207/236/102 199/208/102
-f 198/207/109 216/208/109 201/236/109
-f 201/236/109 209/235/109 198/207/109
-f 224/236/27 223/231/27 186/237/27
-f 186/237/27 185/238/27 224/236/27
-f 223/231/27 202/233/27 225/239/27
-f 225/239/27 186/237/27 223/231/27
-f 202/210/118 201/209/118 226/240/118
-f 226/240/118 225/241/118 202/210/118
-f 201/236/26 216/208/26 187/242/26
-f 187/242/26 226/238/26 201/236/26
-f 216/208/26 215/209/26 188/240/26
-f 188/240/26 187/242/26 216/208/26
-f 200/209/26 199/208/26 194/242/26
-f 194/242/26 193/240/26 200/209/26
-f 199/208/26 207/236/26 227/238/26
-f 227/238/26 194/242/26 199/208/26
-f 207/209/119 206/210/119 228/241/119
-f 228/241/119 227/240/119 207/209/119
-f 206/233/27 221/231/27 195/237/27
-f 195/237/27 228/239/27 206/233/27
-f 221/231/27 222/236/27 196/238/27
-f 196/238/27 195/237/27 221/231/27
-f 229/243/120 230/244/120 231/245/120
-f 231/245/120 232/246/120 229/243/120
-f 229/247/121 232/248/121 233/249/121
-f 233/249/121 234/250/121 229/247/121
-f 232/246/122 231/245/122 235/251/122
-f 235/251/122 233/252/122 232/246/122
-f 231/248/123 230/247/123 236/250/123
-f 236/250/123 235/249/123 231/248/123
-f 237/195/124 238/196/124 239/197/124
-f 239/197/124 240/198/124 237/195/124
-f 241/199/125 242/200/98 243/201/98
-f 243/201/98 244/202/125 241/199/125
-f 245/203/99 246/204/99 247/205/99
-f 247/205/99 248/206/99 245/203/99
-f 249/202/100 250/201/101 251/200/101
-f 251/200/101 252/199/100 249/202/100
-f 253/207/102 254/207/102 255/208/102
-f 255/208/102 256/209/102 253/207/102
-f 257/209/103 258/210/103 259/211/103
-f 246/212/104 260/196/104 261/213/104
-f 261/213/104 247/214/104 246/212/104
-f 262/210/105 263/209/105 264/211/105
-f 265/215/106 266/216/106 264/211/106
-f 264/211/106 263/209/106 265/215/106
-f 267/217/107 268/218/107 239/197/107
-f 239/197/107 238/196/107 267/217/107
-f 269/219/126 270/220/126 246/204/108
-f 246/204/108 245/203/108 269/219/126
-f 271/209/109 272/208/109 254/207/109
-f 254/207/109 253/207/109 271/209/109
-f 246/212/110 270/214/110 273/213/110
-f 273/213/110 260/196/110 246/212/110
-f 265/215/111 257/209/111 259/211/111
-f 259/211/111 266/216/111 265/215/111
-f 274/221/100 261/222/100 237/222/100
-f 237/222/100 240/221/100 274/221/100
-f 261/222/112 260/203/112 238/203/112
-f 238/203/112 237/222/112 261/222/112
-f 260/203/113 273/206/113 267/206/113
-f 267/206/113 238/203/113 260/203/113
-f 273/206/98 275/223/98 268/223/98
-f 268/223/98 267/206/98 273/206/98
-f 275/224/114 276/225/114 239/226/114
-f 239/226/114 268/224/114 275/224/114
-f 276/225/115 274/224/115 240/224/115
-f 240/224/115 239/226/115 276/225/115
-f 270/214/105 277/227/105 275/228/105
-f 275/228/105 273/213/105 270/214/105
-f 277/229/101 270/220/101 269/219/101
-f 269/219/101 278/221/101 277/229/101
-f 248/206/98 247/205/97 279/230/97
-f 279/230/97 280/223/98 248/206/98
-f 279/227/103 247/214/103 261/213/103
-f 261/213/103 274/228/103 279/227/103
-f 243/201/98 242/200/98 281/199/97
-f 281/199/97 282/202/97 243/201/98
-f 279/231/116 274/224/116 259/232/116
-f 259/232/116 258/233/116 279/231/116
-f 274/224/115 276/225/115 266/234/115
-f 266/234/115 259/232/115 274/224/115
-f 276/225/114 275/224/114 264/232/114
-f 264/232/114 266/234/114 276/225/114
-f 275/224/117 277/231/117 262/233/117
-f 262/233/117 264/232/117 275/224/117
-f 251/200/101 250/201/101 283/202/100
-f 283/202/100 284/199/100 251/200/101
-f 255/208/102 254/207/102 265/235/102
-f 265/235/102 263/236/102 255/208/102
-f 254/207/109 272/208/109 257/236/109
-f 257/236/109 265/235/109 254/207/109
-f 280/236/27 279/231/27 242/237/27
-f 242/237/27 241/238/27 280/236/27
-f 279/231/27 258/233/27 281/239/27
-f 281/239/27 242/237/27 279/231/27
-f 258/210/118 257/209/118 282/240/118
-f 282/240/118 281/241/118 258/210/118
-f 257/236/26 272/208/26 243/242/26
-f 243/242/26 282/238/26 257/236/26
-f 272/208/26 271/209/26 244/240/26
-f 244/240/26 243/242/26 272/208/26
-f 256/209/26 255/208/26 250/242/26
-f 250/242/26 249/240/26 256/209/26
-f 255/208/26 263/236/26 283/238/26
-f 283/238/26 250/242/26 255/208/26
-f 263/209/119 262/210/119 284/241/119
-f 284/241/119 283/240/119 263/209/119
-f 262/233/27 277/231/27 251/237/27
-f 251/237/27 284/239/27 262/233/27
-f 277/231/27 278/236/27 252/238/27
-f 252/238/27 251/237/27 277/231/27
-f 285/243/127 286/244/127 287/245/127
-f 287/245/127 288/246/127 285/243/127
-f 285/247/128 288/248/128 289/249/128
-f 289/249/128 290/250/128 285/247/128
-f 288/246/129 287/245/129 291/251/129
-f 291/251/129 289/252/129 288/246/129
-f 287/248/130 286/247/130 292/250/130
-f 292/250/130 291/249/130 287/248/130
-f 293/195/131 294/196/131 295/197/131
-f 295/197/131 296/198/131 293/195/131
-f 297/199/75 298/200/75 299/201/75
-f 299/201/75 300/202/75 297/199/75
-f 301/203/132 302/204/132 303/205/132
-f 303/205/132 304/206/132 301/203/132
-f 305/202/73 306/201/73 307/200/73
-f 307/200/73 308/199/73 305/202/73
-f 309/207/83 310/207/83 311/208/83
-f 311/208/83 312/209/83 309/207/83
-f 313/209/133 314/210/133 315/211/133
-f 302/212/134 316/196/134 317/213/134
-f 317/213/134 303/214/134 302/212/134
-f 318/210/135 319/209/135 320/211/135
-f 321/215/136 322/216/136 320/211/136
-f 320/211/136 319/209/136 321/215/136
-f 323/217/137 324/218/137 295/197/138
-f 295/197/138 294/196/138 323/217/137
-f 325/219/139 326/220/139 302/204/139
-f 302/204/139 301/203/139 325/219/139
-f 327/209/76 328/208/76 310/207/76
-f 310/207/76 309/207/76 327/209/76
-f 302/212/140 326/214/140 329/213/140
-f 329/213/140 316/196/140 302/212/140
-f 321/215/141 313/209/141 315/211/141
-f 315/211/141 322/216/141 321/215/141
-f 330/221/73 317/222/73 293/222/73
-f 293/222/73 296/221/73 330/221/73
-f 317/222/87 316/203/87 294/203/87
-f 294/203/87 293/222/87 317/222/87
-f 316/203/86 329/206/86 323/206/86
-f 323/206/86 294/203/86 316/203/86
-f 329/206/75 331/223/75 324/223/75
-f 324/223/75 323/206/75 329/206/75
-f 331/224/142 332/225/142 295/226/142
-f 295/226/142 324/224/142 331/224/142
-f 332/225/143 330/224/143 296/224/143
-f 296/224/143 295/226/143 332/225/143
-f 326/214/135 333/227/135 331/228/135
-f 331/228/135 329/213/135 326/214/135
-f 333/229/73 326/220/73 325/219/73
-f 325/219/73 334/221/73 333/229/73
-f 304/206/75 303/205/75 335/230/75
-f 335/230/75 336/223/75 304/206/75
-f 335/227/133 303/214/133 317/213/133
-f 317/213/133 330/228/133 335/227/133
-f 299/201/75 298/200/75 337/199/75
-f 337/199/75 338/202/75 299/201/75
-f 335/231/144 330/224/144 315/232/144
-f 315/232/144 314/233/144 335/231/144
-f 330/224/143 332/225/143 322/234/143
-f 322/234/143 315/232/143 330/224/143
-f 332/225/142 331/224/142 320/232/142
-f 320/232/142 322/234/142 332/225/142
-f 331/224/145 333/231/145 318/233/145
-f 318/233/145 320/232/145 331/224/145
-f 307/200/73 306/201/73 339/202/73
-f 339/202/73 340/199/73 307/200/73
-f 311/208/83 310/207/83 321/235/83
-f 321/235/83 319/236/83 311/208/83
-f 310/207/76 328/208/76 313/236/76
-f 313/236/76 321/235/76 310/207/76
-f 336/236/27 335/231/27 298/237/27
-f 298/237/27 297/238/27 336/236/27
-f 335/231/27 314/233/27 337/239/27
-f 337/239/27 298/237/27 335/231/27
-f 314/210/146 313/209/146 338/240/146
-f 338/240/146 337/241/146 314/210/146
-f 313/236/26 328/208/26 299/242/26
-f 299/242/26 338/238/26 313/236/26
-f 328/208/26 327/209/26 300/240/26
-f 300/240/26 299/242/26 328/208/26
-f 312/209/26 311/208/26 306/242/26
-f 306/242/26 305/240/26 312/209/26
-f 311/208/26 319/236/26 339/238/26
-f 339/238/26 306/242/26 311/208/26
-f 319/209/147 318/210/147 340/241/147
-f 340/241/147 339/240/147 319/209/147
-f 318/233/27 333/231/27 307/237/27
-f 307/237/27 340/239/27 318/233/27
-f 333/231/27 334/236/27 308/238/27
-f 308/238/27 307/237/27 333/231/27
-f 341/243/148 342/244/148 343/245/148
-f 343/245/148 344/246/148 341/243/148
-f 341/247/1 344/248/1 345/249/1
-f 345/249/1 346/250/1 341/247/1
-f 344/246/149 343/245/149 347/251/149
-f 347/251/149 345/252/149 344/246/149
-f 343/248/7 342/247/7 348/250/7
-f 348/250/7 347/249/7 343/248/7
-f 349/243/150 350/244/150 351/245/150
-f 351/245/150 352/246/150 349/243/150
-f 349/247/151 352/248/151 353/249/151
-f 353/249/151 354/250/151 349/247/151
-f 352/246/152 351/245/152 355/251/152
-f 355/251/152 353/252/152 352/246/152
-f 351/248/153 350/247/153 356/250/153
-f 356/250/153 355/249/153 351/248/153
-f 357/243/154 358/244/154 359/245/154
-f 359/245/154 360/246/154 357/243/154
-f 357/247/7 360/248/7 361/249/7
-f 361/249/7 362/250/7 357/247/7
-f 360/246/155 359/245/155 363/251/155
-f 363/251/155 361/252/155 360/246/155
-f 359/248/1 358/247/1 364/250/1
-f 364/250/1 363/249/1 359/248/1
-f 365/243/156 366/244/156 367/245/156
-f 367/245/156 368/246/156 365/243/156
-f 365/247/157 368/248/157 369/249/157
-f 369/249/157 370/250/157 365/247/157
-f 368/246/158 367/245/158 371/251/158
-f 371/251/158 369/252/158 368/246/158
-f 367/248/159 366/247/159 372/250/159
-f 372/250/159 371/249/159 367/248/159
-f 373/243/160 374/244/160 375/245/160
-f 375/245/160 376/246/160 373/243/160
-f 373/247/161 376/248/161 377/249/161
-f 377/249/161 378/250/161 373/247/161
-f 376/246/162 375/245/162 379/251/162
-f 379/251/162 377/252/162 376/246/162
-f 375/248/163 374/247/163 380/250/163
-f 380/250/163 379/249/163 375/248/163
-f 381/195/131 382/196/131 383/197/131
-f 383/197/131 384/198/131 381/195/131
-f 385/199/75 386/200/75 387/201/75
-f 387/201/75 388/202/75 385/199/75
-f 389/203/132 390/204/132 391/205/132
-f 391/205/132 392/206/132 389/203/132
-f 393/202/73 394/201/73 395/200/73
-f 395/200/73 396/199/73 393/202/73
-f 397/207/83 398/207/83 399/208/83
-f 399/208/83 400/209/83 397/207/83
-f 401/209/133 402/210/133 403/211/133
-f 390/212/134 404/196/134 405/213/134
-f 405/213/134 391/214/134 390/212/134
-f 406/210/135 407/209/135 408/211/135
-f 409/215/136 410/216/136 408/211/136
-f 408/211/136 407/209/136 409/215/136
-f 411/217/137 412/218/137 383/197/138
-f 383/197/138 382/196/138 411/217/137
-f 413/219/139 414/220/139 390/204/139
-f 390/204/139 389/203/139 413/219/139
-f 415/209/76 416/208/76 398/207/76
-f 398/207/76 397/207/76 415/209/76
-f 390/212/140 414/214/140 417/213/140
-f 417/213/140 404/196/140 390/212/140
-f 409/215/141 401/209/141 403/211/141
-f 403/211/141 410/216/141 409/215/141
-f 418/221/73 405/222/73 381/222/73
-f 381/222/73 384/221/73 418/221/73
-f 405/222/87 404/203/87 382/203/87
-f 382/203/87 381/222/87 405/222/87
-f 404/203/86 417/206/86 411/206/86
-f 411/206/86 382/203/86 404/203/86
-f 417/206/75 419/223/75 412/223/75
-f 412/223/75 411/206/75 417/206/75
-f 419/224/142 420/225/142 383/226/142
-f 383/226/142 412/224/142 419/224/142
-f 420/225/143 418/224/143 384/224/143
-f 384/224/143 383/226/143 420/225/143
-f 414/214/135 421/227/135 419/228/135
-f 419/228/135 417/213/135 414/214/135
-f 421/229/73 414/220/73 413/219/73
-f 413/219/73 422/221/73 421/229/73
-f 392/206/75 391/205/75 423/230/75
-f 423/230/75 424/223/75 392/206/75
-f 423/227/133 391/214/133 405/213/133
-f 405/213/133 418/228/133 423/227/133
-f 387/201/75 386/200/75 425/199/75
-f 425/199/75 426/202/75 387/201/75
-f 423/231/144 418/224/144 403/232/144
-f 403/232/144 402/233/144 423/231/144
-f 418/224/143 420/225/143 410/234/143
-f 410/234/143 403/232/143 418/224/143
-f 420/225/142 419/224/142 408/232/142
-f 408/232/142 410/234/142 420/225/142
-f 419/224/145 421/231/145 406/233/145
-f 406/233/145 408/232/145 419/224/145
-f 395/200/73 394/201/73 427/202/73
-f 427/202/73 428/199/73 395/200/73
-f 399/208/83 398/207/83 409/235/83
-f 409/235/83 407/236/83 399/208/83
-f 398/207/76 416/208/76 401/236/76
-f 401/236/76 409/235/76 398/207/76
-f 424/236/27 423/231/27 386/237/27
-f 386/237/27 385/238/27 424/236/27
-f 423/231/27 402/233/27 425/239/27
-f 425/239/27 386/237/27 423/231/27
-f 402/210/146 401/209/146 426/240/146
-f 426/240/146 425/241/146 402/210/146
-f 401/236/26 416/208/26 387/242/26
-f 387/242/26 426/238/26 401/236/26
-f 416/208/26 415/209/26 388/240/26
-f 388/240/26 387/242/26 416/208/26
-f 400/209/26 399/208/26 394/242/26
-f 394/242/26 393/240/26 400/209/26
-f 399/208/26 407/236/26 427/238/26
-f 427/238/26 394/242/26 399/208/26
-f 407/209/147 406/210/147 428/241/147
-f 428/241/147 427/240/147 407/209/147
-f 406/233/27 421/231/27 395/237/27
-f 395/237/27 428/239/27 406/233/27
-f 421/231/27 422/236/27 396/238/27
-f 396/238/27 395/237/27 421/231/27
-f 429/195/164 430/196/10 431/197/10
-f 431/197/10 432/198/164 429/195/164
-f 433/199/165 434/200/165 435/201/165
-f 435/201/165 436/202/165 433/199/165
-f 437/203/108 438/204/108 439/205/108
-f 439/205/108 440/206/108 437/203/108
-f 441/202/125 442/201/125 443/200/125
-f 443/200/125 444/199/125 441/202/125
-f 445/207/166 446/207/166 447/208/166
-f 447/208/166 448/209/166 445/207/166
-f 449/209/167 450/210/167 451/211/167
-f 438/212/168 452/196/168 453/213/168
-f 453/213/168 439/214/168 438/212/168
-f 454/210/169 455/209/169 456/211/169
-f 457/215/170 458/216/170 456/211/170
-f 456/211/170 455/209/170 457/215/170
-f 459/217/171 460/218/171 431/197/171
-f 431/197/171 430/196/171 459/217/171
-f 461/219/172 462/220/99 438/204/99
-f 438/204/99 437/203/99 461/219/172
-f 463/209/173 464/208/173 446/207/173
-f 446/207/173 445/207/173 463/209/173
-f 438/212/174 462/214/174 465/213/174
-f 465/213/174 452/196/174 438/212/174
-f 457/215/175 449/209/175 451/211/175
-f 451/211/175 458/216/175 457/215/175
-f 466/221/125 453/222/125 429/222/125
-f 429/222/125 432/221/125 466/221/125
-f 453/222/113 452/203/113 430/203/113
-f 430/203/113 429/222/113 453/222/113
-f 452/203/112 465/206/112 459/206/112
-f 459/206/112 430/203/112 452/203/112
-f 465/206/165 467/223/165 460/223/165
-f 460/223/165 459/206/165 465/206/165
-f 467/224/176 468/225/176 431/226/176
-f 431/226/176 460/224/176 467/224/176
-f 468/225/117 466/224/117 432/224/117
-f 432/224/117 431/226/117 468/225/117
-f 462/214/169 469/227/169 467/228/169
-f 467/228/169 465/213/169 462/214/169
-f 469/229/125 462/220/125 461/219/125
-f 461/219/125 470/221/125 469/229/125
-f 440/206/165 439/205/165 471/230/165
-f 471/230/165 472/223/165 440/206/165
-f 471/227/167 439/214/167 453/213/167
-f 453/213/167 466/228/167 471/227/167
-f 435/201/165 434/200/165 473/199/165
-f 473/199/165 474/202/165 435/201/165
-f 471/231/177 466/224/177 451/232/177
-f 451/232/177 450/233/177 471/231/177
-f 466/224/117 468/225/117 458/234/117
-f 458/234/117 451/232/117 466/224/117
-f 468/225/176 467/224/176 456/232/176
-f 456/232/176 458/234/176 468/225/176
-f 467/224/115 469/231/115 454/233/115
-f 454/233/115 456/232/115 467/224/115
-f 443/200/125 442/201/125 475/202/125
-f 475/202/125 476/199/125 443/200/125
-f 447/208/166 446/207/166 457/235/166
-f 457/235/166 455/236/166 447/208/166
-f 446/207/173 464/208/173 449/236/173
-f 449/236/173 457/235/173 446/207/173
-f 472/236/27 471/231/27 434/237/27
-f 434/237/27 433/238/27 472/236/27
-f 471/231/27 450/233/27 473/239/27
-f 473/239/27 434/237/27 471/231/27
-f 450/210/178 449/209/178 474/240/178
-f 474/240/178 473/241/178 450/210/178
-f 449/236/26 464/208/26 435/242/26
-f 435/242/26 474/238/26 449/236/26
-f 464/208/26 463/209/26 436/240/26
-f 436/240/26 435/242/26 464/208/26
-f 448/209/26 447/208/26 442/242/26
-f 442/242/26 441/240/26 448/209/26
-f 447/208/26 455/236/26 475/238/26
-f 475/238/26 442/242/26 447/208/26
-f 455/209/179 454/210/179 476/241/179
-f 476/241/179 475/240/179 455/209/179
-f 454/233/27 469/231/27 443/237/27
-f 443/237/27 476/239/27 454/233/27
-f 469/231/27 470/236/27 444/238/27
-f 444/238/27 443/237/27 469/231/27
-f 477/243/180 478/244/180 479/245/180
-f 479/245/180 480/246/180 477/243/180
-f 477/247/153 480/248/153 481/249/153
-f 481/249/153 482/250/153 477/247/153
-f 480/246/181 479/245/181 483/251/181
-f 483/251/181 481/252/182 480/246/181
-f 479/248/151 478/247/151 484/250/151
-f 484/250/151 483/249/151 479/248/151
-f 485/195/10 486/196/10 487/197/10
-f 487/197/10 488/198/10 485/195/10
-f 489/199/165 490/200/165 491/201/165
-f 491/201/165 492/202/165 489/199/165
-f 493/203/108 494/204/108 495/205/108
-f 495/205/108 496/206/108 493/203/108
-f 497/202/125 498/201/125 499/200/125
-f 499/200/125 500/199/125 497/202/125
-f 501/207/166 502/207/166 503/208/166
-f 503/208/166 504/209/166 501/207/166
-f 505/209/167 506/210/167 507/211/167
-f 494/212/168 508/196/168 509/213/168
-f 509/213/168 495/214/168 494/212/168
-f 510/210/169 511/209/169 512/211/169
-f 513/215/170 514/216/170 512/211/170
-f 512/211/170 511/209/170 513/215/170
-f 515/217/171 516/218/171 487/197/171
-f 487/197/171 486/196/171 515/217/171
-f 517/219/99 518/220/99 494/204/172
-f 494/204/172 493/203/99 517/219/99
-f 519/209/173 520/208/173 502/207/173
-f 502/207/173 501/207/173 519/209/173
-f 494/212/174 518/214/174 521/213/174
-f 521/213/174 508/196/174 494/212/174
-f 513/215/175 505/209/175 507/211/175
-f 507/211/175 514/216/175 513/215/175
-f 522/221/125 509/222/125 485/222/125
-f 485/222/125 488/221/125 522/221/125
-f 509/222/113 508/203/113 486/203/113
-f 486/203/113 485/222/113 509/222/113
-f 508/203/112 521/206/112 515/206/112
-f 515/206/112 486/203/112 508/203/112
-f 521/206/165 523/223/165 516/223/165
-f 516/223/165 515/206/165 521/206/165
-f 523/224/176 524/225/176 487/226/176
-f 487/226/176 516/224/176 523/224/176
-f 524/225/117 522/224/117 488/224/117
-f 488/224/117 487/226/117 524/225/117
-f 518/214/169 525/227/169 523/228/169
-f 523/228/169 521/213/169 518/214/169
-f 525/229/125 518/220/125 517/219/125
-f 517/219/125 526/221/125 525/229/125
-f 496/206/165 495/205/165 527/230/165
-f 527/230/165 528/223/165 496/206/165
-f 527/227/167 495/214/167 509/213/167
-f 509/213/167 522/228/167 527/227/167
-f 491/201/165 490/200/165 529/199/165
-f 529/199/165 530/202/165 491/201/165
-f 527/231/177 522/224/177 507/232/177
-f 507/232/177 506/233/177 527/231/177
-f 522/224/117 524/225/117 514/234/117
-f 514/234/117 507/232/117 522/224/117
-f 524/225/176 523/224/176 512/232/176
-f 512/232/176 514/234/176 524/225/176
-f 523/224/115 525/231/115 510/233/115
-f 510/233/115 512/232/115 523/224/115
-f 499/200/125 498/201/125 531/202/125
-f 531/202/125 532/199/125 499/200/125
-f 503/208/166 502/207/166 513/235/166
-f 513/235/166 511/236/166 503/208/166
-f 502/207/173 520/208/173 505/236/173
-f 505/236/173 513/235/173 502/207/173
-f 528/236/27 527/231/27 490/237/27
-f 490/237/27 489/238/27 528/236/27
-f 527/231/27 506/233/27 529/239/27
-f 529/239/27 490/237/27 527/231/27
-f 506/210/178 505/209/178 530/240/178
-f 530/240/178 529/241/178 506/210/178
-f 505/236/26 520/208/26 491/242/26
-f 491/242/26 530/238/26 505/236/26
-f 520/208/26 519/209/26 492/240/26
-f 492/240/26 491/242/26 520/208/26
-f 504/209/26 503/208/26 498/242/26
-f 498/242/26 497/240/26 504/209/26
-f 503/208/26 511/236/26 531/238/26
-f 531/238/26 498/242/26 503/208/26
-f 511/209/179 510/210/179 532/241/179
-f 532/241/179 531/240/179 511/209/179
-f 510/233/27 525/231/27 499/237/27
-f 499/237/27 532/239/27 510/233/27
-f 525/231/27 526/236/27 500/238/27
-f 500/238/27 499/237/27 525/231/27
-f 533/243/183 534/244/183 535/245/183
-f 535/245/183 536/246/183 533/243/183
-f 533/247/184 536/248/184 537/249/184
-f 537/249/184 538/250/184 533/247/184
-f 536/246/185 535/245/185 539/251/185
-f 539/251/185 537/252/185 536/246/185
-f 535/248/186 534/247/186 540/250/186
-f 540/250/186 539/249/186 535/248/186
-f 541/195/72 542/196/72 543/197/72
-f 543/197/72 544/198/72 541/195/72
-f 545/199/73 546/200/73 547/201/73
-f 547/201/73 548/202/73 545/199/73
-f 549/203/74 550/204/74 551/205/74
-f 551/205/74 552/206/74 549/203/74
-f 553/202/75 554/201/75 555/200/75
-f 555/200/75 556/199/75 553/202/75
-f 557/207/76 558/207/76 559/208/76
-f 559/208/76 560/209/76 557/207/76
-f 561/209/77 562/210/77 563/211/77
-f 550/212/78 564/196/78 565/213/78
-f 565/213/78 551/214/78 550/212/78
-f 566/210/79 567/209/79 568/211/79
-f 569/215/80 570/216/80 568/211/80
-f 568/211/80 567/209/80 569/215/80
-f 571/217/81 572/218/81 543/197/81
-f 543/197/81 542/196/81 571/217/81
-f 573/219/82 574/220/82 550/204/82
-f 550/204/82 549/203/82 573/219/82
-f 575/209/83 576/208/83 558/207/83
-f 558/207/83 557/207/83 575/209/83
-f 550/212/84 574/214/84 577/213/84
-f 577/213/84 564/196/84 550/212/84
-f 569/215/85 561/209/85 563/211/85
-f 563/211/85 570/216/85 569/215/85
-f 578/221/75 565/222/75 541/222/75
-f 541/222/75 544/221/75 578/221/75
-f 565/222/86 564/203/86 542/203/86
-f 542/203/86 541/222/86 565/222/86
-f 564/203/87 577/206/87 571/206/87
-f 571/206/87 542/203/87 564/203/87
-f 577/206/73 579/223/73 572/223/73
-f 572/223/73 571/206/73 577/206/73
-f 579/224/88 580/225/88 543/226/88
-f 543/226/88 572/224/88 579/224/88
-f 580/225/89 578/224/89 544/224/89
-f 544/224/89 543/226/89 580/225/89
-f 574/214/79 581/227/79 579/228/79
-f 579/228/79 577/213/79 574/214/79
-f 581/229/75 574/220/75 573/219/75
-f 573/219/75 582/221/75 581/229/75
-f 552/206/73 551/205/73 583/230/73
-f 583/230/73 584/223/73 552/206/73
-f 583/227/77 551/214/77 565/213/77
-f 565/213/77 578/228/77 583/227/77
-f 547/201/73 546/200/73 585/199/73
-f 585/199/73 586/202/73 547/201/73
-f 583/231/90 578/224/90 563/232/90
-f 563/232/90 562/233/90 583/231/90
-f 578/224/89 580/225/89 570/234/89
-f 570/234/89 563/232/89 578/224/89
-f 580/225/88 579/224/88 568/232/88
-f 568/232/88 570/234/88 580/225/88
-f 579/224/92 581/231/92 566/233/92
-f 566/233/92 568/232/92 579/224/92
-f 555/200/75 554/201/75 587/202/75
-f 587/202/75 588/199/75 555/200/75
-f 559/208/76 558/207/76 569/235/76
-f 569/235/76 567/236/76 559/208/76
-f 558/207/83 576/208/83 561/236/83
-f 561/236/83 569/235/83 558/207/83
-f 584/236/27 583/231/27 546/237/27
-f 546/237/27 545/238/27 584/236/27
-f 583/231/27 562/233/27 585/239/27
-f 585/239/27 546/237/27 583/231/27
-f 562/210/94 561/209/94 586/240/94
-f 586/240/94 585/241/94 562/210/94
-f 561/236/26 576/208/26 547/242/26
-f 547/242/26 586/238/26 561/236/26
-f 576/208/26 575/209/26 548/240/26
-f 548/240/26 547/242/26 576/208/26
-f 560/209/26 559/208/26 554/242/26
-f 554/242/26 553/240/26 560/209/26
-f 559/208/26 567/236/26 587/238/26
-f 587/238/26 554/242/26 559/208/26
-f 567/209/95 566/210/95 588/241/95
-f 588/241/95 587/240/95 567/209/95
-f 566/233/27 581/231/27 555/237/27
-f 555/237/27 588/239/27 566/233/27
-f 581/231/27 582/236/27 556/238/27
-f 556/238/27 555/237/27 581/231/27
-f 589/243/187 590/244/187 591/245/187
-f 591/245/187 592/246/187 589/243/187
-f 589/247/163 592/248/163 593/249/163
-f 593/249/163 594/250/163 589/247/163
-f 592/246/188 591/245/188 595/251/189
-f 595/251/189 593/252/188 592/246/188
-f 591/248/161 590/247/161 596/250/161
-f 596/250/161 595/249/161 591/248/161
-f 597/253/13 598/254/13 599/255/13
-f 599/255/13 600/256/13 597/253/13
-f 601/257/14 597/253/14 600/256/14
-f 600/256/14 602/258/14 601/257/14
-f 603/259/118 601/257/118 602/258/118
-f 602/258/118 604/260/15 603/259/118
-f 605/261/16 603/262/16 604/263/16
-f 604/263/16 606/264/16 605/261/16
-f 607/265/17 605/261/17 606/264/17
-f 606/264/17 608/266/17 607/265/17
-f 609/267/18 607/265/18 608/266/18
-f 608/266/18 610/268/18 609/267/18
-f 611/269/190 609/267/19 610/268/19
-f 610/268/19 612/270/190 611/269/190
-f 613/271/20 611/269/20 612/270/20
-f 612/270/20 614/272/20 613/271/20
-f 615/273/21 613/271/21 614/272/21
-f 614/272/21 616/274/21 615/273/21
-f 617/275/191 615/273/191 616/274/22
-f 616/274/22 618/276/191 617/275/191
-f 619/277/23 617/275/23 618/276/23
-f 618/276/23 620/278/23 619/277/23
-f 598/254/24 619/277/25 620/278/25
-f 620/278/25 599/255/24 598/254/24
-f 600/279/27 599/280/27 621/281/27
-f 621/281/27 622/282/27 600/279/27
-f 623/283/27 624/279/27 625/282/27
-f 625/282/27 626/284/27 623/283/27
-f 604/285/27 602/283/27 627/284/27
-f 627/284/27 628/285/27 604/285/27
-f 629/286/27 630/285/27 631/285/27
-f 631/285/27 632/287/27 629/286/27
-f 608/288/27 606/286/27 633/287/27
-f 633/287/27 634/289/27 608/288/27
-f 635/290/27 636/288/27 637/289/27
-f 637/289/27 638/291/27 635/290/27
-f 612/292/27 610/290/27 639/291/27
-f 639/291/27 640/293/27 612/292/27
-f 641/294/27 642/292/27 643/293/27
-f 643/293/27 644/295/27 641/294/27
-f 616/296/27 614/294/27 645/295/27
-f 645/295/27 646/297/27 616/296/27
-f 647/298/27 648/296/27 649/297/27
-f 649/297/27 650/299/27 647/298/27
-f 620/300/27 618/298/27 651/299/27
-f 651/299/27 652/300/27 620/300/27
-f 653/280/27 654/300/27 655/300/27
-f 655/300/27 656/281/27 653/280/27
-f 622/301/19 621/302/19 657/303/19
-f 657/303/19 658/304/19 622/301/19
-f 627/305/20 622/301/20 658/304/20
-f 658/304/20 659/306/20 627/305/20
-f 628/307/21 627/305/21 659/306/21
-f 659/306/21 660/308/21 628/307/21
-f 633/309/22 628/307/22 660/308/22
-f 660/308/22 661/310/22 633/309/22
-f 634/311/23 633/309/23 661/310/23
-f 661/310/23 662/312/23 634/311/23
-f 639/313/24 634/311/24 662/312/24
-f 662/312/24 663/314/24 639/313/24
-f 640/315/192 639/313/13 663/314/13
-f 663/314/13 664/316/192 640/315/192
-f 645/317/14 640/315/14 664/316/14
-f 664/316/14 665/318/14 645/317/14
-f 646/319/15 645/317/15 665/318/15
-f 665/318/15 666/320/15 646/319/15
-f 651/321/16 646/322/16 666/323/193
-f 666/323/193 667/324/16 651/321/16
-f 652/325/17 651/321/17 667/324/17
-f 667/324/17 668/326/17 652/325/17
-f 621/302/18 652/325/194 668/326/194
-f 668/326/194 657/303/18 621/302/18
-f 658/327/27 657/328/27 669/329/27
-f 659/330/27 658/327/27 669/329/27
-f 660/331/27 659/330/27 669/329/27
-f 661/332/27 660/331/27 669/329/27
-f 662/333/27 661/332/27 669/329/27
-f 663/334/27 662/333/27 669/329/27
-f 664/335/27 663/334/27 669/329/27
-f 665/336/27 664/335/27 669/329/27
-f 666/337/27 665/336/27 669/329/27
-f 667/338/27 666/337/27 669/329/27
-f 668/339/27 667/338/27 669/329/27
-f 657/328/27 668/339/27 669/329/27
-f 602/258/14 600/256/14 624/340/14
-f 624/340/14 623/341/14 602/258/14
-f 600/279/161 622/282/161 625/282/161
-f 625/282/161 624/279/161 600/279/161
-f 622/301/20 627/305/20 626/342/20
-f 626/342/20 625/343/20 622/301/20
-f 627/284/195 602/283/195 623/283/195
-f 623/283/195 626/284/195 627/284/195
-f 606/264/16 604/263/16 630/344/193
-f 630/344/193 629/345/16 606/264/16
-f 604/285/1 628/285/1 631/285/1
-f 631/285/1 630/285/1 604/285/1
-f 628/307/22 633/309/22 632/346/22
-f 632/346/22 631/347/22 628/307/22
-f 633/287/196 606/286/196 629/286/196
-f 629/286/196 632/287/196 633/287/196
-f 610/268/18 608/266/18 636/348/18
-f 636/348/18 635/349/18 610/268/18
-f 608/288/153 634/289/153 637/289/153
-f 637/289/153 636/288/153 608/288/153
-f 634/311/24 639/313/24 638/350/24
-f 638/350/24 637/351/24 634/311/24
-f 639/291/10 610/290/10 635/290/10
-f 635/290/10 638/291/10 639/291/10
-f 614/272/20 612/270/20 642/352/20
-f 642/352/20 641/353/20 614/272/20
-f 612/292/163 640/293/163 643/293/163
-f 643/293/163 642/292/163 612/292/163
-f 640/315/14 645/317/14 644/354/14
-f 644/354/14 643/355/14 640/315/14
-f 645/295/197 614/294/197 641/294/197
-f 641/294/197 644/295/197 645/295/197
-f 618/276/191 616/274/22 648/356/22
-f 648/356/22 647/357/22 618/276/191
-f 616/296/7 646/297/7 649/297/7
-f 649/297/7 648/296/7 616/296/7
-f 646/322/16 651/321/16 650/358/16
-f 650/358/16 649/359/16 646/322/16
-f 651/299/198 618/298/198 647/298/198
-f 647/298/198 650/299/198 651/299/198
-f 599/255/24 620/278/25 654/360/24
-f 654/360/24 653/361/24 599/255/24
-f 620/300/151 652/300/151 655/300/151
-f 655/300/151 654/300/151 620/300/151
-f 652/325/194 621/302/18 656/362/18
-f 656/362/18 655/363/194 652/325/194
-f 621/281/4 599/280/4 653/280/4
-f 653/280/4 656/281/4 621/281/4
-f 670/364/199 671/365/199 672/366/199
-f 672/366/199 673/367/199 670/364/199
-f 671/368/200 674/369/200 675/370/200
-f 675/370/200 672/371/200 671/368/200
-f 674/365/201 676/364/201 677/367/201
-f 677/367/201 675/366/201 674/365/201
-f 676/372/202 670/373/202 673/374/202
-f 673/374/202 677/375/202 676/372/202
-f 678/376/7 679/377/7 680/378/7
-f 680/378/7 681/379/7 678/376/7
-f 679/380/4 682/381/4 683/382/4
-f 683/382/4 680/383/4 679/380/4
-f 684/384/1 685/385/1 686/386/1
-f 686/386/1 687/387/1 684/384/1
-f 688/388/10 678/389/10 681/390/10
-f 681/390/10 689/391/10 688/388/10
-f 676/392/26 674/393/26 683/394/26
-f 683/394/26 689/395/26 676/392/26
-f 683/394/26 674/393/26 671/396/26
-f 671/396/26 680/397/26 683/394/26
-f 680/397/26 671/396/26 670/398/26
-f 670/398/26 681/399/26 680/397/26
-f 681/399/26 670/398/26 676/392/26
-f 676/392/26 689/395/26 681/399/26
-f 673/400/27 672/401/27 690/402/27
-f 690/402/27 691/403/27 673/400/27
-f 672/401/27 675/404/27 692/405/27
-f 692/405/27 690/402/27 672/401/27
-f 675/404/27 677/406/27 693/407/27
-f 693/407/27 692/405/27 675/404/27
-f 677/406/27 673/400/27 691/403/27
-f 691/403/27 693/407/27 677/406/27
-f 688/408/1 689/409/1 694/410/1
-f 694/410/1 695/411/1 688/408/1
-f 689/409/1 683/412/1 696/413/1
-f 696/413/1 694/410/1 689/409/1
-f 683/412/1 682/414/1 697/415/1
-f 697/415/1 696/413/1 683/412/1
-f 695/416/10 694/417/10 686/418/10
-f 686/418/10 685/419/10 695/416/10
-f 694/420/27 696/421/27 687/422/27
-f 687/422/27 686/423/27 694/420/27
-f 696/417/4 697/416/4 684/419/4
-f 684/419/4 687/418/4 696/417/4
-f 698/243/150 699/246/150 700/245/150
-f 700/245/150 701/244/150 698/243/150
-f 698/247/153 702/250/153 703/249/153
-f 703/249/153 699/248/153 698/247/153
-f 699/246/152 703/252/152 704/251/152
-f 704/251/152 700/245/152 699/246/152
-f 700/248/151 704/249/151 705/250/151
-f 705/250/151 701/247/151 700/248/151
-f 706/424/203 707/425/204 708/426/205
-f 708/426/205 709/427/27 706/424/203
-f 710/428/1 711/429/1 707/429/1
-f 707/429/1 706/428/1 710/428/1
-f 712/430/206 708/430/206 707/431/206
-f 707/431/206 711/431/206 712/430/206
-f 706/424/203 709/427/27 713/426/207
-f 713/426/207 714/425/208 706/424/203
-f 710/428/1 706/428/1 714/432/1
-f 714/432/1 715/432/1 710/428/1
-f 714/431/209 713/430/209 716/430/209
-f 716/430/209 715/431/209 714/431/209
-f 717/433/210 709/427/27 708/426/205
-f 708/426/205 718/434/211 717/433/210
-f 719/428/7 717/428/7 718/429/7
-f 718/429/7 720/429/7 719/428/7
-f 718/435/212 708/430/212 712/430/212
-f 712/430/212 720/435/212 718/435/212
-f 717/433/210 721/434/213 713/426/207
-f 713/426/207 709/427/27 717/433/210
-f 719/428/7 722/432/7 721/432/7
-f 721/432/7 717/428/7 719/428/7
-f 716/430/214 713/430/214 721/435/214
-f 721/435/214 722/435/214 716/430/214
-f 723/436/4 724/437/4 725/438/4
-f 725/438/4 726/439/4 723/436/4
-f 724/437/215 723/436/215 727/440/215
-f 727/440/215 728/441/215 724/437/215
-f 723/436/216 726/439/216 729/440/216
-f 729/440/216 727/440/216 723/436/216
-f 730/442/217 728/441/217 727/440/217
-f 727/440/217 731/443/217 730/442/217
-f 732/444/216 731/443/216 727/440/216
-f 727/440/216 729/445/216 732/444/216
-f 733/446/10 734/447/10 735/448/10
-f 735/448/10 736/449/10 733/446/10
-f 734/447/218 737/442/218 738/443/218
-f 738/443/218 735/448/218 734/447/218
-f 735/448/219 738/443/219 739/450/219
-f 739/450/219 736/449/219 735/448/219
-f 738/443/220 737/442/220 730/442/220
-f 730/442/220 731/443/220 738/443/220
-f 732/444/219 739/444/219 738/443/219
-f 738/443/219 731/443/219 732/444/219
-f 740/436/4 741/437/4 742/438/4
-f 742/438/4 743/439/4 740/436/4
-f 741/437/221 740/436/221 744/440/221
-f 744/440/221 745/441/221 741/437/221
-f 740/436/222 743/439/222 746/440/222
-f 746/440/222 744/440/222 740/436/222
-f 747/442/223 745/441/223 744/440/223
-f 744/440/223 748/443/223 747/442/223
-f 749/444/222 748/443/222 744/440/222
-f 744/440/222 746/445/222 749/444/222
-f 750/446/10 751/447/10 752/448/10
-f 752/448/10 753/449/10 750/446/10
-f 751/447/224 754/442/224 755/443/224
-f 755/443/224 752/448/224 751/447/224
-f 752/448/222 755/443/222 756/450/222
-f 756/450/222 753/449/222 752/448/222
-f 755/443/225 754/442/225 747/442/225
-f 747/442/225 748/443/225 755/443/225
-f 749/444/222 756/444/222 755/443/222
-f 755/443/222 748/443/222 749/444/222
-f 757/436/4 758/437/4 759/438/4
-f 759/438/4 760/439/4 757/436/4
-f 758/437/226 757/436/226 761/440/226
-f 761/440/226 762/441/227 758/437/226
-f 757/436/228 760/439/228 763/440/229
-f 763/440/229 761/440/229 757/436/228
-f 764/442/230 762/441/230 761/440/230
-f 761/440/230 765/443/230 764/442/230
-f 766/444/228 765/443/228 761/440/228
-f 761/440/228 763/445/228 766/444/228
-f 767/446/10 768/447/10 769/448/10
-f 769/448/10 770/449/10 767/446/10
-f 768/447/231 771/442/232 772/443/231
-f 772/443/231 769/448/232 768/447/231
-f 769/448/229 772/443/229 773/450/229
-f 773/450/229 770/449/229 769/448/229
-f 772/443/233 771/442/233 764/442/233
-f 764/442/233 765/443/233 772/443/233
-f 766/444/229 773/444/229 772/443/229
-f 772/443/229 765/443/229 766/444/229
-f 774/436/4 775/437/4 776/438/4
-f 776/438/4 777/439/4 774/436/4
-f 775/437/226 774/436/227 778/440/227
-f 778/440/227 779/441/227 775/437/226
-f 774/436/229 777/439/229 780/440/229
-f 780/440/229 778/440/229 774/436/229
-f 781/442/230 779/441/230 778/440/230
-f 778/440/230 782/443/230 781/442/230
-f 783/444/229 782/443/229 778/440/229
-f 778/440/229 780/445/229 783/444/229
-f 784/446/10 785/447/10 786/448/10
-f 786/448/10 787/449/10 784/446/10
-f 785/447/231 788/442/232 789/443/232
-f 789/443/232 786/448/231 785/447/231
-f 786/448/228 789/443/229 790/450/229
-f 790/450/229 787/449/228 786/448/228
-f 789/443/233 788/442/233 781/442/233
-f 781/442/233 782/443/233 789/443/233
-f 783/444/229 790/444/229 789/443/229
-f 789/443/229 782/443/229 783/444/229
-f 791/436/4 792/437/4 793/438/4
-f 793/438/4 794/439/4 791/436/4
-f 792/437/234 791/436/234 795/440/234
-f 795/440/234 796/441/234 792/437/234
-f 791/436/235 794/439/235 797/440/235
-f 797/440/235 795/440/235 791/436/235
-f 798/442/236 796/441/236 795/440/236
-f 795/440/236 799/443/236 798/442/236
-f 800/444/235 799/443/235 795/440/235
-f 795/440/235 797/445/235 800/444/235
-f 801/446/10 802/447/10 803/448/10
-f 803/448/10 804/449/10 801/446/10
-f 802/447/237 805/442/237 806/443/237
-f 806/443/237 803/448/237 802/447/237
-f 803/448/235 806/443/235 807/450/235
-f 807/450/235 804/449/235 803/448/235
-f 806/443/238 805/442/238 798/442/238
-f 798/442/238 799/443/238 806/443/238
-f 800/444/239 807/444/239 806/443/239
-f 806/443/239 799/443/239 800/444/239
-f 808/436/4 809/437/4 810/438/4
-f 810/438/4 811/439/4 808/436/4
-f 809/437/240 808/436/240 812/440/240
-f 812/440/240 813/441/240 809/437/240
-f 808/436/241 811/439/241 814/440/241
-f 814/440/241 812/440/241 808/436/241
-f 815/442/236 813/441/236 812/440/236
-f 812/440/236 816/443/236 815/442/236
-f 817/444/241 816/443/241 812/440/241
-f 812/440/241 814/445/241 817/444/241
-f 818/446/10 819/447/10 820/448/10
-f 820/448/10 821/449/10 818/446/10
-f 819/447/242 822/442/242 823/443/242
-f 823/443/242 820/448/242 819/447/242
-f 820/448/243 823/443/241 824/450/241
-f 824/450/241 821/449/243 820/448/243
-f 823/443/238 822/442/238 815/442/238
-f 815/442/238 816/443/238 823/443/238
-f 817/444/241 824/444/241 823/443/241
-f 823/443/241 816/443/241 817/444/241
-f 825/436/4 826/437/4 827/438/4
-f 827/438/4 828/439/4 825/436/4
-f 826/437/215 825/436/215 829/440/215
-f 829/440/215 830/441/215 826/437/215
-f 825/436/216 828/439/216 831/440/216
-f 831/440/216 829/440/216 825/436/216
-f 832/442/217 830/441/217 829/440/217
-f 829/440/217 833/443/217 832/442/217
-f 834/444/216 833/443/216 829/440/216
-f 829/440/216 831/445/216 834/444/216
-f 835/446/10 836/447/10 837/448/10
-f 837/448/10 838/449/10 835/446/10
-f 836/447/218 839/442/218 840/443/218
-f 840/443/218 837/448/218 836/447/218
-f 837/448/219 840/443/219 841/450/219
-f 841/450/219 838/449/219 837/448/219
-f 840/443/220 839/442/220 832/442/220
-f 832/442/220 833/443/220 840/443/220
-f 834/444/219 841/444/219 840/443/219
-f 840/443/219 833/443/219 834/444/219
-f 842/436/4 843/437/4 844/438/4
-f 844/438/4 845/439/4 842/436/4
-f 843/437/215 842/436/215 846/440/215
-f 846/440/215 847/441/215 843/437/215
-f 842/436/216 845/439/216 848/440/216
-f 848/440/216 846/440/216 842/436/216
-f 849/442/217 847/441/217 846/440/217
-f 846/440/217 850/443/217 849/442/217
-f 851/444/216 850/443/216 846/440/216
-f 846/440/216 848/445/216 851/444/216
-f 852/446/10 853/447/10 854/448/10
-f 854/448/10 855/449/10 852/446/10
-f 853/447/218 856/442/218 857/443/218
-f 857/443/218 854/448/218 853/447/218
-f 854/448/219 857/443/219 858/450/219
-f 858/450/219 855/449/219 854/448/219
-f 857/443/220 856/442/220 849/442/220
-f 849/442/220 850/443/220 857/443/220
-f 851/444/219 858/444/219 857/443/219
-f 857/443/219 850/443/219 851/444/219
-f 859/438/4 860/437/4 861/436/4
-f 861/436/4 862/439/4 859/438/4
-f 863/440/244 861/436/244 860/437/244
-f 860/437/244 864/441/244 863/440/244
-f 865/440/245 862/439/245 861/436/245
-f 861/436/245 863/440/245 865/440/245
-f 863/440/246 864/441/246 866/442/246
-f 866/442/246 867/443/246 863/440/246
-f 868/444/245 865/445/245 863/440/245
-f 863/440/245 867/443/245 868/444/245
-f 869/448/10 870/447/10 871/446/10
-f 871/446/10 872/449/10 869/448/10
-f 873/443/247 874/442/247 870/447/247
-f 870/447/247 869/448/247 873/443/247
-f 875/450/248 873/443/248 869/448/248
-f 869/448/248 872/449/248 875/450/248
-f 866/442/249 874/442/249 873/443/249
-f 873/443/249 867/443/249 866/442/249
-f 868/444/248 867/443/248 873/443/248
-f 873/443/248 875/444/248 868/444/248
-f 876/438/4 877/437/4 878/436/4
-f 878/436/4 879/439/4 876/438/4
-f 880/440/250 878/436/250 877/437/250
-f 877/437/250 881/441/250 880/440/250
-f 882/440/251 879/439/251 878/436/251
-f 878/436/251 880/440/251 882/440/251
-f 880/440/252 881/441/252 883/442/252
-f 883/442/252 884/443/252 880/440/252
-f 885/444/251 882/445/251 880/440/251
-f 880/440/251 884/443/251 885/444/251
-f 886/448/10 887/447/10 888/446/10
-f 888/446/10 889/449/10 886/448/10
-f 890/443/253 891/442/253 887/447/253
-f 887/447/253 886/448/253 890/443/253
-f 892/450/251 890/443/251 886/448/254
-f 886/448/254 889/449/254 892/450/251
-f 883/442/255 891/442/255 890/443/255
-f 890/443/255 884/443/255 883/442/255
-f 885/444/251 884/443/251 890/443/251
-f 890/443/251 892/444/251 885/444/251
-f 893/438/4 894/437/4 895/436/4
-f 895/436/4 896/439/4 893/438/4
-f 897/440/256 895/436/257 894/437/256
-f 894/437/256 898/441/256 897/440/256
-f 899/440/258 896/439/258 895/436/258
-f 895/436/258 897/440/258 899/440/258
-f 897/440/259 898/441/259 900/442/259
-f 900/442/259 901/443/259 897/440/259
-f 902/444/258 899/445/258 897/440/258
-f 897/440/258 901/443/258 902/444/258
-f 903/448/10 904/447/10 905/446/10
-f 905/446/10 906/449/10 903/448/10
-f 907/443/260 908/442/260 904/447/260
-f 904/447/260 903/448/260 907/443/260
-f 909/450/261 907/443/261 903/448/261
-f 903/448/261 906/449/261 909/450/261
-f 900/442/262 908/442/262 907/443/262
-f 907/443/262 901/443/262 900/442/262
-f 902/444/261 901/443/261 907/443/261
-f 907/443/261 909/444/261 902/444/261
-f 910/438/4 911/437/4 912/436/4
-f 912/436/4 913/439/4 910/438/4
-f 914/440/257 912/436/257 911/437/257
-f 911/437/257 915/441/256 914/440/257
-f 916/440/261 913/439/261 912/436/261
-f 912/436/261 914/440/261 916/440/261
-f 914/440/259 915/441/259 917/442/259
-f 917/442/259 918/443/259 914/440/259
-f 919/444/261 916/445/261 914/440/261
-f 914/440/261 918/443/261 919/444/261
-f 920/448/10 921/447/10 922/446/10
-f 922/446/10 923/449/10 920/448/10
-f 924/443/263 925/442/260 921/447/263
-f 921/447/263 920/448/263 924/443/263
-f 926/450/258 924/443/258 920/448/261
-f 920/448/261 923/449/261 926/450/258
-f 917/442/262 925/442/262 924/443/262
-f 924/443/262 918/443/262 917/442/262
-f 919/444/261 918/443/261 924/443/261
-f 924/443/261 926/444/261 919/444/261
-f 927/438/4 928/437/4 929/436/4
-f 929/436/4 930/439/4 927/438/4
-f 931/440/264 929/436/264 928/437/264
-f 928/437/264 932/441/264 931/440/264
-f 933/440/265 930/439/265 929/436/265
-f 929/436/265 931/440/265 933/440/265
-f 931/440/266 932/441/266 934/442/266
-f 934/442/266 935/443/266 931/440/266
-f 936/444/265 933/445/265 931/440/265
-f 931/440/265 935/443/265 936/444/265
-f 937/448/10 938/447/10 939/446/10
-f 939/446/10 940/449/10 937/448/10
-f 941/443/267 942/442/267 938/447/267
-f 938/447/267 937/448/267 941/443/267
-f 943/450/265 941/443/265 937/448/265
-f 937/448/265 940/449/265 943/450/265
-f 934/442/268 942/442/268 941/443/268
-f 941/443/268 935/443/268 934/442/268
-f 936/444/269 935/443/269 941/443/269
-f 941/443/269 943/444/269 936/444/269
-f 944/438/4 945/437/4 946/436/4
-f 946/436/4 947/439/4 944/438/4
-f 948/440/270 946/436/270 945/437/270
-f 945/437/270 949/441/270 948/440/270
-f 950/440/271 947/439/271 946/436/271
-f 946/436/271 948/440/271 950/440/271
-f 948/440/266 949/441/266 951/442/266
-f 951/442/266 952/443/266 948/440/266
-f 953/444/271 950/445/271 948/440/271
-f 948/440/271 952/443/271 953/444/271
-f 954/448/10 955/447/10 956/446/10
-f 956/446/10 957/449/10 954/448/10
-f 958/443/272 959/442/272 955/447/272
-f 955/447/272 954/448/272 958/443/272
-f 960/450/271 958/443/271 954/448/273
-f 954/448/273 957/449/273 960/450/271
-f 951/442/268 959/442/268 958/443/268
-f 958/443/268 952/443/268 951/442/268
-f 953/444/271 952/443/271 958/443/271
-f 958/443/271 960/444/271 953/444/271
-f 961/438/4 962/437/4 963/436/4
-f 963/436/4 964/439/4 961/438/4
-f 965/440/244 963/436/244 962/437/244
-f 962/437/244 966/441/244 965/440/244
-f 967/440/245 964/439/245 963/436/245
-f 963/436/245 965/440/245 967/440/245
-f 965/440/246 966/441/246 968/442/274
-f 968/442/274 969/443/246 965/440/246
-f 970/444/245 967/445/245 965/440/245
-f 965/440/245 969/443/245 970/444/245
-f 971/448/10 972/447/10 973/446/10
-f 973/446/10 974/449/10 971/448/10
-f 975/443/247 976/442/247 972/447/247
-f 972/447/247 971/448/247 975/443/247
-f 977/450/248 975/443/248 971/448/248
-f 971/448/248 974/449/248 977/450/248
-f 968/442/275 976/442/249 975/443/249
-f 975/443/249 969/443/249 968/442/275
-f 970/444/248 969/443/248 975/443/248
-f 975/443/248 977/444/248 970/444/248
-f 978/438/4 979/437/4 980/436/4
-f 980/436/4 981/439/4 978/438/4
-f 982/440/244 980/436/244 979/437/244
-f 979/437/244 983/441/244 982/440/244
-f 984/440/245 981/439/245 980/436/245
-f 980/436/245 982/440/245 984/440/245
-f 982/440/246 983/441/246 985/442/246
-f 985/442/246 986/443/246 982/440/246
-f 987/444/245 984/445/245 982/440/245
-f 982/440/245 986/443/245 987/444/245
-f 988/448/10 989/447/10 990/446/10
-f 990/446/10 991/449/10 988/448/10
-f 992/443/247 993/442/247 989/447/247
-f 989/447/247 988/448/247 992/443/247
-f 994/450/248 992/443/248 988/448/248
-f 988/448/248 991/449/248 994/450/248
-f 985/442/249 993/442/249 992/443/249
-f 992/443/249 986/443/249 985/442/249
-f 987/444/248 986/443/248 992/443/248
-f 992/443/248 994/444/248 987/444/248
-f 995/436/4 996/437/4 997/438/4
-f 997/438/4 998/439/4 995/436/4
-f 996/437/276 995/436/276 999/440/276
-f 999/440/276 1000/441/276 996/437/276
-f 995/436/277 998/439/277 1001/440/278
-f 1001/440/278 999/440/278 995/436/277
-f 1002/442/279 1000/441/279 999/440/279
-f 999/440/279 1003/443/279 1002/442/279
-f 1004/444/277 1003/443/277 999/440/277
-f 999/440/277 1001/445/277 1004/444/277
-f 1005/446/10 1006/447/10 1007/448/10
-f 1007/448/10 1008/449/10 1005/446/10
-f 1006/447/280 1009/442/280 1010/443/280
-f 1010/443/280 1007/448/280 1006/447/280
-f 1007/448/278 1010/443/278 1011/450/278
-f 1011/450/278 1008/449/278 1007/448/278
-f 1010/443/281 1009/442/281 1002/442/281
-f 1002/442/281 1003/443/281 1010/443/281
-f 1004/444/278 1011/444/278 1010/443/278
-f 1010/443/278 1003/443/278 1004/444/278
-f 1012/438/4 1013/437/4 1014/436/4
-f 1014/436/4 1015/439/4 1012/438/4
-f 1016/440/282 1014/436/282 1013/437/282
-f 1013/437/282 1017/441/282 1016/440/282
-f 1018/440/283 1015/439/283 1014/436/283
-f 1014/436/283 1016/440/283 1018/440/283
-f 1016/440/284 1017/441/284 1019/442/284
-f 1019/442/284 1020/443/284 1016/440/284
-f 1021/444/283 1018/445/283 1016/440/283
-f 1016/440/283 1020/443/283 1021/444/283
-f 1022/448/10 1023/447/10 1024/446/10
-f 1024/446/10 1025/449/10 1022/448/10
-f 1026/443/285 1027/442/285 1023/447/285
-f 1023/447/285 1022/448/285 1026/443/285
-f 1028/450/286 1026/443/286 1022/448/286
-f 1022/448/286 1025/449/286 1028/450/286
-f 1019/442/287 1027/442/287 1026/443/287
-f 1026/443/287 1020/443/287 1019/442/287
-f 1021/444/286 1020/443/286 1026/443/286
-f 1026/443/286 1028/444/286 1021/444/286
-f 1029/243/187 1030/244/187 1031/245/187
-f 1031/245/187 1032/246/187 1029/243/187
-f 1029/247/163 1032/248/163 1033/249/163
-f 1033/249/163 1034/250/163 1029/247/163
-f 1032/246/188 1031/245/188 1035/251/188
-f 1035/251/188 1033/252/188 1032/246/188
-f 1031/248/161 1030/247/161 1036/250/161
-f 1036/250/161 1035/249/161 1031/248/161
-f 1037/451/27 1038/452/27 1039/453/27
-f 1039/453/27 1040/454/27 1037/451/27
-f 1041/455/7 1042/456/7 1038/457/7
-f 1038/457/7 1037/458/7 1041/455/7
-f 1042/459/4 1043/460/4 1039/461/4
-f 1039/461/4 1038/462/4 1042/459/4
-f 1043/456/1 1044/455/1 1040/458/1
-f 1040/458/1 1039/457/1 1043/456/1
-f 1044/460/10 1041/459/10 1037/462/10
-f 1037/462/10 1040/461/10 1044/460/10
-f 1045/451/27 1046/452/27 1047/453/27
-f 1047/453/27 1048/454/27 1045/451/27
-f 1049/455/7 1050/456/7 1046/457/7
-f 1046/457/7 1045/458/7 1049/455/7
-f 1050/459/4 1051/460/4 1047/461/4
-f 1047/461/4 1046/462/4 1050/459/4
-f 1051/456/1 1052/455/1 1048/458/1
-f 1048/458/1 1047/457/1 1051/456/1
-f 1052/460/10 1049/459/10 1045/462/10
-f 1045/462/10 1048/461/10 1052/460/10
-f 1053/451/27 1054/452/27 1055/453/27
-f 1055/453/27 1056/454/27 1053/451/27
-f 1057/455/7 1058/456/7 1054/457/7
-f 1054/457/7 1053/458/7 1057/455/7
-f 1058/459/4 1059/460/4 1055/461/4
-f 1055/461/4 1054/462/4 1058/459/4
-f 1059/456/1 1060/455/1 1056/458/1
-f 1056/458/1 1055/457/1 1059/456/1
-f 1060/460/10 1057/459/10 1053/462/10
-f 1053/462/10 1056/461/10 1060/460/10
-f 1061/451/27 1062/452/27 1063/453/27
-f 1063/453/27 1064/454/27 1061/451/27
-f 1065/455/10 1066/456/10 1062/457/10
-f 1062/457/10 1061/458/10 1065/455/10
-f 1066/459/7 1067/460/7 1063/461/7
-f 1063/461/7 1062/462/7 1066/459/7
-f 1067/456/4 1068/455/4 1064/458/4
-f 1064/458/4 1063/457/4 1067/456/4
-f 1068/460/1 1065/459/1 1061/462/1
-f 1061/462/1 1064/461/1 1068/460/1
-f 1069/451/27 1070/452/27 1071/453/27
-f 1071/453/27 1072/454/27 1069/451/27
-f 1073/455/10 1074/456/10 1070/457/10
-f 1070/457/10 1069/458/10 1073/455/10
-f 1074/459/7 1075/460/7 1071/461/7
-f 1071/461/7 1070/462/7 1074/459/7
-f 1075/456/4 1076/455/4 1072/458/4
-f 1072/458/4 1071/457/4 1075/456/4
-f 1076/460/1 1073/459/1 1069/462/1
-f 1069/462/1 1072/461/1 1076/460/1
-f 1077/451/27 1078/452/27 1079/453/27
-f 1079/453/27 1080/454/27 1077/451/27
-f 1081/455/10 1082/456/10 1078/457/10
-f 1078/457/10 1077/458/10 1081/455/10
-f 1082/459/7 1083/460/7 1079/461/7
-f 1079/461/7 1078/462/7 1082/459/7
-f 1083/456/4 1084/455/4 1080/458/4
-f 1080/458/4 1079/457/4 1083/456/4
-f 1084/460/1 1081/459/1 1077/462/1
-f 1077/462/1 1080/461/1 1084/460/1
-f 1085/451/27 1086/452/27 1087/453/27
-f 1087/453/27 1088/454/27 1085/451/27
-f 1089/455/10 1090/456/10 1086/457/10
-f 1086/457/10 1085/458/10 1089/455/10
-f 1090/459/7 1091/460/7 1087/461/7
-f 1087/461/7 1086/462/7 1090/459/7
-f 1091/456/4 1092/455/4 1088/458/4
-f 1088/458/4 1087/457/4 1091/456/4
-f 1092/460/1 1089/459/1 1085/462/1
-f 1085/462/1 1088/461/1 1092/460/1
-f 1093/451/27 1094/452/27 1095/453/27
-f 1095/453/27 1096/454/27 1093/451/27
-f 1097/455/7 1098/456/7 1094/457/7
-f 1094/457/7 1093/458/7 1097/455/7
-f 1098/459/4 1099/460/4 1095/461/4
-f 1095/461/4 1094/462/4 1098/459/4
-f 1099/456/1 1100/455/1 1096/458/1
-f 1096/458/1 1095/457/1 1099/456/1
-f 1100/460/10 1097/459/10 1093/462/10
-f 1093/462/10 1096/461/10 1100/460/10
-f 1101/451/27 1102/452/27 1103/453/27
-f 1103/453/27 1104/454/27 1101/451/27
-f 1105/455/7 1106/456/7 1102/457/7
-f 1102/457/7 1101/458/7 1105/455/7
-f 1106/459/4 1107/460/4 1103/461/4
-f 1103/461/4 1102/462/4 1106/459/4
-f 1107/456/1 1108/455/1 1104/458/1
-f 1104/458/1 1103/457/1 1107/456/1
-f 1108/460/10 1105/459/10 1101/462/10
-f 1101/462/10 1104/461/10 1108/460/10
-f 1109/451/27 1110/452/27 1111/453/27
-f 1111/453/27 1112/454/27 1109/451/27
-f 1113/455/7 1114/456/7 1110/457/7
-f 1110/457/7 1109/458/7 1113/455/7
-f 1114/459/4 1115/460/4 1111/461/4
-f 1111/461/4 1110/462/4 1114/459/4
-f 1115/456/1 1116/455/1 1112/458/1
-f 1112/458/1 1111/457/1 1115/456/1
-f 1116/460/10 1113/459/10 1109/462/10
-f 1109/462/10 1112/461/10 1116/460/10
-f 1117/451/27 1118/452/27 1119/453/27
-f 1119/453/27 1120/454/27 1117/451/27
-f 1121/455/7 1122/456/7 1118/457/7
-f 1118/457/7 1117/458/7 1121/455/7
-f 1122/459/4 1123/460/4 1119/461/4
-f 1119/461/4 1118/462/4 1122/459/4
-f 1123/456/1 1124/455/1 1120/458/1
-f 1120/458/1 1119/457/1 1123/456/1
-f 1124/460/10 1121/459/10 1117/462/10
-f 1117/462/10 1120/461/10 1124/460/10
-f 1125/451/27 1126/452/27 1127/453/27
-f 1127/453/27 1128/454/27 1125/451/27
-f 1129/455/7 1130/456/7 1126/457/7
-f 1126/457/7 1125/458/7 1129/455/7
-f 1130/459/4 1131/460/4 1127/461/4
-f 1127/461/4 1126/462/4 1130/459/4
-f 1131/456/1 1132/455/1 1128/458/1
-f 1128/458/1 1127/457/1 1131/456/1
-f 1132/460/10 1129/459/10 1125/462/10
-f 1125/462/10 1128/461/10 1132/460/10
-f 1133/451/27 1134/452/27 1135/453/27
-f 1135/453/27 1136/454/27 1133/451/27
-f 1137/455/7 1138/456/7 1134/457/7
-f 1134/457/7 1133/458/7 1137/455/7
-f 1138/459/4 1139/460/4 1135/461/4
-f 1135/461/4 1134/462/4 1138/459/4
-f 1139/456/1 1140/455/1 1136/458/1
-f 1136/458/1 1135/457/1 1139/456/1
-f 1140/460/10 1137/459/10 1133/462/10
-f 1133/462/10 1136/461/10 1140/460/10
-f 1141/451/27 1142/452/27 1143/453/27
-f 1143/453/27 1144/454/27 1141/451/27
-f 1145/455/7 1146/456/7 1142/457/7
-f 1142/457/7 1141/458/7 1145/455/7
-f 1146/459/4 1147/460/4 1143/461/4
-f 1143/461/4 1142/462/4 1146/459/4
-f 1147/456/1 1148/455/1 1144/458/1
-f 1144/458/1 1143/457/1 1147/456/1
-f 1148/460/10 1145/459/10 1141/462/10
-f 1141/462/10 1144/461/10 1148/460/10
-f 1149/451/27 1150/452/27 1151/453/27
-f 1151/453/27 1152/454/27 1149/451/27
-f 1153/455/7 1154/456/7 1150/457/7
-f 1150/457/7 1149/458/7 1153/455/7
-f 1154/459/4 1155/460/4 1151/461/4
-f 1151/461/4 1150/462/4 1154/459/4
-f 1155/456/1 1156/455/1 1152/458/1
-f 1152/458/1 1151/457/1 1155/456/1
-f 1156/460/10 1153/459/10 1149/462/10
-f 1149/462/10 1152/461/10 1156/460/10
-f 1157/451/27 1158/452/27 1159/453/27
-f 1159/453/27 1160/454/27 1157/451/27
-f 1161/455/7 1162/456/7 1158/457/7
-f 1158/457/7 1157/458/7 1161/455/7
-f 1162/459/4 1163/460/4 1159/461/4
-f 1159/461/4 1158/462/4 1162/459/4
-f 1163/456/1 1164/455/1 1160/458/1
-f 1160/458/1 1159/457/1 1163/456/1
-f 1164/460/10 1161/459/10 1157/462/10
-f 1157/462/10 1160/461/10 1164/460/10
-f 1165/451/27 1166/452/27 1167/453/27
-f 1167/453/27 1168/454/27 1165/451/27
-f 1169/455/7 1170/456/7 1166/457/7
-f 1166/457/7 1165/458/7 1169/455/7
-f 1170/459/4 1171/460/4 1167/461/4
-f 1167/461/4 1166/462/4 1170/459/4
-f 1171/456/1 1172/455/1 1168/458/1
-f 1168/458/1 1167/457/1 1171/456/1
-f 1172/460/10 1169/459/10 1165/462/10
-f 1165/462/10 1168/461/10 1172/460/10
-f 1173/451/27 1174/452/27 1175/453/27
-f 1175/453/27 1176/454/27 1173/451/27
-f 1177/455/7 1178/456/7 1174/457/7
-f 1174/457/7 1173/458/7 1177/455/7
-f 1178/459/4 1179/460/4 1175/461/4
-f 1175/461/4 1174/462/4 1178/459/4
-f 1179/456/1 1180/455/1 1176/458/1
-f 1176/458/1 1175/457/1 1179/456/1
-f 1180/460/10 1177/459/10 1173/462/10
-f 1173/462/10 1176/461/10 1180/460/10
-f 1181/451/27 1182/452/27 1183/453/27
-f 1183/453/27 1184/454/27 1181/451/27
-f 1185/455/7 1186/456/7 1182/457/7
-f 1182/457/7 1181/458/7 1185/455/7
-f 1186/459/4 1187/460/4 1183/461/4
-f 1183/461/4 1182/462/4 1186/459/4
-f 1187/456/1 1188/455/1 1184/458/1
-f 1184/458/1 1183/457/1 1187/456/1
-f 1188/460/10 1185/459/10 1181/462/10
-f 1181/462/10 1184/461/10 1188/460/10
-f 1189/451/27 1190/452/27 1191/453/27
-f 1191/453/27 1192/454/27 1189/451/27
-f 1193/455/7 1194/456/7 1190/457/7
-f 1190/457/7 1189/458/7 1193/455/7
-f 1194/459/4 1195/460/4 1191/461/4
-f 1191/461/4 1190/462/4 1194/459/4
-f 1195/456/1 1196/455/1 1192/458/1
-f 1192/458/1 1191/457/1 1195/456/1
-f 1196/460/10 1193/459/10 1189/462/10
-f 1189/462/10 1192/461/10 1196/460/10
-f 1197/451/27 1198/452/27 1199/453/27
-f 1199/453/27 1200/454/27 1197/451/27
-f 1201/455/7 1202/456/7 1198/457/7
-f 1198/457/7 1197/458/7 1201/455/7
-f 1202/459/4 1203/460/4 1199/461/4
-f 1199/461/4 1198/462/4 1202/459/4
-f 1203/456/1 1204/455/1 1200/458/1
-f 1200/458/1 1199/457/1 1203/456/1
-f 1204/460/10 1201/459/10 1197/462/10
-f 1197/462/10 1200/461/10 1204/460/10
-f 1205/451/27 1206/452/27 1207/453/27
-f 1207/453/27 1208/454/27 1205/451/27
-f 1209/455/7 1210/456/7 1206/457/7
-f 1206/457/7 1205/458/7 1209/455/7
-f 1210/459/4 1211/460/4 1207/461/4
-f 1207/461/4 1206/462/4 1210/459/4
-f 1211/456/1 1212/455/1 1208/458/1
-f 1208/458/1 1207/457/1 1211/456/1
-f 1212/460/10 1209/459/10 1205/462/10
-f 1205/462/10 1208/461/10 1212/460/10
-f 1213/451/27 1214/452/27 1215/453/27
-f 1215/453/27 1216/454/27 1213/451/27
-f 1217/455/7 1218/456/7 1214/457/7
-f 1214/457/7 1213/458/7 1217/455/7
-f 1218/459/4 1219/460/4 1215/461/4
-f 1215/461/4 1214/462/4 1218/459/4
-f 1219/456/1 1220/455/1 1216/458/1
-f 1216/458/1 1215/457/1 1219/456/1
-f 1220/460/10 1217/459/10 1213/462/10
-f 1213/462/10 1216/461/10 1220/460/10
-f 1221/451/27 1222/452/27 1223/453/27
-f 1223/453/27 1224/454/27 1221/451/27
-f 1225/455/7 1226/456/7 1222/457/7
-f 1222/457/7 1221/458/7 1225/455/7
-f 1226/459/4 1227/460/4 1223/461/4
-f 1223/461/4 1222/462/4 1226/459/4
-f 1227/456/1 1228/455/1 1224/458/1
-f 1224/458/1 1223/457/1 1227/456/1
-f 1228/460/10 1225/459/10 1221/462/10
-f 1221/462/10 1224/461/10 1228/460/10
-f 1229/451/27 1230/452/27 1231/453/27
-f 1231/453/27 1232/454/27 1229/451/27
-f 1233/455/4 1234/456/4 1230/457/4
-f 1230/457/4 1229/458/4 1233/455/4
-f 1234/459/1 1235/460/1 1231/461/1
-f 1231/461/1 1230/462/1 1234/459/1
-f 1235/456/10 1236/455/10 1232/458/10
-f 1232/458/10 1231/457/10 1235/456/10
-f 1236/460/7 1233/459/7 1229/462/7
-f 1229/462/7 1232/461/7 1236/460/7
-f 1237/451/27 1238/452/27 1239/453/27
-f 1239/453/27 1240/454/27 1237/451/27
-f 1241/455/4 1242/456/4 1238/457/4
-f 1238/457/4 1237/458/4 1241/455/4
-f 1242/459/1 1243/460/1 1239/461/1
-f 1239/461/1 1238/462/1 1242/459/1
-f 1243/456/10 1244/455/10 1240/458/10
-f 1240/458/10 1239/457/10 1243/456/10
-f 1244/460/7 1241/459/7 1237/462/7
-f 1237/462/7 1240/461/7 1244/460/7
-f 1245/451/27 1246/452/27 1247/453/27
-f 1247/453/27 1248/454/27 1245/451/27
-f 1249/455/4 1250/456/4 1246/457/4
-f 1246/457/4 1245/458/4 1249/455/4
-f 1250/459/1 1251/460/1 1247/461/1
-f 1247/461/1 1246/462/1 1250/459/1
-f 1251/456/10 1252/455/10 1248/458/10
-f 1248/458/10 1247/457/10 1251/456/10
-f 1252/460/7 1249/459/7 1245/462/7
-f 1245/462/7 1248/461/7 1252/460/7
-f 1253/451/27 1254/452/27 1255/453/27
-f 1255/453/27 1256/454/27 1253/451/27
-f 1257/455/4 1258/456/4 1254/457/4
-f 1254/457/4 1253/458/4 1257/455/4
-f 1258/459/1 1259/460/1 1255/461/1
-f 1255/461/1 1254/462/1 1258/459/1
-f 1259/456/10 1260/455/10 1256/458/10
-f 1256/458/10 1255/457/10 1259/456/10
-f 1260/460/7 1257/459/7 1253/462/7
-f 1253/462/7 1256/461/7 1260/460/7
-f 1261/451/27 1262/452/27 1263/453/27
-f 1263/453/27 1264/454/27 1261/451/27
-f 1265/455/7 1266/456/7 1262/457/7
-f 1262/457/7 1261/458/7 1265/455/7
-f 1266/459/4 1267/460/4 1263/461/4
-f 1263/461/4 1262/462/4 1266/459/4
-f 1267/456/1 1268/455/1 1264/458/1
-f 1264/458/1 1263/457/1 1267/456/1
-f 1268/460/10 1265/459/10 1261/462/10
-f 1261/462/10 1264/461/10 1268/460/10
-f 1269/451/27 1270/452/27 1271/453/27
-f 1271/453/27 1272/454/27 1269/451/27
-f 1273/455/7 1274/456/7 1270/457/7
-f 1270/457/7 1269/458/7 1273/455/7
-f 1274/459/4 1275/460/4 1271/461/4
-f 1271/461/4 1270/462/4 1274/459/4
-f 1275/456/1 1276/455/1 1272/458/1
-f 1272/458/1 1271/457/1 1275/456/1
-f 1276/460/10 1273/459/10 1269/462/10
-f 1269/462/10 1272/461/10 1276/460/10
-f 1277/451/27 1278/452/27 1279/453/27
-f 1279/453/27 1280/454/27 1277/451/27
-f 1281/455/7 1282/456/7 1278/457/7
-f 1278/457/7 1277/458/7 1281/455/7
-f 1282/459/4 1283/460/4 1279/461/4
-f 1279/461/4 1278/462/4 1282/459/4
-f 1283/456/1 1284/455/1 1280/458/1
-f 1280/458/1 1279/457/1 1283/456/1
-f 1284/460/10 1281/459/10 1277/462/10
-f 1277/462/10 1280/461/10 1284/460/10
-f 1285/451/27 1286/452/27 1287/453/27
-f 1287/453/27 1288/454/27 1285/451/27
-f 1289/455/7 1290/456/7 1286/457/7
-f 1286/457/7 1285/458/7 1289/455/7
-f 1290/459/4 1291/460/4 1287/461/4
-f 1287/461/4 1286/462/4 1290/459/4
-f 1291/456/1 1292/455/1 1288/458/1
-f 1288/458/1 1287/457/1 1291/456/1
-f 1292/460/10 1289/459/10 1285/462/10
-f 1285/462/10 1288/461/10 1292/460/10
-f 1293/451/27 1294/452/27 1295/453/27
-f 1295/453/27 1296/454/27 1293/451/27
-f 1297/455/7 1298/456/7 1294/457/7
-f 1294/457/7 1293/458/7 1297/455/7
-f 1298/459/4 1299/460/4 1295/461/4
-f 1295/461/4 1294/462/4 1298/459/4
-f 1299/456/1 1300/455/1 1296/458/1
-f 1296/458/1 1295/457/1 1299/456/1
-f 1300/460/10 1297/459/10 1293/462/10
-f 1293/462/10 1296/461/10 1300/460/10
-f 1301/451/27 1302/452/27 1303/453/27
-f 1303/453/27 1304/454/27 1301/451/27
-f 1305/455/7 1306/456/7 1302/457/7
-f 1302/457/7 1301/458/7 1305/455/7
-f 1306/459/4 1307/460/4 1303/461/4
-f 1303/461/4 1302/462/4 1306/459/4
-f 1307/456/1 1308/455/1 1304/458/1
-f 1304/458/1 1303/457/1 1307/456/1
-f 1308/460/10 1305/459/10 1301/462/10
-f 1301/462/10 1304/461/10 1308/460/10
-f 1309/451/27 1310/452/27 1311/453/27
-f 1311/453/27 1312/454/27 1309/451/27
-f 1313/455/7 1314/456/7 1310/457/7
-f 1310/457/7 1309/458/7 1313/455/7
-f 1314/459/4 1315/460/4 1311/461/4
-f 1311/461/4 1310/462/4 1314/459/4
-f 1315/456/1 1316/455/1 1312/458/1
-f 1312/458/1 1311/457/1 1315/456/1
-f 1316/460/10 1313/459/10 1309/462/10
-f 1309/462/10 1312/461/10 1316/460/10
-f 1317/451/27 1318/452/27 1319/453/27
-f 1319/453/27 1320/454/27 1317/451/27
-f 1321/455/4 1322/456/4 1318/457/4
-f 1318/457/4 1317/458/4 1321/455/4
-f 1322/459/1 1323/460/1 1319/461/1
-f 1319/461/1 1318/462/1 1322/459/1
-f 1323/456/10 1324/455/10 1320/458/10
-f 1320/458/10 1319/457/10 1323/456/10
-f 1324/460/7 1321/459/7 1317/462/7
-f 1317/462/7 1320/461/7 1324/460/7
-f 1325/451/27 1326/452/27 1327/453/27
-f 1327/453/27 1328/454/27 1325/451/27
-f 1329/455/4 1330/456/4 1326/457/4
-f 1326/457/4 1325/458/4 1329/455/4
-f 1330/459/1 1331/460/1 1327/461/1
-f 1327/461/1 1326/462/1 1330/459/1
-f 1331/456/10 1332/455/10 1328/458/10
-f 1328/458/10 1327/457/10 1331/456/10
-f 1332/460/7 1329/459/7 1325/462/7
-f 1325/462/7 1328/461/7 1332/460/7
-f 1333/451/27 1334/452/27 1335/453/27
-f 1335/453/27 1336/454/27 1333/451/27
-f 1337/455/4 1338/456/4 1334/457/4
-f 1334/457/4 1333/458/4 1337/455/4
-f 1338/459/1 1339/460/1 1335/461/1
-f 1335/461/1 1334/462/1 1338/459/1
-f 1339/456/10 1340/455/10 1336/458/10
-f 1336/458/10 1335/457/10 1339/456/10
-f 1340/460/7 1337/459/7 1333/462/7
-f 1333/462/7 1336/461/7 1340/460/7
-f 1341/451/27 1342/452/27 1343/453/27
-f 1343/453/27 1344/454/27 1341/451/27
-f 1345/455/4 1346/456/4 1342/457/4
-f 1342/457/4 1341/458/4 1345/455/4
-f 1346/459/1 1347/460/1 1343/461/1
-f 1343/461/1 1342/462/1 1346/459/1
-f 1347/456/10 1348/455/10 1344/458/10
-f 1344/458/10 1343/457/10 1347/456/10
-f 1348/460/7 1345/459/7 1341/462/7
-f 1341/462/7 1344/461/7 1348/460/7
-f 1349/451/27 1350/452/27 1351/453/27
-f 1351/453/27 1352/454/27 1349/451/27
-f 1353/455/4 1354/456/4 1350/457/4
-f 1350/457/4 1349/458/4 1353/455/4
-f 1354/459/1 1355/460/1 1351/461/1
-f 1351/461/1 1350/462/1 1354/459/1
-f 1355/456/10 1356/455/10 1352/458/10
-f 1352/458/10 1351/457/10 1355/456/10
-f 1356/460/7 1353/459/7 1349/462/7
-f 1349/462/7 1352/461/7 1356/460/7
-f 1357/463/27 1358/464/27 1359/465/27
-f 1359/465/27 1360/466/27 1357/463/27
-f 1361/467/4 1362/468/4 1359/469/4
-f 1359/469/4 1358/470/4 1361/467/4
-f 1363/471/4 1364/472/4 1365/473/4
-f 1365/473/4 1366/474/4 1363/471/4
-f 1367/475/1 1368/476/1 1369/477/1
-f 1369/477/1 1370/478/1 1367/475/1
-f 1371/479/27 1372/480/288 1373/480/288
-f 1373/480/288 1374/479/27 1371/479/27
-f 1375/476/7 1376/475/7 1377/481/7
-f 1377/481/7 1378/482/7 1375/476/7
-f 1379/483/26 1380/484/289 1381/485/289
-f 1381/485/289 1382/483/26 1379/483/26
-f 1383/486/4 1384/487/4 1385/488/4
-f 1386/489/4 1387/490/4 1372/491/4
-f 1372/491/4 1371/492/4 1386/489/4
-f 1388/493/4 1389/494/4 1390/495/4
-f 1391/496/4 1392/497/4 1390/495/4
-f 1390/495/4 1389/494/4 1391/496/4
-f 1393/498/4 1394/499/4 1365/473/4
-f 1365/473/4 1364/472/4 1393/498/4
-f 1395/500/290 1371/479/27 1374/479/27
-f 1374/479/27 1396/500/290 1395/500/290
-f 1397/501/291 1379/483/26 1382/483/26
-f 1382/483/26 1398/501/291 1397/501/291
-f 1395/502/4 1399/503/4 1386/489/4
-f 1386/489/4 1371/492/4 1395/502/4
-f 1391/496/4 1383/486/4 1385/488/4
-f 1385/488/4 1392/497/4 1391/496/4
-f 1387/504/7 1363/504/7 1366/505/7
-f 1366/505/7 1400/505/7 1387/504/7
-f 1386/506/292 1364/506/292 1363/504/292
-f 1363/504/292 1387/504/292 1386/506/292
-f 1399/507/293 1393/507/293 1364/506/293
-f 1364/506/293 1386/506/293 1399/507/293
-f 1401/508/1 1394/508/1 1393/507/1
-f 1393/507/1 1399/507/1 1401/508/1
-f 1402/509/210 1365/510/210 1394/511/210
-f 1394/511/210 1401/512/210 1402/509/210
-f 1400/513/294 1366/514/294 1365/510/294
-f 1365/510/294 1402/509/294 1400/513/294
-f 1403/515/4 1401/516/4 1399/503/4
-f 1399/503/4 1395/502/4 1403/515/4
-f 1395/500/7 1396/500/7 1404/517/7
-f 1404/517/7 1403/517/7 1395/500/7
-f 1372/480/1 1405/518/1 1406/518/1
-f 1406/518/1 1373/480/1 1372/480/1
-f 1405/519/4 1372/491/4 1387/490/4
-f 1387/490/4 1400/474/4 1405/519/4
-f 1367/475/1 1407/481/1 1408/482/1
-f 1408/482/1 1368/476/1 1367/475/1
-f 1400/513/295 1385/513/295 1384/485/295
-f 1384/485/295 1405/520/295 1400/513/295
-f 1402/509/294 1392/509/294 1385/513/294
-f 1385/513/294 1400/513/294 1402/509/294
-f 1401/512/210 1390/512/210 1392/509/210
-f 1392/509/210 1402/509/210 1401/512/210
-f 1403/521/296 1388/521/296 1390/512/296
-f 1390/512/296 1401/512/296 1403/521/296
-f 1375/476/7 1409/477/7 1410/478/7
-f 1410/478/7 1376/475/7 1375/476/7
-f 1379/483/289 1391/522/289 1389/523/289
-f 1389/523/289 1380/484/289 1379/483/289
-f 1397/501/291 1383/524/291 1391/522/291
-f 1391/522/291 1379/483/291 1397/501/291
-f 1405/520/27 1367/525/27 1370/526/27
-f 1370/526/27 1406/527/27 1405/520/27
-f 1384/485/27 1407/528/27 1367/525/27
-f 1367/525/27 1405/520/27 1384/485/27
-f 1383/486/4 1408/486/4 1407/487/4
-f 1407/487/4 1384/487/4 1383/486/4
-f 1397/501/26 1368/501/26 1408/524/26
-f 1408/524/26 1383/524/26 1397/501/26
-f 1398/501/26 1369/501/26 1368/501/26
-f 1368/501/26 1397/501/26 1398/501/26
-f 1380/484/26 1375/484/26 1378/485/26
-f 1378/485/26 1381/485/26 1380/484/26
-f 1389/523/26 1409/523/26 1375/484/26
-f 1375/484/26 1380/484/26 1389/523/26
-f 1388/493/4 1410/529/4 1409/530/4
-f 1409/530/4 1389/494/4 1388/493/4
-f 1403/521/27 1376/531/27 1410/532/27
-f 1410/532/27 1388/521/27 1403/521/27
-f 1404/533/27 1377/531/27 1376/531/27
-f 1376/531/27 1403/521/27 1404/533/27
-f 1411/471/4 1412/472/4 1413/473/4
-f 1413/473/4 1414/474/4 1411/471/4
-f 1415/475/1 1416/476/1 1417/477/1
-f 1417/477/1 1418/478/1 1415/475/1
-f 1419/479/27 1420/480/288 1421/480/288
-f 1421/480/288 1422/479/27 1419/479/27
-f 1423/476/7 1424/475/7 1425/481/7
-f 1425/481/7 1426/482/7 1423/476/7
-f 1427/483/26 1428/484/289 1429/485/289
-f 1429/485/289 1430/483/26 1427/483/26
-f 1431/486/4 1432/487/4 1433/488/4
-f 1434/489/4 1435/490/4 1420/491/4
-f 1420/491/4 1419/492/4 1434/489/4
-f 1436/493/4 1437/494/4 1438/495/4
-f 1439/496/4 1440/497/4 1438/495/4
-f 1438/495/4 1437/494/4 1439/496/4
-f 1441/498/4 1442/499/4 1413/473/4
-f 1413/473/4 1412/472/4 1441/498/4
-f 1443/500/290 1419/479/27 1422/479/27
-f 1422/479/27 1444/500/290 1443/500/290
-f 1445/501/291 1427/483/26 1430/483/26
-f 1430/483/26 1446/501/291 1445/501/291
-f 1443/502/4 1447/503/4 1434/489/4
-f 1434/489/4 1419/492/4 1443/502/4
-f 1439/496/4 1431/486/4 1433/488/4
-f 1433/488/4 1440/497/4 1439/496/4
-f 1435/504/7 1411/504/7 1414/505/7
-f 1414/505/7 1448/505/7 1435/504/7
-f 1434/506/292 1412/506/292 1411/504/292
-f 1411/504/292 1435/504/292 1434/506/292
-f 1447/507/293 1441/507/293 1412/506/293
-f 1412/506/293 1434/506/293 1447/507/293
-f 1449/508/1 1442/508/1 1441/507/1
-f 1441/507/1 1447/507/1 1449/508/1
-f 1450/509/210 1413/510/210 1442/511/210
-f 1442/511/210 1449/512/210 1450/509/210
-f 1448/513/294 1414/514/294 1413/510/294
-f 1413/510/294 1450/509/294 1448/513/294
-f 1451/515/4 1449/516/4 1447/503/4
-f 1447/503/4 1443/502/4 1451/515/4
-f 1443/500/7 1444/500/7 1452/517/7
-f 1452/517/7 1451/517/7 1443/500/7
-f 1420/480/1 1453/518/1 1454/518/1
-f 1454/518/1 1421/480/1 1420/480/1
-f 1453/519/4 1420/491/4 1435/490/4
-f 1435/490/4 1448/474/4 1453/519/4
-f 1415/475/1 1455/481/1 1456/482/1
-f 1456/482/1 1416/476/1 1415/475/1
-f 1448/513/295 1433/513/295 1432/485/295
-f 1432/485/295 1453/520/295 1448/513/295
-f 1450/509/294 1440/509/294 1433/513/294
-f 1433/513/294 1448/513/294 1450/509/294
-f 1449/512/210 1438/512/210 1440/509/210
-f 1440/509/210 1450/509/210 1449/512/210
-f 1451/521/296 1436/521/296 1438/512/296
-f 1438/512/296 1449/512/296 1451/521/296
-f 1423/476/7 1457/477/7 1458/478/7
-f 1458/478/7 1424/475/7 1423/476/7
-f 1427/483/289 1439/522/289 1437/523/289
-f 1437/523/289 1428/484/289 1427/483/289
-f 1445/501/291 1431/524/291 1439/522/291
-f 1439/522/291 1427/483/291 1445/501/291
-f 1453/520/27 1415/525/27 1418/526/27
-f 1418/526/27 1454/527/27 1453/520/27
-f 1432/485/27 1455/528/27 1415/525/27
-f 1415/525/27 1453/520/27 1432/485/27
-f 1431/486/4 1456/486/4 1455/487/4
-f 1455/487/4 1432/487/4 1431/486/4
-f 1445/501/26 1416/501/26 1456/524/26
-f 1456/524/26 1431/524/26 1445/501/26
-f 1446/501/26 1417/501/26 1416/501/26
-f 1416/501/26 1445/501/26 1446/501/26
-f 1428/484/26 1423/484/26 1426/485/26
-f 1426/485/26 1429/485/26 1428/484/26
-f 1437/523/26 1457/523/26 1423/484/26
-f 1423/484/26 1428/484/26 1437/523/26
-f 1436/493/4 1458/529/4 1457/530/4
-f 1457/530/4 1437/494/4 1436/493/4
-f 1451/521/27 1424/531/27 1458/532/27
-f 1458/532/27 1436/521/27 1451/521/27
-f 1452/533/27 1425/531/27 1424/531/27
-f 1424/531/27 1451/521/27 1452/533/27
-f 1459/471/4 1460/472/4 1461/473/4
-f 1461/473/4 1462/474/4 1459/471/4
-f 1463/475/1 1464/476/1 1465/477/1
-f 1465/477/1 1466/478/1 1463/475/1
-f 1467/479/27 1468/480/288 1469/480/288
-f 1469/480/288 1470/479/27 1467/479/27
-f 1471/476/7 1472/475/7 1473/481/7
-f 1473/481/7 1474/482/7 1471/476/7
-f 1475/483/26 1476/484/289 1477/485/289
-f 1477/485/289 1478/483/26 1475/483/26
-f 1479/486/4 1480/487/4 1481/488/4
-f 1482/489/4 1483/490/4 1468/491/4
-f 1468/491/4 1467/492/4 1482/489/4
-f 1484/493/4 1485/494/4 1486/495/4
-f 1487/496/4 1488/497/4 1486/495/4
-f 1486/495/4 1485/494/4 1487/496/4
-f 1489/498/4 1490/499/4 1461/473/4
-f 1461/473/4 1460/472/4 1489/498/4
-f 1491/500/290 1467/479/27 1470/479/27
-f 1470/479/27 1492/500/290 1491/500/290
-f 1493/501/291 1475/483/26 1478/483/26
-f 1478/483/26 1494/501/291 1493/501/291
-f 1491/502/4 1495/503/4 1482/489/4
-f 1482/489/4 1467/492/4 1491/502/4
-f 1487/496/4 1479/486/4 1481/488/4
-f 1481/488/4 1488/497/4 1487/496/4
-f 1483/504/7 1459/504/7 1462/505/7
-f 1462/505/7 1496/505/7 1483/504/7
-f 1482/506/292 1460/506/292 1459/504/292
-f 1459/504/292 1483/504/292 1482/506/292
-f 1495/507/293 1489/507/293 1460/506/293
-f 1460/506/293 1482/506/293 1495/507/293
-f 1497/508/1 1490/508/1 1489/507/1
-f 1489/507/1 1495/507/1 1497/508/1
-f 1498/509/210 1461/510/210 1490/511/210
-f 1490/511/210 1497/512/210 1498/509/210
-f 1496/513/294 1462/514/294 1461/510/294
-f 1461/510/294 1498/509/294 1496/513/294
-f 1499/515/4 1497/516/4 1495/503/4
-f 1495/503/4 1491/502/4 1499/515/4
-f 1491/500/7 1492/500/7 1500/517/7
-f 1500/517/7 1499/517/7 1491/500/7
-f 1468/480/1 1501/518/1 1502/518/1
-f 1502/518/1 1469/480/1 1468/480/1
-f 1501/519/4 1468/491/4 1483/490/4
-f 1483/490/4 1496/474/4 1501/519/4
-f 1463/475/1 1503/481/1 1504/482/1
-f 1504/482/1 1464/476/1 1463/475/1
-f 1496/513/295 1481/513/295 1480/485/295
-f 1480/485/295 1501/520/295 1496/513/295
-f 1498/509/294 1488/509/294 1481/513/294
-f 1481/513/294 1496/513/294 1498/509/294
-f 1497/512/210 1486/512/210 1488/509/210
-f 1488/509/210 1498/509/210 1497/512/210
-f 1499/521/296 1484/521/296 1486/512/296
-f 1486/512/296 1497/512/296 1499/521/296
-f 1471/476/7 1505/477/7 1506/478/7
-f 1506/478/7 1472/475/7 1471/476/7
-f 1475/483/289 1487/522/289 1485/523/289
-f 1485/523/289 1476/484/289 1475/483/289
-f 1493/501/291 1479/524/291 1487/522/291
-f 1487/522/291 1475/483/291 1493/501/291
-f 1501/520/27 1463/525/27 1466/526/27
-f 1466/526/27 1502/527/27 1501/520/27
-f 1480/485/27 1503/528/27 1463/525/27
-f 1463/525/27 1501/520/27 1480/485/27
-f 1479/486/4 1504/486/4 1503/487/4
-f 1503/487/4 1480/487/4 1479/486/4
-f 1493/501/26 1464/501/26 1504/524/26
-f 1504/524/26 1479/524/26 1493/501/26
-f 1494/501/26 1465/501/26 1464/501/26
-f 1464/501/26 1493/501/26 1494/501/26
-f 1476/484/26 1471/484/26 1474/485/26
-f 1474/485/26 1477/485/26 1476/484/26
-f 1485/523/26 1505/523/26 1471/484/26
-f 1471/484/26 1476/484/26 1485/523/26
-f 1484/493/4 1506/529/4 1505/530/4
-f 1505/530/4 1485/494/4 1484/493/4
-f 1499/521/27 1472/531/27 1506/532/27
-f 1506/532/27 1484/521/27 1499/521/27
-f 1500/533/27 1473/531/27 1472/531/27
-f 1472/531/27 1499/521/27 1500/533/27
-f 1507/471/4 1508/472/4 1509/473/4
-f 1509/473/4 1510/474/4 1507/471/4
-f 1511/475/1 1512/476/1 1513/477/1
-f 1513/477/1 1514/478/1 1511/475/1
-f 1515/479/27 1516/480/288 1517/480/288
-f 1517/480/288 1518/479/27 1515/479/27
-f 1519/476/7 1520/475/7 1521/481/7
-f 1521/481/7 1522/482/7 1519/476/7
-f 1523/483/26 1524/484/289 1525/485/289
-f 1525/485/289 1526/483/26 1523/483/26
-f 1527/486/4 1528/487/4 1529/488/4
-f 1530/489/4 1531/490/4 1516/491/4
-f 1516/491/4 1515/492/4 1530/489/4
-f 1532/493/4 1533/494/4 1534/495/4
-f 1535/496/4 1536/497/4 1534/495/4
-f 1534/495/4 1533/494/4 1535/496/4
-f 1537/498/4 1538/499/4 1509/473/4
-f 1509/473/4 1508/472/4 1537/498/4
-f 1539/500/290 1515/479/27 1518/479/27
-f 1518/479/27 1540/500/290 1539/500/290
-f 1541/501/291 1523/483/26 1526/483/26
-f 1526/483/26 1542/501/291 1541/501/291
-f 1539/502/4 1543/503/4 1530/489/4
-f 1530/489/4 1515/492/4 1539/502/4
-f 1535/496/4 1527/486/4 1529/488/4
-f 1529/488/4 1536/497/4 1535/496/4
-f 1531/504/7 1507/504/7 1510/505/7
-f 1510/505/7 1544/505/7 1531/504/7
-f 1530/506/292 1508/506/292 1507/504/292
-f 1507/504/292 1531/504/292 1530/506/292
-f 1543/507/293 1537/507/293 1508/506/293
-f 1508/506/293 1530/506/293 1543/507/293
-f 1545/508/1 1538/508/1 1537/507/1
-f 1537/507/1 1543/507/1 1545/508/1
-f 1546/509/210 1509/510/210 1538/511/210
-f 1538/511/210 1545/512/210 1546/509/210
-f 1544/513/294 1510/514/294 1509/510/294
-f 1509/510/294 1546/509/294 1544/513/294
-f 1547/515/4 1545/516/4 1543/503/4
-f 1543/503/4 1539/502/4 1547/515/4
-f 1539/500/7 1540/500/7 1548/517/7
-f 1548/517/7 1547/517/7 1539/500/7
-f 1516/480/1 1549/518/1 1550/518/1
-f 1550/518/1 1517/480/1 1516/480/1
-f 1549/519/4 1516/491/4 1531/490/4
-f 1531/490/4 1544/474/4 1549/519/4
-f 1511/475/1 1551/481/1 1552/482/1
-f 1552/482/1 1512/476/1 1511/475/1
-f 1544/513/295 1529/513/295 1528/485/295
-f 1528/485/295 1549/520/295 1544/513/295
-f 1546/509/294 1536/509/294 1529/513/294
-f 1529/513/294 1544/513/294 1546/509/294
-f 1545/512/210 1534/512/210 1536/509/210
-f 1536/509/210 1546/509/210 1545/512/210
-f 1547/521/296 1532/521/296 1534/512/296
-f 1534/512/296 1545/512/296 1547/521/296
-f 1519/476/7 1553/477/7 1554/478/7
-f 1554/478/7 1520/475/7 1519/476/7
-f 1523/483/289 1535/522/289 1533/523/289
-f 1533/523/289 1524/484/289 1523/483/289
-f 1541/501/291 1527/524/291 1535/522/291
-f 1535/522/291 1523/483/291 1541/501/291
-f 1549/520/27 1511/525/27 1514/526/27
-f 1514/526/27 1550/527/27 1549/520/27
-f 1528/485/27 1551/528/27 1511/525/27
-f 1511/525/27 1549/520/27 1528/485/27
-f 1527/486/4 1552/486/4 1551/487/4
-f 1551/487/4 1528/487/4 1527/486/4
-f 1541/501/26 1512/501/26 1552/524/26
-f 1552/524/26 1527/524/26 1541/501/26
-f 1542/501/26 1513/501/26 1512/501/26
-f 1512/501/26 1541/501/26 1542/501/26
-f 1524/484/26 1519/484/26 1522/485/26
-f 1522/485/26 1525/485/26 1524/484/26
-f 1533/523/26 1553/523/26 1519/484/26
-f 1519/484/26 1524/484/26 1533/523/26
-f 1532/493/4 1554/529/4 1553/530/4
-f 1553/530/4 1533/494/4 1532/493/4
-f 1547/521/27 1520/531/27 1554/532/27
-f 1554/532/27 1532/521/27 1547/521/27
-f 1548/533/27 1521/531/27 1520/531/27
-f 1520/531/27 1547/521/27 1548/533/27
-f 1555/471/4 1556/472/4 1557/473/4
-f 1557/473/4 1558/474/4 1555/471/4
-f 1559/475/1 1560/476/1 1561/477/1
-f 1561/477/1 1562/478/1 1559/475/1
-f 1563/479/27 1564/480/288 1565/480/288
-f 1565/480/288 1566/479/27 1563/479/27
-f 1567/476/7 1568/475/7 1569/481/7
-f 1569/481/7 1570/482/7 1567/476/7
-f 1571/483/26 1572/484/289 1573/485/289
-f 1573/485/289 1574/483/26 1571/483/26
-f 1575/486/4 1576/487/4 1577/488/4
-f 1578/489/4 1579/490/4 1564/491/4
-f 1564/491/4 1563/492/4 1578/489/4
-f 1580/493/4 1581/494/4 1582/495/4
-f 1583/496/4 1584/497/4 1582/495/4
-f 1582/495/4 1581/494/4 1583/496/4
-f 1585/498/4 1586/499/4 1557/473/4
-f 1557/473/4 1556/472/4 1585/498/4
-f 1587/500/290 1563/479/27 1566/479/27
-f 1566/479/27 1588/500/290 1587/500/290
-f 1589/501/291 1571/483/26 1574/483/26
-f 1574/483/26 1590/501/291 1589/501/291
-f 1587/502/4 1591/503/4 1578/489/4
-f 1578/489/4 1563/492/4 1587/502/4
-f 1583/496/4 1575/486/4 1577/488/4
-f 1577/488/4 1584/497/4 1583/496/4
-f 1579/504/7 1555/504/7 1558/505/7
-f 1558/505/7 1592/505/7 1579/504/7
-f 1578/506/292 1556/506/292 1555/504/292
-f 1555/504/292 1579/504/292 1578/506/292
-f 1591/507/293 1585/507/293 1556/506/293
-f 1556/506/293 1578/506/293 1591/507/293
-f 1593/508/1 1586/508/1 1585/507/1
-f 1585/507/1 1591/507/1 1593/508/1
-f 1594/509/210 1557/510/210 1586/511/210
-f 1586/511/210 1593/512/210 1594/509/210
-f 1592/513/294 1558/514/294 1557/510/294
-f 1557/510/294 1594/509/294 1592/513/294
-f 1595/515/4 1593/516/4 1591/503/4
-f 1591/503/4 1587/502/4 1595/515/4
-f 1587/500/7 1588/500/7 1596/517/7
-f 1596/517/7 1595/517/7 1587/500/7
-f 1564/480/1 1597/518/1 1598/518/1
-f 1598/518/1 1565/480/1 1564/480/1
-f 1597/519/4 1564/491/4 1579/490/4
-f 1579/490/4 1592/474/4 1597/519/4
-f 1559/475/1 1599/481/1 1600/482/1
-f 1600/482/1 1560/476/1 1559/475/1
-f 1592/513/295 1577/513/295 1576/485/295
-f 1576/485/295 1597/520/295 1592/513/295
-f 1594/509/294 1584/509/294 1577/513/294
-f 1577/513/294 1592/513/294 1594/509/294
-f 1593/512/210 1582/512/210 1584/509/210
-f 1584/509/210 1594/509/210 1593/512/210
-f 1595/521/296 1580/521/296 1582/512/296
-f 1582/512/296 1593/512/296 1595/521/296
-f 1567/476/7 1601/477/7 1602/478/7
-f 1602/478/7 1568/475/7 1567/476/7
-f 1571/483/289 1583/522/289 1581/523/289
-f 1581/523/289 1572/484/289 1571/483/289
-f 1589/501/291 1575/524/291 1583/522/291
-f 1583/522/291 1571/483/291 1589/501/291
-f 1597/520/27 1559/525/27 1562/526/27
-f 1562/526/27 1598/527/27 1597/520/27
-f 1576/485/27 1599/528/27 1559/525/27
-f 1559/525/27 1597/520/27 1576/485/27
-f 1575/486/4 1600/486/4 1599/487/4
-f 1599/487/4 1576/487/4 1575/486/4
-f 1589/501/26 1560/501/26 1600/524/26
-f 1600/524/26 1575/524/26 1589/501/26
-f 1590/501/26 1561/501/26 1560/501/26
-f 1560/501/26 1589/501/26 1590/501/26
-f 1572/484/26 1567/484/26 1570/485/26
-f 1570/485/26 1573/485/26 1572/484/26
-f 1581/523/26 1601/523/26 1567/484/26
-f 1567/484/26 1572/484/26 1581/523/26
-f 1580/493/4 1602/529/4 1601/530/4
-f 1601/530/4 1581/494/4 1580/493/4
-f 1595/521/27 1568/531/27 1602/532/27
-f 1602/532/27 1580/521/27 1595/521/27
-f 1596/533/27 1569/531/27 1568/531/27
-f 1568/531/27 1595/521/27 1596/533/27
-f 1603/471/4 1604/472/4 1605/473/4
-f 1605/473/4 1606/474/4 1603/471/4
-f 1607/475/1 1608/476/1 1609/477/1
-f 1609/477/1 1610/478/1 1607/475/1
-f 1611/479/27 1612/480/288 1613/480/288
-f 1613/480/288 1614/479/27 1611/479/27
-f 1615/476/7 1616/475/7 1617/481/7
-f 1617/481/7 1618/482/7 1615/476/7
-f 1619/483/26 1620/484/289 1621/485/289
-f 1621/485/289 1622/483/26 1619/483/26
-f 1623/486/4 1624/487/4 1625/488/4
-f 1626/489/4 1627/490/4 1612/491/4
-f 1612/491/4 1611/492/4 1626/489/4
-f 1628/493/4 1629/494/4 1630/495/4
-f 1631/496/4 1632/497/4 1630/495/4
-f 1630/495/4 1629/494/4 1631/496/4
-f 1633/498/4 1634/499/4 1605/473/4
-f 1605/473/4 1604/472/4 1633/498/4
-f 1635/500/290 1611/479/27 1614/479/27
-f 1614/479/27 1636/500/290 1635/500/290
-f 1637/501/291 1619/483/26 1622/483/26
-f 1622/483/26 1638/501/291 1637/501/291
-f 1635/502/4 1639/503/4 1626/489/4
-f 1626/489/4 1611/492/4 1635/502/4
-f 1631/496/4 1623/486/4 1625/488/4
-f 1625/488/4 1632/497/4 1631/496/4
-f 1627/504/7 1603/504/7 1606/505/7
-f 1606/505/7 1640/505/7 1627/504/7
-f 1626/506/292 1604/506/292 1603/504/292
-f 1603/504/292 1627/504/292 1626/506/292
-f 1639/507/293 1633/507/293 1604/506/293
-f 1604/506/293 1626/506/293 1639/507/293
-f 1641/508/1 1634/508/1 1633/507/1
-f 1633/507/1 1639/507/1 1641/508/1
-f 1642/509/210 1605/510/210 1634/511/210
-f 1634/511/210 1641/512/210 1642/509/210
-f 1640/513/294 1606/514/294 1605/510/294
-f 1605/510/294 1642/509/294 1640/513/294
-f 1643/515/4 1641/516/4 1639/503/4
-f 1639/503/4 1635/502/4 1643/515/4
-f 1635/500/7 1636/500/7 1644/517/7
-f 1644/517/7 1643/517/7 1635/500/7
-f 1612/480/1 1645/518/1 1646/518/1
-f 1646/518/1 1613/480/1 1612/480/1
-f 1645/519/4 1612/491/4 1627/490/4
-f 1627/490/4 1640/474/4 1645/519/4
-f 1607/475/1 1647/481/1 1648/482/1
-f 1648/482/1 1608/476/1 1607/475/1
-f 1640/513/295 1625/513/295 1624/485/295
-f 1624/485/295 1645/520/295 1640/513/295
-f 1642/509/294 1632/509/294 1625/513/294
-f 1625/513/294 1640/513/294 1642/509/294
-f 1641/512/210 1630/512/210 1632/509/210
-f 1632/509/210 1642/509/210 1641/512/210
-f 1643/521/296 1628/521/296 1630/512/296
-f 1630/512/296 1641/512/296 1643/521/296
-f 1615/476/7 1649/477/7 1650/478/7
-f 1650/478/7 1616/475/7 1615/476/7
-f 1619/483/289 1631/522/289 1629/523/289
-f 1629/523/289 1620/484/289 1619/483/289
-f 1637/501/291 1623/524/291 1631/522/297
-f 1631/522/297 1619/483/297 1637/501/291
-f 1645/520/27 1607/525/27 1610/526/27
-f 1610/526/27 1646/527/27 1645/520/27
-f 1624/485/27 1647/528/27 1607/525/27
-f 1607/525/27 1645/520/27 1624/485/27
-f 1623/486/4 1648/486/4 1647/487/4
-f 1647/487/4 1624/487/4 1623/486/4
-f 1637/501/26 1608/501/26 1648/524/26
-f 1648/524/26 1623/524/26 1637/501/26
-f 1638/501/26 1609/501/26 1608/501/26
-f 1608/501/26 1637/501/26 1638/501/26
-f 1620/484/26 1615/484/26 1618/485/26
-f 1618/485/26 1621/485/26 1620/484/26
-f 1629/523/26 1649/523/26 1615/484/26
-f 1615/484/26 1620/484/26 1629/523/26
-f 1628/493/4 1650/529/4 1649/530/4
-f 1649/530/4 1629/494/4 1628/493/4
-f 1643/521/27 1616/531/27 1650/532/27
-f 1650/532/27 1628/521/27 1643/521/27
-f 1644/533/27 1617/531/27 1616/531/27
-f 1616/531/27 1643/521/27 1644/533/27
-f 1651/471/4 1652/472/4 1653/473/4
-f 1653/473/4 1654/474/4 1651/471/4
-f 1655/475/1 1656/476/1 1657/477/1
-f 1657/477/1 1658/478/1 1655/475/1
-f 1659/479/27 1660/480/288 1661/480/288
-f 1661/480/288 1662/479/27 1659/479/27
-f 1663/476/7 1664/475/7 1665/481/7
-f 1665/481/7 1666/482/7 1663/476/7
-f 1667/483/26 1668/484/289 1669/485/289
-f 1669/485/289 1670/483/26 1667/483/26
-f 1671/486/4 1672/487/4 1673/488/4
-f 1674/489/4 1675/490/4 1660/491/4
-f 1660/491/4 1659/492/4 1674/489/4
-f 1676/493/4 1677/494/4 1678/495/4
-f 1679/496/4 1680/497/4 1678/495/4
-f 1678/495/4 1677/494/4 1679/496/4
-f 1681/498/4 1682/499/4 1653/473/4
-f 1653/473/4 1652/472/4 1681/498/4
-f 1683/500/290 1659/479/27 1662/479/27
-f 1662/479/27 1684/500/290 1683/500/290
-f 1685/501/291 1667/483/26 1670/483/26
-f 1670/483/26 1686/501/291 1685/501/291
-f 1683/502/4 1687/503/4 1674/489/4
-f 1674/489/4 1659/492/4 1683/502/4
-f 1679/496/4 1671/486/4 1673/488/4
-f 1673/488/4 1680/497/4 1679/496/4
-f 1675/504/7 1651/504/7 1654/505/7
-f 1654/505/7 1688/505/7 1675/504/7
-f 1674/506/292 1652/506/292 1651/504/292
-f 1651/504/292 1675/504/292 1674/506/292
-f 1687/507/293 1681/507/293 1652/506/293
-f 1652/506/293 1674/506/293 1687/507/293
-f 1689/508/1 1682/508/1 1681/507/1
-f 1681/507/1 1687/507/1 1689/508/1
-f 1690/509/210 1653/510/210 1682/511/210
-f 1682/511/210 1689/512/210 1690/509/210
-f 1688/513/294 1654/514/294 1653/510/294
-f 1653/510/294 1690/509/294 1688/513/294
-f 1691/515/4 1689/516/4 1687/503/4
-f 1687/503/4 1683/502/4 1691/515/4
-f 1683/500/7 1684/500/7 1692/517/7
-f 1692/517/7 1691/517/7 1683/500/7
-f 1660/480/1 1693/518/1 1694/518/1
-f 1694/518/1 1661/480/1 1660/480/1
-f 1693/519/4 1660/491/4 1675/490/4
-f 1675/490/4 1688/474/4 1693/519/4
-f 1655/475/1 1695/481/1 1696/482/1
-f 1696/482/1 1656/476/1 1655/475/1
-f 1688/513/295 1673/513/295 1672/485/295
-f 1672/485/295 1693/520/295 1688/513/295
-f 1690/509/294 1680/509/294 1673/513/294
-f 1673/513/294 1688/513/294 1690/509/294
-f 1689/512/210 1678/512/210 1680/509/210
-f 1680/509/210 1690/509/210 1689/512/210
-f 1691/521/296 1676/521/296 1678/512/296
-f 1678/512/296 1689/512/296 1691/521/296
-f 1663/476/7 1697/477/7 1698/478/7
-f 1698/478/7 1664/475/7 1663/476/7
-f 1667/483/298 1679/522/298 1677/523/289
-f 1677/523/289 1668/484/289 1667/483/298
-f 1685/501/291 1671/524/291 1679/522/297
-f 1679/522/297 1667/483/297 1685/501/291
-f 1693/520/27 1655/525/27 1658/526/27
-f 1658/526/27 1694/527/27 1693/520/27
-f 1672/485/27 1695/528/27 1655/525/27
-f 1655/525/27 1693/520/27 1672/485/27
-f 1671/486/4 1696/486/4 1695/487/4
-f 1695/487/4 1672/487/4 1671/486/4
-f 1685/501/26 1656/501/26 1696/524/26
-f 1696/524/26 1671/524/26 1685/501/26
-f 1686/501/26 1657/501/26 1656/501/26
-f 1656/501/26 1685/501/26 1686/501/26
-f 1668/484/26 1663/484/26 1666/485/26
-f 1666/485/26 1669/485/26 1668/484/26
-f 1677/523/26 1697/523/26 1663/484/26
-f 1663/484/26 1668/484/26 1677/523/26
-f 1676/493/4 1698/529/4 1697/530/4
-f 1697/530/4 1677/494/4 1676/493/4
-f 1691/521/27 1664/531/27 1698/532/27
-f 1698/532/27 1676/521/27 1691/521/27
-f 1692/533/27 1665/531/27 1664/531/27
-f 1664/531/27 1691/521/27 1692/533/27
-f 1699/471/1 1700/472/1 1701/473/1
-f 1701/473/1 1702/474/1 1699/471/1
-f 1703/475/10 1704/476/10 1705/477/10
-f 1705/477/10 1706/478/10 1703/475/10
-f 1707/479/27 1708/480/299 1709/480/299
-f 1709/480/299 1710/479/27 1707/479/27
-f 1711/476/4 1712/475/4 1713/481/4
-f 1713/481/4 1714/482/4 1711/476/4
-f 1715/483/26 1716/484/300 1717/485/300
-f 1717/485/300 1718/483/26 1715/483/26
-f 1719/486/1 1720/487/1 1721/488/1
-f 1722/489/1 1723/490/1 1708/491/1
-f 1708/491/1 1707/492/1 1722/489/1
-f 1724/493/1 1725/494/1 1726/495/1
-f 1727/496/1 1728/497/1 1726/495/1
-f 1726/495/1 1725/494/1 1727/496/1
-f 1729/498/1 1730/499/1 1701/473/1
-f 1701/473/1 1700/472/1 1729/498/1
-f 1731/500/301 1707/479/27 1710/479/27
-f 1710/479/27 1732/500/301 1731/500/301
-f 1733/501/302 1715/483/26 1718/483/26
-f 1718/483/26 1734/501/302 1733/501/302
-f 1731/502/1 1735/503/1 1722/489/1
-f 1722/489/1 1707/492/1 1731/502/1
-f 1727/496/1 1719/486/1 1721/488/1
-f 1721/488/1 1728/497/1 1727/496/1
-f 1723/504/4 1699/504/4 1702/505/4
-f 1702/505/4 1736/505/4 1723/504/4
-f 1722/506/303 1700/506/303 1699/504/303
-f 1699/504/303 1723/504/303 1722/506/303
-f 1735/507/304 1729/507/304 1700/506/304
-f 1700/506/304 1722/506/304 1735/507/304
-f 1737/508/10 1730/508/10 1729/507/10
-f 1729/507/10 1735/507/10 1737/508/10
-f 1738/509/305 1701/510/305 1730/511/305
-f 1730/511/305 1737/512/305 1738/509/305
-f 1736/513/306 1702/514/306 1701/510/306
-f 1701/510/306 1738/509/306 1736/513/306
-f 1739/515/1 1737/516/1 1735/503/1
-f 1735/503/1 1731/502/1 1739/515/1
-f 1731/500/4 1732/500/4 1740/517/4
-f 1740/517/4 1739/517/4 1731/500/4
-f 1708/480/10 1741/518/10 1742/518/10
-f 1742/518/10 1709/480/10 1708/480/10
-f 1741/519/1 1708/491/1 1723/490/1
-f 1723/490/1 1736/474/1 1741/519/1
-f 1703/475/10 1743/481/10 1744/482/10
-f 1744/482/10 1704/476/10 1703/475/10
-f 1736/513/307 1721/513/307 1720/485/307
-f 1720/485/307 1741/520/307 1736/513/307
-f 1738/509/306 1728/509/306 1721/513/306
-f 1721/513/306 1736/513/306 1738/509/306
-f 1737/512/305 1726/512/305 1728/509/305
-f 1728/509/305 1738/509/305 1737/512/305
-f 1739/521/308 1724/521/308 1726/512/308
-f 1726/512/308 1737/512/308 1739/521/308
-f 1711/476/4 1745/477/4 1746/478/4
-f 1746/478/4 1712/475/4 1711/476/4
-f 1715/483/300 1727/522/300 1725/523/300
-f 1725/523/300 1716/484/300 1715/483/300
-f 1733/501/302 1719/524/302 1727/522/302
-f 1727/522/302 1715/483/302 1733/501/302
-f 1741/520/27 1703/525/27 1706/526/27
-f 1706/526/27 1742/527/27 1741/520/27
-f 1720/485/27 1743/528/27 1703/525/27
-f 1703/525/27 1741/520/27 1720/485/27
-f 1719/486/1 1744/486/1 1743/487/1
-f 1743/487/1 1720/487/1 1719/486/1
-f 1733/501/26 1704/501/26 1744/524/26
-f 1744/524/26 1719/524/26 1733/501/26
-f 1734/501/26 1705/501/26 1704/501/26
-f 1704/501/26 1733/501/26 1734/501/26
-f 1716/484/26 1711/484/26 1714/485/26
-f 1714/485/26 1717/485/26 1716/484/26
-f 1725/523/26 1745/523/26 1711/484/26
-f 1711/484/26 1716/484/26 1725/523/26
-f 1724/493/1 1746/529/1 1745/530/1
-f 1745/530/1 1725/494/1 1724/493/1
-f 1739/521/27 1712/531/27 1746/532/27
-f 1746/532/27 1724/521/27 1739/521/27
-f 1740/533/27 1713/531/27 1712/531/27
-f 1712/531/27 1739/521/27 1740/533/27
-f 1747/471/1 1748/474/1 1749/473/1
-f 1749/473/1 1750/472/1 1747/471/1
-f 1751/475/4 1752/478/4 1753/477/4
-f 1753/477/4 1754/476/4 1751/475/4
-f 1755/479/27 1756/479/27 1757/480/301
-f 1757/480/301 1758/480/301 1755/479/27
-f 1759/476/10 1760/482/10 1761/481/10
-f 1761/481/10 1762/475/10 1759/476/10
-f 1763/483/26 1764/483/26 1765/485/302
-f 1765/485/302 1766/484/302 1763/483/26
-f 1767/486/1 1768/488/1 1769/487/1
-f 1770/489/1 1755/492/1 1758/491/1
-f 1758/491/1 1771/490/1 1770/489/1
-f 1772/493/1 1773/495/1 1774/494/1
-f 1775/496/1 1774/494/1 1773/495/1
-f 1773/495/1 1776/497/1 1775/496/1
-f 1777/498/1 1750/472/1 1749/473/1
-f 1749/473/1 1778/499/1 1777/498/1
-f 1779/500/299 1780/500/299 1756/479/27
-f 1756/479/27 1755/479/27 1779/500/299
-f 1781/501/300 1782/501/300 1764/483/26
-f 1764/483/26 1763/483/26 1781/501/300
-f 1779/502/1 1755/492/1 1770/489/1
-f 1770/489/1 1783/503/1 1779/502/1
-f 1775/496/1 1776/497/1 1768/488/1
-f 1768/488/1 1767/486/1 1775/496/1
-f 1771/504/10 1784/505/10 1748/505/10
-f 1748/505/10 1747/504/10 1771/504/10
-f 1770/506/304 1771/504/304 1747/504/304
-f 1747/504/304 1750/506/304 1770/506/304
-f 1783/507/303 1770/506/303 1750/506/303
-f 1750/506/303 1777/507/303 1783/507/303
-f 1785/508/4 1783/507/4 1777/507/4
-f 1777/507/4 1778/508/4 1785/508/4
-f 1786/509/309 1785/512/309 1778/511/309
-f 1778/511/309 1749/510/309 1786/509/309
-f 1784/513/310 1786/509/310 1749/510/310
-f 1749/510/310 1748/514/310 1784/513/310
-f 1787/515/1 1779/502/1 1783/503/1
-f 1783/503/1 1785/516/1 1787/515/1
-f 1779/500/10 1787/517/10 1788/517/10
-f 1788/517/10 1780/500/10 1779/500/10
-f 1758/480/4 1757/480/4 1789/518/4
-f 1789/518/4 1790/518/4 1758/480/4
-f 1790/519/1 1784/474/1 1771/490/1
-f 1771/490/1 1758/491/1 1790/519/1
-f 1751/475/4 1754/476/4 1791/482/4
-f 1791/482/4 1792/481/4 1751/475/4
-f 1784/513/311 1790/520/311 1769/485/311
-f 1769/485/311 1768/513/311 1784/513/311
-f 1786/509/310 1784/513/310 1768/513/310
-f 1768/513/310 1776/509/310 1786/509/310
-f 1785/512/309 1786/509/309 1776/509/309
-f 1776/509/309 1773/512/309 1785/512/309
-f 1787/521/312 1785/512/312 1773/512/312
-f 1773/512/312 1772/521/312 1787/521/312
-f 1759/476/10 1762/475/10 1793/478/10
-f 1793/478/10 1794/477/10 1759/476/10
-f 1763/483/302 1766/484/302 1774/523/302
-f 1774/523/302 1775/522/302 1763/483/302
-f 1781/501/300 1763/483/300 1775/522/300
-f 1775/522/300 1767/524/300 1781/501/300
-f 1790/520/27 1789/527/27 1752/526/27
-f 1752/526/27 1751/525/27 1790/520/27
-f 1769/485/27 1790/520/27 1751/525/27
-f 1751/525/27 1792/528/27 1769/485/27
-f 1767/486/1 1769/487/1 1792/487/1
-f 1792/487/1 1791/486/1 1767/486/1
-f 1781/501/26 1767/524/26 1791/524/26
-f 1791/524/26 1754/501/26 1781/501/26
-f 1782/501/26 1781/501/26 1754/501/26
-f 1754/501/26 1753/501/26 1782/501/26
-f 1766/484/26 1765/485/26 1760/485/26
-f 1760/485/26 1759/484/26 1766/484/26
-f 1774/523/26 1766/484/26 1759/484/26
-f 1759/484/26 1794/523/26 1774/523/26
-f 1772/493/1 1774/494/1 1794/530/1
-f 1794/530/1 1793/529/1 1772/493/1
-f 1787/521/27 1772/521/27 1793/532/27
-f 1793/532/27 1762/531/27 1787/521/27
-f 1788/533/27 1787/521/27 1762/531/27
-f 1762/531/27 1761/531/27 1788/533/27
-f 1795/471/10 1796/474/10 1797/473/10
-f 1797/473/10 1798/472/10 1795/471/10
-f 1799/475/1 1800/478/1 1801/477/1
-f 1801/477/1 1802/476/1 1799/475/1
-f 1803/479/27 1804/479/27 1805/480/288
-f 1805/480/288 1806/480/288 1803/479/27
-f 1807/476/7 1808/482/7 1809/481/7
-f 1809/481/7 1810/475/7 1807/476/7
-f 1811/483/26 1812/483/26 1813/485/289
-f 1813/485/289 1814/484/289 1811/483/26
-f 1815/486/10 1816/488/10 1817/487/10
-f 1818/489/10 1803/492/10 1806/491/10
-f 1806/491/10 1819/490/10 1818/489/10
-f 1820/493/10 1821/495/10 1822/494/10
-f 1823/496/10 1822/494/10 1821/495/10
-f 1821/495/10 1824/497/10 1823/496/10
-f 1825/498/10 1798/472/10 1797/473/10
-f 1797/473/10 1826/499/10 1825/498/10
-f 1827/500/290 1828/500/290 1804/479/27
-f 1804/479/27 1803/479/27 1827/500/290
-f 1829/501/291 1830/501/291 1812/483/26
-f 1812/483/26 1811/483/26 1829/501/291
-f 1827/502/10 1803/492/10 1818/489/10
-f 1818/489/10 1831/503/10 1827/502/10
-f 1823/496/10 1824/497/10 1816/488/10
-f 1816/488/10 1815/486/10 1823/496/10
-f 1819/504/7 1832/505/7 1796/505/7
-f 1796/505/7 1795/504/7 1819/504/7
-f 1818/506/292 1819/504/292 1795/504/292
-f 1795/504/292 1798/506/292 1818/506/292
-f 1831/507/293 1818/506/293 1798/506/293
-f 1798/506/293 1825/507/293 1831/507/293
-f 1833/508/1 1831/507/1 1825/507/1
-f 1825/507/1 1826/508/1 1833/508/1
-f 1834/509/210 1833/512/210 1826/511/210
-f 1826/511/210 1797/510/210 1834/509/210
-f 1832/513/294 1834/509/294 1797/510/294
-f 1797/510/294 1796/514/294 1832/513/294
-f 1835/515/10 1827/502/10 1831/503/10
-f 1831/503/10 1833/516/10 1835/515/10
-f 1827/500/7 1835/517/7 1836/517/7
-f 1836/517/7 1828/500/7 1827/500/7
-f 1806/480/1 1805/480/1 1837/518/1
-f 1837/518/1 1838/518/1 1806/480/1
-f 1838/519/10 1832/474/10 1819/490/10
-f 1819/490/10 1806/491/10 1838/519/10
-f 1799/475/1 1802/476/1 1839/482/1
-f 1839/482/1 1840/481/1 1799/475/1
-f 1832/513/313 1838/520/295 1817/485/295
-f 1817/485/295 1816/513/313 1832/513/313
-f 1834/509/294 1832/513/294 1816/513/294
-f 1816/513/294 1824/509/294 1834/509/294
-f 1833/512/210 1834/509/210 1824/509/210
-f 1824/509/210 1821/512/210 1833/512/210
-f 1835/521/296 1833/512/296 1821/512/296
-f 1821/512/296 1820/521/296 1835/521/296
-f 1807/476/7 1810/475/7 1841/478/7
-f 1841/478/7 1842/477/7 1807/476/7
-f 1811/483/289 1814/484/289 1822/523/289
-f 1822/523/289 1823/522/289 1811/483/289
-f 1829/501/291 1811/483/291 1823/522/291
-f 1823/522/291 1815/524/291 1829/501/291
-f 1838/520/27 1837/527/27 1800/526/27
-f 1800/526/27 1799/525/27 1838/520/27
-f 1817/485/27 1838/520/27 1799/525/27
-f 1799/525/27 1840/528/27 1817/485/27
-f 1815/486/10 1817/487/10 1840/487/10
-f 1840/487/10 1839/486/10 1815/486/10
-f 1829/501/26 1815/524/26 1839/524/26
-f 1839/524/26 1802/501/26 1829/501/26
-f 1830/501/26 1829/501/26 1802/501/26
-f 1802/501/26 1801/501/26 1830/501/26
-f 1814/484/26 1813/485/26 1808/485/26
-f 1808/485/26 1807/484/26 1814/484/26
-f 1822/523/26 1814/484/26 1807/484/26
-f 1807/484/26 1842/523/26 1822/523/26
-f 1820/493/10 1822/494/10 1842/530/10
-f 1842/530/10 1841/529/10 1820/493/10
-f 1835/521/27 1820/521/27 1841/532/27
-f 1841/532/27 1810/531/27 1835/521/27
-f 1836/533/27 1835/521/27 1810/531/27
-f 1810/531/27 1809/531/27 1836/533/27
-f 1843/471/10 1844/474/10 1845/473/10
-f 1845/473/10 1846/472/10 1843/471/10
-f 1847/475/1 1848/478/1 1849/477/1
-f 1849/477/1 1850/476/1 1847/475/1
-f 1851/479/27 1852/479/27 1853/480/288
-f 1853/480/288 1854/480/288 1851/479/27
-f 1855/476/7 1856/482/7 1857/481/7
-f 1857/481/7 1858/475/7 1855/476/7
-f 1859/483/26 1860/483/26 1861/485/289
-f 1861/485/289 1862/484/289 1859/483/26
-f 1863/486/10 1864/488/10 1865/487/10
-f 1866/489/10 1851/492/10 1854/491/10
-f 1854/491/10 1867/490/10 1866/489/10
-f 1868/493/10 1869/495/10 1870/494/10
-f 1871/496/10 1870/494/10 1869/495/10
-f 1869/495/10 1872/497/10 1871/496/10
-f 1873/498/10 1846/472/10 1845/473/10
-f 1845/473/10 1874/499/10 1873/498/10
-f 1875/500/290 1876/500/290 1852/479/27
-f 1852/479/27 1851/479/27 1875/500/290
-f 1877/501/291 1878/501/291 1860/483/26
-f 1860/483/26 1859/483/26 1877/501/291
-f 1875/502/10 1851/492/10 1866/489/10
-f 1866/489/10 1879/503/10 1875/502/10
-f 1871/496/10 1872/497/10 1864/488/10
-f 1864/488/10 1863/486/10 1871/496/10
-f 1867/504/7 1880/505/7 1844/505/7
-f 1844/505/7 1843/504/7 1867/504/7
-f 1866/506/292 1867/504/292 1843/504/292
-f 1843/504/292 1846/506/292 1866/506/292
-f 1879/507/293 1866/506/293 1846/506/293
-f 1846/506/293 1873/507/293 1879/507/293
-f 1881/508/1 1879/507/1 1873/507/1
-f 1873/507/1 1874/508/1 1881/508/1
-f 1882/509/210 1881/512/210 1874/511/210
-f 1874/511/210 1845/510/210 1882/509/210
-f 1880/513/294 1882/509/294 1845/510/294
-f 1845/510/294 1844/514/294 1880/513/294
-f 1883/515/10 1875/502/10 1879/503/10
-f 1879/503/10 1881/516/10 1883/515/10
-f 1875/500/7 1883/517/7 1884/517/7
-f 1884/517/7 1876/500/7 1875/500/7
-f 1854/480/1 1853/480/1 1885/518/1
-f 1885/518/1 1886/518/1 1854/480/1
-f 1886/519/10 1880/474/10 1867/490/10
-f 1867/490/10 1854/491/10 1886/519/10
-f 1847/475/1 1850/476/1 1887/482/1
-f 1887/482/1 1888/481/1 1847/475/1
-f 1880/513/295 1886/520/295 1865/485/295
-f 1865/485/295 1864/513/295 1880/513/295
-f 1882/509/294 1880/513/294 1864/513/294
-f 1864/513/294 1872/509/294 1882/509/294
-f 1881/512/210 1882/509/210 1872/509/210
-f 1872/509/210 1869/512/210 1881/512/210
-f 1883/521/296 1881/512/296 1869/512/296
-f 1869/512/296 1868/521/296 1883/521/296
-f 1855/476/7 1858/475/7 1889/478/7
-f 1889/478/7 1890/477/7 1855/476/7
-f 1859/483/289 1862/484/289 1870/523/289
-f 1870/523/289 1871/522/289 1859/483/289
-f 1877/501/291 1859/483/291 1871/522/291
-f 1871/522/291 1863/524/291 1877/501/291
-f 1886/520/27 1885/527/27 1848/526/27
-f 1848/526/27 1847/525/27 1886/520/27
-f 1865/485/27 1886/520/27 1847/525/27
-f 1847/525/27 1888/528/27 1865/485/27
-f 1863/486/10 1865/487/10 1888/487/10
-f 1888/487/10 1887/486/10 1863/486/10
-f 1877/501/26 1863/524/26 1887/524/26
-f 1887/524/26 1850/501/26 1877/501/26
-f 1878/501/26 1877/501/26 1850/501/26
-f 1850/501/26 1849/501/26 1878/501/26
-f 1862/484/26 1861/485/26 1856/485/26
-f 1856/485/26 1855/484/26 1862/484/26
-f 1870/523/26 1862/484/26 1855/484/26
-f 1855/484/26 1890/523/26 1870/523/26
-f 1868/493/10 1870/494/10 1890/530/10
-f 1890/530/10 1889/529/10 1868/493/10
-f 1883/521/27 1868/521/27 1889/532/27
-f 1889/532/27 1858/531/27 1883/521/27
-f 1884/533/27 1883/521/27 1858/531/27
-f 1858/531/27 1857/531/27 1884/533/27
-f 1891/471/10 1892/474/10 1893/473/10
-f 1893/473/10 1894/472/10 1891/471/10
-f 1895/475/1 1896/478/1 1897/477/1
-f 1897/477/1 1898/476/1 1895/475/1
-f 1899/479/27 1900/479/27 1901/480/288
-f 1901/480/288 1902/480/288 1899/479/27
-f 1903/476/7 1904/482/7 1905/481/7
-f 1905/481/7 1906/475/7 1903/476/7
-f 1907/483/26 1908/483/26 1909/485/289
-f 1909/485/289 1910/484/289 1907/483/26
-f 1911/486/10 1912/488/10 1913/487/10
-f 1914/489/10 1899/492/10 1902/491/10
-f 1902/491/10 1915/490/10 1914/489/10
-f 1916/493/10 1917/495/10 1918/494/10
-f 1919/496/10 1918/494/10 1917/495/10
-f 1917/495/10 1920/497/10 1919/496/10
-f 1921/498/10 1894/472/10 1893/473/10
-f 1893/473/10 1922/499/10 1921/498/10
-f 1923/500/290 1924/500/290 1900/479/27
-f 1900/479/27 1899/479/27 1923/500/290
-f 1925/501/291 1926/501/291 1908/483/26
-f 1908/483/26 1907/483/26 1925/501/291
-f 1923/502/10 1899/492/10 1914/489/10
-f 1914/489/10 1927/503/10 1923/502/10
-f 1919/496/10 1920/497/10 1912/488/10
-f 1912/488/10 1911/486/10 1919/496/10
-f 1915/504/7 1928/505/7 1892/505/7
-f 1892/505/7 1891/504/7 1915/504/7
-f 1914/506/292 1915/504/292 1891/504/292
-f 1891/504/292 1894/506/292 1914/506/292
-f 1927/507/293 1914/506/293 1894/506/293
-f 1894/506/293 1921/507/293 1927/507/293
-f 1929/508/1 1927/507/1 1921/507/1
-f 1921/507/1 1922/508/1 1929/508/1
-f 1930/509/210 1929/512/210 1922/511/210
-f 1922/511/210 1893/510/210 1930/509/210
-f 1928/513/294 1930/509/294 1893/510/294
-f 1893/510/294 1892/514/294 1928/513/294
-f 1931/515/10 1923/502/10 1927/503/10
-f 1927/503/10 1929/516/10 1931/515/10
-f 1923/500/7 1931/517/7 1932/517/7
-f 1932/517/7 1924/500/7 1923/500/7
-f 1902/480/1 1901/480/1 1933/518/1
-f 1933/518/1 1934/518/1 1902/480/1
-f 1934/519/10 1928/474/10 1915/490/10
-f 1915/490/10 1902/491/10 1934/519/10
-f 1895/475/1 1898/476/1 1935/482/1
-f 1935/482/1 1936/481/1 1895/475/1
-f 1928/513/295 1934/520/295 1913/485/295
-f 1913/485/295 1912/513/295 1928/513/295
-f 1930/509/294 1928/513/294 1912/513/294
-f 1912/513/294 1920/509/294 1930/509/294
-f 1929/512/210 1930/509/210 1920/509/210
-f 1920/509/210 1917/512/210 1929/512/210
-f 1931/521/296 1929/512/296 1917/512/296
-f 1917/512/296 1916/521/296 1931/521/296
-f 1903/476/7 1906/475/7 1937/478/7
-f 1937/478/7 1938/477/7 1903/476/7
-f 1907/483/289 1910/484/289 1918/523/289
-f 1918/523/289 1919/522/289 1907/483/289
-f 1925/501/291 1907/483/291 1919/522/291
-f 1919/522/291 1911/524/291 1925/501/291
-f 1934/520/27 1933/527/27 1896/526/27
-f 1896/526/27 1895/525/27 1934/520/27
-f 1913/485/27 1934/520/27 1895/525/27
-f 1895/525/27 1936/528/27 1913/485/27
-f 1911/486/10 1913/487/10 1936/487/10
-f 1936/487/10 1935/486/10 1911/486/10
-f 1925/501/26 1911/524/26 1935/524/26
-f 1935/524/26 1898/501/26 1925/501/26
-f 1926/501/26 1925/501/26 1898/501/26
-f 1898/501/26 1897/501/26 1926/501/26
-f 1910/484/26 1909/485/26 1904/485/26
-f 1904/485/26 1903/484/26 1910/484/26
-f 1918/523/26 1910/484/26 1903/484/26
-f 1903/484/26 1938/523/26 1918/523/26
-f 1916/493/10 1918/494/10 1938/530/10
-f 1938/530/10 1937/529/10 1916/493/10
-f 1931/521/27 1916/521/27 1937/532/27
-f 1937/532/27 1906/531/27 1931/521/27
-f 1932/533/27 1931/521/27 1906/531/27
-f 1906/531/27 1905/531/27 1932/533/27
-f 1939/471/10 1940/474/10 1941/473/10
-f 1941/473/10 1942/472/10 1939/471/10
-f 1943/475/1 1944/478/1 1945/477/1
-f 1945/477/1 1946/476/1 1943/475/1
-f 1947/479/27 1948/479/27 1949/480/288
-f 1949/480/288 1950/480/288 1947/479/27
-f 1951/476/7 1952/482/7 1953/481/7
-f 1953/481/7 1954/475/7 1951/476/7
-f 1955/483/26 1956/483/26 1957/485/289
-f 1957/485/289 1958/484/289 1955/483/26
-f 1959/486/10 1960/488/10 1961/487/10
-f 1962/489/10 1947/492/10 1950/491/10
-f 1950/491/10 1963/490/10 1962/489/10
-f 1964/493/10 1965/495/10 1966/494/10
-f 1967/496/10 1966/494/10 1965/495/10
-f 1965/495/10 1968/497/10 1967/496/10
-f 1969/498/10 1942/472/10 1941/473/10
-f 1941/473/10 1970/499/10 1969/498/10
-f 1971/500/290 1972/500/290 1948/479/27
-f 1948/479/27 1947/479/27 1971/500/290
-f 1973/501/291 1974/501/291 1956/483/26
-f 1956/483/26 1955/483/26 1973/501/291
-f 1971/502/10 1947/492/10 1962/489/10
-f 1962/489/10 1975/503/10 1971/502/10
-f 1967/496/10 1968/497/10 1960/488/10
-f 1960/488/10 1959/486/10 1967/496/10
-f 1963/504/7 1976/505/7 1940/505/7
-f 1940/505/7 1939/504/7 1963/504/7
-f 1962/506/292 1963/504/292 1939/504/292
-f 1939/504/292 1942/506/292 1962/506/292
-f 1975/507/293 1962/506/293 1942/506/293
-f 1942/506/293 1969/507/293 1975/507/293
-f 1977/508/1 1975/507/1 1969/507/1
-f 1969/507/1 1970/508/1 1977/508/1
-f 1978/509/210 1977/512/210 1970/511/210
-f 1970/511/210 1941/510/210 1978/509/210
-f 1976/513/294 1978/509/294 1941/510/294
-f 1941/510/294 1940/514/294 1976/513/294
-f 1979/515/10 1971/502/10 1975/503/10
-f 1975/503/10 1977/516/10 1979/515/10
-f 1971/500/7 1979/517/7 1980/517/7
-f 1980/517/7 1972/500/7 1971/500/7
-f 1950/480/1 1949/480/1 1981/518/1
-f 1981/518/1 1982/518/1 1950/480/1
-f 1982/519/10 1976/474/10 1963/490/10
-f 1963/490/10 1950/491/10 1982/519/10
-f 1943/475/1 1946/476/1 1983/482/1
-f 1983/482/1 1984/481/1 1943/475/1
-f 1976/513/295 1982/520/295 1961/485/295
-f 1961/485/295 1960/513/295 1976/513/295
-f 1978/509/294 1976/513/294 1960/513/294
-f 1960/513/294 1968/509/294 1978/509/294
-f 1977/512/210 1978/509/210 1968/509/210
-f 1968/509/210 1965/512/210 1977/512/210
-f 1979/521/296 1977/512/296 1965/512/296
-f 1965/512/296 1964/521/296 1979/521/296
-f 1951/476/7 1954/475/7 1985/478/7
-f 1985/478/7 1986/477/7 1951/476/7
-f 1955/483/289 1958/484/289 1966/523/289
-f 1966/523/289 1967/522/289 1955/483/289
-f 1973/501/291 1955/483/291 1967/522/291
-f 1967/522/291 1959/524/291 1973/501/291
-f 1982/520/27 1981/527/27 1944/526/27
-f 1944/526/27 1943/525/27 1982/520/27
-f 1961/485/27 1982/520/27 1943/525/27
-f 1943/525/27 1984/528/27 1961/485/27
-f 1959/486/10 1961/487/10 1984/487/10
-f 1984/487/10 1983/486/10 1959/486/10
-f 1973/501/26 1959/524/26 1983/524/26
-f 1983/524/26 1946/501/26 1973/501/26
-f 1974/501/26 1973/501/26 1946/501/26
-f 1946/501/26 1945/501/26 1974/501/26
-f 1958/484/26 1957/485/26 1952/485/26
-f 1952/485/26 1951/484/26 1958/484/26
-f 1966/523/26 1958/484/26 1951/484/26
-f 1951/484/26 1986/523/26 1966/523/26
-f 1964/493/10 1966/494/10 1986/530/10
-f 1986/530/10 1985/529/10 1964/493/10
-f 1979/521/27 1964/521/27 1985/532/27
-f 1985/532/27 1954/531/27 1979/521/27
-f 1980/533/27 1979/521/27 1954/531/27
-f 1954/531/27 1953/531/27 1980/533/27
-f 1987/471/10 1988/472/10 1989/473/10
-f 1989/473/10 1990/474/10 1987/471/10
-f 1991/475/7 1992/476/7 1993/477/7
-f 1993/477/7 1994/478/7 1991/475/7
-f 1995/479/27 1996/480/290 1997/480/290
-f 1997/480/290 1998/479/27 1995/479/27
-f 1999/476/1 2000/475/1 2001/481/1
-f 2001/481/1 2002/482/1 1999/476/1
-f 2003/483/26 2004/484/291 2005/485/291
-f 2005/485/291 2006/483/26 2003/483/26
-f 2007/486/10 2008/487/10 2009/488/10
-f 2010/489/10 2011/490/10 1996/491/10
-f 1996/491/10 1995/492/10 2010/489/10
-f 2012/493/10 2013/494/10 2014/495/10
-f 2015/496/10 2016/497/10 2014/495/10
-f 2014/495/10 2013/494/10 2015/496/10
-f 2017/498/10 2018/499/10 1989/473/10
-f 1989/473/10 1988/472/10 2017/498/10
-f 2019/500/288 1995/479/27 1998/479/27
-f 1998/479/27 2020/500/288 2019/500/288
-f 2021/501/289 2003/483/26 2006/483/26
-f 2006/483/26 2022/501/289 2021/501/289
-f 2019/502/10 2023/503/10 2010/489/10
-f 2010/489/10 1995/492/10 2019/502/10
-f 2015/496/10 2007/486/10 2009/488/10
-f 2009/488/10 2016/497/10 2015/496/10
-f 2011/504/1 1987/504/1 1990/505/1
-f 1990/505/1 2024/505/1 2011/504/1
-f 2010/506/293 1988/506/293 1987/504/293
-f 1987/504/293 2011/504/293 2010/506/293
-f 2023/507/292 2017/507/292 1988/506/292
-f 1988/506/292 2010/506/292 2023/507/292
-f 2025/508/7 2018/508/7 2017/507/7
-f 2017/507/7 2023/507/7 2025/508/7
-f 2026/509/203 1989/510/203 2018/511/203
-f 2018/511/203 2025/512/203 2026/509/203
-f 2024/513/296 1990/514/296 1989/510/296
-f 1989/510/296 2026/509/296 2024/513/296
-f 2027/515/10 2025/516/10 2023/503/10
-f 2023/503/10 2019/502/10 2027/515/10
-f 2019/500/1 2020/500/1 2028/517/1
-f 2028/517/1 2027/517/1 2019/500/1
-f 1996/480/7 2029/518/7 2030/518/7
-f 2030/518/7 1997/480/7 1996/480/7
-f 2029/519/10 1996/491/10 2011/490/10
-f 2011/490/10 2024/474/10 2029/519/10
-f 1991/475/7 2031/481/7 2032/482/7
-f 2032/482/7 1992/476/7 1991/475/7
-f 2024/513/314 2009/513/314 2008/485/314
-f 2008/485/314 2029/520/314 2024/513/314
-f 2026/509/296 2016/509/296 2009/513/296
-f 2009/513/296 2024/513/296 2026/509/296
-f 2025/512/203 2014/512/203 2016/509/203
-f 2016/509/203 2026/509/203 2025/512/203
-f 2027/521/294 2012/521/294 2014/512/294
-f 2014/512/294 2025/512/294 2027/521/294
-f 1999/476/1 2033/477/1 2034/478/1
-f 2034/478/1 2000/475/1 1999/476/1
-f 2003/483/291 2015/522/291 2013/523/291
-f 2013/523/291 2004/484/291 2003/483/291
-f 2021/501/289 2007/524/289 2015/522/289
-f 2015/522/289 2003/483/289 2021/501/289
-f 2029/520/27 1991/525/27 1994/526/27
-f 1994/526/27 2030/527/27 2029/520/27
-f 2008/485/27 2031/528/27 1991/525/27
-f 1991/525/27 2029/520/27 2008/485/27
-f 2007/486/10 2032/486/10 2031/487/10
-f 2031/487/10 2008/487/10 2007/486/10
-f 2021/501/26 1992/501/26 2032/524/26
-f 2032/524/26 2007/524/26 2021/501/26
-f 2022/501/26 1993/501/26 1992/501/26
-f 1992/501/26 2021/501/26 2022/501/26
-f 2004/484/26 1999/484/26 2002/485/26
-f 2002/485/26 2005/485/26 2004/484/26
-f 2013/523/26 2033/523/26 1999/484/26
-f 1999/484/26 2004/484/26 2013/523/26
-f 2012/493/10 2034/529/10 2033/530/10
-f 2033/530/10 2013/494/10 2012/493/10
-f 2027/521/27 2000/531/27 2034/532/27
-f 2034/532/27 2012/521/27 2027/521/27
-f 2028/533/27 2001/531/27 2000/531/27
-f 2000/531/27 2027/521/27 2028/533/27
-f 2035/471/10 2036/472/10 2037/473/10
-f 2037/473/10 2038/474/10 2035/471/10
-f 2039/475/7 2040/476/7 2041/477/7
-f 2041/477/7 2042/478/7 2039/475/7
-f 2043/479/27 2044/480/290 2045/480/290
-f 2045/480/290 2046/479/27 2043/479/27
-f 2047/476/1 2048/475/1 2049/481/1
-f 2049/481/1 2050/482/1 2047/476/1
-f 2051/483/26 2052/484/291 2053/485/291
-f 2053/485/291 2054/483/26 2051/483/26
-f 2055/486/10 2056/487/10 2057/488/10
-f 2058/489/10 2059/490/10 2044/491/10
-f 2044/491/10 2043/492/10 2058/489/10
-f 2060/493/10 2061/494/10 2062/495/10
-f 2063/496/10 2064/497/10 2062/495/10
-f 2062/495/10 2061/494/10 2063/496/10
-f 2065/498/10 2066/499/10 2037/473/10
-f 2037/473/10 2036/472/10 2065/498/10
-f 2067/500/288 2043/479/27 2046/479/27
-f 2046/479/27 2068/500/288 2067/500/288
-f 2069/501/289 2051/483/26 2054/483/26
-f 2054/483/26 2070/501/289 2069/501/289
-f 2067/502/10 2071/503/10 2058/489/10
-f 2058/489/10 2043/492/10 2067/502/10
-f 2063/496/10 2055/486/10 2057/488/10
-f 2057/488/10 2064/497/10 2063/496/10
-f 2059/504/1 2035/504/1 2038/505/1
-f 2038/505/1 2072/505/1 2059/504/1
-f 2058/506/293 2036/506/293 2035/504/293
-f 2035/504/293 2059/504/293 2058/506/293
-f 2071/507/292 2065/507/292 2036/506/292
-f 2036/506/292 2058/506/292 2071/507/292
-f 2073/508/7 2066/508/7 2065/507/7
-f 2065/507/7 2071/507/7 2073/508/7
-f 2074/509/203 2037/510/203 2066/511/203
-f 2066/511/203 2073/512/203 2074/509/203
-f 2072/513/296 2038/514/296 2037/510/296
-f 2037/510/296 2074/509/296 2072/513/296
-f 2075/515/10 2073/516/10 2071/503/10
-f 2071/503/10 2067/502/10 2075/515/10
-f 2067/500/1 2068/500/1 2076/517/1
-f 2076/517/1 2075/517/1 2067/500/1
-f 2044/480/7 2077/518/7 2078/518/7
-f 2078/518/7 2045/480/7 2044/480/7
-f 2077/519/10 2044/491/10 2059/490/10
-f 2059/490/10 2072/474/10 2077/519/10
-f 2039/475/7 2079/481/7 2080/482/7
-f 2080/482/7 2040/476/7 2039/475/7
-f 2072/513/314 2057/513/314 2056/485/314
-f 2056/485/314 2077/520/314 2072/513/314
-f 2074/509/296 2064/509/296 2057/513/296
-f 2057/513/296 2072/513/296 2074/509/296
-f 2073/512/203 2062/512/203 2064/509/203
-f 2064/509/203 2074/509/203 2073/512/203
-f 2075/521/294 2060/521/294 2062/512/294
-f 2062/512/294 2073/512/294 2075/521/294
-f 2047/476/1 2081/477/1 2082/478/1
-f 2082/478/1 2048/475/1 2047/476/1
-f 2051/483/291 2063/522/291 2061/523/291
-f 2061/523/291 2052/484/291 2051/483/291
-f 2069/501/289 2055/524/289 2063/522/298
-f 2063/522/298 2051/483/298 2069/501/289
-f 2077/520/27 2039/525/27 2042/526/27
-f 2042/526/27 2078/527/27 2077/520/27
-f 2056/485/27 2079/528/27 2039/525/27
-f 2039/525/27 2077/520/27 2056/485/27
-f 2055/486/10 2080/486/10 2079/487/10
-f 2079/487/10 2056/487/10 2055/486/10
-f 2069/501/26 2040/501/26 2080/524/26
-f 2080/524/26 2055/524/26 2069/501/26
-f 2070/501/26 2041/501/26 2040/501/26
-f 2040/501/26 2069/501/26 2070/501/26
-f 2052/484/26 2047/484/26 2050/485/26
-f 2050/485/26 2053/485/26 2052/484/26
-f 2061/523/26 2081/523/26 2047/484/26
-f 2047/484/26 2052/484/26 2061/523/26
-f 2060/493/10 2082/529/10 2081/530/10
-f 2081/530/10 2061/494/10 2060/493/10
-f 2075/521/27 2048/531/27 2082/532/27
-f 2082/532/27 2060/521/27 2075/521/27
-f 2076/533/27 2049/531/27 2048/531/27
-f 2048/531/27 2075/521/27 2076/533/27
-f 2083/471/7 2084/472/7 2085/473/7
-f 2085/473/7 2086/474/7 2083/471/7
-f 2087/475/4 2088/476/4 2089/477/4
-f 2089/477/4 2090/478/4 2087/475/4
-f 2091/479/27 2092/480/301 2093/480/301
-f 2093/480/301 2094/479/27 2091/479/27
-f 2095/476/10 2096/475/10 2097/481/10
-f 2097/481/10 2098/482/10 2095/476/10
-f 2099/483/26 2100/484/302 2101/485/302
-f 2101/485/302 2102/483/26 2099/483/26
-f 2103/486/7 2104/487/7 2105/488/7
-f 2106/489/7 2107/490/7 2092/491/7
-f 2092/491/7 2091/492/7 2106/489/7
-f 2108/493/7 2109/494/7 2110/495/7
-f 2111/496/7 2112/497/7 2110/495/7
-f 2110/495/7 2109/494/7 2111/496/7
-f 2113/498/7 2114/499/7 2085/473/7
-f 2085/473/7 2084/472/7 2113/498/7
-f 2115/500/299 2091/479/27 2094/479/27
-f 2094/479/27 2116/500/299 2115/500/299
-f 2117/501/300 2099/483/26 2102/483/26
-f 2102/483/26 2118/501/300 2117/501/300
-f 2115/502/7 2119/503/7 2106/489/7
-f 2106/489/7 2091/492/7 2115/502/7
-f 2111/496/7 2103/486/7 2105/488/7
-f 2105/488/7 2112/497/7 2111/496/7
-f 2107/504/10 2083/504/10 2086/505/10
-f 2086/505/10 2120/505/10 2107/504/10
-f 2106/506/304 2084/506/304 2083/504/304
-f 2083/504/304 2107/504/304 2106/506/304
-f 2119/507/303 2113/507/303 2084/506/303
-f 2084/506/303 2106/506/303 2119/507/303
-f 2121/508/4 2114/508/4 2113/507/4
-f 2113/507/4 2119/507/4 2121/508/4
-f 2122/509/309 2085/510/309 2114/511/309
-f 2114/511/309 2121/512/309 2122/509/309
-f 2120/513/310 2086/514/310 2085/510/310
-f 2085/510/310 2122/509/310 2120/513/310
-f 2123/515/7 2121/516/7 2119/503/7
-f 2119/503/7 2115/502/7 2123/515/7
-f 2115/500/10 2116/500/10 2124/517/10
-f 2124/517/10 2123/517/10 2115/500/10
-f 2092/480/4 2125/518/4 2126/518/4
-f 2126/518/4 2093/480/4 2092/480/4
-f 2125/519/7 2092/491/7 2107/490/7
-f 2107/490/7 2120/474/7 2125/519/7
-f 2087/475/4 2127/481/4 2128/482/4
-f 2128/482/4 2088/476/4 2087/475/4
-f 2120/513/311 2105/513/311 2104/485/311
-f 2104/485/311 2125/520/311 2120/513/311
-f 2122/509/310 2112/509/310 2105/513/310
-f 2105/513/310 2120/513/310 2122/509/310
-f 2121/512/309 2110/512/309 2112/509/309
-f 2112/509/309 2122/509/309 2121/512/309
-f 2123/521/312 2108/521/312 2110/512/312
-f 2110/512/312 2121/512/312 2123/521/312
-f 2095/476/10 2129/477/10 2130/478/10
-f 2130/478/10 2096/475/10 2095/476/10
-f 2099/483/302 2111/522/302 2109/523/302
-f 2109/523/302 2100/484/302 2099/483/302
-f 2117/501/300 2103/524/300 2111/522/300
-f 2111/522/300 2099/483/300 2117/501/300
-f 2125/520/27 2087/525/27 2090/526/27
-f 2090/526/27 2126/527/27 2125/520/27
-f 2104/485/27 2127/528/27 2087/525/27
-f 2087/525/27 2125/520/27 2104/485/27
-f 2103/486/7 2128/486/7 2127/487/7
-f 2127/487/7 2104/487/7 2103/486/7
-f 2117/501/26 2088/501/26 2128/524/26
-f 2128/524/26 2103/524/26 2117/501/26
-f 2118/501/26 2089/501/26 2088/501/26
-f 2088/501/26 2117/501/26 2118/501/26
-f 2100/484/26 2095/484/26 2098/485/26
-f 2098/485/26 2101/485/26 2100/484/26
-f 2109/523/26 2129/523/26 2095/484/26
-f 2095/484/26 2100/484/26 2109/523/26
-f 2108/493/7 2130/529/7 2129/530/7
-f 2129/530/7 2109/494/7 2108/493/7
-f 2123/521/27 2096/531/27 2130/532/27
-f 2130/532/27 2108/521/27 2123/521/27
-f 2124/533/27 2097/531/27 2096/531/27
-f 2096/531/27 2123/521/27 2124/533/27
-f 2131/471/7 2132/472/7 2133/473/7
-f 2133/473/7 2134/474/7 2131/471/7
-f 2135/475/4 2136/476/4 2137/477/4
-f 2137/477/4 2138/478/4 2135/475/4
-f 2139/479/27 2140/480/301 2141/480/301
-f 2141/480/301 2142/479/27 2139/479/27
-f 2143/476/10 2144/475/10 2145/481/10
-f 2145/481/10 2146/482/10 2143/476/10
-f 2147/483/26 2148/484/302 2149/485/302
-f 2149/485/302 2150/483/26 2147/483/26
-f 2151/486/7 2152/487/7 2153/488/7
-f 2154/489/7 2155/490/7 2140/491/7
-f 2140/491/7 2139/492/7 2154/489/7
-f 2156/493/7 2157/494/7 2158/495/7
-f 2159/496/7 2160/497/7 2158/495/7
-f 2158/495/7 2157/494/7 2159/496/7
-f 2161/498/7 2162/499/7 2133/473/7
-f 2133/473/7 2132/472/7 2161/498/7
-f 2163/500/299 2139/479/27 2142/479/27
-f 2142/479/27 2164/500/299 2163/500/299
-f 2165/501/300 2147/483/26 2150/483/26
-f 2150/483/26 2166/501/300 2165/501/300
-f 2163/502/7 2167/503/7 2154/489/7
-f 2154/489/7 2139/492/7 2163/502/7
-f 2159/496/7 2151/486/7 2153/488/7
-f 2153/488/7 2160/497/7 2159/496/7
-f 2155/504/10 2131/504/10 2134/505/10
-f 2134/505/10 2168/505/10 2155/504/10
-f 2154/506/304 2132/506/304 2131/504/304
-f 2131/504/304 2155/504/304 2154/506/304
-f 2167/507/303 2161/507/303 2132/506/303
-f 2132/506/303 2154/506/303 2167/507/303
-f 2169/508/4 2162/508/4 2161/507/4
-f 2161/507/4 2167/507/4 2169/508/4
-f 2170/509/309 2133/510/309 2162/511/309
-f 2162/511/309 2169/512/309 2170/509/309
-f 2168/513/310 2134/514/310 2133/510/310
-f 2133/510/310 2170/509/310 2168/513/310
-f 2171/515/7 2169/516/7 2167/503/7
-f 2167/503/7 2163/502/7 2171/515/7
-f 2163/500/10 2164/500/10 2172/517/10
-f 2172/517/10 2171/517/10 2163/500/10
-f 2140/480/4 2173/518/4 2174/518/4
-f 2174/518/4 2141/480/4 2140/480/4
-f 2173/519/7 2140/491/7 2155/490/7
-f 2155/490/7 2168/474/7 2173/519/7
-f 2135/475/4 2175/481/4 2176/482/4
-f 2176/482/4 2136/476/4 2135/475/4
-f 2168/513/311 2153/513/311 2152/485/311
-f 2152/485/311 2173/520/311 2168/513/311
-f 2170/509/310 2160/509/310 2153/513/310
-f 2153/513/310 2168/513/310 2170/509/310
-f 2169/512/309 2158/512/309 2160/509/309
-f 2160/509/309 2170/509/309 2169/512/309
-f 2171/521/312 2156/521/312 2158/512/312
-f 2158/512/312 2169/512/312 2171/521/312
-f 2143/476/10 2177/477/10 2178/478/10
-f 2178/478/10 2144/475/10 2143/476/10
-f 2147/483/302 2159/522/302 2157/523/302
-f 2157/523/302 2148/484/302 2147/483/302
-f 2165/501/300 2151/524/300 2159/522/300
-f 2159/522/300 2147/483/300 2165/501/300
-f 2173/520/27 2135/525/27 2138/526/27
-f 2138/526/27 2174/527/27 2173/520/27
-f 2152/485/27 2175/528/27 2135/525/27
-f 2135/525/27 2173/520/27 2152/485/27
-f 2151/486/7 2176/486/7 2175/487/7
-f 2175/487/7 2152/487/7 2151/486/7
-f 2165/501/26 2136/501/26 2176/524/26
-f 2176/524/26 2151/524/26 2165/501/26
-f 2166/501/26 2137/501/26 2136/501/26
-f 2136/501/26 2165/501/26 2166/501/26
-f 2148/484/26 2143/484/26 2146/485/26
-f 2146/485/26 2149/485/26 2148/484/26
-f 2157/523/26 2177/523/26 2143/484/26
-f 2143/484/26 2148/484/26 2157/523/26
-f 2156/493/7 2178/529/7 2177/530/7
-f 2177/530/7 2157/494/7 2156/493/7
-f 2171/521/27 2144/531/27 2178/532/27
-f 2178/532/27 2156/521/27 2171/521/27
-f 2172/533/27 2145/531/27 2144/531/27
-f 2144/531/27 2171/521/27 2172/533/27
-f 2179/471/7 2180/474/7 2181/473/7
-f 2181/473/7 2182/472/7 2179/471/7
-f 2183/475/10 2184/478/10 2185/477/10
-f 2185/477/10 2186/476/10 2183/475/10
-f 2187/479/27 2188/479/27 2189/480/299
-f 2189/480/299 2190/480/299 2187/479/27
-f 2191/476/4 2192/482/4 2193/481/4
-f 2193/481/4 2194/475/4 2191/476/4
-f 2195/483/26 2196/483/26 2197/485/300
-f 2197/485/300 2198/484/300 2195/483/26
-f 2199/486/7 2200/488/7 2201/487/7
-f 2202/489/7 2187/492/7 2190/491/7
-f 2190/491/7 2203/490/7 2202/489/7
-f 2204/493/7 2205/495/7 2206/494/7
-f 2207/496/7 2206/494/7 2205/495/7
-f 2205/495/7 2208/497/7 2207/496/7
-f 2209/498/7 2182/472/7 2181/473/7
-f 2181/473/7 2210/499/7 2209/498/7
-f 2211/500/301 2212/500/301 2188/479/27
-f 2188/479/27 2187/479/27 2211/500/301
-f 2213/501/302 2214/501/302 2196/483/26
-f 2196/483/26 2195/483/26 2213/501/302
-f 2211/502/7 2187/492/7 2202/489/7
-f 2202/489/7 2215/503/7 2211/502/7
-f 2207/496/7 2208/497/7 2200/488/7
-f 2200/488/7 2199/486/7 2207/496/7
-f 2203/504/4 2216/505/4 2180/505/4
-f 2180/505/4 2179/504/4 2203/504/4
-f 2202/506/303 2203/504/303 2179/504/303
-f 2179/504/303 2182/506/303 2202/506/303
-f 2215/507/304 2202/506/304 2182/506/304
-f 2182/506/304 2209/507/304 2215/507/304
-f 2217/508/10 2215/507/10 2209/507/10
-f 2209/507/10 2210/508/10 2217/508/10
-f 2218/509/305 2217/512/305 2210/511/305
-f 2210/511/305 2181/510/305 2218/509/305
-f 2216/513/306 2218/509/306 2181/510/306
-f 2181/510/306 2180/514/306 2216/513/306
-f 2219/515/7 2211/502/7 2215/503/7
-f 2215/503/7 2217/516/7 2219/515/7
-f 2211/500/4 2219/517/4 2220/517/4
-f 2220/517/4 2212/500/4 2211/500/4
-f 2190/480/10 2189/480/10 2221/518/10
-f 2221/518/10 2222/518/10 2190/480/10
-f 2222/519/7 2216/474/7 2203/490/7
-f 2203/490/7 2190/491/7 2222/519/7
-f 2183/475/10 2186/476/10 2223/482/10
-f 2223/482/10 2224/481/10 2183/475/10
-f 2216/513/307 2222/520/307 2201/485/307
-f 2201/485/307 2200/513/307 2216/513/307
-f 2218/509/306 2216/513/306 2200/513/306
-f 2200/513/306 2208/509/306 2218/509/306
-f 2217/512/305 2218/509/305 2208/509/305
-f 2208/509/305 2205/512/305 2217/512/305
-f 2219/521/308 2217/512/308 2205/512/308
-f 2205/512/308 2204/521/308 2219/521/308
-f 2191/476/4 2194/475/4 2225/478/4
-f 2225/478/4 2226/477/4 2191/476/4
-f 2195/483/300 2198/484/300 2206/523/300
-f 2206/523/300 2207/522/300 2195/483/300
-f 2213/501/302 2195/483/302 2207/522/302
-f 2207/522/302 2199/524/302 2213/501/302
-f 2222/520/27 2221/527/27 2184/526/27
-f 2184/526/27 2183/525/27 2222/520/27
-f 2201/485/27 2222/520/27 2183/525/27
-f 2183/525/27 2224/528/27 2201/485/27
-f 2199/486/7 2201/487/7 2224/487/7
-f 2224/487/7 2223/486/7 2199/486/7
-f 2213/501/26 2199/524/26 2223/524/26
-f 2223/524/26 2186/501/26 2213/501/26
-f 2214/501/26 2213/501/26 2186/501/26
-f 2186/501/26 2185/501/26 2214/501/26
-f 2198/484/26 2197/485/26 2192/485/26
-f 2192/485/26 2191/484/26 2198/484/26
-f 2206/523/26 2198/484/26 2191/484/26
-f 2191/484/26 2226/523/26 2206/523/26
-f 2204/493/7 2206/494/7 2226/530/7
-f 2226/530/7 2225/529/7 2204/493/7
-f 2219/521/27 2204/521/27 2225/532/27
-f 2225/532/27 2194/531/27 2219/521/27
-f 2220/533/27 2219/521/27 2194/531/27
-f 2194/531/27 2193/531/27 2220/533/27
-f 2227/471/10 2228/472/10 2229/473/10
-f 2229/473/10 2230/474/10 2227/471/10
-f 2231/475/7 2232/476/7 2233/477/7
-f 2233/477/7 2234/478/7 2231/475/7
-f 2235/479/27 2236/480/290 2237/480/290
-f 2237/480/290 2238/479/27 2235/479/27
-f 2239/476/1 2240/475/1 2241/481/1
-f 2241/481/1 2242/482/1 2239/476/1
-f 2243/483/26 2244/484/291 2245/485/291
-f 2245/485/291 2246/483/26 2243/483/26
-f 2247/486/10 2248/487/10 2249/488/10
-f 2250/489/10 2251/490/10 2236/491/10
-f 2236/491/10 2235/492/10 2250/489/10
-f 2252/493/10 2253/494/10 2254/495/10
-f 2255/496/10 2256/497/10 2254/495/10
-f 2254/495/10 2253/494/10 2255/496/10
-f 2257/498/10 2258/499/10 2229/473/10
-f 2229/473/10 2228/472/10 2257/498/10
-f 2259/500/288 2235/479/27 2238/479/27
-f 2238/479/27 2260/500/288 2259/500/288
-f 2261/501/289 2243/483/26 2246/483/26
-f 2246/483/26 2262/501/289 2261/501/289
-f 2259/502/10 2263/503/10 2250/489/10
-f 2250/489/10 2235/492/10 2259/502/10
-f 2255/496/10 2247/486/10 2249/488/10
-f 2249/488/10 2256/497/10 2255/496/10
-f 2251/504/1 2227/504/1 2230/505/1
-f 2230/505/1 2264/505/1 2251/504/1
-f 2250/506/293 2228/506/293 2227/504/293
-f 2227/504/293 2251/504/293 2250/506/293
-f 2263/507/292 2257/507/292 2228/506/292
-f 2228/506/292 2250/506/292 2263/507/292
-f 2265/508/7 2258/508/7 2257/507/7
-f 2257/507/7 2263/507/7 2265/508/7
-f 2266/509/203 2229/510/203 2258/511/203
-f 2258/511/203 2265/512/203 2266/509/203
-f 2264/513/296 2230/514/296 2229/510/296
-f 2229/510/296 2266/509/296 2264/513/296
-f 2267/515/10 2265/516/10 2263/503/10
-f 2263/503/10 2259/502/10 2267/515/10
-f 2259/500/1 2260/500/1 2268/517/1
-f 2268/517/1 2267/517/1 2259/500/1
-f 2236/480/7 2269/518/7 2270/518/7
-f 2270/518/7 2237/480/7 2236/480/7
-f 2269/519/10 2236/491/10 2251/490/10
-f 2251/490/10 2264/474/10 2269/519/10
-f 2231/475/7 2271/481/7 2272/482/7
-f 2272/482/7 2232/476/7 2231/475/7
-f 2264/513/314 2249/513/314 2248/485/314
-f 2248/485/314 2269/520/314 2264/513/314
-f 2266/509/296 2256/509/296 2249/513/296
-f 2249/513/296 2264/513/296 2266/509/296
-f 2265/512/203 2254/512/203 2256/509/203
-f 2256/509/203 2266/509/203 2265/512/203
-f 2267/521/294 2252/521/294 2254/512/294
-f 2254/512/294 2265/512/294 2267/521/294
-f 2239/476/1 2273/477/1 2274/478/1
-f 2274/478/1 2240/475/1 2239/476/1
-f 2243/483/297 2255/522/297 2253/523/291
-f 2253/523/291 2244/484/291 2243/483/297
-f 2261/501/289 2247/524/289 2255/522/289
-f 2255/522/289 2243/483/289 2261/501/289
-f 2269/520/27 2231/525/27 2234/526/27
-f 2234/526/27 2270/527/27 2269/520/27
-f 2248/485/27 2271/528/27 2231/525/27
-f 2231/525/27 2269/520/27 2248/485/27
-f 2247/486/10 2272/486/10 2271/487/10
-f 2271/487/10 2248/487/10 2247/486/10
-f 2261/501/26 2232/501/26 2272/524/26
-f 2272/524/26 2247/524/26 2261/501/26
-f 2262/501/26 2233/501/26 2232/501/26
-f 2232/501/26 2261/501/26 2262/501/26
-f 2244/484/26 2239/484/26 2242/485/26
-f 2242/485/26 2245/485/26 2244/484/26
-f 2253/523/26 2273/523/26 2239/484/26
-f 2239/484/26 2244/484/26 2253/523/26
-f 2252/493/10 2274/529/10 2273/530/10
-f 2273/530/10 2253/494/10 2252/493/10
-f 2267/521/27 2240/531/27 2274/532/27
-f 2274/532/27 2252/521/27 2267/521/27
-f 2268/533/27 2241/531/27 2240/531/27
-f 2240/531/27 2267/521/27 2268/533/27
-f 2275/534/4 2276/535/4 2277/536/4
-f 2277/536/4 2278/537/4 2275/534/4
-f 2279/538/4 2280/539/4 2281/540/4
-f 2281/540/4 2282/541/4 2279/538/4
-f 2283/542/4 2284/543/4 2276/535/4
-f 2276/535/4 2275/534/4 2283/542/4
-f 2280/539/4 2278/537/4 2277/536/4
-f 2277/536/4 2281/540/4 2280/539/4
-f 2285/544/315 2286/545/315 2287/546/316
-f 2287/546/316 2288/547/316 2285/544/315
-f 2286/548/4 2289/549/4 2290/550/4
-f 2290/550/4 2287/551/4 2286/548/4
-f 2289/552/317 2291/553/317 2292/554/318
-f 2292/554/318 2290/555/318 2289/552/317
-f 2288/547/316 2287/546/316 2293/556/319
-f 2293/556/319 2294/557/319 2288/547/316
-f 2287/551/4 2290/550/4 2295/558/4
-f 2295/558/4 2293/559/4 2287/551/4
-f 2290/555/318 2292/554/318 2296/560/320
-f 2296/560/320 2295/561/320 2290/555/318
-f 2294/557/319 2293/556/319 2297/562/27
-f 2297/562/27 2298/563/27 2294/557/319
-f 2293/559/4 2295/558/4 2299/564/4
-f 2299/564/4 2297/565/4 2293/559/4
-f 2295/561/320 2296/560/320 2300/566/26
-f 2300/566/26 2299/567/26 2295/561/320
-f 2298/563/27 2297/562/27 2301/556/321
-f 2301/556/321 2302/557/321 2298/563/27
-f 2297/565/4 2299/564/4 2303/568/4
-f 2303/568/4 2301/569/4 2297/565/4
-f 2299/567/26 2300/566/26 2304/560/322
-f 2304/560/322 2303/561/322 2299/567/26
-f 2302/557/321 2301/556/321 2305/546/323
-f 2305/546/323 2306/547/323 2302/557/321
-f 2301/569/4 2303/568/4 2307/570/4
-f 2307/570/4 2305/571/4 2301/569/4
-f 2303/561/322 2304/560/322 2308/554/324
-f 2308/554/324 2307/555/324 2303/561/322
-f 2306/547/323 2305/546/323 2309/545/325
-f 2309/545/325 2310/544/325 2306/547/323
-f 2305/571/4 2307/570/4 2311/572/4
-f 2311/572/4 2309/573/4 2305/571/4
-f 2307/555/324 2308/554/324 2312/553/326
-f 2312/553/326 2311/552/326 2307/555/324
-f 2313/574/327 2314/575/327 2315/576/327
-f 2315/576/327 2316/577/327 2313/574/327
-f 2317/578/328 2313/579/328 2316/580/328
-f 2316/580/328 2318/581/328 2317/578/328
-f 2319/579/329 2317/578/329 2318/581/329
-f 2318/581/329 2320/580/329 2319/579/329
-f 2319/578/330 2320/581/330 2315/580/330
-f 2315/580/330 2314/579/330 2319/578/330
-f 2321/582/331 2316/577/331 2315/576/331
-f 2315/576/331 2322/583/332 2321/582/331
-f 2318/581/333 2316/580/333 2321/584/333
-f 2321/584/333 2323/585/333 2318/581/333
-f 2324/584/334 2320/580/334 2318/581/334
-f 2318/581/334 2323/585/334 2324/584/334
-f 2322/584/335 2315/580/335 2320/581/335
-f 2320/581/335 2324/585/335 2322/584/335
-f 2325/586/336 2326/587/26 2327/588/26
-f 2327/588/26 2328/589/336 2325/586/336
-f 2328/590/1 2327/591/1 2329/592/1
-f 2329/592/1 2330/593/1 2328/590/1
-f 2330/589/337 2329/588/27 2331/587/27
-f 2331/587/27 2332/586/337 2330/589/337
-f 2327/588/26 2326/587/26 2333/594/338
-f 2333/594/338 2334/595/338 2327/588/26
-f 2329/592/1 2327/591/1 2334/596/1
-f 2334/596/1 2335/597/1 2329/592/1
-f 2331/587/27 2329/588/27 2335/595/339
-f 2335/595/339 2336/594/339 2331/587/27
-f 2337/586/340 2338/587/26 2339/588/26
-f 2339/588/26 2340/589/340 2337/586/340
-f 2340/590/4 2339/591/4 2341/592/4
-f 2341/592/4 2342/593/4 2340/590/4
-f 2342/589/341 2341/588/27 2343/587/27
-f 2343/587/27 2344/586/342 2342/589/341
-f 2339/588/26 2338/587/26 2345/594/343
-f 2345/594/343 2346/595/343 2339/588/26
-f 2341/592/4 2339/591/4 2346/596/4
-f 2346/596/4 2347/597/4 2341/592/4
-f 2343/587/27 2341/588/27 2347/595/344
-f 2347/595/344 2348/594/344 2343/587/27
-f 2347/598/1 2346/596/1 2345/599/1
-f 2345/599/1 2348/600/1 2347/598/1
-f 2349/574/345 2350/577/345 2351/576/345
-f 2351/576/345 2352/575/345 2349/574/345
-f 2353/578/346 2354/581/346 2350/580/346
-f 2350/580/346 2349/579/346 2353/578/346
-f 2355/579/347 2356/580/347 2354/581/347
-f 2354/581/347 2353/578/347 2355/579/347
-f 2355/578/348 2352/579/348 2351/580/348
-f 2351/580/348 2356/581/348 2355/578/348
-f 2357/582/175 2358/583/349 2351/576/349
-f 2351/576/349 2350/577/349 2357/582/175
-f 2354/581/350 2359/585/350 2357/584/350
-f 2357/584/350 2350/580/350 2354/581/350
-f 2360/584/351 2359/585/351 2354/581/351
-f 2354/581/351 2356/580/351 2360/584/351
-f 2358/584/352 2360/585/352 2356/581/353
-f 2356/581/353 2351/580/352 2358/584/352
-f 2361/586/340 2362/589/340 2363/588/26
-f 2363/588/26 2364/587/26 2361/586/340
-f 2362/590/10 2365/593/10 2366/592/10
-f 2366/592/10 2363/591/10 2362/590/10
-f 2365/589/341 2367/586/342 2368/587/27
-f 2368/587/27 2366/588/27 2365/589/341
-f 2363/588/26 2369/595/343 2370/594/343
-f 2370/594/343 2364/587/26 2363/588/26
-f 2366/592/10 2371/597/10 2369/596/10
-f 2369/596/10 2363/591/10 2366/592/10
-f 2368/587/27 2372/594/344 2371/595/344
-f 2371/595/344 2366/588/27 2368/587/27
-f 2370/599/1 2369/596/1 2371/598/1
-f 2371/598/1 2372/600/1 2370/599/1
-f 2373/586/354 2374/589/340 2375/588/26
-f 2375/588/26 2376/587/26 2373/586/354
-f 2374/590/10 2377/593/10 2378/592/10
-f 2378/592/10 2375/591/10 2374/590/10
-f 2377/589/342 2379/586/341 2380/587/27
-f 2380/587/27 2378/588/27 2377/589/342
-f 2375/588/26 2381/595/355 2382/594/355
-f 2382/594/355 2376/587/26 2375/588/26
-f 2378/592/10 2383/597/10 2381/596/10
-f 2381/596/10 2375/591/10 2378/592/10
-f 2380/587/27 2384/594/356 2383/595/344
-f 2383/595/344 2378/588/27 2380/587/27
-f 2385/601/7 2386/602/7 2387/603/7
-f 2387/603/7 691/604/7 2385/601/7
-f 2388/605/4 2389/606/4 2390/607/4
-f 2390/607/4 690/608/4 2388/605/4
-f 2391/601/1 2392/602/1 2393/609/1
-f 2393/609/1 692/610/1 2391/601/1
-f 2394/611/10 2395/612/10 2396/613/10
-f 2396/613/10 693/614/10 2394/611/10
-f 690/610/7 2390/609/7 2386/602/7
-f 2386/602/7 2385/601/7 690/610/7
-f 693/604/1 2396/603/1 2392/602/1
-f 2392/602/1 2391/601/1 693/604/1
-f 692/615/4 2393/616/4 2389/606/4
-f 2389/606/4 2388/605/4 692/615/4
-f 691/617/10 2387/618/10 2395/612/10
-f 2395/612/10 2394/611/10 691/617/10
-f 2397/619/357 2398/620/358 2399/621/358
-f 2399/621/358 2400/622/357 2397/619/357
-f 2398/620/358 2401/623/359 2402/624/359
-f 2402/624/359 2399/621/358 2398/620/358
-f 2403/625/360 2404/626/10 2398/627/10
-f 2398/627/10 2397/628/360 2403/625/360
-f 2398/627/10 2404/626/10 2405/629/361
-f 2405/629/361 2401/630/361 2398/627/10
-f 2403/619/315 2406/622/315 2407/621/362
-f 2407/621/362 2404/620/362 2403/619/315
-f 2404/620/362 2407/621/362 2408/624/363
-f 2408/624/363 2405/623/363 2404/620/362
-f 2406/631/364 2400/632/364 2399/633/365
-f 2399/633/365 2407/634/365 2406/631/364
-f 2399/633/365 2402/635/366 2408/636/366
-f 2408/636/366 2407/634/365 2399/633/365
-f 2409/637/7 2410/638/7 2411/639/7
-f 2411/639/7 2412/640/7 2409/637/7
-f 2413/640/4 2412/641/4 2411/642/4
-f 2411/642/4 2414/643/4 2413/640/4
-f 2413/637/1 2414/638/1 2415/639/1
-f 2415/639/1 2416/640/1 2413/637/1
-f 2417/644/1 2418/645/1 2419/646/1
-f 2419/646/1 2420/647/1 2417/644/1
-f 2421/647/7 2422/644/7 2423/645/7
-f 2423/645/7 2424/646/7 2421/647/7
-f 2418/648/367 2417/649/367 2425/650/367
-f 2425/650/367 2426/651/367 2418/648/367
-f 2425/652/4 2417/567/4 2420/653/4
-f 2420/653/4 2427/654/4 2425/652/4
-f 2420/648/368 2419/649/368 2428/650/368
-f 2428/650/368 2427/651/368 2420/648/368
-f 2429/637/7 2430/638/7 2431/639/7
-f 2431/639/7 2432/640/7 2429/637/7
-f 2432/640/4 2431/643/4 2433/642/4
-f 2433/642/4 2434/641/4 2432/640/4
-f 2434/637/1 2433/638/1 2435/639/1
-f 2435/639/1 2436/640/1 2434/637/1
-f 2437/655/369 2423/656/369 2422/657/369
-f 2422/657/369 2438/658/369 2437/655/369
-f 2437/659/4 2439/660/4 2424/661/4
-f 2424/661/4 2423/662/4 2437/659/4
-f 2440/655/370 2421/656/370 2424/657/370
-f 2424/657/370 2439/658/370 2440/655/370
-f 2441/663/298 2442/664/298 2426/651/298
-f 2426/651/298 2425/650/298 2441/663/298
-f 2427/654/4 2443/665/4 2441/666/4
-f 2441/666/4 2425/652/4 2427/654/4
-f 2444/663/371 2443/664/371 2427/651/371
-f 2427/651/371 2428/650/371 2444/663/371
-f 2437/655/297 2438/658/297 2442/664/297
-f 2442/664/297 2441/663/297 2437/655/297
-f 2439/660/4 2437/659/4 2441/666/4
-f 2441/666/4 2443/665/4 2439/660/4
-f 2440/655/372 2439/658/372 2443/664/372
-f 2443/664/372 2444/663/372 2440/655/372
-f 2445/667/373 2446/668/373 2447/669/373
-f 2447/669/373 2448/670/373 2445/667/373
-f 2449/671/374 2450/672/374 2446/668/374
-f 2446/668/374 2445/667/374 2449/671/374
-f 2451/673/7 2452/674/7 2453/675/7
-f 2453/675/7 2454/676/7 2451/673/7
-f 2451/673/7 2450/673/7 2455/673/7
-f 2455/673/7 2452/674/7 2451/673/7
-f 2451/673/7 2447/677/7 2446/677/7
-f 2446/677/7 2450/673/7 2451/673/7
-f 2456/678/7 2447/677/7 2451/673/7
-f 2451/673/7 2454/676/7 2456/678/7
-f 2453/679/27 2452/303/27 2457/680/27
-f 2457/680/27 2458/681/27 2453/679/27
-f 2452/682/375 2455/672/375 2459/671/375
-f 2459/671/375 2457/683/375 2452/682/375
-f 2455/672/376 2450/672/377 2449/671/377
-f 2449/671/377 2459/671/376 2455/672/376
-f 2460/684/373 2461/685/373 2445/667/373
-f 2445/667/373 2448/670/373 2460/684/373
-f 2461/685/374 2462/686/374 2449/671/374
-f 2449/671/374 2445/667/374 2461/685/374
-f 2463/678/1 2464/677/1 2465/673/1
-f 2465/673/1 2466/676/1 2463/678/1
-f 2465/673/1 2464/677/1 2467/677/1
-f 2467/677/1 2462/673/1 2465/673/1
-f 2465/673/1 2462/673/1 2461/673/1
-f 2461/673/1 2460/674/1 2465/673/1
-f 2465/673/1 2460/674/1 2468/675/1
-f 2468/675/1 2466/676/1 2465/673/1
-f 2457/680/27 2464/687/27 2463/688/27
-f 2463/688/27 2458/681/27 2457/680/27
-f 2459/671/375 2467/686/375 2464/678/375
-f 2464/678/375 2457/683/375 2459/671/375
-f 2449/671/377 2462/686/377 2467/686/376
-f 2467/686/376 2459/671/376 2449/671/377
-f 2469/689/4 2470/690/4 2471/691/4
-f 2471/691/4 2472/692/4 2469/689/4
-f 2473/693/4 2472/692/4 2471/691/4
-f 2471/691/4 2474/694/4 2473/693/4
-f 2475/619/357 2476/620/358 2477/621/358
-f 2477/621/358 2478/622/357 2475/619/357
-f 2476/620/358 2479/623/359 2480/624/359
-f 2480/624/359 2477/621/358 2476/620/358
-f 2481/625/360 2482/626/10 2476/627/10
-f 2476/627/10 2475/628/360 2481/625/360
-f 2476/627/10 2482/626/10 2483/629/361
-f 2483/629/361 2479/630/361 2476/627/10
-f 2481/619/315 2484/622/315 2485/621/362
-f 2485/621/362 2482/620/362 2481/619/315
-f 2482/620/362 2485/621/362 2486/624/363
-f 2486/624/363 2483/623/363 2482/620/362
-f 2484/631/364 2478/632/364 2477/633/365
-f 2477/633/365 2485/634/365 2484/631/364
-f 2477/633/365 2480/635/366 2486/636/366
-f 2486/636/366 2485/634/365 2477/633/365
-f 2487/619/357 2488/622/357 2489/621/378
-f 2489/621/378 2490/620/378 2487/619/357
-f 2490/620/378 2489/621/378 2491/624/379
-f 2491/624/379 2492/623/379 2490/620/378
-f 2493/625/365 2487/628/365 2490/627/4
-f 2490/627/4 2494/626/4 2493/625/365
-f 2490/627/4 2492/630/380 2495/629/380
-f 2495/629/380 2494/626/4 2490/627/4
-f 2493/619/315 2494/620/381 2496/621/381
-f 2496/621/381 2497/622/315 2493/619/315
-f 2494/620/381 2495/623/382 2498/624/382
-f 2498/624/382 2496/621/381 2494/620/381
-f 2497/631/383 2496/634/360 2489/633/360
-f 2489/633/360 2488/632/383 2497/631/383
-f 2489/633/360 2496/634/360 2498/636/384
-f 2498/636/384 2491/635/384 2489/633/360
-f 2499/619/357 2500/622/357 2501/621/378
-f 2501/621/378 2502/620/378 2499/619/357
-f 2502/620/378 2501/621/378 2503/624/379
-f 2503/624/379 2504/623/379 2502/620/378
-f 2505/625/365 2499/628/365 2502/627/4
-f 2502/627/4 2506/626/4 2505/625/365
-f 2502/627/4 2504/630/380 2507/629/380
-f 2507/629/380 2506/626/4 2502/627/4
-f 2505/619/315 2506/620/381 2508/621/381
-f 2508/621/381 2509/622/315 2505/619/315
-f 2506/620/381 2507/623/382 2510/624/382
-f 2510/624/382 2508/621/381 2506/620/381
-f 2509/631/383 2508/634/360 2501/633/360
-f 2501/633/360 2500/632/383 2509/631/383
-f 2501/633/360 2508/634/360 2510/636/384
-f 2510/636/384 2503/635/384 2501/633/360
-f 2511/586/336 2512/589/336 2513/588/26
-f 2513/588/26 2514/587/26 2511/586/336
-f 2512/590/7 2515/593/7 2516/592/7
-f 2516/592/7 2513/591/7 2512/590/7
-f 2515/589/337 2517/586/337 2518/587/27
-f 2518/587/27 2516/588/27 2515/589/337
-f 2513/588/26 2519/595/338 2520/594/338
-f 2520/594/338 2514/587/26 2513/588/26
-f 2516/592/7 2521/597/7 2519/596/7
-f 2519/596/7 2513/591/7 2516/592/7
-f 2518/587/27 2522/594/339 2521/595/339
-f 2521/595/339 2516/588/27 2518/587/27
-f 2523/451/27 2524/452/27 2525/453/27
-f 2525/453/27 2526/454/27 2523/451/27
-f 2527/455/4 2528/456/4 2524/457/4
-f 2524/457/4 2523/458/4 2527/455/4
-f 2528/459/1 2529/460/1 2525/461/1
-f 2525/461/1 2524/462/1 2528/459/1
-f 2529/456/10 2530/455/10 2526/458/10
-f 2526/458/10 2525/457/10 2529/456/10
-f 2530/460/7 2527/459/7 2523/462/7
-f 2523/462/7 2526/461/7 2530/460/7
-f 2531/451/27 2532/452/27 2533/453/27
-f 2533/453/27 2534/454/27 2531/451/27
-f 2535/455/7 2536/456/7 2532/457/7
-f 2532/457/7 2531/458/7 2535/455/7
-f 2536/459/4 2537/460/4 2533/461/4
-f 2533/461/4 2532/462/4 2536/459/4
-f 2537/456/1 2538/455/1 2534/458/1
-f 2534/458/1 2533/457/1 2537/456/1
-f 2538/460/10 2535/459/10 2531/462/10
-f 2531/462/10 2534/461/10 2538/460/10
-f 2539/451/27 2540/452/27 2541/453/27
-f 2541/453/27 2542/454/27 2539/451/27
-f 2543/455/7 2544/456/7 2540/457/7
-f 2540/457/7 2539/458/7 2543/455/7
-f 2544/459/4 2545/460/4 2541/461/4
-f 2541/461/4 2540/462/4 2544/459/4
-f 2545/456/1 2546/455/1 2542/458/1
-f 2542/458/1 2541/457/1 2545/456/1
-f 2546/460/10 2543/459/10 2539/462/10
-f 2539/462/10 2542/461/10 2546/460/10
-f 2547/3/12 2548/2/12 2549/1/1
-f 2549/1/1 2550/4/1 2547/3/12
-f 2551/6/11 2552/5/11 2548/2/12
-f 2548/2/12 2547/3/12 2551/6/11
-f 2553/8/10 2554/7/10 2552/5/11
-f 2552/5/11 2551/6/11 2553/8/10
-f 2555/11/9 2556/10/9 2554/9/10
-f 2554/9/10 2553/12/10 2555/11/9
-f 2557/14/8 2558/13/8 2556/10/9
-f 2556/10/9 2555/11/9 2557/14/8
-f 2559/16/7 2560/15/7 2558/13/8
-f 2558/13/8 2557/14/8 2559/16/7
-f 2561/18/6 2562/17/6 2560/15/7
-f 2560/15/7 2559/16/7 2561/18/6
-f 2563/20/5 2564/19/5 2562/17/6
-f 2562/17/6 2561/18/6 2563/20/5
-f 2565/22/4 2566/21/4 2564/19/5
-f 2564/19/5 2563/20/5 2565/22/4
-f 2567/24/3 2568/23/3 2566/21/4
-f 2566/21/4 2565/22/4 2567/24/3
-f 2569/26/2 2570/25/2 2568/23/3
-f 2568/23/3 2567/24/3 2569/26/2
-f 2550/4/1 2549/1/1 2570/25/2
-f 2570/25/2 2569/26/2 2550/4/1
-f 2571/27/24 2572/30/24 2573/29/24
-f 2573/29/24 2574/28/24 2571/27/24
-f 2575/31/23 2576/32/23 2572/30/23
-f 2572/30/23 2571/27/23 2575/31/23
-f 2577/33/22 2578/34/22 2576/32/22
-f 2576/32/22 2575/31/22 2577/33/22
-f 2579/35/21 2580/38/21 2578/37/21
-f 2578/37/21 2577/36/21 2579/35/21
-f 2581/39/20 2582/40/20 2580/38/20
-f 2580/38/20 2579/35/20 2581/39/20
-f 2583/41/19 2584/42/19 2582/40/19
-f 2582/40/19 2581/39/19 2583/41/19
-f 2585/43/18 2586/44/18 2584/42/18
-f 2584/42/18 2583/41/18 2585/43/18
-f 2587/45/17 2588/46/17 2586/44/17
-f 2586/44/17 2585/43/17 2587/45/17
-f 2589/47/16 2590/48/16 2588/46/16
-f 2588/46/16 2587/45/16 2589/47/16
-f 2591/49/15 2592/50/15 2590/48/15
-f 2590/48/15 2589/47/15 2591/49/15
-f 2593/51/14 2594/52/14 2592/50/14
-f 2592/50/14 2591/49/14 2593/51/14
-f 2574/28/13 2573/29/13 2594/52/192
-f 2594/52/192 2593/51/192 2574/28/13
-f 2548/53/26 2571/53/26 2574/54/26
-f 2574/54/26 2549/54/26 2548/53/26
-f 2549/54/26 2574/54/26 2593/55/26
-f 2593/55/26 2570/55/26 2549/54/26
-f 2570/55/26 2593/55/26 2591/56/26
-f 2591/56/26 2568/56/26 2570/55/26
-f 2568/56/26 2591/56/26 2589/57/26
-f 2589/57/26 2566/57/26 2568/56/26
-f 2566/57/26 2589/57/26 2587/59/26
-f 2587/59/26 2564/58/26 2566/57/26
-f 2564/58/26 2587/59/26 2585/61/26
-f 2585/61/26 2562/60/26 2564/58/26
-f 2562/60/26 2585/61/26 2583/62/26
-f 2583/62/26 2560/62/26 2562/60/26
-f 2560/62/26 2583/62/26 2581/64/26
-f 2581/64/26 2558/63/26 2560/62/26
-f 2558/63/26 2581/64/26 2579/66/26
-f 2579/66/26 2556/65/26 2558/63/26
-f 2556/65/26 2579/66/26 2577/67/26
-f 2577/67/26 2554/67/26 2556/65/26
-f 2554/67/26 2577/67/26 2575/68/26
-f 2575/68/26 2552/68/26 2554/67/26
-f 2552/68/26 2575/68/26 2571/53/26
-f 2571/53/26 2548/53/26 2552/68/26
-f 2595/54/27 2573/54/27 2572/53/27
-f 2572/53/27 2596/53/27 2595/54/27
-f 2596/53/27 2572/53/27 2576/68/27
-f 2576/68/27 2597/68/27 2596/53/27
-f 2597/68/27 2576/68/27 2578/67/27
-f 2578/67/27 2598/67/27 2597/68/27
-f 2598/67/27 2578/67/27 2580/66/27
-f 2580/66/27 2599/65/27 2598/67/27
-f 2599/65/27 2580/66/27 2582/64/27
-f 2582/64/27 2600/63/27 2599/65/27
-f 2600/63/27 2582/64/27 2584/62/27
-f 2584/62/27 2601/62/27 2600/63/27
-f 2601/62/27 2584/62/27 2586/61/27
-f 2586/61/27 2602/60/27 2601/62/27
-f 2602/60/27 2586/61/27 2588/59/27
-f 2588/59/27 2603/58/27 2602/60/27
-f 2603/58/27 2588/59/27 2590/57/27
-f 2590/57/27 2604/57/27 2603/58/27
-f 2604/57/27 2590/57/27 2592/56/27
-f 2592/56/27 2605/56/27 2604/57/27
-f 2605/56/27 2592/56/27 2594/55/27
-f 2594/55/27 2606/55/27 2605/56/27
-f 2606/55/27 2594/55/27 2573/54/27
-f 2573/54/27 2595/54/27 2606/55/27
-f 2607/71/12 2608/70/1 2595/69/1
-f 2595/69/1 2596/72/12 2607/71/12
-f 2609/73/23 2607/71/12 2596/72/12
-f 2596/72/12 2597/74/23 2609/73/23
-f 2610/75/22 2609/73/22 2597/74/22
-f 2597/74/22 2598/76/22 2610/75/22
-f 2611/77/9 2610/75/21 2598/76/21
-f 2598/76/21 2599/78/9 2611/77/9
-f 2612/79/8 2611/77/9 2599/78/9
-f 2599/78/9 2600/80/8 2612/79/8
-f 2613/83/7 2612/82/8 2600/81/8
-f 2600/81/8 2601/84/7 2613/83/7
-f 2614/85/6 2613/83/7 2601/84/7
-f 2601/84/7 2602/86/6 2614/85/6
-f 2615/87/5 2614/85/6 2602/86/6
-f 2602/86/6 2603/88/5 2615/87/5
-f 2616/89/4 2615/87/5 2603/88/5
-f 2603/88/5 2604/90/4 2616/89/4
-f 2617/91/3 2616/89/4 2604/90/4
-f 2604/90/4 2605/92/3 2617/91/3
-f 2618/93/2 2617/91/3 2605/92/3
-f 2605/92/3 2606/94/2 2618/93/2
-f 2608/70/1 2618/93/2 2606/94/2
-f 2606/94/2 2595/69/1 2608/70/1
-f 2619/95/26 2620/95/26 2621/96/26
-f 2621/96/26 2622/96/26 2619/95/26
-f 2623/97/26 2624/97/26 2620/95/26
-f 2620/95/26 2619/95/26 2623/97/26
-f 2625/67/26 2626/98/26 2624/97/26
-f 2624/97/26 2623/97/26 2625/67/26
-f 2627/99/26 2628/99/26 2626/98/26
-f 2626/98/26 2625/67/26 2627/99/26
-f 2629/100/26 2630/100/26 2628/99/26
-f 2628/99/26 2627/99/26 2629/100/26
-f 2631/101/26 2632/101/26 2630/100/26
-f 2630/100/26 2629/100/26 2631/101/26
-f 2633/61/26 2634/61/26 2632/101/26
-f 2632/101/26 2631/101/26 2633/61/26
-f 2635/59/26 2636/102/26 2634/61/26
-f 2634/61/26 2633/61/26 2635/59/26
-f 2637/103/26 2638/103/26 2636/102/26
-f 2636/102/26 2635/59/26 2637/103/26
-f 2639/104/26 2640/105/26 2638/103/26
-f 2638/103/26 2637/103/26 2639/104/26
-f 2641/106/26 2642/106/26 2640/105/26
-f 2640/105/26 2639/104/26 2641/106/26
-f 2622/96/26 2621/96/26 2642/106/26
-f 2642/106/26 2641/106/26 2622/96/26
-f 2620/107/39 2643/110/39 2644/109/39
-f 2644/109/39 2621/108/39 2620/107/39
-f 2624/111/38 2645/112/38 2643/110/38
-f 2643/110/38 2620/107/38 2624/111/38
-f 2626/113/37 2646/114/37 2645/112/37
-f 2645/112/37 2624/111/37 2626/113/37
-f 2628/115/36 2647/116/36 2646/114/36
-f 2646/114/36 2626/113/36 2628/115/36
-f 2630/117/35 2648/118/35 2647/116/35
-f 2647/116/35 2628/115/35 2630/117/35
-f 2632/119/34 2649/120/34 2648/118/34
-f 2648/118/34 2630/117/34 2632/119/34
-f 2634/121/33 2650/122/33 2649/120/33
-f 2649/120/33 2632/119/33 2634/121/33
-f 2636/123/32 2651/124/32 2650/122/32
-f 2650/122/32 2634/121/32 2636/123/32
-f 2638/125/31 2652/126/31 2651/124/31
-f 2651/124/31 2636/123/31 2638/125/31
-f 2640/127/30 2653/130/30 2652/129/30
-f 2652/129/30 2638/128/30 2640/127/30
-f 2642/131/29 2654/132/29 2653/130/29
-f 2653/130/29 2640/127/29 2642/131/29
-f 2621/108/28 2644/109/28 2654/132/28
-f 2654/132/28 2642/131/28 2621/108/28
-f 2643/110/54 2655/134/54 2656/133/54
-f 2656/133/54 2644/109/54 2643/110/54
-f 2645/112/53 2657/135/53 2655/134/53
-f 2655/134/53 2643/110/53 2645/112/53
-f 2646/114/51 2658/136/52 2657/135/51
-f 2657/135/51 2645/112/51 2646/114/51
-f 2647/116/50 2659/137/50 2658/136/50
-f 2658/136/50 2646/114/50 2647/116/50
-f 2648/118/49 2660/138/49 2659/137/49
-f 2659/137/49 2647/116/49 2648/118/49
-f 2649/120/48 2661/139/48 2660/138/48
-f 2660/138/48 2648/118/48 2649/120/48
-f 2650/122/385 2662/140/46 2661/139/46
-f 2661/139/46 2649/120/46 2650/122/385
-f 2651/124/45 2663/141/45 2662/140/45
-f 2662/140/45 2650/122/45 2651/124/45
-f 2652/126/44 2664/142/44 2663/141/44
-f 2663/141/44 2651/124/44 2652/126/44
-f 2653/130/42 2665/144/42 2664/143/43
-f 2664/143/43 2652/129/42 2653/130/42
-f 2654/132/41 2666/145/41 2665/144/41
-f 2665/144/41 2653/130/41 2654/132/41
-f 2644/109/40 2656/133/40 2666/145/40
-f 2666/145/40 2654/132/386 2644/109/40
-f 2607/148/71 2667/147/71 2668/146/71
-f 2668/146/71 2608/149/71 2607/148/71
-f 2609/151/69 2669/150/70 2667/147/70
-f 2667/147/70 2607/148/69 2609/151/69
-f 2610/154/68 2670/153/68 2669/152/68
-f 2669/152/68 2609/155/68 2610/154/68
-f 2611/156/67 2671/142/67 2670/153/67
-f 2670/153/67 2610/154/67 2611/156/67
-f 2612/158/65 2672/157/66 2671/142/66
-f 2671/142/66 2611/156/65 2612/158/65
-f 2613/160/64 2673/159/64 2672/157/64
-f 2672/157/64 2612/158/64 2613/160/64
-f 2614/162/63 2674/161/63 2673/159/63
-f 2673/159/63 2613/160/63 2614/162/63
-f 2615/164/62 2675/163/61 2674/161/61
-f 2674/161/61 2614/162/62 2615/164/62
-f 2616/166/60 2676/165/60 2675/163/60
-f 2675/163/60 2615/164/60 2616/166/60
-f 2617/168/59 2677/167/59 2676/165/59
-f 2676/165/59 2616/166/59 2617/168/59
-f 2618/170/58 2678/169/57 2677/167/57
-f 2677/167/57 2617/168/57 2618/170/58
-f 2608/149/56 2668/146/56 2678/169/56
-f 2678/169/56 2618/170/56 2608/149/56
-f 2667/173/12 2619/172/12 2622/171/1
-f 2622/171/1 2668/174/1 2667/173/12
-f 2669/176/11 2623/175/11 2619/172/12
-f 2619/172/12 2667/173/12 2669/176/11
-f 2670/179/10 2625/178/10 2623/177/11
-f 2623/177/11 2669/180/11 2670/179/10
-f 2671/181/9 2627/86/9 2625/178/10
-f 2625/178/10 2670/179/10 2671/181/9
-f 2672/183/8 2629/182/8 2627/86/9
-f 2627/86/9 2671/181/9 2672/183/8
-f 2673/185/7 2631/184/7 2629/182/8
-f 2629/182/8 2672/183/8 2673/185/7
-f 2674/187/6 2633/186/6 2631/184/7
-f 2631/184/7 2673/185/7 2674/187/6
-f 2675/189/5 2635/188/5 2633/186/6
-f 2633/186/6 2674/187/6 2675/189/5
-f 2676/191/4 2637/190/4 2635/188/5
-f 2635/188/5 2675/189/5 2676/191/4
-f 2677/192/3 2639/76/3 2637/190/4
-f 2637/190/4 2676/191/4 2677/192/3
-f 2678/194/2 2641/193/2 2639/76/3
-f 2639/76/3 2677/192/3 2678/194/2
-f 2668/174/1 2622/171/1 2641/193/2
-f 2641/193/2 2678/194/2 2668/174/1
-f 2679/195/387 2680/198/387 2681/197/387
-f 2681/197/387 2682/196/387 2679/195/387
-f 2683/199/388 2684/202/388 2685/201/388
-f 2685/201/388 2686/200/388 2683/199/388
-f 2687/203/389 2688/206/389 2689/205/389
-f 2689/205/389 2690/204/389 2687/203/389
-f 2691/202/390 2692/199/390 2693/200/390
-f 2693/200/390 2694/201/390 2691/202/390
-f 2695/207/391 2696/209/391 2697/208/391
-f 2697/208/391 2698/207/391 2695/207/391
-f 2699/209/392 2700/211/392 2701/210/392
-f 2690/212/393 2689/214/393 2702/213/393
-f 2702/213/393 2703/196/393 2690/212/393
-f 2704/210/394 2705/211/394 2706/209/394
-f 2707/215/395 2706/209/395 2705/211/395
-f 2705/211/395 2708/216/395 2707/215/395
-f 2709/217/396 2682/196/396 2681/197/396
-f 2681/197/396 2710/218/396 2709/217/396
-f 2711/219/397 2687/203/397 2690/204/397
-f 2690/204/397 2712/220/397 2711/219/397
-f 2713/209/398 2695/207/398 2698/207/398
-f 2698/207/398 2714/208/398 2713/209/398
-f 2690/212/399 2703/196/399 2715/213/399
-f 2715/213/399 2712/214/399 2690/212/399
-f 2707/215/400 2708/216/400 2700/211/400
-f 2700/211/400 2699/209/400 2707/215/400
-f 2716/221/390 2680/221/390 2679/222/390
-f 2679/222/390 2702/222/390 2716/221/390
-f 2702/222/401 2679/222/401 2682/203/401
-f 2682/203/401 2703/203/401 2702/222/401
-f 2703/203/402 2682/203/402 2709/206/402
-f 2709/206/402 2715/206/402 2703/203/402
-f 2715/206/388 2709/206/388 2710/223/388
-f 2710/223/388 2717/223/388 2715/206/388
-f 2717/224/403 2710/224/403 2681/226/403
-f 2681/226/403 2718/225/403 2717/224/403
-f 2718/225/404 2681/226/404 2680/224/404
-f 2680/224/404 2716/224/404 2718/225/404
-f 2712/214/394 2715/213/394 2717/228/394
-f 2717/228/394 2719/227/394 2712/214/394
-f 2719/229/390 2720/221/390 2711/219/390
-f 2711/219/390 2712/220/390 2719/229/390
-f 2688/206/388 2721/223/388 2722/230/388
-f 2722/230/388 2689/205/388 2688/206/388
-f 2722/227/392 2716/228/392 2702/213/392
-f 2702/213/392 2689/214/392 2722/227/392
-f 2685/201/388 2723/202/388 2724/199/388
-f 2724/199/388 2686/200/388 2685/201/388
-f 2722/231/405 2701/233/406 2700/232/405
-f 2700/232/405 2716/224/405 2722/231/405
-f 2716/224/404 2700/232/404 2708/234/404
-f 2708/234/404 2718/225/404 2716/224/404
-f 2718/225/403 2708/234/403 2705/232/403
-f 2705/232/403 2717/224/403 2718/225/403
-f 2717/224/407 2705/232/407 2704/233/407
-f 2704/233/407 2719/231/407 2717/224/407
-f 2693/200/390 2725/199/390 2726/202/390
-f 2726/202/390 2694/201/390 2693/200/390
-f 2697/208/391 2706/236/391 2707/235/391
-f 2707/235/391 2698/207/391 2697/208/391
-f 2698/207/398 2707/235/398 2699/236/398
-f 2699/236/398 2714/208/398 2698/207/398
-f 2721/236/27 2683/238/27 2686/237/27
-f 2686/237/27 2722/231/27 2721/236/27
-f 2722/231/27 2686/237/27 2724/239/27
-f 2724/239/27 2701/233/27 2722/231/27
-f 2701/210/408 2724/241/409 2723/240/409
-f 2723/240/409 2699/209/408 2701/210/408
-f 2699/236/26 2723/238/26 2685/242/26
-f 2685/242/26 2714/208/26 2699/236/26
-f 2714/208/26 2685/242/26 2684/240/26
-f 2684/240/26 2713/209/26 2714/208/26
-f 2696/209/26 2691/240/26 2694/242/26
-f 2694/242/26 2697/208/26 2696/209/26
-f 2697/208/26 2694/242/26 2726/238/26
-f 2726/238/26 2706/236/26 2697/208/26
-f 2706/209/410 2726/240/410 2725/241/410
-f 2725/241/410 2704/210/410 2706/209/410
-f 2704/233/27 2725/239/27 2693/237/27
-f 2693/237/27 2719/231/27 2704/233/27
-f 2719/231/27 2693/237/27 2692/238/27
-f 2692/238/27 2720/236/27 2719/231/27
-f 2727/195/411 2728/198/411 2729/197/411
-f 2729/197/411 2730/196/411 2727/195/411
-f 2731/199/412 2732/202/412 2733/201/413
-f 2733/201/413 2734/200/413 2731/199/412
-f 2735/203/414 2736/206/414 2737/205/414
-f 2737/205/414 2738/204/414 2735/203/414
-f 2739/202/415 2740/199/415 2741/200/416
-f 2741/200/416 2742/201/416 2739/202/415
-f 2743/207/417 2744/209/417 2745/208/417
-f 2745/208/417 2746/207/417 2743/207/417
-f 2747/209/171 2748/211/171 2749/210/171
-f 2738/212/418 2737/214/418 2750/213/418
-f 2750/213/418 2751/196/418 2738/212/418
-f 2752/210/419 2753/211/419 2754/209/419
-f 2755/215/420 2754/209/420 2753/211/420
-f 2753/211/420 2756/216/420 2755/215/420
-f 2757/217/167 2730/196/167 2729/197/167
-f 2729/197/167 2758/218/167 2757/217/167
-f 2759/219/421 2735/203/421 2738/204/421
-f 2738/204/421 2760/220/421 2759/219/421
-f 2761/209/422 2743/207/422 2746/207/422
-f 2746/207/422 2762/208/422 2761/209/422
-f 2738/212/423 2751/196/423 2763/213/423
-f 2763/213/423 2760/214/423 2738/212/423
-f 2755/215/424 2756/216/424 2748/211/424
-f 2748/211/424 2747/209/424 2755/215/424
-f 2764/221/415 2728/221/416 2727/222/416
-f 2727/222/416 2750/222/415 2764/221/415
-f 2750/222/425 2727/222/425 2730/203/425
-f 2730/203/425 2751/203/425 2750/222/425
-f 2751/203/426 2730/203/426 2757/206/426
-f 2757/206/426 2763/206/426 2751/203/426
-f 2763/206/413 2757/206/413 2758/223/413
-f 2758/223/413 2765/223/413 2763/206/413
-f 2765/224/427 2758/224/427 2729/226/427
-f 2729/226/427 2766/225/427 2765/224/427
-f 2766/225/428 2729/226/428 2728/224/428
-f 2728/224/428 2764/224/428 2766/225/428
-f 2760/214/419 2763/213/419 2765/228/419
-f 2765/228/419 2767/227/419 2760/214/419
-f 2767/229/415 2768/221/415 2759/219/415
-f 2759/219/415 2760/220/415 2767/229/415
-f 2736/206/413 2769/223/413 2770/230/413
-f 2770/230/413 2737/205/413 2736/206/413
-f 2770/227/171 2764/228/171 2750/213/171
-f 2750/213/171 2737/214/171 2770/227/171
-f 2733/201/413 2771/202/412 2772/199/412
-f 2772/199/412 2734/200/413 2733/201/413
-f 2770/231/429 2749/233/429 2748/232/429
-f 2748/232/429 2764/224/429 2770/231/429
-f 2764/224/428 2748/232/428 2756/234/428
-f 2756/234/428 2766/225/428 2764/224/428
-f 2766/225/427 2756/234/427 2753/232/427
-f 2753/232/427 2765/224/427 2766/225/427
-f 2765/224/430 2753/232/430 2752/233/430
-f 2752/233/430 2767/231/430 2765/224/430
-f 2741/200/416 2773/199/415 2774/202/415
-f 2774/202/415 2742/201/416 2741/200/416
-f 2745/208/417 2754/236/417 2755/235/417
-f 2755/235/417 2746/207/417 2745/208/417
-f 2746/207/422 2755/235/422 2747/236/422
-f 2747/236/422 2762/208/422 2746/207/422
-f 2769/236/27 2731/238/27 2734/237/27
-f 2734/237/27 2770/231/27 2769/236/27
-f 2770/231/27 2734/237/27 2772/239/27
-f 2772/239/27 2749/233/27 2770/231/27
-f 2749/210/191 2772/241/191 2771/240/191
-f 2771/240/191 2747/209/191 2749/210/191
-f 2747/236/26 2771/238/26 2733/242/26
-f 2733/242/26 2762/208/26 2747/236/26
-f 2762/208/26 2733/242/26 2732/240/26
-f 2732/240/26 2761/209/26 2762/208/26
-f 2744/209/26 2739/240/26 2742/242/26
-f 2742/242/26 2745/208/26 2744/209/26
-f 2745/208/26 2742/242/26 2774/238/26
-f 2774/238/26 2754/236/26 2745/208/26
-f 2754/209/431 2774/240/431 2773/241/431
-f 2773/241/431 2752/210/431 2754/209/431
-f 2752/233/27 2773/239/27 2741/237/27
-f 2741/237/27 2767/231/27 2752/233/27
-f 2767/231/27 2741/237/27 2740/238/27
-f 2740/238/27 2768/236/27 2767/231/27
-f 2775/243/432 2776/246/432 2777/245/432
-f 2777/245/432 2778/244/432 2775/243/432
-f 2775/247/433 2779/250/433 2780/249/433
-f 2780/249/433 2776/248/433 2775/247/433
-f 2776/246/434 2780/252/434 2781/251/434
-f 2781/251/434 2777/245/434 2776/246/434
-f 2777/248/435 2781/249/435 2782/250/435
-f 2782/250/435 2778/247/435 2777/248/435
-f 2783/195/436 2784/198/436 2785/197/436
-f 2785/197/436 2786/196/436 2783/195/436
-f 2787/199/437 2788/202/437 2789/201/413
-f 2789/201/413 2790/200/413 2787/199/437
-f 2791/203/414 2792/206/414 2793/205/414
-f 2793/205/414 2794/204/414 2791/203/414
-f 2795/202/415 2796/199/415 2797/200/416
-f 2797/200/416 2798/201/416 2795/202/415
-f 2799/207/417 2800/209/417 2801/208/417
-f 2801/208/417 2802/207/417 2799/207/417
-f 2803/209/171 2804/211/171 2805/210/171
-f 2794/212/418 2793/214/418 2806/213/418
-f 2806/213/418 2807/196/418 2794/212/418
-f 2808/210/419 2809/211/419 2810/209/419
-f 2811/215/420 2810/209/420 2809/211/420
-f 2809/211/420 2812/216/420 2811/215/420
-f 2813/217/167 2786/196/167 2785/197/167
-f 2785/197/167 2814/218/167 2813/217/167
-f 2815/219/438 2791/203/421 2794/204/421
-f 2794/204/421 2816/220/438 2815/219/438
-f 2817/209/422 2799/207/422 2802/207/422
-f 2802/207/422 2818/208/422 2817/209/422
-f 2794/212/423 2807/196/423 2819/213/423
-f 2819/213/423 2816/214/423 2794/212/423
-f 2811/215/424 2812/216/424 2804/211/424
-f 2804/211/424 2803/209/424 2811/215/424
-f 2820/221/415 2784/221/415 2783/222/415
-f 2783/222/415 2806/222/415 2820/221/415
-f 2806/222/425 2783/222/425 2786/203/425
-f 2786/203/425 2807/203/425 2806/222/425
-f 2807/203/426 2786/203/426 2813/206/426
-f 2813/206/426 2819/206/426 2807/203/426
-f 2819/206/413 2813/206/413 2814/223/413
-f 2814/223/413 2821/223/413 2819/206/413
-f 2821/224/427 2814/224/427 2785/226/427
-f 2785/226/427 2822/225/427 2821/224/427
-f 2822/225/428 2785/226/428 2784/224/428
-f 2784/224/428 2820/224/428 2822/225/428
-f 2816/214/419 2819/213/419 2821/228/419
-f 2821/228/419 2823/227/419 2816/214/419
-f 2823/229/416 2824/221/416 2815/219/416
-f 2815/219/416 2816/220/416 2823/229/416
-f 2792/206/413 2825/223/413 2826/230/412
-f 2826/230/412 2793/205/412 2792/206/413
-f 2826/227/171 2820/228/171 2806/213/171
-f 2806/213/171 2793/214/171 2826/227/171
-f 2789/201/413 2827/202/412 2828/199/412
-f 2828/199/412 2790/200/413 2789/201/413
-f 2826/231/429 2805/233/429 2804/232/429
-f 2804/232/429 2820/224/429 2826/231/429
-f 2820/224/428 2804/232/428 2812/234/428
-f 2812/234/428 2822/225/428 2820/224/428
-f 2822/225/427 2812/234/427 2809/232/427
-f 2809/232/427 2821/224/427 2822/225/427
-f 2821/224/430 2809/232/430 2808/233/430
-f 2808/233/430 2823/231/430 2821/224/430
-f 2797/200/416 2829/199/415 2830/202/415
-f 2830/202/415 2798/201/416 2797/200/416
-f 2801/208/417 2810/236/417 2811/235/417
-f 2811/235/417 2802/207/417 2801/208/417
-f 2802/207/422 2811/235/422 2803/236/422
-f 2803/236/422 2818/208/422 2802/207/422
-f 2825/236/27 2787/238/27 2790/237/27
-f 2790/237/27 2826/231/27 2825/236/27
-f 2826/231/27 2790/237/27 2828/239/27
-f 2828/239/27 2805/233/27 2826/231/27
-f 2805/210/191 2828/241/191 2827/240/191
-f 2827/240/191 2803/209/191 2805/210/191
-f 2803/236/26 2827/238/26 2789/242/26
-f 2789/242/26 2818/208/26 2803/236/26
-f 2818/208/26 2789/242/26 2788/240/26
-f 2788/240/26 2817/209/26 2818/208/26
-f 2800/209/26 2795/240/26 2798/242/26
-f 2798/242/26 2801/208/26 2800/209/26
-f 2801/208/26 2798/242/26 2830/238/26
-f 2830/238/26 2810/236/26 2801/208/26
-f 2810/209/431 2830/240/431 2829/241/431
-f 2829/241/431 2808/210/431 2810/209/431
-f 2808/233/27 2829/239/27 2797/237/27
-f 2797/237/27 2823/231/27 2808/233/27
-f 2823/231/27 2797/237/27 2796/238/27
-f 2796/238/27 2824/236/27 2823/231/27
-f 2831/243/439 2832/246/439 2833/245/439
-f 2833/245/439 2834/244/439 2831/243/439
-f 2831/247/440 2835/250/440 2836/249/440
-f 2836/249/440 2832/248/440 2831/247/440
-f 2832/246/441 2836/252/441 2837/251/441
-f 2837/251/441 2833/245/441 2832/246/441
-f 2833/248/442 2837/249/442 2838/250/442
-f 2838/250/442 2834/247/442 2833/248/442
-f 2839/195/443 2840/198/443 2841/197/443
-f 2841/197/443 2842/196/443 2839/195/443
-f 2843/199/390 2844/202/390 2845/201/390
-f 2845/201/390 2846/200/390 2843/199/390
-f 2847/203/444 2848/206/444 2849/205/444
-f 2849/205/444 2850/204/444 2847/203/444
-f 2851/202/388 2852/199/388 2853/200/388
-f 2853/200/388 2854/201/388 2851/202/388
-f 2855/207/398 2856/209/398 2857/208/398
-f 2857/208/398 2858/207/398 2855/207/398
-f 2859/209/445 2860/211/445 2861/210/445
-f 2850/212/446 2849/214/446 2862/213/446
-f 2862/213/446 2863/196/446 2850/212/446
-f 2864/210/447 2865/211/447 2866/209/447
-f 2867/215/448 2866/209/448 2865/211/448
-f 2865/211/448 2868/216/448 2867/215/448
-f 2869/217/449 2842/196/450 2841/197/450
-f 2841/197/450 2870/218/449 2869/217/449
-f 2871/219/451 2847/203/451 2850/204/451
-f 2850/204/451 2872/220/451 2871/219/451
-f 2873/209/391 2855/207/391 2858/207/391
-f 2858/207/391 2874/208/391 2873/209/391
-f 2850/212/452 2863/196/452 2875/213/452
-f 2875/213/452 2872/214/452 2850/212/452
-f 2867/215/453 2868/216/453 2860/211/453
-f 2860/211/453 2859/209/453 2867/215/453
-f 2876/221/388 2840/221/388 2839/222/388
-f 2839/222/388 2862/222/388 2876/221/388
-f 2862/222/402 2839/222/402 2842/203/402
-f 2842/203/402 2863/203/402 2862/222/402
-f 2863/203/401 2842/203/401 2869/206/401
-f 2869/206/401 2875/206/401 2863/203/401
-f 2875/206/390 2869/206/390 2870/223/390
-f 2870/223/390 2877/223/390 2875/206/390
-f 2877/224/454 2870/224/454 2841/226/454
-f 2841/226/454 2878/225/454 2877/224/454
-f 2878/225/455 2841/226/455 2840/224/455
-f 2840/224/455 2876/224/455 2878/225/455
-f 2872/214/447 2875/213/447 2877/228/447
-f 2877/228/447 2879/227/447 2872/214/447
-f 2879/229/388 2880/221/388 2871/219/388
-f 2871/219/388 2872/220/388 2879/229/388
-f 2848/206/390 2881/223/390 2882/230/390
-f 2882/230/390 2849/205/390 2848/206/390
-f 2882/227/445 2876/228/445 2862/213/445
-f 2862/213/445 2849/214/445 2882/227/445
-f 2845/201/390 2883/202/390 2884/199/390
-f 2884/199/390 2846/200/390 2845/201/390
-f 2882/231/456 2861/233/456 2860/232/456
-f 2860/232/456 2876/224/456 2882/231/456
-f 2876/224/455 2860/232/455 2868/234/455
-f 2868/234/455 2878/225/455 2876/224/455
-f 2878/225/454 2868/234/454 2865/232/454
-f 2865/232/454 2877/224/454 2878/225/454
-f 2877/224/457 2865/232/457 2864/233/457
-f 2864/233/457 2879/231/457 2877/224/457
-f 2853/200/388 2885/199/388 2886/202/388
-f 2886/202/388 2854/201/388 2853/200/388
-f 2857/208/398 2866/236/398 2867/235/398
-f 2867/235/398 2858/207/398 2857/208/398
-f 2858/207/391 2867/235/391 2859/236/391
-f 2859/236/391 2874/208/391 2858/207/391
-f 2881/236/27 2843/238/27 2846/237/27
-f 2846/237/27 2882/231/27 2881/236/27
-f 2882/231/27 2846/237/27 2884/239/27
-f 2884/239/27 2861/233/27 2882/231/27
-f 2861/210/458 2884/241/458 2883/240/458
-f 2883/240/458 2859/209/458 2861/210/458
-f 2859/236/26 2883/238/26 2845/242/26
-f 2845/242/26 2874/208/26 2859/236/26
-f 2874/208/26 2845/242/26 2844/240/26
-f 2844/240/26 2873/209/26 2874/208/26
-f 2856/209/26 2851/240/26 2854/242/26
-f 2854/242/26 2857/208/26 2856/209/26
-f 2857/208/26 2854/242/26 2886/238/26
-f 2886/238/26 2866/236/26 2857/208/26
-f 2866/209/459 2886/240/459 2885/241/459
-f 2885/241/459 2864/210/459 2866/209/459
-f 2864/233/27 2885/239/27 2853/237/27
-f 2853/237/27 2879/231/27 2864/233/27
-f 2879/231/27 2853/237/27 2852/238/27
-f 2852/238/27 2880/236/27 2879/231/27
-f 2887/243/154 2888/246/154 2889/245/154
-f 2889/245/154 2890/244/154 2887/243/154
-f 2887/247/1 2891/250/1 2892/249/1
-f 2892/249/1 2888/248/1 2887/247/1
-f 2888/246/155 2892/252/155 2893/251/155
-f 2893/251/155 2889/245/155 2888/246/155
-f 2889/248/7 2893/249/7 2894/250/7
-f 2894/250/7 2890/247/7 2889/248/7
-f 2895/243/160 2896/246/160 2897/245/160
-f 2897/245/160 2898/244/160 2895/243/160
-f 2895/247/163 2899/250/163 2900/249/163
-f 2900/249/163 2896/248/163 2895/247/163
-f 2896/246/162 2900/252/162 2901/251/162
-f 2901/251/162 2897/245/162 2896/246/162
-f 2897/248/161 2901/249/161 2902/250/161
-f 2902/250/161 2898/247/161 2897/248/161
-f 2903/243/148 2904/246/148 2905/245/148
-f 2905/245/148 2906/244/148 2903/243/148
-f 2903/247/7 2907/250/7 2908/249/7
-f 2908/249/7 2904/248/7 2903/247/7
-f 2904/246/149 2908/252/149 2909/251/149
-f 2909/251/149 2905/245/149 2904/246/149
-f 2905/248/1 2909/249/1 2910/250/1
-f 2910/250/1 2906/247/1 2905/248/1
-f 2911/243/460 2912/246/460 2913/245/460
-f 2913/245/460 2914/244/460 2911/243/460
-f 2911/247/461 2915/250/461 2916/249/461
-f 2916/249/461 2912/248/461 2911/247/461
-f 2912/246/462 2916/252/462 2917/251/462
-f 2917/251/462 2913/245/462 2912/246/462
-f 2913/248/463 2917/249/463 2918/250/463
-f 2918/250/463 2914/247/463 2913/248/463
-f 2919/243/150 2920/246/150 2921/245/150
-f 2921/245/150 2922/244/150 2919/243/150
-f 2919/247/153 2923/250/153 2924/249/153
-f 2924/249/153 2920/248/153 2919/247/153
-f 2920/246/152 2924/252/152 2925/251/152
-f 2925/251/152 2921/245/152 2920/246/152
-f 2921/248/151 2925/249/151 2926/250/151
-f 2926/250/151 2922/247/151 2921/248/151
-f 2927/195/443 2928/198/443 2929/197/443
-f 2929/197/443 2930/196/443 2927/195/443
-f 2931/199/390 2932/202/390 2933/201/390
-f 2933/201/390 2934/200/390 2931/199/390
-f 2935/203/444 2936/206/444 2937/205/444
-f 2937/205/444 2938/204/444 2935/203/444
-f 2939/202/388 2940/199/388 2941/200/388
-f 2941/200/388 2942/201/388 2939/202/388
-f 2943/207/398 2944/209/398 2945/208/398
-f 2945/208/398 2946/207/398 2943/207/398
-f 2947/209/445 2948/211/445 2949/210/445
-f 2938/212/446 2937/214/446 2950/213/446
-f 2950/213/446 2951/196/446 2938/212/446
-f 2952/210/447 2953/211/447 2954/209/447
-f 2955/215/448 2954/209/448 2953/211/448
-f 2953/211/448 2956/216/448 2955/215/448
-f 2957/217/449 2930/196/450 2929/197/450
-f 2929/197/450 2958/218/449 2957/217/449
-f 2959/219/451 2935/203/451 2938/204/451
-f 2938/204/451 2960/220/451 2959/219/451
-f 2961/209/391 2943/207/391 2946/207/391
-f 2946/207/391 2962/208/391 2961/209/391
-f 2938/212/452 2951/196/452 2963/213/452
-f 2963/213/452 2960/214/452 2938/212/452
-f 2955/215/453 2956/216/453 2948/211/453
-f 2948/211/453 2947/209/453 2955/215/453
-f 2964/221/388 2928/221/388 2927/222/388
-f 2927/222/388 2950/222/388 2964/221/388
-f 2950/222/402 2927/222/402 2930/203/402
-f 2930/203/402 2951/203/402 2950/222/402
-f 2951/203/401 2930/203/401 2957/206/401
-f 2957/206/401 2963/206/401 2951/203/401
-f 2963/206/390 2957/206/390 2958/223/390
-f 2958/223/390 2965/223/390 2963/206/390
-f 2965/224/454 2958/224/454 2929/226/454
-f 2929/226/454 2966/225/454 2965/224/454
-f 2966/225/455 2929/226/455 2928/224/455
-f 2928/224/455 2964/224/455 2966/225/455
-f 2960/214/447 2963/213/447 2965/228/447
-f 2965/228/447 2967/227/447 2960/214/447
-f 2967/229/388 2968/221/388 2959/219/388
-f 2959/219/388 2960/220/388 2967/229/388
-f 2936/206/390 2969/223/390 2970/230/390
-f 2970/230/390 2937/205/390 2936/206/390
-f 2970/227/445 2964/228/445 2950/213/445
-f 2950/213/445 2937/214/445 2970/227/445
-f 2933/201/390 2971/202/390 2972/199/390
-f 2972/199/390 2934/200/390 2933/201/390
-f 2970/231/456 2949/233/456 2948/232/456
-f 2948/232/456 2964/224/456 2970/231/456
-f 2964/224/455 2948/232/455 2956/234/455
-f 2956/234/455 2966/225/455 2964/224/455
-f 2966/225/454 2956/234/454 2953/232/454
-f 2953/232/454 2965/224/454 2966/225/454
-f 2965/224/457 2953/232/457 2952/233/457
-f 2952/233/457 2967/231/457 2965/224/457
-f 2941/200/388 2973/199/388 2974/202/388
-f 2974/202/388 2942/201/388 2941/200/388
-f 2945/208/398 2954/236/398 2955/235/398
-f 2955/235/398 2946/207/398 2945/208/398
-f 2946/207/391 2955/235/391 2947/236/391
-f 2947/236/391 2962/208/391 2946/207/391
-f 2969/236/27 2931/238/27 2934/237/27
-f 2934/237/27 2970/231/27 2969/236/27
-f 2970/231/27 2934/237/27 2972/239/27
-f 2972/239/27 2949/233/27 2970/231/27
-f 2949/210/458 2972/241/458 2971/240/458
-f 2971/240/458 2947/209/458 2949/210/458
-f 2947/236/26 2971/238/26 2933/242/26
-f 2933/242/26 2962/208/26 2947/236/26
-f 2962/208/26 2933/242/26 2932/240/26
-f 2932/240/26 2961/209/26 2962/208/26
-f 2944/209/26 2939/240/26 2942/242/26
-f 2942/242/26 2945/208/26 2944/209/26
-f 2945/208/26 2942/242/26 2974/238/26
-f 2974/238/26 2954/236/26 2945/208/26
-f 2954/209/459 2974/240/459 2973/241/459
-f 2973/241/459 2952/210/459 2954/209/459
-f 2952/233/27 2973/239/27 2941/237/27
-f 2941/237/27 2967/231/27 2952/233/27
-f 2967/231/27 2941/237/27 2940/238/27
-f 2940/238/27 2968/236/27 2967/231/27
-f 2975/195/464 2976/198/464 2977/197/4
-f 2977/197/4 2978/196/4 2975/195/464
-f 2979/199/465 2980/202/465 2981/201/465
-f 2981/201/465 2982/200/465 2979/199/465
-f 2983/203/421 2984/206/421 2985/205/421
-f 2985/205/421 2986/204/421 2983/203/421
-f 2987/202/437 2988/199/437 2989/200/437
-f 2989/200/437 2990/201/437 2987/202/437
-f 2991/207/466 2992/209/466 2993/208/466
-f 2993/208/466 2994/207/466 2991/207/466
-f 2995/209/107 2996/211/107 2997/210/107
-f 2986/212/467 2985/214/467 2998/213/467
-f 2998/213/467 2999/196/467 2986/212/467
-f 3000/210/468 3001/211/468 3002/209/468
-f 3003/215/469 3002/209/469 3001/211/469
-f 3001/211/469 3004/216/469 3003/215/469
-f 3005/217/103 2978/196/103 2977/197/103
-f 2977/197/103 3006/218/103 3005/217/103
-f 3007/219/470 2983/203/414 2986/204/414
-f 2986/204/414 3008/220/414 3007/219/470
-f 3009/209/471 2991/207/471 2994/207/471
-f 2994/207/471 3010/208/471 3009/209/471
-f 2986/212/472 2999/196/472 3011/213/472
-f 3011/213/472 3008/214/472 2986/212/472
-f 3003/215/332 3004/216/332 2996/211/332
-f 2996/211/332 2995/209/332 3003/215/332
-f 3012/221/437 2976/221/437 2975/222/437
-f 2975/222/437 2998/222/437 3012/221/437
-f 2998/222/426 2975/222/426 2978/203/426
-f 2978/203/426 2999/203/426 2998/222/426
-f 2999/203/425 2978/203/425 3005/206/425
-f 3005/206/425 3011/206/425 2999/203/425
-f 3011/206/465 3005/206/465 3006/223/465
-f 3006/223/465 3013/223/465 3011/206/465
-f 3013/224/473 3006/224/473 2977/226/473
-f 2977/226/473 3014/225/473 3013/224/473
-f 3014/225/430 2977/226/430 2976/224/430
-f 2976/224/430 3012/224/430 3014/225/430
-f 3008/214/468 3011/213/468 3013/228/468
-f 3013/228/468 3015/227/468 3008/214/468
-f 3015/229/437 3016/221/437 3007/219/437
-f 3007/219/437 3008/220/437 3015/229/437
-f 2984/206/465 3017/223/465 3018/230/465
-f 3018/230/465 2985/205/465 2984/206/465
-f 3018/227/107 3012/228/107 2998/213/107
-f 2998/213/107 2985/214/107 3018/227/107
-f 2981/201/465 3019/202/465 3020/199/465
-f 3020/199/465 2982/200/465 2981/201/465
-f 3018/231/474 2997/233/474 2996/232/474
-f 2996/232/474 3012/224/474 3018/231/474
-f 3012/224/430 2996/232/430 3004/234/430
-f 3004/234/430 3014/225/430 3012/224/430
-f 3014/225/473 3004/234/473 3001/232/473
-f 3001/232/473 3013/224/473 3014/225/473
-f 3013/224/428 3001/232/428 3000/233/428
-f 3000/233/428 3015/231/428 3013/224/428
-f 2989/200/437 3021/199/437 3022/202/437
-f 3022/202/437 2990/201/437 2989/200/437
-f 2993/208/466 3002/236/466 3003/235/466
-f 3003/235/466 2994/207/466 2993/208/466
-f 2994/207/471 3003/235/471 2995/236/471
-f 2995/236/471 3010/208/471 2994/207/471
-f 3017/236/27 2979/238/27 2982/237/27
-f 2982/237/27 3018/231/27 3017/236/27
-f 3018/231/27 2982/237/27 3020/239/27
-f 3020/239/27 2997/233/27 3018/231/27
-f 2997/210/193 3020/241/193 3019/240/193
-f 3019/240/193 2995/209/193 2997/210/193
-f 2995/236/26 3019/238/26 2981/242/26
-f 2981/242/26 3010/208/26 2995/236/26
-f 3010/208/26 2981/242/26 2980/240/26
-f 2980/240/26 3009/209/26 3010/208/26
-f 2992/209/26 2987/240/26 2990/242/26
-f 2990/242/26 2993/208/26 2992/209/26
-f 2993/208/26 2990/242/26 3022/238/26
-f 3022/238/26 3002/236/26 2993/208/26
-f 3002/209/475 3022/240/475 3021/241/475
-f 3021/241/475 3000/210/475 3002/209/475
-f 3000/233/27 3021/239/27 2989/237/27
-f 2989/237/27 3015/231/27 3000/233/27
-f 3015/231/27 2989/237/27 2988/238/27
-f 2988/238/27 3016/236/27 3015/231/27
-f 3023/243/187 3024/246/187 3025/245/187
-f 3025/245/187 3026/244/187 3023/243/187
-f 3023/247/161 3027/250/161 3028/249/161
-f 3028/249/161 3024/248/161 3023/247/161
-f 3024/246/188 3028/252/189 3029/251/188
-f 3029/251/188 3025/245/188 3024/246/188
-f 3025/248/163 3029/249/163 3030/250/163
-f 3030/250/163 3026/247/163 3025/248/163
-f 3031/195/4 3032/198/4 3033/197/4
-f 3033/197/4 3034/196/4 3031/195/4
-f 3035/199/465 3036/202/465 3037/201/465
-f 3037/201/465 3038/200/465 3035/199/465
-f 3039/203/421 3040/206/421 3041/205/421
-f 3041/205/421 3042/204/421 3039/203/421
-f 3043/202/437 3044/199/437 3045/200/437
-f 3045/200/437 3046/201/437 3043/202/437
-f 3047/207/466 3048/209/466 3049/208/466
-f 3049/208/466 3050/207/466 3047/207/466
-f 3051/209/107 3052/211/107 3053/210/107
-f 3042/212/467 3041/214/467 3054/213/467
-f 3054/213/467 3055/196/467 3042/212/467
-f 3056/210/468 3057/211/468 3058/209/468
-f 3059/215/469 3058/209/469 3057/211/469
-f 3057/211/469 3060/216/469 3059/215/469
-f 3061/217/103 3034/196/103 3033/197/103
-f 3033/197/103 3062/218/103 3061/217/103
-f 3063/219/414 3039/203/414 3042/204/470
-f 3042/204/470 3064/220/414 3063/219/414
-f 3065/209/471 3047/207/471 3050/207/471
-f 3050/207/471 3066/208/471 3065/209/471
-f 3042/212/472 3055/196/472 3067/213/472
-f 3067/213/472 3064/214/472 3042/212/472
-f 3059/215/332 3060/216/332 3052/211/332
-f 3052/211/332 3051/209/332 3059/215/332
-f 3068/221/437 3032/221/437 3031/222/437
-f 3031/222/437 3054/222/437 3068/221/437
-f 3054/222/426 3031/222/426 3034/203/426
-f 3034/203/426 3055/203/426 3054/222/426
-f 3055/203/425 3034/203/425 3061/206/425
-f 3061/206/425 3067/206/425 3055/203/425
-f 3067/206/465 3061/206/465 3062/223/465
-f 3062/223/465 3069/223/465 3067/206/465
-f 3069/224/473 3062/224/473 3033/226/473
-f 3033/226/473 3070/225/473 3069/224/473
-f 3070/225/430 3033/226/430 3032/224/430
-f 3032/224/430 3068/224/430 3070/225/430
-f 3064/214/468 3067/213/468 3069/228/468
-f 3069/228/468 3071/227/468 3064/214/468
-f 3071/229/437 3072/221/437 3063/219/437
-f 3063/219/437 3064/220/437 3071/229/437
-f 3040/206/465 3073/223/465 3074/230/465
-f 3074/230/465 3041/205/465 3040/206/465
-f 3074/227/107 3068/228/107 3054/213/107
-f 3054/213/107 3041/214/107 3074/227/107
-f 3037/201/465 3075/202/465 3076/199/465
-f 3076/199/465 3038/200/465 3037/201/465
-f 3074/231/474 3053/233/474 3052/232/474
-f 3052/232/474 3068/224/474 3074/231/474
-f 3068/224/430 3052/232/430 3060/234/430
-f 3060/234/430 3070/225/430 3068/224/430
-f 3070/225/473 3060/234/473 3057/232/473
-f 3057/232/473 3069/224/473 3070/225/473
-f 3069/224/428 3057/232/428 3056/233/428
-f 3056/233/428 3071/231/428 3069/224/428
-f 3045/200/437 3077/199/437 3078/202/437
-f 3078/202/437 3046/201/437 3045/200/437
-f 3049/208/466 3058/236/466 3059/235/466
-f 3059/235/466 3050/207/466 3049/208/466
-f 3050/207/471 3059/235/471 3051/236/471
-f 3051/236/471 3066/208/471 3050/207/471
-f 3073/236/27 3035/238/27 3038/237/27
-f 3038/237/27 3074/231/27 3073/236/27
-f 3074/231/27 3038/237/27 3076/239/27
-f 3076/239/27 3053/233/27 3074/231/27
-f 3053/210/193 3076/241/193 3075/240/193
-f 3075/240/193 3051/209/193 3053/210/193
-f 3051/236/26 3075/238/26 3037/242/26
-f 3037/242/26 3066/208/26 3051/236/26
-f 3066/208/26 3037/242/26 3036/240/26
-f 3036/240/26 3065/209/26 3066/208/26
-f 3048/209/26 3043/240/26 3046/242/26
-f 3046/242/26 3049/208/26 3048/209/26
-f 3049/208/26 3046/242/26 3078/238/26
-f 3078/238/26 3058/236/26 3049/208/26
-f 3058/209/475 3078/240/475 3077/241/475
-f 3077/241/475 3056/210/475 3058/209/475
-f 3056/233/27 3077/239/27 3045/237/27
-f 3045/237/27 3071/231/27 3056/233/27
-f 3071/231/27 3045/237/27 3044/238/27
-f 3044/238/27 3072/236/27 3071/231/27
-f 3079/243/476 3080/246/476 3081/245/476
-f 3081/245/476 3082/244/476 3079/243/476
-f 3079/247/477 3083/250/477 3084/249/477
-f 3084/249/477 3080/248/477 3079/247/477
-f 3080/246/478 3084/252/478 3085/251/478
-f 3085/251/478 3081/245/478 3080/246/478
-f 3081/248/479 3085/249/479 3086/250/479
-f 3086/250/479 3082/247/479 3081/248/479
-f 3087/195/387 3088/198/387 3089/197/387
-f 3089/197/387 3090/196/387 3087/195/387
-f 3091/199/388 3092/202/388 3093/201/388
-f 3093/201/388 3094/200/388 3091/199/388
-f 3095/203/389 3096/206/389 3097/205/389
-f 3097/205/389 3098/204/389 3095/203/389
-f 3099/202/390 3100/199/390 3101/200/390
-f 3101/200/390 3102/201/390 3099/202/390
-f 3103/207/391 3104/209/391 3105/208/391
-f 3105/208/391 3106/207/391 3103/207/391
-f 3107/209/392 3108/211/392 3109/210/392
-f 3098/212/393 3097/214/393 3110/213/393
-f 3110/213/393 3111/196/393 3098/212/393
-f 3112/210/394 3113/211/394 3114/209/394
-f 3115/215/395 3114/209/395 3113/211/395
-f 3113/211/395 3116/216/395 3115/215/395
-f 3117/217/396 3090/196/396 3089/197/396
-f 3089/197/396 3118/218/396 3117/217/396
-f 3119/219/397 3095/203/397 3098/204/397
-f 3098/204/397 3120/220/397 3119/219/397
-f 3121/209/398 3103/207/398 3106/207/398
-f 3106/207/398 3122/208/398 3121/209/398
-f 3098/212/399 3111/196/399 3123/213/399
-f 3123/213/399 3120/214/399 3098/212/399
-f 3115/215/400 3116/216/400 3108/211/400
-f 3108/211/400 3107/209/400 3115/215/400
-f 3124/221/390 3088/221/390 3087/222/390
-f 3087/222/390 3110/222/390 3124/221/390
-f 3110/222/401 3087/222/401 3090/203/401
-f 3090/203/401 3111/203/401 3110/222/401
-f 3111/203/402 3090/203/402 3117/206/402
-f 3117/206/402 3123/206/402 3111/203/402
-f 3123/206/388 3117/206/388 3118/223/388
-f 3118/223/388 3125/223/388 3123/206/388
-f 3125/224/403 3118/224/403 3089/226/403
-f 3089/226/403 3126/225/403 3125/224/403
-f 3126/225/404 3089/226/404 3088/224/404
-f 3088/224/404 3124/224/404 3126/225/404
-f 3120/214/394 3123/213/394 3125/228/394
-f 3125/228/394 3127/227/394 3120/214/394
-f 3127/229/390 3128/221/390 3119/219/390
-f 3119/219/390 3120/220/390 3127/229/390
-f 3096/206/388 3129/223/388 3130/230/388
-f 3130/230/388 3097/205/388 3096/206/388
-f 3130/227/392 3124/228/392 3110/213/392
-f 3110/213/392 3097/214/392 3130/227/392
-f 3093/201/388 3131/202/388 3132/199/388
-f 3132/199/388 3094/200/388 3093/201/388
-f 3130/231/405 3109/233/405 3108/232/405
-f 3108/232/405 3124/224/405 3130/231/405
-f 3124/224/404 3108/232/404 3116/234/404
-f 3116/234/404 3126/225/404 3124/224/404
-f 3126/225/403 3116/234/403 3113/232/403
-f 3113/232/403 3125/224/403 3126/225/403
-f 3125/224/407 3113/232/407 3112/233/407
-f 3112/233/407 3127/231/407 3125/224/407
-f 3101/200/390 3133/199/390 3134/202/390
-f 3134/202/390 3102/201/390 3101/200/390
-f 3105/208/391 3114/236/391 3115/235/391
-f 3115/235/391 3106/207/391 3105/208/391
-f 3106/207/398 3115/235/398 3107/236/398
-f 3107/236/398 3122/208/398 3106/207/398
-f 3129/236/27 3091/238/27 3094/237/27
-f 3094/237/27 3130/231/27 3129/236/27
-f 3130/231/27 3094/237/27 3132/239/27
-f 3132/239/27 3109/233/27 3130/231/27
-f 3109/210/409 3132/241/409 3131/240/409
-f 3131/240/409 3107/209/409 3109/210/409
-f 3107/236/26 3131/238/26 3093/242/26
-f 3093/242/26 3122/208/26 3107/236/26
-f 3122/208/26 3093/242/26 3092/240/26
-f 3092/240/26 3121/209/26 3122/208/26
-f 3104/209/26 3099/240/26 3102/242/26
-f 3102/242/26 3105/208/26 3104/209/26
-f 3105/208/26 3102/242/26 3134/238/26
-f 3134/238/26 3114/236/26 3105/208/26
-f 3114/209/410 3134/240/410 3133/241/410
-f 3133/241/410 3112/210/410 3114/209/410
-f 3112/233/27 3133/239/27 3101/237/27
-f 3101/237/27 3127/231/27 3112/233/27
-f 3127/231/27 3101/237/27 3100/238/27
-f 3100/238/27 3128/236/27 3127/231/27
-f 3135/243/180 3136/246/180 3137/245/180
-f 3137/245/180 3138/244/180 3135/243/180
-f 3135/247/151 3139/250/151 3140/249/151
-f 3140/249/151 3136/248/151 3135/247/151
-f 3136/246/181 3140/252/181 3141/251/182
-f 3141/251/182 3137/245/181 3136/246/181
-f 3137/248/153 3141/249/153 3142/250/153
-f 3142/250/153 3138/247/153 3137/248/153
-f 3143/253/24 3144/256/24 3145/255/24
-f 3145/255/24 3146/254/24 3143/253/24
-f 3147/257/23 3148/258/23 3144/256/23
-f 3144/256/23 3143/253/23 3147/257/23
-f 3149/259/191 3150/260/22 3148/258/191
-f 3148/258/191 3147/257/191 3149/259/191
-f 3151/261/21 3152/264/21 3150/263/21
-f 3150/263/21 3149/262/21 3151/261/21
-f 3153/265/20 3154/266/20 3152/264/20
-f 3152/264/20 3151/261/20 3153/265/20
-f 3155/267/19 3156/268/19 3154/266/19
-f 3154/266/19 3153/265/19 3155/267/19
-f 3157/269/194 3158/270/194 3156/268/18
-f 3156/268/18 3155/267/18 3157/269/194
-f 3159/271/17 3160/272/17 3158/270/17
-f 3158/270/17 3157/269/17 3159/271/17
-f 3161/273/16 3162/274/16 3160/272/16
-f 3160/272/16 3159/271/16 3161/273/16
-f 3163/275/118 3164/276/118 3162/274/15
-f 3162/274/15 3161/273/118 3163/275/118
-f 3165/277/14 3166/278/14 3164/276/14
-f 3164/276/14 3163/275/14 3165/277/14
-f 3146/254/13 3145/255/13 3166/278/192
-f 3166/278/192 3165/277/192 3146/254/13
-f 3144/279/27 3167/282/27 3168/281/27
-f 3168/281/27 3145/280/27 3144/279/27
-f 3169/283/27 3170/284/27 3171/282/27
-f 3171/282/27 3172/279/27 3169/283/27
-f 3150/285/27 3173/285/27 3174/284/27
-f 3174/284/27 3148/283/27 3150/285/27
-f 3175/286/27 3176/287/27 3177/285/27
-f 3177/285/27 3178/285/27 3175/286/27
-f 3154/288/27 3179/289/27 3180/287/27
-f 3180/287/27 3152/286/27 3154/288/27
-f 3181/290/27 3182/291/27 3183/289/27
-f 3183/289/27 3184/288/27 3181/290/27
-f 3158/292/27 3185/293/27 3186/291/27
-f 3186/291/27 3156/290/27 3158/292/27
-f 3187/294/27 3188/295/27 3189/293/27
-f 3189/293/27 3190/292/27 3187/294/27
-f 3162/296/27 3191/297/27 3192/295/27
-f 3192/295/27 3160/294/27 3162/296/27
-f 3193/298/27 3194/299/27 3195/297/27
-f 3195/297/27 3196/296/27 3193/298/27
-f 3166/300/27 3197/300/27 3198/299/27
-f 3198/299/27 3164/298/27 3166/300/27
-f 3199/280/27 3200/281/27 3201/300/27
-f 3201/300/27 3202/300/27 3199/280/27
-f 3167/301/18 3203/304/18 3204/303/18
-f 3204/303/18 3168/302/18 3167/301/18
-f 3174/305/17 3205/306/17 3203/304/17
-f 3203/304/17 3167/301/17 3174/305/17
-f 3173/307/16 3206/308/16 3205/306/16
-f 3205/306/16 3174/305/16 3173/307/16
-f 3180/309/15 3207/310/15 3206/308/15
-f 3206/308/15 3173/307/15 3180/309/15
-f 3179/311/14 3208/312/14 3207/310/14
-f 3207/310/14 3180/309/14 3179/311/14
-f 3186/313/13 3209/314/13 3208/312/13
-f 3208/312/13 3179/311/13 3186/313/13
-f 3185/315/25 3210/316/25 3209/314/24
-f 3209/314/24 3186/313/24 3185/315/25
-f 3192/317/23 3211/318/23 3210/316/23
-f 3210/316/23 3185/315/23 3192/317/23
-f 3191/319/22 3212/320/22 3211/318/22
-f 3211/318/22 3192/317/22 3191/319/22
-f 3198/321/21 3213/324/21 3212/323/178
-f 3212/323/178 3191/322/21 3198/321/21
-f 3197/325/20 3214/326/20 3213/324/20
-f 3213/324/20 3198/321/20 3197/325/20
-f 3168/302/19 3204/303/19 3214/326/190
-f 3214/326/190 3197/325/190 3168/302/19
-f 3203/327/27 3215/329/27 3204/328/27
-f 3205/330/27 3215/329/27 3203/327/27
-f 3206/331/27 3215/329/27 3205/330/27
-f 3207/332/27 3215/329/27 3206/331/27
-f 3208/333/27 3215/329/27 3207/332/27
-f 3209/334/27 3215/329/27 3208/333/27
-f 3210/335/27 3215/329/27 3209/334/27
-f 3211/336/27 3215/329/27 3210/335/27
-f 3212/337/27 3215/329/27 3211/336/27
-f 3213/338/27 3215/329/27 3212/337/27
-f 3214/339/27 3215/329/27 3213/338/27
-f 3204/328/27 3215/329/27 3214/339/27
-f 3148/258/23 3169/341/23 3172/340/23
-f 3172/340/23 3144/256/23 3148/258/23
-f 3144/279/153 3172/279/153 3171/282/153
-f 3171/282/153 3167/282/153 3144/279/153
-f 3167/301/17 3171/343/17 3170/342/17
-f 3170/342/17 3174/305/17 3167/301/17
-f 3174/284/196 3170/284/196 3169/283/196
-f 3169/283/196 3148/283/196 3174/284/196
-f 3152/264/21 3175/345/21 3178/344/178
-f 3178/344/178 3150/263/21 3152/264/21
-f 3150/285/1 3178/285/1 3177/285/1
-f 3177/285/1 3173/285/1 3150/285/1
-f 3173/307/15 3177/347/15 3176/346/15
-f 3176/346/15 3180/309/15 3173/307/15
-f 3180/287/195 3176/287/195 3175/286/195
-f 3175/286/195 3152/286/195 3180/287/195
-f 3156/268/19 3181/349/19 3184/348/19
-f 3184/348/19 3154/266/19 3156/268/19
-f 3154/288/161 3184/288/161 3183/289/161
-f 3183/289/161 3179/289/161 3154/288/161
-f 3179/311/13 3183/351/13 3182/350/13
-f 3182/350/13 3186/313/13 3179/311/13
-f 3186/291/4 3182/291/4 3181/290/4
-f 3181/290/4 3156/290/4 3186/291/4
-f 3160/272/17 3187/353/17 3190/352/17
-f 3190/352/17 3158/270/17 3160/272/17
-f 3158/292/151 3190/292/151 3189/293/151
-f 3189/293/151 3185/293/151 3158/292/151
-f 3185/315/23 3189/355/23 3188/354/23
-f 3188/354/23 3192/317/23 3185/315/23
-f 3192/295/198 3188/295/198 3187/294/198
-f 3187/294/198 3160/294/198 3192/295/198
-f 3164/276/118 3193/357/15 3196/356/15
-f 3196/356/15 3162/274/15 3164/276/118
-f 3162/296/7 3196/296/7 3195/297/7
-f 3195/297/7 3191/297/7 3162/296/7
-f 3191/322/21 3195/359/21 3194/358/21
-f 3194/358/21 3198/321/21 3191/322/21
-f 3198/299/197 3194/299/197 3193/298/197
-f 3193/298/197 3164/298/197 3198/299/197
-f 3145/255/13 3199/361/13 3202/360/13
-f 3202/360/13 3166/278/192 3145/255/13
-f 3166/300/163 3202/300/163 3201/300/163
-f 3201/300/163 3197/300/163 3166/300/163
-f 3197/325/190 3201/363/190 3200/362/19
-f 3200/362/19 3168/302/19 3197/325/190
-f 3168/281/10 3200/281/10 3199/280/10
-f 3199/280/10 3145/280/10 3168/281/10
-f 3216/1/7 3217/2/8 3218/3/8
-f 3218/3/8 3219/4/7 3216/1/7
-f 3217/2/8 3220/5/9 3221/6/9
-f 3221/6/9 3218/3/8 3217/2/8
-f 3220/5/9 3222/7/10 3223/8/10
-f 3223/8/10 3221/6/9 3220/5/9
-f 3222/9/10 3224/10/11 3225/11/11
-f 3225/11/11 3223/12/10 3222/9/10
-f 3224/10/11 3226/13/12 3227/14/12
-f 3227/14/12 3225/11/11 3224/10/11
-f 3226/13/12 3228/15/1 3229/16/1
-f 3229/16/1 3227/14/12 3226/13/12
-f 3228/15/1 3230/17/2 3231/18/2
-f 3231/18/2 3229/16/1 3228/15/1
-f 3230/17/2 3232/19/3 3233/20/3
-f 3233/20/3 3231/18/2 3230/17/2
-f 3232/19/3 3234/21/4 3235/22/4
-f 3235/22/4 3233/20/3 3232/19/3
-f 3234/21/4 3236/23/5 3237/24/5
-f 3237/24/5 3235/22/4 3234/21/4
-f 3236/23/5 3238/25/6 3239/26/6
-f 3239/26/6 3237/24/5 3236/23/5
-f 3238/25/6 3216/1/7 3219/4/7
-f 3219/4/7 3239/26/6 3238/25/6
-f 3240/27/19 3241/28/19 3242/29/19
-f 3242/29/19 3243/30/19 3240/27/19
-f 3244/31/20 3240/27/20 3243/30/20
-f 3243/30/20 3245/32/20 3244/31/20
-f 3246/33/21 3244/31/21 3245/32/21
-f 3245/32/21 3247/34/21 3246/33/21
-f 3248/35/22 3246/36/22 3247/37/22
-f 3247/37/22 3249/38/22 3248/35/22
-f 3250/39/23 3248/35/23 3249/38/23
-f 3249/38/23 3251/40/23 3250/39/23
-f 3252/41/24 3250/39/24 3251/40/24
-f 3251/40/24 3253/42/24 3252/41/24
-f 3254/43/13 3252/41/13 3253/42/13
-f 3253/42/13 3255/44/13 3254/43/13
-f 3256/45/14 3254/43/14 3255/44/14
-f 3255/44/14 3257/46/14 3256/45/14
-f 3258/47/15 3256/45/15 3257/46/15
-f 3257/46/15 3259/48/15 3258/47/15
-f 3260/49/16 3258/47/16 3259/48/16
-f 3259/48/16 3261/50/16 3260/49/16
-f 3262/51/17 3260/49/17 3261/50/17
-f 3261/50/17 3263/52/17 3262/51/17
-f 3241/28/18 3262/51/194 3263/52/18
-f 3263/52/18 3242/29/18 3241/28/18
-f 3217/53/26 3216/54/26 3241/54/26
-f 3241/54/26 3240/53/26 3217/53/26
-f 3216/54/26 3238/55/26 3262/55/26
-f 3262/55/26 3241/54/26 3216/54/26
-f 3238/55/26 3236/56/26 3260/56/26
-f 3260/56/26 3262/55/26 3238/55/26
-f 3236/56/26 3234/57/26 3258/57/26
-f 3258/57/26 3260/56/26 3236/56/26
-f 3234/57/26 3232/58/26 3256/59/26
-f 3256/59/26 3258/57/26 3234/57/26
-f 3232/58/26 3230/60/26 3254/61/26
-f 3254/61/26 3256/59/26 3232/58/26
-f 3230/60/26 3228/62/26 3252/62/26
-f 3252/62/26 3254/61/26 3230/60/26
-f 3228/62/26 3226/63/26 3250/64/26
-f 3250/64/26 3252/62/26 3228/62/26
-f 3226/63/26 3224/65/26 3248/66/26
-f 3248/66/26 3250/64/26 3226/63/26
-f 3224/65/26 3222/67/26 3246/67/26
-f 3246/67/26 3248/66/26 3224/65/26
-f 3222/67/26 3220/68/26 3244/68/26
-f 3244/68/26 3246/67/26 3222/67/26
-f 3220/68/26 3217/53/26 3240/53/26
-f 3240/53/26 3244/68/26 3220/68/26
-f 3264/54/27 3265/53/27 3243/53/27
-f 3243/53/27 3242/54/27 3264/54/27
-f 3265/53/27 3266/68/27 3245/68/27
-f 3245/68/27 3243/53/27 3265/53/27
-f 3266/68/27 3267/67/27 3247/67/27
-f 3247/67/27 3245/68/27 3266/68/27
-f 3267/67/27 3268/65/27 3249/66/27
-f 3249/66/27 3247/67/27 3267/67/27
-f 3268/65/27 3269/63/27 3251/64/27
-f 3251/64/27 3249/66/27 3268/65/27
-f 3269/63/27 3270/62/27 3253/62/27
-f 3253/62/27 3251/64/27 3269/63/27
-f 3270/62/27 3271/60/27 3255/61/27
-f 3255/61/27 3253/62/27 3270/62/27
-f 3271/60/27 3272/58/27 3257/59/27
-f 3257/59/27 3255/61/27 3271/60/27
-f 3272/58/27 3273/57/27 3259/57/27
-f 3259/57/27 3257/59/27 3272/58/27
-f 3273/57/27 3274/56/27 3261/56/27
-f 3261/56/27 3259/57/27 3273/57/27
-f 3274/56/27 3275/55/27 3263/55/27
-f 3263/55/27 3261/56/27 3274/56/27
-f 3275/55/27 3264/54/27 3242/54/27
-f 3242/54/27 3263/55/27 3275/55/27
-f 3264/69/7 3276/70/7 3277/71/8
-f 3277/71/8 3265/72/8 3264/69/7
-f 3265/72/8 3277/71/8 3278/73/20
-f 3278/73/20 3266/74/20 3265/72/8
-f 3266/74/21 3278/73/21 3279/75/21
-f 3279/75/21 3267/76/21 3266/74/21
-f 3267/76/22 3279/75/22 3280/77/11
-f 3280/77/11 3268/78/11 3267/76/22
-f 3268/78/11 3280/77/11 3281/79/12
-f 3281/79/12 3269/80/12 3268/78/11
-f 3269/81/12 3281/82/12 3282/83/1
-f 3282/83/1 3270/84/1 3269/81/12
-f 3270/84/1 3282/83/1 3283/85/2
-f 3283/85/2 3271/86/2 3270/84/1
-f 3271/86/2 3283/85/2 3284/87/3
-f 3284/87/3 3272/88/3 3271/86/2
-f 3272/88/3 3284/87/3 3285/89/4
-f 3285/89/4 3273/90/4 3272/88/3
-f 3273/90/4 3285/89/4 3286/91/5
-f 3286/91/5 3274/92/5 3273/90/4
-f 3274/92/5 3286/91/5 3287/93/6
-f 3287/93/6 3275/94/6 3274/92/5
-f 3275/94/6 3287/93/6 3276/70/7
-f 3276/70/7 3264/69/7 3275/94/6
-f 3288/95/26 3289/96/26 3290/96/26
-f 3290/96/26 3291/95/26 3288/95/26
-f 3292/97/26 3288/95/26 3291/95/26
-f 3291/95/26 3293/97/26 3292/97/26
-f 3294/67/26 3292/97/26 3293/97/26
-f 3293/97/26 3295/98/26 3294/67/26
-f 3296/99/26 3294/67/26 3295/98/26
-f 3295/98/26 3297/99/26 3296/99/26
-f 3298/100/26 3296/99/26 3297/99/26
-f 3297/99/26 3299/100/26 3298/100/26
-f 3300/101/26 3298/100/26 3299/100/26
-f 3299/100/26 3301/101/26 3300/101/26
-f 3302/61/26 3300/101/26 3301/101/26
-f 3301/101/26 3303/61/26 3302/61/26
-f 3304/59/26 3302/61/26 3303/61/26
-f 3303/61/26 3305/102/26 3304/59/26
-f 3306/103/26 3304/59/26 3305/102/26
-f 3305/102/26 3307/103/26 3306/103/26
-f 3308/104/26 3306/103/26 3307/103/26
-f 3307/103/26 3309/105/26 3308/104/26
-f 3310/106/26 3308/104/26 3309/105/26
-f 3309/105/26 3311/106/26 3310/106/26
-f 3289/96/26 3310/106/26 3311/106/26
-f 3311/106/26 3290/96/26 3289/96/26
-f 3291/107/34 3290/108/34 3312/109/34
-f 3312/109/34 3313/110/34 3291/107/34
-f 3293/111/35 3291/107/35 3313/110/35
-f 3313/110/35 3314/112/35 3293/111/35
-f 3295/113/36 3293/111/36 3314/112/36
-f 3314/112/36 3315/114/36 3295/113/36
-f 3297/115/37 3295/113/37 3315/114/37
-f 3315/114/37 3316/116/37 3297/115/37
-f 3299/117/38 3297/115/38 3316/116/38
-f 3316/116/38 3317/118/38 3299/117/38
-f 3301/119/39 3299/117/39 3317/118/39
-f 3317/118/39 3318/120/39 3301/119/39
-f 3303/121/28 3301/119/28 3318/120/28
-f 3318/120/28 3319/122/28 3303/121/28
-f 3305/123/29 3303/121/29 3319/122/29
-f 3319/122/29 3320/124/29 3305/123/29
-f 3307/125/30 3305/123/30 3320/124/30
-f 3320/124/30 3321/126/30 3307/125/30
-f 3309/127/31 3307/128/31 3321/129/31
-f 3321/129/31 3322/130/31 3309/127/31
-f 3311/131/32 3309/127/32 3322/130/32
-f 3322/130/32 3323/132/32 3311/131/32
-f 3290/108/33 3311/131/33 3323/132/33
-f 3323/132/33 3312/109/33 3290/108/33
-f 3313/110/48 3312/109/48 3324/133/48
-f 3324/133/48 3325/134/48 3313/110/48
-f 3314/112/49 3313/110/49 3325/134/49
-f 3325/134/49 3326/135/49 3314/112/49
-f 3315/114/50 3314/112/50 3326/135/50
-f 3326/135/50 3327/136/50 3315/114/50
-f 3316/116/51 3315/114/51 3327/136/52
-f 3327/136/52 3328/137/51 3316/116/51
-f 3317/118/53 3316/116/53 3328/137/53
-f 3328/137/53 3329/138/53 3317/118/53
-f 3318/120/54 3317/118/54 3329/138/54
-f 3329/138/54 3330/139/54 3318/120/54
-f 3319/122/386 3318/120/40 3330/139/40
-f 3330/139/40 3331/140/40 3319/122/386
-f 3320/124/41 3319/122/41 3331/140/41
-f 3331/140/41 3332/141/41 3320/124/41
-f 3321/126/42 3320/124/42 3332/141/42
-f 3332/141/42 3333/142/43 3321/126/42
-f 3322/130/44 3321/129/44 3333/143/44
-f 3333/143/44 3334/144/44 3322/130/44
-f 3323/132/45 3322/130/45 3334/144/45
-f 3334/144/45 3335/145/45 3323/132/45
-f 3312/109/46 3323/132/385 3335/145/46
-f 3335/145/46 3324/133/46 3312/109/46
-f 3336/146/64 3337/147/64 3277/148/64
-f 3277/148/64 3276/149/64 3336/146/64
-f 3337/147/66 3338/150/66 3278/151/65
-f 3278/151/65 3277/148/65 3337/147/66
-f 3338/152/67 3339/153/67 3279/154/67
-f 3279/154/67 3278/155/67 3338/152/67
-f 3339/153/68 3340/142/68 3280/156/68
-f 3280/156/68 3279/154/68 3339/153/68
-f 3340/142/70 3341/157/70 3281/158/69
-f 3281/158/69 3280/156/69 3340/142/70
-f 3341/157/71 3342/159/71 3282/160/71
-f 3282/160/71 3281/158/71 3341/157/71
-f 3342/159/56 3343/161/56 3283/162/56
-f 3283/162/56 3282/160/56 3342/159/56
-f 3343/161/57 3344/163/57 3284/164/58
-f 3284/164/58 3283/162/58 3343/161/57
-f 3344/163/59 3345/165/59 3285/166/59
-f 3285/166/59 3284/164/59 3344/163/59
-f 3345/165/60 3346/167/60 3286/168/60
-f 3286/168/60 3285/166/60 3345/165/60
-f 3346/167/61 3347/169/61 3287/170/61
-f 3287/170/61 3286/168/62 3346/167/61
-f 3347/169/63 3336/146/63 3276/149/63
-f 3276/149/63 3287/170/63 3347/169/63
-f 3289/171/7 3288/172/8 3337/173/8
-f 3337/173/8 3336/174/7 3289/171/7
-f 3288/172/8 3292/175/9 3338/176/9
-f 3338/176/9 3337/173/8 3288/172/8
-f 3292/177/9 3294/178/10 3339/179/10
-f 3339/179/10 3338/180/9 3292/177/9
-f 3294/178/10 3296/86/11 3340/181/11
-f 3340/181/11 3339/179/10 3294/178/10
-f 3296/86/11 3298/182/12 3341/183/12
-f 3341/183/12 3340/181/11 3296/86/11
-f 3298/182/12 3300/184/1 3342/185/1
-f 3342/185/1 3341/183/12 3298/182/12
-f 3300/184/1 3302/186/2 3343/187/2
-f 3343/187/2 3342/185/1 3300/184/1
-f 3302/186/2 3304/188/3 3344/189/3
-f 3344/189/3 3343/187/2 3302/186/2
-f 3304/188/3 3306/190/4 3345/191/4
-f 3345/191/4 3344/189/3 3304/188/3
-f 3306/190/4 3308/76/5 3346/192/5
-f 3346/192/5 3345/191/4 3306/190/4
-f 3308/76/5 3310/193/6 3347/194/6
-f 3347/194/6 3346/192/5 3308/76/5
-f 3310/193/6 3289/171/7 3336/174/7
-f 3336/174/7 3347/194/6 3310/193/6
-f 3348/195/131 3349/196/131 3350/197/131
-f 3350/197/131 3351/198/131 3348/195/131
-f 3352/199/75 3353/200/75 3354/201/75
-f 3354/201/75 3355/202/75 3352/199/75
-f 3356/203/132 3357/204/132 3358/205/132
-f 3358/205/132 3359/206/132 3356/203/132
-f 3360/202/73 3361/201/73 3362/200/73
-f 3362/200/73 3363/199/73 3360/202/73
-f 3364/207/83 3365/207/83 3366/208/83
-f 3366/208/83 3367/209/83 3364/207/83
-f 3368/209/133 3369/210/133 3370/211/133
-f 3357/212/134 3371/196/134 3372/213/134
-f 3372/213/134 3358/214/134 3357/212/134
-f 3373/210/135 3374/209/135 3375/211/135
-f 3376/215/136 3377/216/136 3375/211/136
-f 3375/211/136 3374/209/136 3376/215/136
-f 3378/217/137 3379/218/137 3350/197/137
-f 3350/197/137 3349/196/137 3378/217/137
-f 3380/219/139 3381/220/139 3357/204/139
-f 3357/204/139 3356/203/139 3380/219/139
-f 3382/209/76 3383/208/76 3365/207/76
-f 3365/207/76 3364/207/76 3382/209/76
-f 3357/212/140 3381/214/140 3384/213/140
-f 3384/213/140 3371/196/140 3357/212/140
-f 3376/215/141 3368/209/141 3370/211/141
-f 3370/211/141 3377/216/141 3376/215/141
-f 3385/221/73 3372/222/73 3348/222/73
-f 3348/222/73 3351/221/73 3385/221/73
-f 3372/222/87 3371/203/87 3349/203/87
-f 3349/203/87 3348/222/87 3372/222/87
-f 3371/203/86 3384/206/86 3378/206/86
-f 3378/206/86 3349/203/86 3371/203/86
-f 3384/206/75 3386/223/75 3379/223/75
-f 3379/223/75 3378/206/75 3384/206/75
-f 3386/224/142 3387/225/142 3350/226/142
-f 3350/226/142 3379/224/142 3386/224/142
-f 3387/225/143 3385/224/143 3351/224/143
-f 3351/224/143 3350/226/143 3387/225/143
-f 3381/214/135 3388/227/135 3386/228/135
-f 3386/228/135 3384/213/135 3381/214/135
-f 3388/229/73 3381/220/73 3380/219/73
-f 3380/219/73 3389/221/73 3388/229/73
-f 3359/206/75 3358/205/75 3390/230/75
-f 3390/230/75 3391/223/75 3359/206/75
-f 3390/227/133 3358/214/133 3372/213/133
-f 3372/213/133 3385/228/133 3390/227/133
-f 3354/201/75 3353/200/75 3392/199/75
-f 3392/199/75 3393/202/75 3354/201/75
-f 3390/231/144 3385/224/144 3370/232/144
-f 3370/232/144 3369/233/144 3390/231/144
-f 3385/224/143 3387/225/143 3377/234/143
-f 3377/234/143 3370/232/143 3385/224/143
-f 3387/225/142 3386/224/142 3375/232/142
-f 3375/232/142 3377/234/142 3387/225/142
-f 3386/224/145 3388/231/145 3373/233/145
-f 3373/233/145 3375/232/145 3386/224/145
-f 3362/200/73 3361/201/73 3394/202/73
-f 3394/202/73 3395/199/73 3362/200/73
-f 3366/208/83 3365/207/83 3376/235/83
-f 3376/235/83 3374/236/83 3366/208/83
-f 3365/207/76 3383/208/76 3368/236/76
-f 3368/236/76 3376/235/76 3365/207/76
-f 3391/236/27 3390/231/27 3353/237/27
-f 3353/237/27 3352/238/27 3391/236/27
-f 3390/231/27 3369/233/27 3392/239/27
-f 3392/239/27 3353/237/27 3390/231/27
-f 3369/210/480 3368/209/480 3393/240/480
-f 3393/240/480 3392/241/480 3369/210/480
-f 3368/236/26 3383/208/26 3354/242/26
-f 3354/242/26 3393/238/26 3368/236/26
-f 3383/208/26 3382/209/26 3355/240/26
-f 3355/240/26 3354/242/26 3383/208/26
-f 3367/209/26 3366/208/26 3361/242/26
-f 3361/242/26 3360/240/26 3367/209/26
-f 3366/208/26 3374/236/26 3394/238/26
-f 3394/238/26 3361/242/26 3366/208/26
-f 3374/209/147 3373/210/147 3395/241/147
-f 3395/241/147 3394/240/147 3374/209/147
-f 3373/233/27 3388/231/27 3362/237/27
-f 3362/237/27 3395/239/27 3373/233/27
-f 3388/231/27 3389/236/27 3363/238/27
-f 3363/238/27 3362/237/27 3388/231/27
-f 3396/195/10 3397/196/10 3398/197/10
-f 3398/197/10 3399/198/10 3396/195/10
-f 3400/199/101 3401/200/100 3402/201/100
-f 3402/201/100 3403/202/101 3400/199/101
-f 3404/203/108 3405/204/108 3406/205/108
-f 3406/205/108 3407/206/108 3404/203/108
-f 3408/202/98 3409/201/97 3410/200/97
-f 3410/200/97 3411/199/98 3408/202/98
-f 3412/207/166 3413/207/166 3414/208/166
-f 3414/208/166 3415/209/166 3412/207/166
-f 3416/209/167 3417/210/167 3418/211/167
-f 3405/212/168 3419/196/168 3420/213/168
-f 3420/213/168 3406/214/168 3405/212/168
-f 3421/210/169 3422/209/169 3423/211/169
-f 3424/215/170 3425/216/170 3423/211/170
-f 3423/211/170 3422/209/170 3424/215/170
-f 3426/217/171 3427/218/171 3398/197/171
-f 3398/197/171 3397/196/171 3426/217/171
-f 3428/219/99 3429/220/99 3405/204/99
-f 3405/204/99 3404/203/99 3428/219/99
-f 3430/209/173 3431/208/173 3413/207/173
-f 3413/207/173 3412/207/173 3430/209/173
-f 3405/212/174 3429/214/174 3432/213/174
-f 3432/213/174 3419/196/174 3405/212/174
-f 3424/215/175 3416/209/175 3418/211/175
-f 3418/211/175 3425/216/175 3424/215/175
-f 3433/221/98 3420/222/98 3396/222/97
-f 3396/222/97 3399/221/97 3433/221/98
-f 3420/222/113 3419/203/113 3397/203/113
-f 3397/203/113 3396/222/113 3420/222/113
-f 3419/203/112 3432/206/112 3426/206/112
-f 3426/206/112 3397/203/112 3419/203/112
-f 3432/206/100 3434/223/100 3427/223/100
-f 3427/223/100 3426/206/100 3432/206/100
-f 3434/224/176 3435/225/176 3398/226/176
-f 3398/226/176 3427/224/176 3434/224/176
-f 3435/225/117 3433/224/117 3399/224/117
-f 3399/224/117 3398/226/117 3435/225/117
-f 3429/214/169 3436/227/169 3434/228/169
-f 3434/228/169 3432/213/169 3429/214/169
-f 3436/229/98 3429/220/98 3428/219/98
-f 3428/219/98 3437/221/98 3436/229/98
-f 3407/206/100 3406/205/100 3438/230/100
-f 3438/230/100 3439/223/100 3407/206/100
-f 3438/227/167 3406/214/167 3420/213/167
-f 3420/213/167 3433/228/167 3438/227/167
-f 3402/201/100 3401/200/100 3440/199/101
-f 3440/199/101 3441/202/101 3402/201/100
-f 3438/231/481 3433/224/481 3418/232/481
-f 3418/232/481 3417/233/481 3438/231/481
-f 3433/224/117 3435/225/117 3425/234/117
-f 3425/234/117 3418/232/117 3433/224/117
-f 3435/225/176 3434/224/176 3423/232/176
-f 3423/232/176 3425/234/176 3435/225/176
-f 3434/224/115 3436/231/115 3421/233/115
-f 3421/233/115 3423/232/115 3434/224/115
-f 3410/200/97 3409/201/97 3442/202/98
-f 3442/202/98 3443/199/98 3410/200/97
-f 3414/208/166 3413/207/166 3424/235/166
-f 3424/235/166 3422/236/166 3414/208/166
-f 3413/207/173 3431/208/173 3416/236/173
-f 3416/236/173 3424/235/173 3413/207/173
-f 3439/236/27 3438/231/27 3401/237/27
-f 3401/237/27 3400/238/27 3439/236/27
-f 3438/231/27 3417/233/27 3440/239/27
-f 3440/239/27 3401/237/27 3438/231/27
-f 3417/210/178 3416/209/178 3441/240/178
-f 3441/240/178 3440/241/178 3417/210/178
-f 3416/236/26 3431/208/26 3402/242/26
-f 3402/242/26 3441/238/26 3416/236/26
-f 3431/208/26 3430/209/26 3403/240/26
-f 3403/240/26 3402/242/26 3431/208/26
-f 3415/209/26 3414/208/26 3409/242/26
-f 3409/242/26 3408/240/26 3415/209/26
-f 3414/208/26 3422/236/26 3442/238/26
-f 3442/238/26 3409/242/26 3414/208/26
-f 3422/209/179 3421/210/179 3443/241/179
-f 3443/241/179 3442/240/179 3422/209/179
-f 3421/233/27 3436/231/27 3410/237/27
-f 3410/237/27 3443/239/27 3421/233/27
-f 3436/231/27 3437/236/27 3411/238/27
-f 3411/238/27 3410/237/27 3436/231/27
-f 3444/243/183 3445/244/183 3446/245/183
-f 3446/245/183 3447/246/183 3444/243/183
-f 3444/247/184 3447/248/184 3448/249/184
-f 3448/249/184 3449/250/184 3444/247/184
-f 3447/246/185 3446/245/185 3450/251/185
-f 3450/251/185 3448/252/185 3447/246/185
-f 3446/248/186 3445/247/186 3451/250/186
-f 3451/250/186 3450/249/186 3446/248/186
-f 3452/195/164 3453/196/164 3454/197/164
-f 3454/197/164 3455/198/164 3452/195/164
-f 3456/199/101 3457/200/100 3458/201/100
-f 3458/201/100 3459/202/101 3456/199/101
-f 3460/203/108 3461/204/108 3462/205/108
-f 3462/205/108 3463/206/108 3460/203/108
-f 3464/202/98 3465/201/97 3466/200/97
-f 3466/200/97 3467/199/98 3464/202/98
-f 3468/207/166 3469/207/166 3470/208/166
-f 3470/208/166 3471/209/166 3468/207/166
-f 3472/209/167 3473/210/167 3474/211/167
-f 3461/212/168 3475/196/168 3476/213/168
-f 3476/213/168 3462/214/168 3461/212/168
-f 3477/210/169 3478/209/169 3479/211/169
-f 3480/215/170 3481/216/170 3479/211/170
-f 3479/211/170 3478/209/170 3480/215/170
-f 3482/217/171 3483/218/171 3454/197/171
-f 3454/197/171 3453/196/171 3482/217/171
-f 3484/219/172 3485/220/172 3461/204/99
-f 3461/204/99 3460/203/99 3484/219/172
-f 3486/209/173 3487/208/173 3469/207/173
-f 3469/207/173 3468/207/173 3486/209/173
-f 3461/212/174 3485/214/174 3488/213/174
-f 3488/213/174 3475/196/174 3461/212/174
-f 3480/215/175 3472/209/175 3474/211/175
-f 3474/211/175 3481/216/175 3480/215/175
-f 3489/221/98 3476/222/98 3452/222/98
-f 3452/222/98 3455/221/98 3489/221/98
-f 3476/222/113 3475/203/113 3453/203/113
-f 3453/203/113 3452/222/113 3476/222/113
-f 3475/203/112 3488/206/112 3482/206/112
-f 3482/206/112 3453/203/112 3475/203/112
-f 3488/206/100 3490/223/100 3483/223/100
-f 3483/223/100 3482/206/100 3488/206/100
-f 3490/224/176 3491/225/176 3454/226/176
-f 3454/226/176 3483/224/176 3490/224/176
-f 3491/225/117 3489/224/117 3455/224/117
-f 3455/224/117 3454/226/117 3491/225/117
-f 3485/214/169 3492/227/169 3490/228/169
-f 3490/228/169 3488/213/169 3485/214/169
-f 3492/229/125 3485/220/125 3484/219/97
-f 3484/219/97 3493/221/97 3492/229/125
-f 3463/206/100 3462/205/101 3494/230/101
-f 3494/230/101 3495/223/100 3463/206/100
-f 3494/227/167 3462/214/167 3476/213/167
-f 3476/213/167 3489/228/167 3494/227/167
-f 3458/201/100 3457/200/100 3496/199/101
-f 3496/199/101 3497/202/101 3458/201/100
-f 3494/231/481 3489/224/481 3474/232/481
-f 3474/232/481 3473/233/481 3494/231/481
-f 3489/224/117 3491/225/117 3481/234/117
-f 3481/234/117 3474/232/117 3489/224/117
-f 3491/225/176 3490/224/176 3479/232/176
-f 3479/232/176 3481/234/176 3491/225/176
-f 3490/224/115 3492/231/115 3477/233/115
-f 3477/233/115 3479/232/115 3490/224/115
-f 3466/200/97 3465/201/97 3498/202/98
-f 3498/202/98 3499/199/98 3466/200/97
-f 3470/208/166 3469/207/166 3480/235/166
-f 3480/235/166 3478/236/166 3470/208/166
-f 3469/207/173 3487/208/173 3472/236/173
-f 3472/236/173 3480/235/173 3469/207/173
-f 3495/236/27 3494/231/27 3457/237/27
-f 3457/237/27 3456/238/27 3495/236/27
-f 3494/231/27 3473/233/27 3496/239/27
-f 3496/239/27 3457/237/27 3494/231/27
-f 3473/210/178 3472/209/178 3497/240/178
-f 3497/240/178 3496/241/178 3473/210/178
-f 3472/236/26 3487/208/26 3458/242/26
-f 3458/242/26 3497/238/26 3472/236/26
-f 3487/208/26 3486/209/26 3459/240/26
-f 3459/240/26 3458/242/26 3487/208/26
-f 3471/209/26 3470/208/26 3465/242/26
-f 3465/242/26 3464/240/26 3471/209/26
-f 3470/208/26 3478/236/26 3498/238/26
-f 3498/238/26 3465/242/26 3470/208/26
-f 3478/209/179 3477/210/179 3499/241/179
-f 3499/241/179 3498/240/179 3478/209/179
-f 3477/233/27 3492/231/27 3466/237/27
-f 3466/237/27 3499/239/27 3477/233/27
-f 3492/231/27 3493/236/27 3467/238/27
-f 3467/238/27 3466/237/27 3492/231/27
-f 3500/243/156 3501/244/156 3502/245/156
-f 3502/245/156 3503/246/156 3500/243/156
-f 3500/247/157 3503/248/157 3504/249/157
-f 3504/249/157 3505/250/157 3500/247/157
-f 3503/246/158 3502/245/158 3506/251/158
-f 3506/251/158 3504/252/158 3503/246/158
-f 3502/248/159 3501/247/159 3507/250/159
-f 3507/250/159 3506/249/159 3502/248/159
-f 3508/195/72 3509/196/72 3510/197/72
-f 3510/197/72 3511/198/72 3508/195/72
-f 3512/199/73 3513/200/73 3514/201/73
-f 3514/201/73 3515/202/73 3512/199/73
-f 3516/203/74 3517/204/74 3518/205/74
-f 3518/205/74 3519/206/74 3516/203/74
-f 3520/202/75 3521/201/75 3522/200/75
-f 3522/200/75 3523/199/75 3520/202/75
-f 3524/207/76 3525/207/76 3526/208/76
-f 3526/208/76 3527/209/76 3524/207/76
-f 3528/209/77 3529/210/77 3530/211/77
-f 3517/212/78 3531/196/78 3532/213/78
-f 3532/213/78 3518/214/78 3517/212/78
-f 3533/210/79 3534/209/79 3535/211/79
-f 3536/215/80 3537/216/80 3535/211/80
-f 3535/211/80 3534/209/80 3536/215/80
-f 3538/217/81 3539/218/81 3510/197/482
-f 3510/197/482 3509/196/482 3538/217/81
-f 3540/219/82 3541/220/82 3517/204/82
-f 3517/204/82 3516/203/82 3540/219/82
-f 3542/209/83 3543/208/83 3525/207/83
-f 3525/207/83 3524/207/83 3542/209/83
-f 3517/212/84 3541/214/84 3544/213/84
-f 3544/213/84 3531/196/84 3517/212/84
-f 3536/215/85 3528/209/85 3530/211/85
-f 3530/211/85 3537/216/85 3536/215/85
-f 3545/221/75 3532/222/75 3508/222/75
-f 3508/222/75 3511/221/75 3545/221/75
-f 3532/222/86 3531/203/86 3509/203/86
-f 3509/203/86 3508/222/86 3532/222/86
-f 3531/203/87 3544/206/87 3538/206/87
-f 3538/206/87 3509/203/87 3531/203/87
-f 3544/206/73 3546/223/73 3539/223/73
-f 3539/223/73 3538/206/73 3544/206/73
-f 3546/224/88 3547/225/88 3510/226/88
-f 3510/226/88 3539/224/88 3546/224/88
-f 3547/225/89 3545/224/89 3511/224/89
-f 3511/224/89 3510/226/89 3547/225/89
-f 3541/214/79 3548/227/79 3546/228/79
-f 3546/228/79 3544/213/79 3541/214/79
-f 3548/229/75 3541/220/75 3540/219/75
-f 3540/219/75 3549/221/75 3548/229/75
-f 3519/206/73 3518/205/73 3550/230/73
-f 3550/230/73 3551/223/73 3519/206/73
-f 3550/227/77 3518/214/77 3532/213/77
-f 3532/213/77 3545/228/77 3550/227/77
-f 3514/201/73 3513/200/73 3552/199/73
-f 3552/199/73 3553/202/73 3514/201/73
-f 3550/231/90 3545/224/90 3530/232/90
-f 3530/232/90 3529/233/90 3550/231/90
-f 3545/224/89 3547/225/89 3537/234/89
-f 3537/234/89 3530/232/89 3545/224/89
-f 3547/225/88 3546/224/88 3535/232/88
-f 3535/232/88 3537/234/88 3547/225/88
-f 3546/224/92 3548/231/92 3533/233/92
-f 3533/233/92 3535/232/92 3546/224/92
-f 3522/200/75 3521/201/75 3554/202/75
-f 3554/202/75 3555/199/75 3522/200/75
-f 3526/208/76 3525/207/76 3536/235/76
-f 3536/235/76 3534/236/76 3526/208/76
-f 3525/207/83 3543/208/83 3528/236/83
-f 3528/236/83 3536/235/83 3525/207/83
-f 3551/236/27 3550/231/27 3513/237/27
-f 3513/237/27 3512/238/27 3551/236/27
-f 3550/231/27 3529/233/27 3552/239/27
-f 3552/239/27 3513/237/27 3550/231/27
-f 3529/210/94 3528/209/94 3553/240/94
-f 3553/240/94 3552/241/94 3529/210/94
-f 3528/236/26 3543/208/26 3514/242/26
-f 3514/242/26 3553/238/26 3528/236/26
-f 3543/208/26 3542/209/26 3515/240/26
-f 3515/240/26 3514/242/26 3543/208/26
-f 3527/209/26 3526/208/26 3521/242/26
-f 3521/242/26 3520/240/26 3527/209/26
-f 3526/208/26 3534/236/26 3554/238/26
-f 3554/238/26 3521/242/26 3526/208/26
-f 3534/209/95 3533/210/95 3555/241/95
-f 3555/241/95 3554/240/95 3534/209/95
-f 3533/233/27 3548/231/27 3522/237/27
-f 3522/237/27 3555/239/27 3533/233/27
-f 3548/231/27 3549/236/27 3523/238/27
-f 3523/238/27 3522/237/27 3548/231/27
-f 3556/243/154 3557/244/154 3558/245/154
-f 3558/245/154 3559/246/154 3556/243/154
-f 3556/247/7 3559/248/7 3560/249/7
-f 3560/249/7 3561/250/7 3556/247/7
-f 3559/246/155 3558/245/155 3562/251/155
-f 3562/251/155 3560/252/155 3559/246/155
-f 3558/248/1 3557/247/1 3563/250/1
-f 3563/250/1 3562/249/1 3558/248/1
-f 3564/243/180 3565/244/180 3566/245/180
-f 3566/245/180 3567/246/180 3564/243/180
-f 3564/247/153 3567/248/153 3568/249/153
-f 3568/249/153 3569/250/153 3564/247/153
-f 3567/246/181 3566/245/181 3570/251/181
-f 3570/251/181 3568/252/181 3567/246/181
-f 3566/248/151 3565/247/151 3571/250/151
-f 3571/250/151 3570/249/151 3566/248/151
-f 3572/243/148 3573/244/148 3574/245/148
-f 3574/245/148 3575/246/148 3572/243/148
-f 3572/247/1 3575/248/1 3576/249/1
-f 3576/249/1 3577/250/1 3572/247/1
-f 3575/246/149 3574/245/149 3578/251/149
-f 3578/251/149 3576/252/149 3575/246/149
-f 3574/248/7 3573/247/7 3579/250/7
-f 3579/250/7 3578/249/7 3574/248/7
-f 3580/243/127 3581/244/127 3582/245/127
-f 3582/245/127 3583/246/127 3580/243/127
-f 3580/247/128 3583/248/128 3584/249/128
-f 3584/249/128 3585/250/128 3580/247/128
-f 3583/246/129 3582/245/129 3586/251/129
-f 3586/251/129 3584/252/129 3583/246/129
-f 3582/248/130 3581/247/130 3587/250/130
-f 3587/250/130 3586/249/130 3582/248/130
-f 3588/243/187 3589/244/187 3590/245/187
-f 3590/245/187 3591/246/187 3588/243/187
-f 3588/247/163 3591/248/163 3592/249/163
-f 3592/249/163 3593/250/163 3588/247/163
-f 3591/246/188 3590/245/188 3594/251/188
-f 3594/251/188 3592/252/188 3591/246/188
-f 3590/248/161 3589/247/161 3595/250/161
-f 3595/250/161 3594/249/161 3590/248/161
-f 3596/195/72 3597/196/72 3598/197/72
-f 3598/197/72 3599/198/72 3596/195/72
-f 3600/199/73 3601/200/73 3602/201/73
-f 3602/201/73 3603/202/73 3600/199/73
-f 3604/203/74 3605/204/74 3606/205/74
-f 3606/205/74 3607/206/74 3604/203/74
-f 3608/202/75 3609/201/75 3610/200/75
-f 3610/200/75 3611/199/75 3608/202/75
-f 3612/207/76 3613/207/76 3614/208/76
-f 3614/208/76 3615/209/76 3612/207/76
-f 3616/209/77 3617/210/77 3618/211/77
-f 3605/212/78 3619/196/78 3620/213/78
-f 3620/213/78 3606/214/78 3605/212/78
-f 3621/210/79 3622/209/79 3623/211/79
-f 3624/215/80 3625/216/80 3623/211/80
-f 3623/211/80 3622/209/80 3624/215/80
-f 3626/217/81 3627/218/81 3598/197/482
-f 3598/197/482 3597/196/482 3626/217/81
-f 3628/219/82 3629/220/82 3605/204/82
-f 3605/204/82 3604/203/82 3628/219/82
-f 3630/209/83 3631/208/83 3613/207/83
-f 3613/207/83 3612/207/83 3630/209/83
-f 3605/212/84 3629/214/84 3632/213/84
-f 3632/213/84 3619/196/84 3605/212/84
-f 3624/215/85 3616/209/85 3618/211/85
-f 3618/211/85 3625/216/85 3624/215/85
-f 3633/221/75 3620/222/75 3596/222/75
-f 3596/222/75 3599/221/75 3633/221/75
-f 3620/222/86 3619/203/86 3597/203/86
-f 3597/203/86 3596/222/86 3620/222/86
-f 3619/203/87 3632/206/87 3626/206/87
-f 3626/206/87 3597/203/87 3619/203/87
-f 3632/206/73 3634/223/73 3627/223/73
-f 3627/223/73 3626/206/73 3632/206/73
-f 3634/224/88 3635/225/88 3598/226/88
-f 3598/226/88 3627/224/88 3634/224/88
-f 3635/225/89 3633/224/89 3599/224/89
-f 3599/224/89 3598/226/89 3635/225/89
-f 3629/214/79 3636/227/79 3634/228/79
-f 3634/228/79 3632/213/79 3629/214/79
-f 3636/229/75 3629/220/75 3628/219/75
-f 3628/219/75 3637/221/75 3636/229/75
-f 3607/206/73 3606/205/73 3638/230/73
-f 3638/230/73 3639/223/73 3607/206/73
-f 3638/227/77 3606/214/77 3620/213/77
-f 3620/213/77 3633/228/77 3638/227/77
-f 3602/201/73 3601/200/73 3640/199/73
-f 3640/199/73 3641/202/73 3602/201/73
-f 3638/231/90 3633/224/90 3618/232/90
-f 3618/232/90 3617/233/90 3638/231/90
-f 3633/224/89 3635/225/89 3625/234/89
-f 3625/234/89 3618/232/89 3633/224/89
-f 3635/225/88 3634/224/88 3623/232/88
-f 3623/232/88 3625/234/88 3635/225/88
-f 3634/224/92 3636/231/92 3621/233/92
-f 3621/233/92 3623/232/92 3634/224/92
-f 3610/200/75 3609/201/75 3642/202/75
-f 3642/202/75 3643/199/75 3610/200/75
-f 3614/208/76 3613/207/76 3624/235/76
-f 3624/235/76 3622/236/76 3614/208/76
-f 3613/207/83 3631/208/83 3616/236/83
-f 3616/236/83 3624/235/83 3613/207/83
-f 3639/236/27 3638/231/27 3601/237/27
-f 3601/237/27 3600/238/27 3639/236/27
-f 3638/231/27 3617/233/27 3640/239/27
-f 3640/239/27 3601/237/27 3638/231/27
-f 3617/210/94 3616/209/94 3641/240/94
-f 3641/240/94 3640/241/94 3617/210/94
-f 3616/236/26 3631/208/26 3602/242/26
-f 3602/242/26 3641/238/26 3616/236/26
-f 3631/208/26 3630/209/26 3603/240/26
-f 3603/240/26 3602/242/26 3631/208/26
-f 3615/209/26 3614/208/26 3609/242/26
-f 3609/242/26 3608/240/26 3615/209/26
-f 3614/208/26 3622/236/26 3642/238/26
-f 3642/238/26 3609/242/26 3614/208/26
-f 3622/209/95 3621/210/95 3643/241/95
-f 3643/241/95 3642/240/95 3622/209/95
-f 3621/233/27 3636/231/27 3610/237/27
-f 3610/237/27 3643/239/27 3621/233/27
-f 3636/231/27 3637/236/27 3611/238/27
-f 3611/238/27 3610/237/27 3636/231/27
-f 3644/195/124 3645/196/96 3646/197/96
-f 3646/197/96 3647/198/124 3644/195/124
-f 3648/199/125 3649/200/125 3650/201/125
-f 3650/201/125 3651/202/125 3648/199/125
-f 3652/203/99 3653/204/99 3654/205/99
-f 3654/205/99 3655/206/99 3652/203/99
-f 3656/202/165 3657/201/165 3658/200/165
-f 3658/200/165 3659/199/165 3656/202/165
-f 3660/207/102 3661/207/102 3662/208/102
-f 3662/208/102 3663/209/102 3660/207/102
-f 3664/209/103 3665/210/103 3666/211/103
-f 3653/212/104 3667/196/104 3668/213/104
-f 3668/213/104 3654/214/104 3653/212/104
-f 3669/210/105 3670/209/105 3671/211/105
-f 3672/215/106 3673/216/106 3671/211/106
-f 3671/211/106 3670/209/106 3672/215/106
-f 3674/217/107 3675/218/107 3646/197/107
-f 3646/197/107 3645/196/107 3674/217/107
-f 3676/219/126 3677/220/108 3653/204/108
-f 3653/204/108 3652/203/108 3676/219/126
-f 3678/209/109 3679/208/109 3661/207/109
-f 3661/207/109 3660/207/109 3678/209/109
-f 3653/212/110 3677/214/110 3680/213/110
-f 3680/213/110 3667/196/110 3653/212/110
-f 3672/215/111 3664/209/111 3666/211/111
-f 3666/211/111 3673/216/111 3672/215/111
-f 3681/221/165 3668/222/165 3644/222/165
-f 3644/222/165 3647/221/165 3681/221/165
-f 3668/222/112 3667/203/112 3645/203/112
-f 3645/203/112 3644/222/112 3668/222/112
-f 3667/203/113 3680/206/113 3674/206/113
-f 3674/206/113 3645/203/113 3667/203/113
-f 3680/206/125 3682/223/125 3675/223/125
-f 3675/223/125 3674/206/125 3680/206/125
-f 3682/224/114 3683/225/114 3646/226/114
-f 3646/226/114 3675/224/114 3682/224/114
-f 3683/225/115 3681/224/115 3647/224/115
-f 3647/224/115 3646/226/115 3683/225/115
-f 3677/214/105 3684/227/105 3682/228/105
-f 3682/228/105 3680/213/105 3677/214/105
-f 3684/229/165 3677/220/165 3676/219/165
-f 3676/219/165 3685/221/165 3684/229/165
-f 3655/206/125 3654/205/125 3686/230/125
-f 3686/230/125 3687/223/125 3655/206/125
-f 3686/227/103 3654/214/103 3668/213/103
-f 3668/213/103 3681/228/103 3686/227/103
-f 3650/201/125 3649/200/125 3688/199/125
-f 3688/199/125 3689/202/125 3650/201/125
-f 3686/231/483 3681/224/483 3666/232/483
-f 3666/232/483 3665/233/483 3686/231/483
-f 3681/224/115 3683/225/115 3673/234/115
-f 3673/234/115 3666/232/115 3681/224/115
-f 3683/225/114 3682/224/114 3671/232/114
-f 3671/232/114 3673/234/114 3683/225/114
-f 3682/224/117 3684/231/117 3669/233/117
-f 3669/233/117 3671/232/117 3682/224/117
-f 3658/200/165 3657/201/165 3690/202/165
-f 3690/202/165 3691/199/165 3658/200/165
-f 3662/208/102 3661/207/102 3672/235/102
-f 3672/235/102 3670/236/102 3662/208/102
-f 3661/207/109 3679/208/109 3664/236/109
-f 3664/236/109 3672/235/109 3661/207/109
-f 3687/236/27 3686/231/27 3649/237/27
-f 3649/237/27 3648/238/27 3687/236/27
-f 3686/231/27 3665/233/27 3688/239/27
-f 3688/239/27 3649/237/27 3686/231/27
-f 3665/210/118 3664/209/118 3689/240/118
-f 3689/240/118 3688/241/118 3665/210/118
-f 3664/236/26 3679/208/26 3650/242/26
-f 3650/242/26 3689/238/26 3664/236/26
-f 3679/208/26 3678/209/26 3651/240/26
-f 3651/240/26 3650/242/26 3679/208/26
-f 3663/209/26 3662/208/26 3657/242/26
-f 3657/242/26 3656/240/26 3663/209/26
-f 3662/208/26 3670/236/26 3690/238/26
-f 3690/238/26 3657/242/26 3662/208/26
-f 3670/209/119 3669/210/119 3691/241/119
-f 3691/241/119 3690/240/119 3670/209/119
-f 3669/233/27 3684/231/27 3658/237/27
-f 3658/237/27 3691/239/27 3669/233/27
-f 3684/231/27 3685/236/27 3659/238/27
-f 3659/238/27 3658/237/27 3684/231/27
-f 3692/243/150 3693/244/150 3694/245/150
-f 3694/245/150 3695/246/150 3692/243/150
-f 3692/247/151 3695/248/151 3696/249/151
-f 3696/249/151 3697/250/151 3692/247/151
-f 3695/246/152 3694/245/152 3698/251/152
-f 3698/251/152 3696/252/152 3695/246/152
-f 3694/248/153 3693/247/153 3699/250/153
-f 3699/250/153 3698/249/153 3694/248/153
-f 3700/195/96 3701/196/124 3702/197/124
-f 3702/197/124 3703/198/96 3700/195/96
-f 3704/199/125 3705/200/125 3706/201/125
-f 3706/201/125 3707/202/125 3704/199/125
-f 3708/203/99 3709/204/99 3710/205/99
-f 3710/205/99 3711/206/99 3708/203/99
-f 3712/202/165 3713/201/165 3714/200/165
-f 3714/200/165 3715/199/165 3712/202/165
-f 3716/207/102 3717/207/102 3718/208/102
-f 3718/208/102 3719/209/102 3716/207/102
-f 3720/209/103 3721/210/103 3722/211/103
-f 3709/212/104 3723/196/104 3724/213/104
-f 3724/213/104 3710/214/104 3709/212/104
-f 3725/210/105 3726/209/105 3727/211/105
-f 3728/215/106 3729/216/106 3727/211/106
-f 3727/211/106 3726/209/106 3728/215/106
-f 3730/217/107 3731/218/107 3702/197/107
-f 3702/197/107 3701/196/107 3730/217/107
-f 3732/219/108 3733/220/108 3709/204/126
-f 3709/204/126 3708/203/108 3732/219/108
-f 3734/209/109 3735/208/109 3717/207/109
-f 3717/207/109 3716/207/109 3734/209/109
-f 3709/212/110 3733/214/110 3736/213/110
-f 3736/213/110 3723/196/110 3709/212/110
-f 3728/215/111 3720/209/111 3722/211/111
-f 3722/211/111 3729/216/111 3728/215/111
-f 3737/221/165 3724/222/165 3700/222/165
-f 3700/222/165 3703/221/165 3737/221/165
-f 3724/222/112 3723/203/112 3701/203/112
-f 3701/203/112 3700/222/112 3724/222/112
-f 3723/203/113 3736/206/113 3730/206/113
-f 3730/206/113 3701/203/113 3723/203/113
-f 3736/206/125 3738/223/125 3731/223/125
-f 3731/223/125 3730/206/125 3736/206/125
-f 3738/224/114 3739/225/114 3702/226/114
-f 3702/226/114 3731/224/114 3738/224/114
-f 3739/225/115 3737/224/115 3703/224/115
-f 3703/224/115 3702/226/115 3739/225/115
-f 3733/214/105 3740/227/105 3738/228/105
-f 3738/228/105 3736/213/105 3733/214/105
-f 3740/229/165 3733/220/165 3732/219/165
-f 3732/219/165 3741/221/165 3740/229/165
-f 3711/206/125 3710/205/125 3742/230/125
-f 3742/230/125 3743/223/125 3711/206/125
-f 3742/227/103 3710/214/103 3724/213/103
-f 3724/213/103 3737/228/103 3742/227/103
-f 3706/201/125 3705/200/125 3744/199/125
-f 3744/199/125 3745/202/125 3706/201/125
-f 3742/231/483 3737/224/483 3722/232/483
-f 3722/232/483 3721/233/483 3742/231/483
-f 3737/224/115 3739/225/115 3729/234/115
-f 3729/234/115 3722/232/115 3737/224/115
-f 3739/225/114 3738/224/114 3727/232/114
-f 3727/232/114 3729/234/114 3739/225/114
-f 3738/224/117 3740/231/117 3725/233/117
-f 3725/233/117 3727/232/117 3738/224/117
-f 3714/200/165 3713/201/165 3746/202/165
-f 3746/202/165 3747/199/165 3714/200/165
-f 3718/208/102 3717/207/102 3728/235/102
-f 3728/235/102 3726/236/102 3718/208/102
-f 3717/207/109 3735/208/109 3720/236/109
-f 3720/236/109 3728/235/109 3717/207/109
-f 3743/236/27 3742/231/27 3705/237/27
-f 3705/237/27 3704/238/27 3743/236/27
-f 3742/231/27 3721/233/27 3744/239/27
-f 3744/239/27 3705/237/27 3742/231/27
-f 3721/210/118 3720/209/118 3745/240/118
-f 3745/240/118 3744/241/118 3721/210/118
-f 3720/236/26 3735/208/26 3706/242/26
-f 3706/242/26 3745/238/26 3720/236/26
-f 3735/208/26 3734/209/26 3707/240/26
-f 3707/240/26 3706/242/26 3735/208/26
-f 3719/209/26 3718/208/26 3713/242/26
-f 3713/242/26 3712/240/26 3719/209/26
-f 3718/208/26 3726/236/26 3746/238/26
-f 3746/238/26 3713/242/26 3718/208/26
-f 3726/209/119 3725/210/119 3747/241/119
-f 3747/241/119 3746/240/119 3726/209/119
-f 3725/233/27 3740/231/27 3714/237/27
-f 3714/237/27 3747/239/27 3725/233/27
-f 3740/231/27 3741/236/27 3715/238/27
-f 3715/238/27 3714/237/27 3740/231/27
-f 3748/243/120 3749/244/120 3750/245/120
-f 3750/245/120 3751/246/120 3748/243/120
-f 3748/247/121 3751/248/121 3752/249/121
-f 3752/249/121 3753/250/121 3748/247/121
-f 3751/246/122 3750/245/122 3754/251/122
-f 3754/251/122 3752/252/122 3751/246/122
-f 3750/248/123 3749/247/123 3755/250/123
-f 3755/250/123 3754/249/123 3750/248/123
-f 3756/195/131 3757/196/131 3758/197/131
-f 3758/197/131 3759/198/131 3756/195/131
-f 3760/199/75 3761/200/75 3762/201/75
-f 3762/201/75 3763/202/75 3760/199/75
-f 3764/203/132 3765/204/132 3766/205/132
-f 3766/205/132 3767/206/132 3764/203/132
-f 3768/202/73 3769/201/73 3770/200/73
-f 3770/200/73 3771/199/73 3768/202/73
-f 3772/207/83 3773/207/83 3774/208/83
-f 3774/208/83 3775/209/83 3772/207/83
-f 3776/209/133 3777/210/133 3778/211/133
-f 3765/212/134 3779/196/134 3780/213/134
-f 3780/213/134 3766/214/134 3765/212/134
-f 3781/210/135 3782/209/135 3783/211/135
-f 3784/215/136 3785/216/136 3783/211/136
-f 3783/211/136 3782/209/136 3784/215/136
-f 3786/217/137 3787/218/137 3758/197/137
-f 3758/197/137 3757/196/137 3786/217/137
-f 3788/219/139 3789/220/139 3765/204/139
-f 3765/204/139 3764/203/139 3788/219/139
-f 3790/209/76 3791/208/76 3773/207/76
-f 3773/207/76 3772/207/76 3790/209/76
-f 3765/212/140 3789/214/140 3792/213/140
-f 3792/213/140 3779/196/140 3765/212/140
-f 3784/215/141 3776/209/141 3778/211/141
-f 3778/211/141 3785/216/141 3784/215/141
-f 3793/221/73 3780/222/73 3756/222/73
-f 3756/222/73 3759/221/73 3793/221/73
-f 3780/222/87 3779/203/87 3757/203/87
-f 3757/203/87 3756/222/87 3780/222/87
-f 3779/203/86 3792/206/86 3786/206/86
-f 3786/206/86 3757/203/86 3779/203/86
-f 3792/206/75 3794/223/75 3787/223/75
-f 3787/223/75 3786/206/75 3792/206/75
-f 3794/224/142 3795/225/142 3758/226/142
-f 3758/226/142 3787/224/142 3794/224/142
-f 3795/225/143 3793/224/143 3759/224/143
-f 3759/224/143 3758/226/143 3795/225/143
-f 3789/214/135 3796/227/135 3794/228/135
-f 3794/228/135 3792/213/135 3789/214/135
-f 3796/229/73 3789/220/73 3788/219/73
-f 3788/219/73 3797/221/73 3796/229/73
-f 3767/206/75 3766/205/75 3798/230/75
-f 3798/230/75 3799/223/75 3767/206/75
-f 3798/227/133 3766/214/133 3780/213/133
-f 3780/213/133 3793/228/133 3798/227/133
-f 3762/201/75 3761/200/75 3800/199/75
-f 3800/199/75 3801/202/75 3762/201/75
-f 3798/231/144 3793/224/144 3778/232/144
-f 3778/232/144 3777/233/144 3798/231/144
-f 3793/224/143 3795/225/143 3785/234/143
-f 3785/234/143 3778/232/143 3793/224/143
-f 3795/225/142 3794/224/142 3783/232/142
-f 3783/232/142 3785/234/142 3795/225/142
-f 3794/224/145 3796/231/145 3781/233/145
-f 3781/233/145 3783/232/145 3794/224/145
-f 3770/200/73 3769/201/73 3802/202/73
-f 3802/202/73 3803/199/73 3770/200/73
-f 3774/208/83 3773/207/83 3784/235/83
-f 3784/235/83 3782/236/83 3774/208/83
-f 3773/207/76 3791/208/76 3776/236/76
-f 3776/236/76 3784/235/76 3773/207/76
-f 3799/236/27 3798/231/27 3761/237/27
-f 3761/237/27 3760/238/27 3799/236/27
-f 3798/231/27 3777/233/27 3800/239/27
-f 3800/239/27 3761/237/27 3798/231/27
-f 3777/210/480 3776/209/480 3801/240/480
-f 3801/240/480 3800/241/480 3777/210/480
-f 3776/236/26 3791/208/26 3762/242/26
-f 3762/242/26 3801/238/26 3776/236/26
-f 3791/208/26 3790/209/26 3763/240/26
-f 3763/240/26 3762/242/26 3791/208/26
-f 3775/209/26 3774/208/26 3769/242/26
-f 3769/242/26 3768/240/26 3775/209/26
-f 3774/208/26 3782/236/26 3802/238/26
-f 3802/238/26 3769/242/26 3774/208/26
-f 3782/209/147 3781/210/147 3803/241/147
-f 3803/241/147 3802/240/147 3782/209/147
-f 3781/233/27 3796/231/27 3770/237/27
-f 3770/237/27 3803/239/27 3781/233/27
-f 3796/231/27 3797/236/27 3771/238/27
-f 3771/238/27 3770/237/27 3796/231/27
-f 3804/243/160 3805/244/160 3806/245/160
-f 3806/245/160 3807/246/160 3804/243/160
-f 3804/247/161 3807/248/161 3808/249/161
-f 3808/249/161 3809/250/161 3804/247/161
-f 3807/246/162 3806/245/162 3810/251/162
-f 3810/251/162 3808/252/162 3807/246/162
-f 3806/248/163 3805/247/163 3811/250/163
-f 3811/250/163 3810/249/163 3806/248/163
-f 3812/253/19 3813/254/19 3814/255/19
-f 3814/255/19 3815/256/19 3812/253/19
-f 3816/257/20 3812/253/20 3815/256/20
-f 3815/256/20 3817/258/20 3816/257/20
-f 3818/259/21 3816/257/21 3817/258/21
-f 3817/258/21 3819/260/21 3818/259/21
-f 3820/261/22 3818/262/191 3819/263/22
-f 3819/263/22 3821/264/22 3820/261/22
-f 3822/265/23 3820/261/23 3821/264/23
-f 3821/264/23 3823/266/23 3822/265/23
-f 3824/267/24 3822/265/24 3823/266/24
-f 3823/266/24 3825/268/24 3824/267/24
-f 3826/269/192 3824/267/13 3825/268/13
-f 3825/268/13 3827/270/192 3826/269/192
-f 3828/271/14 3826/269/14 3827/270/14
-f 3827/270/14 3829/272/14 3828/271/14
-f 3830/273/118 3828/271/15 3829/272/15
-f 3829/272/15 3831/274/15 3830/273/118
-f 3832/275/16 3830/273/16 3831/274/16
-f 3831/274/16 3833/276/16 3832/275/16
-f 3834/277/17 3832/275/17 3833/276/17
-f 3833/276/17 3835/278/17 3834/277/17
-f 3813/254/18 3834/277/194 3835/278/194
-f 3835/278/194 3814/255/18 3813/254/18
-f 3815/279/27 3814/280/27 3836/281/27
-f 3836/281/27 3837/282/27 3815/279/27
-f 3838/283/27 3839/279/27 3840/282/27
-f 3840/282/27 3841/284/27 3838/283/27
-f 3819/285/27 3817/283/27 3842/284/27
-f 3842/284/27 3843/285/27 3819/285/27
-f 3844/286/27 3845/285/27 3846/285/27
-f 3846/285/27 3847/287/27 3844/286/27
-f 3823/288/27 3821/286/27 3848/287/27
-f 3848/287/27 3849/289/27 3823/288/27
-f 3850/290/27 3851/288/27 3852/289/27
-f 3852/289/27 3853/291/27 3850/290/27
-f 3827/292/27 3825/290/27 3854/291/27
-f 3854/291/27 3855/293/27 3827/292/27
-f 3856/294/27 3857/292/27 3858/293/27
-f 3858/293/27 3859/295/27 3856/294/27
-f 3831/296/27 3829/294/27 3860/295/27
-f 3860/295/27 3861/297/27 3831/296/27
-f 3862/298/27 3863/296/27 3864/297/27
-f 3864/297/27 3865/299/27 3862/298/27
-f 3835/300/27 3833/298/27 3866/299/27
-f 3866/299/27 3867/300/27 3835/300/27
-f 3868/280/27 3869/300/27 3870/300/27
-f 3870/300/27 3871/281/27 3868/280/27
-f 3837/301/13 3836/302/13 3872/303/13
-f 3872/303/13 3873/304/13 3837/301/13
-f 3842/305/14 3837/301/14 3873/304/14
-f 3873/304/14 3874/306/14 3842/305/14
-f 3843/307/15 3842/305/118 3874/306/15
-f 3874/306/15 3875/308/15 3843/307/15
-f 3848/309/16 3843/307/16 3875/308/16
-f 3875/308/16 3876/310/16 3848/309/16
-f 3849/311/17 3848/309/17 3876/310/17
-f 3876/310/17 3877/312/17 3849/311/17
-f 3854/313/18 3849/311/18 3877/312/18
-f 3877/312/18 3878/314/18 3854/313/18
-f 3855/315/190 3854/313/19 3878/314/19
-f 3878/314/19 3879/316/190 3855/315/190
-f 3860/317/20 3855/315/20 3879/316/20
-f 3879/316/20 3880/318/20 3860/317/20
-f 3861/319/21 3860/317/21 3880/318/21
-f 3880/318/21 3881/320/21 3861/319/21
-f 3866/321/191 3861/322/22 3881/323/22
-f 3881/323/22 3882/324/22 3866/321/191
-f 3867/325/23 3866/321/23 3882/324/23
-f 3882/324/23 3883/326/23 3867/325/23
-f 3836/302/24 3867/325/25 3883/326/25
-f 3883/326/25 3872/303/24 3836/302/24
-f 3873/327/27 3872/328/27 3884/329/27
-f 3874/330/27 3873/327/27 3884/329/27
-f 3875/331/27 3874/330/27 3884/329/27
-f 3876/332/27 3875/331/27 3884/329/27
-f 3877/333/27 3876/332/27 3884/329/27
-f 3878/334/27 3877/333/27 3884/329/27
-f 3879/335/27 3878/334/27 3884/329/27
-f 3880/336/27 3879/335/27 3884/329/27
-f 3881/337/27 3880/336/27 3884/329/27
-f 3882/338/27 3881/337/27 3884/329/27
-f 3883/339/27 3882/338/27 3884/329/27
-f 3872/328/27 3883/339/27 3884/329/27
-f 3817/258/20 3815/256/20 3839/340/20
-f 3839/340/20 3838/341/20 3817/258/20
-f 3815/279/163 3837/282/163 3840/282/163
-f 3840/282/163 3839/279/163 3815/279/163
-f 3837/301/14 3842/305/14 3841/342/14
-f 3841/342/14 3840/343/14 3837/301/14
-f 3842/284/197 3817/283/197 3838/283/197
-f 3838/283/197 3841/284/197 3842/284/197
-f 3821/264/22 3819/263/22 3845/344/22
-f 3845/344/22 3844/345/22 3821/264/22
-f 3819/285/7 3843/285/7 3846/285/7
-f 3846/285/7 3845/285/7 3819/285/7
-f 3843/307/16 3848/309/16 3847/346/16
-f 3847/346/16 3846/347/16 3843/307/16
-f 3848/287/198 3821/286/198 3844/286/198
-f 3844/286/198 3847/287/198 3848/287/198
-f 3825/268/24 3823/266/24 3851/348/24
-f 3851/348/24 3850/349/24 3825/268/24
-f 3823/288/151 3849/289/151 3852/289/151
-f 3852/289/151 3851/288/151 3823/288/151
-f 3849/311/18 3854/313/18 3853/350/18
-f 3853/350/18 3852/351/18 3849/311/18
-f 3854/291/4 3825/290/4 3850/290/4
-f 3850/290/4 3853/291/4 3854/291/4
-f 3829/272/14 3827/270/14 3857/352/14
-f 3857/352/14 3856/353/14 3829/272/14
-f 3827/292/161 3855/293/161 3858/293/161
-f 3858/293/161 3857/292/161 3827/292/161
-f 3855/315/20 3860/317/20 3859/354/20
-f 3859/354/20 3858/355/20 3855/315/20
-f 3860/295/195 3829/294/195 3856/294/195
-f 3856/294/195 3859/295/195 3860/295/195
-f 3833/276/16 3831/274/16 3863/356/193
-f 3863/356/193 3862/357/16 3833/276/16
-f 3831/296/1 3861/297/1 3864/297/1
-f 3864/297/1 3863/296/1 3831/296/1
-f 3861/322/22 3866/321/191 3865/358/22
-f 3865/358/22 3864/359/22 3861/322/22
-f 3866/299/196 3833/298/196 3862/298/196
-f 3862/298/196 3865/299/196 3866/299/196
-f 3814/255/18 3835/278/194 3869/360/18
-f 3869/360/18 3868/361/18 3814/255/18
-f 3835/300/153 3867/300/153 3870/300/153
-f 3870/300/153 3869/300/153 3835/300/153
-f 3867/325/25 3836/302/24 3871/362/24
-f 3871/362/24 3870/363/25 3867/325/25
-f 3836/281/10 3814/280/10 3868/280/10
-f 3868/280/10 3871/281/10 3836/281/10
-f 3885/3/6 3886/2/6 3887/1/7
-f 3887/1/7 3888/4/7 3885/3/6
-f 3889/6/5 3890/5/5 3886/2/6
-f 3886/2/6 3885/3/6 3889/6/5
-f 3891/8/4 3892/7/4 3890/5/5
-f 3890/5/5 3889/6/5 3891/8/4
-f 3893/11/3 3894/10/3 3892/9/4
-f 3892/9/4 3891/12/4 3893/11/3
-f 3895/14/2 3896/13/2 3894/10/3
-f 3894/10/3 3893/11/3 3895/14/2
-f 3897/16/1 3898/15/1 3896/13/2
-f 3896/13/2 3895/14/2 3897/16/1
-f 3899/18/12 3900/17/12 3898/15/1
-f 3898/15/1 3897/16/1 3899/18/12
-f 3901/20/11 3902/19/11 3900/17/12
-f 3900/17/12 3899/18/12 3901/20/11
-f 3903/22/10 3904/21/10 3902/19/11
-f 3902/19/11 3901/20/11 3903/22/10
-f 3905/24/9 3906/23/9 3904/21/10
-f 3904/21/10 3903/22/10 3905/24/9
-f 3907/26/8 3908/25/8 3906/23/9
-f 3906/23/9 3905/24/9 3907/26/8
-f 3888/4/7 3887/1/7 3908/25/8
-f 3908/25/8 3907/26/8 3888/4/7
-f 3909/27/18 3910/30/18 3911/29/18
-f 3911/29/18 3912/28/18 3909/27/18
-f 3913/31/17 3914/32/17 3910/30/17
-f 3910/30/17 3909/27/17 3913/31/17
-f 3915/33/16 3916/34/16 3914/32/16
-f 3914/32/16 3913/31/16 3915/33/16
-f 3917/35/15 3918/38/15 3916/37/15
-f 3916/37/15 3915/36/15 3917/35/15
-f 3919/39/14 3920/40/14 3918/38/14
-f 3918/38/14 3917/35/14 3919/39/14
-f 3921/41/13 3922/42/13 3920/40/13
-f 3920/40/13 3919/39/13 3921/41/13
-f 3923/43/24 3924/44/24 3922/42/24
-f 3922/42/24 3921/41/24 3923/43/24
-f 3925/45/23 3926/46/23 3924/44/23
-f 3924/44/23 3923/43/23 3925/45/23
-f 3927/47/22 3928/48/22 3926/46/22
-f 3926/46/22 3925/45/22 3927/47/22
-f 3929/49/21 3930/50/21 3928/48/21
-f 3928/48/21 3927/47/21 3929/49/21
-f 3931/51/20 3932/52/20 3930/50/20
-f 3930/50/20 3929/49/20 3931/51/20
-f 3912/28/19 3911/29/19 3932/52/19
-f 3932/52/19 3931/51/190 3912/28/19
-f 3886/53/26 3909/53/26 3912/54/26
-f 3912/54/26 3887/54/26 3886/53/26
-f 3887/54/26 3912/54/26 3931/55/26
-f 3931/55/26 3908/55/26 3887/54/26
-f 3908/55/26 3931/55/26 3929/56/26
-f 3929/56/26 3906/56/26 3908/55/26
-f 3906/56/26 3929/56/26 3927/57/26
-f 3927/57/26 3904/57/26 3906/56/26
-f 3904/57/26 3927/57/26 3925/59/26
-f 3925/59/26 3902/58/26 3904/57/26
-f 3902/58/26 3925/59/26 3923/61/26
-f 3923/61/26 3900/60/26 3902/58/26
-f 3900/60/26 3923/61/26 3921/62/26
-f 3921/62/26 3898/62/26 3900/60/26
-f 3898/62/26 3921/62/26 3919/64/26
-f 3919/64/26 3896/63/26 3898/62/26
-f 3896/63/26 3919/64/26 3917/66/26
-f 3917/66/26 3894/65/26 3896/63/26
-f 3894/65/26 3917/66/26 3915/67/26
-f 3915/67/26 3892/67/26 3894/65/26
-f 3892/67/26 3915/67/26 3913/68/26
-f 3913/68/26 3890/68/26 3892/67/26
-f 3890/68/26 3913/68/26 3909/53/26
-f 3909/53/26 3886/53/26 3890/68/26
-f 3933/54/27 3911/54/27 3910/53/27
-f 3910/53/27 3934/53/27 3933/54/27
-f 3934/53/27 3910/53/27 3914/68/27
-f 3914/68/27 3935/68/27 3934/53/27
-f 3935/68/27 3914/68/27 3916/67/27
-f 3916/67/27 3936/67/27 3935/68/27
-f 3936/67/27 3916/67/27 3918/66/27
-f 3918/66/27 3937/65/27 3936/67/27
-f 3937/65/27 3918/66/27 3920/64/27
-f 3920/64/27 3938/63/27 3937/65/27
-f 3938/63/27 3920/64/27 3922/62/27
-f 3922/62/27 3939/62/27 3938/63/27
-f 3939/62/27 3922/62/27 3924/61/27
-f 3924/61/27 3940/60/27 3939/62/27
-f 3940/60/27 3924/61/27 3926/59/27
-f 3926/59/27 3941/58/27 3940/60/27
-f 3941/58/27 3926/59/27 3928/57/27
-f 3928/57/27 3942/57/27 3941/58/27
-f 3942/57/27 3928/57/27 3930/56/27
-f 3930/56/27 3943/56/27 3942/57/27
-f 3943/56/27 3930/56/27 3932/55/27
-f 3932/55/27 3944/55/27 3943/56/27
-f 3944/55/27 3932/55/27 3911/54/27
-f 3911/54/27 3933/54/27 3944/55/27
-f 3945/71/6 3946/70/7 3933/69/7
-f 3933/69/7 3934/72/6 3945/71/6
-f 3947/73/17 3945/71/6 3934/72/6
-f 3934/72/6 3935/74/17 3947/73/17
-f 3948/75/16 3947/73/16 3935/74/16
-f 3935/74/16 3936/76/16 3948/75/16
-f 3949/77/3 3948/75/15 3936/76/15
-f 3936/76/15 3937/78/3 3949/77/3
-f 3950/79/2 3949/77/3 3937/78/3
-f 3937/78/3 3938/80/2 3950/79/2
-f 3951/83/1 3950/82/2 3938/81/2
-f 3938/81/2 3939/84/1 3951/83/1
-f 3952/85/12 3951/83/1 3939/84/1
-f 3939/84/1 3940/86/12 3952/85/12
-f 3953/87/11 3952/85/12 3940/86/12
-f 3940/86/12 3941/88/11 3953/87/11
-f 3954/89/10 3953/87/11 3941/88/11
-f 3941/88/11 3942/90/10 3954/89/10
-f 3955/91/9 3954/89/10 3942/90/10
-f 3942/90/10 3943/92/9 3955/91/9
-f 3956/93/8 3955/91/9 3943/92/9
-f 3943/92/9 3944/94/8 3956/93/8
-f 3946/70/7 3956/93/8 3944/94/8
-f 3944/94/8 3933/69/7 3946/70/7
-f 3957/95/26 3958/95/26 3959/96/26
-f 3959/96/26 3960/96/26 3957/95/26
-f 3961/97/26 3962/97/26 3958/95/26
-f 3958/95/26 3957/95/26 3961/97/26
-f 3963/67/26 3964/98/26 3962/97/26
-f 3962/97/26 3961/97/26 3963/67/26
-f 3965/99/26 3966/99/26 3964/98/26
-f 3964/98/26 3963/67/26 3965/99/26
-f 3967/100/26 3968/100/26 3966/99/26
-f 3966/99/26 3965/99/26 3967/100/26
-f 3969/101/26 3970/101/26 3968/100/26
-f 3968/100/26 3967/100/26 3969/101/26
-f 3971/61/26 3972/61/26 3970/101/26
-f 3970/101/26 3969/101/26 3971/61/26
-f 3973/59/26 3974/102/26 3972/61/26
-f 3972/61/26 3971/61/26 3973/59/26
-f 3975/103/26 3976/103/26 3974/102/26
-f 3974/102/26 3973/59/26 3975/103/26
-f 3977/104/26 3978/105/26 3976/103/26
-f 3976/103/26 3975/103/26 3977/104/26
-f 3979/106/26 3980/106/26 3978/105/26
-f 3978/105/26 3977/104/26 3979/106/26
-f 3960/96/26 3959/96/26 3980/106/26
-f 3980/106/26 3979/106/26 3960/96/26
-f 3958/107/33 3981/110/33 3982/109/33
-f 3982/109/33 3959/108/33 3958/107/33
-f 3962/111/32 3983/112/32 3981/110/32
-f 3981/110/32 3958/107/32 3962/111/32
-f 3964/113/31 3984/114/31 3983/112/31
-f 3983/112/31 3962/111/31 3964/113/31
-f 3966/115/30 3985/116/30 3984/114/30
-f 3984/114/30 3964/113/30 3966/115/30
-f 3968/117/29 3986/118/29 3985/116/29
-f 3985/116/29 3966/115/29 3968/117/29
-f 3970/119/28 3987/120/28 3986/118/28
-f 3986/118/28 3968/117/28 3970/119/28
-f 3972/121/39 3988/122/39 3987/120/39
-f 3987/120/39 3970/119/39 3972/121/39
-f 3974/123/38 3989/124/38 3988/122/38
-f 3988/122/38 3972/121/38 3974/123/38
-f 3976/125/37 3990/126/37 3989/124/37
-f 3989/124/37 3974/123/37 3976/125/37
-f 3978/127/36 3991/130/36 3990/129/36
-f 3990/129/36 3976/128/36 3978/127/36
-f 3980/131/35 3992/132/35 3991/130/35
-f 3991/130/35 3978/127/35 3980/131/35
-f 3959/108/34 3982/109/34 3992/132/34
-f 3992/132/34 3980/131/34 3959/108/34
-f 3981/110/46 3993/134/46 3994/133/46
-f 3994/133/46 3982/109/46 3981/110/46
-f 3983/112/45 3995/135/45 3993/134/45
-f 3993/134/45 3981/110/45 3983/112/45
-f 3984/114/44 3996/136/44 3995/135/44
-f 3995/135/44 3983/112/44 3984/114/44
-f 3985/116/42 3997/137/42 3996/136/43
-f 3996/136/43 3984/114/42 3985/116/42
-f 3986/118/41 3998/138/41 3997/137/41
-f 3997/137/41 3985/116/41 3986/118/41
-f 3987/120/40 3999/139/40 3998/138/40
-f 3998/138/40 3986/118/40 3987/120/40
-f 3988/122/55 4000/140/54 3999/139/54
-f 3999/139/54 3987/120/54 3988/122/55
-f 3989/124/53 4001/141/53 4000/140/53
-f 4000/140/53 3988/122/53 3989/124/53
-f 3990/126/51 4002/142/52 4001/141/51
-f 4001/141/51 3989/124/51 3990/126/51
-f 3991/130/50 4003/144/50 4002/143/50
-f 4002/143/50 3990/129/50 3991/130/50
-f 3992/132/49 4004/145/49 4003/144/49
-f 4003/144/49 3991/130/49 3992/132/49
-f 3982/109/48 3994/133/48 4004/145/48
-f 4004/145/48 3992/132/47 3982/109/48
-f 3945/148/63 4005/147/63 4006/146/63
-f 4006/146/63 3946/149/63 3945/148/63
-f 3947/151/62 4007/150/61 4005/147/61
-f 4005/147/61 3945/148/62 3947/151/62
-f 3948/154/60 4008/153/60 4007/152/60
-f 4007/152/60 3947/155/60 3948/154/60
-f 3949/156/59 4009/142/59 4008/153/59
-f 4008/153/59 3948/154/59 3949/156/59
-f 3950/158/58 4010/157/57 4009/142/57
-f 4009/142/57 3949/156/58 3950/158/58
-f 3951/160/56 4011/159/56 4010/157/56
-f 4010/157/56 3950/158/56 3951/160/56
-f 3952/162/71 4012/161/71 4011/159/71
-f 4011/159/71 3951/160/71 3952/162/71
-f 3953/164/69 4013/163/70 4012/161/70
-f 4012/161/70 3952/162/69 3953/164/69
-f 3954/166/68 4014/165/68 4013/163/68
-f 4013/163/68 3953/164/68 3954/166/68
-f 3955/168/67 4015/167/67 4014/165/67
-f 4014/165/67 3954/166/67 3955/168/67
-f 3956/170/66 4016/169/66 4015/167/66
-f 4015/167/66 3955/168/65 3956/170/66
-f 3946/149/64 4006/146/64 4016/169/64
-f 4016/169/64 3956/170/64 3946/149/64
-f 4005/173/6 3957/172/6 3960/171/7
-f 3960/171/7 4006/174/7 4005/173/6
-f 4007/176/5 3961/175/5 3957/172/6
-f 3957/172/6 4005/173/6 4007/176/5
-f 4008/179/4 3963/178/4 3961/177/5
-f 3961/177/5 4007/180/5 4008/179/4
-f 4009/181/3 3965/86/3 3963/178/4
-f 3963/178/4 4008/179/4 4009/181/3
-f 4010/183/2 3967/182/2 3965/86/3
-f 3965/86/3 4009/181/3 4010/183/2
-f 4011/185/1 3969/184/1 3967/182/2
-f 3967/182/2 4010/183/2 4011/185/1
-f 4012/187/12 3971/186/12 3969/184/1
-f 3969/184/1 4011/185/1 4012/187/12
-f 4013/189/11 3973/188/11 3971/186/12
-f 3971/186/12 4012/187/12 4013/189/11
-f 4014/191/10 3975/190/10 3973/188/11
-f 3973/188/11 4013/189/11 4014/191/10
-f 4015/192/9 3977/76/9 3975/190/10
-f 3975/190/10 4014/191/10 4015/192/9
-f 4016/194/8 3979/193/8 3977/76/9
-f 3977/76/9 4015/192/9 4016/194/8
-f 4006/174/7 3960/171/7 3979/193/8
-f 3979/193/8 4016/194/8 4006/174/7
-f 4017/195/443 4018/198/443 4019/197/443
-f 4019/197/443 4020/196/443 4017/195/443
-f 4021/199/390 4022/202/390 4023/201/390
-f 4023/201/390 4024/200/390 4021/199/390
-f 4025/203/444 4026/206/444 4027/205/444
-f 4027/205/444 4028/204/444 4025/203/444
-f 4029/202/388 4030/199/388 4031/200/388
-f 4031/200/388 4032/201/388 4029/202/388
-f 4033/207/398 4034/209/398 4035/208/398
-f 4035/208/398 4036/207/398 4033/207/398
-f 4037/209/445 4038/211/445 4039/210/445
-f 4028/212/446 4027/214/446 4040/213/446
-f 4040/213/446 4041/196/446 4028/212/446
-f 4042/210/447 4043/211/447 4044/209/447
-f 4045/215/448 4044/209/448 4043/211/448
-f 4043/211/448 4046/216/448 4045/215/448
-f 4047/217/449 4020/196/449 4019/197/449
-f 4019/197/449 4048/218/449 4047/217/449
-f 4049/219/451 4025/203/451 4028/204/451
-f 4028/204/451 4050/220/451 4049/219/451
-f 4051/209/391 4033/207/391 4036/207/391
-f 4036/207/391 4052/208/391 4051/209/391
-f 4028/212/452 4041/196/452 4053/213/452
-f 4053/213/452 4050/214/452 4028/212/452
-f 4045/215/453 4046/216/453 4038/211/453
-f 4038/211/453 4037/209/453 4045/215/453
-f 4054/221/388 4018/221/388 4017/222/388
-f 4017/222/388 4040/222/388 4054/221/388
-f 4040/222/402 4017/222/402 4020/203/402
-f 4020/203/402 4041/203/402 4040/222/402
-f 4041/203/401 4020/203/401 4047/206/401
-f 4047/206/401 4053/206/401 4041/203/401
-f 4053/206/390 4047/206/390 4048/223/390
-f 4048/223/390 4055/223/390 4053/206/390
-f 4055/224/454 4048/224/454 4019/226/454
-f 4019/226/454 4056/225/454 4055/224/454
-f 4056/225/455 4019/226/455 4018/224/455
-f 4018/224/455 4054/224/455 4056/225/455
-f 4050/214/447 4053/213/447 4055/228/447
-f 4055/228/447 4057/227/447 4050/214/447
-f 4057/229/388 4058/221/388 4049/219/388
-f 4049/219/388 4050/220/388 4057/229/388
-f 4026/206/390 4059/223/390 4060/230/390
-f 4060/230/390 4027/205/390 4026/206/390
-f 4060/227/445 4054/228/445 4040/213/445
-f 4040/213/445 4027/214/445 4060/227/445
-f 4023/201/390 4061/202/390 4062/199/390
-f 4062/199/390 4024/200/390 4023/201/390
-f 4060/231/456 4039/233/456 4038/232/456
-f 4038/232/456 4054/224/456 4060/231/456
-f 4054/224/455 4038/232/455 4046/234/455
-f 4046/234/455 4056/225/455 4054/224/455
-f 4056/225/454 4046/234/454 4043/232/454
-f 4043/232/454 4055/224/454 4056/225/454
-f 4055/224/457 4043/232/457 4042/233/457
-f 4042/233/457 4057/231/457 4055/224/457
-f 4031/200/388 4063/199/388 4064/202/388
-f 4064/202/388 4032/201/388 4031/200/388
-f 4035/208/398 4044/236/398 4045/235/398
-f 4045/235/398 4036/207/398 4035/208/398
-f 4036/207/391 4045/235/391 4037/236/391
-f 4037/236/391 4052/208/391 4036/207/391
-f 4059/236/27 4021/238/27 4024/237/27
-f 4024/237/27 4060/231/27 4059/236/27
-f 4060/231/27 4024/237/27 4062/239/27
-f 4062/239/27 4039/233/27 4060/231/27
-f 4039/210/484 4062/241/484 4061/240/484
-f 4061/240/484 4037/209/484 4039/210/484
-f 4037/236/26 4061/238/26 4023/242/26
-f 4023/242/26 4052/208/26 4037/236/26
-f 4052/208/26 4023/242/26 4022/240/26
-f 4022/240/26 4051/209/26 4052/208/26
-f 4034/209/26 4029/240/26 4032/242/26
-f 4032/242/26 4035/208/26 4034/209/26
-f 4035/208/26 4032/242/26 4064/238/26
-f 4064/238/26 4044/236/26 4035/208/26
-f 4044/209/459 4064/240/459 4063/241/459
-f 4063/241/459 4042/210/459 4044/209/459
-f 4042/233/27 4063/239/27 4031/237/27
-f 4031/237/27 4057/231/27 4042/233/27
-f 4057/231/27 4031/237/27 4030/238/27
-f 4030/238/27 4058/236/27 4057/231/27
-f 4065/195/4 4066/198/4 4067/197/4
-f 4067/197/4 4068/196/4 4065/195/4
-f 4069/199/416 4070/202/416 4071/201/415
-f 4071/201/415 4072/200/415 4069/199/416
-f 4073/203/421 4074/206/421 4075/205/421
-f 4075/205/421 4076/204/421 4073/203/421
-f 4077/202/413 4078/199/413 4079/200/412
-f 4079/200/412 4080/201/412 4077/202/413
-f 4081/207/466 4082/209/466 4083/208/466
-f 4083/208/466 4084/207/466 4081/207/466
-f 4085/209/107 4086/211/107 4087/210/107
-f 4076/212/467 4075/214/467 4088/213/467
-f 4088/213/467 4089/196/467 4076/212/467
-f 4090/210/468 4091/211/468 4092/209/468
-f 4093/215/469 4092/209/469 4091/211/469
-f 4091/211/469 4094/216/469 4093/215/469
-f 4095/217/103 4068/196/103 4067/197/103
-f 4067/197/103 4096/218/103 4095/217/103
-f 4097/219/414 4073/203/414 4076/204/414
-f 4076/204/414 4098/220/414 4097/219/414
-f 4099/209/471 4081/207/471 4084/207/471
-f 4084/207/471 4100/208/471 4099/209/471
-f 4076/212/472 4089/196/472 4101/213/472
-f 4101/213/472 4098/214/472 4076/212/472
-f 4093/215/332 4094/216/332 4086/211/332
-f 4086/211/332 4085/209/332 4093/215/332
-f 4102/221/413 4066/221/412 4065/222/412
-f 4065/222/412 4088/222/413 4102/221/413
-f 4088/222/426 4065/222/426 4068/203/426
-f 4068/203/426 4089/203/426 4088/222/426
-f 4089/203/425 4068/203/425 4095/206/425
-f 4095/206/425 4101/206/425 4089/203/425
-f 4101/206/415 4095/206/415 4096/223/415
-f 4096/223/415 4103/223/415 4101/206/415
-f 4103/224/473 4096/224/473 4067/226/473
-f 4067/226/473 4104/225/473 4103/224/473
-f 4104/225/430 4067/226/430 4066/224/430
-f 4066/224/430 4102/224/430 4104/225/430
-f 4098/214/468 4101/213/468 4103/228/468
-f 4103/228/468 4105/227/468 4098/214/468
-f 4105/229/413 4106/221/413 4097/219/413
-f 4097/219/413 4098/220/413 4105/229/413
-f 4074/206/415 4107/223/415 4108/230/415
-f 4108/230/415 4075/205/415 4074/206/415
-f 4108/227/107 4102/228/107 4088/213/107
-f 4088/213/107 4075/214/107 4108/227/107
-f 4071/201/415 4109/202/416 4110/199/416
-f 4110/199/416 4072/200/415 4071/201/415
-f 4108/231/485 4087/233/485 4086/232/485
-f 4086/232/485 4102/224/485 4108/231/485
-f 4102/224/430 4086/232/430 4094/234/430
-f 4094/234/430 4104/225/430 4102/224/430
-f 4104/225/473 4094/234/473 4091/232/473
-f 4091/232/473 4103/224/473 4104/225/473
-f 4103/224/428 4091/232/428 4090/233/428
-f 4090/233/428 4105/231/428 4103/224/428
-f 4079/200/412 4111/199/413 4112/202/413
-f 4112/202/413 4080/201/412 4079/200/412
-f 4083/208/466 4092/236/466 4093/235/466
-f 4093/235/466 4084/207/466 4083/208/466
-f 4084/207/471 4093/235/471 4085/236/471
-f 4085/236/471 4100/208/471 4084/207/471
-f 4107/236/27 4069/238/27 4072/237/27
-f 4072/237/27 4108/231/27 4107/236/27
-f 4108/231/27 4072/237/27 4110/239/27
-f 4110/239/27 4087/233/27 4108/231/27
-f 4087/210/193 4110/241/193 4109/240/193
-f 4109/240/193 4085/209/193 4087/210/193
-f 4085/236/26 4109/238/26 4071/242/26
-f 4071/242/26 4100/208/26 4085/236/26
-f 4100/208/26 4071/242/26 4070/240/26
-f 4070/240/26 4099/209/26 4100/208/26
-f 4082/209/26 4077/240/26 4080/242/26
-f 4080/242/26 4083/208/26 4082/209/26
-f 4083/208/26 4080/242/26 4112/238/26
-f 4112/238/26 4092/236/26 4083/208/26
-f 4092/209/475 4112/240/475 4111/241/475
-f 4111/241/475 4090/210/475 4092/209/475
-f 4090/233/27 4111/239/27 4079/237/27
-f 4079/237/27 4105/231/27 4090/233/27
-f 4105/231/27 4079/237/27 4078/238/27
-f 4078/238/27 4106/236/27 4105/231/27
-f 4113/243/476 4114/246/476 4115/245/476
-f 4115/245/476 4116/244/476 4113/243/476
-f 4113/247/477 4117/250/477 4118/249/477
-f 4118/249/477 4114/248/477 4113/247/477
-f 4114/246/478 4118/252/478 4119/251/478
-f 4119/251/478 4115/245/478 4114/246/478
-f 4115/248/479 4119/249/479 4120/250/479
-f 4120/250/479 4116/247/479 4115/248/479
-f 4121/195/464 4122/198/464 4123/197/464
-f 4123/197/464 4124/196/464 4121/195/464
-f 4125/199/416 4126/202/416 4127/201/415
-f 4127/201/415 4128/200/415 4125/199/416
-f 4129/203/421 4130/206/421 4131/205/421
-f 4131/205/421 4132/204/421 4129/203/421
-f 4133/202/413 4134/199/413 4135/200/412
-f 4135/200/412 4136/201/412 4133/202/413
-f 4137/207/466 4138/209/466 4139/208/466
-f 4139/208/466 4140/207/466 4137/207/466
-f 4141/209/107 4142/211/107 4143/210/107
-f 4132/212/467 4131/214/467 4144/213/467
-f 4144/213/467 4145/196/467 4132/212/467
-f 4146/210/468 4147/211/468 4148/209/468
-f 4149/215/469 4148/209/469 4147/211/469
-f 4147/211/469 4150/216/469 4149/215/469
-f 4151/217/103 4124/196/103 4123/197/103
-f 4123/197/103 4152/218/103 4151/217/103
-f 4153/219/470 4129/203/414 4132/204/414
-f 4132/204/414 4154/220/470 4153/219/470
-f 4155/209/471 4137/207/471 4140/207/471
-f 4140/207/471 4156/208/471 4155/209/471
-f 4132/212/472 4145/196/472 4157/213/472
-f 4157/213/472 4154/214/472 4132/212/472
-f 4149/215/332 4150/216/332 4142/211/332
-f 4142/211/332 4141/209/332 4149/215/332
-f 4158/221/413 4122/221/413 4121/222/413
-f 4121/222/413 4144/222/413 4158/221/413
-f 4144/222/426 4121/222/426 4124/203/426
-f 4124/203/426 4145/203/426 4144/222/426
-f 4145/203/425 4124/203/425 4151/206/425
-f 4151/206/425 4157/206/425 4145/203/425
-f 4157/206/415 4151/206/415 4152/223/415
-f 4152/223/415 4159/223/415 4157/206/415
-f 4159/224/473 4152/224/473 4123/226/473
-f 4123/226/473 4160/225/473 4159/224/473
-f 4160/225/430 4123/226/430 4122/224/430
-f 4122/224/430 4158/224/430 4160/225/430
-f 4154/214/468 4157/213/468 4159/228/468
-f 4159/228/468 4161/227/468 4154/214/468
-f 4161/229/437 4162/221/412 4153/219/412
-f 4153/219/412 4154/220/437 4161/229/437
-f 4130/206/415 4163/223/415 4164/230/416
-f 4164/230/416 4131/205/416 4130/206/415
-f 4164/227/107 4158/228/107 4144/213/107
-f 4144/213/107 4131/214/107 4164/227/107
-f 4127/201/415 4165/202/416 4166/199/416
-f 4166/199/416 4128/200/415 4127/201/415
-f 4164/231/485 4143/233/485 4142/232/485
-f 4142/232/485 4158/224/485 4164/231/485
-f 4158/224/430 4142/232/430 4150/234/430
-f 4150/234/430 4160/225/430 4158/224/430
-f 4160/225/473 4150/234/473 4147/232/473
-f 4147/232/473 4159/224/473 4160/225/473
-f 4159/224/428 4147/232/428 4146/233/428
-f 4146/233/428 4161/231/428 4159/224/428
-f 4135/200/412 4167/199/413 4168/202/413
-f 4168/202/413 4136/201/412 4135/200/412
-f 4139/208/466 4148/236/466 4149/235/466
-f 4149/235/466 4140/207/466 4139/208/466
-f 4140/207/471 4149/235/471 4141/236/471
-f 4141/236/471 4156/208/471 4140/207/471
-f 4163/236/27 4125/238/27 4128/237/27
-f 4128/237/27 4164/231/27 4163/236/27
-f 4164/231/27 4128/237/27 4166/239/27
-f 4166/239/27 4143/233/27 4164/231/27
-f 4143/210/193 4166/241/193 4165/240/193
-f 4165/240/193 4141/209/193 4143/210/193
-f 4141/236/26 4165/238/26 4127/242/26
-f 4127/242/26 4156/208/26 4141/236/26
-f 4156/208/26 4127/242/26 4126/240/26
-f 4126/240/26 4155/209/26 4156/208/26
-f 4138/209/26 4133/240/26 4136/242/26
-f 4136/242/26 4139/208/26 4138/209/26
-f 4139/208/26 4136/242/26 4168/238/26
-f 4168/238/26 4148/236/26 4139/208/26
-f 4148/209/475 4168/240/475 4167/241/475
-f 4167/241/475 4146/210/475 4148/209/475
-f 4146/233/27 4167/239/27 4135/237/27
-f 4135/237/27 4161/231/27 4146/233/27
-f 4161/231/27 4135/237/27 4134/238/27
-f 4134/238/27 4162/236/27 4161/231/27
-f 4169/243/460 4170/246/460 4171/245/460
-f 4171/245/460 4172/244/460 4169/243/460
-f 4169/247/461 4173/250/461 4174/249/461
-f 4174/249/461 4170/248/461 4169/247/461
-f 4170/246/462 4174/252/462 4175/251/462
-f 4175/251/462 4171/245/462 4170/246/462
-f 4171/248/463 4175/249/463 4176/250/463
-f 4176/250/463 4172/247/463 4171/248/463
-f 4177/195/387 4178/198/387 4179/197/387
-f 4179/197/387 4180/196/387 4177/195/387
-f 4181/199/388 4182/202/388 4183/201/388
-f 4183/201/388 4184/200/388 4181/199/388
-f 4185/203/389 4186/206/389 4187/205/389
-f 4187/205/389 4188/204/389 4185/203/389
-f 4189/202/390 4190/199/390 4191/200/390
-f 4191/200/390 4192/201/390 4189/202/390
-f 4193/207/391 4194/209/391 4195/208/391
-f 4195/208/391 4196/207/391 4193/207/391
-f 4197/209/392 4198/211/392 4199/210/392
-f 4188/212/393 4187/214/393 4200/213/393
-f 4200/213/393 4201/196/393 4188/212/393
-f 4202/210/394 4203/211/394 4204/209/394
-f 4205/215/395 4204/209/395 4203/211/395
-f 4203/211/395 4206/216/395 4205/215/395
-f 4207/217/396 4180/196/486 4179/197/486
-f 4179/197/486 4208/218/396 4207/217/396
-f 4209/219/397 4185/203/397 4188/204/397
-f 4188/204/397 4210/220/397 4209/219/397
-f 4211/209/398 4193/207/398 4196/207/398
-f 4196/207/398 4212/208/398 4211/209/398
-f 4188/212/399 4201/196/399 4213/213/399
-f 4213/213/399 4210/214/399 4188/212/399
-f 4205/215/400 4206/216/400 4198/211/400
-f 4198/211/400 4197/209/400 4205/215/400
-f 4214/221/390 4178/221/390 4177/222/390
-f 4177/222/390 4200/222/390 4214/221/390
-f 4200/222/401 4177/222/401 4180/203/401
-f 4180/203/401 4201/203/401 4200/222/401
-f 4201/203/402 4180/203/402 4207/206/402
-f 4207/206/402 4213/206/402 4201/203/402
-f 4213/206/388 4207/206/388 4208/223/388
-f 4208/223/388 4215/223/388 4213/206/388
-f 4215/224/403 4208/224/403 4179/226/403
-f 4179/226/403 4216/225/403 4215/224/403
-f 4216/225/404 4179/226/404 4178/224/404
-f 4178/224/404 4214/224/404 4216/225/404
-f 4210/214/394 4213/213/394 4215/228/394
-f 4215/228/394 4217/227/394 4210/214/394
-f 4217/229/390 4218/221/390 4209/219/390
-f 4209/219/390 4210/220/390 4217/229/390
-f 4186/206/388 4219/223/388 4220/230/388
-f 4220/230/388 4187/205/388 4186/206/388
-f 4220/227/392 4214/228/392 4200/213/392
-f 4200/213/392 4187/214/392 4220/227/392
-f 4183/201/388 4221/202/388 4222/199/388
-f 4222/199/388 4184/200/388 4183/201/388
-f 4220/231/405 4199/233/405 4198/232/405
-f 4198/232/405 4214/224/405 4220/231/405
-f 4214/224/404 4198/232/404 4206/234/404
-f 4206/234/404 4216/225/404 4214/224/404
-f 4216/225/403 4206/234/403 4203/232/403
-f 4203/232/403 4215/224/403 4216/225/403
-f 4215/224/407 4203/232/407 4202/233/407
-f 4202/233/407 4217/231/407 4215/224/407
-f 4191/200/390 4223/199/390 4224/202/390
-f 4224/202/390 4192/201/390 4191/200/390
-f 4195/208/391 4204/236/391 4205/235/391
-f 4205/235/391 4196/207/391 4195/208/391
-f 4196/207/398 4205/235/398 4197/236/398
-f 4197/236/398 4212/208/398 4196/207/398
-f 4219/236/27 4181/238/27 4184/237/27
-f 4184/237/27 4220/231/27 4219/236/27
-f 4220/231/27 4184/237/27 4222/239/27
-f 4222/239/27 4199/233/27 4220/231/27
-f 4199/210/409 4222/241/409 4221/240/409
-f 4221/240/409 4197/209/409 4199/210/409
-f 4197/236/26 4221/238/26 4183/242/26
-f 4183/242/26 4212/208/26 4197/236/26
-f 4212/208/26 4183/242/26 4182/240/26
-f 4182/240/26 4211/209/26 4212/208/26
-f 4194/209/26 4189/240/26 4192/242/26
-f 4192/242/26 4195/208/26 4194/209/26
-f 4195/208/26 4192/242/26 4224/238/26
-f 4224/238/26 4204/236/26 4195/208/26
-f 4204/209/410 4224/240/410 4223/241/410
-f 4223/241/410 4202/210/410 4204/209/410
-f 4202/233/27 4223/239/27 4191/237/27
-f 4191/237/27 4217/231/27 4202/233/27
-f 4217/231/27 4191/237/27 4190/238/27
-f 4190/238/27 4218/236/27 4217/231/27
-f 4225/243/148 4226/246/148 4227/245/148
-f 4227/245/148 4228/244/148 4225/243/148
-f 4225/247/7 4229/250/7 4230/249/7
-f 4230/249/7 4226/248/7 4225/247/7
-f 4226/246/149 4230/252/149 4231/251/149
-f 4231/251/149 4227/245/149 4226/246/149
-f 4227/248/1 4231/249/1 4232/250/1
-f 4232/250/1 4228/247/1 4227/248/1
-f 4233/243/187 4234/246/187 4235/245/187
-f 4235/245/187 4236/244/187 4233/243/187
-f 4233/247/161 4237/250/161 4238/249/161
-f 4238/249/161 4234/248/161 4233/247/161
-f 4234/246/188 4238/252/188 4239/251/188
-f 4239/251/188 4235/245/188 4234/246/188
-f 4235/248/163 4239/249/163 4240/250/163
-f 4240/250/163 4236/247/163 4235/248/163
-f 4241/243/154 4242/246/154 4243/245/154
-f 4243/245/154 4244/244/154 4241/243/154
-f 4241/247/1 4245/250/1 4246/249/1
-f 4246/249/1 4242/248/1 4241/247/1
-f 4242/246/155 4246/252/155 4247/251/155
-f 4247/251/155 4243/245/155 4242/246/155
-f 4243/248/7 4247/249/7 4248/250/7
-f 4248/250/7 4244/247/7 4243/248/7
-f 4249/243/439 4250/246/439 4251/245/439
-f 4251/245/439 4252/244/439 4249/243/439
-f 4249/247/440 4253/250/440 4254/249/440
-f 4254/249/440 4250/248/440 4249/247/440
-f 4250/246/441 4254/252/441 4255/251/441
-f 4255/251/441 4251/245/441 4250/246/441
-f 4251/248/442 4255/249/442 4256/250/442
-f 4256/250/442 4252/247/442 4251/248/442
-f 4257/243/180 4258/246/180 4259/245/180
-f 4259/245/180 4260/244/180 4257/243/180
-f 4257/247/151 4261/250/151 4262/249/151
-f 4262/249/151 4258/248/151 4257/247/151
-f 4258/246/181 4262/252/181 4263/251/181
-f 4263/251/181 4259/245/181 4258/246/181
-f 4259/248/153 4263/249/153 4264/250/153
-f 4264/250/153 4260/247/153 4259/248/153
-f 4265/195/387 4266/198/387 4267/197/387
-f 4267/197/387 4268/196/387 4265/195/387
-f 4269/199/388 4270/202/388 4271/201/388
-f 4271/201/388 4272/200/388 4269/199/388
-f 4273/203/389 4274/206/389 4275/205/389
-f 4275/205/389 4276/204/389 4273/203/389
-f 4277/202/390 4278/199/390 4279/200/390
-f 4279/200/390 4280/201/390 4277/202/390
-f 4281/207/391 4282/209/391 4283/208/391
-f 4283/208/391 4284/207/391 4281/207/391
-f 4285/209/392 4286/211/392 4287/210/392
-f 4276/212/393 4275/214/393 4288/213/393
-f 4288/213/393 4289/196/393 4276/212/393
-f 4290/210/394 4291/211/394 4292/209/394
-f 4293/215/395 4292/209/395 4291/211/395
-f 4291/211/395 4294/216/395 4293/215/395
-f 4295/217/396 4268/196/486 4267/197/486
-f 4267/197/486 4296/218/396 4295/217/396
-f 4297/219/397 4273/203/397 4276/204/397
-f 4276/204/397 4298/220/397 4297/219/397
-f 4299/209/398 4281/207/398 4284/207/398
-f 4284/207/398 4300/208/398 4299/209/398
-f 4276/212/399 4289/196/399 4301/213/399
-f 4301/213/399 4298/214/399 4276/212/399
-f 4293/215/400 4294/216/400 4286/211/400
-f 4286/211/400 4285/209/400 4293/215/400
-f 4302/221/390 4266/221/390 4265/222/390
-f 4265/222/390 4288/222/390 4302/221/390
-f 4288/222/401 4265/222/401 4268/203/401
-f 4268/203/401 4289/203/401 4288/222/401
-f 4289/203/402 4268/203/402 4295/206/402
-f 4295/206/402 4301/206/402 4289/203/402
-f 4301/206/388 4295/206/388 4296/223/388
-f 4296/223/388 4303/223/388 4301/206/388
-f 4303/224/403 4296/224/403 4267/226/403
-f 4267/226/403 4304/225/403 4303/224/403
-f 4304/225/404 4267/226/404 4266/224/404
-f 4266/224/404 4302/224/404 4304/225/404
-f 4298/214/394 4301/213/394 4303/228/394
-f 4303/228/394 4305/227/394 4298/214/394
-f 4305/229/390 4306/221/390 4297/219/390
-f 4297/219/390 4298/220/390 4305/229/390
-f 4274/206/388 4307/223/388 4308/230/388
-f 4308/230/388 4275/205/388 4274/206/388
-f 4308/227/392 4302/228/392 4288/213/392
-f 4288/213/392 4275/214/392 4308/227/392
-f 4271/201/388 4309/202/388 4310/199/388
-f 4310/199/388 4272/200/388 4271/201/388
-f 4308/231/405 4287/233/405 4286/232/405
-f 4286/232/405 4302/224/405 4308/231/405
-f 4302/224/404 4286/232/404 4294/234/404
-f 4294/234/404 4304/225/404 4302/224/404
-f 4304/225/403 4294/234/403 4291/232/403
-f 4291/232/403 4303/224/403 4304/225/403
-f 4303/224/407 4291/232/407 4290/233/407
-f 4290/233/407 4305/231/407 4303/224/407
-f 4279/200/390 4311/199/390 4312/202/390
-f 4312/202/390 4280/201/390 4279/200/390
-f 4283/208/391 4292/236/391 4293/235/391
-f 4293/235/391 4284/207/391 4283/208/391
-f 4284/207/398 4293/235/398 4285/236/398
-f 4285/236/398 4300/208/398 4284/207/398
-f 4307/236/27 4269/238/27 4272/237/27
-f 4272/237/27 4308/231/27 4307/236/27
-f 4308/231/27 4272/237/27 4310/239/27
-f 4310/239/27 4287/233/27 4308/231/27
-f 4287/210/409 4310/241/409 4309/240/409
-f 4309/240/409 4285/209/409 4287/210/409
-f 4285/236/26 4309/238/26 4271/242/26
-f 4271/242/26 4300/208/26 4285/236/26
-f 4300/208/26 4271/242/26 4270/240/26
-f 4270/240/26 4299/209/26 4300/208/26
-f 4282/209/26 4277/240/26 4280/242/26
-f 4280/242/26 4283/208/26 4282/209/26
-f 4283/208/26 4280/242/26 4312/238/26
-f 4312/238/26 4292/236/26 4283/208/26
-f 4292/209/410 4312/240/410 4311/241/410
-f 4311/241/410 4290/210/410 4292/209/410
-f 4290/233/27 4311/239/27 4279/237/27
-f 4279/237/27 4305/231/27 4290/233/27
-f 4305/231/27 4279/237/27 4278/238/27
-f 4278/238/27 4306/236/27 4305/231/27
-f 4313/195/436 4314/198/436 4315/197/411
-f 4315/197/411 4316/196/411 4313/195/436
-f 4317/199/437 4318/202/437 4319/201/437
-f 4319/201/437 4320/200/437 4317/199/437
-f 4321/203/414 4322/206/414 4323/205/414
-f 4323/205/414 4324/204/414 4321/203/414
-f 4325/202/465 4326/199/465 4327/200/465
-f 4327/200/465 4328/201/465 4325/202/465
-f 4329/207/417 4330/209/417 4331/208/417
-f 4331/208/417 4332/207/417 4329/207/417
-f 4333/209/171 4334/211/171 4335/210/171
-f 4324/212/418 4323/214/418 4336/213/418
-f 4336/213/418 4337/196/418 4324/212/418
-f 4338/210/419 4339/211/419 4340/209/419
-f 4341/215/420 4340/209/420 4339/211/420
-f 4339/211/420 4342/216/420 4341/215/420
-f 4343/217/167 4316/196/167 4315/197/167
-f 4315/197/167 4344/218/167 4343/217/167
-f 4345/219/438 4321/203/421 4324/204/421
-f 4324/204/421 4346/220/421 4345/219/438
-f 4347/209/422 4329/207/422 4332/207/422
-f 4332/207/422 4348/208/422 4347/209/422
-f 4324/212/423 4337/196/423 4349/213/423
-f 4349/213/423 4346/214/423 4324/212/423
-f 4341/215/424 4342/216/424 4334/211/424
-f 4334/211/424 4333/209/424 4341/215/424
-f 4350/221/465 4314/221/465 4313/222/465
-f 4313/222/465 4336/222/465 4350/221/465
-f 4336/222/425 4313/222/425 4316/203/425
-f 4316/203/425 4337/203/425 4336/222/425
-f 4337/203/426 4316/203/426 4343/206/426
-f 4343/206/426 4349/206/426 4337/203/426
-f 4349/206/437 4343/206/437 4344/223/437
-f 4344/223/437 4351/223/437 4349/206/437
-f 4351/224/427 4344/224/427 4315/226/427
-f 4315/226/427 4352/225/427 4351/224/427
-f 4352/225/428 4315/226/428 4314/224/428
-f 4314/224/428 4350/224/428 4352/225/428
-f 4346/214/419 4349/213/419 4351/228/419
-f 4351/228/419 4353/227/419 4346/214/419
-f 4353/229/465 4354/221/465 4345/219/465
-f 4345/219/465 4346/220/465 4353/229/465
-f 4322/206/437 4355/223/437 4356/230/437
-f 4356/230/437 4323/205/437 4322/206/437
-f 4356/227/171 4350/228/171 4336/213/171
-f 4336/213/171 4323/214/171 4356/227/171
-f 4319/201/437 4357/202/437 4358/199/437
-f 4358/199/437 4320/200/437 4319/201/437
-f 4356/231/487 4335/233/487 4334/232/487
-f 4334/232/487 4350/224/487 4356/231/487
-f 4350/224/428 4334/232/428 4342/234/428
-f 4342/234/428 4352/225/428 4350/224/428
-f 4352/225/427 4342/234/427 4339/232/427
-f 4339/232/427 4351/224/427 4352/225/427
-f 4351/224/430 4339/232/430 4338/233/430
-f 4338/233/430 4353/231/430 4351/224/430
-f 4327/200/465 4359/199/465 4360/202/465
-f 4360/202/465 4328/201/465 4327/200/465
-f 4331/208/417 4340/236/417 4341/235/417
-f 4341/235/417 4332/207/417 4331/208/417
-f 4332/207/422 4341/235/422 4333/236/422
-f 4333/236/422 4348/208/422 4332/207/422
-f 4355/236/27 4317/238/27 4320/237/27
-f 4320/237/27 4356/231/27 4355/236/27
-f 4356/231/27 4320/237/27 4358/239/27
-f 4358/239/27 4335/233/27 4356/231/27
-f 4335/210/191 4358/241/191 4357/240/191
-f 4357/240/191 4333/209/191 4335/210/191
-f 4333/236/26 4357/238/26 4319/242/26
-f 4319/242/26 4348/208/26 4333/236/26
-f 4348/208/26 4319/242/26 4318/240/26
-f 4318/240/26 4347/209/26 4348/208/26
-f 4330/209/26 4325/240/26 4328/242/26
-f 4328/242/26 4331/208/26 4330/209/26
-f 4331/208/26 4328/242/26 4360/238/26
-f 4360/238/26 4340/236/26 4331/208/26
-f 4340/209/431 4360/240/431 4359/241/431
-f 4359/241/431 4338/210/431 4340/209/431
-f 4338/233/27 4359/239/27 4327/237/27
-f 4327/237/27 4353/231/27 4338/233/27
-f 4353/231/27 4327/237/27 4326/238/27
-f 4326/238/27 4354/236/27 4353/231/27
-f 4361/243/160 4362/246/160 4363/245/160
-f 4363/245/160 4364/244/160 4361/243/160
-f 4361/247/163 4365/250/163 4366/249/163
-f 4366/249/163 4362/248/163 4361/247/163
-f 4362/246/162 4366/252/162 4367/251/162
-f 4367/251/162 4363/245/162 4362/246/162
-f 4363/248/161 4367/249/161 4368/250/161
-f 4368/250/161 4364/247/161 4363/248/161
-f 4369/195/411 4370/198/411 4371/197/436
-f 4371/197/436 4372/196/436 4369/195/411
-f 4373/199/437 4374/202/437 4375/201/437
-f 4375/201/437 4376/200/437 4373/199/437
-f 4377/203/414 4378/206/414 4379/205/414
-f 4379/205/414 4380/204/414 4377/203/414
-f 4381/202/465 4382/199/465 4383/200/465
-f 4383/200/465 4384/201/465 4381/202/465
-f 4385/207/417 4386/209/417 4387/208/417
-f 4387/208/417 4388/207/417 4385/207/417
-f 4389/209/171 4390/211/171 4391/210/171
-f 4380/212/418 4379/214/418 4392/213/418
-f 4392/213/418 4393/196/418 4380/212/418
-f 4394/210/419 4395/211/419 4396/209/419
-f 4397/215/420 4396/209/420 4395/211/420
-f 4395/211/420 4398/216/420 4397/215/420
-f 4399/217/167 4372/196/167 4371/197/167
-f 4371/197/167 4400/218/167 4399/217/167
-f 4401/219/421 4377/203/421 4380/204/438
-f 4380/204/438 4402/220/421 4401/219/421
-f 4403/209/422 4385/207/422 4388/207/422
-f 4388/207/422 4404/208/422 4403/209/422
-f 4380/212/423 4393/196/423 4405/213/423
-f 4405/213/423 4402/214/423 4380/212/423
-f 4397/215/424 4398/216/424 4390/211/424
-f 4390/211/424 4389/209/424 4397/215/424
-f 4406/221/465 4370/221/465 4369/222/465
-f 4369/222/465 4392/222/465 4406/221/465
-f 4392/222/425 4369/222/425 4372/203/425
-f 4372/203/425 4393/203/425 4392/222/425
-f 4393/203/426 4372/203/426 4399/206/426
-f 4399/206/426 4405/206/426 4393/203/426
-f 4405/206/437 4399/206/437 4400/223/437
-f 4400/223/437 4407/223/437 4405/206/437
-f 4407/224/427 4400/224/427 4371/226/427
-f 4371/226/427 4408/225/427 4407/224/427
-f 4408/225/428 4371/226/428 4370/224/428
-f 4370/224/428 4406/224/428 4408/225/428
-f 4402/214/419 4405/213/419 4407/228/419
-f 4407/228/419 4409/227/419 4402/214/419
-f 4409/229/465 4410/221/465 4401/219/465
-f 4401/219/465 4402/220/465 4409/229/465
-f 4378/206/437 4411/223/437 4412/230/437
-f 4412/230/437 4379/205/437 4378/206/437
-f 4412/227/171 4406/228/171 4392/213/171
-f 4392/213/171 4379/214/171 4412/227/171
-f 4375/201/437 4413/202/437 4414/199/437
-f 4414/199/437 4376/200/437 4375/201/437
-f 4412/231/487 4391/233/487 4390/232/487
-f 4390/232/487 4406/224/487 4412/231/487
-f 4406/224/428 4390/232/428 4398/234/428
-f 4398/234/428 4408/225/428 4406/224/428
-f 4408/225/427 4398/234/427 4395/232/427
-f 4395/232/427 4407/224/427 4408/225/427
-f 4407/224/430 4395/232/430 4394/233/430
-f 4394/233/430 4409/231/430 4407/224/430
-f 4383/200/465 4415/199/465 4416/202/465
-f 4416/202/465 4384/201/465 4383/200/465
-f 4387/208/417 4396/236/417 4397/235/417
-f 4397/235/417 4388/207/417 4387/208/417
-f 4388/207/422 4397/235/422 4389/236/422
-f 4389/236/422 4404/208/422 4388/207/422
-f 4411/236/27 4373/238/27 4376/237/27
-f 4376/237/27 4412/231/27 4411/236/27
-f 4412/231/27 4376/237/27 4414/239/27
-f 4414/239/27 4391/233/27 4412/231/27
-f 4391/210/191 4414/241/191 4413/240/191
-f 4413/240/191 4389/209/191 4391/210/191
-f 4389/236/26 4413/238/26 4375/242/26
-f 4375/242/26 4404/208/26 4389/236/26
-f 4404/208/26 4375/242/26 4374/240/26
-f 4374/240/26 4403/209/26 4404/208/26
-f 4386/209/26 4381/240/26 4384/242/26
-f 4384/242/26 4387/208/26 4386/209/26
-f 4387/208/26 4384/242/26 4416/238/26
-f 4416/238/26 4396/236/26 4387/208/26
-f 4396/209/431 4416/240/431 4415/241/431
-f 4415/241/431 4394/210/431 4396/209/431
-f 4394/233/27 4415/239/27 4383/237/27
-f 4383/237/27 4409/231/27 4394/233/27
-f 4409/231/27 4383/237/27 4382/238/27
-f 4382/238/27 4410/236/27 4409/231/27
-f 4417/243/432 4418/246/432 4419/245/432
-f 4419/245/432 4420/244/432 4417/243/432
-f 4417/247/433 4421/250/433 4422/249/433
-f 4422/249/433 4418/248/433 4417/247/433
-f 4418/246/434 4422/252/434 4423/251/434
-f 4423/251/434 4419/245/434 4418/246/434
-f 4419/248/435 4423/249/435 4424/250/435
-f 4424/250/435 4420/247/435 4419/248/435
-f 4425/195/443 4426/198/443 4427/197/443
-f 4427/197/443 4428/196/443 4425/195/443
-f 4429/199/390 4430/202/390 4431/201/390
-f 4431/201/390 4432/200/390 4429/199/390
-f 4433/203/444 4434/206/444 4435/205/444
-f 4435/205/444 4436/204/444 4433/203/444
-f 4437/202/388 4438/199/388 4439/200/388
-f 4439/200/388 4440/201/388 4437/202/388
-f 4441/207/398 4442/209/398 4443/208/398
-f 4443/208/398 4444/207/398 4441/207/398
-f 4445/209/445 4446/211/445 4447/210/445
-f 4436/212/446 4435/214/446 4448/213/446
-f 4448/213/446 4449/196/446 4436/212/446
-f 4450/210/447 4451/211/447 4452/209/447
-f 4453/215/448 4452/209/448 4451/211/448
-f 4451/211/448 4454/216/448 4453/215/448
-f 4455/217/449 4428/196/449 4427/197/449
-f 4427/197/449 4456/218/449 4455/217/449
-f 4457/219/451 4433/203/451 4436/204/451
-f 4436/204/451 4458/220/451 4457/219/451
-f 4459/209/391 4441/207/391 4444/207/391
-f 4444/207/391 4460/208/391 4459/209/391
-f 4436/212/452 4449/196/452 4461/213/452
-f 4461/213/452 4458/214/452 4436/212/452
-f 4453/215/453 4454/216/453 4446/211/453
-f 4446/211/453 4445/209/453 4453/215/453
-f 4462/221/388 4426/221/388 4425/222/388
-f 4425/222/388 4448/222/388 4462/221/388
-f 4448/222/402 4425/222/402 4428/203/402
-f 4428/203/402 4449/203/402 4448/222/402
-f 4449/203/401 4428/203/401 4455/206/401
-f 4455/206/401 4461/206/401 4449/203/401
-f 4461/206/390 4455/206/390 4456/223/390
-f 4456/223/390 4463/223/390 4461/206/390
-f 4463/224/454 4456/224/454 4427/226/454
-f 4427/226/454 4464/225/454 4463/224/454
-f 4464/225/455 4427/226/455 4426/224/455
-f 4426/224/455 4462/224/455 4464/225/455
-f 4458/214/447 4461/213/447 4463/228/447
-f 4463/228/447 4465/227/447 4458/214/447
-f 4465/229/388 4466/221/388 4457/219/388
-f 4457/219/388 4458/220/388 4465/229/388
-f 4434/206/390 4467/223/390 4468/230/390
-f 4468/230/390 4435/205/390 4434/206/390
-f 4468/227/445 4462/228/445 4448/213/445
-f 4448/213/445 4435/214/445 4468/227/445
-f 4431/201/390 4469/202/390 4470/199/390
-f 4470/199/390 4432/200/390 4431/201/390
-f 4468/231/456 4447/233/456 4446/232/456
-f 4446/232/456 4462/224/456 4468/231/456
-f 4462/224/455 4446/232/455 4454/234/455
-f 4454/234/455 4464/225/455 4462/224/455
-f 4464/225/454 4454/234/454 4451/232/454
-f 4451/232/454 4463/224/454 4464/225/454
-f 4463/224/457 4451/232/457 4450/233/457
-f 4450/233/457 4465/231/457 4463/224/457
-f 4439/200/388 4471/199/388 4472/202/388
-f 4472/202/388 4440/201/388 4439/200/388
-f 4443/208/398 4452/236/398 4453/235/398
-f 4453/235/398 4444/207/398 4443/208/398
-f 4444/207/391 4453/235/391 4445/236/391
-f 4445/236/391 4460/208/391 4444/207/391
-f 4467/236/27 4429/238/27 4432/237/27
-f 4432/237/27 4468/231/27 4467/236/27
-f 4468/231/27 4432/237/27 4470/239/27
-f 4470/239/27 4447/233/27 4468/231/27
-f 4447/210/484 4470/241/484 4469/240/484
-f 4469/240/484 4445/209/484 4447/210/484
-f 4445/236/26 4469/238/26 4431/242/26
-f 4431/242/26 4460/208/26 4445/236/26
-f 4460/208/26 4431/242/26 4430/240/26
-f 4430/240/26 4459/209/26 4460/208/26
-f 4442/209/26 4437/240/26 4440/242/26
-f 4440/242/26 4443/208/26 4442/209/26
-f 4443/208/26 4440/242/26 4472/238/26
-f 4472/238/26 4452/236/26 4443/208/26
-f 4452/209/459 4472/240/459 4471/241/459
-f 4471/241/459 4450/210/459 4452/209/459
-f 4450/233/27 4471/239/27 4439/237/27
-f 4439/237/27 4465/231/27 4450/233/27
-f 4465/231/27 4439/237/27 4438/238/27
-f 4438/238/27 4466/236/27 4465/231/27
-f 4473/243/150 4474/246/150 4475/245/150
-f 4475/245/150 4476/244/150 4473/243/150
-f 4473/247/153 4477/250/153 4478/249/153
-f 4478/249/153 4474/248/153 4473/247/153
-f 4474/246/152 4478/252/152 4479/251/152
-f 4479/251/152 4475/245/152 4474/246/152
-f 4475/248/151 4479/249/151 4480/250/151
-f 4480/250/151 4476/247/151 4475/248/151
-f 4481/253/18 4482/256/18 4483/255/18
-f 4483/255/18 4484/254/18 4481/253/18
-f 4485/257/17 4486/258/17 4482/256/17
-f 4482/256/17 4481/253/17 4485/257/17
-f 4487/259/16 4488/260/16 4486/258/16
-f 4486/258/16 4485/257/16 4487/259/16
-f 4489/261/15 4490/264/15 4488/263/15
-f 4488/263/15 4487/262/118 4489/261/15
-f 4491/265/14 4492/266/14 4490/264/14
-f 4490/264/14 4489/261/14 4491/265/14
-f 4493/267/13 4494/268/13 4492/266/13
-f 4492/266/13 4491/265/13 4493/267/13
-f 4495/269/25 4496/270/25 4494/268/24
-f 4494/268/24 4493/267/24 4495/269/25
-f 4497/271/23 4498/272/23 4496/270/23
-f 4496/270/23 4495/269/23 4497/271/23
-f 4499/273/191 4500/274/22 4498/272/22
-f 4498/272/22 4497/271/22 4499/273/191
-f 4501/275/21 4502/276/21 4500/274/21
-f 4500/274/21 4499/273/21 4501/275/21
-f 4503/277/20 4504/278/20 4502/276/20
-f 4502/276/20 4501/275/20 4503/277/20
-f 4484/254/19 4483/255/19 4504/278/190
-f 4504/278/190 4503/277/190 4484/254/19
-f 4482/279/27 4505/282/27 4506/281/27
-f 4506/281/27 4483/280/27 4482/279/27
-f 4507/283/27 4508/284/27 4509/282/27
-f 4509/282/27 4510/279/27 4507/283/27
-f 4488/285/27 4511/285/27 4512/284/27
-f 4512/284/27 4486/283/27 4488/285/27
-f 4513/286/27 4514/287/27 4515/285/27
-f 4515/285/27 4516/285/27 4513/286/27
-f 4492/288/27 4517/289/27 4518/287/27
-f 4518/287/27 4490/286/27 4492/288/27
-f 4519/290/27 4520/291/27 4521/289/27
-f 4521/289/27 4522/288/27 4519/290/27
-f 4496/292/27 4523/293/27 4524/291/27
-f 4524/291/27 4494/290/27 4496/292/27
-f 4525/294/27 4526/295/27 4527/293/27
-f 4527/293/27 4528/292/27 4525/294/27
-f 4500/296/27 4529/297/27 4530/295/27
-f 4530/295/27 4498/294/27 4500/296/27
-f 4531/298/27 4532/299/27 4533/297/27
-f 4533/297/27 4534/296/27 4531/298/27
-f 4504/300/27 4535/300/27 4536/299/27
-f 4536/299/27 4502/298/27 4504/300/27
-f 4537/280/27 4538/281/27 4539/300/27
-f 4539/300/27 4540/300/27 4537/280/27
-f 4505/301/24 4541/304/24 4542/303/24
-f 4542/303/24 4506/302/24 4505/301/24
-f 4512/305/23 4543/306/23 4541/304/23
-f 4541/304/23 4505/301/23 4512/305/23
-f 4511/307/22 4544/308/22 4543/306/22
-f 4543/306/22 4512/305/191 4511/307/22
-f 4518/309/21 4545/310/21 4544/308/21
-f 4544/308/21 4511/307/21 4518/309/21
-f 4517/311/20 4546/312/20 4545/310/20
-f 4545/310/20 4518/309/20 4517/311/20
-f 4524/313/19 4547/314/19 4546/312/19
-f 4546/312/19 4517/311/19 4524/313/19
-f 4523/315/194 4548/316/194 4547/314/18
-f 4547/314/18 4524/313/18 4523/315/194
-f 4530/317/17 4549/318/17 4548/316/17
-f 4548/316/17 4523/315/17 4530/317/17
-f 4529/319/16 4550/320/16 4549/318/16
-f 4549/318/16 4530/317/16 4529/319/16
-f 4536/321/118 4551/324/15 4550/323/15
-f 4550/323/15 4529/322/15 4536/321/118
-f 4535/325/14 4552/326/14 4551/324/14
-f 4551/324/14 4536/321/14 4535/325/14
-f 4506/302/13 4542/303/13 4552/326/192
-f 4552/326/192 4535/325/192 4506/302/13
-f 4541/327/27 4553/329/27 4542/328/27
-f 4543/330/27 4553/329/27 4541/327/27
-f 4544/331/27 4553/329/27 4543/330/27
-f 4545/332/27 4553/329/27 4544/331/27
-f 4546/333/27 4553/329/27 4545/332/27
-f 4547/334/27 4553/329/27 4546/333/27
-f 4548/335/27 4553/329/27 4547/334/27
-f 4549/336/27 4553/329/27 4548/335/27
-f 4550/337/27 4553/329/27 4549/336/27
-f 4551/338/27 4553/329/27 4550/337/27
-f 4552/339/27 4553/329/27 4551/338/27
-f 4542/328/27 4553/329/27 4552/339/27
-f 4486/258/17 4507/341/17 4510/340/17
-f 4510/340/17 4482/256/17 4486/258/17
-f 4482/279/151 4510/279/151 4509/282/151
-f 4509/282/151 4505/282/151 4482/279/151
-f 4505/301/23 4509/343/23 4508/342/23
-f 4508/342/23 4512/305/23 4505/301/23
-f 4512/284/198 4508/284/198 4507/283/198
-f 4507/283/198 4486/283/198 4512/284/198
-f 4490/264/15 4513/345/15 4516/344/15
-f 4516/344/15 4488/263/15 4490/264/15
-f 4488/285/7 4516/285/7 4515/285/7
-f 4515/285/7 4511/285/7 4488/285/7
-f 4511/307/21 4515/347/21 4514/346/21
-f 4514/346/21 4518/309/21 4511/307/21
-f 4518/287/197 4514/287/197 4513/286/197
-f 4513/286/197 4490/286/197 4518/287/197
-f 4494/268/13 4519/349/13 4522/348/13
-f 4522/348/13 4492/266/13 4494/268/13
-f 4492/288/163 4522/288/163 4521/289/163
-f 4521/289/163 4517/289/163 4492/288/163
-f 4517/311/19 4521/351/19 4520/350/19
-f 4520/350/19 4524/313/19 4517/311/19
-f 4524/291/10 4520/291/10 4519/290/10
-f 4519/290/10 4494/290/10 4524/291/10
-f 4498/272/23 4525/353/23 4528/352/23
-f 4528/352/23 4496/270/23 4498/272/23
-f 4496/292/153 4528/292/153 4527/293/153
-f 4527/293/153 4523/293/153 4496/292/153
-f 4523/315/17 4527/355/17 4526/354/17
-f 4526/354/17 4530/317/17 4523/315/17
-f 4530/295/196 4526/295/196 4525/294/196
-f 4525/294/196 4498/294/196 4530/295/196
-f 4502/276/21 4531/357/21 4534/356/178
-f 4534/356/178 4500/274/21 4502/276/21
-f 4500/296/1 4534/296/1 4533/297/1
-f 4533/297/1 4529/297/1 4500/296/1
-f 4529/322/15 4533/359/15 4532/358/15
-f 4532/358/15 4536/321/118 4529/322/15
-f 4536/299/195 4532/299/195 4531/298/195
-f 4531/298/195 4502/298/195 4536/299/195
-f 4483/255/19 4537/361/19 4540/360/19
-f 4540/360/19 4504/278/190 4483/255/19
-f 4504/300/161 4540/300/161 4539/300/161
-f 4539/300/161 4535/300/161 4504/300/161
-f 4535/325/192 4539/363/192 4538/362/13
-f 4538/362/13 4506/302/13 4535/325/192
-f 4506/281/4 4538/281/4 4537/280/4
-f 4537/280/4 4483/280/4 4506/281/4
-# 7168 faces
-
-�PNG
-
-
-  #
-+ #"&# *, ##((0843;:  (" # -&)!.(;"2+;3$#"%&(&(%&((*%#(&(+(&,++-/0.0..010&#0)&1-,8/-0/020.83.98/333568685689854868<95:;;7?@<>@?@<=AB?GH?HHADEHKLQRXXC$B&E(D)H&N I)L,F0 M1 D9V T P,P. [ Z"
-_(S3 V8X6 Y8Q6U9X6\;I? A>;c& k+`>s, r-y0x1@?@I@]@LB DA=UJ%]Q(aAdEeHhEhFjHjKpNpPdX,k]0wV n`2wi6~p;BCCCFHEIJIEBHGHMIEJKKFNPLNPFPPMQQNWXNXXQMIPNQVQMRSSTVXUXYZUQXWZ]YTZ[\\^`V``]`aa]X`_dfb\xlD}pFtPbccdfhfhikfahgknicjkkmopnpqrlgxrl}wq�7�o;�s=�zC�|S�~C�|v��L��V��H��W��]��b��{��d��p��i��t��L��T��N��W��g��u��h��m��x��l��y������������������������������������������·�ż����������������
-*���� �xS,a����j��0\____߈W�a�ѳZ�V�պt�ҫ���j��Z�{^�t=�# �y]�u]�TI�KӴ���q�X]]]]�4M�r�\N��(o�a�r9E1�Wj߅1��j?
-c�`=��K�K���^}5 �|>/M��뺎����zI7tC7�Gs9m||�0 �k
-�
-��
-��U
-��`��<o��߇��
-!��
-`�OH
-
-`��
-`�ޮ�1
-����t�P.� ��LY���ty�0===].O'���=��|�\.�L
-���t�<���{������{tֱ_
-`�P��ʸ�(ʸ�(
-@�&Y����z�J �=
-�snn=B P���2 !`C �=�
-��EU-
-
-G��lvrd�7�*�EBȾ
-�<�pD&!�2I`����̂i���R��R��^�{o
-�B�P(��©S�� ���g�ȑ#�Lߓ|]���q�H�{
-��{0a����޿�ܦR)
-Ӆ©SeS~�\��8r���x�Haz��{
-G��ygj�0=]�.��
-�6��":}�C�H�,<
-ж)�l �J�R�Bj
-�
-!�T �BNB���^B
-*"�8w0�1�1fx�#�1� s�qQU�㊢�r5�a�1^r0�E�����n�ߑ�a� $ p������P����j�`cccch�7'�9������|^��1���4]�u�iy9\H���z^�]
-�[e��C��P���o��E΀mw1t�@ �
-m�H H�Ԁ�*!P��?��
-
-��&s=�ĄT��9R�� @�7ʋ
-B�3&� %���F�a$�%CG�R�|k+ �����j���F�q~�Ւ������ֳ���� Y���$� ]Ɍg2��J����L&�躖���Ưi����N�o�`� 8��@+
- >ӫP%�B*`�@
-�$X*!T*5�.m<�.�Y_o�Οo2=�jI�o��m={��9��\&��d�+b��d2�\2O<��kz���.��c
-�-��:�0�*�J�̚�T
-�1.v�
-�%u
- ��� !�f����I8
-�XĂyb���� ����Q
-4��S��z}Ѷ�QZ�iD
-@�
-���U)W*��G
-�ʕJٚ.� ߙr�2���9U.�*�O�%�/V��J�\�T*�J9"\(L�˧�33������=��w��TʕʩSf�R�|e�R�~�|�T�P8U.� ���ry�P�)
-�S�r�<w�2])�˕r�\.T~�\(� e9d��G&&�LML���*�S�S��:
-�3���
-_m������ _�
-V�F��, �z�d'��:i_���~k��v-�������� PrR�;v��v��
-�?�|� ���7��gX�4�ȥ .��Ǎ>ETD����T��$ф�E���K�9K^r�GNi�q�����p!�0�
-���~K�?
-�̑9�P� ���
-����eԧ
-����$;E:E�s���
-!ڶ��
-@
-5Z~4A�4�9r�ҭ2�����0
-H
-̗��Ý@�
-��
-!@�v&�b�9Ӭ
-���t7����6�(
-`�� �Qj��GMR�V��P ��7(]�Sy)���Ťn�,<O)
-@�
-U
- 7vH0
-
-���|
-��G��
-���v��n����?��̨��v�J�RE���k��]�ƍo,��v{'�4��}�E;����7�6��m=oU�_��w�Q��^��e�FL�*��Q��,}��i�z�*/PE�?�㈶�/.P�7�h�w��"���v��suGnN���(�*����n;�v��, 0�L
-V;��v{/
-����u�� ��ݯ
-�r�K�B�03-�R�,�s �\���r�03===]���������_�.���'RwNOw6�����)�g
-�ryfFn>]���������S�Ba�P�����RafF��
-�>=}�ȑ#w�&� _*���
-����8�~�%=��؞��b��债�#�yG�bG�o�Z�ϟ?>>�5-���kk�g��R�@
-������hw7����vtm�]�f-�v��}X�FԾ]��<� �ﶭ��w�(�ަ`�F��3] @-
-ڻQ-�5)%4E�~�(m�Y�ޠ;���N�~ v��#
- <�z�,D�� ���*���0\�|��7o�����������W.�r9 ��sO��ӷ�-�>k00�
-���X
-K� � �� ,b�G� �y���4 ���`��;�{w�F��?��W��E���@�7��u��ŋa2����%���}V�_�1�KC4
-R��l�~� &<�1�e� /q� ڿ��Q��|���7�z���/����/_ym-|:���a�ҝ��Xzl�� ����"�
-�/�X��
-�"�#`�99`�i���Rm�����&
-d�yފ��'V�`�q� o��S ��˗�o��˷ߗ
-
-B�;�&\���!�+<� �yB ΅��
-
-[��_y��͛o����������ۿ}����W.�ܔ
-`�a�q�8�
-@ @W�
-d�,��q��m��ߴ�#��@H��ǣ�l
-_�Ў ?� X�
-%��� 0O��3;I
-���0措��0s6�.
-W!\�z�����(�x�.�k�7�z�������������o�ܾ�o^^�
-3�8w��ˆ; s�`�U� �1CHF9S�/J�P<5s9?�
-�{�`���f���a'p�*E���y�\O�B��+�'<�y�`����[�Q��w~��1������ʅ���gb ����ޣ�ӝh��c���q� =6&�dž� R�T��[J" �� a����K#�K \� _�O�����*r��oİ�@�
-�0V��Q
-��NO*���91����-O�?���t������u �">/0�a�c��t'����9��{N�0Op�s_x�����v�����*.��, Ox�+B�B��s��:���;b���%M+��������o�����������o�u� �f-|�O�����=��u��?��d:T�8� �{�(��X,"#Ĥ3�8c�K#�T�1�c�"\Jf��
-}� !����0Œ�E! G�q��
-��N�
-�uJ��oG5��oD+�܂�t7�G�Q���ۆȲ�^m�Ϙt�{�;�h�4��Rģ�s�e�a��V*���!
-
-G����@�@`̐��E%�9���� Ȱp��H��`X`��w��_^B0�9CE��*.�"R��(E
-��?
-
-�1�����<�y����ݼUP�Jak��_lo�|�����?���?����}���+��T
-@`΄'���>���/���¹
-$��h�
-@mZ���"��s`W�"����m�׎�e�)�
-�x�(�
-�R�y�����qM���b�^����s
-����~��>���O~��ǟ|�������+�
-.sD��� 3Op&��{�qTW��s̘��~W��(��ϗ=�X5
-�
-�R�T*>��PU���E�L�
-o��`���ʊ��}<BxX0![-���q�<�pUlr�9����o"GW�/q�
-�ن�Jzc�
-W0�u���r!�+��†��{�p��3���M��p.�
-�0�O��an�*��
-�]��e��F
-���@�
-�o��;��u���_}��V 1�2�fۋ�W�8Yy-��Y�V��A
-U �f�
-6۶5���7�X íKC��!�h
-!�� ƹ�-cK#\��C�e�u=O���x�8#�T �s!����治,ܢ:� �9��$� q�V�_{嵷>��G���g���O>��G�}�/��5��Z?
-�3�a*��N�$�(0O���_�����jC��YW7�ă>� ���˲�`ʑm��ͧ)]0���߫G��:Z
-�J���r��6@-n-���"�lj�j@�E��n�Ѻm�Ur:{�Ij�K�+����
-@�e�fn��:�[
-��ٯ<�� �`�q��EH���-c -�%̋��\����,��S>�M��|� �0VU q���"`+�O�� � ��y� �O.��.U�4Mմ�O%�7�՛ۯ��ֻ?�觟|��O�ӏ?�Q � I
-
- ��Mľ��\W��ѯ��@"N�NH4�u=�a�4 �0N�O꺑?h�r�\f"��?g&d
-@��z��wb
-,Ƙ!,� ���@� �
-����q���g�k*B ��p�x�u�e )
-`<�_ @�(��^����1b˗
-�D>��i�a����%
-������Ȇ� ��s�s��
-�=�C�U����f�A � \�u{�+
- �������ͷ��࣏>����ޏ�杛ۗ|p�k����O�՝��ۭ��g*5:���h�ݧb �q����Q)F��z
-�5 �&wpk!� �
-�c���jw�a����y
-c@xA� �9��u�SB�s10z@�|�k�Xp�%�/�l���C�b ]��^��Zh�
-���|�Ȃ�TJZ��8�:��9��L$��2�L��A�Lf,�?�ym��<t"�?NHS�w~ַ&&���Q
-�Ӆ—�3�©��t�P.
-�r�\(
-�/��|��pff�\�)�f��j�ʩ�tw󙙙S��L�P(�� Ӆ�i�w�����dj�p�\.
-���O<������
-��l��eƸ+/��ͮ�Ϲ,�C���'�^7أ
-���?���\^ ��{�ð��
-�er�6�)�SJ�W��i����l��nͦ���\��]ߵ��5J-g�z�6������<_���Y� �>�
-`�@`?0>
->;�*�B��;��#JkԦ�թ-' �%sD�]^����u� ��v��y`�m�,��u������3g`��P�3ѩ���M
-���9
-`YP�歹9�w1E��k��٩�����c�s����F��F��
-P2O���3˻Nm�fGVD;���e��e�Ⱥ_J�b-�t:�T��2�G��X�ƨ
-!� 8���9�bǿ��c
-;
-�d�!
-uZ����
- ����S
- �0���
-�W._�p��ɓ'�dj��<�N���^6Fk=�g$����}����L]�y�b��l>�D��h4V�'�h4 ]���{EQ�=.�sC]��
-��=�@c� �O�6K��Q�����2�Ɠ�:K
-�IFě�hT��-��T2!��M�)BL3k���?���τ�=�z. �{. �{��p�u�o�{@��ߒ
-�|�ȑ
-�h�Ek�4�
-�
-
-�G��Fa���Ԕi�S�<c� ��2%�i./�����ᓓp��E(1�`B�)p�)��@�pK%��8��3w|/
-@�/��׀
-V�P8�;wn�p.����� u�{��J&��7sb?�0?۞߫
-9�l�73!C8RS1
-�ܹB�\n�P�Y�::z{�������z�B��˲�lY�%��Ds֜%/zK�Ğ�
-[M���I
-#�py��O!� BPc�P*�7
-��
-�q��3��Pǹ�8Nn?�o�Ei��h����Ys�|���������� Bn&�077g�������_Z�t����|��/�Ƕ�%��DΚ_��g�,g_p�N�Z� Q�N ���)
-ү�{~3�'��U�j��
-�\����K�e
-�\"��,�ٟ�����C����ӟtr������$����LD���ގ��UL &r{��,.��Q~�8�o
-
-�MQ�����[�����g���X1���
-�\2���� �(!�T�T7C��X�qC����a�\
-��񳯝9{������k� $�����_=��:w)��&�t���1=F�"�������kgŒ������KU�V@�H
-�m����h-�/������LJ��
-@f7
-�����s�Ν;w.�L���T���s�؛>@2���t�/��n��f�9N�ϛO�RS�`ߛ��D,Z�e��m۾x��y[N N%�I��Ǽsyq��8N��x��
-
-�X,��?!��5
-
-�� ���x�E����D��m[�
-V1y�[b�rG�������������^�W�X,.\��CO>�t)ʁ�P��l�9~����ǧ�(=��*��T��0�(���c
-@�9��c�0�a�2��Y��� �ٯT
-�Uf�.~�t��@�R
-�޴o8�ZPZ���Ο�U
-`���
-@=�dP�u��@Ow�
-���PQ�S�2i
-�Q.�y�
-��4_rl{���(���|��
-`�`�
-�B ��x���Q���3F���}�
-��5���Ҽm_� �(���@��rJ#UO������@
-�m[��m;�p�YtQ� �������������s�],ZV�|1ןh��$s3�
-����MC��M�� �H�U�0� ������ǟ�Şh&���
-���fff��|>�f>�f�Q
-@��ŻuJck
-`/
-�zzzz��Jg����ե���ҩƺD4O�����R�T5�-$���&��)1UQ�D���G�OV��ή���׆�Z�
-�J
-��
-��|:a�V!�L��ffff�əh��p���#���x`l�g,��w�~w�wS)���[UU���[UUUM���nkk�����V{����5<�u���ݓJ�R��&>V�Ļh��w�T�[���9,������r ;���C���jw��J��R��h|q\A����1U��6�ю�,<]v���b���L&�)�t��'s�x����G����'�h��q�� xa����򓭭��w�|��������kW���������̟�?g۶���
- �,��
-
-�=??�)�J�D�`ۖ5��ˎ���_�ti? ן���U�M�
-9����OX
-@�
-L�:H�PC:�
-�4U�-EQ5�(Z*���D
-@��@ �4������ �nUQu���!����>
-�Q�/-��9g<���� k|Ŝ�Q����?��3�_ R�s�m� ' Q�u�����˗�:���34444tD�
-�z��j�����`�!@��
-
-�y�i�D��:�z
-� @؟@XĤ_N��K���88���>�F��Y#���*
-�9�(����/O�l���s�\a�03�
-�9� (2��B�)�xo������x�7
-
-��7?������:��˦������֦�V|�O~������?�zM��������>�����o�������޽���~&K�����]�+
-�
-�^�@�h)cL��<�K��1F ��y��H��F]RPg�P9t|��8�s�F����+���<�������p��eǹ�
-�L�r�
-�V✄��_���,{~ޱ�Ή�͎�\v�Q
-�D�mq� !�R�3�P��c �JNɶ����(
-`ffƲ�«�i��
-O��&!�
-Ә~#��Z�*�Bh�DS&v]�
-�_ ����T�ɦ9��/�:��t�M��ףl^8�#�� ����Y�Ŕ/)�e�T���������z���j�����R�p���@��À��.uN����q�(�I�e�p��'�T*���G?�٩Na(7�����" \�
-F9��:�����b���5�rF �2.���R�T6*����9[l쒃����P�^�K�y�q._�S�
-G� La�@�S��}5
-10��I�
-C�C�9��8�2 �h��m�$���d"�
-�}D�u~#��B`�����a�p,�D�ed�A�s��i@
-"�p�)����#�p�'� *�( ��Ö&�)#�@������%�b��.����
-@
-��zE0��
-�P
-�j?(\�����
-hb�v8գ*m�ZJ:!�]lLJ�ƺd�(��&��W^}�4��vE3o���� �q�C�u���Wѫ� ��W��W��o߾�������|���_���_��ო������
-����zh�H�
-�/���B�M�\6Msyyy���˻�
-�7��5��[3���\>�KE
-~El�i��B
-8�Ldeu��f���b9��VY�$a��9B �k5J�&�^�K�Wn���|_L8�4�;a�pN�$|A�R��$�񨀘1F�_Y[YYY��_.Ag��&
-�|��}B��rN�O��ڍ�*!~�JX#�΂:m�"9�^��]<a�/(cu&��������>"���z],$�By�z>%���M��5B�F� ��'����lr8���uN)����U�Z��L�:� *`\�J���ǂF�0#�QJ8��ƕ�^�� ���� 7��ϝ�����c;��Pc)�P�*�
-
-�`Y�s�����r�|3
-A��i��# !61��SA
-��P
-���=烬�]�e�qc����*�����٥���)1��M9��)���
-e0�e��LFB�U����y��5�s�� �C�!�O�ζ�<:�:
-/��V#J���Ee���D����yca������#�y�
-�:2222r"� `I� �[�P—��3��g���T(��Lں}��h����y���_>��/��ٹ����'��,����]�p��N����\
-b X.)c
-G��0
-�e2�Ne:��d@c
-d
-�FhP[XX�� aTd�ʞ���z�� A�����P�/�\��[���* ���W8Vbhp�q�^^\t��
-
-�"��U(�}�sJiX�#"��P��s�9g��۬�����e���7n�Uj�_չ�S&��̈Qq�sF9���@)a���P�Ym�c��@�ꊶ�HF��)c�[pW7Ū#���P����
-{C���+
-
-B� �xyy�t�bh@ �B
-���g�c�9>�1F(!ԯU6W6h8���
-�~�L8Jpr
-��Z��ܻrcë*2
-��1�{DSr��}eb�Q J���PJ(���RY}y��طȱ�Cs���/;�
-
-���u�0� �@�0��
-����1���_�n�,��P��E���
-B�PB���� J���q��ഽ�9�����#��(�
-`f��H4
-�6)�Ǽp?
-���
-',,�aa��n fa�P�M���>��՗�H�u@11�t�
- ��O̾u5"�������?����~|7���,�#ε�?>����3��Gz�����D�a{,�S ����U��ʍ���W��<�V�6�66� �R�6��ռ���U��|߯�|�V��Z��}��{�*�kU߫�|�����:9�mc�R�
-������jeuu��ռZկy��W���j�'�_���W��Z�Z�z~��{^��ze��U���U��nּZ���Z��mnl���X��*�,��_䯬Vk5�%Hµ�"�� �rGX��?��b��2ʨO��� "} `%�r��f`Ƕ� ���
-��g�c������X�o
-��818sy��(ٶ}A` :�
-c�qfC(��S#� FSxjjjj
-�00r�?/���01(�|�:���_����p�ύ[Y�(H�"m�!kJWpD��R�me� �U��t![l"K��b���n��_)�%q��̴���~�N���7�DTG���NU����0�;����n���m��O��_1�/)ӮYg'Sʤ$*U���o}k�o}�gJ
-��/���������������_���������_��������ۿ������J�Z�V*�J�Q¹Ml�V�V���7�� n�Б5���0
-�0����긎�:�)k���a�I%(��8N"���a���N�(��4�(�WnmH~EI�DIFa�{Q`�A�A�a�~G)+�'I��qGq��(��( ���=��<�t\S6}?�$��0�� tL�s��@�y�R�8^%���Ū�kB��5��`F(3dm�ۄf�c��8�M�s��
-p6����
-�{
-
-�u�#�l�B]W�$)���� +
-�<A��_X�*���p��X�p�(�'�!Tz����O�,
-�0��(��(��؏� ��8�� ����E�kBDZL��'��9��AG~�gZ���~��:B)��(A�iF(f��4w��E�/�f^fפ��I�3���ix0`>��
-
-� �(��
-� �����0���wU��s]?��0
-� �� �
-�(
-�8"�Ea�qƁFaEq�Q:�0 �(�C��<�s/ �� ��w-ͺ��P�%%S�%�%�`�6�2�_���?4�����ق��H� g3o LQ��1G�oQxj��f
-�#
-Զ)I�$���,� >�-
-�?�94U
-��
-0�?=��3 �����x�/n]d
-��0PC��Z��>���?��#�}���B����?��?�裏>����ŷR)WʥRy
-"� �p�D����Z���x4?�����+F
-�(6�#�
-5N8��q<�a�� �]�P<��~����������������w�*�������{��r�>zaN�K5�R�T)�ެ
-p�8;�j���
-m�_)�"
-�w8N�|�4L��������B���B�DQ�I
-B���8
-T�^@�SV���� � B�#!�� @�J���7+�Z���
-�gkkkk��
-
-�+��x�
-P
-\J�:����85N���ʥReV�j4�o'����Ձ���ኢ(*
-
-
-4Y�eU�dU�����Y�&����@SeY��ɪ*˒P��6�RO�dUSUU���,�BO�$M�U�2�TIV5M���j�*U�UI�ԟ�o ˲,�@�UI�"ʪ�����@�eI{ݖ�{���~ ���u�a��/of
-��y
-
-TȆ
-�p8�w�V��]
-d�>�
-H���>�u�1N�� 1!�F�Ǐw
-P�3p+
-��U
-@)%ӌN�tJ����P†rX�3�Ҍ��\g3
-P����ăw`W
-JH�!L�)�(�b�(ƈfG1N��� %,� �߃I�IF�q���3}D�M �V
-
-�W ]���}�(v{r�(��������l��
-`������ V�e�lcT����``<5��Ƨ�Pvww����
-�� +
-���"P� m\�6����$w�!�m( H*T�j>��
-� �䟮l�
-�*^]��Ӎ�fS�
-
-�� %��,�^S�=�����NY.��ղb�N������:�4ˮ�g�
-
-��y��f�^��r
-�G�~�+��]�PP�K]��+Q�n4�M^/~�(� !
-d>��p�E\F�'�
-�����b��'�'�?�����y�_�ggg�Ԥf}@�e `��c� �I�ɯs�JqV���u6%s��k�K�:g��b�./���)�xZL��,��5ɲ�ݘ��i�M���.V��i�5�N3��}M��aJ0�=�K���B=#�A����љ�)�
-��";^J�q%���̢a�Qǁo��J|0b
-'6��uY��*�2W�8����
-�q���`���0N� p-S�i�[s
-���<KZM���g)@�^��s�^����3K�����N��i��
-
-��,0��*
-���h��R�۪
-p���,V^�4��6���~U��3
-
-~V7��b2e9�5͡�u&��`ʺ )%�b�&��#r3*1����")"#B0AlS !�4JP��1�(��8EQ�R�� L0��$�C�3=�0������������ c42����;w�lo-wn�
-� p�����//r6~R4����B����|
-�,�
-м%��U����?'
-X��
-��I��!��q®���Eq��a��0�}%JQ��8M�4M�$�|Gu�4M��[S
-�l������ ���]������wl[Q�#p�
-s�a6��T�MI�L��)F(t2oϝ@��1
-L�� ��$��8�i� �� �Ǎ�8�ϋ#?J�8I�4�1P��Q�a01�DI'�
-
-
-��;��h.Tڷuޞ4�W�
-'#� y4˦$�8�g�Y���B��#ߧ9e�>���)����B�,��Mi��]g4�lY��YF��:O�i�O�Q<�
-�
-
-]q.��m�
-pk
-�T�イ
-���
-мw�r�/J
-�8�(L�(J�$��8�=?�T3�0�,7�=?��4N�8N�(��0��(
-��w-M��(��0X=�+��b<*
-�: ��N@���������
-:�
-@����{��m,���j�Z�T*�ί̃�e���!X�r�e
-�0
-|�� �}����a߬<��~�������xd?3 c���-�x�Z�n��pȶ������g�{74��y
-���W
-.F&��ft� 2B1�{}���Xƌ��
-
-
-�
-M�q,�w����w]��<��,�\
-p
-
-P�6j��U��
-
-
-��(ߞ(��2���m���Y࿂�
-���v��s��B#зg
-�^W�2�G�דeY�vA��-������Bof??�V���3=��G�qz:<�Fg�6C����9
-�i
-�;2�W�"�x�Ry�����
-ØM��Y{-L
-]���K��&�q�j� B�}���u����9^h�x�Ŏ t������n���u�V�kq�Q_/�Y���yv����7.>���d�3c<�^>+�px�� ���1��n�
-0�*@�w�<�]�
-0���+1W)�K�t^��x�J�C�ӽ �^sq�)@����hAZ�
-���8����Z�T�8N�[�
-
-��(�R�q�$��b�FEQ�����lnp����o�U�ol�7ꛛ���&�s�mnnp���z}c����8��dH�q��f�����Z�Tߨo��.��
-J�0�8EL
-p�����
-����F�����-���y����D�Zi��V���V_[_�$�sPX_[/��s���t��o�G�g�a�����/�b�1��c9�g�φ�����;�1��p
-
-��(�m�
-� ���A�a�PGI�zxQ��)�ș�I��3M�(��(����b���0��IQ�%aF�w�j��OqU�^+�s5oE�/���5��y˟�����O�k뵗�
-�(�-�sm?\��}ߏ�8�� �wM�\
-�_�&��q�F,��5V)(={���<���
-����ko�^+,�H�X�_��8�
-�0�(r�� �c��7 �(��0 ~EQ�{l;��y�k��%�^��~�{��{��3=ϛ�������{�ǂ�-�������kkk�k���k������y��烽��s�0��
-s��
-
-� �z��_�aFa��#?d\? �(b��( �0\��? ������� �(
-�(� �B?��0�� �"�q��W{a��~�^�~x�ŋ�����y��:T��拺&k�o��ng�kk��zi���V��7J��_��������ʀd��������/�ϟ�5��g
-�|OP%�5�$ @xO�z��~l�+���$I�ݶ�$�P�eU�uh×��
-� ���ߎ���<�4]�t�(�C��,�t� �� ��tz~���yQa�~��^�A臞븖cif���ijK�\��}�u݉cʂ�:��OR*��*���<w����.���5� �
-祅?�5j����j�ΐo{��h��.ڂ���ʱ��L�q=�����L��m�e7�M��)ȐIp��l�v�A�������A��������{.T�\]r}����K������A��a��ﻞ�_���~^���oYZ�ۨ?t�@��\K�\�w]�s}�ul�%[����w�Zo��Bsp1��I��kkk, X[[��^�G�J{���s2�<;����<8???���
-
-�y�?�yo P!����_�*�e{2�HLFTt��~ٻT���-��C�3[�G�x�m�dC~ݴu�K�
-�}XT �>����� ��
-
-��
-
- �W:�Ρ� �Z�Y����4?L�NVީ
-
-�@�
-��N��j=Z�䓖��ͅo��\��*K�z���y���'?͓���ڬ��I[v��ݔ��y����n�u7[^��9\<��s�^%36���t6+mnv<������Z�O~��h�Ғ۾�n�E��E�gQ
- ���V�v�JdF���d�n;�m/!�(�<�8���"?4+m����
-wCZ��"�ē��r/�[�Ff���3����}zE�. I('�D4���'�����[���W���u��$ ���>n��R�϶.w����O#���j���wЙ����n�B.)!�r�mX�k�_�`��
-��j{��nn.��r3��ɯ�z��v�j�>�s7k
-2��U{��(S�E�gf�;U�#���1�%����̋f %��t6����>'�$$�R��"B�����?�4��}��۫Y}K/g����r]zI���u�Q:PJ(t�}�g�u�|C����QJ���o�+J黭��mty9#��,��.����̻�诪���RBߐ�?�!!����w����?z������lvE��/�|
-
- �
-�
-��%!�h����Q�E?!O}��=ߓ3��ގ�����G}Bțz p�O�0쇤G�m��G��( iD�}��n�Z~k}�����F�'�U��p}���vd���"B���t6���4$a���Ņ[��}�/]��? �H�~@%d�L�|��|H�I��l�ۯ��,�r��y��(O�ӯ����N� ��(Ϗ��=��"崜f��_݅p����r�[�� `I����q�&���tz7P���<v_@� *�}� й�� �V~�9J���Q��� 9�c�a;��:]��y�w��,`�ӳ"OS��۶m��m�
-gy��2/ϧ����Ӽ����`%P�@Y��M����� ��Η���(�g
-
- 񣿍���4
-w�0�
-`��pꐠ���i��5
-`��_H�g���Z�N�S��c�z5:��ԁ��5�
-��7t������qVd�����E�ٶ���@�I��t�V�Y6�LS���/�q2[w�(� L�\@V��"5`7�Sg
-������Ɯ ��5
-
-
-�?�b
-`N�U
-��y
-
-�Q�ld��q&�*2�0��Ȫ�^�8�V�� �4L��iHԟb����mW
-�����
-
-)�c
-�+Z�*þ�����e4 �^�����V��nqTU��u0�f������i6������o
-9�*�j����(/�
-
-
-�������e)0�bsm&`Q�y^�^����4w����vY:������}.�ݽ
-�"�c̅`���_�0��UUP ��e! ��s,�1��.C�a���5� 3,��3��B0Ƙe1�B�Z��9H8cq.�c��\�C Z?X��(�:]�8P x�K�4P%���������I���Y�_�
-�*��R �,
- /�,�:�N�����Aݮ���4�S
-�K��%��gۭ���e��S�������<)E~��7�~ۑ������}�����{o�/(��(ڏf���
-�@�H
-��-C
-��_
-`��V��K?�R �`q���p���a (���
-�, X�
-
-@EY��Usf�<��w�̹�~�'��Ut9�E߾�%�~A�+BH໾��>����Ln���(
-C߯���nk;|KÏ>�o�>!d�'�������;J(!���J�V�����jv0�$ܚ�_ҫY������3B|?�}���3J �[4Z<"�Q!�0 �@�(�<MG���,Ke�o
-�jI@8�� T1���(�s�(�"�B��2����MG�y��n��;>=MG�������=
-D�6�c��c1�V��Ee�������X�@
-����[6��.�<��Ej��i���M���M]Q� ]�
-�l��� 1��1 #���4�
- F���㪜��������$� ��w����������o�I�����<���'�
-Ȩ��OQ
-`���s�1�L&�d<�'���x3Ɠ1�c$0{�-��� ڊZS @ [�3\�ʇ�d�/���-1{s�.
-�'$ C��'}���S���O�}�'�@ �z���` KZ돟�����O|�.R�c��GT�Ό�ґ�L���,�
-
-�c���x�jha����"���s�9�E�9<�1B�s�͒����7f�s�p��Ʋȏs�!g�!��ea-�
-
-���T
-@���.���=
-`
- ��L0�X ���X$c...Ɯ�ɅHบ(21gL�Lp&.���q���� <fU�eY�e)K���PT���s<��q�c��4&���ikjuӔ���A
-
-�
-`wFB�Y�V
- Dc!D s�ㄉ��� ��s��`1Lp����8N0O�L��y,^ ��1��c.��F�2�0�֊h(
-Ę�8�1�\0c�-�0��υ�]�k�Mմ�y�[o����n�!}
-��<���m#-+
-4Ô)�7$�������E4E�� t
-�, ZЂ�B����2
-
-
-��>�K}P@Y3tSח
-
-�V
-1��?7����
-�r��e
-
-
-
-��,)
-��ዉ��P���ph�@�
-Ԕ����-k�V�(�RaM[kT���
-1B
-�&��N^����%�-�)j[QU�|
-�'ɋ�p2�<�' l�9� C�$
-�1D#T W
-@S$�"ynUm�0,��@��������
-�
-.��d,��Ir!�ſ��'L���N���x|DZ`3�1��B��� �
-��D�1�8|(&L6��e��
-�ݮ%
-�ZȂ@�1�<�I��q�qlU
-`)�*�w� ���" ���y\�I��.@u͑ɧ{+'��d�2I^J܊��0^\�OC�_
-�'<�,I�D�1VU�@ha X���8�<��.���D�a��E��P �0I&B�$N ������d(�C�x‡b<^$�Dt'�I�c��0���B�@QTUQ����Hℳ��XL��X���
-��3lU~�Q�ò
-`]�T�7Y^p'
-!� a��n[�
-
-zi�kk��m_@C�U�{��[��_~���o�iy��<-�<;��plӶMp��t�iK/,��v�Y��! m��jے�@
-A�1('^�
-
-��0�
-��g\`�1� A�� �B0�V�FCQ!�,� A1ba�9f�O���3�0��8�΄c� ,d�D�1ơ !8�b(b�0cB`���d��4 ���� ��a�!p��07��sC�/�in��a��C�
-QmX�cl1�̲~�S�
-��4`
-
-��
-�@ױm����K7ut��M�6�r�
-��'��@UU
-�(�NV�VM��
- f�1�^0�!�.Ƙ� �B0�N8fBp��'C1 �p1
-��ꮇ� ��B0.b93 ���l�R��O-U�����qc.s��� � E2"a ��
-��
-T
-T u H�ù�G@��� �*C�*�� ��(g��!T�R
-?��H�$��|�'(I�d"���P�����B�%
-
-�M�FHfNV�"�g��n�
-Ui�j� ��e���LZ��� ��Xm�݆`���m�h�Җ2@ίThC���@U�R)�!���9������'�����@qR'��Y���4��5eMMMk�o(h��{]$/��%C!�c6B�y̙ �E�c�j�P����x^0!qr s>cq���a�$b"b����J���D��p2��D�q1"O!�� >� �ŋDp&���6P�q[<�l 1�1C!��D���p8�\\\p�q
-@s�i�
-P���mh�Pդn�V�P[���jC�…mYf����*
-�r� c
-Ø[B��U,�q��� 4�w�������� ̰X�}�@�����xx.`k�e|R����ұ���tS's��,���
-����Re��Z�����@Qն�\��BP�C��$B���r.@=�E:�@m7�;UUK�.���?E�z�����|S�#_��E�tM[V�eV[N�i(�"�۪
-UY�VUU��
-��4m�����4�Y<U@~�Z�~t�*�n�*�����]���
-lC̰:���x|1'<����b<�$b2�\L&8�$I&c1�\\����$A�X$�8N��d<�$B1��2��I2C� �T,��$O�8OƓ J��$�q�H���UPGny]_�
-���4��}e)�WH_����ݮ�M��m�Y�8�������
-
-��+R�
-��ȕM7� �"�k��4��%��`�QuٖE�����%�17�F=�Qi( �bH��4�m�/��A����_P�]��B�~��1.~��C5t���.eWw�.�@��4@C�����$ER���$�o٨zJc�}����*j��d,�[_�Cc
-Fp�8G�w9ChY
-
-`�>@��E���|��{O� F�ˢ�'���J��p�N��
-��y �� `x#xq����M�E��RJ�]�3Tږm)eY������<`!��Y���
-�R�nB= �< ��
-�m˒8)*��/*$�&����
-KE�<P�H)�si�?5��nܰ/�!��$a��;��E�k�� �?
-�~&�Rn�]u��~-�"f@H�@TR[*��S�d2* �Bw���P�RQ�ԥф���($�&�e�!J�&U�Q�����V��2��A���WJ�] �㚬0T��
-`k�B�
-Q��
-ZM��nēB �����"h���~�ʲ4n���AK���B�A�f$���Z�R� �@��ǂ��s����ڕ!� Q�y����zV�E
-`r�`Q4�&���H�J
-@��*���
-�B�4�
-�rST
-d<�L���q�&Qy�"�8�Lƣ(�UU%l��HE�O�p7���FA�p���{{�^�8���m���@0
-��[T
-�8j�
-D��%"����&��[�J�� �� ��j
-�ΌEK��Y��> Z�ʒJeVD9�Ҕ��
-q
-�c~������Z)S4��Ak����/2� ����E+"$�Z�Zc5Z�5���R�H@�jc
-2��{��
-A)�T�
-�l�߼� �,�3�( ]��,��2�=���fM�4ͬiv�q�P4
-�!���
-E��P���}Pn8��2�n
-�s!8���*c,�Ϭ�l��lo�e����e�Y�~�l�q���g�g�����<d!�� ������n��B7$�sW-ゑ�M�B��9�c~ij�?�@ Y�0 C�4u�ԍ��l
-$@��DC���|��
-ᇤz
-
-��� �����1��@Y&��>�V��^������
-8�k
-�R�� 5���<d� �!@&2���B �3 Th ���Z"j9��F2�,5�.��b�
-`= ���q��I���|e~Cʜ�ZJY?z$��T��
-
-�ȬZ�fn0�Q�4Q���j�@����9� ��В�@�5n,��j4�UHʐY�,���J���jP�I�2
-
- d�'�m"�
-�$S*��\!��FPk
-(! �LgDJ( H����5YD$kHkR�h��B
- �\le�4M�:��� w�s�ߐ��3�
- �>�
-� ���D%(�!�2`����Rؖ+�3@2D-�Rd�j[�������\i�JYtI��CRD�H%�R�"U>hW�-ZЖF)ՖmI\����|/��%r���D�]%�E�RS�Z��h6@<��$��8�تH��i����4�g&���
-@�L��
-�� yPɢ�-��
-�'�g������0TtM�`��y��k�ɑK�g''���Oi�k
-�mx
-���R��2��`<�;T�\Y�
- 9Bk[�H����֢%�,��s�K�j
-��y
-�U��s?�W
-(% 3�US�\�
- ��s�$
-�m�!��`�
-��'~"�d
-��B"\�d�u���9h�[Dl�3���@
-�
-�
-��
-�
-�$q
-ca�{����=�q��=!B����N��1�x�l�1�8�8a�Y�y��q��?{<��I4O&}okU9oh?w��~�E?��lp�.3֕�+��<D�֐F�F�5\��}
-�r��A)@��J" �"�I��Ld,3S Ҋq�@)m� � !��!�n꺮�,
-�e��iEq��I'���U�2I���$��h�G��E5;p��� �*/�
-Y����,��y;
-p{���)��Xg�Lt;�6DP)C��LI� �)GT0k���*W|+��?�R�8�ܰ�$�������>�IU��>q��?�냃ꠞ͊��AU��C����r8[
-8d��.M
-$C� ���%2��w��)2h�>PJiB҆+
-)�$aQ�q4��x2���QM�(rդ��
-Ȑ4aK�V�����\)7�A�i%l �fݬk��a�@-�<]�)��l�
- ���u˟�����}����-Nz
-��㌯c�5D&�k��
-��+k ��mUk�����s�eW�Lj��fM�4�`
-��8>N����!���
-�
-`t^����
-P
-J2D����ZX�B�����PYm�&��&�Ii��X VK���m�ܸ��V��`[�����e��1�E��UHƐ6�R��K�,�MZRH8ED�2�Y&� =��6h5��-akWʒ!ChP��Z��jED��i^
-��ؚ;.
- �[��8���
-�x��,�6
-�;��'�-�˄O�N� Y�q��gBd�.�FD�Q��^Kp�3!\%{�r�B��o�L�
-������,˲�/���g@��� [�x��n����#M&�(��R�Wy<^+�`�'WF���
-@�@�˺�kY����Y�����D�y}����2/
-@)А�(�l�� (�J�j_z
-�R��8�%FN\�SQ"^�
-Y�W����9 ������2�e��,
-� 3ع
-�0K�K?zK)�H���4@
-�j_ �
-��)�M����j�
-�S���Z���s���
-Ai-H[n r
-
-� �3
-�Z2} �"Yi"|��VĈJ*ѱJiF"��P%�* �[�e-�u� ���ܢ&��ʲTd����
-5i�Ԥ�BM�0CJ)]�F��#�"2T�5�4�E�I����H
-���2Μ%.�f}i�kw��"!@kk��d�&����5jB�:�
-��h���>DD���L��Ц�5�B$m�k���ܢk�}�����t�p�*=
-�`�
-��;>�,�[����P�X>�Ͳ�Y
-�'d�P8�!D�m� -iK,YH�ض]Y���vj��֚�4�h��~�����Zk�nW��)r��j��i"���Z��
-����
-�.�!@#'~�s?����
-�-@�p �f��@<�I
-r0Gc�zUX��~ј�.ӗ�i��I
-6����> ���S
-@;
-v o������:!h
-�>���
-��
-h�P�����_��-���4`��_�"�#��'�v�����
-�&�G�
-�_r����f�.��e�i*�\���� �P��i� �����<Nb��x�y�;�
-����w�}w�ޟ^������/_�z}�������oN߽{���
-�
-!�.`P
- �S�2�R>�R�,��(M�O��>�V
-��!"��
-���h������S
- M�(��G�&Iz#���i~�y�
-�ٲ+f˧G�2��a)fЏ}
-�_�U|J/�BDDQ�v��3
-��� 6
-���y��o��{���O�~����W�\9��o�9�@��̺��
-�
-��g�����
-`��[�s��1�KJ�/�\.�ˣ�
-�Q��)�4��Q�;�R�
-
-�l
-�@�@�
-��$Y�>�@
-��; ��n�>�
-�U ��v��o���Ν?=�w��?={��ٽg/^��x����˗/_��c�B
-XUR�f
-`'
-��O��zO�
-`���\�
-�H�$OE�̛f���n�\-���b
-��(�$K���nS���r���_rC,���`��/��?I������`�Gr4N�cEc�IT�n;�������,f�K�*!�X�r<���m[��1[�2mk�@�(����do�1��(�r+��"
-1�5�D @%�FB
- ��D$Uw
-,I�%�֭Q�-����*$@
- ͟^x��u��쎼 �~�xC\2�"p�֭�w��s��{��w�x���on}��7�os���;w��Y`��q�=n���~�Q���
- �6��Q� �
-�4��J��&���P`�����(��q!@k�y`�=#�,[� A$miU�Ɛ
-M�mW���%�WZk ҈@�
-7/�c@*�(��Y�y1�:�
-��8�z�'#��u݀RVn��
->n��> 0?<|�d��ɓ�|�]���x4��� I�Q|=�"D2��.��ĝ��� 
-!DQ���(<�
-`����`�L���[�o߾�ݷ�}�ݷ�o{����\���O_�y��͆x�?}�
-���u
-@6��O���+��?1�o�x
-�m���V�4FGԢ�֮ZӮV+
-� }-X��h�q"]����Eq���<h����,���
-�F�K��t���<��ny�wn(�
-��(��n���8�#��������$�/��}{�%"
-тȔ�OdL�j�/˲,��
-���Xl�����J�
-9d���
-�Z�!�
- i�Xs�{BE$��)Z!��`EZ)@P���%�������
-`/��Rh�QIZ
- ���(�8��;����
-A)>
-($MD�E �)՚����:�D��;�Ҁ]��?
-ƓI�Q4�\�g�i������q�
-<^`��;
-E�L�����
-� ��I)%��S$BMh��qRZ�. Z�Ԡ
-W�XC-��5�!0�DSBMHFg- $�րqB*Wm�ZCeYB��-ꖴi��� P0\)
-�fH��[�g,Za���L�m�Ze !
-$Kd
-�T"��Jl�}�Ԛ�mKj�f�sMd�VdL+LI�H��5�B&��@ PiBa�JKɖ-��PkʖȔeI;�s
-.�~��Hp�l���W��U
-�}��B���*)6�t�\V��'�~��O��s
-�Y��
-�> ��r���m`7
-@kk5�
-`�
-to�>��.`�g�0� 0<���O�`G&�_�p��mV�CrRJ��ų������ݾ;l;�{�����V���iUM��ʢ,"
-&ݵ��^��
-��zޚ���h4YW
-��@�-!@wY�
-��ޅ��p� {�9��g�
-��UY���w�03�{��|��S�
-ԍ� I�fccc��03��qx�f9K|�
-0�����_��i�*�%YQ�zY6)�X��/O�Ӫ���Ǧ,��m�� �R�$O��iQ�����Xu��f���F��(�����ggoR
-
-����QE�`8z@��,C�Cb��Lc�9��l&_Z���H�>X*�)����
-�aVԗ��?�
-�d�t��$M����g�P~�(�;j��9D!$,�Z"�C��
-Vɀ����r~m1�% �>k�
-IP�r��D
-`6�����~2�FE�y�N
-��<�9�Q@|�o�.�͆��N�i���Go�^w�J' .#��^���HĦ���U���q���lnn�K6�4M�b8��vئ��k�:v��"�6��xX���^���1�r�
-aQ����ETl�r�
-%9�b/V�X�B ��Q˰�������b
-Z�c#��f��V=��
-��Q"��t7�^���q:�&��
-����9�B�M"�񥅬Ę_��yCM�
-��ۯ�����pS�����
-�@�d�p;`��� D�{���1�8�nCi�Ӗ6�%ij�4MDZ�W���a�j�U� ClL�l-Ȋ V����$��
- ��� �T@;0�/@Y�٢m�����7��Y�hK
-��:
-��1c2&v����"?��/��͜�%z.����C_WeY>~<�G�#���ge^�UU׳��IUU�cx^�����l�V��8J��>[<�[�[,^<�ݶ_�''�t:=�N�N����I=��8[ק�gg�u5+�r�8WN���*Ϟ��|�d��8]-A�A���񤷱�.� ��h2)�M��>{���]
-�o�>�J#PQE��
-�$��;&!c�]�A�6x@Ɛ'��#���cc26D�����L˖b�ca�w�G�$☈�n�|�lv�N�"b��)�d 0[I�c2&��{�N���2D�1CƐ���8:DbH�A&N2.�_I`�O���-9=;[,NO��]=���|^U��"u}V��gq�L�m[WI��f\?��'��I�ԟ<��������bnu)
-
-��S
-
-�4��� 0t�p�a|iV�o���k���F
-�>��f'�
-��K�;�:�N��� vw���v������g_����~��w�}��g�}��:
- ��:
-`-�G
-�&4���ìLɽ�$'��aC ��8�laDDDm#�և�����A�p!����Mh ��v���a 4�Z
-!5*
-{���^��RjȌ�4��l�̘&�e�Ƈ��v�;�o� �(8"�x��_���&0_ �^�u� �!0�
-`��b��hR|�q|�~Y?��
-`T�i ���]���&ύy#
-���k�
-`8�j���p��:�
-&�P��"����5�?��q�V4�����Ml���BƘ��ؤ��fw��<���Z���<n���qG�A�
-]Q
-��/�X�LF����������\|�I����������s��V�N�߿�ag����`ww0����� v-�{���)�b�NM�E��%�/y�g��S�v�`dU�u�l�X�f�Y�^��*�D�uC�������d�3�?�����b�XT�<^���,=*���x] ����6�N��F�����u������5����\���B�UnE�� ����z��i<6�����t̔�4���L�$���9db�
-
-"b5����L���"b� � 4��x��P�
-���+("`~
-�S�N�`�D
-���?�����?�������{{{�{;���`{{����{{ג�ţ��"
-�Go,
-Q,���̀y"`�S���l� �{G��/f& ~�RA`'
-Ya @,L���E����$kؤƤɘE��ab؀�#�&���H*b�@<
-@ޤ
-
-��)
-@����)x;
-<{� �\�����oT
- y�X
-���wVe�[�2�g�lR֗��]�/Z
-�I�)YK�±�'Li�M��*Db6m���Z� D�O���R���+Y(Y~MDD
- ,�i� ���Me\����\�}Cpk��yg�5�9
-\$����Q�꽅@�x�
-Dϳ��L�6% ��o��O8���y�*�y�
-�]�
-�9f�&N�ܺ/�&�_���ܹ�����w>���>�s���3�����;ۃ��΃�~|��O�^�z����W?�z�����
-����&W�I}
-%Ol]Ө�9�V���,iJ�4M6�f"���H��=1bm
-��
-�@~s`
-h� U5�6���s���U�IX�D�$�4qaL4a�!&��+��ë'�jD-�y����A�����ˈ
-�iP XA
->BYaE=��Uj��m
-����,Ә@264�;YV'k���
-�I�@�$��$I�nn&i����x<N�ƀx��&��bNI$PkCcL��q��2�ZU�X ���b�?%",;{�%Ҷ#��fLIjR�&IB�El0&%2��Kê�� �h���dng���b)�c��I�,}��/����
-`�`�Ē�Z�2�����qZ��ڎ0,$��@�IX ���r��P���VD���v%�j/[vI
-
- ]
-!M�. @X���Y)@ ��h
-����(�4MӬ9o/��W���af��/'L;cL b"J��]v��X=�Ș�ИHit3G��Cv�ןRC`��b�
-���J�6H Pk�D&5FR�,$�CcC�6�������(�cƆ���p+m��A���)����)M��x��_@���{�����-_��`���7�����?�����W?���ի���������7`��\K,{���
-�u��m �,�N��N��ey
-��� ���8��<rN^� J�@@��4�/P�Z2
-vܦ$!��8M�m��$)8F",,��K��΁97���48/�>6
-��ēCc�
-@�Im�f�6���ys=�W�)4��qJK�#B�Lj8��2}���H��`A"l�c�=�`ɞ�J ��Pj�i��"�=4(TD�q��,���Rc�f<NSc��)Yo� C���$>X: k�q�cRc�H�dᡍr
-xrC O��(� ��*�&WP��
-���j����n�%�a6l_�8���v���
-�Z"�����ccRbf7��^�Һ:%�'("��}*�\�h�=��A�� �$A� ��!���7i�T���e�D��� ML�K��#�!N�
-0��V�*;���|�6*^��(T�(O�l�6!����WOBV
-X+���������A�P���a�v
-�X�X�X�sA�y��, l��������&M67S� ���Q��,��㔁���mD!.X��/3"𒦩�������i�6���J�%j�#uAթ�p!�?�
-�GR�` –Sa4*�h�d�+�F��@�5V`�+2 � �����^
-*wx�)\hǷ���X��0�Ê(��}�B�a���H
-
-������I��
-��{+�
-$�`$�D�T@N�N�,@p�uι�M8X#��#Qb�6��8�e�?
-�z���|~i�xY����qU囝NL
-q�
-2�Խ��LĂ�2�RU!A��$D�4b��9���qN�����(d�b�ho*@��B^�B,�8X 0q?3LQ'�Qw�5�pp���8 ���9��m�
-� X"sA`��`-���
-� YW
-��
-
-u:��sGMz���R 
- 1��A؊���L%�DOe��H��
-����V��6�`!2�.����r��N$�#�OB�n�4/c�1Q�x��&
-�] ����Еn�1��?�y �1p�i�Y��J�!"�!���-<�Jƶh���@��q9R
-���O��
-�l~
-�6�4�&��t����}��8d�0p��Iܑ�fa"6i�_�)5Y2i�1&]
-���N� �8%0������v2��z��qi:3E
-����4M�*л�f
-�{�0"'�px[+�ؚ,���@�6���:Q��8MӴ��f<6��E���mf�{xHp.�?^nRk�BĿ����ᅬ����������z���뗯_�z��o��KI�a�
-pI����� ���ϛU)�isp��B�zk16����tUg��[�y��ϭ�6@�� ����4�
-����I@<~� �k
-@�ܞt��
-�s���8��&4��9+��b��7��{o�U��$hBh�i����X�f<��4�7���%x�̍�$. !4� `���yx+��9��B���5��qM!X��A}�o�5����ߓ
-
-`�V '�I1�l ��a2\Ov��Ϗ����s
- MH��9 �{^|+K�#uh�
-���3T���p>�b
-�:aU��[� A!X_7�����7MP� �f(
-� ���50�L&�ћ@v
-��
- ptVQ�ķ. dE���FB�:�DUXXm-�`�"
-\p�i��9�5���ݝ�����ww���o����|�ӏ�^�|������
-,�Nb0�����
-`^W�ePU�����-
-`� �e`��
-�w����
-& �������C��_���ڭ����ܐ��6x �6^��xL�0�yl54
- �k%�^Ch�' !��� f2�)N�P��E,��^�W�7�L�}���� �o;{{��߿�����o����[��dm���e@/�F��d4e��dY���y}Z��l���$yYUU5��e0mۀ�ʤF���ds3NE1����AQ��/ _� E����U
-��6 0�t&7��$���:U�֪?Pk���@X؆ ���fr�^�&���*��E���-
-
-
-`w���z\$��r����'F�o@ .
-��@rU�� ���y����ӧ������T
-�^}�"X�VEE���d��`(�`��B���!h#�� �5�aCM��VB�'hJd-k�p�Su��n4nS������N}|P�0! qcAS ��8�zU���� ��2�P�s°)D)�<�C���_�
-����_��Ϻ�� 9.`�n8Ï�
-�.�
-n����nS
-`s�EpC���)�ps�F�/)��r
-1l�5�y�;�aP�%e)��
-�5�-D�mo6�M�2X�B
-`k{ow0l�7#�l~
-
-�}
-�����˘󋢨
-F��z
-�n ������y
-�ؿ:�w�
-�Y������
-�Q=
-
-`>���C���q���
-���t03��u��
-`y�����ϖ
-���i���L��[bf"&�S�ޓ�U�����
-<{u��v�XD$1K�k�%K�"�%ƪD��/,�������� 4x� r����"N|W����`��*�:D��4�~�efa�sLs�lq"pއԎ���/�Pk�4[�Vke�^o�6��__\^^^]^^�t� ~uuuu������k1���K�s�Rל�|��<�����z�^o��w��;�󃃽�|/��;��;�;�+K�R�W��
-�Ep>�B�F��|�}�뀟��S[��h����Z+�F�n��>���x}yyuuyqyu�f�\g����
-
-��oh��$%fk�{� �U�@j ��;��D� �2�V��/�=2�2�ƻU �dCp���4L�&sUc��$&�g
-u*�!�S�x��s� �����ijM�����!`URG^Y�x�BAe��czL��������^īA8 �E�bK "QQ'�֩���2 /�+đW��wN�1>tjB���zH�+p"��W�F3��8��
-�"P�bD�X"cX�����Iw��I�噛��W�IM5�66�m���A��������OSk�/�ɵ�P�����( <���C�R�9@5|�W%Q��z�'��ˑ&�f���R� 0KW�Ëzv��NI<y0���@
-�WG��a�V�RR�[�9)��<��q�P���f��|D�h�m���f�~�vw�����˫��7?�xu��t���%�����ũ$�:����0?��z�~�wh��<j�彣<��������������xx
-�T��#!r"tUT�eU=
-+�,I�bMd*J�PQ����j���>B��v��@\�3 ���?z�6�Ͻ|
-���v�,f?���,��Tj3�J�V��#��up*�kk�Y�� ��p3��X�3�4Q�4)��sɽ{IbLj��D�KH�ɠ�9�p)v38M4� '��ibb!J ,��]�����䃈��0 Yb� �!JMj ��^R����T�(�(���Z%f?��{u>���ퟦ֚%��*Z��@� �b����)���A��,�Hl����ոbp�"�X�9
-�F�eU�s��U��uc�H�E�L�!�Le�0�!^#�W�:: |I�����p��,��D�_��n��h4���F�V�Uگ.��/..�����O?��3
-�LJN�w� BPu�u����LH>�8���@bS@2�����P�� ��*DT�*B g�H��8�XkU��M��
- *@�h
-^Qw��E4�
- 2����D�n}��Xi6��F�Q�l��~}����͛�~���q����mX��/.�};�p0N��^������z����^~pp���ql��{G{G{G� ��Q�g8�ג��0ϏK
-wSb�&���]/�)����IXi0*�~H7�1���h̔CIr�Z�L�5�J�{�bN��Ω >xu1���Ԥ�{ÿ<�� xk]���C�� � "�]��e�b��2��U�1�ƒ��
-"Ua�H��BBI�1a��l'l��z��
-�����
--� l�%.=��\�(
-�]G�E�C���K����4��Vk�޸[�m�_�_^^���z��?�����G���ť���+�� ���������^??:ܿ�����a�`��wX
-��~���彥ޟ��
-?n�u�d�k���f�>˲�\����be��3‚ �&�Cܪ��o��AC�_`!Y"�j��}��np���E'�
-�
-$�)�!.N��Z�clJҕծ���ƝXQ"hפ��4ziG��eI�X(5dL���$�{s��S%1�Z�T�ծz"U�ŒƷ?�4M�I��{}�g����I�,���]��2�p����D��sP��=��� s>c ΅"x/�������pX�L��Dvw�H��LJ)���y�LĖ���e)�.8��!&`G !]��:���ົqPQ�E�]5��%bq�wA�%&�aa�1+|�P���c���|T��Zi�4�F�Q���:������|���͛������������dz.p;����ao���7���8/o��~���|����`��p�/��@�y�+���`P� ��Fg�����������(f
-դl��tJ��ZJ��L�U*s��l�PJL)�M˧&&k�T��;՛�]��]@�G�\8e��*�p!��(��›�>\իH�+� ��z���.t�v ���12b�MLDJLH��xu�(��3N} b��|��T�'�.��;�83��2f C�]8���qp"JF=�w�W@�g�H|x�zSh��
-���"�%�q�=���kU ]
-%HT4�f2SJUkL�ܫ^�
-T��k�b���?"b��l�:Y(�LE\�� ʜ���ې98�j�A=k�b�#s�sΩC����(����q����q<��u�٪7�������g��//�}�[<���
-�!Q!�3�TN�D3K"]�B�Q1q�]�5&I��@%1�0Ӫ�*d�S�%%����ow����:�>��)U�� �M�ϱ�Zx��*B��T\��3��¬�IC�.�BI�XJ��H��H ,�Y#� ���$�9'��Q $�H�;�[�p��r&de▟��q�J�,���9 x�>x/!
-�*��.�(v�w`�LQi/�� [�G�@�
-"
-��`<�_"���f���w�2��������受W7������ :y�N5��� ���� ?���Ǔe�����p�l8<�
-r*�� ݸh�L�v���#����d����؅X��U/�",qQ�rզ�$�{չ�eg;�BF���h��8�����ڔ������
-�'K~
-pr2:99��NFgg/N�NOFq�Y�|6S[�-����η�/���z�a��n���v���n�ۏ:_���םo�����l����:��~�Y���[
-E�eZ�ckP(TT�)�g
-H
-�/.,��4MA��!�h���=$���O 80 �XH�H��\�^�Rj�6�ȋa��
- D�
-�~�*"uY�qR�u��SY` ����̑h�[��P,9A xo�1��H�,UJS�$
-k�s.��y�J���…�2��G�ݘ���n��t3H�����CXY�AvH�i�ƖD)!a-]HX�a�3G��M��. �)Ya@�b� &e88Gl�v�g!A
-�0��Y�ebfk-��)19���Q-�����-
-�TL-�X���𷑮����4�#�2/Q��E��,\�\�3��%ap��ca�� @Wb��$J.�0���
-����KM�W)��g\�,�.��b�
-dY��;xʵW��{/�UH���ԘČm�d�DȠ�R!x@)8�
-�w&8��0��H�bKD������Ԑp$
-���� �7^j���[�v��j6�g�^_\�:?������������q 0���0�,.,���
-
-�)���%&�%J(��ڤZ:UM�1��!�A�ȟC(��g�l�����cS@�v��^�=���Б��I��A��9ᱹ�K�Ә�
-Od@1�e��7xy�FRB�5��X��D���up�b &Y)�J��R�ǂ�ɒ����Ԑ�Y������N�A�%����!6�^������z��n����v�Y>??������������s^^�%xq!���|�p
-����2� ���Rq�R�&U3' �$1_�6M ���d�Z"Z-ݯ�z�^f\x��LN���0�(\a�{�
-��� � �������
-@��(�ҸןܫV�s���\�Jb�v���)KB;Yƌ8�����
-�z�3�ϟqd�'m�d`���4@`�����
-��;�`=�]/f�X�l�UI@�\�^�ڴ-�4����ZNL�1����4�@�G�
-��J&( �h?%B
-ՠ>� FY���"�j
-5�D
-"��LmbLR�V+�J56لj�,hLS�m��*�F�G�]�����-^4���(�0|��NU
-��KTwUT��#*�SIjV��@���%%e3q�d����) ��@WQA�F�M���54�lR�� �RH��,�Xk5�nL�b�O�I�U9� )�Px���*�J.� ��a�Aಷ�q*�qX��O�W�zc��j�o������F{��Ҭ7Z��J��n�O��������������
-SPVָ�b�1P�[5K��V�\� �, �3�d,�����@"�I�JP8���9(���9�s�V�*,(bKl�kL5I��\�J�q�eM!�� ������
-W��}g�㗴�E�+C�H�uY�wn�D�=�J��(q�B@�`&3��sT�J�IYʝfe"/]�8A���G�@c>D$�%6\��v�����UHL֚8�!)��8�
-1�F*`����L�XU�ԊĖ
-���Kj��1={G�߈z�ז
-P�d
-@�eY�١��!��#S�~����v4�f
-
-
-%ƘjɌc�US�p�+�!��<��:�%���:o�#G��c��$�s���K�9 } 'ީ�0�|kR�$�����=!�U�H�g��|��I�$$@�d0�l�y{#�}���g��$�4鶩(��9��r�,.J�(Ū?J&1�Pj)M %�q���,��dL�/�A���R���R�%k-�~��(�8����Ŕp�
-��
-��p�"��b�p����p�9P���B]`-�Sc���\%��h�j0�.��\�6�\ qP��w��'"��������[WX`
-l*BeC,$� ��AGP�����@ʔXC�r����׽�d����
-$�"��k,�-[kMb37W��0+�@]Z� �p�= .
-������w����F���XQ������ˈ�4lM�̥$֒�DiBD€c��,�M�-�x�ؔK9%Dɂ@�dG�r72ʍ��2C��5D`�
-�rSB�v�&�Xۥqb�5��LDD�ي�ڄ�ꌘ%bGŐ��N�y��[ڃכ���V���Zo5�������WWW�//_��x�Fܧs�N6d� _[�� ��[�;�Y����
-��
-x�(8�}pG�٠A_v�+�21�K
-Jm�nL�n��֎��N�1���8����+�my�$BP��7i\�#kR2���ԦƤ�ĔK�Ld�ISk{�xd��ZR!J)Rv���A SJ)I��r������!�$5c�O.�����F�r_0�����(��r��%��,� �dm-�c�b�Ze�aK�מ���[Q���j�k�����W�W�WW��7�nF��ܧ� �~
-p�V���ߏ��5
-�s�/?Cn5[��z��\Yi�]�|�����ח�WW�WW�rC�
-
-�9�D��Z�j��X�2��G���l��L���*���1qW���V�Z��:%!��3�{��J=�#-H��
-c�v ��1�Z)5d�1 q�G$$��T���B ����&�d$fQ�ز��Ltq�7/��V��j����F}a�����yt����MI��Jenn�2%�џL��6
-Km����:WM˺�4q���ոF�B����C�����_d����L�ʶ9O��D1'7��Բ%k ;�&��22�i��Ƥ&MLJ [�v=u�T١��ԤD� Q�-�M
-�ڔ�I� �(��L>N��̤d��2Y����N���{e��Z&ˑ�I�{�^��\�RK�(2dJg����h�Z��zk�q���������뫫חWW?�<7�Q�rZ�V0x/
-%[��)Yk�t.�Ε�4��Ǻ#���O͔ C�
-Y��65�%���R����Z@�21!�|(,������(���wH�mj���B���s��/� ���S
-f� ’�65�
-��@�F��j����f�~�V[uq~~~quuuy��7K��2�[�V0�����? ��5
-f��Dv���w`5*
-��'�2d`�P
-�!���Ld�dl�;XDv�@(R0�c
-a�.���U���"b�#�*ʠ�݉,E��;���>r��j���z�VY������7�?��zs3�|z���
-
-e!a��%[�L�,� �
-%��l�����@ Po4Zcw໵J�����o.����& �ja~���v��e���o��w�� `m��������ep<]���F�^����
-n���Pd�K5�5��$��=��R@a
-�G�(����4�I��jPQ��9v��v��/ź��ĺ
-�����h� bI���V��\&8S�z���
-�S�f
-g��, �nb͐9'.2g�u�¿4���y8a�W���)�I�\R�f�qD���q��
-�q��S����
-��|��
-T��9��Y���e
-
-KA(M㮰����vS"瘭!b#&MI
-g��l;��;����J7�".03Y2��%ժ�&b��9rL^=2�T\Qo����c�s��v�{�
-�3u�!�U͢π%J �B��m�
-U�ΉL鄿�u�� uQ T�� ����%V�n7�2��R*ѻ��x�m���Zc�b�+��SM�
-
-�B�4^(�f� '�S,��N"[(����bQTu3Ī�GGE(���a�̨��V�b����Q��s�^�]� �uY�[�؋� ��dI����RI�I������z��eYF`�k�^��0,�bہ�l[� ���2�5qi���� #�t��{��po�f�e0�BʡZη;���(���+P�1��I{��
-���eX��aY�ksssF��@�p8H6׆�A|i)�ݱ;չ%cM{%�R���a�B �����JE�4���h #�U� �I�2,kXAږm�N`V���m;4�K�7o޴�eY�ae ;� �l۲ ö�0�V�5�����]�uBt��uMK�
-
-[�@� N_,;�A$�T�^Gi�ؖ-miY����/r^�T�*sY���X �v��g����f
-�s�|
-�,i�ʓ&6����#��^�++�ʭ�6�m��ZH):��&��-;�6dH!a�����,[H� �Y�e[B�R�Q�W�έ��4�A�ć;��p C!V�@V%� {�2*���*+�Zn��K��*�[J[
-��H!#ȿ�C�(P�>�aEa���.t�N��Õ@R‰�� Z d�Kj<߾iY��vŰlUd�l�6�J�Pߖ
-�$5�
-��%#��b�n巬�n��eX�-;�";Hi���)�"����M
-
-)���P�0P Ɂ�0 �RĔB]3��u���e��ZY� �Rym�^�-�١�.(�ZQ��F���3ZQG cQ��`��? <
-�X lۺe��%")�@ضe\2�%;����0�ed*����l˶���;��e��\J�]#)=ERDS�}=��a�"z�
-0C
-9��Y2��B2�,щ2����roh��#)B[B��X�m�aT^3lö��
-iGҖ"�B)��2��+lk�V�R1V*�eˠ")�-�(DQhI�RF"
-��*U+1��(
-bq!J!2�"�'.d�Ki �� l!��FQ42�AEVG2�2C[H�6B� i���"GY��N�NRZŽM��-� 2� ��b0��4��ZG�qSR� ��po�ױ� ���Kˮ [(�˨�0 ,�2T�nB�U�rz��R)=E�9k� @�t=�
-�Ϻug���
- �@�����B�R��
-���JŰ ����f^Ii��l4A$;��@�B
-�� )C�K )�����@�mEA(Q$��@v�+2 �j;)�Ғ�)�ؑ l#T�-����m+�m��D, �r �ޡ�
-� ����%�FRJ� ������m�аe �0�%oGA4�r ��� ��@FR���f$n�0�@�e��[��y�Z|��4��/�tM� ��wS��{:I�)M'q �� ��S)m6P��T*�����TN�R)BR)]'D����)M���2��Q� �PF�b ma y�� l!#9��6�U`jRJ���*%$ �������gݮ׻�02��y�x�+�Y�v��)�hgt�������
-���`�C�*c��܋��Q'��-e�#Ba���`e嵊QQR�CaG�2
-~"B;�;Q$�pO
-a�K" ���2���Jvb)� +���` B1�Ծ�@J�ZB");�P�A m�H�M�DҮ(����5����@���PJےu�r �B!�A ��Ξ!�0��h(N�`?3���BF�VGv��3���t��RF!�RT.Y�`��� D�� ��r9�TR��u=G��5�J�FT���
-�ȟ�h0�?؃0� ���A��
-˒{Á�Q$#i_D��
-
-�h����w�V62vE�x��K�Lf��*s3�d>>|�����ѓ�'GOfA�ݮ"
-a K�#���+�b �pЉ�ў5�A����Z[�,�2�|t,�
-a )�7�P�la��(lY�d�K�.)׭@� �{��:Q^�vX��e6��k'��R^��_�P�R�Rۑ�-F�!�P�rб�h �\���&
-�,�)��r�|>Or9ZV�-GH.E�XJӴ!T{%o��)����R Dc�kM�޼�
-l���XC&�5Zl!����KV\y�� T(��U�(�I ������G�=9>>:�1�^W�5B�
-^��t�b�ʺ-+���u�ۄ5����vri��e�ʊad$�-e��e�6sv�B�FܑS���ϰ[��'pV,۶/Y�Q�{�0V*��aT���r ԥ5�fٖr�F(�ض��ɥ� )el�q��dȡA(;2���@Fr�d�(ښ
-�PJI��rJHa�@���<-�i�j)-���8�(�h��u{���2͗ryJr�<!�%�2������T���Q�b|�j)M#�j���p.O�yJ ��PJ ] ��R�c2�y3^A��xjԶ�-R��}3��eۗ*�*++� >��25��.������>~|[��z^�
-E
-��
-e��D�b)��BX"�RI�HV��D\˸d��\Ų����K�V�H��Zqx�)D �����"BXR�PLÿ3 ����
-)�%��$)�V(����A`�s�a\z͈�@V���BJV(� Ƽ V(��5�)�+ʜ�l��� :/�]�d߷���-���ۆ����"ER&�
-
-��}�Di �ceV.�r�\���~0a
-eG�$ �0"y{��A۶�,�0.U�=���B
-!�A4T�>)l)E()�%dG
-{(�H�z[ɒ����d�siŲ�[{v :2dg�
-���x�{�oܻ7��k�*����5�8 ���s �޹{wgg���i
-���r�
-[Q b!CK޺}�#�ZO�.Y�QI�Vd(���0����C!"�H)�X�J)��8�E�H��9�/�0g+�`�3��0�(
-�rT9
-���q�S�
-
-1����Ӊ��P�H"�jж�(]R�P�
-l��v�2V*#��[A �)eYvt{��p(D "�oi B)Š#� #i[��Ptb���/�s��k#P�}A�N�V@���b
-P��t]�f��^���%$K4�B�J�,
-
-P���uhB�Y�:s�I��"�&s�>=kӓ9
-+��pxK�����C
-1�֥K�B�!�-�p�ŽBa�(R���@ ��t� �;������ ��ag��F9� o� ��R
-��w�A$�Hʁ�{B��B�
-Վz'�d ;A0���RF" +�-è�V o�9�p�7��RJ����p0��hZ��(�`8T��–�h(C�hEQl�%�L��4�
-@<
-y%�1�����
-��poo(CcŒº���b�v۶��A`G���E��`��'�uB��7��D{Q��pu��ho�ٻVlE�HD{����DdXv$BF����B��B�p0�2Q$D$�{��@� �r/�� ��0ړQ$i؁m��2����2�d$����p(�ȁ��0ړQh B!�`8����P ���� �F���
-�
-
-�"}Aa��˗ggB�D4[�A`K!�kۖ-b��PFá���.e ۲� �HچmVP�t�5ceee�Z2 o��n
-K�[ iB]:q�زsKF"������Җeٱ�RD�e��r�@a(B9Hij��%=�t?U#�NԵW���pOFC��P–�K�ȶ�@��9FR�d0�m˶V[HK�@4ř��IXz��
-۲ ے
-�� ���#a�R��J�;���b+�U*J�rEi�Y�@�ʟ��~2���d�MC�v[��B���<� ,F
-P(� gR
-��Bt��-�@]}��V����q�
- z������{�����g
-
-
-��k������"�1�َ��� /��;�R�j5'��kb�M���
- ��
-Ym�4����eӼv�u]�{�����]s�½v�ڵ�{���k��d �[g
-
-����~�i�� �b�p���
-����d]������i�Z,0
-
-���^o����o����E���|
--�"!���z�<!$�>�g ��:!ie@�����(�Wz~
-�'�x�.�?}��������]ǎv�r��s����T�<4-�i)-��Ij��!��]�%�|���M8�˚�'��v��������cR֕G�\u��L��ԕ�j%�F���%J�$Oi��1�����������7>�d���w���8�ǜ�#��?����ǭ l���r�ܽƱ��!��x�?i�9��p|0�c�p�������r������|�z�l�6]୍&��M@��6�qc���G������m
-t��|�Q9Br�\���Q�SZ.SJ��R��\N�����������������-�!����>����8Y�QK��&�ﷀ�ʎ�8c @��+<�9���b��&O��G�<��f` =D�c�c�� �: &
-�J����UV��B�H�?~ptt����'��:;0� h�����ͫ s��H�kk�jg�����G_W؞���(^�u��[[�n���q���) 8��ݹ{
-`�@
-�5�g3�?�=�����J��*��<���r�\(���U���h�RZ���J��g�� � � D]�Di�8�ʓL�Z��\��R�\�eJ �4�/Q���rY��q;O(!�!D��&��R��� e�>bz���W��,_b�)�k������O�ô �[om�#"��9G�
-�Vsh�RZ�剩����I.����x,�W(��2+Q�
-��%Y��-Y�4maaaaA-�N6��4�Y(ě��4�eS ������r�X(��Y,�������.d4MӴB�$�@� YUY+Ҫym9YS�v�Z�]���@�%���Ii�ʘI)% ��?RK�����E
- ^`�������������?����?���c�d �l�P(d� �l��PȒB![(d��,)�l��,ɒy�i$�Z �l�B
- �P�.d�`)RJ �B�dH6[(�@��$�l6�-��,����ͪO��y�@&!G! ����Bv�z,P�
-���I}t!K�Bv!K��_���B���������s�A����?��>�<|�p|��(-B���2�D'�bW0
-��A�k8 p
-,.�J���e�^a���2sXM���8�c%VV5z������J��+�K�U�+�W�e�X��1Vs�T�����x"����
-�&R.��R����9�U �Y ���o�w�:��T*��%Z��r����
-��P"3݌��Q���<��yo��h�A�o�S$j�n �s�s^羇���
- z�fn���8^�2:���e�X�h�(-�i�BR�9Ps
- ��;��T�:��8� ���3�P��5���g���SK��j��܀�S��8���V$���2VJ*�%Js�PBPg&�W
-
-S� �N>���5\
-|�Ml6r����o�M� .�JL����ys}��qα�9�F���q����f�탇c�N�⛈����&@s���t7~�69���h+Q
-JHx���{MXxp�9�������=�f��B�ҪY�VY��Yxp�����ӣGG�?�t�<� �
-��;�$�1
-�9_����9"��9���裏������_����������c>>x��|<�0��m>n��� �9 �C<䈈q�����������;?s>>��|�
-E�ʕ�
-�x��%�|
-���x��%@;
-�s�L#?I����-
-
-p�
-
-pa `�R�XZ\�*�S���L������ �*V!��#�2���
-�$
-Y5N��(��@)˪ .��+�RJ��\.QZ�Wi�Rz��&+ł05Z(d�w4�5�VM�]5M�(���f���D�|��x�_0x�,��?��U�n��l������>:|��h&����ZיI�z6��`mm����;q
-������n�z��X,@A�th�,�=�տ;z�g��&5
-rbE-�l2�:��$�����������3��?�������p>~�݇�9���or
-�3%�]��;./_��5-�� !�I6�%i]Od�4-�K?ebG<�9k�����:�W*�J���d+�L�R�,..f3��
-0�(��YL�/&
-0?�
-j��q���96��%�d�㸁|��D���8F�
-<��d"�n��d�<Dl1�<�q�1%Jh� W-�q�[��9?��B��#��͟��O��
-pb`>�%K�
-�-��,�)��$�]XX�4m�P,�����r�X,� ���������L�kg
-0A�+�Wf�WWWWW�2W�}������3
-�iqE� X��;�
-��s�濺z�ʢ��r�����ߦ��D���j�_�*�MS[�����]����������1���
-�f�u�
-�IV��T
-����
-
-�D�+�i$�eg�����R���ua"���x|�9o���}`m�#�b
-����s��s��q`n>!
-
-������@�����)�|��3��Fp�� !���U^
-���&�2�+)~������ ��x"��=Vf5�0��[~�+Q�-#����ls�os�����X!|��]��W�j����
-
-@v�
--����\�h� ��0�
-��R���N����������ۇ�>�o9|s?iKKW�T\�(PI�����bf1S��
-7O
-i1�Y�t�iZ��5�<���ݝ��pΜ1B�5B��/'�}hr̦�4����I�2�.��O��K�7v��X�{yf�T/�ծ*��v{}��{��$U�T1�&T1ƺ������z.�� �8�IM�a]'�\�:g���\NWո�sc�O~��Qa<��$I� % ������S՜������
-�Ĩ{kɘI�5�����̷� �BT
-�@��)��6䏵;�1Vs�`".=�'��l6��f~K�Z
-������(?S� �}�/
-o�,�B����z-C������
-ER(�2�;�b�XT� �T��r���-���}�?4)�;j5Jt��`��֠&eq��F��r�m9*��X��r��Ps�RJy O��)�Y�=��1�J�6�!�0U��"��_ Fu��f&�3�Lef�Rj�Ȗ���1�?
-H�bc7H�QQ�s�<�� ).<�s/��|6;��^
-B@���
-c�m�
-GTl�B
-{[� đ2��(�B����Fa2��Ţ�{�l�o���yd�U �0�Z�Qe̬2�5wh-�a��kFe�)uޗ �0�B*�R����m1�Ұ�L�7��8��� �����1 a��F BJ�Pj��C���r �|��/��!@0
-R�K���]���Ks�7��9�¸P�Ɠ�d6�.��'��`r�5��d�����,kooOkv:�t�>
- ��� @b���q(I�O���d6��g���r;�Iv �lZ�/M
-d��h�
-�ew~�ɴ�2��
-
-
-�
-u��<����� 󗌲x
-�����:+3�RC>IH BH�J��r�;d��p���&��~g�'���_ a��<0�(��!�<-aСs���^y���_���w�� � x
-
-b$
-c\��;. R�W��w����b&�x����B�Z�� �܈! �(��TKB�����< p{���;���� �[1 �R��j5c�V��*F��f�CU� ��:)�z�P��k�Cՠ�Bk��a��C��Ç��a���h�b�����}��uU�u�o�At�cuC���:c��z�P�F�a0��Fh�?��7�) �@`%w�Q0 ׆�xo0�u o
-
-a�/݂q�YC�Q�n����R����ެq.�cX�ܮ�7�&I��A�^}�����9 ���)�/�1��a��c&c%f��RZ��8%�mB��f�M�� !�|�=����(5��g��8r�Y5��_������y�a�f�X���>t�!N��F���;
-�a�6B(}
-���\��T�f��d6�,�
-Z�|�A��_���W/����EI���-$�����$��d*�,��
-^�@��X��)�7 @�\N�a����0.UF��x6�ϧ���ӛ
-�ò/��,J��`�
-���B����
-S���2�LJٰ��<b���q��-Zu����9m�5�uk
-��wpp`ɖ ���
-�e����՞x_��ހ�>����[�v�R�f{R���/JP��W_???��e ���#��$��(c��êU��n�5�F��(-BX��/D$$L��i��UJ)O�5J;�a�ʨ�8<�Ó��q�i��9�gJ���<�R �)��HH��,T3ͪi2J�/tJ)s�Ve�aO��PW�XX��
-��5���a /��Z�/�
-@�2��dY�i,�M
-\FE�J� ��v}��H�˗ϟ�|���[��VC�~�0ذ[c5�1�t�l����ѐ}��3�X�9C�H't8��Q"�Ɔ��9c]�j�:5����k�ᐱz�1֫;_|�lȘ���mBt��u��G�aT�Na���y�C ʆ�ukn��gG����û��
-<�wMy�Ľ��h0� .
-��p�m
-�B�/�
-�Ӟtw�.�i
-��˗�^��=;�M!x9t��;O������_���ߖ�
-a���IMfr�*c ���q{G5��T��� ��*A!�\��MS��S
-�o�Px1P��H�[� 
-�1��ʀ6��r
-
-��Eo5 �PJI�[;�
-� ������w`-��A��w��\�`N�R<R�G��l��/N����|F ��B���5
-
-X-��
-|U0(HB0�9P�\IǸ�s0!m�z��x:��g>C����c�"�v+D!$\jv���kZ6��<�we�}%
-
-
-��>�� �b�ʂ�(5c ƨ�0���<\6�eZ%�BJ��?���\��
-5)�O �t������h>�P��@n�?-��
-|
- �^�
-@�
-qI2���d:�4�� ���|H��(��s
-@Vn
-"�
-1i�
-p���N@A
-���mJH U���c��H2>Odz�bv
-Ĥ��F��h��g��bv<_����x4ϏO����|>�/���h:�/fNj���l>�G����|>��Lk�~�;�-N����|2����d4� �z݀z}r���ŋ���s��>��`i x[�{�V��mѕ_�d[����\��C�0)l��f���O����;�nG�Cg�XX5uX��0Yä�4>?l��&3�i�mV�����PjԨ�5`^��*_+�U�o���>�������@nPx}
-�0 �*
-�%
-J#E��>
-�2�KK��4`���^�^? (��3�V��f��u\�a�[��j�J�����~}y�l<�@�K!�� @��m<>���;cُ�Yk﷯��x
-��)� �#W
-�
-���� f��95�j���c����;���F����r��df�R��: Ӥ��rs��t���
-�[�/��x
-��r XX٩��<�� �v��V�`��4�? J��u�����J%�K�R.�HH�0!TW��j���
-��/�
-��V��
- ��z
-�J\7��K��=�3�������Fa�W�h<���|6Y�O'�����b�8^,N����b~<��̏���l�X��''��|>�����|~||<����'���|>;>9^�f��|:��&��l<9��`<8�^��8�3�
-�[~9X*����
-�B���aR˜
-�Dœ/
-�"���
-]@�G
-���
-�M
-��
-��`Lp{�WU���$` ���J^���løa��X����Ų �Y�R���s��J:ƸT���I�eʗ���߭
-!����:
-����M�_�W
-
- �����
-�x(� �0A:-���t�?�`���`
-�RX���� D�YD�b��
-�^���t
-���^�N� Ľ-~�ʵ?X>�A��5?���p���'� ��&��������.l��
-|���!( � D6܉`�!�����z�~0���d�<�
-`
-�B @�
-
-�
-�5
- �V1 F�D\����RB��\�7�G��t:��@&�
-@�
-����+��������y �������_N��S
-��@��qI�"A��z�A�?��ޣ͏
-����WώX���������qJ 5Wm�
-`�
-�Y|���=M�k�f�Y%#[6���Y�u
-`=PW9�
-z1�k* I���J�$�D��^�����3���U`
-ĂB �
-1�J��$E% c|�'(�� �$H�hL
-BI���
-�� �X4 QIHBI��$E�`P�������$I�Q)�$)(y�ł� �`0*a,*q;Ѐ�d@�E��X  �!"E��0.I��n������h<L�T
-
-�B���*�M�6c0��R1c0�FcQI�E��_I�$)*E��c��a*&B@�P����3b�X4&�b�XT��`,%�E�4�‘�1���������?Y�hL�$� ��`L��h,%���}#� ���%)����z�������5
-��x3
- ����~3�ɴw�Y�+�f��9�d9�d�ٌ,+rF��om��
-HQ)*�d�XH E(I17`T�x�O !�E�F
-&��{!�R��B���H?�qI�RP����v{�Ao��G�
-�
-SIa
-�R�T2%�N0�1!�R�b1ULA�b��һB��<�J&a�T*�S�N%�?4�J�8I��b1UHAcP�F%I��`@� ����)���8�-R)!��R)���$#�$X�w�n�����|��
-
-p
-���(�`*��c\(�X,��TJ
-H�8��|*�0� s)�1.�b�PT ��q (�X, ��'U q� H�`P�0�q�u�,p�� c���E�q��@��D����d�ju��0��W�m�w@D!t��m��<`YW
-�o/*�O��l4�Z��uC
-\��H����@&��qQ%)#H��������LI��B��S�b����=
-�ڵ4-���7
-
-��e?
-�bp�X��"&���zLn,��6)qc�T�1I����r�?*B��mR,
-�P�*%E� ���Z$8�L�w�0$�q��?��.��2)J��X�.R,A�wܫ�N0(B�d�ju��:�~�\
-�쫧C�qG�u���KF�R)]xP����\
-��rBJg�0�1��k�e]f2��!s�6��˦�wx�;��(U*�Z����z��]�K
-����
-
-
-D'�R>b�����MTF(��T}
-@<�!I7���k�n�^�U��R
-�#�!�4� ˮ��
-
-���������rF�4�Vso��lZ�@}U����������}���Ѭ|^���:�;-�(�U�rFV�?
-@F7 �W�!���������J%���릪�Urj.�W
-P�k���4�2���2-�U�Z���mJ�d�鄐2�01) ��\ަfդe��I���J�i�)5�ퟗM�V˄�2��d�n��뉝�i�2!�H�d��]-S�R�q8��e��ߖbR0U6))R.SR��� �\&�j��5'��/O9�ĨT�^�wo
-��X��pt]���-]��_����CC��z���ꖪ�76p<_
-��}Jr�Ω9�z��:�9}K��^��\��՜NJzNͩ���[:���z.���>Tu����ƺ��T�D�'��qB��#��9�s%o��l�7ԭ�4�ԭ��n��
-
-0ØP����n'.Ոq�U�)%�Iͪi
-|�x
-����}���ݷ탽L��[n��hYN
-R�Jd9�`SQڔ��B�$�u!
-a.�I� ��m����W
-�������P�w��z�o?
-�b��
-R���
-`�Vy��g5��X����k�����U
-�$G�Q��7B�IN� �� �By��mBUR�U:�%�nnQB� �O>��]$�2!E�D����t��r�LHy[?$�\&�m�].B�!*��#P
-
-vS��R����� �͝J�����FDr��I0Ts8�����
-7�
-��2����; �^آ:����}������DH�0���6EB��lH����2-���� !��ER$4Gȇ9B�}—tR.S��L!D�uJ(�d��i�L�d��y�`�D0�8��$I��I��ɰLLB(!JHM7�3��f�4�F�!�ܭ�4�A�p���$% t Ώo1� �KU
-"_�
-�`�
-�z�WI†$-{7!��@ ��p �j�y�e۝N+kiV��4-{��=�n5-�̺� ���������q
-A���kx�vl�|3�����V
-Z�E�� ܘ����6�l�T
-�mDa
-B(IB
-@�ǹ���
-�
-
-�y�h�Rv��ִVǶ;���V^�,��<�5M�p��w���@( @:����=�=��[r���� �:�o �4'@(,
-�e+��?n'��
-
-
-��U�-����zE�{
-T2�J��m�a�&qC)
-!.��",�"�ڿX��B��?ĸ� �2)��1�m���L��K�X.����I��$IA� �H��a��Rz�X� �4)�l�1J��x\�b�T*�t��UX� F��d<�c�b�k
-�F�#��Z���3Y�Pj�� F)��$š�åR �R�����x<��'��t<�������[������6�;��
-V����!�
-�0�1&LHcյMI
-J&�0�a
-' �b�P�E���$) ��5#�&��2!�����T�f��١
-`C�� ��"�x<��
-�T�q&��?N%S�=T`�JbR(`�!��T���Q!L%a�U�L�
-0�|�gb�� cL!�4M�H�������x
-EPEJs=
-
-U�!L�$N� I��T�h4*��$m@a &S0S��`��rw��$I�B a�b��a b�%S|G�P��X,�Y
-p�
-��\_�'
-���%�r9�˳���V�������^BʕJ_�U�U��2� !
-���߶m�����d�e[��޲
-���u��~���%
-�@hc�
-a,%%�� �� H���zC� 0��xrh����8��cL��!�� �J�^��kuV���r�+�b>K0?
-X��p5
-��Ӏ���w�j�ų�i�ڏ�� ģ
-"@k�?� ����+S�p( ��*Ho;��[
-0�` $w÷ �]���7 ������Q1NBL0&�)5�F��4���$ ��dTj�Vc�n�[�ֻ�z���������[W
- �@E��`��D�k ��
-�9���(���
-
-��<���T՟x�*�M
-��~Y��@p�%��/ ��_ ���յ?M�`@♂O�� Nwvvc,�H$r�C�R�U��n�_�n����F��`0�;�\
-�("o�H Oh��D<
-
-�lr;�
-!�M�3_��������=���n}���o^�1����r��+w�F�����QI��}@��x����� 9
-�P�
- B� �p�%�j3�g ƫ
-��U6n��
-�(�P
-���.z ���@0 ��O=`��`  ���� ���` ���{������`0�E��0�L�RS~�MVe�l4B�1j�Z��z�^�?F��`<�Ǔ�ty��j�
-
-��@g,3�@p� ϿbG_�^O�Y���v����t�����p8��N���D|3
-%�X�^��\2�J&��L&��L
-��J�V(��ЊaPZ��^���Z���pJ+�5h͈F⌊��R�+Z��Ԡ�`۰���������������<3 ��o���5@>_�J���x�8`������ �J]�~=1��g�h��JŠF�0*��Ш�^(ֵ�n+����N_O�����hA���ۋJ�@?
-#��S���+�eb��(����SiE�rt��^J.�TE�,4�PH)E�k�V4M+hZ"�N��(�Ŕ���i��
-%���+
-
-iAT��#���c��w�����X�����/p"2
- 1�������/g����
-```2
-
-` �6�����9 Z�#Zm�f��!��&c
-ժe��4L�~�g #��nJ�nT�^Z
-��
-k�R�t�^�^�^I��z�T*�B�P�W(��J���r���۷ �|>�_/���z��/
-�B>_(�B!_����º�^(
-�w���� �B�N�0=�|A/�K����|>_�w��_��biM/
-�u�(ȿ����
-��z�T*���QE�uj����A�xxx||rr2:�G�S��pE �~��2��� ��v�x
- *�p���3&�G
-۱��؋ `&�*��2.l ���z��
-��dr�R\]��w��X�[�7�T���y��k?���V���J�?�G�''����������t|z~6����<����O�NOOç��|<��Fgg��ӳ��������˗ggg�/������g�g�ӳ������x<��������Qc��Zmk�D5�����x�z:���
-@?J�F�V�"@����#`��X�L�:c� ��(ʺV1j��l��?� ���
-'���ߴ���7��������>������� �n�ڭV���bW]Y�2��b�gϞ=m���6��"�ѕM�|�3��/~�1�dR�/����w�����E���g
-�4����u��!nL��-�e
-� #A/
-�4Ln������(W�� �I3|O�%@{W]Y��"b
-
-�BI�P�R�K��^*��R���� �B!���J}����ϔ��+��VB���ۋ����½RI�z%��҇�����z��/�+���ҽR)*۬��/I���d4�F�ӗ��7
-�^ϲv���1c���?|����'�}i=�5S�eM�
-�i�� ]��,��cfY�i2�v�1Ƭދ�j��10��_���iY���u
-0��q�ߓ
-C�2�94eR�Lj�
-��
-���˼x
-~����a1}[Q� ںNa��� �B+z�V���p��m�ʺ�W�
-���i��Wt�Bi�s8<��j�Ri�����������+�sP�M��~g?ZA�j
-�\�x2�����ɤ������
-E��������0:�������~7g�3L��o��o�6�Y\.kʵXZI�����t��i�AAo0Ơu�� �H�u�*�Y�P��=ՕE%�Nߊ-,,\�5��x�MM���J:���.�x�����4Y�c3R�)��/{���;�d;��sMQ����z��5�R����E-6
-ZE������������P�s�e��J����$��V���n�E�Ὂ��?����V[���f���ō�ӟ�l����
-`�+�.����&�����
-
-Q�e��,*JZI��^� GYZҔemIQn��m!����1 ��1V7M�,�4� `�X�_��:���� (/)�f8�
-��2Ӿ�r��
- �t^����W�_��j��� �:�>8����gŦ�7��s'�k�X�3�nݼ%)6������k7c QLw,�[��jڲ��0�t:}3�ܼ����.���bj� �3M�|�1Pg���2f �ˊ��QZ��
-�B���Jz塞7>�u�Rٮ��*zE/��C]/�t]/���t]�+�?��%��2�]��J��X2J��W*u]������
-�e�z*�X*�zE׍��W �0*�z%z����늢h�aԶ��px0<9�Nƣ����������
-J!���(�����,*�?Vo..*������R鴲�|]I���^H�o*WV�W��͛i%���� �B�c� �F��4X���=t X#� ss�
-�V �G�� z�_A���`
-J:�1Ƃ`-�Ƃcl��z �:� �BAQ*4d
-�.��&�#ڶ�:���W�y��j
-
-_�3 ~
-�VhР�N�̴���J
-���
-u0�Ao��&c���=�Q������
-��V���
-=� M�N�
-\/��t�֭��t$6=z�Y���5
- �
-�����9]����
-TBf�&�&-�1 z]Q5eYQn�� �صX��h4��X�� ~���Ư�{�{q��hG���q���0�,x�/�/���� :���e�A�1��f,��3M����2�ހY,8j�^��1�v~�`�1�^ �/ٯc�^�C�6PJum�0X/п�GG����|0�/z���, �ںV�F�ƶ����������h4>;;;?�O�����
-
-�Y2�&�K&
-� (\�甆� �W��1++
-)@,�h4&#�5�4�O,��q�� �lB��E5�O(�U
-̄@gV�gY�%u}V��~E�{�&P�h���
-G��ڏ�/�@�E[ �
-�c�ȭ`�YgF`Y�s�f� E$j�)ʭ��M
-U`%R�� ˲��a`�����@�
-0
-����Vw�sn�*qT9QW�Oq|�s�&ȹ����>�]t]9����XD!9>�z�������@tl.P�~}!8��l�'��#�:"#f
-T�� �uM�u
-��zA)h�BA���,���tJ&}^��Қ�(�픾�(_��1��#d��=<�D�i2f���ry�\��i�Y�׳>a�na
-A
-�菶�(�����(�F)���&MJ�1�&c��i����3�xd~��vs%��]�F
-� ��0�Kf2��\ �"�x�>:
-`ۈ��@$�
-\����2B�+�c�s����w��c��
-
-� �p�Q=D��p]�""�\��8�<����h#"�.f9�@��I�(2��XpD���E.��8�WJ
-�T[�4��?�T��nj�f�B�p+}3 �b `�ViY��hjsyyI�^�� �0��P0{���Yi
-�݋>��8�͹m������}�A�蠇����j�����W>G�F!<[���_q�;K�����O�G9A�r�6�]nۜ�9�]T���̫
-DDn��� r�(�s�#�Y� !��E$�Nڈ袯�@�(<"\���
-`���n)��+a��b�榦�2���ܚr��r%
-����z���t=_*
-�|鞮��J�R�^�P����z�"���K�|��녂~���J���������K�
-�~�T�W(����%�TW����_\L_O�Һ�P/����R�r�d+%��=]/�u��$:��P �[@�i��n7WZ�l&�6��www�
-�h�3}�I @P�*�.��Q�@mBᜐ����Ol�'�ۜ��&ܖ�a�mQ%��Q�s�����@��cs�B���mN�>Q��Y�m�ۮ�fI6K8��1���F�FU�Dꇢ���/�
-��W
-p� ����.r�t��\��DUm���#��}�#��S�mB'hb�v����‘sN���Uns���Ml���&�‰�UU%��J�r� � ��6�9b����mr����ܱ�;��3�\Qb۶:_
- 1�
-�̗
-�$�
-P��e2V�`k�`��QJ��&��7)�Ԥ�D��7EI�c�tl��%�N��Tp��%UÛ�����k׮-��i2f1`f�QӲ,s'\�&�)gz�V�tF�ժ����L�L�gF( �X`�l���2)�Z�2
-� �AD.��,'D%H���Q8��r���S�m�${�;���� �s }�;�p�s���A� D�C�F]G�ݮ/<�؞��}��z�9�H<�!zA��\U����!
-��@�Fb_Q�;�F`���g@K�Ҋ�k���P�RVX��]�~u��M#�n�5�O���k~@i��2�e]nSn)�r�f:��K_JIC�Z�����GStsY��y���µ�˲�(�7
-@�^g�eY̲��@�bV���{
-
-g�X2�L%�q�̥��\l��*@"��q?��?
-��mns$�'t8��E}�ue
-T}Wꂶ���"r���#G�l�q<�u=�E��Q؞�lD�� A���
-�8[���m�`�W3
-ㅥ$��x�P��C9�W1*������ �W*鴐J-*�k��`�a ��P���h P���W����N+�����/�J���֍�a�^*�%��a�A+�����:5t}]�� ����J��
-��^z�W*�J8R�^���nT*�^z�JE��ʷ
-��gḯ�urmmU6�T��>Ǭ����mN���MԨ�� �:��>�9!�h�-Pt�����"AϗnD�k;���s$ܓm��=`#��r�6r[ r�������."G����]��=���
-���Ƕ-l;[�̶�F�ۈhBP w����qW :"�6�ۄ�<�m[%�����GD.l(�/$=��B؈6�]�q�G�=�z��GG���9G��z?�9�ȳ�m��sD��F�����>:�Ė�`D�\t�б�C
-�늒/T�4 ]�ԨT�0%��+���������ۅBi��^X_/��u��
-�u��n/*����t����߻:X��5]�
-��E���t�z*Ċ|>�H4J��V�3"�^7M`y��hʴR��=V��:
-z�E��T�4����)��=����&��`�
- r����9�(L∈6��Yas��%������."�� A��U�B�H�Q���=�p.Y@��{�s��9���m��@U��Bݱ��[48��
-� R�l@�*)J�2̪0=�*�@X����TtJa�
-�Π
-A�@i��
-vh
-�O�}2!
-�� ���1 �=�Ш
-�h �e10���t0�K� ���4e1S(
-��9����,�<�&Y���
-�PUU%*����ӷʔj�0`L�Kn\��w�s�J)hi�O
-D}�}W��p�&Y���9����]�h�]���@��U}�+|W����]D�V�hs�*��gk#�
-!2&жe���r��]�w��m�3�}_���$�"r�d9'���`�~�sѷ q]��?�C�A���
-�jT[T�pj���@[�`I�u��t����5��\֖n�L�oI�PX
-
-���v=Nl��r�$�r?���뻾@��@����q�D%Q�pi쳑�ms����@ヘ.}�#>r��W�]�}����BG�>�̞�@���g�(8G���v�46�ė-��o'
-PjhiE�
-�.ommU�d�P.k����L�o�_�%��X#|� �E!��:걁R`[��oZ��~��B���
-��#v���r�u=��E�j����Tſr]]!��
-����\�{(=BTO�G�!���u=�(���u<�{��/Px�/��G��W�u�z·=�;�@�������gˮ��r�":�C>�B�,�T
-�F��h@ctX�:���� �������4,�}b1fY�y`���hY�������S>a&{4��%f@��õ_����`�&
-B���mĮCD�gDEb����z��dz����#�Dx.
-D��(:*��s���|�y>�8��"G�#�mt}�wD]Dݢk#
-��(���E�F���yaZ���/Ǎ�6w\�_�N��`R
-~X����Q
-.D��������U �,
-��NƳ�E
-�FQ�ꡍr� (<��GOŮo���Ñ��F�T_*x���%���c��s��n��6�Om�6G��{�w�j�6�"��Ll�?u�}B�L
-y�V������_��:
-�ٔ`4(����BxB��U�SQH���Б��J������
-���� Q��BP��q�N����;�#f} ���:6���"�b"p�%�S��9�2L�x}������ �pD�r_2{�g<�%�z��o[�k�h;��!(����@B�1窃6qm�?�³DJ!��U%!�/
-�fEW������#r�Ue� z��{j����Ém�Hl����6O�����=�6w
-�qԘ�(���sk���ҳL�����M��G `
-p��� �
-QȁE$�cV� p��DH8'a�q�#G+t�L
-�
-�7�vX=�0�'�'3@��B�X03re6�^���k��׿D��
-Ja,��_�0z����Z3����_}�L���`��:����˿��Y�L�R�D<~7�L�2q
-�f��Fg Dն�(�����<L�����kK��>���Ķ��|�sdl��9G��O̹=� !]�;�;G�9��<��{=_���ز���aO��؎���q�OA‰g;��~�E����\�?�B.(�oۂs�#��o���T9�!@����]ߕA\j6眐�Y�>��L�
-TQh!�׷���離TnT�����t��-E��\�
-�kJ�^�-\���N �YV���|ѳ¯_�b�YV0����}`�;�G����Am� z����䃳`֡J�!�ƌ� mP;
-���YV����Ѓ/��=k��h�z0`?��k�� ���|�23���5���E��s�\��}5x|��7��€��b
-^ ,�c�zG������}��}���~?��}VgAP�:���k���`0��Y,��׃ޯ�?��y�����ϧ�F<����T2 o}*�J&S�ܴ[p�*��a�
-f
-��'���pVӔ
-���i<|�P����P7�����HH���D.O�b�XR���r��R�+`�b8A�y!p��"�
-=�B G�=b�6��F�g�m�Q�F�S�X��m��8����r��sGBS��|����9�m�H��:2~�p�dm��%�!A��]� �>w}=�#'�A��F���������� ����
-�(��c�v!mn&�@��j6����'
-��0�h�`����� �4����QE����1l�`��c�`�ʤ���m�ZUI/kZ��X�C��2���EI+��B�֭[7o޺uK�e
-!?�!������@b䪣:��F������ ��SR�0��*`� D�#���q��h ��訏].\]�Lj�'a@:�m�AN�ߟU
-�R�p�P(��������B�����TjQ��ȿ��Z\L-...��_�~���T"v�ɿ+n�^L-�R��ׯ'.��� �BˬgY�������Y,��,s����?�� E6%�a{Аܝ�
-��M�
-4��
-W��{�8�*i�H��pι��6� ��O?�?%�g�>�6b��Bpz|½� �qlbg ��?k��ƕe��`D]*W1�1�×F ���"��@dD�Ae
-N3G���j>�<�I��2�t��>�=~�o8LY�*��
-%]�>+��.�jZ����g|'�eW�L�a;,�)�8+��{��|_w|��-�ӱ��2��ׅ��顅���Δ��R��KV�nY
-d'���v3����nH�˷����,��ݎ��gup�������B � !�)!LӅh�D*Ȟ(�(`�)S���9o�
-��1���+���|��U� 5% 1���$�U�d
-�h�QJH�$��a���Q���?��}��䣏ז
-����
-+� `hݛ)8��}B9&�R~���%�D1�?���  �e�) �%u�*��L ~�Cq�+~��ǟ|��G}�w�|���������Ț��
-z2 }E$� *�RU�u��y�b��p#I
-`[
-�������K)��q0:w')�� �T�hߪu�$�4�믥)����/�L��p4D�Q�)�D��^i�B�X����<��ϝt)�⽬�O>��G}����ǗO��
-+���9�~��eY������zL"M��:��$%���%$Y�68:8��d���5�$
-a� J)ɳ�|�xQ��!P�VM��D��/����D��[����&XP�_�P�ߗ_��kYF{��$P-�_7��G}���hy�� ��q^ ��߽�8
-r��{6��f��*�l���5�gY��V��6H�_�)��Y�Ϭ�)WZݲf$���=�J��(Ng�U� ����|I��l���14��0�ś�g�
-�g:��Ҿ5#V�sY�~���*���<��f��VJ����������Hh���ʌ���GH�*2D��6ѱ��hr<¾nZ��n�8
-� �{��y;;W� �o'��������ս��������}�����_ԏ�Q�ԯޫ�� ��V,����o�ގ��w޿��>�䓏�h|��4X�����ޟ�c
-ܱV3��d~��ie��:�[��s_���*�r[>tZ�����4
-J�h���B�.:N(L�9�^�G*��")��Ib�"���;
-����
-=S����/T�Ph?�Ju�T-����"Wy����,/����S��Y�����3?���V��G i>� @��8�_[`2DCd���$�A?���??1��>a�1
-!HQ�qȸKa�� 
-))J0�;���1 Da�Rʣ1�D�4'剡~�m���g��"IBJ3.
-q� =�R��q}�%
-s��;RJ���KYJ9�僊�B'A�!$
-HJ!�;-
-��m!�FRRY~]�R�I���}J�.ΐ@bɼ��&�R��$�B�(�TJ��i "���4}�pQ�RJ����%�ބUN}����
-�š���:�������|���a�U�Nϭ[��~����<��>*�h�wP�XQ;�6a�9ۃ�Hi���A���Hb%8��э�$(
-� ��v �C]�_c<��v�ɘ㬬4�-�
-�}�T���P;�J]ֵz��|_�[�β]�}�$�ZY��T��ߎ��
-
-�H&$�H ���Q�(@�����\
-����d�Y�tQ;��n�Z����Ɓ�Y6UE��*W�t��U�Zf��m��5=�d���U�x��f
-��٣Û�i0Hn� 1�8�nHi4� �������d��+M����V���J�����&Ӆ�gZ��Ȧy��N��.Tv���<ϧ�é��~��z6�+�Bg����z�~��s�ۑ
-n&IIr�]B�sA�J��}F. �� a ��/K�Ө�h�q�5CL�*A��Yk�J�$�Q��"BIB�4�T�@�I��Bk~�E�OK���?y�@b�K����b�W �$��zq�ؒ$Q�F�bq'�(H�kR��}p�r�1�qc�c�c�_[
- �׷����N��^
-a?�!�ͳ@�#� ���|�m3��6g�q����
-�W�M���6�E
-r67�cEAB�Ov�R�/ŗBHa�0�q��,$�����Hc�� �8Jl��3�� ��Y���[��E�_
-�6�`�'I�e6�;��:�������y�J������2=��绶��
-���.2?S��F��BO3�E6Ѷ��79U���2��>U�:92T��?�\��UDD�$c$U$�1xPI�"�k��&�M������M�F�SJ8@Q
-"IR �X�|�q �R/"���K!��
-$�
-DiRяx��m�� I��cI��� @���y�
-���R,�]�d�Џ�3�{�T؏""cP�����
-�����!�e��@c8.������\n�|w����P�]�W�P����[Je��2_���y�s��T����D��l6�T� K�` �:��R��� �H ���(�<%E}�
-�B�i��;��� VW���d
-�(0H������G�;�� F�/h��9�uJ"�o+o�b}�� �wJ͓�w���TXųm6H#��l�N���X���2b�aJ�]S��.�m�cB��@L=��ŝEJU4\.=�R_����ۇHQ�:� �1��D�)�i��=s9�βp=��K���_ ������rk�}�3��Ync3�V��Lߞ��3�R*�fy�ua�}�� 5ӷu��<SY'��-���Z
-Bo�������aݜ?/�
-J��u�c<��p_V�!��]q�.���C0R� 1@D7�����H��TΓD�q����������/[����Jլu��Q�����6�P�LO�RyњE�gKX����18N��K!��e��H�|NUV-2&Ky$��
-A�Se�ݻ�_��b������)
-B+٭����Vb!P�)��
-f�
-��<�T ��$]D�)J1$��!#�r���8�a�(�H����;�Ȥ)�z�z�i�C����^Ʋ��4�z��N�_���i �v�p���&���n����۾�nZIP���U�v=̊Ÿ拈O��S]̦ڦi(���7�i��Z)_k_e���+;?T~�t�c׀��~!HVQ��3�?�k"`�L�ܤG�}�ڊ{M��u���4�
-c�v���
-�bh��d2��@�"�Nj�u��
-q4�l��
-�""wV����HɌc��R� ��.(�_~��e��8W�WJ. �2���\����YO�?eY��l��J��|�7C�1��g)��R:�kw� |:�j
-�|
-p���2�+�?mp�n*��;j6ѓ�bR'�.&��o�|_���4�٬���7:ӳB+�Z�k��gY�T���lc5<�JND" ��h����^��Տ1$�s�Ό$�(����8���!��|kK �� �(
-��`oHD湩�]�q���&�~J$�i�|��
-
-Y��|�W��X[�<�U>�3?�k���Zi�f����~��Kn{�w� �v� �GQ/���%
-v<ϋ�(���GQ�EQt�E��=�mg��c[�֖w�u�5�Cj �kGĞ籭-�W��)�P��H\
-дM��B�����y
-0H�3��P4���l<2B��������?$�<�렮m��@!)x+��旻��׷r��Z)e�E3_Y��S�3�T"p��k��r�a'"�yp� ��j���X�44�%}��
-_-��-��<�y���2�\���O��=�3�������1
- �͊��/��6�/�Ί��]t�Pe�?�ꢘ(���2���<�����dZ����o��3��oa��ȶ���Y 9�
-��Ji}�9s��CD4W �~5"S�
-�`'�r]8�5��fc
-���k�1���׼k�y[����h4x��y���p���kl���K�~���5���k3��:�8D��d,�֖m
-��u�+Wl�V^�R@ֺ��Z�DMt�ɲ�>,&�ȷfw��Y�l��Z�j�g�h)�e�_^���ܟ� 0� �� ؃i�}�u����k�3���s@J�.%^�������B���0f?��Ÿ>�v �Ā� +�""ɣ�3DH�B�8����$x�C
-��-Y�A�V w"$C�7\�A���W*�b�…gM�Bʶ[�B~E����k���"lns�k��1�(��B�c��1@ ��fgT/$v9�xs{�a������M�l6C�����Y�ey��T�t���;9��Ĵ%�֖�� �[j
-
-R:(��C�!���ק��nBv
-L�D)��HJY�h��I���0���k�1g)^i�O�<����h\�͘�����5�/���
-:�5w���5?�̳��<�<��1g�q\��d
-J��˔��SS
-��]ֵ��Y�<�{�ί�a�Z�p�e �m��{ �cί�0
-��s��("�c��yEQ��� �C
-��-k���?�=)&�Bk�_�Z�Y��:��}u�iߟJ��ٮ��Q������ϐ1��5
-�
-Ad�y�
-!��D$�u��P�J)�8g�
-J�C�
-�pay�$����&�(��� �T �x�l𬪆1�n�Õ��@u��yث�rù �����}�
-94�1�͍;�8F��O.E�瑭o8ζ����V-
-
-q{\
-!H�i�
-!�H����嘄��;6� �|D)�!T^b�>�a�I�@�$5|���S��M>;7L��(�� I��i/&� Zwp�{Dfo��X��b��R@~�s��K
-���8|�� ���5���2�
-" 0�0L�%�x��m�� \��vI
-�=� 䜳����
-�8�h���]�}ܷl���J�d��>
-A��Ȍ�d/��$Ipt
-�s,/�-���a-�A ����q��XmڊS"�!���
-��������4t֛�ܱi����
- K�0��6k���zse��h8 ���K�����]j
-
-��& }%�јmŅd ��T�9�
-Y�������񻽨2� ������'�O�C����ň1�F��A�
-����zAxA�x3I�!�#�(0$R$����1@�)�h2n�A���=*�v�q� �"E$h'
-"�$����D��H)0���nƈB�B���p��EI�
-D�q�|cʼn���W�b@ƶ�v�B��
-!1�q+���
-a��4@$�E��!�͆
-k:�|g�H��DB��<
-QG��B�㽓 2�b��ѐ����K�v�#腜Y��� �8��w�/���N�& 3�y��͛�?�x8��w�������g�^������?�y����7o߼�����?�z|p��΃��=�w�����o޼}��[����o~��o��Ϸo߼z����/���K�-�D���>|����gO�<y��ՋW�^�~����g�^�~����?�z�����^/����W�^�x����gO?|�����!@���1���i�P� �{����;��Պ�>`
-/��|���������a�p���:���� ��%�;G{8d%A7*��`��.��'���\�J������L[��������y��C'���)��s��+0����N8�Ѓ<GT
-�<�
-������/�M�ӮTh��C
-t�����n3F��!c�1��V��P"�L��6��3�fm�5i+
-x�go�I��1D���o>جA�A�J�6w
-����pT>?v^]��6%���lg��B�*�[c�=U$�.
-��٦m�n�@%
-��?@�N
-�ޓ,g���CE��.
-�P�"�ؕ�:�,��\��a�>�t
-�"�=����`�I�
-�
-Ң���4Me��,U�G�:��8����fo�(\�g��h8�կX�괮F�;�@�JY`a1��,����Ӳ,f1�l��b;�RJ�A
-s���Y� �f�5e�s���6��b��o�H�2���I8�׊7�%�T'�B+����F(�t����
-@��-�Q��6Ww���
-�?� x��w�?�0�{��덦�0��ёn�M"e"�,��M�M.[�Vw2M��n�Nd^��T��{� [-�;���h貣����Y�&Y�6˲m&�4�I�.�卆��h赦q��i���L�$��8MSǛ͌h�9<��r>��e��p8$:��z���l��(�7q,cod�H���?��$Qq@�$i*�L�5�X&q,�x]�Lg�Q�m�z�^ϵ�U�� �\
-W��l40�ѻ*�Ė�7)k@�o���8G��2e�*�� |���
-�D` �v�4m`��
-q��m�&�M[gd���������?t:���׫��G��͚�F�Z�9S(�Nz`C�]՟S���'��}���#�R����N�ʀ��B��x>�l�<���.��J��
-�p�ZF�hF���ޯ��M�H�:g�L�Z&�V�� ���h�+V�,ɒ$˒DQ��$I��h��9��d*S��
-xd��8��&�L����ќ�*���eGQE�����j���r��h�I����ꗂ�L*FS�d*�HR��$QB)�f� ��j9�M�C�u�!����2���8@�qs\�
-ͩ�6p����@�宄���Lp<��(��'�-
-�@�^?ӫ��&W���
-0��$��Y�(�`�d*UQ�D��b'��e��2^o6qEQ���fî�2B��:c��
-��+���������<��a,�Ó�kϹ(�gYX4���}�1�3
-�J
-����ᛓ�j'����?~���q_�{��y��2���(Z�(9*���h�U;KR�([�4�歺ӝL���������$Ɋ;�2�a�����d2t[G�8M�Tx�,�2�e2M�TF�;�&s�TL�Lv G��$��x��F��B� ��:�e�&I�XV�ղ��r���/�
-)�,Q�m�$۬p&�i����!�*�� �g���8z�^��� 4 e
-4ԸQnW��g�BJ��t�
-���
-�0R��p.�h>�Lg3���u���]�a� �0��h��0ZG��r�Z.���hEaь �U�&\���l6�t�u��:�Fr�(�H��Ni�jyݑ�.��e���0�c)U�@���?˲,٦�,͒,�UR�&�L�X�q�Xq���n�iQjY<W�j�-8��
-�8@� |�,x#E`0�8(
->�@
-p
-�� ���y.s�R�뺎��p8���y�\�+��y�����q]p\�W��u��t��G�j���r6u��빮�2�i�-�9��,�t]�e�>��LƩT�D':mu���t�Z��u�
-R��Y��4��X&��\GQF��t��rZu�
-T��Y ��G��Ɇ?8��X�����k�,@,~?�� }���Pt2�X�M�%�@#_
-0~������@
-���\a�s�N�nw:�͖�0��)�|~A���mN>J��*�m��i�m����t e�D��p�\.����kQjY�G�P�����
- t��p�V�mJ��,�<zqqqa*
-py
-���F�F��h$ɇB
-��C� G�~����������Z���}�ߌ=D��bx�W�\J���]��f/8� b��|��Z������!�}���x>v����
-���+���U>���f�5�6�K��� 8_]��W���b����9�#���G�y�#�xb]urR��}�wx�N�
-.n�o.̋�<�6����
-W�r��*��H�mě�:�2�Q���M�^/U���z�ެW��f���8�כ����j�n�U�?ZE�p���ܬ���ro6Q���yE�<�Va�Z.g��|:M�]V�2IS��=GGG�s���t6��(��%�q�2I�m�>T�>�f�3�A(�L%I*�4M�T�r����r9W#�uB
-O��x��a`��8��8���9�c�<��B�
-��&�����U�,����L)m9����!*�x���<��� �g
-�
-�<O d-���q�+<�qȞ��Ï�Jb��%ʻ��
-�8�֛u����7I������ĊPEa��(����|6�ͦ�n˚$2Q�4M��:m90��f�e���:��Ld"�Ja�����Vu�,ݦ�mR� �$Md^�r��֫p5������q]@�j�����z��������q��JB�z���<�����"���^�q<��L��
-Wa���Mś�Y����)z�ěu��u�@A�4V��$')��XFk�̵�T�-�8�U��u��o��Q��7�x*v�l>��<w'��O����i�۝N���r�c�q�$�:γ4M��ܦI�m�4M�[��7���i"�L���
- �U8�M'C׵ieqK ��N�}��a}a ��6������G�N>��n2���q��ϱ�T��ʾ�w
-C�d��#����G����o�S���&kvخ4z����
-
-��A�� ʀQ�xO�
-���h�N�X.c �����±�_��#���D�x�>
-��T�XmS�m�o�ܮJ�$%��Q�z�/PzbI�d�Ru�'I"�L*P�4Mԗ�M.��Mo��:Z�a8��&�I���r� W+B�z�q���t>_mb5(7JWLɍ$y0M�o�v@��#B2I�4��Rq��0��&��q~Řrc��h8�q�8�V1��Q�s��6Y�G��[�QGu�����=:��Z;�/������q+�{���9��Ul�<�m3�,JI�����TX��
-R��$�HY�b)���֛u���d�u�p��B�V��Nf��JMI'ʂ\�*&Y*��m�n��v��'��,�2�6M2%
-���R&2�ěu�
-���=�i�V+�v,p
-pa�+H�P�痗��}
-7�$QD�TfJ�#M�c�n`��oI�d��(\�4U�^I��2��q����z����Ct]���n��Ro���d9_��0�b����3�
-͏$Mӷ��e�R.�ҜO� ��8�!7�(
-W��h�+�U?��r�y�<
-�������I�������pw���
-�uo���e��2Sv��J�/�Y'i*e��q,�T�7�;),�B�J<MR���*��4�I&3� 7�N�`�h�Q��p9��g�Qw8�v��H���L��0��(V�y�!Q��I�m��m�m�4����2 �Rn�q�7�p>�O'��c��u�,D{|��CD����kxs�� �=��o��!�B��x �=\\ _� ���^�X,�� ��B���O��~J~t����@"_y�_��B �jqǟ
-�0��M���8�ű:��$7�H�8��*��
-嶾�����M
-9`��M'3��o3��jp'��@U���)I�L�8��x�j��ͦ��d؝�&� 9:����d:��;�c)�C"�_�J�Ͷ�6ɲ�:�TU�T����L��F���r5�NFC�Y�����V�g���^�V �Z��U�gU�p��ɳg�j�zf=ӫժqV�V���j���a��I��>㬪�~V� ���ꓳj�Z՟�Uu�Я��=9;3�'���q��^�Z�ΞT����nD-�W����t�������Ç��z�����D�U��W���=9s�8�z�<���j��gF�Z�儞�������OlT�Uݨ�U]?{��y����ceztxx�^���?�
-��ӿf�j�Z�*�4k5Ӽ0�����i�����i���� f\\\���E���4��K����ļ|}��v
- fo !~�������>zO�_(�y������1p� ?
-|���g��X�X�#��p!Z`��?�)��DZ�]b \c|�
-<�Eu�xcx �;��1X�!������@\��i �7B\�K��c�-g)(�2zD(k0��8�T*�J�L�X�Bm
-
-
-�k�_|�E������wk
-j5���V3�kf��\=ڬ)��0/j����~�<9999�.��b�W���~
-�h��2��=�d"�͙��s��4MҴ ��LTa �W!�j�;��,O��4M�[�M��N�L*���X����|8_.���h8��dBiݢ�7���V\�G�P�I�S�dY�K���uA�'[e�&I�ĉ��(�VJ����S˶�ݰ��(�it 0t
-�4H�R)
-j���s�v�������K��>ztj�f������*�����^;�����������i��
-v|���w��*6x�#�n��h�~��w;x�������ɩZ�V;���D�NM���_�͓�SE8<������jf-�%Hzrj��5�4k���f��yrr�i�?�����ח�/__V*%�N
-p�p
-<=������ӓZ�����~�<>>̓��Z�V;������������y�f��?:>=5��ɧǟ���o////{��Kz/
-���l6�î��v�]Ji���Di�)cp�TTe%��ɷJ4SL�,K�m�!L�$��C)7�:ڬ�p9����Ӣ���ܑ����b
-�e���|<�����
-
-�h��z���w[T����Enī�;�9p���|��3�fq]�?!'#�k��8>`�..
-��|q��}��jZn������
-
-^M�-��C�Ժ��x��t�
-�hob��|aAGP���,K�J#4�fY�n��2
-I�8��f��r6�<���A m�Sl# t�P�a�i��
-D��(IU$H�$�F��zEa���D��PJ)BDD|)���D�&
-PD
-��
-aebj7Y�Y~��� �<�(W�D#BHI�h�BK��h�{�4m�ֶ�H�h�L5�V.W*�T��@�Ѧ�
-��5�ux�Dh�rP!D��
-!��m��-
-%��ˤ�
-P�U(R�
-po �{%y��E؝ΗQ��&Ie*e���L�\V��֥�ѝS��*ѝ��B�j��v�M�<�����ަ9Y_��Uq�x����c�8O R)���E� q2�ϗ��f�Y�2ڬU/ ˲���eY�M��j�mw&Ai��q��j�Qn֫�:
-�����[��:_]]������M�/~>.��#���L�iq}}%����= 1��ٛ��Mp�&�駅@ ~'D��B�c!�� ���?���ĸ��?]�x-�V�B "��fq��� @�w��B����M�x���?���J���{{{�r�md �m�l���7�^�^�x ��
-��k��� �"��7����]����,?�����ij�x#����o��7��� ����l�h�F
-�4�hځv���m�ឦ��5M{�=����ޙ�����}M���=��T*�J�ҁV*�H�T*�K5M+BJ����i%B4�P+R�4��H4R.�J�q�D4�����o�����}M����RI�>���R�h�R�h�A�DJ%�@��ȁ�i������
-)�RS#��
-��Ѡ���$�M�h6h��x����P���h6� > �l6)��Jʨ�l�_`6k�F�I)k4�NJ�4��v`��D(!��f)m���BͦMi�RJ+�n7�/5ڬ�l�Ձ�&���U�K�aS�H��`_�W��A�D(!�B>'����y�5*�R�0���X�6����c�}���,x��L�I�z��|�ZG�$��wո�R���"�W�:2{��n)Z�*�o�,��,�
-��۷Y�v�[tz����M�4}+o����$�&�\Ǜ�&���r*<go�$�nsEb]'�N��p:��W�U�Y�7�:)����`%�
-�qќ��rK�'�=��9@G-��;=t,���xh�v��1Q����=x���`�R>�a���7^��/��N:�#XW>�8r>�.
-�(���t8�鄐O>� c��s��BE�s��'_Q�od;��3G ( K?�#��N��&8�;���`���~��`��ŝ�_��'��;�+��f�V�CJT �@�{��i7���)���UXo%� �=)�� (`��Ҁ�w3����*P2M��������
-�Z��]�^lf"�6S{�B˄���i�j���J�6� v�mm�w�9��h���i~qc�P/4gj��Aa@i�6Y�RRz� x�B�D)0Z�\��%]����q���ҶmuG �`L����
-j��_������� ��vc/��� ������:��J͆�.�8`��V�*0��*�`h3v[-n��|��
-P�[
-�+?�j�[��q]U�������s`1ƞ��� k�P8p#��;
-��0 �N��_�c;"�@D�"��C�A�#�NO`���;]��)W�F�1����c�#v�B��E�` "�D���+�W��߷���
-�!�Cp-|_ @Q��� �ϼ@��,��/� �s�������c_��(1Q�^ !�@,ĵ�}��
-!z ��{�q�������U�1F)���h�2��I�|@���H>��Ǝ=��/�c_����`1��� Da��\!���?�����_�Ԗ@%9
-#���g�wY�W�ѲZ��-�zbY�����g�a���0,��u�Z=3 ð ò,˰ξ2 ]?;�Wu�hY�eX�eg_U��e�eX-f�����<;3�9��0��u�2����������aƙq�W�j�����~tt���������Ç{{{� ðZ-�^�,�2���������a�;7���ٙ^����euK7�3����qf0�s[g����_�:���������k�vxxxtT��Y�nX���u�0�eXFݪ�Y�L��a�,uuè>�Zw��M
-Wa���&�z̢D;�����^���zݪgUð,�^���qf֙z�Y��q�����z+Z�e�qf=�J��V�� �nY�U��0�/���-�vot���)ڿUW��g�Ό�b��nq�Y��P�,ԩ�?�W��z�����X{���Ç{�����
-�V�3�0��egֿS�ƙaY-�+u������Z�U�,��w���^U[� =��� @U�����Yе!��}������'4O� \�
-�7�#r!�@��������1��u�֠ U�1X �r�K��r�:
-��n�g��Ra �q�y�1���~w�m
-���h�G3�X4
-��RZ��T��D)�Pt������8NP)����\��@L��Ĉ�'17E� ��D�/��*�?8
-�3�rMZ+5 �����u���<�
-�?v
-�"\h��\k�T�e�B$� �� �uN4����&�g
-1Ms�kJ�LޞQ�N��y����_x�"c�u]����/�8V*V�8G�'�����2�
-I�=?���0������w���Ͷ\o˦)�����,����@Y�}�*K��=G;n������� �M��`���栥mj�V K����z��pww}IpS���03l�
-1M�,�`�����z���֛���nv۪��n��������nnn.���_���G#�;���?���GT2�.?��L9S�P�1�R
-�B\��k��gD�c��7�,3|0�3��G�1��/~ "��6!�l\B\�����Ԝ��Oe�`z(�'<��u]��:�
-"2(���e��h��^��:+��EA��O�6_�E�|��%_*���x��h��X,�_>S��r��^j����cs��Y���G6^�������(H/?�D�ht^,�b��q�vOE �@��,~2�eF���ܞ}|6>C$4��D?c4�-�B�Ϗ�ѿH�/�_�䟮(/����c��)��(~.��:B��
-Z��>�\��D_-�_�����*|\�L��j}�,wM��e�@�{+^V�M��Jȷ��a:�C�����-5x]W��3����j�e��3؇�����<[��g�0f$��r�^�V7����|�/|!�?��h"Ӌ�������_�?�6��z���6۲ڕ��v�[o���f�~xxX���V�7w�w�7sJQNF�`��<i��1�H��BT���I�����0�����������%�Ǽ�����hZ�\,�/?-Lq���?�/E�
-C�1���. ��F�/)_�B��ٲ0/
-��ˢ�9���/���O�?������i��jY|��$3����J�\(Ԅh�O?
-� ��w��M<���,
-���o㷘��h�����.
-� �-��$��wÁ�2�� �`����%Y㣡D�(����=��zo߼��~�}�� �8��;Z<O�.X?�� ���� �Ξw> ��'�$�-�i��`��(��`4���!o޸n���������{��}��-������L� � ��0Q4 &gC�'E��FA�`�*9�:
-F�0F�����> �;o��ޞ�� ���.@��3�=�1�抌Y�(#�iQ��"""���Rc���+S�)�</
-2׆�FRb���P����tE�����������G��,�b1�����岠ܘOff����"�HED$_8u]��vc�m& A B2L�L�X,���/�����4WEAs���ǂL���rYhCF�D���(�P�e캮�za��ɋ\ O��C�D�WW9���7��S��\ω!%�e�9\.Ȑ1��,^�������M���`���n����ji���C�����˺l������%7���}�/�i�
-c�g��x�D�Qj�(�:'CyQ|�?Ii��I2��g��䤌�@OxG��a� }���Yj��R�W�9e�3�Y� CHs2��(>�,��KC&[\�S�i��O>�wǮ�y�x,� &Q!��\���8?�j)�Q���v��4e��y2� ��4QBxND��(1]�,�<#;�Y
-��q����L�]%��ȝr"���L�b#��1����y���t:��9�!�\Xՙ�yό��e�� b�3�Ւ$�,i�<�?5�Һ=��xgD�q��c� ! �U�H���BDB
-R�QE*A,�c$�$ȾN�OQ��s�PQƕJ��$"����i{b
-���3��,�g8���&�2��R{?�� �$jM:�JaI�WI{&hˀ�sMLӐi��G�� �L"�[�v��_깔3+��P�S��z�OÀ�n��x�C� ���Z�`XWQ2>4#J%4��v���)�Q�B �On+�Bt�=�ñ�\GT��� !FB�"l�"<,� �Pg0�,�Dx�0/�>R��_���~�����j�-�j[U���lf���m}�ޗ{��.˽|z��۰��u��T7u��7O\G|zj�~��UU33yS��hS�ծ.�r�-W�������n�^�V���{�Qt8��7�G�Y�^\^^�o�o��������V�w�������������͍�������_ L��獞=���g�4
-�'��d���y�R���O�w;�뺞�x�x���@Hg"%���L%����Y���g�C� AJ��O�J93���x���3e�P�H/"zm���J�.1A�
-p��Za���n��i_�����u]?=�d`��O<%�pUO�ʒ���
-��)�BxG�%F:�����$��!֪��H�� �2�1�'/E�%��5cL`� ��,FD=Ң�t�cϋ��
-����נ9�-� ��J%cW g�$%Y���Who՛��Bx���xS�/��D
-!,0F�7
-�&���R�^\�Z)���3{޺���q�S��aaS���^{���Y��^P&�s�eA1�
-� �<ؔuݔծ�v��v�[=ܭnoo�2M�._n����y'���$�ҋˋ���������ۛ�˛������Y
-r2��'��W1�W��)�;92F�?�|\
-��z��v]��q\��b�Zы`bZ��Q��\*�:
-D�HQ`PJ��<<1&0��q]���0��c�aS
-{��
-D��)2�8�����W����o��7w���f��2gFU�Uٔ��a�z�
-mr#�ڳX� ߛ}ń�L��$:������C�o�{;X�K�b���j[V۲\3c���r~1�|�����uO��BL�Y���|>������ח����l��r6�!F#���j�E ��`�a��X=X��rQ4"�y�E����4p3N�"e��F�J���s��G�<��cȏ��p�PD�
-"&��d�/�����L�a&g-#���YF6.9{,�b�q�c���i��Ĉ����g)D%���<��h�錯� sA~�������������z��l��b�ݺ���u��T�M�����s�_�u� �����r�2���M��<
-�Ǭ˭�P�)��7�U{br�p�v&Qb�"H�c�#}
-"�@T���ȦR]��vW`��+�U�3Q�x���&р�D�J��D)���L�8{/_��_���Ǟ����N��S{��\���6���$K.�B_���p g_�����ͥ��z
-� M��H焨�?)S����s6��b�bc�EɠI͒���W�2""� =�c!��{�!QN�(��!���|N�Y"< K�9
-^�}o��[�q޼y�o��z'�����q�j=O���4X�KI�iP��1E��/�_ �/���/�s�L͜������0_
-2�H����PJ�)�������,��4MS��XZ >�4�='c�_~)rC�Y�x��G4D�q�����5~�s* �|��d����������NDz�n�����1��̗/�y6~iV)�D����K�3S,���������������,MNT,s� �:�'�rC*��%�� Q-
-`-yNT��eF��1��ya��c��S"��GD�ѷ����v;�I @J�88G$2���<���6���O�����U�ϰxW �(g��_.g�RD��5Nd�Êl��Q]d˪3��e�N�e�n��8��ˑ�P[
-
-?��(?<w�D�&0 �L�a�� ����aQ�*�����Cu�AX�z ��{��~�]��u\@�"���2{�%a�P�x@|1�HDx��؂fX�'�X�"���TKb,�"@4~}�� �q8�x:E"&����(��d�ׯT�l��Ղh"
-!��@ aȧ9Db�E��X�����1�(�����y7��enz�u�#�u=��;�7�y�"Bx^�/O@��]��u�w
-��F�@��H%�2B�H`v�%�Y5%>�E�f$AJ��pJ����i_! �����2>���@�b9� �R۶�-6�~S)������hח��ח77�������f���ʪ.�]�T��ʾ,�4�S�����U�:!U; �:BO���b������?5u��ꡅ��m-�
-��Mm�w�v�ݮV��˛���뛛ks���i��v�qN��:
-?$6PD���\�"�^ ���p��ܨ/%J��E'���R-�m�oF�����ULju����@�<���z����n�[o�����z���ֻ��˃nh�oGx9��5�4M�T?1p��7{K��U��m��};dQ��@�`h�}�Mf
-)˲ޕ�r�Y��n���,�^�_���q{q�x�'"�����l��#��Z&�б���|�u�#��J�����Xh�������r�Ow:��w����n�=u-���������v�?^ۑ�/'���K�G�繮���&��~�s�n���v;]��8�o\��NO=�;��0���+�t]��F��^��F8���8|s|����x�麮�v;�o��q:��, �
-�;����8�^���{�v^=��u
-d���a�E���H)�&ggR���YE�=�q��;XJ�H����z��}��Q$�(��I���� �Qp6�M&��R����H������w��Lq�Z�w�ܕu]UU��KV�9��4�������+��P�~���!LT[����s�`��\�)����dզ\o6����K���ݮڕ��)��q�v
-"��k�l���R��z�Y����!M��7���f�ۖ���UU]�x���y�Ϳ��ڠ l����M�bvh`ߴ��UK ������u]�uSYe@�.w�n�Y=��\�g���n�ݮ6�� V�_:m��m;f�뫽��o9�8��%�=�
-�w�b��{�����k���p ���X�Pu�������v�����m����YA�K��st�����s��9N��=����v����q:~��N�_H�s|j�|���:^���%Y��8��{||4v��n��Ow��N��5��n���:���t��~����v^��v�c������Q��gXЯS
-��������[�=��U0,���z��#��y��G�=��]���sB��e�p�=>��ݣ#��;>����q��������=��0fpla�G���y��9�Y<���<��y����8>>��������O��ё�G�GG��^���Z��o:
-j��
-�ʈ�����$J���=g�
-��^�|&S@���
-2x�
-!�1@܋�0 C��#cvO��;����㱈X�5 �q����c=���0ECh�±C
-�� �'�\�q����s�����
-����N�����<�����U�5%t�HfR= $�0�����sn�$QH������`��\�e R�*E�"X�/fs^��̸��@Oc�� ��yGG�8���@��&��0��������ү&u��%��2���� �K��띞��H8(��Qx����V�qE|�@�%<
-�@
-��ШD&�GT�*�(G,��
-S���W�$�_�VB�$���q����)�b�eTBd4�4����Z� ��s��W�� xMd����9�h
-J��ya ͯ�����EQ���9��hV�����<_ Q�Ƙ/�?�D?-��W�2 �摪���#�i���4},
-��y�{����I���L��o���`��$�"/@!!��8���� ��O�"��ˢ0Ds��w���?B6.�
-S��0�1�ѐ�q�;��� b:�e�yj �w��p�}+�
-����?D~D�?�}0�����^�7��H����h�����V* �H���h�|����Q0���G�`�cV>?~ ��9�z'=�����/����/���` |������������rr2���N''� |���G�h���?�G3��"��}_��}�F��L Fv����ǖ�p4����#$F�h4��ZG�(���(�DE0�?1"����=��|��;�'�^�Ě�}�쉾���������ѐ�:���(�&g�A����,
-��G�`0 ���?��a }��A4�� ���`8d��/���� ���
-4���lr�.�`��� 8��������h ���w�Q��� [G����I�����8o�(�ш�O����(�CD��L��΃A4���? �L*Dڝ� z�+ �������pD=�q�7���x�����7n���'-q�}��5?�� ��_�����_�V����bF׷���z�ٕeUV�]ŷr]6 ׳��Muh��K��ɿ<5�����A��K;�쫺n*�5�����q@ծ�ʺ��e��nW�������b6��V���a���Q|=a���~@D9�r� �c�����X�%A��Y�"!ķL@!
-��K`�
-��J�
- �� I%��c���8j�ۇv��A�Ds(l&_��EƑ(A��""�a�Y�c
-�2�
-Cz�D�0ha3�t�F)-�00�0Ї��4e�"�)���� !���s2���o'q8�
-���H}��5c���u�p�Z=�V��ٿ̯o����v�ݕ�ݎ!����V��n���a�n���>�V��k� 9���O\2��f���U]?=�վ�De͝Cv%��v�m�٬��7�����z�zX�?�<���B@E�Z2:DT��T�M,m9ɂ=l��w�x �P)M�j�k�I�v�S��R'V�
-���i�)0R�1��L��1T8O�b�4˗
-
-*��H=,�����L�y�(a�i=E����8�8F����9b'��'
-c��&E�JT�F
-��
-U�+�UD�(f1(�l'}�*���dZk�_�J�L�����Ok�� \�x��t{��
-��q@��n�Z?<��T���oooo._2�����/��/^0@�Q
-U�g�� ��J�Q��s�G�
-c��(
-m��I�����1��sCY-�E~�����'�� C
-�.�O ��L>� �
-cLn2��b���5
-P���@_k^��7w��������fu�Zo��]�۔eY�\�/���˪��ܒ|���5�|�}]1
-M
-�ufť�G"��YQ�L��B/�22M�0EKb��eFD|�tf �z���G�$��H”�B@"�"�ʹ.���|�s�9�&L�vvD1]�ZkE����
-U,R�牕B�+5���͜�� �X�Z�?��
-�I
-C���R@fye��qy�|d�}^
-c���i�E
-�B�1K@ �@Rh L�/��բ@$CSLϨ $c !��2�BZh҆��W!����y����� �˛�뇇՚�
-�C����̐H�HS""T�R:��!��YB�݉D�f�)˯��(�?"mc�� ��G�
-S���Wc>Rb
-�4�1 ���
-΋�|2��Z�Gc>\���ȍΗ���O�-��e�\S,FO�c��g$"BJT��� �|�4����
-c����G��G�.fDEQ�f�X�˂���c�,�by�U�oy�����q\O@z977�����j�^�w�ݮ,˺lJ�Ϋ˒����iveݔu�B-�G+�]��*T�% �j����/�]Y��,8���_Y���l6��z�Z��no��t6y�+��ߒ���T#"@E�)-u�k�ʸb��X!E��Da��1�Q
-�Ljế�<1q����1A:3LNB�3� ��&���}�;N�=�'3�ϯo������n�+׻rW�UU����vuU���*�ږU[
-�H%J��O�k�,�� �e;Q�RK
-�((��� �i_��4�B��PqN�)��n{�d%vW,�kA!�k���U�q"bL�}��0V �!
-
-D�]w�Ad@
-Q!��>�–� f&xY!���L��Jr>�*#�`��Q*d R㣎붪ւ�$& \����/�ЉR+}�H4!�O� 3�"K D_i���-�t��{�@���������z�zXm�e�)weɷuYVUS�u�,�����,f�②�dT@Y�uU�U�Tw�zǧ�lʺ��]]�u��w宪ve���v��f���v���������r��&1�<��g#��)@Nd"���nG":��� ��R"N`B� ��� �݌�4�"�+RJa��2m��� R����l<9�� ��-B7
- )R*Az�H���q��o�qX@��x>�f��777w���f�ۭ�%k��]U��g�|���sp��5V�cWVuY�; TUUջ�����vUՆM��eӔU�+�K0��,��v��nw��j�Z������///d�F'=�q�.��o���&�R���2R�0!B�+K�dC���������<����H�QiCJ!-�"$�tFI�$��DF�5f�%<�"� �-%�dE
- �cĜ�#"҄�u8�����Ii���l��P�*B���J�*�b���zޑ{��+b�m&%H h�� �v| e{D����9���5�3�:���%)E\��Ć��y���o���B��'�'�A$��"�J��"9�� �L�laC 1�+���8n��n�{��qO�������������j�Z=���͆g����UUy.몪wMUVeY�4\7L�WUU�c���]Y� '����2_�F宬�j�����e��z�+w��n�^=<0'��e:�E"�z�8�p0�4ei����Z�<ϸ�</H�N R�D�S�*G�U�����AD��B�\�&� b~���d�����9�2{�:+�\�HE�8#U8\��Hdp�5!�� �q�
-
-
-�����������z�7����z����ɉ?��޾��z.�r�s{������۷n�m�m�;��E���{��7��zܣ�����`0��p�����{����z��f0�쯃�����e��C�;?�&Q�?���C~���`8�exr2��8o޸����2��Q���"ߏyX�1�_}||Ԇ QJ�,H�L�TJ ��@���~Di��a8/
-v��\��LrJk��)�[Ra��3�h��d&����bi$�������c�.��8�1���!G�O�z�������mI��e�!l{LkLߌn/Фu�l�Gl�̸N<L�� S{~ /s����jq���C�u�y[//2#��H���^)KN:��a�tǎ�,J\\��Z�q�}cۗ�
- ! ��?�9D\
-�k��e���-��������_ƀ�OUďR�D��s �!�j48A ����*�TIx�hu��x��N2U��&�
-Q5k,e�H��0�&aWBB
-خ�eY����v�[�6�vW�e��o���n��m7e���v��v��m����;�w�f�ٔ��f�ە�,w�f��mK���ۖ�f�ۖ�r��mw��z�Y��\�g��l6�̆���|�nY �+�6rGLI�F:є�2�Ii�
-�� 0A$ʈߣ�fHH�N"
-�5J�}-�g����:�ø�=��v���_\Z�Ђ^�6֞6����l�lv��7����Ł�F�Pb�9�$y����>
-+�a!�<ts�!�a!�
-�P;D�0����>����Ab��bY)�������T8��
-
-�@���zf��<�5$n�C��s~od'QK�ĸ�q�!��j�������۶m]5��Föm�������qfY����a]^Z�l�f���u���m�v�#�<�0�JΡ ��U`�E�`5/�} rh$�g�!�:�^�!fC�Ň��p��q
-HsD�������W�%C|LW�jE@��4"ʧ�\#�`<��
-��V8
-�8��|N
-h�#eho����jN�4���O�ի��?��D�'��#�zQN��"|���<��U�rTH9)
-
-� J*5
-�@����!�cj�"!�� �+ߨ� @R
-�V)��fF]>��"cVE�@��BxJ�
-"��H��K��
-fƐ�<���xEe
-�'DD�\#�#bt$����0F$ʦdR�1`F���ULʼ� `K3E
-en3�!��� 5F��gn�`E�P(��>H�M&%p���C%
-����m�ZV�J ��
-����^>��szD��K�@���S�� (��?�O+����� s���"�<'�c>���+LA���E���1~�����hV�c.�����iE�GT��?BnZ�`��D��?d����8�~8�Os"@������m]�w�#�����?5��f��`T5B��('��y>B̓|�%f�]��y��|�c�~��� ��8o4,�kw�<A ���@)�@ ��@Ej���p0�*M��¥�a��0ŊQ���  R��4(���b��`xH� p��� �R�7*������c��u�a5�AT�C��ѡs����Aԙ~.�7%?D������kU�G<
-�����Rb���4$!�����G�����&i͕#�i�M��d�h��f�1"�~��u�����ߜ�w�UR�����yݮ۹�q�[ǹ�8���3������n�}�\��K���yޭ�8��������x���s[}߃�W�@;N��qn�����=�������q畱�s�sZ�� �uѪm4���ٞ��{��u]���jkt�[�qn���⯼W�^=<<x��<T���8���m�u�Ϋ���tZ�F�_�9�����1��>??��h9�}gd`�/�������^�zx��yp��o�qo=׻u]��:���s�Ơ{�hZ ˺�m�?��HEJ��HE)%�� �
-�R�@������̿V � j��M�h�""� `]׵�+�l�"�"8:N�Kr��H�@N*����O�qf���:�5���C|��1�1y�GD�,�����G)����
-'U}_�1F��Z�H�"T��ϙ(�{�f��n����yyu�l^]]�\6�ͫ˛�f�yuuټ��������OMQϬf��n3���� %��ǹr�;qUk��N�_�suJ"B�#A
-!�P���w@EBDQ����`P}>��:��Ap�}���u�}}ݪ�λ��㤽DgY� ��b�:�uc�= ��X��(��&fCY����7��9�a�e�G�����z^���PB�Q��I�g�A�%Ơԣ�&�+�������k؍�n����g�C�׆D���1��^���jЧ�y�+����mf�X ڬ�����G�(J��1����IH�$ 倏�^��])Q8�?�l�����<�� =@�&�΅D�Yéu�֕zJ���M�.Cir(�2���T����K|+c
-J��
-�>"a6����<x�>�~�����tE9���{�DN�Q�k|���Τ���Fn3� ��U�B��t�7W=�l��O4�,��'4�����Y�v��n��ŵ�c �{#D�*@Ĺ�#�N0�W�V��洢�<����i���a����/���W�?"�s�礀
-�$�ƀצVG#�* �GDJI����3�E�Z'1���֚�'<�^v������$�b��$���+�A���mYͳ3���
-
-
-
-N �!BE�
-
-P� �\x�
diff --git a/examples/web/models/models_loading.html b/examples/web/models/models_loading.html
deleted file mode 100644
index 34bf7e4..0000000
--- a/examples/web/models/models_loading.html
+++ /dev/null
@@ -1 +0,0 @@
-<!doctypehtml><html lang=en-us><head><meta charset=utf-8><meta content="text/html; charset=utf-8"http-equiv=Content-Type><title>raylib HTML5 GAME</title><meta content="raylib HTML5 GAME"name=title><meta content="New HTML5 videogame, developed using raylib videogames library"name=description><meta content="raylib, games, html5, programming, C, C++, library, learn, videogames"name=keywords><meta content="width=device-width"name=viewport><meta content="raylib HTML5 GAME"property=og:title><meta content=image/png property=og:image:type><meta content=https://www.raylib.com/common/img/raylib_logo.png property=og:image><meta content=raylib.com property=og:site_name><meta content=https://www.raylib.com/games.html property=og:url><meta content="New HTML5 videogame, developed using raylib videogames library"property=og:description><meta content=summary name=twitter:card><meta content=@raysan5 name=twitter:site><meta content="raylib HTML5 GAME"name=twitter:title><meta content=https://www.raylib.com/common/raylib_logo.png name=twitter:image><meta content=https://www.raylib.com/games.html name=twitter:url><meta content="New HTML5 videogame, developed using raylib videogames library"name=twitter:description><link href=https://www.raylib.com/favicon.ico rel="shortcut icon"><style>body{font-family:arial;margin:0;padding:none}#header{width:100%;height:80px;background-color:#888}#logo{width:64px;height:64px;float:left;position:relative;margin:10px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAAlC+aJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjExR/NCNwAAA7JJREFUaEPtk0FyWzEMQ+37X7fZhxX4YY3AD1OKF1nkzTRlSBCCLeVBnvl/AUdaELOunPno1kts1kixdtEZKVs+xIxebBkZsVknn/L5nFGDLR8T4zVC9fX19S/+tTFijrYK4jUjbPUtqBHpnEE6PkZD7jQZV8n5Recw1XQKciZuPaEtR6UjNs5ENVGMsBVqpPtER0ZMOhpyp8m4YL4OjD9yxsyZxnQycfMJETNSzsRE1+dihK3YMiJmpHTW3xpmXPC6BXlCHfqnBlsjY5hxf/6EVEOM2BTEi0fYCX4ONSI6Kq3Blg/prIOMq2CsRur4KQ0x64SdjOufEDEdHZGOhmz5RDHCVqhRuQ86YsVskbc+GXchLiHnFyYH+UigQDVGnImbT8hwFkgLg2qiM8JO6Ylx1FNLa3DmYwqCTsZd4BPqGJG7MwKzpeiWKTKxXkLMVE3MSOmsdwxLH6Rd/wCCLSNDx6djeKfJuArGeoYamRHpaEjnCBYZVy8hZqo2GI36qPjsiOiMsBXGcev4Mx9TLGTchbgEjN/uz6jGrBvDjg+LTNx8Qp2CbG2xMKgmOiPslJ4Yxx+eSnSkzlosZNwFPiHl7FRTkLNRJm4+IeVM0ymIH42wE/wcKalQI4MRl4EW3p6VcRWMua8F6WjIlqZDxvVPiHQ6CjVbYkV9ohhhp/Rk1wiYgpyJ78i4CsZbjkb8Qx+ihvzu3RPaKogZkY6GlEeMsKdPSOFIC8VoOusg44L5c+T8ouOoGhWbdWJ8tMi4egkxo4hoh2yNTGf3iIyr5Lyic4bRENXo+lvDjAt4C1Hk/OKtUaAj0+n4dMSZ2D+hrYJsaYh2SClG2jV9kJKKzhlGQ1SsW299Mq6C8dYZHTExo8fzieI5ivipYnYy7nwJqGKmOYyRwfiUBXITfh5qSHRGWEkfqJqURgvsdHyWYv7Ko8DnYYegk3EB00cxprdrJRzFd7YQzawu8L1GMTYS/KpPaAFTkIn1EmJmspJSs5xBzSyGhlkBmlxfNFiP5mw4wlbMh4F5Ddxp5jNINBdCEz9zPOC1zD7Q0HBdmXndwv0TMtydEdzlWJT4VZ8Qt9Qn4/onxMIwa5ZYGJU5yufBiCjwE50AGjLCVuS8Yt4H7OgZLKK5EKOsLviEWJSL/+0uMi7gLUSBseYwqEbXvSHCec1CJvZPyHCmYQffaBBfOTCGHM2aEbZi1+gO1XTWVXMnzrhAn5DSOZVsiQlHnSITKzGj6DeTcZWc/3oy7h9//PF4PL4BlvsWrb6RE+oAAAAASUVORK5CYII=)}.emscripten{padding-right:0;margin-left:auto;margin-right:auto;display:block}div.emscripten{text-align:center}div.emscripten_border{border:1px solid #000}canvas.emscripten{border:0 none;background:#000;width:100%}.spinner{height:30px;width:30px;margin:0;margin-top:20px;margin-left:20px;display:inline-block;vertical-align:top;-webkit-animation:rotation .8s linear infinite;-moz-animation:rotation .8s linear infinite;-o-animation:rotation .8s linear infinite;animation:rotation .8s linear infinite;border-left:5px solid #000;border-right:5px solid #000;border-bottom:5px solid #000;border-top:5px solid red;border-radius:100%;background-color:#f5f5f5}@-webkit-keyframes rotation{from{-webkit-transform:rotate(0)}to{-webkit-transform:rotate(360deg)}}@-moz-keyframes rotation{from{-moz-transform:rotate(0)}to{-moz-transform:rotate(360deg)}}@-o-keyframes rotation{from{-o-transform:rotate(0)}to{-o-transform:rotate(360deg)}}@keyframes rotation{from{transform:rotate(0)}to{transform:rotate(360deg)}}#status{display:inline-block;vertical-align:top;margin-top:30px;margin-left:20px;font-weight:700;color:#282828}#progress{height:0;width:0}#controls{display:inline-block;float:right;vertical-align:top;margin-top:15px;margin-right:20px}#output{width:100%;height:140px;margin:0 auto;margin-top:10px;display:block;background-color:#000;color:#25ae26;font-family:'Lucida Console',Monaco,monospace;outline:0}input[type=button]{background-color:#d3d3d3;border:4px solid #a9a9a9;color:#000;text-decoration:none;cursor:pointer;width:140px;height:50px}input[type=button]:hover{background-color:#f5f5f5ff;border-color:#000}</style></head><body><div id=header><a href=https://www.raylib.com id=logo></a><div class=spinner id=spinner></div><div class=emscripten id=status>Downloading...</div><span id=controls><span><input onclick=Module.requestFullscreen(!1,!1) type=button value="🖵 FULLSCREEN"></span><span><input onclick=toggleAudio() type=button value="🔇 SUSPEND"id=btn-audio></span></span><div class=emscripten><progress hidden id=progress max=100 value=0></progress></div></div><div class=emscripten_border><canvas class=emscripten id=canvas oncontextmenu=event.preventDefault() tabindex=-1></canvas></div><textarea id=output rows=8></textarea><script src=https://cdn.jsdelivr.net/gh/eligrey/FileSaver.js/dist/FileSaver.min.js></script><script>function saveFileFromMEMFSToDisk(e,a){var t,i=/^((?!chrome|android).)*safari/i.test(navigator.userAgent),o=FS.readFile(e);t=i?new Blob([o.buffer],{type:"application/octet-stream"}):new Blob([o.buffer],{type:"application/octet-binary"}),saveAs(t,a)}</script><script>var statusElement=document.querySelector("#status"),progressElement=document.querySelector("#progress"),spinnerElement=document.querySelector("#spinner"),Module={preRun:[],postRun:[],print:function(){var e=document.querySelector("#output");return e&&(e.value=""),function(t){arguments.length>1&&(t=Array.prototype.slice.call(arguments).join(" ")),console.log(t),e&&(e.value+=t+"\n",e.scrollTop=e.scrollHeight)}}(),printErr:function(e){arguments.length>1&&(e=Array.prototype.slice.call(arguments).join(" ")),console.error(e)},canvas:function(){var e=document.querySelector("#canvas");return e.addEventListener("webglcontextlost",(function(e){alert("WebGL context lost. You will need to reload the page."),e.preventDefault()}),!1),e}(),setStatus:function(e){if(Module.setStatus.last||(Module.setStatus.last={time:Date.now(),text:""}),e!==Module.setStatus.last.text){var t=e.match(/([^(]+)\((\d+(\.\d+)?)\/(\d+)\)/),n=Date.now();t&&n-Module.setStatus.last.time<30||(Module.setStatus.last.time=n,Module.setStatus.last.text=e,t?(e=t[1],progressElement.value=100*parseInt(t[2]),progressElement.max=100*parseInt(t[4]),progressElement.hidden=!0,spinnerElement.hidden=!1):(progressElement.value=null,progressElement.max=null,progressElement.hidden=!0,e||(spinnerElement.style.display="none")),statusElement.innerHTML=e)}},totalDependencies:0,monitorRunDependencies:function(e){this.totalDependencies=Math.max(this.totalDependencies,e),Module.setStatus(e?"Preparing... ("+(this.totalDependencies-e)+"/"+this.totalDependencies+")":"All downloads complete.")}};Module.setStatus("Downloading..."),window.onerror=function(){Module.setStatus("Exception thrown, see JavaScript console"),spinnerElement.style.display="none",Module.setStatus=function(e){e&&Module.printErr("[post-exception status] "+e)}}</script><script>var audioBtn=document.querySelector("#btn-audio");const audioContexList=[];function toggleAudio(){var t=!1;audioContexList.forEach(e=>{"suspended"==e.state?(e.resume(),t=!0):"running"==e.state&&e.suspend()}),audioBtn.value=t?"🔇 SUSPEND":"🔈 RESUME"}self.AudioContext=new Proxy(self.AudioContext,{construct(t,e){const n=new t(...e);return audioContexList.push(n),"suspended"==n.state&&(audioBtn.value="🔈 RESUME"),n}})</script><script src=models_loading.js async></script></body></html> \ No newline at end of file
diff --git a/examples/web/models/models_loading.js b/examples/web/models/models_loading.js
deleted file mode 100644
index 71053d1..0000000
--- a/examples/web/models/models_loading.js
+++ /dev/null
@@ -1 +0,0 @@
-var Module=typeof Module!=="undefined"?Module:{};if(!Module.expectedDataFileDownloads){Module.expectedDataFileDownloads=0}Module.expectedDataFileDownloads++;(function(){var loadPackage=function(metadata){var PACKAGE_PATH;if(typeof window==="object"){PACKAGE_PATH=window["encodeURIComponent"](window.location.pathname.toString().substring(0,window.location.pathname.toString().lastIndexOf("/"))+"/")}else if(typeof location!=="undefined"){PACKAGE_PATH=encodeURIComponent(location.pathname.toString().substring(0,location.pathname.toString().lastIndexOf("/"))+"/")}else{throw"using preloaded data can only be done on a web page or in a web worker"}var PACKAGE_NAME="models/models_loading.data";var REMOTE_PACKAGE_BASE="models_loading.data";if(typeof Module["locateFilePackage"]==="function"&&!Module["locateFile"]){Module["locateFile"]=Module["locateFilePackage"];err("warning: you defined Module.locateFilePackage, that has been renamed to Module.locateFile (using your locateFilePackage for now)")}var REMOTE_PACKAGE_NAME=Module["locateFile"]?Module["locateFile"](REMOTE_PACKAGE_BASE,""):REMOTE_PACKAGE_BASE;var REMOTE_PACKAGE_SIZE=metadata["remote_package_size"];var PACKAGE_UUID=metadata["package_uuid"];function fetchRemotePackage(packageName,packageSize,callback,errback){var xhr=new XMLHttpRequest;xhr.open("GET",packageName,true);xhr.responseType="arraybuffer";xhr.onprogress=function(event){var url=packageName;var size=packageSize;if(event.total)size=event.total;if(event.loaded){if(!xhr.addedTotal){xhr.addedTotal=true;if(!Module.dataFileDownloads)Module.dataFileDownloads={};Module.dataFileDownloads[url]={loaded:event.loaded,total:size}}else{Module.dataFileDownloads[url].loaded=event.loaded}var total=0;var loaded=0;var num=0;for(var download in Module.dataFileDownloads){var data=Module.dataFileDownloads[download];total+=data.total;loaded+=data.loaded;num++}total=Math.ceil(total*Module.expectedDataFileDownloads/num);if(Module["setStatus"])Module["setStatus"]("Downloading data... ("+loaded+"/"+total+")")}else if(!Module.dataFileDownloads){if(Module["setStatus"])Module["setStatus"]("Downloading data...")}};xhr.onerror=function(event){throw new Error("NetworkError for: "+packageName)};xhr.onload=function(event){if(xhr.status==200||xhr.status==304||xhr.status==206||xhr.status==0&&xhr.response){var packageData=xhr.response;callback(packageData)}else{throw new Error(xhr.statusText+" : "+xhr.responseURL)}};xhr.send(null)}function handleError(error){console.error("package error:",error)}var fetchedCallback=null;var fetched=Module["getPreloadedPackage"]?Module["getPreloadedPackage"](REMOTE_PACKAGE_NAME,REMOTE_PACKAGE_SIZE):null;if(!fetched)fetchRemotePackage(REMOTE_PACKAGE_NAME,REMOTE_PACKAGE_SIZE,function(data){if(fetchedCallback){fetchedCallback(data);fetchedCallback=null}else{fetched=data}},handleError);function runWithFS(){function assert(check,msg){if(!check)throw msg+(new Error).stack}Module["FS_createPath"]("/","resources",true,true);Module["FS_createPath"]("/resources","models",true,true);function DataRequest(start,end,audio){this.start=start;this.end=end;this.audio=audio}DataRequest.prototype={requests:{},open:function(mode,name){this.name=name;this.requests[name]=this;Module["addRunDependency"]("fp "+this.name)},send:function(){},onload:function(){var byteArray=this.byteArray.subarray(this.start,this.end);this.finish(byteArray)},finish:function(byteArray){var that=this;Module["FS_createDataFile"](this.name,null,byteArray,true,true,true);Module["removeRunDependency"]("fp "+that.name);this.requests[this.name]=null}};var files=metadata["files"];for(var i=0;i<files.length;++i){new DataRequest(files[i]["start"],files[i]["end"],files[i]["audio"]).open("GET",files[i]["filename"])}function processPackageData(arrayBuffer){assert(arrayBuffer,"Loading data file failed.");assert(arrayBuffer instanceof ArrayBuffer,"bad input to processPackageData");var byteArray=new Uint8Array(arrayBuffer);DataRequest.prototype.byteArray=byteArray;var files=metadata["files"];for(var i=0;i<files.length;++i){DataRequest.prototype.requests[files[i].filename].onload()}Module["removeRunDependency"]("datafile_models/models_loading.data")}Module["addRunDependency"]("datafile_models/models_loading.data");if(!Module.preloadResults)Module.preloadResults={};Module.preloadResults[PACKAGE_NAME]={fromCache:false};if(fetched){processPackageData(fetched);fetched=null}else{fetchedCallback=processPackageData}}if(Module["calledRun"]){runWithFS()}else{if(!Module["preRun"])Module["preRun"]=[];Module["preRun"].push(runWithFS)}};loadPackage({"files":[{"filename":"/resources/models/castle.obj","start":0,"end":407909,"audio":0},{"filename":"/resources/models/castle_diffuse.png","start":407909,"end":852122,"audio":0}],"remote_package_size":852122,"package_uuid":"fef43d7f-10e4-4915-a2aa-676c006c6075"})})();var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram="./this.program";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window==="object";ENVIRONMENT_IS_WORKER=typeof importScripts==="function";ENVIRONMENT_IS_NODE=typeof process==="object"&&typeof process.versions==="object"&&typeof process.versions.node==="string";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require("path").dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require("fs");if(!nodePath)nodePath=require("path");filename=nodePath["normalize"](filename);return nodeFS["readFileSync"](filename,binary?null:"utf8")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);if(typeof module!=="undefined"){module["exports"]=Module}process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",abort);quit_=function(status){process["exit"](status)};Module["inspect"]=function(){return"[Emscripten Module object]"}}else if(ENVIRONMENT_IS_SHELL){if(typeof read!="undefined"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer==="function"){return new Uint8Array(readbuffer(f))}data=read(f,"binary");assert(typeof data==="object");return data};if(typeof scriptArgs!="undefined"){arguments_=scriptArgs}else if(typeof arguments!="undefined"){arguments_=arguments}if(typeof quit==="function"){quit_=function(status){quit(status)}}if(typeof print!=="undefined"){if(typeof console==="undefined")console={};console.log=print;console.warn=console.error=typeof printErr!=="undefined"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!=="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf("/")+1)}else{scriptDirectory=""}{read_=function(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=function(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var STACK_ALIGN=16;function alignMemory(size,factor){if(!factor)factor=STACK_ALIGN;return Math.ceil(size/factor)*factor}function warnOnce(text){if(!warnOnce.shown)warnOnce.shown={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;err(text)}}var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime=Module["noExitRuntime"]||true;if(typeof WebAssembly!=="object"){abort("no native wasm support detected")}function setValue(ptr,value,type,noSafe){type=type||"i8";if(type.charAt(type.length-1)==="*")type="i32";switch(type){case"i1":HEAP8[ptr>>0]=value;break;case"i8":HEAP8[ptr>>0]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":tempI64=[value>>>0,(tempDouble=value,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;default:abort("invalid type for setValue: "+type)}}var wasmMemory;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}var ALLOC_NORMAL=0;var ALLOC_STACK=1;function allocate(slab,allocator){var ret;if(allocator==ALLOC_STACK){ret=stackAlloc(slab.length)}else{ret=_malloc(slab.length)}if(slab.subarray||slab.slice){HEAPU8.set(slab,ret)}else{HEAPU8.set(new Uint8Array(slab),ret)}return ret}var UTF8Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heap,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heap[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str="";while(idx<endPtr){var u0=heap[idx++];if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heap[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heap[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u0=(u0&7)<<18|u1<<12|u2<<6|heap[idx++]&63}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||67108864;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;__ATINIT__.push({func:function(){___wasm_call_ctors()}});function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){FS.ignorePermissions=false;callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}what+="";err(what);ABORT=true;EXITSTATUS=1;what="abort("+what+"). Build with -s ASSERTIONS=1 for more info.";var e=new WebAssembly.RuntimeError(what);throw e}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix="file://";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile="models_loading.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}else{throw"both async and sync fetching of the wasm failed"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch==="function"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={"a":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;wasmMemory=Module["asm"]["ae"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module["asm"]["de"];removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiatedSource(output){receiveInstance(output["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming==="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch==="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync();return{}}var tempDouble;var tempI64;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback(Module);continue}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){wasmTable.get(func)()}else{wasmTable.get(func)(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}function ___assert_fail(condition,filename,line,func){abort("Assertion failed: "+UTF8ToString(condition)+", at: "+[filename?UTF8ToString(filename):"unknown filename",line,func?UTF8ToString(func):"unknown function"])}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path==="/")return"/";path=PATH.normalize(path);path=path.replace(/\/$/,"");var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}};function getRandomDevice(){if(typeof crypto==="object"&&typeof crypto["getRandomValues"]==="function"){var randomBuffer=new Uint8Array(1);return function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]}}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");return function(){return crypto_module["randomBytes"](1)[0]}}catch(e){}}return function(){abort("randomDevice")}}var PATH_FS={resolve:function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!=="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=path.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(function(p){return!!p}),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:function(from,to){from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start<arr.length;start++){if(arr[start]!=="")break}var end=arr.length-1;for(;end>=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i<length;i++){if(fromParts[i]!==toParts[i]){samePartsLength=i;break}}var outputParts=[];for(var i=samePartsLength;i<fromParts.length;i++){outputParts.push("..")}outputParts=outputParts.concat(toParts.slice(samePartsLength));return outputParts.join("/")}};var TTY={ttys:[],init:function(){},shutdown:function(){},register:function(dev,ops){TTY.ttys[dev]={input:[],output:[],ops:ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open:function(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close:function(stream){stream.tty.ops.flush(stream.tty)},flush:function(stream){stream.tty.ops.flush(stream.tty)},read:function(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i<length;i++){var result;try{result=stream.tty.ops.get_char(stream.tty)}catch(e){throw new FS.ErrnoError(29)}if(result===undefined&&bytesRead===0){throw new FS.ErrnoError(6)}if(result===null||result===undefined)break;bytesRead++;buffer[offset+i]=result}if(bytesRead){stream.node.timestamp=Date.now()}return bytesRead},write:function(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.put_char){throw new FS.ErrnoError(60)}try{for(var i=0;i<length;i++){stream.tty.ops.put_char(stream.tty,buffer[offset+i])}}catch(e){throw new FS.ErrnoError(29)}if(length){stream.node.timestamp=Date.now()}return i}},default_tty_ops:{get_char:function(tty){if(!tty.input.length){var result=null;if(ENVIRONMENT_IS_NODE){var BUFSIZE=256;var buf=Buffer.alloc?Buffer.alloc(BUFSIZE):new Buffer(BUFSIZE);var bytesRead=0;try{bytesRead=nodeFS.readSync(process.stdin.fd,buf,0,BUFSIZE,null)}catch(e){if(e.toString().indexOf("EOF")!=-1)bytesRead=0;else throw e}if(bytesRead>0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function mmapAlloc(size){var alignedSize=alignMemory(size,16384);var ptr=_malloc(alignedSize);while(size<alignedSize)HEAP8[ptr+size++]=0;return ptr}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray:function(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage:function(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity<CAPACITY_DOUBLING_MAX?2:1.125)>>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage:function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr:function(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr:function(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp;old_node.parent=new_dir},unlink:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir:function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i<size;i++)buffer[offset+i]=contents[position+i]}return size},write:function(stream,buffer,offset,length,position,canOwn){if(!length)return 0;var node=stream.node;node.timestamp=Date.now();if(buffer.subarray&&(!node.contents||node.contents.subarray)){if(canOwn){node.contents=buffer.subarray(offset,offset+length);node.usedBytes=length;return length}else if(node.usedBytes===0&&position===0){node.contents=buffer.slice(offset,offset+length);node.usedBytes=length;return length}else if(position+length<=node.usedBytes){node.contents.set(buffer.subarray(offset,offset+length),position);return length}}MEMFS.expandFileStorage(node,position+length);if(node.contents.subarray&&buffer.subarray){node.contents.set(buffer.subarray(offset,offset+length),position)}else{for(var i=0;i<length;i++){node.contents[position+i]=buffer[offset+i]}}node.usedBytes=Math.max(node.usedBytes,position+length);return length},llseek:function(stream,offset,whence){var position=offset;if(whence===1){position+=stream.position}else if(whence===2){if(FS.isFile(stream.node.mode)){position+=stream.node.usedBytes}}if(position<0){throw new FS.ErrnoError(28)}return position},allocate:function(stream,offset,length){MEMFS.expandFileStorage(stream.node,offset+length);stream.node.usedBytes=Math.max(stream.node.usedBytes,offset+length)},mmap:function(stream,address,length,position,prot,flags){if(address!==0){throw new FS.ErrnoError(28)}if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}var ptr;var allocated;var contents=stream.node.contents;if(!(flags&2)&&contents.buffer===buffer){allocated=false;ptr=contents.byteOffset}else{if(position>0||position+length<contents.length){if(contents.subarray){contents=contents.subarray(position,position+length)}else{contents=Array.prototype.slice.call(contents,position,position+length)}}allocated=true;ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}HEAP8.set(contents,ptr)}return{ptr:ptr,allocated:allocated}},msync:function(stream,buffer,offset,length,mmapFlags){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}if(mmapFlags&2){return 0}var bytesWritten=MEMFS.stream_ops.write(stream,buffer,0,length,offset,false);return 0}}};var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,trackingDelegate:{},tracking:{openFlags:{READ:1,WRITE:2}},ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath:function(path,opts){path=PATH_FS.resolve(FS.cwd(),path);opts=opts||{};if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};for(var key in defaults){if(opts[key]===undefined){opts[key]=defaults[key]}}if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),false);var current=FS.root;var current_path="/";for(var i=0;i<parts.length;i++){var islast=i===parts.length-1;if(islast&&opts.parent){break}current=FS.lookupNode(current,parts[i]);current_path=PATH.join2(current_path,parts[i]);if(FS.isMountpoint(current)){if(!islast||islast&&opts.follow_mount){current=current.mounted.root}}if(!islast||opts.follow){var count=0;while(FS.isLink(current.mode)){var link=FS.readlink(current_path);current_path=PATH_FS.resolve(PATH.dirname(current_path),link);var lookup=FS.lookupPath(current_path,{recurse_count:opts.recurse_count});current=lookup.node;if(count++>40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath:function(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?mount+"/"+path:mount+path}path=path?node.name+"/"+path:node.name;node=node.parent}},hashName:function(parentid,name){var hash=0;for(var i=0;i<name.length;i++){hash=(hash<<5)-hash+name.charCodeAt(i)|0}return(parentid+hash>>>0)%FS.nameTable.length},hashAddNode:function(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode:function(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode:function(parent,name){var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode:function(parent,name,mode,rdev){var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:function(node){FS.hashRemoveNode(node)},isRoot:function(node){return node===node.parent},isMountpoint:function(node){return!!node.mounted},isFile:function(mode){return(mode&61440)===32768},isDir:function(mode){return(mode&61440)===16384},isLink:function(mode){return(mode&61440)===40960},isChrdev:function(mode){return(mode&61440)===8192},isBlkdev:function(mode){return(mode&61440)===24576},isFIFO:function(mode){return(mode&61440)===4096},isSocket:function(mode){return(mode&49152)===49152},flagModes:{"r":0,"r+":2,"w":577,"w+":578,"a":1089,"a+":1090},modeStringToFlags:function(str){var flags=FS.flagModes[str];if(typeof flags==="undefined"){throw new Error("Unknown file open mode: "+str)}return flags},flagsToPermissionString:function(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions:function(node,perms){if(FS.ignorePermissions){return 0}if(perms.indexOf("r")!==-1&&!(node.mode&292)){return 2}else if(perms.indexOf("w")!==-1&&!(node.mode&146)){return 2}else if(perms.indexOf("x")!==-1&&!(node.mode&73)){return 2}return 0},mayLookup:function(dir){var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate:function(dir,name){try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete:function(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen:function(node,flags){if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd:function(fd_start,fd_end){fd_start=fd_start||0;fd_end=fd_end||FS.MAX_OPEN_FDS;for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:function(fd){return FS.streams[fd]},createStream:function(stream,fd_start,fd_end){if(!FS.FSStream){FS.FSStream=function(){};FS.FSStream.prototype={object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}}}}var newStream=new FS.FSStream;for(var p in stream){newStream[p]=stream[p]}stream=newStream;var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:function(fd){FS.streams[fd]=null},chrdev_stream_ops:{open:function(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}},llseek:function(){throw new FS.ErrnoError(70)}},major:function(dev){return dev>>8},minor:function(dev){return dev&255},makedev:function(ma,mi){return ma<<8|mi},registerDevice:function(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:function(dev){return FS.devices[dev]},getMounts:function(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts},syncfs:function(populate,callback){if(typeof populate==="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err("warning: "+FS.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work")}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(function(mount){if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount:function(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount:function(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(function(hash){var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.indexOf(current.mount)!==-1){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup:function(parent,name){return parent.node_ops.lookup(parent,name)},mknod:function(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create:function(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:function(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree:function(path,mode){var dirs=path.split("/");var d="";for(var i=0;i<dirs.length;++i){if(!dirs[i])continue;d+="/"+dirs[i];try{FS.mkdir(d,mode)}catch(e){if(e.errno!=20)throw e}}},mkdev:function(path,mode,dev){if(typeof dev==="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:function(oldpath,newpath){if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:function(old_path,new_path){var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}try{if(FS.trackingDelegate["willMovePath"]){FS.trackingDelegate["willMovePath"](old_path,new_path)}}catch(e){err("FS.trackingDelegate['willMovePath']('"+old_path+"', '"+new_path+"') threw an exception: "+e.message)}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}try{if(FS.trackingDelegate["onMovePath"])FS.trackingDelegate["onMovePath"](old_path,new_path)}catch(e){err("FS.trackingDelegate['onMovePath']('"+old_path+"', '"+new_path+"') threw an exception: "+e.message)}},rmdir:function(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}try{if(FS.trackingDelegate["willDeletePath"]){FS.trackingDelegate["willDeletePath"](path)}}catch(e){err("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: "+e.message)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate["onDeletePath"])FS.trackingDelegate["onDeletePath"](path)}catch(e){err("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: "+e.message)}},readdir:function(path){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:function(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}try{if(FS.trackingDelegate["willDeletePath"]){FS.trackingDelegate["willDeletePath"](path)}}catch(e){err("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: "+e.message)}parent.node_ops.unlink(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate["onDeletePath"])FS.trackingDelegate["onDeletePath"](path)}catch(e){err("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: "+e.message)}},readlink:function(path){var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:function(path,dontFollow){var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:function(path){return FS.stat(path,true)},chmod:function(path,mode,dontFollow){var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:function(path,mode){FS.chmod(path,mode,true)},fchmod:function(fd,mode){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:function(path,uid,gid,dontFollow){var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:function(path,uid,gid){FS.chown(path,uid,gid,true)},fchown:function(fd,uid,gid){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:function(path,len){if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:function(fd,len){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:function(path,atime,mtime){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:function(path,flags,mode,fd_start,fd_end){if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags==="string"?FS.modeStringToFlags(flags):flags;mode=typeof mode==="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path==="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false},fd_start,fd_end);if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1;err("FS.trackingDelegate error on read file: "+path)}}try{if(FS.trackingDelegate["onOpenFile"]){var trackingFlags=0;if((flags&2097155)!==1){trackingFlags|=FS.tracking.openFlags.READ}if((flags&2097155)!==0){trackingFlags|=FS.tracking.openFlags.WRITE}FS.trackingDelegate["onOpenFile"](path,trackingFlags)}}catch(e){err("FS.trackingDelegate['onOpenFile']('"+path+"', flags) threw an exception: "+e.message)}return stream},close:function(stream){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:function(stream){return stream.fd===null},llseek:function(stream,offset,whence){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:function(stream,buffer,offset,length,position){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!=="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:function(stream,buffer,offset,length,position,canOwn){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!=="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;try{if(stream.path&&FS.trackingDelegate["onWriteToFile"])FS.trackingDelegate["onWriteToFile"](stream.path)}catch(e){err("FS.trackingDelegate['onWriteToFile']('"+stream.path+"') threw an exception: "+e.message)}return bytesWritten},allocate:function(stream,offset,length){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:function(stream,address,length,position,prot,flags){if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,address,length,position,prot,flags)},msync:function(stream,buffer,offset,length,mmapFlags){if(!stream||!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:function(stream){return 0},ioctl:function(stream,cmd,arg){if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:function(path,opts){opts=opts||{};opts.flags=opts.flags||0;opts.encoding=opts.encoding||"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error('Invalid encoding type "'+opts.encoding+'"')}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding==="binary"){ret=buf}FS.close(stream);return ret},writeFile:function(path,data,opts){opts=opts||{};opts.flags=opts.flags||577;var stream=FS.open(path,opts.flags,opts.mode);if(typeof data==="string"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,undefined,opts.canOwn)}else if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{throw new Error("Unsupported data type")}FS.close(stream)},cwd:function(){return FS.currentPath},chdir:function(path){var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories:function(){FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices:function(){FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:function(){return 0},write:function(stream,buffer,offset,length,pos){return length}});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var random_device=getRandomDevice();FS.createDevice("/dev","random",random_device);FS.createDevice("/dev","urandom",random_device);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories:function(){FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount:function(){var node=FS.createNode(proc_self,"fd",16384|511,73);node.node_ops={lookup:function(parent,name){var fd=+name;var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:function(){return stream.path}}};ret.parent=ret;return ret}};return node}},{},"/proc/self/fd")},createStandardStreams:function(){if(Module["stdin"]){FS.createDevice("/dev","stdin",Module["stdin"])}else{FS.symlink("/dev/tty","/dev/stdin")}if(Module["stdout"]){FS.createDevice("/dev","stdout",null,Module["stdout"])}else{FS.symlink("/dev/tty","/dev/stdout")}if(Module["stderr"]){FS.createDevice("/dev","stderr",null,Module["stderr"])}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},ensureErrnoError:function(){if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.node=node;this.setErrno=function(errno){this.errno=errno};this.setErrno(errno);this.message="FS error"};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[44].forEach(function(code){FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack="<generic error, no stack>"})},staticInit:function(){FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={"MEMFS":MEMFS}},init:function(input,output,error){FS.init.initialized=true;FS.ensureErrnoError();Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams()},quit:function(){FS.init.initialized=false;var fflush=Module["_fflush"];if(fflush)fflush(0);for(var i=0;i<FS.streams.length;i++){var stream=FS.streams[i];if(!stream){continue}FS.close(stream)}},getMode:function(canRead,canWrite){var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode},findObject:function(path,dontResolveLastLink){var ret=FS.analyzePath(path,dontResolveLastLink);if(ret.exists){return ret.object}else{return null}},analyzePath:function(path,dontResolveLastLink){try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath:function(parent,path,canRead,canWrite){parent=typeof parent==="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:function(parent,name,properties,canRead,canWrite){var path=PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:function(parent,name,data,canRead,canWrite,canOwn){var path=name?PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name):parent;var mode=FS.getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data==="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i<len;++i)arr[i]=data.charCodeAt(i);data=arr}FS.chmod(node,mode|146);var stream=FS.open(node,577);FS.write(stream,data,0,data.length,0,canOwn);FS.close(stream);FS.chmod(node,mode)}return node},createDevice:function(parent,name,input,output){var path=PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:function(stream){stream.seekable=false},close:function(stream){if(output&&output.buffer&&output.buffer.length){output(10)}},read:function(stream,buffer,offset,length,pos){var bytesRead=0;for(var i=0;i<length;i++){var result;try{result=input()}catch(e){throw new FS.ErrnoError(29)}if(result===undefined&&bytesRead===0){throw new FS.ErrnoError(6)}if(result===null||result===undefined)break;bytesRead++;buffer[offset+i]=result}if(bytesRead){stream.node.timestamp=Date.now()}return bytesRead},write:function(stream,buffer,offset,length,pos){for(var i=0;i<length;i++){try{output(buffer[offset+i])}catch(e){throw new FS.ErrnoError(29)}}if(length){stream.node.timestamp=Date.now()}return i}});return FS.mkdev(path,mode,dev)},forceLoadFile:function(obj){if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!=="undefined"){throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}},createLazyFile:function(parent,name,url,canRead,canWrite){function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=function(from,to){if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);if(typeof Uint8Array!="undefined")xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}else{return intArrayFromString(xhr.responseText||"",true)}};var lazyArray=this;lazyArray.setDataGetter(function(chunkNum){var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]==="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]==="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!=="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._length}},chunkSize:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(function(key){var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){FS.forceLoadFile(node);return fn.apply(null,arguments)}});stream_ops.read=function stream_ops_read(stream,buffer,offset,length,position){FS.forceLoadFile(node);var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i<size;i++){buffer[offset+i]=contents[position+i]}}else{for(var i=0;i<size;i++){buffer[offset+i]=contents.get(position+i)}}return size};node.stream_ops=stream_ops;return node},createPreloadedFile:function(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish){Browser.init();var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency("cp "+fullname);function processData(byteArray){function finish(byteArray){if(preFinish)preFinish();if(!dontCreateFile){FS.createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}if(onload)onload();removeRunDependency(dep)}var handled=false;Module["preloadPlugins"].forEach(function(plugin){if(handled)return;if(plugin["canHandle"](fullname)){plugin["handle"](byteArray,fullname,finish,function(){if(onerror)onerror();removeRunDependency(dep)});handled=true}});if(!handled)finish(byteArray)}addRunDependency(dep);if(typeof url=="string"){Browser.asyncLoad(url,function(byteArray){processData(byteArray)},onerror)}else{processData(url)}},indexedDB:function(){return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME:function(){return"EM_FS_"+window.location.pathname},DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:function(paths,onload,onerror){onload=onload||function(){};onerror=onerror||function(){};var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=function openRequest_onupgradeneeded(){out("creating db");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME)};openRequest.onsuccess=function openRequest_onsuccess(){var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],"readwrite");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(function(path){var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=function putRequest_onsuccess(){ok++;if(ok+fail==total)finish()};putRequest.onerror=function putRequest_onerror(){fail++;if(ok+fail==total)finish()}});transaction.onerror=onerror};openRequest.onerror=onerror},loadFilesFromDB:function(paths,onload,onerror){onload=onload||function(){};onerror=onerror||function(){};var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=function openRequest_onsuccess(){var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],"readonly")}catch(e){onerror(e);return}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(function(path){var getRequest=files.get(path);getRequest.onsuccess=function getRequest_onsuccess(){if(FS.analyzePath(path).exists){FS.unlink(path)}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish()};getRequest.onerror=function getRequest_onerror(){fail++;if(ok+fail==total)finish()}});transaction.onerror=onerror};openRequest.onerror=onerror}};var SYSCALLS={mappings:{},DEFAULT_POLLMASK:5,umask:511,calculateAt:function(dirfd,path,allowEmpty){if(path[0]==="/"){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=FS.getStream(dirfd);if(!dirstream)throw new FS.ErrnoError(8);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(func,path,buf){try{var stat=func(path)}catch(e){if(e&&e.node&&PATH.normalize(path)!==PATH.normalize(FS.getPath(e.node))){return-54}throw e}HEAP32[buf>>2]=stat.dev;HEAP32[buf+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;HEAP32[buf+56>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+76>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+80>>2]=tempI64[0],HEAP32[buf+84>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},doMkdir:function(path,mode){path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0},doMknod:function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}FS.mknod(path,mode,dev);return 0},doReadlink:function(path,buf,bufsize){if(bufsize<=0)return-28;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len},doAccess:function(path,amode){if(amode&~7){return-28}var node;var lookup=FS.lookupPath(path,{follow:true});node=lookup.node;if(!node){return-44}var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0},doDup:function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd},doReadv:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i<iovcnt;i++){var ptr=HEAP32[iov+i*8>>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr<len)break}return ret},doWritev:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i<iovcnt;i++){var ptr=HEAP32[iov+i*8>>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream},get64:function(low,high){return low}};function ___sys_chdir(path){try{path=SYSCALLS.getStr(path);FS.chdir(path);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function setErrNo(value){HEAP32[___errno_location()>>2]=value;return value}function ___sys_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-28}var newStream;newStream=FS.open(stream.path,stream.flags,0,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0}case 12:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 13:case 14:return 0;case 16:case 8:return-28;case 9:setErrNo(28);return-1;default:{return-28}}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_getcwd(buf,size){try{if(size===0)return-28;var cwd=FS.cwd();var cwdLengthInBytes=lengthBytesUTF8(cwd);if(size<cwdLengthInBytes+1)return-68;stringToUTF8(cwd,buf,size);return buf}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_ioctl(fd,op,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(op){case 21509:case 21505:{if(!stream.tty)return-59;return 0}case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-59;return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{if(!stream.tty)return-59;return 0}default:abort("bad ioctl syscall "+op)}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_open(path,flags,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(path);var mode=varargs?SYSCALLS.get():0;var stream=FS.open(pathname,flags,mode);return stream.fd}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}var JSEvents={inEventHandler:0,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return false;for(var i in arrA){if(arrA[i]!=arrB[i])return false}return true}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList)){return}}JSEvents.deferredCalls.push({targetFunction:targetFunction,precedence:precedence,argsList:argsList});JSEvents.deferredCalls.sort(function(x,y){return x.precedence<y.precedence})},removeDeferredCalls:function(targetFunction){for(var i=0;i<JSEvents.deferredCalls.length;++i){if(JSEvents.deferredCalls[i].targetFunction==targetFunction){JSEvents.deferredCalls.splice(i,1);--i}}},canPerformEventHandlerRequests:function(){return JSEvents.inEventHandler&&JSEvents.currentEventHandler.allowsDeferredCalls},runDeferredCalls:function(){if(!JSEvents.canPerformEventHandlerRequests()){return}for(var i=0;i<JSEvents.deferredCalls.length;++i){var call=JSEvents.deferredCalls[i];JSEvents.deferredCalls.splice(i,1);--i;call.targetFunction.apply(null,call.argsList)}},eventHandlers:[],removeAllHandlersOnTarget:function(target,eventTypeString){for(var i=0;i<JSEvents.eventHandlers.length;++i){if(JSEvents.eventHandlers[i].target==target&&(!eventTypeString||eventTypeString==JSEvents.eventHandlers[i].eventTypeString)){JSEvents._removeHandler(i--)}}},_removeHandler:function(i){var h=JSEvents.eventHandlers[i];h.target.removeEventListener(h.eventTypeString,h.eventListenerFunc,h.useCapture);JSEvents.eventHandlers.splice(i,1)},registerOrRemoveHandler:function(eventHandler){var jsEventHandler=function jsEventHandler(event){++JSEvents.inEventHandler;JSEvents.currentEventHandler=eventHandler;JSEvents.runDeferredCalls();eventHandler.handlerFunc(event);JSEvents.runDeferredCalls();--JSEvents.inEventHandler};if(eventHandler.callbackfunc){eventHandler.eventListenerFunc=jsEventHandler;eventHandler.target.addEventListener(eventHandler.eventTypeString,jsEventHandler,eventHandler.useCapture);JSEvents.eventHandlers.push(eventHandler);JSEvents.registerRemoveEventListeners()}else{for(var i=0;i<JSEvents.eventHandlers.length;++i){if(JSEvents.eventHandlers[i].target==eventHandler.target&&JSEvents.eventHandlers[i].eventTypeString==eventHandler.eventTypeString){JSEvents._removeHandler(i--)}}}},getNodeNameForTarget:function(target){if(!target)return"";if(target==window)return"#window";if(target==screen)return"#screen";return target&&target.nodeName?target.nodeName:""},fullscreenEnabled:function(){return document.fullscreenEnabled||document.webkitFullscreenEnabled}};function requestPointerLock(target){if(target.requestPointerLock){target.requestPointerLock()}else if(target.msRequestPointerLock){target.msRequestPointerLock()}else{if(document.body.requestPointerLock||document.body.msRequestPointerLock){return-3}else{return-1}}return 0}function _emscripten_exit_pointerlock(){JSEvents.removeDeferredCalls(requestPointerLock);if(document.exitPointerLock){document.exitPointerLock()}else if(document.msExitPointerLock){document.msExitPointerLock()}else{return-1}return 0}function maybeCStringToJsString(cString){return cString>2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!=="undefined"?document:0,typeof window!=="undefined"?window:0];function findEventTarget(target){target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!=="undefined"?document.querySelector(target):undefined);return domElement}function getBoundingClientRect(e){return specialHTMLTargets.indexOf(e)<0?e.getBoundingClientRect():{"left":0,"top":0}}function _emscripten_get_element_css_size(target,width,height){target=findEventTarget(target);if(!target)return-4;var rect=getBoundingClientRect(target);HEAPF64[width>>3]=rect.width;HEAPF64[height>>3]=rect.height;return 0}function fillGamepadEventData(eventStruct,e){HEAPF64[eventStruct>>3]=e.timestamp;for(var i=0;i<e.axes.length;++i){HEAPF64[eventStruct+i*8+16>>3]=e.axes[i]}for(var i=0;i<e.buttons.length;++i){if(typeof e.buttons[i]==="object"){HEAPF64[eventStruct+i*8+528>>3]=e.buttons[i].value}else{HEAPF64[eventStruct+i*8+528>>3]=e.buttons[i]}}for(var i=0;i<e.buttons.length;++i){if(typeof e.buttons[i]==="object"){HEAP32[eventStruct+i*4+1040>>2]=e.buttons[i].pressed}else{HEAP32[eventStruct+i*4+1040>>2]=e.buttons[i]==1}}HEAP32[eventStruct+1296>>2]=e.connected;HEAP32[eventStruct+1300>>2]=e.index;HEAP32[eventStruct+8>>2]=e.axes.length;HEAP32[eventStruct+12>>2]=e.buttons.length;stringToUTF8(e.id,eventStruct+1304,64);stringToUTF8(e.mapping,eventStruct+1368,64)}function _emscripten_get_gamepad_status(index,gamepadState){if(index<0||index>=JSEvents.lastGamepadState.length)return-5;if(!JSEvents.lastGamepadState[index])return-7;fillGamepadEventData(gamepadState,JSEvents.lastGamepadState[index]);return 0}function _emscripten_get_num_gamepads(){return JSEvents.lastGamepadState.length}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension("ANGLE_instanced_arrays");if(ext){ctx["vertexAttribDivisor"]=function(index,divisor){ext["vertexAttribDivisorANGLE"](index,divisor)};ctx["drawArraysInstanced"]=function(mode,first,count,primcount){ext["drawArraysInstancedANGLE"](mode,first,count,primcount)};ctx["drawElementsInstanced"]=function(mode,count,type,indices,primcount){ext["drawElementsInstancedANGLE"](mode,count,type,indices,primcount)};return 1}}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension("OES_vertex_array_object");if(ext){ctx["createVertexArray"]=function(){return ext["createVertexArrayOES"]()};ctx["deleteVertexArray"]=function(vao){ext["deleteVertexArrayOES"](vao)};ctx["bindVertexArray"]=function(vao){ext["bindVertexArrayOES"](vao)};ctx["isVertexArray"]=function(vao){return ext["isVertexArrayOES"](vao)};return 1}}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension("WEBGL_draw_buffers");if(ext){ctx["drawBuffers"]=function(n,bufs){ext["drawBuffersWEBGL"](n,bufs)};return 1}}function __webgl_enable_WEBGL_multi_draw(ctx){return!!(ctx.multiDrawWebgl=ctx.getExtension("WEBGL_multi_draw"))}var GL={counter:1,buffers:[],programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:[],offscreenCanvases:{},timerQueriesEXT:[],programInfos:{},stringCache:{},unpackAlignment:4,recordError:function recordError(errorCode){if(!GL.lastError){GL.lastError=errorCode}},getNewId:function(table){var ret=GL.counter++;for(var i=table.length;i<ret;i++){table[i]=null}return ret},getSource:function(shader,count,string,length){var source="";for(var i=0;i<count;++i){var len=length?HEAP32[length+i*4>>2]:-1;source+=UTF8ToString(HEAP32[string+i*4>>2],len<0?undefined:len)}return source},createContext:function(canvas,webGLContextAttributes){var ctx=canvas.getContext("webgl",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:function(ctx,webGLContextAttributes){var handle=GL.getNewId(GL.contexts);var context={handle:handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};if(ctx.canvas)ctx.canvas.GLctxObject=context;GL.contexts[handle]=context;if(typeof webGLContextAttributes.enableExtensionsByDefault==="undefined"||webGLContextAttributes.enableExtensionsByDefault){GL.initExtensions(context)}return handle},makeContextCurrent:function(contextHandle){GL.currentContext=GL.contexts[contextHandle];Module.ctx=GLctx=GL.currentContext&&GL.currentContext.GLctx;return!(contextHandle&&!GLctx)},getContext:function(contextHandle){return GL.contexts[contextHandle]},deleteContext:function(contextHandle){if(GL.currentContext===GL.contexts[contextHandle])GL.currentContext=null;if(typeof JSEvents==="object")JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas);if(GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas)GL.contexts[contextHandle].GLctx.canvas.GLctxObject=undefined;GL.contexts[contextHandle]=null},initExtensions:function(context){if(!context)context=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;__webgl_enable_ANGLE_instanced_arrays(GLctx);__webgl_enable_OES_vertex_array_object(GLctx);__webgl_enable_WEBGL_draw_buffers(GLctx);GLctx.disjointTimerQueryExt=GLctx.getExtension("EXT_disjoint_timer_query");__webgl_enable_WEBGL_multi_draw(GLctx);var exts=GLctx.getSupportedExtensions()||[];exts.forEach(function(ext){if(ext.indexOf("lose_context")<0&&ext.indexOf("debug")<0){GLctx.getExtension(ext)}})},populateUniformTable:function(program){var p=GL.programs[program];var ptable=GL.programInfos[program]={uniforms:{},maxUniformLength:0,maxAttributeLength:-1,maxUniformBlockNameLength:-1};var utable=ptable.uniforms;var numUniforms=GLctx.getProgramParameter(p,35718);for(var i=0;i<numUniforms;++i){var u=GLctx.getActiveUniform(p,i);var name=u.name;ptable.maxUniformLength=Math.max(ptable.maxUniformLength,name.length+1);if(name.slice(-1)=="]"){name=name.slice(0,name.lastIndexOf("["))}var loc=GLctx.getUniformLocation(p,name);if(loc){var id=GL.getNewId(GL.uniforms);utable[name]=[u.size,id];GL.uniforms[id]=loc;for(var j=1;j<u.size;++j){var n=name+"["+j+"]";loc=GLctx.getUniformLocation(p,n);id=GL.getNewId(GL.uniforms);GL.uniforms[id]=loc}}}}};function _emscripten_glActiveTexture(x0){GLctx["activeTexture"](x0)}function _emscripten_glAttachShader(program,shader){GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _emscripten_glBeginQueryEXT(target,id){GLctx.disjointTimerQueryExt["beginQueryEXT"](target,GL.timerQueriesEXT[id])}function _emscripten_glBindAttribLocation(program,index,name){GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))}function _emscripten_glBindBuffer(target,buffer){GLctx.bindBuffer(target,GL.buffers[buffer])}function _emscripten_glBindFramebuffer(target,framebuffer){GLctx.bindFramebuffer(target,GL.framebuffers[framebuffer])}function _emscripten_glBindRenderbuffer(target,renderbuffer){GLctx.bindRenderbuffer(target,GL.renderbuffers[renderbuffer])}function _emscripten_glBindTexture(target,texture){GLctx.bindTexture(target,GL.textures[texture])}function _emscripten_glBindVertexArrayOES(vao){GLctx["bindVertexArray"](GL.vaos[vao])}function _emscripten_glBlendColor(x0,x1,x2,x3){GLctx["blendColor"](x0,x1,x2,x3)}function _emscripten_glBlendEquation(x0){GLctx["blendEquation"](x0)}function _emscripten_glBlendEquationSeparate(x0,x1){GLctx["blendEquationSeparate"](x0,x1)}function _emscripten_glBlendFunc(x0,x1){GLctx["blendFunc"](x0,x1)}function _emscripten_glBlendFuncSeparate(x0,x1,x2,x3){GLctx["blendFuncSeparate"](x0,x1,x2,x3)}function _emscripten_glBufferData(target,size,data,usage){GLctx.bufferData(target,data?HEAPU8.subarray(data,data+size):size,usage)}function _emscripten_glBufferSubData(target,offset,size,data){GLctx.bufferSubData(target,offset,HEAPU8.subarray(data,data+size))}function _emscripten_glCheckFramebufferStatus(x0){return GLctx["checkFramebufferStatus"](x0)}function _emscripten_glClear(x0){GLctx["clear"](x0)}function _emscripten_glClearColor(x0,x1,x2,x3){GLctx["clearColor"](x0,x1,x2,x3)}function _emscripten_glClearDepthf(x0){GLctx["clearDepth"](x0)}function _emscripten_glClearStencil(x0){GLctx["clearStencil"](x0)}function _emscripten_glColorMask(red,green,blue,alpha){GLctx.colorMask(!!red,!!green,!!blue,!!alpha)}function _emscripten_glCompileShader(shader){GLctx.compileShader(GL.shaders[shader])}function _emscripten_glCompressedTexImage2D(target,level,internalFormat,width,height,border,imageSize,data){GLctx["compressedTexImage2D"](target,level,internalFormat,width,height,border,data?HEAPU8.subarray(data,data+imageSize):null)}function _emscripten_glCompressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,imageSize,data){GLctx["compressedTexSubImage2D"](target,level,xoffset,yoffset,width,height,format,data?HEAPU8.subarray(data,data+imageSize):null)}function _emscripten_glCopyTexImage2D(x0,x1,x2,x3,x4,x5,x6,x7){GLctx["copyTexImage2D"](x0,x1,x2,x3,x4,x5,x6,x7)}function _emscripten_glCopyTexSubImage2D(x0,x1,x2,x3,x4,x5,x6,x7){GLctx["copyTexSubImage2D"](x0,x1,x2,x3,x4,x5,x6,x7)}function _emscripten_glCreateProgram(){var id=GL.getNewId(GL.programs);var program=GLctx.createProgram();program.name=id;GL.programs[id]=program;return id}function _emscripten_glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}function _emscripten_glCullFace(x0){GLctx["cullFace"](x0)}function _emscripten_glDeleteBuffers(n,buffers){for(var i=0;i<n;i++){var id=HEAP32[buffers+i*4>>2];var buffer=GL.buffers[id];if(!buffer)continue;GLctx.deleteBuffer(buffer);buffer.name=0;GL.buffers[id]=null}}function _emscripten_glDeleteFramebuffers(n,framebuffers){for(var i=0;i<n;++i){var id=HEAP32[framebuffers+i*4>>2];var framebuffer=GL.framebuffers[id];if(!framebuffer)continue;GLctx.deleteFramebuffer(framebuffer);framebuffer.name=0;GL.framebuffers[id]=null}}function _emscripten_glDeleteProgram(id){if(!id)return;var program=GL.programs[id];if(!program){GL.recordError(1281);return}GLctx.deleteProgram(program);program.name=0;GL.programs[id]=null;GL.programInfos[id]=null}function _emscripten_glDeleteQueriesEXT(n,ids){for(var i=0;i<n;i++){var id=HEAP32[ids+i*4>>2];var query=GL.timerQueriesEXT[id];if(!query)continue;GLctx.disjointTimerQueryExt["deleteQueryEXT"](query);GL.timerQueriesEXT[id]=null}}function _emscripten_glDeleteRenderbuffers(n,renderbuffers){for(var i=0;i<n;i++){var id=HEAP32[renderbuffers+i*4>>2];var renderbuffer=GL.renderbuffers[id];if(!renderbuffer)continue;GLctx.deleteRenderbuffer(renderbuffer);renderbuffer.name=0;GL.renderbuffers[id]=null}}function _emscripten_glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}function _emscripten_glDeleteTextures(n,textures){for(var i=0;i<n;i++){var id=HEAP32[textures+i*4>>2];var texture=GL.textures[id];if(!texture)continue;GLctx.deleteTexture(texture);texture.name=0;GL.textures[id]=null}}function _emscripten_glDeleteVertexArraysOES(n,vaos){for(var i=0;i<n;i++){var id=HEAP32[vaos+i*4>>2];GLctx["deleteVertexArray"](GL.vaos[id]);GL.vaos[id]=null}}function _emscripten_glDepthFunc(x0){GLctx["depthFunc"](x0)}function _emscripten_glDepthMask(flag){GLctx.depthMask(!!flag)}function _emscripten_glDepthRangef(x0,x1){GLctx["depthRange"](x0,x1)}function _emscripten_glDetachShader(program,shader){GLctx.detachShader(GL.programs[program],GL.shaders[shader])}function _emscripten_glDisable(x0){GLctx["disable"](x0)}function _emscripten_glDisableVertexAttribArray(index){GLctx.disableVertexAttribArray(index)}function _emscripten_glDrawArrays(mode,first,count){GLctx.drawArrays(mode,first,count)}function _emscripten_glDrawArraysInstancedANGLE(mode,first,count,primcount){GLctx["drawArraysInstanced"](mode,first,count,primcount)}var tempFixedLengthArray=[];function _emscripten_glDrawBuffersWEBGL(n,bufs){var bufArray=tempFixedLengthArray[n];for(var i=0;i<n;i++){bufArray[i]=HEAP32[bufs+i*4>>2]}GLctx["drawBuffers"](bufArray)}function _emscripten_glDrawElements(mode,count,type,indices){GLctx.drawElements(mode,count,type,indices)}function _emscripten_glDrawElementsInstancedANGLE(mode,count,type,indices,primcount){GLctx["drawElementsInstanced"](mode,count,type,indices,primcount)}function _emscripten_glEnable(x0){GLctx["enable"](x0)}function _emscripten_glEnableVertexAttribArray(index){GLctx.enableVertexAttribArray(index)}function _emscripten_glEndQueryEXT(target){GLctx.disjointTimerQueryExt["endQueryEXT"](target)}function _emscripten_glFinish(){GLctx["finish"]()}function _emscripten_glFlush(){GLctx["flush"]()}function _emscripten_glFramebufferRenderbuffer(target,attachment,renderbuffertarget,renderbuffer){GLctx.framebufferRenderbuffer(target,attachment,renderbuffertarget,GL.renderbuffers[renderbuffer])}function _emscripten_glFramebufferTexture2D(target,attachment,textarget,texture,level){GLctx.framebufferTexture2D(target,attachment,textarget,GL.textures[texture],level)}function _emscripten_glFrontFace(x0){GLctx["frontFace"](x0)}function __glGenObject(n,buffers,createFunction,objectTable){for(var i=0;i<n;i++){var buffer=GLctx[createFunction]();var id=buffer&&GL.getNewId(objectTable);if(buffer){buffer.name=id;objectTable[id]=buffer}else{GL.recordError(1282)}HEAP32[buffers+i*4>>2]=id}}function _emscripten_glGenBuffers(n,buffers){__glGenObject(n,buffers,"createBuffer",GL.buffers)}function _emscripten_glGenFramebuffers(n,ids){__glGenObject(n,ids,"createFramebuffer",GL.framebuffers)}function _emscripten_glGenQueriesEXT(n,ids){for(var i=0;i<n;i++){var query=GLctx.disjointTimerQueryExt["createQueryEXT"]();if(!query){GL.recordError(1282);while(i<n)HEAP32[ids+i++*4>>2]=0;return}var id=GL.getNewId(GL.timerQueriesEXT);query.name=id;GL.timerQueriesEXT[id]=query;HEAP32[ids+i*4>>2]=id}}function _emscripten_glGenRenderbuffers(n,renderbuffers){__glGenObject(n,renderbuffers,"createRenderbuffer",GL.renderbuffers)}function _emscripten_glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures)}function _emscripten_glGenVertexArraysOES(n,arrays){__glGenObject(n,arrays,"createVertexArray",GL.vaos)}function _emscripten_glGenerateMipmap(x0){GLctx["generateMipmap"](x0)}function __glGetActiveAttribOrUniform(funcName,program,index,bufSize,length,size,type,name){program=GL.programs[program];var info=GLctx[funcName](program,index);if(info){var numBytesWrittenExclNull=name&&stringToUTF8(info.name,name,bufSize);if(length)HEAP32[length>>2]=numBytesWrittenExclNull;if(size)HEAP32[size>>2]=info.size;if(type)HEAP32[type>>2]=info.type}}function _emscripten_glGetActiveAttrib(program,index,bufSize,length,size,type,name){__glGetActiveAttribOrUniform("getActiveAttrib",program,index,bufSize,length,size,type,name)}function _emscripten_glGetActiveUniform(program,index,bufSize,length,size,type,name){__glGetActiveAttribOrUniform("getActiveUniform",program,index,bufSize,length,size,type,name)}function _emscripten_glGetAttachedShaders(program,maxCount,count,shaders){var result=GLctx.getAttachedShaders(GL.programs[program]);var len=result.length;if(len>maxCount){len=maxCount}HEAP32[count>>2]=len;for(var i=0;i<len;++i){var id=GL.shaders.indexOf(result[i]);HEAP32[shaders+i*4>>2]=id}}function _emscripten_glGetAttribLocation(program,name){return GLctx.getAttribLocation(GL.programs[program],UTF8ToString(name))}function writeI53ToI64(ptr,num){HEAPU32[ptr>>2]=num;HEAPU32[ptr+4>>2]=(num-HEAPU32[ptr>>2])/4294967296}function emscriptenWebGLGet(name_,p,type){if(!p){GL.recordError(1281);return}var ret=undefined;switch(name_){case 36346:ret=1;break;case 36344:if(type!=0&&type!=1){GL.recordError(1280)}return;case 36345:ret=0;break;case 34466:var formats=GLctx.getParameter(34467);ret=formats?formats.length:0;break}if(ret===undefined){var result=GLctx.getParameter(name_);switch(typeof result){case"number":ret=result;break;case"boolean":ret=result?1:0;break;case"string":GL.recordError(1280);return;case"object":if(result===null){switch(name_){case 34964:case 35725:case 34965:case 36006:case 36007:case 32873:case 34229:case 34068:{ret=0;break}default:{GL.recordError(1280);return}}}else if(result instanceof Float32Array||result instanceof Uint32Array||result instanceof Int32Array||result instanceof Array){for(var i=0;i<result.length;++i){switch(type){case 0:HEAP32[p+i*4>>2]=result[i];break;case 2:HEAPF32[p+i*4>>2]=result[i];break;case 4:HEAP8[p+i>>0]=result[i]?1:0;break}}return}else{try{ret=result.name|0}catch(e){GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v: Unknown object returned from WebGL getParameter("+name_+")! (error: "+e+")");return}}break;default:GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v: Native code calling glGet"+type+"v("+name_+") and it returns "+result+" of type "+typeof result+"!");return}}switch(type){case 1:writeI53ToI64(p,ret);break;case 0:HEAP32[p>>2]=ret;break;case 2:HEAPF32[p>>2]=ret;break;case 4:HEAP8[p>>0]=ret?1:0;break}}function _emscripten_glGetBooleanv(name_,p){emscriptenWebGLGet(name_,p,4)}function _emscripten_glGetBufferParameteriv(target,value,data){if(!data){GL.recordError(1281);return}HEAP32[data>>2]=GLctx.getBufferParameter(target,value)}function _emscripten_glGetError(){var error=GLctx.getError()||GL.lastError;GL.lastError=0;return error}function _emscripten_glGetFloatv(name_,p){emscriptenWebGLGet(name_,p,2)}function _emscripten_glGetFramebufferAttachmentParameteriv(target,attachment,pname,params){var result=GLctx.getFramebufferAttachmentParameter(target,attachment,pname);if(result instanceof WebGLRenderbuffer||result instanceof WebGLTexture){result=result.name|0}HEAP32[params>>2]=result}function _emscripten_glGetIntegerv(name_,p){emscriptenWebGLGet(name_,p,0)}function _emscripten_glGetProgramInfoLog(program,maxLength,length,infoLog){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _emscripten_glGetProgramiv(program,pname,p){if(!p){GL.recordError(1281);return}if(program>=GL.counter){GL.recordError(1281);return}var ptable=GL.programInfos[program];if(!ptable){GL.recordError(1282);return}if(pname==35716){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";HEAP32[p>>2]=log.length+1}else if(pname==35719){HEAP32[p>>2]=ptable.maxUniformLength}else if(pname==35722){if(ptable.maxAttributeLength==-1){program=GL.programs[program];var numAttribs=GLctx.getProgramParameter(program,35721);ptable.maxAttributeLength=0;for(var i=0;i<numAttribs;++i){var activeAttrib=GLctx.getActiveAttrib(program,i);ptable.maxAttributeLength=Math.max(ptable.maxAttributeLength,activeAttrib.name.length+1)}}HEAP32[p>>2]=ptable.maxAttributeLength}else if(pname==35381){if(ptable.maxUniformBlockNameLength==-1){program=GL.programs[program];var numBlocks=GLctx.getProgramParameter(program,35382);ptable.maxUniformBlockNameLength=0;for(var i=0;i<numBlocks;++i){var activeBlockName=GLctx.getActiveUniformBlockName(program,i);ptable.maxUniformBlockNameLength=Math.max(ptable.maxUniformBlockNameLength,activeBlockName.length+1)}}HEAP32[p>>2]=ptable.maxUniformBlockNameLength}else{HEAP32[p>>2]=GLctx.getProgramParameter(GL.programs[program],pname)}}function _emscripten_glGetQueryObjecti64vEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.timerQueriesEXT[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}writeI53ToI64(params,ret)}function _emscripten_glGetQueryObjectivEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.timerQueriesEXT[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}HEAP32[params>>2]=ret}function _emscripten_glGetQueryObjectui64vEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.timerQueriesEXT[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}writeI53ToI64(params,ret)}function _emscripten_glGetQueryObjectuivEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.timerQueriesEXT[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}HEAP32[params>>2]=ret}function _emscripten_glGetQueryivEXT(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.disjointTimerQueryExt["getQueryEXT"](target,pname)}function _emscripten_glGetRenderbufferParameteriv(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getRenderbufferParameter(target,pname)}function _emscripten_glGetShaderInfoLog(shader,maxLength,length,infoLog){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _emscripten_glGetShaderPrecisionFormat(shaderType,precisionType,range,precision){var result=GLctx.getShaderPrecisionFormat(shaderType,precisionType);HEAP32[range>>2]=result.rangeMin;HEAP32[range+4>>2]=result.rangeMax;HEAP32[precision>>2]=result.precision}function _emscripten_glGetShaderSource(shader,bufSize,length,source){var result=GLctx.getShaderSource(GL.shaders[shader]);if(!result)return;var numBytesWrittenExclNull=bufSize>0&&source?stringToUTF8(result,source,bufSize):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _emscripten_glGetShaderiv(shader,pname,p){if(!p){GL.recordError(1281);return}if(pname==35716){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var logLength=log?log.length+1:0;HEAP32[p>>2]=logLength}else if(pname==35720){var source=GLctx.getShaderSource(GL.shaders[shader]);var sourceLength=source?source.length+1:0;HEAP32[p>>2]=sourceLength}else{HEAP32[p>>2]=GLctx.getShaderParameter(GL.shaders[shader],pname)}}function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _emscripten_glGetString(name_){if(GL.stringCache[name_])return GL.stringCache[name_];var ret;switch(name_){case 7939:var exts=GLctx.getSupportedExtensions()||[];exts=exts.concat(exts.map(function(e){return"GL_"+e}));ret=stringToNewUTF8(exts.join(" "));break;case 7936:case 7937:case 37445:case 37446:var s=GLctx.getParameter(name_);if(!s){GL.recordError(1280)}ret=stringToNewUTF8(s);break;case 7938:var glVersion=GLctx.getParameter(7938);{glVersion="OpenGL ES 2.0 ("+glVersion+")"}ret=stringToNewUTF8(glVersion);break;case 35724:var glslVersion=GLctx.getParameter(35724);var ver_re=/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/;var ver_num=glslVersion.match(ver_re);if(ver_num!==null){if(ver_num[1].length==3)ver_num[1]=ver_num[1]+"0";glslVersion="OpenGL ES GLSL ES "+ver_num[1]+" ("+glslVersion+")"}ret=stringToNewUTF8(glslVersion);break;default:GL.recordError(1280);return 0}GL.stringCache[name_]=ret;return ret}function _emscripten_glGetTexParameterfv(target,pname,params){if(!params){GL.recordError(1281);return}HEAPF32[params>>2]=GLctx.getTexParameter(target,pname)}function _emscripten_glGetTexParameteriv(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getTexParameter(target,pname)}function jstoi_q(str){return parseInt(str)}function _emscripten_glGetUniformLocation(program,name){name=UTF8ToString(name);var arrayIndex=0;if(name[name.length-1]=="]"){var leftBrace=name.lastIndexOf("[");arrayIndex=name[leftBrace+1]!="]"?jstoi_q(name.slice(leftBrace+1)):0;name=name.slice(0,leftBrace)}var uniformInfo=GL.programInfos[program]&&GL.programInfos[program].uniforms[name];if(uniformInfo&&arrayIndex>=0&&arrayIndex<uniformInfo[0]){return uniformInfo[1]+arrayIndex}else{return-1}}function emscriptenWebGLGetUniform(program,location,params,type){if(!params){GL.recordError(1281);return}var data=GLctx.getUniform(GL.programs[program],GL.uniforms[location]);if(typeof data=="number"||typeof data=="boolean"){switch(type){case 0:HEAP32[params>>2]=data;break;case 2:HEAPF32[params>>2]=data;break}}else{for(var i=0;i<data.length;i++){switch(type){case 0:HEAP32[params+i*4>>2]=data[i];break;case 2:HEAPF32[params+i*4>>2]=data[i];break}}}}function _emscripten_glGetUniformfv(program,location,params){emscriptenWebGLGetUniform(program,location,params,2)}function _emscripten_glGetUniformiv(program,location,params){emscriptenWebGLGetUniform(program,location,params,0)}function _emscripten_glGetVertexAttribPointerv(index,pname,pointer){if(!pointer){GL.recordError(1281);return}HEAP32[pointer>>2]=GLctx.getVertexAttribOffset(index,pname)}function emscriptenWebGLGetVertexAttrib(index,pname,params,type){if(!params){GL.recordError(1281);return}var data=GLctx.getVertexAttrib(index,pname);if(pname==34975){HEAP32[params>>2]=data&&data["name"]}else if(typeof data=="number"||typeof data=="boolean"){switch(type){case 0:HEAP32[params>>2]=data;break;case 2:HEAPF32[params>>2]=data;break;case 5:HEAP32[params>>2]=Math.fround(data);break}}else{for(var i=0;i<data.length;i++){switch(type){case 0:HEAP32[params+i*4>>2]=data[i];break;case 2:HEAPF32[params+i*4>>2]=data[i];break;case 5:HEAP32[params+i*4>>2]=Math.fround(data[i]);break}}}}function _emscripten_glGetVertexAttribfv(index,pname,params){emscriptenWebGLGetVertexAttrib(index,pname,params,2)}function _emscripten_glGetVertexAttribiv(index,pname,params){emscriptenWebGLGetVertexAttrib(index,pname,params,5)}function _emscripten_glHint(x0,x1){GLctx["hint"](x0,x1)}function _emscripten_glIsBuffer(buffer){var b=GL.buffers[buffer];if(!b)return 0;return GLctx.isBuffer(b)}function _emscripten_glIsEnabled(x0){return GLctx["isEnabled"](x0)}function _emscripten_glIsFramebuffer(framebuffer){var fb=GL.framebuffers[framebuffer];if(!fb)return 0;return GLctx.isFramebuffer(fb)}function _emscripten_glIsProgram(program){program=GL.programs[program];if(!program)return 0;return GLctx.isProgram(program)}function _emscripten_glIsQueryEXT(id){var query=GL.timerQueriesEXT[id];if(!query)return 0;return GLctx.disjointTimerQueryExt["isQueryEXT"](query)}function _emscripten_glIsRenderbuffer(renderbuffer){var rb=GL.renderbuffers[renderbuffer];if(!rb)return 0;return GLctx.isRenderbuffer(rb)}function _emscripten_glIsShader(shader){var s=GL.shaders[shader];if(!s)return 0;return GLctx.isShader(s)}function _emscripten_glIsTexture(id){var texture=GL.textures[id];if(!texture)return 0;return GLctx.isTexture(texture)}function _emscripten_glIsVertexArrayOES(array){var vao=GL.vaos[array];if(!vao)return 0;return GLctx["isVertexArray"](vao)}function _emscripten_glLineWidth(x0){GLctx["lineWidth"](x0)}function _emscripten_glLinkProgram(program){GLctx.linkProgram(GL.programs[program]);GL.populateUniformTable(program)}function _emscripten_glPixelStorei(pname,param){if(pname==3317){GL.unpackAlignment=param}GLctx.pixelStorei(pname,param)}function _emscripten_glPolygonOffset(x0,x1){GLctx["polygonOffset"](x0,x1)}function _emscripten_glQueryCounterEXT(id,target){GLctx.disjointTimerQueryExt["queryCounterEXT"](GL.timerQueriesEXT[id],target)}function computeUnpackAlignedImageSize(width,height,sizePerPixel,alignment){function roundedToNextMultipleOf(x,y){return x+y-1&-y}var plainRowSize=width*sizePerPixel;var alignedRowSize=roundedToNextMultipleOf(plainRowSize,alignment);return height*alignedRowSize}function __colorChannelsInGlTextureFormat(format){var colorChannels={5:3,6:4,8:2,29502:3,29504:4};return colorChannels[format-6402]||1}function heapObjectForWebGLType(type){type-=5120;if(type==1)return HEAPU8;if(type==4)return HEAP32;if(type==6)return HEAPF32;if(type==5||type==28922)return HEAPU32;return HEAPU16}function heapAccessShiftForWebGLHeap(heap){return 31-Math.clz32(heap.BYTES_PER_ELEMENT)}function emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat){var heap=heapObjectForWebGLType(type);var shift=heapAccessShiftForWebGLHeap(heap);var byteSize=1<<shift;var sizePerPixel=__colorChannelsInGlTextureFormat(format)*byteSize;var bytes=computeUnpackAlignedImageSize(width,height,sizePerPixel,GL.unpackAlignment);return heap.subarray(pixels>>shift,pixels+bytes>>shift)}function _emscripten_glReadPixels(x,y,width,height,format,type,pixels){var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);return}GLctx.readPixels(x,y,width,height,format,type,pixelData)}function _emscripten_glReleaseShaderCompiler(){}function _emscripten_glRenderbufferStorage(x0,x1,x2,x3){GLctx["renderbufferStorage"](x0,x1,x2,x3)}function _emscripten_glSampleCoverage(value,invert){GLctx.sampleCoverage(value,!!invert)}function _emscripten_glScissor(x0,x1,x2,x3){GLctx["scissor"](x0,x1,x2,x3)}function _emscripten_glShaderBinary(){GL.recordError(1280)}function _emscripten_glShaderSource(shader,count,string,length){var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}function _emscripten_glStencilFunc(x0,x1,x2){GLctx["stencilFunc"](x0,x1,x2)}function _emscripten_glStencilFuncSeparate(x0,x1,x2,x3){GLctx["stencilFuncSeparate"](x0,x1,x2,x3)}function _emscripten_glStencilMask(x0){GLctx["stencilMask"](x0)}function _emscripten_glStencilMaskSeparate(x0,x1){GLctx["stencilMaskSeparate"](x0,x1)}function _emscripten_glStencilOp(x0,x1,x2){GLctx["stencilOp"](x0,x1,x2)}function _emscripten_glStencilOpSeparate(x0,x1,x2,x3){GLctx["stencilOpSeparate"](x0,x1,x2,x3)}function _emscripten_glTexImage2D(target,level,internalFormat,width,height,border,format,type,pixels){GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels?emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat):null)}function _emscripten_glTexParameterf(x0,x1,x2){GLctx["texParameterf"](x0,x1,x2)}function _emscripten_glTexParameterfv(target,pname,params){var param=HEAPF32[params>>2];GLctx.texParameterf(target,pname,param)}function _emscripten_glTexParameteri(x0,x1,x2){GLctx["texParameteri"](x0,x1,x2)}function _emscripten_glTexParameteriv(target,pname,params){var param=HEAP32[params>>2];GLctx.texParameteri(target,pname,param)}function _emscripten_glTexSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixels){var pixelData=null;if(pixels)pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,0);GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixelData)}function _emscripten_glUniform1f(location,v0){GLctx.uniform1f(GL.uniforms[location],v0)}var miniTempWebGLFloatBuffers=[];function _emscripten_glUniform1fv(location,count,value){if(count<=288){var view=miniTempWebGLFloatBuffers[count-1];for(var i=0;i<count;++i){view[i]=HEAPF32[value+4*i>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*4>>2)}GLctx.uniform1fv(GL.uniforms[location],view)}function _emscripten_glUniform1i(location,v0){GLctx.uniform1i(GL.uniforms[location],v0)}var __miniTempWebGLIntBuffers=[];function _emscripten_glUniform1iv(location,count,value){if(count<=288){var view=__miniTempWebGLIntBuffers[count-1];for(var i=0;i<count;++i){view[i]=HEAP32[value+4*i>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*4>>2)}GLctx.uniform1iv(GL.uniforms[location],view)}function _emscripten_glUniform2f(location,v0,v1){GLctx.uniform2f(GL.uniforms[location],v0,v1)}function _emscripten_glUniform2fv(location,count,value){if(count<=144){var view=miniTempWebGLFloatBuffers[2*count-1];for(var i=0;i<2*count;i+=2){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*8>>2)}GLctx.uniform2fv(GL.uniforms[location],view)}function _emscripten_glUniform2i(location,v0,v1){GLctx.uniform2i(GL.uniforms[location],v0,v1)}function _emscripten_glUniform2iv(location,count,value){if(count<=144){var view=__miniTempWebGLIntBuffers[2*count-1];for(var i=0;i<2*count;i+=2){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*8>>2)}GLctx.uniform2iv(GL.uniforms[location],view)}function _emscripten_glUniform3f(location,v0,v1,v2){GLctx.uniform3f(GL.uniforms[location],v0,v1,v2)}function _emscripten_glUniform3fv(location,count,value){if(count<=96){var view=miniTempWebGLFloatBuffers[3*count-1];for(var i=0;i<3*count;i+=3){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*12>>2)}GLctx.uniform3fv(GL.uniforms[location],view)}function _emscripten_glUniform3i(location,v0,v1,v2){GLctx.uniform3i(GL.uniforms[location],v0,v1,v2)}function _emscripten_glUniform3iv(location,count,value){if(count<=96){var view=__miniTempWebGLIntBuffers[3*count-1];for(var i=0;i<3*count;i+=3){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2];view[i+2]=HEAP32[value+(4*i+8)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*12>>2)}GLctx.uniform3iv(GL.uniforms[location],view)}function _emscripten_glUniform4f(location,v0,v1,v2,v3){GLctx.uniform4f(GL.uniforms[location],v0,v1,v2,v3)}function _emscripten_glUniform4fv(location,count,value){if(count<=72){var view=miniTempWebGLFloatBuffers[4*count-1];var heap=HEAPF32;value>>=2;for(var i=0;i<4*count;i+=4){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3]}}else{var view=HEAPF32.subarray(value>>2,value+count*16>>2)}GLctx.uniform4fv(GL.uniforms[location],view)}function _emscripten_glUniform4i(location,v0,v1,v2,v3){GLctx.uniform4i(GL.uniforms[location],v0,v1,v2,v3)}function _emscripten_glUniform4iv(location,count,value){if(count<=72){var view=__miniTempWebGLIntBuffers[4*count-1];for(var i=0;i<4*count;i+=4){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2];view[i+2]=HEAP32[value+(4*i+8)>>2];view[i+3]=HEAP32[value+(4*i+12)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*16>>2)}GLctx.uniform4iv(GL.uniforms[location],view)}function _emscripten_glUniformMatrix2fv(location,count,transpose,value){if(count<=72){var view=miniTempWebGLFloatBuffers[4*count-1];for(var i=0;i<4*count;i+=4){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2];view[i+3]=HEAPF32[value+(4*i+12)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*16>>2)}GLctx.uniformMatrix2fv(GL.uniforms[location],!!transpose,view)}function _emscripten_glUniformMatrix3fv(location,count,transpose,value){if(count<=32){var view=miniTempWebGLFloatBuffers[9*count-1];for(var i=0;i<9*count;i+=9){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2];view[i+3]=HEAPF32[value+(4*i+12)>>2];view[i+4]=HEAPF32[value+(4*i+16)>>2];view[i+5]=HEAPF32[value+(4*i+20)>>2];view[i+6]=HEAPF32[value+(4*i+24)>>2];view[i+7]=HEAPF32[value+(4*i+28)>>2];view[i+8]=HEAPF32[value+(4*i+32)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*36>>2)}GLctx.uniformMatrix3fv(GL.uniforms[location],!!transpose,view)}function _emscripten_glUniformMatrix4fv(location,count,transpose,value){if(count<=18){var view=miniTempWebGLFloatBuffers[16*count-1];var heap=HEAPF32;value>>=2;for(var i=0;i<16*count;i+=16){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3];view[i+4]=heap[dst+4];view[i+5]=heap[dst+5];view[i+6]=heap[dst+6];view[i+7]=heap[dst+7];view[i+8]=heap[dst+8];view[i+9]=heap[dst+9];view[i+10]=heap[dst+10];view[i+11]=heap[dst+11];view[i+12]=heap[dst+12];view[i+13]=heap[dst+13];view[i+14]=heap[dst+14];view[i+15]=heap[dst+15]}}else{var view=HEAPF32.subarray(value>>2,value+count*64>>2)}GLctx.uniformMatrix4fv(GL.uniforms[location],!!transpose,view)}function _emscripten_glUseProgram(program){GLctx.useProgram(GL.programs[program])}function _emscripten_glValidateProgram(program){GLctx.validateProgram(GL.programs[program])}function _emscripten_glVertexAttrib1f(x0,x1){GLctx["vertexAttrib1f"](x0,x1)}function _emscripten_glVertexAttrib1fv(index,v){GLctx.vertexAttrib1f(index,HEAPF32[v>>2])}function _emscripten_glVertexAttrib2f(x0,x1,x2){GLctx["vertexAttrib2f"](x0,x1,x2)}function _emscripten_glVertexAttrib2fv(index,v){GLctx.vertexAttrib2f(index,HEAPF32[v>>2],HEAPF32[v+4>>2])}function _emscripten_glVertexAttrib3f(x0,x1,x2,x3){GLctx["vertexAttrib3f"](x0,x1,x2,x3)}function _emscripten_glVertexAttrib3fv(index,v){GLctx.vertexAttrib3f(index,HEAPF32[v>>2],HEAPF32[v+4>>2],HEAPF32[v+8>>2])}function _emscripten_glVertexAttrib4f(x0,x1,x2,x3,x4){GLctx["vertexAttrib4f"](x0,x1,x2,x3,x4)}function _emscripten_glVertexAttrib4fv(index,v){GLctx.vertexAttrib4f(index,HEAPF32[v>>2],HEAPF32[v+4>>2],HEAPF32[v+8>>2],HEAPF32[v+12>>2])}function _emscripten_glVertexAttribDivisorANGLE(index,divisor){GLctx["vertexAttribDivisor"](index,divisor)}function _emscripten_glVertexAttribPointer(index,size,type,normalized,stride,ptr){GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}function _emscripten_glViewport(x0,x1,x2,x3){GLctx["viewport"](x0,x1,x2,x3)}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function abortOnCannotGrowMemory(requestedSize){abort("OOM")}function _emscripten_resize_heap(requestedSize){abortOnCannotGrowMemory(requestedSize)}function _emscripten_run_script(ptr){eval(UTF8ToString(ptr))}function _emscripten_sample_gamepad_data(){return(JSEvents.lastGamepadState=navigator.getGamepads?navigator.getGamepads():navigator.webkitGetGamepads?navigator.webkitGetGamepads():null)?0:-1}function fillMouseEventData(eventStruct,e,target){var idx=eventStruct>>2;HEAP32[idx+0]=e.screenX;HEAP32[idx+1]=e.screenY;HEAP32[idx+2]=e.clientX;HEAP32[idx+3]=e.clientY;HEAP32[idx+4]=e.ctrlKey;HEAP32[idx+5]=e.shiftKey;HEAP32[idx+6]=e.altKey;HEAP32[idx+7]=e.metaKey;HEAP16[idx*2+16]=e.button;HEAP16[idx*2+17]=e.buttons;HEAP32[idx+9]=e["movementX"];HEAP32[idx+10]=e["movementY"];var rect=getBoundingClientRect(target);HEAP32[idx+11]=e.clientX-rect.left;HEAP32[idx+12]=e.clientY-rect.top}function registerMouseEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.mouseEvent)JSEvents.mouseEvent=_malloc(64);target=findEventTarget(target);var mouseEventHandlerFunc=function(ev){var e=ev||event;fillMouseEventData(JSEvents.mouseEvent,e,target);if(wasmTable.get(callbackfunc)(eventTypeId,JSEvents.mouseEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:eventTypeString!="mousemove"&&eventTypeString!="mouseenter"&&eventTypeString!="mouseleave",eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:mouseEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_click_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,4,"click",targetThread);return 0}function fillFullscreenChangeEventData(eventStruct){var fullscreenElement=document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement||document.msFullscreenElement;var isFullscreen=!!fullscreenElement;HEAP32[eventStruct>>2]=isFullscreen;HEAP32[eventStruct+4>>2]=JSEvents.fullscreenEnabled();var reportedElement=isFullscreen?fullscreenElement:JSEvents.previousFullscreenElement;var nodeName=JSEvents.getNodeNameForTarget(reportedElement);var id=reportedElement&&reportedElement.id?reportedElement.id:"";stringToUTF8(nodeName,eventStruct+8,128);stringToUTF8(id,eventStruct+136,128);HEAP32[eventStruct+264>>2]=reportedElement?reportedElement.clientWidth:0;HEAP32[eventStruct+268>>2]=reportedElement?reportedElement.clientHeight:0;HEAP32[eventStruct+272>>2]=screen.width;HEAP32[eventStruct+276>>2]=screen.height;if(isFullscreen){JSEvents.previousFullscreenElement=fullscreenElement}}function registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.fullscreenChangeEvent)JSEvents.fullscreenChangeEvent=_malloc(280);var fullscreenChangeEventhandlerFunc=function(ev){var e=ev||event;var fullscreenChangeEvent=JSEvents.fullscreenChangeEvent;fillFullscreenChangeEventData(fullscreenChangeEvent);if(wasmTable.get(callbackfunc)(eventTypeId,fullscreenChangeEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:fullscreenChangeEventhandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_fullscreenchange_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){if(!JSEvents.fullscreenEnabled())return-1;target=findEventTarget(target);if(!target)return-4;registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,19,"fullscreenchange",targetThread);registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,19,"webkitfullscreenchange",targetThread);return 0}function registerGamepadEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.gamepadEvent)JSEvents.gamepadEvent=_malloc(1432);var gamepadEventHandlerFunc=function(ev){var e=ev||event;var gamepadEvent=JSEvents.gamepadEvent;fillGamepadEventData(gamepadEvent,e["gamepad"]);if(wasmTable.get(callbackfunc)(eventTypeId,gamepadEvent,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:gamepadEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_gamepadconnected_callback_on_thread(userData,useCapture,callbackfunc,targetThread){if(!navigator.getGamepads&&!navigator.webkitGetGamepads)return-1;registerGamepadEventCallback(2,userData,useCapture,callbackfunc,26,"gamepadconnected",targetThread);return 0}function _emscripten_set_gamepaddisconnected_callback_on_thread(userData,useCapture,callbackfunc,targetThread){if(!navigator.getGamepads&&!navigator.webkitGetGamepads)return-1;registerGamepadEventCallback(2,userData,useCapture,callbackfunc,27,"gamepaddisconnected",targetThread);return 0}function registerKeyEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.keyEvent)JSEvents.keyEvent=_malloc(164);var keyEventHandlerFunc=function(e){var keyEventData=JSEvents.keyEvent;var idx=keyEventData>>2;HEAP32[idx+0]=e.location;HEAP32[idx+1]=e.ctrlKey;HEAP32[idx+2]=e.shiftKey;HEAP32[idx+3]=e.altKey;HEAP32[idx+4]=e.metaKey;HEAP32[idx+5]=e.repeat;HEAP32[idx+6]=e.charCode;HEAP32[idx+7]=e.keyCode;HEAP32[idx+8]=e.which;stringToUTF8(e.key||"",keyEventData+36,32);stringToUTF8(e.code||"",keyEventData+68,32);stringToUTF8(e.char||"",keyEventData+100,32);stringToUTF8(e.locale||"",keyEventData+132,32);if(wasmTable.get(callbackfunc)(eventTypeId,keyEventData,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:keyEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_keydown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,2,"keydown",targetThread);return 0}var Browser={mainLoop:{scheduler:null,method:"",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause:function(){Browser.mainLoop.scheduler=null;Browser.mainLoop.currentlyRunningMainloop++},resume:function(){Browser.mainLoop.currentlyRunningMainloop++;var timingMode=Browser.mainLoop.timingMode;var timingValue=Browser.mainLoop.timingValue;var func=Browser.mainLoop.func;Browser.mainLoop.func=null;setMainLoop(func,0,false,Browser.mainLoop.arg,true);_emscripten_set_main_loop_timing(timingMode,timingValue);Browser.mainLoop.scheduler()},updateStatus:function(){if(Module["setStatus"]){var message=Module["statusMessage"]||"Please wait...";var remaining=Browser.mainLoop.remainingBlockers;var expected=Browser.mainLoop.expectedBlockers;if(remaining){if(remaining<expected){Module["setStatus"](message+" ("+(expected-remaining)+"/"+expected+")")}else{Module["setStatus"](message)}}else{Module["setStatus"]("")}}},runIter:function(func){if(ABORT)return;if(Module["preMainLoop"]){var preRet=Module["preMainLoop"]();if(preRet===false){return}}try{func()}catch(e){if(e instanceof ExitStatus){return}else if(e=="unwind"){return}else{if(e&&typeof e==="object"&&e.stack)err("exception thrown: "+[e,e.stack]);throw e}}if(Module["postMainLoop"])Module["postMainLoop"]()}},isFullscreen:false,pointerLock:false,moduleContextCreatedCallbacks:[],workers:[],init:function(){if(!Module["preloadPlugins"])Module["preloadPlugins"]=[];if(Browser.initted)return;Browser.initted=true;try{new Blob;Browser.hasBlobConstructor=true}catch(e){Browser.hasBlobConstructor=false;console.log("warning: no blob constructor, cannot create blobs with mimetypes")}Browser.BlobBuilder=typeof MozBlobBuilder!="undefined"?MozBlobBuilder:typeof WebKitBlobBuilder!="undefined"?WebKitBlobBuilder:!Browser.hasBlobConstructor?console.log("warning: no BlobBuilder"):null;Browser.URLObject=typeof window!="undefined"?window.URL?window.URL:window.webkitURL:undefined;if(!Module.noImageDecoding&&typeof Browser.URLObject==="undefined"){console.log("warning: Browser does not support creating object URLs. Built-in browser image decoding will not be available.");Module.noImageDecoding=true}var imagePlugin={};imagePlugin["canHandle"]=function imagePlugin_canHandle(name){return!Module.noImageDecoding&&/\.(jpg|jpeg|png|bmp)$/i.test(name)};imagePlugin["handle"]=function imagePlugin_handle(byteArray,name,onload,onerror){var b=null;if(Browser.hasBlobConstructor){try{b=new Blob([byteArray],{type:Browser.getMimetype(name)});if(b.size!==byteArray.length){b=new Blob([new Uint8Array(byteArray).buffer],{type:Browser.getMimetype(name)})}}catch(e){warnOnce("Blob constructor present but fails: "+e+"; falling back to blob builder")}}if(!b){var bb=new Browser.BlobBuilder;bb.append(new Uint8Array(byteArray).buffer);b=bb.getBlob()}var url=Browser.URLObject.createObjectURL(b);var img=new Image;img.onload=function img_onload(){assert(img.complete,"Image "+name+" could not be decoded");var canvas=document.createElement("canvas");canvas.width=img.width;canvas.height=img.height;var ctx=canvas.getContext("2d");ctx.drawImage(img,0,0);Module["preloadedImages"][name]=canvas;Browser.URLObject.revokeObjectURL(url);if(onload)onload(byteArray)};img.onerror=function img_onerror(event){console.log("Image "+url+" could not be decoded");if(onerror)onerror()};img.src=url};Module["preloadPlugins"].push(imagePlugin);var audioPlugin={};audioPlugin["canHandle"]=function audioPlugin_canHandle(name){return!Module.noAudioDecoding&&name.substr(-4)in{".ogg":1,".wav":1,".mp3":1}};audioPlugin["handle"]=function audioPlugin_handle(byteArray,name,onload,onerror){var done=false;function finish(audio){if(done)return;done=true;Module["preloadedAudios"][name]=audio;if(onload)onload(byteArray)}function fail(){if(done)return;done=true;Module["preloadedAudios"][name]=new Audio;if(onerror)onerror()}if(Browser.hasBlobConstructor){try{var b=new Blob([byteArray],{type:Browser.getMimetype(name)})}catch(e){return fail()}var url=Browser.URLObject.createObjectURL(b);var audio=new Audio;audio.addEventListener("canplaythrough",function(){finish(audio)},false);audio.onerror=function audio_onerror(event){if(done)return;console.log("warning: browser could not fully decode audio "+name+", trying slower base64 approach");function encode64(data){var BASE="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var PAD="=";var ret="";var leftchar=0;var leftbits=0;for(var i=0;i<data.length;i++){leftchar=leftchar<<8|data[i];leftbits+=8;while(leftbits>=6){var curr=leftchar>>leftbits-6&63;leftbits-=6;ret+=BASE[curr]}}if(leftbits==2){ret+=BASE[(leftchar&3)<<4];ret+=PAD+PAD}else if(leftbits==4){ret+=BASE[(leftchar&15)<<2];ret+=PAD}return ret}audio.src="data:audio/x-"+name.substr(-3)+";base64,"+encode64(byteArray);finish(audio)};audio.src=url;Browser.safeSetTimeout(function(){finish(audio)},1e4)}else{return fail()}};Module["preloadPlugins"].push(audioPlugin);function pointerLockChange(){Browser.pointerLock=document["pointerLockElement"]===Module["canvas"]||document["mozPointerLockElement"]===Module["canvas"]||document["webkitPointerLockElement"]===Module["canvas"]||document["msPointerLockElement"]===Module["canvas"]}var canvas=Module["canvas"];if(canvas){canvas.requestPointerLock=canvas["requestPointerLock"]||canvas["mozRequestPointerLock"]||canvas["webkitRequestPointerLock"]||canvas["msRequestPointerLock"]||function(){};canvas.exitPointerLock=document["exitPointerLock"]||document["mozExitPointerLock"]||document["webkitExitPointerLock"]||document["msExitPointerLock"]||function(){};canvas.exitPointerLock=canvas.exitPointerLock.bind(document);document.addEventListener("pointerlockchange",pointerLockChange,false);document.addEventListener("mozpointerlockchange",pointerLockChange,false);document.addEventListener("webkitpointerlockchange",pointerLockChange,false);document.addEventListener("mspointerlockchange",pointerLockChange,false);if(Module["elementPointerLock"]){canvas.addEventListener("click",function(ev){if(!Browser.pointerLock&&Module["canvas"].requestPointerLock){Module["canvas"].requestPointerLock();ev.preventDefault()}},false)}}},createContext:function(canvas,useWebGL,setInModule,webGLContextAttributes){if(useWebGL&&Module.ctx&&canvas==Module.canvas)return Module.ctx;var ctx;var contextHandle;if(useWebGL){var contextAttributes={antialias:false,alpha:false,majorVersion:1};if(webGLContextAttributes){for(var attribute in webGLContextAttributes){contextAttributes[attribute]=webGLContextAttributes[attribute]}}if(typeof GL!=="undefined"){contextHandle=GL.createContext(canvas,contextAttributes);if(contextHandle){ctx=GL.getContext(contextHandle).GLctx}}}else{ctx=canvas.getContext("2d")}if(!ctx)return null;if(setInModule){if(!useWebGL)assert(typeof GLctx==="undefined","cannot set in module if GLctx is used, but we are a non-GL context that would replace it");Module.ctx=ctx;if(useWebGL)GL.makeContextCurrent(contextHandle);Module.useWebGL=useWebGL;Browser.moduleContextCreatedCallbacks.forEach(function(callback){callback()});Browser.init()}return ctx},destroyContext:function(canvas,useWebGL,setInModule){},fullscreenHandlersInstalled:false,lockPointer:undefined,resizeCanvas:undefined,requestFullscreen:function(lockPointer,resizeCanvas){Browser.lockPointer=lockPointer;Browser.resizeCanvas=resizeCanvas;if(typeof Browser.lockPointer==="undefined")Browser.lockPointer=true;if(typeof Browser.resizeCanvas==="undefined")Browser.resizeCanvas=false;var canvas=Module["canvas"];function fullscreenChange(){Browser.isFullscreen=false;var canvasContainer=canvas.parentNode;if((document["fullscreenElement"]||document["mozFullScreenElement"]||document["msFullscreenElement"]||document["webkitFullscreenElement"]||document["webkitCurrentFullScreenElement"])===canvasContainer){canvas.exitFullscreen=Browser.exitFullscreen;if(Browser.lockPointer)canvas.requestPointerLock();Browser.isFullscreen=true;if(Browser.resizeCanvas){Browser.setFullscreenCanvasSize()}else{Browser.updateCanvasDimensions(canvas)}}else{canvasContainer.parentNode.insertBefore(canvas,canvasContainer);canvasContainer.parentNode.removeChild(canvasContainer);if(Browser.resizeCanvas){Browser.setWindowedCanvasSize()}else{Browser.updateCanvasDimensions(canvas)}}if(Module["onFullScreen"])Module["onFullScreen"](Browser.isFullscreen);if(Module["onFullscreen"])Module["onFullscreen"](Browser.isFullscreen)}if(!Browser.fullscreenHandlersInstalled){Browser.fullscreenHandlersInstalled=true;document.addEventListener("fullscreenchange",fullscreenChange,false);document.addEventListener("mozfullscreenchange",fullscreenChange,false);document.addEventListener("webkitfullscreenchange",fullscreenChange,false);document.addEventListener("MSFullscreenChange",fullscreenChange,false)}var canvasContainer=document.createElement("div");canvas.parentNode.insertBefore(canvasContainer,canvas);canvasContainer.appendChild(canvas);canvasContainer.requestFullscreen=canvasContainer["requestFullscreen"]||canvasContainer["mozRequestFullScreen"]||canvasContainer["msRequestFullscreen"]||(canvasContainer["webkitRequestFullscreen"]?function(){canvasContainer["webkitRequestFullscreen"](Element["ALLOW_KEYBOARD_INPUT"])}:null)||(canvasContainer["webkitRequestFullScreen"]?function(){canvasContainer["webkitRequestFullScreen"](Element["ALLOW_KEYBOARD_INPUT"])}:null);canvasContainer.requestFullscreen()},exitFullscreen:function(){if(!Browser.isFullscreen){return false}var CFS=document["exitFullscreen"]||document["cancelFullScreen"]||document["mozCancelFullScreen"]||document["msExitFullscreen"]||document["webkitCancelFullScreen"]||function(){};CFS.apply(document,[]);return true},nextRAF:0,fakeRequestAnimationFrame:function(func){var now=Date.now();if(Browser.nextRAF===0){Browser.nextRAF=now+1e3/60}else{while(now+2>=Browser.nextRAF){Browser.nextRAF+=1e3/60}}var delay=Math.max(Browser.nextRAF-now,0);setTimeout(func,delay)},requestAnimationFrame:function(func){if(typeof requestAnimationFrame==="function"){requestAnimationFrame(func);return}var RAF=Browser.fakeRequestAnimationFrame;RAF(func)},safeRequestAnimationFrame:function(func){return Browser.requestAnimationFrame(function(){if(ABORT)return;func()})},safeSetTimeout:function(func,timeout){noExitRuntime=true;return setTimeout(function(){if(ABORT)return;func()},timeout)},getMimetype:function(name){return{"jpg":"image/jpeg","jpeg":"image/jpeg","png":"image/png","bmp":"image/bmp","ogg":"audio/ogg","wav":"audio/wav","mp3":"audio/mpeg"}[name.substr(name.lastIndexOf(".")+1)]},getUserMedia:function(func){if(!window.getUserMedia){window.getUserMedia=navigator["getUserMedia"]||navigator["mozGetUserMedia"]}window.getUserMedia(func)},getMovementX:function(event){return event["movementX"]||event["mozMovementX"]||event["webkitMovementX"]||0},getMovementY:function(event){return event["movementY"]||event["mozMovementY"]||event["webkitMovementY"]||0},getMouseWheelDelta:function(event){var delta=0;switch(event.type){case"DOMMouseScroll":delta=event.detail/3;break;case"mousewheel":delta=event.wheelDelta/120;break;case"wheel":delta=event.deltaY;switch(event.deltaMode){case 0:delta/=100;break;case 1:delta/=3;break;case 2:delta*=80;break;default:throw"unrecognized mouse wheel delta mode: "+event.deltaMode}break;default:throw"unrecognized mouse wheel event: "+event.type}return delta},mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,touches:{},lastTouches:{},calculateMouseEvent:function(event){if(Browser.pointerLock){if(event.type!="mousemove"&&"mozMovementX"in event){Browser.mouseMovementX=Browser.mouseMovementY=0}else{Browser.mouseMovementX=Browser.getMovementX(event);Browser.mouseMovementY=Browser.getMovementY(event)}if(typeof SDL!="undefined"){Browser.mouseX=SDL.mouseX+Browser.mouseMovementX;Browser.mouseY=SDL.mouseY+Browser.mouseMovementY}else{Browser.mouseX+=Browser.mouseMovementX;Browser.mouseY+=Browser.mouseMovementY}}else{var rect=Module["canvas"].getBoundingClientRect();var cw=Module["canvas"].width;var ch=Module["canvas"].height;var scrollX=typeof window.scrollX!=="undefined"?window.scrollX:window.pageXOffset;var scrollY=typeof window.scrollY!=="undefined"?window.scrollY:window.pageYOffset;if(event.type==="touchstart"||event.type==="touchend"||event.type==="touchmove"){var touch=event.touch;if(touch===undefined){return}var adjustedX=touch.pageX-(scrollX+rect.left);var adjustedY=touch.pageY-(scrollY+rect.top);adjustedX=adjustedX*(cw/rect.width);adjustedY=adjustedY*(ch/rect.height);var coords={x:adjustedX,y:adjustedY};if(event.type==="touchstart"){Browser.lastTouches[touch.identifier]=coords;Browser.touches[touch.identifier]=coords}else if(event.type==="touchend"||event.type==="touchmove"){var last=Browser.touches[touch.identifier];if(!last)last=coords;Browser.lastTouches[touch.identifier]=last;Browser.touches[touch.identifier]=coords}return}var x=event.pageX-(scrollX+rect.left);var y=event.pageY-(scrollY+rect.top);x=x*(cw/rect.width);y=y*(ch/rect.height);Browser.mouseMovementX=x-Browser.mouseX;Browser.mouseMovementY=y-Browser.mouseY;Browser.mouseX=x;Browser.mouseY=y}},asyncLoad:function(url,onload,onerror,noRunDep){var dep=!noRunDep?getUniqueRunDependency("al "+url):"";readAsync(url,function(arrayBuffer){assert(arrayBuffer,'Loading data file "'+url+'" failed (no arrayBuffer).');onload(new Uint8Array(arrayBuffer));if(dep)removeRunDependency(dep)},function(event){if(onerror){onerror()}else{throw'Loading data file "'+url+'" failed.'}});if(dep)addRunDependency(dep)},resizeListeners:[],updateResizeListeners:function(){var canvas=Module["canvas"];Browser.resizeListeners.forEach(function(listener){listener(canvas.width,canvas.height)})},setCanvasSize:function(width,height,noUpdates){var canvas=Module["canvas"];Browser.updateCanvasDimensions(canvas,width,height);if(!noUpdates)Browser.updateResizeListeners()},windowedWidth:0,windowedHeight:0,setFullscreenCanvasSize:function(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>2];flags=flags|8388608;HEAP32[SDL.screen>>2]=flags}Browser.updateCanvasDimensions(Module["canvas"]);Browser.updateResizeListeners()},setWindowedCanvasSize:function(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>2];flags=flags&~8388608;HEAP32[SDL.screen>>2]=flags}Browser.updateCanvasDimensions(Module["canvas"]);Browser.updateResizeListeners()},updateCanvasDimensions:function(canvas,wNative,hNative){if(wNative&&hNative){canvas.widthNative=wNative;canvas.heightNative=hNative}else{wNative=canvas.widthNative;hNative=canvas.heightNative}var w=wNative;var h=hNative;if(Module["forcedAspectRatio"]&&Module["forcedAspectRatio"]>0){if(w/h<Module["forcedAspectRatio"]){w=Math.round(h*Module["forcedAspectRatio"])}else{h=Math.round(w/Module["forcedAspectRatio"])}}if((document["fullscreenElement"]||document["mozFullScreenElement"]||document["msFullscreenElement"]||document["webkitFullscreenElement"]||document["webkitCurrentFullScreenElement"])===canvas.parentNode&&typeof screen!="undefined"){var factor=Math.min(screen.width/w,screen.height/h);w=Math.round(w*factor);h=Math.round(h*factor)}if(Browser.resizeCanvas){if(canvas.width!=w)canvas.width=w;if(canvas.height!=h)canvas.height=h;if(typeof canvas.style!="undefined"){canvas.style.removeProperty("width");canvas.style.removeProperty("height")}}else{if(canvas.width!=wNative)canvas.width=wNative;if(canvas.height!=hNative)canvas.height=hNative;if(typeof canvas.style!="undefined"){if(w!=wNative||h!=hNative){canvas.style.setProperty("width",w+"px","important");canvas.style.setProperty("height",h+"px","important")}else{canvas.style.removeProperty("width");canvas.style.removeProperty("height")}}}},wgetRequests:{},nextWgetRequestHandle:0,getNextWgetRequestHandle:function(){var handle=Browser.nextWgetRequestHandle;Browser.nextWgetRequestHandle++;return handle}};function _emscripten_set_main_loop_timing(mode,value){Browser.mainLoop.timingMode=mode;Browser.mainLoop.timingValue=value;if(!Browser.mainLoop.func){return 1}if(mode==0){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setTimeout(){var timeUntilNextTick=Math.max(0,Browser.mainLoop.tickStartTime+value-_emscripten_get_now())|0;setTimeout(Browser.mainLoop.runner,timeUntilNextTick)};Browser.mainLoop.method="timeout"}else if(mode==1){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_rAF(){Browser.requestAnimationFrame(Browser.mainLoop.runner)};Browser.mainLoop.method="rAF"}else if(mode==2){if(typeof setImmediate==="undefined"){var setImmediates=[];var emscriptenMainLoopMessageId="setimmediate";var Browser_setImmediate_messageHandler=function(event){if(event.data===emscriptenMainLoopMessageId||event.data.target===emscriptenMainLoopMessageId){event.stopPropagation();setImmediates.shift()()}};addEventListener("message",Browser_setImmediate_messageHandler,true);setImmediate=function Browser_emulated_setImmediate(func){setImmediates.push(func);if(ENVIRONMENT_IS_WORKER){if(Module["setImmediates"]===undefined)Module["setImmediates"]=[];Module["setImmediates"].push(func);postMessage({target:emscriptenMainLoopMessageId})}else postMessage(emscriptenMainLoopMessageId,"*")}}Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setImmediate(){setImmediate(Browser.mainLoop.runner)};Browser.mainLoop.method="immediate"}return 0}var _emscripten_get_now;if(ENVIRONMENT_IS_NODE){_emscripten_get_now=function(){var t=process["hrtime"]();return t[0]*1e3+t[1]/1e6}}else if(typeof dateNow!=="undefined"){_emscripten_get_now=dateNow}else _emscripten_get_now=function(){return performance.now()};function setMainLoop(browserIterationFunc,fps,simulateInfiniteLoop,arg,noSetTiming){noExitRuntime=true;assert(!Browser.mainLoop.func,"emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters.");Browser.mainLoop.func=browserIterationFunc;Browser.mainLoop.arg=arg;var thisMainLoopId=Browser.mainLoop.currentlyRunningMainloop;Browser.mainLoop.runner=function Browser_mainLoop_runner(){if(ABORT)return;if(Browser.mainLoop.queue.length>0){var start=Date.now();var blocker=Browser.mainLoop.queue.shift();blocker.func(blocker.arg);if(Browser.mainLoop.remainingBlockers){var remaining=Browser.mainLoop.remainingBlockers;var next=remaining%1==0?remaining-1:Math.floor(remaining);if(blocker.counted){Browser.mainLoop.remainingBlockers=next}else{next=next+.5;Browser.mainLoop.remainingBlockers=(8*remaining+next)/9}}console.log('main loop blocker "'+blocker.name+'" took '+(Date.now()-start)+" ms");Browser.mainLoop.updateStatus();if(thisMainLoopId<Browser.mainLoop.currentlyRunningMainloop)return;setTimeout(Browser.mainLoop.runner,0);return}if(thisMainLoopId<Browser.mainLoop.currentlyRunningMainloop)return;Browser.mainLoop.currentFrameNumber=Browser.mainLoop.currentFrameNumber+1|0;if(Browser.mainLoop.timingMode==1&&Browser.mainLoop.timingValue>1&&Browser.mainLoop.currentFrameNumber%Browser.mainLoop.timingValue!=0){Browser.mainLoop.scheduler();return}else if(Browser.mainLoop.timingMode==0){Browser.mainLoop.tickStartTime=_emscripten_get_now()}Browser.mainLoop.runIter(browserIterationFunc);if(thisMainLoopId<Browser.mainLoop.currentlyRunningMainloop)return;if(typeof SDL==="object"&&SDL.audio&&SDL.audio.queueNewAudioData)SDL.audio.queueNewAudioData();Browser.mainLoop.scheduler()};if(!noSetTiming){if(fps&&fps>0)_emscripten_set_main_loop_timing(0,1e3/fps);else _emscripten_set_main_loop_timing(1,1);Browser.mainLoop.scheduler()}if(simulateInfiniteLoop){throw"unwind"}}function _emscripten_set_main_loop(func,fps,simulateInfiniteLoop){var browserIterationFunc=wasmTable.get(func);setMainLoop(browserIterationFunc,fps,simulateInfiniteLoop)}function registerTouchEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.touchEvent)JSEvents.touchEvent=_malloc(1684);target=findEventTarget(target);var touchEventHandlerFunc=function(e){var touches={};var et=e.touches;for(var i=0;i<et.length;++i){var touch=et[i];touches[touch.identifier]=touch}et=e.changedTouches;for(var i=0;i<et.length;++i){var touch=et[i];touch.isChanged=1;touches[touch.identifier]=touch}et=e.targetTouches;for(var i=0;i<et.length;++i){touches[et[i].identifier].onTarget=1}var touchEvent=JSEvents.touchEvent;var idx=touchEvent>>2;HEAP32[idx+1]=e.ctrlKey;HEAP32[idx+2]=e.shiftKey;HEAP32[idx+3]=e.altKey;HEAP32[idx+4]=e.metaKey;idx+=5;var targetRect=getBoundingClientRect(target);var numTouches=0;for(var i in touches){var t=touches[i];HEAP32[idx+0]=t.identifier;HEAP32[idx+1]=t.screenX;HEAP32[idx+2]=t.screenY;HEAP32[idx+3]=t.clientX;HEAP32[idx+4]=t.clientY;HEAP32[idx+5]=t.pageX;HEAP32[idx+6]=t.pageY;HEAP32[idx+7]=t.isChanged;HEAP32[idx+8]=t.onTarget;HEAP32[idx+9]=t.clientX-targetRect.left;HEAP32[idx+10]=t.clientY-targetRect.top;idx+=13;if(++numTouches>31){break}}HEAP32[touchEvent>>2]=numTouches;if(wasmTable.get(callbackfunc)(eventTypeId,touchEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:eventTypeString=="touchstart"||eventTypeString=="touchend",eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:touchEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_touchcancel_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerTouchEventCallback(target,userData,useCapture,callbackfunc,25,"touchcancel",targetThread);return 0}function _emscripten_set_touchend_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerTouchEventCallback(target,userData,useCapture,callbackfunc,23,"touchend",targetThread);return 0}function _emscripten_set_touchmove_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerTouchEventCallback(target,userData,useCapture,callbackfunc,24,"touchmove",targetThread);return 0}function _emscripten_set_touchstart_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerTouchEventCallback(target,userData,useCapture,callbackfunc,22,"touchstart",targetThread);return 0}function _emscripten_thread_sleep(msecs){var start=_emscripten_get_now();while(_emscripten_get_now()-start<msecs){}}function _exit(status){exit(status)}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_read(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doReadv(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var stream=SYSCALLS.getStreamFromFD(fd);var HIGH_OFFSET=4294967296;var offset=offset_high*HIGH_OFFSET+(offset_low>>>0);var DOUBLE_LIMIT=9007199254740992;if(offset<=-DOUBLE_LIMIT||offset>=DOUBLE_LIMIT){return-61}FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doWritev(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _glActiveTexture(x0){GLctx["activeTexture"](x0)}function _glAttachShader(program,shader){GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _glBindAttribLocation(program,index,name){GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))}function _glBindBuffer(target,buffer){GLctx.bindBuffer(target,GL.buffers[buffer])}function _glBindTexture(target,texture){GLctx.bindTexture(target,GL.textures[texture])}function _glBlendFunc(x0,x1){GLctx["blendFunc"](x0,x1)}function _glBufferData(target,size,data,usage){GLctx.bufferData(target,data?HEAPU8.subarray(data,data+size):size,usage)}function _glBufferSubData(target,offset,size,data){GLctx.bufferSubData(target,offset,HEAPU8.subarray(data,data+size))}function _glClear(x0){GLctx["clear"](x0)}function _glClearColor(x0,x1,x2,x3){GLctx["clearColor"](x0,x1,x2,x3)}function _glClearDepthf(x0){GLctx["clearDepth"](x0)}function _glCompileShader(shader){GLctx.compileShader(GL.shaders[shader])}function _glCompressedTexImage2D(target,level,internalFormat,width,height,border,imageSize,data){GLctx["compressedTexImage2D"](target,level,internalFormat,width,height,border,data?HEAPU8.subarray(data,data+imageSize):null)}function _glCreateProgram(){var id=GL.getNewId(GL.programs);var program=GLctx.createProgram();program.name=id;GL.programs[id]=program;return id}function _glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}function _glCullFace(x0){GLctx["cullFace"](x0)}function _glDeleteBuffers(n,buffers){for(var i=0;i<n;i++){var id=HEAP32[buffers+i*4>>2];var buffer=GL.buffers[id];if(!buffer)continue;GLctx.deleteBuffer(buffer);buffer.name=0;GL.buffers[id]=null}}function _glDeleteProgram(id){if(!id)return;var program=GL.programs[id];if(!program){GL.recordError(1281);return}GLctx.deleteProgram(program);program.name=0;GL.programs[id]=null;GL.programInfos[id]=null}function _glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}function _glDeleteTextures(n,textures){for(var i=0;i<n;i++){var id=HEAP32[textures+i*4>>2];var texture=GL.textures[id];if(!texture)continue;GLctx.deleteTexture(texture);texture.name=0;GL.textures[id]=null}}function _glDepthFunc(x0){GLctx["depthFunc"](x0)}function _glDetachShader(program,shader){GLctx.detachShader(GL.programs[program],GL.shaders[shader])}function _glDisable(x0){GLctx["disable"](x0)}function _glDisableVertexAttribArray(index){GLctx.disableVertexAttribArray(index)}function _glDrawArrays(mode,first,count){GLctx.drawArrays(mode,first,count)}function _glDrawElements(mode,count,type,indices){GLctx.drawElements(mode,count,type,indices)}function _glEnable(x0){GLctx["enable"](x0)}function _glEnableVertexAttribArray(index){GLctx.enableVertexAttribArray(index)}function _glFrontFace(x0){GLctx["frontFace"](x0)}function _glGenBuffers(n,buffers){__glGenObject(n,buffers,"createBuffer",GL.buffers)}function _glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures)}function _glGetAttribLocation(program,name){return GLctx.getAttribLocation(GL.programs[program],UTF8ToString(name))}function _glGetFloatv(name_,p){emscriptenWebGLGet(name_,p,2)}function _glGetProgramInfoLog(program,maxLength,length,infoLog){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _glGetProgramiv(program,pname,p){if(!p){GL.recordError(1281);return}if(program>=GL.counter){GL.recordError(1281);return}var ptable=GL.programInfos[program];if(!ptable){GL.recordError(1282);return}if(pname==35716){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";HEAP32[p>>2]=log.length+1}else if(pname==35719){HEAP32[p>>2]=ptable.maxUniformLength}else if(pname==35722){if(ptable.maxAttributeLength==-1){program=GL.programs[program];var numAttribs=GLctx.getProgramParameter(program,35721);ptable.maxAttributeLength=0;for(var i=0;i<numAttribs;++i){var activeAttrib=GLctx.getActiveAttrib(program,i);ptable.maxAttributeLength=Math.max(ptable.maxAttributeLength,activeAttrib.name.length+1)}}HEAP32[p>>2]=ptable.maxAttributeLength}else if(pname==35381){if(ptable.maxUniformBlockNameLength==-1){program=GL.programs[program];var numBlocks=GLctx.getProgramParameter(program,35382);ptable.maxUniformBlockNameLength=0;for(var i=0;i<numBlocks;++i){var activeBlockName=GLctx.getActiveUniformBlockName(program,i);ptable.maxUniformBlockNameLength=Math.max(ptable.maxUniformBlockNameLength,activeBlockName.length+1)}}HEAP32[p>>2]=ptable.maxUniformBlockNameLength}else{HEAP32[p>>2]=GLctx.getProgramParameter(GL.programs[program],pname)}}function _glGetShaderInfoLog(shader,maxLength,length,infoLog){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _glGetShaderiv(shader,pname,p){if(!p){GL.recordError(1281);return}if(pname==35716){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var logLength=log?log.length+1:0;HEAP32[p>>2]=logLength}else if(pname==35720){var source=GLctx.getShaderSource(GL.shaders[shader]);var sourceLength=source?source.length+1:0;HEAP32[p>>2]=sourceLength}else{HEAP32[p>>2]=GLctx.getShaderParameter(GL.shaders[shader],pname)}}function _glGetString(name_){if(GL.stringCache[name_])return GL.stringCache[name_];var ret;switch(name_){case 7939:var exts=GLctx.getSupportedExtensions()||[];exts=exts.concat(exts.map(function(e){return"GL_"+e}));ret=stringToNewUTF8(exts.join(" "));break;case 7936:case 7937:case 37445:case 37446:var s=GLctx.getParameter(name_);if(!s){GL.recordError(1280)}ret=stringToNewUTF8(s);break;case 7938:var glVersion=GLctx.getParameter(7938);{glVersion="OpenGL ES 2.0 ("+glVersion+")"}ret=stringToNewUTF8(glVersion);break;case 35724:var glslVersion=GLctx.getParameter(35724);var ver_re=/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/;var ver_num=glslVersion.match(ver_re);if(ver_num!==null){if(ver_num[1].length==3)ver_num[1]=ver_num[1]+"0";glslVersion="OpenGL ES GLSL ES "+ver_num[1]+" ("+glslVersion+")"}ret=stringToNewUTF8(glslVersion);break;default:GL.recordError(1280);return 0}GL.stringCache[name_]=ret;return ret}function _glGetUniformLocation(program,name){name=UTF8ToString(name);var arrayIndex=0;if(name[name.length-1]=="]"){var leftBrace=name.lastIndexOf("[");arrayIndex=name[leftBrace+1]!="]"?jstoi_q(name.slice(leftBrace+1)):0;name=name.slice(0,leftBrace)}var uniformInfo=GL.programInfos[program]&&GL.programInfos[program].uniforms[name];if(uniformInfo&&arrayIndex>=0&&arrayIndex<uniformInfo[0]){return uniformInfo[1]+arrayIndex}else{return-1}}function _glLinkProgram(program){GLctx.linkProgram(GL.programs[program]);GL.populateUniformTable(program)}function _glPixelStorei(pname,param){if(pname==3317){GL.unpackAlignment=param}GLctx.pixelStorei(pname,param)}function _glReadPixels(x,y,width,height,format,type,pixels){var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);return}GLctx.readPixels(x,y,width,height,format,type,pixelData)}function _glShaderSource(shader,count,string,length){var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}function _glTexImage2D(target,level,internalFormat,width,height,border,format,type,pixels){GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels?emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat):null)}function _glTexParameteri(x0,x1,x2){GLctx["texParameteri"](x0,x1,x2)}function _glUniform1i(location,v0){GLctx.uniform1i(GL.uniforms[location],v0)}function _glUniform4f(location,v0,v1,v2,v3){GLctx.uniform4f(GL.uniforms[location],v0,v1,v2,v3)}function _glUniformMatrix4fv(location,count,transpose,value){if(count<=18){var view=miniTempWebGLFloatBuffers[16*count-1];var heap=HEAPF32;value>>=2;for(var i=0;i<16*count;i+=16){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3];view[i+4]=heap[dst+4];view[i+5]=heap[dst+5];view[i+6]=heap[dst+6];view[i+7]=heap[dst+7];view[i+8]=heap[dst+8];view[i+9]=heap[dst+9];view[i+10]=heap[dst+10];view[i+11]=heap[dst+11];view[i+12]=heap[dst+12];view[i+13]=heap[dst+13];view[i+14]=heap[dst+14];view[i+15]=heap[dst+15]}}else{var view=HEAPF32.subarray(value>>2,value+count*64>>2)}GLctx.uniformMatrix4fv(GL.uniforms[location],!!transpose,view)}function _glUseProgram(program){GLctx.useProgram(GL.programs[program])}function _glVertexAttrib2f(x0,x1,x2){GLctx["vertexAttrib2f"](x0,x1,x2)}function _glVertexAttrib3f(x0,x1,x2,x3){GLctx["vertexAttrib3f"](x0,x1,x2,x3)}function _glVertexAttrib4f(x0,x1,x2,x3,x4){GLctx["vertexAttrib4f"](x0,x1,x2,x3,x4)}function _glVertexAttribPointer(index,size,type,normalized,stride,ptr){GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}function _glViewport(x0,x1,x2,x3){GLctx["viewport"](x0,x1,x2,x3)}function GLFW_Window(id,width,height,title,monitor,share){this.id=id;this.x=0;this.y=0;this.fullscreen=false;this.storedX=0;this.storedY=0;this.width=width;this.height=height;this.storedWidth=width;this.storedHeight=height;this.title=title;this.monitor=monitor;this.share=share;this.attributes=GLFW.hints;this.inputModes={208897:212993,208898:0,208899:0};this.buttons=0;this.keys=new Array;this.domKeys=new Array;this.shouldClose=0;this.title=null;this.windowPosFunc=null;this.windowSizeFunc=null;this.windowCloseFunc=null;this.windowRefreshFunc=null;this.windowFocusFunc=null;this.windowIconifyFunc=null;this.framebufferSizeFunc=null;this.mouseButtonFunc=null;this.cursorPosFunc=null;this.cursorEnterFunc=null;this.scrollFunc=null;this.dropFunc=null;this.keyFunc=null;this.charFunc=null;this.userptr=null}var GLFW={WindowFromId:function(id){if(id<=0||!GLFW.windows)return null;return GLFW.windows[id-1]},joystickFunc:null,errorFunc:null,monitorFunc:null,active:null,windows:null,monitors:null,monitorString:null,versionString:null,initialTime:null,extensions:null,hints:null,defaultHints:{131073:0,131074:0,131075:1,131076:1,131077:1,135169:8,135170:8,135171:8,135172:8,135173:24,135174:8,135175:0,135176:0,135177:0,135178:0,135179:0,135180:0,135181:0,135182:0,135183:0,139265:196609,139266:1,139267:0,139268:0,139269:0,139270:0,139271:0,139272:0},DOMToGLFWKeyCode:function(keycode){switch(keycode){case 32:return 32;case 222:return 39;case 188:return 44;case 173:return 45;case 189:return 45;case 190:return 46;case 191:return 47;case 48:return 48;case 49:return 49;case 50:return 50;case 51:return 51;case 52:return 52;case 53:return 53;case 54:return 54;case 55:return 55;case 56:return 56;case 57:return 57;case 59:return 59;case 61:return 61;case 187:return 61;case 65:return 65;case 66:return 66;case 67:return 67;case 68:return 68;case 69:return 69;case 70:return 70;case 71:return 71;case 72:return 72;case 73:return 73;case 74:return 74;case 75:return 75;case 76:return 76;case 77:return 77;case 78:return 78;case 79:return 79;case 80:return 80;case 81:return 81;case 82:return 82;case 83:return 83;case 84:return 84;case 85:return 85;case 86:return 86;case 87:return 87;case 88:return 88;case 89:return 89;case 90:return 90;case 219:return 91;case 220:return 92;case 221:return 93;case 192:return 94;case 27:return 256;case 13:return 257;case 9:return 258;case 8:return 259;case 45:return 260;case 46:return 261;case 39:return 262;case 37:return 263;case 40:return 264;case 38:return 265;case 33:return 266;case 34:return 267;case 36:return 268;case 35:return 269;case 20:return 280;case 145:return 281;case 144:return 282;case 44:return 283;case 19:return 284;case 112:return 290;case 113:return 291;case 114:return 292;case 115:return 293;case 116:return 294;case 117:return 295;case 118:return 296;case 119:return 297;case 120:return 298;case 121:return 299;case 122:return 300;case 123:return 301;case 124:return 302;case 125:return 303;case 126:return 304;case 127:return 305;case 128:return 306;case 129:return 307;case 130:return 308;case 131:return 309;case 132:return 310;case 133:return 311;case 134:return 312;case 135:return 313;case 136:return 314;case 96:return 320;case 97:return 321;case 98:return 322;case 99:return 323;case 100:return 324;case 101:return 325;case 102:return 326;case 103:return 327;case 104:return 328;case 105:return 329;case 110:return 330;case 111:return 331;case 106:return 332;case 109:return 333;case 107:return 334;case 16:return 340;case 17:return 341;case 18:return 342;case 91:return 343;case 93:return 348;default:return-1}},getModBits:function(win){var mod=0;if(win.keys[340])mod|=1;if(win.keys[341])mod|=2;if(win.keys[342])mod|=4;if(win.keys[343])mod|=8;return mod},onKeyPress:function(event){if(!GLFW.active||!GLFW.active.charFunc)return;if(event.ctrlKey||event.metaKey)return;var charCode=event.charCode;if(charCode==0||charCode>=0&&charCode<=31)return;wasmTable.get(GLFW.active.charFunc)(GLFW.active.id,charCode)},onKeyChanged:function(keyCode,status){if(!GLFW.active)return;var key=GLFW.DOMToGLFWKeyCode(keyCode);if(key==-1)return;var repeat=status&&GLFW.active.keys[key];GLFW.active.keys[key]=status;GLFW.active.domKeys[keyCode]=status;if(!GLFW.active.keyFunc)return;if(repeat)status=2;wasmTable.get(GLFW.active.keyFunc)(GLFW.active.id,key,keyCode,status,GLFW.getModBits(GLFW.active))},onGamepadConnected:function(event){GLFW.refreshJoysticks()},onGamepadDisconnected:function(event){GLFW.refreshJoysticks()},onKeydown:function(event){GLFW.onKeyChanged(event.keyCode,1);if(event.keyCode===8||event.keyCode===9){event.preventDefault()}},onKeyup:function(event){GLFW.onKeyChanged(event.keyCode,0)},onBlur:function(event){if(!GLFW.active)return;for(var i=0;i<GLFW.active.domKeys.length;++i){if(GLFW.active.domKeys[i]){GLFW.onKeyChanged(i,0)}}},onMousemove:function(event){if(!GLFW.active)return;Browser.calculateMouseEvent(event);if(event.target!=Module["canvas"]||!GLFW.active.cursorPosFunc)return;wasmTable.get(GLFW.active.cursorPosFunc)(GLFW.active.id,Browser.mouseX,Browser.mouseY)},DOMToGLFWMouseButton:function(event){var eventButton=event["button"];if(eventButton>0){if(eventButton==1){eventButton=2}else{eventButton=1}}return eventButton},onMouseenter:function(event){if(!GLFW.active)return;if(event.target!=Module["canvas"]||!GLFW.active.cursorEnterFunc)return;wasmTable.get(GLFW.active.cursorEnterFunc)(GLFW.active.id,1)},onMouseleave:function(event){if(!GLFW.active)return;if(event.target!=Module["canvas"]||!GLFW.active.cursorEnterFunc)return;wasmTable.get(GLFW.active.cursorEnterFunc)(GLFW.active.id,0)},onMouseButtonChanged:function(event,status){if(!GLFW.active)return;Browser.calculateMouseEvent(event);if(event.target!=Module["canvas"])return;var eventButton=GLFW.DOMToGLFWMouseButton(event);if(status==1){GLFW.active.buttons|=1<<eventButton;try{event.target.setCapture()}catch(e){}}else{GLFW.active.buttons&=~(1<<eventButton)}if(!GLFW.active.mouseButtonFunc)return;wasmTable.get(GLFW.active.mouseButtonFunc)(GLFW.active.id,eventButton,status,GLFW.getModBits(GLFW.active))},onMouseButtonDown:function(event){if(!GLFW.active)return;GLFW.onMouseButtonChanged(event,1)},onMouseButtonUp:function(event){if(!GLFW.active)return;GLFW.onMouseButtonChanged(event,0)},onMouseWheel:function(event){var delta=-Browser.getMouseWheelDelta(event);delta=delta==0?0:delta>0?Math.max(delta,1):Math.min(delta,-1);GLFW.wheelPos+=delta;if(!GLFW.active||!GLFW.active.scrollFunc||event.target!=Module["canvas"])return;var sx=0;var sy=0;if(event.type=="mousewheel"){sx=event.wheelDeltaX;sy=event.wheelDeltaY}else{sx=event.deltaX;sy=event.deltaY}wasmTable.get(GLFW.active.scrollFunc)(GLFW.active.id,sx,sy);event.preventDefault()},onCanvasResize:function(width,height){if(!GLFW.active)return;var resizeNeeded=true;if(document["fullscreen"]||document["fullScreen"]||document["mozFullScreen"]||document["webkitIsFullScreen"]){GLFW.active.storedX=GLFW.active.x;GLFW.active.storedY=GLFW.active.y;GLFW.active.storedWidth=GLFW.active.width;GLFW.active.storedHeight=GLFW.active.height;GLFW.active.x=GLFW.active.y=0;GLFW.active.width=screen.width;GLFW.active.height=screen.height;GLFW.active.fullscreen=true}else if(GLFW.active.fullscreen==true){GLFW.active.x=GLFW.active.storedX;GLFW.active.y=GLFW.active.storedY;GLFW.active.width=GLFW.active.storedWidth;GLFW.active.height=GLFW.active.storedHeight;GLFW.active.fullscreen=false}else if(GLFW.active.width!=width||GLFW.active.height!=height){GLFW.active.width=width;GLFW.active.height=height}else{resizeNeeded=false}if(resizeNeeded){Browser.setCanvasSize(GLFW.active.width,GLFW.active.height,true);GLFW.onWindowSizeChanged();GLFW.onFramebufferSizeChanged()}},onWindowSizeChanged:function(){if(!GLFW.active)return;if(!GLFW.active.windowSizeFunc)return;wasmTable.get(GLFW.active.windowSizeFunc)(GLFW.active.id,GLFW.active.width,GLFW.active.height)},onFramebufferSizeChanged:function(){if(!GLFW.active)return;if(!GLFW.active.framebufferSizeFunc)return;wasmTable.get(GLFW.active.framebufferSizeFunc)(GLFW.active.id,GLFW.active.width,GLFW.active.height)},getTime:function(){return _emscripten_get_now()/1e3},setWindowTitle:function(winid,title){var win=GLFW.WindowFromId(winid);if(!win)return;win.title=UTF8ToString(title);if(GLFW.active.id==win.id){document.title=win.title}},setJoystickCallback:function(cbfun){GLFW.joystickFunc=cbfun;GLFW.refreshJoysticks()},joys:{},lastGamepadState:null,lastGamepadStateFrame:null,refreshJoysticks:function(){if(Browser.mainLoop.currentFrameNumber!==GLFW.lastGamepadStateFrame||!Browser.mainLoop.currentFrameNumber){GLFW.lastGamepadState=navigator.getGamepads?navigator.getGamepads():navigator.webkitGetGamepads?navigator.webkitGetGamepads:null;GLFW.lastGamepadStateFrame=Browser.mainLoop.currentFrameNumber;for(var joy=0;joy<GLFW.lastGamepadState.length;++joy){var gamepad=GLFW.lastGamepadState[joy];if(gamepad){if(!GLFW.joys[joy]){console.log("glfw joystick connected:",joy);GLFW.joys[joy]={id:allocate(intArrayFromString(gamepad.id),ALLOC_NORMAL),buttonsCount:gamepad.buttons.length,axesCount:gamepad.axes.length,buttons:allocate(new Array(gamepad.buttons.length),ALLOC_NORMAL),axes:allocate(new Array(gamepad.axes.length*4),ALLOC_NORMAL)};if(GLFW.joystickFunc){wasmTable.get(GLFW.joystickFunc)(joy,262145)}}var data=GLFW.joys[joy];for(var i=0;i<gamepad.buttons.length;++i){setValue(data.buttons+i,gamepad.buttons[i].pressed,"i8")}for(var i=0;i<gamepad.axes.length;++i){setValue(data.axes+i*4,gamepad.axes[i],"float")}}else{if(GLFW.joys[joy]){console.log("glfw joystick disconnected",joy);if(GLFW.joystickFunc){wasmTable.get(GLFW.joystickFunc)(joy,262146)}_free(GLFW.joys[joy].id);_free(GLFW.joys[joy].buttons);_free(GLFW.joys[joy].axes);delete GLFW.joys[joy]}}}}},setKeyCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.keyFunc;win.keyFunc=cbfun;return prevcbfun},setCharCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.charFunc;win.charFunc=cbfun;return prevcbfun},setMouseButtonCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.mouseButtonFunc;win.mouseButtonFunc=cbfun;return prevcbfun},setCursorPosCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.cursorPosFunc;win.cursorPosFunc=cbfun;return prevcbfun},setScrollCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.scrollFunc;win.scrollFunc=cbfun;return prevcbfun},setDropCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.dropFunc;win.dropFunc=cbfun;return prevcbfun},onDrop:function(event){if(!GLFW.active||!GLFW.active.dropFunc)return;if(!event.dataTransfer||!event.dataTransfer.files||event.dataTransfer.files.length==0)return;event.preventDefault();var filenames=allocate(new Array(event.dataTransfer.files.length*4),ALLOC_NORMAL);var filenamesArray=[];var count=event.dataTransfer.files.length;var written=0;var drop_dir=".glfw_dropped_files";FS.createPath("/",drop_dir);function save(file){var path="/"+drop_dir+"/"+file.name.replace(/\//g,"_");var reader=new FileReader;reader.onloadend=function(e){if(reader.readyState!=2){++written;console.log("failed to read dropped file: "+file.name+": "+reader.error);return}var data=e.target.result;FS.writeFile(path,new Uint8Array(data));if(++written===count){wasmTable.get(GLFW.active.dropFunc)(GLFW.active.id,count,filenames);for(var i=0;i<filenamesArray.length;++i){_free(filenamesArray[i])}_free(filenames)}};reader.readAsArrayBuffer(file);var filename=allocate(intArrayFromString(path),ALLOC_NORMAL);filenamesArray.push(filename);setValue(filenames+i*4,filename,"i8*")}for(var i=0;i<count;++i){save(event.dataTransfer.files[i])}return false},onDragover:function(event){if(!GLFW.active||!GLFW.active.dropFunc)return;event.preventDefault();return false},setWindowSizeCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowSizeFunc;win.windowSizeFunc=cbfun;return prevcbfun},setWindowCloseCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowCloseFunc;win.windowCloseFunc=cbfun;return prevcbfun},setWindowRefreshCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowRefreshFunc;win.windowRefreshFunc=cbfun;return prevcbfun},onClickRequestPointerLock:function(e){if(!Browser.pointerLock&&Module["canvas"].requestPointerLock){Module["canvas"].requestPointerLock();e.preventDefault()}},setInputMode:function(winid,mode,value){var win=GLFW.WindowFromId(winid);if(!win)return;switch(mode){case 208897:{switch(value){case 212993:{win.inputModes[mode]=value;Module["canvas"].removeEventListener("click",GLFW.onClickRequestPointerLock,true);Module["canvas"].exitPointerLock();break}case 212994:{console.log("glfwSetInputMode called with GLFW_CURSOR_HIDDEN value not implemented.");break}case 212995:{win.inputModes[mode]=value;Module["canvas"].addEventListener("click",GLFW.onClickRequestPointerLock,true);Module["canvas"].requestPointerLock();break}default:{console.log("glfwSetInputMode called with unknown value parameter value: "+value+".");break}}break}case 208898:{console.log("glfwSetInputMode called with GLFW_STICKY_KEYS mode not implemented.");break}case 208899:{console.log("glfwSetInputMode called with GLFW_STICKY_MOUSE_BUTTONS mode not implemented.");break}default:{console.log("glfwSetInputMode called with unknown mode parameter value: "+mode+".");break}}},getKey:function(winid,key){var win=GLFW.WindowFromId(winid);if(!win)return 0;return win.keys[key]},getMouseButton:function(winid,button){var win=GLFW.WindowFromId(winid);if(!win)return 0;return(win.buttons&1<<button)>0},getCursorPos:function(winid,x,y){setValue(x,Browser.mouseX,"double");setValue(y,Browser.mouseY,"double")},getMousePos:function(winid,x,y){setValue(x,Browser.mouseX,"i32");setValue(y,Browser.mouseY,"i32")},setCursorPos:function(winid,x,y){},getWindowPos:function(winid,x,y){var wx=0;var wy=0;var win=GLFW.WindowFromId(winid);if(win){wx=win.x;wy=win.y}if(x){setValue(x,wx,"i32")}if(y){setValue(y,wy,"i32")}},setWindowPos:function(winid,x,y){var win=GLFW.WindowFromId(winid);if(!win)return;win.x=x;win.y=y},getWindowSize:function(winid,width,height){var ww=0;var wh=0;var win=GLFW.WindowFromId(winid);if(win){ww=win.width;wh=win.height}if(width){setValue(width,ww,"i32")}if(height){setValue(height,wh,"i32")}},setWindowSize:function(winid,width,height){var win=GLFW.WindowFromId(winid);if(!win)return;if(GLFW.active.id==win.id){if(width==screen.width&&height==screen.height){Browser.requestFullscreen()}else{Browser.exitFullscreen();Browser.setCanvasSize(width,height);win.width=width;win.height=height}}if(!win.windowSizeFunc)return;wasmTable.get(win.windowSizeFunc)(win.id,width,height)},createWindow:function(width,height,title,monitor,share){var i,id;for(i=0;i<GLFW.windows.length&&GLFW.windows[i]!==null;i++){}if(i>0)throw"glfwCreateWindow only supports one window at time currently";id=i+1;if(width<=0||height<=0)return 0;if(monitor){Browser.requestFullscreen()}else{Browser.setCanvasSize(width,height)}for(i=0;i<GLFW.windows.length&&GLFW.windows[i]==null;i++){}var useWebGL=GLFW.hints[139265]>0;if(i==GLFW.windows.length){if(useWebGL){var contextAttributes={antialias:GLFW.hints[135181]>1,depth:GLFW.hints[135173]>0,stencil:GLFW.hints[135174]>0,alpha:GLFW.hints[135172]>0};Module.ctx=Browser.createContext(Module["canvas"],true,true,contextAttributes)}else{Browser.init()}}if(!Module.ctx&&useWebGL)return 0;var win=new GLFW_Window(id,width,height,title,monitor,share);if(id-1==GLFW.windows.length){GLFW.windows.push(win)}else{GLFW.windows[id-1]=win}GLFW.active=win;return win.id},destroyWindow:function(winid){var win=GLFW.WindowFromId(winid);if(!win)return;if(win.windowCloseFunc)wasmTable.get(win.windowCloseFunc)(win.id);GLFW.windows[win.id-1]=null;if(GLFW.active.id==win.id)GLFW.active=null;for(var i=0;i<GLFW.windows.length;i++)if(GLFW.windows[i]!==null)return;Module.ctx=Browser.destroyContext(Module["canvas"],true,true)},swapBuffers:function(winid){},GLFW2ParamToGLFW3Param:function(param){var table={196609:0,196610:0,196611:0,196612:0,196613:0,196614:0,131073:0,131074:0,131075:0,131076:0,131077:135169,131078:135170,131079:135171,131080:135172,131081:135173,131082:135174,131083:135183,131084:135175,131085:135176,131086:135177,131087:135178,131088:135179,131089:135180,131090:0,131091:135181,131092:139266,131093:139267,131094:139270,131095:139271,131096:139272};return table[param]}};function _glfwCreateWindow(width,height,title,monitor,share){return GLFW.createWindow(width,height,title,monitor,share)}function _glfwDefaultWindowHints(){GLFW.hints=GLFW.defaultHints}function _glfwDestroyWindow(winid){return GLFW.destroyWindow(winid)}function _glfwGetPrimaryMonitor(){return 1}function _glfwGetTime(){return GLFW.getTime()-GLFW.initialTime}function _glfwGetVideoModes(monitor,count){setValue(count,0,"i32");return 0}function _glfwInit(){if(GLFW.windows)return 1;GLFW.initialTime=GLFW.getTime();GLFW.hints=GLFW.defaultHints;GLFW.windows=new Array;GLFW.active=null;window.addEventListener("gamepadconnected",GLFW.onGamepadConnected,true);window.addEventListener("gamepaddisconnected",GLFW.onGamepadDisconnected,true);window.addEventListener("keydown",GLFW.onKeydown,true);window.addEventListener("keypress",GLFW.onKeyPress,true);window.addEventListener("keyup",GLFW.onKeyup,true);window.addEventListener("blur",GLFW.onBlur,true);Module["canvas"].addEventListener("touchmove",GLFW.onMousemove,true);Module["canvas"].addEventListener("touchstart",GLFW.onMouseButtonDown,true);Module["canvas"].addEventListener("touchcancel",GLFW.onMouseButtonUp,true);Module["canvas"].addEventListener("touchend",GLFW.onMouseButtonUp,true);Module["canvas"].addEventListener("mousemove",GLFW.onMousemove,true);Module["canvas"].addEventListener("mousedown",GLFW.onMouseButtonDown,true);Module["canvas"].addEventListener("mouseup",GLFW.onMouseButtonUp,true);Module["canvas"].addEventListener("wheel",GLFW.onMouseWheel,true);Module["canvas"].addEventListener("mousewheel",GLFW.onMouseWheel,true);Module["canvas"].addEventListener("mouseenter",GLFW.onMouseenter,true);Module["canvas"].addEventListener("mouseleave",GLFW.onMouseleave,true);Module["canvas"].addEventListener("drop",GLFW.onDrop,true);Module["canvas"].addEventListener("dragover",GLFW.onDragover,true);Browser.resizeListeners.push(function(width,height){GLFW.onCanvasResize(width,height)});return 1}function _glfwMakeContextCurrent(winid){}function _glfwSetCharCallback(winid,cbfun){return GLFW.setCharCallback(winid,cbfun)}function _glfwSetCursorEnterCallback(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.cursorEnterFunc;win.cursorEnterFunc=cbfun;return prevcbfun}function _glfwSetCursorPosCallback(winid,cbfun){return GLFW.setCursorPosCallback(winid,cbfun)}function _glfwSetDropCallback(winid,cbfun){return GLFW.setDropCallback(winid,cbfun)}function _glfwSetErrorCallback(cbfun){var prevcbfun=GLFW.errorFunc;GLFW.errorFunc=cbfun;return prevcbfun}function _glfwSetKeyCallback(winid,cbfun){return GLFW.setKeyCallback(winid,cbfun)}function _glfwSetMouseButtonCallback(winid,cbfun){return GLFW.setMouseButtonCallback(winid,cbfun)}function _glfwSetScrollCallback(winid,cbfun){return GLFW.setScrollCallback(winid,cbfun)}function _glfwSetWindowFocusCallback(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowFocusFunc;win.windowFocusFunc=cbfun;return prevcbfun}function _glfwSetWindowIconifyCallback(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowIconifyFunc;win.windowIconifyFunc=cbfun;return prevcbfun}function _glfwSetWindowShouldClose(winid,value){var win=GLFW.WindowFromId(winid);if(!win)return;win.shouldClose=value}function _glfwSetWindowSizeCallback(winid,cbfun){return GLFW.setWindowSizeCallback(winid,cbfun)}function _glfwSwapBuffers(winid){GLFW.swapBuffers(winid)}function _glfwSwapInterval(interval){interval=Math.abs(interval);if(interval==0)_emscripten_set_main_loop_timing(0,0);else _emscripten_set_main_loop_timing(1,interval)}function _glfwTerminate(){window.removeEventListener("gamepadconnected",GLFW.onGamepadConnected,true);window.removeEventListener("gamepaddisconnected",GLFW.onGamepadDisconnected,true);window.removeEventListener("keydown",GLFW.onKeydown,true);window.removeEventListener("keypress",GLFW.onKeyPress,true);window.removeEventListener("keyup",GLFW.onKeyup,true);window.removeEventListener("blur",GLFW.onBlur,true);Module["canvas"].removeEventListener("touchmove",GLFW.onMousemove,true);Module["canvas"].removeEventListener("touchstart",GLFW.onMouseButtonDown,true);Module["canvas"].removeEventListener("touchcancel",GLFW.onMouseButtonUp,true);Module["canvas"].removeEventListener("touchend",GLFW.onMouseButtonUp,true);Module["canvas"].removeEventListener("mousemove",GLFW.onMousemove,true);Module["canvas"].removeEventListener("mousedown",GLFW.onMouseButtonDown,true);Module["canvas"].removeEventListener("mouseup",GLFW.onMouseButtonUp,true);Module["canvas"].removeEventListener("wheel",GLFW.onMouseWheel,true);Module["canvas"].removeEventListener("mousewheel",GLFW.onMouseWheel,true);Module["canvas"].removeEventListener("mouseenter",GLFW.onMouseenter,true);Module["canvas"].removeEventListener("mouseleave",GLFW.onMouseleave,true);Module["canvas"].removeEventListener("drop",GLFW.onDrop,true);Module["canvas"].removeEventListener("dragover",GLFW.onDragover,true);Module["canvas"].width=Module["canvas"].height=1;GLFW.windows=null;GLFW.active=null}function _glfwWindowHint(target,hint){GLFW.hints[target]=hint}function _time(ptr){var ret=Date.now()/1e3|0;if(ptr){HEAP32[ptr>>2]=ret}return ret}var FSNode=function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev};var readMode=292|73;var writeMode=146;Object.defineProperties(FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(val){val?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===writeMode},set:function(val){val?this.mode|=writeMode:this.mode&=~writeMode}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}});FS.FSNode=FSNode;FS.staticInit();Module["FS_createPath"]=FS.createPath;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createDevice"]=FS.createDevice;Module["FS_unlink"]=FS.unlink;var GLctx;for(var i=0;i<32;++i)tempFixedLengthArray.push(new Array(i));var miniTempWebGLFloatBuffersStorage=new Float32Array(288);for(var i=0;i<288;++i){miniTempWebGLFloatBuffers[i]=miniTempWebGLFloatBuffersStorage.subarray(0,i+1)}var __miniTempWebGLIntBuffersStorage=new Int32Array(288);for(var i=0;i<288;++i){__miniTempWebGLIntBuffers[i]=__miniTempWebGLIntBuffersStorage.subarray(0,i+1)}Module["requestFullscreen"]=function Module_requestFullscreen(lockPointer,resizeCanvas){Browser.requestFullscreen(lockPointer,resizeCanvas)};Module["requestAnimationFrame"]=function Module_requestAnimationFrame(func){Browser.requestAnimationFrame(func)};Module["setCanvasSize"]=function Module_setCanvasSize(width,height,noUpdates){Browser.setCanvasSize(width,height,noUpdates)};Module["pauseMainLoop"]=function Module_pauseMainLoop(){Browser.mainLoop.pause()};Module["resumeMainLoop"]=function Module_resumeMainLoop(){Browser.mainLoop.resume()};Module["getUserMedia"]=function Module_getUserMedia(){Browser.getUserMedia()};Module["createContext"]=function Module_createContext(canvas,useWebGL,setInModule,webGLContextAttributes){return Browser.createContext(canvas,useWebGL,setInModule,webGLContextAttributes)};function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var asmLibraryArg={"a":___assert_fail,"Ta":___sys_chdir,"L":___sys_fcntl64,"Sa":___sys_getcwd,"Va":___sys_ioctl,"Xa":___sys_open,"C":_emscripten_exit_pointerlock,"aa":_emscripten_get_element_css_size,"X":_emscripten_get_gamepad_status,"Y":_emscripten_get_num_gamepads,"Jd":_emscripten_glActiveTexture,"Id":_emscripten_glAttachShader,"Zd":_emscripten_glBeginQueryEXT,"Hd":_emscripten_glBindAttribLocation,"Gd":_emscripten_glBindBuffer,"Fd":_emscripten_glBindFramebuffer,"Ed":_emscripten_glBindRenderbuffer,"Dd":_emscripten_glBindTexture,"Rd":_emscripten_glBindVertexArrayOES,"Cd":_emscripten_glBlendColor,"Bd":_emscripten_glBlendEquation,"Ad":_emscripten_glBlendEquationSeparate,"zd":_emscripten_glBlendFunc,"yd":_emscripten_glBlendFuncSeparate,"xd":_emscripten_glBufferData,"wd":_emscripten_glBufferSubData,"vd":_emscripten_glCheckFramebufferStatus,"ud":_emscripten_glClear,"td":_emscripten_glClearColor,"sd":_emscripten_glClearDepthf,"rd":_emscripten_glClearStencil,"qd":_emscripten_glColorMask,"pd":_emscripten_glCompileShader,"od":_emscripten_glCompressedTexImage2D,"nd":_emscripten_glCompressedTexSubImage2D,"md":_emscripten_glCopyTexImage2D,"ld":_emscripten_glCopyTexSubImage2D,"kd":_emscripten_glCreateProgram,"jd":_emscripten_glCreateShader,"id":_emscripten_glCullFace,"hd":_emscripten_glDeleteBuffers,"gd":_emscripten_glDeleteFramebuffers,"fd":_emscripten_glDeleteProgram,"T":_emscripten_glDeleteQueriesEXT,"ed":_emscripten_glDeleteRenderbuffers,"dd":_emscripten_glDeleteShader,"cd":_emscripten_glDeleteTextures,"Qd":_emscripten_glDeleteVertexArraysOES,"bd":_emscripten_glDepthFunc,"ad":_emscripten_glDepthMask,"$c":_emscripten_glDepthRangef,"_c":_emscripten_glDetachShader,"Zc":_emscripten_glDisable,"Yc":_emscripten_glDisableVertexAttribArray,"Xc":_emscripten_glDrawArrays,"Md":_emscripten_glDrawArraysInstancedANGLE,"Nd":_emscripten_glDrawBuffersWEBGL,"Wc":_emscripten_glDrawElements,"Ld":_emscripten_glDrawElementsInstancedANGLE,"Vc":_emscripten_glEnable,"Uc":_emscripten_glEnableVertexAttribArray,"Yd":_emscripten_glEndQueryEXT,"Tc":_emscripten_glFinish,"Sc":_emscripten_glFlush,"Rc":_emscripten_glFramebufferRenderbuffer,"Qc":_emscripten_glFramebufferTexture2D,"Pc":_emscripten_glFrontFace,"Oc":_emscripten_glGenBuffers,"Mc":_emscripten_glGenFramebuffers,"U":_emscripten_glGenQueriesEXT,"Lc":_emscripten_glGenRenderbuffers,"Kc":_emscripten_glGenTextures,"Pd":_emscripten_glGenVertexArraysOES,"Nc":_emscripten_glGenerateMipmap,"Ic":_emscripten_glGetActiveAttrib,"Hc":_emscripten_glGetActiveUniform,"Gc":_emscripten_glGetAttachedShaders,"Fc":_emscripten_glGetAttribLocation,"Ec":_emscripten_glGetBooleanv,"Dc":_emscripten_glGetBufferParameteriv,"Cc":_emscripten_glGetError,"Bc":_emscripten_glGetFloatv,"Ac":_emscripten_glGetFramebufferAttachmentParameteriv,"zc":_emscripten_glGetIntegerv,"xc":_emscripten_glGetProgramInfoLog,"yc":_emscripten_glGetProgramiv,"Td":_emscripten_glGetQueryObjecti64vEXT,"Vd":_emscripten_glGetQueryObjectivEXT,"Sd":_emscripten_glGetQueryObjectui64vEXT,"Ud":_emscripten_glGetQueryObjectuivEXT,"Wd":_emscripten_glGetQueryivEXT,"wc":_emscripten_glGetRenderbufferParameteriv,"uc":_emscripten_glGetShaderInfoLog,"tc":_emscripten_glGetShaderPrecisionFormat,"sc":_emscripten_glGetShaderSource,"vc":_emscripten_glGetShaderiv,"rc":_emscripten_glGetString,"qc":_emscripten_glGetTexParameterfv,"pc":_emscripten_glGetTexParameteriv,"mc":_emscripten_glGetUniformLocation,"oc":_emscripten_glGetUniformfv,"nc":_emscripten_glGetUniformiv,"jc":_emscripten_glGetVertexAttribPointerv,"lc":_emscripten_glGetVertexAttribfv,"kc":_emscripten_glGetVertexAttribiv,"ic":_emscripten_glHint,"hc":_emscripten_glIsBuffer,"gc":_emscripten_glIsEnabled,"fc":_emscripten_glIsFramebuffer,"ec":_emscripten_glIsProgram,"S":_emscripten_glIsQueryEXT,"dc":_emscripten_glIsRenderbuffer,"cc":_emscripten_glIsShader,"bc":_emscripten_glIsTexture,"Od":_emscripten_glIsVertexArrayOES,"ac":_emscripten_glLineWidth,"$b":_emscripten_glLinkProgram,"_b":_emscripten_glPixelStorei,"Zb":_emscripten_glPolygonOffset,"Xd":_emscripten_glQueryCounterEXT,"Yb":_emscripten_glReadPixels,"Xb":_emscripten_glReleaseShaderCompiler,"Vb":_emscripten_glRenderbufferStorage,"Ub":_emscripten_glSampleCoverage,"Tb":_emscripten_glScissor,"Sb":_emscripten_glShaderBinary,"Rb":_emscripten_glShaderSource,"Qb":_emscripten_glStencilFunc,"Pb":_emscripten_glStencilFuncSeparate,"Ob":_emscripten_glStencilMask,"Nb":_emscripten_glStencilMaskSeparate,"Mb":_emscripten_glStencilOp,"Kb":_emscripten_glStencilOpSeparate,"Jb":_emscripten_glTexImage2D,"Ib":_emscripten_glTexParameterf,"Hb":_emscripten_glTexParameterfv,"Gb":_emscripten_glTexParameteri,"Fb":_emscripten_glTexParameteriv,"Eb":_emscripten_glTexSubImage2D,"Db":_emscripten_glUniform1f,"Cb":_emscripten_glUniform1fv,"Bb":_emscripten_glUniform1i,"zb":_emscripten_glUniform1iv,"yb":_emscripten_glUniform2f,"xb":_emscripten_glUniform2fv,"wb":_emscripten_glUniform2i,"vb":_emscripten_glUniform2iv,"ub":_emscripten_glUniform3f,"tb":_emscripten_glUniform3fv,"sb":_emscripten_glUniform3i,"rb":_emscripten_glUniform3iv,"qb":_emscripten_glUniform4f,"ob":_emscripten_glUniform4fv,"nb":_emscripten_glUniform4i,"mb":_emscripten_glUniform4iv,"lb":_emscripten_glUniformMatrix2fv,"kb":_emscripten_glUniformMatrix3fv,"jb":_emscripten_glUniformMatrix4fv,"ib":_emscripten_glUseProgram,"hb":_emscripten_glValidateProgram,"gb":_emscripten_glVertexAttrib1f,"fb":_emscripten_glVertexAttrib1fv,"db":_emscripten_glVertexAttrib2f,"cb":_emscripten_glVertexAttrib2fv,"bb":_emscripten_glVertexAttrib3f,"ab":_emscripten_glVertexAttrib3fv,"$a":_emscripten_glVertexAttrib4f,"_a":_emscripten_glVertexAttrib4fv,"Kd":_emscripten_glVertexAttribDivisorANGLE,"Za":_emscripten_glVertexAttribPointer,"Ya":_emscripten_glViewport,"Pa":_emscripten_memcpy_big,"Qa":_emscripten_resize_heap,"x":_emscripten_run_script,"Z":_emscripten_sample_gamepad_data,"ya":_emscripten_set_click_callback_on_thread,"Aa":_emscripten_set_fullscreenchange_callback_on_thread,"ta":_emscripten_set_gamepadconnected_callback_on_thread,"sa":_emscripten_set_gamepaddisconnected_callback_on_thread,"za":_emscripten_set_keydown_callback_on_thread,"$d":_emscripten_set_main_loop,"ua":_emscripten_set_touchcancel_callback_on_thread,"wa":_emscripten_set_touchend_callback_on_thread,"va":_emscripten_set_touchmove_callback_on_thread,"xa":_emscripten_set_touchstart_callback_on_thread,"Ra":_emscripten_thread_sleep,"V":_exit,"M":_fd_close,"Ua":_fd_read,"Na":_fd_seek,"K":_fd_write,"p":_glActiveTexture,"D":_glAttachShader,"k":_glBindAttribLocation,"b":_glBindBuffer,"j":_glBindTexture,"Lb":_glBlendFunc,"e":_glBufferData,"v":_glBufferSubData,"N":_glClear,"O":_glClearColor,"eb":_glClearDepthf,"Fa":_glCompileShader,"La":_glCompressedTexImage2D,"Da":_glCreateProgram,"Ha":_glCreateShader,"Ab":_glCullFace,"m":_glDeleteBuffers,"G":_glDeleteProgram,"H":_glDeleteShader,"J":_glDeleteTextures,"Wb":_glDepthFunc,"I":_glDetachShader,"P":_glDisable,"h":_glDisableVertexAttribArray,"R":_glDrawArrays,"Q":_glDrawElements,"w":_glEnable,"c":_glEnableVertexAttribArray,"pb":_glFrontFace,"f":_glGenBuffers,"Oa":_glGenTextures,"u":_glGetAttribLocation,"Jc":_glGetFloatv,"Ba":_glGetProgramInfoLog,"F":_glGetProgramiv,"Ea":_glGetShaderInfoLog,"E":_glGetShaderiv,"n":_glGetString,"t":_glGetUniformLocation,"Ca":_glLinkProgram,"Wa":_glPixelStorei,"Ia":_glReadPixels,"Ga":_glShaderSource,"Ma":_glTexImage2D,"o":_glTexParameteri,"y":_glUniform1i,"q":_glUniform4f,"r":_glUniformMatrix4fv,"l":_glUseProgram,"Ja":_glVertexAttrib2f,"Ka":_glVertexAttrib3f,"s":_glVertexAttrib4f,"d":_glVertexAttribPointer,"_d":_glViewport,"A":_glfwCreateWindow,"pa":_glfwDefaultWindowHints,"$":_glfwDestroyWindow,"B":_glfwGetPrimaryMonitor,"i":_glfwGetTime,"oa":_glfwGetVideoModes,"qa":_glfwInit,"da":_glfwMakeContextCurrent,"ia":_glfwSetCharCallback,"ea":_glfwSetCursorEnterCallback,"ga":_glfwSetCursorPosCallback,"ka":_glfwSetDropCallback,"ra":_glfwSetErrorCallback,"ja":_glfwSetKeyCallback,"ha":_glfwSetMouseButtonCallback,"fa":_glfwSetScrollCallback,"la":_glfwSetWindowFocusCallback,"ma":_glfwSetWindowIconifyCallback,"W":_glfwSetWindowShouldClose,"na":_glfwSetWindowSizeCallback,"_":_glfwSwapBuffers,"ca":_glfwSwapInterval,"z":_glfwTerminate,"g":_glfwWindowHint,"ba":_time};var asm=createWasm();var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["be"]).apply(null,arguments)};var _main=Module["_main"]=function(){return(_main=Module["_main"]=Module["asm"]["ce"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["ee"]).apply(null,arguments)};var _free=Module["_free"]=function(){return(_free=Module["_free"]=Module["asm"]["fe"]).apply(null,arguments)};var ___errno_location=Module["___errno_location"]=function(){return(___errno_location=Module["___errno_location"]=Module["asm"]["ge"]).apply(null,arguments)};var stackAlloc=Module["stackAlloc"]=function(){return(stackAlloc=Module["stackAlloc"]=Module["asm"]["he"]).apply(null,arguments)};Module["addRunDependency"]=addRunDependency;Module["removeRunDependency"]=removeRunDependency;Module["FS_createPath"]=FS.createPath;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createDevice"]=FS.createDevice;Module["FS_unlink"]=FS.unlink;var calledRun;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}var calledMain=false;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args){var entryFunction=Module["_main"];var argc=0;var argv=0;try{var ret=entryFunction(argc,argv);exit(ret,true)}catch(e){if(e instanceof ExitStatus){return}else if(e=="unwind"){noExitRuntime=true;return}else{var toLog=e;if(e&&typeof e==="object"&&e.stack){toLog=[e,e.stack]}err("exception thrown: "+toLog);quit_(1,e)}}finally{calledMain=true}}function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(shouldRunNow)callMain(args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}Module["run"]=run;function exit(status,implicit){if(implicit&&noExitRuntime&&status===0){return}if(noExitRuntime){}else{EXITSTATUS=status;exitRuntime();if(Module["onExit"])Module["onExit"](status);ABORT=true}quit_(status,new ExitStatus(status))}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}var shouldRunNow=true;if(Module["noInitialRun"])shouldRunNow=false;run();
diff --git a/examples/web/models/models_loading.wasm b/examples/web/models/models_loading.wasm
deleted file mode 100644
index 4965e7e..0000000
--- a/examples/web/models/models_loading.wasm
+++ /dev/null
Binary files differ
diff --git a/examples/web/models/models_material_pbr.c b/examples/web/models/models_material_pbr.c
deleted file mode 100644
index 5692653..0000000
--- a/examples/web/models/models_material_pbr.c
+++ /dev/null
@@ -1,224 +0,0 @@
-/*******************************************************************************************
-*
-* raylib [models] example - PBR material
-*
-* This example has been created using raylib 1.8 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
-*
-* Copyright (c) 2017 Ramon Santamaria (@raysan5)
-*
-********************************************************************************************/
-
-#include "raylib.h"
-#include "raymath.h"
-
-#define RLIGHTS_IMPLEMENTATION
-#include "rlights.h"
-
-#if defined(PLATFORM_WEB)
- #include <emscripten/emscripten.h>
-#endif
-
-#define CUBEMAP_SIZE 512 // Cubemap texture size
-#define IRRADIANCE_SIZE 32 // Irradiance texture size
-#define PREFILTERED_SIZE 256 // Prefiltered HDR environment texture size
-#define BRDF_SIZE 512 // BRDF LUT texture size
-
-//----------------------------------------------------------------------------------
-// Global Variables Definition
-//----------------------------------------------------------------------------------
-const int screenWidth = 800;
-const int screenHeight = 450;
-
-// Define the camera to look into our 3d world
-Camera camera = {{ 4.0f, 4.0f, 4.0f }, { 0.0f, 0.5f, 0.0f }, { 0.0f, 1.0f, 0.0f }, 45.0f };
-
-Model model = { 0 };
-
-//----------------------------------------------------------------------------------
-// Module Functions Declaration
-//----------------------------------------------------------------------------------
-void UpdateDrawFrame(void); // Update and Draw one frame
-
-// PBR material loading
-static Material LoadMaterialPBR(Color albedo, float metalness, float roughness);
-
-//----------------------------------------------------------------------------------
-// Program Main Entry Point
-//----------------------------------------------------------------------------------
-int main(void)
-{
- // Initialization
- //--------------------------------------------------------------------------------------
- SetConfigFlags(FLAG_MSAA_4X_HINT); // Enable Multi Sampling Anti Aliasing 4x (if available)
- InitWindow(screenWidth, screenHeight, "raylib [models] example - pbr material");
-
- // Load model and PBR material
- model = LoadModel("resources/pbr/trooper.obj");
- model.material = LoadMaterialPBR((Color){ 255, 255, 255, 255 }, 1.0f, 1.0f);
-
- // Define lights attributes
- // NOTE: Shader is passed to every light on creation to define shader bindings internally
- Light lights[MAX_LIGHTS] = {
- CreateLight(LIGHT_POINT, (Vector3){ LIGHT_DISTANCE, LIGHT_HEIGHT, 0.0f }, (Vector3){ 0.0f, 0.0f, 0.0f }, (Color){ 255, 0, 0, 255 }, model.material.shader),
- CreateLight(LIGHT_POINT, (Vector3){ 0.0f, LIGHT_HEIGHT, LIGHT_DISTANCE }, (Vector3){ 0.0f, 0.0f, 0.0f }, (Color){ 0, 255, 0, 255 }, model.material.shader),
- CreateLight(LIGHT_POINT, (Vector3){ -LIGHT_DISTANCE, LIGHT_HEIGHT, 0.0f }, (Vector3){ 0.0f, 0.0f, 0.0f }, (Color){ 0, 0, 255, 255 }, model.material.shader),
- CreateLight(LIGHT_DIRECTIONAL, (Vector3){ 0.0f, LIGHT_HEIGHT*2.0f, -LIGHT_DISTANCE }, (Vector3){ 0.0f, 0.0f, 0.0f }, (Color){ 255, 0, 255, 255 }, model.material.shader)
- };
-
- SetCameraMode(camera, CAMERA_ORBITAL); // Set an orbital camera mode
-
-#if defined(PLATFORM_WEB)
- emscripten_set_main_loop(UpdateDrawFrame, 60, 1);
-#else
- SetTargetFPS(60); // Set our game to run at 60 frames-per-second
- //--------------------------------------------------------------------------------------
-
- // Main game loop
- while (!WindowShouldClose()) // Detect window close button or ESC key
- {
- UpdateDrawFrame();
- }
-#endif
-
- // De-Initialization
- //--------------------------------------------------------------------------------------
- UnloadModel(model); // Unload skybox model
-
- CloseWindow(); // Close window and OpenGL context
- //--------------------------------------------------------------------------------------
-
- return 0;
-}
-
-//----------------------------------------------------------------------------------
-// Module Functions Definition
-//----------------------------------------------------------------------------------
-void UpdateDrawFrame(void)
-{
- // Update
- //----------------------------------------------------------------------------------
- UpdateCamera(&camera); // Update camera
-
- // Send to material PBR shader camera view position
- float cameraPos[3] = { camera.position.x, camera.position.y, camera.position.z };
- SetShaderValue(model.material.shader, model.material.shader.locs[SHADER_LOC_VECTOR_VIEW], cameraPos, 3);
- //----------------------------------------------------------------------------------
-
- // Draw
- //----------------------------------------------------------------------------------
- BeginDrawing();
-
- ClearBackground(RAYWHITE);
-
- Begin3dMode(camera);
-
- DrawModel(model, Vector3Zero(), 1.0f, WHITE);
-
- DrawGrid(10, 1.0f);
-
- End3dMode();
-
- DrawFPS(10, 10);
-
- EndDrawing();
- //----------------------------------------------------------------------------------
-}
-
-// Load PBR material (Supports: ALBEDO, NORMAL, METALNESS, ROUGHNESS, AO, EMMISIVE, HEIGHT maps)
-// NOTE: PBR shader is loaded inside this function
-static Material LoadMaterialPBR(Color albedo, float metalness, float roughness)
-{
- Material mat = { 0 }; // NOTE: All maps textures are set to { 0 }
-
- #define PATH_PBR_VS "resources/shaders/pbr.vs" // Path to physically based rendering vertex shader
- #define PATH_PBR_FS "resources/shaders/pbr.fs" // Path to physically based rendering fragment shader
-
- mat.shader = LoadShader(PATH_PBR_VS, PATH_PBR_FS);
-
- // Get required locations points for PBR material
- // NOTE: Those location names must be available and used in the shader code
- mat.shader.locs[SHADER_LOC_MAP_ALBEDO] = GetShaderLocation(mat.shader, "albedo.sampler");
- mat.shader.locs[SHADER_LOC_MAP_METALNESS] = GetShaderLocation(mat.shader, "metalness.sampler");
- mat.shader.locs[SHADER_LOC_MAP_NORMAL] = GetShaderLocation(mat.shader, "normals.sampler");
- mat.shader.locs[SHADER_LOC_MAP_ROUGHNESS] = GetShaderLocation(mat.shader, "roughness.sampler");
- mat.shader.locs[SHADER_LOC_MAP_OCCUSION] = GetShaderLocation(mat.shader, "occlusion.sampler");
- //mat.shader.locs[SHADER_LOC_MAP_EMISSION] = GetShaderLocation(mat.shader, "emission.sampler");
- //mat.shader.locs[SHADER_LOC_MAP_HEIGHT] = GetShaderLocation(mat.shader, "height.sampler");
- mat.shader.locs[SHADER_LOC_MAP_IRRADIANCE] = GetShaderLocation(mat.shader, "irradianceMap");
- mat.shader.locs[SHADER_LOC_MAP_PREFILTER] = GetShaderLocation(mat.shader, "prefilterMap");
- mat.shader.locs[SHADER_LOC_MAP_BRDF] = GetShaderLocation(mat.shader, "brdfLUT");
-
- // Set view matrix location
- mat.shader.locs[SHADER_LOC_MATRIX_MODEL] = GetShaderLocation(mat.shader, "mMatrix");
- mat.shader.locs[SHADER_LOC_MATRIX_VIEW] = GetShaderLocation(mat.shader, "view");
- mat.shader.locs[SHADER_LOC_VECTOR_VIEW] = GetShaderLocation(mat.shader, "viewPos");
-
- // Set PBR standard maps
- mat.maps[MATERIAL_MAP_ALBEDO].texture = LoadTexture("resources/pbr/trooper_albedo.png");
- mat.maps[MATERIAL_MAP_NORMAL].texture = LoadTexture("resources/pbr/trooper_normals.png");
- mat.maps[MATERIAL_MAP_METALNESS].texture = LoadTexture("resources/pbr/trooper_metalness.png");
- mat.maps[MATERIAL_MAP_ROUGHNESS].texture = LoadTexture("resources/pbr/trooper_roughness.png");
- mat.maps[MATERIAL_MAP_OCCLUSION].texture = LoadTexture("resources/pbr/trooper_ao.png");
-
- // Set environment maps
- #define PATH_CUBEMAP_VS "resources/shaders/cubemap.vs" // Path to equirectangular to cubemap vertex shader
- #define PATH_CUBEMAP_FS "resources/shaders/cubemap.fs" // Path to equirectangular to cubemap fragment shader
- #define PATH_SKYBOX_VS "resources/shaders/skybox.vs" // Path to skybox vertex shader
- #define PATH_IRRADIANCE_FS "resources/shaders/irradiance.fs" // Path to irradiance (GI) calculation fragment shader
- #define PATH_PREFILTER_FS "resources/shaders/prefilter.fs" // Path to reflection prefilter calculation fragment shader
- #define PATH_BRDF_VS "resources/shaders/brdf.vs" // Path to bidirectional reflectance distribution function vertex shader
- #define PATH_BRDF_FS "resources/shaders/brdf.fs" // Path to bidirectional reflectance distribution function fragment shader
-
- Shader shdrCubemap = LoadShader(PATH_CUBEMAP_VS, PATH_CUBEMAP_FS);
- Shader shdrIrradiance = LoadShader(PATH_SKYBOX_VS, PATH_IRRADIANCE_FS);
- Shader shdrPrefilter = LoadShader(PATH_SKYBOX_VS, PATH_PREFILTER_FS);
- Shader shdrBRDF = LoadShader(PATH_BRDF_VS, PATH_BRDF_FS);
-
- // Setup required shader locations
- SetShaderValuei(shdrCubemap, GetShaderLocation(shdrCubemap, "equirectangularMap"), (int[1]){ 0 }, 1);
- SetShaderValuei(shdrIrradiance, GetShaderLocation(shdrIrradiance, "environmentMap"), (int[1]){ 0 }, 1);
- SetShaderValuei(shdrPrefilter, GetShaderLocation(shdrPrefilter, "environmentMap"), (int[1]){ 0 }, 1);
-
- Texture2D texHDR = LoadTexture("resources/pinetree.hdr");
- Texture2D cubemap = GenTextureCubemap(shdrCubemap, texHDR, CUBEMAP_SIZE);
- mat.maps[MATERIAL_MAP_IRRADIANCE].texture = GenTextureIrradiance(shdrIrradiance, cubemap, IRRADIANCE_SIZE);
- mat.maps[MATERIAL_MAP_PREFILTER].texture = GenTexturePrefilter(shdrPrefilter, cubemap, PREFILTERED_SIZE);
- mat.maps[MATERIAL_MAP_BRDG].texture = GenTextureBRDF(shdrBRDF, cubemap, BRDF_SIZE);
- UnloadTexture(cubemap);
- UnloadTexture(texHDR);
-
- // Unload already used shaders (to create specific textures)
- UnloadShader(shdrCubemap);
- UnloadShader(shdrIrradiance);
- UnloadShader(shdrPrefilter);
- UnloadShader(shdrBRDF);
-
- // Set textures filtering for better quality
- SetTextureFilter(mat.maps[MATERIAL_MAP_ALBEDO].texture, FILTER_BILINEAR);
- SetTextureFilter(mat.maps[MATERIAL_MAP_NORMAL].texture, FILTER_BILINEAR);
- SetTextureFilter(mat.maps[MATERIAL_MAP_METALNESS].texture, FILTER_BILINEAR);
- SetTextureFilter(mat.maps[MATERIAL_MAP_ROUGHNESS].texture, FILTER_BILINEAR);
- SetTextureFilter(mat.maps[MATERIAL_MAP_OCCLUSION].texture, FILTER_BILINEAR);
-
- // Enable sample usage in shader for assigned textures
- SetShaderValuei(mat.shader, GetShaderLocation(mat.shader, "albedo.useSampler"), (int[1]){ 1 }, 1);
- SetShaderValuei(mat.shader, GetShaderLocation(mat.shader, "normals.useSampler"), (int[1]){ 1 }, 1);
- SetShaderValuei(mat.shader, GetShaderLocation(mat.shader, "metalness.useSampler"), (int[1]){ 1 }, 1);
- SetShaderValuei(mat.shader, GetShaderLocation(mat.shader, "roughness.useSampler"), (int[1]){ 1 }, 1);
- SetShaderValuei(mat.shader, GetShaderLocation(mat.shader, "occlusion.useSampler"), (int[1]){ 1 }, 1);
-
- int renderModeLoc = GetShaderLocation(mat.shader, "renderMode");
- SetShaderValuei(mat.shader, renderModeLoc, (int[1]){ 0 }, 1);
-
- // Set up material properties color
- mat.maps[MATERIAL_MAP_ALBEDO].color = albedo;
- mat.maps[MATERIAL_MAP_NORMAL].color = (Color){ 128, 128, 255, 255 };
- mat.maps[MATERIAL_MAP_METALNESS].value = metalness;
- mat.maps[MATERIAL_MAP_ROUGHNESS].value = roughness;
- mat.maps[MATERIAL_MAP_OCCLUSION].value = 1.0f;
- mat.maps[MATERIAL_MAP_EMISSION].value = 0.5f;
- mat.maps[MATERIAL_MAP_HEIGHT].value = 0.5f;
-
- return mat;
-} \ No newline at end of file
diff --git a/examples/web/models/models_mesh_generation.c b/examples/web/models/models_mesh_generation.c
deleted file mode 100644
index 9ebe5f6..0000000
--- a/examples/web/models/models_mesh_generation.c
+++ /dev/null
@@ -1,152 +0,0 @@
-/*******************************************************************************************
-*
-* raylib example - procedural mesh generation
-*
-* This example has been created using raylib 1.8 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
-*
-* Copyright (c) 2017 Ramon Santamaria (Ray San)
-*
-********************************************************************************************/
-
-#include "raylib.h"
-
-#if defined(PLATFORM_WEB)
- #include <emscripten/emscripten.h>
-#endif
-
-#define NUM_MODELS 8 // Parametric 3d shapes to generate
-
-//----------------------------------------------------------------------------------
-// Global Variables Definition
-//----------------------------------------------------------------------------------
-const int screenWidth = 800;
-const int screenHeight = 450;
-
-Model models[NUM_MODELS] = { 0 };
-
-// Define the camera to look into our 3d world
-Camera camera = {{ 5.0f, 5.0f, 5.0f }, { 0.0f, 0.0f, 0.0f }, { 0.0f, 1.0f, 0.0f }, 45.0f };
-
-// Model drawing position
-Vector3 position = { 0.0f, 0.0f, 0.0f };
-
-int currentModel = 0;
-
-//----------------------------------------------------------------------------------
-// Module Functions Declaration
-//----------------------------------------------------------------------------------
-void UpdateDrawFrame(void); // Update and Draw one frame
-
-//----------------------------------------------------------------------------------
-// Program Main Entry Point
-//----------------------------------------------------------------------------------
-int main(void)
-{
- // Initialization
- //--------------------------------------------------------------------------------------
- InitWindow(screenWidth, screenHeight, "raylib [models] example - mesh generation");
-
- // We generate a checked image for texturing
- Image checked = GenImageChecked(2, 2, 1, 1, RED, GREEN);
- Texture2D texture = LoadTextureFromImage(checked);
- UnloadImage(checked);
-
- models[0] = LoadModelFromMesh(GenMeshPlane(2, 2, 5, 5));
- models[1] = LoadModelFromMesh(GenMeshCube(2.0f, 1.0f, 2.0f));
- models[2] = LoadModelFromMesh(GenMeshSphere(2, 32, 32));
- models[3] = LoadModelFromMesh(GenMeshHemiSphere(2, 16, 16));
- models[4] = LoadModelFromMesh(GenMeshCylinder(1, 2, 16));
- models[5] = LoadModelFromMesh(GenMeshTorus(0.25f, 4.0f, 16, 32));
- models[6] = LoadModelFromMesh(GenMeshKnot(1.0f, 2.0f, 16, 128));
- models[7] = LoadModelFromMesh(GenMeshPoly(5, 2.0f));
-
- // Set checked texture as default diffuse component for all models material
- for (int i = 0; i < NUM_MODELS; i++) models[i].materials[0].maps[MATERIAL_MAP_DIFFUSE].texture = texture;
-
- SetCameraMode(camera, CAMERA_ORBITAL); // Set a orbital camera mode
-
-#if defined(PLATFORM_WEB)
- emscripten_set_main_loop(UpdateDrawFrame, 60, 1);
-#else
- SetTargetFPS(60); // Set our game to run at 60 frames-per-second
- //--------------------------------------------------------------------------------------
-
- // Main game loop
- while (!WindowShouldClose()) // Detect window close button or ESC key
- {
- UpdateDrawFrame();
- }
-#endif
-
- // De-Initialization
- //--------------------------------------------------------------------------------------
- // Unload models data (GPU VRAM)
- for (int i = 0; i < NUM_MODELS; i++) UnloadModel(models[i]);
-
- CloseWindow(); // Close window and OpenGL context
- //--------------------------------------------------------------------------------------
-
- return 0;
-}
-
-//----------------------------------------------------------------------------------
-// Module Functions Definition
-//----------------------------------------------------------------------------------
-void UpdateDrawFrame(void)
-{
- // Update
- //----------------------------------------------------------------------------------
- UpdateCamera(&camera); // Update internal camera and our camera
-
- if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON))
- {
- currentModel = (currentModel + 1)%NUM_MODELS; // Cycle between the textures
- }
-
- if (IsKeyPressed(KEY_RIGHT))
- {
- currentModel++;
- if (currentModel >= NUM_MODELS) currentModel = 0;
- }
- else if (IsKeyPressed(KEY_LEFT))
- {
- currentModel--;
- if (currentModel < 0) currentModel = NUM_MODELS - 1;
- }
- //----------------------------------------------------------------------------------
-
- // Draw
- //----------------------------------------------------------------------------------
- BeginDrawing();
-
- ClearBackground(RAYWHITE);
-
- BeginMode3D(camera);
-
- DrawModel(models[currentModel], position, 1.0f, WHITE);
-
- DrawGrid(10, 1.0);
-
- EndMode3D();
-
- DrawRectangle(30, 400, 310, 30, Fade(SKYBLUE, 0.5f));
- DrawRectangleLines(30, 400, 310, 30, Fade(DARKBLUE, 0.5f));
- DrawText("MOUSE LEFT BUTTON to CYCLE PROCEDURAL MODELS", 40, 410, 10, BLUE);
-
- switch(currentModel)
- {
- case 0: DrawText("PLANE", 680, 10, 20, DARKBLUE); break;
- case 1: DrawText("CUBE", 680, 10, 20, DARKBLUE); break;
- case 2: DrawText("SPHERE", 680, 10, 20, DARKBLUE); break;
- case 3: DrawText("HEMISPHERE", 640, 10, 20, DARKBLUE); break;
- case 4: DrawText("CYLINDER", 680, 10, 20, DARKBLUE); break;
- case 5: DrawText("TORUS", 680, 10, 20, DARKBLUE); break;
- case 6: DrawText("KNOT", 680, 10, 20, DARKBLUE); break;
- case 7: DrawText("POLY", 680, 10, 20, DARKBLUE); break;
- default: break;
- }
-
- EndDrawing();
- //----------------------------------------------------------------------------------
-} \ No newline at end of file
diff --git a/examples/web/models/models_mesh_generation.html b/examples/web/models/models_mesh_generation.html
deleted file mode 100644
index e3bdba8..0000000
--- a/examples/web/models/models_mesh_generation.html
+++ /dev/null
@@ -1 +0,0 @@
-<!doctypehtml><html lang=en-us><head><meta charset=utf-8><meta content="text/html; charset=utf-8"http-equiv=Content-Type><title>raylib HTML5 GAME</title><meta content="raylib HTML5 GAME"name=title><meta content="New HTML5 videogame, developed using raylib videogames library"name=description><meta content="raylib, games, html5, programming, C, C++, library, learn, videogames"name=keywords><meta content="width=device-width"name=viewport><meta content="raylib HTML5 GAME"property=og:title><meta content=image/png property=og:image:type><meta content=https://www.raylib.com/common/img/raylib_logo.png property=og:image><meta content=raylib.com property=og:site_name><meta content=https://www.raylib.com/games.html property=og:url><meta content="New HTML5 videogame, developed using raylib videogames library"property=og:description><meta content=summary name=twitter:card><meta content=@raysan5 name=twitter:site><meta content="raylib HTML5 GAME"name=twitter:title><meta content=https://www.raylib.com/common/raylib_logo.png name=twitter:image><meta content=https://www.raylib.com/games.html name=twitter:url><meta content="New HTML5 videogame, developed using raylib videogames library"name=twitter:description><link href=https://www.raylib.com/favicon.ico rel="shortcut icon"><style>body{font-family:arial;margin:0;padding:none}#header{width:100%;height:80px;background-color:#888}#logo{width:64px;height:64px;float:left;position:relative;margin:10px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAAlC+aJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjExR/NCNwAAA7JJREFUaEPtk0FyWzEMQ+37X7fZhxX4YY3AD1OKF1nkzTRlSBCCLeVBnvl/AUdaELOunPno1kts1kixdtEZKVs+xIxebBkZsVknn/L5nFGDLR8T4zVC9fX19S/+tTFijrYK4jUjbPUtqBHpnEE6PkZD7jQZV8n5Recw1XQKciZuPaEtR6UjNs5ENVGMsBVqpPtER0ZMOhpyp8m4YL4OjD9yxsyZxnQycfMJETNSzsRE1+dihK3YMiJmpHTW3xpmXPC6BXlCHfqnBlsjY5hxf/6EVEOM2BTEi0fYCX4ONSI6Kq3Blg/prIOMq2CsRur4KQ0x64SdjOufEDEdHZGOhmz5RDHCVqhRuQ86YsVskbc+GXchLiHnFyYH+UigQDVGnImbT8hwFkgLg2qiM8JO6Ylx1FNLa3DmYwqCTsZd4BPqGJG7MwKzpeiWKTKxXkLMVE3MSOmsdwxLH6Rd/wCCLSNDx6djeKfJuArGeoYamRHpaEjnCBYZVy8hZqo2GI36qPjsiOiMsBXGcev4Mx9TLGTchbgEjN/uz6jGrBvDjg+LTNx8Qp2CbG2xMKgmOiPslJ4Yxx+eSnSkzlosZNwFPiHl7FRTkLNRJm4+IeVM0ymIH42wE/wcKalQI4MRl4EW3p6VcRWMua8F6WjIlqZDxvVPiHQ6CjVbYkV9ohhhp/Rk1wiYgpyJ78i4CsZbjkb8Qx+ihvzu3RPaKogZkY6GlEeMsKdPSOFIC8VoOusg44L5c+T8ouOoGhWbdWJ8tMi4egkxo4hoh2yNTGf3iIyr5Lyic4bRENXo+lvDjAt4C1Hk/OKtUaAj0+n4dMSZ2D+hrYJsaYh2SClG2jV9kJKKzhlGQ1SsW299Mq6C8dYZHTExo8fzieI5ivipYnYy7nwJqGKmOYyRwfiUBXITfh5qSHRGWEkfqJqURgvsdHyWYv7Ko8DnYYegk3EB00cxprdrJRzFd7YQzawu8L1GMTYS/KpPaAFTkIn1EmJmspJSs5xBzSyGhlkBmlxfNFiP5mw4wlbMh4F5Ddxp5jNINBdCEz9zPOC1zD7Q0HBdmXndwv0TMtydEdzlWJT4VZ8Qt9Qn4/onxMIwa5ZYGJU5yufBiCjwE50AGjLCVuS8Yt4H7OgZLKK5EKOsLviEWJSL/+0uMi7gLUSBseYwqEbXvSHCec1CJvZPyHCmYQffaBBfOTCGHM2aEbZi1+gO1XTWVXMnzrhAn5DSOZVsiQlHnSITKzGj6DeTcZWc/3oy7h9//PF4PL4BlvsWrb6RE+oAAAAASUVORK5CYII=)}.emscripten{padding-right:0;margin-left:auto;margin-right:auto;display:block}div.emscripten{text-align:center}div.emscripten_border{border:1px solid #000}canvas.emscripten{border:0 none;background:#000;width:100%}.spinner{height:30px;width:30px;margin:0;margin-top:20px;margin-left:20px;display:inline-block;vertical-align:top;-webkit-animation:rotation .8s linear infinite;-moz-animation:rotation .8s linear infinite;-o-animation:rotation .8s linear infinite;animation:rotation .8s linear infinite;border-left:5px solid #000;border-right:5px solid #000;border-bottom:5px solid #000;border-top:5px solid red;border-radius:100%;background-color:#f5f5f5}@-webkit-keyframes rotation{from{-webkit-transform:rotate(0)}to{-webkit-transform:rotate(360deg)}}@-moz-keyframes rotation{from{-moz-transform:rotate(0)}to{-moz-transform:rotate(360deg)}}@-o-keyframes rotation{from{-o-transform:rotate(0)}to{-o-transform:rotate(360deg)}}@keyframes rotation{from{transform:rotate(0)}to{transform:rotate(360deg)}}#status{display:inline-block;vertical-align:top;margin-top:30px;margin-left:20px;font-weight:700;color:#282828}#progress{height:0;width:0}#controls{display:inline-block;float:right;vertical-align:top;margin-top:15px;margin-right:20px}#output{width:100%;height:140px;margin:0 auto;margin-top:10px;display:block;background-color:#000;color:#25ae26;font-family:'Lucida Console',Monaco,monospace;outline:0}input[type=button]{background-color:#d3d3d3;border:4px solid #a9a9a9;color:#000;text-decoration:none;cursor:pointer;width:140px;height:50px}input[type=button]:hover{background-color:#f5f5f5ff;border-color:#000}</style></head><body><div id=header><a href=https://www.raylib.com id=logo></a><div class=spinner id=spinner></div><div class=emscripten id=status>Downloading...</div><span id=controls><span><input onclick=Module.requestFullscreen(!1,!1) type=button value="🖵 FULLSCREEN"></span><span><input onclick=toggleAudio() type=button value="🔇 SUSPEND"id=btn-audio></span></span><div class=emscripten><progress hidden id=progress max=100 value=0></progress></div></div><div class=emscripten_border><canvas class=emscripten id=canvas oncontextmenu=event.preventDefault() tabindex=-1></canvas></div><textarea id=output rows=8></textarea><script src=https://cdn.jsdelivr.net/gh/eligrey/FileSaver.js/dist/FileSaver.min.js></script><script>function saveFileFromMEMFSToDisk(e,a){var t,i=/^((?!chrome|android).)*safari/i.test(navigator.userAgent),o=FS.readFile(e);t=i?new Blob([o.buffer],{type:"application/octet-stream"}):new Blob([o.buffer],{type:"application/octet-binary"}),saveAs(t,a)}</script><script>var statusElement=document.querySelector("#status"),progressElement=document.querySelector("#progress"),spinnerElement=document.querySelector("#spinner"),Module={preRun:[],postRun:[],print:function(){var e=document.querySelector("#output");return e&&(e.value=""),function(t){arguments.length>1&&(t=Array.prototype.slice.call(arguments).join(" ")),console.log(t),e&&(e.value+=t+"\n",e.scrollTop=e.scrollHeight)}}(),printErr:function(e){arguments.length>1&&(e=Array.prototype.slice.call(arguments).join(" ")),console.error(e)},canvas:function(){var e=document.querySelector("#canvas");return e.addEventListener("webglcontextlost",(function(e){alert("WebGL context lost. You will need to reload the page."),e.preventDefault()}),!1),e}(),setStatus:function(e){if(Module.setStatus.last||(Module.setStatus.last={time:Date.now(),text:""}),e!==Module.setStatus.last.text){var t=e.match(/([^(]+)\((\d+(\.\d+)?)\/(\d+)\)/),n=Date.now();t&&n-Module.setStatus.last.time<30||(Module.setStatus.last.time=n,Module.setStatus.last.text=e,t?(e=t[1],progressElement.value=100*parseInt(t[2]),progressElement.max=100*parseInt(t[4]),progressElement.hidden=!0,spinnerElement.hidden=!1):(progressElement.value=null,progressElement.max=null,progressElement.hidden=!0,e||(spinnerElement.style.display="none")),statusElement.innerHTML=e)}},totalDependencies:0,monitorRunDependencies:function(e){this.totalDependencies=Math.max(this.totalDependencies,e),Module.setStatus(e?"Preparing... ("+(this.totalDependencies-e)+"/"+this.totalDependencies+")":"All downloads complete.")}};Module.setStatus("Downloading..."),window.onerror=function(){Module.setStatus("Exception thrown, see JavaScript console"),spinnerElement.style.display="none",Module.setStatus=function(e){e&&Module.printErr("[post-exception status] "+e)}}</script><script>var audioBtn=document.querySelector("#btn-audio");const audioContexList=[];function toggleAudio(){var t=!1;audioContexList.forEach(e=>{"suspended"==e.state?(e.resume(),t=!0):"running"==e.state&&e.suspend()}),audioBtn.value=t?"🔇 SUSPEND":"🔈 RESUME"}self.AudioContext=new Proxy(self.AudioContext,{construct(t,e){const n=new t(...e);return audioContexList.push(n),"suspended"==n.state&&(audioBtn.value="🔈 RESUME"),n}})</script><script src=models_mesh_generation.js async></script></body></html> \ No newline at end of file
diff --git a/examples/web/models/models_mesh_generation.js b/examples/web/models/models_mesh_generation.js
deleted file mode 100644
index af54abc..0000000
--- a/examples/web/models/models_mesh_generation.js
+++ /dev/null
@@ -1 +0,0 @@
-var Module=typeof Module!=="undefined"?Module:{};var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram="./this.program";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window==="object";ENVIRONMENT_IS_WORKER=typeof importScripts==="function";ENVIRONMENT_IS_NODE=typeof process==="object"&&typeof process.versions==="object"&&typeof process.versions.node==="string";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require("path").dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require("fs");if(!nodePath)nodePath=require("path");filename=nodePath["normalize"](filename);return nodeFS["readFileSync"](filename,binary?null:"utf8")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);if(typeof module!=="undefined"){module["exports"]=Module}process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",abort);quit_=function(status){process["exit"](status)};Module["inspect"]=function(){return"[Emscripten Module object]"}}else if(ENVIRONMENT_IS_SHELL){if(typeof read!="undefined"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer==="function"){return new Uint8Array(readbuffer(f))}data=read(f,"binary");assert(typeof data==="object");return data};if(typeof scriptArgs!="undefined"){arguments_=scriptArgs}else if(typeof arguments!="undefined"){arguments_=arguments}if(typeof quit==="function"){quit_=function(status){quit(status)}}if(typeof print!=="undefined"){if(typeof console==="undefined")console={};console.log=print;console.warn=console.error=typeof printErr!=="undefined"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!=="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf("/")+1)}else{scriptDirectory=""}{read_=function(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=function(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var STACK_ALIGN=16;function alignMemory(size,factor){if(!factor)factor=STACK_ALIGN;return Math.ceil(size/factor)*factor}function warnOnce(text){if(!warnOnce.shown)warnOnce.shown={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;err(text)}}var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime=Module["noExitRuntime"]||true;if(typeof WebAssembly!=="object"){abort("no native wasm support detected")}function setValue(ptr,value,type,noSafe){type=type||"i8";if(type.charAt(type.length-1)==="*")type="i32";switch(type){case"i1":HEAP8[ptr>>0]=value;break;case"i8":HEAP8[ptr>>0]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":tempI64=[value>>>0,(tempDouble=value,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;default:abort("invalid type for setValue: "+type)}}var wasmMemory;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}var ALLOC_NORMAL=0;var ALLOC_STACK=1;function allocate(slab,allocator){var ret;if(allocator==ALLOC_STACK){ret=stackAlloc(slab.length)}else{ret=_malloc(slab.length)}if(slab.subarray||slab.slice){HEAPU8.set(slab,ret)}else{HEAPU8.set(new Uint8Array(slab),ret)}return ret}var UTF8Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heap,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heap[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str="";while(idx<endPtr){var u0=heap[idx++];if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heap[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heap[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u0=(u0&7)<<18|u1<<12|u2<<6|heap[idx++]&63}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||16777216;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;__ATINIT__.push({func:function(){___wasm_call_ctors()}});function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){FS.ignorePermissions=false;callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}what+="";err(what);ABORT=true;EXITSTATUS=1;what="abort("+what+"). Build with -s ASSERTIONS=1 for more info.";var e=new WebAssembly.RuntimeError(what);throw e}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix="file://";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile="models_mesh_generation.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}else{throw"both async and sync fetching of the wasm failed"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch==="function"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={"a":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;wasmMemory=Module["asm"]["_d"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module["asm"]["be"];removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiatedSource(output){receiveInstance(output["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming==="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch==="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync();return{}}var tempDouble;var tempI64;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback(Module);continue}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){wasmTable.get(func)()}else{wasmTable.get(func)(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}function ___assert_fail(condition,filename,line,func){abort("Assertion failed: "+UTF8ToString(condition)+", at: "+[filename?UTF8ToString(filename):"unknown filename",line,func?UTF8ToString(func):"unknown function"])}function setErrNo(value){HEAP32[___errno_location()>>2]=value;return value}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path==="/")return"/";path=PATH.normalize(path);path=path.replace(/\/$/,"");var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}};function getRandomDevice(){if(typeof crypto==="object"&&typeof crypto["getRandomValues"]==="function"){var randomBuffer=new Uint8Array(1);return function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]}}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");return function(){return crypto_module["randomBytes"](1)[0]}}catch(e){}}return function(){abort("randomDevice")}}var PATH_FS={resolve:function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!=="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=path.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(function(p){return!!p}),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:function(from,to){from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start<arr.length;start++){if(arr[start]!=="")break}var end=arr.length-1;for(;end>=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i<length;i++){if(fromParts[i]!==toParts[i]){samePartsLength=i;break}}var outputParts=[];for(var i=samePartsLength;i<fromParts.length;i++){outputParts.push("..")}outputParts=outputParts.concat(toParts.slice(samePartsLength));return outputParts.join("/")}};var TTY={ttys:[],init:function(){},shutdown:function(){},register:function(dev,ops){TTY.ttys[dev]={input:[],output:[],ops:ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open:function(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close:function(stream){stream.tty.ops.flush(stream.tty)},flush:function(stream){stream.tty.ops.flush(stream.tty)},read:function(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i<length;i++){var result;try{result=stream.tty.ops.get_char(stream.tty)}catch(e){throw new FS.ErrnoError(29)}if(result===undefined&&bytesRead===0){throw new FS.ErrnoError(6)}if(result===null||result===undefined)break;bytesRead++;buffer[offset+i]=result}if(bytesRead){stream.node.timestamp=Date.now()}return bytesRead},write:function(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.put_char){throw new FS.ErrnoError(60)}try{for(var i=0;i<length;i++){stream.tty.ops.put_char(stream.tty,buffer[offset+i])}}catch(e){throw new FS.ErrnoError(29)}if(length){stream.node.timestamp=Date.now()}return i}},default_tty_ops:{get_char:function(tty){if(!tty.input.length){var result=null;if(ENVIRONMENT_IS_NODE){var BUFSIZE=256;var buf=Buffer.alloc?Buffer.alloc(BUFSIZE):new Buffer(BUFSIZE);var bytesRead=0;try{bytesRead=nodeFS.readSync(process.stdin.fd,buf,0,BUFSIZE,null)}catch(e){if(e.toString().indexOf("EOF")!=-1)bytesRead=0;else throw e}if(bytesRead>0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function mmapAlloc(size){var alignedSize=alignMemory(size,16384);var ptr=_malloc(alignedSize);while(size<alignedSize)HEAP8[ptr+size++]=0;return ptr}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray:function(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage:function(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity<CAPACITY_DOUBLING_MAX?2:1.125)>>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage:function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr:function(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr:function(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp;old_node.parent=new_dir},unlink:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir:function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i<size;i++)buffer[offset+i]=contents[position+i]}return size},write:function(stream,buffer,offset,length,position,canOwn){if(!length)return 0;var node=stream.node;node.timestamp=Date.now();if(buffer.subarray&&(!node.contents||node.contents.subarray)){if(canOwn){node.contents=buffer.subarray(offset,offset+length);node.usedBytes=length;return length}else if(node.usedBytes===0&&position===0){node.contents=buffer.slice(offset,offset+length);node.usedBytes=length;return length}else if(position+length<=node.usedBytes){node.contents.set(buffer.subarray(offset,offset+length),position);return length}}MEMFS.expandFileStorage(node,position+length);if(node.contents.subarray&&buffer.subarray){node.contents.set(buffer.subarray(offset,offset+length),position)}else{for(var i=0;i<length;i++){node.contents[position+i]=buffer[offset+i]}}node.usedBytes=Math.max(node.usedBytes,position+length);return length},llseek:function(stream,offset,whence){var position=offset;if(whence===1){position+=stream.position}else if(whence===2){if(FS.isFile(stream.node.mode)){position+=stream.node.usedBytes}}if(position<0){throw new FS.ErrnoError(28)}return position},allocate:function(stream,offset,length){MEMFS.expandFileStorage(stream.node,offset+length);stream.node.usedBytes=Math.max(stream.node.usedBytes,offset+length)},mmap:function(stream,address,length,position,prot,flags){if(address!==0){throw new FS.ErrnoError(28)}if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}var ptr;var allocated;var contents=stream.node.contents;if(!(flags&2)&&contents.buffer===buffer){allocated=false;ptr=contents.byteOffset}else{if(position>0||position+length<contents.length){if(contents.subarray){contents=contents.subarray(position,position+length)}else{contents=Array.prototype.slice.call(contents,position,position+length)}}allocated=true;ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}HEAP8.set(contents,ptr)}return{ptr:ptr,allocated:allocated}},msync:function(stream,buffer,offset,length,mmapFlags){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}if(mmapFlags&2){return 0}var bytesWritten=MEMFS.stream_ops.write(stream,buffer,0,length,offset,false);return 0}}};var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,trackingDelegate:{},tracking:{openFlags:{READ:1,WRITE:2}},ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath:function(path,opts){path=PATH_FS.resolve(FS.cwd(),path);opts=opts||{};if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};for(var key in defaults){if(opts[key]===undefined){opts[key]=defaults[key]}}if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),false);var current=FS.root;var current_path="/";for(var i=0;i<parts.length;i++){var islast=i===parts.length-1;if(islast&&opts.parent){break}current=FS.lookupNode(current,parts[i]);current_path=PATH.join2(current_path,parts[i]);if(FS.isMountpoint(current)){if(!islast||islast&&opts.follow_mount){current=current.mounted.root}}if(!islast||opts.follow){var count=0;while(FS.isLink(current.mode)){var link=FS.readlink(current_path);current_path=PATH_FS.resolve(PATH.dirname(current_path),link);var lookup=FS.lookupPath(current_path,{recurse_count:opts.recurse_count});current=lookup.node;if(count++>40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath:function(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?mount+"/"+path:mount+path}path=path?node.name+"/"+path:node.name;node=node.parent}},hashName:function(parentid,name){var hash=0;for(var i=0;i<name.length;i++){hash=(hash<<5)-hash+name.charCodeAt(i)|0}return(parentid+hash>>>0)%FS.nameTable.length},hashAddNode:function(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode:function(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode:function(parent,name){var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode:function(parent,name,mode,rdev){var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:function(node){FS.hashRemoveNode(node)},isRoot:function(node){return node===node.parent},isMountpoint:function(node){return!!node.mounted},isFile:function(mode){return(mode&61440)===32768},isDir:function(mode){return(mode&61440)===16384},isLink:function(mode){return(mode&61440)===40960},isChrdev:function(mode){return(mode&61440)===8192},isBlkdev:function(mode){return(mode&61440)===24576},isFIFO:function(mode){return(mode&61440)===4096},isSocket:function(mode){return(mode&49152)===49152},flagModes:{"r":0,"r+":2,"w":577,"w+":578,"a":1089,"a+":1090},modeStringToFlags:function(str){var flags=FS.flagModes[str];if(typeof flags==="undefined"){throw new Error("Unknown file open mode: "+str)}return flags},flagsToPermissionString:function(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions:function(node,perms){if(FS.ignorePermissions){return 0}if(perms.indexOf("r")!==-1&&!(node.mode&292)){return 2}else if(perms.indexOf("w")!==-1&&!(node.mode&146)){return 2}else if(perms.indexOf("x")!==-1&&!(node.mode&73)){return 2}return 0},mayLookup:function(dir){var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate:function(dir,name){try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete:function(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen:function(node,flags){if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd:function(fd_start,fd_end){fd_start=fd_start||0;fd_end=fd_end||FS.MAX_OPEN_FDS;for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:function(fd){return FS.streams[fd]},createStream:function(stream,fd_start,fd_end){if(!FS.FSStream){FS.FSStream=function(){};FS.FSStream.prototype={object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}}}}var newStream=new FS.FSStream;for(var p in stream){newStream[p]=stream[p]}stream=newStream;var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:function(fd){FS.streams[fd]=null},chrdev_stream_ops:{open:function(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}},llseek:function(){throw new FS.ErrnoError(70)}},major:function(dev){return dev>>8},minor:function(dev){return dev&255},makedev:function(ma,mi){return ma<<8|mi},registerDevice:function(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:function(dev){return FS.devices[dev]},getMounts:function(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts},syncfs:function(populate,callback){if(typeof populate==="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err("warning: "+FS.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work")}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(function(mount){if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount:function(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount:function(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(function(hash){var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.indexOf(current.mount)!==-1){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup:function(parent,name){return parent.node_ops.lookup(parent,name)},mknod:function(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create:function(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:function(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree:function(path,mode){var dirs=path.split("/");var d="";for(var i=0;i<dirs.length;++i){if(!dirs[i])continue;d+="/"+dirs[i];try{FS.mkdir(d,mode)}catch(e){if(e.errno!=20)throw e}}},mkdev:function(path,mode,dev){if(typeof dev==="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:function(oldpath,newpath){if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:function(old_path,new_path){var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}try{if(FS.trackingDelegate["willMovePath"]){FS.trackingDelegate["willMovePath"](old_path,new_path)}}catch(e){err("FS.trackingDelegate['willMovePath']('"+old_path+"', '"+new_path+"') threw an exception: "+e.message)}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}try{if(FS.trackingDelegate["onMovePath"])FS.trackingDelegate["onMovePath"](old_path,new_path)}catch(e){err("FS.trackingDelegate['onMovePath']('"+old_path+"', '"+new_path+"') threw an exception: "+e.message)}},rmdir:function(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}try{if(FS.trackingDelegate["willDeletePath"]){FS.trackingDelegate["willDeletePath"](path)}}catch(e){err("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: "+e.message)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate["onDeletePath"])FS.trackingDelegate["onDeletePath"](path)}catch(e){err("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: "+e.message)}},readdir:function(path){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:function(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}try{if(FS.trackingDelegate["willDeletePath"]){FS.trackingDelegate["willDeletePath"](path)}}catch(e){err("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: "+e.message)}parent.node_ops.unlink(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate["onDeletePath"])FS.trackingDelegate["onDeletePath"](path)}catch(e){err("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: "+e.message)}},readlink:function(path){var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:function(path,dontFollow){var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:function(path){return FS.stat(path,true)},chmod:function(path,mode,dontFollow){var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:function(path,mode){FS.chmod(path,mode,true)},fchmod:function(fd,mode){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:function(path,uid,gid,dontFollow){var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:function(path,uid,gid){FS.chown(path,uid,gid,true)},fchown:function(fd,uid,gid){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:function(path,len){if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:function(fd,len){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:function(path,atime,mtime){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:function(path,flags,mode,fd_start,fd_end){if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags==="string"?FS.modeStringToFlags(flags):flags;mode=typeof mode==="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path==="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false},fd_start,fd_end);if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1;err("FS.trackingDelegate error on read file: "+path)}}try{if(FS.trackingDelegate["onOpenFile"]){var trackingFlags=0;if((flags&2097155)!==1){trackingFlags|=FS.tracking.openFlags.READ}if((flags&2097155)!==0){trackingFlags|=FS.tracking.openFlags.WRITE}FS.trackingDelegate["onOpenFile"](path,trackingFlags)}}catch(e){err("FS.trackingDelegate['onOpenFile']('"+path+"', flags) threw an exception: "+e.message)}return stream},close:function(stream){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:function(stream){return stream.fd===null},llseek:function(stream,offset,whence){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:function(stream,buffer,offset,length,position){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!=="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:function(stream,buffer,offset,length,position,canOwn){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!=="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;try{if(stream.path&&FS.trackingDelegate["onWriteToFile"])FS.trackingDelegate["onWriteToFile"](stream.path)}catch(e){err("FS.trackingDelegate['onWriteToFile']('"+stream.path+"') threw an exception: "+e.message)}return bytesWritten},allocate:function(stream,offset,length){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:function(stream,address,length,position,prot,flags){if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,address,length,position,prot,flags)},msync:function(stream,buffer,offset,length,mmapFlags){if(!stream||!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:function(stream){return 0},ioctl:function(stream,cmd,arg){if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:function(path,opts){opts=opts||{};opts.flags=opts.flags||0;opts.encoding=opts.encoding||"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error('Invalid encoding type "'+opts.encoding+'"')}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding==="binary"){ret=buf}FS.close(stream);return ret},writeFile:function(path,data,opts){opts=opts||{};opts.flags=opts.flags||577;var stream=FS.open(path,opts.flags,opts.mode);if(typeof data==="string"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,undefined,opts.canOwn)}else if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{throw new Error("Unsupported data type")}FS.close(stream)},cwd:function(){return FS.currentPath},chdir:function(path){var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories:function(){FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices:function(){FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:function(){return 0},write:function(stream,buffer,offset,length,pos){return length}});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var random_device=getRandomDevice();FS.createDevice("/dev","random",random_device);FS.createDevice("/dev","urandom",random_device);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories:function(){FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount:function(){var node=FS.createNode(proc_self,"fd",16384|511,73);node.node_ops={lookup:function(parent,name){var fd=+name;var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:function(){return stream.path}}};ret.parent=ret;return ret}};return node}},{},"/proc/self/fd")},createStandardStreams:function(){if(Module["stdin"]){FS.createDevice("/dev","stdin",Module["stdin"])}else{FS.symlink("/dev/tty","/dev/stdin")}if(Module["stdout"]){FS.createDevice("/dev","stdout",null,Module["stdout"])}else{FS.symlink("/dev/tty","/dev/stdout")}if(Module["stderr"]){FS.createDevice("/dev","stderr",null,Module["stderr"])}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},ensureErrnoError:function(){if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.node=node;this.setErrno=function(errno){this.errno=errno};this.setErrno(errno);this.message="FS error"};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[44].forEach(function(code){FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack="<generic error, no stack>"})},staticInit:function(){FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={"MEMFS":MEMFS}},init:function(input,output,error){FS.init.initialized=true;FS.ensureErrnoError();Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams()},quit:function(){FS.init.initialized=false;var fflush=Module["_fflush"];if(fflush)fflush(0);for(var i=0;i<FS.streams.length;i++){var stream=FS.streams[i];if(!stream){continue}FS.close(stream)}},getMode:function(canRead,canWrite){var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode},findObject:function(path,dontResolveLastLink){var ret=FS.analyzePath(path,dontResolveLastLink);if(ret.exists){return ret.object}else{return null}},analyzePath:function(path,dontResolveLastLink){try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath:function(parent,path,canRead,canWrite){parent=typeof parent==="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:function(parent,name,properties,canRead,canWrite){var path=PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:function(parent,name,data,canRead,canWrite,canOwn){var path=name?PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name):parent;var mode=FS.getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data==="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i<len;++i)arr[i]=data.charCodeAt(i);data=arr}FS.chmod(node,mode|146);var stream=FS.open(node,577);FS.write(stream,data,0,data.length,0,canOwn);FS.close(stream);FS.chmod(node,mode)}return node},createDevice:function(parent,name,input,output){var path=PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:function(stream){stream.seekable=false},close:function(stream){if(output&&output.buffer&&output.buffer.length){output(10)}},read:function(stream,buffer,offset,length,pos){var bytesRead=0;for(var i=0;i<length;i++){var result;try{result=input()}catch(e){throw new FS.ErrnoError(29)}if(result===undefined&&bytesRead===0){throw new FS.ErrnoError(6)}if(result===null||result===undefined)break;bytesRead++;buffer[offset+i]=result}if(bytesRead){stream.node.timestamp=Date.now()}return bytesRead},write:function(stream,buffer,offset,length,pos){for(var i=0;i<length;i++){try{output(buffer[offset+i])}catch(e){throw new FS.ErrnoError(29)}}if(length){stream.node.timestamp=Date.now()}return i}});return FS.mkdev(path,mode,dev)},forceLoadFile:function(obj){if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!=="undefined"){throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}},createLazyFile:function(parent,name,url,canRead,canWrite){function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=function(from,to){if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);if(typeof Uint8Array!="undefined")xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}else{return intArrayFromString(xhr.responseText||"",true)}};var lazyArray=this;lazyArray.setDataGetter(function(chunkNum){var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]==="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]==="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!=="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._length}},chunkSize:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(function(key){var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){FS.forceLoadFile(node);return fn.apply(null,arguments)}});stream_ops.read=function stream_ops_read(stream,buffer,offset,length,position){FS.forceLoadFile(node);var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i<size;i++){buffer[offset+i]=contents[position+i]}}else{for(var i=0;i<size;i++){buffer[offset+i]=contents.get(position+i)}}return size};node.stream_ops=stream_ops;return node},createPreloadedFile:function(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish){Browser.init();var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency("cp "+fullname);function processData(byteArray){function finish(byteArray){if(preFinish)preFinish();if(!dontCreateFile){FS.createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}if(onload)onload();removeRunDependency(dep)}var handled=false;Module["preloadPlugins"].forEach(function(plugin){if(handled)return;if(plugin["canHandle"](fullname)){plugin["handle"](byteArray,fullname,finish,function(){if(onerror)onerror();removeRunDependency(dep)});handled=true}});if(!handled)finish(byteArray)}addRunDependency(dep);if(typeof url=="string"){Browser.asyncLoad(url,function(byteArray){processData(byteArray)},onerror)}else{processData(url)}},indexedDB:function(){return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME:function(){return"EM_FS_"+window.location.pathname},DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:function(paths,onload,onerror){onload=onload||function(){};onerror=onerror||function(){};var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=function openRequest_onupgradeneeded(){out("creating db");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME)};openRequest.onsuccess=function openRequest_onsuccess(){var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],"readwrite");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(function(path){var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=function putRequest_onsuccess(){ok++;if(ok+fail==total)finish()};putRequest.onerror=function putRequest_onerror(){fail++;if(ok+fail==total)finish()}});transaction.onerror=onerror};openRequest.onerror=onerror},loadFilesFromDB:function(paths,onload,onerror){onload=onload||function(){};onerror=onerror||function(){};var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=function openRequest_onsuccess(){var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],"readonly")}catch(e){onerror(e);return}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(function(path){var getRequest=files.get(path);getRequest.onsuccess=function getRequest_onsuccess(){if(FS.analyzePath(path).exists){FS.unlink(path)}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish()};getRequest.onerror=function getRequest_onerror(){fail++;if(ok+fail==total)finish()}});transaction.onerror=onerror};openRequest.onerror=onerror}};var SYSCALLS={mappings:{},DEFAULT_POLLMASK:5,umask:511,calculateAt:function(dirfd,path,allowEmpty){if(path[0]==="/"){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=FS.getStream(dirfd);if(!dirstream)throw new FS.ErrnoError(8);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(func,path,buf){try{var stat=func(path)}catch(e){if(e&&e.node&&PATH.normalize(path)!==PATH.normalize(FS.getPath(e.node))){return-54}throw e}HEAP32[buf>>2]=stat.dev;HEAP32[buf+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;HEAP32[buf+56>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+76>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+80>>2]=tempI64[0],HEAP32[buf+84>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},doMkdir:function(path,mode){path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0},doMknod:function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}FS.mknod(path,mode,dev);return 0},doReadlink:function(path,buf,bufsize){if(bufsize<=0)return-28;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len},doAccess:function(path,amode){if(amode&~7){return-28}var node;var lookup=FS.lookupPath(path,{follow:true});node=lookup.node;if(!node){return-44}var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0},doDup:function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd},doReadv:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i<iovcnt;i++){var ptr=HEAP32[iov+i*8>>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr<len)break}return ret},doWritev:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i<iovcnt;i++){var ptr=HEAP32[iov+i*8>>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream},get64:function(low,high){return low}};function ___sys_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-28}var newStream;newStream=FS.open(stream.path,stream.flags,0,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0}case 12:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 13:case 14:return 0;case 16:case 8:return-28;case 9:setErrNo(28);return-1;default:{return-28}}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_ioctl(fd,op,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(op){case 21509:case 21505:{if(!stream.tty)return-59;return 0}case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-59;return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{if(!stream.tty)return-59;return 0}default:abort("bad ioctl syscall "+op)}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_open(path,flags,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(path);var mode=varargs?SYSCALLS.get():0;var stream=FS.open(pathname,flags,mode);return stream.fd}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}var JSEvents={inEventHandler:0,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return false;for(var i in arrA){if(arrA[i]!=arrB[i])return false}return true}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList)){return}}JSEvents.deferredCalls.push({targetFunction:targetFunction,precedence:precedence,argsList:argsList});JSEvents.deferredCalls.sort(function(x,y){return x.precedence<y.precedence})},removeDeferredCalls:function(targetFunction){for(var i=0;i<JSEvents.deferredCalls.length;++i){if(JSEvents.deferredCalls[i].targetFunction==targetFunction){JSEvents.deferredCalls.splice(i,1);--i}}},canPerformEventHandlerRequests:function(){return JSEvents.inEventHandler&&JSEvents.currentEventHandler.allowsDeferredCalls},runDeferredCalls:function(){if(!JSEvents.canPerformEventHandlerRequests()){return}for(var i=0;i<JSEvents.deferredCalls.length;++i){var call=JSEvents.deferredCalls[i];JSEvents.deferredCalls.splice(i,1);--i;call.targetFunction.apply(null,call.argsList)}},eventHandlers:[],removeAllHandlersOnTarget:function(target,eventTypeString){for(var i=0;i<JSEvents.eventHandlers.length;++i){if(JSEvents.eventHandlers[i].target==target&&(!eventTypeString||eventTypeString==JSEvents.eventHandlers[i].eventTypeString)){JSEvents._removeHandler(i--)}}},_removeHandler:function(i){var h=JSEvents.eventHandlers[i];h.target.removeEventListener(h.eventTypeString,h.eventListenerFunc,h.useCapture);JSEvents.eventHandlers.splice(i,1)},registerOrRemoveHandler:function(eventHandler){var jsEventHandler=function jsEventHandler(event){++JSEvents.inEventHandler;JSEvents.currentEventHandler=eventHandler;JSEvents.runDeferredCalls();eventHandler.handlerFunc(event);JSEvents.runDeferredCalls();--JSEvents.inEventHandler};if(eventHandler.callbackfunc){eventHandler.eventListenerFunc=jsEventHandler;eventHandler.target.addEventListener(eventHandler.eventTypeString,jsEventHandler,eventHandler.useCapture);JSEvents.eventHandlers.push(eventHandler);JSEvents.registerRemoveEventListeners()}else{for(var i=0;i<JSEvents.eventHandlers.length;++i){if(JSEvents.eventHandlers[i].target==eventHandler.target&&JSEvents.eventHandlers[i].eventTypeString==eventHandler.eventTypeString){JSEvents._removeHandler(i--)}}}},getNodeNameForTarget:function(target){if(!target)return"";if(target==window)return"#window";if(target==screen)return"#screen";return target&&target.nodeName?target.nodeName:""},fullscreenEnabled:function(){return document.fullscreenEnabled||document.webkitFullscreenEnabled}};function requestPointerLock(target){if(target.requestPointerLock){target.requestPointerLock()}else if(target.msRequestPointerLock){target.msRequestPointerLock()}else{if(document.body.requestPointerLock||document.body.msRequestPointerLock){return-3}else{return-1}}return 0}function _emscripten_exit_pointerlock(){JSEvents.removeDeferredCalls(requestPointerLock);if(document.exitPointerLock){document.exitPointerLock()}else if(document.msExitPointerLock){document.msExitPointerLock()}else{return-1}return 0}function maybeCStringToJsString(cString){return cString>2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!=="undefined"?document:0,typeof window!=="undefined"?window:0];function findEventTarget(target){target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!=="undefined"?document.querySelector(target):undefined);return domElement}function getBoundingClientRect(e){return specialHTMLTargets.indexOf(e)<0?e.getBoundingClientRect():{"left":0,"top":0}}function _emscripten_get_element_css_size(target,width,height){target=findEventTarget(target);if(!target)return-4;var rect=getBoundingClientRect(target);HEAPF64[width>>3]=rect.width;HEAPF64[height>>3]=rect.height;return 0}function fillGamepadEventData(eventStruct,e){HEAPF64[eventStruct>>3]=e.timestamp;for(var i=0;i<e.axes.length;++i){HEAPF64[eventStruct+i*8+16>>3]=e.axes[i]}for(var i=0;i<e.buttons.length;++i){if(typeof e.buttons[i]==="object"){HEAPF64[eventStruct+i*8+528>>3]=e.buttons[i].value}else{HEAPF64[eventStruct+i*8+528>>3]=e.buttons[i]}}for(var i=0;i<e.buttons.length;++i){if(typeof e.buttons[i]==="object"){HEAP32[eventStruct+i*4+1040>>2]=e.buttons[i].pressed}else{HEAP32[eventStruct+i*4+1040>>2]=e.buttons[i]==1}}HEAP32[eventStruct+1296>>2]=e.connected;HEAP32[eventStruct+1300>>2]=e.index;HEAP32[eventStruct+8>>2]=e.axes.length;HEAP32[eventStruct+12>>2]=e.buttons.length;stringToUTF8(e.id,eventStruct+1304,64);stringToUTF8(e.mapping,eventStruct+1368,64)}function _emscripten_get_gamepad_status(index,gamepadState){if(index<0||index>=JSEvents.lastGamepadState.length)return-5;if(!JSEvents.lastGamepadState[index])return-7;fillGamepadEventData(gamepadState,JSEvents.lastGamepadState[index]);return 0}function _emscripten_get_num_gamepads(){return JSEvents.lastGamepadState.length}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension("ANGLE_instanced_arrays");if(ext){ctx["vertexAttribDivisor"]=function(index,divisor){ext["vertexAttribDivisorANGLE"](index,divisor)};ctx["drawArraysInstanced"]=function(mode,first,count,primcount){ext["drawArraysInstancedANGLE"](mode,first,count,primcount)};ctx["drawElementsInstanced"]=function(mode,count,type,indices,primcount){ext["drawElementsInstancedANGLE"](mode,count,type,indices,primcount)};return 1}}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension("OES_vertex_array_object");if(ext){ctx["createVertexArray"]=function(){return ext["createVertexArrayOES"]()};ctx["deleteVertexArray"]=function(vao){ext["deleteVertexArrayOES"](vao)};ctx["bindVertexArray"]=function(vao){ext["bindVertexArrayOES"](vao)};ctx["isVertexArray"]=function(vao){return ext["isVertexArrayOES"](vao)};return 1}}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension("WEBGL_draw_buffers");if(ext){ctx["drawBuffers"]=function(n,bufs){ext["drawBuffersWEBGL"](n,bufs)};return 1}}function __webgl_enable_WEBGL_multi_draw(ctx){return!!(ctx.multiDrawWebgl=ctx.getExtension("WEBGL_multi_draw"))}var GL={counter:1,buffers:[],programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:[],offscreenCanvases:{},timerQueriesEXT:[],programInfos:{},stringCache:{},unpackAlignment:4,recordError:function recordError(errorCode){if(!GL.lastError){GL.lastError=errorCode}},getNewId:function(table){var ret=GL.counter++;for(var i=table.length;i<ret;i++){table[i]=null}return ret},getSource:function(shader,count,string,length){var source="";for(var i=0;i<count;++i){var len=length?HEAP32[length+i*4>>2]:-1;source+=UTF8ToString(HEAP32[string+i*4>>2],len<0?undefined:len)}return source},createContext:function(canvas,webGLContextAttributes){var ctx=canvas.getContext("webgl",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:function(ctx,webGLContextAttributes){var handle=GL.getNewId(GL.contexts);var context={handle:handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};if(ctx.canvas)ctx.canvas.GLctxObject=context;GL.contexts[handle]=context;if(typeof webGLContextAttributes.enableExtensionsByDefault==="undefined"||webGLContextAttributes.enableExtensionsByDefault){GL.initExtensions(context)}return handle},makeContextCurrent:function(contextHandle){GL.currentContext=GL.contexts[contextHandle];Module.ctx=GLctx=GL.currentContext&&GL.currentContext.GLctx;return!(contextHandle&&!GLctx)},getContext:function(contextHandle){return GL.contexts[contextHandle]},deleteContext:function(contextHandle){if(GL.currentContext===GL.contexts[contextHandle])GL.currentContext=null;if(typeof JSEvents==="object")JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas);if(GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas)GL.contexts[contextHandle].GLctx.canvas.GLctxObject=undefined;GL.contexts[contextHandle]=null},initExtensions:function(context){if(!context)context=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;__webgl_enable_ANGLE_instanced_arrays(GLctx);__webgl_enable_OES_vertex_array_object(GLctx);__webgl_enable_WEBGL_draw_buffers(GLctx);GLctx.disjointTimerQueryExt=GLctx.getExtension("EXT_disjoint_timer_query");__webgl_enable_WEBGL_multi_draw(GLctx);var exts=GLctx.getSupportedExtensions()||[];exts.forEach(function(ext){if(ext.indexOf("lose_context")<0&&ext.indexOf("debug")<0){GLctx.getExtension(ext)}})},populateUniformTable:function(program){var p=GL.programs[program];var ptable=GL.programInfos[program]={uniforms:{},maxUniformLength:0,maxAttributeLength:-1,maxUniformBlockNameLength:-1};var utable=ptable.uniforms;var numUniforms=GLctx.getProgramParameter(p,35718);for(var i=0;i<numUniforms;++i){var u=GLctx.getActiveUniform(p,i);var name=u.name;ptable.maxUniformLength=Math.max(ptable.maxUniformLength,name.length+1);if(name.slice(-1)=="]"){name=name.slice(0,name.lastIndexOf("["))}var loc=GLctx.getUniformLocation(p,name);if(loc){var id=GL.getNewId(GL.uniforms);utable[name]=[u.size,id];GL.uniforms[id]=loc;for(var j=1;j<u.size;++j){var n=name+"["+j+"]";loc=GLctx.getUniformLocation(p,n);id=GL.getNewId(GL.uniforms);GL.uniforms[id]=loc}}}}};function _emscripten_glActiveTexture(x0){GLctx["activeTexture"](x0)}function _emscripten_glAttachShader(program,shader){GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _emscripten_glBeginQueryEXT(target,id){GLctx.disjointTimerQueryExt["beginQueryEXT"](target,GL.timerQueriesEXT[id])}function _emscripten_glBindAttribLocation(program,index,name){GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))}function _emscripten_glBindBuffer(target,buffer){GLctx.bindBuffer(target,GL.buffers[buffer])}function _emscripten_glBindFramebuffer(target,framebuffer){GLctx.bindFramebuffer(target,GL.framebuffers[framebuffer])}function _emscripten_glBindRenderbuffer(target,renderbuffer){GLctx.bindRenderbuffer(target,GL.renderbuffers[renderbuffer])}function _emscripten_glBindTexture(target,texture){GLctx.bindTexture(target,GL.textures[texture])}function _emscripten_glBindVertexArrayOES(vao){GLctx["bindVertexArray"](GL.vaos[vao])}function _emscripten_glBlendColor(x0,x1,x2,x3){GLctx["blendColor"](x0,x1,x2,x3)}function _emscripten_glBlendEquation(x0){GLctx["blendEquation"](x0)}function _emscripten_glBlendEquationSeparate(x0,x1){GLctx["blendEquationSeparate"](x0,x1)}function _emscripten_glBlendFunc(x0,x1){GLctx["blendFunc"](x0,x1)}function _emscripten_glBlendFuncSeparate(x0,x1,x2,x3){GLctx["blendFuncSeparate"](x0,x1,x2,x3)}function _emscripten_glBufferData(target,size,data,usage){GLctx.bufferData(target,data?HEAPU8.subarray(data,data+size):size,usage)}function _emscripten_glBufferSubData(target,offset,size,data){GLctx.bufferSubData(target,offset,HEAPU8.subarray(data,data+size))}function _emscripten_glCheckFramebufferStatus(x0){return GLctx["checkFramebufferStatus"](x0)}function _emscripten_glClear(x0){GLctx["clear"](x0)}function _emscripten_glClearColor(x0,x1,x2,x3){GLctx["clearColor"](x0,x1,x2,x3)}function _emscripten_glClearDepthf(x0){GLctx["clearDepth"](x0)}function _emscripten_glClearStencil(x0){GLctx["clearStencil"](x0)}function _emscripten_glColorMask(red,green,blue,alpha){GLctx.colorMask(!!red,!!green,!!blue,!!alpha)}function _emscripten_glCompileShader(shader){GLctx.compileShader(GL.shaders[shader])}function _emscripten_glCompressedTexImage2D(target,level,internalFormat,width,height,border,imageSize,data){GLctx["compressedTexImage2D"](target,level,internalFormat,width,height,border,data?HEAPU8.subarray(data,data+imageSize):null)}function _emscripten_glCompressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,imageSize,data){GLctx["compressedTexSubImage2D"](target,level,xoffset,yoffset,width,height,format,data?HEAPU8.subarray(data,data+imageSize):null)}function _emscripten_glCopyTexImage2D(x0,x1,x2,x3,x4,x5,x6,x7){GLctx["copyTexImage2D"](x0,x1,x2,x3,x4,x5,x6,x7)}function _emscripten_glCopyTexSubImage2D(x0,x1,x2,x3,x4,x5,x6,x7){GLctx["copyTexSubImage2D"](x0,x1,x2,x3,x4,x5,x6,x7)}function _emscripten_glCreateProgram(){var id=GL.getNewId(GL.programs);var program=GLctx.createProgram();program.name=id;GL.programs[id]=program;return id}function _emscripten_glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}function _emscripten_glCullFace(x0){GLctx["cullFace"](x0)}function _emscripten_glDeleteBuffers(n,buffers){for(var i=0;i<n;i++){var id=HEAP32[buffers+i*4>>2];var buffer=GL.buffers[id];if(!buffer)continue;GLctx.deleteBuffer(buffer);buffer.name=0;GL.buffers[id]=null}}function _emscripten_glDeleteFramebuffers(n,framebuffers){for(var i=0;i<n;++i){var id=HEAP32[framebuffers+i*4>>2];var framebuffer=GL.framebuffers[id];if(!framebuffer)continue;GLctx.deleteFramebuffer(framebuffer);framebuffer.name=0;GL.framebuffers[id]=null}}function _emscripten_glDeleteProgram(id){if(!id)return;var program=GL.programs[id];if(!program){GL.recordError(1281);return}GLctx.deleteProgram(program);program.name=0;GL.programs[id]=null;GL.programInfos[id]=null}function _emscripten_glDeleteQueriesEXT(n,ids){for(var i=0;i<n;i++){var id=HEAP32[ids+i*4>>2];var query=GL.timerQueriesEXT[id];if(!query)continue;GLctx.disjointTimerQueryExt["deleteQueryEXT"](query);GL.timerQueriesEXT[id]=null}}function _emscripten_glDeleteRenderbuffers(n,renderbuffers){for(var i=0;i<n;i++){var id=HEAP32[renderbuffers+i*4>>2];var renderbuffer=GL.renderbuffers[id];if(!renderbuffer)continue;GLctx.deleteRenderbuffer(renderbuffer);renderbuffer.name=0;GL.renderbuffers[id]=null}}function _emscripten_glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}function _emscripten_glDeleteTextures(n,textures){for(var i=0;i<n;i++){var id=HEAP32[textures+i*4>>2];var texture=GL.textures[id];if(!texture)continue;GLctx.deleteTexture(texture);texture.name=0;GL.textures[id]=null}}function _emscripten_glDeleteVertexArraysOES(n,vaos){for(var i=0;i<n;i++){var id=HEAP32[vaos+i*4>>2];GLctx["deleteVertexArray"](GL.vaos[id]);GL.vaos[id]=null}}function _emscripten_glDepthFunc(x0){GLctx["depthFunc"](x0)}function _emscripten_glDepthMask(flag){GLctx.depthMask(!!flag)}function _emscripten_glDepthRangef(x0,x1){GLctx["depthRange"](x0,x1)}function _emscripten_glDetachShader(program,shader){GLctx.detachShader(GL.programs[program],GL.shaders[shader])}function _emscripten_glDisable(x0){GLctx["disable"](x0)}function _emscripten_glDisableVertexAttribArray(index){GLctx.disableVertexAttribArray(index)}function _emscripten_glDrawArrays(mode,first,count){GLctx.drawArrays(mode,first,count)}function _emscripten_glDrawArraysInstancedANGLE(mode,first,count,primcount){GLctx["drawArraysInstanced"](mode,first,count,primcount)}var tempFixedLengthArray=[];function _emscripten_glDrawBuffersWEBGL(n,bufs){var bufArray=tempFixedLengthArray[n];for(var i=0;i<n;i++){bufArray[i]=HEAP32[bufs+i*4>>2]}GLctx["drawBuffers"](bufArray)}function _emscripten_glDrawElements(mode,count,type,indices){GLctx.drawElements(mode,count,type,indices)}function _emscripten_glDrawElementsInstancedANGLE(mode,count,type,indices,primcount){GLctx["drawElementsInstanced"](mode,count,type,indices,primcount)}function _emscripten_glEnable(x0){GLctx["enable"](x0)}function _emscripten_glEnableVertexAttribArray(index){GLctx.enableVertexAttribArray(index)}function _emscripten_glEndQueryEXT(target){GLctx.disjointTimerQueryExt["endQueryEXT"](target)}function _emscripten_glFinish(){GLctx["finish"]()}function _emscripten_glFlush(){GLctx["flush"]()}function _emscripten_glFramebufferRenderbuffer(target,attachment,renderbuffertarget,renderbuffer){GLctx.framebufferRenderbuffer(target,attachment,renderbuffertarget,GL.renderbuffers[renderbuffer])}function _emscripten_glFramebufferTexture2D(target,attachment,textarget,texture,level){GLctx.framebufferTexture2D(target,attachment,textarget,GL.textures[texture],level)}function _emscripten_glFrontFace(x0){GLctx["frontFace"](x0)}function __glGenObject(n,buffers,createFunction,objectTable){for(var i=0;i<n;i++){var buffer=GLctx[createFunction]();var id=buffer&&GL.getNewId(objectTable);if(buffer){buffer.name=id;objectTable[id]=buffer}else{GL.recordError(1282)}HEAP32[buffers+i*4>>2]=id}}function _emscripten_glGenBuffers(n,buffers){__glGenObject(n,buffers,"createBuffer",GL.buffers)}function _emscripten_glGenFramebuffers(n,ids){__glGenObject(n,ids,"createFramebuffer",GL.framebuffers)}function _emscripten_glGenQueriesEXT(n,ids){for(var i=0;i<n;i++){var query=GLctx.disjointTimerQueryExt["createQueryEXT"]();if(!query){GL.recordError(1282);while(i<n)HEAP32[ids+i++*4>>2]=0;return}var id=GL.getNewId(GL.timerQueriesEXT);query.name=id;GL.timerQueriesEXT[id]=query;HEAP32[ids+i*4>>2]=id}}function _emscripten_glGenRenderbuffers(n,renderbuffers){__glGenObject(n,renderbuffers,"createRenderbuffer",GL.renderbuffers)}function _emscripten_glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures)}function _emscripten_glGenVertexArraysOES(n,arrays){__glGenObject(n,arrays,"createVertexArray",GL.vaos)}function _emscripten_glGenerateMipmap(x0){GLctx["generateMipmap"](x0)}function __glGetActiveAttribOrUniform(funcName,program,index,bufSize,length,size,type,name){program=GL.programs[program];var info=GLctx[funcName](program,index);if(info){var numBytesWrittenExclNull=name&&stringToUTF8(info.name,name,bufSize);if(length)HEAP32[length>>2]=numBytesWrittenExclNull;if(size)HEAP32[size>>2]=info.size;if(type)HEAP32[type>>2]=info.type}}function _emscripten_glGetActiveAttrib(program,index,bufSize,length,size,type,name){__glGetActiveAttribOrUniform("getActiveAttrib",program,index,bufSize,length,size,type,name)}function _emscripten_glGetActiveUniform(program,index,bufSize,length,size,type,name){__glGetActiveAttribOrUniform("getActiveUniform",program,index,bufSize,length,size,type,name)}function _emscripten_glGetAttachedShaders(program,maxCount,count,shaders){var result=GLctx.getAttachedShaders(GL.programs[program]);var len=result.length;if(len>maxCount){len=maxCount}HEAP32[count>>2]=len;for(var i=0;i<len;++i){var id=GL.shaders.indexOf(result[i]);HEAP32[shaders+i*4>>2]=id}}function _emscripten_glGetAttribLocation(program,name){return GLctx.getAttribLocation(GL.programs[program],UTF8ToString(name))}function writeI53ToI64(ptr,num){HEAPU32[ptr>>2]=num;HEAPU32[ptr+4>>2]=(num-HEAPU32[ptr>>2])/4294967296}function emscriptenWebGLGet(name_,p,type){if(!p){GL.recordError(1281);return}var ret=undefined;switch(name_){case 36346:ret=1;break;case 36344:if(type!=0&&type!=1){GL.recordError(1280)}return;case 36345:ret=0;break;case 34466:var formats=GLctx.getParameter(34467);ret=formats?formats.length:0;break}if(ret===undefined){var result=GLctx.getParameter(name_);switch(typeof result){case"number":ret=result;break;case"boolean":ret=result?1:0;break;case"string":GL.recordError(1280);return;case"object":if(result===null){switch(name_){case 34964:case 35725:case 34965:case 36006:case 36007:case 32873:case 34229:case 34068:{ret=0;break}default:{GL.recordError(1280);return}}}else if(result instanceof Float32Array||result instanceof Uint32Array||result instanceof Int32Array||result instanceof Array){for(var i=0;i<result.length;++i){switch(type){case 0:HEAP32[p+i*4>>2]=result[i];break;case 2:HEAPF32[p+i*4>>2]=result[i];break;case 4:HEAP8[p+i>>0]=result[i]?1:0;break}}return}else{try{ret=result.name|0}catch(e){GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v: Unknown object returned from WebGL getParameter("+name_+")! (error: "+e+")");return}}break;default:GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v: Native code calling glGet"+type+"v("+name_+") and it returns "+result+" of type "+typeof result+"!");return}}switch(type){case 1:writeI53ToI64(p,ret);break;case 0:HEAP32[p>>2]=ret;break;case 2:HEAPF32[p>>2]=ret;break;case 4:HEAP8[p>>0]=ret?1:0;break}}function _emscripten_glGetBooleanv(name_,p){emscriptenWebGLGet(name_,p,4)}function _emscripten_glGetBufferParameteriv(target,value,data){if(!data){GL.recordError(1281);return}HEAP32[data>>2]=GLctx.getBufferParameter(target,value)}function _emscripten_glGetError(){var error=GLctx.getError()||GL.lastError;GL.lastError=0;return error}function _emscripten_glGetFloatv(name_,p){emscriptenWebGLGet(name_,p,2)}function _emscripten_glGetFramebufferAttachmentParameteriv(target,attachment,pname,params){var result=GLctx.getFramebufferAttachmentParameter(target,attachment,pname);if(result instanceof WebGLRenderbuffer||result instanceof WebGLTexture){result=result.name|0}HEAP32[params>>2]=result}function _emscripten_glGetIntegerv(name_,p){emscriptenWebGLGet(name_,p,0)}function _emscripten_glGetProgramInfoLog(program,maxLength,length,infoLog){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _emscripten_glGetProgramiv(program,pname,p){if(!p){GL.recordError(1281);return}if(program>=GL.counter){GL.recordError(1281);return}var ptable=GL.programInfos[program];if(!ptable){GL.recordError(1282);return}if(pname==35716){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";HEAP32[p>>2]=log.length+1}else if(pname==35719){HEAP32[p>>2]=ptable.maxUniformLength}else if(pname==35722){if(ptable.maxAttributeLength==-1){program=GL.programs[program];var numAttribs=GLctx.getProgramParameter(program,35721);ptable.maxAttributeLength=0;for(var i=0;i<numAttribs;++i){var activeAttrib=GLctx.getActiveAttrib(program,i);ptable.maxAttributeLength=Math.max(ptable.maxAttributeLength,activeAttrib.name.length+1)}}HEAP32[p>>2]=ptable.maxAttributeLength}else if(pname==35381){if(ptable.maxUniformBlockNameLength==-1){program=GL.programs[program];var numBlocks=GLctx.getProgramParameter(program,35382);ptable.maxUniformBlockNameLength=0;for(var i=0;i<numBlocks;++i){var activeBlockName=GLctx.getActiveUniformBlockName(program,i);ptable.maxUniformBlockNameLength=Math.max(ptable.maxUniformBlockNameLength,activeBlockName.length+1)}}HEAP32[p>>2]=ptable.maxUniformBlockNameLength}else{HEAP32[p>>2]=GLctx.getProgramParameter(GL.programs[program],pname)}}function _emscripten_glGetQueryObjecti64vEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.timerQueriesEXT[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}writeI53ToI64(params,ret)}function _emscripten_glGetQueryObjectivEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.timerQueriesEXT[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}HEAP32[params>>2]=ret}function _emscripten_glGetQueryObjectui64vEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.timerQueriesEXT[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}writeI53ToI64(params,ret)}function _emscripten_glGetQueryObjectuivEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.timerQueriesEXT[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}HEAP32[params>>2]=ret}function _emscripten_glGetQueryivEXT(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.disjointTimerQueryExt["getQueryEXT"](target,pname)}function _emscripten_glGetRenderbufferParameteriv(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getRenderbufferParameter(target,pname)}function _emscripten_glGetShaderInfoLog(shader,maxLength,length,infoLog){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _emscripten_glGetShaderPrecisionFormat(shaderType,precisionType,range,precision){var result=GLctx.getShaderPrecisionFormat(shaderType,precisionType);HEAP32[range>>2]=result.rangeMin;HEAP32[range+4>>2]=result.rangeMax;HEAP32[precision>>2]=result.precision}function _emscripten_glGetShaderSource(shader,bufSize,length,source){var result=GLctx.getShaderSource(GL.shaders[shader]);if(!result)return;var numBytesWrittenExclNull=bufSize>0&&source?stringToUTF8(result,source,bufSize):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _emscripten_glGetShaderiv(shader,pname,p){if(!p){GL.recordError(1281);return}if(pname==35716){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var logLength=log?log.length+1:0;HEAP32[p>>2]=logLength}else if(pname==35720){var source=GLctx.getShaderSource(GL.shaders[shader]);var sourceLength=source?source.length+1:0;HEAP32[p>>2]=sourceLength}else{HEAP32[p>>2]=GLctx.getShaderParameter(GL.shaders[shader],pname)}}function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _emscripten_glGetString(name_){if(GL.stringCache[name_])return GL.stringCache[name_];var ret;switch(name_){case 7939:var exts=GLctx.getSupportedExtensions()||[];exts=exts.concat(exts.map(function(e){return"GL_"+e}));ret=stringToNewUTF8(exts.join(" "));break;case 7936:case 7937:case 37445:case 37446:var s=GLctx.getParameter(name_);if(!s){GL.recordError(1280)}ret=stringToNewUTF8(s);break;case 7938:var glVersion=GLctx.getParameter(7938);{glVersion="OpenGL ES 2.0 ("+glVersion+")"}ret=stringToNewUTF8(glVersion);break;case 35724:var glslVersion=GLctx.getParameter(35724);var ver_re=/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/;var ver_num=glslVersion.match(ver_re);if(ver_num!==null){if(ver_num[1].length==3)ver_num[1]=ver_num[1]+"0";glslVersion="OpenGL ES GLSL ES "+ver_num[1]+" ("+glslVersion+")"}ret=stringToNewUTF8(glslVersion);break;default:GL.recordError(1280);return 0}GL.stringCache[name_]=ret;return ret}function _emscripten_glGetTexParameterfv(target,pname,params){if(!params){GL.recordError(1281);return}HEAPF32[params>>2]=GLctx.getTexParameter(target,pname)}function _emscripten_glGetTexParameteriv(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getTexParameter(target,pname)}function jstoi_q(str){return parseInt(str)}function _emscripten_glGetUniformLocation(program,name){name=UTF8ToString(name);var arrayIndex=0;if(name[name.length-1]=="]"){var leftBrace=name.lastIndexOf("[");arrayIndex=name[leftBrace+1]!="]"?jstoi_q(name.slice(leftBrace+1)):0;name=name.slice(0,leftBrace)}var uniformInfo=GL.programInfos[program]&&GL.programInfos[program].uniforms[name];if(uniformInfo&&arrayIndex>=0&&arrayIndex<uniformInfo[0]){return uniformInfo[1]+arrayIndex}else{return-1}}function emscriptenWebGLGetUniform(program,location,params,type){if(!params){GL.recordError(1281);return}var data=GLctx.getUniform(GL.programs[program],GL.uniforms[location]);if(typeof data=="number"||typeof data=="boolean"){switch(type){case 0:HEAP32[params>>2]=data;break;case 2:HEAPF32[params>>2]=data;break}}else{for(var i=0;i<data.length;i++){switch(type){case 0:HEAP32[params+i*4>>2]=data[i];break;case 2:HEAPF32[params+i*4>>2]=data[i];break}}}}function _emscripten_glGetUniformfv(program,location,params){emscriptenWebGLGetUniform(program,location,params,2)}function _emscripten_glGetUniformiv(program,location,params){emscriptenWebGLGetUniform(program,location,params,0)}function _emscripten_glGetVertexAttribPointerv(index,pname,pointer){if(!pointer){GL.recordError(1281);return}HEAP32[pointer>>2]=GLctx.getVertexAttribOffset(index,pname)}function emscriptenWebGLGetVertexAttrib(index,pname,params,type){if(!params){GL.recordError(1281);return}var data=GLctx.getVertexAttrib(index,pname);if(pname==34975){HEAP32[params>>2]=data&&data["name"]}else if(typeof data=="number"||typeof data=="boolean"){switch(type){case 0:HEAP32[params>>2]=data;break;case 2:HEAPF32[params>>2]=data;break;case 5:HEAP32[params>>2]=Math.fround(data);break}}else{for(var i=0;i<data.length;i++){switch(type){case 0:HEAP32[params+i*4>>2]=data[i];break;case 2:HEAPF32[params+i*4>>2]=data[i];break;case 5:HEAP32[params+i*4>>2]=Math.fround(data[i]);break}}}}function _emscripten_glGetVertexAttribfv(index,pname,params){emscriptenWebGLGetVertexAttrib(index,pname,params,2)}function _emscripten_glGetVertexAttribiv(index,pname,params){emscriptenWebGLGetVertexAttrib(index,pname,params,5)}function _emscripten_glHint(x0,x1){GLctx["hint"](x0,x1)}function _emscripten_glIsBuffer(buffer){var b=GL.buffers[buffer];if(!b)return 0;return GLctx.isBuffer(b)}function _emscripten_glIsEnabled(x0){return GLctx["isEnabled"](x0)}function _emscripten_glIsFramebuffer(framebuffer){var fb=GL.framebuffers[framebuffer];if(!fb)return 0;return GLctx.isFramebuffer(fb)}function _emscripten_glIsProgram(program){program=GL.programs[program];if(!program)return 0;return GLctx.isProgram(program)}function _emscripten_glIsQueryEXT(id){var query=GL.timerQueriesEXT[id];if(!query)return 0;return GLctx.disjointTimerQueryExt["isQueryEXT"](query)}function _emscripten_glIsRenderbuffer(renderbuffer){var rb=GL.renderbuffers[renderbuffer];if(!rb)return 0;return GLctx.isRenderbuffer(rb)}function _emscripten_glIsShader(shader){var s=GL.shaders[shader];if(!s)return 0;return GLctx.isShader(s)}function _emscripten_glIsTexture(id){var texture=GL.textures[id];if(!texture)return 0;return GLctx.isTexture(texture)}function _emscripten_glIsVertexArrayOES(array){var vao=GL.vaos[array];if(!vao)return 0;return GLctx["isVertexArray"](vao)}function _emscripten_glLineWidth(x0){GLctx["lineWidth"](x0)}function _emscripten_glLinkProgram(program){GLctx.linkProgram(GL.programs[program]);GL.populateUniformTable(program)}function _emscripten_glPixelStorei(pname,param){if(pname==3317){GL.unpackAlignment=param}GLctx.pixelStorei(pname,param)}function _emscripten_glPolygonOffset(x0,x1){GLctx["polygonOffset"](x0,x1)}function _emscripten_glQueryCounterEXT(id,target){GLctx.disjointTimerQueryExt["queryCounterEXT"](GL.timerQueriesEXT[id],target)}function computeUnpackAlignedImageSize(width,height,sizePerPixel,alignment){function roundedToNextMultipleOf(x,y){return x+y-1&-y}var plainRowSize=width*sizePerPixel;var alignedRowSize=roundedToNextMultipleOf(plainRowSize,alignment);return height*alignedRowSize}function __colorChannelsInGlTextureFormat(format){var colorChannels={5:3,6:4,8:2,29502:3,29504:4};return colorChannels[format-6402]||1}function heapObjectForWebGLType(type){type-=5120;if(type==1)return HEAPU8;if(type==4)return HEAP32;if(type==6)return HEAPF32;if(type==5||type==28922)return HEAPU32;return HEAPU16}function heapAccessShiftForWebGLHeap(heap){return 31-Math.clz32(heap.BYTES_PER_ELEMENT)}function emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat){var heap=heapObjectForWebGLType(type);var shift=heapAccessShiftForWebGLHeap(heap);var byteSize=1<<shift;var sizePerPixel=__colorChannelsInGlTextureFormat(format)*byteSize;var bytes=computeUnpackAlignedImageSize(width,height,sizePerPixel,GL.unpackAlignment);return heap.subarray(pixels>>shift,pixels+bytes>>shift)}function _emscripten_glReadPixels(x,y,width,height,format,type,pixels){var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);return}GLctx.readPixels(x,y,width,height,format,type,pixelData)}function _emscripten_glReleaseShaderCompiler(){}function _emscripten_glRenderbufferStorage(x0,x1,x2,x3){GLctx["renderbufferStorage"](x0,x1,x2,x3)}function _emscripten_glSampleCoverage(value,invert){GLctx.sampleCoverage(value,!!invert)}function _emscripten_glScissor(x0,x1,x2,x3){GLctx["scissor"](x0,x1,x2,x3)}function _emscripten_glShaderBinary(){GL.recordError(1280)}function _emscripten_glShaderSource(shader,count,string,length){var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}function _emscripten_glStencilFunc(x0,x1,x2){GLctx["stencilFunc"](x0,x1,x2)}function _emscripten_glStencilFuncSeparate(x0,x1,x2,x3){GLctx["stencilFuncSeparate"](x0,x1,x2,x3)}function _emscripten_glStencilMask(x0){GLctx["stencilMask"](x0)}function _emscripten_glStencilMaskSeparate(x0,x1){GLctx["stencilMaskSeparate"](x0,x1)}function _emscripten_glStencilOp(x0,x1,x2){GLctx["stencilOp"](x0,x1,x2)}function _emscripten_glStencilOpSeparate(x0,x1,x2,x3){GLctx["stencilOpSeparate"](x0,x1,x2,x3)}function _emscripten_glTexImage2D(target,level,internalFormat,width,height,border,format,type,pixels){GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels?emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat):null)}function _emscripten_glTexParameterf(x0,x1,x2){GLctx["texParameterf"](x0,x1,x2)}function _emscripten_glTexParameterfv(target,pname,params){var param=HEAPF32[params>>2];GLctx.texParameterf(target,pname,param)}function _emscripten_glTexParameteri(x0,x1,x2){GLctx["texParameteri"](x0,x1,x2)}function _emscripten_glTexParameteriv(target,pname,params){var param=HEAP32[params>>2];GLctx.texParameteri(target,pname,param)}function _emscripten_glTexSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixels){var pixelData=null;if(pixels)pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,0);GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixelData)}function _emscripten_glUniform1f(location,v0){GLctx.uniform1f(GL.uniforms[location],v0)}var miniTempWebGLFloatBuffers=[];function _emscripten_glUniform1fv(location,count,value){if(count<=288){var view=miniTempWebGLFloatBuffers[count-1];for(var i=0;i<count;++i){view[i]=HEAPF32[value+4*i>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*4>>2)}GLctx.uniform1fv(GL.uniforms[location],view)}function _emscripten_glUniform1i(location,v0){GLctx.uniform1i(GL.uniforms[location],v0)}var __miniTempWebGLIntBuffers=[];function _emscripten_glUniform1iv(location,count,value){if(count<=288){var view=__miniTempWebGLIntBuffers[count-1];for(var i=0;i<count;++i){view[i]=HEAP32[value+4*i>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*4>>2)}GLctx.uniform1iv(GL.uniforms[location],view)}function _emscripten_glUniform2f(location,v0,v1){GLctx.uniform2f(GL.uniforms[location],v0,v1)}function _emscripten_glUniform2fv(location,count,value){if(count<=144){var view=miniTempWebGLFloatBuffers[2*count-1];for(var i=0;i<2*count;i+=2){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*8>>2)}GLctx.uniform2fv(GL.uniforms[location],view)}function _emscripten_glUniform2i(location,v0,v1){GLctx.uniform2i(GL.uniforms[location],v0,v1)}function _emscripten_glUniform2iv(location,count,value){if(count<=144){var view=__miniTempWebGLIntBuffers[2*count-1];for(var i=0;i<2*count;i+=2){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*8>>2)}GLctx.uniform2iv(GL.uniforms[location],view)}function _emscripten_glUniform3f(location,v0,v1,v2){GLctx.uniform3f(GL.uniforms[location],v0,v1,v2)}function _emscripten_glUniform3fv(location,count,value){if(count<=96){var view=miniTempWebGLFloatBuffers[3*count-1];for(var i=0;i<3*count;i+=3){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*12>>2)}GLctx.uniform3fv(GL.uniforms[location],view)}function _emscripten_glUniform3i(location,v0,v1,v2){GLctx.uniform3i(GL.uniforms[location],v0,v1,v2)}function _emscripten_glUniform3iv(location,count,value){if(count<=96){var view=__miniTempWebGLIntBuffers[3*count-1];for(var i=0;i<3*count;i+=3){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2];view[i+2]=HEAP32[value+(4*i+8)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*12>>2)}GLctx.uniform3iv(GL.uniforms[location],view)}function _emscripten_glUniform4f(location,v0,v1,v2,v3){GLctx.uniform4f(GL.uniforms[location],v0,v1,v2,v3)}function _emscripten_glUniform4fv(location,count,value){if(count<=72){var view=miniTempWebGLFloatBuffers[4*count-1];var heap=HEAPF32;value>>=2;for(var i=0;i<4*count;i+=4){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3]}}else{var view=HEAPF32.subarray(value>>2,value+count*16>>2)}GLctx.uniform4fv(GL.uniforms[location],view)}function _emscripten_glUniform4i(location,v0,v1,v2,v3){GLctx.uniform4i(GL.uniforms[location],v0,v1,v2,v3)}function _emscripten_glUniform4iv(location,count,value){if(count<=72){var view=__miniTempWebGLIntBuffers[4*count-1];for(var i=0;i<4*count;i+=4){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2];view[i+2]=HEAP32[value+(4*i+8)>>2];view[i+3]=HEAP32[value+(4*i+12)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*16>>2)}GLctx.uniform4iv(GL.uniforms[location],view)}function _emscripten_glUniformMatrix2fv(location,count,transpose,value){if(count<=72){var view=miniTempWebGLFloatBuffers[4*count-1];for(var i=0;i<4*count;i+=4){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2];view[i+3]=HEAPF32[value+(4*i+12)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*16>>2)}GLctx.uniformMatrix2fv(GL.uniforms[location],!!transpose,view)}function _emscripten_glUniformMatrix3fv(location,count,transpose,value){if(count<=32){var view=miniTempWebGLFloatBuffers[9*count-1];for(var i=0;i<9*count;i+=9){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2];view[i+3]=HEAPF32[value+(4*i+12)>>2];view[i+4]=HEAPF32[value+(4*i+16)>>2];view[i+5]=HEAPF32[value+(4*i+20)>>2];view[i+6]=HEAPF32[value+(4*i+24)>>2];view[i+7]=HEAPF32[value+(4*i+28)>>2];view[i+8]=HEAPF32[value+(4*i+32)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*36>>2)}GLctx.uniformMatrix3fv(GL.uniforms[location],!!transpose,view)}function _emscripten_glUniformMatrix4fv(location,count,transpose,value){if(count<=18){var view=miniTempWebGLFloatBuffers[16*count-1];var heap=HEAPF32;value>>=2;for(var i=0;i<16*count;i+=16){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3];view[i+4]=heap[dst+4];view[i+5]=heap[dst+5];view[i+6]=heap[dst+6];view[i+7]=heap[dst+7];view[i+8]=heap[dst+8];view[i+9]=heap[dst+9];view[i+10]=heap[dst+10];view[i+11]=heap[dst+11];view[i+12]=heap[dst+12];view[i+13]=heap[dst+13];view[i+14]=heap[dst+14];view[i+15]=heap[dst+15]}}else{var view=HEAPF32.subarray(value>>2,value+count*64>>2)}GLctx.uniformMatrix4fv(GL.uniforms[location],!!transpose,view)}function _emscripten_glUseProgram(program){GLctx.useProgram(GL.programs[program])}function _emscripten_glValidateProgram(program){GLctx.validateProgram(GL.programs[program])}function _emscripten_glVertexAttrib1f(x0,x1){GLctx["vertexAttrib1f"](x0,x1)}function _emscripten_glVertexAttrib1fv(index,v){GLctx.vertexAttrib1f(index,HEAPF32[v>>2])}function _emscripten_glVertexAttrib2f(x0,x1,x2){GLctx["vertexAttrib2f"](x0,x1,x2)}function _emscripten_glVertexAttrib2fv(index,v){GLctx.vertexAttrib2f(index,HEAPF32[v>>2],HEAPF32[v+4>>2])}function _emscripten_glVertexAttrib3f(x0,x1,x2,x3){GLctx["vertexAttrib3f"](x0,x1,x2,x3)}function _emscripten_glVertexAttrib3fv(index,v){GLctx.vertexAttrib3f(index,HEAPF32[v>>2],HEAPF32[v+4>>2],HEAPF32[v+8>>2])}function _emscripten_glVertexAttrib4f(x0,x1,x2,x3,x4){GLctx["vertexAttrib4f"](x0,x1,x2,x3,x4)}function _emscripten_glVertexAttrib4fv(index,v){GLctx.vertexAttrib4f(index,HEAPF32[v>>2],HEAPF32[v+4>>2],HEAPF32[v+8>>2],HEAPF32[v+12>>2])}function _emscripten_glVertexAttribDivisorANGLE(index,divisor){GLctx["vertexAttribDivisor"](index,divisor)}function _emscripten_glVertexAttribPointer(index,size,type,normalized,stride,ptr){GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}function _emscripten_glViewport(x0,x1,x2,x3){GLctx["viewport"](x0,x1,x2,x3)}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function abortOnCannotGrowMemory(requestedSize){abort("OOM")}function _emscripten_resize_heap(requestedSize){abortOnCannotGrowMemory(requestedSize)}function _emscripten_run_script(ptr){eval(UTF8ToString(ptr))}function _emscripten_sample_gamepad_data(){return(JSEvents.lastGamepadState=navigator.getGamepads?navigator.getGamepads():navigator.webkitGetGamepads?navigator.webkitGetGamepads():null)?0:-1}function fillMouseEventData(eventStruct,e,target){var idx=eventStruct>>2;HEAP32[idx+0]=e.screenX;HEAP32[idx+1]=e.screenY;HEAP32[idx+2]=e.clientX;HEAP32[idx+3]=e.clientY;HEAP32[idx+4]=e.ctrlKey;HEAP32[idx+5]=e.shiftKey;HEAP32[idx+6]=e.altKey;HEAP32[idx+7]=e.metaKey;HEAP16[idx*2+16]=e.button;HEAP16[idx*2+17]=e.buttons;HEAP32[idx+9]=e["movementX"];HEAP32[idx+10]=e["movementY"];var rect=getBoundingClientRect(target);HEAP32[idx+11]=e.clientX-rect.left;HEAP32[idx+12]=e.clientY-rect.top}function registerMouseEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.mouseEvent)JSEvents.mouseEvent=_malloc(64);target=findEventTarget(target);var mouseEventHandlerFunc=function(ev){var e=ev||event;fillMouseEventData(JSEvents.mouseEvent,e,target);if(wasmTable.get(callbackfunc)(eventTypeId,JSEvents.mouseEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:eventTypeString!="mousemove"&&eventTypeString!="mouseenter"&&eventTypeString!="mouseleave",eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:mouseEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_click_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,4,"click",targetThread);return 0}function fillFullscreenChangeEventData(eventStruct){var fullscreenElement=document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement||document.msFullscreenElement;var isFullscreen=!!fullscreenElement;HEAP32[eventStruct>>2]=isFullscreen;HEAP32[eventStruct+4>>2]=JSEvents.fullscreenEnabled();var reportedElement=isFullscreen?fullscreenElement:JSEvents.previousFullscreenElement;var nodeName=JSEvents.getNodeNameForTarget(reportedElement);var id=reportedElement&&reportedElement.id?reportedElement.id:"";stringToUTF8(nodeName,eventStruct+8,128);stringToUTF8(id,eventStruct+136,128);HEAP32[eventStruct+264>>2]=reportedElement?reportedElement.clientWidth:0;HEAP32[eventStruct+268>>2]=reportedElement?reportedElement.clientHeight:0;HEAP32[eventStruct+272>>2]=screen.width;HEAP32[eventStruct+276>>2]=screen.height;if(isFullscreen){JSEvents.previousFullscreenElement=fullscreenElement}}function registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.fullscreenChangeEvent)JSEvents.fullscreenChangeEvent=_malloc(280);var fullscreenChangeEventhandlerFunc=function(ev){var e=ev||event;var fullscreenChangeEvent=JSEvents.fullscreenChangeEvent;fillFullscreenChangeEventData(fullscreenChangeEvent);if(wasmTable.get(callbackfunc)(eventTypeId,fullscreenChangeEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:fullscreenChangeEventhandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_fullscreenchange_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){if(!JSEvents.fullscreenEnabled())return-1;target=findEventTarget(target);if(!target)return-4;registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,19,"fullscreenchange",targetThread);registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,19,"webkitfullscreenchange",targetThread);return 0}function registerGamepadEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.gamepadEvent)JSEvents.gamepadEvent=_malloc(1432);var gamepadEventHandlerFunc=function(ev){var e=ev||event;var gamepadEvent=JSEvents.gamepadEvent;fillGamepadEventData(gamepadEvent,e["gamepad"]);if(wasmTable.get(callbackfunc)(eventTypeId,gamepadEvent,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:gamepadEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_gamepadconnected_callback_on_thread(userData,useCapture,callbackfunc,targetThread){if(!navigator.getGamepads&&!navigator.webkitGetGamepads)return-1;registerGamepadEventCallback(2,userData,useCapture,callbackfunc,26,"gamepadconnected",targetThread);return 0}function _emscripten_set_gamepaddisconnected_callback_on_thread(userData,useCapture,callbackfunc,targetThread){if(!navigator.getGamepads&&!navigator.webkitGetGamepads)return-1;registerGamepadEventCallback(2,userData,useCapture,callbackfunc,27,"gamepaddisconnected",targetThread);return 0}function registerKeyEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.keyEvent)JSEvents.keyEvent=_malloc(164);var keyEventHandlerFunc=function(e){var keyEventData=JSEvents.keyEvent;var idx=keyEventData>>2;HEAP32[idx+0]=e.location;HEAP32[idx+1]=e.ctrlKey;HEAP32[idx+2]=e.shiftKey;HEAP32[idx+3]=e.altKey;HEAP32[idx+4]=e.metaKey;HEAP32[idx+5]=e.repeat;HEAP32[idx+6]=e.charCode;HEAP32[idx+7]=e.keyCode;HEAP32[idx+8]=e.which;stringToUTF8(e.key||"",keyEventData+36,32);stringToUTF8(e.code||"",keyEventData+68,32);stringToUTF8(e.char||"",keyEventData+100,32);stringToUTF8(e.locale||"",keyEventData+132,32);if(wasmTable.get(callbackfunc)(eventTypeId,keyEventData,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:keyEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_keydown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,2,"keydown",targetThread);return 0}var Browser={mainLoop:{scheduler:null,method:"",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause:function(){Browser.mainLoop.scheduler=null;Browser.mainLoop.currentlyRunningMainloop++},resume:function(){Browser.mainLoop.currentlyRunningMainloop++;var timingMode=Browser.mainLoop.timingMode;var timingValue=Browser.mainLoop.timingValue;var func=Browser.mainLoop.func;Browser.mainLoop.func=null;setMainLoop(func,0,false,Browser.mainLoop.arg,true);_emscripten_set_main_loop_timing(timingMode,timingValue);Browser.mainLoop.scheduler()},updateStatus:function(){if(Module["setStatus"]){var message=Module["statusMessage"]||"Please wait...";var remaining=Browser.mainLoop.remainingBlockers;var expected=Browser.mainLoop.expectedBlockers;if(remaining){if(remaining<expected){Module["setStatus"](message+" ("+(expected-remaining)+"/"+expected+")")}else{Module["setStatus"](message)}}else{Module["setStatus"]("")}}},runIter:function(func){if(ABORT)return;if(Module["preMainLoop"]){var preRet=Module["preMainLoop"]();if(preRet===false){return}}try{func()}catch(e){if(e instanceof ExitStatus){return}else if(e=="unwind"){return}else{if(e&&typeof e==="object"&&e.stack)err("exception thrown: "+[e,e.stack]);throw e}}if(Module["postMainLoop"])Module["postMainLoop"]()}},isFullscreen:false,pointerLock:false,moduleContextCreatedCallbacks:[],workers:[],init:function(){if(!Module["preloadPlugins"])Module["preloadPlugins"]=[];if(Browser.initted)return;Browser.initted=true;try{new Blob;Browser.hasBlobConstructor=true}catch(e){Browser.hasBlobConstructor=false;console.log("warning: no blob constructor, cannot create blobs with mimetypes")}Browser.BlobBuilder=typeof MozBlobBuilder!="undefined"?MozBlobBuilder:typeof WebKitBlobBuilder!="undefined"?WebKitBlobBuilder:!Browser.hasBlobConstructor?console.log("warning: no BlobBuilder"):null;Browser.URLObject=typeof window!="undefined"?window.URL?window.URL:window.webkitURL:undefined;if(!Module.noImageDecoding&&typeof Browser.URLObject==="undefined"){console.log("warning: Browser does not support creating object URLs. Built-in browser image decoding will not be available.");Module.noImageDecoding=true}var imagePlugin={};imagePlugin["canHandle"]=function imagePlugin_canHandle(name){return!Module.noImageDecoding&&/\.(jpg|jpeg|png|bmp)$/i.test(name)};imagePlugin["handle"]=function imagePlugin_handle(byteArray,name,onload,onerror){var b=null;if(Browser.hasBlobConstructor){try{b=new Blob([byteArray],{type:Browser.getMimetype(name)});if(b.size!==byteArray.length){b=new Blob([new Uint8Array(byteArray).buffer],{type:Browser.getMimetype(name)})}}catch(e){warnOnce("Blob constructor present but fails: "+e+"; falling back to blob builder")}}if(!b){var bb=new Browser.BlobBuilder;bb.append(new Uint8Array(byteArray).buffer);b=bb.getBlob()}var url=Browser.URLObject.createObjectURL(b);var img=new Image;img.onload=function img_onload(){assert(img.complete,"Image "+name+" could not be decoded");var canvas=document.createElement("canvas");canvas.width=img.width;canvas.height=img.height;var ctx=canvas.getContext("2d");ctx.drawImage(img,0,0);Module["preloadedImages"][name]=canvas;Browser.URLObject.revokeObjectURL(url);if(onload)onload(byteArray)};img.onerror=function img_onerror(event){console.log("Image "+url+" could not be decoded");if(onerror)onerror()};img.src=url};Module["preloadPlugins"].push(imagePlugin);var audioPlugin={};audioPlugin["canHandle"]=function audioPlugin_canHandle(name){return!Module.noAudioDecoding&&name.substr(-4)in{".ogg":1,".wav":1,".mp3":1}};audioPlugin["handle"]=function audioPlugin_handle(byteArray,name,onload,onerror){var done=false;function finish(audio){if(done)return;done=true;Module["preloadedAudios"][name]=audio;if(onload)onload(byteArray)}function fail(){if(done)return;done=true;Module["preloadedAudios"][name]=new Audio;if(onerror)onerror()}if(Browser.hasBlobConstructor){try{var b=new Blob([byteArray],{type:Browser.getMimetype(name)})}catch(e){return fail()}var url=Browser.URLObject.createObjectURL(b);var audio=new Audio;audio.addEventListener("canplaythrough",function(){finish(audio)},false);audio.onerror=function audio_onerror(event){if(done)return;console.log("warning: browser could not fully decode audio "+name+", trying slower base64 approach");function encode64(data){var BASE="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var PAD="=";var ret="";var leftchar=0;var leftbits=0;for(var i=0;i<data.length;i++){leftchar=leftchar<<8|data[i];leftbits+=8;while(leftbits>=6){var curr=leftchar>>leftbits-6&63;leftbits-=6;ret+=BASE[curr]}}if(leftbits==2){ret+=BASE[(leftchar&3)<<4];ret+=PAD+PAD}else if(leftbits==4){ret+=BASE[(leftchar&15)<<2];ret+=PAD}return ret}audio.src="data:audio/x-"+name.substr(-3)+";base64,"+encode64(byteArray);finish(audio)};audio.src=url;Browser.safeSetTimeout(function(){finish(audio)},1e4)}else{return fail()}};Module["preloadPlugins"].push(audioPlugin);function pointerLockChange(){Browser.pointerLock=document["pointerLockElement"]===Module["canvas"]||document["mozPointerLockElement"]===Module["canvas"]||document["webkitPointerLockElement"]===Module["canvas"]||document["msPointerLockElement"]===Module["canvas"]}var canvas=Module["canvas"];if(canvas){canvas.requestPointerLock=canvas["requestPointerLock"]||canvas["mozRequestPointerLock"]||canvas["webkitRequestPointerLock"]||canvas["msRequestPointerLock"]||function(){};canvas.exitPointerLock=document["exitPointerLock"]||document["mozExitPointerLock"]||document["webkitExitPointerLock"]||document["msExitPointerLock"]||function(){};canvas.exitPointerLock=canvas.exitPointerLock.bind(document);document.addEventListener("pointerlockchange",pointerLockChange,false);document.addEventListener("mozpointerlockchange",pointerLockChange,false);document.addEventListener("webkitpointerlockchange",pointerLockChange,false);document.addEventListener("mspointerlockchange",pointerLockChange,false);if(Module["elementPointerLock"]){canvas.addEventListener("click",function(ev){if(!Browser.pointerLock&&Module["canvas"].requestPointerLock){Module["canvas"].requestPointerLock();ev.preventDefault()}},false)}}},createContext:function(canvas,useWebGL,setInModule,webGLContextAttributes){if(useWebGL&&Module.ctx&&canvas==Module.canvas)return Module.ctx;var ctx;var contextHandle;if(useWebGL){var contextAttributes={antialias:false,alpha:false,majorVersion:1};if(webGLContextAttributes){for(var attribute in webGLContextAttributes){contextAttributes[attribute]=webGLContextAttributes[attribute]}}if(typeof GL!=="undefined"){contextHandle=GL.createContext(canvas,contextAttributes);if(contextHandle){ctx=GL.getContext(contextHandle).GLctx}}}else{ctx=canvas.getContext("2d")}if(!ctx)return null;if(setInModule){if(!useWebGL)assert(typeof GLctx==="undefined","cannot set in module if GLctx is used, but we are a non-GL context that would replace it");Module.ctx=ctx;if(useWebGL)GL.makeContextCurrent(contextHandle);Module.useWebGL=useWebGL;Browser.moduleContextCreatedCallbacks.forEach(function(callback){callback()});Browser.init()}return ctx},destroyContext:function(canvas,useWebGL,setInModule){},fullscreenHandlersInstalled:false,lockPointer:undefined,resizeCanvas:undefined,requestFullscreen:function(lockPointer,resizeCanvas){Browser.lockPointer=lockPointer;Browser.resizeCanvas=resizeCanvas;if(typeof Browser.lockPointer==="undefined")Browser.lockPointer=true;if(typeof Browser.resizeCanvas==="undefined")Browser.resizeCanvas=false;var canvas=Module["canvas"];function fullscreenChange(){Browser.isFullscreen=false;var canvasContainer=canvas.parentNode;if((document["fullscreenElement"]||document["mozFullScreenElement"]||document["msFullscreenElement"]||document["webkitFullscreenElement"]||document["webkitCurrentFullScreenElement"])===canvasContainer){canvas.exitFullscreen=Browser.exitFullscreen;if(Browser.lockPointer)canvas.requestPointerLock();Browser.isFullscreen=true;if(Browser.resizeCanvas){Browser.setFullscreenCanvasSize()}else{Browser.updateCanvasDimensions(canvas)}}else{canvasContainer.parentNode.insertBefore(canvas,canvasContainer);canvasContainer.parentNode.removeChild(canvasContainer);if(Browser.resizeCanvas){Browser.setWindowedCanvasSize()}else{Browser.updateCanvasDimensions(canvas)}}if(Module["onFullScreen"])Module["onFullScreen"](Browser.isFullscreen);if(Module["onFullscreen"])Module["onFullscreen"](Browser.isFullscreen)}if(!Browser.fullscreenHandlersInstalled){Browser.fullscreenHandlersInstalled=true;document.addEventListener("fullscreenchange",fullscreenChange,false);document.addEventListener("mozfullscreenchange",fullscreenChange,false);document.addEventListener("webkitfullscreenchange",fullscreenChange,false);document.addEventListener("MSFullscreenChange",fullscreenChange,false)}var canvasContainer=document.createElement("div");canvas.parentNode.insertBefore(canvasContainer,canvas);canvasContainer.appendChild(canvas);canvasContainer.requestFullscreen=canvasContainer["requestFullscreen"]||canvasContainer["mozRequestFullScreen"]||canvasContainer["msRequestFullscreen"]||(canvasContainer["webkitRequestFullscreen"]?function(){canvasContainer["webkitRequestFullscreen"](Element["ALLOW_KEYBOARD_INPUT"])}:null)||(canvasContainer["webkitRequestFullScreen"]?function(){canvasContainer["webkitRequestFullScreen"](Element["ALLOW_KEYBOARD_INPUT"])}:null);canvasContainer.requestFullscreen()},exitFullscreen:function(){if(!Browser.isFullscreen){return false}var CFS=document["exitFullscreen"]||document["cancelFullScreen"]||document["mozCancelFullScreen"]||document["msExitFullscreen"]||document["webkitCancelFullScreen"]||function(){};CFS.apply(document,[]);return true},nextRAF:0,fakeRequestAnimationFrame:function(func){var now=Date.now();if(Browser.nextRAF===0){Browser.nextRAF=now+1e3/60}else{while(now+2>=Browser.nextRAF){Browser.nextRAF+=1e3/60}}var delay=Math.max(Browser.nextRAF-now,0);setTimeout(func,delay)},requestAnimationFrame:function(func){if(typeof requestAnimationFrame==="function"){requestAnimationFrame(func);return}var RAF=Browser.fakeRequestAnimationFrame;RAF(func)},safeRequestAnimationFrame:function(func){return Browser.requestAnimationFrame(function(){if(ABORT)return;func()})},safeSetTimeout:function(func,timeout){noExitRuntime=true;return setTimeout(function(){if(ABORT)return;func()},timeout)},getMimetype:function(name){return{"jpg":"image/jpeg","jpeg":"image/jpeg","png":"image/png","bmp":"image/bmp","ogg":"audio/ogg","wav":"audio/wav","mp3":"audio/mpeg"}[name.substr(name.lastIndexOf(".")+1)]},getUserMedia:function(func){if(!window.getUserMedia){window.getUserMedia=navigator["getUserMedia"]||navigator["mozGetUserMedia"]}window.getUserMedia(func)},getMovementX:function(event){return event["movementX"]||event["mozMovementX"]||event["webkitMovementX"]||0},getMovementY:function(event){return event["movementY"]||event["mozMovementY"]||event["webkitMovementY"]||0},getMouseWheelDelta:function(event){var delta=0;switch(event.type){case"DOMMouseScroll":delta=event.detail/3;break;case"mousewheel":delta=event.wheelDelta/120;break;case"wheel":delta=event.deltaY;switch(event.deltaMode){case 0:delta/=100;break;case 1:delta/=3;break;case 2:delta*=80;break;default:throw"unrecognized mouse wheel delta mode: "+event.deltaMode}break;default:throw"unrecognized mouse wheel event: "+event.type}return delta},mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,touches:{},lastTouches:{},calculateMouseEvent:function(event){if(Browser.pointerLock){if(event.type!="mousemove"&&"mozMovementX"in event){Browser.mouseMovementX=Browser.mouseMovementY=0}else{Browser.mouseMovementX=Browser.getMovementX(event);Browser.mouseMovementY=Browser.getMovementY(event)}if(typeof SDL!="undefined"){Browser.mouseX=SDL.mouseX+Browser.mouseMovementX;Browser.mouseY=SDL.mouseY+Browser.mouseMovementY}else{Browser.mouseX+=Browser.mouseMovementX;Browser.mouseY+=Browser.mouseMovementY}}else{var rect=Module["canvas"].getBoundingClientRect();var cw=Module["canvas"].width;var ch=Module["canvas"].height;var scrollX=typeof window.scrollX!=="undefined"?window.scrollX:window.pageXOffset;var scrollY=typeof window.scrollY!=="undefined"?window.scrollY:window.pageYOffset;if(event.type==="touchstart"||event.type==="touchend"||event.type==="touchmove"){var touch=event.touch;if(touch===undefined){return}var adjustedX=touch.pageX-(scrollX+rect.left);var adjustedY=touch.pageY-(scrollY+rect.top);adjustedX=adjustedX*(cw/rect.width);adjustedY=adjustedY*(ch/rect.height);var coords={x:adjustedX,y:adjustedY};if(event.type==="touchstart"){Browser.lastTouches[touch.identifier]=coords;Browser.touches[touch.identifier]=coords}else if(event.type==="touchend"||event.type==="touchmove"){var last=Browser.touches[touch.identifier];if(!last)last=coords;Browser.lastTouches[touch.identifier]=last;Browser.touches[touch.identifier]=coords}return}var x=event.pageX-(scrollX+rect.left);var y=event.pageY-(scrollY+rect.top);x=x*(cw/rect.width);y=y*(ch/rect.height);Browser.mouseMovementX=x-Browser.mouseX;Browser.mouseMovementY=y-Browser.mouseY;Browser.mouseX=x;Browser.mouseY=y}},asyncLoad:function(url,onload,onerror,noRunDep){var dep=!noRunDep?getUniqueRunDependency("al "+url):"";readAsync(url,function(arrayBuffer){assert(arrayBuffer,'Loading data file "'+url+'" failed (no arrayBuffer).');onload(new Uint8Array(arrayBuffer));if(dep)removeRunDependency(dep)},function(event){if(onerror){onerror()}else{throw'Loading data file "'+url+'" failed.'}});if(dep)addRunDependency(dep)},resizeListeners:[],updateResizeListeners:function(){var canvas=Module["canvas"];Browser.resizeListeners.forEach(function(listener){listener(canvas.width,canvas.height)})},setCanvasSize:function(width,height,noUpdates){var canvas=Module["canvas"];Browser.updateCanvasDimensions(canvas,width,height);if(!noUpdates)Browser.updateResizeListeners()},windowedWidth:0,windowedHeight:0,setFullscreenCanvasSize:function(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>2];flags=flags|8388608;HEAP32[SDL.screen>>2]=flags}Browser.updateCanvasDimensions(Module["canvas"]);Browser.updateResizeListeners()},setWindowedCanvasSize:function(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>2];flags=flags&~8388608;HEAP32[SDL.screen>>2]=flags}Browser.updateCanvasDimensions(Module["canvas"]);Browser.updateResizeListeners()},updateCanvasDimensions:function(canvas,wNative,hNative){if(wNative&&hNative){canvas.widthNative=wNative;canvas.heightNative=hNative}else{wNative=canvas.widthNative;hNative=canvas.heightNative}var w=wNative;var h=hNative;if(Module["forcedAspectRatio"]&&Module["forcedAspectRatio"]>0){if(w/h<Module["forcedAspectRatio"]){w=Math.round(h*Module["forcedAspectRatio"])}else{h=Math.round(w/Module["forcedAspectRatio"])}}if((document["fullscreenElement"]||document["mozFullScreenElement"]||document["msFullscreenElement"]||document["webkitFullscreenElement"]||document["webkitCurrentFullScreenElement"])===canvas.parentNode&&typeof screen!="undefined"){var factor=Math.min(screen.width/w,screen.height/h);w=Math.round(w*factor);h=Math.round(h*factor)}if(Browser.resizeCanvas){if(canvas.width!=w)canvas.width=w;if(canvas.height!=h)canvas.height=h;if(typeof canvas.style!="undefined"){canvas.style.removeProperty("width");canvas.style.removeProperty("height")}}else{if(canvas.width!=wNative)canvas.width=wNative;if(canvas.height!=hNative)canvas.height=hNative;if(typeof canvas.style!="undefined"){if(w!=wNative||h!=hNative){canvas.style.setProperty("width",w+"px","important");canvas.style.setProperty("height",h+"px","important")}else{canvas.style.removeProperty("width");canvas.style.removeProperty("height")}}}},wgetRequests:{},nextWgetRequestHandle:0,getNextWgetRequestHandle:function(){var handle=Browser.nextWgetRequestHandle;Browser.nextWgetRequestHandle++;return handle}};function _emscripten_set_main_loop_timing(mode,value){Browser.mainLoop.timingMode=mode;Browser.mainLoop.timingValue=value;if(!Browser.mainLoop.func){return 1}if(mode==0){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setTimeout(){var timeUntilNextTick=Math.max(0,Browser.mainLoop.tickStartTime+value-_emscripten_get_now())|0;setTimeout(Browser.mainLoop.runner,timeUntilNextTick)};Browser.mainLoop.method="timeout"}else if(mode==1){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_rAF(){Browser.requestAnimationFrame(Browser.mainLoop.runner)};Browser.mainLoop.method="rAF"}else if(mode==2){if(typeof setImmediate==="undefined"){var setImmediates=[];var emscriptenMainLoopMessageId="setimmediate";var Browser_setImmediate_messageHandler=function(event){if(event.data===emscriptenMainLoopMessageId||event.data.target===emscriptenMainLoopMessageId){event.stopPropagation();setImmediates.shift()()}};addEventListener("message",Browser_setImmediate_messageHandler,true);setImmediate=function Browser_emulated_setImmediate(func){setImmediates.push(func);if(ENVIRONMENT_IS_WORKER){if(Module["setImmediates"]===undefined)Module["setImmediates"]=[];Module["setImmediates"].push(func);postMessage({target:emscriptenMainLoopMessageId})}else postMessage(emscriptenMainLoopMessageId,"*")}}Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setImmediate(){setImmediate(Browser.mainLoop.runner)};Browser.mainLoop.method="immediate"}return 0}var _emscripten_get_now;if(ENVIRONMENT_IS_NODE){_emscripten_get_now=function(){var t=process["hrtime"]();return t[0]*1e3+t[1]/1e6}}else if(typeof dateNow!=="undefined"){_emscripten_get_now=dateNow}else _emscripten_get_now=function(){return performance.now()};function setMainLoop(browserIterationFunc,fps,simulateInfiniteLoop,arg,noSetTiming){noExitRuntime=true;assert(!Browser.mainLoop.func,"emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters.");Browser.mainLoop.func=browserIterationFunc;Browser.mainLoop.arg=arg;var thisMainLoopId=Browser.mainLoop.currentlyRunningMainloop;Browser.mainLoop.runner=function Browser_mainLoop_runner(){if(ABORT)return;if(Browser.mainLoop.queue.length>0){var start=Date.now();var blocker=Browser.mainLoop.queue.shift();blocker.func(blocker.arg);if(Browser.mainLoop.remainingBlockers){var remaining=Browser.mainLoop.remainingBlockers;var next=remaining%1==0?remaining-1:Math.floor(remaining);if(blocker.counted){Browser.mainLoop.remainingBlockers=next}else{next=next+.5;Browser.mainLoop.remainingBlockers=(8*remaining+next)/9}}console.log('main loop blocker "'+blocker.name+'" took '+(Date.now()-start)+" ms");Browser.mainLoop.updateStatus();if(thisMainLoopId<Browser.mainLoop.currentlyRunningMainloop)return;setTimeout(Browser.mainLoop.runner,0);return}if(thisMainLoopId<Browser.mainLoop.currentlyRunningMainloop)return;Browser.mainLoop.currentFrameNumber=Browser.mainLoop.currentFrameNumber+1|0;if(Browser.mainLoop.timingMode==1&&Browser.mainLoop.timingValue>1&&Browser.mainLoop.currentFrameNumber%Browser.mainLoop.timingValue!=0){Browser.mainLoop.scheduler();return}else if(Browser.mainLoop.timingMode==0){Browser.mainLoop.tickStartTime=_emscripten_get_now()}Browser.mainLoop.runIter(browserIterationFunc);if(thisMainLoopId<Browser.mainLoop.currentlyRunningMainloop)return;if(typeof SDL==="object"&&SDL.audio&&SDL.audio.queueNewAudioData)SDL.audio.queueNewAudioData();Browser.mainLoop.scheduler()};if(!noSetTiming){if(fps&&fps>0)_emscripten_set_main_loop_timing(0,1e3/fps);else _emscripten_set_main_loop_timing(1,1);Browser.mainLoop.scheduler()}if(simulateInfiniteLoop){throw"unwind"}}function _emscripten_set_main_loop(func,fps,simulateInfiniteLoop){var browserIterationFunc=wasmTable.get(func);setMainLoop(browserIterationFunc,fps,simulateInfiniteLoop)}function registerTouchEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.touchEvent)JSEvents.touchEvent=_malloc(1684);target=findEventTarget(target);var touchEventHandlerFunc=function(e){var touches={};var et=e.touches;for(var i=0;i<et.length;++i){var touch=et[i];touches[touch.identifier]=touch}et=e.changedTouches;for(var i=0;i<et.length;++i){var touch=et[i];touch.isChanged=1;touches[touch.identifier]=touch}et=e.targetTouches;for(var i=0;i<et.length;++i){touches[et[i].identifier].onTarget=1}var touchEvent=JSEvents.touchEvent;var idx=touchEvent>>2;HEAP32[idx+1]=e.ctrlKey;HEAP32[idx+2]=e.shiftKey;HEAP32[idx+3]=e.altKey;HEAP32[idx+4]=e.metaKey;idx+=5;var targetRect=getBoundingClientRect(target);var numTouches=0;for(var i in touches){var t=touches[i];HEAP32[idx+0]=t.identifier;HEAP32[idx+1]=t.screenX;HEAP32[idx+2]=t.screenY;HEAP32[idx+3]=t.clientX;HEAP32[idx+4]=t.clientY;HEAP32[idx+5]=t.pageX;HEAP32[idx+6]=t.pageY;HEAP32[idx+7]=t.isChanged;HEAP32[idx+8]=t.onTarget;HEAP32[idx+9]=t.clientX-targetRect.left;HEAP32[idx+10]=t.clientY-targetRect.top;idx+=13;if(++numTouches>31){break}}HEAP32[touchEvent>>2]=numTouches;if(wasmTable.get(callbackfunc)(eventTypeId,touchEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:eventTypeString=="touchstart"||eventTypeString=="touchend",eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:touchEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_touchcancel_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerTouchEventCallback(target,userData,useCapture,callbackfunc,25,"touchcancel",targetThread);return 0}function _emscripten_set_touchend_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerTouchEventCallback(target,userData,useCapture,callbackfunc,23,"touchend",targetThread);return 0}function _emscripten_set_touchmove_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerTouchEventCallback(target,userData,useCapture,callbackfunc,24,"touchmove",targetThread);return 0}function _emscripten_set_touchstart_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerTouchEventCallback(target,userData,useCapture,callbackfunc,22,"touchstart",targetThread);return 0}function _emscripten_thread_sleep(msecs){var start=_emscripten_get_now();while(_emscripten_get_now()-start<msecs){}}function _exit(status){exit(status)}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_read(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doReadv(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var stream=SYSCALLS.getStreamFromFD(fd);var HIGH_OFFSET=4294967296;var offset=offset_high*HIGH_OFFSET+(offset_low>>>0);var DOUBLE_LIMIT=9007199254740992;if(offset<=-DOUBLE_LIMIT||offset>=DOUBLE_LIMIT){return-61}FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doWritev(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _glActiveTexture(x0){GLctx["activeTexture"](x0)}function _glAttachShader(program,shader){GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _glBindAttribLocation(program,index,name){GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))}function _glBindBuffer(target,buffer){GLctx.bindBuffer(target,GL.buffers[buffer])}function _glBindTexture(target,texture){GLctx.bindTexture(target,GL.textures[texture])}function _glBlendFunc(x0,x1){GLctx["blendFunc"](x0,x1)}function _glBufferData(target,size,data,usage){GLctx.bufferData(target,data?HEAPU8.subarray(data,data+size):size,usage)}function _glBufferSubData(target,offset,size,data){GLctx.bufferSubData(target,offset,HEAPU8.subarray(data,data+size))}function _glClear(x0){GLctx["clear"](x0)}function _glClearColor(x0,x1,x2,x3){GLctx["clearColor"](x0,x1,x2,x3)}function _glClearDepthf(x0){GLctx["clearDepth"](x0)}function _glCompileShader(shader){GLctx.compileShader(GL.shaders[shader])}function _glCompressedTexImage2D(target,level,internalFormat,width,height,border,imageSize,data){GLctx["compressedTexImage2D"](target,level,internalFormat,width,height,border,data?HEAPU8.subarray(data,data+imageSize):null)}function _glCreateProgram(){var id=GL.getNewId(GL.programs);var program=GLctx.createProgram();program.name=id;GL.programs[id]=program;return id}function _glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}function _glCullFace(x0){GLctx["cullFace"](x0)}function _glDeleteBuffers(n,buffers){for(var i=0;i<n;i++){var id=HEAP32[buffers+i*4>>2];var buffer=GL.buffers[id];if(!buffer)continue;GLctx.deleteBuffer(buffer);buffer.name=0;GL.buffers[id]=null}}function _glDeleteProgram(id){if(!id)return;var program=GL.programs[id];if(!program){GL.recordError(1281);return}GLctx.deleteProgram(program);program.name=0;GL.programs[id]=null;GL.programInfos[id]=null}function _glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}function _glDeleteTextures(n,textures){for(var i=0;i<n;i++){var id=HEAP32[textures+i*4>>2];var texture=GL.textures[id];if(!texture)continue;GLctx.deleteTexture(texture);texture.name=0;GL.textures[id]=null}}function _glDepthFunc(x0){GLctx["depthFunc"](x0)}function _glDetachShader(program,shader){GLctx.detachShader(GL.programs[program],GL.shaders[shader])}function _glDisable(x0){GLctx["disable"](x0)}function _glDisableVertexAttribArray(index){GLctx.disableVertexAttribArray(index)}function _glDrawArrays(mode,first,count){GLctx.drawArrays(mode,first,count)}function _glDrawElements(mode,count,type,indices){GLctx.drawElements(mode,count,type,indices)}function _glEnable(x0){GLctx["enable"](x0)}function _glEnableVertexAttribArray(index){GLctx.enableVertexAttribArray(index)}function _glFrontFace(x0){GLctx["frontFace"](x0)}function _glGenBuffers(n,buffers){__glGenObject(n,buffers,"createBuffer",GL.buffers)}function _glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures)}function _glGetAttribLocation(program,name){return GLctx.getAttribLocation(GL.programs[program],UTF8ToString(name))}function _glGetFloatv(name_,p){emscriptenWebGLGet(name_,p,2)}function _glGetProgramInfoLog(program,maxLength,length,infoLog){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _glGetProgramiv(program,pname,p){if(!p){GL.recordError(1281);return}if(program>=GL.counter){GL.recordError(1281);return}var ptable=GL.programInfos[program];if(!ptable){GL.recordError(1282);return}if(pname==35716){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";HEAP32[p>>2]=log.length+1}else if(pname==35719){HEAP32[p>>2]=ptable.maxUniformLength}else if(pname==35722){if(ptable.maxAttributeLength==-1){program=GL.programs[program];var numAttribs=GLctx.getProgramParameter(program,35721);ptable.maxAttributeLength=0;for(var i=0;i<numAttribs;++i){var activeAttrib=GLctx.getActiveAttrib(program,i);ptable.maxAttributeLength=Math.max(ptable.maxAttributeLength,activeAttrib.name.length+1)}}HEAP32[p>>2]=ptable.maxAttributeLength}else if(pname==35381){if(ptable.maxUniformBlockNameLength==-1){program=GL.programs[program];var numBlocks=GLctx.getProgramParameter(program,35382);ptable.maxUniformBlockNameLength=0;for(var i=0;i<numBlocks;++i){var activeBlockName=GLctx.getActiveUniformBlockName(program,i);ptable.maxUniformBlockNameLength=Math.max(ptable.maxUniformBlockNameLength,activeBlockName.length+1)}}HEAP32[p>>2]=ptable.maxUniformBlockNameLength}else{HEAP32[p>>2]=GLctx.getProgramParameter(GL.programs[program],pname)}}function _glGetShaderInfoLog(shader,maxLength,length,infoLog){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _glGetShaderiv(shader,pname,p){if(!p){GL.recordError(1281);return}if(pname==35716){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var logLength=log?log.length+1:0;HEAP32[p>>2]=logLength}else if(pname==35720){var source=GLctx.getShaderSource(GL.shaders[shader]);var sourceLength=source?source.length+1:0;HEAP32[p>>2]=sourceLength}else{HEAP32[p>>2]=GLctx.getShaderParameter(GL.shaders[shader],pname)}}function _glGetString(name_){if(GL.stringCache[name_])return GL.stringCache[name_];var ret;switch(name_){case 7939:var exts=GLctx.getSupportedExtensions()||[];exts=exts.concat(exts.map(function(e){return"GL_"+e}));ret=stringToNewUTF8(exts.join(" "));break;case 7936:case 7937:case 37445:case 37446:var s=GLctx.getParameter(name_);if(!s){GL.recordError(1280)}ret=stringToNewUTF8(s);break;case 7938:var glVersion=GLctx.getParameter(7938);{glVersion="OpenGL ES 2.0 ("+glVersion+")"}ret=stringToNewUTF8(glVersion);break;case 35724:var glslVersion=GLctx.getParameter(35724);var ver_re=/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/;var ver_num=glslVersion.match(ver_re);if(ver_num!==null){if(ver_num[1].length==3)ver_num[1]=ver_num[1]+"0";glslVersion="OpenGL ES GLSL ES "+ver_num[1]+" ("+glslVersion+")"}ret=stringToNewUTF8(glslVersion);break;default:GL.recordError(1280);return 0}GL.stringCache[name_]=ret;return ret}function _glGetUniformLocation(program,name){name=UTF8ToString(name);var arrayIndex=0;if(name[name.length-1]=="]"){var leftBrace=name.lastIndexOf("[");arrayIndex=name[leftBrace+1]!="]"?jstoi_q(name.slice(leftBrace+1)):0;name=name.slice(0,leftBrace)}var uniformInfo=GL.programInfos[program]&&GL.programInfos[program].uniforms[name];if(uniformInfo&&arrayIndex>=0&&arrayIndex<uniformInfo[0]){return uniformInfo[1]+arrayIndex}else{return-1}}function _glLinkProgram(program){GLctx.linkProgram(GL.programs[program]);GL.populateUniformTable(program)}function _glPixelStorei(pname,param){if(pname==3317){GL.unpackAlignment=param}GLctx.pixelStorei(pname,param)}function _glReadPixels(x,y,width,height,format,type,pixels){var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);return}GLctx.readPixels(x,y,width,height,format,type,pixelData)}function _glShaderSource(shader,count,string,length){var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}function _glTexImage2D(target,level,internalFormat,width,height,border,format,type,pixels){GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels?emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat):null)}function _glTexParameteri(x0,x1,x2){GLctx["texParameteri"](x0,x1,x2)}function _glUniform1i(location,v0){GLctx.uniform1i(GL.uniforms[location],v0)}function _glUniform4f(location,v0,v1,v2,v3){GLctx.uniform4f(GL.uniforms[location],v0,v1,v2,v3)}function _glUniformMatrix4fv(location,count,transpose,value){if(count<=18){var view=miniTempWebGLFloatBuffers[16*count-1];var heap=HEAPF32;value>>=2;for(var i=0;i<16*count;i+=16){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3];view[i+4]=heap[dst+4];view[i+5]=heap[dst+5];view[i+6]=heap[dst+6];view[i+7]=heap[dst+7];view[i+8]=heap[dst+8];view[i+9]=heap[dst+9];view[i+10]=heap[dst+10];view[i+11]=heap[dst+11];view[i+12]=heap[dst+12];view[i+13]=heap[dst+13];view[i+14]=heap[dst+14];view[i+15]=heap[dst+15]}}else{var view=HEAPF32.subarray(value>>2,value+count*64>>2)}GLctx.uniformMatrix4fv(GL.uniforms[location],!!transpose,view)}function _glUseProgram(program){GLctx.useProgram(GL.programs[program])}function _glVertexAttrib2f(x0,x1,x2){GLctx["vertexAttrib2f"](x0,x1,x2)}function _glVertexAttrib3f(x0,x1,x2,x3){GLctx["vertexAttrib3f"](x0,x1,x2,x3)}function _glVertexAttrib4f(x0,x1,x2,x3,x4){GLctx["vertexAttrib4f"](x0,x1,x2,x3,x4)}function _glVertexAttribPointer(index,size,type,normalized,stride,ptr){GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}function _glViewport(x0,x1,x2,x3){GLctx["viewport"](x0,x1,x2,x3)}function GLFW_Window(id,width,height,title,monitor,share){this.id=id;this.x=0;this.y=0;this.fullscreen=false;this.storedX=0;this.storedY=0;this.width=width;this.height=height;this.storedWidth=width;this.storedHeight=height;this.title=title;this.monitor=monitor;this.share=share;this.attributes=GLFW.hints;this.inputModes={208897:212993,208898:0,208899:0};this.buttons=0;this.keys=new Array;this.domKeys=new Array;this.shouldClose=0;this.title=null;this.windowPosFunc=null;this.windowSizeFunc=null;this.windowCloseFunc=null;this.windowRefreshFunc=null;this.windowFocusFunc=null;this.windowIconifyFunc=null;this.framebufferSizeFunc=null;this.mouseButtonFunc=null;this.cursorPosFunc=null;this.cursorEnterFunc=null;this.scrollFunc=null;this.dropFunc=null;this.keyFunc=null;this.charFunc=null;this.userptr=null}var GLFW={WindowFromId:function(id){if(id<=0||!GLFW.windows)return null;return GLFW.windows[id-1]},joystickFunc:null,errorFunc:null,monitorFunc:null,active:null,windows:null,monitors:null,monitorString:null,versionString:null,initialTime:null,extensions:null,hints:null,defaultHints:{131073:0,131074:0,131075:1,131076:1,131077:1,135169:8,135170:8,135171:8,135172:8,135173:24,135174:8,135175:0,135176:0,135177:0,135178:0,135179:0,135180:0,135181:0,135182:0,135183:0,139265:196609,139266:1,139267:0,139268:0,139269:0,139270:0,139271:0,139272:0},DOMToGLFWKeyCode:function(keycode){switch(keycode){case 32:return 32;case 222:return 39;case 188:return 44;case 173:return 45;case 189:return 45;case 190:return 46;case 191:return 47;case 48:return 48;case 49:return 49;case 50:return 50;case 51:return 51;case 52:return 52;case 53:return 53;case 54:return 54;case 55:return 55;case 56:return 56;case 57:return 57;case 59:return 59;case 61:return 61;case 187:return 61;case 65:return 65;case 66:return 66;case 67:return 67;case 68:return 68;case 69:return 69;case 70:return 70;case 71:return 71;case 72:return 72;case 73:return 73;case 74:return 74;case 75:return 75;case 76:return 76;case 77:return 77;case 78:return 78;case 79:return 79;case 80:return 80;case 81:return 81;case 82:return 82;case 83:return 83;case 84:return 84;case 85:return 85;case 86:return 86;case 87:return 87;case 88:return 88;case 89:return 89;case 90:return 90;case 219:return 91;case 220:return 92;case 221:return 93;case 192:return 94;case 27:return 256;case 13:return 257;case 9:return 258;case 8:return 259;case 45:return 260;case 46:return 261;case 39:return 262;case 37:return 263;case 40:return 264;case 38:return 265;case 33:return 266;case 34:return 267;case 36:return 268;case 35:return 269;case 20:return 280;case 145:return 281;case 144:return 282;case 44:return 283;case 19:return 284;case 112:return 290;case 113:return 291;case 114:return 292;case 115:return 293;case 116:return 294;case 117:return 295;case 118:return 296;case 119:return 297;case 120:return 298;case 121:return 299;case 122:return 300;case 123:return 301;case 124:return 302;case 125:return 303;case 126:return 304;case 127:return 305;case 128:return 306;case 129:return 307;case 130:return 308;case 131:return 309;case 132:return 310;case 133:return 311;case 134:return 312;case 135:return 313;case 136:return 314;case 96:return 320;case 97:return 321;case 98:return 322;case 99:return 323;case 100:return 324;case 101:return 325;case 102:return 326;case 103:return 327;case 104:return 328;case 105:return 329;case 110:return 330;case 111:return 331;case 106:return 332;case 109:return 333;case 107:return 334;case 16:return 340;case 17:return 341;case 18:return 342;case 91:return 343;case 93:return 348;default:return-1}},getModBits:function(win){var mod=0;if(win.keys[340])mod|=1;if(win.keys[341])mod|=2;if(win.keys[342])mod|=4;if(win.keys[343])mod|=8;return mod},onKeyPress:function(event){if(!GLFW.active||!GLFW.active.charFunc)return;if(event.ctrlKey||event.metaKey)return;var charCode=event.charCode;if(charCode==0||charCode>=0&&charCode<=31)return;wasmTable.get(GLFW.active.charFunc)(GLFW.active.id,charCode)},onKeyChanged:function(keyCode,status){if(!GLFW.active)return;var key=GLFW.DOMToGLFWKeyCode(keyCode);if(key==-1)return;var repeat=status&&GLFW.active.keys[key];GLFW.active.keys[key]=status;GLFW.active.domKeys[keyCode]=status;if(!GLFW.active.keyFunc)return;if(repeat)status=2;wasmTable.get(GLFW.active.keyFunc)(GLFW.active.id,key,keyCode,status,GLFW.getModBits(GLFW.active))},onGamepadConnected:function(event){GLFW.refreshJoysticks()},onGamepadDisconnected:function(event){GLFW.refreshJoysticks()},onKeydown:function(event){GLFW.onKeyChanged(event.keyCode,1);if(event.keyCode===8||event.keyCode===9){event.preventDefault()}},onKeyup:function(event){GLFW.onKeyChanged(event.keyCode,0)},onBlur:function(event){if(!GLFW.active)return;for(var i=0;i<GLFW.active.domKeys.length;++i){if(GLFW.active.domKeys[i]){GLFW.onKeyChanged(i,0)}}},onMousemove:function(event){if(!GLFW.active)return;Browser.calculateMouseEvent(event);if(event.target!=Module["canvas"]||!GLFW.active.cursorPosFunc)return;wasmTable.get(GLFW.active.cursorPosFunc)(GLFW.active.id,Browser.mouseX,Browser.mouseY)},DOMToGLFWMouseButton:function(event){var eventButton=event["button"];if(eventButton>0){if(eventButton==1){eventButton=2}else{eventButton=1}}return eventButton},onMouseenter:function(event){if(!GLFW.active)return;if(event.target!=Module["canvas"]||!GLFW.active.cursorEnterFunc)return;wasmTable.get(GLFW.active.cursorEnterFunc)(GLFW.active.id,1)},onMouseleave:function(event){if(!GLFW.active)return;if(event.target!=Module["canvas"]||!GLFW.active.cursorEnterFunc)return;wasmTable.get(GLFW.active.cursorEnterFunc)(GLFW.active.id,0)},onMouseButtonChanged:function(event,status){if(!GLFW.active)return;Browser.calculateMouseEvent(event);if(event.target!=Module["canvas"])return;var eventButton=GLFW.DOMToGLFWMouseButton(event);if(status==1){GLFW.active.buttons|=1<<eventButton;try{event.target.setCapture()}catch(e){}}else{GLFW.active.buttons&=~(1<<eventButton)}if(!GLFW.active.mouseButtonFunc)return;wasmTable.get(GLFW.active.mouseButtonFunc)(GLFW.active.id,eventButton,status,GLFW.getModBits(GLFW.active))},onMouseButtonDown:function(event){if(!GLFW.active)return;GLFW.onMouseButtonChanged(event,1)},onMouseButtonUp:function(event){if(!GLFW.active)return;GLFW.onMouseButtonChanged(event,0)},onMouseWheel:function(event){var delta=-Browser.getMouseWheelDelta(event);delta=delta==0?0:delta>0?Math.max(delta,1):Math.min(delta,-1);GLFW.wheelPos+=delta;if(!GLFW.active||!GLFW.active.scrollFunc||event.target!=Module["canvas"])return;var sx=0;var sy=0;if(event.type=="mousewheel"){sx=event.wheelDeltaX;sy=event.wheelDeltaY}else{sx=event.deltaX;sy=event.deltaY}wasmTable.get(GLFW.active.scrollFunc)(GLFW.active.id,sx,sy);event.preventDefault()},onCanvasResize:function(width,height){if(!GLFW.active)return;var resizeNeeded=true;if(document["fullscreen"]||document["fullScreen"]||document["mozFullScreen"]||document["webkitIsFullScreen"]){GLFW.active.storedX=GLFW.active.x;GLFW.active.storedY=GLFW.active.y;GLFW.active.storedWidth=GLFW.active.width;GLFW.active.storedHeight=GLFW.active.height;GLFW.active.x=GLFW.active.y=0;GLFW.active.width=screen.width;GLFW.active.height=screen.height;GLFW.active.fullscreen=true}else if(GLFW.active.fullscreen==true){GLFW.active.x=GLFW.active.storedX;GLFW.active.y=GLFW.active.storedY;GLFW.active.width=GLFW.active.storedWidth;GLFW.active.height=GLFW.active.storedHeight;GLFW.active.fullscreen=false}else if(GLFW.active.width!=width||GLFW.active.height!=height){GLFW.active.width=width;GLFW.active.height=height}else{resizeNeeded=false}if(resizeNeeded){Browser.setCanvasSize(GLFW.active.width,GLFW.active.height,true);GLFW.onWindowSizeChanged();GLFW.onFramebufferSizeChanged()}},onWindowSizeChanged:function(){if(!GLFW.active)return;if(!GLFW.active.windowSizeFunc)return;wasmTable.get(GLFW.active.windowSizeFunc)(GLFW.active.id,GLFW.active.width,GLFW.active.height)},onFramebufferSizeChanged:function(){if(!GLFW.active)return;if(!GLFW.active.framebufferSizeFunc)return;wasmTable.get(GLFW.active.framebufferSizeFunc)(GLFW.active.id,GLFW.active.width,GLFW.active.height)},getTime:function(){return _emscripten_get_now()/1e3},setWindowTitle:function(winid,title){var win=GLFW.WindowFromId(winid);if(!win)return;win.title=UTF8ToString(title);if(GLFW.active.id==win.id){document.title=win.title}},setJoystickCallback:function(cbfun){GLFW.joystickFunc=cbfun;GLFW.refreshJoysticks()},joys:{},lastGamepadState:null,lastGamepadStateFrame:null,refreshJoysticks:function(){if(Browser.mainLoop.currentFrameNumber!==GLFW.lastGamepadStateFrame||!Browser.mainLoop.currentFrameNumber){GLFW.lastGamepadState=navigator.getGamepads?navigator.getGamepads():navigator.webkitGetGamepads?navigator.webkitGetGamepads:null;GLFW.lastGamepadStateFrame=Browser.mainLoop.currentFrameNumber;for(var joy=0;joy<GLFW.lastGamepadState.length;++joy){var gamepad=GLFW.lastGamepadState[joy];if(gamepad){if(!GLFW.joys[joy]){console.log("glfw joystick connected:",joy);GLFW.joys[joy]={id:allocate(intArrayFromString(gamepad.id),ALLOC_NORMAL),buttonsCount:gamepad.buttons.length,axesCount:gamepad.axes.length,buttons:allocate(new Array(gamepad.buttons.length),ALLOC_NORMAL),axes:allocate(new Array(gamepad.axes.length*4),ALLOC_NORMAL)};if(GLFW.joystickFunc){wasmTable.get(GLFW.joystickFunc)(joy,262145)}}var data=GLFW.joys[joy];for(var i=0;i<gamepad.buttons.length;++i){setValue(data.buttons+i,gamepad.buttons[i].pressed,"i8")}for(var i=0;i<gamepad.axes.length;++i){setValue(data.axes+i*4,gamepad.axes[i],"float")}}else{if(GLFW.joys[joy]){console.log("glfw joystick disconnected",joy);if(GLFW.joystickFunc){wasmTable.get(GLFW.joystickFunc)(joy,262146)}_free(GLFW.joys[joy].id);_free(GLFW.joys[joy].buttons);_free(GLFW.joys[joy].axes);delete GLFW.joys[joy]}}}}},setKeyCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.keyFunc;win.keyFunc=cbfun;return prevcbfun},setCharCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.charFunc;win.charFunc=cbfun;return prevcbfun},setMouseButtonCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.mouseButtonFunc;win.mouseButtonFunc=cbfun;return prevcbfun},setCursorPosCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.cursorPosFunc;win.cursorPosFunc=cbfun;return prevcbfun},setScrollCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.scrollFunc;win.scrollFunc=cbfun;return prevcbfun},setDropCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.dropFunc;win.dropFunc=cbfun;return prevcbfun},onDrop:function(event){if(!GLFW.active||!GLFW.active.dropFunc)return;if(!event.dataTransfer||!event.dataTransfer.files||event.dataTransfer.files.length==0)return;event.preventDefault();var filenames=allocate(new Array(event.dataTransfer.files.length*4),ALLOC_NORMAL);var filenamesArray=[];var count=event.dataTransfer.files.length;var written=0;var drop_dir=".glfw_dropped_files";FS.createPath("/",drop_dir);function save(file){var path="/"+drop_dir+"/"+file.name.replace(/\//g,"_");var reader=new FileReader;reader.onloadend=function(e){if(reader.readyState!=2){++written;console.log("failed to read dropped file: "+file.name+": "+reader.error);return}var data=e.target.result;FS.writeFile(path,new Uint8Array(data));if(++written===count){wasmTable.get(GLFW.active.dropFunc)(GLFW.active.id,count,filenames);for(var i=0;i<filenamesArray.length;++i){_free(filenamesArray[i])}_free(filenames)}};reader.readAsArrayBuffer(file);var filename=allocate(intArrayFromString(path),ALLOC_NORMAL);filenamesArray.push(filename);setValue(filenames+i*4,filename,"i8*")}for(var i=0;i<count;++i){save(event.dataTransfer.files[i])}return false},onDragover:function(event){if(!GLFW.active||!GLFW.active.dropFunc)return;event.preventDefault();return false},setWindowSizeCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowSizeFunc;win.windowSizeFunc=cbfun;return prevcbfun},setWindowCloseCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowCloseFunc;win.windowCloseFunc=cbfun;return prevcbfun},setWindowRefreshCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowRefreshFunc;win.windowRefreshFunc=cbfun;return prevcbfun},onClickRequestPointerLock:function(e){if(!Browser.pointerLock&&Module["canvas"].requestPointerLock){Module["canvas"].requestPointerLock();e.preventDefault()}},setInputMode:function(winid,mode,value){var win=GLFW.WindowFromId(winid);if(!win)return;switch(mode){case 208897:{switch(value){case 212993:{win.inputModes[mode]=value;Module["canvas"].removeEventListener("click",GLFW.onClickRequestPointerLock,true);Module["canvas"].exitPointerLock();break}case 212994:{console.log("glfwSetInputMode called with GLFW_CURSOR_HIDDEN value not implemented.");break}case 212995:{win.inputModes[mode]=value;Module["canvas"].addEventListener("click",GLFW.onClickRequestPointerLock,true);Module["canvas"].requestPointerLock();break}default:{console.log("glfwSetInputMode called with unknown value parameter value: "+value+".");break}}break}case 208898:{console.log("glfwSetInputMode called with GLFW_STICKY_KEYS mode not implemented.");break}case 208899:{console.log("glfwSetInputMode called with GLFW_STICKY_MOUSE_BUTTONS mode not implemented.");break}default:{console.log("glfwSetInputMode called with unknown mode parameter value: "+mode+".");break}}},getKey:function(winid,key){var win=GLFW.WindowFromId(winid);if(!win)return 0;return win.keys[key]},getMouseButton:function(winid,button){var win=GLFW.WindowFromId(winid);if(!win)return 0;return(win.buttons&1<<button)>0},getCursorPos:function(winid,x,y){setValue(x,Browser.mouseX,"double");setValue(y,Browser.mouseY,"double")},getMousePos:function(winid,x,y){setValue(x,Browser.mouseX,"i32");setValue(y,Browser.mouseY,"i32")},setCursorPos:function(winid,x,y){},getWindowPos:function(winid,x,y){var wx=0;var wy=0;var win=GLFW.WindowFromId(winid);if(win){wx=win.x;wy=win.y}if(x){setValue(x,wx,"i32")}if(y){setValue(y,wy,"i32")}},setWindowPos:function(winid,x,y){var win=GLFW.WindowFromId(winid);if(!win)return;win.x=x;win.y=y},getWindowSize:function(winid,width,height){var ww=0;var wh=0;var win=GLFW.WindowFromId(winid);if(win){ww=win.width;wh=win.height}if(width){setValue(width,ww,"i32")}if(height){setValue(height,wh,"i32")}},setWindowSize:function(winid,width,height){var win=GLFW.WindowFromId(winid);if(!win)return;if(GLFW.active.id==win.id){if(width==screen.width&&height==screen.height){Browser.requestFullscreen()}else{Browser.exitFullscreen();Browser.setCanvasSize(width,height);win.width=width;win.height=height}}if(!win.windowSizeFunc)return;wasmTable.get(win.windowSizeFunc)(win.id,width,height)},createWindow:function(width,height,title,monitor,share){var i,id;for(i=0;i<GLFW.windows.length&&GLFW.windows[i]!==null;i++){}if(i>0)throw"glfwCreateWindow only supports one window at time currently";id=i+1;if(width<=0||height<=0)return 0;if(monitor){Browser.requestFullscreen()}else{Browser.setCanvasSize(width,height)}for(i=0;i<GLFW.windows.length&&GLFW.windows[i]==null;i++){}var useWebGL=GLFW.hints[139265]>0;if(i==GLFW.windows.length){if(useWebGL){var contextAttributes={antialias:GLFW.hints[135181]>1,depth:GLFW.hints[135173]>0,stencil:GLFW.hints[135174]>0,alpha:GLFW.hints[135172]>0};Module.ctx=Browser.createContext(Module["canvas"],true,true,contextAttributes)}else{Browser.init()}}if(!Module.ctx&&useWebGL)return 0;var win=new GLFW_Window(id,width,height,title,monitor,share);if(id-1==GLFW.windows.length){GLFW.windows.push(win)}else{GLFW.windows[id-1]=win}GLFW.active=win;return win.id},destroyWindow:function(winid){var win=GLFW.WindowFromId(winid);if(!win)return;if(win.windowCloseFunc)wasmTable.get(win.windowCloseFunc)(win.id);GLFW.windows[win.id-1]=null;if(GLFW.active.id==win.id)GLFW.active=null;for(var i=0;i<GLFW.windows.length;i++)if(GLFW.windows[i]!==null)return;Module.ctx=Browser.destroyContext(Module["canvas"],true,true)},swapBuffers:function(winid){},GLFW2ParamToGLFW3Param:function(param){var table={196609:0,196610:0,196611:0,196612:0,196613:0,196614:0,131073:0,131074:0,131075:0,131076:0,131077:135169,131078:135170,131079:135171,131080:135172,131081:135173,131082:135174,131083:135183,131084:135175,131085:135176,131086:135177,131087:135178,131088:135179,131089:135180,131090:0,131091:135181,131092:139266,131093:139267,131094:139270,131095:139271,131096:139272};return table[param]}};function _glfwCreateWindow(width,height,title,monitor,share){return GLFW.createWindow(width,height,title,monitor,share)}function _glfwDefaultWindowHints(){GLFW.hints=GLFW.defaultHints}function _glfwDestroyWindow(winid){return GLFW.destroyWindow(winid)}function _glfwGetPrimaryMonitor(){return 1}function _glfwGetTime(){return GLFW.getTime()-GLFW.initialTime}function _glfwGetVideoModes(monitor,count){setValue(count,0,"i32");return 0}function _glfwInit(){if(GLFW.windows)return 1;GLFW.initialTime=GLFW.getTime();GLFW.hints=GLFW.defaultHints;GLFW.windows=new Array;GLFW.active=null;window.addEventListener("gamepadconnected",GLFW.onGamepadConnected,true);window.addEventListener("gamepaddisconnected",GLFW.onGamepadDisconnected,true);window.addEventListener("keydown",GLFW.onKeydown,true);window.addEventListener("keypress",GLFW.onKeyPress,true);window.addEventListener("keyup",GLFW.onKeyup,true);window.addEventListener("blur",GLFW.onBlur,true);Module["canvas"].addEventListener("touchmove",GLFW.onMousemove,true);Module["canvas"].addEventListener("touchstart",GLFW.onMouseButtonDown,true);Module["canvas"].addEventListener("touchcancel",GLFW.onMouseButtonUp,true);Module["canvas"].addEventListener("touchend",GLFW.onMouseButtonUp,true);Module["canvas"].addEventListener("mousemove",GLFW.onMousemove,true);Module["canvas"].addEventListener("mousedown",GLFW.onMouseButtonDown,true);Module["canvas"].addEventListener("mouseup",GLFW.onMouseButtonUp,true);Module["canvas"].addEventListener("wheel",GLFW.onMouseWheel,true);Module["canvas"].addEventListener("mousewheel",GLFW.onMouseWheel,true);Module["canvas"].addEventListener("mouseenter",GLFW.onMouseenter,true);Module["canvas"].addEventListener("mouseleave",GLFW.onMouseleave,true);Module["canvas"].addEventListener("drop",GLFW.onDrop,true);Module["canvas"].addEventListener("dragover",GLFW.onDragover,true);Browser.resizeListeners.push(function(width,height){GLFW.onCanvasResize(width,height)});return 1}function _glfwMakeContextCurrent(winid){}function _glfwSetCharCallback(winid,cbfun){return GLFW.setCharCallback(winid,cbfun)}function _glfwSetCursorEnterCallback(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.cursorEnterFunc;win.cursorEnterFunc=cbfun;return prevcbfun}function _glfwSetCursorPosCallback(winid,cbfun){return GLFW.setCursorPosCallback(winid,cbfun)}function _glfwSetDropCallback(winid,cbfun){return GLFW.setDropCallback(winid,cbfun)}function _glfwSetErrorCallback(cbfun){var prevcbfun=GLFW.errorFunc;GLFW.errorFunc=cbfun;return prevcbfun}function _glfwSetKeyCallback(winid,cbfun){return GLFW.setKeyCallback(winid,cbfun)}function _glfwSetMouseButtonCallback(winid,cbfun){return GLFW.setMouseButtonCallback(winid,cbfun)}function _glfwSetScrollCallback(winid,cbfun){return GLFW.setScrollCallback(winid,cbfun)}function _glfwSetWindowFocusCallback(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowFocusFunc;win.windowFocusFunc=cbfun;return prevcbfun}function _glfwSetWindowIconifyCallback(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowIconifyFunc;win.windowIconifyFunc=cbfun;return prevcbfun}function _glfwSetWindowShouldClose(winid,value){var win=GLFW.WindowFromId(winid);if(!win)return;win.shouldClose=value}function _glfwSetWindowSizeCallback(winid,cbfun){return GLFW.setWindowSizeCallback(winid,cbfun)}function _glfwSwapBuffers(winid){GLFW.swapBuffers(winid)}function _glfwSwapInterval(interval){interval=Math.abs(interval);if(interval==0)_emscripten_set_main_loop_timing(0,0);else _emscripten_set_main_loop_timing(1,interval)}function _glfwTerminate(){window.removeEventListener("gamepadconnected",GLFW.onGamepadConnected,true);window.removeEventListener("gamepaddisconnected",GLFW.onGamepadDisconnected,true);window.removeEventListener("keydown",GLFW.onKeydown,true);window.removeEventListener("keypress",GLFW.onKeyPress,true);window.removeEventListener("keyup",GLFW.onKeyup,true);window.removeEventListener("blur",GLFW.onBlur,true);Module["canvas"].removeEventListener("touchmove",GLFW.onMousemove,true);Module["canvas"].removeEventListener("touchstart",GLFW.onMouseButtonDown,true);Module["canvas"].removeEventListener("touchcancel",GLFW.onMouseButtonUp,true);Module["canvas"].removeEventListener("touchend",GLFW.onMouseButtonUp,true);Module["canvas"].removeEventListener("mousemove",GLFW.onMousemove,true);Module["canvas"].removeEventListener("mousedown",GLFW.onMouseButtonDown,true);Module["canvas"].removeEventListener("mouseup",GLFW.onMouseButtonUp,true);Module["canvas"].removeEventListener("wheel",GLFW.onMouseWheel,true);Module["canvas"].removeEventListener("mousewheel",GLFW.onMouseWheel,true);Module["canvas"].removeEventListener("mouseenter",GLFW.onMouseenter,true);Module["canvas"].removeEventListener("mouseleave",GLFW.onMouseleave,true);Module["canvas"].removeEventListener("drop",GLFW.onDrop,true);Module["canvas"].removeEventListener("dragover",GLFW.onDragover,true);Module["canvas"].width=Module["canvas"].height=1;GLFW.windows=null;GLFW.active=null}function _glfwWindowHint(target,hint){GLFW.hints[target]=hint}function _time(ptr){var ret=Date.now()/1e3|0;if(ptr){HEAP32[ptr>>2]=ret}return ret}var FSNode=function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev};var readMode=292|73;var writeMode=146;Object.defineProperties(FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(val){val?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===writeMode},set:function(val){val?this.mode|=writeMode:this.mode&=~writeMode}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}});FS.FSNode=FSNode;FS.staticInit();var GLctx;for(var i=0;i<32;++i)tempFixedLengthArray.push(new Array(i));var miniTempWebGLFloatBuffersStorage=new Float32Array(288);for(var i=0;i<288;++i){miniTempWebGLFloatBuffers[i]=miniTempWebGLFloatBuffersStorage.subarray(0,i+1)}var __miniTempWebGLIntBuffersStorage=new Int32Array(288);for(var i=0;i<288;++i){__miniTempWebGLIntBuffers[i]=__miniTempWebGLIntBuffersStorage.subarray(0,i+1)}Module["requestFullscreen"]=function Module_requestFullscreen(lockPointer,resizeCanvas){Browser.requestFullscreen(lockPointer,resizeCanvas)};Module["requestAnimationFrame"]=function Module_requestAnimationFrame(func){Browser.requestAnimationFrame(func)};Module["setCanvasSize"]=function Module_setCanvasSize(width,height,noUpdates){Browser.setCanvasSize(width,height,noUpdates)};Module["pauseMainLoop"]=function Module_pauseMainLoop(){Browser.mainLoop.pause()};Module["resumeMainLoop"]=function Module_resumeMainLoop(){Browser.mainLoop.resume()};Module["getUserMedia"]=function Module_getUserMedia(){Browser.getUserMedia()};Module["createContext"]=function Module_createContext(canvas,useWebGL,setInModule,webGLContextAttributes){return Browser.createContext(canvas,useWebGL,setInModule,webGLContextAttributes)};function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var asmLibraryArg={"n":___assert_fail,"L":___sys_fcntl64,"Ta":___sys_ioctl,"Va":___sys_open,"C":_emscripten_exit_pointerlock,"aa":_emscripten_get_element_css_size,"X":_emscripten_get_gamepad_status,"Y":_emscripten_get_num_gamepads,"Hd":_emscripten_glActiveTexture,"Gd":_emscripten_glAttachShader,"Xd":_emscripten_glBeginQueryEXT,"Fd":_emscripten_glBindAttribLocation,"Ed":_emscripten_glBindBuffer,"Dd":_emscripten_glBindFramebuffer,"Cd":_emscripten_glBindRenderbuffer,"Bd":_emscripten_glBindTexture,"Pd":_emscripten_glBindVertexArrayOES,"Ad":_emscripten_glBlendColor,"zd":_emscripten_glBlendEquation,"yd":_emscripten_glBlendEquationSeparate,"xd":_emscripten_glBlendFunc,"wd":_emscripten_glBlendFuncSeparate,"vd":_emscripten_glBufferData,"ud":_emscripten_glBufferSubData,"td":_emscripten_glCheckFramebufferStatus,"sd":_emscripten_glClear,"rd":_emscripten_glClearColor,"qd":_emscripten_glClearDepthf,"pd":_emscripten_glClearStencil,"od":_emscripten_glColorMask,"nd":_emscripten_glCompileShader,"md":_emscripten_glCompressedTexImage2D,"ld":_emscripten_glCompressedTexSubImage2D,"kd":_emscripten_glCopyTexImage2D,"jd":_emscripten_glCopyTexSubImage2D,"id":_emscripten_glCreateProgram,"hd":_emscripten_glCreateShader,"gd":_emscripten_glCullFace,"fd":_emscripten_glDeleteBuffers,"ed":_emscripten_glDeleteFramebuffers,"dd":_emscripten_glDeleteProgram,"T":_emscripten_glDeleteQueriesEXT,"cd":_emscripten_glDeleteRenderbuffers,"bd":_emscripten_glDeleteShader,"ad":_emscripten_glDeleteTextures,"Od":_emscripten_glDeleteVertexArraysOES,"$c":_emscripten_glDepthFunc,"_c":_emscripten_glDepthMask,"Zc":_emscripten_glDepthRangef,"Yc":_emscripten_glDetachShader,"Xc":_emscripten_glDisable,"Wc":_emscripten_glDisableVertexAttribArray,"Vc":_emscripten_glDrawArrays,"Kd":_emscripten_glDrawArraysInstancedANGLE,"Ld":_emscripten_glDrawBuffersWEBGL,"Uc":_emscripten_glDrawElements,"Jd":_emscripten_glDrawElementsInstancedANGLE,"Tc":_emscripten_glEnable,"Sc":_emscripten_glEnableVertexAttribArray,"Wd":_emscripten_glEndQueryEXT,"Rc":_emscripten_glFinish,"Qc":_emscripten_glFlush,"Pc":_emscripten_glFramebufferRenderbuffer,"Oc":_emscripten_glFramebufferTexture2D,"Nc":_emscripten_glFrontFace,"Mc":_emscripten_glGenBuffers,"Kc":_emscripten_glGenFramebuffers,"U":_emscripten_glGenQueriesEXT,"Jc":_emscripten_glGenRenderbuffers,"Ic":_emscripten_glGenTextures,"Nd":_emscripten_glGenVertexArraysOES,"Lc":_emscripten_glGenerateMipmap,"Gc":_emscripten_glGetActiveAttrib,"Fc":_emscripten_glGetActiveUniform,"Ec":_emscripten_glGetAttachedShaders,"Dc":_emscripten_glGetAttribLocation,"Cc":_emscripten_glGetBooleanv,"Bc":_emscripten_glGetBufferParameteriv,"Ac":_emscripten_glGetError,"zc":_emscripten_glGetFloatv,"yc":_emscripten_glGetFramebufferAttachmentParameteriv,"xc":_emscripten_glGetIntegerv,"vc":_emscripten_glGetProgramInfoLog,"wc":_emscripten_glGetProgramiv,"Rd":_emscripten_glGetQueryObjecti64vEXT,"Td":_emscripten_glGetQueryObjectivEXT,"Qd":_emscripten_glGetQueryObjectui64vEXT,"Sd":_emscripten_glGetQueryObjectuivEXT,"Ud":_emscripten_glGetQueryivEXT,"uc":_emscripten_glGetRenderbufferParameteriv,"sc":_emscripten_glGetShaderInfoLog,"rc":_emscripten_glGetShaderPrecisionFormat,"qc":_emscripten_glGetShaderSource,"tc":_emscripten_glGetShaderiv,"pc":_emscripten_glGetString,"oc":_emscripten_glGetTexParameterfv,"nc":_emscripten_glGetTexParameteriv,"kc":_emscripten_glGetUniformLocation,"mc":_emscripten_glGetUniformfv,"lc":_emscripten_glGetUniformiv,"hc":_emscripten_glGetVertexAttribPointerv,"jc":_emscripten_glGetVertexAttribfv,"ic":_emscripten_glGetVertexAttribiv,"gc":_emscripten_glHint,"fc":_emscripten_glIsBuffer,"ec":_emscripten_glIsEnabled,"dc":_emscripten_glIsFramebuffer,"cc":_emscripten_glIsProgram,"S":_emscripten_glIsQueryEXT,"bc":_emscripten_glIsRenderbuffer,"ac":_emscripten_glIsShader,"$b":_emscripten_glIsTexture,"Md":_emscripten_glIsVertexArrayOES,"_b":_emscripten_glLineWidth,"Zb":_emscripten_glLinkProgram,"Yb":_emscripten_glPixelStorei,"Xb":_emscripten_glPolygonOffset,"Vd":_emscripten_glQueryCounterEXT,"Wb":_emscripten_glReadPixels,"Vb":_emscripten_glReleaseShaderCompiler,"Tb":_emscripten_glRenderbufferStorage,"Sb":_emscripten_glSampleCoverage,"Rb":_emscripten_glScissor,"Qb":_emscripten_glShaderBinary,"Pb":_emscripten_glShaderSource,"Ob":_emscripten_glStencilFunc,"Nb":_emscripten_glStencilFuncSeparate,"Mb":_emscripten_glStencilMask,"Lb":_emscripten_glStencilMaskSeparate,"Kb":_emscripten_glStencilOp,"Ib":_emscripten_glStencilOpSeparate,"Hb":_emscripten_glTexImage2D,"Gb":_emscripten_glTexParameterf,"Fb":_emscripten_glTexParameterfv,"Eb":_emscripten_glTexParameteri,"Db":_emscripten_glTexParameteriv,"Cb":_emscripten_glTexSubImage2D,"Bb":_emscripten_glUniform1f,"Ab":_emscripten_glUniform1fv,"zb":_emscripten_glUniform1i,"xb":_emscripten_glUniform1iv,"wb":_emscripten_glUniform2f,"vb":_emscripten_glUniform2fv,"ub":_emscripten_glUniform2i,"tb":_emscripten_glUniform2iv,"sb":_emscripten_glUniform3f,"rb":_emscripten_glUniform3fv,"qb":_emscripten_glUniform3i,"pb":_emscripten_glUniform3iv,"ob":_emscripten_glUniform4f,"mb":_emscripten_glUniform4fv,"lb":_emscripten_glUniform4i,"kb":_emscripten_glUniform4iv,"jb":_emscripten_glUniformMatrix2fv,"ib":_emscripten_glUniformMatrix3fv,"hb":_emscripten_glUniformMatrix4fv,"gb":_emscripten_glUseProgram,"fb":_emscripten_glValidateProgram,"eb":_emscripten_glVertexAttrib1f,"db":_emscripten_glVertexAttrib1fv,"bb":_emscripten_glVertexAttrib2f,"ab":_emscripten_glVertexAttrib2fv,"$a":_emscripten_glVertexAttrib3f,"_a":_emscripten_glVertexAttrib3fv,"Za":_emscripten_glVertexAttrib4f,"Ya":_emscripten_glVertexAttrib4fv,"Id":_emscripten_glVertexAttribDivisorANGLE,"Xa":_emscripten_glVertexAttribPointer,"Wa":_emscripten_glViewport,"Pa":_emscripten_memcpy_big,"Qa":_emscripten_resize_heap,"x":_emscripten_run_script,"Z":_emscripten_sample_gamepad_data,"ya":_emscripten_set_click_callback_on_thread,"Aa":_emscripten_set_fullscreenchange_callback_on_thread,"ta":_emscripten_set_gamepadconnected_callback_on_thread,"sa":_emscripten_set_gamepaddisconnected_callback_on_thread,"za":_emscripten_set_keydown_callback_on_thread,"Zd":_emscripten_set_main_loop,"ua":_emscripten_set_touchcancel_callback_on_thread,"wa":_emscripten_set_touchend_callback_on_thread,"va":_emscripten_set_touchmove_callback_on_thread,"xa":_emscripten_set_touchstart_callback_on_thread,"Ra":_emscripten_thread_sleep,"V":_exit,"M":_fd_close,"Sa":_fd_read,"Oa":_fd_seek,"K":_fd_write,"p":_glActiveTexture,"D":_glAttachShader,"j":_glBindAttribLocation,"a":_glBindBuffer,"h":_glBindTexture,"Jb":_glBlendFunc,"d":_glBufferData,"v":_glBufferSubData,"N":_glClear,"O":_glClearColor,"cb":_glClearDepthf,"Fa":_glCompileShader,"La":_glCompressedTexImage2D,"Da":_glCreateProgram,"Ha":_glCreateShader,"yb":_glCullFace,"l":_glDeleteBuffers,"G":_glDeleteProgram,"H":_glDeleteShader,"J":_glDeleteTextures,"Ub":_glDepthFunc,"I":_glDetachShader,"P":_glDisable,"g":_glDisableVertexAttribArray,"R":_glDrawArrays,"Q":_glDrawElements,"w":_glEnable,"b":_glEnableVertexAttribArray,"nb":_glFrontFace,"e":_glGenBuffers,"Na":_glGenTextures,"u":_glGetAttribLocation,"Hc":_glGetFloatv,"Ba":_glGetProgramInfoLog,"F":_glGetProgramiv,"Ea":_glGetShaderInfoLog,"E":_glGetShaderiv,"m":_glGetString,"t":_glGetUniformLocation,"Ca":_glLinkProgram,"Ua":_glPixelStorei,"Ia":_glReadPixels,"Ga":_glShaderSource,"Ma":_glTexImage2D,"o":_glTexParameteri,"y":_glUniform1i,"q":_glUniform4f,"r":_glUniformMatrix4fv,"k":_glUseProgram,"Ja":_glVertexAttrib2f,"Ka":_glVertexAttrib3f,"s":_glVertexAttrib4f,"c":_glVertexAttribPointer,"Yd":_glViewport,"A":_glfwCreateWindow,"pa":_glfwDefaultWindowHints,"$":_glfwDestroyWindow,"B":_glfwGetPrimaryMonitor,"i":_glfwGetTime,"oa":_glfwGetVideoModes,"qa":_glfwInit,"da":_glfwMakeContextCurrent,"ia":_glfwSetCharCallback,"ea":_glfwSetCursorEnterCallback,"ga":_glfwSetCursorPosCallback,"ka":_glfwSetDropCallback,"ra":_glfwSetErrorCallback,"ja":_glfwSetKeyCallback,"ha":_glfwSetMouseButtonCallback,"fa":_glfwSetScrollCallback,"la":_glfwSetWindowFocusCallback,"ma":_glfwSetWindowIconifyCallback,"W":_glfwSetWindowShouldClose,"na":_glfwSetWindowSizeCallback,"_":_glfwSwapBuffers,"ca":_glfwSwapInterval,"z":_glfwTerminate,"f":_glfwWindowHint,"ba":_time};var asm=createWasm();var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["$d"]).apply(null,arguments)};var _main=Module["_main"]=function(){return(_main=Module["_main"]=Module["asm"]["ae"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["ce"]).apply(null,arguments)};var _free=Module["_free"]=function(){return(_free=Module["_free"]=Module["asm"]["de"]).apply(null,arguments)};var ___errno_location=Module["___errno_location"]=function(){return(___errno_location=Module["___errno_location"]=Module["asm"]["ee"]).apply(null,arguments)};var stackAlloc=Module["stackAlloc"]=function(){return(stackAlloc=Module["stackAlloc"]=Module["asm"]["fe"]).apply(null,arguments)};var calledRun;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}var calledMain=false;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args){var entryFunction=Module["_main"];var argc=0;var argv=0;try{var ret=entryFunction(argc,argv);exit(ret,true)}catch(e){if(e instanceof ExitStatus){return}else if(e=="unwind"){noExitRuntime=true;return}else{var toLog=e;if(e&&typeof e==="object"&&e.stack){toLog=[e,e.stack]}err("exception thrown: "+toLog);quit_(1,e)}}finally{calledMain=true}}function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(shouldRunNow)callMain(args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}Module["run"]=run;function exit(status,implicit){if(implicit&&noExitRuntime&&status===0){return}if(noExitRuntime){}else{EXITSTATUS=status;exitRuntime();if(Module["onExit"])Module["onExit"](status);ABORT=true}quit_(status,new ExitStatus(status))}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}var shouldRunNow=true;if(Module["noInitialRun"])shouldRunNow=false;run();
diff --git a/examples/web/models/models_mesh_generation.wasm b/examples/web/models/models_mesh_generation.wasm
deleted file mode 100644
index ef81efe..0000000
--- a/examples/web/models/models_mesh_generation.wasm
+++ /dev/null
Binary files differ
diff --git a/examples/web/models/models_mesh_picking.c b/examples/web/models/models_mesh_picking.c
deleted file mode 100644
index 90105ef..0000000
--- a/examples/web/models/models_mesh_picking.c
+++ /dev/null
@@ -1,242 +0,0 @@
-/*******************************************************************************************
-*
-* raylib [models] example - Mesh picking in 3d mode, ground plane, triangle, mesh
-*
-* This example has been created using raylib 1.7 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
-*
-* Copyright (c) 2015 Ramon Santamaria (@raysan5)
-* Example contributed by Joel Davis (@joeld42)
-*
-********************************************************************************************/
-
-#include "raylib.h"
-#include "raymath.h"
-
-#define FLT_MAX 3.40282347E+38F // Maximum value of a float, defined in <float.h>
-
-#if defined(PLATFORM_WEB)
- #include <emscripten/emscripten.h>
-#endif
-
-//----------------------------------------------------------------------------------
-// Global Variables Definition
-//----------------------------------------------------------------------------------
-const int screenWidth = 800;
-const int screenHeight = 450;
-
-Camera camera = { 0 };
-
-Vector3 cubePosition = { 0.0f, 1.0f, 0.0f };
-Vector3 cubeSize = { 2.0f, 2.0f, 2.0f };
-
-Ray ray = { 0 }; // Picking line ray
-
-Model tower = { 0 };
-Texture2D texture = { 0 };
-
-Vector3 towerPos = { 0.0f, 0.0f, 0.0f };
-BoundingBox towerBBox = { 0 };
-bool hitMeshBBox = false;
-bool hitTriangle = false;
-
-// Test triangle
-Vector3 ta = (Vector3){ -25.0, 0.5, 0.0 };
-Vector3 tb = (Vector3){ -4.0, 2.5, 1.0 };
-Vector3 tc = (Vector3){ -8.0, 6.5, 0.0 };
-
-Vector3 bary = { 0.0f, 0.0f, 0.0f };
-
-//----------------------------------------------------------------------------------
-// Module Functions Declaration
-//----------------------------------------------------------------------------------
-void UpdateDrawFrame(void); // Update and Draw one frame
-
-//----------------------------------------------------------------------------------
-// Program Main Entry Point
-//----------------------------------------------------------------------------------
-int main(void)
-{
- // Initialization
- //--------------------------------------------------------------------------------------
- InitWindow(screenWidth, screenHeight, "raylib [models] example - 3d mesh picking");
-
- // Define the camera to look into our 3d world
- camera.position = (Vector3){ 10.0f, 8.0f, 10.0f }; // Camera position
- camera.target = (Vector3){ 0.0f, 2.3f, 0.0f }; // Camera looking at point
- camera.up = (Vector3){ 0.0f, 1.6f, 0.0f }; // Camera up vector (rotation towards target)
- camera.fovy = 45.0f; // Camera field-of-view Y
- camera.projection = CAMERA_PERSPECTIVE; // Camera mode type
-
- tower = LoadModel("resources/models/turret.obj"); // Load OBJ model
- texture = LoadTexture("resources/models/turret_diffuse.png"); // Load model texture
- tower.materials[0].maps[MATERIAL_MAP_DIFFUSE].texture = texture; // Set model diffuse texture
-
- towerBBox = GetMeshBoundingBox(tower.meshes[0]); // Get mesh bounding box
-
- SetCameraMode(camera, CAMERA_FREE); // Set a free camera mode
-
- SetTargetFPS(60); // Set our game to run at 60 frames-per-second
- //--------------------------------------------------------------------------------------
-
-#if defined(PLATFORM_WEB)
- emscripten_set_main_loop(UpdateDrawFrame, 60, 1);
-#else
- SetTargetFPS(60); // Set our game to run at 60 frames-per-second
- //--------------------------------------------------------------------------------------
-
- // Main game loop
- while (!WindowShouldClose()) // Detect window close button or ESC key
- {
- UpdateDrawFrame();
- }
-#endif
-
- // De-Initialization
- //--------------------------------------------------------------------------------------
- UnloadModel(tower); // Unload model from GPU
- UnloadTexture(texture); // Unload texture from GPU
-
- CloseWindow(); // Close window and OpenGL context
- //--------------------------------------------------------------------------------------
-
- return 0;
-}
-
-//----------------------------------------------------------------------------------
-// Module Functions Definition
-//----------------------------------------------------------------------------------
-void UpdateDrawFrame(void)
-{
- // Update
- //----------------------------------------------------------------------------------
- UpdateCamera(&camera); // Update camera
-
- // Display information about closest hit
- RayHitInfo nearestHit = { 0 };
- char *hitObjectName = "None";
- nearestHit.distance = FLT_MAX;
- nearestHit.hit = false;
- Color cursorColor = WHITE;
-
- // Get ray and test against ground, triangle, and mesh
- ray = GetMouseRay(GetMousePosition(), camera);
-
- // Check ray collision aginst ground plane
- RayHitInfo groundHitInfo = GetCollisionRayGround(ray, 0.0f);
-
- if ((groundHitInfo.hit) && (groundHitInfo.distance < nearestHit.distance))
- {
- nearestHit = groundHitInfo;
- cursorColor = GREEN;
- hitObjectName = "Ground";
- }
-
- // Check ray collision against test triangle
- RayHitInfo triHitInfo = GetCollisionRayTriangle(ray, ta, tb, tc);
-
- if ((triHitInfo.hit) && (triHitInfo.distance < nearestHit.distance))
- {
- nearestHit = triHitInfo;
- cursorColor = PURPLE;
- hitObjectName = "Triangle";
-
- bary = Vector3Barycenter(nearestHit.position, ta, tb, tc);
- hitTriangle = true;
- }
- else hitTriangle = false;
-
- RayHitInfo meshHitInfo = { 0 };
-
- // Check ray collision against bounding box first, before trying the full ray-mesh test
- if (CheckCollisionRayBox(ray, towerBBox))
- {
- hitMeshBBox = true;
-
- // Check ray collision against model
- // NOTE: It considers model.transform matrix!
- meshHitInfo = GetCollisionRayModel(ray, tower);
-
- if ((meshHitInfo.hit) && (meshHitInfo.distance < nearestHit.distance))
- {
- nearestHit = meshHitInfo;
- cursorColor = ORANGE;
- hitObjectName = "Mesh";
- }
- }
-
- hitMeshBBox = false;
- //----------------------------------------------------------------------------------
-
- // Draw
- //----------------------------------------------------------------------------------
- BeginDrawing();
-
- ClearBackground(RAYWHITE);
-
- BeginMode3D(camera);
-
- // Draw the tower
- // WARNING: If scale is different than 1.0f,
- // not considered by GetCollisionRayModel()
- DrawModel(tower, towerPos, 1.0f, WHITE);
-
- // Draw the test triangle
- DrawLine3D(ta, tb, PURPLE);
- DrawLine3D(tb, tc, PURPLE);
- DrawLine3D(tc, ta, PURPLE);
-
- // Draw the mesh bbox if we hit it
- if (hitMeshBBox) DrawBoundingBox(towerBBox, LIME);
-
- // If we hit something, draw the cursor at the hit point
- if (nearestHit.hit)
- {
- DrawCube(nearestHit.position, 0.3, 0.3, 0.3, cursorColor);
- DrawCubeWires(nearestHit.position, 0.3, 0.3, 0.3, RED);
-
- Vector3 normalEnd;
- normalEnd.x = nearestHit.position.x + nearestHit.normal.x;
- normalEnd.y = nearestHit.position.y + nearestHit.normal.y;
- normalEnd.z = nearestHit.position.z + nearestHit.normal.z;
-
- DrawLine3D(nearestHit.position, normalEnd, RED);
- }
-
- DrawRay(ray, MAROON);
-
- DrawGrid(10, 10.0f);
-
- EndMode3D();
-
- // Draw some debug GUI text
- DrawText(TextFormat("Hit Object: %s", hitObjectName), 10, 50, 10, BLACK);
-
- if (nearestHit.hit)
- {
- int ypos = 70;
-
- DrawText(TextFormat("Distance: %3.2f", nearestHit.distance), 10, ypos, 10, BLACK);
-
- DrawText(TextFormat("Hit Pos: %3.2f %3.2f %3.2f",
- nearestHit.position.x,
- nearestHit.position.y,
- nearestHit.position.z), 10, ypos + 15, 10, BLACK);
-
- DrawText(TextFormat("Hit Norm: %3.2f %3.2f %3.2f",
- nearestHit.normal.x,
- nearestHit.normal.y,
- nearestHit.normal.z), 10, ypos + 30, 10, BLACK);
-
- if (hitTriangle) DrawText(TextFormat("Barycenter: %3.2f %3.2f %3.2f", bary.x, bary.y, bary.z), 10, ypos + 45, 10, BLACK);
- }
-
- DrawText("Use Mouse to Move Camera", 10, 430, 10, GRAY);
-
- DrawText("(c) Turret 3D model by Alberto Cano", screenWidth - 200, screenHeight - 20, 10, GRAY);
-
- DrawFPS(10, 10);
-
- EndDrawing();
- //----------------------------------------------------------------------------------
-}
diff --git a/examples/web/models/models_mesh_picking.data b/examples/web/models/models_mesh_picking.data
deleted file mode 100644
index 25e3636..0000000
--- a/examples/web/models/models_mesh_picking.data
+++ /dev/null
@@ -1,3938 +0,0 @@
-# (c) 2018 Medieval Assets Pack by Alberto Cano
-# Licensed as Creative Commons Attribution-NonCommercial 4.0
-
-#
-# object turret
-#
-
-v 0.0000 13.3010 3.5973
-v 0.0000 12.1596 2.3386
-v 2.5639 12.1596 2.3386
-v 3.4913 13.3010 3.5973
-v 3.5203 14.0462 3.0738
-v 3.9444 14.0450 3.1421
-v 3.9444 14.0369 -0.0000
-v 3.4351 14.0369 -0.0000
-v 3.4352 14.0462 2.9719
-v 3.3643 13.3303 2.9127
-v 0.0000 13.3303 2.9127
-v 0.0000 13.3010 2.9740
-v 3.4352 13.3010 2.9740
-v 0.0000 14.0462 2.9719
-v 3.9444 13.2918 -0.0000
-v 3.9444 13.2998 3.1441
-v 3.4913 14.0462 3.5952
-v 3.3643 13.3303 -0.0000
-v 0.0000 13.3303 -0.0000
-v 0.0000 14.0462 3.5952
-v 2.5639 12.1504 -0.0000
-v 3.4352 13.2918 -0.0000
-v 3.5237 14.9316 3.0740
-v 3.9478 14.9305 3.1422
-v 3.4947 14.9316 3.5953
-v 3.5271 16.4764 1.4274
-v 3.9512 16.4752 1.4274
-v 3.9512 15.9080 2.0774
-v 3.5271 15.9092 2.0092
-v 1.8327 16.4815 3.5953
-v 1.8617 16.4815 3.0742
-v 2.5117 15.9086 3.0742
-v 2.4725 15.9086 3.5953
-v 3.9512 16.4757 3.1424
-v 3.4981 16.4769 3.5955
-v 3.5271 16.4769 3.0742
-v 2.5639 12.1596 -2.3386
-v 0.0000 12.1596 -2.3386
-v 0.0000 13.3010 -3.5973
-v 3.4913 13.3010 -3.5973
-v 3.5203 14.0462 -3.0738
-v 3.4351 14.0462 -2.9720
-v 3.9444 14.0450 -3.1421
-v 0.0000 13.3010 -2.9740
-v 0.0000 13.3303 -2.9127
-v 3.3643 13.3303 -2.9127
-v 3.4352 13.3010 -2.9740
-v 0.0000 14.0462 -2.9719
-v 3.9444 13.2998 -3.1441
-v 3.4913 14.0462 -3.5952
-v 0.0000 14.0462 -3.5952
-v 3.9478 14.9305 -3.1422
-v 3.5237 14.9316 -3.0740
-v 3.4947 14.9316 -3.5953
-v 3.9512 15.9080 -2.0774
-v 3.9512 16.4752 -1.4274
-v 3.5271 16.4764 -1.4274
-v 3.5271 15.9092 -2.0092
-v 2.5117 15.9086 -3.0742
-v 1.8617 16.4815 -3.0742
-v 1.8327 16.4815 -3.5954
-v 2.4725 15.9086 -3.5953
-v 3.4981 16.4769 -3.5955
-v 3.9512 16.4757 -3.1424
-v 3.5271 16.4769 -3.0742
-v -2.5639 12.1596 2.3386
-v -3.4913 13.3010 3.5973
-v -3.5203 14.0462 3.0738
-v -3.4351 14.0462 2.9720
-v -3.4351 14.0369 0.0000
-v -3.9444 14.0369 0.0000
-v -3.9444 14.0450 3.1421
-v -3.3643 13.3303 2.9127
-v -3.4351 13.3010 2.9740
-v -3.9444 13.2918 0.0000
-v -3.9444 13.2998 3.1441
-v -3.4913 14.0462 3.5952
-v -3.3643 13.3303 0.0000
-v -2.5639 12.1504 0.0000
-v -3.4351 13.2918 0.0000
-v -3.9478 14.9305 3.1422
-v -3.5237 14.9316 3.0740
-v -3.4947 14.9316 3.5954
-v -3.9512 15.9080 2.0774
-v -3.9512 16.4752 1.4274
-v -3.5271 16.4764 1.4274
-v -3.5271 15.9092 2.0092
-v -2.5117 15.9086 3.0742
-v -1.8617 16.4815 3.0742
-v -1.8327 16.4815 3.5954
-v -2.4725 15.9086 3.5953
-v -3.4981 16.4769 3.5955
-v -3.9512 16.4757 3.1424
-v -3.5271 16.4769 3.0742
-v -2.5639 12.1596 -2.3386
-v -3.4913 13.3010 -3.5972
-v -3.5203 14.0462 -3.0738
-v -3.9444 14.0450 -3.1421
-v -3.4351 14.0462 -2.9719
-v -3.3643 13.3303 -2.9127
-v -3.4351 13.3010 -2.9740
-v -3.9444 13.2998 -3.1441
-v -3.4913 14.0462 -3.5952
-v -3.5237 14.9316 -3.0740
-v -3.9478 14.9305 -3.1422
-v -3.4947 14.9316 -3.5953
-v -3.5271 16.4764 -1.4274
-v -3.9512 16.4752 -1.4274
-v -3.9512 15.9080 -2.0774
-v -3.5271 15.9092 -2.0092
-v -1.8327 16.4815 -3.5953
-v -1.8617 16.4815 -3.0742
-v -2.5117 15.9086 -3.0742
-v -2.4725 15.9086 -3.5953
-v -3.9512 16.4757 -3.1424
-v -3.4981 16.4769 -3.5955
-v -3.5271 16.4769 -3.0742
-v 0.1550 14.0277 -3.1544
-v 0.1550 14.0277 -3.5335
-v 0.1550 16.9018 -3.5335
-v 0.1550 16.9018 -3.1544
-v -0.5341 14.0277 -3.5335
-v -0.5341 16.9018 -3.5335
-v -0.5341 14.0277 -3.1544
-v -0.5341 16.9018 -3.1544
-v -3.5170 14.0277 -0.3456
-v -3.8961 14.0277 -0.3456
-v -3.8961 16.9018 -0.3456
-v -3.5170 16.9018 -0.3456
-v -3.8961 14.0277 0.3435
-v -3.8961 16.9018 0.3435
-v -3.5170 14.0277 0.3435
-v -3.5170 16.9018 0.3435
-v -0.3446 14.0277 3.1662
-v -0.3446 14.0277 3.5453
-v -0.3446 16.9018 3.5453
-v -0.3446 16.9018 3.1662
-v 0.3445 14.0277 3.5453
-v 0.3445 16.9018 3.5453
-v 0.3445 14.0277 3.1662
-v 0.3445 16.9018 3.1662
-v 3.5160 14.0277 0.3435
-v 3.8951 14.0277 0.3435
-v 3.8951 16.9018 0.3435
-v 3.5160 16.9018 0.3435
-v 3.8951 14.0277 -0.3456
-v 3.8951 16.9018 -0.3456
-v 3.5160 14.0277 -0.3456
-v 3.5160 16.9018 -0.3456
-v 0.0000 8.6187 2.3766
-v 0.4715 8.6467 2.3766
-v 0.4598 9.7167 2.3896
-v -0.0117 10.0591 2.3896
-v 0.8403 8.5183 2.4160
-v 0.8403 8.5183 2.3077
-v 0.8403 8.6724 2.3077
-v 0.8403 8.6724 2.4160
-v 0.7068 9.8138 2.4290
-v 0.7068 9.8138 2.3207
-v -0.0117 10.3117 2.3207
-v -0.0117 10.3117 2.4290
-v -0.8403 8.6724 2.4160
-v -0.8403 8.6724 2.3077
-v -0.8403 8.5183 2.3077
-v -0.8403 8.5183 2.4160
-v -0.7186 8.5183 2.4160
-v -0.7186 8.5183 2.3077
-v -0.0000 8.4646 2.3077
-v -0.0000 8.4646 2.4160
-v 0.7185 8.5183 2.5347
-v 0.7185 8.6724 2.5347
-v 0.4715 8.6467 2.5347
-v 0.4598 9.7167 2.4290
-v -0.0117 10.0591 2.4290
-v -0.7186 8.6724 2.5347
-v -0.7186 8.5183 2.5347
-v -0.4715 8.6567 2.5347
-v -0.0000 8.4646 2.5347
-v -0.0000 8.6187 2.5347
-v -0.4833 9.7167 2.3896
-v -0.4715 8.6567 2.3766
-v -0.7303 9.8138 2.3207
-v -0.7302 9.8138 2.4290
-v 0.7185 8.5183 2.3077
-v 0.7185 8.5183 2.4160
-v -0.4832 9.7167 2.4290
-v 0.4715 8.6467 2.4160
-v -0.4716 8.6567 2.4160
-v -0.0000 8.6187 2.4160
-v -0.7186 8.6724 2.4160
-v -0.7186 8.6724 2.3077
-v 0.7185 8.6724 2.4160
-v 0.7185 8.6724 2.3077
-v 0.8403 8.5183 2.5347
-v 0.8403 8.6724 2.5347
-v -0.8403 8.6724 2.5347
-v -0.8403 8.5183 2.5347
-v 2.6080 8.6187 -0.0010
-v 2.6080 8.6467 -0.4725
-v 2.6210 9.7167 -0.4608
-v 2.6210 10.0591 0.0107
-v 2.6474 8.5183 -0.8413
-v 2.5392 8.5183 -0.8413
-v 2.5392 8.6724 -0.8413
-v 2.6474 8.6724 -0.8413
-v 2.6604 9.8138 -0.7079
-v 2.5522 9.8138 -0.7078
-v 2.5522 10.3117 0.0107
-v 2.6604 10.3117 0.0107
-v 2.6474 8.6724 0.8393
-v 2.5392 8.6724 0.8393
-v 2.5392 8.5183 0.8393
-v 2.6474 8.5183 0.8393
-v 2.6474 8.5183 0.7175
-v 2.5392 8.5183 0.7175
-v 2.5392 8.4646 -0.0010
-v 2.6474 8.4646 -0.0010
-v 2.7661 8.5183 -0.7195
-v 2.7661 8.6724 -0.7195
-v 2.7661 8.6467 -0.4725
-v 2.6604 9.7167 -0.4609
-v 2.6604 10.0591 0.0107
-v 2.7661 8.6724 0.7175
-v 2.7661 8.5183 0.7175
-v 2.7661 8.6567 0.4705
-v 2.7661 8.4646 -0.0010
-v 2.7661 8.6187 -0.0010
-v 2.6210 9.7167 0.4822
-v 2.6080 8.6567 0.4705
-v 2.5522 9.8138 0.7292
-v 2.6604 9.8138 0.7292
-v 2.5392 8.5183 -0.7196
-v 2.6474 8.5183 -0.7195
-v 2.6604 9.7167 0.4822
-v 2.6474 8.6467 -0.4725
-v 2.6474 8.6567 0.4705
-v 2.6474 8.6187 -0.0010
-v 2.6474 8.6724 0.7175
-v 2.5392 8.6724 0.7175
-v 2.6474 8.6724 -0.7195
-v 2.5392 8.6724 -0.7196
-v 2.7661 8.5183 -0.8413
-v 2.7661 8.6724 -0.8413
-v 2.7661 8.6724 0.8393
-v 2.7661 8.5183 0.8393
-v -2.6159 8.6187 -0.0010
-v -2.6159 8.6467 0.4705
-v -2.6289 9.7167 0.4588
-v -2.6289 10.0591 -0.0127
-v -2.6553 8.5183 0.8393
-v -2.5470 8.5183 0.8393
-v -2.5470 8.6724 0.8393
-v -2.6553 8.6724 0.8393
-v -2.6683 9.8138 0.7058
-v -2.5600 9.8138 0.7058
-v -2.5600 10.3117 -0.0127
-v -2.6683 10.3117 -0.0127
-v -2.6553 8.6724 -0.8413
-v -2.5470 8.6724 -0.8413
-v -2.5470 8.5183 -0.8413
-v -2.6553 8.5183 -0.8413
-v -2.6553 8.5183 -0.7195
-v -2.5470 8.5183 -0.7195
-v -2.5470 8.4646 -0.0010
-v -2.6553 8.4646 -0.0010
-v -2.7740 8.5183 0.7175
-v -2.7740 8.6724 0.7175
-v -2.7740 8.6467 0.4705
-v -2.6683 9.7167 0.4589
-v -2.6683 10.0591 -0.0127
-v -2.7740 8.6724 -0.7195
-v -2.7740 8.5183 -0.7195
-v -2.7740 8.6567 -0.4725
-v -2.7740 8.4646 -0.0010
-v -2.7740 8.6187 -0.0010
-v -2.6289 9.7167 -0.4843
-v -2.6159 8.6567 -0.4725
-v -2.5600 9.8138 -0.7312
-v -2.6683 9.8138 -0.7312
-v -2.5470 8.5183 0.7175
-v -2.6553 8.5183 0.7175
-v -2.6683 9.7167 -0.4842
-v -2.6553 8.6467 0.4705
-v -2.6553 8.6567 -0.4725
-v -2.6553 8.6187 -0.0010
-v -2.6553 8.6724 -0.7195
-v -2.5470 8.6724 -0.7195
-v -2.6553 8.6724 0.7175
-v -2.5470 8.6724 0.7175
-v -2.7740 8.5183 0.8393
-v -2.7740 8.6724 0.8393
-v -2.7740 8.6724 -0.8413
-v -2.7740 8.5183 -0.8413
-v -2.5639 0.0000 -2.3386
-v -2.5639 0.0000 2.3365
-v -2.5639 12.1411 2.3365
-v 2.5639 -0.0000 2.3365
-v 2.5639 12.1411 2.3365
-v 2.5639 -0.0000 -2.3386
-v -3.3222 12.8680 -0.0010
-v -3.3222 12.8680 -2.9994
-v -3.3222 11.9932 -2.9994
-v -3.3222 11.8321 -0.0010
-v -0.0000 12.8680 2.9974
-v -3.3222 12.8680 2.9974
-v -3.3222 11.9932 2.9974
-v -0.0000 11.8320 2.9974
-v 3.3221 12.8680 -0.0010
-v 3.3221 12.8680 2.9974
-v 3.3221 11.9932 2.9974
-v 3.3221 11.8320 -0.0010
-v -0.0000 12.8680 -2.9994
-v 3.3221 12.8680 -2.9994
-v 3.3221 11.9932 -2.9994
-v -0.0000 11.8320 -2.9994
-v -2.5639 11.9932 -2.3386
-v -0.0000 11.8320 -2.3386
-v 2.5639 11.9932 -2.3386
-v 2.5639 11.8321 -0.0010
-v 2.5639 11.9932 2.3365
-v -0.0000 11.8321 2.3365
-v -2.5639 11.9932 2.3365
-v -2.5639 11.8321 -0.0010
-v -2.5639 12.8680 -2.3386
-v -2.5639 12.8680 -0.0010
-v -2.5639 12.8680 2.3365
-v -0.0000 12.8680 2.3365
-v 2.5639 12.8680 2.3365
-v 2.5639 12.8680 -0.0010
-v 2.5639 12.8680 -2.3386
-v -0.0000 12.8680 -2.3386
-v -3.3222 6.6605 -0.0010
-v -3.3222 6.6605 -2.9994
-v -3.3222 5.7858 -2.9994
-v -3.3222 5.6246 -0.0010
-v -0.0000 6.6605 2.9974
-v -3.3222 6.6605 2.9974
-v -3.3222 5.7858 2.9974
-v -0.0000 5.6246 2.9974
-v 3.3221 6.6605 -0.0010
-v 3.3221 6.6605 2.9974
-v 3.3221 5.7858 2.9974
-v 3.3221 5.6246 -0.0010
-v -0.0000 6.6605 -2.9994
-v 3.3221 6.6605 -2.9994
-v 3.3221 5.7858 -2.9994
-v -0.0000 5.6246 -2.9994
-v -2.5639 5.7858 -2.3386
-v -0.0000 5.6246 -2.3386
-v 2.5639 5.7858 -2.3386
-v 2.5639 5.6246 -0.0010
-v 2.5639 5.7858 2.3365
-v -0.0000 5.6246 2.3365
-v -2.5639 5.7858 2.3365
-v -2.5639 5.6246 -0.0010
-v -2.5639 6.6605 -2.3386
-v -2.5639 6.6605 -0.0010
-v -2.5639 6.6605 2.3365
-v -0.0000 6.6605 2.3365
-v 2.5639 6.6605 2.3365
-v 2.5639 6.6605 -0.0010
-v 2.5639 6.6605 -2.3386
-v -0.0000 6.6605 -2.3386
-v -2.6103 9.3882 2.4561
-v -2.6767 9.3882 1.9558
-v -2.9138 6.4859 1.8341
-v -2.9138 6.4859 2.7406
-v -2.9138 12.2904 1.8341
-v -2.9138 12.2904 2.7406
-v -1.9967 6.4859 2.7406
-v -2.0923 9.3882 2.4561
-v -1.9967 11.6821 2.7406
-v -1.9967 6.4859 1.8341
-v -2.1587 9.3882 1.9558
-v -1.9967 11.6821 1.8341
-v -2.6103 9.4353 -2.4582
-v -2.9138 6.5331 -2.7426
-v -2.9138 6.5331 -1.8362
-v -2.6767 9.4353 -1.9578
-v -2.9138 12.3375 -1.8362
-v -2.9138 12.3375 -2.7426
-v -2.0923 9.4353 -2.4581
-v -1.9967 6.5331 -2.7426
-v -1.9967 11.7293 -2.7426
-v -2.1587 9.4353 -1.9578
-v -1.9967 6.5331 -1.8362
-v -1.9967 11.7293 -1.8362
-v -2.6103 2.9022 -2.4582
-v -2.9138 0.0000 -2.7426
-v -2.9138 0.0000 -1.8362
-v -2.6767 2.9022 -1.9578
-v -2.9138 5.8044 -1.8362
-v -2.9138 5.8044 -2.7426
-v -2.0923 2.9022 -2.4581
-v -1.9967 0.0000 -2.7426
-v -1.9967 6.4231 -2.7426
-v -2.1587 2.9022 -1.9578
-v -1.9967 0.0000 -1.8362
-v -1.9967 6.4231 -1.8362
-v 2.6103 9.4517 2.4561
-v 2.9138 6.5495 2.7406
-v 2.9138 6.5495 1.8341
-v 2.6767 9.4517 1.9558
-v 2.9138 12.3539 1.8341
-v 2.9138 12.3539 2.7406
-v 2.0923 9.4517 2.4561
-v 1.9967 6.5495 2.7406
-v 1.9967 11.7456 2.7406
-v 2.1587 9.4517 1.9558
-v 1.9967 6.5495 1.8341
-v 1.9967 11.7456 1.8341
-v 2.6103 2.9022 -2.4581
-v 2.6767 2.9022 -1.9578
-v 2.9138 -0.0000 -1.8362
-v 2.9138 -0.0000 -2.7426
-v 2.9138 5.8044 -1.8362
-v 2.9138 5.8044 -2.7426
-v 1.9967 -0.0000 -2.7426
-v 2.0923 2.9022 -2.4581
-v 1.9967 6.4231 -2.7426
-v 1.9967 -0.0000 -1.8362
-v 2.1587 2.9022 -1.9578
-v 1.9967 6.4231 -1.8362
-v 2.6103 9.4353 -2.4582
-v 2.6767 9.4353 -1.9578
-v 2.9138 6.5331 -1.8362
-v 2.9138 6.5331 -2.7427
-v 2.9138 12.3375 -1.8362
-v 2.9138 12.3375 -2.7427
-v 1.9967 6.5331 -2.7427
-v 2.0923 9.4353 -2.4581
-v 1.9967 11.7293 -2.7427
-v 1.9967 6.5331 -1.8362
-v 2.1587 9.4353 -1.9578
-v 1.9967 11.7293 -1.8362
-v 2.6103 2.9022 2.4561
-v 2.9138 -0.0000 2.7406
-v 2.9138 -0.0000 1.8341
-v 2.6767 2.9022 1.9558
-v 2.9138 5.8044 1.8341
-v 2.9138 5.8044 2.7406
-v 2.0923 2.9022 2.4561
-v 1.9967 -0.0000 2.7406
-v 1.9967 6.4231 2.7406
-v 2.1587 2.9022 1.9558
-v 1.9967 -0.0000 1.8341
-v 1.9967 6.4231 1.8341
-v -2.6103 2.9022 2.4561
-v -2.6767 2.9022 1.9558
-v -2.9138 0.0000 1.8341
-v -2.9138 0.0000 2.7406
-v -2.9138 5.8044 1.8341
-v -2.9138 5.8044 2.7406
-v -1.9967 0.0000 2.7406
-v -2.0923 2.9022 2.4561
-v -1.9967 6.4231 2.7406
-v -1.9967 0.0000 1.8341
-v -2.1587 2.9022 1.9558
-v -1.9967 6.4231 1.8341
-v -1.5453 5.6703 -3.5469
-v -1.5453 7.5835 -3.4309
-v -0.7727 7.5835 -3.4309
-v -0.7727 4.7854 -3.5469
-v -1.5453 9.4968 -3.2987
-v -0.7727 9.4968 -3.2987
-v -1.5453 11.4101 -3.3804
-v -0.7727 11.4101 -3.3804
-v -1.5453 13.3234 -3.5469
-v -0.7727 13.3234 -3.5469
-v -0.0000 7.5835 -3.4309
-v -0.0000 4.2830 -3.5469
-v -0.0000 9.4968 -3.2987
-v -0.0000 11.4101 -3.3804
-v -0.0000 13.3234 -3.5469
-v 0.7726 7.5835 -3.4309
-v 0.7726 4.7854 -3.5469
-v 0.7726 9.4968 -3.2987
-v 0.7726 11.4101 -3.3804
-v 0.7726 13.3234 -3.5469
-v 1.5453 7.5835 -3.4309
-v 1.5453 5.6702 -3.5469
-v 1.5453 9.4968 -3.2987
-v 1.5453 11.4101 -3.3804
-v 1.5453 13.3234 -3.5469
-v 0.0000 23.5750 -0.0000
-v -4.1897 16.4768 -3.9339
-v -4.1897 16.4768 3.9339
-v 4.1897 16.4768 3.9339
-v 4.1897 16.4768 -3.9339
-v -1.2971 3.7738 -2.1572
-v -1.2971 3.7738 -2.6666
-v -1.7173 3.6544 -2.6666
-v -1.7173 3.6544 -2.1572
-v -1.2971 -0.0000 -2.6666
-v -1.2971 3.3171 -2.6666
-v -1.2971 3.3171 -2.4156
-v -1.2971 -0.0000 -2.4156
-v -1.7173 -0.0000 -2.6666
-v -1.7173 3.3171 -2.6666
-v -1.7173 -0.0000 -2.1572
-v -1.7173 3.3171 -2.1572
-v 1.2970 3.7738 -2.6666
-v 1.2970 3.7738 -2.1572
-v 1.7173 3.6544 -2.1572
-v 1.7173 3.6544 -2.6666
-v 1.2970 -0.0000 -2.4156
-v 1.2970 3.3171 -2.4156
-v 1.2970 3.3171 -2.6666
-v 1.2970 -0.0000 -2.6666
-v 1.7173 -0.0000 -2.6666
-v 1.7173 3.3171 -2.6666
-v 1.7173 3.3171 -2.1572
-v 1.7173 -0.0000 -2.1572
-v -0.0000 4.3176 -2.6666
-v -0.0000 4.3176 -2.1572
-v -0.0000 3.7437 -2.6666
-v -0.0000 3.7437 -2.4156
-v -0.0000 -0.0000 -2.4156
-# 518 vertices
-
-vn 0.0000 -0.7408 0.6718
-vn 0.0016 1.0000 -0.0028
-vn -0.0000 0.9024 0.4309
-vn 0.0000 -0.0028 -1.0000
-vn 1.0000 0.0000 -0.0000
-vn 0.4189 -0.8046 0.4210
-vn 0.7071 0.0020 0.7071
-vn -0.0000 1.0000 -0.0000
-vn 0.0000 0.0028 1.0000
-vn 0.6366 -0.7712 0.0024
-vn 0.4322 0.9018 -0.0014
-vn -1.0000 -0.0000 0.0000
-vn 0.1589 -0.0004 -0.9873
-vn -0.9985 0.0039 -0.0555
-vn 0.7071 -0.0029 0.7071
-vn 0.0524 -0.7346 -0.6765
-vn -0.6635 -0.7469 -0.0434
-vn 0.7071 -0.0016 0.7071
-vn -1.0000 0.0014 -0.0007
-vn 1.0000 -0.0014 0.0007
-vn 0.1062 -0.7327 -0.6723
-vn -0.0001 -0.0001 1.0000
-vn -0.0000 0.0001 -1.0000
-vn -0.6920 -0.7204 -0.0452
-vn 0.0000 -0.7408 -0.6718
-vn 0.0016 1.0000 0.0028
-vn -0.0000 0.9024 -0.4309
-vn 0.0000 -0.0028 1.0000
-vn 0.4189 -0.8046 -0.4210
-vn 0.7071 0.0020 -0.7071
-vn -0.0000 1.0000 0.0000
-vn -0.0000 0.0028 -1.0000
-vn 0.6366 -0.7712 -0.0024
-vn 0.4322 0.9018 0.0014
-vn 0.1589 -0.0004 0.9873
-vn -0.9985 0.0039 0.0555
-vn 0.7071 -0.0029 -0.7071
-vn 0.0524 -0.7346 0.6765
-vn -0.6635 -0.7469 0.0434
-vn 0.7071 -0.0016 -0.7071
-vn -1.0000 0.0014 0.0007
-vn 1.0000 -0.0014 -0.0007
-vn 0.1062 -0.7327 0.6723
-vn -0.0001 -0.0001 -1.0000
-vn -0.0000 0.0001 1.0000
-vn -0.6920 -0.7204 0.0452
-vn -0.0000 -0.7408 0.6718
-vn -0.0016 1.0000 -0.0028
-vn 0.0000 0.9024 0.4309
-vn -0.0000 -0.0028 -1.0000
-vn -1.0000 0.0000 0.0000
-vn -0.4189 -0.8046 0.4210
-vn -0.7071 0.0020 0.7071
-vn 0.0000 1.0000 -0.0000
-vn -0.6366 -0.7712 0.0024
-vn -0.4322 0.9018 -0.0014
-vn -0.4321 0.9018 -0.0014
-vn 1.0000 -0.0000 -0.0000
-vn -0.1589 -0.0004 -0.9873
-vn 0.9985 0.0039 -0.0555
-vn -0.7071 -0.0029 0.7071
-vn -0.0524 -0.7346 -0.6765
-vn 0.6635 -0.7469 -0.0434
-vn -0.7071 -0.0016 0.7071
-vn 1.0000 0.0014 -0.0007
-vn -1.0000 -0.0014 0.0007
-vn -0.1062 -0.7327 -0.6723
-vn 0.0001 -0.0001 1.0000
-vn 0.0000 0.0001 -1.0000
-vn 0.6920 -0.7204 -0.0452
-vn -0.0000 -0.7408 -0.6718
-vn -0.0016 1.0000 0.0028
-vn 0.0000 0.9024 -0.4309
-vn -0.0000 -0.0028 1.0000
-vn -0.4189 -0.8046 -0.4210
-vn -0.7071 0.0020 -0.7071
-vn 0.0000 1.0000 0.0000
-vn -0.6366 -0.7712 -0.0024
-vn -0.4321 0.9018 0.0014
-vn -0.4322 0.9018 0.0014
-vn -0.1589 -0.0004 0.9873
-vn 0.9985 0.0039 0.0555
-vn -0.7071 -0.0029 -0.7071
-vn -0.0524 -0.7346 0.6765
-vn 0.6635 -0.7469 0.0434
-vn -0.7071 -0.0016 -0.7071
-vn 1.0000 0.0014 0.0007
-vn -1.0000 -0.0014 -0.0007
-vn -0.1062 -0.7327 0.6723
-vn 0.0001 -0.0001 -1.0000
-vn 0.0000 0.0001 1.0000
-vn 0.6920 -0.7204 0.0452
-vn -0.0000 0.0000 -1.0000
-vn 0.0000 0.0000 1.0000
-vn -0.0035 -0.0104 0.9999
-vn 1.0000 -0.0000 -0.0002
-vn 0.5696 0.8219 -0.0001
-vn -0.0745 -0.9972 0.0000
-vn -0.0000 -0.0000 1.0000
-vn -0.0000 0.0000 1.0000
-vn 0.0033 -0.0104 0.9999
-vn -0.5696 0.8219 0.0001
-vn 0.0745 -0.9972 0.0000
-vn 0.0000 -0.0000 1.0000
-vn -0.9999 -0.0109 0.0008
-vn -0.5875 -0.8092 0.0009
-vn 0.5875 -0.8092 -0.0008
-vn 0.9999 0.0111 -0.0004
-vn 0.0803 0.9968 0.0001
-vn -0.0593 0.9982 -0.0000
-vn -0.0027 -0.0118 0.9999
-vn -0.9999 -0.0102 0.0001
-vn 0.9999 0.0103 -0.0002
-vn 0.0029 -0.0117 0.9999
-vn 1.0000 -0.0000 0.0001
-vn -0.1034 0.9946 0.0000
-vn -0.0593 0.9982 0.0000
-vn 0.0803 0.9968 -0.0000
-vn 0.0634 0.9980 -0.0000
-vn -1.0000 0.0000 0.0001
-vn -0.0000 -1.0000 0.0000
-vn 0.0000 -1.0000 0.0000
-vn 0.0000 -1.0000 -0.0000
-vn -0.0001 0.0000 1.0000
-vn 0.9999 -0.0104 0.0035
-vn -0.0001 0.0000 -1.0000
-vn -0.0001 0.8219 -0.5696
-vn -0.0000 -0.9972 0.0745
-vn 1.0000 -0.0000 0.0000
-vn 0.9999 -0.0104 -0.0034
-vn 0.0001 0.8219 0.5696
-vn 0.0000 -0.9972 -0.0745
-vn 0.0008 -0.0109 0.9999
-vn 0.0008 -0.8092 0.5875
-vn -0.0008 -0.8092 -0.5875
-vn -0.0004 0.0111 -0.9999
-vn 0.0000 0.9968 -0.0803
-vn -0.0000 0.9982 0.0593
-vn 0.9999 -0.0118 0.0027
-vn 0.0001 -0.0102 0.9999
-vn -0.0002 0.0103 -0.9999
-vn 0.9999 -0.0117 -0.0029
-vn 0.0001 -0.0000 -1.0000
-vn 0.0000 0.9946 0.1034
-vn 0.0000 0.9982 0.0593
-vn 0.0000 0.9968 -0.0804
-vn 0.0000 0.9980 -0.0634
-vn 0.0001 -0.0000 1.0000
-vn -0.0000 -0.9972 -0.0745
-vn -0.0000 -1.0000 -0.0000
-vn -0.9999 -0.0104 -0.0035
-vn 0.0002 -0.0000 1.0000
-vn -1.0000 0.0000 -0.0000
-vn -0.9999 -0.0104 0.0033
-vn -0.0008 -0.0109 -0.9999
-vn -0.0009 -0.8092 -0.5875
-vn 0.0007 -0.8092 0.5875
-vn 0.0004 0.0111 0.9999
-vn -0.0001 0.9968 0.0803
-vn 0.0000 0.9982 -0.0593
-vn -0.9999 -0.0118 -0.0027
-vn -0.0001 -0.0102 -0.9999
-vn 0.0002 0.0103 0.9999
-vn -0.9999 -0.0117 0.0029
-vn -0.0001 -0.0000 1.0000
-vn 0.0000 0.9946 -0.1034
-vn 0.0000 0.9968 0.0803
-vn 0.0000 0.9980 0.0634
-vn -1.0000 0.0000 -0.0001
-vn 0.0000 -0.0000 -1.0000
-vn -0.0547 -0.9980 0.0314
-vn -0.0263 -0.9978 -0.0603
-vn 0.0547 -0.9980 -0.0314
-vn 0.0263 -0.9978 0.0603
-vn 0.0547 -0.9980 0.0314
-vn -0.0263 -0.9978 0.0603
-vn -0.0547 -0.9980 -0.0314
-vn 0.0263 -0.9978 -0.0603
-vn -0.9945 0.0939 0.0469
-vn -0.9945 -0.0939 0.0469
-vn 0.0000 0.0976 0.9952
-vn -0.0469 -0.1106 0.9928
-vn 0.9980 0.0430 -0.0471
-vn 0.9974 -0.0543 -0.0471
-vn -0.0000 0.0419 -0.9991
-vn -0.0199 -0.0471 -0.9987
-vn -0.9945 0.0939 -0.0469
-vn -0.9945 -0.0939 -0.0469
-vn 0.0000 0.0976 -0.9952
-vn -0.0469 -0.1106 -0.9928
-vn 0.9980 0.0430 0.0471
-vn 0.9974 -0.0543 0.0471
-vn 0.0000 0.0419 0.9991
-vn -0.0199 -0.0471 0.9987
-vn 0.0375 -0.0870 -0.9955
-vn 0.9983 -0.0354 0.0471
-vn 0.0162 -0.0377 0.9992
-vn 0.9945 0.0939 0.0469
-vn 0.9945 -0.0939 0.0469
-vn -0.0000 0.0976 0.9952
-vn 0.0469 -0.1106 0.9928
-vn -0.9980 0.0430 -0.0471
-vn -0.9974 -0.0543 -0.0471
-vn 0.0199 -0.0471 -0.9987
-vn 0.9945 0.0939 -0.0469
-vn 0.9945 -0.0939 -0.0469
-vn -0.0000 0.0976 -0.9952
-vn -0.0375 -0.0870 -0.9955
-vn -0.9980 0.0430 0.0471
-vn -0.9983 -0.0354 0.0471
-vn -0.0162 -0.0377 0.9992
-vn 0.0469 -0.1106 -0.9928
-vn -0.9974 -0.0543 0.0471
-vn 0.0199 -0.0471 0.9987
-vn -0.0375 -0.0870 0.9955
-vn -0.9983 -0.0354 -0.0471
-vn -0.0162 -0.0377 -0.9992
-vn 0.0375 -0.0870 0.9955
-vn 0.9983 -0.0354 -0.0471
-vn 0.0162 -0.0377 -0.9992
-vn 0.0281 0.0492 -0.9984
-vn 0.0141 0.0591 -0.9982
-vn 0.0101 0.0563 -0.9984
-vn 0.0163 0.0408 -0.9990
-vn -0.0000 0.0132 -0.9999
-vn -0.0000 -0.0647 -0.9979
-vn -0.0000 -0.0867 -0.9962
-vn -0.0000 0.0535 -0.9986
-vn -0.0000 0.0380 -0.9993
-vn -0.0101 0.0563 -0.9984
-vn -0.0163 0.0408 -0.9990
-vn -0.0141 0.0591 -0.9982
-vn -0.0281 0.0492 -0.9984
-vn -0.8612 0.5083 0.0000
-vn 0.0000 0.4847 0.8747
-vn 0.8612 0.5083 -0.0000
-vn -0.0000 0.4847 -0.8747
-vn -0.2731 0.9620 0.0000
-vn 0.2731 0.9620 0.0000
-vn 0.3867 0.9222 0.0000
-vn -0.0000 -0.0000 -1.0000
-vn 0.3124 -0.9499 -0.0000
-vn -0.3867 0.9222 0.0000
-vn -0.3124 -0.9499 0.0000
-# 244 vertex normals
-
-vt 0.4672 0.7287 0.0000
-vt 0.4672 0.6812 0.0000
-vt 0.5381 0.6812 0.0000
-vt 0.5637 0.7287 0.0000
-vt 0.4511 0.6743 0.0000
-vt 0.4498 0.6669 0.0000
-vt 0.5101 0.6669 0.0000
-vt 0.5101 0.6758 0.0000
-vt 0.4531 0.6758 0.0000
-vt 0.6996 0.8663 0.0000
-vt 0.6083 0.8663 0.0000
-vt 0.6083 0.8881 0.0000
-vt 0.6996 0.8881 0.0000
-vt 0.6083 0.9203 0.0000
-vt 0.6996 0.9203 0.0000
-vt 0.6348 0.6259 0.0000
-vt 0.6348 0.6557 0.0000
-vt 0.5033 0.6557 0.0000
-vt 0.5033 0.6259 0.0000
-vt 0.4860 0.7374 0.0000
-vt 0.4587 0.8045 0.0000
-vt 0.4433 0.8046 0.0000
-vt 0.7663 0.6259 0.0000
-vt 0.7905 0.6258 0.0000
-vt 0.7905 0.6557 0.0000
-vt 0.7664 0.6557 0.0000
-vt 0.5578 0.5104 0.0000
-vt 0.6319 0.5104 0.0000
-vt 0.6319 0.6024 0.0000
-vt 0.5578 0.6024 0.0000
-vt 0.4411 0.6748 0.0000
-vt 0.4531 0.7357 0.0000
-vt 0.4411 0.7357 0.0000
-vt 0.5654 0.8042 0.0000
-vt 0.5654 0.7371 0.0000
-vt 0.5169 0.8663 0.0000
-vt 0.5169 0.8881 0.0000
-vt 0.5169 0.9203 0.0000
-vt 0.7344 0.2540 0.0000
-vt 0.7344 0.2807 0.0000
-vt 0.7215 0.2807 0.0000
-vt 0.7215 0.2540 0.0000
-vt 0.7532 0.2524 0.0000
-vt 0.7532 0.2800 0.0000
-vt 0.7370 0.2800 0.0000
-vt 0.7370 0.2524 0.0000
-vt 0.8440 0.5063 0.0000
-vt 0.8440 0.5248 0.0000
-vt 0.8307 0.5248 0.0000
-vt 0.8307 0.5063 0.0000
-vt 0.7344 0.3486 0.0000
-vt 0.7215 0.3486 0.0000
-vt 0.7215 0.3237 0.0000
-vt 0.7344 0.3237 0.0000
-vt 0.7532 0.3506 0.0000
-vt 0.7370 0.3506 0.0000
-vt 0.7370 0.3238 0.0000
-vt 0.7532 0.3238 0.0000
-vt 0.8440 0.5570 0.0000
-vt 0.8307 0.5570 0.0000
-vt 0.8364 0.5997 0.0000
-vt 0.7950 0.5997 0.0000
-vt 0.8096 0.5854 0.0000
-vt 0.8364 0.5608 0.0000
-vt 0.8663 0.5452 0.0000
-vt 0.8798 0.5570 0.0000
-vt 0.8093 0.5451 0.0000
-vt 0.7959 0.5570 0.0000
-vt 0.8620 0.5854 0.0000
-vt 0.8784 0.5997 0.0000
-vt 0.6756 0.2660 0.0000
-vt 0.6505 0.2660 0.0000
-vt 0.6505 0.4622 0.0000
-vt 0.6756 0.4622 0.0000
-vt 0.6058 0.3002 0.0000
-vt 0.6440 0.3002 0.0000
-vt 0.6440 0.4741 0.0000
-vt 0.6058 0.4741 0.0000
-vt 0.6280 0.0055 0.0000
-vt 0.6545 0.0069 0.0000
-vt 0.6548 0.0671 0.0000
-vt 0.6284 0.0865 0.0000
-vt 0.6000 0.2239 0.0000
-vt 0.6163 0.2239 0.0000
-vt 0.6163 0.2472 0.0000
-vt 0.6000 0.2472 0.0000
-vt 0.6822 0.1033 0.0000
-vt 0.6903 0.1033 0.0000
-vt 0.6903 0.1767 0.0000
-vt 0.6822 0.1767 0.0000
-vt 0.5852 0.2472 0.0000
-vt 0.5852 0.2239 0.0000
-vt 0.6098 0.1405 0.0000
-vt 0.6145 0.1405 0.0000
-vt 0.6140 0.1724 0.0000
-vt 0.6093 0.1724 0.0000
-vt 0.6552 0.1246 0.0000
-vt 0.6681 0.1246 0.0000
-vt 0.6659 0.1454 0.0000
-vt 0.6571 0.0825 0.0000
-vt 0.6723 0.0885 0.0000
-vt 0.6279 0.1193 0.0000
-vt 0.6279 0.1037 0.0000
-vt 0.6681 0.2453 0.0000
-vt 0.6552 0.2453 0.0000
-vt 0.6668 0.2246 0.0000
-vt 0.6507 0.1850 0.0000
-vt 0.6636 0.1850 0.0000
-vt 0.6018 0.0674 0.0000
-vt 0.6015 0.0077 0.0000
-vt 0.6903 0.2501 0.0000
-vt 0.6822 0.2501 0.0000
-vt 0.6135 0.2044 0.0000
-vt 0.6089 0.2043 0.0000
-vt 0.5834 0.0885 0.0000
-vt 0.5987 0.0825 0.0000
-vt 0.6955 0.1208 0.0000
-vt 0.6955 0.0105 0.0000
-vt 0.7028 0.0105 0.0000
-vt 0.7028 0.1208 0.0000
-vt 0.7028 0.1808 0.0000
-vt 0.6955 0.1808 0.0000
-vt 0.7028 0.2409 0.0000
-vt 0.6955 0.2409 0.0000
-vt 0.7028 0.3501 0.0000
-vt 0.6955 0.3501 0.0000
-vt 0.6375 0.2580 0.0000
-vt 0.6331 0.2581 0.0000
-vt 0.6322 0.2120 0.0000
-vt 0.6366 0.2119 0.0000
-vt 0.6312 0.1659 0.0000
-vt 0.6356 0.1658 0.0000
-vt 0.5834 0.0179 0.0000
-vt 0.5987 0.0169 0.0000
-vt 0.6903 0.3459 0.0000
-vt 0.6822 0.3459 0.0000
-vt 0.6822 0.0075 0.0000
-vt 0.6903 0.0075 0.0000
-vt 0.6571 0.0163 0.0000
-vt 0.6723 0.0179 0.0000
-vt 0.6242 0.1418 0.0000
-vt 0.6307 0.1417 0.0000
-vt 0.6247 0.1661 0.0000
-vt 0.6256 0.2121 0.0000
-vt 0.6265 0.2583 0.0000
-vt 0.6335 0.2823 0.0000
-vt 0.6270 0.2824 0.0000
-vt 0.6047 0.1405 0.0000
-vt 0.6042 0.1724 0.0000
-vt 0.6038 0.2043 0.0000
-vt 0.6365 0.1297 0.0000
-vt 0.6367 0.1416 0.0000
-vt 0.6305 0.1298 0.0000
-vt 0.6240 0.1300 0.0000
-vt 0.6681 0.1144 0.0000
-vt 0.6552 0.1144 0.0000
-vt 0.6037 0.2097 0.0000
-vt 0.6088 0.2097 0.0000
-vt 0.6135 0.2098 0.0000
-vt 0.6145 0.1351 0.0000
-vt 0.6099 0.1351 0.0000
-vt 0.6048 0.1351 0.0000
-vt 0.6552 0.2555 0.0000
-vt 0.6681 0.2555 0.0000
-vt 0.6272 0.2943 0.0000
-vt 0.6337 0.2942 0.0000
-vt 0.6395 0.2822 0.0000
-vt 0.6397 0.2940 0.0000
-vt 0.1601 0.2593 0.0000
-vt 0.1601 0.0045 0.0000
-vt 0.2454 0.0045 0.0000
-vt 0.2454 0.2590 0.0000
-vt 0.2838 0.5470 0.0000
-vt 0.2838 0.2690 0.0000
-vt 0.1765 0.2690 0.0000
-vt 0.1765 0.5470 0.0000
-vt 0.1150 0.3564 0.0000
-vt 0.1150 0.0538 0.0000
-vt 0.0116 0.0538 0.0000
-vt 0.0116 0.3569 0.0000
-vt 0.0100 0.6667 0.0000
-vt 0.0100 0.3673 0.0000
-vt 0.1291 0.3673 0.0000
-vt 0.1291 0.6667 0.0000
-vt 0.9942 0.1083 0.0000
-vt 0.9942 0.2099 0.0000
-vt 0.9659 0.2099 0.0000
-vt 0.9607 0.1083 0.0000
-vt 0.9942 0.0068 0.0000
-vt 0.9659 0.0068 0.0000
-vt 0.3004 0.5798 0.0000
-vt 0.2911 0.5701 0.0000
-vt 0.2911 0.6124 0.0000
-vt 0.3004 0.6124 0.0000
-vt 0.3004 0.6450 0.0000
-vt 0.2911 0.6547 0.0000
-vt 0.3334 0.6547 0.0000
-vt 0.3334 0.6450 0.0000
-vt 0.3663 0.6450 0.0000
-vt 0.3757 0.6547 0.0000
-vt 0.3757 0.6124 0.0000
-vt 0.3663 0.6124 0.0000
-vt 0.3663 0.5798 0.0000
-vt 0.3757 0.5701 0.0000
-vt 0.3334 0.5701 0.0000
-vt 0.3334 0.5798 0.0000
-vt 0.2876 0.5671 0.0000
-vt 0.2747 0.5537 0.0000
-vt 0.3334 0.5537 0.0000
-vt 0.3334 0.5671 0.0000
-vt 0.3793 0.5671 0.0000
-vt 0.3922 0.5537 0.0000
-vt 0.3922 0.6125 0.0000
-vt 0.3793 0.6125 0.0000
-vt 0.3793 0.6578 0.0000
-vt 0.3922 0.6712 0.0000
-vt 0.3334 0.6712 0.0000
-vt 0.3334 0.6578 0.0000
-vt 0.2876 0.6578 0.0000
-vt 0.2747 0.6712 0.0000
-vt 0.2747 0.6125 0.0000
-vt 0.2876 0.6125 0.0000
-vt 0.9513 0.1060 0.0000
-vt 0.9513 0.0044 0.0000
-vt 0.9230 0.0044 0.0000
-vt 0.9178 0.1060 0.0000
-vt 0.9097 0.1060 0.0000
-vt 0.9097 0.0044 0.0000
-vt 0.8814 0.0044 0.0000
-vt 0.8762 0.1060 0.0000
-vt 0.8814 0.2076 0.0000
-vt 0.9097 0.2076 0.0000
-vt 0.9230 0.2075 0.0000
-vt 0.9513 0.2075 0.0000
-vt 0.8658 0.1132 0.0000
-vt 0.8487 0.1132 0.0000
-vt 0.8445 0.0044 0.0000
-vt 0.8755 0.0044 0.0000
-vt 0.8445 0.2221 0.0000
-vt 0.8755 0.2221 0.0000
-vt 0.7801 0.1104 0.0000
-vt 0.7912 0.0058 0.0000
-vt 0.7576 0.0058 0.0000
-vt 0.7611 0.1104 0.0000
-vt 0.7912 0.2151 0.0000
-vt 0.7576 0.2374 0.0000
-vt 0.7362 0.1124 0.0000
-vt 0.7464 0.0064 0.0000
-vt 0.7139 0.0064 0.0000
-vt 0.7182 0.1124 0.0000
-vt 0.7139 0.2409 0.0000
-vt 0.7464 0.2409 0.0000
-vt 0.8231 0.1080 0.0000
-vt 0.8044 0.1080 0.0000
-vt 0.7986 0.0056 0.0000
-vt 0.8316 0.0056 0.0000
-vt 0.8316 0.2103 0.0000
-vt 0.7986 0.2321 0.0000
-vt 0.3996 0.1076 0.0000
-vt 0.3999 0.1680 0.0000
-vt 0.3755 0.1681 0.0000
-vt 0.3751 0.0799 0.0000
-vt 0.4002 0.2285 0.0000
-vt 0.3758 0.2286 0.0000
-vt 0.4005 0.2888 0.0000
-vt 0.3761 0.2890 0.0000
-vt 0.4008 0.3494 0.0000
-vt 0.3764 0.3495 0.0000
-vt 0.3512 0.1683 0.0000
-vt 0.3507 0.0641 0.0000
-vt 0.3515 0.2287 0.0000
-vt 0.3518 0.2891 0.0000
-vt 0.3521 0.3496 0.0000
-vt 0.3268 0.1684 0.0000
-vt 0.3264 0.0801 0.0000
-vt 0.3271 0.2288 0.0000
-vt 0.3274 0.2892 0.0000
-vt 0.3277 0.3497 0.0000
-vt 0.3025 0.1685 0.0000
-vt 0.3022 0.1081 0.0000
-vt 0.3028 0.2289 0.0000
-vt 0.3031 0.2893 0.0000
-vt 0.3033 0.3498 0.0000
-vt 0.1505 0.9738 0.0000
-vt 0.0042 0.6813 0.0000
-vt 0.2968 0.6813 0.0000
-vt 0.9446 0.3902 0.0000
-vt 0.9268 0.3902 0.0000
-vt 0.9268 0.3744 0.0000
-vt 0.9446 0.3744 0.0000
-vt 0.8974 0.3747 0.0000
-vt 0.8974 0.4922 0.0000
-vt 0.9065 0.4922 0.0000
-vt 0.9065 0.3747 0.0000
-vt 0.9924 0.3882 0.0000
-vt 0.9924 0.5080 0.0000
-vt 0.9766 0.5080 0.0000
-vt 0.9766 0.3882 0.0000
-vt 0.9160 0.3747 0.0000
-vt 0.9160 0.4922 0.0000
-vt 0.9924 0.5202 0.0000
-vt 0.9766 0.5245 0.0000
-vt 0.9160 0.5041 0.0000
-vt 0.8974 0.5041 0.0000
-vt 0.9268 0.4879 0.0000
-vt 0.9446 0.4879 0.0000
-vt 0.9446 0.5038 0.0000
-vt 0.9268 0.5038 0.0000
-vt 0.8789 0.3882 0.0000
-vt 0.8789 0.5080 0.0000
-vt 0.8630 0.5080 0.0000
-vt 0.8630 0.3882 0.0000
-vt 0.8789 0.5245 0.0000
-vt 0.8630 0.5202 0.0000
-vt 0.9268 0.4391 0.0000
-vt 0.9446 0.4391 0.0000
-vt 0.9277 0.5235 0.0000
-vt 0.9277 0.5442 0.0000
-vt 0.9356 0.4391 0.0000
-vt 0.9356 0.3902 0.0000
-vt 0.9356 0.4879 0.0000
-vt 0.4150 0.4926 0.0000
-vt 0.3619 0.5102 0.0000
-vt 0.3617 0.3568 0.0000
-vt 0.4148 0.3567 0.0000
-vt 0.3087 0.4928 0.0000
-vt 0.3085 0.3569 0.0000
-# 327 texture coords
-
-o turret
-g turret
-f 1/1/1 2/2/1 3/3/1
-f 3/3/1 4/4/1 1/1/1
-f 5/5/2 6/6/2 7/7/2
-f 5/5/2 7/7/2 8/8/2
-f 5/5/2 8/8/2 9/9/2
-f 10/10/3 11/11/3 12/12/3
-f 12/12/3 13/13/3 10/10/3
-f 12/12/4 14/14/4 9/15/4
-f 9/15/4 13/13/4 12/12/4
-f 15/16/5 7/17/5 6/18/5
-f 6/18/5 16/19/5 15/16/5
-f 3/20/6 16/21/6 4/22/6
-f 4/23/7 16/24/7 6/25/7
-f 6/25/7 17/26/7 4/23/7
-f 10/27/8 18/28/8 19/29/8
-f 19/29/8 11/30/8 10/27/8
-f 17/31/8 5/5/8 9/9/8
-f 17/31/8 9/9/8 14/32/8
-f 17/31/8 14/32/8 20/33/8
-f 4/23/9 17/26/9 20/17/9
-f 20/17/9 1/16/9 4/23/9
-f 15/34/10 16/21/10 3/20/10
-f 3/20/10 21/35/10 15/34/10
-f 10/36/11 13/37/11 22/12/11
-f 22/12/11 18/11/11 10/36/11
-f 13/37/12 9/38/12 8/14/12
-f 8/14/12 22/12/12 13/37/12
-f 5/39/13 23/40/13 24/41/13
-f 24/41/13 6/42/13 5/39/13
-f 17/43/14 25/44/14 23/45/14
-f 23/45/14 5/46/14 17/43/14
-f 6/47/15 24/48/15 25/49/15
-f 25/49/15 17/50/15 6/47/15
-f 26/51/16 27/52/16 28/53/16
-f 28/53/16 29/54/16 26/51/16
-f 30/55/17 31/56/17 32/57/17
-f 32/57/17 33/58/17 30/55/17
-f 34/59/18 35/60/18 25/49/18
-f 25/49/18 24/48/18 34/59/18
-f 36/61/19 26/62/19 29/63/19
-f 29/63/19 23/64/19 36/61/19
-f 28/65/20 27/66/20 34/59/20
-f 34/59/20 24/48/20 28/65/20
-f 24/41/21 23/40/21 29/54/21
-f 29/54/21 28/53/21 24/41/21
-f 33/67/22 25/49/22 35/60/22
-f 35/60/22 30/68/22 33/67/22
-f 32/69/23 31/70/23 36/61/23
-f 36/61/23 23/64/23 32/69/23
-f 23/45/24 25/44/24 33/58/24
-f 33/58/24 32/57/24 23/45/24
-f 37/3/25 38/2/25 39/1/25
-f 39/1/25 40/4/25 37/3/25
-f 41/5/26 42/9/26 8/8/26
-f 41/5/26 8/8/26 7/7/26
-f 41/5/26 7/7/26 43/6/26
-f 44/12/27 45/11/27 46/10/27
-f 46/10/27 47/13/27 44/12/27
-f 42/15/28 48/14/28 44/12/28
-f 44/12/28 47/13/28 42/15/28
-f 43/18/5 7/17/5 15/16/5
-f 15/16/5 49/19/5 43/18/5
-f 37/20/29 40/22/29 49/21/29
-f 40/23/30 50/26/30 43/25/30
-f 43/25/30 49/24/30 40/23/30
-f 19/29/31 18/28/31 46/27/31
-f 46/27/31 45/30/31 19/29/31
-f 50/31/31 51/33/31 48/32/31
-f 50/31/31 48/32/31 42/9/31
-f 50/31/31 42/9/31 41/5/31
-f 51/17/32 50/26/32 40/23/32
-f 40/23/32 39/16/32 51/17/32
-f 15/34/33 21/35/33 37/20/33
-f 37/20/33 49/21/33 15/34/33
-f 22/12/34 47/37/34 46/36/34
-f 46/36/34 18/11/34 22/12/34
-f 8/14/12 42/38/12 47/37/12
-f 47/37/12 22/12/12 8/14/12
-f 52/41/35 53/40/35 41/39/35
-f 41/39/35 43/42/35 52/41/35
-f 53/45/36 54/44/36 50/43/36
-f 50/43/36 41/46/36 53/45/36
-f 54/49/37 52/48/37 43/47/37
-f 43/47/37 50/50/37 54/49/37
-f 55/53/38 56/52/38 57/51/38
-f 57/51/38 58/54/38 55/53/38
-f 59/57/39 60/56/39 61/55/39
-f 61/55/39 62/58/39 59/57/39
-f 54/49/40 63/60/40 64/59/40
-f 64/59/40 52/48/40 54/49/40
-f 58/63/41 57/62/41 65/61/41
-f 65/61/41 53/64/41 58/63/41
-f 55/65/42 52/48/42 64/59/42
-f 64/59/42 56/66/42 55/65/42
-f 52/41/43 55/53/43 58/54/43
-f 58/54/43 53/40/43 52/41/43
-f 63/60/44 54/49/44 62/67/44
-f 62/67/44 61/68/44 63/60/44
-f 59/69/45 53/64/45 65/61/45
-f 65/61/45 60/70/45 59/69/45
-f 53/45/46 59/57/46 62/58/46
-f 62/58/46 54/44/46 53/45/46
-f 66/3/47 2/2/47 1/1/47
-f 1/1/47 67/4/47 66/3/47
-f 68/5/48 69/9/48 70/8/48
-f 68/5/48 70/8/48 71/7/48
-f 68/5/48 71/7/48 72/6/48
-f 12/12/49 11/11/49 73/10/49
-f 73/10/49 74/13/49 12/12/49
-f 69/15/50 14/14/50 12/12/50
-f 12/12/50 74/13/50 69/15/50
-f 72/18/51 71/17/51 75/16/51
-f 75/16/51 76/19/51 72/18/51
-f 66/20/52 67/22/52 76/21/52
-f 67/23/53 77/26/53 72/25/53
-f 72/25/53 76/24/53 67/23/53
-f 19/29/54 78/28/54 73/27/54
-f 73/27/54 11/30/54 19/29/54
-f 77/31/54 20/33/54 14/32/54
-f 77/31/54 14/32/54 69/9/54
-f 77/31/54 69/9/54 68/5/54
-f 20/17/9 77/26/9 67/23/9
-f 67/23/9 1/16/9 20/17/9
-f 75/34/55 79/35/55 66/20/55
-f 66/20/55 76/21/55 75/34/55
-f 80/12/56 74/37/57 73/36/57
-f 73/36/57 78/11/56 80/12/56
-f 70/14/58 69/38/58 74/37/58
-f 74/37/58 80/12/58 70/14/58
-f 81/41/59 82/40/59 68/39/59
-f 68/39/59 72/42/59 81/41/59
-f 82/45/60 83/44/60 77/43/60
-f 77/43/60 68/46/60 82/45/60
-f 83/49/61 81/48/61 72/47/61
-f 72/47/61 77/50/61 83/49/61
-f 84/53/62 85/52/62 86/51/62
-f 86/51/62 87/54/62 84/53/62
-f 88/57/63 89/56/63 90/55/63
-f 90/55/63 91/58/63 88/57/63
-f 83/49/64 92/60/64 93/59/64
-f 93/59/64 81/48/64 83/49/64
-f 87/63/65 86/62/65 94/61/65
-f 94/61/65 82/64/65 87/63/65
-f 84/65/66 81/48/66 93/59/66
-f 93/59/66 85/66/66 84/65/66
-f 81/41/67 84/53/67 87/54/67
-f 87/54/67 82/40/67 81/41/67
-f 92/60/68 83/49/68 91/67/68
-f 91/67/68 90/68/68 92/60/68
-f 88/69/69 82/64/69 94/61/69
-f 94/61/69 89/70/69 88/69/69
-f 82/45/70 88/57/70 91/58/70
-f 91/58/70 83/44/70 82/45/70
-f 39/1/71 38/2/71 95/3/71
-f 95/3/71 96/4/71 39/1/71
-f 97/5/72 98/6/72 71/7/72
-f 97/5/72 71/7/72 70/8/72
-f 97/5/72 70/8/72 99/9/72
-f 100/10/73 45/11/73 44/12/73
-f 44/12/73 101/13/73 100/10/73
-f 44/12/74 48/14/74 99/15/74
-f 99/15/74 101/13/74 44/12/74
-f 75/16/51 71/17/51 98/18/51
-f 98/18/51 102/19/51 75/16/51
-f 95/20/75 102/21/75 96/22/75
-f 96/23/76 102/24/76 98/25/76
-f 98/25/76 103/26/76 96/23/76
-f 100/27/77 78/28/77 19/29/77
-f 19/29/77 45/30/77 100/27/77
-f 103/31/77 97/5/77 99/9/77
-f 103/31/77 99/9/77 48/32/77
-f 103/31/77 48/32/77 51/33/77
-f 96/23/32 103/26/32 51/17/32
-f 51/17/32 39/16/32 96/23/32
-f 75/34/78 102/21/78 95/20/78
-f 95/20/78 79/35/78 75/34/78
-f 100/36/79 101/37/79 80/12/80
-f 80/12/80 78/11/80 100/36/79
-f 101/37/58 99/38/58 70/14/58
-f 70/14/58 80/12/58 101/37/58
-f 97/39/81 104/40/81 105/41/81
-f 105/41/81 98/42/81 97/39/81
-f 103/43/82 106/44/82 104/45/82
-f 104/45/82 97/46/82 103/43/82
-f 98/47/83 105/48/83 106/49/83
-f 106/49/83 103/50/83 98/47/83
-f 107/51/84 108/52/84 109/53/84
-f 109/53/84 110/54/84 107/51/84
-f 111/55/85 112/56/85 113/57/85
-f 113/57/85 114/58/85 111/55/85
-f 115/59/86 116/60/86 106/49/86
-f 106/49/86 105/48/86 115/59/86
-f 117/61/87 107/62/87 110/63/87
-f 110/63/87 104/64/87 117/61/87
-f 109/65/88 108/66/88 115/59/88
-f 115/59/88 105/48/88 109/65/88
-f 105/41/89 104/40/89 110/54/89
-f 110/54/89 109/53/89 105/41/89
-f 114/67/90 106/49/90 116/60/90
-f 116/60/90 111/68/90 114/67/90
-f 113/69/91 112/70/91 117/61/91
-f 117/61/91 104/64/91 113/69/91
-f 104/45/92 106/44/92 114/58/92
-f 114/58/92 113/57/92 104/45/92
-f 118/71/58 119/72/58 120/73/58
-f 120/73/58 121/74/58 118/71/58
-f 119/75/93 122/76/93 123/77/93
-f 123/77/93 120/78/93 119/75/93
-f 122/72/51 124/71/51 125/74/51
-f 125/74/51 123/73/51 122/72/51
-f 126/71/93 127/72/93 128/73/93
-f 128/73/93 129/74/93 126/71/93
-f 127/75/51 130/76/51 131/77/51
-f 131/77/51 128/78/51 127/75/51
-f 130/72/94 132/71/94 133/74/94
-f 133/74/94 131/73/94 130/72/94
-f 134/71/51 135/72/51 136/73/51
-f 136/73/51 137/74/51 134/71/51
-f 135/75/94 138/76/94 139/77/94
-f 139/77/94 136/78/94 135/75/94
-f 138/72/58 140/71/58 141/74/58
-f 141/74/58 139/73/58 138/72/58
-f 142/71/94 143/72/94 144/73/94
-f 144/73/94 145/74/94 142/71/94
-f 143/75/58 146/76/58 147/77/58
-f 147/77/58 144/78/58 143/75/58
-f 146/72/93 148/71/93 149/74/93
-f 149/74/93 147/73/93 146/72/93
-f 150/79/95 151/80/95 152/81/95
-f 152/81/95 153/82/95 150/79/95
-f 154/83/96 155/84/96 156/85/96
-f 156/85/96 157/86/96 154/83/96
-f 158/87/97 159/88/97 160/89/97
-f 160/89/97 161/90/97 158/87/97
-f 162/86/51 163/91/51 164/92/51
-f 164/92/51 165/83/51 162/86/51
-f 166/93/98 167/94/98 168/95/98
-f 168/95/98 169/96/98 166/93/98
-f 170/97/99 171/98/99 172/99/99
-f 173/100/99 158/101/99 161/102/99
-f 161/102/99 174/103/99 173/100/99
-f 175/104/100 176/105/100 177/106/100
-f 177/106/99 176/105/99 178/107/99
-f 178/107/99 179/108/99 177/106/99
-f 150/79/101 153/82/101 180/109/101
-f 180/109/101 181/110/101 150/79/101
-f 161/90/102 160/89/102 182/111/102
-f 182/111/102 183/112/102 161/90/102
-f 169/96/103 168/95/103 184/113/103
-f 184/113/103 185/114/103 169/96/103
-f 174/103/100 161/102/100 183/115/100
-f 183/115/100 186/116/100 174/103/100
-f 172/99/104 179/108/104 178/107/104
-f 178/107/104 170/97/104 172/99/104
-f 152/117/105 151/118/105 187/119/105
-f 187/119/105 173/120/105 152/117/105
-f 152/117/106 173/120/106 174/121/106
-f 174/121/106 153/122/106 152/117/106
-f 153/122/107 174/121/107 186/123/107
-f 186/123/107 180/124/107 153/122/107
-f 180/124/108 186/123/108 188/125/108
-f 188/125/108 181/126/108 180/124/108
-f 181/127/109 188/128/109 189/129/109
-f 189/129/109 150/130/109 181/127/109
-f 150/130/110 189/129/110 187/131/110
-f 187/131/110 151/132/110 150/130/110
-f 190/133/111 188/134/111 186/116/111
-f 186/116/111 183/115/111 190/133/111
-f 182/111/112 191/135/112 190/136/112
-f 190/136/112 183/112/112 182/111/112
-f 192/137/113 193/138/113 159/88/113
-f 159/88/113 158/87/113 192/137/113
-f 173/100/114 187/139/114 192/140/114
-f 192/140/114 158/101/114 173/100/114
-f 194/92/115 154/83/115 157/86/115
-f 157/86/115 195/91/115 194/92/115
-f 171/141/116 192/142/116 187/131/116
-f 187/131/116 172/143/116 171/141/116
-f 172/143/117 187/131/117 189/129/117
-f 189/129/117 179/144/117 172/143/117
-f 179/144/118 189/129/118 188/128/118
-f 188/128/118 177/145/118 179/144/118
-f 177/145/119 188/128/119 190/146/119
-f 190/146/119 175/147/119 177/145/119
-f 196/85/120 162/86/120 165/83/120
-f 165/83/120 197/84/120 196/85/120
-f 176/148/98 166/93/98 169/96/98
-f 169/96/98 178/149/98 176/148/98
-f 178/149/103 169/96/103 185/114/103
-f 185/114/103 170/150/103 178/149/103
-f 156/151/54 193/152/54 192/142/54
-f 192/142/54 157/153/54 156/151/54
-f 157/153/8 192/142/8 171/141/8
-f 171/141/8 195/154/8 157/153/8
-f 195/155/104 171/98/104 170/97/104
-f 170/97/104 194/156/104 195/155/104
-f 194/157/121 170/150/121 185/114/121
-f 185/114/121 154/158/121 194/157/121
-f 154/158/121 185/114/121 184/113/121
-f 184/113/121 155/159/121 154/158/121
-f 164/160/122 167/94/122 166/93/122
-f 166/93/122 165/161/122 164/160/122
-f 165/161/123 166/93/123 176/148/123
-f 176/148/123 197/162/123 165/161/123
-f 197/163/124 176/105/124 175/104/124
-f 175/104/124 196/164/124 197/163/124
-f 196/165/54 175/147/54 190/146/54
-f 190/146/54 162/166/54 196/165/54
-f 162/166/54 190/146/54 191/167/54
-f 191/167/54 163/168/54 162/166/54
-f 198/79/125 199/80/125 200/81/125
-f 200/81/125 201/82/125 198/79/125
-f 202/83/126 203/84/126 204/85/126
-f 204/85/126 205/86/126 202/83/126
-f 206/87/127 207/88/127 208/89/127
-f 208/89/127 209/90/127 206/87/127
-f 210/86/104 211/91/104 212/92/104
-f 212/92/104 213/83/104 210/86/104
-f 214/93/128 215/94/128 216/95/128
-f 216/95/128 217/96/128 214/93/128
-f 218/97/58 219/98/58 220/99/58
-f 221/100/129 206/101/129 209/102/129
-f 209/102/129 222/103/129 221/100/129
-f 223/104/129 224/105/129 225/106/129
-f 225/106/58 224/105/58 226/107/58
-f 226/107/58 227/108/58 225/106/58
-f 198/79/130 201/82/130 228/109/130
-f 228/109/130 229/110/130 198/79/130
-f 209/90/131 208/89/131 230/111/131
-f 230/111/131 231/112/131 209/90/131
-f 217/96/132 216/95/132 232/113/132
-f 232/113/132 233/114/132 217/96/132
-f 222/103/58 209/102/58 231/115/58
-f 231/115/58 234/116/58 222/103/58
-f 220/99/5 227/108/5 226/107/5
-f 226/107/5 218/97/5 220/99/5
-f 200/117/133 199/118/133 235/119/133
-f 235/119/133 221/120/133 200/117/133
-f 200/117/134 221/120/134 222/121/134
-f 222/121/134 201/122/134 200/117/134
-f 201/122/135 222/121/135 234/123/135
-f 234/123/135 228/124/135 201/122/135
-f 228/124/136 234/123/136 236/125/136
-f 236/125/136 229/126/136 228/124/136
-f 229/127/137 236/128/137 237/129/137
-f 237/129/137 198/130/137 229/127/137
-f 198/130/138 237/129/138 235/131/138
-f 235/131/138 199/132/138 198/130/138
-f 238/133/139 236/134/139 234/116/139
-f 234/116/139 231/115/139 238/133/139
-f 230/111/140 239/135/140 238/136/140
-f 238/136/140 231/112/140 230/111/140
-f 240/137/141 241/138/141 207/88/141
-f 207/88/141 206/87/141 240/137/141
-f 221/100/142 235/139/142 240/140/142
-f 240/140/142 206/101/142 221/100/142
-f 242/92/143 202/83/143 205/86/143
-f 205/86/143 243/91/143 242/92/143
-f 219/141/144 240/142/144 235/131/144
-f 235/131/144 220/143/144 219/141/144
-f 220/143/145 235/131/145 237/129/145
-f 237/129/145 227/144/145 220/143/145
-f 227/144/146 237/129/146 236/128/146
-f 236/128/146 225/145/146 227/144/146
-f 225/145/147 236/128/147 238/146/147
-f 238/146/147 223/147/147 225/145/147
-f 244/85/148 210/86/148 213/83/148
-f 213/83/148 245/84/148 244/85/148
-f 224/148/128 214/93/128 217/96/128
-f 217/96/128 226/149/128 224/148/128
-f 226/149/149 217/96/149 233/114/149
-f 233/114/149 218/150/149 226/149/149
-f 204/151/8 241/152/8 240/142/8
-f 240/142/8 205/153/8 204/151/8
-f 205/153/8 240/142/8 219/141/8
-f 219/141/8 243/154/8 205/153/8
-f 243/155/58 219/98/58 218/97/58
-f 218/97/58 242/156/58 243/155/58
-f 242/157/121 218/150/121 233/114/121
-f 233/114/121 202/158/121 242/157/121
-f 202/158/122 233/114/122 232/113/122
-f 232/113/122 203/159/122 202/158/122
-f 212/160/121 215/94/121 214/93/121
-f 214/93/121 213/161/121 212/160/121
-f 213/161/150 214/93/150 224/148/150
-f 224/148/150 245/162/150 213/161/150
-f 245/163/115 224/105/115 223/104/115
-f 223/104/115 244/164/115 245/163/115
-f 244/165/54 223/147/54 238/146/54
-f 238/146/54 210/166/54 244/165/54
-f 210/166/54 238/146/54 239/167/54
-f 239/167/54 211/168/54 210/166/54
-f 246/79/151 247/80/151 248/81/151
-f 248/81/151 249/82/151 246/79/151
-f 250/83/152 251/84/152 252/85/152
-f 252/85/152 253/86/152 250/83/152
-f 254/87/131 255/88/131 256/89/131
-f 256/89/131 257/90/131 254/87/131
-f 258/86/93 259/91/93 260/92/93
-f 260/92/93 261/83/93 258/86/93
-f 262/93/149 263/94/149 264/95/149
-f 264/95/149 265/96/149 262/93/149
-f 266/97/51 267/98/51 268/99/51
-f 269/100/12 254/101/12 257/102/12
-f 257/102/12 270/103/12 269/100/12
-f 271/104/153 272/105/153 273/106/153
-f 273/106/12 272/105/12 274/107/12
-f 274/107/12 275/108/12 273/106/12
-f 246/79/154 249/82/154 276/109/154
-f 276/109/154 277/110/154 246/79/154
-f 257/90/127 256/89/127 278/111/127
-f 278/111/127 279/112/127 257/90/127
-f 265/96/128 264/95/128 280/113/128
-f 280/113/128 281/114/128 265/96/128
-f 270/103/12 257/102/12 279/115/12
-f 279/115/12 282/116/12 270/103/12
-f 268/99/51 275/108/51 274/107/51
-f 274/107/51 266/97/51 268/99/51
-f 248/117/155 247/118/155 283/119/155
-f 283/119/155 269/120/155 248/117/155
-f 248/117/156 269/120/156 270/121/156
-f 270/121/156 249/122/156 248/117/156
-f 249/122/157 270/121/157 282/123/157
-f 282/123/157 276/124/157 249/122/157
-f 276/124/158 282/123/158 284/125/158
-f 284/125/158 277/126/158 276/124/158
-f 277/127/159 284/128/159 285/129/159
-f 285/129/159 246/130/159 277/127/159
-f 246/130/160 285/129/160 283/131/160
-f 283/131/160 247/132/160 246/130/160
-f 286/133/161 284/134/161 282/116/161
-f 282/116/161 279/115/161 286/133/161
-f 278/111/162 287/135/162 286/136/162
-f 286/136/162 279/112/162 278/111/162
-f 288/137/163 289/138/163 255/88/163
-f 255/88/163 254/87/163 288/137/163
-f 269/100/164 283/139/164 288/140/164
-f 288/140/164 254/101/164 269/100/164
-f 290/92/165 250/83/165 253/86/165
-f 253/86/165 291/91/165 290/92/165
-f 267/141/166 288/142/166 283/131/166
-f 283/131/166 268/143/166 267/141/166
-f 268/143/160 283/131/160 285/129/160
-f 285/129/160 275/144/160 268/143/160
-f 275/144/167 285/129/167 284/128/167
-f 284/128/167 273/145/167 275/144/167
-f 273/145/168 284/128/168 286/146/168
-f 286/146/168 271/147/168 273/145/168
-f 292/85/126 258/86/126 261/83/126
-f 261/83/126 293/84/126 292/85/126
-f 272/148/149 262/93/149 265/96/149
-f 265/96/149 274/149/149 272/148/149
-f 274/149/128 265/96/128 281/114/128
-f 281/114/128 266/150/128 274/149/128
-f 252/151/54 289/152/54 288/142/54
-f 288/142/54 253/153/54 252/151/54
-f 253/153/54 288/142/54 267/141/54
-f 267/141/54 291/154/54 253/153/54
-f 291/155/51 267/98/51 266/97/51
-f 266/97/51 290/156/51 291/155/51
-f 290/157/123 266/150/123 281/114/123
-f 281/114/123 250/158/123 290/157/123
-f 250/158/121 281/114/121 280/113/121
-f 280/113/121 251/159/121 250/158/121
-f 260/160/121 263/94/121 262/93/121
-f 262/93/121 261/161/121 260/160/121
-f 261/161/121 262/93/121 272/148/121
-f 272/148/121 293/162/121 261/161/121
-f 293/163/169 272/105/169 271/104/169
-f 271/104/169 292/164/169 293/163/169
-f 292/165/54 271/147/54 286/146/54
-f 286/146/54 258/166/54 292/165/54
-f 258/166/54 286/146/54 287/167/54
-f 287/167/54 259/168/54 258/166/54
-f 95/169/51 294/170/51 295/171/51
-f 295/171/51 296/172/51 95/169/51
-f 296/173/94 295/174/94 297/175/94
-f 297/175/94 298/176/94 296/173/94
-f 298/177/58 297/178/58 299/179/58
-f 299/179/58 37/180/58 298/177/58
-f 37/181/170 299/182/170 294/183/170
-f 294/183/170 95/184/170 37/181/170
-f 300/185/51 301/186/51 302/187/51
-f 302/187/51 303/188/51 300/185/51
-f 304/185/100 305/189/100 306/190/100
-f 306/190/100 307/188/100 304/185/100
-f 308/185/58 309/189/58 310/190/58
-f 310/190/58 311/188/58 308/185/58
-f 312/185/93 313/186/93 314/187/93
-f 314/187/93 315/188/93 312/185/93
-f 316/191/171 302/192/171 315/193/171
-f 315/193/171 317/194/171 316/191/171
-f 318/195/172 314/196/172 311/197/172
-f 311/197/172 319/198/172 318/195/172
-f 320/199/173 310/200/173 307/201/173
-f 307/201/173 321/202/173 320/199/173
-f 322/203/174 306/204/174 303/205/174
-f 303/205/174 323/206/174 322/203/174
-f 324/207/54 301/208/54 300/209/54
-f 300/209/54 325/210/54 324/207/54
-f 326/211/8 305/212/8 304/213/8
-f 304/213/8 327/214/8 326/211/8
-f 328/215/77 309/216/77 308/217/77
-f 308/217/77 329/218/77 328/215/77
-f 330/219/77 313/220/77 312/221/77
-f 312/221/77 331/222/77 330/219/77
-f 308/185/58 311/188/58 314/187/58
-f 314/187/58 313/186/58 308/185/58
-f 312/185/93 315/188/93 302/190/93
-f 302/190/93 301/189/93 312/185/93
-f 318/195/175 317/194/175 315/193/175
-f 315/193/175 314/196/175 318/195/175
-f 320/199/176 319/198/176 311/197/176
-f 311/197/176 310/200/176 320/199/176
-f 322/203/177 321/202/177 307/201/177
-f 307/201/177 306/204/177 322/203/177
-f 330/219/54 329/218/54 308/217/54
-f 308/217/54 313/220/54 330/219/54
-f 324/207/31 331/222/31 312/221/31
-f 312/221/31 301/208/31 324/207/31
-f 300/185/51 303/188/51 306/190/51
-f 306/190/51 305/189/51 300/185/51
-f 304/185/94 307/188/94 310/187/94
-f 310/187/94 309/186/94 304/185/94
-f 316/191/178 323/206/178 303/205/178
-f 303/205/178 302/192/178 316/191/178
-f 326/211/77 325/210/77 300/209/77
-f 300/209/77 305/212/77 326/211/77
-f 328/215/77 327/214/77 304/213/77
-f 304/213/77 309/216/77 328/215/77
-f 332/185/51 333/186/51 334/187/51
-f 334/187/51 335/188/51 332/185/51
-f 336/223/94 337/224/94 338/225/94
-f 338/225/94 339/226/94 336/223/94
-f 340/227/58 341/228/58 342/229/58
-f 342/229/58 343/230/58 340/227/58
-f 344/185/93 345/186/93 346/187/93
-f 346/187/93 347/188/93 344/185/93
-f 348/191/171 334/192/171 347/193/171
-f 347/193/171 349/194/171 348/191/171
-f 350/195/172 346/196/172 343/197/172
-f 343/197/172 351/198/172 350/195/172
-f 352/199/173 342/200/173 339/201/173
-f 339/201/173 353/202/173 352/199/173
-f 354/203/174 338/204/174 335/205/174
-f 335/205/174 355/206/174 354/203/174
-f 356/207/54 333/208/54 332/209/54
-f 332/209/54 357/210/54 356/207/54
-f 358/211/8 337/212/8 336/213/8
-f 336/213/8 359/214/8 358/211/8
-f 360/215/54 341/216/54 340/217/54
-f 340/217/54 361/218/54 360/215/54
-f 362/219/77 345/220/77 344/221/77
-f 344/221/77 363/222/77 362/219/77
-f 340/227/58 343/230/58 346/231/58
-f 346/231/58 345/232/58 340/227/58
-f 344/185/93 347/188/93 334/190/93
-f 334/190/93 333/189/93 344/185/93
-f 350/195/175 349/194/175 347/193/175
-f 347/193/175 346/196/175 350/195/175
-f 352/199/176 351/198/176 343/197/176
-f 343/197/176 342/200/176 352/199/176
-f 354/203/177 353/202/177 339/201/177
-f 339/201/177 338/204/177 354/203/177
-f 362/219/54 361/218/54 340/217/54
-f 340/217/54 345/220/54 362/219/54
-f 356/207/31 363/222/31 344/221/31
-f 344/221/31 333/208/31 356/207/31
-f 332/185/51 335/188/51 338/190/51
-f 338/190/51 337/189/51 332/185/51
-f 336/223/94 339/226/94 342/233/94
-f 342/233/94 341/234/94 336/223/94
-f 348/191/178 355/206/178 335/205/178
-f 335/205/178 334/192/178 348/191/178
-f 358/211/77 357/210/77 332/209/77
-f 332/209/77 337/212/77 358/211/77
-f 360/215/54 359/214/54 336/213/54
-f 336/213/54 341/216/54 360/215/54
-f 364/235/179 365/236/179 366/237/179
-f 366/237/179 367/238/179 364/235/179
-f 368/239/180 365/236/180 364/235/180
-f 364/235/180 369/240/180 368/239/180
-f 364/241/181 367/242/181 370/243/181
-f 370/243/181 371/244/181 364/241/181
-f 369/245/182 364/241/182 371/244/182
-f 371/244/182 372/246/182 369/245/182
-f 371/247/183 370/248/183 373/249/183
-f 373/249/183 374/250/183 371/247/183
-f 375/251/184 372/252/184 371/247/184
-f 371/247/184 374/250/184 375/251/184
-f 365/253/185 374/254/185 373/255/185
-f 373/255/185 366/256/185 365/253/185
-f 368/257/186 375/258/186 374/254/186
-f 374/254/186 365/253/186 368/257/186
-f 376/235/187 377/238/187 378/237/187
-f 378/237/187 379/236/187 376/235/187
-f 380/239/188 381/240/188 376/235/188
-f 376/235/188 379/236/188 380/239/188
-f 376/241/189 382/244/189 383/243/189
-f 383/243/189 377/242/189 376/241/189
-f 381/245/190 384/246/190 382/244/190
-f 382/244/190 376/241/190 381/245/190
-f 382/247/191 385/250/191 386/249/191
-f 386/249/191 383/248/191 382/247/191
-f 387/251/192 385/250/192 382/247/192
-f 382/247/192 384/252/192 387/251/192
-f 379/253/193 378/256/193 386/255/193
-f 386/255/193 385/254/193 379/253/193
-f 380/257/194 379/253/194 385/254/194
-f 385/254/194 387/258/194 380/257/194
-f 388/235/187 389/238/187 390/237/187
-f 390/237/187 391/236/187 388/235/187
-f 392/239/188 393/240/188 388/235/188
-f 388/235/188 391/236/188 392/239/188
-f 388/241/189 394/244/189 395/243/189
-f 395/243/189 389/242/189 388/241/189
-f 393/245/195 396/246/195 394/244/195
-f 394/244/195 388/241/195 393/245/195
-f 394/247/191 397/250/191 398/249/191
-f 398/249/191 395/248/191 394/247/191
-f 399/251/196 397/250/196 394/247/196
-f 394/247/196 396/252/196 399/251/196
-f 391/253/193 390/256/193 398/255/193
-f 398/255/193 397/254/193 391/253/193
-f 392/257/197 391/253/197 397/254/197
-f 397/254/197 399/258/197 392/257/197
-f 400/235/198 401/238/198 402/237/198
-f 402/237/198 403/236/198 400/235/198
-f 404/239/199 405/240/199 400/235/199
-f 400/235/199 403/236/199 404/239/199
-f 400/241/200 406/244/200 407/243/200
-f 407/243/200 401/242/200 400/241/200
-f 405/245/201 408/246/201 406/244/201
-f 406/244/201 400/241/201 405/245/201
-f 406/247/202 409/250/202 410/249/202
-f 410/249/202 407/248/202 406/247/202
-f 411/251/203 409/250/203 406/247/203
-f 406/247/203 408/252/203 411/251/203
-f 403/253/185 402/256/185 410/255/185
-f 410/255/185 409/254/185 403/253/185
-f 404/257/204 403/253/204 409/254/204
-f 409/254/204 411/258/204 404/257/204
-f 412/235/205 413/236/205 414/237/205
-f 414/237/205 415/238/205 412/235/205
-f 416/239/206 413/236/206 412/235/206
-f 412/235/206 417/240/206 416/239/206
-f 412/241/207 415/242/207 418/243/207
-f 418/243/207 419/244/207 412/241/207
-f 417/245/208 412/241/208 419/244/208
-f 419/244/208 420/246/208 417/245/208
-f 419/247/209 418/248/209 421/249/209
-f 421/249/209 422/250/209 419/247/209
-f 423/251/210 420/252/210 419/247/210
-f 419/247/210 422/250/210 423/251/210
-f 413/253/193 422/254/193 421/255/193
-f 421/255/193 414/256/193 413/253/193
-f 416/257/211 423/258/211 422/254/211
-f 422/254/211 413/253/211 416/257/211
-f 424/235/205 425/236/205 426/237/205
-f 426/237/205 427/238/205 424/235/205
-f 428/239/206 425/236/206 424/235/206
-f 424/235/206 429/240/206 428/239/206
-f 424/241/207 427/242/207 430/243/207
-f 430/243/207 431/244/207 424/241/207
-f 429/245/212 424/241/212 431/244/212
-f 431/244/212 432/246/212 429/245/212
-f 431/247/209 430/248/209 433/249/209
-f 433/249/209 434/250/209 431/247/209
-f 435/251/213 432/252/213 431/247/213
-f 431/247/213 434/250/213 435/251/213
-f 425/253/193 434/254/193 433/255/193
-f 433/255/193 426/256/193 425/253/193
-f 428/257/214 435/258/214 434/254/214
-f 434/254/214 425/253/214 428/257/214
-f 436/235/198 437/238/198 438/237/198
-f 438/237/198 439/236/198 436/235/198
-f 440/239/199 441/240/199 436/235/199
-f 436/235/199 439/236/199 440/239/199
-f 436/241/200 442/244/200 443/243/200
-f 443/243/200 437/242/200 436/241/200
-f 441/245/215 444/246/215 442/244/215
-f 442/244/215 436/241/215 441/245/215
-f 442/247/202 445/250/202 446/249/202
-f 446/249/202 443/248/202 442/247/202
-f 447/251/216 445/250/216 442/247/216
-f 442/247/216 444/252/216 447/251/216
-f 439/253/185 438/256/185 446/255/185
-f 446/255/185 445/254/185 439/253/185
-f 440/257/217 439/253/217 445/254/217
-f 445/254/217 447/258/217 440/257/217
-f 448/235/179 449/236/179 450/237/179
-f 450/237/179 451/238/179 448/235/179
-f 452/239/180 449/236/180 448/235/180
-f 448/235/180 453/240/180 452/239/180
-f 448/241/181 451/242/181 454/243/181
-f 454/243/181 455/244/181 448/241/181
-f 453/245/218 448/241/218 455/244/218
-f 455/244/218 456/246/218 453/245/218
-f 455/247/183 454/248/183 457/249/183
-f 457/249/183 458/250/183 455/247/183
-f 459/251/219 456/252/219 455/247/219
-f 455/247/219 458/250/219 459/251/219
-f 449/253/185 458/254/185 457/255/185
-f 457/255/185 450/256/185 449/253/185
-f 452/257/220 459/258/220 458/254/220
-f 458/254/220 449/253/220 452/257/220
-f 460/259/221 461/260/222 462/261/223
-f 462/261/223 463/262/224 460/259/221
-f 461/260/222 464/263/225 465/264/225
-f 465/264/225 462/261/223 461/260/222
-f 464/263/225 466/265/226 467/266/226
-f 467/266/226 465/264/225 464/263/225
-f 466/265/226 468/267/227 469/268/227
-f 469/268/227 467/266/226 466/265/226
-f 463/262/224 462/261/223 470/269/228
-f 470/269/228 471/270/229 463/262/224
-f 462/261/223 465/264/225 472/271/225
-f 472/271/225 470/269/228 462/261/223
-f 465/264/225 467/266/226 473/272/226
-f 473/272/226 472/271/225 465/264/225
-f 467/266/226 469/268/227 474/273/227
-f 474/273/227 473/272/226 467/266/226
-f 471/270/229 470/269/228 475/274/230
-f 475/274/230 476/275/231 471/270/229
-f 470/269/228 472/271/225 477/276/225
-f 477/276/225 475/274/230 470/269/228
-f 472/271/225 473/272/226 478/277/226
-f 478/277/226 477/276/225 472/271/225
-f 473/272/226 474/273/227 479/278/227
-f 479/278/227 478/277/226 473/272/226
-f 476/275/231 475/274/230 480/279/232
-f 480/279/232 481/280/233 476/275/231
-f 475/274/230 477/276/225 482/281/225
-f 482/281/225 480/279/232 475/274/230
-f 477/276/225 478/277/226 483/282/226
-f 483/282/226 482/281/225 477/276/225
-f 478/277/226 479/278/227 484/283/227
-f 484/283/227 483/282/226 478/277/226
-f 485/284/234 486/285/234 487/286/234
-f 485/284/235 487/285/235 488/286/235
-f 485/284/236 488/285/236 489/286/236
-f 485/284/237 489/285/237 486/286/237
-f 490/287/238 491/288/238 492/289/238
-f 492/289/238 493/290/238 490/287/238
-f 494/291/58 495/292/58 496/293/58
-f 496/293/58 497/294/58 494/291/58
-f 498/295/93 499/296/93 495/297/93
-f 495/297/93 494/298/93 498/295/93
-f 500/299/153 501/300/153 499/292/153
-f 499/292/153 498/291/153 500/299/153
-f 492/301/93 491/302/93 495/297/93
-f 495/297/93 499/296/93 492/301/93
-f 493/303/153 492/304/153 499/292/153
-f 499/292/153 501/300/153 493/303/153
-f 502/305/239 503/306/239 504/307/239
-f 504/307/239 505/308/239 502/305/239
-f 506/294/153 507/293/153 508/292/153
-f 508/292/153 509/291/153 506/294/153
-f 510/291/129 511/292/129 512/300/129
-f 512/300/129 513/299/129 510/291/129
-f 509/309/93 508/310/93 511/311/93
-f 511/311/93 510/312/93 509/309/93
-f 505/304/129 504/303/129 512/300/129
-f 512/300/129 511/292/129 505/304/129
-f 502/313/93 505/314/93 511/311/93
-f 511/311/93 508/310/93 502/313/93
-f 502/305/240 514/315/77 515/316/77
-f 515/316/77 503/306/240 502/305/240
-f 508/310/93 516/317/241 514/318/241
-f 514/318/241 502/313/93 508/310/93
-f 516/315/242 517/319/242 496/320/242
-f 496/320/242 495/288/242 516/315/242
-f 491/288/243 490/287/243 515/316/77
-f 515/316/77 514/315/77 491/288/243
-f 495/297/170 491/302/170 514/318/241
-f 514/318/241 516/317/241 495/297/170
-f 508/305/244 507/321/244 517/319/244
-f 517/319/244 516/315/244 508/305/244
-f 496/322/170 517/323/170 518/324/170
-f 518/324/170 497/325/170 496/322/170
-f 517/323/93 507/326/93 506/327/93
-f 506/327/93 518/324/93 517/323/93
-# 782 faces
-
-�PNG
-
-
-  " & ( ""((133;:  '# &$ %+,'(!(/;"8)=7###%&('('&(()%#(&(+(&+++-/0.0..010'%0)&1-,0/030.333568686689955868;86:;;<?@=AB?GH?HHAEEHKNQRYYC$B&F(D)H&H'I)L,G+M0 C<U T.P. Z [! S3 V8X6Y8R6Q1U8X7[;[;L4#@>=[<"`"b$ e( h& k)l,d< `>`?h?s+ r-y0`?!@?@G@^@MF!C@>UK$^D2\S(n@bAeEfHiCkHiIsA sLxRfF'kL2e[-nS>yV%uU9i`/lb1uj5}q9CCCDGHEIIHFEHGHLIEJKKFOPMNPGPQMQQNWXNYYQNKPNPUQMRSSUVXVXYYVRXWX]YTZ[[]_`^``a]X{[A`_`gb]bcceghfhike`nicjkkmopmpprlgxrlzvr�H�M�U�Z�[ �c�|�d$�x=�_�i�q�g�q�{*�{!�_C�fJ�kQ�}@�nR�uY�|u�{`�|_�}a�w����)��7��"��$��6��A��F��J��{��M��P��j��S��M��WÉ#ɨ2ʬ@ò]˹aпd��h��l��n��q��v��v������
-�'�eQ#F�Q��M<�B�!�R8�U
-i�8#&��ɦ�em^9���=h`�"h䗙�/(��ڬ�/۳����޾7������|N�)ɒ��;�H��SŪ�|>���S�ƶ�-�Chj��FhJЊ6��A�Z��{�BSZ����BC=������Q�s7�ɤ*)j���*Sja��5�Z\a)��j-����6j�+*$�#M��B��d)J����w������8��\�0�_~��t�>�-���D�nq�[8����R���� [��O������ �O>�&���Dn�×:��9����#�|�` �/5w:;[;;;�7l
-��맀� ��
-;��W���/�C�ņ<f
-N݅
-��e]w0
-
-���ws�p�K/@��2�Kc���6e�E`*�`
-`5�
-`0#c)�����&z�+
-�s*
-`�j�C@�V�W
-�9k�F
-�3�5�)����
-Lc�Rv���ڝ�b
-��
-w�.
-�7')
-��b
-
-��X�A0�2�)
-ଵ
-
-`t-@�p��*
-�!�����
-�><pB-@��j��c
-Ь�I0�u��j:�?��Y�qB��uߏ�K��H�p1
-
-��Ĥ��m�GC�t�0i��g� H7�
-@�T�Z
-�$��W
-�8����ykzpɂ;6�*
-�\��UO - ��
-@{��)
-@���P���6!S
-
-
-&�
-���
-@ �(�) pv@�]�i, �
-@?��NP0��R
-������)
- -
-
-�3�-;wZ;��� �
-�[�8�׏+
-��t|3�P�k����uP��7õ`��b�T,�ff��R�\.�A����jP] V�z}-DɿY���+�J4�u�� B�`e�ތ�t�a=\�D�փ��D�3���h�T�eof��|
-"�P�4Q�ri����V_[�y�w!�{��� �x `�p9���_�*מ�
- �3Y���v� 1񟩎P
-��ѧ
-��)�/?���GpN� / ����m�P<ɏ�:
-0�]�a,
-���j��_'P�H��!��E����yT�vu��;a����$�F#|}-��P�bu2@���@�P ��r�y��gv�P<7�!
-��`�>9/y�i`?���
-@S����= w�v6��9p�:p>���xR}�9���.Az���
-@��_�{� {�]Z:\I��]�!�AG`����L���@�ƌ�b�S��� �b��ʱ��JA�����0S�ÿ�F�l��f��#w�����9�2`�}ƭ8^�?�h���J����AԤ^�
-?:��K�d
-<~9
-b���`u��B5d3
-��`8�x�?
-��2���KG���ʺ���� �r�
-@�VSl���
-� ��iO_|���]��# ׮���*?� {@��J d�a�Me쬴 0�
-C�\Ck׺K3X�}rE�k�ȦQB��!&���C�X0�=t����v���۩���Mqq:���%�����2�'�?Wa�__�JM5�<$����.�T2s3�Gٞ��ApCbµ$`"�t�`�����B�0^�/�����{^�|�����z#���Բ9)��BÇ��!@_�
-V/
-d���\�9� Ȍ&��*ٖЙ����~3| 0w9`INc�\��I����NI3
-Xz5���\B��*�l���������.؃�2�9^F
-�Gw@U����l�P�D�;�\eJ0
-ϯ�@�Bp�4 ������ (�S_�
-0�,b{[����3x����֟{g(���Y
-�z�&� � �zÇE�,�髁`� �g�
-�7<�!�!w)��U�𭎃{�I@�g�U�Mk�+Z
-#�~�OO�
-x�
-��&CR"��ʳ���|�ݷ/2�/mL ;)[9p���
-ࣾz�4Ɠ���
-d�6����CI]�8>����Ujp��p������4#�*J1P���>�0Y{����v?�r�q_��S�j�</�lx��|�'�k~�fL5�Y�g���;��� �vA���x�s�
-��$���?���k���>��-&]�������T}��6k*��W1p� �9���L�Nm�s�ְ��?d<��2G2�ȮK�ut���ɵ]Ùh ^���Ύ��q�z#���
-���� �.H ���
-X��Gi
-����Vм@�)�r^� $ �
-��G���ـ�ܰ�vn� &�r��dW���P7�
-`E
-xeaao�u
-{�cL�eO�ir$c����3��L�*[L��6Ɯ�R�����#��Q�&����DQ&��t'޳����ڐMs:�-&y޸B9:yv̞�j�Q�bl� �BwD�����E�۸Č+�j/���X^�����̈́�&���6�Y� �������4&h-�Ӽ���ţq�Z����J%�P��F��h4�
-)X���˗^�x�G?���� ��}k��V9‰`����G���6��P�R�����W���qp%•">�/
-�
- ��� �����M��`���hp��Ac3�2À����
-#c
-��p�Z a�OҲ����N @�p=��_[�_�
-j([�5C!�0�vL�'���ߦ2 pA�)-3�]�>'��! ����b��g��O�|y~�T���)�˥�R�<Y��B�E���u'N���_�kb����qX����$.Uq�g�W.��
-a>�i�$��'�����1�@x�7n0���gz��r�[˾�X
-ߑ�_�h�
-�'�y{����ɭP�}�M��~�p5��@�P;�A0P �������mD�pc#NVy�_�z����E`�뜃2�}���)��'a���n�R� _ ��YoZ��4���D)\��2XO.^�q�;��| �r�G}��/.>�����R�����`���c"��Xȟ�Ž�QB'>��%�����ÀD�V���Մ0
-x�X���&��(��k����קq�3u�ZԈ�p�}o��
-v p����Dڬ���3Z�Oh�e�x�@�&��"K��a*����L��g
-��Ր�/��
-�@
-�Ǣ._֩�f�ο��B^'�I��$�B��36�_�E�����������,�����
-0p,��?
-���ǽѠG
-0jw*Ň��L �'w?��� �_�uǕ��W�Lw�.�������dݣܒ�˾z7�F ��
-�ȑ~���p�Q�U|=�� 0�O��c
- ���qz�4����U@FC���g���'�*�z=��y�
-ʻ���$&�g�Dɍ#�+d��� �Y�A��W��b�� ��Д��Y�����Z&����,����Xsyd��O�77]��Q0Ұ��_��_x7�!� �Y�G ��{ Gf ������O���e�s��r�,����,���6����J�b�ʘF�������D<6U�}�_���r3�lr۰षj�
-�O���#���;~�u��;|��z���9T@�c����GY��q�|�(>�M�����f|8+���w�������BqH-����Y��n"�1�x����e��}&@\�M�\
-��n7@��2�&��X
-~������h�i:�U誻i�J� 8�~)�+ 8�b��"��9�Ҟ�K�Oh�gDw� ~k��*ƞI����k mA���э���Gz�M&��ؠ����-�J5L���B p�v
-K������� �s � 5#¶|�Bc�]�>�v�
-hw:(l��:m� ����F���S[7A��
-@t&tR��a87��'��8�Zf7�'�I�
-y9ss�η��m؇ =��Qn��UIr��g"�
-���
-�3l�z` @�� "�� ����_����Eq���f��o�'�X�
-(,noC
-�� �����Q�6��������� �$:���/�>@ގ�$J�8��Q�)��Է�&�f|[�����(�����כ�
-��k�
-w63�3��o���G#��j�\�s
-��"_�f��aX �����π��7{�Q����E����g%��`���S��̠��]t���m�C�܇���=�����8�
-㠢�����&]k���N
-���ى|N'�B�FB�0����Ĝ}�����`J�X�3^,j�����Ѥ�{�"���F%�]�0�_ȟ,�v���؟�U�Y���+<M�k��O�
-�Pn�ߪ�
-��tR^�Md�l� c��i*�;�t�v���ӟ���p| %~.�mŲ
-��!6��1
-
-�/e��"@�
-����T
-��Z
- �H�
-
-
-�
-@F�D0�M��� �S
-��zl��h�� �㫗�
-
-��;v���
-�������?���^y�Q�
-
-�PR!@`���
-�:
-#��� ��>��Xϟ���%�+>� �?��2��1�`|n�ǁ�S
-
-�M
-�T�`Bd
-`a��
-�����:k3
- o` ���q�D�cR��ұc`�PX
-���o���D��z)�M��jkE�!Ƣ>�� �ܥK�?�ٻ2>~�*JŢ�
-��\kvAv�d�D(N������@@�^,�a��0��c{���F�G�E
- Zl���|�����j�-���uX���>s18F�ޤ5m4���n��b�荬](��{eoO���pyΟ��7,�gnٟ[E�e|`�"V�,� `�
-��Y�2�v�<�W^��"|�n �0�
-|r$E�|�F �,v��~6��@G �u���� yR�>��h�IBl�6��Õ�7W8�G`=�xx٪ S��#l$��~tT��8����8n� �ō�@g�
-`�:�y�8�B�XX���N�ϯ��"�oc2�U+e�ƞPQ$P�?��Fr�wݫ�'0]�J
-J�b�,���-F�x^G���J��V
- F����O��,#�7�����
-�=`��Π. hom^{�쮾�;p�8(!Ёҧ��*���NV�`%�!ޟ?mG�㘇��w��Qy�Ri�.9�G��B~$��� 88�
-��ryr��
-�܅@[�llT��� 8� Ca�2���.
-�_�|��˘ ^x�M�'8y3�~�0Q��g'�r��DVi)�cW�"̩����Sza�X��ZxA xn��+8>��옗9��t�c���r�7,-�''J3嗗^��Dž���ť����/�ˋ��z��Ju����Q�RH�W�}���I�\~yeiqa,�w��r)!�*Ұ%--�e���SqX²N+��j}e}��N"y�E&���y0�� sl@�Ȋ
-$�͔2탊 �h2�@��4t.[[� "����+ �W�Y��J: �W=�b�$]��Ӈ�k�BH{C|֗�_Ø�O Qٹ~rە�G~��A�l��%k�c_5�����7������u�|s�N��N뼴"����W�|*��Vj�J~�����cv�e_Evʎ !����ܼ�M�(�C�����:O�Xf�88�����̦�ScWX~�R �}}�o��
-`0ˍ�� �
-S�� �)Lտb������-
-������t0��ioz�q kM�\� �/� !(�bW|HpF �\�?���4
-W1b��p�
-,��
-� �c*�ek�n��j#�?,uy(�GI�k�䎿�+n��-�P��ӵm{@��;`���o2��k���<����,#�hS� O.x$�5��pρ@y���l��|R��b%`���z���k6
-��c��P
-#zy&?��ߴK��0Z��gߋ�f�ϼ{�m�웮נ�9� �%5r6`��#�����H;
-
-���0�����A
-��z=\qg��2����W��b%`���z����Q�C����Ȍ���OC���ؚ%�L�.�
-��
-@E
-�X�@���;\?Қ֯��n�����er|��9�Y<_�X�<`
-��D#�������7 �7��$���hh|o�)o�����ϸݬF0�*�o�Xm�3{R��a��1,a��L�Fm̎����'��a?e�_q�U��#clc���X�>��D���v̧���!K�j#����Ϋ��^����Z�V
-�?Ƭt=�0l&a�l<�Í��T����h�=yY��}�
-<�C�Li��eV�����o�|������ϣ��5� [D��yD�+�0��r���o��������!���Gݘ��[��'�&_Ek8�f�l)h
-�y�c�M���1`�A0�/�C�ې:w�)
-���e��{~ܵ*a+�����)��(\�U`��e|J�@��K�_p�ߝw
-^�� !����<J��r��7w0'<jެ7������(*4���6D��f� �a��ڏ��k��
-��u'R��Nܼ��I�| �+Ef�y�`G���ž�Ě8����rLW�k��ՑT����I�X�ךw�no�̽�4cd�dc��9����ڣ�u�J�����8R���a�?�3����� ��b�
-l�v�0- �d��O(U|�p�ܔ�Fph����C���r�0�@���׈�n8��M7i��V:�0
-|��.����i@nڿ0>Ǘ�@��Q R�c����46YA�/
-Iԍ|��t�z>��I79�v�ä����(Bl>~|��m�)� �mx��Ŀ>�X^ � Y���T�H��G��'P�O��ݯP�g�8�z�-$+��q�V cN�x�~p�=���������#��pGB�|�0�?:xB�DA���^ %��������_w�I�A��>�>��`��?���R������*��u��0��@���X
-2�kp �c�������~[�������j��ap�֭���0jŢ�b�h�"�G_J����d5d�!��//%8�ʬ�z���9����9��$���w��p��s2���=Y
-��@O�kn�9�� �0|���ZMx'k�������9���#=�����nm,3 ���(<�7�`�2]1;�њ� ���s���8� g�_�
-PB����ǐۓ�M_�25�3 � ���cS�?C�|��X��4@pl�v�`$k0
-Y�i g��+�Ɗ<7���Y�A�!R�
-�`l�|
-� Ry\������>F�����D� +�L��4�`�
-=$ f��9{�F%
-*!�
-�F`�l��=;( 4����S�
-Q7�nP?��}e��bU4w���* ���?;b<�2�6i������E��?v��F0�
-��'�kA���x�
-��e
-O�G_�R�Ńz�%|�\�l�h�'��0%l���+��b\ �Ue5��
-`WE�R�&\�D�Qxq��#�'��q���B��|��a��~���^��
-�?�B2%O4z�uU���
-�����l������٥!0�8
-�հ+�(�G�؏9���cp� >(Ŭ��C�k^Z�V�
-NJ�C���W��[S�@����`/�0����c���s�">H}�\��)q!-h �
-�<?H ?ؙ�q��u0r�I���@b����� O����o9Hn%��` �n�qR~�t���R󂇋���]��U��D���O�bэ*�4���0DK��p3�|��p&��Dm�2
-r��
-`��ՔR ����
-�����'8J�T 3���75�ӥH�0
-p�$Jp$��I2��s��`G��S��`=$Nq�5h�2��$�M}i?���E��o�KIT�
- ����0���/�;�m��a! ��{�b#�
-�ưv
-VQ+^��{�c�y���c$���>O���5&G��I�Q�}��o����~��}�m��
-���Gc
-��77I�����ހ�����0�Pz9ᅦ=\' =0tVC� dإ�֚�[i Y��,
-�!*���T�̯(��T�,.��_���|+��\�:�zE?���[�:��c��O�E슩E�Z�.z�ޢW^T�2������| �ܨVy�R�0SV|���JG�� L �N��D�h5� �2"3(�����
-��uqм����3�/��BVVn�_^�߼���Ju-�ףG���f��Gk~�T(�q4K �X��*���S���`w� �!��"��nc� X@
-@���v
-��ق���z#�o`��3Z�:;�V
-�Tx W����
-����'[/qF`�� ύC���Z��_���<X��v/4Q�.��E8�b���`̱�)T�yc��<���m�,�2�&���������)�f�! ��2@���K�]��cC LV���w�/�.�Ш��n:��
-�pi���y�`:_^�� ;��B��i
-�
-`F` ���;(�����Ā�����SC��=BI�� �wW�?��D��ޜλO�~0�X�س
- ��v��`;
-
- :��4eb�+�?=ej� 6�Ѱ
-��:���28�� qv�m4�` #c
-f`gow�Gl��&�b��=�����u��ޮ��)*|f v`�U�H��E�׹���m
-��X �����Ko�aO wv���{������֝�$�[[�,�$X ��`wa���Y���[;�- R�#��=��u�z����V��~���E��9؀D�4�c
-��՗�>!GM�LL�yO=��S|ސ����Ԛ���^_�"���4�ZB`��$ ;d��}C��s|�aJԻ�\�H<K�gK�m
->��
-��@��#z�P�8<�Ζ@o���M
-��w�~J��S� ��p����j]�
-�3��^`.V֛)-"_�f��\��V]��^uYn�4Q�<1��ç�r���T�)�
-�����˿>9���0��h_*��)4oQ� �.z~9���Fֺ?�g�W��#�Qfv�t�ª � r�)�&��8�
-����݇�4Xƒ�
-d�)�հ�|9J0MJ5�C����>lt������,EA�Wf�ݻAZ(�Q5H`�Տ���e��}F11~��}r�=�9i��7�v2�u���-�bCH��#�FoDq���Qn�S<8l�h=d$nEɓXFDՒ�u�X]���ʺQYdTv�!�)�u�,(Jh���E{)G�&��pJ
-�N
-�UɂIp0,y���u� �yi�0�'^}1U?�Ņ�U
-]�(�JቫWN�\��}Ff��>:� G�:\��ɸ
-GK�^��V_�3�u�9�h� x݀��K0�|��{uV�����[����M殂�Cj�Ň�㷏ף�1�F�����N��(��4�� :_�%K���>џ��A��d� ����� ��մ�1*!����f+a07Wi�|�D�M�t���E�3����d6�P��H��z6�ᘰ ׮-���7wX�g�Q�߁wG�J򟍁ً�B����3�U�l��
-��_ ٧��v���i
-�Bs���+y.�-1ʤ��ga����B g� ��n�~muR��o&`nι;�fZ훎73d -��l. �vM����p�@H"�����~���g*8���Hi�v�߳�P
- �%yP�0��-ڧ�_�,�X��Q��&����b�H ��y6*@���`��Q�Z��m�ڬ�'��b� Pk?�� PRu;I�C@�x `?-
-��oR%�m; ��px�DXh�lȮ�zb K� �9�~�
-����i��ka w�����@H! ��n�m��8�@��b��y{~f�� ��x���r��?J'z1
-�� ��*����e�D�ra�����.�a
-�x0b��ܵb-�ހ�7����R���^)6 �
-� r߰sA�
-�t�8&���*D;�� �A ���
-X ��]�Q�Q�Iq���
-�n���)�Fj
-|���D�;Ϡ�
-`�� �Q߀���ѐ�Y�� 0g#�["�՝ <�hǤ�$�ϵ�R,��A��aKD3��4
-��Y��ƍ�j[d��-�Z�X�T�+Up�Z,x��+�9DGK]}��cҏ[�U�'U�a�F��0
- E|P�fϰ%KA��|y�A�ۛ�v]a�x1�Ӈ �E������v��x���ÜX\�:�?m
-���/�5���Q��ˆ��
-� �~�ɀB��`��!ԇ=7�:FVLn���VE�����Lb�"dV�I�̎�0Z�ޢR�
-�� z�(����0�p�q+�k��1NY�7��|rɟ��/\��2Y�7?y�����(�����V�0�~����`ا�/G�׳��=B @o��,�z�(
-�I8xK� �,�������o��n�D��?
-���8������0�c��X���n���J"6�d���tD�~���UFB!�/"��7 �Ԉ�K� L�+�I���
-i�<����1�-v�@n*�S-2(��t� q��?�
-�ق �@��{ʨ!NG�K��C�����hH �3�
-��B\\�
-�I��)jWeeC �Ư��0�14�,E O-�����
-2F,��!��Ey
-���2
-_�0�-����"�e�^{M�UK}� 5S[���fh
-� Pz�݄ �-DO���]~B�`%�j
-�3T.?ϣiKYd 2��Ӂ����ݹ�9�͏q���p�`5�������Uy;�;�O�����:k��4
-�,���=`<�}7�>5m���6�l�>�E��Gh0K����\��35N��y�_b��n� �|��^��_ovr\
-���.����P�����������̇�b��wF�o�����}uP!�b�� �
-_w:�G'��m� �
-��mؒ���F��<�����$�mF ���3:����k�*�0
-]���l��a
-`�]�! �M�~;�` ��30�*���
-
-��5�d�8��؟�
-`h �
-@1��
-
-�>_���{ӌ��x Yњ�̰��e�)��f�| ե2�� pۓU{�N��X��&��ry��wHUKa=X���!���'�G����x�� -{����2`�+��pF8
- 0
-�p�8U�̔�/����������-�c��| �T'���b�~]�*8
-�ެ�8����px�߰�;��E{��/� 'p?��*�!(�`ki�M�A�����v�Uj!��2��j��w�V��j9i����
-��
-�TR���\L�)g��Ι��"��f��>�pK�w�Yßi6U�\�#���ST�W\��ĸ?=Ug����u�j�p�Ja �bc\"F��"���#p^���.�vA�W^jon����D����>)���
-i�����66�ƺ}��dLd���&�E2|��lm�m��8�] �(*�����v���X� *
-�O����L1�(������^ ������Ǘ�G|]V�*l�����a8�X��gX
-�3X'Pp���Gz'X�Ag�M��=�ڔ�_�9%Í�0�̂��|ܸq��
-�@�O��┞2�g
-E�/%Q
-�����&�Z��w��f�,�S��_��(PG�
-(J�ȹޕ+EW�_�J�M �rɋ�' ���s����uH��� �3W������v�
- �df�
-�"@
-�q�>�
-�h+�K�
-���Hv
-��m�
-���[���./-���<C�o��:��7�v�X��2
-@f
-��
-��
-`3����
-'�����SG��ٹ8Ko����)
-��T�Z�[��R���;O��ϻ(�����s��~��p�DP��}�bm�\-��`���r�?���]1�.���@*��gG�u��)�c���L�
-�؂��W�-�qJ���V��p�F%�Sy���%�X�FX���U��#�<�� o#�@+��?�Ԙw'���Yh�!4��n��;���;B7嶂��*����
-hG��;;]�ر}�O9^1苖)$
-3�hX�޾8y�H���*�����
-
-�[����,s%I6L4οy
-
-�Ԗ��Q `�����[i��E�� �`��R� �2EL!�bgLp�`=�w�P̵�Rަ��mc�9����6�� .����A�� 0�S��]-!��F��
-�� -`8n���f�������̈́히
-��f�NLL�g������><43P� �3����H�̷����ՙ@
-��1��34(�6���jbt�b"1����%�M�|������k�
-���ry-7��<�j���k��a�W}6R�Q ǗUMB�Ps�Tn��Q�FZ^^.�˚a��Z��e��ݻ�p�j�Do�ڑ��>˵����p&�o��%
-���
-`���Up�SМR
-@0Q
-z^���������*���+M����/�1z�y�B��f'>�0�
-`mU
-���7��#\�Wá�������0�K�UZ�H� ��q�L��bR�}������� I��>��p&Hg�Ў�����gi��ẩ����#��o�v|7yu�+��7t�dF�#6� G5��Wl�5�v��cK��:g���ط��t�?��$���p�|�d_�����q�u�,��92�6�ϭ�4�Hӄ�q�s ֥‹��g�l5潨�]���
-��(
-(u5���m������F�Ѐ�����+� z�y����}��!������8���*�����)� {hȰ�Z�r���<UQ��?"��>���r�� &�5���Q�(q�I�~3}:���Q��V��TP 5��8ҰB9�\iͩ���ޯ@|a ��x����
-*�p����7�\�"*�ԑ.,��/`O���$S��"��9�~ �[�x�%x[y���/[¶YS���������8J��K�V+r�WZ$��hn�+L>���80p��j�?���e1����c[�,�n<���"
-��������$�����sa�E�)��4&��tg�O��n;�6Dԣ�Pm;�&$ki�.�O~�FnK�`��Nq{OR<U�v���Xꮩ�{Gn���'nE����k�3eQR;*S$g��O�/��" H{�N�q���9��ئT�#
-���n+� ��wE
-����:��� ���~g�: �q���z��W��t10@�0�0�C�����:{-Nm
-@ ��t� ��-<��� ��(PR�o����m `!��(� b
-�z�S�6��R
-�h4��qI[į�0K�t��E��MD��`�;X�
-n�
-�"QaaYU�25 �����cuv��3�['�/����?�
-�v
-O �py؀�-O�˜u���Y�@M!I-�67&�������n�T�w�
-�$_���@�����ߔ�^�Ѱ��&���+ ڈ���r��Ml[r�z����$�U�?W��'��Ͻ�'v���6��?�P�J��Ee�Ue��d9���[�-o)���������"�_T
-B����f�
-� �pH���
-'q�l�S��"���Gc{{��Q�mK��L^ x���Wtڕ;+����Ԗ�l���[��nwG��C �
-�/{)��a�
-��Q�D��Jjdk<�8[N�5Dy$�y�m �%��$� ����"
-�$pM�,G�7�u�k]�
-�@:�L�K� ���^���c<����Z(��4�����WZ�SR����4:�y|�$y A[�ω)�9�[�a���'f����\��P:1�QG��������e5^�80�鏡�?�y�����������d-��3h� ����#
-�4��O�be����ή���ann�����|sE�;�������q�øА���MDA8�� E�_ �h\��0��&�Xb�lj>H��9�5#K�wH�`���m�2묩= ���T`���I�g ���g;�s���2�;Y��
-�F�g� P �F3��o�R
-
-@C�*�/0�E��d�|L'QѼ�f�n�
-��\�ШC(W8�b�ݾS
-`ů��Їl]b���oX� �k<d�����f�#�V믛�ګ��PKek��ˋj��� I�q�c��QZ�k8���U�Ϛ�uV��k��,�
-�H��'- X���-��%��B�)6��G���&���kc�W�M;�s��O!
-Qͣ�!:hk�����eo��J�Y��x�yS�z�������k�������Z���uK�� ђ�5NG�
-��c
-��f�+8��|������S "`�aN��!�{�����d�at�/�~�N�U��a��7�>�t]��k�jX��kw�{�_f� �,����U`TV?o{�eA.�`U��K �9�9~��K��/7����;�\Lb
-_P�~KѠ_�
-�0t]h0��(]�j���҆~[�V�YH���L��p-�y���k�h��@J�<���M�P�ע��8�<������b��ן�}��}N[�8}޴��b�|�˂���Br_��4�vl)g�.�ju9J
-�yV%�����X\FN
-7#��$v|!�i(�uo�W/V��f �y%R�'u/�eõ4ZW�$(�M�iT�����1����i&bS
-G�g��
-�a�
-��V]d���[���P�.��� p�rd_��)���yj�ߵ�卅���<��
-�O׿��+�f�
-�H�m�מ
-[�b
-� �*�Y�P�'���2s�
-xs�Zz�Q
-@Հ
-ڨ�p��  ��� ~���(
-����������zF�v���%�@މ����h[>��I��=zt!�@�H�~6b�L m;>���������moxK����;���Ȯ�
-��KrKsL��-tUD��R������+�fXN�����_���rd��5�H:�
-��y
-x�X@Ϧ�3� @ f�
-
-�d;e��G]�>.�i`���f_
-˪d�\n2�y7U�ص���~�Zh��Z֟�6R��՟� �[����lV5�D�7�T�s�����}���嗛��?���U�a5|���a�aX]{���!� ����f3��Z� �x���7�Z}�"�Vg?(��I@�n�zJF��%.UՉ�n�����qު�#t�f��Z��� >Y�����oJ*
-�)s-�Ѳ�Kt�����\9^s�+ҋ -
-e����l�+������6,U�~����2W��ke�)Ӡ�����w�X ��]u��(H
-s��.D�j���
-�ke?���b�����H
-�����
-�����9���4D��k���).�m�M"�:�<u��m��aTE��S�0���!2x�2e���MU_6�B!"���C�:��1�rI6����#��$~�\���\
-�-D
-v�-��eS
-��
-@
-D���R8Z���<��V+w�zq|��o�%2� (���2�wL��� �iƚ����d�6�?�y��y=ۨ�,o���䤋�A���%M����-�����nè����̟����e7��
-n��� �*���ek>m�vG�á
-`�$���8C
- ���k�~.��
-��m`*����j�b
-��r�Q�Zw�P���k�L �J���xu� -W��@:O�%ʉ?��\�L�O�
-%����?��Ꟁ�8Z�}�9Bh�T>8�F񯼍z�h!�7X(ܘ��>�0)
-�Q�wS��
-�c��8ۭ ��z��q~� x��]� \n�B�U*��Rg�+�
-@�����ilԠ(@�
-����5�$�����ٜ�ܭ՞*���TE
-�TZ-�����������±YA�OE�]�}�]�\\/�6 �?�Y��%0�L��?��74L��@�E^��Z7c���_�S������\��6��� �l�����|��=p�R�@�}����:y����E
-�]"����Vc}��1㭕VCՐ~�e��z�)`�9����k�i��
-8�b_ �(�c�����yלv{�ގ���)n�5`;T���WHB�
-vE��
-�J_��u��N^��^$�UWC���76 �1�?�ٶ�}��[P�_��T���!H���['��/5.HFs���,�}�c%��o��Dq_�E��BA�@�bɆ�.���l��fV ���60 � �Q[^���m���A��hJh� � \��m5ƒ Vv�])
-E�(—� ��+ ����~jp΀T� �WV� sƒ��Ś6".
-Y��T'�&�
-j8Z��8y�&>|��aGC�xo�ԝA��Y�tXR��I+��F��)����
- �P���?FV�J����(��� J�6P�<�u���;��Y��� ���f���%����*��JKk�Гף�q�u���F�$ۭ��(5��6�-ﶗ������iH0J�wT20�E
- �0$j��&��6���U�~�kw�n ��'Q���BkH�O���G�~�������G����Bܥ6�*�H���L�WfO4�'�g�� K�c׷�1'���q��f'�X���?$�q-U����� ��' �b�sL��j�5%�&<��0���LH�-ygӓ�8��V
-옹��e��P*�25�٦���c��h� �~P.���6��6�I��9B����4�<wgq��
-m���a�Ks�Y�^[�F���M�9����w�tcRҿG,
-s?�����&� B���z�=�o�Hړ�Y��%�i��З+�����ݲ&��m���C���ȋ��̐���y�2'�~Y�i����f4\ �Z�%㮮z,-k:6��j�������g��J��6���j
-�
-��)��ߣ��S����{�V (�V=_�q�?�:X���|���444�.�c%����n1�����ʊ������&4|ʭˑ���q�S�a�Iǩ�P�|�������f�$*�7Y��ze� � I)��GX(��9,�����%�$q
-
-�,+�"�Ճ�ꎕ��ʪj�ȷ�٨��`S6q����p7���z>��
-C���U�M�����ш� ⺪����<m�(M��.
-PE �yK��ʎ�T��Q�
-'�)��ٵ�����u�q T?�]�3w�ۖ�0� ��U��
-qM"�����l�+��YS�WO��F�hJ��U(t?�u���Dؗ�,D �lS���ߨŠ]����� ��������ӓ�nD� ��KX������������D��w��CM~���)kps���Guk>�W�Ź�h]���-{�
-�d� K��%��� @���+Q���v�J7�0��m �-�j��
- ��~�D��X��h�ݧm� ��N-��S躷��t�;��S�a-z�h����*L����A'�N�=й%�U�+��}���a�1P
-Yх�z�V��b�[E6��6HL�/�@>�_&;x�y�� Ye�{UN|X:��B3�?����hP�M�o���$/��e���.�[/�IJ�2o�X8�Y�f����DI�C��Ѣ���XzJ
-�ؑ_n��Q3�W���㹈
-��Ւځ*S�k@ ��Q� ���ov�M��������7��U�U@��4N��֔_'3ˤ
-��}O\T��c
-�Z�
-�@��Z�w�ZA
- H�5u������R_7g>
-G�74���|��
-r�-�EQ+@�)�I�u�{|�ž�����,]�o�mx��
-�-V[���&���_U�y��x�~r9"
-�i�~�E6!�<
-��*,h�{Q��� �ŸU
-��S�?ٹ�؎��%CX�S�.��e ���F"�+rӂ�hW`_ujJ*�k,Y�22�����{�/U
-��_�C�\
-8U׫�jP��\ۙAJ��V��0�}e�Hf¨�j�lO�,���twm�`��������V�g�Y���`�;.�gWaD��DQyIϒ���y�hxН\�L��K9:o��o�� �,R �Tm�:2Lb�8ar��?���%��1���,Q�^�W��cA6)K�j_e&E�gK*����^e ������z�F,�����ƼiV�,;z�Z�U����ICٜ���4.�|�j�����k���MY��e-⽥a��Hl]��|/�t2ֆ�
-VJl��T�~��m�\K3�m�
- ��lV~��Z����#P���}�O
-�H�r����o
-���/-��9�,�Z�@M$�\�嶹Z�i?o���,p�­�ٙ��";�E�Z�]e���oO��?�?��^��Z��6�e�6��V˼{|��Iit�UUCj��;������"v�^�Ӥ3��s�W�<5�N�Ԉ���ε��� ˇիb
-�y�7p����2�~��e��.���F�%���eeL�]]��c��O�_���]��}56�rή2 ��蟃����P����@��9�js(�E�N�~*��&�kj���5��:���a<J+"�}G � �N��58�c\V۲t������i�u)�S����R
-�-{p��j��KE�a���z���k���/� ��s< �H�b��8H^��C
-�RK��65�%X�De�B�*�������ey^�ͨa?�c��]^�R�{fKjU6��/� 7fo��r�����m�$�M-E�8��h+�)����
-�!;c�3!��Dl�M�I��ɨ�Cϯn�����g�
-����t1���Q�5k���;M� ��ӊw3
-qd�+��._ar��B��Ì8�6ߺ���H
-bdb��j�Ɀ�����MN��\euunq'o����xtz����-�j�4
-uw@w��:�5l]�+b
-�9!� h;a)����k�������a�;)
-��$ub-_�c��k�%��⍀�R;��G8p��b)���Z{��/�P���:5����z��=6$���n�6
-`fV5K�j/`1��L�z:��) �����[������kn�m8<qrk�
-��W�Nh:��(�k��h�Y�-���mW���Ҩ�c~D�L·*����H�@+���[���eQ�]��Y
-��kq�~ۭ# ��R𢡞N驞-&��O^�dK} m�, ��:���-Zr�ޭU�U��TE��!N�� G��d�[?��wF����������h���P3��� �S�P�0SD�P����-T�Hb Nda�cFe�[��W� �I�����8?[ �ϙF���k��O4��en9��
-PYX"�o*;@��$��W���|�_����������E��G��Taƥ�ƚ�w"��b܏r��j R��e:%yh=��Z��l?���k����c�����nٞ��-�����[�x��f_
-?m��.EIC�HV5�%_,y�j�ch���Y-�~�s�9�� s�'3?1���ݼ9?_�X_���o ��!�h,/�J{ ��`����a�1⠝6"��|��l�-@ݥ۳n圹a�/S���'�e &�� �m���[�Vl�0��?#
-�A��22BR�8���S��A.���DF��B-�I��_�
-��zV���Ɔ�B�UϏ�f��m(i��t+Jk�������gq�i�*�?��*��7p]�����)���\�
-�K�N�{�kK�xZ�h������y��
-
-�ԭ
-p���F��Fͽ�{
-�h�O�-s�' ���?�r�+��'O���0VY�
-�88T���.��}����^<
-Ա����
-`�B �s���u��^��
-�9��
-��K ����u���±�%\�`}��P���﵂�� �H5��ľyS������&޿����m���0.W��j���8��cJ�,��@�E�A�*�a9��(m
->'/�}.Ld��Hn� T�pSt���׌$��@%�LLj�*��(
-�hY
-:�#C� ���M��\�Ҫ�q���d5�Ѧ@��W����;�4U �9���v7npY�(Q��A��`�X]@^�SԷT�Væ ة�F�ܸ�S5��s�cy���W��t�#ݮ��({hZ~� �
-hZ����S;
-4,�=����r�(
-���{fn?��Z������w�����W�r�@[n�ϩ��V,O��r[�4����75��4�����������J��h��Z���s{��J���X1@@> t
-���2~�Q��
-�J/ fq���I��$��%�>���� A'��)�=[�O}?Y�P�/rKΔ|� 2ы�#
-���oz']� ���$����?������f�����3��Ͼ}�?�����������>�O�v���P�H.�����|0�3��`"ʇ��w�?P޳S-,��W���y�s��(�pA�Mیk#|
-�q�
-�b���z���I�b��ᦢ� a�mU?�Pޯ��7�z��_���� �����������]I���0fN�dw����9��������8�*I�T����AS��ݤ�Ѱٌ�q��+����sL�ؤ��{�\�@gc
-������9`'M�u��Ђ]+�{� �����c�5�8q��t�df�}�ǭ1A4�N����q�O��n�-eU��`�
-���=piCM3�7� JA�ig����6���^a9�����A_�:KX����D���q��_'�l�m�=���=ٔ���d9}a.�0�T¸3�������qz�����5���1�w� 8[ `vټ���.ۺ��ď�` f�@�&7N����I��ŭ��5�1����+;�w�]<Up��������<�ԋ��
-���ސ��H�c����8�:fS(`qqV�J4�3h@ ���F����
-�ٸ�ʐ��ҭ���%�� �I�/몽��C���P՛9K
-'�]���]����� v��>�*�Ln�C� ��!Y%�� NlIz5�7[�+T빢
-�P�#
-`S�[��rܟڪU�9�O�fʿ�
-}]�@"�\
-
-����������@PZ�`
-@�q�?��1�l������D��喣�����՛�G�[0b+R/t�3��]9��G��k��U}ʬ.�7��G[����Χ��4���*��� 01}�՞�M�%ڊ��m�� s��
-psu��Kn�%�q�L�yi��8��5�`�+����֫����ʤ��z�\��6�\��/��@�
-p� ������@
-
-D�dMd��O>9k�!�  �� ��y�7Ga` `��I�
-
-@���52�P�ˉ�S=
-HC� n�
-vi ��W ܠY| y۠�MI߳@�f
-
-
-@D 5�y� �F���P8��
-
-���.
-`��6�x#
-@e? ��ފެ?ђ�s�
-s���M�+B�3���Hϕ� ���������9�,∻�������$'
-��
-���\-�����@����
-@.��z��G'1
-
-����(
-��vaYs/����ߤ p��6��R�j�npQ @ۅ��f'���
-���#
-�
-�b� �WЌ����f��ܝw��y��O@�okJ_`_��� W�v�>�m�����p���N
-`��MV��H�w����R \PO�E5�s����/H�G��:$٦���@���x!6/�F)�@�)M��9{r��
-
-
-�KŶ��_��U����[��
-�
-�����N[�̍ӣ�"[Z�ގ<��g�,s��4����'-a��t@����Qy�?���
-�� ߤD8�
-�a�;W ��>j}��p��v)ε��.��e�4��.�$\lT �fA<�Xʅs�y�� �owU�������K����ʲKZ�Q
-��\_����Q �+���N}�/�����H`���O}��=V_
-U�-H3�i�n!�D�g�
-�n�јq
-��
-@1���i�
-�������$�b
-@� ̛��엍��]v:=G
- F��0|�X��7c
-~&(�'�6H�lfg�^�d��@�j��Ir��BD�P��7��4�\��Ϝ
-�*�Mz �F0���
-*�e�<���"
-@C��%s�����Q^�O�6��]_Lb
-שּׁ��0��r_T����:E��G��\�}�Po "t\� .��E��
-�V�i?���\��B���@�� }w�� �\�r
-�0K>��}��r����cm�K�֓���"�\�^�5�-�lJ�U�fy����tV��2�[�08L��O����
-;�˅�i�0�!��s�
-�]�3qU�'0 �*Š�&7$*��Q=F薂 1~��'u8\� �즿 ��@M��s�� �0�vB�4�ܜL�^J��R:�|�:`��'<0�NJ$M?v��;�PS=����khį�����}X��||�s��lS���F>Up^Ȼo���TSu�ÿ�3��I"�J�������R
-\M�h����B�����4����v ��
-�Su66�Jޭ����J=V��Q Q�*�� ��``�W��q0�������\L�<f���'8�i��bm.�����v���YӍo����|SԂk�#0{��k���LĂ�\��{ �\��Kb�8M�a����hk�����`�� �Ɇ�f
-��� �`~���p&�l
-`��f��W
-��F
-�]����=�8�_e0
-��HR+�c�����Y3��@�p[�W�
-R�kw�~���j�_�˓������!k����Y�����!gY][ l���NP�9>/���ʓ�ɭ��Y����CН�>jm˳�<��Y��ݷ=|[���|��`��v��\儚�U6#��
-p�ߕ�
-@�b
-��Yﮋ�x�
-����i�ӣ�F�ɍ�^�ٞ*
-�(�h��L��&��"_��9%i>�خ���W���(�3.=7��'�����\�_�������}�R>g��%��4����o���q����$���r���3�[��<�W�.X� �&�(,�����gf����Ǡ �!�@7��h�1��J�5��*�Ye~B~��d����! ��Ç\�S��8G_XrP;��L&�� A�ֿ���C��i� ܭ�����i� 9ld��������ݗ~AM~�3�
-P��{\*�+��P����1
-��#���� )�(S�%5Wp��h�9���#����q^
-r���򆸌�P�-�.j���ҚT#�C}��2Kashq�$����I���MÍ x>�JW�1 `���i���
-��\��~�X d)(�&�t�vU��T���iHo�Z�񽿻�o���/��3pA@�
-������8�%%��ᛳ�� e �;���� h�I�{�mʓU�����_��z�J/V�Ӏ����ǫIdɄ�Ϙ���T��S!a�ZO�$oS�
-@��>N�3#�^ge�^����~o�U
-�@ ~�;�
-
-��(�L
-@D��j�.H`R��Q)���b
-:Pd�\�ʎ D��i
-�̸�(��@'W>��A9�ļa�ej�+]��u ��������G��8*�֯ݫ
-즽�J�� zӓ��`
-�vwz9��S���;p度=��-q��i
-@#
-�
-ȓq�V]<�����q��!v��$���T����\��m���
-�$�~���������M] �^��V�
-��u-?�ٖb
-���z� ��ur�V�^�|���P��LC� ����X*��10��_o�^BQ�-<�WV�;[*�.�ۡ\#�KM*؝�
-���8 ������k(��5�{�C%@��M�^�Ϩr��.;�*h��)
-��T;Q_!
-zok݈-�q����2c
-#��T#
-���[ j�VEBa�B�Y.͕
-/о>;[C�+M�wd�]�V.5�� �9O'+�`�@Mr�<��a8�i6������1*�|��p��P��z�sS����Ƿ�b;���ɓ'�5��Vw�O��[ENVCntmu!Rs?��jU�#�J�/QX�o���ٞ# ƀ�5���3*�ΑI���\/�
-p*@?4X0
-��7��Cp���M�7T��</-&��A����V9�P��2���b`��6փ���=/��M�E]>Ot]�
-l� h�fK7�6
-�]ϸ�7�Յ����+>�bI���A�<��@��M�Ϯ�#��'�� ��?=�]<���B'������y|
-
-Y��`9^v�����.��=@�����?��S`����uDjAA@����S�sX�Qu�W�P�ȉ
-`6�u� jE�֘�%Za#�i��$FI�B/���'yK���X�D��"3<KƘh�]H� ����ׯ޸{_�$�K�΂�'�Z����W�z�I���������?{""����~(��@蜇+ �*��$d�a�����r*P
-�׬b� �7�M�[��4hy���̋�+�%���9�����e��^K�����]Ƴ�Y��]� *':b�*ʅ
-�XQ�TMk)��YS�ڜ.��������ō�8��1���n�)�����* ��0�2��5��:���
-v��ԃ�6a
-�R�a�{��xq�D,eQ�7�$��
-@�:�'���o���_Z���{�
-P��+�|?�Y�/�W�~�?��
-���'
-�&W�o� m���6ɨ g]���B��UK� s��MU��aW%O" ����^QQ��� �{` �*�Dž�9/��
-x��:/�ɰ�P��\�$ b�vh���e�W
-�k�V���qc(
-� ��Z��T?=�N��0 ��w*A�^[L�ND�@�D{�c����68b����%~�����W�(�]}��3m?��?�^���a
-�}w��_eaJ�i
-��4�0 o[�^��*})P+���� !4��-���Sb�n
-@6����R
-
-D�����6�w���Yn�Y/:�{ێ�������_'�������؋f���� jM2 oO��Uw�?H�h� m����M�I�-�;%�M��d��|?ܵ�6#(�
-@�fǏ� �s�q�.�*�_Y��U�[z�A�Vm�RޔT�Ւ�EY���GG����=,2�믕n} ba�߻W�ďQ(�ǿx"F,�
-�q��Y#P��4�Rb�o}��~3; ���p�
-��S(sb
-�0�o;}wg
-^n<���V� p��\x�u'*�-�j.�t��w7��#��i��!
-@�VJ��z� �L)�T�B�1y���T��o�����P3!�@
-�� x����|����N?O�*�mP��^�!>�+κ^t�`����f��@��t��,'��#y��k&)aP?;� �5d�k���H�$��(
-��n6�� L �
->�ƩU� mN�Ox�Ј�x��Cx�� WRA��[�'�Z`Q��)
-�#f�b
-�����������W�e�i~��_
-�zA����������P��'?�޾~�$:DZ`[�]� �8R
-����J���k�'O��|��� kȅ�m���.��������G�C�t�c
-� �ۊ�F�(� _m�����5��Y*3��v%0|𯷸����}C�L#et�͸śI� ˶Z2�I�bU�@�0�?�4��
-aD�5�N���q�&I���DwD��+A���_0c��4���٠.yO���L���
-/���c�YRm�^���k��[O�-�
-�C >�w��y �\��L��r�WiZT]��F�K˙]Ÿ�G3q���bQ:8K�s���!�N.��DK�������H+-S*]R^Z�⊋�t�Z,G?=�W�1j�"K�o+)��h �$�a�p��]���8�Cs�ky�i>
-k$����ޫ�Gwܐm��V�� p-�Wj���v^4�5����Rͪ�/S���6��N�¨����C$�(r f��}-X���i��5��V()����d,)�^h�~�
-��QpN @3|Y`��Q1hJP��z5�t�����q�$��gU��9�8���8c:yk���-۲*˯�C�n 4@����+Vh�NP_
-�b�4a
-
-`msss/�S�
-��
-�F+��P
-�0��
-W?s
-���אg�@ � V���ʡQ|qt;��!�� �N��}�r��ŊF\�]�cз�+��$9���!�
-(߱�`��C`*@�y�Ra�V�t^\T��P8S�/}�Du�viu�>^�"͏���/W�4�&��I�u@]Nq�A j�8�D
-�4(
-� �{��ĝ8�2���`)���� �ڲa�{�ҕC����,�Õ4�bN���P�M{ؤ�����+�V�<x�ƳM�r ��L �����r}���@^v�z�ɏ�$��op��g=�ԥP�#�5�c��X=mJ`
-��
-�`Yk���#Aa���i�5`�m���~fC��sm'�v�4��q
- [\X(�s����T�՗t�A})F�)�x���҈>-����
-a0��ln�a�2L�͂
-lھ� �o3U��k}i��h
-�w���J��vW�V
-�yyX@�>�����m�0(����1
--
-� ���>�ϔ*�3��ȑ�Ǐ��-T���3
-
-@�bs#��t�tzr �޸
-� �5�Y0i
-@bտ���%'�;��ݷ 8�w�Cٿ�j����ϲ�B��0" �l���5ҿ���D� �DZ�*C�o{�A 1�8 {
-�o�!4��ɾKS]R�t��艴��
-@�R�gǡ]"b� ��� �/�?l 8���
-�C\�V�����b�M��j,ʞ$�D��ZC0 �=��#��Jz�: '��Z��P��%?
-�^i0�ʒ�����
-�o h�ԓ` ��޶t���`t>č{?�~�V{�y�dŠ�ㅦ@DgH�I� �� m~���8�?�
-&��2�D�K��9SY&�zV ��~?>���� �g���,��B��.�&�n��g�Q�,��^?�2F�������r*@���=�I'��ˬm&
-D���"Z����H���)��m�w��5s�X[T�9wUG��*�u�D��i�*�Ґ搱^��ĵ�o:3�Q����l/ J�����~�����a���ݻi�����A~�];M������t
-�J�8��t?_�1���&��֭�60�h����3�8F;�+'�-Z�@h�gr֤آjXն�A.�(HQvՊ���E$)�'��\vÄf����NFO>�J�lLv߫
-Bx���������h��k�� @���T�_�Հ�` "1RQ���_��p�'�_X1 p�6������5��݁d������e[b�i��=������a��Y�-ف"u�%\v(S���v~M����f�
-̈́yj_��dג���\�D�GwxAaa�i�, �¹8�J��n���K��}�V��j��w�ds�m���/�M���2
-�R���*
-�A(������7k�ͥ�xu��Oe����c�C�tq��\�j�7�(���m^�1���0‹���m������g��g�0���]A\i7��<88:ҝ�m'�~�{Y�,�M�����;:�_?��1�s�ͨ6YI�������gq�}��U�V&
-��|�8����/
-p������/;��]�~7� �}��'ށơ}����h1g�O��W �l����B
- R����*����UIO܉ ޵v
- �*
-@��f�P2�*�[_K�h�ց��X��~6b�<��@=����* ����86va:��
-�(/����ŋ���/I0=C�M4�nJ'��A,�/�(餺a{�s�o#h-*P��_�& �4��
-�f��M�W�v�ֹ�U�މѸ�-/M�T�թݤnD
-���!Z �~��P���[T�]
-
-��6{=�`k�B$��������=(UL��.��0�\#�
-�p2:0då�dǟ?9��_�
-�1��*p�D
-��9�����yB�
-HK�,���'_Q�Xk ��XhN����r�4e���)���
-@L�2�F+� n�#�� ������� ��~��޻����� ��/���Rؖ�g�a� R��`��]}�3�\.
-�����U
-��w�B�Ec���!�/�GŠh�
-y�����"�0�'���� jO�Bd �\P
-�8�P
-
-u�C �t�5�TUB�z�
-�j��"�k0��\��҅R�^��_����t+��
-�����k��
-u��^�IY_�b4�@�s��8 `+���X)
-�眈����4�;����k?|, kW�
-����Z�o4�a*_V��$KNQDQf��_��aw��
-
-t*U�ZT���x�$Xoc
-�O
-`�l�m���=�"�q�ѽ|�}�8�l��_���g������� 
-� �:" g_P�
-��g
-@p�
-
-���-�á:8)
-
-��>(
-��`�1
-�� �!8G�`
-܂�:+�9J4�a�>�3
-
-
-@�5p�`
-f��)��C*�.�f�����4ܢ��� �1���8���yM�0d*_��F�
-@��d
-`M9��U�.[[-��c ��{�p���I>�k��e�f+�;�J{[� N���A e�#���w���l���^3w�IGhp}_��5���U�pwբ �B�8K�v�5��ݨ�b�����S�+U[R�>{���ciiyU����z3R�[.�A�����p$h��
-
-���h ��1
-Rz�K �iMqP
-��{� &iJA�r�uo8w�_�ys5ވ6���Mw��` �j0�����Y.����ud�i�?�8(�����1)����%{�>B���L��
-��U��W9-��1���n��3�'d3hl����:7a}m�ڜ�L#�VhOπzB�����۷���t�2�`�2��-�M?��Y����b
-��ku��q�nE��-� � k�CtU��CG��e�"(
-m~M�L��
- ��' `�_�
-�Hb�
-
-�Y0
-@��A�
-��Z��) s�J�`
-:�r�K��T RMg�\J�V��J�~��vု9\t[լC�B�s��3�T"�O�6Lk݌X]@} @Sa�<��bA�3����
-|��� Wr�H��/0ۯ|+�B�i
-�<��i�?\��y��J������󽼓��{��Ry��ǃ��@�{{���������m�mi�ӊ����][�,������8�:k�>0
-��+AM;�8��j�T���Z[��^���u2���=���Q �*oWj�Wtg�3@x�'����$*;����h\"=���K� �S ��e�QQ��X�XN:e�-���I�tA��&R5��d�9��4��>��sY� �u���K�C`9!��sNc
-�l�t>-�c�r(ĖG
-Z����sDžP؟�K۹�q�N"z��u�`
-i3/� t��Y�rYx��-� ���@����M8`�Nc
-@"2n� �Z�j����[�B�@�<�x (�C��z��e�9������.�0;?��@�;|դ
-1�f��l뵳V��'��}r��+
-���g�
-���
-��%jX_J�c`�.���=�� �QF���g�ţ���0��9���M�+n ����(
-@z�ʀD��c
-���i��Gj$�\O?s`��
-��
-��$��@�� `�)
-� 1
-\��M:�Q�O�=�2�@�+�?�X�ww����_`��
-����/��]�n퀌X�����������ï ��
-�v���P�׭�J��?n�z��.Mڇ*a�錥h�$�kX�f�/�%��������2�+&+��ʎE1���?��|�ȁ�ԁaW��Ԏ*�S��e�/��l���!���ِ�8�>��������^�xA���\
-��1V �f�# @
-�3��\47U2�:�@jA�@uW�
-�Qd ���R
-O*��Ot~D�(�BR�&6'���A,�F4*F")9?,`lb(�R��4N�������"2:�����ט����$�����ُ��ܖ��9K3HWajXn �B���ʖ��X�Ԥ�5i���ǣ±����)���ڬ��X��!
-`3��X�Gp ߻�倃�gu+�cZ[��@���;��l*$n���
-�-)�%� �S8c.��i�H
-@���ۖ�[�P��:�Kv��� �_0�1
-�b
-�n1
-
-k&ʓ\��>���+ܗZ���3��L}��&�Jib&X�j��*��'"mlB��Th��{u��շ��A:�$Bu��d����F��x�I׊�Լv L�����x!,��B��,Nۇ)��������z�=�'�^ h&T��oY/7\�U�"Wy���N�lɭ_�P�T����� �i����+��
-08����) ��ws @
-��M�P��t����
-�`�,���:h�C7��ʔus��`�ʄ8j�4�H����a�� �#җR���TM��H�H��O��>�}* Q��'��F�o�O�Z�ge!BC����g&��#؀U ���"�m��g���(  ��(�����%�(��O}��2��H�����x��[�±�h-��1
-@��e
-�F$��dX���(�����w~�Ae�yC{!6�R]�c���%�}�R0��MI9(��ơ�!��QL��LH#��>8H”1�$<J�l&{{� ��_}�H��Z�%���[��a/�ȠIҿ�^|)�G�Pxd�؂f����-\�0�S�o_�
-�ΨJǰ��g�
- �]+���N}@ ���b
-�q
-�
-"5�����y�d����
-������M�0̴!iK�̟�0�e�i�Lբ+��ؘ�ʀ
-��Q9M�R����: �/��Sf����$L��$6_�<
-��t.x�F�� q��/�SI�rb��C�=�o��7�{E�rN��+p��:�e�!k�x
-/D�S3�߾6�tE��c���%$���V��fu�U�2`'��kq#C%���=�BP�d�?���'-id[� �4I���U�������Зb񭤽�}
-P����z��іi
-n/�����!s>L%�D�Yk�N+�W�`�aT�b�vB9����1�^P�����0�c�������r\��+!|Ys��`�$�jH�$����[�[UT@�)�u���JqԊ����gx�Q@
-��
-��7�� 8.�+�
-A��u��2W����wp�d�2vW�$Y��_d��dU����c\%�Z%��R�2.e��gf�Kq}.*�_�j�
-���P���i�斈:BC�ln�X
-H��S��`n��ȿVKl:�`vZ
-�C`]�J���� �r���9���C^ �
-N���+�%1 �C�X\�F��x*��D�+� u)�����t�rQ�� ;�m`�{^����Ɂ�tQ0��]
->��}�V�2���ߤ�vӄ��Q.��Þ�'�r�2�;&:`�}��?����<�3>������\��<�$���8�q���`J�8�Yb���R,S�T���Tz��h��̴�T��/I}\Z�c���%)
-R�s�f��gYzm=I�����0;���Hs)K����)V�����z�xu��V��I��%�n3�qs��o��&�aķ�v3˺��<jn@�;���+W�{w���존��s�:g۳��`��<�̥R�]H�>K�.~�j�$
-�E} W
-���9FO�˲+gG����ri�t��*�Ű���(��F�2ϻ�
-dx�@Z��[��d �l=���.Ͱ܊~�� g�~aV4! >K�p��>DR$����35����fW5F��פY�&�U��o���l��dkk��1O�Z� ��!��8ਘ[������ �������������k+y��3G^�;�6��U��b
-�ΛwP4�r/_�
-�v�Y7��|�y������@09j?aG��g'IsF|cWL0��
-8k�(�t��8�*M����F IȰ?��&�5�׆ ���ĸ�+ �$iN�V�*,]�֒4�k����L���:�����@�08
-���]�l0?nR���Q�?��F���å$��%ת ��pyۑU��6�_��avg����=��/e�%[y3�Q�R
-�z��n��ɶ�2��|+�� ��e�����8R��
-NN���kt(k`j���$ p����ǐA�ӏ�~�m;������{=k7-�B_�SK�!D�0���~nt�}=��~��w Q/��^F~h�$١#�ɱ̷\�{��;���A��bG�[Z:~wd�2qۆ��m���t7�./�˼s���v���
-񛽝B���2?�������o����56� �’C��[��:1�Zm�Y�фW���,#��e���v�~ S':P�&�
-<��cR ����������E�~�*�9�� ���
-=�@L6~� R����o�Ɖx�A�0�ؐ9�+W�,ig6^���C����RM1h;�/��.�m�.��J�P��:��r�v��dR�(_�RR�'���J�t�ߚQ[~�;R+�Z�$i�)��ͮ
-�S���:G�y�`{��Q
-O��t�2o�l|��p�42�c��&i �pQ�2���Ø ���Ni�v ��%��^�(�H��v���v��3���^3@�]*D��s�`fZ��`����F�$c
-�4���A��l&�&���1��d�΄�1AJ��Va�l?�^)
-@��yw_��z�Y��@�UN���Z��e>|�/�aw2%�ش}�p�0�����������^�c��j`�����[/�zt�P�O�O�s���alB
-7Bw��M�ƌ������
-�rōb���&
-D��m,ff���@)s��g&�R
-
-���:�:�.Mr��E��� �_����2:P�4h��9;Wt�hi<A=�f���� 䌪n�� L��_�G"�b
-�ڹ��>�
-:�8m�A �2w�@������̇#�����Q�{m��o��N���v-��5��� n��l�ӆ
-@�7%!����IPY���v;�7���;���A_ t*.O;�1l�4*�v D7D��9S�
-1��o7K���<����q��8W�e(�0g�˴���N��.2"���Ji�v=.��y�'qSr/\
-�'V��@��l�ȫ����!��5@�a��
-�G�G���!E&��]
-��~�m�m��Ҕ�=��f�! t�7�$��O��~�E_�}_�'��n��� 7o�w��D��N�O�-t���̻��<?zu�J��P��IeT��f�:�ݮ����]z{�{d�紽��n��9EQ�K\�J�?�/��OU�y��_���g~!��~�����WT���z�h��:]m�g~�l9-�k��Dul�F?��+57\�ۯ"�}���f�P\�ڴͶ�v�hD��
-�r `|�ݫn�ב<*4�Z
-@_�,�]Bl��2+J�M=�C��
-�e@E ����� ˈ؃�\K����f�?M`�������8�RZI\�e>���!6�
-��`��؅��6��%J@�ZZo�z�D� ��֙�."@偟B�ZN����T�̞ 5�6�v+��j�
-��.�7h�!PĔg
- ���;�Y��R.x��geE`�!��"HJ
-h�@j� �^�����U=~�ִ�ŽQ��E���f
-��R�l}�=S����R*1�;Jݸ�PO�
-;(ty z 7\=�2�e��vp �R
-"@�խ̞��|����{Ng���Ǜ��T��ăP.�Z�UN��%�^� @��O�
-嘧�B}��ҩ��0�
-�8 �xd��:���Nǿ�^<퓇�[P�@1���h�l�4ĺ
-�w�H�f0���9J������T�c
-�Q�y����@`�K�iAz��5q���wr��Ӷ[+=��Ҙ�/�'
-¤�7�2�I�Z*���ɳ�=���u�b[ڲ*��|Nj�$]l��`�}�(4�T�M�l˷����̱̺�G��,��Rz�(�x ��$��YS� 4W�ţJb1
-��I����+��(KC�߬�"&�� �����1H���0��L��N��1=qx��P�VȔa�I�/Oϝ�(4�MB �ݸ�AeR���
-@.کrm@��÷
-�����NV���w�)��a�SW ��?f^)�%��|� @��k@�sܮ_��u|ۦ��ROV��%f�M�j���`I�`� _e�kӇ� b��~Ǵ�D�0-���,�\ �&+�Z���
-0�'�{������-
-@�?���w <����1��+ep�
-�p�z�`������1�Q1�S)�@�4��c
-��jEc�j���Y��&�3��ıM�/T��K� s�R>�-��0������sXP���ӥ��py~�������ryn~n�*_���������6�>[r�����6T(Rk�\1?80t�:���=��9!n[7/�O��v�;�Gя���W�܄�c
-��h�ٿ �
-�c>���k|w�T�=�
-���2
-�)�� ���O���������r��ǚo$�5Z���N �N��E�(b�R�8K ��09�(X �¤껈��Ҽ��!1��p П��NI�`L��#,l�۝��r�E�{�����q��z�0�D�s��c�q?o?�W�����
-��g+� l-#�Ѕ{��!n�R���r ��
-A� �B5���#�TW8)U?㋀,���Uؕ�K�C�$n/���G���{���>�m�7 � �0�<���̳ɳ��$ A& ��d�
-� ��a�4V2 �h_\�v� \'
-���@��9��)�!;s &��%u��R9�P%�d�-e��Z�r�eumWx�f3A����BU<ki�pjD}��@Vb� �4������U�����#7��[[q��~��gg�F<��K��s+}�[c
-��Wퟬ��'f�%��@+�0N
-�
-��1�n
-� ~�&��B�B��� �\]W��
-L U~�F��_1����LӉ�>�� ���kQ��E�� tF��m�'�iL@p�.s�� /`�> !��ڜ�W�Γw�"���q�S�}�; �����!�x��
-
-�1
-�p�_Y���
-�}��a� �(�6�ʻ�|!����-���IK��hKł� �@ ��F2�>G[^,�G�bf�T�
-E�p�X{�ڣ��9����X�>����WR�7;�a+��x̿T�����-�9V:8͊����ŁW*�y�X���ІN����pc
->�~�R�x9�Vj�/Qt7j
-��
-�� ���_�><�`�9�9�x�W"�_���RX��O�P����f������
-�IM����Ā5�ya��[w8�5\,�L#�����L3'c
-dF�E�<]�T
-.����+ g�<"?�8�6�K��,���V� A�g�g�L�`!���KEk3
-� ��_.�u� ���
-��c l�}�.�^`*0��'�.
- ���ۧ:`$PA����
- ��lzjp���#.��|$��ޢ(���s��x��YoG���� ZYbB�LJ�W8=0 d�ND��8�{��������IZ���v �SX~qm�� �>��ߦ�@� ���\�����#b
-@&j"쿩
-@���*��
-���_� �
-l ��B��:��j��S
-~Q4�5>�oЄ!:� (�z@�>Dh�M��d
-��@~���t�� ��?4�k(�W :�
-�nI����ݸQS�ze(�}
-6Lhi��ĝ��y0
-�r6�1��qo_
-b����}��g)�C����������
-
-���}�
-@�_
- �JvXC�o�Aq���b�&�� ��V��wȖ�I�G��p��Y��O�dk
-`?��
-&���6��
- �����?{���_;����+�D@���"�*������Ǡ
-��x0�b��
-ΙV��r�ru��5"�co�c�
-%x�_״�O��jy^��������P|{�����
-�z �x�>0
- "�h�����#D��h B�6b
-�����O
-�<����a��((���܂�2_�p�a�L9�$X��� �'�� o�Lj���J���~��%u%\��,�����8@’� 8�s5�᧲�z���4܃�'SrX ����9�4��05�~��� ���R�
-�l�t��,wd
-�; ��8��4�R
-
-��A�����o�*z0���6�v��Μ <� ��S
-�|^~�!>^
-�F`K'�ٽ(
-����XH�L��x�ɏ�G�����N����
-�8W���''''�����
-�}t5�ƿw�O`q�ϝ`)@/@0S �#�
-H
-5
-��%{d{ �~
-�̛X�k���
-@��}c�!* ��hr��ehy;��}��
-F�J� n�Q'i)�V\��SI�K��sc
-G`
-�����;��u(�t�� ��y��#��
-�ۿ5` {��<�k�C6��nvߩ��3 �W���J�~1��g���z
-@!c3��8�l�v�Bq��m��
-Y@����4��/V/�i���
-�D�> ��������_\���_~���b
-�_׍}�2� �!��O'�߀�2>��`D bRc���.Rb��-�n�.�&zTm<��O9��ֿ>L�0���1�ʍ`�U�p���+dRV�O��0O�D�o�
-� � �4Ǭ��`i�a@?wz�,��r=�6 JG(�#��K�ʩc�HG����?�bxDU���8�2
-`*�[
-��
-
-�z��hx02��lH� �¾,?�����I~��o�J�>(;5�+d���
-�
-�Z�w�j�֨��?
-(a���(�%�9 �Eh �E�X
-�m ��0�$I����_��j�M�D����� ;َ�u"����$
-�0�@��v�n�ڍG햺�H8���OI܊I#�N:�o�{{�F#n�l
-J��xQ{��s��C~�Ҏ�%��#v-7�I���H[�g
- �G�Qi�X
-rQ6p�N��c
-�S�]Y�S
-�21�W�w'�:@�f@"؛X
-34���2'"�o%��a�M�+W�-(+qxP|��$x
-�O�
-��]�_%�?]
-#Ö�a�i��+k�%VL���W�K�iJA�����O��bKl�.Wd�`�@�$+MK܃?y?��/.8<̥畂%v=8.+A �,�s�q\d�@=8w�V>O���_��Ԁr�"�i�ם���
-6>���E)��Z
-2��lhE O@��J
-��!|X@3R,.QX@l��*��!�5��_֨�Q_��V�#�Y���/UP��K
-߲�3 ���*
-`
-^c��x�y�� �~��W���!
-�
-^�z{���.U�i
-��`� pC ����o�p�GϜ2
-{�X���D
-
- ������Z�8
-�n��8��Y#�~@�,7ة�� ,�[��R����rA�X�
-�U���~���P��ڨ��`P�(��9�_��
-��gV���TU�����94P� ��’�;�����
-�l+��+�����-��(���l�%���h
-�Q�`���
-
-@
-n���Fn߷�l@�ڻ�h��\�jq��}���Z��
-�y7l��QST�j�N�Wѯ���8O��ϗ�lu�{�֍����_��9��t5j���˥�9��� ������|�|�¯�e�?���r��L��e ��{Wԡ/��msHv��=J*ݠTD?��61���l�#ѭ��/�iυcm��
-S�Z���6We��ĵ���±��
-6W�J�a+
-�o�`,l����x{�-L��z})��dHڒ���yk/@�s&k/�C@��y��w���\��@.�� ˒!y[-���[�@gp�혲�g���t�m��b}�Y!�#Ux���3U �����sU�eG
-�� 9�T?�+��a`�Wl�3$��r�I��K������2q��+x%%XdwaHx^>7V,�� 7<�<zr��� �}��~�m'���ǁ���1��A���l(r<\q�l �D �.����{%��SXߘ=q��1 ��R
-&�+��`r�0��u+Ԍ�{n"�%1�DB����6�7J�&Z1T+�E�Z�%q�=1g7o��w�4�5x����^�ډ�X#@��h��@������2��� �j@������v��"����D.+�s1��B\���a�K;{ƞ"@U��M��v
-�T�ڲߛ���ǒfM���ww�<y�����_>{� _:nƀ�(��dO!����@�Y�,�D������{�� �C� Xh��>x���{�~P�
-
-o�%go��%%�N�1k�tOF��Z�ʪ����ݧ� ����>�j�8���@^
-�JA�t�1���U(�7��5�@[���³�P��: p*��"�
->�W�g1�`�c��^۹R����"�� �U� Y}1
-
-���׻
-@H����`,d�=�V4�F+Jj!�+�RC��_ �1�&�b⤬rL� �h6�="�SX[��Qs�Gae~�� f�`�ZX��63�e
-�
-&��'��yq��i��w 9 ���0[�"�6P�[��1
-
-�z^JR�~��D<н$�sd���ho9�.��5�SE��V�q ���|ځ�*CT1<�cSV o���pۭ��
- �۸=��?0Pp ``�g�]�g�A\�q1
-����
-`J*���
-8���p]5���(���W�x�;:DI\��(@<��_q=l֛��`��\n���)7!�<
-�z�6$������F�x�1�i�2
-�e
-��V
-
-�ބ�o��� �
-L
-d
-�Op�
-��
- ��6i��61���=b
-1�2
-p ���Y� `v�"p�� ���������<h��]~�����_��
-�|�5Xh�c�=x��@��� �Xg�����5
-|��
-�_�w��
-��&������ �߃?`�#���bX � ��叨#ذ�I�(%�j���?8���%2{���p��\~�ĉ
-`��*,QO�5�Hp�f�1���������
-f�lo
-���m �+b
-���3������JsPY���=�U���a��V��t�.�����1�T��~��~4 ���������X�Y9|�ܹ���kp2�� U��>
-�
-�Pg=
-:J�C�Ż�=���o]iݿ��R�4B�SL �)L��'n��W�X����6�?<~���:�$��3@$f��Go�9qb�Cޤ��ҟC%��a��"K�����B��z��)�����A��H?9��N!��JI,W< m�p��$��(�u)��,��1
-z�X���?(+�V�h�����'�i)p��`_�F����������C^Q�#��1*�o��"�Waۂ"�z-}ud�uX�4��{9
-
-���}����G`V�k���Ͳ�
-
-EZ���0��3�,94�ٳ�ì���
-���� �'�2ϳ��.��L���V ^�(
-.K��Wh��
-��V�(���S��Y[��M�"���G�S]���q7�����<!�q+� �p�v��-;0�
-�j��0
-����l��m@������� ������l��<.�(�
-X�$O�jp��:
-g�?����c@
-�ol�.\'������0
-
-2%�°sV��͞�O` ��D��O}���$���(b~!� �a}�x���"7��qu�( 6��F��m��HpX @�����wnSl�^ �67�*4p�\�~���~ @�sGF���0
-
-�k���}��)
-��} !��� Q�`�l:��//i��^nrL�w��HX�H@=���u�|b�U`�[��aꑗ8��8� ������2@>ԩVv�_�g}��s
-`f�[����[�n�0�-؅�Th¿��ݔ�8�~ua�6�
-��� ;N��@��y���Z�_�� �����|�!]ҟ `%@�l`�1ƕb�y�cK<c
-��f��S��2^
-`������3EFD@�<d�y��6�r�W�`���^ �"
-`���2�`F!G�O
-�� _� _����i�>�zy.7P���Ȉ��D�Gon�B�2�<��Y/\5P �@⊇S10gc
-�e
-��
-4l8U��/��j���
-��!ANzR�[�V��d
-@�
-� v�}5R�r�E����k�籬�خX��j�zA`
-إp @@ �[
-@+���Eƫ�s��]� �
- x��u�� ���#�B�X3��.ѭ{�c)�;�=��^���l?�/[6@�R
-�� �
-|���g���gP
-��ذ@J$o�n?���������\e0��LG��s����uLu�~1���w����� �s
-0'`�* �W�� a�@��=��ݞ
-�BϺe��;N��r@��ݥ�VÒnc�L$��_ �
-��ڰ9
-�����i��E��;Q.�x9<�?g�$�O�x��
-��
-X5�%��K @h�Y��
-�4@,�΄��;���w��J�B2<�=liL%�>,��&��;�Hp%vA�@S��+o�}6fa�ؼJp�_߾u��"[�!�[@���:�D-,��
-Ng$��B�>+��j�~��u�?��X�
-��!�ey&+���^
-O�+͞q�imh���p��X�+
-Gt�1�=���Mgz1
-�c <؎ge6���?�
-�
-^ X�&.��[�~{1
-���t�\cJ�[C�W�M�o�q��(:����
-��
-�J�m@Pw�ޖC��:�Y��:Qa�@���NA��N��O�
-���g��Y0� ��g�5�Z@e$ɀ"�x��ǘ �C�#NXhØ��v縏-!�1�9�(
-��X!� kUf�kʚeT4���b�� #���DH�h��TY���T
-^�'���$��
-��/ ��4a�S��!al�;���֑�ps�V�����%�0���8y����.� �#�
-�bp�O{��T�>��L� �a��+ �!��pRpq��zF`�g��
-�i��# �ŝtC
-�@&`חFWX�Y�]�� ,������1�} 8H�@�?��̥���J�Y� ���x�[6�h7�S2
-~D
-���/�0�;`
-T⿢� *�k��ms+j�}�b��!!G׈֖�19z�f�!�D����p CpE�qU��P ������'��Qݝ}@t���� ’
-}o�F0`I�c����t��D?�W��J����0���b��J�&��JR���fXe��z�CEX�p�z
-x�OA
-@����
-\�  ����B
-M�
-@�
-`
-�_Q��{���?��<��2{-('l���$�n�<�1� �����{��ҺK\J
-�56���~�)
-B�b�Ka�_�q*�� �_�$U�͠,% �e�@h r�� ތ����^�<c
-�2�b��2��XU��T�s�8`m��o�"�
-�s�����C//T��+ 0��Y�Z^6Ld�� 7�eRp�)G�c
-���<�^��VE�v���Q�����i���e!
-_��~��9X���x�ϊ�(,�ٱ!Wv`��Zl�~����
-�g�q
-m�(@nĺ�Wo$ ���I�
-��߭p��DT79�
-���l�C*��ܓ�uwt\��@��
-�Q�.`g�6����}��gȼ�)\��դ�B
-z
-R��{a�C � ��J�/��:X��
-
-:\RyQp1���@VYT-�6`��3�{�Ys��p1
-p����O1ܞ�p��r5 ��&��jq����m��( �%
-���(`C �%��&�1%��A�1@s:�� ���^@~��0��H�O�y��l�
- j��GI ��aS�5'��Ǖ%�(6R����Wh�Y��$�� `�č鹹�\�'�,�lG������V�h%XZ\�(�N�,�᧫k;�
-��������>�46��?^�s':��˵�u
-��
-)
-'�po��z� ��SO���7�4�r�@E���ЬWVh�!!�G�w��j��I���ʧHҌ�j(R
-���;�o���̝;P
-�p�t� W�v�G�(����A��'0�P2p�ړ��V�7Q+n%���6|��_�Wn���K���KX ��3� xK^΋;;1�aw�m�߃��p�f��֏��?���� N�
-P ŏZߐ�j�e�<h`��`;Iv�{�AٵE|�� ��n�o�c���ĭ(��a�0���6�^2_K��Zܺ'2�C�}�����
-�ܴͫ�ų�#�%��qo��Cj�
-S/��G+\��=
-g'�Z�ȟ7�c�Ճ)�I��;�Blm}�*��)��?T
-���ȉg|A��­*P��A5
-?�f-�z��W��< �I��������V��x �J��[;�թ�Ƒb����%��DXk��s����i�0-p�a��J�4�qK�m� G
-²�5�x�����u\�, �n ����|;����~��Nn��J�_�V9X���Z��5�Z�Z�
-��2�\Ad@����tb9q\a
-
-
-#*��p]0߅��{)B��> ;��ȏ��uI
-
-�;pk��}؆�v�&$A�{�]���¸x�ߵ�@6��0ɷ�8��r���s�D�(�o��o�n��z����=�é���l@�wA@bm^"�Ꮶ
-d]��p>�N�����o�
-�<2������M�\x7��@��}RȩY� 4
-C8���P�����Mh�� ��~.5
-l0L
-�
-��$�z� ���H�2��c�̓.�a�=��!.w���5�*x
-�D3����� @
-a��br�;( �
-�6��I���%aA���BT˦
-}����v���I\�somA4���F�Q��E
-
-����:���|�vD�r5p)���H�7/����A��
-�����������V 0e
-`sfvƞ P�g ſ1
-�wY_���JU��� p�
-ඡr�f� �R�V�����(����J�L
-�t�*���S :��7"�GQZ��kx�5>�t�I���������_ \l%Q0�㨁��� ,x�~#8�E���^��k'�n�ӉO���᭣G%9�Կ����D� �i �l�w��
-0cT�&V^��"��0h�� ���I�)�Э4� ��@�3Nu:D�R������,����x����)��M
-��?����@���d�Ùܙ�C6@nV��Ns������AFf�ۋ%�y�J��<�:ޥ���]��g���r� �h��sX��_8�+�im=�\h��U�l�ST�吓JjX��ek�TnL7�����
-Cv��ѐ�u��y;}E96.� <��$k �b�=Dn�l�N�����.�z�
-�� �)T
-v�^�a�l�#i�ow�q#Tc�*�B����-�6)���7Nڝ�^�Zmǭ�$���� ���2��.y!��޾�� �}�^����$��T�&n��𵞜�j�y�RD�1
-?�"w�r{���~�p�¾Ω�tp��� �����@e��l€@�h�/�Ҏ�����M�֫����c���;����ȁ
-<�BmP���P��G����!8�܄]�/4@���J8��q\��
-`�H �Jyf�)7�����.�M_�h
-�X�Ǎj�2�~� y�k< :` ���{E'$i)@7@S�2��
-
-�
-㟥��T
-
-�;Wȍ,.ZG
-��
-@��S��텼EJg�q� ��N{&�'���a�+a`�A���ka��OV�Xoc0��[ �g!� �(���+�X��:�P/�9
-
-@��d2��G�j
-���‡S�>3S F
-��f�YW��� Vu =��� `r�U��% k4�#�Y�R5b�!j��
-4U@�FU���
-@����j�L'@��/bc �&>�Pz���e^����wk������ߓ�L[�ih
-��(yp��O)����}od���?�l3,&¢:m_⑥I��[L����/r
-��qp wq�z��
-���!l?�
-t�6}1�_�
-@��'��ZUq
-�O�Oa�O���i"5a�t���K,�����`1`�
-��>�ĖL�%�Y�r�I���:@d
-��ϮP ��$O8gc
-�?���A��`
-|��D'���(
-
-p��'�0�\
-���6��Z�N�z�V���
-�qp�f����Ö�fܕl%���� ����
-�(�.NE�@~v��ht��?'ɳ��_X �q�.?8<i���}���H�N����A l�gT[j��p��W>04mt������$i7���N{;i�~�$�c�'���^�h&����`�m*l0 �hO�jq!�S�N*��ߓ���
-�|�,���[�_޾�1�.�7g�f��H�̓w�z�b
-����} ���ŷ`
-��y6�/�ϕ��/������4�;-�9�)�,qG�za~�CJ�K��U�7?��犅\~z�4}A �w�_��BH�vLU��t�l>5
-��j�I���n�� ��f�
-���
-��&�}(N�z�Hӏ~�.@�/��w�8Iq�D��-�b
-��
-�$���wcUm-f��pt�Pk!8����YЩ������!p��+�5`{u�����5m�RT��8T_�-ƀ��#����5�Ei��&BP��=�}����!�9��7���'��֘i��1PR'|���3��A^'"����_�+�)���0C�p| �
-�)����B3"� �
-��� a,�.�R
-�h�������j ���'��3�_�_���* �o�b
- ��
-
-��^%��
-�<�n E0�����-K��p�Dd[
- e
-`��;��Ir.���p<�8ӏ�X`Ho
-3��U
-@7��R
-�B���t�4����y�9&��s�SO����V�G�(�v�vu��� �q*��O�_⮵~;  AI�@f"��?�{�����gtZm
- ''
-�����(��
-*p�����k��
-��.(T:`kL����`xB�t�L�
-@0e���Ot
-��+U�F�Q qC� ��5t��0�@f���J��4�����o��("w_ 潵��{�>!�G
-�]'J~�T *��ͯ|��^%kl�
-�� (��~�%���D �|ѯ���ԋ���qů�p�Ap�������c.�+�[����1N��~T�}t�*��6_i��ǵ
-��j�G0.>��J���ӈ�k���x��Z壧Q�_�����F+���q-[
-XQ�
-����\�>ȏ���'6���" ڭ�X�%+S 
-����
-�2�zKǰ��b���K ׸7�8K��Ϻ�A��t�
-�->�K������D�߉~x�kp
-�#��{~m ��j��̿?a�
-����V@}�K��-�z;2`%d�
-�uzN�g�oo�K�3�i�
-�r�=���|(b���������!�/L��j�za
-�W]
-
-u`��IPfX���|f��Nc�)T |��cM[���p���+�_�H�0����d��z
-ܘu��3�o�
- ���ը�!��i[�?f]D�
-�
-@U�
-����<빀���M�EW �e�c(T/pD���%8��E�u����2
-�G��C�J �BT�Z��_�h0��;�Y�\K��e
-�
-��ĥJK���U��~��[0n}�1f�y��L����I��S+�R��A�t�X�3}(L�w�*��#�a\)����b�W�aˠ���<~��@e� So����tՍ�c�i� &ܑ��??&e
-�H��U�+`� �O ��E��-�
-�Q����7}���m �0rab�|��1w��,A � +>��#$��'�����1w��_�."��:
-�|�"���<NJd�ŁQ�Ʒ8N������p|�j�+���x�,���|'q����1�Q0�q �qT�X�� ��0Q`�A�J"�H��B ~bN�ŵV[�l�G?�OT�S;^h���΄������n����=)O�g���;�
-��<�;��۪����p�H�͠���!+hm; ���\s��o=
-���
-�}��h�������~-D���n=����~��Z� +? 8���^��/��;�E����8:���OW��܃����NOO[�� /�u?��N��]ź�#ϫ����q�uT�=h��1_-�WҊ��E�����A��w���;ma'�U�wb��>���@�EW��6
-P�m�)��.�kw�Q���B�j�DžQ�S��O���f��MIu�#{?�Op� ���!��~'/�i�p����q^>{�*�-�� v�
-7n��r|��7�ςjP�%o<ϑ����1�����_ ��A|��cf��h�>`��{ h�p��)���?� ��c�֍�\w����z
-�b��u�
-�Ͱ@��
-l/v��?�&�N�da|�����V"
- �P0����SSK�SS��� �`c u��B
-�,��|7ta=�
-ﴞ�
-D�]f��
-��gNr#㿿���&.WNՃ���|o2]Y�h�� vC�ɠ;T��Z�9�N��~ v��0� 8���r\~thͥ[O�5�z�
-�ю@5�@wX��Pe9e�
-�u�)���Ո�h�5�@��'�T��7��j4�#%��0\�V7���AX,2�x�� 2�|*�?�����r5�ǥ������@w8�o�^����~\���A۹q�u��VK�ɬv��\���j4ߪ����@�–Pj��!���k56�
-�KUM�G���SS� ��������K;�e-eQ�+�v86_�G/��>sp��<�u��q
-P(�,A,Z�S>@
-l�{�9)(������I������`�%�X#��
-p�p#������ ᇁ(ɓq>?�@�˞W-�?�B��%�����.`>��٪�=+٨ta<c$���/��� �&B����O��V���R<�g���V�1����������M�opx5(W�S�$�<fY+,>0�TVb�ؽJ�R�f�d@r2T��$��_�C�K�,�
-v���2|)����
-�,�zu#.���9�^e)�Ϣj�{�'j춘
-8ߘ���f�
-�@����3�JJY�'As=j->bԈ�������H�[G2^:e9� �uN�q֟��I����B�/�X�\ݨW_<S��k,�Q� ����M�>����n̿`���.nb�
-/�
-���
- !��+�Z��s��oZOD꾰x}A!��X���6�<�>�+��琡�
-��!�8�7t�T�R�Z� mH5
-�[��v��ӝ�������ivR0d�`pAB:�����4Sz%�����^Ґ:
-X
-��R�np|�H���^���]� MK++wk�i͵�?=w8�rkk�w���Q
-.
-�wIc��W-�����>��R��k��#Os]�B����o2ع�lBq���8n�ƭ�p�-�}�jާ�h��~��Ƶ�?�})sp�v� �����?i#o�S�0�"l�8���8�>�}�"n���#S�
-��j����?��q;��C3dg��� ��B���/���S�
-�,Pؠ�c@��$�1����ݴ�8
-�Xҟ(>��O�!�z��s9�L�U������Z����z�p��9��ry��z� (��H���0.U@u�1葮Tu�# Wel�++��@
-0:y�����W�N����(+�� � �…6JFRt
-w��;F�!�
-�_�Ŕ>��
-
-r��jP��"� ��*����A�W����)p�Sa|��{ͨ���� x���sWFrH�K�Wv���}�/�!
-���M6�� 0m�%�6s;(���D��*8�>�,� !��/�"�>;H
-y��4XB���9�* ������"������a\y��("������xޟ�GL��v$�e����Ġ���; H� �j������qS= -'���qf���V*H�ur��:���~�.1v��8����B�� A�a���n���q�.��!0��fj���ٻ-g
-@�n��zۯ����
-�e�Õ("�yyˉ��R���V�R%D�?�!nEoʻ�3_��q�@�% r
-Q�J�@#�'����FK��I�� `�-�s�t
-
-�B��?y��I~�����j�6x���J�!�%���/4>�*`����/-��+E]�[k������zp �0�xy dد�Wl�]��c��L�+�@�H�}@o
-Ѕ"[���p�'axqԝ8���V���ϞDa��V3z�k�4�a�ֶoDž\n�Px�fn�e�
-�@f�{�����S���q>r� ��)޹311q�έ�kW�]�vu��D���;c���Q���]��v/���}�F
-֢{E�]v���2�~ɺ���/b�~�§_!)e�ڨ~����n��7�q�7��/5zp{�y�p 9� �!@����}���G��?D�\���,,��6[�a�0n�Տ�K?e˿b߱M"M�1�y6� ���TøV����0���@S,��0r�{�dQ����L2���9������{X
-��|p����܍Ba��l�,�W�����c�I�U�9�a�����//��jy����* ���u���c>�(�y�+���ݕ�Ͽw����pP(0��`%�$3�
-��l�5 �P>�w �o��K�� x8�ѱn�N��p�
-0��}�{z�׃k 0���vl\A�
-�j������&�$�/;�8�
-���8�Y�q��P��I%�>g�i�\��e�H�S��+|��U�x"��<�FA�
-}�@� ������
-���X9
-���W�~�
- w�Q �|�8H��Ob'�e8
-
- ��˼�Y
-
-�V�plɲ�
-�E�'~�@�6VpH���� ��e
-p��'��+�
-�?�,� @��
-��&}>���������x��"@
-`,����;t
-������h�<���q��鄐Gl���,0�
-��~+��c@�@s��O@Ƅסl^� ��
-8��F<�)�5��0���E;j��f�-y���}}E�v;�[�^��g[A~l4a�����ɋm�yl
-P���r3|=k�DѷA��²������-��
-7�ui� ���||�U��
-��9�Ϟ���
-��O%�J�Z!�݂��lB�q����|~҇��Z��qD�"6�W*+���ym-��2�kQ�o5��.����/`
-�$^%G|6���_a;N�����ry���b�:�Nƕ� *�6���e��|+�a�buS��\@8($Z4
-�/h�
-�Ɔ��k�_��'��$�ư�A�Z"U��_ߠ�N
-0Ls
-
-��C�#��:���[���R%\ᓃA ��i=3'�:�
-�%�O����7������9> S
-_� �p�)��Ҙ;�ė�H� ѝ��ۙ��9�
-���΃��?];m�Q�n���Z�ft��i��׵���1��p�}�Z�DaoE�?�"jEp����w-H@. R�����7@�+�w� �&�
-��[Y�۝/oM��?�+k+++�h 
- R߲����ܧ����fR��CL
-d ����n1B1�Q�H
-�ոb�E@dfd�� 7 ���w}�O��9��O�'�_��5��sY��|V���� �����K}
-�?xy�=� ���!?�B�+���|��H�ڇï+�<9 Ϻ�V����Ɓ��j��a����B.�8]������*x.�ۃ�ry��Ϗ�!��B������"C,M8 B��[5
-�;����-��j��-�S����䘠�����
-@b�;�q_/^?��7ü)
-��0�?ʚ��x9
-��
-��L� �}㷕v�
-�S@���Ɇ�
-0\����n���p�M�= S��0
-cr�
- �X :�NA>(�G�}�ȏ�
-�
-��a�򷥯�*QT��,@
-�n��T%;�G)󓉥�8�0��(�F� �@.7r�#��͍'Ay��맅��r ރ��he
-##�e
-@�6�������Q����y Z�K%��;�؆IR�Њk��yV��[j=��o���F��v�as��,� �U ���O�/���;�� �qL�0��U�� D|���
-�^�h1j���O���{;GG
-�ڻ�"}�7��G����"���<@�V��� <x�M>(f 7 ����F�{a��ݵ�T
-��#��#��r�����1�|��&Sm
-�*��4�O�KD��ǩݩ�Š�� �[;>E⛨��0��
-
-kO?z���b$��� ߰�h�;
-����
- ���p
-�q��I$`C����|\�<� ��.��p`a�1��`z�Sf
-,��-�c ��x�Aèx\Y��|}�Å���݅��jb|��
-��`�N(L�
-�2"�R�!����˂<-���D壈����R\�q���q�B�f�$��q���)Q�2��AT����H�ʫ ���3E���2�[p�L
-K�}��y�0j��ܕ�
-�?����������6XX����т�P���
-�X��b�l�`a��}v
-�`��ѓ�z��dׁBX���q��u��y�1���n,ht����'�� �[��6�w ��������6 z&�n�s����*�/L� {���������g��.  ���.�3@����ԟŃ,/H���L
-��
-
-r����9�4�O @
-����4���8��0
-�\�����)�*,L�LJ
-g`L ���]}�
- �D�
-�3p ���'�\��U
-
-@�uZ0B���
-|�����t0֙����?Q�|�?Soq�0 �#�_)S
-gr! d*Xo�y� 
-"�ŭ����`�Au���8����N�[��~9b
-�{QHH�>H�G%*' �4X(�T&B������*^��s
-�bq���e[�Ƚ],�Rц6�����&I��p"�T��̲>�@�7�_Y�R .�
-�� q
-� w����
-S|��/?�ҌԀ�}�>�w盛�)EL�Yx�d��3��
-h�J x��O��W���
-���W��,��M ���%�+NT8h@9�*,�Rv�pH�0UUϏ�G
-\��PP��] g�{]�:E|�8
-�Q
-����Z��c�<<�4ܯL��"���~��@8,^~�6���ְ����EJ�� �﯄ŕB~����+�J���~���J�_)��]B��u�hB��d�/޹U�JiVc�_@K<����K�]�>�]u��� "*����4�u$��1��Ԟy
-���oP���w�.(p�b{@x+�(
-
-��+4���V5ఙtڬ�j�ȉ#�U�z=‡��S}k��n�9��r�_�,��5p� ^Y����3a1�o�a�k�Bfh���fq��΁�(������s4���+%8X��瞗� �D���]��� �-�o�R�� �
-�i �u�\DK�
-h���
-���<�-�@�W�*!���8 ֫�f��m�lT��΄��RŮ"@ �P�% ��Dz�P0�2(ݦ�
-f%���Eh?�`(8���>����Q�i���)��q�n/D��2OT���g&s
-������ss3��hwn�a��� U��|җ��;��%� �g! }�=�
-�u
-�0(\�i��5�H�
-
-�W�Y�)ϫV�A�(��\���+k!5� ��Z�y�����Z��t
-�c1w�SEO�QD�Wq�U��M��r���
-)|'y*\򪔀���#��J-bE") .���439a@�����FU
-:YѪ��J^�~vnD�-p�@���.&' 7R�Ox��
-�� 1����mu|E,d�
-�+��� �:�O�
-�vQ%@V�6s
-��> �� C����\2~�C�����z
-�At,9�;��Q!h����A d�;^yI����$u �BZ���T�v�2h�a�|�‰ \�*��'�C�NH����l��<��6�U�DN l�q3;a����0Z������@(g��`[��pE᫐�@g
-�M��
-���O �So߻j��-��
-�s
-
-~�t�mq=l@��Z��p.�@�
-P�*eC�R�'���΄WE�. VE�[�W'�@s6�������^ �t 8À�F_pX� K_������%���V�?.�+���Ju5̔���I~%h�–n�A�
-��Y(
-� ���u
-������|NA��X6�@�*�c}���[ �D�@lK���B�T��Cap����
-j�F���� {F
-SF͜
-�u
-��k$���D�����@
-
-��jD%�)x�q� g�`��J��߄2�M���h��!O�|S�M�� ��:]�� �� \{婺4 C|�k �vwA�
-7 �0.�Za�V 2�E�
-�N��O!�as�,X.��e@���C�1 1� ;
-x��
-
-@����6��NK��
-�M�@�D���H���/��;�kw*%o��G����#��[w��w8��F-���;�Z�4�QB8$h�TZ+~P�[� [����_Y��~6_*ο���������o��<-4j��gZ)��>~\��NJc%�����'8*�$�q�u��3����W~pw;q��|�� ���X.��p���ͱ<n��F@ō/p�����V���,�K�U�e���$ p[_�
-7;^�
-� H����( �, } �Ahy��i�
-�8| �%
-
-�Y)
-�'!�:����>�L����X��D�5�K���Ad�Np�-�
-��k�1�A4*��!�]�rP0h����a^ XH}G������
-���
-���|�M�YE���8
-gpd ��4,�0�[M�n�ڦd���O�z3S��֐q
-�q
-|t��]p��� ����wn�
-�
-+w��p1��Cبm
-� ���(�>��
-
-p�(��������ß?~03m�n�ś�@l��vf��
-�4��o��%?�ª��W>�'���A�j��
-�~�=
-��7r
-@���J�-�L�ُ0�@�}� Z���@��q�Ni�
-�A[��d�$?��q߼u[�?2%I����K�P�N�m�(�1S>�gq@8����p.����8�$ ``�*��x�dnnZ�xgvn{�p1;s�)
-a
-�q
-j~��
-�q
-�hT�Z���
-�����,��8�G�����|tt���
-��� ���GFn��)�r�G�E��<��~��rX d���/�qr����d�z� �ƇA̮Jsc�-#c����'��߭�f��^�{y
- �����~x����L��
-�,���@��.XD��9
-�in������gk��hk&q
-��
-
-�lTа>���bQ�%���2
-����&�o,�=�]u�p�d'[
-p�
-�������)
-� �_
- =����= �U|��h~��hn�2��>:r �AM��51Q����
-�rw��
-i��W���$�;<?���H!��od��7:�5:�� �d� ni��!hX�@�������9�
-��s@���X���9(�,-�i���
-�S �s��l��h�wpp��}���D�?Y �@��
-[b!~� �
-����
-��}
-���Q?@
-0/g��mVn�Sv^.��`�� ���x�� >|A��gp���3�n�K���N����ޔ
-��
-�Y$��B����p
-��I����謸�At�S(-h��hp��+
-��.`�G��!Y���9�W���B
-��b������Z����+�ɑ2�)������}�t��.� \�
-������W'!��+��@^���4�x�G��
-x#>�`W���
-@|�-�V
-�"���r �͟��t�&v��
-��
-X�m�9
-�ܳ�!� _�r��
-�*��p
-y�4�k��2�Ҫ�ⓥ�o���XbaCE
-���
-���rB�Ә �p
-�[(l��T�3�?�ܑ* �r
- ��%��\p�<�J���@�d�Xv�
-sK
-�>y�O�����
-��QT>�����Fȭ�C(�p��� ����������٩���ٓ�|��^�g�KR9��a�ˣ��O�D#�ي�����g�!o�oG�/[ѣ�utt��=�<}�|����>���:
-�e~s�����y���J�� �.G˗�{dR��b,n[�-��}�^��[���>v
-��g�����J �������"�GJ�i.ԐM��8�w�{����+;J��A����
-
-�������?�_]p��
-˞���́W
-a�µx��|�&��^.��X�y�?>>r!�罸�{t����٠9�=
-C�g~� �*j�\����M6�Y�]��h�7��q���
-K)�i(�
-~@ �����J��q����?=88(]��O�.����VVo��|
-�V�}���岹�*��x;pp�|y`6��Rt�H�; ��{c�9�/�;RD<��5����?�����G���
-@)��l����l�PC�9x
-.���
-��R�����}����� 28Z�<�C'g�� -L@-���q� ɀ����I�������0a6�s�����
-� �m��~Xs{$�
-n)s!�`!����o����答��z�s�{��>`�z��@���I1��/���Z��C��%� �3��{�a;� g�;��lߣ:���� X���u��R�?t�����W���T��Q@ +xנT��ʻ0)8Z�<���
-«���.Xm�_S}1/��V>���e-�)�ܸ�b;�y�$&?�ڹ T����:
-��� 0 OH�5� � G� ��n�}����˃u�H�K
-lN�^
-�A������\m�>����o�0;2E�8���d"�1
-�������7{V �q�����<}�
-�j�pоPp�|y
-p��6>��>oI6�ҙ��!f�O٩�v]���ln�+)
-
-�+6pJPt�M��
-ֱ���d��gm�� �*a����-�2��P��4-_��;�P *8���
-���kA�E��Og��tCV
-0�`!0p� �]��ص(
-���.�@Q�_ɚ��\��(�ߵ�bp�|��
-�s
-d�ox��~]8#��+v��3N
- ����ۤ�A�I��𓠭�ظ����,v��(�=�*P��<P���}�Z�J��p$?a�0x\�
-A���_� �"�}�ZRSN�$�,�3|�P)j�@��3~��p7`�A7���ا�s1=�!h6�-6
-���`�
-x 0�_`�
-�|������� @���n" -)�j���>�2��J�$"
-�*���5����' �A��ư@9 ��������
-�v�waA|u�Qt���=,Z3�jj$
-$y0�㝦 $/�_‹$�
-
-��w�
-+P�ss
-�+�χ%��n}v�7�#����[ �}'
-�������'�8C�/P�}�'
-m��fyS>4@&\\z���\�
-Ŧ]p������+�#P�?
-�d�c{�!e�=6E��$��#v�����W���L�;���v5
-�<��?�
-��Do��ai����i;�+�|��� ��#(�����e�s�cv���s~�Wȳ�/� eI����=q(OT����q�=���Cx��^�t���S�s:nVC/��kH�73'�Uޱ�)O$������r{8�_~
-Y-�q9�P����S���-�Y��(��[��J
-L��}�����Z
-·������mЌ-�xa_�п�-,%
-����n�?}��
- �KY
-�2����G���56��϶H����M�6χ��`��u
-Hl�
-��{.�NΖ��E޸����;��Fl' ���Y��CY��}VaFh
-
-�� ��ை�p��|IC����c�K��㾐
-�R��oKM��{�
-�@L���C��P@���q8� ~e��V�G�΍�g�)4�1tmxD��&Z6�v��q���Ϙ}/l���
- �E3�
-��A
-�9� ��i�RYY�e���$
-W_S�ؒ�J�ӥR)ϱ}J��<����v�q97}u>7}9w5Ǒw�DZ�k����������80m��XCܳp�9X�9_��\Z�ǹ�����8�׺��w� 8�B�4]�^��5P����?�~[[Ÿ�_ğry||d�ܲw�wF/����H�A�jX �`����'0W#,����5���ٰ0��=M�Y�*�?��h>@��o�
-�Wz��Ky�ο?~��g�o�O8V�L�d�O��
-��B(M9�si�1
-o�S=Z�t�g��6o�o���awl�l�0��gh�u����΀�ܧ"<�t���6��=��V�m?�~����y�<K?\��N�T��~n�ӊ�E�j��3�Y.��2?�ہ��::�͓�=u�C8R�D0h�w���o)ɔ�W9 \z����"@��.�G��ݻ���eI��@��-
-�Y
-�}q�7`{�԰o�տ���~��ӫ�ey��:��1G^f�>�
-��$���a�}�u�]����rm8��Ϗ���h��O����
-�(#Y�WY;��?�|��YP���8�?(��Y[���v������P
-��Y���k|���UNȪCp���
-|��O�\e?T��RP
-C��A��ǫ��/�=Է��= �y�lv�O������O>�-��#�K��
-
-n�7�m�Hz���b}
-���� �� ?y �����Y<�
-h
-?�P-�B��V�屍)A��p��z�ֻ���S���H@]@l��YF5'�K��bq����+ףG8]AX���2~�7�Ϟ=����l�W�/a� �†@�����_>q�)_"����K�ג-K�H�J� jl��ir)�ҍS�{H~{���=b����\�P��
- �����[J|�` x��݋����Xγ�ܛ�9����
-���G@e]tC�Z@�V�
-�Z����i�� ǭvp������
-
-h
-���z��
-=�� 
-��Յ9���;��@�Λ-�Ak����pO��~�E���9`�
-��� 0J�~�ry��}�
-���Uk�
-��a���;�8.�-Ϋ�^�@�^�+������O����!��߄��<�C��{
-��BG�<V<jU���c-�� $Y�(��k���� �cqO�
-��
-��Ja�I�Ӟ�D��x����0&kU��r�`ei^�ZǸܮ�O8R�L(y:�
-r�9�G�p�:I�8
-����J
-�!k��������?J^�]��<���0��2��%0B�r�A��H�'�L�\4�u�
-^�����Biy�����n���D3�
-�2��s3�b��5�j"�~�Gae|$�w��Y�]:>�O�D|�����m��:ף/!W��1\��) ���[�J4� :�ß��v�}�w��1����=b�5�5�E,
-b�z�P�$���K(9��Y����Шo {y�0F� �� ~���U�:ۖP+|�j@:
-�/~}������x�����
-X�
-<�ez��
-�N��K��.�� �նb�_l!
-��@�ۮ��o�� ��gʡ�J�� �<j���|T ��G����zx��"i_������Ց1 �G%n����K��b��
-��=���T�
-�'�<b{C5jz��B�o�����鍪0< �_�CM\�x�PZe,��Z�p�|�0.H�iH%�.��$�"]H3 �`ww��<�f
-` �1�a�+����p��m �
-�a�g��f|�ѹ�a��yk�Edk8pv�<R��j`�
-G���6��XX37p�����h�,����P ��L������MV��"�o�U�,�{����Հ`,�yD��}ۀ�l��V���y��}̈́F9�W @�T~#f�X�
-�ٕ���A1`�?2�_� | p������u�`��n�s���P
-�oKm�4[�^��f��|P�r��dr�|����#M��M�-)� Eb���r��H$8
-����@�m‰���$�Ƕw�.�(y+j��;�=�3�FD�<�����^)���u�Iǁ������{�X��CP�Q�U��_��� h����ve���q��]xV �l��g��4��-��7�V�bx�����ߤ��h�h���B�e�)_*T&F���9
-� :��=0�=���U�@@
- �A�(
-
-(�U��
-���=�����kG��!��Ջ/���
-!
-
-��wY H�7�����
-X\)��P�M���t���v>-���~����Q"h��:;9d�e�d?v�$`"������
-5�x�o0i�X��~s����:
-
-�@��'�꽰���1<9�k��A
-
-L���f^ %�a)�1-H�4
-��~{\����5&(o`��w�m'�x�yUmk<�SL$H2��S�
-4^��
-%�����J�r�+]�峗��q�e��hg2#�Hy
-�DY?X�ע��Sf�?��g���=�$�F��
-�q��~W!K����
-�J
- 8���a~���⳻��w�(�����G�٪a�1������>8�SP����ɤ�]����UW t
-�8?x��
-��;
-@��1Xp1
-���_������ 2�l� B��Gi�%�,Jk�
-�
-�q @�������@�8�O������l��~!�'�^�6@�Q���C�8H(��xg�ѾU����R�R��{Ոw�X��H$7Xp�
-
-�
-�� <
-�� �5���a��>��W&
-�rd�*��
-�� ���c#s
-�� s
-p�� 11 \�'�&��f3�
-@��� ]����+��1]�覬9`������B+�h>�||5yd�W��w�ǯ e�~������
-����@�{,�L�LwI@F�F���Pe�<f_V`
-�3f�tӈ��������L�xy����_R
-#0��|�U����]��.����&
-�����
-wM�UHHLn��\b����Jc�^`�/�?�׊�����]d�Lf�ڄm���I ���B�89.��N�[��=z@J&'gjr
-&��w��IX
-
-�o@���V�T;
-"�
-p�ª�?j?Z���d �r7a��łA� B��?�ű �좟��\�p�7�y�l��Y� ��4`�*{K�"�o�c-7r���<���A�O`=�?�9
-���s
-�����Ѝ�
-�w�<�T
-ο�Ė�v�=$`���tc?�/��6k� �>؏r!o�[��K)(
-`��`⃐2�{
-A��D ��ė�1�j�#h�t
-�q'�
-b�1����kt
-���Z�yb���� ۗ�q�p��{08�~�?�
-�!�
-�6>>m
-����
- � `�9
-�h�'z��|u��Y
->&% �/�S_b�����F���F���ukÆA�ج����菧�%�;�� ֻ����&
-���ƹ��^�rn�������j:7��G���%�O�q&Y��~
-%�kT|�T��5~���8_��
-��|s�4X�j?�
-�Y���n(�
-�P=�W#��{�g���_f�<6^>�5!����п�|���r�
-��7����>d̐��
-v��{K8k���"��
-@9��ڨBf�0W
-��Ar�Km{j�v;�he��Z�4pR��쫺��k�Z�̃'��(0
-
--��!�;�p
-(�g�Y:�;�
-Aˊ�����
-�G�T�>��|í}�Y0�V�
-͖� �% ��T8��
-� ��hd@j�v�s��k �Y��Y��PO�
-�
-@`Q@�b���FuQ\���>t �
-�X9sr���a��
-�"PNW����+PR,�g�`�b
-C�]0���2
-����d@
-@��Ab0�kS���I�X
-����p��8�7j5{Պ�ڦ��F�c �-�
-%��ja~�T�\/�*��������\6��F���L8��
- )
-�#�ڽ�7�Ì�;/��%�A�:"��}0��-ؙo���Z ֫���R�
-��v�^��\!� v�V��
-�i�k��&�ۯU:���~�
-�T�#��_S��cK���{տt9�ip����
-����D�e��
- �9
-
-� X�[���1����/��|G���[��V��y3��`�V9�f Q�%A@��|��pt�{G��!!h�I0�����<EE8
-ҁ���v
-u{�']WVJ����o�+� �p�6���1
-
-���n�l��H�}���;xG���
-AE�y�?���� ����P�����鿅 �x�DT
-�:��p|��v������G�*�$櫞׎JmDE�����-N��{e�S*
-���p��sh �+=L����J�O�
-�;*K�@��Av:���Ç�G������ӿ��)�?��Q��V<�x�G��җ�E
-�'�^£�7�Y`ң�o��h�ӹ�B�c�zo���G��s�����(Z����>��ہ���:[�>p�� �3rq
-�.�1��7�tL �
-��>8g5�> �V����`-
-���N�
-��cu�O�䍇��j�j��\���f�
-, @��@���P� ~��� �%� Q
-)�+��(��_p����_b�����$�A�.<�|�8��
-��
-K�L�^�� HN8����"@rT
-��G�H7�=.��n��U.�%�#ɎL��
-
-CZ7����a�%v|Q*����Džg�*Q+����[-h�����ݮf��QT(���',���Q7<���)�y6�~
-��D��܈�o
-0'���� �`�&6 �����
-��������:{��v�� ��:
-�
-��A�-���yḷ��-�a4ϊ|֖�e�^�%��a��c���A��쯀��|�y�h>�}?�n��@W�07�f
-�����u6^4u�������Xo�,�r��>���^͆e�
-���ʛh#��
-0#ʞ�����;JE���e�+%P���& ~��h+�̦
-
-
-`y
-��`���e;�����PU�Hk��`�=���*���
-iO��d���yߟ�%���(������fC����
-�ҟ ��*lۇ��V��i9r�b����K�=L`�S& �d���$�
-�4�n���~@�U=
-��P
-{Ԑ��_�7A��B�ň�φ�s�B����7?�֧�<h� �C�p�ŋ����8���
-@�H�IK(z�%
-����|>�1zrl��T������U��
-�`x�������gq� �V����z�� ؚF}���=�q|��q(���nq� �{/8:�&��x�O�
-�9�T
-�f���j�Y������r� �N���Y��4
-͍����% 0����H0�{��]�����ʹ�S�E��0+�e��@��?c$��AD��ǣ��.|�O#6D�qq���U5M�G�
-��q�_�����W��D8� 0xeA򑠲����G�
-
-��x���y,�|�}j�����Y��#�˘�*�����i�%g����v���Z%�U���9��1�+^���?T����
-��X� ���q=_��7c�X<�{g�SG@��]�O(�%����QU2�
-����L�v�c��$
-mf �8=���H6Yx9
-
-�F�~��t�,���~}���X^�g���W4($�����a
-�Ft7�
-���^D�8{����� �V't�A�R�doC@��@���<!-V݃$���Wd v�v��>�
-v�pu:���>�s��s
-n
-�~�D�\5���b�,I��@��
-����J��``�X��؏���s��
-��v[�A�J,��x��?s���� j
-��ﶡ(��Ac�5圤@�
-��e��-� �
-�<t& �����8
-�a< q�+�NS���Iw��<�M*�� �G{�E19 �>��őFB:������� (@�
-�m� }��y}�ry � O���LL�rI� ��H��9���X�g�ά���_�Y;{ݵ������*�1\�}�$p�|I�
-������x���µk�f��-\�S�^<�f�L��ny7ER����*�V(\�Z��M<7~�%\c���p�;�G���
-��
-�2[���
-
-u���吞Ѕ�7�`4 �k��c�"�
- �/� ��]�JXh/��y\XW���.�
-�!:Z�?����R�t�
-�˯X����䀱?V��f�$�Y$�!ǹ�\
-�?Y)���������@�y��)�\"�U�Y��.c�"��c���7
-���
-�����X�e����,
-]���x�t
-9 �]����� h��� �a?�:���
-�B��S������~?z� H�k4a/a<�aƃ�@C�D`��G���a�![!�����0j�!G%t7�s�^A8�?{�$�6%�lEg0��Mo1�������N������: V{�1K����R
- ~��V �C�&
-�Uv� �h�Q���5�A#l�����cY���@`�.��PQ-��Q��0W���7��ҵj �
-w�k8�m���^�y|,�j�G���3��i�9@��G�����\�cg�
-��<
-��=,��2�j���G��m� VC
-��R
-:� ���!
-
-�m$̏
-@���H`�XM��=���M
-� �4cr�B�L
-����� ?u] ���yN�����,�v��I�JU���������/�Z�t8� $���e�s��W,�o�i���:Y�<
-�뗧��f��"`�<�����_�
-�E���{
-Y�<
-W}?�x��wY
-9�%
-?����{H���᥸Y���ǘ�8���s��cǽ3� �
-ēq(ɿ��{p[�v���n)
-�d4��
-KH�,���L�|�W��?1���Yv
-
-�:�?��F&!
-&��� �%t� �@�G����8M�fA≒�4
-v(g]�$��9�6f!�G@r}����6{���Vi�n�m�m��fx�R��t�
-�}'
-S�ό�.* P .I
-�7Gz���Eo���ӂJd]��ǽ3��,���g�� ����md| ���R���j
-J�����oo��m��ܤ8�d?�p7�����x�$��~�`�o@K��l��=�
-#~u�?�C+��
-ey@Хt�$�`��
-gC��|ч=���1�~9�XA�]�ʳ5n�pP�3�y�=q�6�y@����k�_>l��G'u tb)�w�ck���\��JR8���*�{��*
-�w��w&���@����O��(p�p�Z32�緈I�7�g�€��H~�[(N�0G���
-�#I�M�y��
-l2 I�z2��=`z!�]Y����C@�e�W|̥
-� ˄�g�`�W;�
-����ɒM����㇁��+N ��_\�40\om��jN��O },$��%p/��>5^���� �,?
-̫���~������q9$�<
-H����4NQ>a��s��������7E�� ��|�"6�|~aabT��E���M�d�b�q
-��,����O9
-��z �NiЙi ���>Y{[�+�W�֯��,���A4[��k��8l�x�M�I�����%p�k:
- �E��rP���k?�s���ԅ����
-�-�?�
-���2.����_�//.�U�S�A3~r6W���F�L���ƞy_΁�H˃Ĺ�� �2 p>���3tb�ٱ���m:�{g ���d�N��u
-`3�Y��
-P��}.+�Z���@�"u���T
-~)��U
-��{�@� �h�D�9̝X�~�΄_�/ �� �X���)�,����B������ s �^�b �ػ�망ǽ3�/YX$
-X/��T
-
-ZF�d:�
-�`~L��S�:
-�0� @ fS
-�23��&�|C���:�+�ߡ
-�����~/z����U�{_>n����K�
-�  
-{ ���W��X�����Q��e�Ss�'����ȏ�:�8슐�e��~\�����&�n�&������Uc�C�iC%��g�1�m"�<�5N��ޙ�� uXj6P����n2�k�Ҁ�R
-a=�!�̍W�<5�e�qC�y��>��\���#+����X
-���z`?Dd�M2�|O�ոԛ��A}��b��1F( i���$��� n�%�//�o@}�p�&�gn�՘-���f�yЃ�
-��,�ę"}
-�:���_���s
-���\(P��L@дf�#=�q
-�o~�h+@��
-�q
-��̖?�ǒ����a�|3
-���U��W��X{���a�$� ��c$�O�'�D� ���ћ��D=�f���7{�W�e|��vпa��ǽ3q�(�[
-}@���d�ŀ';
-
-�8�F�L!��υ�߈�hW1�����|A��O#�1��
-�]D0��d���v�șze�����8�G4@
-5X P���r���J�r�x��� �
-���ߥ�G�Oi��]Z�8� 0�/��y%�K
-����H{�2��Z"ϳ�r��BP͹��e�����������<���߮�]gӾE\�ߣ���2
-�!�p�������˿����Q�l�E�6d��J�U�@
- �s�M\�R�a��:,�hv�O�����S
-�[%���
-bCw�}���s`���$04^����x*�]O�Q3ح��50��4��x��W�:|?���������������j�G4�V���1�Y��.�apbS|�t ����O�����u������ٌ"����������� �͹�����a�a��a3<�sz��J7�E?=mr�;P��� HO�V�VY��:�F)d:�c]N�t�w,,��qd96iݠ�t��
-��-:CpG�fm��ޜ���K���?S
-�@���t��G����!J (gAW�[�5�
-r
-�T�����F!��lE��c��b�4D�6W# ���˙�����N�#He�O�y��
-��
-`�L8
-� ���4���}�T��8� V�!�!p �*�,�wX�
-�\ �8.����N��g�{���3��9XQ��j���𜈺�3��ģF�M~E��3ώ?��2�˝��| ��Zlbѿ �Īs
-�����F��<>�-c�)���\��AD��1x�����~ħ.��b2
- -�d�G(���7^�cz��w�9 �-�t��R$�ɮ�!�?-�fBO�L<
-s�Y @����
-w�W� �׭/��}�J����UƵ �Ik��@����P\k�R�ن��`� ���4�8� �qh �Y�)����1E��9�ܹ��
-G��
-���
-��
-`u 8
-i�jX�~�}$��t@ڟ
-P��&٧�4�(��(��5�U0��@w�l����{@ �t�Ш
-��+v:��5YH���$��+���_�X�I�
-��K���C���
-����wS���wI����}�C�� �2��{���ګ����犽{Wz5�&
-��8
-�9h���
-�j�� ��~u睌�Ԉ�bK
-@��Y �@�
-�(hr�P�*1Fc& ����&�T�^�Tp�\r�G���H�H�����_�d
-�i��/�T�V&�??99y�
-XT_������kװ~���~uv�v�z߮��R�
-�4W�%�H�������P@I
-)
-`�t�VWWAy��Az�9�5������:���� �lnnm" ��.����ZOL2B� ��5o�9�MiP�(���x�a ��&��~�� �V�0M���+嶒Rlee����]i|g���
-
-`,L��
-�?{)v:
-���l�bbL�� �J
-(^,��In���0e�7�� �N6���W�;�R
-�
-~֞��
-�E
-�[o�i1�o)C�4=�r��������Z��� ��?���z6��߅ ��9
-�yG��@=l�5�FO�F���a�̈́�'���_�_�}����˧O�z���G�0�o܈����C�����n��G�w~���ᱭo�͸��� �()4fc܁��Y>9�!<aMWk��qtpx�mQ��#!��a�߯1{ >�{g�$���L������W�ZP �t�ޭӥB2
- �MTV��D
-�c�֍Z��Ԫ�6x�R��N�9�6f��{˺��8^K�/�A����^�ڥK�\��bۍ�<����
-��d���Z�*�A%�.���V��{�y��zu�W�5ϯ��\�M�0����� w���w�Ї)��rf!�[�k�33�6S
-�3 w�k��i�@<BY����]=
-�*��5���`���j߹�r���l���$�B�[�2��C�٭m
-���]�K�
-çO_�a�!�3�x����+����4���N
-Eܣ��^˱-�J��J�a)l���"�Q�͖T���q��Q�X���3.R�����0<m:����U1
-�
-��yu�m铳��|� �)~)������?�U�&�[m��2Ԕ-1��
-�)�
-� ����j �(��qh9�~�&O�y ޼�_ �z
-ֱ�`�8(���5�!�ﭔ �� ���J�Ee2��q�R�
-��t
-����1��l�oġU���n��2TTn���2\B��ކG1��̎��7� /��Kx�Eܺ�Z����6�L�*x� *@TÛ8� �*� ��{�f�g'����P#[���aw ���ڭ�u��`��$<�H�
-��4
-�NDgiKRh�
-Ua�l
-�k�4
-l
-�/�
-
-��@Z,?����s ������
-P�9z����K����سS◘EyXm����kRd��E/X���O7�0w=q���Κ����9
-~�P��"� �0���I�C�(�(�_?��R
-����
-@ M?�0  P&�� �M�e2�_��L
-�����FI���1��po�߁�P�/�����Ύ3
-U��p���Y���+�%��O`1‰�
-�o����hD�߿o���̤ڡ �����!�r�8��viM!_!�=�
-o���.��q�����r�5�ƙ��"Q
-����2 A����-�Ax�o%
-��Ҭ�!��}.-����ay���Np�. ���JhOz�����
-*�?��0A�ǖ(����D 0Wɟ����'�z8~�
-@���G?��'�0�4��
-�>y�e���i�W;"m���~�U�������O��F#~�4��W���Wo��px���_=y��ŗOvg����3ޮ����AƏÕp7?�����n�����G)�W"<�aߵ�<��� �y6gK����@9
-���7ߛo,ռ�7�J��Z͏^�v?�Y7�k���T�_�ިVggo�V�^mi�R�M^��U�G@ ��c����`�_�Z`?E��_e���?_��gw?؝�������{��yܛ7���������p�la2���w�5VQ�O:}j8~c ݏ�L ,���,�N
-
-�~�~��$��
-�Þ�ac7
-�&�.�� ������?��C3��>����?������R�Sܚ7{T��2����n��H����O��GK�%pO�ћ��d.W[j,5x�����7܄�m�k��*6����k��fZ���
-�#�����~���5�����O��W�@���[���vߗ%
-P.��
-�_��_���?&���}�'*hS�w
-��l�h��A0xfX�_�?�2[��&&@]��W�����Hu
-������~�0�Z�!�8���$��ظ�C�
-��ƁFq`� �]�� ����~N�k `�y
-���߇
-��uyK�q1�@��
-�ĞW�(
-�
-�(�������ۿ�o������� ���Af
-
-��u���ŀ��`> �m���"&e�Sc�v�d1߽-��u~�T~��_3��������;)����o e���o~��k:t
-a�/��NѪ�IKM�$�t�A ���D�
- ,`�7�Hp�,���
-\����T�?����',Ya����� �.0:���
-�菘z�y
-1���G��]l� g�o�������{����I����x�n<
-�h�v�7�����X jK�Zc��˚��Eo5j�^n��ů��]L��S��X�@�8���^b=  �P�P֛�������8@�d������)p
-x�;�㻐��=��̗Ģf�0�
-�
-{��E3p�w<s�y�B�Q
-�X]og
-�|�d���Y��OZ
-
-*~8F����8��a���u�L`��Z]�� 
-��c�A|���@�']D��n �4�I�4��
-�K! �� 
-��@,�0WS[BLL�S�5���?ym���_�S
-�gY hac�!�l�
-�_����J�b� ����9��|�e1z
-�%x�4��\c����l�d[Fe
-��,.h�066 �[ͬQ�n�3А�?��W�n2`"P�˿�
-Ǐ�\�h�@pV~�@0Ax=+�Kh@.���D�
-�AI
-Jc�YD�Lb�c��� /�
-|.�E�
-�w��u�9�ק�tĹ��GK��LL����]�
-���P�@��C3�"�K=q~�Ro�T��۪���vP��� H
-R �GLK�
-�s!D d>�=W��W?�c�?�M��R����?^ϒ
-@�"`�@�
-�*C#E�c�1� <��q x�#
-�o!
-����3�
-@c);���19K�v
-���F��A����=�|��./�`�o �KtDٺ@2��2�O��t�l�%m#z� �F��k�i
-�l��ͧg�G�o=����@��ζ�w�xbKI��/��bo
-
- 0���6�p�)@"�"$�!) �x�[�'�c� h=`!A���W���sy�lр�+p�1ߡh�րH��~���#��f��Z�C�*���
-�8
-8i|=�Y^�:��O��Z����sG�����괋3����MDŒ�����mu�3n�!�VV@ ����N�)==�z;z%hm���r�ϲŶ;ъ���U�(�Z���~e���lu�#v�ϼ��ۧ;��c����ܺy;�;�9
-N/��  jE3�������`qW�s���16&����� �Hnn�݆Y8����Q@}��/L
-��
-��O�J?m����t*h�gJ�)�����E�?�i4�0�l7��-M�Cʛ(�
-|��������}�}8�[�mu��I�U|�#���#�_���Y�%�gxD�3{pv�9<
-rth�GG���>�q��W���~�RS{�Z����1 ��p(
-
-��>f��N�to4�����b_<��A8\
-x��q���j:�����} ������.e��]/���-�����w���/�EhE�F؞@0}��n����+����Pf �?�5_�2
-HR^'����9�cP��0V��Ab �2��"b?�Y0 �Si�$�X��g�s!@�����K�wk]�
-����>Z�Sp���pG��e����i��3��*�YP1`����~�^��ӏ?bc�pnŊA�~y
-�)
-�9M}lcLt �~p_�+���M�
-�Q�ʹ2誘(�3�U��� z v
-��x҅}~�(
-�u
-��#���2�h��D�i�AZ�əw*N�.bZ,ǎ>\Na�����+������z?\�gb̍��.0
-�Ղ�n�
-
-P:EPr
-J�N
-���@�I� �~-'!k=�X���~+�TH򫔍���?�=v,c \�Y�`�`�@�
-��e`�B���؂��b!�h�p
-��@�
-T��~$�> 7�����,BL�@� ��r�����Ky;1�t�,�瞚1
-��;���y!
-�`�u��Ў�.� �
-
-
-�#�ck�u� C�(
-���^P�Z���W�
-5X��0�:
-�$@X��_[��A@�J�� ]R�� U y�E��;
-�Ӆ�P�Q�]���|���������V�@��\�y
-�X}�9lJ���S�v�
-9J``��
-`����P8��z� �k�
-��7��\��~R0"����
-Ӂ�
-(���|d�T,N^�;��u��pp�0��Qz���48g�TxH����9p
-���V¯ }��D"�=�S^t�&)��%HW�UЫ#�R��iG��q_G���8<7"@������K�(�;���
-@f~~�<o� S}@��9��D
-_�;2
-�� /��K``���~U����dLYP���eG 0��������� b�� �I
-�-T�&�7�?9��}u_�p���ܤ;���}��w��@��I��Ã^��pĤ�9�c�Ȍ�1�1�c�]�`M@*@�$��O���.�!
-
-F������v{����������5d���V;��ׁ]����?���u:p�⎦�ۛ7o.���=�i����`P@(�������2
-���`�9H�� ����k)�u�q7l�#%?sbhh�9�3�����
-P�����"�(b�3܎u''OON���Rp:(�;1�+�6�����^o�����O�;o�4X� ��`��p�2`
- �
-H��.���)`I�D
-�Xkf���3���Z+_�_�$^��k.����”�
-
-
-���� ���� ��.`>���k �Ѭ�@��#�B Q���S�^��`L��
-�hT���J����.P�^��#c��t�)�魠����Y�
-�D}��X�U,����y��/����� ~��a��T�;�aH�H��ϲђ��իW]
-|
-\�g�NHβ��6P�h�fI��Ԃ��Z>�ҿ�u~}�9�L��A����
-@3̲p�E
-�_�wH�Fp��� E8�a�LG�����R��,�
-E���
- ��<4� `����ܜ�� �#�A.���>e��o�
-��s^Cu.?B�S@T���{�S��f���i��R}��7V�!�����@ y�B۪�0�`y��{�� ���J�
-�������kk�(���� S^��ڪz���;�=�m
-�`��F9
-����\m���B�R�{�@
-
-t
- pc��V�urt�8�M���^(
-��;
-pA��ţ4)�ܓ�1���<����l�v�/�a*y:*Z �^y�8�$r�ڔ:� L`�� ��*��
-����{�� &
-P�F9r�����<��
-��!� �Z�8��
-�'
-6��l#t_p�3X,�O
-�]���>IcKb�������?fF�'J7��^�,h6ևO������W�����E��a��
-p�Fn�EY�H����&��h�g�P�0�~���:�Σ
-�ߊf��Bu��`�!w�o���F7f�q��ӳ���c�
-��L��I��=� g����8
- ��ɲ�/\�<y����q�e�|||*hU��Z�
-����\��v��Kk<���C�y
-G�E��$
-��
-//p��3 R
-
-��,�����[�``2@��l���on_}��!�ŧ2x�o��
-�C�k��g��"P�ݧ���Up>
-��;
-v p
-p���{�t�I�S�9ܫ����7� ��$FF
-���y�a�j�zf���
-Z�r
-߽�cE q& ���}
-8�M0�>�oS���u쎹���aY�
-�E��7�v3Z�:��p�pA�vmgs
-{Q��"P��EK����s�~ ���
-�9�<@� ��
-��9����/� ��KQ(?^�R��'�St�`�uZ$��/`3��ƨ��� 06�u���%�48�� � ��?Y
-�p�I�y���
-Q������R��G5M
-� � ��kz���\�B 32�I
-�0i�Z� )X
-`
-pw����3�<
-��0�H�����] �c�n=
- ����T@lF��.��N�vs
diff --git a/examples/web/models/models_mesh_picking.html b/examples/web/models/models_mesh_picking.html
deleted file mode 100644
index 8592ae0..0000000
--- a/examples/web/models/models_mesh_picking.html
+++ /dev/null
@@ -1 +0,0 @@
-<!doctypehtml><html lang=en-us><head><meta charset=utf-8><meta content="text/html; charset=utf-8"http-equiv=Content-Type><title>raylib HTML5 GAME</title><meta content="raylib HTML5 GAME"name=title><meta content="New HTML5 videogame, developed using raylib videogames library"name=description><meta content="raylib, games, html5, programming, C, C++, library, learn, videogames"name=keywords><meta content="width=device-width"name=viewport><meta content="raylib HTML5 GAME"property=og:title><meta content=image/png property=og:image:type><meta content=https://www.raylib.com/common/img/raylib_logo.png property=og:image><meta content=raylib.com property=og:site_name><meta content=https://www.raylib.com/games.html property=og:url><meta content="New HTML5 videogame, developed using raylib videogames library"property=og:description><meta content=summary name=twitter:card><meta content=@raysan5 name=twitter:site><meta content="raylib HTML5 GAME"name=twitter:title><meta content=https://www.raylib.com/common/raylib_logo.png name=twitter:image><meta content=https://www.raylib.com/games.html name=twitter:url><meta content="New HTML5 videogame, developed using raylib videogames library"name=twitter:description><link href=https://www.raylib.com/favicon.ico rel="shortcut icon"><style>body{font-family:arial;margin:0;padding:none}#header{width:100%;height:80px;background-color:#888}#logo{width:64px;height:64px;float:left;position:relative;margin:10px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAAlC+aJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjExR/NCNwAAA7JJREFUaEPtk0FyWzEMQ+37X7fZhxX4YY3AD1OKF1nkzTRlSBCCLeVBnvl/AUdaELOunPno1kts1kixdtEZKVs+xIxebBkZsVknn/L5nFGDLR8T4zVC9fX19S/+tTFijrYK4jUjbPUtqBHpnEE6PkZD7jQZV8n5Recw1XQKciZuPaEtR6UjNs5ENVGMsBVqpPtER0ZMOhpyp8m4YL4OjD9yxsyZxnQycfMJETNSzsRE1+dihK3YMiJmpHTW3xpmXPC6BXlCHfqnBlsjY5hxf/6EVEOM2BTEi0fYCX4ONSI6Kq3Blg/prIOMq2CsRur4KQ0x64SdjOufEDEdHZGOhmz5RDHCVqhRuQ86YsVskbc+GXchLiHnFyYH+UigQDVGnImbT8hwFkgLg2qiM8JO6Ylx1FNLa3DmYwqCTsZd4BPqGJG7MwKzpeiWKTKxXkLMVE3MSOmsdwxLH6Rd/wCCLSNDx6djeKfJuArGeoYamRHpaEjnCBYZVy8hZqo2GI36qPjsiOiMsBXGcev4Mx9TLGTchbgEjN/uz6jGrBvDjg+LTNx8Qp2CbG2xMKgmOiPslJ4Yxx+eSnSkzlosZNwFPiHl7FRTkLNRJm4+IeVM0ymIH42wE/wcKalQI4MRl4EW3p6VcRWMua8F6WjIlqZDxvVPiHQ6CjVbYkV9ohhhp/Rk1wiYgpyJ78i4CsZbjkb8Qx+ihvzu3RPaKogZkY6GlEeMsKdPSOFIC8VoOusg44L5c+T8ouOoGhWbdWJ8tMi4egkxo4hoh2yNTGf3iIyr5Lyic4bRENXo+lvDjAt4C1Hk/OKtUaAj0+n4dMSZ2D+hrYJsaYh2SClG2jV9kJKKzhlGQ1SsW299Mq6C8dYZHTExo8fzieI5ivipYnYy7nwJqGKmOYyRwfiUBXITfh5qSHRGWEkfqJqURgvsdHyWYv7Ko8DnYYegk3EB00cxprdrJRzFd7YQzawu8L1GMTYS/KpPaAFTkIn1EmJmspJSs5xBzSyGhlkBmlxfNFiP5mw4wlbMh4F5Ddxp5jNINBdCEz9zPOC1zD7Q0HBdmXndwv0TMtydEdzlWJT4VZ8Qt9Qn4/onxMIwa5ZYGJU5yufBiCjwE50AGjLCVuS8Yt4H7OgZLKK5EKOsLviEWJSL/+0uMi7gLUSBseYwqEbXvSHCec1CJvZPyHCmYQffaBBfOTCGHM2aEbZi1+gO1XTWVXMnzrhAn5DSOZVsiQlHnSITKzGj6DeTcZWc/3oy7h9//PF4PL4BlvsWrb6RE+oAAAAASUVORK5CYII=)}.emscripten{padding-right:0;margin-left:auto;margin-right:auto;display:block}div.emscripten{text-align:center}div.emscripten_border{border:1px solid #000}canvas.emscripten{border:0 none;background:#000;width:100%}.spinner{height:30px;width:30px;margin:0;margin-top:20px;margin-left:20px;display:inline-block;vertical-align:top;-webkit-animation:rotation .8s linear infinite;-moz-animation:rotation .8s linear infinite;-o-animation:rotation .8s linear infinite;animation:rotation .8s linear infinite;border-left:5px solid #000;border-right:5px solid #000;border-bottom:5px solid #000;border-top:5px solid red;border-radius:100%;background-color:#f5f5f5}@-webkit-keyframes rotation{from{-webkit-transform:rotate(0)}to{-webkit-transform:rotate(360deg)}}@-moz-keyframes rotation{from{-moz-transform:rotate(0)}to{-moz-transform:rotate(360deg)}}@-o-keyframes rotation{from{-o-transform:rotate(0)}to{-o-transform:rotate(360deg)}}@keyframes rotation{from{transform:rotate(0)}to{transform:rotate(360deg)}}#status{display:inline-block;vertical-align:top;margin-top:30px;margin-left:20px;font-weight:700;color:#282828}#progress{height:0;width:0}#controls{display:inline-block;float:right;vertical-align:top;margin-top:15px;margin-right:20px}#output{width:100%;height:140px;margin:0 auto;margin-top:10px;display:block;background-color:#000;color:#25ae26;font-family:'Lucida Console',Monaco,monospace;outline:0}input[type=button]{background-color:#d3d3d3;border:4px solid #a9a9a9;color:#000;text-decoration:none;cursor:pointer;width:140px;height:50px}input[type=button]:hover{background-color:#f5f5f5ff;border-color:#000}</style></head><body><div id=header><a href=https://www.raylib.com id=logo></a><div class=spinner id=spinner></div><div class=emscripten id=status>Downloading...</div><span id=controls><span><input onclick=Module.requestFullscreen(!1,!1) type=button value="🖵 FULLSCREEN"></span><span><input onclick=toggleAudio() type=button value="🔇 SUSPEND"id=btn-audio></span></span><div class=emscripten><progress hidden id=progress max=100 value=0></progress></div></div><div class=emscripten_border><canvas class=emscripten id=canvas oncontextmenu=event.preventDefault() tabindex=-1></canvas></div><textarea id=output rows=8></textarea><script src=https://cdn.jsdelivr.net/gh/eligrey/FileSaver.js/dist/FileSaver.min.js></script><script>function saveFileFromMEMFSToDisk(e,a){var t,i=/^((?!chrome|android).)*safari/i.test(navigator.userAgent),o=FS.readFile(e);t=i?new Blob([o.buffer],{type:"application/octet-stream"}):new Blob([o.buffer],{type:"application/octet-binary"}),saveAs(t,a)}</script><script>var statusElement=document.querySelector("#status"),progressElement=document.querySelector("#progress"),spinnerElement=document.querySelector("#spinner"),Module={preRun:[],postRun:[],print:function(){var e=document.querySelector("#output");return e&&(e.value=""),function(t){arguments.length>1&&(t=Array.prototype.slice.call(arguments).join(" ")),console.log(t),e&&(e.value+=t+"\n",e.scrollTop=e.scrollHeight)}}(),printErr:function(e){arguments.length>1&&(e=Array.prototype.slice.call(arguments).join(" ")),console.error(e)},canvas:function(){var e=document.querySelector("#canvas");return e.addEventListener("webglcontextlost",(function(e){alert("WebGL context lost. You will need to reload the page."),e.preventDefault()}),!1),e}(),setStatus:function(e){if(Module.setStatus.last||(Module.setStatus.last={time:Date.now(),text:""}),e!==Module.setStatus.last.text){var t=e.match(/([^(]+)\((\d+(\.\d+)?)\/(\d+)\)/),n=Date.now();t&&n-Module.setStatus.last.time<30||(Module.setStatus.last.time=n,Module.setStatus.last.text=e,t?(e=t[1],progressElement.value=100*parseInt(t[2]),progressElement.max=100*parseInt(t[4]),progressElement.hidden=!0,spinnerElement.hidden=!1):(progressElement.value=null,progressElement.max=null,progressElement.hidden=!0,e||(spinnerElement.style.display="none")),statusElement.innerHTML=e)}},totalDependencies:0,monitorRunDependencies:function(e){this.totalDependencies=Math.max(this.totalDependencies,e),Module.setStatus(e?"Preparing... ("+(this.totalDependencies-e)+"/"+this.totalDependencies+")":"All downloads complete.")}};Module.setStatus("Downloading..."),window.onerror=function(){Module.setStatus("Exception thrown, see JavaScript console"),spinnerElement.style.display="none",Module.setStatus=function(e){e&&Module.printErr("[post-exception status] "+e)}}</script><script>var audioBtn=document.querySelector("#btn-audio");const audioContexList=[];function toggleAudio(){var t=!1;audioContexList.forEach(e=>{"suspended"==e.state?(e.resume(),t=!0):"running"==e.state&&e.suspend()}),audioBtn.value=t?"🔇 SUSPEND":"🔈 RESUME"}self.AudioContext=new Proxy(self.AudioContext,{construct(t,e){const n=new t(...e);return audioContexList.push(n),"suspended"==n.state&&(audioBtn.value="🔈 RESUME"),n}})</script><script src=models_mesh_picking.js async></script></body></html> \ No newline at end of file
diff --git a/examples/web/models/models_mesh_picking.js b/examples/web/models/models_mesh_picking.js
deleted file mode 100644
index b0674d4..0000000
--- a/examples/web/models/models_mesh_picking.js
+++ /dev/null
@@ -1 +0,0 @@
-var Module=typeof Module!=="undefined"?Module:{};if(!Module.expectedDataFileDownloads){Module.expectedDataFileDownloads=0}Module.expectedDataFileDownloads++;(function(){var loadPackage=function(metadata){var PACKAGE_PATH;if(typeof window==="object"){PACKAGE_PATH=window["encodeURIComponent"](window.location.pathname.toString().substring(0,window.location.pathname.toString().lastIndexOf("/"))+"/")}else if(typeof location!=="undefined"){PACKAGE_PATH=encodeURIComponent(location.pathname.toString().substring(0,location.pathname.toString().lastIndexOf("/"))+"/")}else{throw"using preloaded data can only be done on a web page or in a web worker"}var PACKAGE_NAME="models/models_mesh_picking.data";var REMOTE_PACKAGE_BASE="models_mesh_picking.data";if(typeof Module["locateFilePackage"]==="function"&&!Module["locateFile"]){Module["locateFile"]=Module["locateFilePackage"];err("warning: you defined Module.locateFilePackage, that has been renamed to Module.locateFile (using your locateFilePackage for now)")}var REMOTE_PACKAGE_NAME=Module["locateFile"]?Module["locateFile"](REMOTE_PACKAGE_BASE,""):REMOTE_PACKAGE_BASE;var REMOTE_PACKAGE_SIZE=metadata["remote_package_size"];var PACKAGE_UUID=metadata["package_uuid"];function fetchRemotePackage(packageName,packageSize,callback,errback){var xhr=new XMLHttpRequest;xhr.open("GET",packageName,true);xhr.responseType="arraybuffer";xhr.onprogress=function(event){var url=packageName;var size=packageSize;if(event.total)size=event.total;if(event.loaded){if(!xhr.addedTotal){xhr.addedTotal=true;if(!Module.dataFileDownloads)Module.dataFileDownloads={};Module.dataFileDownloads[url]={loaded:event.loaded,total:size}}else{Module.dataFileDownloads[url].loaded=event.loaded}var total=0;var loaded=0;var num=0;for(var download in Module.dataFileDownloads){var data=Module.dataFileDownloads[download];total+=data.total;loaded+=data.loaded;num++}total=Math.ceil(total*Module.expectedDataFileDownloads/num);if(Module["setStatus"])Module["setStatus"]("Downloading data... ("+loaded+"/"+total+")")}else if(!Module.dataFileDownloads){if(Module["setStatus"])Module["setStatus"]("Downloading data...")}};xhr.onerror=function(event){throw new Error("NetworkError for: "+packageName)};xhr.onload=function(event){if(xhr.status==200||xhr.status==304||xhr.status==206||xhr.status==0&&xhr.response){var packageData=xhr.response;callback(packageData)}else{throw new Error(xhr.statusText+" : "+xhr.responseURL)}};xhr.send(null)}function handleError(error){console.error("package error:",error)}var fetchedCallback=null;var fetched=Module["getPreloadedPackage"]?Module["getPreloadedPackage"](REMOTE_PACKAGE_NAME,REMOTE_PACKAGE_SIZE):null;if(!fetched)fetchRemotePackage(REMOTE_PACKAGE_NAME,REMOTE_PACKAGE_SIZE,function(data){if(fetchedCallback){fetchedCallback(data);fetchedCallback=null}else{fetched=data}},handleError);function runWithFS(){function assert(check,msg){if(!check)throw msg+(new Error).stack}Module["FS_createPath"]("/","resources",true,true);Module["FS_createPath"]("/resources","models",true,true);function DataRequest(start,end,audio){this.start=start;this.end=end;this.audio=audio}DataRequest.prototype={requests:{},open:function(mode,name){this.name=name;this.requests[name]=this;Module["addRunDependency"]("fp "+this.name)},send:function(){},onload:function(){var byteArray=this.byteArray.subarray(this.start,this.end);this.finish(byteArray)},finish:function(byteArray){var that=this;Module["FS_createDataFile"](this.name,null,byteArray,true,true,true);Module["removeRunDependency"]("fp "+that.name);this.requests[this.name]=null}};var files=metadata["files"];for(var i=0;i<files.length;++i){new DataRequest(files[i]["start"],files[i]["end"],files[i]["audio"]).open("GET",files[i]["filename"])}function processPackageData(arrayBuffer){assert(arrayBuffer,"Loading data file failed.");assert(arrayBuffer instanceof ArrayBuffer,"bad input to processPackageData");var byteArray=new Uint8Array(arrayBuffer);DataRequest.prototype.byteArray=byteArray;var files=metadata["files"];for(var i=0;i<files.length;++i){DataRequest.prototype.requests[files[i].filename].onload()}Module["removeRunDependency"]("datafile_models/models_mesh_picking.data")}Module["addRunDependency"]("datafile_models/models_mesh_picking.data");if(!Module.preloadResults)Module.preloadResults={};Module.preloadResults[PACKAGE_NAME]={fromCache:false};if(fetched){processPackageData(fetched);fetched=null}else{fetchedCallback=processPackageData}}if(Module["calledRun"]){runWithFS()}else{if(!Module["preRun"])Module["preRun"]=[];Module["preRun"].push(runWithFS)}};loadPackage({"files":[{"filename":"/resources/models/turret.obj","start":0,"end":57129,"audio":0},{"filename":"/resources/models/turret_diffuse.png","start":57129,"end":437249,"audio":0}],"remote_package_size":437249,"package_uuid":"2069dfe3-6f35-47dd-85b8-7b62e715e9ec"})})();var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram="./this.program";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window==="object";ENVIRONMENT_IS_WORKER=typeof importScripts==="function";ENVIRONMENT_IS_NODE=typeof process==="object"&&typeof process.versions==="object"&&typeof process.versions.node==="string";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require("path").dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require("fs");if(!nodePath)nodePath=require("path");filename=nodePath["normalize"](filename);return nodeFS["readFileSync"](filename,binary?null:"utf8")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);if(typeof module!=="undefined"){module["exports"]=Module}process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",abort);quit_=function(status){process["exit"](status)};Module["inspect"]=function(){return"[Emscripten Module object]"}}else if(ENVIRONMENT_IS_SHELL){if(typeof read!="undefined"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer==="function"){return new Uint8Array(readbuffer(f))}data=read(f,"binary");assert(typeof data==="object");return data};if(typeof scriptArgs!="undefined"){arguments_=scriptArgs}else if(typeof arguments!="undefined"){arguments_=arguments}if(typeof quit==="function"){quit_=function(status){quit(status)}}if(typeof print!=="undefined"){if(typeof console==="undefined")console={};console.log=print;console.warn=console.error=typeof printErr!=="undefined"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!=="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf("/")+1)}else{scriptDirectory=""}{read_=function(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=function(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var STACK_ALIGN=16;function alignMemory(size,factor){if(!factor)factor=STACK_ALIGN;return Math.ceil(size/factor)*factor}function warnOnce(text){if(!warnOnce.shown)warnOnce.shown={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;err(text)}}var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime=Module["noExitRuntime"]||true;if(typeof WebAssembly!=="object"){abort("no native wasm support detected")}function setValue(ptr,value,type,noSafe){type=type||"i8";if(type.charAt(type.length-1)==="*")type="i32";switch(type){case"i1":HEAP8[ptr>>0]=value;break;case"i8":HEAP8[ptr>>0]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":tempI64=[value>>>0,(tempDouble=value,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;default:abort("invalid type for setValue: "+type)}}var wasmMemory;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}var ALLOC_NORMAL=0;var ALLOC_STACK=1;function allocate(slab,allocator){var ret;if(allocator==ALLOC_STACK){ret=stackAlloc(slab.length)}else{ret=_malloc(slab.length)}if(slab.subarray||slab.slice){HEAPU8.set(slab,ret)}else{HEAPU8.set(new Uint8Array(slab),ret)}return ret}var UTF8Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heap,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heap[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str="";while(idx<endPtr){var u0=heap[idx++];if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heap[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heap[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u0=(u0&7)<<18|u1<<12|u2<<6|heap[idx++]&63}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||16777216;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;__ATINIT__.push({func:function(){___wasm_call_ctors()}});function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){FS.ignorePermissions=false;callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}what+="";err(what);ABORT=true;EXITSTATUS=1;what="abort("+what+"). Build with -s ASSERTIONS=1 for more info.";var e=new WebAssembly.RuntimeError(what);throw e}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix="file://";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile="models_mesh_picking.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}else{throw"both async and sync fetching of the wasm failed"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch==="function"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={"a":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;wasmMemory=Module["asm"]["ae"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module["asm"]["de"];removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiatedSource(output){receiveInstance(output["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming==="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch==="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync();return{}}var tempDouble;var tempI64;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback(Module);continue}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){wasmTable.get(func)()}else{wasmTable.get(func)(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}function ___assert_fail(condition,filename,line,func){abort("Assertion failed: "+UTF8ToString(condition)+", at: "+[filename?UTF8ToString(filename):"unknown filename",line,func?UTF8ToString(func):"unknown function"])}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path==="/")return"/";path=PATH.normalize(path);path=path.replace(/\/$/,"");var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}};function getRandomDevice(){if(typeof crypto==="object"&&typeof crypto["getRandomValues"]==="function"){var randomBuffer=new Uint8Array(1);return function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]}}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");return function(){return crypto_module["randomBytes"](1)[0]}}catch(e){}}return function(){abort("randomDevice")}}var PATH_FS={resolve:function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!=="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=path.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(function(p){return!!p}),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:function(from,to){from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start<arr.length;start++){if(arr[start]!=="")break}var end=arr.length-1;for(;end>=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i<length;i++){if(fromParts[i]!==toParts[i]){samePartsLength=i;break}}var outputParts=[];for(var i=samePartsLength;i<fromParts.length;i++){outputParts.push("..")}outputParts=outputParts.concat(toParts.slice(samePartsLength));return outputParts.join("/")}};var TTY={ttys:[],init:function(){},shutdown:function(){},register:function(dev,ops){TTY.ttys[dev]={input:[],output:[],ops:ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open:function(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close:function(stream){stream.tty.ops.flush(stream.tty)},flush:function(stream){stream.tty.ops.flush(stream.tty)},read:function(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i<length;i++){var result;try{result=stream.tty.ops.get_char(stream.tty)}catch(e){throw new FS.ErrnoError(29)}if(result===undefined&&bytesRead===0){throw new FS.ErrnoError(6)}if(result===null||result===undefined)break;bytesRead++;buffer[offset+i]=result}if(bytesRead){stream.node.timestamp=Date.now()}return bytesRead},write:function(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.put_char){throw new FS.ErrnoError(60)}try{for(var i=0;i<length;i++){stream.tty.ops.put_char(stream.tty,buffer[offset+i])}}catch(e){throw new FS.ErrnoError(29)}if(length){stream.node.timestamp=Date.now()}return i}},default_tty_ops:{get_char:function(tty){if(!tty.input.length){var result=null;if(ENVIRONMENT_IS_NODE){var BUFSIZE=256;var buf=Buffer.alloc?Buffer.alloc(BUFSIZE):new Buffer(BUFSIZE);var bytesRead=0;try{bytesRead=nodeFS.readSync(process.stdin.fd,buf,0,BUFSIZE,null)}catch(e){if(e.toString().indexOf("EOF")!=-1)bytesRead=0;else throw e}if(bytesRead>0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function mmapAlloc(size){var alignedSize=alignMemory(size,16384);var ptr=_malloc(alignedSize);while(size<alignedSize)HEAP8[ptr+size++]=0;return ptr}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray:function(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage:function(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity<CAPACITY_DOUBLING_MAX?2:1.125)>>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage:function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr:function(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr:function(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp;old_node.parent=new_dir},unlink:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir:function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i<size;i++)buffer[offset+i]=contents[position+i]}return size},write:function(stream,buffer,offset,length,position,canOwn){if(!length)return 0;var node=stream.node;node.timestamp=Date.now();if(buffer.subarray&&(!node.contents||node.contents.subarray)){if(canOwn){node.contents=buffer.subarray(offset,offset+length);node.usedBytes=length;return length}else if(node.usedBytes===0&&position===0){node.contents=buffer.slice(offset,offset+length);node.usedBytes=length;return length}else if(position+length<=node.usedBytes){node.contents.set(buffer.subarray(offset,offset+length),position);return length}}MEMFS.expandFileStorage(node,position+length);if(node.contents.subarray&&buffer.subarray){node.contents.set(buffer.subarray(offset,offset+length),position)}else{for(var i=0;i<length;i++){node.contents[position+i]=buffer[offset+i]}}node.usedBytes=Math.max(node.usedBytes,position+length);return length},llseek:function(stream,offset,whence){var position=offset;if(whence===1){position+=stream.position}else if(whence===2){if(FS.isFile(stream.node.mode)){position+=stream.node.usedBytes}}if(position<0){throw new FS.ErrnoError(28)}return position},allocate:function(stream,offset,length){MEMFS.expandFileStorage(stream.node,offset+length);stream.node.usedBytes=Math.max(stream.node.usedBytes,offset+length)},mmap:function(stream,address,length,position,prot,flags){if(address!==0){throw new FS.ErrnoError(28)}if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}var ptr;var allocated;var contents=stream.node.contents;if(!(flags&2)&&contents.buffer===buffer){allocated=false;ptr=contents.byteOffset}else{if(position>0||position+length<contents.length){if(contents.subarray){contents=contents.subarray(position,position+length)}else{contents=Array.prototype.slice.call(contents,position,position+length)}}allocated=true;ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}HEAP8.set(contents,ptr)}return{ptr:ptr,allocated:allocated}},msync:function(stream,buffer,offset,length,mmapFlags){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}if(mmapFlags&2){return 0}var bytesWritten=MEMFS.stream_ops.write(stream,buffer,0,length,offset,false);return 0}}};var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,trackingDelegate:{},tracking:{openFlags:{READ:1,WRITE:2}},ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath:function(path,opts){path=PATH_FS.resolve(FS.cwd(),path);opts=opts||{};if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};for(var key in defaults){if(opts[key]===undefined){opts[key]=defaults[key]}}if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),false);var current=FS.root;var current_path="/";for(var i=0;i<parts.length;i++){var islast=i===parts.length-1;if(islast&&opts.parent){break}current=FS.lookupNode(current,parts[i]);current_path=PATH.join2(current_path,parts[i]);if(FS.isMountpoint(current)){if(!islast||islast&&opts.follow_mount){current=current.mounted.root}}if(!islast||opts.follow){var count=0;while(FS.isLink(current.mode)){var link=FS.readlink(current_path);current_path=PATH_FS.resolve(PATH.dirname(current_path),link);var lookup=FS.lookupPath(current_path,{recurse_count:opts.recurse_count});current=lookup.node;if(count++>40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath:function(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?mount+"/"+path:mount+path}path=path?node.name+"/"+path:node.name;node=node.parent}},hashName:function(parentid,name){var hash=0;for(var i=0;i<name.length;i++){hash=(hash<<5)-hash+name.charCodeAt(i)|0}return(parentid+hash>>>0)%FS.nameTable.length},hashAddNode:function(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode:function(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode:function(parent,name){var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode:function(parent,name,mode,rdev){var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:function(node){FS.hashRemoveNode(node)},isRoot:function(node){return node===node.parent},isMountpoint:function(node){return!!node.mounted},isFile:function(mode){return(mode&61440)===32768},isDir:function(mode){return(mode&61440)===16384},isLink:function(mode){return(mode&61440)===40960},isChrdev:function(mode){return(mode&61440)===8192},isBlkdev:function(mode){return(mode&61440)===24576},isFIFO:function(mode){return(mode&61440)===4096},isSocket:function(mode){return(mode&49152)===49152},flagModes:{"r":0,"r+":2,"w":577,"w+":578,"a":1089,"a+":1090},modeStringToFlags:function(str){var flags=FS.flagModes[str];if(typeof flags==="undefined"){throw new Error("Unknown file open mode: "+str)}return flags},flagsToPermissionString:function(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions:function(node,perms){if(FS.ignorePermissions){return 0}if(perms.indexOf("r")!==-1&&!(node.mode&292)){return 2}else if(perms.indexOf("w")!==-1&&!(node.mode&146)){return 2}else if(perms.indexOf("x")!==-1&&!(node.mode&73)){return 2}return 0},mayLookup:function(dir){var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate:function(dir,name){try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete:function(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen:function(node,flags){if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd:function(fd_start,fd_end){fd_start=fd_start||0;fd_end=fd_end||FS.MAX_OPEN_FDS;for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:function(fd){return FS.streams[fd]},createStream:function(stream,fd_start,fd_end){if(!FS.FSStream){FS.FSStream=function(){};FS.FSStream.prototype={object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}}}}var newStream=new FS.FSStream;for(var p in stream){newStream[p]=stream[p]}stream=newStream;var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:function(fd){FS.streams[fd]=null},chrdev_stream_ops:{open:function(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}},llseek:function(){throw new FS.ErrnoError(70)}},major:function(dev){return dev>>8},minor:function(dev){return dev&255},makedev:function(ma,mi){return ma<<8|mi},registerDevice:function(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:function(dev){return FS.devices[dev]},getMounts:function(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts},syncfs:function(populate,callback){if(typeof populate==="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err("warning: "+FS.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work")}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(function(mount){if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount:function(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount:function(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(function(hash){var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.indexOf(current.mount)!==-1){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup:function(parent,name){return parent.node_ops.lookup(parent,name)},mknod:function(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create:function(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:function(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree:function(path,mode){var dirs=path.split("/");var d="";for(var i=0;i<dirs.length;++i){if(!dirs[i])continue;d+="/"+dirs[i];try{FS.mkdir(d,mode)}catch(e){if(e.errno!=20)throw e}}},mkdev:function(path,mode,dev){if(typeof dev==="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:function(oldpath,newpath){if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:function(old_path,new_path){var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}try{if(FS.trackingDelegate["willMovePath"]){FS.trackingDelegate["willMovePath"](old_path,new_path)}}catch(e){err("FS.trackingDelegate['willMovePath']('"+old_path+"', '"+new_path+"') threw an exception: "+e.message)}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}try{if(FS.trackingDelegate["onMovePath"])FS.trackingDelegate["onMovePath"](old_path,new_path)}catch(e){err("FS.trackingDelegate['onMovePath']('"+old_path+"', '"+new_path+"') threw an exception: "+e.message)}},rmdir:function(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}try{if(FS.trackingDelegate["willDeletePath"]){FS.trackingDelegate["willDeletePath"](path)}}catch(e){err("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: "+e.message)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate["onDeletePath"])FS.trackingDelegate["onDeletePath"](path)}catch(e){err("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: "+e.message)}},readdir:function(path){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:function(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}try{if(FS.trackingDelegate["willDeletePath"]){FS.trackingDelegate["willDeletePath"](path)}}catch(e){err("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: "+e.message)}parent.node_ops.unlink(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate["onDeletePath"])FS.trackingDelegate["onDeletePath"](path)}catch(e){err("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: "+e.message)}},readlink:function(path){var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:function(path,dontFollow){var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:function(path){return FS.stat(path,true)},chmod:function(path,mode,dontFollow){var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:function(path,mode){FS.chmod(path,mode,true)},fchmod:function(fd,mode){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:function(path,uid,gid,dontFollow){var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:function(path,uid,gid){FS.chown(path,uid,gid,true)},fchown:function(fd,uid,gid){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:function(path,len){if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:function(fd,len){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:function(path,atime,mtime){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:function(path,flags,mode,fd_start,fd_end){if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags==="string"?FS.modeStringToFlags(flags):flags;mode=typeof mode==="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path==="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false},fd_start,fd_end);if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1;err("FS.trackingDelegate error on read file: "+path)}}try{if(FS.trackingDelegate["onOpenFile"]){var trackingFlags=0;if((flags&2097155)!==1){trackingFlags|=FS.tracking.openFlags.READ}if((flags&2097155)!==0){trackingFlags|=FS.tracking.openFlags.WRITE}FS.trackingDelegate["onOpenFile"](path,trackingFlags)}}catch(e){err("FS.trackingDelegate['onOpenFile']('"+path+"', flags) threw an exception: "+e.message)}return stream},close:function(stream){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:function(stream){return stream.fd===null},llseek:function(stream,offset,whence){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:function(stream,buffer,offset,length,position){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!=="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:function(stream,buffer,offset,length,position,canOwn){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!=="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;try{if(stream.path&&FS.trackingDelegate["onWriteToFile"])FS.trackingDelegate["onWriteToFile"](stream.path)}catch(e){err("FS.trackingDelegate['onWriteToFile']('"+stream.path+"') threw an exception: "+e.message)}return bytesWritten},allocate:function(stream,offset,length){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:function(stream,address,length,position,prot,flags){if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,address,length,position,prot,flags)},msync:function(stream,buffer,offset,length,mmapFlags){if(!stream||!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:function(stream){return 0},ioctl:function(stream,cmd,arg){if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:function(path,opts){opts=opts||{};opts.flags=opts.flags||0;opts.encoding=opts.encoding||"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error('Invalid encoding type "'+opts.encoding+'"')}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding==="binary"){ret=buf}FS.close(stream);return ret},writeFile:function(path,data,opts){opts=opts||{};opts.flags=opts.flags||577;var stream=FS.open(path,opts.flags,opts.mode);if(typeof data==="string"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,undefined,opts.canOwn)}else if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{throw new Error("Unsupported data type")}FS.close(stream)},cwd:function(){return FS.currentPath},chdir:function(path){var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories:function(){FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices:function(){FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:function(){return 0},write:function(stream,buffer,offset,length,pos){return length}});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var random_device=getRandomDevice();FS.createDevice("/dev","random",random_device);FS.createDevice("/dev","urandom",random_device);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories:function(){FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount:function(){var node=FS.createNode(proc_self,"fd",16384|511,73);node.node_ops={lookup:function(parent,name){var fd=+name;var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:function(){return stream.path}}};ret.parent=ret;return ret}};return node}},{},"/proc/self/fd")},createStandardStreams:function(){if(Module["stdin"]){FS.createDevice("/dev","stdin",Module["stdin"])}else{FS.symlink("/dev/tty","/dev/stdin")}if(Module["stdout"]){FS.createDevice("/dev","stdout",null,Module["stdout"])}else{FS.symlink("/dev/tty","/dev/stdout")}if(Module["stderr"]){FS.createDevice("/dev","stderr",null,Module["stderr"])}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},ensureErrnoError:function(){if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.node=node;this.setErrno=function(errno){this.errno=errno};this.setErrno(errno);this.message="FS error"};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[44].forEach(function(code){FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack="<generic error, no stack>"})},staticInit:function(){FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={"MEMFS":MEMFS}},init:function(input,output,error){FS.init.initialized=true;FS.ensureErrnoError();Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams()},quit:function(){FS.init.initialized=false;var fflush=Module["_fflush"];if(fflush)fflush(0);for(var i=0;i<FS.streams.length;i++){var stream=FS.streams[i];if(!stream){continue}FS.close(stream)}},getMode:function(canRead,canWrite){var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode},findObject:function(path,dontResolveLastLink){var ret=FS.analyzePath(path,dontResolveLastLink);if(ret.exists){return ret.object}else{return null}},analyzePath:function(path,dontResolveLastLink){try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath:function(parent,path,canRead,canWrite){parent=typeof parent==="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:function(parent,name,properties,canRead,canWrite){var path=PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:function(parent,name,data,canRead,canWrite,canOwn){var path=name?PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name):parent;var mode=FS.getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data==="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i<len;++i)arr[i]=data.charCodeAt(i);data=arr}FS.chmod(node,mode|146);var stream=FS.open(node,577);FS.write(stream,data,0,data.length,0,canOwn);FS.close(stream);FS.chmod(node,mode)}return node},createDevice:function(parent,name,input,output){var path=PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:function(stream){stream.seekable=false},close:function(stream){if(output&&output.buffer&&output.buffer.length){output(10)}},read:function(stream,buffer,offset,length,pos){var bytesRead=0;for(var i=0;i<length;i++){var result;try{result=input()}catch(e){throw new FS.ErrnoError(29)}if(result===undefined&&bytesRead===0){throw new FS.ErrnoError(6)}if(result===null||result===undefined)break;bytesRead++;buffer[offset+i]=result}if(bytesRead){stream.node.timestamp=Date.now()}return bytesRead},write:function(stream,buffer,offset,length,pos){for(var i=0;i<length;i++){try{output(buffer[offset+i])}catch(e){throw new FS.ErrnoError(29)}}if(length){stream.node.timestamp=Date.now()}return i}});return FS.mkdev(path,mode,dev)},forceLoadFile:function(obj){if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!=="undefined"){throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}},createLazyFile:function(parent,name,url,canRead,canWrite){function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=function(from,to){if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);if(typeof Uint8Array!="undefined")xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}else{return intArrayFromString(xhr.responseText||"",true)}};var lazyArray=this;lazyArray.setDataGetter(function(chunkNum){var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]==="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]==="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!=="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._length}},chunkSize:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(function(key){var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){FS.forceLoadFile(node);return fn.apply(null,arguments)}});stream_ops.read=function stream_ops_read(stream,buffer,offset,length,position){FS.forceLoadFile(node);var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i<size;i++){buffer[offset+i]=contents[position+i]}}else{for(var i=0;i<size;i++){buffer[offset+i]=contents.get(position+i)}}return size};node.stream_ops=stream_ops;return node},createPreloadedFile:function(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish){Browser.init();var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency("cp "+fullname);function processData(byteArray){function finish(byteArray){if(preFinish)preFinish();if(!dontCreateFile){FS.createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}if(onload)onload();removeRunDependency(dep)}var handled=false;Module["preloadPlugins"].forEach(function(plugin){if(handled)return;if(plugin["canHandle"](fullname)){plugin["handle"](byteArray,fullname,finish,function(){if(onerror)onerror();removeRunDependency(dep)});handled=true}});if(!handled)finish(byteArray)}addRunDependency(dep);if(typeof url=="string"){Browser.asyncLoad(url,function(byteArray){processData(byteArray)},onerror)}else{processData(url)}},indexedDB:function(){return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME:function(){return"EM_FS_"+window.location.pathname},DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:function(paths,onload,onerror){onload=onload||function(){};onerror=onerror||function(){};var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=function openRequest_onupgradeneeded(){out("creating db");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME)};openRequest.onsuccess=function openRequest_onsuccess(){var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],"readwrite");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(function(path){var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=function putRequest_onsuccess(){ok++;if(ok+fail==total)finish()};putRequest.onerror=function putRequest_onerror(){fail++;if(ok+fail==total)finish()}});transaction.onerror=onerror};openRequest.onerror=onerror},loadFilesFromDB:function(paths,onload,onerror){onload=onload||function(){};onerror=onerror||function(){};var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=function openRequest_onsuccess(){var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],"readonly")}catch(e){onerror(e);return}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(function(path){var getRequest=files.get(path);getRequest.onsuccess=function getRequest_onsuccess(){if(FS.analyzePath(path).exists){FS.unlink(path)}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish()};getRequest.onerror=function getRequest_onerror(){fail++;if(ok+fail==total)finish()}});transaction.onerror=onerror};openRequest.onerror=onerror}};var SYSCALLS={mappings:{},DEFAULT_POLLMASK:5,umask:511,calculateAt:function(dirfd,path,allowEmpty){if(path[0]==="/"){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=FS.getStream(dirfd);if(!dirstream)throw new FS.ErrnoError(8);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(func,path,buf){try{var stat=func(path)}catch(e){if(e&&e.node&&PATH.normalize(path)!==PATH.normalize(FS.getPath(e.node))){return-54}throw e}HEAP32[buf>>2]=stat.dev;HEAP32[buf+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;HEAP32[buf+56>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+76>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+80>>2]=tempI64[0],HEAP32[buf+84>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},doMkdir:function(path,mode){path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0},doMknod:function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}FS.mknod(path,mode,dev);return 0},doReadlink:function(path,buf,bufsize){if(bufsize<=0)return-28;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len},doAccess:function(path,amode){if(amode&~7){return-28}var node;var lookup=FS.lookupPath(path,{follow:true});node=lookup.node;if(!node){return-44}var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0},doDup:function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd},doReadv:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i<iovcnt;i++){var ptr=HEAP32[iov+i*8>>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr<len)break}return ret},doWritev:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i<iovcnt;i++){var ptr=HEAP32[iov+i*8>>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream},get64:function(low,high){return low}};function ___sys_chdir(path){try{path=SYSCALLS.getStr(path);FS.chdir(path);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function setErrNo(value){HEAP32[___errno_location()>>2]=value;return value}function ___sys_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-28}var newStream;newStream=FS.open(stream.path,stream.flags,0,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0}case 12:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 13:case 14:return 0;case 16:case 8:return-28;case 9:setErrNo(28);return-1;default:{return-28}}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_getcwd(buf,size){try{if(size===0)return-28;var cwd=FS.cwd();var cwdLengthInBytes=lengthBytesUTF8(cwd);if(size<cwdLengthInBytes+1)return-68;stringToUTF8(cwd,buf,size);return buf}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_ioctl(fd,op,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(op){case 21509:case 21505:{if(!stream.tty)return-59;return 0}case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-59;return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{if(!stream.tty)return-59;return 0}default:abort("bad ioctl syscall "+op)}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_open(path,flags,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(path);var mode=varargs?SYSCALLS.get():0;var stream=FS.open(pathname,flags,mode);return stream.fd}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}var JSEvents={inEventHandler:0,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return false;for(var i in arrA){if(arrA[i]!=arrB[i])return false}return true}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList)){return}}JSEvents.deferredCalls.push({targetFunction:targetFunction,precedence:precedence,argsList:argsList});JSEvents.deferredCalls.sort(function(x,y){return x.precedence<y.precedence})},removeDeferredCalls:function(targetFunction){for(var i=0;i<JSEvents.deferredCalls.length;++i){if(JSEvents.deferredCalls[i].targetFunction==targetFunction){JSEvents.deferredCalls.splice(i,1);--i}}},canPerformEventHandlerRequests:function(){return JSEvents.inEventHandler&&JSEvents.currentEventHandler.allowsDeferredCalls},runDeferredCalls:function(){if(!JSEvents.canPerformEventHandlerRequests()){return}for(var i=0;i<JSEvents.deferredCalls.length;++i){var call=JSEvents.deferredCalls[i];JSEvents.deferredCalls.splice(i,1);--i;call.targetFunction.apply(null,call.argsList)}},eventHandlers:[],removeAllHandlersOnTarget:function(target,eventTypeString){for(var i=0;i<JSEvents.eventHandlers.length;++i){if(JSEvents.eventHandlers[i].target==target&&(!eventTypeString||eventTypeString==JSEvents.eventHandlers[i].eventTypeString)){JSEvents._removeHandler(i--)}}},_removeHandler:function(i){var h=JSEvents.eventHandlers[i];h.target.removeEventListener(h.eventTypeString,h.eventListenerFunc,h.useCapture);JSEvents.eventHandlers.splice(i,1)},registerOrRemoveHandler:function(eventHandler){var jsEventHandler=function jsEventHandler(event){++JSEvents.inEventHandler;JSEvents.currentEventHandler=eventHandler;JSEvents.runDeferredCalls();eventHandler.handlerFunc(event);JSEvents.runDeferredCalls();--JSEvents.inEventHandler};if(eventHandler.callbackfunc){eventHandler.eventListenerFunc=jsEventHandler;eventHandler.target.addEventListener(eventHandler.eventTypeString,jsEventHandler,eventHandler.useCapture);JSEvents.eventHandlers.push(eventHandler);JSEvents.registerRemoveEventListeners()}else{for(var i=0;i<JSEvents.eventHandlers.length;++i){if(JSEvents.eventHandlers[i].target==eventHandler.target&&JSEvents.eventHandlers[i].eventTypeString==eventHandler.eventTypeString){JSEvents._removeHandler(i--)}}}},getNodeNameForTarget:function(target){if(!target)return"";if(target==window)return"#window";if(target==screen)return"#screen";return target&&target.nodeName?target.nodeName:""},fullscreenEnabled:function(){return document.fullscreenEnabled||document.webkitFullscreenEnabled}};function requestPointerLock(target){if(target.requestPointerLock){target.requestPointerLock()}else if(target.msRequestPointerLock){target.msRequestPointerLock()}else{if(document.body.requestPointerLock||document.body.msRequestPointerLock){return-3}else{return-1}}return 0}function _emscripten_exit_pointerlock(){JSEvents.removeDeferredCalls(requestPointerLock);if(document.exitPointerLock){document.exitPointerLock()}else if(document.msExitPointerLock){document.msExitPointerLock()}else{return-1}return 0}function maybeCStringToJsString(cString){return cString>2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!=="undefined"?document:0,typeof window!=="undefined"?window:0];function findEventTarget(target){target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!=="undefined"?document.querySelector(target):undefined);return domElement}function getBoundingClientRect(e){return specialHTMLTargets.indexOf(e)<0?e.getBoundingClientRect():{"left":0,"top":0}}function _emscripten_get_element_css_size(target,width,height){target=findEventTarget(target);if(!target)return-4;var rect=getBoundingClientRect(target);HEAPF64[width>>3]=rect.width;HEAPF64[height>>3]=rect.height;return 0}function fillGamepadEventData(eventStruct,e){HEAPF64[eventStruct>>3]=e.timestamp;for(var i=0;i<e.axes.length;++i){HEAPF64[eventStruct+i*8+16>>3]=e.axes[i]}for(var i=0;i<e.buttons.length;++i){if(typeof e.buttons[i]==="object"){HEAPF64[eventStruct+i*8+528>>3]=e.buttons[i].value}else{HEAPF64[eventStruct+i*8+528>>3]=e.buttons[i]}}for(var i=0;i<e.buttons.length;++i){if(typeof e.buttons[i]==="object"){HEAP32[eventStruct+i*4+1040>>2]=e.buttons[i].pressed}else{HEAP32[eventStruct+i*4+1040>>2]=e.buttons[i]==1}}HEAP32[eventStruct+1296>>2]=e.connected;HEAP32[eventStruct+1300>>2]=e.index;HEAP32[eventStruct+8>>2]=e.axes.length;HEAP32[eventStruct+12>>2]=e.buttons.length;stringToUTF8(e.id,eventStruct+1304,64);stringToUTF8(e.mapping,eventStruct+1368,64)}function _emscripten_get_gamepad_status(index,gamepadState){if(index<0||index>=JSEvents.lastGamepadState.length)return-5;if(!JSEvents.lastGamepadState[index])return-7;fillGamepadEventData(gamepadState,JSEvents.lastGamepadState[index]);return 0}function _emscripten_get_num_gamepads(){return JSEvents.lastGamepadState.length}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension("ANGLE_instanced_arrays");if(ext){ctx["vertexAttribDivisor"]=function(index,divisor){ext["vertexAttribDivisorANGLE"](index,divisor)};ctx["drawArraysInstanced"]=function(mode,first,count,primcount){ext["drawArraysInstancedANGLE"](mode,first,count,primcount)};ctx["drawElementsInstanced"]=function(mode,count,type,indices,primcount){ext["drawElementsInstancedANGLE"](mode,count,type,indices,primcount)};return 1}}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension("OES_vertex_array_object");if(ext){ctx["createVertexArray"]=function(){return ext["createVertexArrayOES"]()};ctx["deleteVertexArray"]=function(vao){ext["deleteVertexArrayOES"](vao)};ctx["bindVertexArray"]=function(vao){ext["bindVertexArrayOES"](vao)};ctx["isVertexArray"]=function(vao){return ext["isVertexArrayOES"](vao)};return 1}}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension("WEBGL_draw_buffers");if(ext){ctx["drawBuffers"]=function(n,bufs){ext["drawBuffersWEBGL"](n,bufs)};return 1}}function __webgl_enable_WEBGL_multi_draw(ctx){return!!(ctx.multiDrawWebgl=ctx.getExtension("WEBGL_multi_draw"))}var GL={counter:1,buffers:[],programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:[],offscreenCanvases:{},timerQueriesEXT:[],programInfos:{},stringCache:{},unpackAlignment:4,recordError:function recordError(errorCode){if(!GL.lastError){GL.lastError=errorCode}},getNewId:function(table){var ret=GL.counter++;for(var i=table.length;i<ret;i++){table[i]=null}return ret},getSource:function(shader,count,string,length){var source="";for(var i=0;i<count;++i){var len=length?HEAP32[length+i*4>>2]:-1;source+=UTF8ToString(HEAP32[string+i*4>>2],len<0?undefined:len)}return source},createContext:function(canvas,webGLContextAttributes){var ctx=canvas.getContext("webgl",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:function(ctx,webGLContextAttributes){var handle=GL.getNewId(GL.contexts);var context={handle:handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};if(ctx.canvas)ctx.canvas.GLctxObject=context;GL.contexts[handle]=context;if(typeof webGLContextAttributes.enableExtensionsByDefault==="undefined"||webGLContextAttributes.enableExtensionsByDefault){GL.initExtensions(context)}return handle},makeContextCurrent:function(contextHandle){GL.currentContext=GL.contexts[contextHandle];Module.ctx=GLctx=GL.currentContext&&GL.currentContext.GLctx;return!(contextHandle&&!GLctx)},getContext:function(contextHandle){return GL.contexts[contextHandle]},deleteContext:function(contextHandle){if(GL.currentContext===GL.contexts[contextHandle])GL.currentContext=null;if(typeof JSEvents==="object")JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas);if(GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas)GL.contexts[contextHandle].GLctx.canvas.GLctxObject=undefined;GL.contexts[contextHandle]=null},initExtensions:function(context){if(!context)context=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;__webgl_enable_ANGLE_instanced_arrays(GLctx);__webgl_enable_OES_vertex_array_object(GLctx);__webgl_enable_WEBGL_draw_buffers(GLctx);GLctx.disjointTimerQueryExt=GLctx.getExtension("EXT_disjoint_timer_query");__webgl_enable_WEBGL_multi_draw(GLctx);var exts=GLctx.getSupportedExtensions()||[];exts.forEach(function(ext){if(ext.indexOf("lose_context")<0&&ext.indexOf("debug")<0){GLctx.getExtension(ext)}})},populateUniformTable:function(program){var p=GL.programs[program];var ptable=GL.programInfos[program]={uniforms:{},maxUniformLength:0,maxAttributeLength:-1,maxUniformBlockNameLength:-1};var utable=ptable.uniforms;var numUniforms=GLctx.getProgramParameter(p,35718);for(var i=0;i<numUniforms;++i){var u=GLctx.getActiveUniform(p,i);var name=u.name;ptable.maxUniformLength=Math.max(ptable.maxUniformLength,name.length+1);if(name.slice(-1)=="]"){name=name.slice(0,name.lastIndexOf("["))}var loc=GLctx.getUniformLocation(p,name);if(loc){var id=GL.getNewId(GL.uniforms);utable[name]=[u.size,id];GL.uniforms[id]=loc;for(var j=1;j<u.size;++j){var n=name+"["+j+"]";loc=GLctx.getUniformLocation(p,n);id=GL.getNewId(GL.uniforms);GL.uniforms[id]=loc}}}}};function _emscripten_glActiveTexture(x0){GLctx["activeTexture"](x0)}function _emscripten_glAttachShader(program,shader){GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _emscripten_glBeginQueryEXT(target,id){GLctx.disjointTimerQueryExt["beginQueryEXT"](target,GL.timerQueriesEXT[id])}function _emscripten_glBindAttribLocation(program,index,name){GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))}function _emscripten_glBindBuffer(target,buffer){GLctx.bindBuffer(target,GL.buffers[buffer])}function _emscripten_glBindFramebuffer(target,framebuffer){GLctx.bindFramebuffer(target,GL.framebuffers[framebuffer])}function _emscripten_glBindRenderbuffer(target,renderbuffer){GLctx.bindRenderbuffer(target,GL.renderbuffers[renderbuffer])}function _emscripten_glBindTexture(target,texture){GLctx.bindTexture(target,GL.textures[texture])}function _emscripten_glBindVertexArrayOES(vao){GLctx["bindVertexArray"](GL.vaos[vao])}function _emscripten_glBlendColor(x0,x1,x2,x3){GLctx["blendColor"](x0,x1,x2,x3)}function _emscripten_glBlendEquation(x0){GLctx["blendEquation"](x0)}function _emscripten_glBlendEquationSeparate(x0,x1){GLctx["blendEquationSeparate"](x0,x1)}function _emscripten_glBlendFunc(x0,x1){GLctx["blendFunc"](x0,x1)}function _emscripten_glBlendFuncSeparate(x0,x1,x2,x3){GLctx["blendFuncSeparate"](x0,x1,x2,x3)}function _emscripten_glBufferData(target,size,data,usage){GLctx.bufferData(target,data?HEAPU8.subarray(data,data+size):size,usage)}function _emscripten_glBufferSubData(target,offset,size,data){GLctx.bufferSubData(target,offset,HEAPU8.subarray(data,data+size))}function _emscripten_glCheckFramebufferStatus(x0){return GLctx["checkFramebufferStatus"](x0)}function _emscripten_glClear(x0){GLctx["clear"](x0)}function _emscripten_glClearColor(x0,x1,x2,x3){GLctx["clearColor"](x0,x1,x2,x3)}function _emscripten_glClearDepthf(x0){GLctx["clearDepth"](x0)}function _emscripten_glClearStencil(x0){GLctx["clearStencil"](x0)}function _emscripten_glColorMask(red,green,blue,alpha){GLctx.colorMask(!!red,!!green,!!blue,!!alpha)}function _emscripten_glCompileShader(shader){GLctx.compileShader(GL.shaders[shader])}function _emscripten_glCompressedTexImage2D(target,level,internalFormat,width,height,border,imageSize,data){GLctx["compressedTexImage2D"](target,level,internalFormat,width,height,border,data?HEAPU8.subarray(data,data+imageSize):null)}function _emscripten_glCompressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,imageSize,data){GLctx["compressedTexSubImage2D"](target,level,xoffset,yoffset,width,height,format,data?HEAPU8.subarray(data,data+imageSize):null)}function _emscripten_glCopyTexImage2D(x0,x1,x2,x3,x4,x5,x6,x7){GLctx["copyTexImage2D"](x0,x1,x2,x3,x4,x5,x6,x7)}function _emscripten_glCopyTexSubImage2D(x0,x1,x2,x3,x4,x5,x6,x7){GLctx["copyTexSubImage2D"](x0,x1,x2,x3,x4,x5,x6,x7)}function _emscripten_glCreateProgram(){var id=GL.getNewId(GL.programs);var program=GLctx.createProgram();program.name=id;GL.programs[id]=program;return id}function _emscripten_glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}function _emscripten_glCullFace(x0){GLctx["cullFace"](x0)}function _emscripten_glDeleteBuffers(n,buffers){for(var i=0;i<n;i++){var id=HEAP32[buffers+i*4>>2];var buffer=GL.buffers[id];if(!buffer)continue;GLctx.deleteBuffer(buffer);buffer.name=0;GL.buffers[id]=null}}function _emscripten_glDeleteFramebuffers(n,framebuffers){for(var i=0;i<n;++i){var id=HEAP32[framebuffers+i*4>>2];var framebuffer=GL.framebuffers[id];if(!framebuffer)continue;GLctx.deleteFramebuffer(framebuffer);framebuffer.name=0;GL.framebuffers[id]=null}}function _emscripten_glDeleteProgram(id){if(!id)return;var program=GL.programs[id];if(!program){GL.recordError(1281);return}GLctx.deleteProgram(program);program.name=0;GL.programs[id]=null;GL.programInfos[id]=null}function _emscripten_glDeleteQueriesEXT(n,ids){for(var i=0;i<n;i++){var id=HEAP32[ids+i*4>>2];var query=GL.timerQueriesEXT[id];if(!query)continue;GLctx.disjointTimerQueryExt["deleteQueryEXT"](query);GL.timerQueriesEXT[id]=null}}function _emscripten_glDeleteRenderbuffers(n,renderbuffers){for(var i=0;i<n;i++){var id=HEAP32[renderbuffers+i*4>>2];var renderbuffer=GL.renderbuffers[id];if(!renderbuffer)continue;GLctx.deleteRenderbuffer(renderbuffer);renderbuffer.name=0;GL.renderbuffers[id]=null}}function _emscripten_glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}function _emscripten_glDeleteTextures(n,textures){for(var i=0;i<n;i++){var id=HEAP32[textures+i*4>>2];var texture=GL.textures[id];if(!texture)continue;GLctx.deleteTexture(texture);texture.name=0;GL.textures[id]=null}}function _emscripten_glDeleteVertexArraysOES(n,vaos){for(var i=0;i<n;i++){var id=HEAP32[vaos+i*4>>2];GLctx["deleteVertexArray"](GL.vaos[id]);GL.vaos[id]=null}}function _emscripten_glDepthFunc(x0){GLctx["depthFunc"](x0)}function _emscripten_glDepthMask(flag){GLctx.depthMask(!!flag)}function _emscripten_glDepthRangef(x0,x1){GLctx["depthRange"](x0,x1)}function _emscripten_glDetachShader(program,shader){GLctx.detachShader(GL.programs[program],GL.shaders[shader])}function _emscripten_glDisable(x0){GLctx["disable"](x0)}function _emscripten_glDisableVertexAttribArray(index){GLctx.disableVertexAttribArray(index)}function _emscripten_glDrawArrays(mode,first,count){GLctx.drawArrays(mode,first,count)}function _emscripten_glDrawArraysInstancedANGLE(mode,first,count,primcount){GLctx["drawArraysInstanced"](mode,first,count,primcount)}var tempFixedLengthArray=[];function _emscripten_glDrawBuffersWEBGL(n,bufs){var bufArray=tempFixedLengthArray[n];for(var i=0;i<n;i++){bufArray[i]=HEAP32[bufs+i*4>>2]}GLctx["drawBuffers"](bufArray)}function _emscripten_glDrawElements(mode,count,type,indices){GLctx.drawElements(mode,count,type,indices)}function _emscripten_glDrawElementsInstancedANGLE(mode,count,type,indices,primcount){GLctx["drawElementsInstanced"](mode,count,type,indices,primcount)}function _emscripten_glEnable(x0){GLctx["enable"](x0)}function _emscripten_glEnableVertexAttribArray(index){GLctx.enableVertexAttribArray(index)}function _emscripten_glEndQueryEXT(target){GLctx.disjointTimerQueryExt["endQueryEXT"](target)}function _emscripten_glFinish(){GLctx["finish"]()}function _emscripten_glFlush(){GLctx["flush"]()}function _emscripten_glFramebufferRenderbuffer(target,attachment,renderbuffertarget,renderbuffer){GLctx.framebufferRenderbuffer(target,attachment,renderbuffertarget,GL.renderbuffers[renderbuffer])}function _emscripten_glFramebufferTexture2D(target,attachment,textarget,texture,level){GLctx.framebufferTexture2D(target,attachment,textarget,GL.textures[texture],level)}function _emscripten_glFrontFace(x0){GLctx["frontFace"](x0)}function __glGenObject(n,buffers,createFunction,objectTable){for(var i=0;i<n;i++){var buffer=GLctx[createFunction]();var id=buffer&&GL.getNewId(objectTable);if(buffer){buffer.name=id;objectTable[id]=buffer}else{GL.recordError(1282)}HEAP32[buffers+i*4>>2]=id}}function _emscripten_glGenBuffers(n,buffers){__glGenObject(n,buffers,"createBuffer",GL.buffers)}function _emscripten_glGenFramebuffers(n,ids){__glGenObject(n,ids,"createFramebuffer",GL.framebuffers)}function _emscripten_glGenQueriesEXT(n,ids){for(var i=0;i<n;i++){var query=GLctx.disjointTimerQueryExt["createQueryEXT"]();if(!query){GL.recordError(1282);while(i<n)HEAP32[ids+i++*4>>2]=0;return}var id=GL.getNewId(GL.timerQueriesEXT);query.name=id;GL.timerQueriesEXT[id]=query;HEAP32[ids+i*4>>2]=id}}function _emscripten_glGenRenderbuffers(n,renderbuffers){__glGenObject(n,renderbuffers,"createRenderbuffer",GL.renderbuffers)}function _emscripten_glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures)}function _emscripten_glGenVertexArraysOES(n,arrays){__glGenObject(n,arrays,"createVertexArray",GL.vaos)}function _emscripten_glGenerateMipmap(x0){GLctx["generateMipmap"](x0)}function __glGetActiveAttribOrUniform(funcName,program,index,bufSize,length,size,type,name){program=GL.programs[program];var info=GLctx[funcName](program,index);if(info){var numBytesWrittenExclNull=name&&stringToUTF8(info.name,name,bufSize);if(length)HEAP32[length>>2]=numBytesWrittenExclNull;if(size)HEAP32[size>>2]=info.size;if(type)HEAP32[type>>2]=info.type}}function _emscripten_glGetActiveAttrib(program,index,bufSize,length,size,type,name){__glGetActiveAttribOrUniform("getActiveAttrib",program,index,bufSize,length,size,type,name)}function _emscripten_glGetActiveUniform(program,index,bufSize,length,size,type,name){__glGetActiveAttribOrUniform("getActiveUniform",program,index,bufSize,length,size,type,name)}function _emscripten_glGetAttachedShaders(program,maxCount,count,shaders){var result=GLctx.getAttachedShaders(GL.programs[program]);var len=result.length;if(len>maxCount){len=maxCount}HEAP32[count>>2]=len;for(var i=0;i<len;++i){var id=GL.shaders.indexOf(result[i]);HEAP32[shaders+i*4>>2]=id}}function _emscripten_glGetAttribLocation(program,name){return GLctx.getAttribLocation(GL.programs[program],UTF8ToString(name))}function writeI53ToI64(ptr,num){HEAPU32[ptr>>2]=num;HEAPU32[ptr+4>>2]=(num-HEAPU32[ptr>>2])/4294967296}function emscriptenWebGLGet(name_,p,type){if(!p){GL.recordError(1281);return}var ret=undefined;switch(name_){case 36346:ret=1;break;case 36344:if(type!=0&&type!=1){GL.recordError(1280)}return;case 36345:ret=0;break;case 34466:var formats=GLctx.getParameter(34467);ret=formats?formats.length:0;break}if(ret===undefined){var result=GLctx.getParameter(name_);switch(typeof result){case"number":ret=result;break;case"boolean":ret=result?1:0;break;case"string":GL.recordError(1280);return;case"object":if(result===null){switch(name_){case 34964:case 35725:case 34965:case 36006:case 36007:case 32873:case 34229:case 34068:{ret=0;break}default:{GL.recordError(1280);return}}}else if(result instanceof Float32Array||result instanceof Uint32Array||result instanceof Int32Array||result instanceof Array){for(var i=0;i<result.length;++i){switch(type){case 0:HEAP32[p+i*4>>2]=result[i];break;case 2:HEAPF32[p+i*4>>2]=result[i];break;case 4:HEAP8[p+i>>0]=result[i]?1:0;break}}return}else{try{ret=result.name|0}catch(e){GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v: Unknown object returned from WebGL getParameter("+name_+")! (error: "+e+")");return}}break;default:GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v: Native code calling glGet"+type+"v("+name_+") and it returns "+result+" of type "+typeof result+"!");return}}switch(type){case 1:writeI53ToI64(p,ret);break;case 0:HEAP32[p>>2]=ret;break;case 2:HEAPF32[p>>2]=ret;break;case 4:HEAP8[p>>0]=ret?1:0;break}}function _emscripten_glGetBooleanv(name_,p){emscriptenWebGLGet(name_,p,4)}function _emscripten_glGetBufferParameteriv(target,value,data){if(!data){GL.recordError(1281);return}HEAP32[data>>2]=GLctx.getBufferParameter(target,value)}function _emscripten_glGetError(){var error=GLctx.getError()||GL.lastError;GL.lastError=0;return error}function _emscripten_glGetFloatv(name_,p){emscriptenWebGLGet(name_,p,2)}function _emscripten_glGetFramebufferAttachmentParameteriv(target,attachment,pname,params){var result=GLctx.getFramebufferAttachmentParameter(target,attachment,pname);if(result instanceof WebGLRenderbuffer||result instanceof WebGLTexture){result=result.name|0}HEAP32[params>>2]=result}function _emscripten_glGetIntegerv(name_,p){emscriptenWebGLGet(name_,p,0)}function _emscripten_glGetProgramInfoLog(program,maxLength,length,infoLog){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _emscripten_glGetProgramiv(program,pname,p){if(!p){GL.recordError(1281);return}if(program>=GL.counter){GL.recordError(1281);return}var ptable=GL.programInfos[program];if(!ptable){GL.recordError(1282);return}if(pname==35716){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";HEAP32[p>>2]=log.length+1}else if(pname==35719){HEAP32[p>>2]=ptable.maxUniformLength}else if(pname==35722){if(ptable.maxAttributeLength==-1){program=GL.programs[program];var numAttribs=GLctx.getProgramParameter(program,35721);ptable.maxAttributeLength=0;for(var i=0;i<numAttribs;++i){var activeAttrib=GLctx.getActiveAttrib(program,i);ptable.maxAttributeLength=Math.max(ptable.maxAttributeLength,activeAttrib.name.length+1)}}HEAP32[p>>2]=ptable.maxAttributeLength}else if(pname==35381){if(ptable.maxUniformBlockNameLength==-1){program=GL.programs[program];var numBlocks=GLctx.getProgramParameter(program,35382);ptable.maxUniformBlockNameLength=0;for(var i=0;i<numBlocks;++i){var activeBlockName=GLctx.getActiveUniformBlockName(program,i);ptable.maxUniformBlockNameLength=Math.max(ptable.maxUniformBlockNameLength,activeBlockName.length+1)}}HEAP32[p>>2]=ptable.maxUniformBlockNameLength}else{HEAP32[p>>2]=GLctx.getProgramParameter(GL.programs[program],pname)}}function _emscripten_glGetQueryObjecti64vEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.timerQueriesEXT[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}writeI53ToI64(params,ret)}function _emscripten_glGetQueryObjectivEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.timerQueriesEXT[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}HEAP32[params>>2]=ret}function _emscripten_glGetQueryObjectui64vEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.timerQueriesEXT[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}writeI53ToI64(params,ret)}function _emscripten_glGetQueryObjectuivEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.timerQueriesEXT[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}HEAP32[params>>2]=ret}function _emscripten_glGetQueryivEXT(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.disjointTimerQueryExt["getQueryEXT"](target,pname)}function _emscripten_glGetRenderbufferParameteriv(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getRenderbufferParameter(target,pname)}function _emscripten_glGetShaderInfoLog(shader,maxLength,length,infoLog){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _emscripten_glGetShaderPrecisionFormat(shaderType,precisionType,range,precision){var result=GLctx.getShaderPrecisionFormat(shaderType,precisionType);HEAP32[range>>2]=result.rangeMin;HEAP32[range+4>>2]=result.rangeMax;HEAP32[precision>>2]=result.precision}function _emscripten_glGetShaderSource(shader,bufSize,length,source){var result=GLctx.getShaderSource(GL.shaders[shader]);if(!result)return;var numBytesWrittenExclNull=bufSize>0&&source?stringToUTF8(result,source,bufSize):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _emscripten_glGetShaderiv(shader,pname,p){if(!p){GL.recordError(1281);return}if(pname==35716){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var logLength=log?log.length+1:0;HEAP32[p>>2]=logLength}else if(pname==35720){var source=GLctx.getShaderSource(GL.shaders[shader]);var sourceLength=source?source.length+1:0;HEAP32[p>>2]=sourceLength}else{HEAP32[p>>2]=GLctx.getShaderParameter(GL.shaders[shader],pname)}}function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _emscripten_glGetString(name_){if(GL.stringCache[name_])return GL.stringCache[name_];var ret;switch(name_){case 7939:var exts=GLctx.getSupportedExtensions()||[];exts=exts.concat(exts.map(function(e){return"GL_"+e}));ret=stringToNewUTF8(exts.join(" "));break;case 7936:case 7937:case 37445:case 37446:var s=GLctx.getParameter(name_);if(!s){GL.recordError(1280)}ret=stringToNewUTF8(s);break;case 7938:var glVersion=GLctx.getParameter(7938);{glVersion="OpenGL ES 2.0 ("+glVersion+")"}ret=stringToNewUTF8(glVersion);break;case 35724:var glslVersion=GLctx.getParameter(35724);var ver_re=/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/;var ver_num=glslVersion.match(ver_re);if(ver_num!==null){if(ver_num[1].length==3)ver_num[1]=ver_num[1]+"0";glslVersion="OpenGL ES GLSL ES "+ver_num[1]+" ("+glslVersion+")"}ret=stringToNewUTF8(glslVersion);break;default:GL.recordError(1280);return 0}GL.stringCache[name_]=ret;return ret}function _emscripten_glGetTexParameterfv(target,pname,params){if(!params){GL.recordError(1281);return}HEAPF32[params>>2]=GLctx.getTexParameter(target,pname)}function _emscripten_glGetTexParameteriv(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getTexParameter(target,pname)}function jstoi_q(str){return parseInt(str)}function _emscripten_glGetUniformLocation(program,name){name=UTF8ToString(name);var arrayIndex=0;if(name[name.length-1]=="]"){var leftBrace=name.lastIndexOf("[");arrayIndex=name[leftBrace+1]!="]"?jstoi_q(name.slice(leftBrace+1)):0;name=name.slice(0,leftBrace)}var uniformInfo=GL.programInfos[program]&&GL.programInfos[program].uniforms[name];if(uniformInfo&&arrayIndex>=0&&arrayIndex<uniformInfo[0]){return uniformInfo[1]+arrayIndex}else{return-1}}function emscriptenWebGLGetUniform(program,location,params,type){if(!params){GL.recordError(1281);return}var data=GLctx.getUniform(GL.programs[program],GL.uniforms[location]);if(typeof data=="number"||typeof data=="boolean"){switch(type){case 0:HEAP32[params>>2]=data;break;case 2:HEAPF32[params>>2]=data;break}}else{for(var i=0;i<data.length;i++){switch(type){case 0:HEAP32[params+i*4>>2]=data[i];break;case 2:HEAPF32[params+i*4>>2]=data[i];break}}}}function _emscripten_glGetUniformfv(program,location,params){emscriptenWebGLGetUniform(program,location,params,2)}function _emscripten_glGetUniformiv(program,location,params){emscriptenWebGLGetUniform(program,location,params,0)}function _emscripten_glGetVertexAttribPointerv(index,pname,pointer){if(!pointer){GL.recordError(1281);return}HEAP32[pointer>>2]=GLctx.getVertexAttribOffset(index,pname)}function emscriptenWebGLGetVertexAttrib(index,pname,params,type){if(!params){GL.recordError(1281);return}var data=GLctx.getVertexAttrib(index,pname);if(pname==34975){HEAP32[params>>2]=data&&data["name"]}else if(typeof data=="number"||typeof data=="boolean"){switch(type){case 0:HEAP32[params>>2]=data;break;case 2:HEAPF32[params>>2]=data;break;case 5:HEAP32[params>>2]=Math.fround(data);break}}else{for(var i=0;i<data.length;i++){switch(type){case 0:HEAP32[params+i*4>>2]=data[i];break;case 2:HEAPF32[params+i*4>>2]=data[i];break;case 5:HEAP32[params+i*4>>2]=Math.fround(data[i]);break}}}}function _emscripten_glGetVertexAttribfv(index,pname,params){emscriptenWebGLGetVertexAttrib(index,pname,params,2)}function _emscripten_glGetVertexAttribiv(index,pname,params){emscriptenWebGLGetVertexAttrib(index,pname,params,5)}function _emscripten_glHint(x0,x1){GLctx["hint"](x0,x1)}function _emscripten_glIsBuffer(buffer){var b=GL.buffers[buffer];if(!b)return 0;return GLctx.isBuffer(b)}function _emscripten_glIsEnabled(x0){return GLctx["isEnabled"](x0)}function _emscripten_glIsFramebuffer(framebuffer){var fb=GL.framebuffers[framebuffer];if(!fb)return 0;return GLctx.isFramebuffer(fb)}function _emscripten_glIsProgram(program){program=GL.programs[program];if(!program)return 0;return GLctx.isProgram(program)}function _emscripten_glIsQueryEXT(id){var query=GL.timerQueriesEXT[id];if(!query)return 0;return GLctx.disjointTimerQueryExt["isQueryEXT"](query)}function _emscripten_glIsRenderbuffer(renderbuffer){var rb=GL.renderbuffers[renderbuffer];if(!rb)return 0;return GLctx.isRenderbuffer(rb)}function _emscripten_glIsShader(shader){var s=GL.shaders[shader];if(!s)return 0;return GLctx.isShader(s)}function _emscripten_glIsTexture(id){var texture=GL.textures[id];if(!texture)return 0;return GLctx.isTexture(texture)}function _emscripten_glIsVertexArrayOES(array){var vao=GL.vaos[array];if(!vao)return 0;return GLctx["isVertexArray"](vao)}function _emscripten_glLineWidth(x0){GLctx["lineWidth"](x0)}function _emscripten_glLinkProgram(program){GLctx.linkProgram(GL.programs[program]);GL.populateUniformTable(program)}function _emscripten_glPixelStorei(pname,param){if(pname==3317){GL.unpackAlignment=param}GLctx.pixelStorei(pname,param)}function _emscripten_glPolygonOffset(x0,x1){GLctx["polygonOffset"](x0,x1)}function _emscripten_glQueryCounterEXT(id,target){GLctx.disjointTimerQueryExt["queryCounterEXT"](GL.timerQueriesEXT[id],target)}function computeUnpackAlignedImageSize(width,height,sizePerPixel,alignment){function roundedToNextMultipleOf(x,y){return x+y-1&-y}var plainRowSize=width*sizePerPixel;var alignedRowSize=roundedToNextMultipleOf(plainRowSize,alignment);return height*alignedRowSize}function __colorChannelsInGlTextureFormat(format){var colorChannels={5:3,6:4,8:2,29502:3,29504:4};return colorChannels[format-6402]||1}function heapObjectForWebGLType(type){type-=5120;if(type==1)return HEAPU8;if(type==4)return HEAP32;if(type==6)return HEAPF32;if(type==5||type==28922)return HEAPU32;return HEAPU16}function heapAccessShiftForWebGLHeap(heap){return 31-Math.clz32(heap.BYTES_PER_ELEMENT)}function emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat){var heap=heapObjectForWebGLType(type);var shift=heapAccessShiftForWebGLHeap(heap);var byteSize=1<<shift;var sizePerPixel=__colorChannelsInGlTextureFormat(format)*byteSize;var bytes=computeUnpackAlignedImageSize(width,height,sizePerPixel,GL.unpackAlignment);return heap.subarray(pixels>>shift,pixels+bytes>>shift)}function _emscripten_glReadPixels(x,y,width,height,format,type,pixels){var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);return}GLctx.readPixels(x,y,width,height,format,type,pixelData)}function _emscripten_glReleaseShaderCompiler(){}function _emscripten_glRenderbufferStorage(x0,x1,x2,x3){GLctx["renderbufferStorage"](x0,x1,x2,x3)}function _emscripten_glSampleCoverage(value,invert){GLctx.sampleCoverage(value,!!invert)}function _emscripten_glScissor(x0,x1,x2,x3){GLctx["scissor"](x0,x1,x2,x3)}function _emscripten_glShaderBinary(){GL.recordError(1280)}function _emscripten_glShaderSource(shader,count,string,length){var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}function _emscripten_glStencilFunc(x0,x1,x2){GLctx["stencilFunc"](x0,x1,x2)}function _emscripten_glStencilFuncSeparate(x0,x1,x2,x3){GLctx["stencilFuncSeparate"](x0,x1,x2,x3)}function _emscripten_glStencilMask(x0){GLctx["stencilMask"](x0)}function _emscripten_glStencilMaskSeparate(x0,x1){GLctx["stencilMaskSeparate"](x0,x1)}function _emscripten_glStencilOp(x0,x1,x2){GLctx["stencilOp"](x0,x1,x2)}function _emscripten_glStencilOpSeparate(x0,x1,x2,x3){GLctx["stencilOpSeparate"](x0,x1,x2,x3)}function _emscripten_glTexImage2D(target,level,internalFormat,width,height,border,format,type,pixels){GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels?emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat):null)}function _emscripten_glTexParameterf(x0,x1,x2){GLctx["texParameterf"](x0,x1,x2)}function _emscripten_glTexParameterfv(target,pname,params){var param=HEAPF32[params>>2];GLctx.texParameterf(target,pname,param)}function _emscripten_glTexParameteri(x0,x1,x2){GLctx["texParameteri"](x0,x1,x2)}function _emscripten_glTexParameteriv(target,pname,params){var param=HEAP32[params>>2];GLctx.texParameteri(target,pname,param)}function _emscripten_glTexSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixels){var pixelData=null;if(pixels)pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,0);GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixelData)}function _emscripten_glUniform1f(location,v0){GLctx.uniform1f(GL.uniforms[location],v0)}var miniTempWebGLFloatBuffers=[];function _emscripten_glUniform1fv(location,count,value){if(count<=288){var view=miniTempWebGLFloatBuffers[count-1];for(var i=0;i<count;++i){view[i]=HEAPF32[value+4*i>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*4>>2)}GLctx.uniform1fv(GL.uniforms[location],view)}function _emscripten_glUniform1i(location,v0){GLctx.uniform1i(GL.uniforms[location],v0)}var __miniTempWebGLIntBuffers=[];function _emscripten_glUniform1iv(location,count,value){if(count<=288){var view=__miniTempWebGLIntBuffers[count-1];for(var i=0;i<count;++i){view[i]=HEAP32[value+4*i>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*4>>2)}GLctx.uniform1iv(GL.uniforms[location],view)}function _emscripten_glUniform2f(location,v0,v1){GLctx.uniform2f(GL.uniforms[location],v0,v1)}function _emscripten_glUniform2fv(location,count,value){if(count<=144){var view=miniTempWebGLFloatBuffers[2*count-1];for(var i=0;i<2*count;i+=2){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*8>>2)}GLctx.uniform2fv(GL.uniforms[location],view)}function _emscripten_glUniform2i(location,v0,v1){GLctx.uniform2i(GL.uniforms[location],v0,v1)}function _emscripten_glUniform2iv(location,count,value){if(count<=144){var view=__miniTempWebGLIntBuffers[2*count-1];for(var i=0;i<2*count;i+=2){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*8>>2)}GLctx.uniform2iv(GL.uniforms[location],view)}function _emscripten_glUniform3f(location,v0,v1,v2){GLctx.uniform3f(GL.uniforms[location],v0,v1,v2)}function _emscripten_glUniform3fv(location,count,value){if(count<=96){var view=miniTempWebGLFloatBuffers[3*count-1];for(var i=0;i<3*count;i+=3){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*12>>2)}GLctx.uniform3fv(GL.uniforms[location],view)}function _emscripten_glUniform3i(location,v0,v1,v2){GLctx.uniform3i(GL.uniforms[location],v0,v1,v2)}function _emscripten_glUniform3iv(location,count,value){if(count<=96){var view=__miniTempWebGLIntBuffers[3*count-1];for(var i=0;i<3*count;i+=3){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2];view[i+2]=HEAP32[value+(4*i+8)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*12>>2)}GLctx.uniform3iv(GL.uniforms[location],view)}function _emscripten_glUniform4f(location,v0,v1,v2,v3){GLctx.uniform4f(GL.uniforms[location],v0,v1,v2,v3)}function _emscripten_glUniform4fv(location,count,value){if(count<=72){var view=miniTempWebGLFloatBuffers[4*count-1];var heap=HEAPF32;value>>=2;for(var i=0;i<4*count;i+=4){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3]}}else{var view=HEAPF32.subarray(value>>2,value+count*16>>2)}GLctx.uniform4fv(GL.uniforms[location],view)}function _emscripten_glUniform4i(location,v0,v1,v2,v3){GLctx.uniform4i(GL.uniforms[location],v0,v1,v2,v3)}function _emscripten_glUniform4iv(location,count,value){if(count<=72){var view=__miniTempWebGLIntBuffers[4*count-1];for(var i=0;i<4*count;i+=4){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2];view[i+2]=HEAP32[value+(4*i+8)>>2];view[i+3]=HEAP32[value+(4*i+12)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*16>>2)}GLctx.uniform4iv(GL.uniforms[location],view)}function _emscripten_glUniformMatrix2fv(location,count,transpose,value){if(count<=72){var view=miniTempWebGLFloatBuffers[4*count-1];for(var i=0;i<4*count;i+=4){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2];view[i+3]=HEAPF32[value+(4*i+12)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*16>>2)}GLctx.uniformMatrix2fv(GL.uniforms[location],!!transpose,view)}function _emscripten_glUniformMatrix3fv(location,count,transpose,value){if(count<=32){var view=miniTempWebGLFloatBuffers[9*count-1];for(var i=0;i<9*count;i+=9){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2];view[i+3]=HEAPF32[value+(4*i+12)>>2];view[i+4]=HEAPF32[value+(4*i+16)>>2];view[i+5]=HEAPF32[value+(4*i+20)>>2];view[i+6]=HEAPF32[value+(4*i+24)>>2];view[i+7]=HEAPF32[value+(4*i+28)>>2];view[i+8]=HEAPF32[value+(4*i+32)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*36>>2)}GLctx.uniformMatrix3fv(GL.uniforms[location],!!transpose,view)}function _emscripten_glUniformMatrix4fv(location,count,transpose,value){if(count<=18){var view=miniTempWebGLFloatBuffers[16*count-1];var heap=HEAPF32;value>>=2;for(var i=0;i<16*count;i+=16){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3];view[i+4]=heap[dst+4];view[i+5]=heap[dst+5];view[i+6]=heap[dst+6];view[i+7]=heap[dst+7];view[i+8]=heap[dst+8];view[i+9]=heap[dst+9];view[i+10]=heap[dst+10];view[i+11]=heap[dst+11];view[i+12]=heap[dst+12];view[i+13]=heap[dst+13];view[i+14]=heap[dst+14];view[i+15]=heap[dst+15]}}else{var view=HEAPF32.subarray(value>>2,value+count*64>>2)}GLctx.uniformMatrix4fv(GL.uniforms[location],!!transpose,view)}function _emscripten_glUseProgram(program){GLctx.useProgram(GL.programs[program])}function _emscripten_glValidateProgram(program){GLctx.validateProgram(GL.programs[program])}function _emscripten_glVertexAttrib1f(x0,x1){GLctx["vertexAttrib1f"](x0,x1)}function _emscripten_glVertexAttrib1fv(index,v){GLctx.vertexAttrib1f(index,HEAPF32[v>>2])}function _emscripten_glVertexAttrib2f(x0,x1,x2){GLctx["vertexAttrib2f"](x0,x1,x2)}function _emscripten_glVertexAttrib2fv(index,v){GLctx.vertexAttrib2f(index,HEAPF32[v>>2],HEAPF32[v+4>>2])}function _emscripten_glVertexAttrib3f(x0,x1,x2,x3){GLctx["vertexAttrib3f"](x0,x1,x2,x3)}function _emscripten_glVertexAttrib3fv(index,v){GLctx.vertexAttrib3f(index,HEAPF32[v>>2],HEAPF32[v+4>>2],HEAPF32[v+8>>2])}function _emscripten_glVertexAttrib4f(x0,x1,x2,x3,x4){GLctx["vertexAttrib4f"](x0,x1,x2,x3,x4)}function _emscripten_glVertexAttrib4fv(index,v){GLctx.vertexAttrib4f(index,HEAPF32[v>>2],HEAPF32[v+4>>2],HEAPF32[v+8>>2],HEAPF32[v+12>>2])}function _emscripten_glVertexAttribDivisorANGLE(index,divisor){GLctx["vertexAttribDivisor"](index,divisor)}function _emscripten_glVertexAttribPointer(index,size,type,normalized,stride,ptr){GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}function _emscripten_glViewport(x0,x1,x2,x3){GLctx["viewport"](x0,x1,x2,x3)}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function abortOnCannotGrowMemory(requestedSize){abort("OOM")}function _emscripten_resize_heap(requestedSize){abortOnCannotGrowMemory(requestedSize)}function _emscripten_run_script(ptr){eval(UTF8ToString(ptr))}function _emscripten_sample_gamepad_data(){return(JSEvents.lastGamepadState=navigator.getGamepads?navigator.getGamepads():navigator.webkitGetGamepads?navigator.webkitGetGamepads():null)?0:-1}function fillMouseEventData(eventStruct,e,target){var idx=eventStruct>>2;HEAP32[idx+0]=e.screenX;HEAP32[idx+1]=e.screenY;HEAP32[idx+2]=e.clientX;HEAP32[idx+3]=e.clientY;HEAP32[idx+4]=e.ctrlKey;HEAP32[idx+5]=e.shiftKey;HEAP32[idx+6]=e.altKey;HEAP32[idx+7]=e.metaKey;HEAP16[idx*2+16]=e.button;HEAP16[idx*2+17]=e.buttons;HEAP32[idx+9]=e["movementX"];HEAP32[idx+10]=e["movementY"];var rect=getBoundingClientRect(target);HEAP32[idx+11]=e.clientX-rect.left;HEAP32[idx+12]=e.clientY-rect.top}function registerMouseEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.mouseEvent)JSEvents.mouseEvent=_malloc(64);target=findEventTarget(target);var mouseEventHandlerFunc=function(ev){var e=ev||event;fillMouseEventData(JSEvents.mouseEvent,e,target);if(wasmTable.get(callbackfunc)(eventTypeId,JSEvents.mouseEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:eventTypeString!="mousemove"&&eventTypeString!="mouseenter"&&eventTypeString!="mouseleave",eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:mouseEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_click_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,4,"click",targetThread);return 0}function fillFullscreenChangeEventData(eventStruct){var fullscreenElement=document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement||document.msFullscreenElement;var isFullscreen=!!fullscreenElement;HEAP32[eventStruct>>2]=isFullscreen;HEAP32[eventStruct+4>>2]=JSEvents.fullscreenEnabled();var reportedElement=isFullscreen?fullscreenElement:JSEvents.previousFullscreenElement;var nodeName=JSEvents.getNodeNameForTarget(reportedElement);var id=reportedElement&&reportedElement.id?reportedElement.id:"";stringToUTF8(nodeName,eventStruct+8,128);stringToUTF8(id,eventStruct+136,128);HEAP32[eventStruct+264>>2]=reportedElement?reportedElement.clientWidth:0;HEAP32[eventStruct+268>>2]=reportedElement?reportedElement.clientHeight:0;HEAP32[eventStruct+272>>2]=screen.width;HEAP32[eventStruct+276>>2]=screen.height;if(isFullscreen){JSEvents.previousFullscreenElement=fullscreenElement}}function registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.fullscreenChangeEvent)JSEvents.fullscreenChangeEvent=_malloc(280);var fullscreenChangeEventhandlerFunc=function(ev){var e=ev||event;var fullscreenChangeEvent=JSEvents.fullscreenChangeEvent;fillFullscreenChangeEventData(fullscreenChangeEvent);if(wasmTable.get(callbackfunc)(eventTypeId,fullscreenChangeEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:fullscreenChangeEventhandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_fullscreenchange_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){if(!JSEvents.fullscreenEnabled())return-1;target=findEventTarget(target);if(!target)return-4;registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,19,"fullscreenchange",targetThread);registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,19,"webkitfullscreenchange",targetThread);return 0}function registerGamepadEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.gamepadEvent)JSEvents.gamepadEvent=_malloc(1432);var gamepadEventHandlerFunc=function(ev){var e=ev||event;var gamepadEvent=JSEvents.gamepadEvent;fillGamepadEventData(gamepadEvent,e["gamepad"]);if(wasmTable.get(callbackfunc)(eventTypeId,gamepadEvent,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:gamepadEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_gamepadconnected_callback_on_thread(userData,useCapture,callbackfunc,targetThread){if(!navigator.getGamepads&&!navigator.webkitGetGamepads)return-1;registerGamepadEventCallback(2,userData,useCapture,callbackfunc,26,"gamepadconnected",targetThread);return 0}function _emscripten_set_gamepaddisconnected_callback_on_thread(userData,useCapture,callbackfunc,targetThread){if(!navigator.getGamepads&&!navigator.webkitGetGamepads)return-1;registerGamepadEventCallback(2,userData,useCapture,callbackfunc,27,"gamepaddisconnected",targetThread);return 0}function registerKeyEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.keyEvent)JSEvents.keyEvent=_malloc(164);var keyEventHandlerFunc=function(e){var keyEventData=JSEvents.keyEvent;var idx=keyEventData>>2;HEAP32[idx+0]=e.location;HEAP32[idx+1]=e.ctrlKey;HEAP32[idx+2]=e.shiftKey;HEAP32[idx+3]=e.altKey;HEAP32[idx+4]=e.metaKey;HEAP32[idx+5]=e.repeat;HEAP32[idx+6]=e.charCode;HEAP32[idx+7]=e.keyCode;HEAP32[idx+8]=e.which;stringToUTF8(e.key||"",keyEventData+36,32);stringToUTF8(e.code||"",keyEventData+68,32);stringToUTF8(e.char||"",keyEventData+100,32);stringToUTF8(e.locale||"",keyEventData+132,32);if(wasmTable.get(callbackfunc)(eventTypeId,keyEventData,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:keyEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_keydown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,2,"keydown",targetThread);return 0}var Browser={mainLoop:{scheduler:null,method:"",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause:function(){Browser.mainLoop.scheduler=null;Browser.mainLoop.currentlyRunningMainloop++},resume:function(){Browser.mainLoop.currentlyRunningMainloop++;var timingMode=Browser.mainLoop.timingMode;var timingValue=Browser.mainLoop.timingValue;var func=Browser.mainLoop.func;Browser.mainLoop.func=null;setMainLoop(func,0,false,Browser.mainLoop.arg,true);_emscripten_set_main_loop_timing(timingMode,timingValue);Browser.mainLoop.scheduler()},updateStatus:function(){if(Module["setStatus"]){var message=Module["statusMessage"]||"Please wait...";var remaining=Browser.mainLoop.remainingBlockers;var expected=Browser.mainLoop.expectedBlockers;if(remaining){if(remaining<expected){Module["setStatus"](message+" ("+(expected-remaining)+"/"+expected+")")}else{Module["setStatus"](message)}}else{Module["setStatus"]("")}}},runIter:function(func){if(ABORT)return;if(Module["preMainLoop"]){var preRet=Module["preMainLoop"]();if(preRet===false){return}}try{func()}catch(e){if(e instanceof ExitStatus){return}else if(e=="unwind"){return}else{if(e&&typeof e==="object"&&e.stack)err("exception thrown: "+[e,e.stack]);throw e}}if(Module["postMainLoop"])Module["postMainLoop"]()}},isFullscreen:false,pointerLock:false,moduleContextCreatedCallbacks:[],workers:[],init:function(){if(!Module["preloadPlugins"])Module["preloadPlugins"]=[];if(Browser.initted)return;Browser.initted=true;try{new Blob;Browser.hasBlobConstructor=true}catch(e){Browser.hasBlobConstructor=false;console.log("warning: no blob constructor, cannot create blobs with mimetypes")}Browser.BlobBuilder=typeof MozBlobBuilder!="undefined"?MozBlobBuilder:typeof WebKitBlobBuilder!="undefined"?WebKitBlobBuilder:!Browser.hasBlobConstructor?console.log("warning: no BlobBuilder"):null;Browser.URLObject=typeof window!="undefined"?window.URL?window.URL:window.webkitURL:undefined;if(!Module.noImageDecoding&&typeof Browser.URLObject==="undefined"){console.log("warning: Browser does not support creating object URLs. Built-in browser image decoding will not be available.");Module.noImageDecoding=true}var imagePlugin={};imagePlugin["canHandle"]=function imagePlugin_canHandle(name){return!Module.noImageDecoding&&/\.(jpg|jpeg|png|bmp)$/i.test(name)};imagePlugin["handle"]=function imagePlugin_handle(byteArray,name,onload,onerror){var b=null;if(Browser.hasBlobConstructor){try{b=new Blob([byteArray],{type:Browser.getMimetype(name)});if(b.size!==byteArray.length){b=new Blob([new Uint8Array(byteArray).buffer],{type:Browser.getMimetype(name)})}}catch(e){warnOnce("Blob constructor present but fails: "+e+"; falling back to blob builder")}}if(!b){var bb=new Browser.BlobBuilder;bb.append(new Uint8Array(byteArray).buffer);b=bb.getBlob()}var url=Browser.URLObject.createObjectURL(b);var img=new Image;img.onload=function img_onload(){assert(img.complete,"Image "+name+" could not be decoded");var canvas=document.createElement("canvas");canvas.width=img.width;canvas.height=img.height;var ctx=canvas.getContext("2d");ctx.drawImage(img,0,0);Module["preloadedImages"][name]=canvas;Browser.URLObject.revokeObjectURL(url);if(onload)onload(byteArray)};img.onerror=function img_onerror(event){console.log("Image "+url+" could not be decoded");if(onerror)onerror()};img.src=url};Module["preloadPlugins"].push(imagePlugin);var audioPlugin={};audioPlugin["canHandle"]=function audioPlugin_canHandle(name){return!Module.noAudioDecoding&&name.substr(-4)in{".ogg":1,".wav":1,".mp3":1}};audioPlugin["handle"]=function audioPlugin_handle(byteArray,name,onload,onerror){var done=false;function finish(audio){if(done)return;done=true;Module["preloadedAudios"][name]=audio;if(onload)onload(byteArray)}function fail(){if(done)return;done=true;Module["preloadedAudios"][name]=new Audio;if(onerror)onerror()}if(Browser.hasBlobConstructor){try{var b=new Blob([byteArray],{type:Browser.getMimetype(name)})}catch(e){return fail()}var url=Browser.URLObject.createObjectURL(b);var audio=new Audio;audio.addEventListener("canplaythrough",function(){finish(audio)},false);audio.onerror=function audio_onerror(event){if(done)return;console.log("warning: browser could not fully decode audio "+name+", trying slower base64 approach");function encode64(data){var BASE="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var PAD="=";var ret="";var leftchar=0;var leftbits=0;for(var i=0;i<data.length;i++){leftchar=leftchar<<8|data[i];leftbits+=8;while(leftbits>=6){var curr=leftchar>>leftbits-6&63;leftbits-=6;ret+=BASE[curr]}}if(leftbits==2){ret+=BASE[(leftchar&3)<<4];ret+=PAD+PAD}else if(leftbits==4){ret+=BASE[(leftchar&15)<<2];ret+=PAD}return ret}audio.src="data:audio/x-"+name.substr(-3)+";base64,"+encode64(byteArray);finish(audio)};audio.src=url;Browser.safeSetTimeout(function(){finish(audio)},1e4)}else{return fail()}};Module["preloadPlugins"].push(audioPlugin);function pointerLockChange(){Browser.pointerLock=document["pointerLockElement"]===Module["canvas"]||document["mozPointerLockElement"]===Module["canvas"]||document["webkitPointerLockElement"]===Module["canvas"]||document["msPointerLockElement"]===Module["canvas"]}var canvas=Module["canvas"];if(canvas){canvas.requestPointerLock=canvas["requestPointerLock"]||canvas["mozRequestPointerLock"]||canvas["webkitRequestPointerLock"]||canvas["msRequestPointerLock"]||function(){};canvas.exitPointerLock=document["exitPointerLock"]||document["mozExitPointerLock"]||document["webkitExitPointerLock"]||document["msExitPointerLock"]||function(){};canvas.exitPointerLock=canvas.exitPointerLock.bind(document);document.addEventListener("pointerlockchange",pointerLockChange,false);document.addEventListener("mozpointerlockchange",pointerLockChange,false);document.addEventListener("webkitpointerlockchange",pointerLockChange,false);document.addEventListener("mspointerlockchange",pointerLockChange,false);if(Module["elementPointerLock"]){canvas.addEventListener("click",function(ev){if(!Browser.pointerLock&&Module["canvas"].requestPointerLock){Module["canvas"].requestPointerLock();ev.preventDefault()}},false)}}},createContext:function(canvas,useWebGL,setInModule,webGLContextAttributes){if(useWebGL&&Module.ctx&&canvas==Module.canvas)return Module.ctx;var ctx;var contextHandle;if(useWebGL){var contextAttributes={antialias:false,alpha:false,majorVersion:1};if(webGLContextAttributes){for(var attribute in webGLContextAttributes){contextAttributes[attribute]=webGLContextAttributes[attribute]}}if(typeof GL!=="undefined"){contextHandle=GL.createContext(canvas,contextAttributes);if(contextHandle){ctx=GL.getContext(contextHandle).GLctx}}}else{ctx=canvas.getContext("2d")}if(!ctx)return null;if(setInModule){if(!useWebGL)assert(typeof GLctx==="undefined","cannot set in module if GLctx is used, but we are a non-GL context that would replace it");Module.ctx=ctx;if(useWebGL)GL.makeContextCurrent(contextHandle);Module.useWebGL=useWebGL;Browser.moduleContextCreatedCallbacks.forEach(function(callback){callback()});Browser.init()}return ctx},destroyContext:function(canvas,useWebGL,setInModule){},fullscreenHandlersInstalled:false,lockPointer:undefined,resizeCanvas:undefined,requestFullscreen:function(lockPointer,resizeCanvas){Browser.lockPointer=lockPointer;Browser.resizeCanvas=resizeCanvas;if(typeof Browser.lockPointer==="undefined")Browser.lockPointer=true;if(typeof Browser.resizeCanvas==="undefined")Browser.resizeCanvas=false;var canvas=Module["canvas"];function fullscreenChange(){Browser.isFullscreen=false;var canvasContainer=canvas.parentNode;if((document["fullscreenElement"]||document["mozFullScreenElement"]||document["msFullscreenElement"]||document["webkitFullscreenElement"]||document["webkitCurrentFullScreenElement"])===canvasContainer){canvas.exitFullscreen=Browser.exitFullscreen;if(Browser.lockPointer)canvas.requestPointerLock();Browser.isFullscreen=true;if(Browser.resizeCanvas){Browser.setFullscreenCanvasSize()}else{Browser.updateCanvasDimensions(canvas)}}else{canvasContainer.parentNode.insertBefore(canvas,canvasContainer);canvasContainer.parentNode.removeChild(canvasContainer);if(Browser.resizeCanvas){Browser.setWindowedCanvasSize()}else{Browser.updateCanvasDimensions(canvas)}}if(Module["onFullScreen"])Module["onFullScreen"](Browser.isFullscreen);if(Module["onFullscreen"])Module["onFullscreen"](Browser.isFullscreen)}if(!Browser.fullscreenHandlersInstalled){Browser.fullscreenHandlersInstalled=true;document.addEventListener("fullscreenchange",fullscreenChange,false);document.addEventListener("mozfullscreenchange",fullscreenChange,false);document.addEventListener("webkitfullscreenchange",fullscreenChange,false);document.addEventListener("MSFullscreenChange",fullscreenChange,false)}var canvasContainer=document.createElement("div");canvas.parentNode.insertBefore(canvasContainer,canvas);canvasContainer.appendChild(canvas);canvasContainer.requestFullscreen=canvasContainer["requestFullscreen"]||canvasContainer["mozRequestFullScreen"]||canvasContainer["msRequestFullscreen"]||(canvasContainer["webkitRequestFullscreen"]?function(){canvasContainer["webkitRequestFullscreen"](Element["ALLOW_KEYBOARD_INPUT"])}:null)||(canvasContainer["webkitRequestFullScreen"]?function(){canvasContainer["webkitRequestFullScreen"](Element["ALLOW_KEYBOARD_INPUT"])}:null);canvasContainer.requestFullscreen()},exitFullscreen:function(){if(!Browser.isFullscreen){return false}var CFS=document["exitFullscreen"]||document["cancelFullScreen"]||document["mozCancelFullScreen"]||document["msExitFullscreen"]||document["webkitCancelFullScreen"]||function(){};CFS.apply(document,[]);return true},nextRAF:0,fakeRequestAnimationFrame:function(func){var now=Date.now();if(Browser.nextRAF===0){Browser.nextRAF=now+1e3/60}else{while(now+2>=Browser.nextRAF){Browser.nextRAF+=1e3/60}}var delay=Math.max(Browser.nextRAF-now,0);setTimeout(func,delay)},requestAnimationFrame:function(func){if(typeof requestAnimationFrame==="function"){requestAnimationFrame(func);return}var RAF=Browser.fakeRequestAnimationFrame;RAF(func)},safeRequestAnimationFrame:function(func){return Browser.requestAnimationFrame(function(){if(ABORT)return;func()})},safeSetTimeout:function(func,timeout){noExitRuntime=true;return setTimeout(function(){if(ABORT)return;func()},timeout)},getMimetype:function(name){return{"jpg":"image/jpeg","jpeg":"image/jpeg","png":"image/png","bmp":"image/bmp","ogg":"audio/ogg","wav":"audio/wav","mp3":"audio/mpeg"}[name.substr(name.lastIndexOf(".")+1)]},getUserMedia:function(func){if(!window.getUserMedia){window.getUserMedia=navigator["getUserMedia"]||navigator["mozGetUserMedia"]}window.getUserMedia(func)},getMovementX:function(event){return event["movementX"]||event["mozMovementX"]||event["webkitMovementX"]||0},getMovementY:function(event){return event["movementY"]||event["mozMovementY"]||event["webkitMovementY"]||0},getMouseWheelDelta:function(event){var delta=0;switch(event.type){case"DOMMouseScroll":delta=event.detail/3;break;case"mousewheel":delta=event.wheelDelta/120;break;case"wheel":delta=event.deltaY;switch(event.deltaMode){case 0:delta/=100;break;case 1:delta/=3;break;case 2:delta*=80;break;default:throw"unrecognized mouse wheel delta mode: "+event.deltaMode}break;default:throw"unrecognized mouse wheel event: "+event.type}return delta},mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,touches:{},lastTouches:{},calculateMouseEvent:function(event){if(Browser.pointerLock){if(event.type!="mousemove"&&"mozMovementX"in event){Browser.mouseMovementX=Browser.mouseMovementY=0}else{Browser.mouseMovementX=Browser.getMovementX(event);Browser.mouseMovementY=Browser.getMovementY(event)}if(typeof SDL!="undefined"){Browser.mouseX=SDL.mouseX+Browser.mouseMovementX;Browser.mouseY=SDL.mouseY+Browser.mouseMovementY}else{Browser.mouseX+=Browser.mouseMovementX;Browser.mouseY+=Browser.mouseMovementY}}else{var rect=Module["canvas"].getBoundingClientRect();var cw=Module["canvas"].width;var ch=Module["canvas"].height;var scrollX=typeof window.scrollX!=="undefined"?window.scrollX:window.pageXOffset;var scrollY=typeof window.scrollY!=="undefined"?window.scrollY:window.pageYOffset;if(event.type==="touchstart"||event.type==="touchend"||event.type==="touchmove"){var touch=event.touch;if(touch===undefined){return}var adjustedX=touch.pageX-(scrollX+rect.left);var adjustedY=touch.pageY-(scrollY+rect.top);adjustedX=adjustedX*(cw/rect.width);adjustedY=adjustedY*(ch/rect.height);var coords={x:adjustedX,y:adjustedY};if(event.type==="touchstart"){Browser.lastTouches[touch.identifier]=coords;Browser.touches[touch.identifier]=coords}else if(event.type==="touchend"||event.type==="touchmove"){var last=Browser.touches[touch.identifier];if(!last)last=coords;Browser.lastTouches[touch.identifier]=last;Browser.touches[touch.identifier]=coords}return}var x=event.pageX-(scrollX+rect.left);var y=event.pageY-(scrollY+rect.top);x=x*(cw/rect.width);y=y*(ch/rect.height);Browser.mouseMovementX=x-Browser.mouseX;Browser.mouseMovementY=y-Browser.mouseY;Browser.mouseX=x;Browser.mouseY=y}},asyncLoad:function(url,onload,onerror,noRunDep){var dep=!noRunDep?getUniqueRunDependency("al "+url):"";readAsync(url,function(arrayBuffer){assert(arrayBuffer,'Loading data file "'+url+'" failed (no arrayBuffer).');onload(new Uint8Array(arrayBuffer));if(dep)removeRunDependency(dep)},function(event){if(onerror){onerror()}else{throw'Loading data file "'+url+'" failed.'}});if(dep)addRunDependency(dep)},resizeListeners:[],updateResizeListeners:function(){var canvas=Module["canvas"];Browser.resizeListeners.forEach(function(listener){listener(canvas.width,canvas.height)})},setCanvasSize:function(width,height,noUpdates){var canvas=Module["canvas"];Browser.updateCanvasDimensions(canvas,width,height);if(!noUpdates)Browser.updateResizeListeners()},windowedWidth:0,windowedHeight:0,setFullscreenCanvasSize:function(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>2];flags=flags|8388608;HEAP32[SDL.screen>>2]=flags}Browser.updateCanvasDimensions(Module["canvas"]);Browser.updateResizeListeners()},setWindowedCanvasSize:function(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>2];flags=flags&~8388608;HEAP32[SDL.screen>>2]=flags}Browser.updateCanvasDimensions(Module["canvas"]);Browser.updateResizeListeners()},updateCanvasDimensions:function(canvas,wNative,hNative){if(wNative&&hNative){canvas.widthNative=wNative;canvas.heightNative=hNative}else{wNative=canvas.widthNative;hNative=canvas.heightNative}var w=wNative;var h=hNative;if(Module["forcedAspectRatio"]&&Module["forcedAspectRatio"]>0){if(w/h<Module["forcedAspectRatio"]){w=Math.round(h*Module["forcedAspectRatio"])}else{h=Math.round(w/Module["forcedAspectRatio"])}}if((document["fullscreenElement"]||document["mozFullScreenElement"]||document["msFullscreenElement"]||document["webkitFullscreenElement"]||document["webkitCurrentFullScreenElement"])===canvas.parentNode&&typeof screen!="undefined"){var factor=Math.min(screen.width/w,screen.height/h);w=Math.round(w*factor);h=Math.round(h*factor)}if(Browser.resizeCanvas){if(canvas.width!=w)canvas.width=w;if(canvas.height!=h)canvas.height=h;if(typeof canvas.style!="undefined"){canvas.style.removeProperty("width");canvas.style.removeProperty("height")}}else{if(canvas.width!=wNative)canvas.width=wNative;if(canvas.height!=hNative)canvas.height=hNative;if(typeof canvas.style!="undefined"){if(w!=wNative||h!=hNative){canvas.style.setProperty("width",w+"px","important");canvas.style.setProperty("height",h+"px","important")}else{canvas.style.removeProperty("width");canvas.style.removeProperty("height")}}}},wgetRequests:{},nextWgetRequestHandle:0,getNextWgetRequestHandle:function(){var handle=Browser.nextWgetRequestHandle;Browser.nextWgetRequestHandle++;return handle}};function _emscripten_set_main_loop_timing(mode,value){Browser.mainLoop.timingMode=mode;Browser.mainLoop.timingValue=value;if(!Browser.mainLoop.func){return 1}if(mode==0){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setTimeout(){var timeUntilNextTick=Math.max(0,Browser.mainLoop.tickStartTime+value-_emscripten_get_now())|0;setTimeout(Browser.mainLoop.runner,timeUntilNextTick)};Browser.mainLoop.method="timeout"}else if(mode==1){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_rAF(){Browser.requestAnimationFrame(Browser.mainLoop.runner)};Browser.mainLoop.method="rAF"}else if(mode==2){if(typeof setImmediate==="undefined"){var setImmediates=[];var emscriptenMainLoopMessageId="setimmediate";var Browser_setImmediate_messageHandler=function(event){if(event.data===emscriptenMainLoopMessageId||event.data.target===emscriptenMainLoopMessageId){event.stopPropagation();setImmediates.shift()()}};addEventListener("message",Browser_setImmediate_messageHandler,true);setImmediate=function Browser_emulated_setImmediate(func){setImmediates.push(func);if(ENVIRONMENT_IS_WORKER){if(Module["setImmediates"]===undefined)Module["setImmediates"]=[];Module["setImmediates"].push(func);postMessage({target:emscriptenMainLoopMessageId})}else postMessage(emscriptenMainLoopMessageId,"*")}}Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setImmediate(){setImmediate(Browser.mainLoop.runner)};Browser.mainLoop.method="immediate"}return 0}var _emscripten_get_now;if(ENVIRONMENT_IS_NODE){_emscripten_get_now=function(){var t=process["hrtime"]();return t[0]*1e3+t[1]/1e6}}else if(typeof dateNow!=="undefined"){_emscripten_get_now=dateNow}else _emscripten_get_now=function(){return performance.now()};function setMainLoop(browserIterationFunc,fps,simulateInfiniteLoop,arg,noSetTiming){noExitRuntime=true;assert(!Browser.mainLoop.func,"emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters.");Browser.mainLoop.func=browserIterationFunc;Browser.mainLoop.arg=arg;var thisMainLoopId=Browser.mainLoop.currentlyRunningMainloop;Browser.mainLoop.runner=function Browser_mainLoop_runner(){if(ABORT)return;if(Browser.mainLoop.queue.length>0){var start=Date.now();var blocker=Browser.mainLoop.queue.shift();blocker.func(blocker.arg);if(Browser.mainLoop.remainingBlockers){var remaining=Browser.mainLoop.remainingBlockers;var next=remaining%1==0?remaining-1:Math.floor(remaining);if(blocker.counted){Browser.mainLoop.remainingBlockers=next}else{next=next+.5;Browser.mainLoop.remainingBlockers=(8*remaining+next)/9}}console.log('main loop blocker "'+blocker.name+'" took '+(Date.now()-start)+" ms");Browser.mainLoop.updateStatus();if(thisMainLoopId<Browser.mainLoop.currentlyRunningMainloop)return;setTimeout(Browser.mainLoop.runner,0);return}if(thisMainLoopId<Browser.mainLoop.currentlyRunningMainloop)return;Browser.mainLoop.currentFrameNumber=Browser.mainLoop.currentFrameNumber+1|0;if(Browser.mainLoop.timingMode==1&&Browser.mainLoop.timingValue>1&&Browser.mainLoop.currentFrameNumber%Browser.mainLoop.timingValue!=0){Browser.mainLoop.scheduler();return}else if(Browser.mainLoop.timingMode==0){Browser.mainLoop.tickStartTime=_emscripten_get_now()}Browser.mainLoop.runIter(browserIterationFunc);if(thisMainLoopId<Browser.mainLoop.currentlyRunningMainloop)return;if(typeof SDL==="object"&&SDL.audio&&SDL.audio.queueNewAudioData)SDL.audio.queueNewAudioData();Browser.mainLoop.scheduler()};if(!noSetTiming){if(fps&&fps>0)_emscripten_set_main_loop_timing(0,1e3/fps);else _emscripten_set_main_loop_timing(1,1);Browser.mainLoop.scheduler()}if(simulateInfiniteLoop){throw"unwind"}}function _emscripten_set_main_loop(func,fps,simulateInfiniteLoop){var browserIterationFunc=wasmTable.get(func);setMainLoop(browserIterationFunc,fps,simulateInfiniteLoop)}function registerTouchEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.touchEvent)JSEvents.touchEvent=_malloc(1684);target=findEventTarget(target);var touchEventHandlerFunc=function(e){var touches={};var et=e.touches;for(var i=0;i<et.length;++i){var touch=et[i];touches[touch.identifier]=touch}et=e.changedTouches;for(var i=0;i<et.length;++i){var touch=et[i];touch.isChanged=1;touches[touch.identifier]=touch}et=e.targetTouches;for(var i=0;i<et.length;++i){touches[et[i].identifier].onTarget=1}var touchEvent=JSEvents.touchEvent;var idx=touchEvent>>2;HEAP32[idx+1]=e.ctrlKey;HEAP32[idx+2]=e.shiftKey;HEAP32[idx+3]=e.altKey;HEAP32[idx+4]=e.metaKey;idx+=5;var targetRect=getBoundingClientRect(target);var numTouches=0;for(var i in touches){var t=touches[i];HEAP32[idx+0]=t.identifier;HEAP32[idx+1]=t.screenX;HEAP32[idx+2]=t.screenY;HEAP32[idx+3]=t.clientX;HEAP32[idx+4]=t.clientY;HEAP32[idx+5]=t.pageX;HEAP32[idx+6]=t.pageY;HEAP32[idx+7]=t.isChanged;HEAP32[idx+8]=t.onTarget;HEAP32[idx+9]=t.clientX-targetRect.left;HEAP32[idx+10]=t.clientY-targetRect.top;idx+=13;if(++numTouches>31){break}}HEAP32[touchEvent>>2]=numTouches;if(wasmTable.get(callbackfunc)(eventTypeId,touchEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:eventTypeString=="touchstart"||eventTypeString=="touchend",eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:touchEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_touchcancel_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerTouchEventCallback(target,userData,useCapture,callbackfunc,25,"touchcancel",targetThread);return 0}function _emscripten_set_touchend_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerTouchEventCallback(target,userData,useCapture,callbackfunc,23,"touchend",targetThread);return 0}function _emscripten_set_touchmove_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerTouchEventCallback(target,userData,useCapture,callbackfunc,24,"touchmove",targetThread);return 0}function _emscripten_set_touchstart_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerTouchEventCallback(target,userData,useCapture,callbackfunc,22,"touchstart",targetThread);return 0}function _emscripten_thread_sleep(msecs){var start=_emscripten_get_now();while(_emscripten_get_now()-start<msecs){}}function _exit(status){exit(status)}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_read(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doReadv(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var stream=SYSCALLS.getStreamFromFD(fd);var HIGH_OFFSET=4294967296;var offset=offset_high*HIGH_OFFSET+(offset_low>>>0);var DOUBLE_LIMIT=9007199254740992;if(offset<=-DOUBLE_LIMIT||offset>=DOUBLE_LIMIT){return-61}FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doWritev(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _glActiveTexture(x0){GLctx["activeTexture"](x0)}function _glAttachShader(program,shader){GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _glBindAttribLocation(program,index,name){GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))}function _glBindBuffer(target,buffer){GLctx.bindBuffer(target,GL.buffers[buffer])}function _glBindTexture(target,texture){GLctx.bindTexture(target,GL.textures[texture])}function _glBlendFunc(x0,x1){GLctx["blendFunc"](x0,x1)}function _glBufferData(target,size,data,usage){GLctx.bufferData(target,data?HEAPU8.subarray(data,data+size):size,usage)}function _glBufferSubData(target,offset,size,data){GLctx.bufferSubData(target,offset,HEAPU8.subarray(data,data+size))}function _glClear(x0){GLctx["clear"](x0)}function _glClearColor(x0,x1,x2,x3){GLctx["clearColor"](x0,x1,x2,x3)}function _glClearDepthf(x0){GLctx["clearDepth"](x0)}function _glCompileShader(shader){GLctx.compileShader(GL.shaders[shader])}function _glCompressedTexImage2D(target,level,internalFormat,width,height,border,imageSize,data){GLctx["compressedTexImage2D"](target,level,internalFormat,width,height,border,data?HEAPU8.subarray(data,data+imageSize):null)}function _glCreateProgram(){var id=GL.getNewId(GL.programs);var program=GLctx.createProgram();program.name=id;GL.programs[id]=program;return id}function _glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}function _glCullFace(x0){GLctx["cullFace"](x0)}function _glDeleteBuffers(n,buffers){for(var i=0;i<n;i++){var id=HEAP32[buffers+i*4>>2];var buffer=GL.buffers[id];if(!buffer)continue;GLctx.deleteBuffer(buffer);buffer.name=0;GL.buffers[id]=null}}function _glDeleteProgram(id){if(!id)return;var program=GL.programs[id];if(!program){GL.recordError(1281);return}GLctx.deleteProgram(program);program.name=0;GL.programs[id]=null;GL.programInfos[id]=null}function _glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}function _glDeleteTextures(n,textures){for(var i=0;i<n;i++){var id=HEAP32[textures+i*4>>2];var texture=GL.textures[id];if(!texture)continue;GLctx.deleteTexture(texture);texture.name=0;GL.textures[id]=null}}function _glDepthFunc(x0){GLctx["depthFunc"](x0)}function _glDetachShader(program,shader){GLctx.detachShader(GL.programs[program],GL.shaders[shader])}function _glDisable(x0){GLctx["disable"](x0)}function _glDisableVertexAttribArray(index){GLctx.disableVertexAttribArray(index)}function _glDrawArrays(mode,first,count){GLctx.drawArrays(mode,first,count)}function _glDrawElements(mode,count,type,indices){GLctx.drawElements(mode,count,type,indices)}function _glEnable(x0){GLctx["enable"](x0)}function _glEnableVertexAttribArray(index){GLctx.enableVertexAttribArray(index)}function _glFrontFace(x0){GLctx["frontFace"](x0)}function _glGenBuffers(n,buffers){__glGenObject(n,buffers,"createBuffer",GL.buffers)}function _glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures)}function _glGetAttribLocation(program,name){return GLctx.getAttribLocation(GL.programs[program],UTF8ToString(name))}function _glGetFloatv(name_,p){emscriptenWebGLGet(name_,p,2)}function _glGetProgramInfoLog(program,maxLength,length,infoLog){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _glGetProgramiv(program,pname,p){if(!p){GL.recordError(1281);return}if(program>=GL.counter){GL.recordError(1281);return}var ptable=GL.programInfos[program];if(!ptable){GL.recordError(1282);return}if(pname==35716){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";HEAP32[p>>2]=log.length+1}else if(pname==35719){HEAP32[p>>2]=ptable.maxUniformLength}else if(pname==35722){if(ptable.maxAttributeLength==-1){program=GL.programs[program];var numAttribs=GLctx.getProgramParameter(program,35721);ptable.maxAttributeLength=0;for(var i=0;i<numAttribs;++i){var activeAttrib=GLctx.getActiveAttrib(program,i);ptable.maxAttributeLength=Math.max(ptable.maxAttributeLength,activeAttrib.name.length+1)}}HEAP32[p>>2]=ptable.maxAttributeLength}else if(pname==35381){if(ptable.maxUniformBlockNameLength==-1){program=GL.programs[program];var numBlocks=GLctx.getProgramParameter(program,35382);ptable.maxUniformBlockNameLength=0;for(var i=0;i<numBlocks;++i){var activeBlockName=GLctx.getActiveUniformBlockName(program,i);ptable.maxUniformBlockNameLength=Math.max(ptable.maxUniformBlockNameLength,activeBlockName.length+1)}}HEAP32[p>>2]=ptable.maxUniformBlockNameLength}else{HEAP32[p>>2]=GLctx.getProgramParameter(GL.programs[program],pname)}}function _glGetShaderInfoLog(shader,maxLength,length,infoLog){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _glGetShaderiv(shader,pname,p){if(!p){GL.recordError(1281);return}if(pname==35716){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var logLength=log?log.length+1:0;HEAP32[p>>2]=logLength}else if(pname==35720){var source=GLctx.getShaderSource(GL.shaders[shader]);var sourceLength=source?source.length+1:0;HEAP32[p>>2]=sourceLength}else{HEAP32[p>>2]=GLctx.getShaderParameter(GL.shaders[shader],pname)}}function _glGetString(name_){if(GL.stringCache[name_])return GL.stringCache[name_];var ret;switch(name_){case 7939:var exts=GLctx.getSupportedExtensions()||[];exts=exts.concat(exts.map(function(e){return"GL_"+e}));ret=stringToNewUTF8(exts.join(" "));break;case 7936:case 7937:case 37445:case 37446:var s=GLctx.getParameter(name_);if(!s){GL.recordError(1280)}ret=stringToNewUTF8(s);break;case 7938:var glVersion=GLctx.getParameter(7938);{glVersion="OpenGL ES 2.0 ("+glVersion+")"}ret=stringToNewUTF8(glVersion);break;case 35724:var glslVersion=GLctx.getParameter(35724);var ver_re=/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/;var ver_num=glslVersion.match(ver_re);if(ver_num!==null){if(ver_num[1].length==3)ver_num[1]=ver_num[1]+"0";glslVersion="OpenGL ES GLSL ES "+ver_num[1]+" ("+glslVersion+")"}ret=stringToNewUTF8(glslVersion);break;default:GL.recordError(1280);return 0}GL.stringCache[name_]=ret;return ret}function _glGetUniformLocation(program,name){name=UTF8ToString(name);var arrayIndex=0;if(name[name.length-1]=="]"){var leftBrace=name.lastIndexOf("[");arrayIndex=name[leftBrace+1]!="]"?jstoi_q(name.slice(leftBrace+1)):0;name=name.slice(0,leftBrace)}var uniformInfo=GL.programInfos[program]&&GL.programInfos[program].uniforms[name];if(uniformInfo&&arrayIndex>=0&&arrayIndex<uniformInfo[0]){return uniformInfo[1]+arrayIndex}else{return-1}}function _glLinkProgram(program){GLctx.linkProgram(GL.programs[program]);GL.populateUniformTable(program)}function _glPixelStorei(pname,param){if(pname==3317){GL.unpackAlignment=param}GLctx.pixelStorei(pname,param)}function _glReadPixels(x,y,width,height,format,type,pixels){var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);return}GLctx.readPixels(x,y,width,height,format,type,pixelData)}function _glShaderSource(shader,count,string,length){var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}function _glTexImage2D(target,level,internalFormat,width,height,border,format,type,pixels){GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels?emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat):null)}function _glTexParameteri(x0,x1,x2){GLctx["texParameteri"](x0,x1,x2)}function _glUniform1i(location,v0){GLctx.uniform1i(GL.uniforms[location],v0)}function _glUniform4f(location,v0,v1,v2,v3){GLctx.uniform4f(GL.uniforms[location],v0,v1,v2,v3)}function _glUniformMatrix4fv(location,count,transpose,value){if(count<=18){var view=miniTempWebGLFloatBuffers[16*count-1];var heap=HEAPF32;value>>=2;for(var i=0;i<16*count;i+=16){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3];view[i+4]=heap[dst+4];view[i+5]=heap[dst+5];view[i+6]=heap[dst+6];view[i+7]=heap[dst+7];view[i+8]=heap[dst+8];view[i+9]=heap[dst+9];view[i+10]=heap[dst+10];view[i+11]=heap[dst+11];view[i+12]=heap[dst+12];view[i+13]=heap[dst+13];view[i+14]=heap[dst+14];view[i+15]=heap[dst+15]}}else{var view=HEAPF32.subarray(value>>2,value+count*64>>2)}GLctx.uniformMatrix4fv(GL.uniforms[location],!!transpose,view)}function _glUseProgram(program){GLctx.useProgram(GL.programs[program])}function _glVertexAttrib2f(x0,x1,x2){GLctx["vertexAttrib2f"](x0,x1,x2)}function _glVertexAttrib3f(x0,x1,x2,x3){GLctx["vertexAttrib3f"](x0,x1,x2,x3)}function _glVertexAttrib4f(x0,x1,x2,x3,x4){GLctx["vertexAttrib4f"](x0,x1,x2,x3,x4)}function _glVertexAttribPointer(index,size,type,normalized,stride,ptr){GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}function _glViewport(x0,x1,x2,x3){GLctx["viewport"](x0,x1,x2,x3)}function GLFW_Window(id,width,height,title,monitor,share){this.id=id;this.x=0;this.y=0;this.fullscreen=false;this.storedX=0;this.storedY=0;this.width=width;this.height=height;this.storedWidth=width;this.storedHeight=height;this.title=title;this.monitor=monitor;this.share=share;this.attributes=GLFW.hints;this.inputModes={208897:212993,208898:0,208899:0};this.buttons=0;this.keys=new Array;this.domKeys=new Array;this.shouldClose=0;this.title=null;this.windowPosFunc=null;this.windowSizeFunc=null;this.windowCloseFunc=null;this.windowRefreshFunc=null;this.windowFocusFunc=null;this.windowIconifyFunc=null;this.framebufferSizeFunc=null;this.mouseButtonFunc=null;this.cursorPosFunc=null;this.cursorEnterFunc=null;this.scrollFunc=null;this.dropFunc=null;this.keyFunc=null;this.charFunc=null;this.userptr=null}var GLFW={WindowFromId:function(id){if(id<=0||!GLFW.windows)return null;return GLFW.windows[id-1]},joystickFunc:null,errorFunc:null,monitorFunc:null,active:null,windows:null,monitors:null,monitorString:null,versionString:null,initialTime:null,extensions:null,hints:null,defaultHints:{131073:0,131074:0,131075:1,131076:1,131077:1,135169:8,135170:8,135171:8,135172:8,135173:24,135174:8,135175:0,135176:0,135177:0,135178:0,135179:0,135180:0,135181:0,135182:0,135183:0,139265:196609,139266:1,139267:0,139268:0,139269:0,139270:0,139271:0,139272:0},DOMToGLFWKeyCode:function(keycode){switch(keycode){case 32:return 32;case 222:return 39;case 188:return 44;case 173:return 45;case 189:return 45;case 190:return 46;case 191:return 47;case 48:return 48;case 49:return 49;case 50:return 50;case 51:return 51;case 52:return 52;case 53:return 53;case 54:return 54;case 55:return 55;case 56:return 56;case 57:return 57;case 59:return 59;case 61:return 61;case 187:return 61;case 65:return 65;case 66:return 66;case 67:return 67;case 68:return 68;case 69:return 69;case 70:return 70;case 71:return 71;case 72:return 72;case 73:return 73;case 74:return 74;case 75:return 75;case 76:return 76;case 77:return 77;case 78:return 78;case 79:return 79;case 80:return 80;case 81:return 81;case 82:return 82;case 83:return 83;case 84:return 84;case 85:return 85;case 86:return 86;case 87:return 87;case 88:return 88;case 89:return 89;case 90:return 90;case 219:return 91;case 220:return 92;case 221:return 93;case 192:return 94;case 27:return 256;case 13:return 257;case 9:return 258;case 8:return 259;case 45:return 260;case 46:return 261;case 39:return 262;case 37:return 263;case 40:return 264;case 38:return 265;case 33:return 266;case 34:return 267;case 36:return 268;case 35:return 269;case 20:return 280;case 145:return 281;case 144:return 282;case 44:return 283;case 19:return 284;case 112:return 290;case 113:return 291;case 114:return 292;case 115:return 293;case 116:return 294;case 117:return 295;case 118:return 296;case 119:return 297;case 120:return 298;case 121:return 299;case 122:return 300;case 123:return 301;case 124:return 302;case 125:return 303;case 126:return 304;case 127:return 305;case 128:return 306;case 129:return 307;case 130:return 308;case 131:return 309;case 132:return 310;case 133:return 311;case 134:return 312;case 135:return 313;case 136:return 314;case 96:return 320;case 97:return 321;case 98:return 322;case 99:return 323;case 100:return 324;case 101:return 325;case 102:return 326;case 103:return 327;case 104:return 328;case 105:return 329;case 110:return 330;case 111:return 331;case 106:return 332;case 109:return 333;case 107:return 334;case 16:return 340;case 17:return 341;case 18:return 342;case 91:return 343;case 93:return 348;default:return-1}},getModBits:function(win){var mod=0;if(win.keys[340])mod|=1;if(win.keys[341])mod|=2;if(win.keys[342])mod|=4;if(win.keys[343])mod|=8;return mod},onKeyPress:function(event){if(!GLFW.active||!GLFW.active.charFunc)return;if(event.ctrlKey||event.metaKey)return;var charCode=event.charCode;if(charCode==0||charCode>=0&&charCode<=31)return;wasmTable.get(GLFW.active.charFunc)(GLFW.active.id,charCode)},onKeyChanged:function(keyCode,status){if(!GLFW.active)return;var key=GLFW.DOMToGLFWKeyCode(keyCode);if(key==-1)return;var repeat=status&&GLFW.active.keys[key];GLFW.active.keys[key]=status;GLFW.active.domKeys[keyCode]=status;if(!GLFW.active.keyFunc)return;if(repeat)status=2;wasmTable.get(GLFW.active.keyFunc)(GLFW.active.id,key,keyCode,status,GLFW.getModBits(GLFW.active))},onGamepadConnected:function(event){GLFW.refreshJoysticks()},onGamepadDisconnected:function(event){GLFW.refreshJoysticks()},onKeydown:function(event){GLFW.onKeyChanged(event.keyCode,1);if(event.keyCode===8||event.keyCode===9){event.preventDefault()}},onKeyup:function(event){GLFW.onKeyChanged(event.keyCode,0)},onBlur:function(event){if(!GLFW.active)return;for(var i=0;i<GLFW.active.domKeys.length;++i){if(GLFW.active.domKeys[i]){GLFW.onKeyChanged(i,0)}}},onMousemove:function(event){if(!GLFW.active)return;Browser.calculateMouseEvent(event);if(event.target!=Module["canvas"]||!GLFW.active.cursorPosFunc)return;wasmTable.get(GLFW.active.cursorPosFunc)(GLFW.active.id,Browser.mouseX,Browser.mouseY)},DOMToGLFWMouseButton:function(event){var eventButton=event["button"];if(eventButton>0){if(eventButton==1){eventButton=2}else{eventButton=1}}return eventButton},onMouseenter:function(event){if(!GLFW.active)return;if(event.target!=Module["canvas"]||!GLFW.active.cursorEnterFunc)return;wasmTable.get(GLFW.active.cursorEnterFunc)(GLFW.active.id,1)},onMouseleave:function(event){if(!GLFW.active)return;if(event.target!=Module["canvas"]||!GLFW.active.cursorEnterFunc)return;wasmTable.get(GLFW.active.cursorEnterFunc)(GLFW.active.id,0)},onMouseButtonChanged:function(event,status){if(!GLFW.active)return;Browser.calculateMouseEvent(event);if(event.target!=Module["canvas"])return;var eventButton=GLFW.DOMToGLFWMouseButton(event);if(status==1){GLFW.active.buttons|=1<<eventButton;try{event.target.setCapture()}catch(e){}}else{GLFW.active.buttons&=~(1<<eventButton)}if(!GLFW.active.mouseButtonFunc)return;wasmTable.get(GLFW.active.mouseButtonFunc)(GLFW.active.id,eventButton,status,GLFW.getModBits(GLFW.active))},onMouseButtonDown:function(event){if(!GLFW.active)return;GLFW.onMouseButtonChanged(event,1)},onMouseButtonUp:function(event){if(!GLFW.active)return;GLFW.onMouseButtonChanged(event,0)},onMouseWheel:function(event){var delta=-Browser.getMouseWheelDelta(event);delta=delta==0?0:delta>0?Math.max(delta,1):Math.min(delta,-1);GLFW.wheelPos+=delta;if(!GLFW.active||!GLFW.active.scrollFunc||event.target!=Module["canvas"])return;var sx=0;var sy=0;if(event.type=="mousewheel"){sx=event.wheelDeltaX;sy=event.wheelDeltaY}else{sx=event.deltaX;sy=event.deltaY}wasmTable.get(GLFW.active.scrollFunc)(GLFW.active.id,sx,sy);event.preventDefault()},onCanvasResize:function(width,height){if(!GLFW.active)return;var resizeNeeded=true;if(document["fullscreen"]||document["fullScreen"]||document["mozFullScreen"]||document["webkitIsFullScreen"]){GLFW.active.storedX=GLFW.active.x;GLFW.active.storedY=GLFW.active.y;GLFW.active.storedWidth=GLFW.active.width;GLFW.active.storedHeight=GLFW.active.height;GLFW.active.x=GLFW.active.y=0;GLFW.active.width=screen.width;GLFW.active.height=screen.height;GLFW.active.fullscreen=true}else if(GLFW.active.fullscreen==true){GLFW.active.x=GLFW.active.storedX;GLFW.active.y=GLFW.active.storedY;GLFW.active.width=GLFW.active.storedWidth;GLFW.active.height=GLFW.active.storedHeight;GLFW.active.fullscreen=false}else if(GLFW.active.width!=width||GLFW.active.height!=height){GLFW.active.width=width;GLFW.active.height=height}else{resizeNeeded=false}if(resizeNeeded){Browser.setCanvasSize(GLFW.active.width,GLFW.active.height,true);GLFW.onWindowSizeChanged();GLFW.onFramebufferSizeChanged()}},onWindowSizeChanged:function(){if(!GLFW.active)return;if(!GLFW.active.windowSizeFunc)return;wasmTable.get(GLFW.active.windowSizeFunc)(GLFW.active.id,GLFW.active.width,GLFW.active.height)},onFramebufferSizeChanged:function(){if(!GLFW.active)return;if(!GLFW.active.framebufferSizeFunc)return;wasmTable.get(GLFW.active.framebufferSizeFunc)(GLFW.active.id,GLFW.active.width,GLFW.active.height)},getTime:function(){return _emscripten_get_now()/1e3},setWindowTitle:function(winid,title){var win=GLFW.WindowFromId(winid);if(!win)return;win.title=UTF8ToString(title);if(GLFW.active.id==win.id){document.title=win.title}},setJoystickCallback:function(cbfun){GLFW.joystickFunc=cbfun;GLFW.refreshJoysticks()},joys:{},lastGamepadState:null,lastGamepadStateFrame:null,refreshJoysticks:function(){if(Browser.mainLoop.currentFrameNumber!==GLFW.lastGamepadStateFrame||!Browser.mainLoop.currentFrameNumber){GLFW.lastGamepadState=navigator.getGamepads?navigator.getGamepads():navigator.webkitGetGamepads?navigator.webkitGetGamepads:null;GLFW.lastGamepadStateFrame=Browser.mainLoop.currentFrameNumber;for(var joy=0;joy<GLFW.lastGamepadState.length;++joy){var gamepad=GLFW.lastGamepadState[joy];if(gamepad){if(!GLFW.joys[joy]){console.log("glfw joystick connected:",joy);GLFW.joys[joy]={id:allocate(intArrayFromString(gamepad.id),ALLOC_NORMAL),buttonsCount:gamepad.buttons.length,axesCount:gamepad.axes.length,buttons:allocate(new Array(gamepad.buttons.length),ALLOC_NORMAL),axes:allocate(new Array(gamepad.axes.length*4),ALLOC_NORMAL)};if(GLFW.joystickFunc){wasmTable.get(GLFW.joystickFunc)(joy,262145)}}var data=GLFW.joys[joy];for(var i=0;i<gamepad.buttons.length;++i){setValue(data.buttons+i,gamepad.buttons[i].pressed,"i8")}for(var i=0;i<gamepad.axes.length;++i){setValue(data.axes+i*4,gamepad.axes[i],"float")}}else{if(GLFW.joys[joy]){console.log("glfw joystick disconnected",joy);if(GLFW.joystickFunc){wasmTable.get(GLFW.joystickFunc)(joy,262146)}_free(GLFW.joys[joy].id);_free(GLFW.joys[joy].buttons);_free(GLFW.joys[joy].axes);delete GLFW.joys[joy]}}}}},setKeyCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.keyFunc;win.keyFunc=cbfun;return prevcbfun},setCharCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.charFunc;win.charFunc=cbfun;return prevcbfun},setMouseButtonCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.mouseButtonFunc;win.mouseButtonFunc=cbfun;return prevcbfun},setCursorPosCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.cursorPosFunc;win.cursorPosFunc=cbfun;return prevcbfun},setScrollCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.scrollFunc;win.scrollFunc=cbfun;return prevcbfun},setDropCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.dropFunc;win.dropFunc=cbfun;return prevcbfun},onDrop:function(event){if(!GLFW.active||!GLFW.active.dropFunc)return;if(!event.dataTransfer||!event.dataTransfer.files||event.dataTransfer.files.length==0)return;event.preventDefault();var filenames=allocate(new Array(event.dataTransfer.files.length*4),ALLOC_NORMAL);var filenamesArray=[];var count=event.dataTransfer.files.length;var written=0;var drop_dir=".glfw_dropped_files";FS.createPath("/",drop_dir);function save(file){var path="/"+drop_dir+"/"+file.name.replace(/\//g,"_");var reader=new FileReader;reader.onloadend=function(e){if(reader.readyState!=2){++written;console.log("failed to read dropped file: "+file.name+": "+reader.error);return}var data=e.target.result;FS.writeFile(path,new Uint8Array(data));if(++written===count){wasmTable.get(GLFW.active.dropFunc)(GLFW.active.id,count,filenames);for(var i=0;i<filenamesArray.length;++i){_free(filenamesArray[i])}_free(filenames)}};reader.readAsArrayBuffer(file);var filename=allocate(intArrayFromString(path),ALLOC_NORMAL);filenamesArray.push(filename);setValue(filenames+i*4,filename,"i8*")}for(var i=0;i<count;++i){save(event.dataTransfer.files[i])}return false},onDragover:function(event){if(!GLFW.active||!GLFW.active.dropFunc)return;event.preventDefault();return false},setWindowSizeCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowSizeFunc;win.windowSizeFunc=cbfun;return prevcbfun},setWindowCloseCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowCloseFunc;win.windowCloseFunc=cbfun;return prevcbfun},setWindowRefreshCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowRefreshFunc;win.windowRefreshFunc=cbfun;return prevcbfun},onClickRequestPointerLock:function(e){if(!Browser.pointerLock&&Module["canvas"].requestPointerLock){Module["canvas"].requestPointerLock();e.preventDefault()}},setInputMode:function(winid,mode,value){var win=GLFW.WindowFromId(winid);if(!win)return;switch(mode){case 208897:{switch(value){case 212993:{win.inputModes[mode]=value;Module["canvas"].removeEventListener("click",GLFW.onClickRequestPointerLock,true);Module["canvas"].exitPointerLock();break}case 212994:{console.log("glfwSetInputMode called with GLFW_CURSOR_HIDDEN value not implemented.");break}case 212995:{win.inputModes[mode]=value;Module["canvas"].addEventListener("click",GLFW.onClickRequestPointerLock,true);Module["canvas"].requestPointerLock();break}default:{console.log("glfwSetInputMode called with unknown value parameter value: "+value+".");break}}break}case 208898:{console.log("glfwSetInputMode called with GLFW_STICKY_KEYS mode not implemented.");break}case 208899:{console.log("glfwSetInputMode called with GLFW_STICKY_MOUSE_BUTTONS mode not implemented.");break}default:{console.log("glfwSetInputMode called with unknown mode parameter value: "+mode+".");break}}},getKey:function(winid,key){var win=GLFW.WindowFromId(winid);if(!win)return 0;return win.keys[key]},getMouseButton:function(winid,button){var win=GLFW.WindowFromId(winid);if(!win)return 0;return(win.buttons&1<<button)>0},getCursorPos:function(winid,x,y){setValue(x,Browser.mouseX,"double");setValue(y,Browser.mouseY,"double")},getMousePos:function(winid,x,y){setValue(x,Browser.mouseX,"i32");setValue(y,Browser.mouseY,"i32")},setCursorPos:function(winid,x,y){},getWindowPos:function(winid,x,y){var wx=0;var wy=0;var win=GLFW.WindowFromId(winid);if(win){wx=win.x;wy=win.y}if(x){setValue(x,wx,"i32")}if(y){setValue(y,wy,"i32")}},setWindowPos:function(winid,x,y){var win=GLFW.WindowFromId(winid);if(!win)return;win.x=x;win.y=y},getWindowSize:function(winid,width,height){var ww=0;var wh=0;var win=GLFW.WindowFromId(winid);if(win){ww=win.width;wh=win.height}if(width){setValue(width,ww,"i32")}if(height){setValue(height,wh,"i32")}},setWindowSize:function(winid,width,height){var win=GLFW.WindowFromId(winid);if(!win)return;if(GLFW.active.id==win.id){if(width==screen.width&&height==screen.height){Browser.requestFullscreen()}else{Browser.exitFullscreen();Browser.setCanvasSize(width,height);win.width=width;win.height=height}}if(!win.windowSizeFunc)return;wasmTable.get(win.windowSizeFunc)(win.id,width,height)},createWindow:function(width,height,title,monitor,share){var i,id;for(i=0;i<GLFW.windows.length&&GLFW.windows[i]!==null;i++){}if(i>0)throw"glfwCreateWindow only supports one window at time currently";id=i+1;if(width<=0||height<=0)return 0;if(monitor){Browser.requestFullscreen()}else{Browser.setCanvasSize(width,height)}for(i=0;i<GLFW.windows.length&&GLFW.windows[i]==null;i++){}var useWebGL=GLFW.hints[139265]>0;if(i==GLFW.windows.length){if(useWebGL){var contextAttributes={antialias:GLFW.hints[135181]>1,depth:GLFW.hints[135173]>0,stencil:GLFW.hints[135174]>0,alpha:GLFW.hints[135172]>0};Module.ctx=Browser.createContext(Module["canvas"],true,true,contextAttributes)}else{Browser.init()}}if(!Module.ctx&&useWebGL)return 0;var win=new GLFW_Window(id,width,height,title,monitor,share);if(id-1==GLFW.windows.length){GLFW.windows.push(win)}else{GLFW.windows[id-1]=win}GLFW.active=win;return win.id},destroyWindow:function(winid){var win=GLFW.WindowFromId(winid);if(!win)return;if(win.windowCloseFunc)wasmTable.get(win.windowCloseFunc)(win.id);GLFW.windows[win.id-1]=null;if(GLFW.active.id==win.id)GLFW.active=null;for(var i=0;i<GLFW.windows.length;i++)if(GLFW.windows[i]!==null)return;Module.ctx=Browser.destroyContext(Module["canvas"],true,true)},swapBuffers:function(winid){},GLFW2ParamToGLFW3Param:function(param){var table={196609:0,196610:0,196611:0,196612:0,196613:0,196614:0,131073:0,131074:0,131075:0,131076:0,131077:135169,131078:135170,131079:135171,131080:135172,131081:135173,131082:135174,131083:135183,131084:135175,131085:135176,131086:135177,131087:135178,131088:135179,131089:135180,131090:0,131091:135181,131092:139266,131093:139267,131094:139270,131095:139271,131096:139272};return table[param]}};function _glfwCreateWindow(width,height,title,monitor,share){return GLFW.createWindow(width,height,title,monitor,share)}function _glfwDefaultWindowHints(){GLFW.hints=GLFW.defaultHints}function _glfwDestroyWindow(winid){return GLFW.destroyWindow(winid)}function _glfwGetPrimaryMonitor(){return 1}function _glfwGetTime(){return GLFW.getTime()-GLFW.initialTime}function _glfwGetVideoModes(monitor,count){setValue(count,0,"i32");return 0}function _glfwInit(){if(GLFW.windows)return 1;GLFW.initialTime=GLFW.getTime();GLFW.hints=GLFW.defaultHints;GLFW.windows=new Array;GLFW.active=null;window.addEventListener("gamepadconnected",GLFW.onGamepadConnected,true);window.addEventListener("gamepaddisconnected",GLFW.onGamepadDisconnected,true);window.addEventListener("keydown",GLFW.onKeydown,true);window.addEventListener("keypress",GLFW.onKeyPress,true);window.addEventListener("keyup",GLFW.onKeyup,true);window.addEventListener("blur",GLFW.onBlur,true);Module["canvas"].addEventListener("touchmove",GLFW.onMousemove,true);Module["canvas"].addEventListener("touchstart",GLFW.onMouseButtonDown,true);Module["canvas"].addEventListener("touchcancel",GLFW.onMouseButtonUp,true);Module["canvas"].addEventListener("touchend",GLFW.onMouseButtonUp,true);Module["canvas"].addEventListener("mousemove",GLFW.onMousemove,true);Module["canvas"].addEventListener("mousedown",GLFW.onMouseButtonDown,true);Module["canvas"].addEventListener("mouseup",GLFW.onMouseButtonUp,true);Module["canvas"].addEventListener("wheel",GLFW.onMouseWheel,true);Module["canvas"].addEventListener("mousewheel",GLFW.onMouseWheel,true);Module["canvas"].addEventListener("mouseenter",GLFW.onMouseenter,true);Module["canvas"].addEventListener("mouseleave",GLFW.onMouseleave,true);Module["canvas"].addEventListener("drop",GLFW.onDrop,true);Module["canvas"].addEventListener("dragover",GLFW.onDragover,true);Browser.resizeListeners.push(function(width,height){GLFW.onCanvasResize(width,height)});return 1}function _glfwMakeContextCurrent(winid){}function _glfwSetCharCallback(winid,cbfun){return GLFW.setCharCallback(winid,cbfun)}function _glfwSetCursorEnterCallback(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.cursorEnterFunc;win.cursorEnterFunc=cbfun;return prevcbfun}function _glfwSetCursorPosCallback(winid,cbfun){return GLFW.setCursorPosCallback(winid,cbfun)}function _glfwSetDropCallback(winid,cbfun){return GLFW.setDropCallback(winid,cbfun)}function _glfwSetErrorCallback(cbfun){var prevcbfun=GLFW.errorFunc;GLFW.errorFunc=cbfun;return prevcbfun}function _glfwSetKeyCallback(winid,cbfun){return GLFW.setKeyCallback(winid,cbfun)}function _glfwSetMouseButtonCallback(winid,cbfun){return GLFW.setMouseButtonCallback(winid,cbfun)}function _glfwSetScrollCallback(winid,cbfun){return GLFW.setScrollCallback(winid,cbfun)}function _glfwSetWindowFocusCallback(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowFocusFunc;win.windowFocusFunc=cbfun;return prevcbfun}function _glfwSetWindowIconifyCallback(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowIconifyFunc;win.windowIconifyFunc=cbfun;return prevcbfun}function _glfwSetWindowShouldClose(winid,value){var win=GLFW.WindowFromId(winid);if(!win)return;win.shouldClose=value}function _glfwSetWindowSizeCallback(winid,cbfun){return GLFW.setWindowSizeCallback(winid,cbfun)}function _glfwSwapBuffers(winid){GLFW.swapBuffers(winid)}function _glfwSwapInterval(interval){interval=Math.abs(interval);if(interval==0)_emscripten_set_main_loop_timing(0,0);else _emscripten_set_main_loop_timing(1,interval)}function _glfwTerminate(){window.removeEventListener("gamepadconnected",GLFW.onGamepadConnected,true);window.removeEventListener("gamepaddisconnected",GLFW.onGamepadDisconnected,true);window.removeEventListener("keydown",GLFW.onKeydown,true);window.removeEventListener("keypress",GLFW.onKeyPress,true);window.removeEventListener("keyup",GLFW.onKeyup,true);window.removeEventListener("blur",GLFW.onBlur,true);Module["canvas"].removeEventListener("touchmove",GLFW.onMousemove,true);Module["canvas"].removeEventListener("touchstart",GLFW.onMouseButtonDown,true);Module["canvas"].removeEventListener("touchcancel",GLFW.onMouseButtonUp,true);Module["canvas"].removeEventListener("touchend",GLFW.onMouseButtonUp,true);Module["canvas"].removeEventListener("mousemove",GLFW.onMousemove,true);Module["canvas"].removeEventListener("mousedown",GLFW.onMouseButtonDown,true);Module["canvas"].removeEventListener("mouseup",GLFW.onMouseButtonUp,true);Module["canvas"].removeEventListener("wheel",GLFW.onMouseWheel,true);Module["canvas"].removeEventListener("mousewheel",GLFW.onMouseWheel,true);Module["canvas"].removeEventListener("mouseenter",GLFW.onMouseenter,true);Module["canvas"].removeEventListener("mouseleave",GLFW.onMouseleave,true);Module["canvas"].removeEventListener("drop",GLFW.onDrop,true);Module["canvas"].removeEventListener("dragover",GLFW.onDragover,true);Module["canvas"].width=Module["canvas"].height=1;GLFW.windows=null;GLFW.active=null}function _glfwWindowHint(target,hint){GLFW.hints[target]=hint}function _time(ptr){var ret=Date.now()/1e3|0;if(ptr){HEAP32[ptr>>2]=ret}return ret}var FSNode=function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev};var readMode=292|73;var writeMode=146;Object.defineProperties(FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(val){val?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===writeMode},set:function(val){val?this.mode|=writeMode:this.mode&=~writeMode}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}});FS.FSNode=FSNode;FS.staticInit();Module["FS_createPath"]=FS.createPath;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createDevice"]=FS.createDevice;Module["FS_unlink"]=FS.unlink;var GLctx;for(var i=0;i<32;++i)tempFixedLengthArray.push(new Array(i));var miniTempWebGLFloatBuffersStorage=new Float32Array(288);for(var i=0;i<288;++i){miniTempWebGLFloatBuffers[i]=miniTempWebGLFloatBuffersStorage.subarray(0,i+1)}var __miniTempWebGLIntBuffersStorage=new Int32Array(288);for(var i=0;i<288;++i){__miniTempWebGLIntBuffers[i]=__miniTempWebGLIntBuffersStorage.subarray(0,i+1)}Module["requestFullscreen"]=function Module_requestFullscreen(lockPointer,resizeCanvas){Browser.requestFullscreen(lockPointer,resizeCanvas)};Module["requestAnimationFrame"]=function Module_requestAnimationFrame(func){Browser.requestAnimationFrame(func)};Module["setCanvasSize"]=function Module_setCanvasSize(width,height,noUpdates){Browser.setCanvasSize(width,height,noUpdates)};Module["pauseMainLoop"]=function Module_pauseMainLoop(){Browser.mainLoop.pause()};Module["resumeMainLoop"]=function Module_resumeMainLoop(){Browser.mainLoop.resume()};Module["getUserMedia"]=function Module_getUserMedia(){Browser.getUserMedia()};Module["createContext"]=function Module_createContext(canvas,useWebGL,setInModule,webGLContextAttributes){return Browser.createContext(canvas,useWebGL,setInModule,webGLContextAttributes)};function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var asmLibraryArg={"a":___assert_fail,"Ta":___sys_chdir,"L":___sys_fcntl64,"Sa":___sys_getcwd,"Va":___sys_ioctl,"Xa":___sys_open,"C":_emscripten_exit_pointerlock,"aa":_emscripten_get_element_css_size,"X":_emscripten_get_gamepad_status,"Y":_emscripten_get_num_gamepads,"Jd":_emscripten_glActiveTexture,"Id":_emscripten_glAttachShader,"Zd":_emscripten_glBeginQueryEXT,"Hd":_emscripten_glBindAttribLocation,"Gd":_emscripten_glBindBuffer,"Fd":_emscripten_glBindFramebuffer,"Ed":_emscripten_glBindRenderbuffer,"Dd":_emscripten_glBindTexture,"Rd":_emscripten_glBindVertexArrayOES,"Cd":_emscripten_glBlendColor,"Bd":_emscripten_glBlendEquation,"Ad":_emscripten_glBlendEquationSeparate,"zd":_emscripten_glBlendFunc,"yd":_emscripten_glBlendFuncSeparate,"xd":_emscripten_glBufferData,"wd":_emscripten_glBufferSubData,"vd":_emscripten_glCheckFramebufferStatus,"ud":_emscripten_glClear,"td":_emscripten_glClearColor,"sd":_emscripten_glClearDepthf,"rd":_emscripten_glClearStencil,"qd":_emscripten_glColorMask,"pd":_emscripten_glCompileShader,"od":_emscripten_glCompressedTexImage2D,"nd":_emscripten_glCompressedTexSubImage2D,"md":_emscripten_glCopyTexImage2D,"ld":_emscripten_glCopyTexSubImage2D,"kd":_emscripten_glCreateProgram,"jd":_emscripten_glCreateShader,"id":_emscripten_glCullFace,"hd":_emscripten_glDeleteBuffers,"gd":_emscripten_glDeleteFramebuffers,"fd":_emscripten_glDeleteProgram,"T":_emscripten_glDeleteQueriesEXT,"ed":_emscripten_glDeleteRenderbuffers,"dd":_emscripten_glDeleteShader,"cd":_emscripten_glDeleteTextures,"Qd":_emscripten_glDeleteVertexArraysOES,"bd":_emscripten_glDepthFunc,"ad":_emscripten_glDepthMask,"$c":_emscripten_glDepthRangef,"_c":_emscripten_glDetachShader,"Zc":_emscripten_glDisable,"Yc":_emscripten_glDisableVertexAttribArray,"Xc":_emscripten_glDrawArrays,"Md":_emscripten_glDrawArraysInstancedANGLE,"Nd":_emscripten_glDrawBuffersWEBGL,"Wc":_emscripten_glDrawElements,"Ld":_emscripten_glDrawElementsInstancedANGLE,"Vc":_emscripten_glEnable,"Uc":_emscripten_glEnableVertexAttribArray,"Yd":_emscripten_glEndQueryEXT,"Tc":_emscripten_glFinish,"Sc":_emscripten_glFlush,"Rc":_emscripten_glFramebufferRenderbuffer,"Qc":_emscripten_glFramebufferTexture2D,"Pc":_emscripten_glFrontFace,"Oc":_emscripten_glGenBuffers,"Mc":_emscripten_glGenFramebuffers,"U":_emscripten_glGenQueriesEXT,"Lc":_emscripten_glGenRenderbuffers,"Kc":_emscripten_glGenTextures,"Pd":_emscripten_glGenVertexArraysOES,"Nc":_emscripten_glGenerateMipmap,"Ic":_emscripten_glGetActiveAttrib,"Hc":_emscripten_glGetActiveUniform,"Gc":_emscripten_glGetAttachedShaders,"Fc":_emscripten_glGetAttribLocation,"Ec":_emscripten_glGetBooleanv,"Dc":_emscripten_glGetBufferParameteriv,"Cc":_emscripten_glGetError,"Bc":_emscripten_glGetFloatv,"Ac":_emscripten_glGetFramebufferAttachmentParameteriv,"zc":_emscripten_glGetIntegerv,"xc":_emscripten_glGetProgramInfoLog,"yc":_emscripten_glGetProgramiv,"Td":_emscripten_glGetQueryObjecti64vEXT,"Vd":_emscripten_glGetQueryObjectivEXT,"Sd":_emscripten_glGetQueryObjectui64vEXT,"Ud":_emscripten_glGetQueryObjectuivEXT,"Wd":_emscripten_glGetQueryivEXT,"wc":_emscripten_glGetRenderbufferParameteriv,"uc":_emscripten_glGetShaderInfoLog,"tc":_emscripten_glGetShaderPrecisionFormat,"sc":_emscripten_glGetShaderSource,"vc":_emscripten_glGetShaderiv,"rc":_emscripten_glGetString,"qc":_emscripten_glGetTexParameterfv,"pc":_emscripten_glGetTexParameteriv,"mc":_emscripten_glGetUniformLocation,"oc":_emscripten_glGetUniformfv,"nc":_emscripten_glGetUniformiv,"jc":_emscripten_glGetVertexAttribPointerv,"lc":_emscripten_glGetVertexAttribfv,"kc":_emscripten_glGetVertexAttribiv,"ic":_emscripten_glHint,"hc":_emscripten_glIsBuffer,"gc":_emscripten_glIsEnabled,"fc":_emscripten_glIsFramebuffer,"ec":_emscripten_glIsProgram,"S":_emscripten_glIsQueryEXT,"dc":_emscripten_glIsRenderbuffer,"cc":_emscripten_glIsShader,"bc":_emscripten_glIsTexture,"Od":_emscripten_glIsVertexArrayOES,"ac":_emscripten_glLineWidth,"$b":_emscripten_glLinkProgram,"_b":_emscripten_glPixelStorei,"Zb":_emscripten_glPolygonOffset,"Xd":_emscripten_glQueryCounterEXT,"Yb":_emscripten_glReadPixels,"Xb":_emscripten_glReleaseShaderCompiler,"Vb":_emscripten_glRenderbufferStorage,"Ub":_emscripten_glSampleCoverage,"Tb":_emscripten_glScissor,"Sb":_emscripten_glShaderBinary,"Rb":_emscripten_glShaderSource,"Qb":_emscripten_glStencilFunc,"Pb":_emscripten_glStencilFuncSeparate,"Ob":_emscripten_glStencilMask,"Nb":_emscripten_glStencilMaskSeparate,"Mb":_emscripten_glStencilOp,"Kb":_emscripten_glStencilOpSeparate,"Jb":_emscripten_glTexImage2D,"Ib":_emscripten_glTexParameterf,"Hb":_emscripten_glTexParameterfv,"Gb":_emscripten_glTexParameteri,"Fb":_emscripten_glTexParameteriv,"Eb":_emscripten_glTexSubImage2D,"Db":_emscripten_glUniform1f,"Cb":_emscripten_glUniform1fv,"Bb":_emscripten_glUniform1i,"zb":_emscripten_glUniform1iv,"yb":_emscripten_glUniform2f,"xb":_emscripten_glUniform2fv,"wb":_emscripten_glUniform2i,"vb":_emscripten_glUniform2iv,"ub":_emscripten_glUniform3f,"tb":_emscripten_glUniform3fv,"sb":_emscripten_glUniform3i,"rb":_emscripten_glUniform3iv,"qb":_emscripten_glUniform4f,"ob":_emscripten_glUniform4fv,"nb":_emscripten_glUniform4i,"mb":_emscripten_glUniform4iv,"lb":_emscripten_glUniformMatrix2fv,"kb":_emscripten_glUniformMatrix3fv,"jb":_emscripten_glUniformMatrix4fv,"ib":_emscripten_glUseProgram,"hb":_emscripten_glValidateProgram,"gb":_emscripten_glVertexAttrib1f,"fb":_emscripten_glVertexAttrib1fv,"db":_emscripten_glVertexAttrib2f,"cb":_emscripten_glVertexAttrib2fv,"bb":_emscripten_glVertexAttrib3f,"ab":_emscripten_glVertexAttrib3fv,"$a":_emscripten_glVertexAttrib4f,"_a":_emscripten_glVertexAttrib4fv,"Kd":_emscripten_glVertexAttribDivisorANGLE,"Za":_emscripten_glVertexAttribPointer,"Ya":_emscripten_glViewport,"Pa":_emscripten_memcpy_big,"Qa":_emscripten_resize_heap,"x":_emscripten_run_script,"Z":_emscripten_sample_gamepad_data,"ya":_emscripten_set_click_callback_on_thread,"Aa":_emscripten_set_fullscreenchange_callback_on_thread,"ta":_emscripten_set_gamepadconnected_callback_on_thread,"sa":_emscripten_set_gamepaddisconnected_callback_on_thread,"za":_emscripten_set_keydown_callback_on_thread,"$d":_emscripten_set_main_loop,"ua":_emscripten_set_touchcancel_callback_on_thread,"wa":_emscripten_set_touchend_callback_on_thread,"va":_emscripten_set_touchmove_callback_on_thread,"xa":_emscripten_set_touchstart_callback_on_thread,"Ra":_emscripten_thread_sleep,"V":_exit,"M":_fd_close,"Ua":_fd_read,"Na":_fd_seek,"K":_fd_write,"p":_glActiveTexture,"D":_glAttachShader,"k":_glBindAttribLocation,"b":_glBindBuffer,"j":_glBindTexture,"Lb":_glBlendFunc,"e":_glBufferData,"v":_glBufferSubData,"N":_glClear,"O":_glClearColor,"eb":_glClearDepthf,"Fa":_glCompileShader,"La":_glCompressedTexImage2D,"Da":_glCreateProgram,"Ha":_glCreateShader,"Ab":_glCullFace,"m":_glDeleteBuffers,"G":_glDeleteProgram,"H":_glDeleteShader,"J":_glDeleteTextures,"Wb":_glDepthFunc,"I":_glDetachShader,"P":_glDisable,"h":_glDisableVertexAttribArray,"R":_glDrawArrays,"Q":_glDrawElements,"w":_glEnable,"c":_glEnableVertexAttribArray,"pb":_glFrontFace,"f":_glGenBuffers,"Oa":_glGenTextures,"u":_glGetAttribLocation,"Jc":_glGetFloatv,"Ba":_glGetProgramInfoLog,"F":_glGetProgramiv,"Ea":_glGetShaderInfoLog,"E":_glGetShaderiv,"n":_glGetString,"t":_glGetUniformLocation,"Ca":_glLinkProgram,"Wa":_glPixelStorei,"Ia":_glReadPixels,"Ga":_glShaderSource,"Ma":_glTexImage2D,"o":_glTexParameteri,"y":_glUniform1i,"q":_glUniform4f,"r":_glUniformMatrix4fv,"l":_glUseProgram,"Ja":_glVertexAttrib2f,"Ka":_glVertexAttrib3f,"s":_glVertexAttrib4f,"d":_glVertexAttribPointer,"_d":_glViewport,"A":_glfwCreateWindow,"pa":_glfwDefaultWindowHints,"$":_glfwDestroyWindow,"B":_glfwGetPrimaryMonitor,"i":_glfwGetTime,"oa":_glfwGetVideoModes,"qa":_glfwInit,"da":_glfwMakeContextCurrent,"ia":_glfwSetCharCallback,"ea":_glfwSetCursorEnterCallback,"ga":_glfwSetCursorPosCallback,"ka":_glfwSetDropCallback,"ra":_glfwSetErrorCallback,"ja":_glfwSetKeyCallback,"ha":_glfwSetMouseButtonCallback,"fa":_glfwSetScrollCallback,"la":_glfwSetWindowFocusCallback,"ma":_glfwSetWindowIconifyCallback,"W":_glfwSetWindowShouldClose,"na":_glfwSetWindowSizeCallback,"_":_glfwSwapBuffers,"ca":_glfwSwapInterval,"z":_glfwTerminate,"g":_glfwWindowHint,"ba":_time};var asm=createWasm();var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["be"]).apply(null,arguments)};var _main=Module["_main"]=function(){return(_main=Module["_main"]=Module["asm"]["ce"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["ee"]).apply(null,arguments)};var _free=Module["_free"]=function(){return(_free=Module["_free"]=Module["asm"]["fe"]).apply(null,arguments)};var ___errno_location=Module["___errno_location"]=function(){return(___errno_location=Module["___errno_location"]=Module["asm"]["ge"]).apply(null,arguments)};var stackAlloc=Module["stackAlloc"]=function(){return(stackAlloc=Module["stackAlloc"]=Module["asm"]["he"]).apply(null,arguments)};Module["addRunDependency"]=addRunDependency;Module["removeRunDependency"]=removeRunDependency;Module["FS_createPath"]=FS.createPath;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createDevice"]=FS.createDevice;Module["FS_unlink"]=FS.unlink;var calledRun;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}var calledMain=false;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args){var entryFunction=Module["_main"];var argc=0;var argv=0;try{var ret=entryFunction(argc,argv);exit(ret,true)}catch(e){if(e instanceof ExitStatus){return}else if(e=="unwind"){noExitRuntime=true;return}else{var toLog=e;if(e&&typeof e==="object"&&e.stack){toLog=[e,e.stack]}err("exception thrown: "+toLog);quit_(1,e)}}finally{calledMain=true}}function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(shouldRunNow)callMain(args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}Module["run"]=run;function exit(status,implicit){if(implicit&&noExitRuntime&&status===0){return}if(noExitRuntime){}else{EXITSTATUS=status;exitRuntime();if(Module["onExit"])Module["onExit"](status);ABORT=true}quit_(status,new ExitStatus(status))}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}var shouldRunNow=true;if(Module["noInitialRun"])shouldRunNow=false;run();
diff --git a/examples/web/models/models_mesh_picking.wasm b/examples/web/models/models_mesh_picking.wasm
deleted file mode 100644
index 6fd41db..0000000
--- a/examples/web/models/models_mesh_picking.wasm
+++ /dev/null
Binary files differ
diff --git a/examples/web/models/models_orthographic_projection.c b/examples/web/models/models_orthographic_projection.c
deleted file mode 100644
index ec21b8d..0000000
--- a/examples/web/models/models_orthographic_projection.c
+++ /dev/null
@@ -1,130 +0,0 @@
-/*******************************************************************************************
-*
-* raylib [models] example - Show the difference between perspective and orthographic projection
-*
-* This program is heavily based on the geometric objects example
-*
-* This example has been created using raylib 2.0 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
-*
-* Example contributed by Max Danielsson (@autious) and reviewed by Ramon Santamaria (@raysan5)
-*
-* Copyright (c) 2018 Max Danielsson (@autious) and Ramon Santamaria (@raysan5)
-*
-********************************************************************************************/
-
-#include "raylib.h"
-
-#if defined(PLATFORM_WEB)
- #include <emscripten/emscripten.h>
-#endif
-
-#define FOVY_PERSPECTIVE 45.0f
-#define WIDTH_ORTHOGRAPHIC 10.0f
-
-//----------------------------------------------------------------------------------
-// Global Variables Definition
-//----------------------------------------------------------------------------------
-const int screenWidth = 800;
-const int screenHeight = 450;
-
-// NOTE: Textures MUST be loaded after Window initialization (OpenGL context is required)
-
-Camera camera = { 0 };
-
-//----------------------------------------------------------------------------------
-// Module Functions Declaration
-//----------------------------------------------------------------------------------
-void UpdateDrawFrame(void); // Update and Draw one frame
-
-//----------------------------------------------------------------------------------
-// Program Main Entry Point
-//----------------------------------------------------------------------------------
-int main(void)
-{
- // Initialization
- //--------------------------------------------------------------------------------------
- InitWindow(screenWidth, screenHeight, "raylib [models] example - geometric shapes");
-
- // Define the camera to look into our 3d world
- camera = (Camera){{ 0.0f, 10.0f, 10.0f }, { 0.0f, 0.0f, 0.0f }, { 0.0f, 1.0f, 0.0f }, FOVY_PERSPECTIVE, CAMERA_PERSPECTIVE };
-
-#if defined(PLATFORM_WEB)
- emscripten_set_main_loop(UpdateDrawFrame, 60, 1);
-#else
- SetTargetFPS(60); // Set our game to run at 60 frames-per-second
- //--------------------------------------------------------------------------------------
-
- // Main game loop
- while (!WindowShouldClose()) // Detect window close button or ESC key
- {
- UpdateDrawFrame();
- }
-#endif
-
- // De-Initialization
- //--------------------------------------------------------------------------------------
- CloseWindow(); // Close window and OpenGL context
- //--------------------------------------------------------------------------------------
-
- return 0;
-}
-
-//----------------------------------------------------------------------------------
-// Module Functions Definition
-//----------------------------------------------------------------------------------
-void UpdateDrawFrame(void)
-{
- // Update
- //----------------------------------------------------------------------------------
- if (IsKeyPressed(KEY_SPACE))
- {
- if (camera.projection == CAMERA_PERSPECTIVE)
- {
- camera.fovy = WIDTH_ORTHOGRAPHIC;
- camera.projection = CAMERA_ORTHOGRAPHIC;
- }
- else
- {
- camera.fovy = FOVY_PERSPECTIVE;
- camera.projection = CAMERA_PERSPECTIVE;
- }
- }
- //----------------------------------------------------------------------------------
-
- // Draw
- //----------------------------------------------------------------------------------
- BeginDrawing();
-
- ClearBackground(RAYWHITE);
-
- BeginMode3D(camera);
-
- DrawCube((Vector3){-4.0f, 0.0f, 2.0f}, 2.0f, 5.0f, 2.0f, RED);
- DrawCubeWires((Vector3){-4.0f, 0.0f, 2.0f}, 2.0f, 5.0f, 2.0f, GOLD);
- DrawCubeWires((Vector3){-4.0f, 0.0f, -2.0f}, 3.0f, 6.0f, 2.0f, MAROON);
-
- DrawSphere((Vector3){-1.0f, 0.0f, -2.0f}, 1.0f, GREEN);
- DrawSphereWires((Vector3){1.0f, 0.0f, 2.0f}, 2.0f, 16, 16, LIME);
-
- DrawCylinder((Vector3){4.0f, 0.0f, -2.0f}, 1.0f, 2.0f, 3.0f, 4, SKYBLUE);
- DrawCylinderWires((Vector3){4.0f, 0.0f, -2.0f}, 1.0f, 2.0f, 3.0f, 4, DARKBLUE);
- DrawCylinderWires((Vector3){4.5f, -1.0f, 2.0f}, 1.0f, 1.0f, 2.0f, 6, BROWN);
-
- DrawCylinder((Vector3){1.0f, 0.0f, -4.0f}, 0.0f, 1.5f, 3.0f, 8, GOLD);
- DrawCylinderWires((Vector3){1.0f, 0.0f, -4.0f}, 0.0f, 1.5f, 3.0f, 8, PINK);
-
- DrawGrid(10, 1.0f); // Draw a grid
-
- EndMode3D();
-
- DrawText("Press Spacebar to switch camera type", 10, GetScreenHeight() - 30, 20, DARKGRAY);
-
- if (camera.projection == CAMERA_ORTHOGRAPHIC) DrawText("ORTHOGRAPHIC", 10, 40, 20, BLACK);
- else if (camera.projection == CAMERA_PERSPECTIVE) DrawText("PERSPECTIVE", 10, 40, 20, BLACK);
-
- DrawFPS(10, 10);
-
- EndDrawing();
- //----------------------------------------------------------------------------------
-}
diff --git a/examples/web/models/models_orthographic_projection.html b/examples/web/models/models_orthographic_projection.html
deleted file mode 100644
index cba0848..0000000
--- a/examples/web/models/models_orthographic_projection.html
+++ /dev/null
@@ -1 +0,0 @@
-<!doctypehtml><html lang=en-us><head><meta charset=utf-8><meta content="text/html; charset=utf-8"http-equiv=Content-Type><title>raylib HTML5 GAME</title><meta content="raylib HTML5 GAME"name=title><meta content="New HTML5 videogame, developed using raylib videogames library"name=description><meta content="raylib, games, html5, programming, C, C++, library, learn, videogames"name=keywords><meta content="width=device-width"name=viewport><meta content="raylib HTML5 GAME"property=og:title><meta content=image/png property=og:image:type><meta content=https://www.raylib.com/common/img/raylib_logo.png property=og:image><meta content=raylib.com property=og:site_name><meta content=https://www.raylib.com/games.html property=og:url><meta content="New HTML5 videogame, developed using raylib videogames library"property=og:description><meta content=summary name=twitter:card><meta content=@raysan5 name=twitter:site><meta content="raylib HTML5 GAME"name=twitter:title><meta content=https://www.raylib.com/common/raylib_logo.png name=twitter:image><meta content=https://www.raylib.com/games.html name=twitter:url><meta content="New HTML5 videogame, developed using raylib videogames library"name=twitter:description><link href=https://www.raylib.com/favicon.ico rel="shortcut icon"><style>body{font-family:arial;margin:0;padding:none}#header{width:100%;height:80px;background-color:#888}#logo{width:64px;height:64px;float:left;position:relative;margin:10px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAAlC+aJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjExR/NCNwAAA7JJREFUaEPtk0FyWzEMQ+37X7fZhxX4YY3AD1OKF1nkzTRlSBCCLeVBnvl/AUdaELOunPno1kts1kixdtEZKVs+xIxebBkZsVknn/L5nFGDLR8T4zVC9fX19S/+tTFijrYK4jUjbPUtqBHpnEE6PkZD7jQZV8n5Recw1XQKciZuPaEtR6UjNs5ENVGMsBVqpPtER0ZMOhpyp8m4YL4OjD9yxsyZxnQycfMJETNSzsRE1+dihK3YMiJmpHTW3xpmXPC6BXlCHfqnBlsjY5hxf/6EVEOM2BTEi0fYCX4ONSI6Kq3Blg/prIOMq2CsRur4KQ0x64SdjOufEDEdHZGOhmz5RDHCVqhRuQ86YsVskbc+GXchLiHnFyYH+UigQDVGnImbT8hwFkgLg2qiM8JO6Ylx1FNLa3DmYwqCTsZd4BPqGJG7MwKzpeiWKTKxXkLMVE3MSOmsdwxLH6Rd/wCCLSNDx6djeKfJuArGeoYamRHpaEjnCBYZVy8hZqo2GI36qPjsiOiMsBXGcev4Mx9TLGTchbgEjN/uz6jGrBvDjg+LTNx8Qp2CbG2xMKgmOiPslJ4Yxx+eSnSkzlosZNwFPiHl7FRTkLNRJm4+IeVM0ymIH42wE/wcKalQI4MRl4EW3p6VcRWMua8F6WjIlqZDxvVPiHQ6CjVbYkV9ohhhp/Rk1wiYgpyJ78i4CsZbjkb8Qx+ihvzu3RPaKogZkY6GlEeMsKdPSOFIC8VoOusg44L5c+T8ouOoGhWbdWJ8tMi4egkxo4hoh2yNTGf3iIyr5Lyic4bRENXo+lvDjAt4C1Hk/OKtUaAj0+n4dMSZ2D+hrYJsaYh2SClG2jV9kJKKzhlGQ1SsW299Mq6C8dYZHTExo8fzieI5ivipYnYy7nwJqGKmOYyRwfiUBXITfh5qSHRGWEkfqJqURgvsdHyWYv7Ko8DnYYegk3EB00cxprdrJRzFd7YQzawu8L1GMTYS/KpPaAFTkIn1EmJmspJSs5xBzSyGhlkBmlxfNFiP5mw4wlbMh4F5Ddxp5jNINBdCEz9zPOC1zD7Q0HBdmXndwv0TMtydEdzlWJT4VZ8Qt9Qn4/onxMIwa5ZYGJU5yufBiCjwE50AGjLCVuS8Yt4H7OgZLKK5EKOsLviEWJSL/+0uMi7gLUSBseYwqEbXvSHCec1CJvZPyHCmYQffaBBfOTCGHM2aEbZi1+gO1XTWVXMnzrhAn5DSOZVsiQlHnSITKzGj6DeTcZWc/3oy7h9//PF4PL4BlvsWrb6RE+oAAAAASUVORK5CYII=)}.emscripten{padding-right:0;margin-left:auto;margin-right:auto;display:block}div.emscripten{text-align:center}div.emscripten_border{border:1px solid #000}canvas.emscripten{border:0 none;background:#000;width:100%}.spinner{height:30px;width:30px;margin:0;margin-top:20px;margin-left:20px;display:inline-block;vertical-align:top;-webkit-animation:rotation .8s linear infinite;-moz-animation:rotation .8s linear infinite;-o-animation:rotation .8s linear infinite;animation:rotation .8s linear infinite;border-left:5px solid #000;border-right:5px solid #000;border-bottom:5px solid #000;border-top:5px solid red;border-radius:100%;background-color:#f5f5f5}@-webkit-keyframes rotation{from{-webkit-transform:rotate(0)}to{-webkit-transform:rotate(360deg)}}@-moz-keyframes rotation{from{-moz-transform:rotate(0)}to{-moz-transform:rotate(360deg)}}@-o-keyframes rotation{from{-o-transform:rotate(0)}to{-o-transform:rotate(360deg)}}@keyframes rotation{from{transform:rotate(0)}to{transform:rotate(360deg)}}#status{display:inline-block;vertical-align:top;margin-top:30px;margin-left:20px;font-weight:700;color:#282828}#progress{height:0;width:0}#controls{display:inline-block;float:right;vertical-align:top;margin-top:15px;margin-right:20px}#output{width:100%;height:140px;margin:0 auto;margin-top:10px;display:block;background-color:#000;color:#25ae26;font-family:'Lucida Console',Monaco,monospace;outline:0}input[type=button]{background-color:#d3d3d3;border:4px solid #a9a9a9;color:#000;text-decoration:none;cursor:pointer;width:140px;height:50px}input[type=button]:hover{background-color:#f5f5f5ff;border-color:#000}</style></head><body><div id=header><a href=https://www.raylib.com id=logo></a><div class=spinner id=spinner></div><div class=emscripten id=status>Downloading...</div><span id=controls><span><input onclick=Module.requestFullscreen(!1,!1) type=button value="🖵 FULLSCREEN"></span><span><input onclick=toggleAudio() type=button value="🔇 SUSPEND"id=btn-audio></span></span><div class=emscripten><progress hidden id=progress max=100 value=0></progress></div></div><div class=emscripten_border><canvas class=emscripten id=canvas oncontextmenu=event.preventDefault() tabindex=-1></canvas></div><textarea id=output rows=8></textarea><script src=https://cdn.jsdelivr.net/gh/eligrey/FileSaver.js/dist/FileSaver.min.js></script><script>function saveFileFromMEMFSToDisk(e,a){var t,i=/^((?!chrome|android).)*safari/i.test(navigator.userAgent),o=FS.readFile(e);t=i?new Blob([o.buffer],{type:"application/octet-stream"}):new Blob([o.buffer],{type:"application/octet-binary"}),saveAs(t,a)}</script><script>var statusElement=document.querySelector("#status"),progressElement=document.querySelector("#progress"),spinnerElement=document.querySelector("#spinner"),Module={preRun:[],postRun:[],print:function(){var e=document.querySelector("#output");return e&&(e.value=""),function(t){arguments.length>1&&(t=Array.prototype.slice.call(arguments).join(" ")),console.log(t),e&&(e.value+=t+"\n",e.scrollTop=e.scrollHeight)}}(),printErr:function(e){arguments.length>1&&(e=Array.prototype.slice.call(arguments).join(" ")),console.error(e)},canvas:function(){var e=document.querySelector("#canvas");return e.addEventListener("webglcontextlost",(function(e){alert("WebGL context lost. You will need to reload the page."),e.preventDefault()}),!1),e}(),setStatus:function(e){if(Module.setStatus.last||(Module.setStatus.last={time:Date.now(),text:""}),e!==Module.setStatus.last.text){var t=e.match(/([^(]+)\((\d+(\.\d+)?)\/(\d+)\)/),n=Date.now();t&&n-Module.setStatus.last.time<30||(Module.setStatus.last.time=n,Module.setStatus.last.text=e,t?(e=t[1],progressElement.value=100*parseInt(t[2]),progressElement.max=100*parseInt(t[4]),progressElement.hidden=!0,spinnerElement.hidden=!1):(progressElement.value=null,progressElement.max=null,progressElement.hidden=!0,e||(spinnerElement.style.display="none")),statusElement.innerHTML=e)}},totalDependencies:0,monitorRunDependencies:function(e){this.totalDependencies=Math.max(this.totalDependencies,e),Module.setStatus(e?"Preparing... ("+(this.totalDependencies-e)+"/"+this.totalDependencies+")":"All downloads complete.")}};Module.setStatus("Downloading..."),window.onerror=function(){Module.setStatus("Exception thrown, see JavaScript console"),spinnerElement.style.display="none",Module.setStatus=function(e){e&&Module.printErr("[post-exception status] "+e)}}</script><script>var audioBtn=document.querySelector("#btn-audio");const audioContexList=[];function toggleAudio(){var t=!1;audioContexList.forEach(e=>{"suspended"==e.state?(e.resume(),t=!0):"running"==e.state&&e.suspend()}),audioBtn.value=t?"🔇 SUSPEND":"🔈 RESUME"}self.AudioContext=new Proxy(self.AudioContext,{construct(t,e){const n=new t(...e);return audioContexList.push(n),"suspended"==n.state&&(audioBtn.value="🔈 RESUME"),n}})</script><script src=models_orthographic_projection.js async></script></body></html> \ No newline at end of file
diff --git a/examples/web/models/models_orthographic_projection.js b/examples/web/models/models_orthographic_projection.js
deleted file mode 100644
index 736e424..0000000
--- a/examples/web/models/models_orthographic_projection.js
+++ /dev/null
@@ -1 +0,0 @@
-var Module=typeof Module!=="undefined"?Module:{};var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram="./this.program";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window==="object";ENVIRONMENT_IS_WORKER=typeof importScripts==="function";ENVIRONMENT_IS_NODE=typeof process==="object"&&typeof process.versions==="object"&&typeof process.versions.node==="string";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require("path").dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require("fs");if(!nodePath)nodePath=require("path");filename=nodePath["normalize"](filename);return nodeFS["readFileSync"](filename,binary?null:"utf8")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);if(typeof module!=="undefined"){module["exports"]=Module}process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",abort);quit_=function(status){process["exit"](status)};Module["inspect"]=function(){return"[Emscripten Module object]"}}else if(ENVIRONMENT_IS_SHELL){if(typeof read!="undefined"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer==="function"){return new Uint8Array(readbuffer(f))}data=read(f,"binary");assert(typeof data==="object");return data};if(typeof scriptArgs!="undefined"){arguments_=scriptArgs}else if(typeof arguments!="undefined"){arguments_=arguments}if(typeof quit==="function"){quit_=function(status){quit(status)}}if(typeof print!=="undefined"){if(typeof console==="undefined")console={};console.log=print;console.warn=console.error=typeof printErr!=="undefined"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!=="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf("/")+1)}else{scriptDirectory=""}{read_=function(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=function(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var STACK_ALIGN=16;function alignMemory(size,factor){if(!factor)factor=STACK_ALIGN;return Math.ceil(size/factor)*factor}function warnOnce(text){if(!warnOnce.shown)warnOnce.shown={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;err(text)}}var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime=Module["noExitRuntime"]||true;if(typeof WebAssembly!=="object"){abort("no native wasm support detected")}function setValue(ptr,value,type,noSafe){type=type||"i8";if(type.charAt(type.length-1)==="*")type="i32";switch(type){case"i1":HEAP8[ptr>>0]=value;break;case"i8":HEAP8[ptr>>0]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":tempI64=[value>>>0,(tempDouble=value,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;default:abort("invalid type for setValue: "+type)}}var wasmMemory;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}var ALLOC_NORMAL=0;var ALLOC_STACK=1;function allocate(slab,allocator){var ret;if(allocator==ALLOC_STACK){ret=stackAlloc(slab.length)}else{ret=_malloc(slab.length)}if(slab.subarray||slab.slice){HEAPU8.set(slab,ret)}else{HEAPU8.set(new Uint8Array(slab),ret)}return ret}var UTF8Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heap,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heap[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str="";while(idx<endPtr){var u0=heap[idx++];if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heap[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heap[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u0=(u0&7)<<18|u1<<12|u2<<6|heap[idx++]&63}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||16777216;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;__ATINIT__.push({func:function(){___wasm_call_ctors()}});function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){FS.ignorePermissions=false;callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}what+="";err(what);ABORT=true;EXITSTATUS=1;what="abort("+what+"). Build with -s ASSERTIONS=1 for more info.";var e=new WebAssembly.RuntimeError(what);throw e}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix="file://";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile="models_orthographic_projection.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}else{throw"both async and sync fetching of the wasm failed"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch==="function"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={"a":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;wasmMemory=Module["asm"]["Xd"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module["asm"]["_d"];removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiatedSource(output){receiveInstance(output["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming==="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch==="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync();return{}}var tempDouble;var tempI64;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback(Module);continue}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){wasmTable.get(func)()}else{wasmTable.get(func)(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}function ___assert_fail(condition,filename,line,func){abort("Assertion failed: "+UTF8ToString(condition)+", at: "+[filename?UTF8ToString(filename):"unknown filename",line,func?UTF8ToString(func):"unknown function"])}function setErrNo(value){HEAP32[___errno_location()>>2]=value;return value}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path==="/")return"/";path=PATH.normalize(path);path=path.replace(/\/$/,"");var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}};function getRandomDevice(){if(typeof crypto==="object"&&typeof crypto["getRandomValues"]==="function"){var randomBuffer=new Uint8Array(1);return function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]}}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");return function(){return crypto_module["randomBytes"](1)[0]}}catch(e){}}return function(){abort("randomDevice")}}var PATH_FS={resolve:function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!=="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=path.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(function(p){return!!p}),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:function(from,to){from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start<arr.length;start++){if(arr[start]!=="")break}var end=arr.length-1;for(;end>=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i<length;i++){if(fromParts[i]!==toParts[i]){samePartsLength=i;break}}var outputParts=[];for(var i=samePartsLength;i<fromParts.length;i++){outputParts.push("..")}outputParts=outputParts.concat(toParts.slice(samePartsLength));return outputParts.join("/")}};var TTY={ttys:[],init:function(){},shutdown:function(){},register:function(dev,ops){TTY.ttys[dev]={input:[],output:[],ops:ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open:function(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close:function(stream){stream.tty.ops.flush(stream.tty)},flush:function(stream){stream.tty.ops.flush(stream.tty)},read:function(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i<length;i++){var result;try{result=stream.tty.ops.get_char(stream.tty)}catch(e){throw new FS.ErrnoError(29)}if(result===undefined&&bytesRead===0){throw new FS.ErrnoError(6)}if(result===null||result===undefined)break;bytesRead++;buffer[offset+i]=result}if(bytesRead){stream.node.timestamp=Date.now()}return bytesRead},write:function(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.put_char){throw new FS.ErrnoError(60)}try{for(var i=0;i<length;i++){stream.tty.ops.put_char(stream.tty,buffer[offset+i])}}catch(e){throw new FS.ErrnoError(29)}if(length){stream.node.timestamp=Date.now()}return i}},default_tty_ops:{get_char:function(tty){if(!tty.input.length){var result=null;if(ENVIRONMENT_IS_NODE){var BUFSIZE=256;var buf=Buffer.alloc?Buffer.alloc(BUFSIZE):new Buffer(BUFSIZE);var bytesRead=0;try{bytesRead=nodeFS.readSync(process.stdin.fd,buf,0,BUFSIZE,null)}catch(e){if(e.toString().indexOf("EOF")!=-1)bytesRead=0;else throw e}if(bytesRead>0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function mmapAlloc(size){var alignedSize=alignMemory(size,16384);var ptr=_malloc(alignedSize);while(size<alignedSize)HEAP8[ptr+size++]=0;return ptr}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray:function(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage:function(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity<CAPACITY_DOUBLING_MAX?2:1.125)>>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage:function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr:function(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr:function(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp;old_node.parent=new_dir},unlink:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir:function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i<size;i++)buffer[offset+i]=contents[position+i]}return size},write:function(stream,buffer,offset,length,position,canOwn){if(!length)return 0;var node=stream.node;node.timestamp=Date.now();if(buffer.subarray&&(!node.contents||node.contents.subarray)){if(canOwn){node.contents=buffer.subarray(offset,offset+length);node.usedBytes=length;return length}else if(node.usedBytes===0&&position===0){node.contents=buffer.slice(offset,offset+length);node.usedBytes=length;return length}else if(position+length<=node.usedBytes){node.contents.set(buffer.subarray(offset,offset+length),position);return length}}MEMFS.expandFileStorage(node,position+length);if(node.contents.subarray&&buffer.subarray){node.contents.set(buffer.subarray(offset,offset+length),position)}else{for(var i=0;i<length;i++){node.contents[position+i]=buffer[offset+i]}}node.usedBytes=Math.max(node.usedBytes,position+length);return length},llseek:function(stream,offset,whence){var position=offset;if(whence===1){position+=stream.position}else if(whence===2){if(FS.isFile(stream.node.mode)){position+=stream.node.usedBytes}}if(position<0){throw new FS.ErrnoError(28)}return position},allocate:function(stream,offset,length){MEMFS.expandFileStorage(stream.node,offset+length);stream.node.usedBytes=Math.max(stream.node.usedBytes,offset+length)},mmap:function(stream,address,length,position,prot,flags){if(address!==0){throw new FS.ErrnoError(28)}if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}var ptr;var allocated;var contents=stream.node.contents;if(!(flags&2)&&contents.buffer===buffer){allocated=false;ptr=contents.byteOffset}else{if(position>0||position+length<contents.length){if(contents.subarray){contents=contents.subarray(position,position+length)}else{contents=Array.prototype.slice.call(contents,position,position+length)}}allocated=true;ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}HEAP8.set(contents,ptr)}return{ptr:ptr,allocated:allocated}},msync:function(stream,buffer,offset,length,mmapFlags){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}if(mmapFlags&2){return 0}var bytesWritten=MEMFS.stream_ops.write(stream,buffer,0,length,offset,false);return 0}}};var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,trackingDelegate:{},tracking:{openFlags:{READ:1,WRITE:2}},ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath:function(path,opts){path=PATH_FS.resolve(FS.cwd(),path);opts=opts||{};if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};for(var key in defaults){if(opts[key]===undefined){opts[key]=defaults[key]}}if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),false);var current=FS.root;var current_path="/";for(var i=0;i<parts.length;i++){var islast=i===parts.length-1;if(islast&&opts.parent){break}current=FS.lookupNode(current,parts[i]);current_path=PATH.join2(current_path,parts[i]);if(FS.isMountpoint(current)){if(!islast||islast&&opts.follow_mount){current=current.mounted.root}}if(!islast||opts.follow){var count=0;while(FS.isLink(current.mode)){var link=FS.readlink(current_path);current_path=PATH_FS.resolve(PATH.dirname(current_path),link);var lookup=FS.lookupPath(current_path,{recurse_count:opts.recurse_count});current=lookup.node;if(count++>40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath:function(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?mount+"/"+path:mount+path}path=path?node.name+"/"+path:node.name;node=node.parent}},hashName:function(parentid,name){var hash=0;for(var i=0;i<name.length;i++){hash=(hash<<5)-hash+name.charCodeAt(i)|0}return(parentid+hash>>>0)%FS.nameTable.length},hashAddNode:function(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode:function(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode:function(parent,name){var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode:function(parent,name,mode,rdev){var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:function(node){FS.hashRemoveNode(node)},isRoot:function(node){return node===node.parent},isMountpoint:function(node){return!!node.mounted},isFile:function(mode){return(mode&61440)===32768},isDir:function(mode){return(mode&61440)===16384},isLink:function(mode){return(mode&61440)===40960},isChrdev:function(mode){return(mode&61440)===8192},isBlkdev:function(mode){return(mode&61440)===24576},isFIFO:function(mode){return(mode&61440)===4096},isSocket:function(mode){return(mode&49152)===49152},flagModes:{"r":0,"r+":2,"w":577,"w+":578,"a":1089,"a+":1090},modeStringToFlags:function(str){var flags=FS.flagModes[str];if(typeof flags==="undefined"){throw new Error("Unknown file open mode: "+str)}return flags},flagsToPermissionString:function(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions:function(node,perms){if(FS.ignorePermissions){return 0}if(perms.indexOf("r")!==-1&&!(node.mode&292)){return 2}else if(perms.indexOf("w")!==-1&&!(node.mode&146)){return 2}else if(perms.indexOf("x")!==-1&&!(node.mode&73)){return 2}return 0},mayLookup:function(dir){var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate:function(dir,name){try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete:function(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen:function(node,flags){if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd:function(fd_start,fd_end){fd_start=fd_start||0;fd_end=fd_end||FS.MAX_OPEN_FDS;for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:function(fd){return FS.streams[fd]},createStream:function(stream,fd_start,fd_end){if(!FS.FSStream){FS.FSStream=function(){};FS.FSStream.prototype={object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}}}}var newStream=new FS.FSStream;for(var p in stream){newStream[p]=stream[p]}stream=newStream;var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:function(fd){FS.streams[fd]=null},chrdev_stream_ops:{open:function(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}},llseek:function(){throw new FS.ErrnoError(70)}},major:function(dev){return dev>>8},minor:function(dev){return dev&255},makedev:function(ma,mi){return ma<<8|mi},registerDevice:function(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:function(dev){return FS.devices[dev]},getMounts:function(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts},syncfs:function(populate,callback){if(typeof populate==="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err("warning: "+FS.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work")}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(function(mount){if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount:function(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount:function(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(function(hash){var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.indexOf(current.mount)!==-1){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup:function(parent,name){return parent.node_ops.lookup(parent,name)},mknod:function(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create:function(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:function(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree:function(path,mode){var dirs=path.split("/");var d="";for(var i=0;i<dirs.length;++i){if(!dirs[i])continue;d+="/"+dirs[i];try{FS.mkdir(d,mode)}catch(e){if(e.errno!=20)throw e}}},mkdev:function(path,mode,dev){if(typeof dev==="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:function(oldpath,newpath){if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:function(old_path,new_path){var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}try{if(FS.trackingDelegate["willMovePath"]){FS.trackingDelegate["willMovePath"](old_path,new_path)}}catch(e){err("FS.trackingDelegate['willMovePath']('"+old_path+"', '"+new_path+"') threw an exception: "+e.message)}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}try{if(FS.trackingDelegate["onMovePath"])FS.trackingDelegate["onMovePath"](old_path,new_path)}catch(e){err("FS.trackingDelegate['onMovePath']('"+old_path+"', '"+new_path+"') threw an exception: "+e.message)}},rmdir:function(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}try{if(FS.trackingDelegate["willDeletePath"]){FS.trackingDelegate["willDeletePath"](path)}}catch(e){err("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: "+e.message)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate["onDeletePath"])FS.trackingDelegate["onDeletePath"](path)}catch(e){err("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: "+e.message)}},readdir:function(path){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:function(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}try{if(FS.trackingDelegate["willDeletePath"]){FS.trackingDelegate["willDeletePath"](path)}}catch(e){err("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: "+e.message)}parent.node_ops.unlink(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate["onDeletePath"])FS.trackingDelegate["onDeletePath"](path)}catch(e){err("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: "+e.message)}},readlink:function(path){var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:function(path,dontFollow){var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:function(path){return FS.stat(path,true)},chmod:function(path,mode,dontFollow){var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:function(path,mode){FS.chmod(path,mode,true)},fchmod:function(fd,mode){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:function(path,uid,gid,dontFollow){var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:function(path,uid,gid){FS.chown(path,uid,gid,true)},fchown:function(fd,uid,gid){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:function(path,len){if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:function(fd,len){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:function(path,atime,mtime){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:function(path,flags,mode,fd_start,fd_end){if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags==="string"?FS.modeStringToFlags(flags):flags;mode=typeof mode==="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path==="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false},fd_start,fd_end);if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1;err("FS.trackingDelegate error on read file: "+path)}}try{if(FS.trackingDelegate["onOpenFile"]){var trackingFlags=0;if((flags&2097155)!==1){trackingFlags|=FS.tracking.openFlags.READ}if((flags&2097155)!==0){trackingFlags|=FS.tracking.openFlags.WRITE}FS.trackingDelegate["onOpenFile"](path,trackingFlags)}}catch(e){err("FS.trackingDelegate['onOpenFile']('"+path+"', flags) threw an exception: "+e.message)}return stream},close:function(stream){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:function(stream){return stream.fd===null},llseek:function(stream,offset,whence){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:function(stream,buffer,offset,length,position){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!=="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:function(stream,buffer,offset,length,position,canOwn){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!=="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;try{if(stream.path&&FS.trackingDelegate["onWriteToFile"])FS.trackingDelegate["onWriteToFile"](stream.path)}catch(e){err("FS.trackingDelegate['onWriteToFile']('"+stream.path+"') threw an exception: "+e.message)}return bytesWritten},allocate:function(stream,offset,length){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:function(stream,address,length,position,prot,flags){if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,address,length,position,prot,flags)},msync:function(stream,buffer,offset,length,mmapFlags){if(!stream||!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:function(stream){return 0},ioctl:function(stream,cmd,arg){if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:function(path,opts){opts=opts||{};opts.flags=opts.flags||0;opts.encoding=opts.encoding||"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error('Invalid encoding type "'+opts.encoding+'"')}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding==="binary"){ret=buf}FS.close(stream);return ret},writeFile:function(path,data,opts){opts=opts||{};opts.flags=opts.flags||577;var stream=FS.open(path,opts.flags,opts.mode);if(typeof data==="string"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,undefined,opts.canOwn)}else if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{throw new Error("Unsupported data type")}FS.close(stream)},cwd:function(){return FS.currentPath},chdir:function(path){var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories:function(){FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices:function(){FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:function(){return 0},write:function(stream,buffer,offset,length,pos){return length}});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var random_device=getRandomDevice();FS.createDevice("/dev","random",random_device);FS.createDevice("/dev","urandom",random_device);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories:function(){FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount:function(){var node=FS.createNode(proc_self,"fd",16384|511,73);node.node_ops={lookup:function(parent,name){var fd=+name;var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:function(){return stream.path}}};ret.parent=ret;return ret}};return node}},{},"/proc/self/fd")},createStandardStreams:function(){if(Module["stdin"]){FS.createDevice("/dev","stdin",Module["stdin"])}else{FS.symlink("/dev/tty","/dev/stdin")}if(Module["stdout"]){FS.createDevice("/dev","stdout",null,Module["stdout"])}else{FS.symlink("/dev/tty","/dev/stdout")}if(Module["stderr"]){FS.createDevice("/dev","stderr",null,Module["stderr"])}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},ensureErrnoError:function(){if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.node=node;this.setErrno=function(errno){this.errno=errno};this.setErrno(errno);this.message="FS error"};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[44].forEach(function(code){FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack="<generic error, no stack>"})},staticInit:function(){FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={"MEMFS":MEMFS}},init:function(input,output,error){FS.init.initialized=true;FS.ensureErrnoError();Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams()},quit:function(){FS.init.initialized=false;var fflush=Module["_fflush"];if(fflush)fflush(0);for(var i=0;i<FS.streams.length;i++){var stream=FS.streams[i];if(!stream){continue}FS.close(stream)}},getMode:function(canRead,canWrite){var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode},findObject:function(path,dontResolveLastLink){var ret=FS.analyzePath(path,dontResolveLastLink);if(ret.exists){return ret.object}else{return null}},analyzePath:function(path,dontResolveLastLink){try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath:function(parent,path,canRead,canWrite){parent=typeof parent==="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:function(parent,name,properties,canRead,canWrite){var path=PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:function(parent,name,data,canRead,canWrite,canOwn){var path=name?PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name):parent;var mode=FS.getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data==="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i<len;++i)arr[i]=data.charCodeAt(i);data=arr}FS.chmod(node,mode|146);var stream=FS.open(node,577);FS.write(stream,data,0,data.length,0,canOwn);FS.close(stream);FS.chmod(node,mode)}return node},createDevice:function(parent,name,input,output){var path=PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:function(stream){stream.seekable=false},close:function(stream){if(output&&output.buffer&&output.buffer.length){output(10)}},read:function(stream,buffer,offset,length,pos){var bytesRead=0;for(var i=0;i<length;i++){var result;try{result=input()}catch(e){throw new FS.ErrnoError(29)}if(result===undefined&&bytesRead===0){throw new FS.ErrnoError(6)}if(result===null||result===undefined)break;bytesRead++;buffer[offset+i]=result}if(bytesRead){stream.node.timestamp=Date.now()}return bytesRead},write:function(stream,buffer,offset,length,pos){for(var i=0;i<length;i++){try{output(buffer[offset+i])}catch(e){throw new FS.ErrnoError(29)}}if(length){stream.node.timestamp=Date.now()}return i}});return FS.mkdev(path,mode,dev)},forceLoadFile:function(obj){if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!=="undefined"){throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}},createLazyFile:function(parent,name,url,canRead,canWrite){function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=function(from,to){if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);if(typeof Uint8Array!="undefined")xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}else{return intArrayFromString(xhr.responseText||"",true)}};var lazyArray=this;lazyArray.setDataGetter(function(chunkNum){var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]==="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]==="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!=="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._length}},chunkSize:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(function(key){var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){FS.forceLoadFile(node);return fn.apply(null,arguments)}});stream_ops.read=function stream_ops_read(stream,buffer,offset,length,position){FS.forceLoadFile(node);var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i<size;i++){buffer[offset+i]=contents[position+i]}}else{for(var i=0;i<size;i++){buffer[offset+i]=contents.get(position+i)}}return size};node.stream_ops=stream_ops;return node},createPreloadedFile:function(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish){Browser.init();var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency("cp "+fullname);function processData(byteArray){function finish(byteArray){if(preFinish)preFinish();if(!dontCreateFile){FS.createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}if(onload)onload();removeRunDependency(dep)}var handled=false;Module["preloadPlugins"].forEach(function(plugin){if(handled)return;if(plugin["canHandle"](fullname)){plugin["handle"](byteArray,fullname,finish,function(){if(onerror)onerror();removeRunDependency(dep)});handled=true}});if(!handled)finish(byteArray)}addRunDependency(dep);if(typeof url=="string"){Browser.asyncLoad(url,function(byteArray){processData(byteArray)},onerror)}else{processData(url)}},indexedDB:function(){return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME:function(){return"EM_FS_"+window.location.pathname},DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:function(paths,onload,onerror){onload=onload||function(){};onerror=onerror||function(){};var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=function openRequest_onupgradeneeded(){out("creating db");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME)};openRequest.onsuccess=function openRequest_onsuccess(){var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],"readwrite");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(function(path){var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=function putRequest_onsuccess(){ok++;if(ok+fail==total)finish()};putRequest.onerror=function putRequest_onerror(){fail++;if(ok+fail==total)finish()}});transaction.onerror=onerror};openRequest.onerror=onerror},loadFilesFromDB:function(paths,onload,onerror){onload=onload||function(){};onerror=onerror||function(){};var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=function openRequest_onsuccess(){var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],"readonly")}catch(e){onerror(e);return}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(function(path){var getRequest=files.get(path);getRequest.onsuccess=function getRequest_onsuccess(){if(FS.analyzePath(path).exists){FS.unlink(path)}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish()};getRequest.onerror=function getRequest_onerror(){fail++;if(ok+fail==total)finish()}});transaction.onerror=onerror};openRequest.onerror=onerror}};var SYSCALLS={mappings:{},DEFAULT_POLLMASK:5,umask:511,calculateAt:function(dirfd,path,allowEmpty){if(path[0]==="/"){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=FS.getStream(dirfd);if(!dirstream)throw new FS.ErrnoError(8);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(func,path,buf){try{var stat=func(path)}catch(e){if(e&&e.node&&PATH.normalize(path)!==PATH.normalize(FS.getPath(e.node))){return-54}throw e}HEAP32[buf>>2]=stat.dev;HEAP32[buf+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;HEAP32[buf+56>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+76>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+80>>2]=tempI64[0],HEAP32[buf+84>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},doMkdir:function(path,mode){path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0},doMknod:function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}FS.mknod(path,mode,dev);return 0},doReadlink:function(path,buf,bufsize){if(bufsize<=0)return-28;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len},doAccess:function(path,amode){if(amode&~7){return-28}var node;var lookup=FS.lookupPath(path,{follow:true});node=lookup.node;if(!node){return-44}var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0},doDup:function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd},doReadv:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i<iovcnt;i++){var ptr=HEAP32[iov+i*8>>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr<len)break}return ret},doWritev:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i<iovcnt;i++){var ptr=HEAP32[iov+i*8>>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream},get64:function(low,high){return low}};function ___sys_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-28}var newStream;newStream=FS.open(stream.path,stream.flags,0,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0}case 12:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 13:case 14:return 0;case 16:case 8:return-28;case 9:setErrNo(28);return-1;default:{return-28}}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_ioctl(fd,op,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(op){case 21509:case 21505:{if(!stream.tty)return-59;return 0}case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-59;return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{if(!stream.tty)return-59;return 0}default:abort("bad ioctl syscall "+op)}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_open(path,flags,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(path);var mode=varargs?SYSCALLS.get():0;var stream=FS.open(pathname,flags,mode);return stream.fd}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}var JSEvents={inEventHandler:0,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return false;for(var i in arrA){if(arrA[i]!=arrB[i])return false}return true}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList)){return}}JSEvents.deferredCalls.push({targetFunction:targetFunction,precedence:precedence,argsList:argsList});JSEvents.deferredCalls.sort(function(x,y){return x.precedence<y.precedence})},removeDeferredCalls:function(targetFunction){for(var i=0;i<JSEvents.deferredCalls.length;++i){if(JSEvents.deferredCalls[i].targetFunction==targetFunction){JSEvents.deferredCalls.splice(i,1);--i}}},canPerformEventHandlerRequests:function(){return JSEvents.inEventHandler&&JSEvents.currentEventHandler.allowsDeferredCalls},runDeferredCalls:function(){if(!JSEvents.canPerformEventHandlerRequests()){return}for(var i=0;i<JSEvents.deferredCalls.length;++i){var call=JSEvents.deferredCalls[i];JSEvents.deferredCalls.splice(i,1);--i;call.targetFunction.apply(null,call.argsList)}},eventHandlers:[],removeAllHandlersOnTarget:function(target,eventTypeString){for(var i=0;i<JSEvents.eventHandlers.length;++i){if(JSEvents.eventHandlers[i].target==target&&(!eventTypeString||eventTypeString==JSEvents.eventHandlers[i].eventTypeString)){JSEvents._removeHandler(i--)}}},_removeHandler:function(i){var h=JSEvents.eventHandlers[i];h.target.removeEventListener(h.eventTypeString,h.eventListenerFunc,h.useCapture);JSEvents.eventHandlers.splice(i,1)},registerOrRemoveHandler:function(eventHandler){var jsEventHandler=function jsEventHandler(event){++JSEvents.inEventHandler;JSEvents.currentEventHandler=eventHandler;JSEvents.runDeferredCalls();eventHandler.handlerFunc(event);JSEvents.runDeferredCalls();--JSEvents.inEventHandler};if(eventHandler.callbackfunc){eventHandler.eventListenerFunc=jsEventHandler;eventHandler.target.addEventListener(eventHandler.eventTypeString,jsEventHandler,eventHandler.useCapture);JSEvents.eventHandlers.push(eventHandler);JSEvents.registerRemoveEventListeners()}else{for(var i=0;i<JSEvents.eventHandlers.length;++i){if(JSEvents.eventHandlers[i].target==eventHandler.target&&JSEvents.eventHandlers[i].eventTypeString==eventHandler.eventTypeString){JSEvents._removeHandler(i--)}}}},getNodeNameForTarget:function(target){if(!target)return"";if(target==window)return"#window";if(target==screen)return"#screen";return target&&target.nodeName?target.nodeName:""},fullscreenEnabled:function(){return document.fullscreenEnabled||document.webkitFullscreenEnabled}};function requestPointerLock(target){if(target.requestPointerLock){target.requestPointerLock()}else if(target.msRequestPointerLock){target.msRequestPointerLock()}else{if(document.body.requestPointerLock||document.body.msRequestPointerLock){return-3}else{return-1}}return 0}function _emscripten_exit_pointerlock(){JSEvents.removeDeferredCalls(requestPointerLock);if(document.exitPointerLock){document.exitPointerLock()}else if(document.msExitPointerLock){document.msExitPointerLock()}else{return-1}return 0}function maybeCStringToJsString(cString){return cString>2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!=="undefined"?document:0,typeof window!=="undefined"?window:0];function findEventTarget(target){target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!=="undefined"?document.querySelector(target):undefined);return domElement}function getBoundingClientRect(e){return specialHTMLTargets.indexOf(e)<0?e.getBoundingClientRect():{"left":0,"top":0}}function _emscripten_get_element_css_size(target,width,height){target=findEventTarget(target);if(!target)return-4;var rect=getBoundingClientRect(target);HEAPF64[width>>3]=rect.width;HEAPF64[height>>3]=rect.height;return 0}function fillGamepadEventData(eventStruct,e){HEAPF64[eventStruct>>3]=e.timestamp;for(var i=0;i<e.axes.length;++i){HEAPF64[eventStruct+i*8+16>>3]=e.axes[i]}for(var i=0;i<e.buttons.length;++i){if(typeof e.buttons[i]==="object"){HEAPF64[eventStruct+i*8+528>>3]=e.buttons[i].value}else{HEAPF64[eventStruct+i*8+528>>3]=e.buttons[i]}}for(var i=0;i<e.buttons.length;++i){if(typeof e.buttons[i]==="object"){HEAP32[eventStruct+i*4+1040>>2]=e.buttons[i].pressed}else{HEAP32[eventStruct+i*4+1040>>2]=e.buttons[i]==1}}HEAP32[eventStruct+1296>>2]=e.connected;HEAP32[eventStruct+1300>>2]=e.index;HEAP32[eventStruct+8>>2]=e.axes.length;HEAP32[eventStruct+12>>2]=e.buttons.length;stringToUTF8(e.id,eventStruct+1304,64);stringToUTF8(e.mapping,eventStruct+1368,64)}function _emscripten_get_gamepad_status(index,gamepadState){if(index<0||index>=JSEvents.lastGamepadState.length)return-5;if(!JSEvents.lastGamepadState[index])return-7;fillGamepadEventData(gamepadState,JSEvents.lastGamepadState[index]);return 0}function _emscripten_get_num_gamepads(){return JSEvents.lastGamepadState.length}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension("ANGLE_instanced_arrays");if(ext){ctx["vertexAttribDivisor"]=function(index,divisor){ext["vertexAttribDivisorANGLE"](index,divisor)};ctx["drawArraysInstanced"]=function(mode,first,count,primcount){ext["drawArraysInstancedANGLE"](mode,first,count,primcount)};ctx["drawElementsInstanced"]=function(mode,count,type,indices,primcount){ext["drawElementsInstancedANGLE"](mode,count,type,indices,primcount)};return 1}}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension("OES_vertex_array_object");if(ext){ctx["createVertexArray"]=function(){return ext["createVertexArrayOES"]()};ctx["deleteVertexArray"]=function(vao){ext["deleteVertexArrayOES"](vao)};ctx["bindVertexArray"]=function(vao){ext["bindVertexArrayOES"](vao)};ctx["isVertexArray"]=function(vao){return ext["isVertexArrayOES"](vao)};return 1}}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension("WEBGL_draw_buffers");if(ext){ctx["drawBuffers"]=function(n,bufs){ext["drawBuffersWEBGL"](n,bufs)};return 1}}function __webgl_enable_WEBGL_multi_draw(ctx){return!!(ctx.multiDrawWebgl=ctx.getExtension("WEBGL_multi_draw"))}var GL={counter:1,buffers:[],programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:[],offscreenCanvases:{},timerQueriesEXT:[],programInfos:{},stringCache:{},unpackAlignment:4,recordError:function recordError(errorCode){if(!GL.lastError){GL.lastError=errorCode}},getNewId:function(table){var ret=GL.counter++;for(var i=table.length;i<ret;i++){table[i]=null}return ret},getSource:function(shader,count,string,length){var source="";for(var i=0;i<count;++i){var len=length?HEAP32[length+i*4>>2]:-1;source+=UTF8ToString(HEAP32[string+i*4>>2],len<0?undefined:len)}return source},createContext:function(canvas,webGLContextAttributes){var ctx=canvas.getContext("webgl",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:function(ctx,webGLContextAttributes){var handle=GL.getNewId(GL.contexts);var context={handle:handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};if(ctx.canvas)ctx.canvas.GLctxObject=context;GL.contexts[handle]=context;if(typeof webGLContextAttributes.enableExtensionsByDefault==="undefined"||webGLContextAttributes.enableExtensionsByDefault){GL.initExtensions(context)}return handle},makeContextCurrent:function(contextHandle){GL.currentContext=GL.contexts[contextHandle];Module.ctx=GLctx=GL.currentContext&&GL.currentContext.GLctx;return!(contextHandle&&!GLctx)},getContext:function(contextHandle){return GL.contexts[contextHandle]},deleteContext:function(contextHandle){if(GL.currentContext===GL.contexts[contextHandle])GL.currentContext=null;if(typeof JSEvents==="object")JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas);if(GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas)GL.contexts[contextHandle].GLctx.canvas.GLctxObject=undefined;GL.contexts[contextHandle]=null},initExtensions:function(context){if(!context)context=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;__webgl_enable_ANGLE_instanced_arrays(GLctx);__webgl_enable_OES_vertex_array_object(GLctx);__webgl_enable_WEBGL_draw_buffers(GLctx);GLctx.disjointTimerQueryExt=GLctx.getExtension("EXT_disjoint_timer_query");__webgl_enable_WEBGL_multi_draw(GLctx);var exts=GLctx.getSupportedExtensions()||[];exts.forEach(function(ext){if(ext.indexOf("lose_context")<0&&ext.indexOf("debug")<0){GLctx.getExtension(ext)}})},populateUniformTable:function(program){var p=GL.programs[program];var ptable=GL.programInfos[program]={uniforms:{},maxUniformLength:0,maxAttributeLength:-1,maxUniformBlockNameLength:-1};var utable=ptable.uniforms;var numUniforms=GLctx.getProgramParameter(p,35718);for(var i=0;i<numUniforms;++i){var u=GLctx.getActiveUniform(p,i);var name=u.name;ptable.maxUniformLength=Math.max(ptable.maxUniformLength,name.length+1);if(name.slice(-1)=="]"){name=name.slice(0,name.lastIndexOf("["))}var loc=GLctx.getUniformLocation(p,name);if(loc){var id=GL.getNewId(GL.uniforms);utable[name]=[u.size,id];GL.uniforms[id]=loc;for(var j=1;j<u.size;++j){var n=name+"["+j+"]";loc=GLctx.getUniformLocation(p,n);id=GL.getNewId(GL.uniforms);GL.uniforms[id]=loc}}}}};function _emscripten_glActiveTexture(x0){GLctx["activeTexture"](x0)}function _emscripten_glAttachShader(program,shader){GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _emscripten_glBeginQueryEXT(target,id){GLctx.disjointTimerQueryExt["beginQueryEXT"](target,GL.timerQueriesEXT[id])}function _emscripten_glBindAttribLocation(program,index,name){GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))}function _emscripten_glBindBuffer(target,buffer){GLctx.bindBuffer(target,GL.buffers[buffer])}function _emscripten_glBindFramebuffer(target,framebuffer){GLctx.bindFramebuffer(target,GL.framebuffers[framebuffer])}function _emscripten_glBindRenderbuffer(target,renderbuffer){GLctx.bindRenderbuffer(target,GL.renderbuffers[renderbuffer])}function _emscripten_glBindTexture(target,texture){GLctx.bindTexture(target,GL.textures[texture])}function _emscripten_glBindVertexArrayOES(vao){GLctx["bindVertexArray"](GL.vaos[vao])}function _emscripten_glBlendColor(x0,x1,x2,x3){GLctx["blendColor"](x0,x1,x2,x3)}function _emscripten_glBlendEquation(x0){GLctx["blendEquation"](x0)}function _emscripten_glBlendEquationSeparate(x0,x1){GLctx["blendEquationSeparate"](x0,x1)}function _emscripten_glBlendFunc(x0,x1){GLctx["blendFunc"](x0,x1)}function _emscripten_glBlendFuncSeparate(x0,x1,x2,x3){GLctx["blendFuncSeparate"](x0,x1,x2,x3)}function _emscripten_glBufferData(target,size,data,usage){GLctx.bufferData(target,data?HEAPU8.subarray(data,data+size):size,usage)}function _emscripten_glBufferSubData(target,offset,size,data){GLctx.bufferSubData(target,offset,HEAPU8.subarray(data,data+size))}function _emscripten_glCheckFramebufferStatus(x0){return GLctx["checkFramebufferStatus"](x0)}function _emscripten_glClear(x0){GLctx["clear"](x0)}function _emscripten_glClearColor(x0,x1,x2,x3){GLctx["clearColor"](x0,x1,x2,x3)}function _emscripten_glClearDepthf(x0){GLctx["clearDepth"](x0)}function _emscripten_glClearStencil(x0){GLctx["clearStencil"](x0)}function _emscripten_glColorMask(red,green,blue,alpha){GLctx.colorMask(!!red,!!green,!!blue,!!alpha)}function _emscripten_glCompileShader(shader){GLctx.compileShader(GL.shaders[shader])}function _emscripten_glCompressedTexImage2D(target,level,internalFormat,width,height,border,imageSize,data){GLctx["compressedTexImage2D"](target,level,internalFormat,width,height,border,data?HEAPU8.subarray(data,data+imageSize):null)}function _emscripten_glCompressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,imageSize,data){GLctx["compressedTexSubImage2D"](target,level,xoffset,yoffset,width,height,format,data?HEAPU8.subarray(data,data+imageSize):null)}function _emscripten_glCopyTexImage2D(x0,x1,x2,x3,x4,x5,x6,x7){GLctx["copyTexImage2D"](x0,x1,x2,x3,x4,x5,x6,x7)}function _emscripten_glCopyTexSubImage2D(x0,x1,x2,x3,x4,x5,x6,x7){GLctx["copyTexSubImage2D"](x0,x1,x2,x3,x4,x5,x6,x7)}function _emscripten_glCreateProgram(){var id=GL.getNewId(GL.programs);var program=GLctx.createProgram();program.name=id;GL.programs[id]=program;return id}function _emscripten_glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}function _emscripten_glCullFace(x0){GLctx["cullFace"](x0)}function _emscripten_glDeleteBuffers(n,buffers){for(var i=0;i<n;i++){var id=HEAP32[buffers+i*4>>2];var buffer=GL.buffers[id];if(!buffer)continue;GLctx.deleteBuffer(buffer);buffer.name=0;GL.buffers[id]=null}}function _emscripten_glDeleteFramebuffers(n,framebuffers){for(var i=0;i<n;++i){var id=HEAP32[framebuffers+i*4>>2];var framebuffer=GL.framebuffers[id];if(!framebuffer)continue;GLctx.deleteFramebuffer(framebuffer);framebuffer.name=0;GL.framebuffers[id]=null}}function _emscripten_glDeleteProgram(id){if(!id)return;var program=GL.programs[id];if(!program){GL.recordError(1281);return}GLctx.deleteProgram(program);program.name=0;GL.programs[id]=null;GL.programInfos[id]=null}function _emscripten_glDeleteQueriesEXT(n,ids){for(var i=0;i<n;i++){var id=HEAP32[ids+i*4>>2];var query=GL.timerQueriesEXT[id];if(!query)continue;GLctx.disjointTimerQueryExt["deleteQueryEXT"](query);GL.timerQueriesEXT[id]=null}}function _emscripten_glDeleteRenderbuffers(n,renderbuffers){for(var i=0;i<n;i++){var id=HEAP32[renderbuffers+i*4>>2];var renderbuffer=GL.renderbuffers[id];if(!renderbuffer)continue;GLctx.deleteRenderbuffer(renderbuffer);renderbuffer.name=0;GL.renderbuffers[id]=null}}function _emscripten_glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}function _emscripten_glDeleteTextures(n,textures){for(var i=0;i<n;i++){var id=HEAP32[textures+i*4>>2];var texture=GL.textures[id];if(!texture)continue;GLctx.deleteTexture(texture);texture.name=0;GL.textures[id]=null}}function _emscripten_glDeleteVertexArraysOES(n,vaos){for(var i=0;i<n;i++){var id=HEAP32[vaos+i*4>>2];GLctx["deleteVertexArray"](GL.vaos[id]);GL.vaos[id]=null}}function _emscripten_glDepthFunc(x0){GLctx["depthFunc"](x0)}function _emscripten_glDepthMask(flag){GLctx.depthMask(!!flag)}function _emscripten_glDepthRangef(x0,x1){GLctx["depthRange"](x0,x1)}function _emscripten_glDetachShader(program,shader){GLctx.detachShader(GL.programs[program],GL.shaders[shader])}function _emscripten_glDisable(x0){GLctx["disable"](x0)}function _emscripten_glDisableVertexAttribArray(index){GLctx.disableVertexAttribArray(index)}function _emscripten_glDrawArrays(mode,first,count){GLctx.drawArrays(mode,first,count)}function _emscripten_glDrawArraysInstancedANGLE(mode,first,count,primcount){GLctx["drawArraysInstanced"](mode,first,count,primcount)}var tempFixedLengthArray=[];function _emscripten_glDrawBuffersWEBGL(n,bufs){var bufArray=tempFixedLengthArray[n];for(var i=0;i<n;i++){bufArray[i]=HEAP32[bufs+i*4>>2]}GLctx["drawBuffers"](bufArray)}function _emscripten_glDrawElements(mode,count,type,indices){GLctx.drawElements(mode,count,type,indices)}function _emscripten_glDrawElementsInstancedANGLE(mode,count,type,indices,primcount){GLctx["drawElementsInstanced"](mode,count,type,indices,primcount)}function _emscripten_glEnable(x0){GLctx["enable"](x0)}function _emscripten_glEnableVertexAttribArray(index){GLctx.enableVertexAttribArray(index)}function _emscripten_glEndQueryEXT(target){GLctx.disjointTimerQueryExt["endQueryEXT"](target)}function _emscripten_glFinish(){GLctx["finish"]()}function _emscripten_glFlush(){GLctx["flush"]()}function _emscripten_glFramebufferRenderbuffer(target,attachment,renderbuffertarget,renderbuffer){GLctx.framebufferRenderbuffer(target,attachment,renderbuffertarget,GL.renderbuffers[renderbuffer])}function _emscripten_glFramebufferTexture2D(target,attachment,textarget,texture,level){GLctx.framebufferTexture2D(target,attachment,textarget,GL.textures[texture],level)}function _emscripten_glFrontFace(x0){GLctx["frontFace"](x0)}function __glGenObject(n,buffers,createFunction,objectTable){for(var i=0;i<n;i++){var buffer=GLctx[createFunction]();var id=buffer&&GL.getNewId(objectTable);if(buffer){buffer.name=id;objectTable[id]=buffer}else{GL.recordError(1282)}HEAP32[buffers+i*4>>2]=id}}function _emscripten_glGenBuffers(n,buffers){__glGenObject(n,buffers,"createBuffer",GL.buffers)}function _emscripten_glGenFramebuffers(n,ids){__glGenObject(n,ids,"createFramebuffer",GL.framebuffers)}function _emscripten_glGenQueriesEXT(n,ids){for(var i=0;i<n;i++){var query=GLctx.disjointTimerQueryExt["createQueryEXT"]();if(!query){GL.recordError(1282);while(i<n)HEAP32[ids+i++*4>>2]=0;return}var id=GL.getNewId(GL.timerQueriesEXT);query.name=id;GL.timerQueriesEXT[id]=query;HEAP32[ids+i*4>>2]=id}}function _emscripten_glGenRenderbuffers(n,renderbuffers){__glGenObject(n,renderbuffers,"createRenderbuffer",GL.renderbuffers)}function _emscripten_glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures)}function _emscripten_glGenVertexArraysOES(n,arrays){__glGenObject(n,arrays,"createVertexArray",GL.vaos)}function _emscripten_glGenerateMipmap(x0){GLctx["generateMipmap"](x0)}function __glGetActiveAttribOrUniform(funcName,program,index,bufSize,length,size,type,name){program=GL.programs[program];var info=GLctx[funcName](program,index);if(info){var numBytesWrittenExclNull=name&&stringToUTF8(info.name,name,bufSize);if(length)HEAP32[length>>2]=numBytesWrittenExclNull;if(size)HEAP32[size>>2]=info.size;if(type)HEAP32[type>>2]=info.type}}function _emscripten_glGetActiveAttrib(program,index,bufSize,length,size,type,name){__glGetActiveAttribOrUniform("getActiveAttrib",program,index,bufSize,length,size,type,name)}function _emscripten_glGetActiveUniform(program,index,bufSize,length,size,type,name){__glGetActiveAttribOrUniform("getActiveUniform",program,index,bufSize,length,size,type,name)}function _emscripten_glGetAttachedShaders(program,maxCount,count,shaders){var result=GLctx.getAttachedShaders(GL.programs[program]);var len=result.length;if(len>maxCount){len=maxCount}HEAP32[count>>2]=len;for(var i=0;i<len;++i){var id=GL.shaders.indexOf(result[i]);HEAP32[shaders+i*4>>2]=id}}function _emscripten_glGetAttribLocation(program,name){return GLctx.getAttribLocation(GL.programs[program],UTF8ToString(name))}function writeI53ToI64(ptr,num){HEAPU32[ptr>>2]=num;HEAPU32[ptr+4>>2]=(num-HEAPU32[ptr>>2])/4294967296}function emscriptenWebGLGet(name_,p,type){if(!p){GL.recordError(1281);return}var ret=undefined;switch(name_){case 36346:ret=1;break;case 36344:if(type!=0&&type!=1){GL.recordError(1280)}return;case 36345:ret=0;break;case 34466:var formats=GLctx.getParameter(34467);ret=formats?formats.length:0;break}if(ret===undefined){var result=GLctx.getParameter(name_);switch(typeof result){case"number":ret=result;break;case"boolean":ret=result?1:0;break;case"string":GL.recordError(1280);return;case"object":if(result===null){switch(name_){case 34964:case 35725:case 34965:case 36006:case 36007:case 32873:case 34229:case 34068:{ret=0;break}default:{GL.recordError(1280);return}}}else if(result instanceof Float32Array||result instanceof Uint32Array||result instanceof Int32Array||result instanceof Array){for(var i=0;i<result.length;++i){switch(type){case 0:HEAP32[p+i*4>>2]=result[i];break;case 2:HEAPF32[p+i*4>>2]=result[i];break;case 4:HEAP8[p+i>>0]=result[i]?1:0;break}}return}else{try{ret=result.name|0}catch(e){GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v: Unknown object returned from WebGL getParameter("+name_+")! (error: "+e+")");return}}break;default:GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v: Native code calling glGet"+type+"v("+name_+") and it returns "+result+" of type "+typeof result+"!");return}}switch(type){case 1:writeI53ToI64(p,ret);break;case 0:HEAP32[p>>2]=ret;break;case 2:HEAPF32[p>>2]=ret;break;case 4:HEAP8[p>>0]=ret?1:0;break}}function _emscripten_glGetBooleanv(name_,p){emscriptenWebGLGet(name_,p,4)}function _emscripten_glGetBufferParameteriv(target,value,data){if(!data){GL.recordError(1281);return}HEAP32[data>>2]=GLctx.getBufferParameter(target,value)}function _emscripten_glGetError(){var error=GLctx.getError()||GL.lastError;GL.lastError=0;return error}function _emscripten_glGetFloatv(name_,p){emscriptenWebGLGet(name_,p,2)}function _emscripten_glGetFramebufferAttachmentParameteriv(target,attachment,pname,params){var result=GLctx.getFramebufferAttachmentParameter(target,attachment,pname);if(result instanceof WebGLRenderbuffer||result instanceof WebGLTexture){result=result.name|0}HEAP32[params>>2]=result}function _emscripten_glGetIntegerv(name_,p){emscriptenWebGLGet(name_,p,0)}function _emscripten_glGetProgramInfoLog(program,maxLength,length,infoLog){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _emscripten_glGetProgramiv(program,pname,p){if(!p){GL.recordError(1281);return}if(program>=GL.counter){GL.recordError(1281);return}var ptable=GL.programInfos[program];if(!ptable){GL.recordError(1282);return}if(pname==35716){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";HEAP32[p>>2]=log.length+1}else if(pname==35719){HEAP32[p>>2]=ptable.maxUniformLength}else if(pname==35722){if(ptable.maxAttributeLength==-1){program=GL.programs[program];var numAttribs=GLctx.getProgramParameter(program,35721);ptable.maxAttributeLength=0;for(var i=0;i<numAttribs;++i){var activeAttrib=GLctx.getActiveAttrib(program,i);ptable.maxAttributeLength=Math.max(ptable.maxAttributeLength,activeAttrib.name.length+1)}}HEAP32[p>>2]=ptable.maxAttributeLength}else if(pname==35381){if(ptable.maxUniformBlockNameLength==-1){program=GL.programs[program];var numBlocks=GLctx.getProgramParameter(program,35382);ptable.maxUniformBlockNameLength=0;for(var i=0;i<numBlocks;++i){var activeBlockName=GLctx.getActiveUniformBlockName(program,i);ptable.maxUniformBlockNameLength=Math.max(ptable.maxUniformBlockNameLength,activeBlockName.length+1)}}HEAP32[p>>2]=ptable.maxUniformBlockNameLength}else{HEAP32[p>>2]=GLctx.getProgramParameter(GL.programs[program],pname)}}function _emscripten_glGetQueryObjecti64vEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.timerQueriesEXT[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}writeI53ToI64(params,ret)}function _emscripten_glGetQueryObjectivEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.timerQueriesEXT[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}HEAP32[params>>2]=ret}function _emscripten_glGetQueryObjectui64vEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.timerQueriesEXT[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}writeI53ToI64(params,ret)}function _emscripten_glGetQueryObjectuivEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.timerQueriesEXT[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}HEAP32[params>>2]=ret}function _emscripten_glGetQueryivEXT(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.disjointTimerQueryExt["getQueryEXT"](target,pname)}function _emscripten_glGetRenderbufferParameteriv(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getRenderbufferParameter(target,pname)}function _emscripten_glGetShaderInfoLog(shader,maxLength,length,infoLog){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _emscripten_glGetShaderPrecisionFormat(shaderType,precisionType,range,precision){var result=GLctx.getShaderPrecisionFormat(shaderType,precisionType);HEAP32[range>>2]=result.rangeMin;HEAP32[range+4>>2]=result.rangeMax;HEAP32[precision>>2]=result.precision}function _emscripten_glGetShaderSource(shader,bufSize,length,source){var result=GLctx.getShaderSource(GL.shaders[shader]);if(!result)return;var numBytesWrittenExclNull=bufSize>0&&source?stringToUTF8(result,source,bufSize):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _emscripten_glGetShaderiv(shader,pname,p){if(!p){GL.recordError(1281);return}if(pname==35716){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var logLength=log?log.length+1:0;HEAP32[p>>2]=logLength}else if(pname==35720){var source=GLctx.getShaderSource(GL.shaders[shader]);var sourceLength=source?source.length+1:0;HEAP32[p>>2]=sourceLength}else{HEAP32[p>>2]=GLctx.getShaderParameter(GL.shaders[shader],pname)}}function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _emscripten_glGetString(name_){if(GL.stringCache[name_])return GL.stringCache[name_];var ret;switch(name_){case 7939:var exts=GLctx.getSupportedExtensions()||[];exts=exts.concat(exts.map(function(e){return"GL_"+e}));ret=stringToNewUTF8(exts.join(" "));break;case 7936:case 7937:case 37445:case 37446:var s=GLctx.getParameter(name_);if(!s){GL.recordError(1280)}ret=stringToNewUTF8(s);break;case 7938:var glVersion=GLctx.getParameter(7938);{glVersion="OpenGL ES 2.0 ("+glVersion+")"}ret=stringToNewUTF8(glVersion);break;case 35724:var glslVersion=GLctx.getParameter(35724);var ver_re=/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/;var ver_num=glslVersion.match(ver_re);if(ver_num!==null){if(ver_num[1].length==3)ver_num[1]=ver_num[1]+"0";glslVersion="OpenGL ES GLSL ES "+ver_num[1]+" ("+glslVersion+")"}ret=stringToNewUTF8(glslVersion);break;default:GL.recordError(1280);return 0}GL.stringCache[name_]=ret;return ret}function _emscripten_glGetTexParameterfv(target,pname,params){if(!params){GL.recordError(1281);return}HEAPF32[params>>2]=GLctx.getTexParameter(target,pname)}function _emscripten_glGetTexParameteriv(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getTexParameter(target,pname)}function jstoi_q(str){return parseInt(str)}function _emscripten_glGetUniformLocation(program,name){name=UTF8ToString(name);var arrayIndex=0;if(name[name.length-1]=="]"){var leftBrace=name.lastIndexOf("[");arrayIndex=name[leftBrace+1]!="]"?jstoi_q(name.slice(leftBrace+1)):0;name=name.slice(0,leftBrace)}var uniformInfo=GL.programInfos[program]&&GL.programInfos[program].uniforms[name];if(uniformInfo&&arrayIndex>=0&&arrayIndex<uniformInfo[0]){return uniformInfo[1]+arrayIndex}else{return-1}}function emscriptenWebGLGetUniform(program,location,params,type){if(!params){GL.recordError(1281);return}var data=GLctx.getUniform(GL.programs[program],GL.uniforms[location]);if(typeof data=="number"||typeof data=="boolean"){switch(type){case 0:HEAP32[params>>2]=data;break;case 2:HEAPF32[params>>2]=data;break}}else{for(var i=0;i<data.length;i++){switch(type){case 0:HEAP32[params+i*4>>2]=data[i];break;case 2:HEAPF32[params+i*4>>2]=data[i];break}}}}function _emscripten_glGetUniformfv(program,location,params){emscriptenWebGLGetUniform(program,location,params,2)}function _emscripten_glGetUniformiv(program,location,params){emscriptenWebGLGetUniform(program,location,params,0)}function _emscripten_glGetVertexAttribPointerv(index,pname,pointer){if(!pointer){GL.recordError(1281);return}HEAP32[pointer>>2]=GLctx.getVertexAttribOffset(index,pname)}function emscriptenWebGLGetVertexAttrib(index,pname,params,type){if(!params){GL.recordError(1281);return}var data=GLctx.getVertexAttrib(index,pname);if(pname==34975){HEAP32[params>>2]=data&&data["name"]}else if(typeof data=="number"||typeof data=="boolean"){switch(type){case 0:HEAP32[params>>2]=data;break;case 2:HEAPF32[params>>2]=data;break;case 5:HEAP32[params>>2]=Math.fround(data);break}}else{for(var i=0;i<data.length;i++){switch(type){case 0:HEAP32[params+i*4>>2]=data[i];break;case 2:HEAPF32[params+i*4>>2]=data[i];break;case 5:HEAP32[params+i*4>>2]=Math.fround(data[i]);break}}}}function _emscripten_glGetVertexAttribfv(index,pname,params){emscriptenWebGLGetVertexAttrib(index,pname,params,2)}function _emscripten_glGetVertexAttribiv(index,pname,params){emscriptenWebGLGetVertexAttrib(index,pname,params,5)}function _emscripten_glHint(x0,x1){GLctx["hint"](x0,x1)}function _emscripten_glIsBuffer(buffer){var b=GL.buffers[buffer];if(!b)return 0;return GLctx.isBuffer(b)}function _emscripten_glIsEnabled(x0){return GLctx["isEnabled"](x0)}function _emscripten_glIsFramebuffer(framebuffer){var fb=GL.framebuffers[framebuffer];if(!fb)return 0;return GLctx.isFramebuffer(fb)}function _emscripten_glIsProgram(program){program=GL.programs[program];if(!program)return 0;return GLctx.isProgram(program)}function _emscripten_glIsQueryEXT(id){var query=GL.timerQueriesEXT[id];if(!query)return 0;return GLctx.disjointTimerQueryExt["isQueryEXT"](query)}function _emscripten_glIsRenderbuffer(renderbuffer){var rb=GL.renderbuffers[renderbuffer];if(!rb)return 0;return GLctx.isRenderbuffer(rb)}function _emscripten_glIsShader(shader){var s=GL.shaders[shader];if(!s)return 0;return GLctx.isShader(s)}function _emscripten_glIsTexture(id){var texture=GL.textures[id];if(!texture)return 0;return GLctx.isTexture(texture)}function _emscripten_glIsVertexArrayOES(array){var vao=GL.vaos[array];if(!vao)return 0;return GLctx["isVertexArray"](vao)}function _emscripten_glLineWidth(x0){GLctx["lineWidth"](x0)}function _emscripten_glLinkProgram(program){GLctx.linkProgram(GL.programs[program]);GL.populateUniformTable(program)}function _emscripten_glPixelStorei(pname,param){if(pname==3317){GL.unpackAlignment=param}GLctx.pixelStorei(pname,param)}function _emscripten_glPolygonOffset(x0,x1){GLctx["polygonOffset"](x0,x1)}function _emscripten_glQueryCounterEXT(id,target){GLctx.disjointTimerQueryExt["queryCounterEXT"](GL.timerQueriesEXT[id],target)}function computeUnpackAlignedImageSize(width,height,sizePerPixel,alignment){function roundedToNextMultipleOf(x,y){return x+y-1&-y}var plainRowSize=width*sizePerPixel;var alignedRowSize=roundedToNextMultipleOf(plainRowSize,alignment);return height*alignedRowSize}function __colorChannelsInGlTextureFormat(format){var colorChannels={5:3,6:4,8:2,29502:3,29504:4};return colorChannels[format-6402]||1}function heapObjectForWebGLType(type){type-=5120;if(type==1)return HEAPU8;if(type==4)return HEAP32;if(type==6)return HEAPF32;if(type==5||type==28922)return HEAPU32;return HEAPU16}function heapAccessShiftForWebGLHeap(heap){return 31-Math.clz32(heap.BYTES_PER_ELEMENT)}function emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat){var heap=heapObjectForWebGLType(type);var shift=heapAccessShiftForWebGLHeap(heap);var byteSize=1<<shift;var sizePerPixel=__colorChannelsInGlTextureFormat(format)*byteSize;var bytes=computeUnpackAlignedImageSize(width,height,sizePerPixel,GL.unpackAlignment);return heap.subarray(pixels>>shift,pixels+bytes>>shift)}function _emscripten_glReadPixels(x,y,width,height,format,type,pixels){var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);return}GLctx.readPixels(x,y,width,height,format,type,pixelData)}function _emscripten_glReleaseShaderCompiler(){}function _emscripten_glRenderbufferStorage(x0,x1,x2,x3){GLctx["renderbufferStorage"](x0,x1,x2,x3)}function _emscripten_glSampleCoverage(value,invert){GLctx.sampleCoverage(value,!!invert)}function _emscripten_glScissor(x0,x1,x2,x3){GLctx["scissor"](x0,x1,x2,x3)}function _emscripten_glShaderBinary(){GL.recordError(1280)}function _emscripten_glShaderSource(shader,count,string,length){var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}function _emscripten_glStencilFunc(x0,x1,x2){GLctx["stencilFunc"](x0,x1,x2)}function _emscripten_glStencilFuncSeparate(x0,x1,x2,x3){GLctx["stencilFuncSeparate"](x0,x1,x2,x3)}function _emscripten_glStencilMask(x0){GLctx["stencilMask"](x0)}function _emscripten_glStencilMaskSeparate(x0,x1){GLctx["stencilMaskSeparate"](x0,x1)}function _emscripten_glStencilOp(x0,x1,x2){GLctx["stencilOp"](x0,x1,x2)}function _emscripten_glStencilOpSeparate(x0,x1,x2,x3){GLctx["stencilOpSeparate"](x0,x1,x2,x3)}function _emscripten_glTexImage2D(target,level,internalFormat,width,height,border,format,type,pixels){GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels?emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat):null)}function _emscripten_glTexParameterf(x0,x1,x2){GLctx["texParameterf"](x0,x1,x2)}function _emscripten_glTexParameterfv(target,pname,params){var param=HEAPF32[params>>2];GLctx.texParameterf(target,pname,param)}function _emscripten_glTexParameteri(x0,x1,x2){GLctx["texParameteri"](x0,x1,x2)}function _emscripten_glTexParameteriv(target,pname,params){var param=HEAP32[params>>2];GLctx.texParameteri(target,pname,param)}function _emscripten_glTexSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixels){var pixelData=null;if(pixels)pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,0);GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixelData)}function _emscripten_glUniform1f(location,v0){GLctx.uniform1f(GL.uniforms[location],v0)}var miniTempWebGLFloatBuffers=[];function _emscripten_glUniform1fv(location,count,value){if(count<=288){var view=miniTempWebGLFloatBuffers[count-1];for(var i=0;i<count;++i){view[i]=HEAPF32[value+4*i>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*4>>2)}GLctx.uniform1fv(GL.uniforms[location],view)}function _emscripten_glUniform1i(location,v0){GLctx.uniform1i(GL.uniforms[location],v0)}var __miniTempWebGLIntBuffers=[];function _emscripten_glUniform1iv(location,count,value){if(count<=288){var view=__miniTempWebGLIntBuffers[count-1];for(var i=0;i<count;++i){view[i]=HEAP32[value+4*i>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*4>>2)}GLctx.uniform1iv(GL.uniforms[location],view)}function _emscripten_glUniform2f(location,v0,v1){GLctx.uniform2f(GL.uniforms[location],v0,v1)}function _emscripten_glUniform2fv(location,count,value){if(count<=144){var view=miniTempWebGLFloatBuffers[2*count-1];for(var i=0;i<2*count;i+=2){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*8>>2)}GLctx.uniform2fv(GL.uniforms[location],view)}function _emscripten_glUniform2i(location,v0,v1){GLctx.uniform2i(GL.uniforms[location],v0,v1)}function _emscripten_glUniform2iv(location,count,value){if(count<=144){var view=__miniTempWebGLIntBuffers[2*count-1];for(var i=0;i<2*count;i+=2){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*8>>2)}GLctx.uniform2iv(GL.uniforms[location],view)}function _emscripten_glUniform3f(location,v0,v1,v2){GLctx.uniform3f(GL.uniforms[location],v0,v1,v2)}function _emscripten_glUniform3fv(location,count,value){if(count<=96){var view=miniTempWebGLFloatBuffers[3*count-1];for(var i=0;i<3*count;i+=3){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*12>>2)}GLctx.uniform3fv(GL.uniforms[location],view)}function _emscripten_glUniform3i(location,v0,v1,v2){GLctx.uniform3i(GL.uniforms[location],v0,v1,v2)}function _emscripten_glUniform3iv(location,count,value){if(count<=96){var view=__miniTempWebGLIntBuffers[3*count-1];for(var i=0;i<3*count;i+=3){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2];view[i+2]=HEAP32[value+(4*i+8)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*12>>2)}GLctx.uniform3iv(GL.uniforms[location],view)}function _emscripten_glUniform4f(location,v0,v1,v2,v3){GLctx.uniform4f(GL.uniforms[location],v0,v1,v2,v3)}function _emscripten_glUniform4fv(location,count,value){if(count<=72){var view=miniTempWebGLFloatBuffers[4*count-1];var heap=HEAPF32;value>>=2;for(var i=0;i<4*count;i+=4){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3]}}else{var view=HEAPF32.subarray(value>>2,value+count*16>>2)}GLctx.uniform4fv(GL.uniforms[location],view)}function _emscripten_glUniform4i(location,v0,v1,v2,v3){GLctx.uniform4i(GL.uniforms[location],v0,v1,v2,v3)}function _emscripten_glUniform4iv(location,count,value){if(count<=72){var view=__miniTempWebGLIntBuffers[4*count-1];for(var i=0;i<4*count;i+=4){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2];view[i+2]=HEAP32[value+(4*i+8)>>2];view[i+3]=HEAP32[value+(4*i+12)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*16>>2)}GLctx.uniform4iv(GL.uniforms[location],view)}function _emscripten_glUniformMatrix2fv(location,count,transpose,value){if(count<=72){var view=miniTempWebGLFloatBuffers[4*count-1];for(var i=0;i<4*count;i+=4){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2];view[i+3]=HEAPF32[value+(4*i+12)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*16>>2)}GLctx.uniformMatrix2fv(GL.uniforms[location],!!transpose,view)}function _emscripten_glUniformMatrix3fv(location,count,transpose,value){if(count<=32){var view=miniTempWebGLFloatBuffers[9*count-1];for(var i=0;i<9*count;i+=9){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2];view[i+3]=HEAPF32[value+(4*i+12)>>2];view[i+4]=HEAPF32[value+(4*i+16)>>2];view[i+5]=HEAPF32[value+(4*i+20)>>2];view[i+6]=HEAPF32[value+(4*i+24)>>2];view[i+7]=HEAPF32[value+(4*i+28)>>2];view[i+8]=HEAPF32[value+(4*i+32)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*36>>2)}GLctx.uniformMatrix3fv(GL.uniforms[location],!!transpose,view)}function _emscripten_glUniformMatrix4fv(location,count,transpose,value){if(count<=18){var view=miniTempWebGLFloatBuffers[16*count-1];var heap=HEAPF32;value>>=2;for(var i=0;i<16*count;i+=16){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3];view[i+4]=heap[dst+4];view[i+5]=heap[dst+5];view[i+6]=heap[dst+6];view[i+7]=heap[dst+7];view[i+8]=heap[dst+8];view[i+9]=heap[dst+9];view[i+10]=heap[dst+10];view[i+11]=heap[dst+11];view[i+12]=heap[dst+12];view[i+13]=heap[dst+13];view[i+14]=heap[dst+14];view[i+15]=heap[dst+15]}}else{var view=HEAPF32.subarray(value>>2,value+count*64>>2)}GLctx.uniformMatrix4fv(GL.uniforms[location],!!transpose,view)}function _emscripten_glUseProgram(program){GLctx.useProgram(GL.programs[program])}function _emscripten_glValidateProgram(program){GLctx.validateProgram(GL.programs[program])}function _emscripten_glVertexAttrib1f(x0,x1){GLctx["vertexAttrib1f"](x0,x1)}function _emscripten_glVertexAttrib1fv(index,v){GLctx.vertexAttrib1f(index,HEAPF32[v>>2])}function _emscripten_glVertexAttrib2f(x0,x1,x2){GLctx["vertexAttrib2f"](x0,x1,x2)}function _emscripten_glVertexAttrib2fv(index,v){GLctx.vertexAttrib2f(index,HEAPF32[v>>2],HEAPF32[v+4>>2])}function _emscripten_glVertexAttrib3f(x0,x1,x2,x3){GLctx["vertexAttrib3f"](x0,x1,x2,x3)}function _emscripten_glVertexAttrib3fv(index,v){GLctx.vertexAttrib3f(index,HEAPF32[v>>2],HEAPF32[v+4>>2],HEAPF32[v+8>>2])}function _emscripten_glVertexAttrib4f(x0,x1,x2,x3,x4){GLctx["vertexAttrib4f"](x0,x1,x2,x3,x4)}function _emscripten_glVertexAttrib4fv(index,v){GLctx.vertexAttrib4f(index,HEAPF32[v>>2],HEAPF32[v+4>>2],HEAPF32[v+8>>2],HEAPF32[v+12>>2])}function _emscripten_glVertexAttribDivisorANGLE(index,divisor){GLctx["vertexAttribDivisor"](index,divisor)}function _emscripten_glVertexAttribPointer(index,size,type,normalized,stride,ptr){GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}function _emscripten_glViewport(x0,x1,x2,x3){GLctx["viewport"](x0,x1,x2,x3)}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function abortOnCannotGrowMemory(requestedSize){abort("OOM")}function _emscripten_resize_heap(requestedSize){abortOnCannotGrowMemory(requestedSize)}function _emscripten_run_script(ptr){eval(UTF8ToString(ptr))}function _emscripten_sample_gamepad_data(){return(JSEvents.lastGamepadState=navigator.getGamepads?navigator.getGamepads():navigator.webkitGetGamepads?navigator.webkitGetGamepads():null)?0:-1}function fillMouseEventData(eventStruct,e,target){var idx=eventStruct>>2;HEAP32[idx+0]=e.screenX;HEAP32[idx+1]=e.screenY;HEAP32[idx+2]=e.clientX;HEAP32[idx+3]=e.clientY;HEAP32[idx+4]=e.ctrlKey;HEAP32[idx+5]=e.shiftKey;HEAP32[idx+6]=e.altKey;HEAP32[idx+7]=e.metaKey;HEAP16[idx*2+16]=e.button;HEAP16[idx*2+17]=e.buttons;HEAP32[idx+9]=e["movementX"];HEAP32[idx+10]=e["movementY"];var rect=getBoundingClientRect(target);HEAP32[idx+11]=e.clientX-rect.left;HEAP32[idx+12]=e.clientY-rect.top}function registerMouseEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.mouseEvent)JSEvents.mouseEvent=_malloc(64);target=findEventTarget(target);var mouseEventHandlerFunc=function(ev){var e=ev||event;fillMouseEventData(JSEvents.mouseEvent,e,target);if(wasmTable.get(callbackfunc)(eventTypeId,JSEvents.mouseEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:eventTypeString!="mousemove"&&eventTypeString!="mouseenter"&&eventTypeString!="mouseleave",eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:mouseEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_click_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,4,"click",targetThread);return 0}function fillFullscreenChangeEventData(eventStruct){var fullscreenElement=document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement||document.msFullscreenElement;var isFullscreen=!!fullscreenElement;HEAP32[eventStruct>>2]=isFullscreen;HEAP32[eventStruct+4>>2]=JSEvents.fullscreenEnabled();var reportedElement=isFullscreen?fullscreenElement:JSEvents.previousFullscreenElement;var nodeName=JSEvents.getNodeNameForTarget(reportedElement);var id=reportedElement&&reportedElement.id?reportedElement.id:"";stringToUTF8(nodeName,eventStruct+8,128);stringToUTF8(id,eventStruct+136,128);HEAP32[eventStruct+264>>2]=reportedElement?reportedElement.clientWidth:0;HEAP32[eventStruct+268>>2]=reportedElement?reportedElement.clientHeight:0;HEAP32[eventStruct+272>>2]=screen.width;HEAP32[eventStruct+276>>2]=screen.height;if(isFullscreen){JSEvents.previousFullscreenElement=fullscreenElement}}function registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.fullscreenChangeEvent)JSEvents.fullscreenChangeEvent=_malloc(280);var fullscreenChangeEventhandlerFunc=function(ev){var e=ev||event;var fullscreenChangeEvent=JSEvents.fullscreenChangeEvent;fillFullscreenChangeEventData(fullscreenChangeEvent);if(wasmTable.get(callbackfunc)(eventTypeId,fullscreenChangeEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:fullscreenChangeEventhandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_fullscreenchange_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){if(!JSEvents.fullscreenEnabled())return-1;target=findEventTarget(target);if(!target)return-4;registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,19,"fullscreenchange",targetThread);registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,19,"webkitfullscreenchange",targetThread);return 0}function registerGamepadEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.gamepadEvent)JSEvents.gamepadEvent=_malloc(1432);var gamepadEventHandlerFunc=function(ev){var e=ev||event;var gamepadEvent=JSEvents.gamepadEvent;fillGamepadEventData(gamepadEvent,e["gamepad"]);if(wasmTable.get(callbackfunc)(eventTypeId,gamepadEvent,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:gamepadEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_gamepadconnected_callback_on_thread(userData,useCapture,callbackfunc,targetThread){if(!navigator.getGamepads&&!navigator.webkitGetGamepads)return-1;registerGamepadEventCallback(2,userData,useCapture,callbackfunc,26,"gamepadconnected",targetThread);return 0}function _emscripten_set_gamepaddisconnected_callback_on_thread(userData,useCapture,callbackfunc,targetThread){if(!navigator.getGamepads&&!navigator.webkitGetGamepads)return-1;registerGamepadEventCallback(2,userData,useCapture,callbackfunc,27,"gamepaddisconnected",targetThread);return 0}function registerKeyEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.keyEvent)JSEvents.keyEvent=_malloc(164);var keyEventHandlerFunc=function(e){var keyEventData=JSEvents.keyEvent;var idx=keyEventData>>2;HEAP32[idx+0]=e.location;HEAP32[idx+1]=e.ctrlKey;HEAP32[idx+2]=e.shiftKey;HEAP32[idx+3]=e.altKey;HEAP32[idx+4]=e.metaKey;HEAP32[idx+5]=e.repeat;HEAP32[idx+6]=e.charCode;HEAP32[idx+7]=e.keyCode;HEAP32[idx+8]=e.which;stringToUTF8(e.key||"",keyEventData+36,32);stringToUTF8(e.code||"",keyEventData+68,32);stringToUTF8(e.char||"",keyEventData+100,32);stringToUTF8(e.locale||"",keyEventData+132,32);if(wasmTable.get(callbackfunc)(eventTypeId,keyEventData,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:keyEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_keydown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,2,"keydown",targetThread);return 0}var Browser={mainLoop:{scheduler:null,method:"",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause:function(){Browser.mainLoop.scheduler=null;Browser.mainLoop.currentlyRunningMainloop++},resume:function(){Browser.mainLoop.currentlyRunningMainloop++;var timingMode=Browser.mainLoop.timingMode;var timingValue=Browser.mainLoop.timingValue;var func=Browser.mainLoop.func;Browser.mainLoop.func=null;setMainLoop(func,0,false,Browser.mainLoop.arg,true);_emscripten_set_main_loop_timing(timingMode,timingValue);Browser.mainLoop.scheduler()},updateStatus:function(){if(Module["setStatus"]){var message=Module["statusMessage"]||"Please wait...";var remaining=Browser.mainLoop.remainingBlockers;var expected=Browser.mainLoop.expectedBlockers;if(remaining){if(remaining<expected){Module["setStatus"](message+" ("+(expected-remaining)+"/"+expected+")")}else{Module["setStatus"](message)}}else{Module["setStatus"]("")}}},runIter:function(func){if(ABORT)return;if(Module["preMainLoop"]){var preRet=Module["preMainLoop"]();if(preRet===false){return}}try{func()}catch(e){if(e instanceof ExitStatus){return}else if(e=="unwind"){return}else{if(e&&typeof e==="object"&&e.stack)err("exception thrown: "+[e,e.stack]);throw e}}if(Module["postMainLoop"])Module["postMainLoop"]()}},isFullscreen:false,pointerLock:false,moduleContextCreatedCallbacks:[],workers:[],init:function(){if(!Module["preloadPlugins"])Module["preloadPlugins"]=[];if(Browser.initted)return;Browser.initted=true;try{new Blob;Browser.hasBlobConstructor=true}catch(e){Browser.hasBlobConstructor=false;console.log("warning: no blob constructor, cannot create blobs with mimetypes")}Browser.BlobBuilder=typeof MozBlobBuilder!="undefined"?MozBlobBuilder:typeof WebKitBlobBuilder!="undefined"?WebKitBlobBuilder:!Browser.hasBlobConstructor?console.log("warning: no BlobBuilder"):null;Browser.URLObject=typeof window!="undefined"?window.URL?window.URL:window.webkitURL:undefined;if(!Module.noImageDecoding&&typeof Browser.URLObject==="undefined"){console.log("warning: Browser does not support creating object URLs. Built-in browser image decoding will not be available.");Module.noImageDecoding=true}var imagePlugin={};imagePlugin["canHandle"]=function imagePlugin_canHandle(name){return!Module.noImageDecoding&&/\.(jpg|jpeg|png|bmp)$/i.test(name)};imagePlugin["handle"]=function imagePlugin_handle(byteArray,name,onload,onerror){var b=null;if(Browser.hasBlobConstructor){try{b=new Blob([byteArray],{type:Browser.getMimetype(name)});if(b.size!==byteArray.length){b=new Blob([new Uint8Array(byteArray).buffer],{type:Browser.getMimetype(name)})}}catch(e){warnOnce("Blob constructor present but fails: "+e+"; falling back to blob builder")}}if(!b){var bb=new Browser.BlobBuilder;bb.append(new Uint8Array(byteArray).buffer);b=bb.getBlob()}var url=Browser.URLObject.createObjectURL(b);var img=new Image;img.onload=function img_onload(){assert(img.complete,"Image "+name+" could not be decoded");var canvas=document.createElement("canvas");canvas.width=img.width;canvas.height=img.height;var ctx=canvas.getContext("2d");ctx.drawImage(img,0,0);Module["preloadedImages"][name]=canvas;Browser.URLObject.revokeObjectURL(url);if(onload)onload(byteArray)};img.onerror=function img_onerror(event){console.log("Image "+url+" could not be decoded");if(onerror)onerror()};img.src=url};Module["preloadPlugins"].push(imagePlugin);var audioPlugin={};audioPlugin["canHandle"]=function audioPlugin_canHandle(name){return!Module.noAudioDecoding&&name.substr(-4)in{".ogg":1,".wav":1,".mp3":1}};audioPlugin["handle"]=function audioPlugin_handle(byteArray,name,onload,onerror){var done=false;function finish(audio){if(done)return;done=true;Module["preloadedAudios"][name]=audio;if(onload)onload(byteArray)}function fail(){if(done)return;done=true;Module["preloadedAudios"][name]=new Audio;if(onerror)onerror()}if(Browser.hasBlobConstructor){try{var b=new Blob([byteArray],{type:Browser.getMimetype(name)})}catch(e){return fail()}var url=Browser.URLObject.createObjectURL(b);var audio=new Audio;audio.addEventListener("canplaythrough",function(){finish(audio)},false);audio.onerror=function audio_onerror(event){if(done)return;console.log("warning: browser could not fully decode audio "+name+", trying slower base64 approach");function encode64(data){var BASE="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var PAD="=";var ret="";var leftchar=0;var leftbits=0;for(var i=0;i<data.length;i++){leftchar=leftchar<<8|data[i];leftbits+=8;while(leftbits>=6){var curr=leftchar>>leftbits-6&63;leftbits-=6;ret+=BASE[curr]}}if(leftbits==2){ret+=BASE[(leftchar&3)<<4];ret+=PAD+PAD}else if(leftbits==4){ret+=BASE[(leftchar&15)<<2];ret+=PAD}return ret}audio.src="data:audio/x-"+name.substr(-3)+";base64,"+encode64(byteArray);finish(audio)};audio.src=url;Browser.safeSetTimeout(function(){finish(audio)},1e4)}else{return fail()}};Module["preloadPlugins"].push(audioPlugin);function pointerLockChange(){Browser.pointerLock=document["pointerLockElement"]===Module["canvas"]||document["mozPointerLockElement"]===Module["canvas"]||document["webkitPointerLockElement"]===Module["canvas"]||document["msPointerLockElement"]===Module["canvas"]}var canvas=Module["canvas"];if(canvas){canvas.requestPointerLock=canvas["requestPointerLock"]||canvas["mozRequestPointerLock"]||canvas["webkitRequestPointerLock"]||canvas["msRequestPointerLock"]||function(){};canvas.exitPointerLock=document["exitPointerLock"]||document["mozExitPointerLock"]||document["webkitExitPointerLock"]||document["msExitPointerLock"]||function(){};canvas.exitPointerLock=canvas.exitPointerLock.bind(document);document.addEventListener("pointerlockchange",pointerLockChange,false);document.addEventListener("mozpointerlockchange",pointerLockChange,false);document.addEventListener("webkitpointerlockchange",pointerLockChange,false);document.addEventListener("mspointerlockchange",pointerLockChange,false);if(Module["elementPointerLock"]){canvas.addEventListener("click",function(ev){if(!Browser.pointerLock&&Module["canvas"].requestPointerLock){Module["canvas"].requestPointerLock();ev.preventDefault()}},false)}}},createContext:function(canvas,useWebGL,setInModule,webGLContextAttributes){if(useWebGL&&Module.ctx&&canvas==Module.canvas)return Module.ctx;var ctx;var contextHandle;if(useWebGL){var contextAttributes={antialias:false,alpha:false,majorVersion:1};if(webGLContextAttributes){for(var attribute in webGLContextAttributes){contextAttributes[attribute]=webGLContextAttributes[attribute]}}if(typeof GL!=="undefined"){contextHandle=GL.createContext(canvas,contextAttributes);if(contextHandle){ctx=GL.getContext(contextHandle).GLctx}}}else{ctx=canvas.getContext("2d")}if(!ctx)return null;if(setInModule){if(!useWebGL)assert(typeof GLctx==="undefined","cannot set in module if GLctx is used, but we are a non-GL context that would replace it");Module.ctx=ctx;if(useWebGL)GL.makeContextCurrent(contextHandle);Module.useWebGL=useWebGL;Browser.moduleContextCreatedCallbacks.forEach(function(callback){callback()});Browser.init()}return ctx},destroyContext:function(canvas,useWebGL,setInModule){},fullscreenHandlersInstalled:false,lockPointer:undefined,resizeCanvas:undefined,requestFullscreen:function(lockPointer,resizeCanvas){Browser.lockPointer=lockPointer;Browser.resizeCanvas=resizeCanvas;if(typeof Browser.lockPointer==="undefined")Browser.lockPointer=true;if(typeof Browser.resizeCanvas==="undefined")Browser.resizeCanvas=false;var canvas=Module["canvas"];function fullscreenChange(){Browser.isFullscreen=false;var canvasContainer=canvas.parentNode;if((document["fullscreenElement"]||document["mozFullScreenElement"]||document["msFullscreenElement"]||document["webkitFullscreenElement"]||document["webkitCurrentFullScreenElement"])===canvasContainer){canvas.exitFullscreen=Browser.exitFullscreen;if(Browser.lockPointer)canvas.requestPointerLock();Browser.isFullscreen=true;if(Browser.resizeCanvas){Browser.setFullscreenCanvasSize()}else{Browser.updateCanvasDimensions(canvas)}}else{canvasContainer.parentNode.insertBefore(canvas,canvasContainer);canvasContainer.parentNode.removeChild(canvasContainer);if(Browser.resizeCanvas){Browser.setWindowedCanvasSize()}else{Browser.updateCanvasDimensions(canvas)}}if(Module["onFullScreen"])Module["onFullScreen"](Browser.isFullscreen);if(Module["onFullscreen"])Module["onFullscreen"](Browser.isFullscreen)}if(!Browser.fullscreenHandlersInstalled){Browser.fullscreenHandlersInstalled=true;document.addEventListener("fullscreenchange",fullscreenChange,false);document.addEventListener("mozfullscreenchange",fullscreenChange,false);document.addEventListener("webkitfullscreenchange",fullscreenChange,false);document.addEventListener("MSFullscreenChange",fullscreenChange,false)}var canvasContainer=document.createElement("div");canvas.parentNode.insertBefore(canvasContainer,canvas);canvasContainer.appendChild(canvas);canvasContainer.requestFullscreen=canvasContainer["requestFullscreen"]||canvasContainer["mozRequestFullScreen"]||canvasContainer["msRequestFullscreen"]||(canvasContainer["webkitRequestFullscreen"]?function(){canvasContainer["webkitRequestFullscreen"](Element["ALLOW_KEYBOARD_INPUT"])}:null)||(canvasContainer["webkitRequestFullScreen"]?function(){canvasContainer["webkitRequestFullScreen"](Element["ALLOW_KEYBOARD_INPUT"])}:null);canvasContainer.requestFullscreen()},exitFullscreen:function(){if(!Browser.isFullscreen){return false}var CFS=document["exitFullscreen"]||document["cancelFullScreen"]||document["mozCancelFullScreen"]||document["msExitFullscreen"]||document["webkitCancelFullScreen"]||function(){};CFS.apply(document,[]);return true},nextRAF:0,fakeRequestAnimationFrame:function(func){var now=Date.now();if(Browser.nextRAF===0){Browser.nextRAF=now+1e3/60}else{while(now+2>=Browser.nextRAF){Browser.nextRAF+=1e3/60}}var delay=Math.max(Browser.nextRAF-now,0);setTimeout(func,delay)},requestAnimationFrame:function(func){if(typeof requestAnimationFrame==="function"){requestAnimationFrame(func);return}var RAF=Browser.fakeRequestAnimationFrame;RAF(func)},safeRequestAnimationFrame:function(func){return Browser.requestAnimationFrame(function(){if(ABORT)return;func()})},safeSetTimeout:function(func,timeout){noExitRuntime=true;return setTimeout(function(){if(ABORT)return;func()},timeout)},getMimetype:function(name){return{"jpg":"image/jpeg","jpeg":"image/jpeg","png":"image/png","bmp":"image/bmp","ogg":"audio/ogg","wav":"audio/wav","mp3":"audio/mpeg"}[name.substr(name.lastIndexOf(".")+1)]},getUserMedia:function(func){if(!window.getUserMedia){window.getUserMedia=navigator["getUserMedia"]||navigator["mozGetUserMedia"]}window.getUserMedia(func)},getMovementX:function(event){return event["movementX"]||event["mozMovementX"]||event["webkitMovementX"]||0},getMovementY:function(event){return event["movementY"]||event["mozMovementY"]||event["webkitMovementY"]||0},getMouseWheelDelta:function(event){var delta=0;switch(event.type){case"DOMMouseScroll":delta=event.detail/3;break;case"mousewheel":delta=event.wheelDelta/120;break;case"wheel":delta=event.deltaY;switch(event.deltaMode){case 0:delta/=100;break;case 1:delta/=3;break;case 2:delta*=80;break;default:throw"unrecognized mouse wheel delta mode: "+event.deltaMode}break;default:throw"unrecognized mouse wheel event: "+event.type}return delta},mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,touches:{},lastTouches:{},calculateMouseEvent:function(event){if(Browser.pointerLock){if(event.type!="mousemove"&&"mozMovementX"in event){Browser.mouseMovementX=Browser.mouseMovementY=0}else{Browser.mouseMovementX=Browser.getMovementX(event);Browser.mouseMovementY=Browser.getMovementY(event)}if(typeof SDL!="undefined"){Browser.mouseX=SDL.mouseX+Browser.mouseMovementX;Browser.mouseY=SDL.mouseY+Browser.mouseMovementY}else{Browser.mouseX+=Browser.mouseMovementX;Browser.mouseY+=Browser.mouseMovementY}}else{var rect=Module["canvas"].getBoundingClientRect();var cw=Module["canvas"].width;var ch=Module["canvas"].height;var scrollX=typeof window.scrollX!=="undefined"?window.scrollX:window.pageXOffset;var scrollY=typeof window.scrollY!=="undefined"?window.scrollY:window.pageYOffset;if(event.type==="touchstart"||event.type==="touchend"||event.type==="touchmove"){var touch=event.touch;if(touch===undefined){return}var adjustedX=touch.pageX-(scrollX+rect.left);var adjustedY=touch.pageY-(scrollY+rect.top);adjustedX=adjustedX*(cw/rect.width);adjustedY=adjustedY*(ch/rect.height);var coords={x:adjustedX,y:adjustedY};if(event.type==="touchstart"){Browser.lastTouches[touch.identifier]=coords;Browser.touches[touch.identifier]=coords}else if(event.type==="touchend"||event.type==="touchmove"){var last=Browser.touches[touch.identifier];if(!last)last=coords;Browser.lastTouches[touch.identifier]=last;Browser.touches[touch.identifier]=coords}return}var x=event.pageX-(scrollX+rect.left);var y=event.pageY-(scrollY+rect.top);x=x*(cw/rect.width);y=y*(ch/rect.height);Browser.mouseMovementX=x-Browser.mouseX;Browser.mouseMovementY=y-Browser.mouseY;Browser.mouseX=x;Browser.mouseY=y}},asyncLoad:function(url,onload,onerror,noRunDep){var dep=!noRunDep?getUniqueRunDependency("al "+url):"";readAsync(url,function(arrayBuffer){assert(arrayBuffer,'Loading data file "'+url+'" failed (no arrayBuffer).');onload(new Uint8Array(arrayBuffer));if(dep)removeRunDependency(dep)},function(event){if(onerror){onerror()}else{throw'Loading data file "'+url+'" failed.'}});if(dep)addRunDependency(dep)},resizeListeners:[],updateResizeListeners:function(){var canvas=Module["canvas"];Browser.resizeListeners.forEach(function(listener){listener(canvas.width,canvas.height)})},setCanvasSize:function(width,height,noUpdates){var canvas=Module["canvas"];Browser.updateCanvasDimensions(canvas,width,height);if(!noUpdates)Browser.updateResizeListeners()},windowedWidth:0,windowedHeight:0,setFullscreenCanvasSize:function(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>2];flags=flags|8388608;HEAP32[SDL.screen>>2]=flags}Browser.updateCanvasDimensions(Module["canvas"]);Browser.updateResizeListeners()},setWindowedCanvasSize:function(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>2];flags=flags&~8388608;HEAP32[SDL.screen>>2]=flags}Browser.updateCanvasDimensions(Module["canvas"]);Browser.updateResizeListeners()},updateCanvasDimensions:function(canvas,wNative,hNative){if(wNative&&hNative){canvas.widthNative=wNative;canvas.heightNative=hNative}else{wNative=canvas.widthNative;hNative=canvas.heightNative}var w=wNative;var h=hNative;if(Module["forcedAspectRatio"]&&Module["forcedAspectRatio"]>0){if(w/h<Module["forcedAspectRatio"]){w=Math.round(h*Module["forcedAspectRatio"])}else{h=Math.round(w/Module["forcedAspectRatio"])}}if((document["fullscreenElement"]||document["mozFullScreenElement"]||document["msFullscreenElement"]||document["webkitFullscreenElement"]||document["webkitCurrentFullScreenElement"])===canvas.parentNode&&typeof screen!="undefined"){var factor=Math.min(screen.width/w,screen.height/h);w=Math.round(w*factor);h=Math.round(h*factor)}if(Browser.resizeCanvas){if(canvas.width!=w)canvas.width=w;if(canvas.height!=h)canvas.height=h;if(typeof canvas.style!="undefined"){canvas.style.removeProperty("width");canvas.style.removeProperty("height")}}else{if(canvas.width!=wNative)canvas.width=wNative;if(canvas.height!=hNative)canvas.height=hNative;if(typeof canvas.style!="undefined"){if(w!=wNative||h!=hNative){canvas.style.setProperty("width",w+"px","important");canvas.style.setProperty("height",h+"px","important")}else{canvas.style.removeProperty("width");canvas.style.removeProperty("height")}}}},wgetRequests:{},nextWgetRequestHandle:0,getNextWgetRequestHandle:function(){var handle=Browser.nextWgetRequestHandle;Browser.nextWgetRequestHandle++;return handle}};function _emscripten_set_main_loop_timing(mode,value){Browser.mainLoop.timingMode=mode;Browser.mainLoop.timingValue=value;if(!Browser.mainLoop.func){return 1}if(mode==0){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setTimeout(){var timeUntilNextTick=Math.max(0,Browser.mainLoop.tickStartTime+value-_emscripten_get_now())|0;setTimeout(Browser.mainLoop.runner,timeUntilNextTick)};Browser.mainLoop.method="timeout"}else if(mode==1){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_rAF(){Browser.requestAnimationFrame(Browser.mainLoop.runner)};Browser.mainLoop.method="rAF"}else if(mode==2){if(typeof setImmediate==="undefined"){var setImmediates=[];var emscriptenMainLoopMessageId="setimmediate";var Browser_setImmediate_messageHandler=function(event){if(event.data===emscriptenMainLoopMessageId||event.data.target===emscriptenMainLoopMessageId){event.stopPropagation();setImmediates.shift()()}};addEventListener("message",Browser_setImmediate_messageHandler,true);setImmediate=function Browser_emulated_setImmediate(func){setImmediates.push(func);if(ENVIRONMENT_IS_WORKER){if(Module["setImmediates"]===undefined)Module["setImmediates"]=[];Module["setImmediates"].push(func);postMessage({target:emscriptenMainLoopMessageId})}else postMessage(emscriptenMainLoopMessageId,"*")}}Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setImmediate(){setImmediate(Browser.mainLoop.runner)};Browser.mainLoop.method="immediate"}return 0}var _emscripten_get_now;if(ENVIRONMENT_IS_NODE){_emscripten_get_now=function(){var t=process["hrtime"]();return t[0]*1e3+t[1]/1e6}}else if(typeof dateNow!=="undefined"){_emscripten_get_now=dateNow}else _emscripten_get_now=function(){return performance.now()};function setMainLoop(browserIterationFunc,fps,simulateInfiniteLoop,arg,noSetTiming){noExitRuntime=true;assert(!Browser.mainLoop.func,"emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters.");Browser.mainLoop.func=browserIterationFunc;Browser.mainLoop.arg=arg;var thisMainLoopId=Browser.mainLoop.currentlyRunningMainloop;Browser.mainLoop.runner=function Browser_mainLoop_runner(){if(ABORT)return;if(Browser.mainLoop.queue.length>0){var start=Date.now();var blocker=Browser.mainLoop.queue.shift();blocker.func(blocker.arg);if(Browser.mainLoop.remainingBlockers){var remaining=Browser.mainLoop.remainingBlockers;var next=remaining%1==0?remaining-1:Math.floor(remaining);if(blocker.counted){Browser.mainLoop.remainingBlockers=next}else{next=next+.5;Browser.mainLoop.remainingBlockers=(8*remaining+next)/9}}console.log('main loop blocker "'+blocker.name+'" took '+(Date.now()-start)+" ms");Browser.mainLoop.updateStatus();if(thisMainLoopId<Browser.mainLoop.currentlyRunningMainloop)return;setTimeout(Browser.mainLoop.runner,0);return}if(thisMainLoopId<Browser.mainLoop.currentlyRunningMainloop)return;Browser.mainLoop.currentFrameNumber=Browser.mainLoop.currentFrameNumber+1|0;if(Browser.mainLoop.timingMode==1&&Browser.mainLoop.timingValue>1&&Browser.mainLoop.currentFrameNumber%Browser.mainLoop.timingValue!=0){Browser.mainLoop.scheduler();return}else if(Browser.mainLoop.timingMode==0){Browser.mainLoop.tickStartTime=_emscripten_get_now()}Browser.mainLoop.runIter(browserIterationFunc);if(thisMainLoopId<Browser.mainLoop.currentlyRunningMainloop)return;if(typeof SDL==="object"&&SDL.audio&&SDL.audio.queueNewAudioData)SDL.audio.queueNewAudioData();Browser.mainLoop.scheduler()};if(!noSetTiming){if(fps&&fps>0)_emscripten_set_main_loop_timing(0,1e3/fps);else _emscripten_set_main_loop_timing(1,1);Browser.mainLoop.scheduler()}if(simulateInfiniteLoop){throw"unwind"}}function _emscripten_set_main_loop(func,fps,simulateInfiniteLoop){var browserIterationFunc=wasmTable.get(func);setMainLoop(browserIterationFunc,fps,simulateInfiniteLoop)}function registerTouchEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.touchEvent)JSEvents.touchEvent=_malloc(1684);target=findEventTarget(target);var touchEventHandlerFunc=function(e){var touches={};var et=e.touches;for(var i=0;i<et.length;++i){var touch=et[i];touches[touch.identifier]=touch}et=e.changedTouches;for(var i=0;i<et.length;++i){var touch=et[i];touch.isChanged=1;touches[touch.identifier]=touch}et=e.targetTouches;for(var i=0;i<et.length;++i){touches[et[i].identifier].onTarget=1}var touchEvent=JSEvents.touchEvent;var idx=touchEvent>>2;HEAP32[idx+1]=e.ctrlKey;HEAP32[idx+2]=e.shiftKey;HEAP32[idx+3]=e.altKey;HEAP32[idx+4]=e.metaKey;idx+=5;var targetRect=getBoundingClientRect(target);var numTouches=0;for(var i in touches){var t=touches[i];HEAP32[idx+0]=t.identifier;HEAP32[idx+1]=t.screenX;HEAP32[idx+2]=t.screenY;HEAP32[idx+3]=t.clientX;HEAP32[idx+4]=t.clientY;HEAP32[idx+5]=t.pageX;HEAP32[idx+6]=t.pageY;HEAP32[idx+7]=t.isChanged;HEAP32[idx+8]=t.onTarget;HEAP32[idx+9]=t.clientX-targetRect.left;HEAP32[idx+10]=t.clientY-targetRect.top;idx+=13;if(++numTouches>31){break}}HEAP32[touchEvent>>2]=numTouches;if(wasmTable.get(callbackfunc)(eventTypeId,touchEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:eventTypeString=="touchstart"||eventTypeString=="touchend",eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:touchEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_touchcancel_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerTouchEventCallback(target,userData,useCapture,callbackfunc,25,"touchcancel",targetThread);return 0}function _emscripten_set_touchend_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerTouchEventCallback(target,userData,useCapture,callbackfunc,23,"touchend",targetThread);return 0}function _emscripten_set_touchmove_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerTouchEventCallback(target,userData,useCapture,callbackfunc,24,"touchmove",targetThread);return 0}function _emscripten_set_touchstart_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerTouchEventCallback(target,userData,useCapture,callbackfunc,22,"touchstart",targetThread);return 0}function _emscripten_thread_sleep(msecs){var start=_emscripten_get_now();while(_emscripten_get_now()-start<msecs){}}function _exit(status){exit(status)}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_read(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doReadv(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var stream=SYSCALLS.getStreamFromFD(fd);var HIGH_OFFSET=4294967296;var offset=offset_high*HIGH_OFFSET+(offset_low>>>0);var DOUBLE_LIMIT=9007199254740992;if(offset<=-DOUBLE_LIMIT||offset>=DOUBLE_LIMIT){return-61}FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doWritev(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _glActiveTexture(x0){GLctx["activeTexture"](x0)}function _glAttachShader(program,shader){GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _glBindAttribLocation(program,index,name){GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))}function _glBindBuffer(target,buffer){GLctx.bindBuffer(target,GL.buffers[buffer])}function _glBindTexture(target,texture){GLctx.bindTexture(target,GL.textures[texture])}function _glBlendFunc(x0,x1){GLctx["blendFunc"](x0,x1)}function _glBufferData(target,size,data,usage){GLctx.bufferData(target,data?HEAPU8.subarray(data,data+size):size,usage)}function _glBufferSubData(target,offset,size,data){GLctx.bufferSubData(target,offset,HEAPU8.subarray(data,data+size))}function _glClear(x0){GLctx["clear"](x0)}function _glClearColor(x0,x1,x2,x3){GLctx["clearColor"](x0,x1,x2,x3)}function _glClearDepthf(x0){GLctx["clearDepth"](x0)}function _glCompileShader(shader){GLctx.compileShader(GL.shaders[shader])}function _glCompressedTexImage2D(target,level,internalFormat,width,height,border,imageSize,data){GLctx["compressedTexImage2D"](target,level,internalFormat,width,height,border,data?HEAPU8.subarray(data,data+imageSize):null)}function _glCreateProgram(){var id=GL.getNewId(GL.programs);var program=GLctx.createProgram();program.name=id;GL.programs[id]=program;return id}function _glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}function _glCullFace(x0){GLctx["cullFace"](x0)}function _glDeleteBuffers(n,buffers){for(var i=0;i<n;i++){var id=HEAP32[buffers+i*4>>2];var buffer=GL.buffers[id];if(!buffer)continue;GLctx.deleteBuffer(buffer);buffer.name=0;GL.buffers[id]=null}}function _glDeleteProgram(id){if(!id)return;var program=GL.programs[id];if(!program){GL.recordError(1281);return}GLctx.deleteProgram(program);program.name=0;GL.programs[id]=null;GL.programInfos[id]=null}function _glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}function _glDeleteTextures(n,textures){for(var i=0;i<n;i++){var id=HEAP32[textures+i*4>>2];var texture=GL.textures[id];if(!texture)continue;GLctx.deleteTexture(texture);texture.name=0;GL.textures[id]=null}}function _glDepthFunc(x0){GLctx["depthFunc"](x0)}function _glDetachShader(program,shader){GLctx.detachShader(GL.programs[program],GL.shaders[shader])}function _glDisable(x0){GLctx["disable"](x0)}function _glDisableVertexAttribArray(index){GLctx.disableVertexAttribArray(index)}function _glDrawArrays(mode,first,count){GLctx.drawArrays(mode,first,count)}function _glDrawElements(mode,count,type,indices){GLctx.drawElements(mode,count,type,indices)}function _glEnable(x0){GLctx["enable"](x0)}function _glEnableVertexAttribArray(index){GLctx.enableVertexAttribArray(index)}function _glFrontFace(x0){GLctx["frontFace"](x0)}function _glGenBuffers(n,buffers){__glGenObject(n,buffers,"createBuffer",GL.buffers)}function _glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures)}function _glGetAttribLocation(program,name){return GLctx.getAttribLocation(GL.programs[program],UTF8ToString(name))}function _glGetFloatv(name_,p){emscriptenWebGLGet(name_,p,2)}function _glGetProgramInfoLog(program,maxLength,length,infoLog){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _glGetProgramiv(program,pname,p){if(!p){GL.recordError(1281);return}if(program>=GL.counter){GL.recordError(1281);return}var ptable=GL.programInfos[program];if(!ptable){GL.recordError(1282);return}if(pname==35716){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";HEAP32[p>>2]=log.length+1}else if(pname==35719){HEAP32[p>>2]=ptable.maxUniformLength}else if(pname==35722){if(ptable.maxAttributeLength==-1){program=GL.programs[program];var numAttribs=GLctx.getProgramParameter(program,35721);ptable.maxAttributeLength=0;for(var i=0;i<numAttribs;++i){var activeAttrib=GLctx.getActiveAttrib(program,i);ptable.maxAttributeLength=Math.max(ptable.maxAttributeLength,activeAttrib.name.length+1)}}HEAP32[p>>2]=ptable.maxAttributeLength}else if(pname==35381){if(ptable.maxUniformBlockNameLength==-1){program=GL.programs[program];var numBlocks=GLctx.getProgramParameter(program,35382);ptable.maxUniformBlockNameLength=0;for(var i=0;i<numBlocks;++i){var activeBlockName=GLctx.getActiveUniformBlockName(program,i);ptable.maxUniformBlockNameLength=Math.max(ptable.maxUniformBlockNameLength,activeBlockName.length+1)}}HEAP32[p>>2]=ptable.maxUniformBlockNameLength}else{HEAP32[p>>2]=GLctx.getProgramParameter(GL.programs[program],pname)}}function _glGetShaderInfoLog(shader,maxLength,length,infoLog){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _glGetShaderiv(shader,pname,p){if(!p){GL.recordError(1281);return}if(pname==35716){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var logLength=log?log.length+1:0;HEAP32[p>>2]=logLength}else if(pname==35720){var source=GLctx.getShaderSource(GL.shaders[shader]);var sourceLength=source?source.length+1:0;HEAP32[p>>2]=sourceLength}else{HEAP32[p>>2]=GLctx.getShaderParameter(GL.shaders[shader],pname)}}function _glGetString(name_){if(GL.stringCache[name_])return GL.stringCache[name_];var ret;switch(name_){case 7939:var exts=GLctx.getSupportedExtensions()||[];exts=exts.concat(exts.map(function(e){return"GL_"+e}));ret=stringToNewUTF8(exts.join(" "));break;case 7936:case 7937:case 37445:case 37446:var s=GLctx.getParameter(name_);if(!s){GL.recordError(1280)}ret=stringToNewUTF8(s);break;case 7938:var glVersion=GLctx.getParameter(7938);{glVersion="OpenGL ES 2.0 ("+glVersion+")"}ret=stringToNewUTF8(glVersion);break;case 35724:var glslVersion=GLctx.getParameter(35724);var ver_re=/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/;var ver_num=glslVersion.match(ver_re);if(ver_num!==null){if(ver_num[1].length==3)ver_num[1]=ver_num[1]+"0";glslVersion="OpenGL ES GLSL ES "+ver_num[1]+" ("+glslVersion+")"}ret=stringToNewUTF8(glslVersion);break;default:GL.recordError(1280);return 0}GL.stringCache[name_]=ret;return ret}function _glGetUniformLocation(program,name){name=UTF8ToString(name);var arrayIndex=0;if(name[name.length-1]=="]"){var leftBrace=name.lastIndexOf("[");arrayIndex=name[leftBrace+1]!="]"?jstoi_q(name.slice(leftBrace+1)):0;name=name.slice(0,leftBrace)}var uniformInfo=GL.programInfos[program]&&GL.programInfos[program].uniforms[name];if(uniformInfo&&arrayIndex>=0&&arrayIndex<uniformInfo[0]){return uniformInfo[1]+arrayIndex}else{return-1}}function _glLinkProgram(program){GLctx.linkProgram(GL.programs[program]);GL.populateUniformTable(program)}function _glPixelStorei(pname,param){if(pname==3317){GL.unpackAlignment=param}GLctx.pixelStorei(pname,param)}function _glReadPixels(x,y,width,height,format,type,pixels){var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);return}GLctx.readPixels(x,y,width,height,format,type,pixelData)}function _glShaderSource(shader,count,string,length){var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}function _glTexImage2D(target,level,internalFormat,width,height,border,format,type,pixels){GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels?emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat):null)}function _glTexParameteri(x0,x1,x2){GLctx["texParameteri"](x0,x1,x2)}function _glUniform1i(location,v0){GLctx.uniform1i(GL.uniforms[location],v0)}function _glUniform4f(location,v0,v1,v2,v3){GLctx.uniform4f(GL.uniforms[location],v0,v1,v2,v3)}function _glUniformMatrix4fv(location,count,transpose,value){if(count<=18){var view=miniTempWebGLFloatBuffers[16*count-1];var heap=HEAPF32;value>>=2;for(var i=0;i<16*count;i+=16){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3];view[i+4]=heap[dst+4];view[i+5]=heap[dst+5];view[i+6]=heap[dst+6];view[i+7]=heap[dst+7];view[i+8]=heap[dst+8];view[i+9]=heap[dst+9];view[i+10]=heap[dst+10];view[i+11]=heap[dst+11];view[i+12]=heap[dst+12];view[i+13]=heap[dst+13];view[i+14]=heap[dst+14];view[i+15]=heap[dst+15]}}else{var view=HEAPF32.subarray(value>>2,value+count*64>>2)}GLctx.uniformMatrix4fv(GL.uniforms[location],!!transpose,view)}function _glUseProgram(program){GLctx.useProgram(GL.programs[program])}function _glVertexAttribPointer(index,size,type,normalized,stride,ptr){GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}function _glViewport(x0,x1,x2,x3){GLctx["viewport"](x0,x1,x2,x3)}function GLFW_Window(id,width,height,title,monitor,share){this.id=id;this.x=0;this.y=0;this.fullscreen=false;this.storedX=0;this.storedY=0;this.width=width;this.height=height;this.storedWidth=width;this.storedHeight=height;this.title=title;this.monitor=monitor;this.share=share;this.attributes=GLFW.hints;this.inputModes={208897:212993,208898:0,208899:0};this.buttons=0;this.keys=new Array;this.domKeys=new Array;this.shouldClose=0;this.title=null;this.windowPosFunc=null;this.windowSizeFunc=null;this.windowCloseFunc=null;this.windowRefreshFunc=null;this.windowFocusFunc=null;this.windowIconifyFunc=null;this.framebufferSizeFunc=null;this.mouseButtonFunc=null;this.cursorPosFunc=null;this.cursorEnterFunc=null;this.scrollFunc=null;this.dropFunc=null;this.keyFunc=null;this.charFunc=null;this.userptr=null}var GLFW={WindowFromId:function(id){if(id<=0||!GLFW.windows)return null;return GLFW.windows[id-1]},joystickFunc:null,errorFunc:null,monitorFunc:null,active:null,windows:null,monitors:null,monitorString:null,versionString:null,initialTime:null,extensions:null,hints:null,defaultHints:{131073:0,131074:0,131075:1,131076:1,131077:1,135169:8,135170:8,135171:8,135172:8,135173:24,135174:8,135175:0,135176:0,135177:0,135178:0,135179:0,135180:0,135181:0,135182:0,135183:0,139265:196609,139266:1,139267:0,139268:0,139269:0,139270:0,139271:0,139272:0},DOMToGLFWKeyCode:function(keycode){switch(keycode){case 32:return 32;case 222:return 39;case 188:return 44;case 173:return 45;case 189:return 45;case 190:return 46;case 191:return 47;case 48:return 48;case 49:return 49;case 50:return 50;case 51:return 51;case 52:return 52;case 53:return 53;case 54:return 54;case 55:return 55;case 56:return 56;case 57:return 57;case 59:return 59;case 61:return 61;case 187:return 61;case 65:return 65;case 66:return 66;case 67:return 67;case 68:return 68;case 69:return 69;case 70:return 70;case 71:return 71;case 72:return 72;case 73:return 73;case 74:return 74;case 75:return 75;case 76:return 76;case 77:return 77;case 78:return 78;case 79:return 79;case 80:return 80;case 81:return 81;case 82:return 82;case 83:return 83;case 84:return 84;case 85:return 85;case 86:return 86;case 87:return 87;case 88:return 88;case 89:return 89;case 90:return 90;case 219:return 91;case 220:return 92;case 221:return 93;case 192:return 94;case 27:return 256;case 13:return 257;case 9:return 258;case 8:return 259;case 45:return 260;case 46:return 261;case 39:return 262;case 37:return 263;case 40:return 264;case 38:return 265;case 33:return 266;case 34:return 267;case 36:return 268;case 35:return 269;case 20:return 280;case 145:return 281;case 144:return 282;case 44:return 283;case 19:return 284;case 112:return 290;case 113:return 291;case 114:return 292;case 115:return 293;case 116:return 294;case 117:return 295;case 118:return 296;case 119:return 297;case 120:return 298;case 121:return 299;case 122:return 300;case 123:return 301;case 124:return 302;case 125:return 303;case 126:return 304;case 127:return 305;case 128:return 306;case 129:return 307;case 130:return 308;case 131:return 309;case 132:return 310;case 133:return 311;case 134:return 312;case 135:return 313;case 136:return 314;case 96:return 320;case 97:return 321;case 98:return 322;case 99:return 323;case 100:return 324;case 101:return 325;case 102:return 326;case 103:return 327;case 104:return 328;case 105:return 329;case 110:return 330;case 111:return 331;case 106:return 332;case 109:return 333;case 107:return 334;case 16:return 340;case 17:return 341;case 18:return 342;case 91:return 343;case 93:return 348;default:return-1}},getModBits:function(win){var mod=0;if(win.keys[340])mod|=1;if(win.keys[341])mod|=2;if(win.keys[342])mod|=4;if(win.keys[343])mod|=8;return mod},onKeyPress:function(event){if(!GLFW.active||!GLFW.active.charFunc)return;if(event.ctrlKey||event.metaKey)return;var charCode=event.charCode;if(charCode==0||charCode>=0&&charCode<=31)return;wasmTable.get(GLFW.active.charFunc)(GLFW.active.id,charCode)},onKeyChanged:function(keyCode,status){if(!GLFW.active)return;var key=GLFW.DOMToGLFWKeyCode(keyCode);if(key==-1)return;var repeat=status&&GLFW.active.keys[key];GLFW.active.keys[key]=status;GLFW.active.domKeys[keyCode]=status;if(!GLFW.active.keyFunc)return;if(repeat)status=2;wasmTable.get(GLFW.active.keyFunc)(GLFW.active.id,key,keyCode,status,GLFW.getModBits(GLFW.active))},onGamepadConnected:function(event){GLFW.refreshJoysticks()},onGamepadDisconnected:function(event){GLFW.refreshJoysticks()},onKeydown:function(event){GLFW.onKeyChanged(event.keyCode,1);if(event.keyCode===8||event.keyCode===9){event.preventDefault()}},onKeyup:function(event){GLFW.onKeyChanged(event.keyCode,0)},onBlur:function(event){if(!GLFW.active)return;for(var i=0;i<GLFW.active.domKeys.length;++i){if(GLFW.active.domKeys[i]){GLFW.onKeyChanged(i,0)}}},onMousemove:function(event){if(!GLFW.active)return;Browser.calculateMouseEvent(event);if(event.target!=Module["canvas"]||!GLFW.active.cursorPosFunc)return;wasmTable.get(GLFW.active.cursorPosFunc)(GLFW.active.id,Browser.mouseX,Browser.mouseY)},DOMToGLFWMouseButton:function(event){var eventButton=event["button"];if(eventButton>0){if(eventButton==1){eventButton=2}else{eventButton=1}}return eventButton},onMouseenter:function(event){if(!GLFW.active)return;if(event.target!=Module["canvas"]||!GLFW.active.cursorEnterFunc)return;wasmTable.get(GLFW.active.cursorEnterFunc)(GLFW.active.id,1)},onMouseleave:function(event){if(!GLFW.active)return;if(event.target!=Module["canvas"]||!GLFW.active.cursorEnterFunc)return;wasmTable.get(GLFW.active.cursorEnterFunc)(GLFW.active.id,0)},onMouseButtonChanged:function(event,status){if(!GLFW.active)return;Browser.calculateMouseEvent(event);if(event.target!=Module["canvas"])return;var eventButton=GLFW.DOMToGLFWMouseButton(event);if(status==1){GLFW.active.buttons|=1<<eventButton;try{event.target.setCapture()}catch(e){}}else{GLFW.active.buttons&=~(1<<eventButton)}if(!GLFW.active.mouseButtonFunc)return;wasmTable.get(GLFW.active.mouseButtonFunc)(GLFW.active.id,eventButton,status,GLFW.getModBits(GLFW.active))},onMouseButtonDown:function(event){if(!GLFW.active)return;GLFW.onMouseButtonChanged(event,1)},onMouseButtonUp:function(event){if(!GLFW.active)return;GLFW.onMouseButtonChanged(event,0)},onMouseWheel:function(event){var delta=-Browser.getMouseWheelDelta(event);delta=delta==0?0:delta>0?Math.max(delta,1):Math.min(delta,-1);GLFW.wheelPos+=delta;if(!GLFW.active||!GLFW.active.scrollFunc||event.target!=Module["canvas"])return;var sx=0;var sy=0;if(event.type=="mousewheel"){sx=event.wheelDeltaX;sy=event.wheelDeltaY}else{sx=event.deltaX;sy=event.deltaY}wasmTable.get(GLFW.active.scrollFunc)(GLFW.active.id,sx,sy);event.preventDefault()},onCanvasResize:function(width,height){if(!GLFW.active)return;var resizeNeeded=true;if(document["fullscreen"]||document["fullScreen"]||document["mozFullScreen"]||document["webkitIsFullScreen"]){GLFW.active.storedX=GLFW.active.x;GLFW.active.storedY=GLFW.active.y;GLFW.active.storedWidth=GLFW.active.width;GLFW.active.storedHeight=GLFW.active.height;GLFW.active.x=GLFW.active.y=0;GLFW.active.width=screen.width;GLFW.active.height=screen.height;GLFW.active.fullscreen=true}else if(GLFW.active.fullscreen==true){GLFW.active.x=GLFW.active.storedX;GLFW.active.y=GLFW.active.storedY;GLFW.active.width=GLFW.active.storedWidth;GLFW.active.height=GLFW.active.storedHeight;GLFW.active.fullscreen=false}else if(GLFW.active.width!=width||GLFW.active.height!=height){GLFW.active.width=width;GLFW.active.height=height}else{resizeNeeded=false}if(resizeNeeded){Browser.setCanvasSize(GLFW.active.width,GLFW.active.height,true);GLFW.onWindowSizeChanged();GLFW.onFramebufferSizeChanged()}},onWindowSizeChanged:function(){if(!GLFW.active)return;if(!GLFW.active.windowSizeFunc)return;wasmTable.get(GLFW.active.windowSizeFunc)(GLFW.active.id,GLFW.active.width,GLFW.active.height)},onFramebufferSizeChanged:function(){if(!GLFW.active)return;if(!GLFW.active.framebufferSizeFunc)return;wasmTable.get(GLFW.active.framebufferSizeFunc)(GLFW.active.id,GLFW.active.width,GLFW.active.height)},getTime:function(){return _emscripten_get_now()/1e3},setWindowTitle:function(winid,title){var win=GLFW.WindowFromId(winid);if(!win)return;win.title=UTF8ToString(title);if(GLFW.active.id==win.id){document.title=win.title}},setJoystickCallback:function(cbfun){GLFW.joystickFunc=cbfun;GLFW.refreshJoysticks()},joys:{},lastGamepadState:null,lastGamepadStateFrame:null,refreshJoysticks:function(){if(Browser.mainLoop.currentFrameNumber!==GLFW.lastGamepadStateFrame||!Browser.mainLoop.currentFrameNumber){GLFW.lastGamepadState=navigator.getGamepads?navigator.getGamepads():navigator.webkitGetGamepads?navigator.webkitGetGamepads:null;GLFW.lastGamepadStateFrame=Browser.mainLoop.currentFrameNumber;for(var joy=0;joy<GLFW.lastGamepadState.length;++joy){var gamepad=GLFW.lastGamepadState[joy];if(gamepad){if(!GLFW.joys[joy]){console.log("glfw joystick connected:",joy);GLFW.joys[joy]={id:allocate(intArrayFromString(gamepad.id),ALLOC_NORMAL),buttonsCount:gamepad.buttons.length,axesCount:gamepad.axes.length,buttons:allocate(new Array(gamepad.buttons.length),ALLOC_NORMAL),axes:allocate(new Array(gamepad.axes.length*4),ALLOC_NORMAL)};if(GLFW.joystickFunc){wasmTable.get(GLFW.joystickFunc)(joy,262145)}}var data=GLFW.joys[joy];for(var i=0;i<gamepad.buttons.length;++i){setValue(data.buttons+i,gamepad.buttons[i].pressed,"i8")}for(var i=0;i<gamepad.axes.length;++i){setValue(data.axes+i*4,gamepad.axes[i],"float")}}else{if(GLFW.joys[joy]){console.log("glfw joystick disconnected",joy);if(GLFW.joystickFunc){wasmTable.get(GLFW.joystickFunc)(joy,262146)}_free(GLFW.joys[joy].id);_free(GLFW.joys[joy].buttons);_free(GLFW.joys[joy].axes);delete GLFW.joys[joy]}}}}},setKeyCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.keyFunc;win.keyFunc=cbfun;return prevcbfun},setCharCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.charFunc;win.charFunc=cbfun;return prevcbfun},setMouseButtonCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.mouseButtonFunc;win.mouseButtonFunc=cbfun;return prevcbfun},setCursorPosCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.cursorPosFunc;win.cursorPosFunc=cbfun;return prevcbfun},setScrollCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.scrollFunc;win.scrollFunc=cbfun;return prevcbfun},setDropCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.dropFunc;win.dropFunc=cbfun;return prevcbfun},onDrop:function(event){if(!GLFW.active||!GLFW.active.dropFunc)return;if(!event.dataTransfer||!event.dataTransfer.files||event.dataTransfer.files.length==0)return;event.preventDefault();var filenames=allocate(new Array(event.dataTransfer.files.length*4),ALLOC_NORMAL);var filenamesArray=[];var count=event.dataTransfer.files.length;var written=0;var drop_dir=".glfw_dropped_files";FS.createPath("/",drop_dir);function save(file){var path="/"+drop_dir+"/"+file.name.replace(/\//g,"_");var reader=new FileReader;reader.onloadend=function(e){if(reader.readyState!=2){++written;console.log("failed to read dropped file: "+file.name+": "+reader.error);return}var data=e.target.result;FS.writeFile(path,new Uint8Array(data));if(++written===count){wasmTable.get(GLFW.active.dropFunc)(GLFW.active.id,count,filenames);for(var i=0;i<filenamesArray.length;++i){_free(filenamesArray[i])}_free(filenames)}};reader.readAsArrayBuffer(file);var filename=allocate(intArrayFromString(path),ALLOC_NORMAL);filenamesArray.push(filename);setValue(filenames+i*4,filename,"i8*")}for(var i=0;i<count;++i){save(event.dataTransfer.files[i])}return false},onDragover:function(event){if(!GLFW.active||!GLFW.active.dropFunc)return;event.preventDefault();return false},setWindowSizeCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowSizeFunc;win.windowSizeFunc=cbfun;return prevcbfun},setWindowCloseCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowCloseFunc;win.windowCloseFunc=cbfun;return prevcbfun},setWindowRefreshCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowRefreshFunc;win.windowRefreshFunc=cbfun;return prevcbfun},onClickRequestPointerLock:function(e){if(!Browser.pointerLock&&Module["canvas"].requestPointerLock){Module["canvas"].requestPointerLock();e.preventDefault()}},setInputMode:function(winid,mode,value){var win=GLFW.WindowFromId(winid);if(!win)return;switch(mode){case 208897:{switch(value){case 212993:{win.inputModes[mode]=value;Module["canvas"].removeEventListener("click",GLFW.onClickRequestPointerLock,true);Module["canvas"].exitPointerLock();break}case 212994:{console.log("glfwSetInputMode called with GLFW_CURSOR_HIDDEN value not implemented.");break}case 212995:{win.inputModes[mode]=value;Module["canvas"].addEventListener("click",GLFW.onClickRequestPointerLock,true);Module["canvas"].requestPointerLock();break}default:{console.log("glfwSetInputMode called with unknown value parameter value: "+value+".");break}}break}case 208898:{console.log("glfwSetInputMode called with GLFW_STICKY_KEYS mode not implemented.");break}case 208899:{console.log("glfwSetInputMode called with GLFW_STICKY_MOUSE_BUTTONS mode not implemented.");break}default:{console.log("glfwSetInputMode called with unknown mode parameter value: "+mode+".");break}}},getKey:function(winid,key){var win=GLFW.WindowFromId(winid);if(!win)return 0;return win.keys[key]},getMouseButton:function(winid,button){var win=GLFW.WindowFromId(winid);if(!win)return 0;return(win.buttons&1<<button)>0},getCursorPos:function(winid,x,y){setValue(x,Browser.mouseX,"double");setValue(y,Browser.mouseY,"double")},getMousePos:function(winid,x,y){setValue(x,Browser.mouseX,"i32");setValue(y,Browser.mouseY,"i32")},setCursorPos:function(winid,x,y){},getWindowPos:function(winid,x,y){var wx=0;var wy=0;var win=GLFW.WindowFromId(winid);if(win){wx=win.x;wy=win.y}if(x){setValue(x,wx,"i32")}if(y){setValue(y,wy,"i32")}},setWindowPos:function(winid,x,y){var win=GLFW.WindowFromId(winid);if(!win)return;win.x=x;win.y=y},getWindowSize:function(winid,width,height){var ww=0;var wh=0;var win=GLFW.WindowFromId(winid);if(win){ww=win.width;wh=win.height}if(width){setValue(width,ww,"i32")}if(height){setValue(height,wh,"i32")}},setWindowSize:function(winid,width,height){var win=GLFW.WindowFromId(winid);if(!win)return;if(GLFW.active.id==win.id){if(width==screen.width&&height==screen.height){Browser.requestFullscreen()}else{Browser.exitFullscreen();Browser.setCanvasSize(width,height);win.width=width;win.height=height}}if(!win.windowSizeFunc)return;wasmTable.get(win.windowSizeFunc)(win.id,width,height)},createWindow:function(width,height,title,monitor,share){var i,id;for(i=0;i<GLFW.windows.length&&GLFW.windows[i]!==null;i++){}if(i>0)throw"glfwCreateWindow only supports one window at time currently";id=i+1;if(width<=0||height<=0)return 0;if(monitor){Browser.requestFullscreen()}else{Browser.setCanvasSize(width,height)}for(i=0;i<GLFW.windows.length&&GLFW.windows[i]==null;i++){}var useWebGL=GLFW.hints[139265]>0;if(i==GLFW.windows.length){if(useWebGL){var contextAttributes={antialias:GLFW.hints[135181]>1,depth:GLFW.hints[135173]>0,stencil:GLFW.hints[135174]>0,alpha:GLFW.hints[135172]>0};Module.ctx=Browser.createContext(Module["canvas"],true,true,contextAttributes)}else{Browser.init()}}if(!Module.ctx&&useWebGL)return 0;var win=new GLFW_Window(id,width,height,title,monitor,share);if(id-1==GLFW.windows.length){GLFW.windows.push(win)}else{GLFW.windows[id-1]=win}GLFW.active=win;return win.id},destroyWindow:function(winid){var win=GLFW.WindowFromId(winid);if(!win)return;if(win.windowCloseFunc)wasmTable.get(win.windowCloseFunc)(win.id);GLFW.windows[win.id-1]=null;if(GLFW.active.id==win.id)GLFW.active=null;for(var i=0;i<GLFW.windows.length;i++)if(GLFW.windows[i]!==null)return;Module.ctx=Browser.destroyContext(Module["canvas"],true,true)},swapBuffers:function(winid){},GLFW2ParamToGLFW3Param:function(param){var table={196609:0,196610:0,196611:0,196612:0,196613:0,196614:0,131073:0,131074:0,131075:0,131076:0,131077:135169,131078:135170,131079:135171,131080:135172,131081:135173,131082:135174,131083:135183,131084:135175,131085:135176,131086:135177,131087:135178,131088:135179,131089:135180,131090:0,131091:135181,131092:139266,131093:139267,131094:139270,131095:139271,131096:139272};return table[param]}};function _glfwCreateWindow(width,height,title,monitor,share){return GLFW.createWindow(width,height,title,monitor,share)}function _glfwDefaultWindowHints(){GLFW.hints=GLFW.defaultHints}function _glfwDestroyWindow(winid){return GLFW.destroyWindow(winid)}function _glfwGetPrimaryMonitor(){return 1}function _glfwGetTime(){return GLFW.getTime()-GLFW.initialTime}function _glfwGetVideoModes(monitor,count){setValue(count,0,"i32");return 0}function _glfwInit(){if(GLFW.windows)return 1;GLFW.initialTime=GLFW.getTime();GLFW.hints=GLFW.defaultHints;GLFW.windows=new Array;GLFW.active=null;window.addEventListener("gamepadconnected",GLFW.onGamepadConnected,true);window.addEventListener("gamepaddisconnected",GLFW.onGamepadDisconnected,true);window.addEventListener("keydown",GLFW.onKeydown,true);window.addEventListener("keypress",GLFW.onKeyPress,true);window.addEventListener("keyup",GLFW.onKeyup,true);window.addEventListener("blur",GLFW.onBlur,true);Module["canvas"].addEventListener("touchmove",GLFW.onMousemove,true);Module["canvas"].addEventListener("touchstart",GLFW.onMouseButtonDown,true);Module["canvas"].addEventListener("touchcancel",GLFW.onMouseButtonUp,true);Module["canvas"].addEventListener("touchend",GLFW.onMouseButtonUp,true);Module["canvas"].addEventListener("mousemove",GLFW.onMousemove,true);Module["canvas"].addEventListener("mousedown",GLFW.onMouseButtonDown,true);Module["canvas"].addEventListener("mouseup",GLFW.onMouseButtonUp,true);Module["canvas"].addEventListener("wheel",GLFW.onMouseWheel,true);Module["canvas"].addEventListener("mousewheel",GLFW.onMouseWheel,true);Module["canvas"].addEventListener("mouseenter",GLFW.onMouseenter,true);Module["canvas"].addEventListener("mouseleave",GLFW.onMouseleave,true);Module["canvas"].addEventListener("drop",GLFW.onDrop,true);Module["canvas"].addEventListener("dragover",GLFW.onDragover,true);Browser.resizeListeners.push(function(width,height){GLFW.onCanvasResize(width,height)});return 1}function _glfwMakeContextCurrent(winid){}function _glfwSetCharCallback(winid,cbfun){return GLFW.setCharCallback(winid,cbfun)}function _glfwSetCursorEnterCallback(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.cursorEnterFunc;win.cursorEnterFunc=cbfun;return prevcbfun}function _glfwSetCursorPosCallback(winid,cbfun){return GLFW.setCursorPosCallback(winid,cbfun)}function _glfwSetDropCallback(winid,cbfun){return GLFW.setDropCallback(winid,cbfun)}function _glfwSetErrorCallback(cbfun){var prevcbfun=GLFW.errorFunc;GLFW.errorFunc=cbfun;return prevcbfun}function _glfwSetKeyCallback(winid,cbfun){return GLFW.setKeyCallback(winid,cbfun)}function _glfwSetMouseButtonCallback(winid,cbfun){return GLFW.setMouseButtonCallback(winid,cbfun)}function _glfwSetScrollCallback(winid,cbfun){return GLFW.setScrollCallback(winid,cbfun)}function _glfwSetWindowFocusCallback(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowFocusFunc;win.windowFocusFunc=cbfun;return prevcbfun}function _glfwSetWindowIconifyCallback(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowIconifyFunc;win.windowIconifyFunc=cbfun;return prevcbfun}function _glfwSetWindowShouldClose(winid,value){var win=GLFW.WindowFromId(winid);if(!win)return;win.shouldClose=value}function _glfwSetWindowSizeCallback(winid,cbfun){return GLFW.setWindowSizeCallback(winid,cbfun)}function _glfwSwapBuffers(winid){GLFW.swapBuffers(winid)}function _glfwSwapInterval(interval){interval=Math.abs(interval);if(interval==0)_emscripten_set_main_loop_timing(0,0);else _emscripten_set_main_loop_timing(1,interval)}function _glfwTerminate(){window.removeEventListener("gamepadconnected",GLFW.onGamepadConnected,true);window.removeEventListener("gamepaddisconnected",GLFW.onGamepadDisconnected,true);window.removeEventListener("keydown",GLFW.onKeydown,true);window.removeEventListener("keypress",GLFW.onKeyPress,true);window.removeEventListener("keyup",GLFW.onKeyup,true);window.removeEventListener("blur",GLFW.onBlur,true);Module["canvas"].removeEventListener("touchmove",GLFW.onMousemove,true);Module["canvas"].removeEventListener("touchstart",GLFW.onMouseButtonDown,true);Module["canvas"].removeEventListener("touchcancel",GLFW.onMouseButtonUp,true);Module["canvas"].removeEventListener("touchend",GLFW.onMouseButtonUp,true);Module["canvas"].removeEventListener("mousemove",GLFW.onMousemove,true);Module["canvas"].removeEventListener("mousedown",GLFW.onMouseButtonDown,true);Module["canvas"].removeEventListener("mouseup",GLFW.onMouseButtonUp,true);Module["canvas"].removeEventListener("wheel",GLFW.onMouseWheel,true);Module["canvas"].removeEventListener("mousewheel",GLFW.onMouseWheel,true);Module["canvas"].removeEventListener("mouseenter",GLFW.onMouseenter,true);Module["canvas"].removeEventListener("mouseleave",GLFW.onMouseleave,true);Module["canvas"].removeEventListener("drop",GLFW.onDrop,true);Module["canvas"].removeEventListener("dragover",GLFW.onDragover,true);Module["canvas"].width=Module["canvas"].height=1;GLFW.windows=null;GLFW.active=null}function _glfwWindowHint(target,hint){GLFW.hints[target]=hint}function _time(ptr){var ret=Date.now()/1e3|0;if(ptr){HEAP32[ptr>>2]=ret}return ret}var FSNode=function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev};var readMode=292|73;var writeMode=146;Object.defineProperties(FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(val){val?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===writeMode},set:function(val){val?this.mode|=writeMode:this.mode&=~writeMode}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}});FS.FSNode=FSNode;FS.staticInit();var GLctx;for(var i=0;i<32;++i)tempFixedLengthArray.push(new Array(i));var miniTempWebGLFloatBuffersStorage=new Float32Array(288);for(var i=0;i<288;++i){miniTempWebGLFloatBuffers[i]=miniTempWebGLFloatBuffersStorage.subarray(0,i+1)}var __miniTempWebGLIntBuffersStorage=new Int32Array(288);for(var i=0;i<288;++i){__miniTempWebGLIntBuffers[i]=__miniTempWebGLIntBuffersStorage.subarray(0,i+1)}Module["requestFullscreen"]=function Module_requestFullscreen(lockPointer,resizeCanvas){Browser.requestFullscreen(lockPointer,resizeCanvas)};Module["requestAnimationFrame"]=function Module_requestAnimationFrame(func){Browser.requestAnimationFrame(func)};Module["setCanvasSize"]=function Module_setCanvasSize(width,height,noUpdates){Browser.setCanvasSize(width,height,noUpdates)};Module["pauseMainLoop"]=function Module_pauseMainLoop(){Browser.mainLoop.pause()};Module["resumeMainLoop"]=function Module_resumeMainLoop(){Browser.mainLoop.resume()};Module["getUserMedia"]=function Module_getUserMedia(){Browser.getUserMedia()};Module["createContext"]=function Module_createContext(canvas,useWebGL,setInModule,webGLContextAttributes){return Browser.createContext(canvas,useWebGL,setInModule,webGLContextAttributes)};function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var asmLibraryArg={"n":___assert_fail,"F":___sys_fcntl64,"Sa":___sys_ioctl,"Ta":___sys_open,"za":_emscripten_exit_pointerlock,"Z":_emscripten_get_element_css_size,"U":_emscripten_get_gamepad_status,"V":_emscripten_get_num_gamepads,"Hd":_emscripten_glActiveTexture,"Gd":_emscripten_glAttachShader,"N":_emscripten_glBeginQueryEXT,"Fd":_emscripten_glBindAttribLocation,"Ed":_emscripten_glBindBuffer,"Dd":_emscripten_glBindFramebuffer,"Cd":_emscripten_glBindRenderbuffer,"Bd":_emscripten_glBindTexture,"Pd":_emscripten_glBindVertexArrayOES,"zd":_emscripten_glBlendColor,"yd":_emscripten_glBlendEquation,"xd":_emscripten_glBlendEquationSeparate,"wd":_emscripten_glBlendFunc,"vd":_emscripten_glBlendFuncSeparate,"ud":_emscripten_glBufferData,"td":_emscripten_glBufferSubData,"sd":_emscripten_glCheckFramebufferStatus,"rd":_emscripten_glClear,"qd":_emscripten_glClearColor,"od":_emscripten_glClearDepthf,"nd":_emscripten_glClearStencil,"md":_emscripten_glColorMask,"ld":_emscripten_glCompileShader,"kd":_emscripten_glCompressedTexImage2D,"jd":_emscripten_glCompressedTexSubImage2D,"id":_emscripten_glCopyTexImage2D,"hd":_emscripten_glCopyTexSubImage2D,"gd":_emscripten_glCreateProgram,"fd":_emscripten_glCreateShader,"ed":_emscripten_glCullFace,"dd":_emscripten_glDeleteBuffers,"cd":_emscripten_glDeleteFramebuffers,"bd":_emscripten_glDeleteProgram,"P":_emscripten_glDeleteQueriesEXT,"ad":_emscripten_glDeleteRenderbuffers,"$c":_emscripten_glDeleteShader,"_c":_emscripten_glDeleteTextures,"Od":_emscripten_glDeleteVertexArraysOES,"Zc":_emscripten_glDepthFunc,"Yc":_emscripten_glDepthMask,"Xc":_emscripten_glDepthRangef,"Wc":_emscripten_glDetachShader,"Vc":_emscripten_glDisable,"Uc":_emscripten_glDisableVertexAttribArray,"Tc":_emscripten_glDrawArrays,"Kd":_emscripten_glDrawArraysInstancedANGLE,"Ld":_emscripten_glDrawBuffersWEBGL,"Sc":_emscripten_glDrawElements,"Jd":_emscripten_glDrawElementsInstancedANGLE,"Rc":_emscripten_glEnable,"Qc":_emscripten_glEnableVertexAttribArray,"M":_emscripten_glEndQueryEXT,"Pc":_emscripten_glFinish,"Oc":_emscripten_glFlush,"Nc":_emscripten_glFramebufferRenderbuffer,"Mc":_emscripten_glFramebufferTexture2D,"Lc":_emscripten_glFrontFace,"Kc":_emscripten_glGenBuffers,"Ic":_emscripten_glGenFramebuffers,"Q":_emscripten_glGenQueriesEXT,"Hc":_emscripten_glGenRenderbuffers,"Gc":_emscripten_glGenTextures,"Nd":_emscripten_glGenVertexArraysOES,"Jc":_emscripten_glGenerateMipmap,"Fc":_emscripten_glGetActiveAttrib,"Ec":_emscripten_glGetActiveUniform,"Dc":_emscripten_glGetAttachedShaders,"Bc":_emscripten_glGetAttribLocation,"Ac":_emscripten_glGetBooleanv,"zc":_emscripten_glGetBufferParameteriv,"yc":_emscripten_glGetError,"xc":_emscripten_glGetFloatv,"wc":_emscripten_glGetFramebufferAttachmentParameteriv,"vc":_emscripten_glGetIntegerv,"tc":_emscripten_glGetProgramInfoLog,"uc":_emscripten_glGetProgramiv,"Rd":_emscripten_glGetQueryObjecti64vEXT,"Td":_emscripten_glGetQueryObjectivEXT,"Qd":_emscripten_glGetQueryObjectui64vEXT,"Sd":_emscripten_glGetQueryObjectuivEXT,"Ud":_emscripten_glGetQueryivEXT,"sc":_emscripten_glGetRenderbufferParameteriv,"qc":_emscripten_glGetShaderInfoLog,"pc":_emscripten_glGetShaderPrecisionFormat,"oc":_emscripten_glGetShaderSource,"rc":_emscripten_glGetShaderiv,"nc":_emscripten_glGetString,"mc":_emscripten_glGetTexParameterfv,"lc":_emscripten_glGetTexParameteriv,"ic":_emscripten_glGetUniformLocation,"kc":_emscripten_glGetUniformfv,"jc":_emscripten_glGetUniformiv,"fc":_emscripten_glGetVertexAttribPointerv,"hc":_emscripten_glGetVertexAttribfv,"gc":_emscripten_glGetVertexAttribiv,"ec":_emscripten_glHint,"dc":_emscripten_glIsBuffer,"cc":_emscripten_glIsEnabled,"bc":_emscripten_glIsFramebuffer,"ac":_emscripten_glIsProgram,"O":_emscripten_glIsQueryEXT,"$b":_emscripten_glIsRenderbuffer,"_b":_emscripten_glIsShader,"Zb":_emscripten_glIsTexture,"Md":_emscripten_glIsVertexArrayOES,"Yb":_emscripten_glLineWidth,"Xb":_emscripten_glLinkProgram,"Wb":_emscripten_glPixelStorei,"Vb":_emscripten_glPolygonOffset,"L":_emscripten_glQueryCounterEXT,"Ub":_emscripten_glReadPixels,"Tb":_emscripten_glReleaseShaderCompiler,"Sb":_emscripten_glRenderbufferStorage,"Rb":_emscripten_glSampleCoverage,"Qb":_emscripten_glScissor,"Ob":_emscripten_glShaderBinary,"Nb":_emscripten_glShaderSource,"Mb":_emscripten_glStencilFunc,"Lb":_emscripten_glStencilFuncSeparate,"Kb":_emscripten_glStencilMask,"Jb":_emscripten_glStencilMaskSeparate,"Ib":_emscripten_glStencilOp,"Hb":_emscripten_glStencilOpSeparate,"Gb":_emscripten_glTexImage2D,"Fb":_emscripten_glTexParameterf,"Db":_emscripten_glTexParameterfv,"Cb":_emscripten_glTexParameteri,"Bb":_emscripten_glTexParameteriv,"Ab":_emscripten_glTexSubImage2D,"zb":_emscripten_glUniform1f,"yb":_emscripten_glUniform1fv,"xb":_emscripten_glUniform1i,"wb":_emscripten_glUniform1iv,"vb":_emscripten_glUniform2f,"ub":_emscripten_glUniform2fv,"sb":_emscripten_glUniform2i,"rb":_emscripten_glUniform2iv,"qb":_emscripten_glUniform3f,"pb":_emscripten_glUniform3fv,"ob":_emscripten_glUniform3i,"nb":_emscripten_glUniform3iv,"mb":_emscripten_glUniform4f,"lb":_emscripten_glUniform4fv,"kb":_emscripten_glUniform4i,"jb":_emscripten_glUniform4iv,"hb":_emscripten_glUniformMatrix2fv,"gb":_emscripten_glUniformMatrix3fv,"fb":_emscripten_glUniformMatrix4fv,"eb":_emscripten_glUseProgram,"db":_emscripten_glValidateProgram,"cb":_emscripten_glVertexAttrib1f,"bb":_emscripten_glVertexAttrib1fv,"ab":_emscripten_glVertexAttrib2f,"$a":_emscripten_glVertexAttrib2fv,"_a":_emscripten_glVertexAttrib3f,"Ya":_emscripten_glVertexAttrib3fv,"Xa":_emscripten_glVertexAttrib4f,"Wa":_emscripten_glVertexAttrib4fv,"Id":_emscripten_glVertexAttribDivisorANGLE,"Va":_emscripten_glVertexAttribPointer,"Ua":_emscripten_glViewport,"Na":_emscripten_memcpy_big,"Oa":_emscripten_resize_heap,"t":_emscripten_run_script,"W":_emscripten_sample_gamepad_data,"wa":_emscripten_set_click_callback_on_thread,"ya":_emscripten_set_fullscreenchange_callback_on_thread,"ra":_emscripten_set_gamepadconnected_callback_on_thread,"qa":_emscripten_set_gamepaddisconnected_callback_on_thread,"xa":_emscripten_set_keydown_callback_on_thread,"Wd":_emscripten_set_main_loop,"sa":_emscripten_set_touchcancel_callback_on_thread,"ua":_emscripten_set_touchend_callback_on_thread,"ta":_emscripten_set_touchmove_callback_on_thread,"va":_emscripten_set_touchstart_callback_on_thread,"Pa":_emscripten_thread_sleep,"R":_exit,"G":_fd_close,"Ra":_fd_read,"Ma":_fd_seek,"E":_fd_write,"K":_glActiveTexture,"x":_glAttachShader,"f":_glBindAttribLocation,"a":_glBindBuffer,"g":_glBindTexture,"Eb":_glBlendFunc,"k":_glBufferData,"r":_glBufferSubData,"H":_glClear,"I":_glClearColor,"Za":_glClearDepthf,"Fa":_glCompileShader,"Ja":_glCompressedTexImage2D,"Da":_glCreateProgram,"Ha":_glCreateShader,"tb":_glCullFace,"i":_glDeleteBuffers,"A":_glDeleteProgram,"B":_glDeleteShader,"D":_glDeleteTextures,"Pb":_glDepthFunc,"C":_glDetachShader,"J":_glDisable,"j":_glDisableVertexAttribArray,"Ad":_glDrawArrays,"pd":_glDrawElements,"s":_glEnable,"d":_glEnableVertexAttribArray,"ib":_glFrontFace,"l":_glGenBuffers,"La":_glGenTextures,"q":_glGetAttribLocation,"Cc":_glGetFloatv,"Aa":_glGetProgramInfoLog,"z":_glGetProgramiv,"Ea":_glGetShaderInfoLog,"y":_glGetShaderiv,"h":_glGetString,"p":_glGetUniformLocation,"Ba":_glLinkProgram,"Qa":_glPixelStorei,"Ia":_glReadPixels,"Ga":_glShaderSource,"Ka":_glTexImage2D,"m":_glTexParameteri,"T":_glUniform1i,"aa":_glUniform4f,"Ca":_glUniformMatrix4fv,"o":_glUseProgram,"e":_glVertexAttribPointer,"Vd":_glViewport,"v":_glfwCreateWindow,"na":_glfwDefaultWindowHints,"Y":_glfwDestroyWindow,"w":_glfwGetPrimaryMonitor,"c":_glfwGetTime,"ma":_glfwGetVideoModes,"oa":_glfwInit,"ba":_glfwMakeContextCurrent,"ga":_glfwSetCharCallback,"ca":_glfwSetCursorEnterCallback,"ea":_glfwSetCursorPosCallback,"ia":_glfwSetDropCallback,"pa":_glfwSetErrorCallback,"ha":_glfwSetKeyCallback,"fa":_glfwSetMouseButtonCallback,"da":_glfwSetScrollCallback,"ja":_glfwSetWindowFocusCallback,"ka":_glfwSetWindowIconifyCallback,"S":_glfwSetWindowShouldClose,"la":_glfwSetWindowSizeCallback,"X":_glfwSwapBuffers,"$":_glfwSwapInterval,"u":_glfwTerminate,"b":_glfwWindowHint,"_":_time};var asm=createWasm();var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["Yd"]).apply(null,arguments)};var _main=Module["_main"]=function(){return(_main=Module["_main"]=Module["asm"]["Zd"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["$d"]).apply(null,arguments)};var _free=Module["_free"]=function(){return(_free=Module["_free"]=Module["asm"]["ae"]).apply(null,arguments)};var ___errno_location=Module["___errno_location"]=function(){return(___errno_location=Module["___errno_location"]=Module["asm"]["be"]).apply(null,arguments)};var stackAlloc=Module["stackAlloc"]=function(){return(stackAlloc=Module["stackAlloc"]=Module["asm"]["ce"]).apply(null,arguments)};var calledRun;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}var calledMain=false;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args){var entryFunction=Module["_main"];var argc=0;var argv=0;try{var ret=entryFunction(argc,argv);exit(ret,true)}catch(e){if(e instanceof ExitStatus){return}else if(e=="unwind"){noExitRuntime=true;return}else{var toLog=e;if(e&&typeof e==="object"&&e.stack){toLog=[e,e.stack]}err("exception thrown: "+toLog);quit_(1,e)}}finally{calledMain=true}}function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(shouldRunNow)callMain(args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}Module["run"]=run;function exit(status,implicit){if(implicit&&noExitRuntime&&status===0){return}if(noExitRuntime){}else{EXITSTATUS=status;exitRuntime();if(Module["onExit"])Module["onExit"](status);ABORT=true}quit_(status,new ExitStatus(status))}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}var shouldRunNow=true;if(Module["noInitialRun"])shouldRunNow=false;run();
diff --git a/examples/web/models/models_orthographic_projection.wasm b/examples/web/models/models_orthographic_projection.wasm
deleted file mode 100644
index df2b3fa..0000000
--- a/examples/web/models/models_orthographic_projection.wasm
+++ /dev/null
Binary files differ
diff --git a/examples/web/models/models_rlgl_solar_system.c b/examples/web/models/models_rlgl_solar_system.c
deleted file mode 100644
index 2217a6e..0000000
--- a/examples/web/models/models_rlgl_solar_system.c
+++ /dev/null
@@ -1,188 +0,0 @@
-/*******************************************************************************************
-*
-* raylib [models] example - rlgl module usage with push/pop matrix transformations
-*
-* This example uses [rlgl] module funtionality (pseudo-OpenGL 1.1 style coding)
-*
-* This example has been created using raylib 2.2 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
-*
-* Copyright (c) 2018 Ramon Santamaria (@raysan5)
-*
-********************************************************************************************/
-
-#include "raylib.h"
-#include "rlgl.h"
-
-#if defined(PLATFORM_WEB)
- #include <emscripten/emscripten.h>
-#endif
-
-//----------------------------------------------------------------------------------
-// Global Variables Definition
-//----------------------------------------------------------------------------------
-const int screenWidth = 800;
-const int screenHeight = 450;
-
-// NOTE: Textures MUST be loaded after Window initialization (OpenGL context is required)
-
-const float sunRadius = 4.0f;
-const float earthRadius = 0.6f;
-const float earthOrbitRadius = 8.0f;
-const float moonRadius = 0.16f;
-const float moonOrbitRadius = 1.5f;
-
-Camera camera = { 0 };
-
-float rotationSpeed = 0.2f; // General system rotation speed
-
-float earthRotation = 0.0f; // Rotation of earth around itself (days) in degrees
-float earthOrbitRotation = 0.0f; // Rotation of earth around the Sun (years) in degrees
-float moonRotation = 0.0f; // Rotation of moon around itself
-float moonOrbitRotation = 0.0f; // Rotation of moon around earth in degrees
-
-//----------------------------------------------------------------------------------
-// Module Functions Declaration
-//----------------------------------------------------------------------------------
-void UpdateDrawFrame(void); // Update and Draw one frame
-
-void DrawSphereBasic(Color color); // Draw sphere without any matrix transformation
-
-//----------------------------------------------------------------------------------
-// Program Main Entry Point
-//----------------------------------------------------------------------------------
-int main(void)
-{
- // Initialization
- //--------------------------------------------------------------------------------------
- InitWindow(screenWidth, screenHeight, "raylib [models] example - rlgl module usage with push/pop matrix transformations");
-
- // Define the camera to look into our 3d world
- camera.position = (Vector3){ 16.0f, 16.0f, 16.0f };
- camera.target = (Vector3){ 0.0f, 0.0f, 0.0f };
- camera.up = (Vector3){ 0.0f, 1.0f, 0.0f };
- camera.fovy = 45.0f;
- camera.projection = CAMERA_PERSPECTIVE;
-
- SetCameraMode(camera, CAMERA_FREE);
-
-#if defined(PLATFORM_WEB)
- emscripten_set_main_loop(UpdateDrawFrame, 60, 1);
-#else
- SetTargetFPS(60); // Set our game to run at 60 frames-per-second
- //--------------------------------------------------------------------------------------
-
- // Main game loop
- while (!WindowShouldClose()) // Detect window close button or ESC key
- {
- UpdateDrawFrame();
- }
-#endif
-
- // De-Initialization
- //--------------------------------------------------------------------------------------
- CloseWindow(); // Close window and OpenGL context
- //--------------------------------------------------------------------------------------
-
- return 0;
-}
-
-//--------------------------------------------------------------------------------------------
-// Module Functions Definitions (local)
-//--------------------------------------------------------------------------------------------
-void UpdateDrawFrame(void)
-{
- // Update
- //----------------------------------------------------------------------------------
- UpdateCamera(&camera);
-
- earthRotation += (5.0f*rotationSpeed);
- earthOrbitRotation += (365/360.0f*(5.0f*rotationSpeed)*rotationSpeed);
- moonRotation += (2.0f*rotationSpeed);
- moonOrbitRotation += (8.0f*rotationSpeed);
- //----------------------------------------------------------------------------------
-
- // Draw
- //----------------------------------------------------------------------------------
- BeginDrawing();
-
- ClearBackground(RAYWHITE);
-
- BeginMode3D(camera);
-
- rlPushMatrix();
- rlScalef(sunRadius, sunRadius, sunRadius); // Scale Sun
- DrawSphereBasic(GOLD); // Draw the Sun
- rlPopMatrix();
-
- rlPushMatrix();
- rlRotatef(earthOrbitRotation, 0.0f, 1.0f, 0.0f); // Rotation for Earth orbit around Sun
- rlTranslatef(earthOrbitRadius, 0.0f, 0.0f); // Translation for Earth orbit
- rlRotatef(-earthOrbitRotation, 0.0f, 1.0f, 0.0f); // Rotation for Earth orbit around Sun inverted
-
- rlPushMatrix();
- rlRotatef(earthRotation, 0.25, 1.0, 0.0); // Rotation for Earth itself
- rlScalef(earthRadius, earthRadius, earthRadius);// Scale Earth
-
- DrawSphereBasic(BLUE); // Draw the Earth
- rlPopMatrix();
-
- rlRotatef(moonOrbitRotation, 0.0f, 1.0f, 0.0f); // Rotation for Moon orbit around Earth
- rlTranslatef(moonOrbitRadius, 0.0f, 0.0f); // Translation for Moon orbit
- rlRotatef(-moonOrbitRotation, 0.0f, 1.0f, 0.0f); // Rotation for Moon orbit around Earth inverted
- rlRotatef(moonRotation, 0.0f, 1.0f, 0.0f); // Rotation for Moon itself
- rlScalef(moonRadius, moonRadius, moonRadius); // Scale Moon
-
- DrawSphereBasic(LIGHTGRAY); // Draw the Moon
- rlPopMatrix();
-
- // Some reference elements (not affected by previous matrix transformations)
- DrawCircle3D((Vector3){ 0.0f, 0.0f, 0.0f }, earthOrbitRadius, (Vector3){ 1, 0, 0 }, 90.0f, Fade(RED, 0.5f));
- DrawGrid(20, 1.0f);
-
- EndMode3D();
-
- DrawText("EARTH ORBITING AROUND THE SUN!", 400, 10, 20, MAROON);
- DrawFPS(10, 10);
-
- EndDrawing();
- //----------------------------------------------------------------------------------
-}
-
-// Draw sphere without any matrix transformation
-// NOTE: Sphere is drawn in world position ( 0, 0, 0 ) with radius 1.0f
-void DrawSphereBasic(Color color)
-{
- int rings = 16;
- int slices = 16;
-
- rlBegin(RL_TRIANGLES);
- rlColor4ub(color.r, color.g, color.b, color.a);
-
- for (int i = 0; i < (rings + 2); i++)
- {
- for (int j = 0; j < slices; j++)
- {
- rlVertex3f(cosf(DEG2RAD*(270+(180/(rings + 1))*i))*sinf(DEG2RAD*(j*360/slices)),
- sinf(DEG2RAD*(270+(180/(rings + 1))*i)),
- cosf(DEG2RAD*(270+(180/(rings + 1))*i))*cosf(DEG2RAD*(j*360/slices)));
- rlVertex3f(cosf(DEG2RAD*(270+(180/(rings + 1))*(i+1)))*sinf(DEG2RAD*((j+1)*360/slices)),
- sinf(DEG2RAD*(270+(180/(rings + 1))*(i+1))),
- cosf(DEG2RAD*(270+(180/(rings + 1))*(i+1)))*cosf(DEG2RAD*((j+1)*360/slices)));
- rlVertex3f(cosf(DEG2RAD*(270+(180/(rings + 1))*(i+1)))*sinf(DEG2RAD*(j*360/slices)),
- sinf(DEG2RAD*(270+(180/(rings + 1))*(i+1))),
- cosf(DEG2RAD*(270+(180/(rings + 1))*(i+1)))*cosf(DEG2RAD*(j*360/slices)));
-
- rlVertex3f(cosf(DEG2RAD*(270+(180/(rings + 1))*i))*sinf(DEG2RAD*(j*360/slices)),
- sinf(DEG2RAD*(270+(180/(rings + 1))*i)),
- cosf(DEG2RAD*(270+(180/(rings + 1))*i))*cosf(DEG2RAD*(j*360/slices)));
- rlVertex3f(cosf(DEG2RAD*(270+(180/(rings + 1))*(i)))*sinf(DEG2RAD*((j+1)*360/slices)),
- sinf(DEG2RAD*(270+(180/(rings + 1))*(i))),
- cosf(DEG2RAD*(270+(180/(rings + 1))*(i)))*cosf(DEG2RAD*((j+1)*360/slices)));
- rlVertex3f(cosf(DEG2RAD*(270+(180/(rings + 1))*(i+1)))*sinf(DEG2RAD*((j+1)*360/slices)),
- sinf(DEG2RAD*(270+(180/(rings + 1))*(i+1))),
- cosf(DEG2RAD*(270+(180/(rings + 1))*(i+1)))*cosf(DEG2RAD*((j+1)*360/slices)));
- }
- }
- rlEnd();
-}
diff --git a/examples/web/models/models_rlgl_solar_system.html b/examples/web/models/models_rlgl_solar_system.html
deleted file mode 100644
index c53de9c..0000000
--- a/examples/web/models/models_rlgl_solar_system.html
+++ /dev/null
@@ -1 +0,0 @@
-<!doctypehtml><html lang=en-us><head><meta charset=utf-8><meta content="text/html; charset=utf-8"http-equiv=Content-Type><title>raylib HTML5 GAME</title><meta content="raylib HTML5 GAME"name=title><meta content="New HTML5 videogame, developed using raylib videogames library"name=description><meta content="raylib, games, html5, programming, C, C++, library, learn, videogames"name=keywords><meta content="width=device-width"name=viewport><meta content="raylib HTML5 GAME"property=og:title><meta content=image/png property=og:image:type><meta content=https://www.raylib.com/common/img/raylib_logo.png property=og:image><meta content=raylib.com property=og:site_name><meta content=https://www.raylib.com/games.html property=og:url><meta content="New HTML5 videogame, developed using raylib videogames library"property=og:description><meta content=summary name=twitter:card><meta content=@raysan5 name=twitter:site><meta content="raylib HTML5 GAME"name=twitter:title><meta content=https://www.raylib.com/common/raylib_logo.png name=twitter:image><meta content=https://www.raylib.com/games.html name=twitter:url><meta content="New HTML5 videogame, developed using raylib videogames library"name=twitter:description><link href=https://www.raylib.com/favicon.ico rel="shortcut icon"><style>body{font-family:arial;margin:0;padding:none}#header{width:100%;height:80px;background-color:#888}#logo{width:64px;height:64px;float:left;position:relative;margin:10px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAAlC+aJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjExR/NCNwAAA7JJREFUaEPtk0FyWzEMQ+37X7fZhxX4YY3AD1OKF1nkzTRlSBCCLeVBnvl/AUdaELOunPno1kts1kixdtEZKVs+xIxebBkZsVknn/L5nFGDLR8T4zVC9fX19S/+tTFijrYK4jUjbPUtqBHpnEE6PkZD7jQZV8n5Recw1XQKciZuPaEtR6UjNs5ENVGMsBVqpPtER0ZMOhpyp8m4YL4OjD9yxsyZxnQycfMJETNSzsRE1+dihK3YMiJmpHTW3xpmXPC6BXlCHfqnBlsjY5hxf/6EVEOM2BTEi0fYCX4ONSI6Kq3Blg/prIOMq2CsRur4KQ0x64SdjOufEDEdHZGOhmz5RDHCVqhRuQ86YsVskbc+GXchLiHnFyYH+UigQDVGnImbT8hwFkgLg2qiM8JO6Ylx1FNLa3DmYwqCTsZd4BPqGJG7MwKzpeiWKTKxXkLMVE3MSOmsdwxLH6Rd/wCCLSNDx6djeKfJuArGeoYamRHpaEjnCBYZVy8hZqo2GI36qPjsiOiMsBXGcev4Mx9TLGTchbgEjN/uz6jGrBvDjg+LTNx8Qp2CbG2xMKgmOiPslJ4Yxx+eSnSkzlosZNwFPiHl7FRTkLNRJm4+IeVM0ymIH42wE/wcKalQI4MRl4EW3p6VcRWMua8F6WjIlqZDxvVPiHQ6CjVbYkV9ohhhp/Rk1wiYgpyJ78i4CsZbjkb8Qx+ihvzu3RPaKogZkY6GlEeMsKdPSOFIC8VoOusg44L5c+T8ouOoGhWbdWJ8tMi4egkxo4hoh2yNTGf3iIyr5Lyic4bRENXo+lvDjAt4C1Hk/OKtUaAj0+n4dMSZ2D+hrYJsaYh2SClG2jV9kJKKzhlGQ1SsW299Mq6C8dYZHTExo8fzieI5ivipYnYy7nwJqGKmOYyRwfiUBXITfh5qSHRGWEkfqJqURgvsdHyWYv7Ko8DnYYegk3EB00cxprdrJRzFd7YQzawu8L1GMTYS/KpPaAFTkIn1EmJmspJSs5xBzSyGhlkBmlxfNFiP5mw4wlbMh4F5Ddxp5jNINBdCEz9zPOC1zD7Q0HBdmXndwv0TMtydEdzlWJT4VZ8Qt9Qn4/onxMIwa5ZYGJU5yufBiCjwE50AGjLCVuS8Yt4H7OgZLKK5EKOsLviEWJSL/+0uMi7gLUSBseYwqEbXvSHCec1CJvZPyHCmYQffaBBfOTCGHM2aEbZi1+gO1XTWVXMnzrhAn5DSOZVsiQlHnSITKzGj6DeTcZWc/3oy7h9//PF4PL4BlvsWrb6RE+oAAAAASUVORK5CYII=)}.emscripten{padding-right:0;margin-left:auto;margin-right:auto;display:block}div.emscripten{text-align:center}div.emscripten_border{border:1px solid #000}canvas.emscripten{border:0 none;background:#000;width:100%}.spinner{height:30px;width:30px;margin:0;margin-top:20px;margin-left:20px;display:inline-block;vertical-align:top;-webkit-animation:rotation .8s linear infinite;-moz-animation:rotation .8s linear infinite;-o-animation:rotation .8s linear infinite;animation:rotation .8s linear infinite;border-left:5px solid #000;border-right:5px solid #000;border-bottom:5px solid #000;border-top:5px solid red;border-radius:100%;background-color:#f5f5f5}@-webkit-keyframes rotation{from{-webkit-transform:rotate(0)}to{-webkit-transform:rotate(360deg)}}@-moz-keyframes rotation{from{-moz-transform:rotate(0)}to{-moz-transform:rotate(360deg)}}@-o-keyframes rotation{from{-o-transform:rotate(0)}to{-o-transform:rotate(360deg)}}@keyframes rotation{from{transform:rotate(0)}to{transform:rotate(360deg)}}#status{display:inline-block;vertical-align:top;margin-top:30px;margin-left:20px;font-weight:700;color:#282828}#progress{height:0;width:0}#controls{display:inline-block;float:right;vertical-align:top;margin-top:15px;margin-right:20px}#output{width:100%;height:140px;margin:0 auto;margin-top:10px;display:block;background-color:#000;color:#25ae26;font-family:'Lucida Console',Monaco,monospace;outline:0}input[type=button]{background-color:#d3d3d3;border:4px solid #a9a9a9;color:#000;text-decoration:none;cursor:pointer;width:140px;height:50px}input[type=button]:hover{background-color:#f5f5f5ff;border-color:#000}</style></head><body><div id=header><a href=https://www.raylib.com id=logo></a><div class=spinner id=spinner></div><div class=emscripten id=status>Downloading...</div><span id=controls><span><input onclick=Module.requestFullscreen(!1,!1) type=button value="🖵 FULLSCREEN"></span><span><input onclick=toggleAudio() type=button value="🔇 SUSPEND"id=btn-audio></span></span><div class=emscripten><progress hidden id=progress max=100 value=0></progress></div></div><div class=emscripten_border><canvas class=emscripten id=canvas oncontextmenu=event.preventDefault() tabindex=-1></canvas></div><textarea id=output rows=8></textarea><script src=https://cdn.jsdelivr.net/gh/eligrey/FileSaver.js/dist/FileSaver.min.js></script><script>function saveFileFromMEMFSToDisk(e,a){var t,i=/^((?!chrome|android).)*safari/i.test(navigator.userAgent),o=FS.readFile(e);t=i?new Blob([o.buffer],{type:"application/octet-stream"}):new Blob([o.buffer],{type:"application/octet-binary"}),saveAs(t,a)}</script><script>var statusElement=document.querySelector("#status"),progressElement=document.querySelector("#progress"),spinnerElement=document.querySelector("#spinner"),Module={preRun:[],postRun:[],print:function(){var e=document.querySelector("#output");return e&&(e.value=""),function(t){arguments.length>1&&(t=Array.prototype.slice.call(arguments).join(" ")),console.log(t),e&&(e.value+=t+"\n",e.scrollTop=e.scrollHeight)}}(),printErr:function(e){arguments.length>1&&(e=Array.prototype.slice.call(arguments).join(" ")),console.error(e)},canvas:function(){var e=document.querySelector("#canvas");return e.addEventListener("webglcontextlost",(function(e){alert("WebGL context lost. You will need to reload the page."),e.preventDefault()}),!1),e}(),setStatus:function(e){if(Module.setStatus.last||(Module.setStatus.last={time:Date.now(),text:""}),e!==Module.setStatus.last.text){var t=e.match(/([^(]+)\((\d+(\.\d+)?)\/(\d+)\)/),n=Date.now();t&&n-Module.setStatus.last.time<30||(Module.setStatus.last.time=n,Module.setStatus.last.text=e,t?(e=t[1],progressElement.value=100*parseInt(t[2]),progressElement.max=100*parseInt(t[4]),progressElement.hidden=!0,spinnerElement.hidden=!1):(progressElement.value=null,progressElement.max=null,progressElement.hidden=!0,e||(spinnerElement.style.display="none")),statusElement.innerHTML=e)}},totalDependencies:0,monitorRunDependencies:function(e){this.totalDependencies=Math.max(this.totalDependencies,e),Module.setStatus(e?"Preparing... ("+(this.totalDependencies-e)+"/"+this.totalDependencies+")":"All downloads complete.")}};Module.setStatus("Downloading..."),window.onerror=function(){Module.setStatus("Exception thrown, see JavaScript console"),spinnerElement.style.display="none",Module.setStatus=function(e){e&&Module.printErr("[post-exception status] "+e)}}</script><script>var audioBtn=document.querySelector("#btn-audio");const audioContexList=[];function toggleAudio(){var t=!1;audioContexList.forEach(e=>{"suspended"==e.state?(e.resume(),t=!0):"running"==e.state&&e.suspend()}),audioBtn.value=t?"🔇 SUSPEND":"🔈 RESUME"}self.AudioContext=new Proxy(self.AudioContext,{construct(t,e){const n=new t(...e);return audioContexList.push(n),"suspended"==n.state&&(audioBtn.value="🔈 RESUME"),n}})</script><script src=models_rlgl_solar_system.js async></script></body></html> \ No newline at end of file
diff --git a/examples/web/models/models_rlgl_solar_system.js b/examples/web/models/models_rlgl_solar_system.js
deleted file mode 100644
index 8989dee..0000000
--- a/examples/web/models/models_rlgl_solar_system.js
+++ /dev/null
@@ -1 +0,0 @@
-var Module=typeof Module!=="undefined"?Module:{};var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram="./this.program";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window==="object";ENVIRONMENT_IS_WORKER=typeof importScripts==="function";ENVIRONMENT_IS_NODE=typeof process==="object"&&typeof process.versions==="object"&&typeof process.versions.node==="string";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require("path").dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require("fs");if(!nodePath)nodePath=require("path");filename=nodePath["normalize"](filename);return nodeFS["readFileSync"](filename,binary?null:"utf8")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);if(typeof module!=="undefined"){module["exports"]=Module}process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",abort);quit_=function(status){process["exit"](status)};Module["inspect"]=function(){return"[Emscripten Module object]"}}else if(ENVIRONMENT_IS_SHELL){if(typeof read!="undefined"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer==="function"){return new Uint8Array(readbuffer(f))}data=read(f,"binary");assert(typeof data==="object");return data};if(typeof scriptArgs!="undefined"){arguments_=scriptArgs}else if(typeof arguments!="undefined"){arguments_=arguments}if(typeof quit==="function"){quit_=function(status){quit(status)}}if(typeof print!=="undefined"){if(typeof console==="undefined")console={};console.log=print;console.warn=console.error=typeof printErr!=="undefined"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!=="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf("/")+1)}else{scriptDirectory=""}{read_=function(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=function(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var STACK_ALIGN=16;function alignMemory(size,factor){if(!factor)factor=STACK_ALIGN;return Math.ceil(size/factor)*factor}function warnOnce(text){if(!warnOnce.shown)warnOnce.shown={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;err(text)}}var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime=Module["noExitRuntime"]||true;if(typeof WebAssembly!=="object"){abort("no native wasm support detected")}function setValue(ptr,value,type,noSafe){type=type||"i8";if(type.charAt(type.length-1)==="*")type="i32";switch(type){case"i1":HEAP8[ptr>>0]=value;break;case"i8":HEAP8[ptr>>0]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":tempI64=[value>>>0,(tempDouble=value,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;default:abort("invalid type for setValue: "+type)}}var wasmMemory;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}var ALLOC_NORMAL=0;var ALLOC_STACK=1;function allocate(slab,allocator){var ret;if(allocator==ALLOC_STACK){ret=stackAlloc(slab.length)}else{ret=_malloc(slab.length)}if(slab.subarray||slab.slice){HEAPU8.set(slab,ret)}else{HEAPU8.set(new Uint8Array(slab),ret)}return ret}var UTF8Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heap,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heap[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str="";while(idx<endPtr){var u0=heap[idx++];if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heap[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heap[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u0=(u0&7)<<18|u1<<12|u2<<6|heap[idx++]&63}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||16777216;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;__ATINIT__.push({func:function(){___wasm_call_ctors()}});function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){FS.ignorePermissions=false;callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}what+="";err(what);ABORT=true;EXITSTATUS=1;what="abort("+what+"). Build with -s ASSERTIONS=1 for more info.";var e=new WebAssembly.RuntimeError(what);throw e}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix="file://";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile="models_rlgl_solar_system.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}else{throw"both async and sync fetching of the wasm failed"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch==="function"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={"a":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;wasmMemory=Module["asm"]["Xd"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module["asm"]["_d"];removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiatedSource(output){receiveInstance(output["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming==="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch==="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync();return{}}var tempDouble;var tempI64;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback(Module);continue}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){wasmTable.get(func)()}else{wasmTable.get(func)(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}function ___assert_fail(condition,filename,line,func){abort("Assertion failed: "+UTF8ToString(condition)+", at: "+[filename?UTF8ToString(filename):"unknown filename",line,func?UTF8ToString(func):"unknown function"])}function setErrNo(value){HEAP32[___errno_location()>>2]=value;return value}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path==="/")return"/";path=PATH.normalize(path);path=path.replace(/\/$/,"");var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}};function getRandomDevice(){if(typeof crypto==="object"&&typeof crypto["getRandomValues"]==="function"){var randomBuffer=new Uint8Array(1);return function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]}}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");return function(){return crypto_module["randomBytes"](1)[0]}}catch(e){}}return function(){abort("randomDevice")}}var PATH_FS={resolve:function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!=="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=path.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(function(p){return!!p}),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:function(from,to){from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start<arr.length;start++){if(arr[start]!=="")break}var end=arr.length-1;for(;end>=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i<length;i++){if(fromParts[i]!==toParts[i]){samePartsLength=i;break}}var outputParts=[];for(var i=samePartsLength;i<fromParts.length;i++){outputParts.push("..")}outputParts=outputParts.concat(toParts.slice(samePartsLength));return outputParts.join("/")}};var TTY={ttys:[],init:function(){},shutdown:function(){},register:function(dev,ops){TTY.ttys[dev]={input:[],output:[],ops:ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open:function(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close:function(stream){stream.tty.ops.flush(stream.tty)},flush:function(stream){stream.tty.ops.flush(stream.tty)},read:function(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i<length;i++){var result;try{result=stream.tty.ops.get_char(stream.tty)}catch(e){throw new FS.ErrnoError(29)}if(result===undefined&&bytesRead===0){throw new FS.ErrnoError(6)}if(result===null||result===undefined)break;bytesRead++;buffer[offset+i]=result}if(bytesRead){stream.node.timestamp=Date.now()}return bytesRead},write:function(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.put_char){throw new FS.ErrnoError(60)}try{for(var i=0;i<length;i++){stream.tty.ops.put_char(stream.tty,buffer[offset+i])}}catch(e){throw new FS.ErrnoError(29)}if(length){stream.node.timestamp=Date.now()}return i}},default_tty_ops:{get_char:function(tty){if(!tty.input.length){var result=null;if(ENVIRONMENT_IS_NODE){var BUFSIZE=256;var buf=Buffer.alloc?Buffer.alloc(BUFSIZE):new Buffer(BUFSIZE);var bytesRead=0;try{bytesRead=nodeFS.readSync(process.stdin.fd,buf,0,BUFSIZE,null)}catch(e){if(e.toString().indexOf("EOF")!=-1)bytesRead=0;else throw e}if(bytesRead>0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function mmapAlloc(size){var alignedSize=alignMemory(size,16384);var ptr=_malloc(alignedSize);while(size<alignedSize)HEAP8[ptr+size++]=0;return ptr}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray:function(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage:function(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity<CAPACITY_DOUBLING_MAX?2:1.125)>>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage:function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr:function(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr:function(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp;old_node.parent=new_dir},unlink:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir:function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i<size;i++)buffer[offset+i]=contents[position+i]}return size},write:function(stream,buffer,offset,length,position,canOwn){if(!length)return 0;var node=stream.node;node.timestamp=Date.now();if(buffer.subarray&&(!node.contents||node.contents.subarray)){if(canOwn){node.contents=buffer.subarray(offset,offset+length);node.usedBytes=length;return length}else if(node.usedBytes===0&&position===0){node.contents=buffer.slice(offset,offset+length);node.usedBytes=length;return length}else if(position+length<=node.usedBytes){node.contents.set(buffer.subarray(offset,offset+length),position);return length}}MEMFS.expandFileStorage(node,position+length);if(node.contents.subarray&&buffer.subarray){node.contents.set(buffer.subarray(offset,offset+length),position)}else{for(var i=0;i<length;i++){node.contents[position+i]=buffer[offset+i]}}node.usedBytes=Math.max(node.usedBytes,position+length);return length},llseek:function(stream,offset,whence){var position=offset;if(whence===1){position+=stream.position}else if(whence===2){if(FS.isFile(stream.node.mode)){position+=stream.node.usedBytes}}if(position<0){throw new FS.ErrnoError(28)}return position},allocate:function(stream,offset,length){MEMFS.expandFileStorage(stream.node,offset+length);stream.node.usedBytes=Math.max(stream.node.usedBytes,offset+length)},mmap:function(stream,address,length,position,prot,flags){if(address!==0){throw new FS.ErrnoError(28)}if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}var ptr;var allocated;var contents=stream.node.contents;if(!(flags&2)&&contents.buffer===buffer){allocated=false;ptr=contents.byteOffset}else{if(position>0||position+length<contents.length){if(contents.subarray){contents=contents.subarray(position,position+length)}else{contents=Array.prototype.slice.call(contents,position,position+length)}}allocated=true;ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}HEAP8.set(contents,ptr)}return{ptr:ptr,allocated:allocated}},msync:function(stream,buffer,offset,length,mmapFlags){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}if(mmapFlags&2){return 0}var bytesWritten=MEMFS.stream_ops.write(stream,buffer,0,length,offset,false);return 0}}};var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,trackingDelegate:{},tracking:{openFlags:{READ:1,WRITE:2}},ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath:function(path,opts){path=PATH_FS.resolve(FS.cwd(),path);opts=opts||{};if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};for(var key in defaults){if(opts[key]===undefined){opts[key]=defaults[key]}}if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),false);var current=FS.root;var current_path="/";for(var i=0;i<parts.length;i++){var islast=i===parts.length-1;if(islast&&opts.parent){break}current=FS.lookupNode(current,parts[i]);current_path=PATH.join2(current_path,parts[i]);if(FS.isMountpoint(current)){if(!islast||islast&&opts.follow_mount){current=current.mounted.root}}if(!islast||opts.follow){var count=0;while(FS.isLink(current.mode)){var link=FS.readlink(current_path);current_path=PATH_FS.resolve(PATH.dirname(current_path),link);var lookup=FS.lookupPath(current_path,{recurse_count:opts.recurse_count});current=lookup.node;if(count++>40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath:function(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?mount+"/"+path:mount+path}path=path?node.name+"/"+path:node.name;node=node.parent}},hashName:function(parentid,name){var hash=0;for(var i=0;i<name.length;i++){hash=(hash<<5)-hash+name.charCodeAt(i)|0}return(parentid+hash>>>0)%FS.nameTable.length},hashAddNode:function(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode:function(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode:function(parent,name){var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode:function(parent,name,mode,rdev){var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:function(node){FS.hashRemoveNode(node)},isRoot:function(node){return node===node.parent},isMountpoint:function(node){return!!node.mounted},isFile:function(mode){return(mode&61440)===32768},isDir:function(mode){return(mode&61440)===16384},isLink:function(mode){return(mode&61440)===40960},isChrdev:function(mode){return(mode&61440)===8192},isBlkdev:function(mode){return(mode&61440)===24576},isFIFO:function(mode){return(mode&61440)===4096},isSocket:function(mode){return(mode&49152)===49152},flagModes:{"r":0,"r+":2,"w":577,"w+":578,"a":1089,"a+":1090},modeStringToFlags:function(str){var flags=FS.flagModes[str];if(typeof flags==="undefined"){throw new Error("Unknown file open mode: "+str)}return flags},flagsToPermissionString:function(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions:function(node,perms){if(FS.ignorePermissions){return 0}if(perms.indexOf("r")!==-1&&!(node.mode&292)){return 2}else if(perms.indexOf("w")!==-1&&!(node.mode&146)){return 2}else if(perms.indexOf("x")!==-1&&!(node.mode&73)){return 2}return 0},mayLookup:function(dir){var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate:function(dir,name){try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete:function(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen:function(node,flags){if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd:function(fd_start,fd_end){fd_start=fd_start||0;fd_end=fd_end||FS.MAX_OPEN_FDS;for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:function(fd){return FS.streams[fd]},createStream:function(stream,fd_start,fd_end){if(!FS.FSStream){FS.FSStream=function(){};FS.FSStream.prototype={object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}}}}var newStream=new FS.FSStream;for(var p in stream){newStream[p]=stream[p]}stream=newStream;var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:function(fd){FS.streams[fd]=null},chrdev_stream_ops:{open:function(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}},llseek:function(){throw new FS.ErrnoError(70)}},major:function(dev){return dev>>8},minor:function(dev){return dev&255},makedev:function(ma,mi){return ma<<8|mi},registerDevice:function(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:function(dev){return FS.devices[dev]},getMounts:function(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts},syncfs:function(populate,callback){if(typeof populate==="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err("warning: "+FS.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work")}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(function(mount){if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount:function(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount:function(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(function(hash){var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.indexOf(current.mount)!==-1){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup:function(parent,name){return parent.node_ops.lookup(parent,name)},mknod:function(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create:function(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:function(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree:function(path,mode){var dirs=path.split("/");var d="";for(var i=0;i<dirs.length;++i){if(!dirs[i])continue;d+="/"+dirs[i];try{FS.mkdir(d,mode)}catch(e){if(e.errno!=20)throw e}}},mkdev:function(path,mode,dev){if(typeof dev==="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:function(oldpath,newpath){if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:function(old_path,new_path){var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}try{if(FS.trackingDelegate["willMovePath"]){FS.trackingDelegate["willMovePath"](old_path,new_path)}}catch(e){err("FS.trackingDelegate['willMovePath']('"+old_path+"', '"+new_path+"') threw an exception: "+e.message)}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}try{if(FS.trackingDelegate["onMovePath"])FS.trackingDelegate["onMovePath"](old_path,new_path)}catch(e){err("FS.trackingDelegate['onMovePath']('"+old_path+"', '"+new_path+"') threw an exception: "+e.message)}},rmdir:function(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}try{if(FS.trackingDelegate["willDeletePath"]){FS.trackingDelegate["willDeletePath"](path)}}catch(e){err("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: "+e.message)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate["onDeletePath"])FS.trackingDelegate["onDeletePath"](path)}catch(e){err("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: "+e.message)}},readdir:function(path){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:function(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}try{if(FS.trackingDelegate["willDeletePath"]){FS.trackingDelegate["willDeletePath"](path)}}catch(e){err("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: "+e.message)}parent.node_ops.unlink(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate["onDeletePath"])FS.trackingDelegate["onDeletePath"](path)}catch(e){err("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: "+e.message)}},readlink:function(path){var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:function(path,dontFollow){var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:function(path){return FS.stat(path,true)},chmod:function(path,mode,dontFollow){var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:function(path,mode){FS.chmod(path,mode,true)},fchmod:function(fd,mode){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:function(path,uid,gid,dontFollow){var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:function(path,uid,gid){FS.chown(path,uid,gid,true)},fchown:function(fd,uid,gid){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:function(path,len){if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:function(fd,len){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:function(path,atime,mtime){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:function(path,flags,mode,fd_start,fd_end){if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags==="string"?FS.modeStringToFlags(flags):flags;mode=typeof mode==="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path==="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false},fd_start,fd_end);if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1;err("FS.trackingDelegate error on read file: "+path)}}try{if(FS.trackingDelegate["onOpenFile"]){var trackingFlags=0;if((flags&2097155)!==1){trackingFlags|=FS.tracking.openFlags.READ}if((flags&2097155)!==0){trackingFlags|=FS.tracking.openFlags.WRITE}FS.trackingDelegate["onOpenFile"](path,trackingFlags)}}catch(e){err("FS.trackingDelegate['onOpenFile']('"+path+"', flags) threw an exception: "+e.message)}return stream},close:function(stream){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:function(stream){return stream.fd===null},llseek:function(stream,offset,whence){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:function(stream,buffer,offset,length,position){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!=="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:function(stream,buffer,offset,length,position,canOwn){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!=="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;try{if(stream.path&&FS.trackingDelegate["onWriteToFile"])FS.trackingDelegate["onWriteToFile"](stream.path)}catch(e){err("FS.trackingDelegate['onWriteToFile']('"+stream.path+"') threw an exception: "+e.message)}return bytesWritten},allocate:function(stream,offset,length){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:function(stream,address,length,position,prot,flags){if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,address,length,position,prot,flags)},msync:function(stream,buffer,offset,length,mmapFlags){if(!stream||!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:function(stream){return 0},ioctl:function(stream,cmd,arg){if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:function(path,opts){opts=opts||{};opts.flags=opts.flags||0;opts.encoding=opts.encoding||"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error('Invalid encoding type "'+opts.encoding+'"')}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding==="binary"){ret=buf}FS.close(stream);return ret},writeFile:function(path,data,opts){opts=opts||{};opts.flags=opts.flags||577;var stream=FS.open(path,opts.flags,opts.mode);if(typeof data==="string"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,undefined,opts.canOwn)}else if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{throw new Error("Unsupported data type")}FS.close(stream)},cwd:function(){return FS.currentPath},chdir:function(path){var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories:function(){FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices:function(){FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:function(){return 0},write:function(stream,buffer,offset,length,pos){return length}});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var random_device=getRandomDevice();FS.createDevice("/dev","random",random_device);FS.createDevice("/dev","urandom",random_device);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories:function(){FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount:function(){var node=FS.createNode(proc_self,"fd",16384|511,73);node.node_ops={lookup:function(parent,name){var fd=+name;var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:function(){return stream.path}}};ret.parent=ret;return ret}};return node}},{},"/proc/self/fd")},createStandardStreams:function(){if(Module["stdin"]){FS.createDevice("/dev","stdin",Module["stdin"])}else{FS.symlink("/dev/tty","/dev/stdin")}if(Module["stdout"]){FS.createDevice("/dev","stdout",null,Module["stdout"])}else{FS.symlink("/dev/tty","/dev/stdout")}if(Module["stderr"]){FS.createDevice("/dev","stderr",null,Module["stderr"])}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},ensureErrnoError:function(){if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.node=node;this.setErrno=function(errno){this.errno=errno};this.setErrno(errno);this.message="FS error"};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[44].forEach(function(code){FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack="<generic error, no stack>"})},staticInit:function(){FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={"MEMFS":MEMFS}},init:function(input,output,error){FS.init.initialized=true;FS.ensureErrnoError();Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams()},quit:function(){FS.init.initialized=false;var fflush=Module["_fflush"];if(fflush)fflush(0);for(var i=0;i<FS.streams.length;i++){var stream=FS.streams[i];if(!stream){continue}FS.close(stream)}},getMode:function(canRead,canWrite){var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode},findObject:function(path,dontResolveLastLink){var ret=FS.analyzePath(path,dontResolveLastLink);if(ret.exists){return ret.object}else{return null}},analyzePath:function(path,dontResolveLastLink){try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath:function(parent,path,canRead,canWrite){parent=typeof parent==="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:function(parent,name,properties,canRead,canWrite){var path=PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:function(parent,name,data,canRead,canWrite,canOwn){var path=name?PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name):parent;var mode=FS.getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data==="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i<len;++i)arr[i]=data.charCodeAt(i);data=arr}FS.chmod(node,mode|146);var stream=FS.open(node,577);FS.write(stream,data,0,data.length,0,canOwn);FS.close(stream);FS.chmod(node,mode)}return node},createDevice:function(parent,name,input,output){var path=PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:function(stream){stream.seekable=false},close:function(stream){if(output&&output.buffer&&output.buffer.length){output(10)}},read:function(stream,buffer,offset,length,pos){var bytesRead=0;for(var i=0;i<length;i++){var result;try{result=input()}catch(e){throw new FS.ErrnoError(29)}if(result===undefined&&bytesRead===0){throw new FS.ErrnoError(6)}if(result===null||result===undefined)break;bytesRead++;buffer[offset+i]=result}if(bytesRead){stream.node.timestamp=Date.now()}return bytesRead},write:function(stream,buffer,offset,length,pos){for(var i=0;i<length;i++){try{output(buffer[offset+i])}catch(e){throw new FS.ErrnoError(29)}}if(length){stream.node.timestamp=Date.now()}return i}});return FS.mkdev(path,mode,dev)},forceLoadFile:function(obj){if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!=="undefined"){throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}},createLazyFile:function(parent,name,url,canRead,canWrite){function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=function(from,to){if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);if(typeof Uint8Array!="undefined")xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}else{return intArrayFromString(xhr.responseText||"",true)}};var lazyArray=this;lazyArray.setDataGetter(function(chunkNum){var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]==="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]==="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!=="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._length}},chunkSize:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(function(key){var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){FS.forceLoadFile(node);return fn.apply(null,arguments)}});stream_ops.read=function stream_ops_read(stream,buffer,offset,length,position){FS.forceLoadFile(node);var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i<size;i++){buffer[offset+i]=contents[position+i]}}else{for(var i=0;i<size;i++){buffer[offset+i]=contents.get(position+i)}}return size};node.stream_ops=stream_ops;return node},createPreloadedFile:function(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish){Browser.init();var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency("cp "+fullname);function processData(byteArray){function finish(byteArray){if(preFinish)preFinish();if(!dontCreateFile){FS.createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}if(onload)onload();removeRunDependency(dep)}var handled=false;Module["preloadPlugins"].forEach(function(plugin){if(handled)return;if(plugin["canHandle"](fullname)){plugin["handle"](byteArray,fullname,finish,function(){if(onerror)onerror();removeRunDependency(dep)});handled=true}});if(!handled)finish(byteArray)}addRunDependency(dep);if(typeof url=="string"){Browser.asyncLoad(url,function(byteArray){processData(byteArray)},onerror)}else{processData(url)}},indexedDB:function(){return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME:function(){return"EM_FS_"+window.location.pathname},DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:function(paths,onload,onerror){onload=onload||function(){};onerror=onerror||function(){};var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=function openRequest_onupgradeneeded(){out("creating db");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME)};openRequest.onsuccess=function openRequest_onsuccess(){var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],"readwrite");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(function(path){var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=function putRequest_onsuccess(){ok++;if(ok+fail==total)finish()};putRequest.onerror=function putRequest_onerror(){fail++;if(ok+fail==total)finish()}});transaction.onerror=onerror};openRequest.onerror=onerror},loadFilesFromDB:function(paths,onload,onerror){onload=onload||function(){};onerror=onerror||function(){};var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=function openRequest_onsuccess(){var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],"readonly")}catch(e){onerror(e);return}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(function(path){var getRequest=files.get(path);getRequest.onsuccess=function getRequest_onsuccess(){if(FS.analyzePath(path).exists){FS.unlink(path)}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish()};getRequest.onerror=function getRequest_onerror(){fail++;if(ok+fail==total)finish()}});transaction.onerror=onerror};openRequest.onerror=onerror}};var SYSCALLS={mappings:{},DEFAULT_POLLMASK:5,umask:511,calculateAt:function(dirfd,path,allowEmpty){if(path[0]==="/"){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=FS.getStream(dirfd);if(!dirstream)throw new FS.ErrnoError(8);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(func,path,buf){try{var stat=func(path)}catch(e){if(e&&e.node&&PATH.normalize(path)!==PATH.normalize(FS.getPath(e.node))){return-54}throw e}HEAP32[buf>>2]=stat.dev;HEAP32[buf+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;HEAP32[buf+56>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+76>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+80>>2]=tempI64[0],HEAP32[buf+84>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},doMkdir:function(path,mode){path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0},doMknod:function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}FS.mknod(path,mode,dev);return 0},doReadlink:function(path,buf,bufsize){if(bufsize<=0)return-28;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len},doAccess:function(path,amode){if(amode&~7){return-28}var node;var lookup=FS.lookupPath(path,{follow:true});node=lookup.node;if(!node){return-44}var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0},doDup:function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd},doReadv:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i<iovcnt;i++){var ptr=HEAP32[iov+i*8>>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr<len)break}return ret},doWritev:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i<iovcnt;i++){var ptr=HEAP32[iov+i*8>>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream},get64:function(low,high){return low}};function ___sys_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-28}var newStream;newStream=FS.open(stream.path,stream.flags,0,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0}case 12:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 13:case 14:return 0;case 16:case 8:return-28;case 9:setErrNo(28);return-1;default:{return-28}}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_ioctl(fd,op,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(op){case 21509:case 21505:{if(!stream.tty)return-59;return 0}case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-59;return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{if(!stream.tty)return-59;return 0}default:abort("bad ioctl syscall "+op)}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_open(path,flags,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(path);var mode=varargs?SYSCALLS.get():0;var stream=FS.open(pathname,flags,mode);return stream.fd}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}var JSEvents={inEventHandler:0,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return false;for(var i in arrA){if(arrA[i]!=arrB[i])return false}return true}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList)){return}}JSEvents.deferredCalls.push({targetFunction:targetFunction,precedence:precedence,argsList:argsList});JSEvents.deferredCalls.sort(function(x,y){return x.precedence<y.precedence})},removeDeferredCalls:function(targetFunction){for(var i=0;i<JSEvents.deferredCalls.length;++i){if(JSEvents.deferredCalls[i].targetFunction==targetFunction){JSEvents.deferredCalls.splice(i,1);--i}}},canPerformEventHandlerRequests:function(){return JSEvents.inEventHandler&&JSEvents.currentEventHandler.allowsDeferredCalls},runDeferredCalls:function(){if(!JSEvents.canPerformEventHandlerRequests()){return}for(var i=0;i<JSEvents.deferredCalls.length;++i){var call=JSEvents.deferredCalls[i];JSEvents.deferredCalls.splice(i,1);--i;call.targetFunction.apply(null,call.argsList)}},eventHandlers:[],removeAllHandlersOnTarget:function(target,eventTypeString){for(var i=0;i<JSEvents.eventHandlers.length;++i){if(JSEvents.eventHandlers[i].target==target&&(!eventTypeString||eventTypeString==JSEvents.eventHandlers[i].eventTypeString)){JSEvents._removeHandler(i--)}}},_removeHandler:function(i){var h=JSEvents.eventHandlers[i];h.target.removeEventListener(h.eventTypeString,h.eventListenerFunc,h.useCapture);JSEvents.eventHandlers.splice(i,1)},registerOrRemoveHandler:function(eventHandler){var jsEventHandler=function jsEventHandler(event){++JSEvents.inEventHandler;JSEvents.currentEventHandler=eventHandler;JSEvents.runDeferredCalls();eventHandler.handlerFunc(event);JSEvents.runDeferredCalls();--JSEvents.inEventHandler};if(eventHandler.callbackfunc){eventHandler.eventListenerFunc=jsEventHandler;eventHandler.target.addEventListener(eventHandler.eventTypeString,jsEventHandler,eventHandler.useCapture);JSEvents.eventHandlers.push(eventHandler);JSEvents.registerRemoveEventListeners()}else{for(var i=0;i<JSEvents.eventHandlers.length;++i){if(JSEvents.eventHandlers[i].target==eventHandler.target&&JSEvents.eventHandlers[i].eventTypeString==eventHandler.eventTypeString){JSEvents._removeHandler(i--)}}}},getNodeNameForTarget:function(target){if(!target)return"";if(target==window)return"#window";if(target==screen)return"#screen";return target&&target.nodeName?target.nodeName:""},fullscreenEnabled:function(){return document.fullscreenEnabled||document.webkitFullscreenEnabled}};function requestPointerLock(target){if(target.requestPointerLock){target.requestPointerLock()}else if(target.msRequestPointerLock){target.msRequestPointerLock()}else{if(document.body.requestPointerLock||document.body.msRequestPointerLock){return-3}else{return-1}}return 0}function _emscripten_exit_pointerlock(){JSEvents.removeDeferredCalls(requestPointerLock);if(document.exitPointerLock){document.exitPointerLock()}else if(document.msExitPointerLock){document.msExitPointerLock()}else{return-1}return 0}function maybeCStringToJsString(cString){return cString>2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!=="undefined"?document:0,typeof window!=="undefined"?window:0];function findEventTarget(target){target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!=="undefined"?document.querySelector(target):undefined);return domElement}function getBoundingClientRect(e){return specialHTMLTargets.indexOf(e)<0?e.getBoundingClientRect():{"left":0,"top":0}}function _emscripten_get_element_css_size(target,width,height){target=findEventTarget(target);if(!target)return-4;var rect=getBoundingClientRect(target);HEAPF64[width>>3]=rect.width;HEAPF64[height>>3]=rect.height;return 0}function fillGamepadEventData(eventStruct,e){HEAPF64[eventStruct>>3]=e.timestamp;for(var i=0;i<e.axes.length;++i){HEAPF64[eventStruct+i*8+16>>3]=e.axes[i]}for(var i=0;i<e.buttons.length;++i){if(typeof e.buttons[i]==="object"){HEAPF64[eventStruct+i*8+528>>3]=e.buttons[i].value}else{HEAPF64[eventStruct+i*8+528>>3]=e.buttons[i]}}for(var i=0;i<e.buttons.length;++i){if(typeof e.buttons[i]==="object"){HEAP32[eventStruct+i*4+1040>>2]=e.buttons[i].pressed}else{HEAP32[eventStruct+i*4+1040>>2]=e.buttons[i]==1}}HEAP32[eventStruct+1296>>2]=e.connected;HEAP32[eventStruct+1300>>2]=e.index;HEAP32[eventStruct+8>>2]=e.axes.length;HEAP32[eventStruct+12>>2]=e.buttons.length;stringToUTF8(e.id,eventStruct+1304,64);stringToUTF8(e.mapping,eventStruct+1368,64)}function _emscripten_get_gamepad_status(index,gamepadState){if(index<0||index>=JSEvents.lastGamepadState.length)return-5;if(!JSEvents.lastGamepadState[index])return-7;fillGamepadEventData(gamepadState,JSEvents.lastGamepadState[index]);return 0}function _emscripten_get_num_gamepads(){return JSEvents.lastGamepadState.length}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension("ANGLE_instanced_arrays");if(ext){ctx["vertexAttribDivisor"]=function(index,divisor){ext["vertexAttribDivisorANGLE"](index,divisor)};ctx["drawArraysInstanced"]=function(mode,first,count,primcount){ext["drawArraysInstancedANGLE"](mode,first,count,primcount)};ctx["drawElementsInstanced"]=function(mode,count,type,indices,primcount){ext["drawElementsInstancedANGLE"](mode,count,type,indices,primcount)};return 1}}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension("OES_vertex_array_object");if(ext){ctx["createVertexArray"]=function(){return ext["createVertexArrayOES"]()};ctx["deleteVertexArray"]=function(vao){ext["deleteVertexArrayOES"](vao)};ctx["bindVertexArray"]=function(vao){ext["bindVertexArrayOES"](vao)};ctx["isVertexArray"]=function(vao){return ext["isVertexArrayOES"](vao)};return 1}}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension("WEBGL_draw_buffers");if(ext){ctx["drawBuffers"]=function(n,bufs){ext["drawBuffersWEBGL"](n,bufs)};return 1}}function __webgl_enable_WEBGL_multi_draw(ctx){return!!(ctx.multiDrawWebgl=ctx.getExtension("WEBGL_multi_draw"))}var GL={counter:1,buffers:[],programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:[],offscreenCanvases:{},timerQueriesEXT:[],programInfos:{},stringCache:{},unpackAlignment:4,recordError:function recordError(errorCode){if(!GL.lastError){GL.lastError=errorCode}},getNewId:function(table){var ret=GL.counter++;for(var i=table.length;i<ret;i++){table[i]=null}return ret},getSource:function(shader,count,string,length){var source="";for(var i=0;i<count;++i){var len=length?HEAP32[length+i*4>>2]:-1;source+=UTF8ToString(HEAP32[string+i*4>>2],len<0?undefined:len)}return source},createContext:function(canvas,webGLContextAttributes){var ctx=canvas.getContext("webgl",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:function(ctx,webGLContextAttributes){var handle=GL.getNewId(GL.contexts);var context={handle:handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};if(ctx.canvas)ctx.canvas.GLctxObject=context;GL.contexts[handle]=context;if(typeof webGLContextAttributes.enableExtensionsByDefault==="undefined"||webGLContextAttributes.enableExtensionsByDefault){GL.initExtensions(context)}return handle},makeContextCurrent:function(contextHandle){GL.currentContext=GL.contexts[contextHandle];Module.ctx=GLctx=GL.currentContext&&GL.currentContext.GLctx;return!(contextHandle&&!GLctx)},getContext:function(contextHandle){return GL.contexts[contextHandle]},deleteContext:function(contextHandle){if(GL.currentContext===GL.contexts[contextHandle])GL.currentContext=null;if(typeof JSEvents==="object")JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas);if(GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas)GL.contexts[contextHandle].GLctx.canvas.GLctxObject=undefined;GL.contexts[contextHandle]=null},initExtensions:function(context){if(!context)context=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;__webgl_enable_ANGLE_instanced_arrays(GLctx);__webgl_enable_OES_vertex_array_object(GLctx);__webgl_enable_WEBGL_draw_buffers(GLctx);GLctx.disjointTimerQueryExt=GLctx.getExtension("EXT_disjoint_timer_query");__webgl_enable_WEBGL_multi_draw(GLctx);var exts=GLctx.getSupportedExtensions()||[];exts.forEach(function(ext){if(ext.indexOf("lose_context")<0&&ext.indexOf("debug")<0){GLctx.getExtension(ext)}})},populateUniformTable:function(program){var p=GL.programs[program];var ptable=GL.programInfos[program]={uniforms:{},maxUniformLength:0,maxAttributeLength:-1,maxUniformBlockNameLength:-1};var utable=ptable.uniforms;var numUniforms=GLctx.getProgramParameter(p,35718);for(var i=0;i<numUniforms;++i){var u=GLctx.getActiveUniform(p,i);var name=u.name;ptable.maxUniformLength=Math.max(ptable.maxUniformLength,name.length+1);if(name.slice(-1)=="]"){name=name.slice(0,name.lastIndexOf("["))}var loc=GLctx.getUniformLocation(p,name);if(loc){var id=GL.getNewId(GL.uniforms);utable[name]=[u.size,id];GL.uniforms[id]=loc;for(var j=1;j<u.size;++j){var n=name+"["+j+"]";loc=GLctx.getUniformLocation(p,n);id=GL.getNewId(GL.uniforms);GL.uniforms[id]=loc}}}}};function _emscripten_glActiveTexture(x0){GLctx["activeTexture"](x0)}function _emscripten_glAttachShader(program,shader){GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _emscripten_glBeginQueryEXT(target,id){GLctx.disjointTimerQueryExt["beginQueryEXT"](target,GL.timerQueriesEXT[id])}function _emscripten_glBindAttribLocation(program,index,name){GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))}function _emscripten_glBindBuffer(target,buffer){GLctx.bindBuffer(target,GL.buffers[buffer])}function _emscripten_glBindFramebuffer(target,framebuffer){GLctx.bindFramebuffer(target,GL.framebuffers[framebuffer])}function _emscripten_glBindRenderbuffer(target,renderbuffer){GLctx.bindRenderbuffer(target,GL.renderbuffers[renderbuffer])}function _emscripten_glBindTexture(target,texture){GLctx.bindTexture(target,GL.textures[texture])}function _emscripten_glBindVertexArrayOES(vao){GLctx["bindVertexArray"](GL.vaos[vao])}function _emscripten_glBlendColor(x0,x1,x2,x3){GLctx["blendColor"](x0,x1,x2,x3)}function _emscripten_glBlendEquation(x0){GLctx["blendEquation"](x0)}function _emscripten_glBlendEquationSeparate(x0,x1){GLctx["blendEquationSeparate"](x0,x1)}function _emscripten_glBlendFunc(x0,x1){GLctx["blendFunc"](x0,x1)}function _emscripten_glBlendFuncSeparate(x0,x1,x2,x3){GLctx["blendFuncSeparate"](x0,x1,x2,x3)}function _emscripten_glBufferData(target,size,data,usage){GLctx.bufferData(target,data?HEAPU8.subarray(data,data+size):size,usage)}function _emscripten_glBufferSubData(target,offset,size,data){GLctx.bufferSubData(target,offset,HEAPU8.subarray(data,data+size))}function _emscripten_glCheckFramebufferStatus(x0){return GLctx["checkFramebufferStatus"](x0)}function _emscripten_glClear(x0){GLctx["clear"](x0)}function _emscripten_glClearColor(x0,x1,x2,x3){GLctx["clearColor"](x0,x1,x2,x3)}function _emscripten_glClearDepthf(x0){GLctx["clearDepth"](x0)}function _emscripten_glClearStencil(x0){GLctx["clearStencil"](x0)}function _emscripten_glColorMask(red,green,blue,alpha){GLctx.colorMask(!!red,!!green,!!blue,!!alpha)}function _emscripten_glCompileShader(shader){GLctx.compileShader(GL.shaders[shader])}function _emscripten_glCompressedTexImage2D(target,level,internalFormat,width,height,border,imageSize,data){GLctx["compressedTexImage2D"](target,level,internalFormat,width,height,border,data?HEAPU8.subarray(data,data+imageSize):null)}function _emscripten_glCompressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,imageSize,data){GLctx["compressedTexSubImage2D"](target,level,xoffset,yoffset,width,height,format,data?HEAPU8.subarray(data,data+imageSize):null)}function _emscripten_glCopyTexImage2D(x0,x1,x2,x3,x4,x5,x6,x7){GLctx["copyTexImage2D"](x0,x1,x2,x3,x4,x5,x6,x7)}function _emscripten_glCopyTexSubImage2D(x0,x1,x2,x3,x4,x5,x6,x7){GLctx["copyTexSubImage2D"](x0,x1,x2,x3,x4,x5,x6,x7)}function _emscripten_glCreateProgram(){var id=GL.getNewId(GL.programs);var program=GLctx.createProgram();program.name=id;GL.programs[id]=program;return id}function _emscripten_glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}function _emscripten_glCullFace(x0){GLctx["cullFace"](x0)}function _emscripten_glDeleteBuffers(n,buffers){for(var i=0;i<n;i++){var id=HEAP32[buffers+i*4>>2];var buffer=GL.buffers[id];if(!buffer)continue;GLctx.deleteBuffer(buffer);buffer.name=0;GL.buffers[id]=null}}function _emscripten_glDeleteFramebuffers(n,framebuffers){for(var i=0;i<n;++i){var id=HEAP32[framebuffers+i*4>>2];var framebuffer=GL.framebuffers[id];if(!framebuffer)continue;GLctx.deleteFramebuffer(framebuffer);framebuffer.name=0;GL.framebuffers[id]=null}}function _emscripten_glDeleteProgram(id){if(!id)return;var program=GL.programs[id];if(!program){GL.recordError(1281);return}GLctx.deleteProgram(program);program.name=0;GL.programs[id]=null;GL.programInfos[id]=null}function _emscripten_glDeleteQueriesEXT(n,ids){for(var i=0;i<n;i++){var id=HEAP32[ids+i*4>>2];var query=GL.timerQueriesEXT[id];if(!query)continue;GLctx.disjointTimerQueryExt["deleteQueryEXT"](query);GL.timerQueriesEXT[id]=null}}function _emscripten_glDeleteRenderbuffers(n,renderbuffers){for(var i=0;i<n;i++){var id=HEAP32[renderbuffers+i*4>>2];var renderbuffer=GL.renderbuffers[id];if(!renderbuffer)continue;GLctx.deleteRenderbuffer(renderbuffer);renderbuffer.name=0;GL.renderbuffers[id]=null}}function _emscripten_glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}function _emscripten_glDeleteTextures(n,textures){for(var i=0;i<n;i++){var id=HEAP32[textures+i*4>>2];var texture=GL.textures[id];if(!texture)continue;GLctx.deleteTexture(texture);texture.name=0;GL.textures[id]=null}}function _emscripten_glDeleteVertexArraysOES(n,vaos){for(var i=0;i<n;i++){var id=HEAP32[vaos+i*4>>2];GLctx["deleteVertexArray"](GL.vaos[id]);GL.vaos[id]=null}}function _emscripten_glDepthFunc(x0){GLctx["depthFunc"](x0)}function _emscripten_glDepthMask(flag){GLctx.depthMask(!!flag)}function _emscripten_glDepthRangef(x0,x1){GLctx["depthRange"](x0,x1)}function _emscripten_glDetachShader(program,shader){GLctx.detachShader(GL.programs[program],GL.shaders[shader])}function _emscripten_glDisable(x0){GLctx["disable"](x0)}function _emscripten_glDisableVertexAttribArray(index){GLctx.disableVertexAttribArray(index)}function _emscripten_glDrawArrays(mode,first,count){GLctx.drawArrays(mode,first,count)}function _emscripten_glDrawArraysInstancedANGLE(mode,first,count,primcount){GLctx["drawArraysInstanced"](mode,first,count,primcount)}var tempFixedLengthArray=[];function _emscripten_glDrawBuffersWEBGL(n,bufs){var bufArray=tempFixedLengthArray[n];for(var i=0;i<n;i++){bufArray[i]=HEAP32[bufs+i*4>>2]}GLctx["drawBuffers"](bufArray)}function _emscripten_glDrawElements(mode,count,type,indices){GLctx.drawElements(mode,count,type,indices)}function _emscripten_glDrawElementsInstancedANGLE(mode,count,type,indices,primcount){GLctx["drawElementsInstanced"](mode,count,type,indices,primcount)}function _emscripten_glEnable(x0){GLctx["enable"](x0)}function _emscripten_glEnableVertexAttribArray(index){GLctx.enableVertexAttribArray(index)}function _emscripten_glEndQueryEXT(target){GLctx.disjointTimerQueryExt["endQueryEXT"](target)}function _emscripten_glFinish(){GLctx["finish"]()}function _emscripten_glFlush(){GLctx["flush"]()}function _emscripten_glFramebufferRenderbuffer(target,attachment,renderbuffertarget,renderbuffer){GLctx.framebufferRenderbuffer(target,attachment,renderbuffertarget,GL.renderbuffers[renderbuffer])}function _emscripten_glFramebufferTexture2D(target,attachment,textarget,texture,level){GLctx.framebufferTexture2D(target,attachment,textarget,GL.textures[texture],level)}function _emscripten_glFrontFace(x0){GLctx["frontFace"](x0)}function __glGenObject(n,buffers,createFunction,objectTable){for(var i=0;i<n;i++){var buffer=GLctx[createFunction]();var id=buffer&&GL.getNewId(objectTable);if(buffer){buffer.name=id;objectTable[id]=buffer}else{GL.recordError(1282)}HEAP32[buffers+i*4>>2]=id}}function _emscripten_glGenBuffers(n,buffers){__glGenObject(n,buffers,"createBuffer",GL.buffers)}function _emscripten_glGenFramebuffers(n,ids){__glGenObject(n,ids,"createFramebuffer",GL.framebuffers)}function _emscripten_glGenQueriesEXT(n,ids){for(var i=0;i<n;i++){var query=GLctx.disjointTimerQueryExt["createQueryEXT"]();if(!query){GL.recordError(1282);while(i<n)HEAP32[ids+i++*4>>2]=0;return}var id=GL.getNewId(GL.timerQueriesEXT);query.name=id;GL.timerQueriesEXT[id]=query;HEAP32[ids+i*4>>2]=id}}function _emscripten_glGenRenderbuffers(n,renderbuffers){__glGenObject(n,renderbuffers,"createRenderbuffer",GL.renderbuffers)}function _emscripten_glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures)}function _emscripten_glGenVertexArraysOES(n,arrays){__glGenObject(n,arrays,"createVertexArray",GL.vaos)}function _emscripten_glGenerateMipmap(x0){GLctx["generateMipmap"](x0)}function __glGetActiveAttribOrUniform(funcName,program,index,bufSize,length,size,type,name){program=GL.programs[program];var info=GLctx[funcName](program,index);if(info){var numBytesWrittenExclNull=name&&stringToUTF8(info.name,name,bufSize);if(length)HEAP32[length>>2]=numBytesWrittenExclNull;if(size)HEAP32[size>>2]=info.size;if(type)HEAP32[type>>2]=info.type}}function _emscripten_glGetActiveAttrib(program,index,bufSize,length,size,type,name){__glGetActiveAttribOrUniform("getActiveAttrib",program,index,bufSize,length,size,type,name)}function _emscripten_glGetActiveUniform(program,index,bufSize,length,size,type,name){__glGetActiveAttribOrUniform("getActiveUniform",program,index,bufSize,length,size,type,name)}function _emscripten_glGetAttachedShaders(program,maxCount,count,shaders){var result=GLctx.getAttachedShaders(GL.programs[program]);var len=result.length;if(len>maxCount){len=maxCount}HEAP32[count>>2]=len;for(var i=0;i<len;++i){var id=GL.shaders.indexOf(result[i]);HEAP32[shaders+i*4>>2]=id}}function _emscripten_glGetAttribLocation(program,name){return GLctx.getAttribLocation(GL.programs[program],UTF8ToString(name))}function writeI53ToI64(ptr,num){HEAPU32[ptr>>2]=num;HEAPU32[ptr+4>>2]=(num-HEAPU32[ptr>>2])/4294967296}function emscriptenWebGLGet(name_,p,type){if(!p){GL.recordError(1281);return}var ret=undefined;switch(name_){case 36346:ret=1;break;case 36344:if(type!=0&&type!=1){GL.recordError(1280)}return;case 36345:ret=0;break;case 34466:var formats=GLctx.getParameter(34467);ret=formats?formats.length:0;break}if(ret===undefined){var result=GLctx.getParameter(name_);switch(typeof result){case"number":ret=result;break;case"boolean":ret=result?1:0;break;case"string":GL.recordError(1280);return;case"object":if(result===null){switch(name_){case 34964:case 35725:case 34965:case 36006:case 36007:case 32873:case 34229:case 34068:{ret=0;break}default:{GL.recordError(1280);return}}}else if(result instanceof Float32Array||result instanceof Uint32Array||result instanceof Int32Array||result instanceof Array){for(var i=0;i<result.length;++i){switch(type){case 0:HEAP32[p+i*4>>2]=result[i];break;case 2:HEAPF32[p+i*4>>2]=result[i];break;case 4:HEAP8[p+i>>0]=result[i]?1:0;break}}return}else{try{ret=result.name|0}catch(e){GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v: Unknown object returned from WebGL getParameter("+name_+")! (error: "+e+")");return}}break;default:GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v: Native code calling glGet"+type+"v("+name_+") and it returns "+result+" of type "+typeof result+"!");return}}switch(type){case 1:writeI53ToI64(p,ret);break;case 0:HEAP32[p>>2]=ret;break;case 2:HEAPF32[p>>2]=ret;break;case 4:HEAP8[p>>0]=ret?1:0;break}}function _emscripten_glGetBooleanv(name_,p){emscriptenWebGLGet(name_,p,4)}function _emscripten_glGetBufferParameteriv(target,value,data){if(!data){GL.recordError(1281);return}HEAP32[data>>2]=GLctx.getBufferParameter(target,value)}function _emscripten_glGetError(){var error=GLctx.getError()||GL.lastError;GL.lastError=0;return error}function _emscripten_glGetFloatv(name_,p){emscriptenWebGLGet(name_,p,2)}function _emscripten_glGetFramebufferAttachmentParameteriv(target,attachment,pname,params){var result=GLctx.getFramebufferAttachmentParameter(target,attachment,pname);if(result instanceof WebGLRenderbuffer||result instanceof WebGLTexture){result=result.name|0}HEAP32[params>>2]=result}function _emscripten_glGetIntegerv(name_,p){emscriptenWebGLGet(name_,p,0)}function _emscripten_glGetProgramInfoLog(program,maxLength,length,infoLog){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _emscripten_glGetProgramiv(program,pname,p){if(!p){GL.recordError(1281);return}if(program>=GL.counter){GL.recordError(1281);return}var ptable=GL.programInfos[program];if(!ptable){GL.recordError(1282);return}if(pname==35716){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";HEAP32[p>>2]=log.length+1}else if(pname==35719){HEAP32[p>>2]=ptable.maxUniformLength}else if(pname==35722){if(ptable.maxAttributeLength==-1){program=GL.programs[program];var numAttribs=GLctx.getProgramParameter(program,35721);ptable.maxAttributeLength=0;for(var i=0;i<numAttribs;++i){var activeAttrib=GLctx.getActiveAttrib(program,i);ptable.maxAttributeLength=Math.max(ptable.maxAttributeLength,activeAttrib.name.length+1)}}HEAP32[p>>2]=ptable.maxAttributeLength}else if(pname==35381){if(ptable.maxUniformBlockNameLength==-1){program=GL.programs[program];var numBlocks=GLctx.getProgramParameter(program,35382);ptable.maxUniformBlockNameLength=0;for(var i=0;i<numBlocks;++i){var activeBlockName=GLctx.getActiveUniformBlockName(program,i);ptable.maxUniformBlockNameLength=Math.max(ptable.maxUniformBlockNameLength,activeBlockName.length+1)}}HEAP32[p>>2]=ptable.maxUniformBlockNameLength}else{HEAP32[p>>2]=GLctx.getProgramParameter(GL.programs[program],pname)}}function _emscripten_glGetQueryObjecti64vEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.timerQueriesEXT[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}writeI53ToI64(params,ret)}function _emscripten_glGetQueryObjectivEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.timerQueriesEXT[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}HEAP32[params>>2]=ret}function _emscripten_glGetQueryObjectui64vEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.timerQueriesEXT[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}writeI53ToI64(params,ret)}function _emscripten_glGetQueryObjectuivEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.timerQueriesEXT[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}HEAP32[params>>2]=ret}function _emscripten_glGetQueryivEXT(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.disjointTimerQueryExt["getQueryEXT"](target,pname)}function _emscripten_glGetRenderbufferParameteriv(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getRenderbufferParameter(target,pname)}function _emscripten_glGetShaderInfoLog(shader,maxLength,length,infoLog){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _emscripten_glGetShaderPrecisionFormat(shaderType,precisionType,range,precision){var result=GLctx.getShaderPrecisionFormat(shaderType,precisionType);HEAP32[range>>2]=result.rangeMin;HEAP32[range+4>>2]=result.rangeMax;HEAP32[precision>>2]=result.precision}function _emscripten_glGetShaderSource(shader,bufSize,length,source){var result=GLctx.getShaderSource(GL.shaders[shader]);if(!result)return;var numBytesWrittenExclNull=bufSize>0&&source?stringToUTF8(result,source,bufSize):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _emscripten_glGetShaderiv(shader,pname,p){if(!p){GL.recordError(1281);return}if(pname==35716){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var logLength=log?log.length+1:0;HEAP32[p>>2]=logLength}else if(pname==35720){var source=GLctx.getShaderSource(GL.shaders[shader]);var sourceLength=source?source.length+1:0;HEAP32[p>>2]=sourceLength}else{HEAP32[p>>2]=GLctx.getShaderParameter(GL.shaders[shader],pname)}}function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _emscripten_glGetString(name_){if(GL.stringCache[name_])return GL.stringCache[name_];var ret;switch(name_){case 7939:var exts=GLctx.getSupportedExtensions()||[];exts=exts.concat(exts.map(function(e){return"GL_"+e}));ret=stringToNewUTF8(exts.join(" "));break;case 7936:case 7937:case 37445:case 37446:var s=GLctx.getParameter(name_);if(!s){GL.recordError(1280)}ret=stringToNewUTF8(s);break;case 7938:var glVersion=GLctx.getParameter(7938);{glVersion="OpenGL ES 2.0 ("+glVersion+")"}ret=stringToNewUTF8(glVersion);break;case 35724:var glslVersion=GLctx.getParameter(35724);var ver_re=/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/;var ver_num=glslVersion.match(ver_re);if(ver_num!==null){if(ver_num[1].length==3)ver_num[1]=ver_num[1]+"0";glslVersion="OpenGL ES GLSL ES "+ver_num[1]+" ("+glslVersion+")"}ret=stringToNewUTF8(glslVersion);break;default:GL.recordError(1280);return 0}GL.stringCache[name_]=ret;return ret}function _emscripten_glGetTexParameterfv(target,pname,params){if(!params){GL.recordError(1281);return}HEAPF32[params>>2]=GLctx.getTexParameter(target,pname)}function _emscripten_glGetTexParameteriv(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getTexParameter(target,pname)}function jstoi_q(str){return parseInt(str)}function _emscripten_glGetUniformLocation(program,name){name=UTF8ToString(name);var arrayIndex=0;if(name[name.length-1]=="]"){var leftBrace=name.lastIndexOf("[");arrayIndex=name[leftBrace+1]!="]"?jstoi_q(name.slice(leftBrace+1)):0;name=name.slice(0,leftBrace)}var uniformInfo=GL.programInfos[program]&&GL.programInfos[program].uniforms[name];if(uniformInfo&&arrayIndex>=0&&arrayIndex<uniformInfo[0]){return uniformInfo[1]+arrayIndex}else{return-1}}function emscriptenWebGLGetUniform(program,location,params,type){if(!params){GL.recordError(1281);return}var data=GLctx.getUniform(GL.programs[program],GL.uniforms[location]);if(typeof data=="number"||typeof data=="boolean"){switch(type){case 0:HEAP32[params>>2]=data;break;case 2:HEAPF32[params>>2]=data;break}}else{for(var i=0;i<data.length;i++){switch(type){case 0:HEAP32[params+i*4>>2]=data[i];break;case 2:HEAPF32[params+i*4>>2]=data[i];break}}}}function _emscripten_glGetUniformfv(program,location,params){emscriptenWebGLGetUniform(program,location,params,2)}function _emscripten_glGetUniformiv(program,location,params){emscriptenWebGLGetUniform(program,location,params,0)}function _emscripten_glGetVertexAttribPointerv(index,pname,pointer){if(!pointer){GL.recordError(1281);return}HEAP32[pointer>>2]=GLctx.getVertexAttribOffset(index,pname)}function emscriptenWebGLGetVertexAttrib(index,pname,params,type){if(!params){GL.recordError(1281);return}var data=GLctx.getVertexAttrib(index,pname);if(pname==34975){HEAP32[params>>2]=data&&data["name"]}else if(typeof data=="number"||typeof data=="boolean"){switch(type){case 0:HEAP32[params>>2]=data;break;case 2:HEAPF32[params>>2]=data;break;case 5:HEAP32[params>>2]=Math.fround(data);break}}else{for(var i=0;i<data.length;i++){switch(type){case 0:HEAP32[params+i*4>>2]=data[i];break;case 2:HEAPF32[params+i*4>>2]=data[i];break;case 5:HEAP32[params+i*4>>2]=Math.fround(data[i]);break}}}}function _emscripten_glGetVertexAttribfv(index,pname,params){emscriptenWebGLGetVertexAttrib(index,pname,params,2)}function _emscripten_glGetVertexAttribiv(index,pname,params){emscriptenWebGLGetVertexAttrib(index,pname,params,5)}function _emscripten_glHint(x0,x1){GLctx["hint"](x0,x1)}function _emscripten_glIsBuffer(buffer){var b=GL.buffers[buffer];if(!b)return 0;return GLctx.isBuffer(b)}function _emscripten_glIsEnabled(x0){return GLctx["isEnabled"](x0)}function _emscripten_glIsFramebuffer(framebuffer){var fb=GL.framebuffers[framebuffer];if(!fb)return 0;return GLctx.isFramebuffer(fb)}function _emscripten_glIsProgram(program){program=GL.programs[program];if(!program)return 0;return GLctx.isProgram(program)}function _emscripten_glIsQueryEXT(id){var query=GL.timerQueriesEXT[id];if(!query)return 0;return GLctx.disjointTimerQueryExt["isQueryEXT"](query)}function _emscripten_glIsRenderbuffer(renderbuffer){var rb=GL.renderbuffers[renderbuffer];if(!rb)return 0;return GLctx.isRenderbuffer(rb)}function _emscripten_glIsShader(shader){var s=GL.shaders[shader];if(!s)return 0;return GLctx.isShader(s)}function _emscripten_glIsTexture(id){var texture=GL.textures[id];if(!texture)return 0;return GLctx.isTexture(texture)}function _emscripten_glIsVertexArrayOES(array){var vao=GL.vaos[array];if(!vao)return 0;return GLctx["isVertexArray"](vao)}function _emscripten_glLineWidth(x0){GLctx["lineWidth"](x0)}function _emscripten_glLinkProgram(program){GLctx.linkProgram(GL.programs[program]);GL.populateUniformTable(program)}function _emscripten_glPixelStorei(pname,param){if(pname==3317){GL.unpackAlignment=param}GLctx.pixelStorei(pname,param)}function _emscripten_glPolygonOffset(x0,x1){GLctx["polygonOffset"](x0,x1)}function _emscripten_glQueryCounterEXT(id,target){GLctx.disjointTimerQueryExt["queryCounterEXT"](GL.timerQueriesEXT[id],target)}function computeUnpackAlignedImageSize(width,height,sizePerPixel,alignment){function roundedToNextMultipleOf(x,y){return x+y-1&-y}var plainRowSize=width*sizePerPixel;var alignedRowSize=roundedToNextMultipleOf(plainRowSize,alignment);return height*alignedRowSize}function __colorChannelsInGlTextureFormat(format){var colorChannels={5:3,6:4,8:2,29502:3,29504:4};return colorChannels[format-6402]||1}function heapObjectForWebGLType(type){type-=5120;if(type==1)return HEAPU8;if(type==4)return HEAP32;if(type==6)return HEAPF32;if(type==5||type==28922)return HEAPU32;return HEAPU16}function heapAccessShiftForWebGLHeap(heap){return 31-Math.clz32(heap.BYTES_PER_ELEMENT)}function emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat){var heap=heapObjectForWebGLType(type);var shift=heapAccessShiftForWebGLHeap(heap);var byteSize=1<<shift;var sizePerPixel=__colorChannelsInGlTextureFormat(format)*byteSize;var bytes=computeUnpackAlignedImageSize(width,height,sizePerPixel,GL.unpackAlignment);return heap.subarray(pixels>>shift,pixels+bytes>>shift)}function _emscripten_glReadPixels(x,y,width,height,format,type,pixels){var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);return}GLctx.readPixels(x,y,width,height,format,type,pixelData)}function _emscripten_glReleaseShaderCompiler(){}function _emscripten_glRenderbufferStorage(x0,x1,x2,x3){GLctx["renderbufferStorage"](x0,x1,x2,x3)}function _emscripten_glSampleCoverage(value,invert){GLctx.sampleCoverage(value,!!invert)}function _emscripten_glScissor(x0,x1,x2,x3){GLctx["scissor"](x0,x1,x2,x3)}function _emscripten_glShaderBinary(){GL.recordError(1280)}function _emscripten_glShaderSource(shader,count,string,length){var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}function _emscripten_glStencilFunc(x0,x1,x2){GLctx["stencilFunc"](x0,x1,x2)}function _emscripten_glStencilFuncSeparate(x0,x1,x2,x3){GLctx["stencilFuncSeparate"](x0,x1,x2,x3)}function _emscripten_glStencilMask(x0){GLctx["stencilMask"](x0)}function _emscripten_glStencilMaskSeparate(x0,x1){GLctx["stencilMaskSeparate"](x0,x1)}function _emscripten_glStencilOp(x0,x1,x2){GLctx["stencilOp"](x0,x1,x2)}function _emscripten_glStencilOpSeparate(x0,x1,x2,x3){GLctx["stencilOpSeparate"](x0,x1,x2,x3)}function _emscripten_glTexImage2D(target,level,internalFormat,width,height,border,format,type,pixels){GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels?emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat):null)}function _emscripten_glTexParameterf(x0,x1,x2){GLctx["texParameterf"](x0,x1,x2)}function _emscripten_glTexParameterfv(target,pname,params){var param=HEAPF32[params>>2];GLctx.texParameterf(target,pname,param)}function _emscripten_glTexParameteri(x0,x1,x2){GLctx["texParameteri"](x0,x1,x2)}function _emscripten_glTexParameteriv(target,pname,params){var param=HEAP32[params>>2];GLctx.texParameteri(target,pname,param)}function _emscripten_glTexSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixels){var pixelData=null;if(pixels)pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,0);GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixelData)}function _emscripten_glUniform1f(location,v0){GLctx.uniform1f(GL.uniforms[location],v0)}var miniTempWebGLFloatBuffers=[];function _emscripten_glUniform1fv(location,count,value){if(count<=288){var view=miniTempWebGLFloatBuffers[count-1];for(var i=0;i<count;++i){view[i]=HEAPF32[value+4*i>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*4>>2)}GLctx.uniform1fv(GL.uniforms[location],view)}function _emscripten_glUniform1i(location,v0){GLctx.uniform1i(GL.uniforms[location],v0)}var __miniTempWebGLIntBuffers=[];function _emscripten_glUniform1iv(location,count,value){if(count<=288){var view=__miniTempWebGLIntBuffers[count-1];for(var i=0;i<count;++i){view[i]=HEAP32[value+4*i>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*4>>2)}GLctx.uniform1iv(GL.uniforms[location],view)}function _emscripten_glUniform2f(location,v0,v1){GLctx.uniform2f(GL.uniforms[location],v0,v1)}function _emscripten_glUniform2fv(location,count,value){if(count<=144){var view=miniTempWebGLFloatBuffers[2*count-1];for(var i=0;i<2*count;i+=2){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*8>>2)}GLctx.uniform2fv(GL.uniforms[location],view)}function _emscripten_glUniform2i(location,v0,v1){GLctx.uniform2i(GL.uniforms[location],v0,v1)}function _emscripten_glUniform2iv(location,count,value){if(count<=144){var view=__miniTempWebGLIntBuffers[2*count-1];for(var i=0;i<2*count;i+=2){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*8>>2)}GLctx.uniform2iv(GL.uniforms[location],view)}function _emscripten_glUniform3f(location,v0,v1,v2){GLctx.uniform3f(GL.uniforms[location],v0,v1,v2)}function _emscripten_glUniform3fv(location,count,value){if(count<=96){var view=miniTempWebGLFloatBuffers[3*count-1];for(var i=0;i<3*count;i+=3){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*12>>2)}GLctx.uniform3fv(GL.uniforms[location],view)}function _emscripten_glUniform3i(location,v0,v1,v2){GLctx.uniform3i(GL.uniforms[location],v0,v1,v2)}function _emscripten_glUniform3iv(location,count,value){if(count<=96){var view=__miniTempWebGLIntBuffers[3*count-1];for(var i=0;i<3*count;i+=3){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2];view[i+2]=HEAP32[value+(4*i+8)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*12>>2)}GLctx.uniform3iv(GL.uniforms[location],view)}function _emscripten_glUniform4f(location,v0,v1,v2,v3){GLctx.uniform4f(GL.uniforms[location],v0,v1,v2,v3)}function _emscripten_glUniform4fv(location,count,value){if(count<=72){var view=miniTempWebGLFloatBuffers[4*count-1];var heap=HEAPF32;value>>=2;for(var i=0;i<4*count;i+=4){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3]}}else{var view=HEAPF32.subarray(value>>2,value+count*16>>2)}GLctx.uniform4fv(GL.uniforms[location],view)}function _emscripten_glUniform4i(location,v0,v1,v2,v3){GLctx.uniform4i(GL.uniforms[location],v0,v1,v2,v3)}function _emscripten_glUniform4iv(location,count,value){if(count<=72){var view=__miniTempWebGLIntBuffers[4*count-1];for(var i=0;i<4*count;i+=4){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2];view[i+2]=HEAP32[value+(4*i+8)>>2];view[i+3]=HEAP32[value+(4*i+12)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*16>>2)}GLctx.uniform4iv(GL.uniforms[location],view)}function _emscripten_glUniformMatrix2fv(location,count,transpose,value){if(count<=72){var view=miniTempWebGLFloatBuffers[4*count-1];for(var i=0;i<4*count;i+=4){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2];view[i+3]=HEAPF32[value+(4*i+12)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*16>>2)}GLctx.uniformMatrix2fv(GL.uniforms[location],!!transpose,view)}function _emscripten_glUniformMatrix3fv(location,count,transpose,value){if(count<=32){var view=miniTempWebGLFloatBuffers[9*count-1];for(var i=0;i<9*count;i+=9){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2];view[i+3]=HEAPF32[value+(4*i+12)>>2];view[i+4]=HEAPF32[value+(4*i+16)>>2];view[i+5]=HEAPF32[value+(4*i+20)>>2];view[i+6]=HEAPF32[value+(4*i+24)>>2];view[i+7]=HEAPF32[value+(4*i+28)>>2];view[i+8]=HEAPF32[value+(4*i+32)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*36>>2)}GLctx.uniformMatrix3fv(GL.uniforms[location],!!transpose,view)}function _emscripten_glUniformMatrix4fv(location,count,transpose,value){if(count<=18){var view=miniTempWebGLFloatBuffers[16*count-1];var heap=HEAPF32;value>>=2;for(var i=0;i<16*count;i+=16){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3];view[i+4]=heap[dst+4];view[i+5]=heap[dst+5];view[i+6]=heap[dst+6];view[i+7]=heap[dst+7];view[i+8]=heap[dst+8];view[i+9]=heap[dst+9];view[i+10]=heap[dst+10];view[i+11]=heap[dst+11];view[i+12]=heap[dst+12];view[i+13]=heap[dst+13];view[i+14]=heap[dst+14];view[i+15]=heap[dst+15]}}else{var view=HEAPF32.subarray(value>>2,value+count*64>>2)}GLctx.uniformMatrix4fv(GL.uniforms[location],!!transpose,view)}function _emscripten_glUseProgram(program){GLctx.useProgram(GL.programs[program])}function _emscripten_glValidateProgram(program){GLctx.validateProgram(GL.programs[program])}function _emscripten_glVertexAttrib1f(x0,x1){GLctx["vertexAttrib1f"](x0,x1)}function _emscripten_glVertexAttrib1fv(index,v){GLctx.vertexAttrib1f(index,HEAPF32[v>>2])}function _emscripten_glVertexAttrib2f(x0,x1,x2){GLctx["vertexAttrib2f"](x0,x1,x2)}function _emscripten_glVertexAttrib2fv(index,v){GLctx.vertexAttrib2f(index,HEAPF32[v>>2],HEAPF32[v+4>>2])}function _emscripten_glVertexAttrib3f(x0,x1,x2,x3){GLctx["vertexAttrib3f"](x0,x1,x2,x3)}function _emscripten_glVertexAttrib3fv(index,v){GLctx.vertexAttrib3f(index,HEAPF32[v>>2],HEAPF32[v+4>>2],HEAPF32[v+8>>2])}function _emscripten_glVertexAttrib4f(x0,x1,x2,x3,x4){GLctx["vertexAttrib4f"](x0,x1,x2,x3,x4)}function _emscripten_glVertexAttrib4fv(index,v){GLctx.vertexAttrib4f(index,HEAPF32[v>>2],HEAPF32[v+4>>2],HEAPF32[v+8>>2],HEAPF32[v+12>>2])}function _emscripten_glVertexAttribDivisorANGLE(index,divisor){GLctx["vertexAttribDivisor"](index,divisor)}function _emscripten_glVertexAttribPointer(index,size,type,normalized,stride,ptr){GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}function _emscripten_glViewport(x0,x1,x2,x3){GLctx["viewport"](x0,x1,x2,x3)}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function abortOnCannotGrowMemory(requestedSize){abort("OOM")}function _emscripten_resize_heap(requestedSize){abortOnCannotGrowMemory(requestedSize)}function _emscripten_run_script(ptr){eval(UTF8ToString(ptr))}function _emscripten_sample_gamepad_data(){return(JSEvents.lastGamepadState=navigator.getGamepads?navigator.getGamepads():navigator.webkitGetGamepads?navigator.webkitGetGamepads():null)?0:-1}function fillMouseEventData(eventStruct,e,target){var idx=eventStruct>>2;HEAP32[idx+0]=e.screenX;HEAP32[idx+1]=e.screenY;HEAP32[idx+2]=e.clientX;HEAP32[idx+3]=e.clientY;HEAP32[idx+4]=e.ctrlKey;HEAP32[idx+5]=e.shiftKey;HEAP32[idx+6]=e.altKey;HEAP32[idx+7]=e.metaKey;HEAP16[idx*2+16]=e.button;HEAP16[idx*2+17]=e.buttons;HEAP32[idx+9]=e["movementX"];HEAP32[idx+10]=e["movementY"];var rect=getBoundingClientRect(target);HEAP32[idx+11]=e.clientX-rect.left;HEAP32[idx+12]=e.clientY-rect.top}function registerMouseEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.mouseEvent)JSEvents.mouseEvent=_malloc(64);target=findEventTarget(target);var mouseEventHandlerFunc=function(ev){var e=ev||event;fillMouseEventData(JSEvents.mouseEvent,e,target);if(wasmTable.get(callbackfunc)(eventTypeId,JSEvents.mouseEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:eventTypeString!="mousemove"&&eventTypeString!="mouseenter"&&eventTypeString!="mouseleave",eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:mouseEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_click_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,4,"click",targetThread);return 0}function fillFullscreenChangeEventData(eventStruct){var fullscreenElement=document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement||document.msFullscreenElement;var isFullscreen=!!fullscreenElement;HEAP32[eventStruct>>2]=isFullscreen;HEAP32[eventStruct+4>>2]=JSEvents.fullscreenEnabled();var reportedElement=isFullscreen?fullscreenElement:JSEvents.previousFullscreenElement;var nodeName=JSEvents.getNodeNameForTarget(reportedElement);var id=reportedElement&&reportedElement.id?reportedElement.id:"";stringToUTF8(nodeName,eventStruct+8,128);stringToUTF8(id,eventStruct+136,128);HEAP32[eventStruct+264>>2]=reportedElement?reportedElement.clientWidth:0;HEAP32[eventStruct+268>>2]=reportedElement?reportedElement.clientHeight:0;HEAP32[eventStruct+272>>2]=screen.width;HEAP32[eventStruct+276>>2]=screen.height;if(isFullscreen){JSEvents.previousFullscreenElement=fullscreenElement}}function registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.fullscreenChangeEvent)JSEvents.fullscreenChangeEvent=_malloc(280);var fullscreenChangeEventhandlerFunc=function(ev){var e=ev||event;var fullscreenChangeEvent=JSEvents.fullscreenChangeEvent;fillFullscreenChangeEventData(fullscreenChangeEvent);if(wasmTable.get(callbackfunc)(eventTypeId,fullscreenChangeEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:fullscreenChangeEventhandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_fullscreenchange_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){if(!JSEvents.fullscreenEnabled())return-1;target=findEventTarget(target);if(!target)return-4;registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,19,"fullscreenchange",targetThread);registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,19,"webkitfullscreenchange",targetThread);return 0}function registerGamepadEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.gamepadEvent)JSEvents.gamepadEvent=_malloc(1432);var gamepadEventHandlerFunc=function(ev){var e=ev||event;var gamepadEvent=JSEvents.gamepadEvent;fillGamepadEventData(gamepadEvent,e["gamepad"]);if(wasmTable.get(callbackfunc)(eventTypeId,gamepadEvent,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:gamepadEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_gamepadconnected_callback_on_thread(userData,useCapture,callbackfunc,targetThread){if(!navigator.getGamepads&&!navigator.webkitGetGamepads)return-1;registerGamepadEventCallback(2,userData,useCapture,callbackfunc,26,"gamepadconnected",targetThread);return 0}function _emscripten_set_gamepaddisconnected_callback_on_thread(userData,useCapture,callbackfunc,targetThread){if(!navigator.getGamepads&&!navigator.webkitGetGamepads)return-1;registerGamepadEventCallback(2,userData,useCapture,callbackfunc,27,"gamepaddisconnected",targetThread);return 0}function registerKeyEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.keyEvent)JSEvents.keyEvent=_malloc(164);var keyEventHandlerFunc=function(e){var keyEventData=JSEvents.keyEvent;var idx=keyEventData>>2;HEAP32[idx+0]=e.location;HEAP32[idx+1]=e.ctrlKey;HEAP32[idx+2]=e.shiftKey;HEAP32[idx+3]=e.altKey;HEAP32[idx+4]=e.metaKey;HEAP32[idx+5]=e.repeat;HEAP32[idx+6]=e.charCode;HEAP32[idx+7]=e.keyCode;HEAP32[idx+8]=e.which;stringToUTF8(e.key||"",keyEventData+36,32);stringToUTF8(e.code||"",keyEventData+68,32);stringToUTF8(e.char||"",keyEventData+100,32);stringToUTF8(e.locale||"",keyEventData+132,32);if(wasmTable.get(callbackfunc)(eventTypeId,keyEventData,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:keyEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_keydown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,2,"keydown",targetThread);return 0}var Browser={mainLoop:{scheduler:null,method:"",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause:function(){Browser.mainLoop.scheduler=null;Browser.mainLoop.currentlyRunningMainloop++},resume:function(){Browser.mainLoop.currentlyRunningMainloop++;var timingMode=Browser.mainLoop.timingMode;var timingValue=Browser.mainLoop.timingValue;var func=Browser.mainLoop.func;Browser.mainLoop.func=null;setMainLoop(func,0,false,Browser.mainLoop.arg,true);_emscripten_set_main_loop_timing(timingMode,timingValue);Browser.mainLoop.scheduler()},updateStatus:function(){if(Module["setStatus"]){var message=Module["statusMessage"]||"Please wait...";var remaining=Browser.mainLoop.remainingBlockers;var expected=Browser.mainLoop.expectedBlockers;if(remaining){if(remaining<expected){Module["setStatus"](message+" ("+(expected-remaining)+"/"+expected+")")}else{Module["setStatus"](message)}}else{Module["setStatus"]("")}}},runIter:function(func){if(ABORT)return;if(Module["preMainLoop"]){var preRet=Module["preMainLoop"]();if(preRet===false){return}}try{func()}catch(e){if(e instanceof ExitStatus){return}else if(e=="unwind"){return}else{if(e&&typeof e==="object"&&e.stack)err("exception thrown: "+[e,e.stack]);throw e}}if(Module["postMainLoop"])Module["postMainLoop"]()}},isFullscreen:false,pointerLock:false,moduleContextCreatedCallbacks:[],workers:[],init:function(){if(!Module["preloadPlugins"])Module["preloadPlugins"]=[];if(Browser.initted)return;Browser.initted=true;try{new Blob;Browser.hasBlobConstructor=true}catch(e){Browser.hasBlobConstructor=false;console.log("warning: no blob constructor, cannot create blobs with mimetypes")}Browser.BlobBuilder=typeof MozBlobBuilder!="undefined"?MozBlobBuilder:typeof WebKitBlobBuilder!="undefined"?WebKitBlobBuilder:!Browser.hasBlobConstructor?console.log("warning: no BlobBuilder"):null;Browser.URLObject=typeof window!="undefined"?window.URL?window.URL:window.webkitURL:undefined;if(!Module.noImageDecoding&&typeof Browser.URLObject==="undefined"){console.log("warning: Browser does not support creating object URLs. Built-in browser image decoding will not be available.");Module.noImageDecoding=true}var imagePlugin={};imagePlugin["canHandle"]=function imagePlugin_canHandle(name){return!Module.noImageDecoding&&/\.(jpg|jpeg|png|bmp)$/i.test(name)};imagePlugin["handle"]=function imagePlugin_handle(byteArray,name,onload,onerror){var b=null;if(Browser.hasBlobConstructor){try{b=new Blob([byteArray],{type:Browser.getMimetype(name)});if(b.size!==byteArray.length){b=new Blob([new Uint8Array(byteArray).buffer],{type:Browser.getMimetype(name)})}}catch(e){warnOnce("Blob constructor present but fails: "+e+"; falling back to blob builder")}}if(!b){var bb=new Browser.BlobBuilder;bb.append(new Uint8Array(byteArray).buffer);b=bb.getBlob()}var url=Browser.URLObject.createObjectURL(b);var img=new Image;img.onload=function img_onload(){assert(img.complete,"Image "+name+" could not be decoded");var canvas=document.createElement("canvas");canvas.width=img.width;canvas.height=img.height;var ctx=canvas.getContext("2d");ctx.drawImage(img,0,0);Module["preloadedImages"][name]=canvas;Browser.URLObject.revokeObjectURL(url);if(onload)onload(byteArray)};img.onerror=function img_onerror(event){console.log("Image "+url+" could not be decoded");if(onerror)onerror()};img.src=url};Module["preloadPlugins"].push(imagePlugin);var audioPlugin={};audioPlugin["canHandle"]=function audioPlugin_canHandle(name){return!Module.noAudioDecoding&&name.substr(-4)in{".ogg":1,".wav":1,".mp3":1}};audioPlugin["handle"]=function audioPlugin_handle(byteArray,name,onload,onerror){var done=false;function finish(audio){if(done)return;done=true;Module["preloadedAudios"][name]=audio;if(onload)onload(byteArray)}function fail(){if(done)return;done=true;Module["preloadedAudios"][name]=new Audio;if(onerror)onerror()}if(Browser.hasBlobConstructor){try{var b=new Blob([byteArray],{type:Browser.getMimetype(name)})}catch(e){return fail()}var url=Browser.URLObject.createObjectURL(b);var audio=new Audio;audio.addEventListener("canplaythrough",function(){finish(audio)},false);audio.onerror=function audio_onerror(event){if(done)return;console.log("warning: browser could not fully decode audio "+name+", trying slower base64 approach");function encode64(data){var BASE="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var PAD="=";var ret="";var leftchar=0;var leftbits=0;for(var i=0;i<data.length;i++){leftchar=leftchar<<8|data[i];leftbits+=8;while(leftbits>=6){var curr=leftchar>>leftbits-6&63;leftbits-=6;ret+=BASE[curr]}}if(leftbits==2){ret+=BASE[(leftchar&3)<<4];ret+=PAD+PAD}else if(leftbits==4){ret+=BASE[(leftchar&15)<<2];ret+=PAD}return ret}audio.src="data:audio/x-"+name.substr(-3)+";base64,"+encode64(byteArray);finish(audio)};audio.src=url;Browser.safeSetTimeout(function(){finish(audio)},1e4)}else{return fail()}};Module["preloadPlugins"].push(audioPlugin);function pointerLockChange(){Browser.pointerLock=document["pointerLockElement"]===Module["canvas"]||document["mozPointerLockElement"]===Module["canvas"]||document["webkitPointerLockElement"]===Module["canvas"]||document["msPointerLockElement"]===Module["canvas"]}var canvas=Module["canvas"];if(canvas){canvas.requestPointerLock=canvas["requestPointerLock"]||canvas["mozRequestPointerLock"]||canvas["webkitRequestPointerLock"]||canvas["msRequestPointerLock"]||function(){};canvas.exitPointerLock=document["exitPointerLock"]||document["mozExitPointerLock"]||document["webkitExitPointerLock"]||document["msExitPointerLock"]||function(){};canvas.exitPointerLock=canvas.exitPointerLock.bind(document);document.addEventListener("pointerlockchange",pointerLockChange,false);document.addEventListener("mozpointerlockchange",pointerLockChange,false);document.addEventListener("webkitpointerlockchange",pointerLockChange,false);document.addEventListener("mspointerlockchange",pointerLockChange,false);if(Module["elementPointerLock"]){canvas.addEventListener("click",function(ev){if(!Browser.pointerLock&&Module["canvas"].requestPointerLock){Module["canvas"].requestPointerLock();ev.preventDefault()}},false)}}},createContext:function(canvas,useWebGL,setInModule,webGLContextAttributes){if(useWebGL&&Module.ctx&&canvas==Module.canvas)return Module.ctx;var ctx;var contextHandle;if(useWebGL){var contextAttributes={antialias:false,alpha:false,majorVersion:1};if(webGLContextAttributes){for(var attribute in webGLContextAttributes){contextAttributes[attribute]=webGLContextAttributes[attribute]}}if(typeof GL!=="undefined"){contextHandle=GL.createContext(canvas,contextAttributes);if(contextHandle){ctx=GL.getContext(contextHandle).GLctx}}}else{ctx=canvas.getContext("2d")}if(!ctx)return null;if(setInModule){if(!useWebGL)assert(typeof GLctx==="undefined","cannot set in module if GLctx is used, but we are a non-GL context that would replace it");Module.ctx=ctx;if(useWebGL)GL.makeContextCurrent(contextHandle);Module.useWebGL=useWebGL;Browser.moduleContextCreatedCallbacks.forEach(function(callback){callback()});Browser.init()}return ctx},destroyContext:function(canvas,useWebGL,setInModule){},fullscreenHandlersInstalled:false,lockPointer:undefined,resizeCanvas:undefined,requestFullscreen:function(lockPointer,resizeCanvas){Browser.lockPointer=lockPointer;Browser.resizeCanvas=resizeCanvas;if(typeof Browser.lockPointer==="undefined")Browser.lockPointer=true;if(typeof Browser.resizeCanvas==="undefined")Browser.resizeCanvas=false;var canvas=Module["canvas"];function fullscreenChange(){Browser.isFullscreen=false;var canvasContainer=canvas.parentNode;if((document["fullscreenElement"]||document["mozFullScreenElement"]||document["msFullscreenElement"]||document["webkitFullscreenElement"]||document["webkitCurrentFullScreenElement"])===canvasContainer){canvas.exitFullscreen=Browser.exitFullscreen;if(Browser.lockPointer)canvas.requestPointerLock();Browser.isFullscreen=true;if(Browser.resizeCanvas){Browser.setFullscreenCanvasSize()}else{Browser.updateCanvasDimensions(canvas)}}else{canvasContainer.parentNode.insertBefore(canvas,canvasContainer);canvasContainer.parentNode.removeChild(canvasContainer);if(Browser.resizeCanvas){Browser.setWindowedCanvasSize()}else{Browser.updateCanvasDimensions(canvas)}}if(Module["onFullScreen"])Module["onFullScreen"](Browser.isFullscreen);if(Module["onFullscreen"])Module["onFullscreen"](Browser.isFullscreen)}if(!Browser.fullscreenHandlersInstalled){Browser.fullscreenHandlersInstalled=true;document.addEventListener("fullscreenchange",fullscreenChange,false);document.addEventListener("mozfullscreenchange",fullscreenChange,false);document.addEventListener("webkitfullscreenchange",fullscreenChange,false);document.addEventListener("MSFullscreenChange",fullscreenChange,false)}var canvasContainer=document.createElement("div");canvas.parentNode.insertBefore(canvasContainer,canvas);canvasContainer.appendChild(canvas);canvasContainer.requestFullscreen=canvasContainer["requestFullscreen"]||canvasContainer["mozRequestFullScreen"]||canvasContainer["msRequestFullscreen"]||(canvasContainer["webkitRequestFullscreen"]?function(){canvasContainer["webkitRequestFullscreen"](Element["ALLOW_KEYBOARD_INPUT"])}:null)||(canvasContainer["webkitRequestFullScreen"]?function(){canvasContainer["webkitRequestFullScreen"](Element["ALLOW_KEYBOARD_INPUT"])}:null);canvasContainer.requestFullscreen()},exitFullscreen:function(){if(!Browser.isFullscreen){return false}var CFS=document["exitFullscreen"]||document["cancelFullScreen"]||document["mozCancelFullScreen"]||document["msExitFullscreen"]||document["webkitCancelFullScreen"]||function(){};CFS.apply(document,[]);return true},nextRAF:0,fakeRequestAnimationFrame:function(func){var now=Date.now();if(Browser.nextRAF===0){Browser.nextRAF=now+1e3/60}else{while(now+2>=Browser.nextRAF){Browser.nextRAF+=1e3/60}}var delay=Math.max(Browser.nextRAF-now,0);setTimeout(func,delay)},requestAnimationFrame:function(func){if(typeof requestAnimationFrame==="function"){requestAnimationFrame(func);return}var RAF=Browser.fakeRequestAnimationFrame;RAF(func)},safeRequestAnimationFrame:function(func){return Browser.requestAnimationFrame(function(){if(ABORT)return;func()})},safeSetTimeout:function(func,timeout){noExitRuntime=true;return setTimeout(function(){if(ABORT)return;func()},timeout)},getMimetype:function(name){return{"jpg":"image/jpeg","jpeg":"image/jpeg","png":"image/png","bmp":"image/bmp","ogg":"audio/ogg","wav":"audio/wav","mp3":"audio/mpeg"}[name.substr(name.lastIndexOf(".")+1)]},getUserMedia:function(func){if(!window.getUserMedia){window.getUserMedia=navigator["getUserMedia"]||navigator["mozGetUserMedia"]}window.getUserMedia(func)},getMovementX:function(event){return event["movementX"]||event["mozMovementX"]||event["webkitMovementX"]||0},getMovementY:function(event){return event["movementY"]||event["mozMovementY"]||event["webkitMovementY"]||0},getMouseWheelDelta:function(event){var delta=0;switch(event.type){case"DOMMouseScroll":delta=event.detail/3;break;case"mousewheel":delta=event.wheelDelta/120;break;case"wheel":delta=event.deltaY;switch(event.deltaMode){case 0:delta/=100;break;case 1:delta/=3;break;case 2:delta*=80;break;default:throw"unrecognized mouse wheel delta mode: "+event.deltaMode}break;default:throw"unrecognized mouse wheel event: "+event.type}return delta},mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,touches:{},lastTouches:{},calculateMouseEvent:function(event){if(Browser.pointerLock){if(event.type!="mousemove"&&"mozMovementX"in event){Browser.mouseMovementX=Browser.mouseMovementY=0}else{Browser.mouseMovementX=Browser.getMovementX(event);Browser.mouseMovementY=Browser.getMovementY(event)}if(typeof SDL!="undefined"){Browser.mouseX=SDL.mouseX+Browser.mouseMovementX;Browser.mouseY=SDL.mouseY+Browser.mouseMovementY}else{Browser.mouseX+=Browser.mouseMovementX;Browser.mouseY+=Browser.mouseMovementY}}else{var rect=Module["canvas"].getBoundingClientRect();var cw=Module["canvas"].width;var ch=Module["canvas"].height;var scrollX=typeof window.scrollX!=="undefined"?window.scrollX:window.pageXOffset;var scrollY=typeof window.scrollY!=="undefined"?window.scrollY:window.pageYOffset;if(event.type==="touchstart"||event.type==="touchend"||event.type==="touchmove"){var touch=event.touch;if(touch===undefined){return}var adjustedX=touch.pageX-(scrollX+rect.left);var adjustedY=touch.pageY-(scrollY+rect.top);adjustedX=adjustedX*(cw/rect.width);adjustedY=adjustedY*(ch/rect.height);var coords={x:adjustedX,y:adjustedY};if(event.type==="touchstart"){Browser.lastTouches[touch.identifier]=coords;Browser.touches[touch.identifier]=coords}else if(event.type==="touchend"||event.type==="touchmove"){var last=Browser.touches[touch.identifier];if(!last)last=coords;Browser.lastTouches[touch.identifier]=last;Browser.touches[touch.identifier]=coords}return}var x=event.pageX-(scrollX+rect.left);var y=event.pageY-(scrollY+rect.top);x=x*(cw/rect.width);y=y*(ch/rect.height);Browser.mouseMovementX=x-Browser.mouseX;Browser.mouseMovementY=y-Browser.mouseY;Browser.mouseX=x;Browser.mouseY=y}},asyncLoad:function(url,onload,onerror,noRunDep){var dep=!noRunDep?getUniqueRunDependency("al "+url):"";readAsync(url,function(arrayBuffer){assert(arrayBuffer,'Loading data file "'+url+'" failed (no arrayBuffer).');onload(new Uint8Array(arrayBuffer));if(dep)removeRunDependency(dep)},function(event){if(onerror){onerror()}else{throw'Loading data file "'+url+'" failed.'}});if(dep)addRunDependency(dep)},resizeListeners:[],updateResizeListeners:function(){var canvas=Module["canvas"];Browser.resizeListeners.forEach(function(listener){listener(canvas.width,canvas.height)})},setCanvasSize:function(width,height,noUpdates){var canvas=Module["canvas"];Browser.updateCanvasDimensions(canvas,width,height);if(!noUpdates)Browser.updateResizeListeners()},windowedWidth:0,windowedHeight:0,setFullscreenCanvasSize:function(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>2];flags=flags|8388608;HEAP32[SDL.screen>>2]=flags}Browser.updateCanvasDimensions(Module["canvas"]);Browser.updateResizeListeners()},setWindowedCanvasSize:function(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>2];flags=flags&~8388608;HEAP32[SDL.screen>>2]=flags}Browser.updateCanvasDimensions(Module["canvas"]);Browser.updateResizeListeners()},updateCanvasDimensions:function(canvas,wNative,hNative){if(wNative&&hNative){canvas.widthNative=wNative;canvas.heightNative=hNative}else{wNative=canvas.widthNative;hNative=canvas.heightNative}var w=wNative;var h=hNative;if(Module["forcedAspectRatio"]&&Module["forcedAspectRatio"]>0){if(w/h<Module["forcedAspectRatio"]){w=Math.round(h*Module["forcedAspectRatio"])}else{h=Math.round(w/Module["forcedAspectRatio"])}}if((document["fullscreenElement"]||document["mozFullScreenElement"]||document["msFullscreenElement"]||document["webkitFullscreenElement"]||document["webkitCurrentFullScreenElement"])===canvas.parentNode&&typeof screen!="undefined"){var factor=Math.min(screen.width/w,screen.height/h);w=Math.round(w*factor);h=Math.round(h*factor)}if(Browser.resizeCanvas){if(canvas.width!=w)canvas.width=w;if(canvas.height!=h)canvas.height=h;if(typeof canvas.style!="undefined"){canvas.style.removeProperty("width");canvas.style.removeProperty("height")}}else{if(canvas.width!=wNative)canvas.width=wNative;if(canvas.height!=hNative)canvas.height=hNative;if(typeof canvas.style!="undefined"){if(w!=wNative||h!=hNative){canvas.style.setProperty("width",w+"px","important");canvas.style.setProperty("height",h+"px","important")}else{canvas.style.removeProperty("width");canvas.style.removeProperty("height")}}}},wgetRequests:{},nextWgetRequestHandle:0,getNextWgetRequestHandle:function(){var handle=Browser.nextWgetRequestHandle;Browser.nextWgetRequestHandle++;return handle}};function _emscripten_set_main_loop_timing(mode,value){Browser.mainLoop.timingMode=mode;Browser.mainLoop.timingValue=value;if(!Browser.mainLoop.func){return 1}if(mode==0){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setTimeout(){var timeUntilNextTick=Math.max(0,Browser.mainLoop.tickStartTime+value-_emscripten_get_now())|0;setTimeout(Browser.mainLoop.runner,timeUntilNextTick)};Browser.mainLoop.method="timeout"}else if(mode==1){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_rAF(){Browser.requestAnimationFrame(Browser.mainLoop.runner)};Browser.mainLoop.method="rAF"}else if(mode==2){if(typeof setImmediate==="undefined"){var setImmediates=[];var emscriptenMainLoopMessageId="setimmediate";var Browser_setImmediate_messageHandler=function(event){if(event.data===emscriptenMainLoopMessageId||event.data.target===emscriptenMainLoopMessageId){event.stopPropagation();setImmediates.shift()()}};addEventListener("message",Browser_setImmediate_messageHandler,true);setImmediate=function Browser_emulated_setImmediate(func){setImmediates.push(func);if(ENVIRONMENT_IS_WORKER){if(Module["setImmediates"]===undefined)Module["setImmediates"]=[];Module["setImmediates"].push(func);postMessage({target:emscriptenMainLoopMessageId})}else postMessage(emscriptenMainLoopMessageId,"*")}}Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setImmediate(){setImmediate(Browser.mainLoop.runner)};Browser.mainLoop.method="immediate"}return 0}var _emscripten_get_now;if(ENVIRONMENT_IS_NODE){_emscripten_get_now=function(){var t=process["hrtime"]();return t[0]*1e3+t[1]/1e6}}else if(typeof dateNow!=="undefined"){_emscripten_get_now=dateNow}else _emscripten_get_now=function(){return performance.now()};function setMainLoop(browserIterationFunc,fps,simulateInfiniteLoop,arg,noSetTiming){noExitRuntime=true;assert(!Browser.mainLoop.func,"emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters.");Browser.mainLoop.func=browserIterationFunc;Browser.mainLoop.arg=arg;var thisMainLoopId=Browser.mainLoop.currentlyRunningMainloop;Browser.mainLoop.runner=function Browser_mainLoop_runner(){if(ABORT)return;if(Browser.mainLoop.queue.length>0){var start=Date.now();var blocker=Browser.mainLoop.queue.shift();blocker.func(blocker.arg);if(Browser.mainLoop.remainingBlockers){var remaining=Browser.mainLoop.remainingBlockers;var next=remaining%1==0?remaining-1:Math.floor(remaining);if(blocker.counted){Browser.mainLoop.remainingBlockers=next}else{next=next+.5;Browser.mainLoop.remainingBlockers=(8*remaining+next)/9}}console.log('main loop blocker "'+blocker.name+'" took '+(Date.now()-start)+" ms");Browser.mainLoop.updateStatus();if(thisMainLoopId<Browser.mainLoop.currentlyRunningMainloop)return;setTimeout(Browser.mainLoop.runner,0);return}if(thisMainLoopId<Browser.mainLoop.currentlyRunningMainloop)return;Browser.mainLoop.currentFrameNumber=Browser.mainLoop.currentFrameNumber+1|0;if(Browser.mainLoop.timingMode==1&&Browser.mainLoop.timingValue>1&&Browser.mainLoop.currentFrameNumber%Browser.mainLoop.timingValue!=0){Browser.mainLoop.scheduler();return}else if(Browser.mainLoop.timingMode==0){Browser.mainLoop.tickStartTime=_emscripten_get_now()}Browser.mainLoop.runIter(browserIterationFunc);if(thisMainLoopId<Browser.mainLoop.currentlyRunningMainloop)return;if(typeof SDL==="object"&&SDL.audio&&SDL.audio.queueNewAudioData)SDL.audio.queueNewAudioData();Browser.mainLoop.scheduler()};if(!noSetTiming){if(fps&&fps>0)_emscripten_set_main_loop_timing(0,1e3/fps);else _emscripten_set_main_loop_timing(1,1);Browser.mainLoop.scheduler()}if(simulateInfiniteLoop){throw"unwind"}}function _emscripten_set_main_loop(func,fps,simulateInfiniteLoop){var browserIterationFunc=wasmTable.get(func);setMainLoop(browserIterationFunc,fps,simulateInfiniteLoop)}function registerTouchEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.touchEvent)JSEvents.touchEvent=_malloc(1684);target=findEventTarget(target);var touchEventHandlerFunc=function(e){var touches={};var et=e.touches;for(var i=0;i<et.length;++i){var touch=et[i];touches[touch.identifier]=touch}et=e.changedTouches;for(var i=0;i<et.length;++i){var touch=et[i];touch.isChanged=1;touches[touch.identifier]=touch}et=e.targetTouches;for(var i=0;i<et.length;++i){touches[et[i].identifier].onTarget=1}var touchEvent=JSEvents.touchEvent;var idx=touchEvent>>2;HEAP32[idx+1]=e.ctrlKey;HEAP32[idx+2]=e.shiftKey;HEAP32[idx+3]=e.altKey;HEAP32[idx+4]=e.metaKey;idx+=5;var targetRect=getBoundingClientRect(target);var numTouches=0;for(var i in touches){var t=touches[i];HEAP32[idx+0]=t.identifier;HEAP32[idx+1]=t.screenX;HEAP32[idx+2]=t.screenY;HEAP32[idx+3]=t.clientX;HEAP32[idx+4]=t.clientY;HEAP32[idx+5]=t.pageX;HEAP32[idx+6]=t.pageY;HEAP32[idx+7]=t.isChanged;HEAP32[idx+8]=t.onTarget;HEAP32[idx+9]=t.clientX-targetRect.left;HEAP32[idx+10]=t.clientY-targetRect.top;idx+=13;if(++numTouches>31){break}}HEAP32[touchEvent>>2]=numTouches;if(wasmTable.get(callbackfunc)(eventTypeId,touchEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:eventTypeString=="touchstart"||eventTypeString=="touchend",eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:touchEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_touchcancel_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerTouchEventCallback(target,userData,useCapture,callbackfunc,25,"touchcancel",targetThread);return 0}function _emscripten_set_touchend_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerTouchEventCallback(target,userData,useCapture,callbackfunc,23,"touchend",targetThread);return 0}function _emscripten_set_touchmove_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerTouchEventCallback(target,userData,useCapture,callbackfunc,24,"touchmove",targetThread);return 0}function _emscripten_set_touchstart_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerTouchEventCallback(target,userData,useCapture,callbackfunc,22,"touchstart",targetThread);return 0}function _emscripten_thread_sleep(msecs){var start=_emscripten_get_now();while(_emscripten_get_now()-start<msecs){}}function _exit(status){exit(status)}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_read(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doReadv(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var stream=SYSCALLS.getStreamFromFD(fd);var HIGH_OFFSET=4294967296;var offset=offset_high*HIGH_OFFSET+(offset_low>>>0);var DOUBLE_LIMIT=9007199254740992;if(offset<=-DOUBLE_LIMIT||offset>=DOUBLE_LIMIT){return-61}FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doWritev(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _glActiveTexture(x0){GLctx["activeTexture"](x0)}function _glAttachShader(program,shader){GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _glBindAttribLocation(program,index,name){GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))}function _glBindBuffer(target,buffer){GLctx.bindBuffer(target,GL.buffers[buffer])}function _glBindTexture(target,texture){GLctx.bindTexture(target,GL.textures[texture])}function _glBlendFunc(x0,x1){GLctx["blendFunc"](x0,x1)}function _glBufferData(target,size,data,usage){GLctx.bufferData(target,data?HEAPU8.subarray(data,data+size):size,usage)}function _glBufferSubData(target,offset,size,data){GLctx.bufferSubData(target,offset,HEAPU8.subarray(data,data+size))}function _glClear(x0){GLctx["clear"](x0)}function _glClearColor(x0,x1,x2,x3){GLctx["clearColor"](x0,x1,x2,x3)}function _glClearDepthf(x0){GLctx["clearDepth"](x0)}function _glCompileShader(shader){GLctx.compileShader(GL.shaders[shader])}function _glCompressedTexImage2D(target,level,internalFormat,width,height,border,imageSize,data){GLctx["compressedTexImage2D"](target,level,internalFormat,width,height,border,data?HEAPU8.subarray(data,data+imageSize):null)}function _glCreateProgram(){var id=GL.getNewId(GL.programs);var program=GLctx.createProgram();program.name=id;GL.programs[id]=program;return id}function _glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}function _glCullFace(x0){GLctx["cullFace"](x0)}function _glDeleteBuffers(n,buffers){for(var i=0;i<n;i++){var id=HEAP32[buffers+i*4>>2];var buffer=GL.buffers[id];if(!buffer)continue;GLctx.deleteBuffer(buffer);buffer.name=0;GL.buffers[id]=null}}function _glDeleteProgram(id){if(!id)return;var program=GL.programs[id];if(!program){GL.recordError(1281);return}GLctx.deleteProgram(program);program.name=0;GL.programs[id]=null;GL.programInfos[id]=null}function _glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}function _glDeleteTextures(n,textures){for(var i=0;i<n;i++){var id=HEAP32[textures+i*4>>2];var texture=GL.textures[id];if(!texture)continue;GLctx.deleteTexture(texture);texture.name=0;GL.textures[id]=null}}function _glDepthFunc(x0){GLctx["depthFunc"](x0)}function _glDetachShader(program,shader){GLctx.detachShader(GL.programs[program],GL.shaders[shader])}function _glDisable(x0){GLctx["disable"](x0)}function _glDisableVertexAttribArray(index){GLctx.disableVertexAttribArray(index)}function _glDrawArrays(mode,first,count){GLctx.drawArrays(mode,first,count)}function _glDrawElements(mode,count,type,indices){GLctx.drawElements(mode,count,type,indices)}function _glEnable(x0){GLctx["enable"](x0)}function _glEnableVertexAttribArray(index){GLctx.enableVertexAttribArray(index)}function _glFrontFace(x0){GLctx["frontFace"](x0)}function _glGenBuffers(n,buffers){__glGenObject(n,buffers,"createBuffer",GL.buffers)}function _glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures)}function _glGetAttribLocation(program,name){return GLctx.getAttribLocation(GL.programs[program],UTF8ToString(name))}function _glGetFloatv(name_,p){emscriptenWebGLGet(name_,p,2)}function _glGetProgramInfoLog(program,maxLength,length,infoLog){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _glGetProgramiv(program,pname,p){if(!p){GL.recordError(1281);return}if(program>=GL.counter){GL.recordError(1281);return}var ptable=GL.programInfos[program];if(!ptable){GL.recordError(1282);return}if(pname==35716){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";HEAP32[p>>2]=log.length+1}else if(pname==35719){HEAP32[p>>2]=ptable.maxUniformLength}else if(pname==35722){if(ptable.maxAttributeLength==-1){program=GL.programs[program];var numAttribs=GLctx.getProgramParameter(program,35721);ptable.maxAttributeLength=0;for(var i=0;i<numAttribs;++i){var activeAttrib=GLctx.getActiveAttrib(program,i);ptable.maxAttributeLength=Math.max(ptable.maxAttributeLength,activeAttrib.name.length+1)}}HEAP32[p>>2]=ptable.maxAttributeLength}else if(pname==35381){if(ptable.maxUniformBlockNameLength==-1){program=GL.programs[program];var numBlocks=GLctx.getProgramParameter(program,35382);ptable.maxUniformBlockNameLength=0;for(var i=0;i<numBlocks;++i){var activeBlockName=GLctx.getActiveUniformBlockName(program,i);ptable.maxUniformBlockNameLength=Math.max(ptable.maxUniformBlockNameLength,activeBlockName.length+1)}}HEAP32[p>>2]=ptable.maxUniformBlockNameLength}else{HEAP32[p>>2]=GLctx.getProgramParameter(GL.programs[program],pname)}}function _glGetShaderInfoLog(shader,maxLength,length,infoLog){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _glGetShaderiv(shader,pname,p){if(!p){GL.recordError(1281);return}if(pname==35716){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var logLength=log?log.length+1:0;HEAP32[p>>2]=logLength}else if(pname==35720){var source=GLctx.getShaderSource(GL.shaders[shader]);var sourceLength=source?source.length+1:0;HEAP32[p>>2]=sourceLength}else{HEAP32[p>>2]=GLctx.getShaderParameter(GL.shaders[shader],pname)}}function _glGetString(name_){if(GL.stringCache[name_])return GL.stringCache[name_];var ret;switch(name_){case 7939:var exts=GLctx.getSupportedExtensions()||[];exts=exts.concat(exts.map(function(e){return"GL_"+e}));ret=stringToNewUTF8(exts.join(" "));break;case 7936:case 7937:case 37445:case 37446:var s=GLctx.getParameter(name_);if(!s){GL.recordError(1280)}ret=stringToNewUTF8(s);break;case 7938:var glVersion=GLctx.getParameter(7938);{glVersion="OpenGL ES 2.0 ("+glVersion+")"}ret=stringToNewUTF8(glVersion);break;case 35724:var glslVersion=GLctx.getParameter(35724);var ver_re=/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/;var ver_num=glslVersion.match(ver_re);if(ver_num!==null){if(ver_num[1].length==3)ver_num[1]=ver_num[1]+"0";glslVersion="OpenGL ES GLSL ES "+ver_num[1]+" ("+glslVersion+")"}ret=stringToNewUTF8(glslVersion);break;default:GL.recordError(1280);return 0}GL.stringCache[name_]=ret;return ret}function _glGetUniformLocation(program,name){name=UTF8ToString(name);var arrayIndex=0;if(name[name.length-1]=="]"){var leftBrace=name.lastIndexOf("[");arrayIndex=name[leftBrace+1]!="]"?jstoi_q(name.slice(leftBrace+1)):0;name=name.slice(0,leftBrace)}var uniformInfo=GL.programInfos[program]&&GL.programInfos[program].uniforms[name];if(uniformInfo&&arrayIndex>=0&&arrayIndex<uniformInfo[0]){return uniformInfo[1]+arrayIndex}else{return-1}}function _glLinkProgram(program){GLctx.linkProgram(GL.programs[program]);GL.populateUniformTable(program)}function _glPixelStorei(pname,param){if(pname==3317){GL.unpackAlignment=param}GLctx.pixelStorei(pname,param)}function _glReadPixels(x,y,width,height,format,type,pixels){var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);return}GLctx.readPixels(x,y,width,height,format,type,pixelData)}function _glShaderSource(shader,count,string,length){var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}function _glTexImage2D(target,level,internalFormat,width,height,border,format,type,pixels){GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels?emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat):null)}function _glTexParameteri(x0,x1,x2){GLctx["texParameteri"](x0,x1,x2)}function _glUniform1i(location,v0){GLctx.uniform1i(GL.uniforms[location],v0)}function _glUniform4f(location,v0,v1,v2,v3){GLctx.uniform4f(GL.uniforms[location],v0,v1,v2,v3)}function _glUniformMatrix4fv(location,count,transpose,value){if(count<=18){var view=miniTempWebGLFloatBuffers[16*count-1];var heap=HEAPF32;value>>=2;for(var i=0;i<16*count;i+=16){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3];view[i+4]=heap[dst+4];view[i+5]=heap[dst+5];view[i+6]=heap[dst+6];view[i+7]=heap[dst+7];view[i+8]=heap[dst+8];view[i+9]=heap[dst+9];view[i+10]=heap[dst+10];view[i+11]=heap[dst+11];view[i+12]=heap[dst+12];view[i+13]=heap[dst+13];view[i+14]=heap[dst+14];view[i+15]=heap[dst+15]}}else{var view=HEAPF32.subarray(value>>2,value+count*64>>2)}GLctx.uniformMatrix4fv(GL.uniforms[location],!!transpose,view)}function _glUseProgram(program){GLctx.useProgram(GL.programs[program])}function _glVertexAttribPointer(index,size,type,normalized,stride,ptr){GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}function _glViewport(x0,x1,x2,x3){GLctx["viewport"](x0,x1,x2,x3)}function GLFW_Window(id,width,height,title,monitor,share){this.id=id;this.x=0;this.y=0;this.fullscreen=false;this.storedX=0;this.storedY=0;this.width=width;this.height=height;this.storedWidth=width;this.storedHeight=height;this.title=title;this.monitor=monitor;this.share=share;this.attributes=GLFW.hints;this.inputModes={208897:212993,208898:0,208899:0};this.buttons=0;this.keys=new Array;this.domKeys=new Array;this.shouldClose=0;this.title=null;this.windowPosFunc=null;this.windowSizeFunc=null;this.windowCloseFunc=null;this.windowRefreshFunc=null;this.windowFocusFunc=null;this.windowIconifyFunc=null;this.framebufferSizeFunc=null;this.mouseButtonFunc=null;this.cursorPosFunc=null;this.cursorEnterFunc=null;this.scrollFunc=null;this.dropFunc=null;this.keyFunc=null;this.charFunc=null;this.userptr=null}var GLFW={WindowFromId:function(id){if(id<=0||!GLFW.windows)return null;return GLFW.windows[id-1]},joystickFunc:null,errorFunc:null,monitorFunc:null,active:null,windows:null,monitors:null,monitorString:null,versionString:null,initialTime:null,extensions:null,hints:null,defaultHints:{131073:0,131074:0,131075:1,131076:1,131077:1,135169:8,135170:8,135171:8,135172:8,135173:24,135174:8,135175:0,135176:0,135177:0,135178:0,135179:0,135180:0,135181:0,135182:0,135183:0,139265:196609,139266:1,139267:0,139268:0,139269:0,139270:0,139271:0,139272:0},DOMToGLFWKeyCode:function(keycode){switch(keycode){case 32:return 32;case 222:return 39;case 188:return 44;case 173:return 45;case 189:return 45;case 190:return 46;case 191:return 47;case 48:return 48;case 49:return 49;case 50:return 50;case 51:return 51;case 52:return 52;case 53:return 53;case 54:return 54;case 55:return 55;case 56:return 56;case 57:return 57;case 59:return 59;case 61:return 61;case 187:return 61;case 65:return 65;case 66:return 66;case 67:return 67;case 68:return 68;case 69:return 69;case 70:return 70;case 71:return 71;case 72:return 72;case 73:return 73;case 74:return 74;case 75:return 75;case 76:return 76;case 77:return 77;case 78:return 78;case 79:return 79;case 80:return 80;case 81:return 81;case 82:return 82;case 83:return 83;case 84:return 84;case 85:return 85;case 86:return 86;case 87:return 87;case 88:return 88;case 89:return 89;case 90:return 90;case 219:return 91;case 220:return 92;case 221:return 93;case 192:return 94;case 27:return 256;case 13:return 257;case 9:return 258;case 8:return 259;case 45:return 260;case 46:return 261;case 39:return 262;case 37:return 263;case 40:return 264;case 38:return 265;case 33:return 266;case 34:return 267;case 36:return 268;case 35:return 269;case 20:return 280;case 145:return 281;case 144:return 282;case 44:return 283;case 19:return 284;case 112:return 290;case 113:return 291;case 114:return 292;case 115:return 293;case 116:return 294;case 117:return 295;case 118:return 296;case 119:return 297;case 120:return 298;case 121:return 299;case 122:return 300;case 123:return 301;case 124:return 302;case 125:return 303;case 126:return 304;case 127:return 305;case 128:return 306;case 129:return 307;case 130:return 308;case 131:return 309;case 132:return 310;case 133:return 311;case 134:return 312;case 135:return 313;case 136:return 314;case 96:return 320;case 97:return 321;case 98:return 322;case 99:return 323;case 100:return 324;case 101:return 325;case 102:return 326;case 103:return 327;case 104:return 328;case 105:return 329;case 110:return 330;case 111:return 331;case 106:return 332;case 109:return 333;case 107:return 334;case 16:return 340;case 17:return 341;case 18:return 342;case 91:return 343;case 93:return 348;default:return-1}},getModBits:function(win){var mod=0;if(win.keys[340])mod|=1;if(win.keys[341])mod|=2;if(win.keys[342])mod|=4;if(win.keys[343])mod|=8;return mod},onKeyPress:function(event){if(!GLFW.active||!GLFW.active.charFunc)return;if(event.ctrlKey||event.metaKey)return;var charCode=event.charCode;if(charCode==0||charCode>=0&&charCode<=31)return;wasmTable.get(GLFW.active.charFunc)(GLFW.active.id,charCode)},onKeyChanged:function(keyCode,status){if(!GLFW.active)return;var key=GLFW.DOMToGLFWKeyCode(keyCode);if(key==-1)return;var repeat=status&&GLFW.active.keys[key];GLFW.active.keys[key]=status;GLFW.active.domKeys[keyCode]=status;if(!GLFW.active.keyFunc)return;if(repeat)status=2;wasmTable.get(GLFW.active.keyFunc)(GLFW.active.id,key,keyCode,status,GLFW.getModBits(GLFW.active))},onGamepadConnected:function(event){GLFW.refreshJoysticks()},onGamepadDisconnected:function(event){GLFW.refreshJoysticks()},onKeydown:function(event){GLFW.onKeyChanged(event.keyCode,1);if(event.keyCode===8||event.keyCode===9){event.preventDefault()}},onKeyup:function(event){GLFW.onKeyChanged(event.keyCode,0)},onBlur:function(event){if(!GLFW.active)return;for(var i=0;i<GLFW.active.domKeys.length;++i){if(GLFW.active.domKeys[i]){GLFW.onKeyChanged(i,0)}}},onMousemove:function(event){if(!GLFW.active)return;Browser.calculateMouseEvent(event);if(event.target!=Module["canvas"]||!GLFW.active.cursorPosFunc)return;wasmTable.get(GLFW.active.cursorPosFunc)(GLFW.active.id,Browser.mouseX,Browser.mouseY)},DOMToGLFWMouseButton:function(event){var eventButton=event["button"];if(eventButton>0){if(eventButton==1){eventButton=2}else{eventButton=1}}return eventButton},onMouseenter:function(event){if(!GLFW.active)return;if(event.target!=Module["canvas"]||!GLFW.active.cursorEnterFunc)return;wasmTable.get(GLFW.active.cursorEnterFunc)(GLFW.active.id,1)},onMouseleave:function(event){if(!GLFW.active)return;if(event.target!=Module["canvas"]||!GLFW.active.cursorEnterFunc)return;wasmTable.get(GLFW.active.cursorEnterFunc)(GLFW.active.id,0)},onMouseButtonChanged:function(event,status){if(!GLFW.active)return;Browser.calculateMouseEvent(event);if(event.target!=Module["canvas"])return;var eventButton=GLFW.DOMToGLFWMouseButton(event);if(status==1){GLFW.active.buttons|=1<<eventButton;try{event.target.setCapture()}catch(e){}}else{GLFW.active.buttons&=~(1<<eventButton)}if(!GLFW.active.mouseButtonFunc)return;wasmTable.get(GLFW.active.mouseButtonFunc)(GLFW.active.id,eventButton,status,GLFW.getModBits(GLFW.active))},onMouseButtonDown:function(event){if(!GLFW.active)return;GLFW.onMouseButtonChanged(event,1)},onMouseButtonUp:function(event){if(!GLFW.active)return;GLFW.onMouseButtonChanged(event,0)},onMouseWheel:function(event){var delta=-Browser.getMouseWheelDelta(event);delta=delta==0?0:delta>0?Math.max(delta,1):Math.min(delta,-1);GLFW.wheelPos+=delta;if(!GLFW.active||!GLFW.active.scrollFunc||event.target!=Module["canvas"])return;var sx=0;var sy=0;if(event.type=="mousewheel"){sx=event.wheelDeltaX;sy=event.wheelDeltaY}else{sx=event.deltaX;sy=event.deltaY}wasmTable.get(GLFW.active.scrollFunc)(GLFW.active.id,sx,sy);event.preventDefault()},onCanvasResize:function(width,height){if(!GLFW.active)return;var resizeNeeded=true;if(document["fullscreen"]||document["fullScreen"]||document["mozFullScreen"]||document["webkitIsFullScreen"]){GLFW.active.storedX=GLFW.active.x;GLFW.active.storedY=GLFW.active.y;GLFW.active.storedWidth=GLFW.active.width;GLFW.active.storedHeight=GLFW.active.height;GLFW.active.x=GLFW.active.y=0;GLFW.active.width=screen.width;GLFW.active.height=screen.height;GLFW.active.fullscreen=true}else if(GLFW.active.fullscreen==true){GLFW.active.x=GLFW.active.storedX;GLFW.active.y=GLFW.active.storedY;GLFW.active.width=GLFW.active.storedWidth;GLFW.active.height=GLFW.active.storedHeight;GLFW.active.fullscreen=false}else if(GLFW.active.width!=width||GLFW.active.height!=height){GLFW.active.width=width;GLFW.active.height=height}else{resizeNeeded=false}if(resizeNeeded){Browser.setCanvasSize(GLFW.active.width,GLFW.active.height,true);GLFW.onWindowSizeChanged();GLFW.onFramebufferSizeChanged()}},onWindowSizeChanged:function(){if(!GLFW.active)return;if(!GLFW.active.windowSizeFunc)return;wasmTable.get(GLFW.active.windowSizeFunc)(GLFW.active.id,GLFW.active.width,GLFW.active.height)},onFramebufferSizeChanged:function(){if(!GLFW.active)return;if(!GLFW.active.framebufferSizeFunc)return;wasmTable.get(GLFW.active.framebufferSizeFunc)(GLFW.active.id,GLFW.active.width,GLFW.active.height)},getTime:function(){return _emscripten_get_now()/1e3},setWindowTitle:function(winid,title){var win=GLFW.WindowFromId(winid);if(!win)return;win.title=UTF8ToString(title);if(GLFW.active.id==win.id){document.title=win.title}},setJoystickCallback:function(cbfun){GLFW.joystickFunc=cbfun;GLFW.refreshJoysticks()},joys:{},lastGamepadState:null,lastGamepadStateFrame:null,refreshJoysticks:function(){if(Browser.mainLoop.currentFrameNumber!==GLFW.lastGamepadStateFrame||!Browser.mainLoop.currentFrameNumber){GLFW.lastGamepadState=navigator.getGamepads?navigator.getGamepads():navigator.webkitGetGamepads?navigator.webkitGetGamepads:null;GLFW.lastGamepadStateFrame=Browser.mainLoop.currentFrameNumber;for(var joy=0;joy<GLFW.lastGamepadState.length;++joy){var gamepad=GLFW.lastGamepadState[joy];if(gamepad){if(!GLFW.joys[joy]){console.log("glfw joystick connected:",joy);GLFW.joys[joy]={id:allocate(intArrayFromString(gamepad.id),ALLOC_NORMAL),buttonsCount:gamepad.buttons.length,axesCount:gamepad.axes.length,buttons:allocate(new Array(gamepad.buttons.length),ALLOC_NORMAL),axes:allocate(new Array(gamepad.axes.length*4),ALLOC_NORMAL)};if(GLFW.joystickFunc){wasmTable.get(GLFW.joystickFunc)(joy,262145)}}var data=GLFW.joys[joy];for(var i=0;i<gamepad.buttons.length;++i){setValue(data.buttons+i,gamepad.buttons[i].pressed,"i8")}for(var i=0;i<gamepad.axes.length;++i){setValue(data.axes+i*4,gamepad.axes[i],"float")}}else{if(GLFW.joys[joy]){console.log("glfw joystick disconnected",joy);if(GLFW.joystickFunc){wasmTable.get(GLFW.joystickFunc)(joy,262146)}_free(GLFW.joys[joy].id);_free(GLFW.joys[joy].buttons);_free(GLFW.joys[joy].axes);delete GLFW.joys[joy]}}}}},setKeyCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.keyFunc;win.keyFunc=cbfun;return prevcbfun},setCharCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.charFunc;win.charFunc=cbfun;return prevcbfun},setMouseButtonCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.mouseButtonFunc;win.mouseButtonFunc=cbfun;return prevcbfun},setCursorPosCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.cursorPosFunc;win.cursorPosFunc=cbfun;return prevcbfun},setScrollCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.scrollFunc;win.scrollFunc=cbfun;return prevcbfun},setDropCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.dropFunc;win.dropFunc=cbfun;return prevcbfun},onDrop:function(event){if(!GLFW.active||!GLFW.active.dropFunc)return;if(!event.dataTransfer||!event.dataTransfer.files||event.dataTransfer.files.length==0)return;event.preventDefault();var filenames=allocate(new Array(event.dataTransfer.files.length*4),ALLOC_NORMAL);var filenamesArray=[];var count=event.dataTransfer.files.length;var written=0;var drop_dir=".glfw_dropped_files";FS.createPath("/",drop_dir);function save(file){var path="/"+drop_dir+"/"+file.name.replace(/\//g,"_");var reader=new FileReader;reader.onloadend=function(e){if(reader.readyState!=2){++written;console.log("failed to read dropped file: "+file.name+": "+reader.error);return}var data=e.target.result;FS.writeFile(path,new Uint8Array(data));if(++written===count){wasmTable.get(GLFW.active.dropFunc)(GLFW.active.id,count,filenames);for(var i=0;i<filenamesArray.length;++i){_free(filenamesArray[i])}_free(filenames)}};reader.readAsArrayBuffer(file);var filename=allocate(intArrayFromString(path),ALLOC_NORMAL);filenamesArray.push(filename);setValue(filenames+i*4,filename,"i8*")}for(var i=0;i<count;++i){save(event.dataTransfer.files[i])}return false},onDragover:function(event){if(!GLFW.active||!GLFW.active.dropFunc)return;event.preventDefault();return false},setWindowSizeCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowSizeFunc;win.windowSizeFunc=cbfun;return prevcbfun},setWindowCloseCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowCloseFunc;win.windowCloseFunc=cbfun;return prevcbfun},setWindowRefreshCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowRefreshFunc;win.windowRefreshFunc=cbfun;return prevcbfun},onClickRequestPointerLock:function(e){if(!Browser.pointerLock&&Module["canvas"].requestPointerLock){Module["canvas"].requestPointerLock();e.preventDefault()}},setInputMode:function(winid,mode,value){var win=GLFW.WindowFromId(winid);if(!win)return;switch(mode){case 208897:{switch(value){case 212993:{win.inputModes[mode]=value;Module["canvas"].removeEventListener("click",GLFW.onClickRequestPointerLock,true);Module["canvas"].exitPointerLock();break}case 212994:{console.log("glfwSetInputMode called with GLFW_CURSOR_HIDDEN value not implemented.");break}case 212995:{win.inputModes[mode]=value;Module["canvas"].addEventListener("click",GLFW.onClickRequestPointerLock,true);Module["canvas"].requestPointerLock();break}default:{console.log("glfwSetInputMode called with unknown value parameter value: "+value+".");break}}break}case 208898:{console.log("glfwSetInputMode called with GLFW_STICKY_KEYS mode not implemented.");break}case 208899:{console.log("glfwSetInputMode called with GLFW_STICKY_MOUSE_BUTTONS mode not implemented.");break}default:{console.log("glfwSetInputMode called with unknown mode parameter value: "+mode+".");break}}},getKey:function(winid,key){var win=GLFW.WindowFromId(winid);if(!win)return 0;return win.keys[key]},getMouseButton:function(winid,button){var win=GLFW.WindowFromId(winid);if(!win)return 0;return(win.buttons&1<<button)>0},getCursorPos:function(winid,x,y){setValue(x,Browser.mouseX,"double");setValue(y,Browser.mouseY,"double")},getMousePos:function(winid,x,y){setValue(x,Browser.mouseX,"i32");setValue(y,Browser.mouseY,"i32")},setCursorPos:function(winid,x,y){},getWindowPos:function(winid,x,y){var wx=0;var wy=0;var win=GLFW.WindowFromId(winid);if(win){wx=win.x;wy=win.y}if(x){setValue(x,wx,"i32")}if(y){setValue(y,wy,"i32")}},setWindowPos:function(winid,x,y){var win=GLFW.WindowFromId(winid);if(!win)return;win.x=x;win.y=y},getWindowSize:function(winid,width,height){var ww=0;var wh=0;var win=GLFW.WindowFromId(winid);if(win){ww=win.width;wh=win.height}if(width){setValue(width,ww,"i32")}if(height){setValue(height,wh,"i32")}},setWindowSize:function(winid,width,height){var win=GLFW.WindowFromId(winid);if(!win)return;if(GLFW.active.id==win.id){if(width==screen.width&&height==screen.height){Browser.requestFullscreen()}else{Browser.exitFullscreen();Browser.setCanvasSize(width,height);win.width=width;win.height=height}}if(!win.windowSizeFunc)return;wasmTable.get(win.windowSizeFunc)(win.id,width,height)},createWindow:function(width,height,title,monitor,share){var i,id;for(i=0;i<GLFW.windows.length&&GLFW.windows[i]!==null;i++){}if(i>0)throw"glfwCreateWindow only supports one window at time currently";id=i+1;if(width<=0||height<=0)return 0;if(monitor){Browser.requestFullscreen()}else{Browser.setCanvasSize(width,height)}for(i=0;i<GLFW.windows.length&&GLFW.windows[i]==null;i++){}var useWebGL=GLFW.hints[139265]>0;if(i==GLFW.windows.length){if(useWebGL){var contextAttributes={antialias:GLFW.hints[135181]>1,depth:GLFW.hints[135173]>0,stencil:GLFW.hints[135174]>0,alpha:GLFW.hints[135172]>0};Module.ctx=Browser.createContext(Module["canvas"],true,true,contextAttributes)}else{Browser.init()}}if(!Module.ctx&&useWebGL)return 0;var win=new GLFW_Window(id,width,height,title,monitor,share);if(id-1==GLFW.windows.length){GLFW.windows.push(win)}else{GLFW.windows[id-1]=win}GLFW.active=win;return win.id},destroyWindow:function(winid){var win=GLFW.WindowFromId(winid);if(!win)return;if(win.windowCloseFunc)wasmTable.get(win.windowCloseFunc)(win.id);GLFW.windows[win.id-1]=null;if(GLFW.active.id==win.id)GLFW.active=null;for(var i=0;i<GLFW.windows.length;i++)if(GLFW.windows[i]!==null)return;Module.ctx=Browser.destroyContext(Module["canvas"],true,true)},swapBuffers:function(winid){},GLFW2ParamToGLFW3Param:function(param){var table={196609:0,196610:0,196611:0,196612:0,196613:0,196614:0,131073:0,131074:0,131075:0,131076:0,131077:135169,131078:135170,131079:135171,131080:135172,131081:135173,131082:135174,131083:135183,131084:135175,131085:135176,131086:135177,131087:135178,131088:135179,131089:135180,131090:0,131091:135181,131092:139266,131093:139267,131094:139270,131095:139271,131096:139272};return table[param]}};function _glfwCreateWindow(width,height,title,monitor,share){return GLFW.createWindow(width,height,title,monitor,share)}function _glfwDefaultWindowHints(){GLFW.hints=GLFW.defaultHints}function _glfwDestroyWindow(winid){return GLFW.destroyWindow(winid)}function _glfwGetPrimaryMonitor(){return 1}function _glfwGetTime(){return GLFW.getTime()-GLFW.initialTime}function _glfwGetVideoModes(monitor,count){setValue(count,0,"i32");return 0}function _glfwInit(){if(GLFW.windows)return 1;GLFW.initialTime=GLFW.getTime();GLFW.hints=GLFW.defaultHints;GLFW.windows=new Array;GLFW.active=null;window.addEventListener("gamepadconnected",GLFW.onGamepadConnected,true);window.addEventListener("gamepaddisconnected",GLFW.onGamepadDisconnected,true);window.addEventListener("keydown",GLFW.onKeydown,true);window.addEventListener("keypress",GLFW.onKeyPress,true);window.addEventListener("keyup",GLFW.onKeyup,true);window.addEventListener("blur",GLFW.onBlur,true);Module["canvas"].addEventListener("touchmove",GLFW.onMousemove,true);Module["canvas"].addEventListener("touchstart",GLFW.onMouseButtonDown,true);Module["canvas"].addEventListener("touchcancel",GLFW.onMouseButtonUp,true);Module["canvas"].addEventListener("touchend",GLFW.onMouseButtonUp,true);Module["canvas"].addEventListener("mousemove",GLFW.onMousemove,true);Module["canvas"].addEventListener("mousedown",GLFW.onMouseButtonDown,true);Module["canvas"].addEventListener("mouseup",GLFW.onMouseButtonUp,true);Module["canvas"].addEventListener("wheel",GLFW.onMouseWheel,true);Module["canvas"].addEventListener("mousewheel",GLFW.onMouseWheel,true);Module["canvas"].addEventListener("mouseenter",GLFW.onMouseenter,true);Module["canvas"].addEventListener("mouseleave",GLFW.onMouseleave,true);Module["canvas"].addEventListener("drop",GLFW.onDrop,true);Module["canvas"].addEventListener("dragover",GLFW.onDragover,true);Browser.resizeListeners.push(function(width,height){GLFW.onCanvasResize(width,height)});return 1}function _glfwMakeContextCurrent(winid){}function _glfwSetCharCallback(winid,cbfun){return GLFW.setCharCallback(winid,cbfun)}function _glfwSetCursorEnterCallback(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.cursorEnterFunc;win.cursorEnterFunc=cbfun;return prevcbfun}function _glfwSetCursorPosCallback(winid,cbfun){return GLFW.setCursorPosCallback(winid,cbfun)}function _glfwSetDropCallback(winid,cbfun){return GLFW.setDropCallback(winid,cbfun)}function _glfwSetErrorCallback(cbfun){var prevcbfun=GLFW.errorFunc;GLFW.errorFunc=cbfun;return prevcbfun}function _glfwSetKeyCallback(winid,cbfun){return GLFW.setKeyCallback(winid,cbfun)}function _glfwSetMouseButtonCallback(winid,cbfun){return GLFW.setMouseButtonCallback(winid,cbfun)}function _glfwSetScrollCallback(winid,cbfun){return GLFW.setScrollCallback(winid,cbfun)}function _glfwSetWindowFocusCallback(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowFocusFunc;win.windowFocusFunc=cbfun;return prevcbfun}function _glfwSetWindowIconifyCallback(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowIconifyFunc;win.windowIconifyFunc=cbfun;return prevcbfun}function _glfwSetWindowShouldClose(winid,value){var win=GLFW.WindowFromId(winid);if(!win)return;win.shouldClose=value}function _glfwSetWindowSizeCallback(winid,cbfun){return GLFW.setWindowSizeCallback(winid,cbfun)}function _glfwSwapBuffers(winid){GLFW.swapBuffers(winid)}function _glfwSwapInterval(interval){interval=Math.abs(interval);if(interval==0)_emscripten_set_main_loop_timing(0,0);else _emscripten_set_main_loop_timing(1,interval)}function _glfwTerminate(){window.removeEventListener("gamepadconnected",GLFW.onGamepadConnected,true);window.removeEventListener("gamepaddisconnected",GLFW.onGamepadDisconnected,true);window.removeEventListener("keydown",GLFW.onKeydown,true);window.removeEventListener("keypress",GLFW.onKeyPress,true);window.removeEventListener("keyup",GLFW.onKeyup,true);window.removeEventListener("blur",GLFW.onBlur,true);Module["canvas"].removeEventListener("touchmove",GLFW.onMousemove,true);Module["canvas"].removeEventListener("touchstart",GLFW.onMouseButtonDown,true);Module["canvas"].removeEventListener("touchcancel",GLFW.onMouseButtonUp,true);Module["canvas"].removeEventListener("touchend",GLFW.onMouseButtonUp,true);Module["canvas"].removeEventListener("mousemove",GLFW.onMousemove,true);Module["canvas"].removeEventListener("mousedown",GLFW.onMouseButtonDown,true);Module["canvas"].removeEventListener("mouseup",GLFW.onMouseButtonUp,true);Module["canvas"].removeEventListener("wheel",GLFW.onMouseWheel,true);Module["canvas"].removeEventListener("mousewheel",GLFW.onMouseWheel,true);Module["canvas"].removeEventListener("mouseenter",GLFW.onMouseenter,true);Module["canvas"].removeEventListener("mouseleave",GLFW.onMouseleave,true);Module["canvas"].removeEventListener("drop",GLFW.onDrop,true);Module["canvas"].removeEventListener("dragover",GLFW.onDragover,true);Module["canvas"].width=Module["canvas"].height=1;GLFW.windows=null;GLFW.active=null}function _glfwWindowHint(target,hint){GLFW.hints[target]=hint}function _time(ptr){var ret=Date.now()/1e3|0;if(ptr){HEAP32[ptr>>2]=ret}return ret}var FSNode=function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev};var readMode=292|73;var writeMode=146;Object.defineProperties(FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(val){val?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===writeMode},set:function(val){val?this.mode|=writeMode:this.mode&=~writeMode}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}});FS.FSNode=FSNode;FS.staticInit();var GLctx;for(var i=0;i<32;++i)tempFixedLengthArray.push(new Array(i));var miniTempWebGLFloatBuffersStorage=new Float32Array(288);for(var i=0;i<288;++i){miniTempWebGLFloatBuffers[i]=miniTempWebGLFloatBuffersStorage.subarray(0,i+1)}var __miniTempWebGLIntBuffersStorage=new Int32Array(288);for(var i=0;i<288;++i){__miniTempWebGLIntBuffers[i]=__miniTempWebGLIntBuffersStorage.subarray(0,i+1)}Module["requestFullscreen"]=function Module_requestFullscreen(lockPointer,resizeCanvas){Browser.requestFullscreen(lockPointer,resizeCanvas)};Module["requestAnimationFrame"]=function Module_requestAnimationFrame(func){Browser.requestAnimationFrame(func)};Module["setCanvasSize"]=function Module_setCanvasSize(width,height,noUpdates){Browser.setCanvasSize(width,height,noUpdates)};Module["pauseMainLoop"]=function Module_pauseMainLoop(){Browser.mainLoop.pause()};Module["resumeMainLoop"]=function Module_resumeMainLoop(){Browser.mainLoop.resume()};Module["getUserMedia"]=function Module_getUserMedia(){Browser.getUserMedia()};Module["createContext"]=function Module_createContext(canvas,useWebGL,setInModule,webGLContextAttributes){return Browser.createContext(canvas,useWebGL,setInModule,webGLContextAttributes)};function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var asmLibraryArg={"n":___assert_fail,"G":___sys_fcntl64,"Sa":___sys_ioctl,"Ta":___sys_open,"x":_emscripten_exit_pointerlock,"_":_emscripten_get_element_css_size,"V":_emscripten_get_gamepad_status,"W":_emscripten_get_num_gamepads,"Hd":_emscripten_glActiveTexture,"Gd":_emscripten_glAttachShader,"O":_emscripten_glBeginQueryEXT,"Fd":_emscripten_glBindAttribLocation,"Ed":_emscripten_glBindBuffer,"Dd":_emscripten_glBindFramebuffer,"Cd":_emscripten_glBindRenderbuffer,"Bd":_emscripten_glBindTexture,"Pd":_emscripten_glBindVertexArrayOES,"zd":_emscripten_glBlendColor,"yd":_emscripten_glBlendEquation,"xd":_emscripten_glBlendEquationSeparate,"wd":_emscripten_glBlendFunc,"vd":_emscripten_glBlendFuncSeparate,"ud":_emscripten_glBufferData,"td":_emscripten_glBufferSubData,"sd":_emscripten_glCheckFramebufferStatus,"rd":_emscripten_glClear,"qd":_emscripten_glClearColor,"od":_emscripten_glClearDepthf,"nd":_emscripten_glClearStencil,"md":_emscripten_glColorMask,"ld":_emscripten_glCompileShader,"kd":_emscripten_glCompressedTexImage2D,"jd":_emscripten_glCompressedTexSubImage2D,"id":_emscripten_glCopyTexImage2D,"hd":_emscripten_glCopyTexSubImage2D,"gd":_emscripten_glCreateProgram,"fd":_emscripten_glCreateShader,"ed":_emscripten_glCullFace,"dd":_emscripten_glDeleteBuffers,"cd":_emscripten_glDeleteFramebuffers,"bd":_emscripten_glDeleteProgram,"Q":_emscripten_glDeleteQueriesEXT,"ad":_emscripten_glDeleteRenderbuffers,"$c":_emscripten_glDeleteShader,"_c":_emscripten_glDeleteTextures,"Od":_emscripten_glDeleteVertexArraysOES,"Zc":_emscripten_glDepthFunc,"Yc":_emscripten_glDepthMask,"Xc":_emscripten_glDepthRangef,"Wc":_emscripten_glDetachShader,"Vc":_emscripten_glDisable,"Uc":_emscripten_glDisableVertexAttribArray,"Tc":_emscripten_glDrawArrays,"Kd":_emscripten_glDrawArraysInstancedANGLE,"Ld":_emscripten_glDrawBuffersWEBGL,"Sc":_emscripten_glDrawElements,"Jd":_emscripten_glDrawElementsInstancedANGLE,"Rc":_emscripten_glEnable,"Qc":_emscripten_glEnableVertexAttribArray,"N":_emscripten_glEndQueryEXT,"Pc":_emscripten_glFinish,"Oc":_emscripten_glFlush,"Nc":_emscripten_glFramebufferRenderbuffer,"Mc":_emscripten_glFramebufferTexture2D,"Lc":_emscripten_glFrontFace,"Kc":_emscripten_glGenBuffers,"Ic":_emscripten_glGenFramebuffers,"R":_emscripten_glGenQueriesEXT,"Hc":_emscripten_glGenRenderbuffers,"Gc":_emscripten_glGenTextures,"Nd":_emscripten_glGenVertexArraysOES,"Jc":_emscripten_glGenerateMipmap,"Fc":_emscripten_glGetActiveAttrib,"Ec":_emscripten_glGetActiveUniform,"Dc":_emscripten_glGetAttachedShaders,"Bc":_emscripten_glGetAttribLocation,"Ac":_emscripten_glGetBooleanv,"zc":_emscripten_glGetBufferParameteriv,"yc":_emscripten_glGetError,"xc":_emscripten_glGetFloatv,"wc":_emscripten_glGetFramebufferAttachmentParameteriv,"vc":_emscripten_glGetIntegerv,"tc":_emscripten_glGetProgramInfoLog,"uc":_emscripten_glGetProgramiv,"Rd":_emscripten_glGetQueryObjecti64vEXT,"Td":_emscripten_glGetQueryObjectivEXT,"Qd":_emscripten_glGetQueryObjectui64vEXT,"Sd":_emscripten_glGetQueryObjectuivEXT,"Ud":_emscripten_glGetQueryivEXT,"sc":_emscripten_glGetRenderbufferParameteriv,"qc":_emscripten_glGetShaderInfoLog,"pc":_emscripten_glGetShaderPrecisionFormat,"oc":_emscripten_glGetShaderSource,"rc":_emscripten_glGetShaderiv,"nc":_emscripten_glGetString,"mc":_emscripten_glGetTexParameterfv,"lc":_emscripten_glGetTexParameteriv,"ic":_emscripten_glGetUniformLocation,"kc":_emscripten_glGetUniformfv,"jc":_emscripten_glGetUniformiv,"fc":_emscripten_glGetVertexAttribPointerv,"hc":_emscripten_glGetVertexAttribfv,"gc":_emscripten_glGetVertexAttribiv,"ec":_emscripten_glHint,"dc":_emscripten_glIsBuffer,"cc":_emscripten_glIsEnabled,"bc":_emscripten_glIsFramebuffer,"ac":_emscripten_glIsProgram,"P":_emscripten_glIsQueryEXT,"$b":_emscripten_glIsRenderbuffer,"_b":_emscripten_glIsShader,"Zb":_emscripten_glIsTexture,"Md":_emscripten_glIsVertexArrayOES,"Yb":_emscripten_glLineWidth,"Xb":_emscripten_glLinkProgram,"Wb":_emscripten_glPixelStorei,"Vb":_emscripten_glPolygonOffset,"M":_emscripten_glQueryCounterEXT,"Ub":_emscripten_glReadPixels,"Tb":_emscripten_glReleaseShaderCompiler,"Sb":_emscripten_glRenderbufferStorage,"Rb":_emscripten_glSampleCoverage,"Qb":_emscripten_glScissor,"Ob":_emscripten_glShaderBinary,"Nb":_emscripten_glShaderSource,"Mb":_emscripten_glStencilFunc,"Lb":_emscripten_glStencilFuncSeparate,"Kb":_emscripten_glStencilMask,"Jb":_emscripten_glStencilMaskSeparate,"Ib":_emscripten_glStencilOp,"Hb":_emscripten_glStencilOpSeparate,"Gb":_emscripten_glTexImage2D,"Fb":_emscripten_glTexParameterf,"Db":_emscripten_glTexParameterfv,"Cb":_emscripten_glTexParameteri,"Bb":_emscripten_glTexParameteriv,"Ab":_emscripten_glTexSubImage2D,"zb":_emscripten_glUniform1f,"yb":_emscripten_glUniform1fv,"xb":_emscripten_glUniform1i,"wb":_emscripten_glUniform1iv,"vb":_emscripten_glUniform2f,"ub":_emscripten_glUniform2fv,"sb":_emscripten_glUniform2i,"rb":_emscripten_glUniform2iv,"qb":_emscripten_glUniform3f,"pb":_emscripten_glUniform3fv,"ob":_emscripten_glUniform3i,"nb":_emscripten_glUniform3iv,"mb":_emscripten_glUniform4f,"lb":_emscripten_glUniform4fv,"kb":_emscripten_glUniform4i,"jb":_emscripten_glUniform4iv,"hb":_emscripten_glUniformMatrix2fv,"gb":_emscripten_glUniformMatrix3fv,"fb":_emscripten_glUniformMatrix4fv,"eb":_emscripten_glUseProgram,"db":_emscripten_glValidateProgram,"cb":_emscripten_glVertexAttrib1f,"bb":_emscripten_glVertexAttrib1fv,"ab":_emscripten_glVertexAttrib2f,"$a":_emscripten_glVertexAttrib2fv,"_a":_emscripten_glVertexAttrib3f,"Ya":_emscripten_glVertexAttrib3fv,"Xa":_emscripten_glVertexAttrib4f,"Wa":_emscripten_glVertexAttrib4fv,"Id":_emscripten_glVertexAttribDivisorANGLE,"Va":_emscripten_glVertexAttribPointer,"Ua":_emscripten_glViewport,"Na":_emscripten_memcpy_big,"Oa":_emscripten_resize_heap,"t":_emscripten_run_script,"X":_emscripten_sample_gamepad_data,"xa":_emscripten_set_click_callback_on_thread,"za":_emscripten_set_fullscreenchange_callback_on_thread,"sa":_emscripten_set_gamepadconnected_callback_on_thread,"ra":_emscripten_set_gamepaddisconnected_callback_on_thread,"ya":_emscripten_set_keydown_callback_on_thread,"Wd":_emscripten_set_main_loop,"ta":_emscripten_set_touchcancel_callback_on_thread,"va":_emscripten_set_touchend_callback_on_thread,"ua":_emscripten_set_touchmove_callback_on_thread,"wa":_emscripten_set_touchstart_callback_on_thread,"Pa":_emscripten_thread_sleep,"S":_exit,"H":_fd_close,"Ra":_fd_read,"Ma":_fd_seek,"F":_fd_write,"L":_glActiveTexture,"y":_glAttachShader,"f":_glBindAttribLocation,"a":_glBindBuffer,"g":_glBindTexture,"Eb":_glBlendFunc,"k":_glBufferData,"r":_glBufferSubData,"I":_glClear,"J":_glClearColor,"Za":_glClearDepthf,"Fa":_glCompileShader,"Ja":_glCompressedTexImage2D,"Da":_glCreateProgram,"Ha":_glCreateShader,"tb":_glCullFace,"i":_glDeleteBuffers,"B":_glDeleteProgram,"C":_glDeleteShader,"E":_glDeleteTextures,"Pb":_glDepthFunc,"D":_glDetachShader,"K":_glDisable,"j":_glDisableVertexAttribArray,"Ad":_glDrawArrays,"pd":_glDrawElements,"s":_glEnable,"d":_glEnableVertexAttribArray,"ib":_glFrontFace,"l":_glGenBuffers,"La":_glGenTextures,"q":_glGetAttribLocation,"Cc":_glGetFloatv,"Aa":_glGetProgramInfoLog,"A":_glGetProgramiv,"Ea":_glGetShaderInfoLog,"z":_glGetShaderiv,"h":_glGetString,"p":_glGetUniformLocation,"Ba":_glLinkProgram,"Qa":_glPixelStorei,"Ia":_glReadPixels,"Ga":_glShaderSource,"Ka":_glTexImage2D,"m":_glTexParameteri,"U":_glUniform1i,"ba":_glUniform4f,"Ca":_glUniformMatrix4fv,"o":_glUseProgram,"e":_glVertexAttribPointer,"Vd":_glViewport,"v":_glfwCreateWindow,"oa":_glfwDefaultWindowHints,"Z":_glfwDestroyWindow,"w":_glfwGetPrimaryMonitor,"c":_glfwGetTime,"na":_glfwGetVideoModes,"pa":_glfwInit,"ca":_glfwMakeContextCurrent,"ha":_glfwSetCharCallback,"da":_glfwSetCursorEnterCallback,"fa":_glfwSetCursorPosCallback,"ja":_glfwSetDropCallback,"qa":_glfwSetErrorCallback,"ia":_glfwSetKeyCallback,"ga":_glfwSetMouseButtonCallback,"ea":_glfwSetScrollCallback,"ka":_glfwSetWindowFocusCallback,"la":_glfwSetWindowIconifyCallback,"T":_glfwSetWindowShouldClose,"ma":_glfwSetWindowSizeCallback,"Y":_glfwSwapBuffers,"aa":_glfwSwapInterval,"u":_glfwTerminate,"b":_glfwWindowHint,"$":_time};var asm=createWasm();var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["Yd"]).apply(null,arguments)};var _main=Module["_main"]=function(){return(_main=Module["_main"]=Module["asm"]["Zd"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["$d"]).apply(null,arguments)};var _free=Module["_free"]=function(){return(_free=Module["_free"]=Module["asm"]["ae"]).apply(null,arguments)};var ___errno_location=Module["___errno_location"]=function(){return(___errno_location=Module["___errno_location"]=Module["asm"]["be"]).apply(null,arguments)};var stackAlloc=Module["stackAlloc"]=function(){return(stackAlloc=Module["stackAlloc"]=Module["asm"]["ce"]).apply(null,arguments)};var calledRun;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}var calledMain=false;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args){var entryFunction=Module["_main"];var argc=0;var argv=0;try{var ret=entryFunction(argc,argv);exit(ret,true)}catch(e){if(e instanceof ExitStatus){return}else if(e=="unwind"){noExitRuntime=true;return}else{var toLog=e;if(e&&typeof e==="object"&&e.stack){toLog=[e,e.stack]}err("exception thrown: "+toLog);quit_(1,e)}}finally{calledMain=true}}function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(shouldRunNow)callMain(args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}Module["run"]=run;function exit(status,implicit){if(implicit&&noExitRuntime&&status===0){return}if(noExitRuntime){}else{EXITSTATUS=status;exitRuntime();if(Module["onExit"])Module["onExit"](status);ABORT=true}quit_(status,new ExitStatus(status))}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}var shouldRunNow=true;if(Module["noInitialRun"])shouldRunNow=false;run();
diff --git a/examples/web/models/models_rlgl_solar_system.wasm b/examples/web/models/models_rlgl_solar_system.wasm
deleted file mode 100644
index 06ed7e7..0000000
--- a/examples/web/models/models_rlgl_solar_system.wasm
+++ /dev/null
Binary files differ
diff --git a/examples/web/models/models_skybox.c b/examples/web/models/models_skybox.c
deleted file mode 100644
index 75699f4..0000000
--- a/examples/web/models/models_skybox.c
+++ /dev/null
@@ -1,164 +0,0 @@
-/*******************************************************************************************
-*
-* raylib [models] example - Skybox loading and drawing
-*
-* This example has been created using raylib 1.8 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
-*
-* Copyright (c) 2017 Ramon Santamaria (@raysan5)
-*
-********************************************************************************************/
-
-#include "raylib.h"
-#include "rlgl.h"
-
-#if defined(PLATFORM_WEB)
- #include <emscripten/emscripten.h>
-#endif
-
-//----------------------------------------------------------------------------------
-// Global Variables Definition
-//----------------------------------------------------------------------------------
-const int screenWidth = 800;
-const int screenHeight = 450;
-
-// Define the camera to look into our 3d world
-Camera camera = {{ 1.0f, 1.0f, 1.0f }, { 0.0f, 0.0f, 0.0f }, { 0.0f, 1.0f, 0.0f }, 45.0f };
-
-Model skybox = { 0 };
-Shader shdrCubemap = { 0 };
-Texture2D panorama = { 0 };
-
-char panoFileName[256] = { 0 };
-
-//----------------------------------------------------------------------------------
-// Module Functions Declaration
-//----------------------------------------------------------------------------------
-void UpdateDrawFrame(void); // Update and Draw one frame
-
-//----------------------------------------------------------------------------------
-// Program Main Entry Point
-//----------------------------------------------------------------------------------
-int main(void)
-{
- // Initialization
- //--------------------------------------------------------------------------------------
- InitWindow(screenWidth, screenHeight, "raylib [models] example - skybox loading and drawing");
-
- // Load skybox model
- Mesh cube = GenMeshCube(1.0f, 1.0f, 1.0f);
- skybox = LoadModelFromMesh(cube);
-
- // Load skybox shader and set required locations
- // NOTE: Some locations are automatically set at shader loading
-#if defined(PLATFORM_DESKTOP)
- skybox.materials[0].shader = LoadShader("resources/shaders/glsl330/skybox.vs", "resources/shaders/glsl330/skybox.fs");
-#else // PLATFORM_RPI, PLATFORM_ANDROID, PLATFORM_WEB
- skybox.materials[0].shader = LoadShader("resources/shaders/glsl100/skybox.vs", "resources/shaders/glsl100/skybox.fs");
-#endif
- SetShaderValue(skybox.materials[0].shader, GetShaderLocation(skybox.materials[0].shader, "environmentMap"), (int[1]){ MATERIAL_MAP_CUBEMAP }, SHADER_UNIFORM_INT);
- SetShaderValue(skybox.materials[0].shader, GetShaderLocation(skybox.materials[0].shader, "vflipped"), (int[1]){ 1 }, SHADER_UNIFORM_INT);
-
- // Load cubemap shader and setup required shader locations
-#if defined(PLATFORM_DESKTOP)
- shdrCubemap = LoadShader("resources/shaders/glsl330/cubemap.vs", "resources/shaders/glsl330/cubemap.fs");
-#else // PLATFORM_RPI, PLATFORM_ANDROID, PLATFORM_WEB
- shdrCubemap = LoadShader("resources/shaders/glsl100/cubemap.vs", "resources/shaders/glsl100/cubemap.fs");
-#endif
- SetShaderValue(shdrCubemap, GetShaderLocation(shdrCubemap, "equirectangularMap"), (int[1]){ 0 }, SHADER_UNIFORM_INT);
-
- // Load HDR panorama (sphere) texture
- TextCopy(panoFileName, "resources/dresden_square_2k.hdr");
- panorama = LoadTexture(panoFileName);
-
- // Generate cubemap (texture with 6 quads-cube-mapping) from panorama HDR texture
- // NOTE 1: New texture is generated rendering to texture, shader calculates the sphere->cube coordinates mapping
- // NOTE 2: It seems on some Android devices WebGL, fbo does not properly support a FLOAT-based attachment,
- // despite texture can be successfully created.. so using PIXELFORMAT_UNCOMPRESSED_R8G8B8A8 instead of PIXELFORMAT_UNCOMPRESSED_R32G32B32A32
- skybox.materials[0].maps[MATERIAL_MAP_CUBEMAP].texture = GenTextureCubemap(shdrCubemap, panorama, 1024, PIXELFORMAT_UNCOMPRESSED_R8G8B8A8);
-
- UnloadTexture(panorama); // Texture not required anymore, cubemap already generated
-
- SetCameraMode(camera, CAMERA_FIRST_PERSON); // Set a first person camera mode
-
-#if defined(PLATFORM_WEB)
- emscripten_set_main_loop(UpdateDrawFrame, 60, 1);
-#else
- SetTargetFPS(60); // Set our game to run at 60 frames-per-second
- //--------------------------------------------------------------------------------------
-
- // Main game loop
- while (!WindowShouldClose()) // Detect window close button or ESC key
- {
- UpdateDrawFrame();
- }
-#endif
-
- // De-Initialization
- //--------------------------------------------------------------------------------------
- UnloadModel(skybox); // Unload skybox model
-
- CloseWindow(); // Close window and OpenGL context
- //--------------------------------------------------------------------------------------
-
- return 0;
-}
-
-//----------------------------------------------------------------------------------
-// Module Functions Definition
-//----------------------------------------------------------------------------------
-void UpdateDrawFrame(void)
-{
- // Update
- //----------------------------------------------------------------------------------
- UpdateCamera(&camera); // Update camera
-
- // Load new cubemap texture on drag&drop
- if (IsFileDropped())
- {
- int count = 0;
- char **droppedFiles = GetDroppedFiles(&count);
-
- if (count == 1) // Only support one file dropped
- {
- if (IsFileExtension(droppedFiles[0], ".png;.jpg;.hdr;.bmp;.tga"))
- {
- // Unload current cubemap texture and load new one
- UnloadTexture(skybox.materials[0].maps[MATERIAL_MAP_CUBEMAP].texture);
- panorama = LoadTexture(droppedFiles[0]);
- TextCopy(panoFileName, droppedFiles[0]);
-
- // Generate cubemap from panorama texture
- skybox.materials[0].maps[MATERIAL_MAP_CUBEMAP].texture = GenTextureCubemap(shdrCubemap, panorama, 1024, PIXELFORMAT_UNCOMPRESSED_R8G8B8A8);
- UnloadTexture(panorama);
- }
- }
-
- ClearDroppedFiles(); // Clear internal buffers
- }
- //----------------------------------------------------------------------------------
-
- // Draw
- //----------------------------------------------------------------------------------
- BeginDrawing();
-
- ClearBackground(RAYWHITE);
-
- BeginMode3D(camera);
-
- // We are inside the cube, we need to disable backface culling!
- rlDisableBackfaceCulling();
- rlDisableDepthMask();
- DrawModel(skybox, (Vector3){0, 0, 0}, 1.0f, WHITE);
- rlEnableBackfaceCulling();
- rlEnableDepthMask();
-
- DrawGrid(10, 1.0f);
- EndMode3D();
-
- DrawText(TextFormat("Panorama image from hdrihaven.com: %s", GetFileName(panoFileName)), 10, GetScreenHeight() - 20, 10, BLACK);
- DrawFPS(10, 10);
-
- EndDrawing();
- //----------------------------------------------------------------------------------
-}
diff --git a/examples/web/models/models_skybox.data b/examples/web/models/models_skybox.data
deleted file mode 100644
index 7507cfc..0000000
--- a/examples/web/models/models_skybox.data
+++ /dev/null
Binary files differ
diff --git a/examples/web/models/models_skybox.html b/examples/web/models/models_skybox.html
deleted file mode 100644
index e17be04..0000000
--- a/examples/web/models/models_skybox.html
+++ /dev/null
@@ -1 +0,0 @@
-<!doctypehtml><html lang=en-us><head><meta charset=utf-8><meta content="text/html; charset=utf-8"http-equiv=Content-Type><title>raylib HTML5 GAME</title><meta content="raylib HTML5 GAME"name=title><meta content="New HTML5 videogame, developed using raylib videogames library"name=description><meta content="raylib, games, html5, programming, C, C++, library, learn, videogames"name=keywords><meta content="width=device-width"name=viewport><meta content="raylib HTML5 GAME"property=og:title><meta content=image/png property=og:image:type><meta content=https://www.raylib.com/common/img/raylib_logo.png property=og:image><meta content=raylib.com property=og:site_name><meta content=https://www.raylib.com/games.html property=og:url><meta content="New HTML5 videogame, developed using raylib videogames library"property=og:description><meta content=summary name=twitter:card><meta content=@raysan5 name=twitter:site><meta content="raylib HTML5 GAME"name=twitter:title><meta content=https://www.raylib.com/common/raylib_logo.png name=twitter:image><meta content=https://www.raylib.com/games.html name=twitter:url><meta content="New HTML5 videogame, developed using raylib videogames library"name=twitter:description><link href=https://www.raylib.com/favicon.ico rel="shortcut icon"><style>body{font-family:arial;margin:0;padding:none}#header{width:100%;height:80px;background-color:#888}#logo{width:64px;height:64px;float:left;position:relative;margin:10px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAAlC+aJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjExR/NCNwAAA7JJREFUaEPtk0FyWzEMQ+37X7fZhxX4YY3AD1OKF1nkzTRlSBCCLeVBnvl/AUdaELOunPno1kts1kixdtEZKVs+xIxebBkZsVknn/L5nFGDLR8T4zVC9fX19S/+tTFijrYK4jUjbPUtqBHpnEE6PkZD7jQZV8n5Recw1XQKciZuPaEtR6UjNs5ENVGMsBVqpPtER0ZMOhpyp8m4YL4OjD9yxsyZxnQycfMJETNSzsRE1+dihK3YMiJmpHTW3xpmXPC6BXlCHfqnBlsjY5hxf/6EVEOM2BTEi0fYCX4ONSI6Kq3Blg/prIOMq2CsRur4KQ0x64SdjOufEDEdHZGOhmz5RDHCVqhRuQ86YsVskbc+GXchLiHnFyYH+UigQDVGnImbT8hwFkgLg2qiM8JO6Ylx1FNLa3DmYwqCTsZd4BPqGJG7MwKzpeiWKTKxXkLMVE3MSOmsdwxLH6Rd/wCCLSNDx6djeKfJuArGeoYamRHpaEjnCBYZVy8hZqo2GI36qPjsiOiMsBXGcev4Mx9TLGTchbgEjN/uz6jGrBvDjg+LTNx8Qp2CbG2xMKgmOiPslJ4Yxx+eSnSkzlosZNwFPiHl7FRTkLNRJm4+IeVM0ymIH42wE/wcKalQI4MRl4EW3p6VcRWMua8F6WjIlqZDxvVPiHQ6CjVbYkV9ohhhp/Rk1wiYgpyJ78i4CsZbjkb8Qx+ihvzu3RPaKogZkY6GlEeMsKdPSOFIC8VoOusg44L5c+T8ouOoGhWbdWJ8tMi4egkxo4hoh2yNTGf3iIyr5Lyic4bRENXo+lvDjAt4C1Hk/OKtUaAj0+n4dMSZ2D+hrYJsaYh2SClG2jV9kJKKzhlGQ1SsW299Mq6C8dYZHTExo8fzieI5ivipYnYy7nwJqGKmOYyRwfiUBXITfh5qSHRGWEkfqJqURgvsdHyWYv7Ko8DnYYegk3EB00cxprdrJRzFd7YQzawu8L1GMTYS/KpPaAFTkIn1EmJmspJSs5xBzSyGhlkBmlxfNFiP5mw4wlbMh4F5Ddxp5jNINBdCEz9zPOC1zD7Q0HBdmXndwv0TMtydEdzlWJT4VZ8Qt9Qn4/onxMIwa5ZYGJU5yufBiCjwE50AGjLCVuS8Yt4H7OgZLKK5EKOsLviEWJSL/+0uMi7gLUSBseYwqEbXvSHCec1CJvZPyHCmYQffaBBfOTCGHM2aEbZi1+gO1XTWVXMnzrhAn5DSOZVsiQlHnSITKzGj6DeTcZWc/3oy7h9//PF4PL4BlvsWrb6RE+oAAAAASUVORK5CYII=)}.emscripten{padding-right:0;margin-left:auto;margin-right:auto;display:block}div.emscripten{text-align:center}div.emscripten_border{border:1px solid #000}canvas.emscripten{border:0 none;background:#000;width:100%}.spinner{height:30px;width:30px;margin:0;margin-top:20px;margin-left:20px;display:inline-block;vertical-align:top;-webkit-animation:rotation .8s linear infinite;-moz-animation:rotation .8s linear infinite;-o-animation:rotation .8s linear infinite;animation:rotation .8s linear infinite;border-left:5px solid #000;border-right:5px solid #000;border-bottom:5px solid #000;border-top:5px solid red;border-radius:100%;background-color:#f5f5f5}@-webkit-keyframes rotation{from{-webkit-transform:rotate(0)}to{-webkit-transform:rotate(360deg)}}@-moz-keyframes rotation{from{-moz-transform:rotate(0)}to{-moz-transform:rotate(360deg)}}@-o-keyframes rotation{from{-o-transform:rotate(0)}to{-o-transform:rotate(360deg)}}@keyframes rotation{from{transform:rotate(0)}to{transform:rotate(360deg)}}#status{display:inline-block;vertical-align:top;margin-top:30px;margin-left:20px;font-weight:700;color:#282828}#progress{height:0;width:0}#controls{display:inline-block;float:right;vertical-align:top;margin-top:15px;margin-right:20px}#output{width:100%;height:140px;margin:0 auto;margin-top:10px;display:block;background-color:#000;color:#25ae26;font-family:'Lucida Console',Monaco,monospace;outline:0}input[type=button]{background-color:#d3d3d3;border:4px solid #a9a9a9;color:#000;text-decoration:none;cursor:pointer;width:140px;height:50px}input[type=button]:hover{background-color:#f5f5f5ff;border-color:#000}</style></head><body><div id=header><a href=https://www.raylib.com id=logo></a><div class=spinner id=spinner></div><div class=emscripten id=status>Downloading...</div><span id=controls><span><input onclick=Module.requestFullscreen(!1,!1) type=button value="🖵 FULLSCREEN"></span><span><input onclick=toggleAudio() type=button value="🔇 SUSPEND"id=btn-audio></span></span><div class=emscripten><progress hidden id=progress max=100 value=0></progress></div></div><div class=emscripten_border><canvas class=emscripten id=canvas oncontextmenu=event.preventDefault() tabindex=-1></canvas></div><textarea id=output rows=8></textarea><script src=https://cdn.jsdelivr.net/gh/eligrey/FileSaver.js/dist/FileSaver.min.js></script><script>function saveFileFromMEMFSToDisk(e,a){var t,i=/^((?!chrome|android).)*safari/i.test(navigator.userAgent),o=FS.readFile(e);t=i?new Blob([o.buffer],{type:"application/octet-stream"}):new Blob([o.buffer],{type:"application/octet-binary"}),saveAs(t,a)}</script><script>var statusElement=document.querySelector("#status"),progressElement=document.querySelector("#progress"),spinnerElement=document.querySelector("#spinner"),Module={preRun:[],postRun:[],print:function(){var e=document.querySelector("#output");return e&&(e.value=""),function(t){arguments.length>1&&(t=Array.prototype.slice.call(arguments).join(" ")),console.log(t),e&&(e.value+=t+"\n",e.scrollTop=e.scrollHeight)}}(),printErr:function(e){arguments.length>1&&(e=Array.prototype.slice.call(arguments).join(" ")),console.error(e)},canvas:function(){var e=document.querySelector("#canvas");return e.addEventListener("webglcontextlost",(function(e){alert("WebGL context lost. You will need to reload the page."),e.preventDefault()}),!1),e}(),setStatus:function(e){if(Module.setStatus.last||(Module.setStatus.last={time:Date.now(),text:""}),e!==Module.setStatus.last.text){var t=e.match(/([^(]+)\((\d+(\.\d+)?)\/(\d+)\)/),n=Date.now();t&&n-Module.setStatus.last.time<30||(Module.setStatus.last.time=n,Module.setStatus.last.text=e,t?(e=t[1],progressElement.value=100*parseInt(t[2]),progressElement.max=100*parseInt(t[4]),progressElement.hidden=!0,spinnerElement.hidden=!1):(progressElement.value=null,progressElement.max=null,progressElement.hidden=!0,e||(spinnerElement.style.display="none")),statusElement.innerHTML=e)}},totalDependencies:0,monitorRunDependencies:function(e){this.totalDependencies=Math.max(this.totalDependencies,e),Module.setStatus(e?"Preparing... ("+(this.totalDependencies-e)+"/"+this.totalDependencies+")":"All downloads complete.")}};Module.setStatus("Downloading..."),window.onerror=function(){Module.setStatus("Exception thrown, see JavaScript console"),spinnerElement.style.display="none",Module.setStatus=function(e){e&&Module.printErr("[post-exception status] "+e)}}</script><script>var audioBtn=document.querySelector("#btn-audio");const audioContexList=[];function toggleAudio(){var t=!1;audioContexList.forEach(e=>{"suspended"==e.state?(e.resume(),t=!0):"running"==e.state&&e.suspend()}),audioBtn.value=t?"🔇 SUSPEND":"🔈 RESUME"}self.AudioContext=new Proxy(self.AudioContext,{construct(t,e){const n=new t(...e);return audioContexList.push(n),"suspended"==n.state&&(audioBtn.value="🔈 RESUME"),n}})</script><script src=models_skybox.js async></script></body></html> \ No newline at end of file
diff --git a/examples/web/models/models_skybox.js b/examples/web/models/models_skybox.js
deleted file mode 100644
index b520a82..0000000
--- a/examples/web/models/models_skybox.js
+++ /dev/null
@@ -1 +0,0 @@
-var Module=typeof Module!=="undefined"?Module:{};if(!Module.expectedDataFileDownloads){Module.expectedDataFileDownloads=0}Module.expectedDataFileDownloads++;(function(){var loadPackage=function(metadata){var PACKAGE_PATH;if(typeof window==="object"){PACKAGE_PATH=window["encodeURIComponent"](window.location.pathname.toString().substring(0,window.location.pathname.toString().lastIndexOf("/"))+"/")}else if(typeof location!=="undefined"){PACKAGE_PATH=encodeURIComponent(location.pathname.toString().substring(0,location.pathname.toString().lastIndexOf("/"))+"/")}else{throw"using preloaded data can only be done on a web page or in a web worker"}var PACKAGE_NAME="models/models_skybox.data";var REMOTE_PACKAGE_BASE="models_skybox.data";if(typeof Module["locateFilePackage"]==="function"&&!Module["locateFile"]){Module["locateFile"]=Module["locateFilePackage"];err("warning: you defined Module.locateFilePackage, that has been renamed to Module.locateFile (using your locateFilePackage for now)")}var REMOTE_PACKAGE_NAME=Module["locateFile"]?Module["locateFile"](REMOTE_PACKAGE_BASE,""):REMOTE_PACKAGE_BASE;var REMOTE_PACKAGE_SIZE=metadata["remote_package_size"];var PACKAGE_UUID=metadata["package_uuid"];function fetchRemotePackage(packageName,packageSize,callback,errback){var xhr=new XMLHttpRequest;xhr.open("GET",packageName,true);xhr.responseType="arraybuffer";xhr.onprogress=function(event){var url=packageName;var size=packageSize;if(event.total)size=event.total;if(event.loaded){if(!xhr.addedTotal){xhr.addedTotal=true;if(!Module.dataFileDownloads)Module.dataFileDownloads={};Module.dataFileDownloads[url]={loaded:event.loaded,total:size}}else{Module.dataFileDownloads[url].loaded=event.loaded}var total=0;var loaded=0;var num=0;for(var download in Module.dataFileDownloads){var data=Module.dataFileDownloads[download];total+=data.total;loaded+=data.loaded;num++}total=Math.ceil(total*Module.expectedDataFileDownloads/num);if(Module["setStatus"])Module["setStatus"]("Downloading data... ("+loaded+"/"+total+")")}else if(!Module.dataFileDownloads){if(Module["setStatus"])Module["setStatus"]("Downloading data...")}};xhr.onerror=function(event){throw new Error("NetworkError for: "+packageName)};xhr.onload=function(event){if(xhr.status==200||xhr.status==304||xhr.status==206||xhr.status==0&&xhr.response){var packageData=xhr.response;callback(packageData)}else{throw new Error(xhr.statusText+" : "+xhr.responseURL)}};xhr.send(null)}function handleError(error){console.error("package error:",error)}var fetchedCallback=null;var fetched=Module["getPreloadedPackage"]?Module["getPreloadedPackage"](REMOTE_PACKAGE_NAME,REMOTE_PACKAGE_SIZE):null;if(!fetched)fetchRemotePackage(REMOTE_PACKAGE_NAME,REMOTE_PACKAGE_SIZE,function(data){if(fetchedCallback){fetchedCallback(data);fetchedCallback=null}else{fetched=data}},handleError);function runWithFS(){function assert(check,msg){if(!check)throw msg+(new Error).stack}Module["FS_createPath"]("/","resources",true,true);Module["FS_createPath"]("/resources","shaders",true,true);Module["FS_createPath"]("/resources/shaders","glsl100",true,true);function DataRequest(start,end,audio){this.start=start;this.end=end;this.audio=audio}DataRequest.prototype={requests:{},open:function(mode,name){this.name=name;this.requests[name]=this;Module["addRunDependency"]("fp "+this.name)},send:function(){},onload:function(){var byteArray=this.byteArray.subarray(this.start,this.end);this.finish(byteArray)},finish:function(byteArray){var that=this;Module["FS_createDataFile"](this.name,null,byteArray,true,true,true);Module["removeRunDependency"]("fp "+that.name);this.requests[this.name]=null}};var files=metadata["files"];for(var i=0;i<files.length;++i){new DataRequest(files[i]["start"],files[i]["end"],files[i]["audio"]).open("GET",files[i]["filename"])}function processPackageData(arrayBuffer){assert(arrayBuffer,"Loading data file failed.");assert(arrayBuffer instanceof ArrayBuffer,"bad input to processPackageData");var byteArray=new Uint8Array(arrayBuffer);DataRequest.prototype.byteArray=byteArray;var files=metadata["files"];for(var i=0;i<files.length;++i){DataRequest.prototype.requests[files[i].filename].onload()}Module["removeRunDependency"]("datafile_models/models_skybox.data")}Module["addRunDependency"]("datafile_models/models_skybox.data");if(!Module.preloadResults)Module.preloadResults={};Module.preloadResults[PACKAGE_NAME]={fromCache:false};if(fetched){processPackageData(fetched);fetched=null}else{fetchedCallback=processPackageData}}if(Module["calledRun"]){runWithFS()}else{if(!Module["preRun"])Module["preRun"]=[];Module["preRun"].push(runWithFS)}};loadPackage({"files":[{"filename":"/resources/dresden_square_2k.hdr","start":0,"end":6019615,"audio":0},{"filename":"/resources/shaders/glsl100/skybox.vs","start":6019615,"end":6020197,"audio":0},{"filename":"/resources/shaders/glsl100/skybox.fs","start":6020197,"end":6020946,"audio":0},{"filename":"/resources/shaders/glsl100/cubemap.vs","start":6020946,"end":6021403,"audio":0},{"filename":"/resources/shaders/glsl100/cubemap.fs","start":6021403,"end":6022034,"audio":0}],"remote_package_size":6022034,"package_uuid":"ba7627fe-fc9b-40ae-8526-525f9d540774"})})();var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram="./this.program";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window==="object";ENVIRONMENT_IS_WORKER=typeof importScripts==="function";ENVIRONMENT_IS_NODE=typeof process==="object"&&typeof process.versions==="object"&&typeof process.versions.node==="string";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require("path").dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require("fs");if(!nodePath)nodePath=require("path");filename=nodePath["normalize"](filename);return nodeFS["readFileSync"](filename,binary?null:"utf8")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);if(typeof module!=="undefined"){module["exports"]=Module}process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",abort);quit_=function(status){process["exit"](status)};Module["inspect"]=function(){return"[Emscripten Module object]"}}else if(ENVIRONMENT_IS_SHELL){if(typeof read!="undefined"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer==="function"){return new Uint8Array(readbuffer(f))}data=read(f,"binary");assert(typeof data==="object");return data};if(typeof scriptArgs!="undefined"){arguments_=scriptArgs}else if(typeof arguments!="undefined"){arguments_=arguments}if(typeof quit==="function"){quit_=function(status){quit(status)}}if(typeof print!=="undefined"){if(typeof console==="undefined")console={};console.log=print;console.warn=console.error=typeof printErr!=="undefined"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!=="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf("/")+1)}else{scriptDirectory=""}{read_=function(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=function(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var STACK_ALIGN=16;function alignMemory(size,factor){if(!factor)factor=STACK_ALIGN;return Math.ceil(size/factor)*factor}function warnOnce(text){if(!warnOnce.shown)warnOnce.shown={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;err(text)}}var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime=Module["noExitRuntime"]||true;if(typeof WebAssembly!=="object"){abort("no native wasm support detected")}function setValue(ptr,value,type,noSafe){type=type||"i8";if(type.charAt(type.length-1)==="*")type="i32";switch(type){case"i1":HEAP8[ptr>>0]=value;break;case"i8":HEAP8[ptr>>0]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":tempI64=[value>>>0,(tempDouble=value,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;default:abort("invalid type for setValue: "+type)}}var wasmMemory;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}var ALLOC_NORMAL=0;var ALLOC_STACK=1;function allocate(slab,allocator){var ret;if(allocator==ALLOC_STACK){ret=stackAlloc(slab.length)}else{ret=_malloc(slab.length)}if(slab.subarray||slab.slice){HEAPU8.set(slab,ret)}else{HEAPU8.set(new Uint8Array(slab),ret)}return ret}var UTF8Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heap,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heap[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str="";while(idx<endPtr){var u0=heap[idx++];if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heap[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heap[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u0=(u0&7)<<18|u1<<12|u2<<6|heap[idx++]&63}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||67108864;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;__ATINIT__.push({func:function(){___wasm_call_ctors()}});function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){FS.ignorePermissions=false;callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}what+="";err(what);ABORT=true;EXITSTATUS=1;what="abort("+what+"). Build with -s ASSERTIONS=1 for more info.";var e=new WebAssembly.RuntimeError(what);throw e}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix="file://";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile="models_skybox.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}else{throw"both async and sync fetching of the wasm failed"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch==="function"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={"a":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;wasmMemory=Module["asm"]["ne"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module["asm"]["qe"];removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiatedSource(output){receiveInstance(output["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming==="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch==="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync();return{}}var tempDouble;var tempI64;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback(Module);continue}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){wasmTable.get(func)()}else{wasmTable.get(func)(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}function ___assert_fail(condition,filename,line,func){abort("Assertion failed: "+UTF8ToString(condition)+", at: "+[filename?UTF8ToString(filename):"unknown filename",line,func?UTF8ToString(func):"unknown function"])}function setErrNo(value){HEAP32[___errno_location()>>2]=value;return value}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path==="/")return"/";path=PATH.normalize(path);path=path.replace(/\/$/,"");var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}};function getRandomDevice(){if(typeof crypto==="object"&&typeof crypto["getRandomValues"]==="function"){var randomBuffer=new Uint8Array(1);return function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]}}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");return function(){return crypto_module["randomBytes"](1)[0]}}catch(e){}}return function(){abort("randomDevice")}}var PATH_FS={resolve:function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!=="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=path.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(function(p){return!!p}),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:function(from,to){from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start<arr.length;start++){if(arr[start]!=="")break}var end=arr.length-1;for(;end>=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i<length;i++){if(fromParts[i]!==toParts[i]){samePartsLength=i;break}}var outputParts=[];for(var i=samePartsLength;i<fromParts.length;i++){outputParts.push("..")}outputParts=outputParts.concat(toParts.slice(samePartsLength));return outputParts.join("/")}};var TTY={ttys:[],init:function(){},shutdown:function(){},register:function(dev,ops){TTY.ttys[dev]={input:[],output:[],ops:ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open:function(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close:function(stream){stream.tty.ops.flush(stream.tty)},flush:function(stream){stream.tty.ops.flush(stream.tty)},read:function(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i<length;i++){var result;try{result=stream.tty.ops.get_char(stream.tty)}catch(e){throw new FS.ErrnoError(29)}if(result===undefined&&bytesRead===0){throw new FS.ErrnoError(6)}if(result===null||result===undefined)break;bytesRead++;buffer[offset+i]=result}if(bytesRead){stream.node.timestamp=Date.now()}return bytesRead},write:function(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.put_char){throw new FS.ErrnoError(60)}try{for(var i=0;i<length;i++){stream.tty.ops.put_char(stream.tty,buffer[offset+i])}}catch(e){throw new FS.ErrnoError(29)}if(length){stream.node.timestamp=Date.now()}return i}},default_tty_ops:{get_char:function(tty){if(!tty.input.length){var result=null;if(ENVIRONMENT_IS_NODE){var BUFSIZE=256;var buf=Buffer.alloc?Buffer.alloc(BUFSIZE):new Buffer(BUFSIZE);var bytesRead=0;try{bytesRead=nodeFS.readSync(process.stdin.fd,buf,0,BUFSIZE,null)}catch(e){if(e.toString().indexOf("EOF")!=-1)bytesRead=0;else throw e}if(bytesRead>0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function mmapAlloc(size){var alignedSize=alignMemory(size,16384);var ptr=_malloc(alignedSize);while(size<alignedSize)HEAP8[ptr+size++]=0;return ptr}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray:function(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage:function(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity<CAPACITY_DOUBLING_MAX?2:1.125)>>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage:function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr:function(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr:function(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp;old_node.parent=new_dir},unlink:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir:function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i<size;i++)buffer[offset+i]=contents[position+i]}return size},write:function(stream,buffer,offset,length,position,canOwn){if(!length)return 0;var node=stream.node;node.timestamp=Date.now();if(buffer.subarray&&(!node.contents||node.contents.subarray)){if(canOwn){node.contents=buffer.subarray(offset,offset+length);node.usedBytes=length;return length}else if(node.usedBytes===0&&position===0){node.contents=buffer.slice(offset,offset+length);node.usedBytes=length;return length}else if(position+length<=node.usedBytes){node.contents.set(buffer.subarray(offset,offset+length),position);return length}}MEMFS.expandFileStorage(node,position+length);if(node.contents.subarray&&buffer.subarray){node.contents.set(buffer.subarray(offset,offset+length),position)}else{for(var i=0;i<length;i++){node.contents[position+i]=buffer[offset+i]}}node.usedBytes=Math.max(node.usedBytes,position+length);return length},llseek:function(stream,offset,whence){var position=offset;if(whence===1){position+=stream.position}else if(whence===2){if(FS.isFile(stream.node.mode)){position+=stream.node.usedBytes}}if(position<0){throw new FS.ErrnoError(28)}return position},allocate:function(stream,offset,length){MEMFS.expandFileStorage(stream.node,offset+length);stream.node.usedBytes=Math.max(stream.node.usedBytes,offset+length)},mmap:function(stream,address,length,position,prot,flags){if(address!==0){throw new FS.ErrnoError(28)}if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}var ptr;var allocated;var contents=stream.node.contents;if(!(flags&2)&&contents.buffer===buffer){allocated=false;ptr=contents.byteOffset}else{if(position>0||position+length<contents.length){if(contents.subarray){contents=contents.subarray(position,position+length)}else{contents=Array.prototype.slice.call(contents,position,position+length)}}allocated=true;ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}HEAP8.set(contents,ptr)}return{ptr:ptr,allocated:allocated}},msync:function(stream,buffer,offset,length,mmapFlags){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}if(mmapFlags&2){return 0}var bytesWritten=MEMFS.stream_ops.write(stream,buffer,0,length,offset,false);return 0}}};var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,trackingDelegate:{},tracking:{openFlags:{READ:1,WRITE:2}},ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath:function(path,opts){path=PATH_FS.resolve(FS.cwd(),path);opts=opts||{};if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};for(var key in defaults){if(opts[key]===undefined){opts[key]=defaults[key]}}if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),false);var current=FS.root;var current_path="/";for(var i=0;i<parts.length;i++){var islast=i===parts.length-1;if(islast&&opts.parent){break}current=FS.lookupNode(current,parts[i]);current_path=PATH.join2(current_path,parts[i]);if(FS.isMountpoint(current)){if(!islast||islast&&opts.follow_mount){current=current.mounted.root}}if(!islast||opts.follow){var count=0;while(FS.isLink(current.mode)){var link=FS.readlink(current_path);current_path=PATH_FS.resolve(PATH.dirname(current_path),link);var lookup=FS.lookupPath(current_path,{recurse_count:opts.recurse_count});current=lookup.node;if(count++>40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath:function(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?mount+"/"+path:mount+path}path=path?node.name+"/"+path:node.name;node=node.parent}},hashName:function(parentid,name){var hash=0;for(var i=0;i<name.length;i++){hash=(hash<<5)-hash+name.charCodeAt(i)|0}return(parentid+hash>>>0)%FS.nameTable.length},hashAddNode:function(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode:function(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode:function(parent,name){var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode:function(parent,name,mode,rdev){var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:function(node){FS.hashRemoveNode(node)},isRoot:function(node){return node===node.parent},isMountpoint:function(node){return!!node.mounted},isFile:function(mode){return(mode&61440)===32768},isDir:function(mode){return(mode&61440)===16384},isLink:function(mode){return(mode&61440)===40960},isChrdev:function(mode){return(mode&61440)===8192},isBlkdev:function(mode){return(mode&61440)===24576},isFIFO:function(mode){return(mode&61440)===4096},isSocket:function(mode){return(mode&49152)===49152},flagModes:{"r":0,"r+":2,"w":577,"w+":578,"a":1089,"a+":1090},modeStringToFlags:function(str){var flags=FS.flagModes[str];if(typeof flags==="undefined"){throw new Error("Unknown file open mode: "+str)}return flags},flagsToPermissionString:function(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions:function(node,perms){if(FS.ignorePermissions){return 0}if(perms.indexOf("r")!==-1&&!(node.mode&292)){return 2}else if(perms.indexOf("w")!==-1&&!(node.mode&146)){return 2}else if(perms.indexOf("x")!==-1&&!(node.mode&73)){return 2}return 0},mayLookup:function(dir){var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate:function(dir,name){try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete:function(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen:function(node,flags){if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd:function(fd_start,fd_end){fd_start=fd_start||0;fd_end=fd_end||FS.MAX_OPEN_FDS;for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:function(fd){return FS.streams[fd]},createStream:function(stream,fd_start,fd_end){if(!FS.FSStream){FS.FSStream=function(){};FS.FSStream.prototype={object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}}}}var newStream=new FS.FSStream;for(var p in stream){newStream[p]=stream[p]}stream=newStream;var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:function(fd){FS.streams[fd]=null},chrdev_stream_ops:{open:function(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}},llseek:function(){throw new FS.ErrnoError(70)}},major:function(dev){return dev>>8},minor:function(dev){return dev&255},makedev:function(ma,mi){return ma<<8|mi},registerDevice:function(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:function(dev){return FS.devices[dev]},getMounts:function(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts},syncfs:function(populate,callback){if(typeof populate==="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err("warning: "+FS.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work")}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(function(mount){if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount:function(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount:function(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(function(hash){var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.indexOf(current.mount)!==-1){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup:function(parent,name){return parent.node_ops.lookup(parent,name)},mknod:function(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create:function(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:function(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree:function(path,mode){var dirs=path.split("/");var d="";for(var i=0;i<dirs.length;++i){if(!dirs[i])continue;d+="/"+dirs[i];try{FS.mkdir(d,mode)}catch(e){if(e.errno!=20)throw e}}},mkdev:function(path,mode,dev){if(typeof dev==="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:function(oldpath,newpath){if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:function(old_path,new_path){var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}try{if(FS.trackingDelegate["willMovePath"]){FS.trackingDelegate["willMovePath"](old_path,new_path)}}catch(e){err("FS.trackingDelegate['willMovePath']('"+old_path+"', '"+new_path+"') threw an exception: "+e.message)}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}try{if(FS.trackingDelegate["onMovePath"])FS.trackingDelegate["onMovePath"](old_path,new_path)}catch(e){err("FS.trackingDelegate['onMovePath']('"+old_path+"', '"+new_path+"') threw an exception: "+e.message)}},rmdir:function(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}try{if(FS.trackingDelegate["willDeletePath"]){FS.trackingDelegate["willDeletePath"](path)}}catch(e){err("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: "+e.message)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate["onDeletePath"])FS.trackingDelegate["onDeletePath"](path)}catch(e){err("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: "+e.message)}},readdir:function(path){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:function(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}try{if(FS.trackingDelegate["willDeletePath"]){FS.trackingDelegate["willDeletePath"](path)}}catch(e){err("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: "+e.message)}parent.node_ops.unlink(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate["onDeletePath"])FS.trackingDelegate["onDeletePath"](path)}catch(e){err("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: "+e.message)}},readlink:function(path){var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:function(path,dontFollow){var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:function(path){return FS.stat(path,true)},chmod:function(path,mode,dontFollow){var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:function(path,mode){FS.chmod(path,mode,true)},fchmod:function(fd,mode){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:function(path,uid,gid,dontFollow){var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:function(path,uid,gid){FS.chown(path,uid,gid,true)},fchown:function(fd,uid,gid){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:function(path,len){if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:function(fd,len){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:function(path,atime,mtime){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:function(path,flags,mode,fd_start,fd_end){if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags==="string"?FS.modeStringToFlags(flags):flags;mode=typeof mode==="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path==="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false},fd_start,fd_end);if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1;err("FS.trackingDelegate error on read file: "+path)}}try{if(FS.trackingDelegate["onOpenFile"]){var trackingFlags=0;if((flags&2097155)!==1){trackingFlags|=FS.tracking.openFlags.READ}if((flags&2097155)!==0){trackingFlags|=FS.tracking.openFlags.WRITE}FS.trackingDelegate["onOpenFile"](path,trackingFlags)}}catch(e){err("FS.trackingDelegate['onOpenFile']('"+path+"', flags) threw an exception: "+e.message)}return stream},close:function(stream){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:function(stream){return stream.fd===null},llseek:function(stream,offset,whence){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:function(stream,buffer,offset,length,position){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!=="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:function(stream,buffer,offset,length,position,canOwn){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!=="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;try{if(stream.path&&FS.trackingDelegate["onWriteToFile"])FS.trackingDelegate["onWriteToFile"](stream.path)}catch(e){err("FS.trackingDelegate['onWriteToFile']('"+stream.path+"') threw an exception: "+e.message)}return bytesWritten},allocate:function(stream,offset,length){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:function(stream,address,length,position,prot,flags){if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,address,length,position,prot,flags)},msync:function(stream,buffer,offset,length,mmapFlags){if(!stream||!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:function(stream){return 0},ioctl:function(stream,cmd,arg){if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:function(path,opts){opts=opts||{};opts.flags=opts.flags||0;opts.encoding=opts.encoding||"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error('Invalid encoding type "'+opts.encoding+'"')}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding==="binary"){ret=buf}FS.close(stream);return ret},writeFile:function(path,data,opts){opts=opts||{};opts.flags=opts.flags||577;var stream=FS.open(path,opts.flags,opts.mode);if(typeof data==="string"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,undefined,opts.canOwn)}else if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{throw new Error("Unsupported data type")}FS.close(stream)},cwd:function(){return FS.currentPath},chdir:function(path){var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories:function(){FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices:function(){FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:function(){return 0},write:function(stream,buffer,offset,length,pos){return length}});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var random_device=getRandomDevice();FS.createDevice("/dev","random",random_device);FS.createDevice("/dev","urandom",random_device);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories:function(){FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount:function(){var node=FS.createNode(proc_self,"fd",16384|511,73);node.node_ops={lookup:function(parent,name){var fd=+name;var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:function(){return stream.path}}};ret.parent=ret;return ret}};return node}},{},"/proc/self/fd")},createStandardStreams:function(){if(Module["stdin"]){FS.createDevice("/dev","stdin",Module["stdin"])}else{FS.symlink("/dev/tty","/dev/stdin")}if(Module["stdout"]){FS.createDevice("/dev","stdout",null,Module["stdout"])}else{FS.symlink("/dev/tty","/dev/stdout")}if(Module["stderr"]){FS.createDevice("/dev","stderr",null,Module["stderr"])}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},ensureErrnoError:function(){if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.node=node;this.setErrno=function(errno){this.errno=errno};this.setErrno(errno);this.message="FS error"};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[44].forEach(function(code){FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack="<generic error, no stack>"})},staticInit:function(){FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={"MEMFS":MEMFS}},init:function(input,output,error){FS.init.initialized=true;FS.ensureErrnoError();Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams()},quit:function(){FS.init.initialized=false;var fflush=Module["_fflush"];if(fflush)fflush(0);for(var i=0;i<FS.streams.length;i++){var stream=FS.streams[i];if(!stream){continue}FS.close(stream)}},getMode:function(canRead,canWrite){var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode},findObject:function(path,dontResolveLastLink){var ret=FS.analyzePath(path,dontResolveLastLink);if(ret.exists){return ret.object}else{return null}},analyzePath:function(path,dontResolveLastLink){try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath:function(parent,path,canRead,canWrite){parent=typeof parent==="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:function(parent,name,properties,canRead,canWrite){var path=PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:function(parent,name,data,canRead,canWrite,canOwn){var path=name?PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name):parent;var mode=FS.getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data==="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i<len;++i)arr[i]=data.charCodeAt(i);data=arr}FS.chmod(node,mode|146);var stream=FS.open(node,577);FS.write(stream,data,0,data.length,0,canOwn);FS.close(stream);FS.chmod(node,mode)}return node},createDevice:function(parent,name,input,output){var path=PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:function(stream){stream.seekable=false},close:function(stream){if(output&&output.buffer&&output.buffer.length){output(10)}},read:function(stream,buffer,offset,length,pos){var bytesRead=0;for(var i=0;i<length;i++){var result;try{result=input()}catch(e){throw new FS.ErrnoError(29)}if(result===undefined&&bytesRead===0){throw new FS.ErrnoError(6)}if(result===null||result===undefined)break;bytesRead++;buffer[offset+i]=result}if(bytesRead){stream.node.timestamp=Date.now()}return bytesRead},write:function(stream,buffer,offset,length,pos){for(var i=0;i<length;i++){try{output(buffer[offset+i])}catch(e){throw new FS.ErrnoError(29)}}if(length){stream.node.timestamp=Date.now()}return i}});return FS.mkdev(path,mode,dev)},forceLoadFile:function(obj){if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!=="undefined"){throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}},createLazyFile:function(parent,name,url,canRead,canWrite){function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=function(from,to){if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);if(typeof Uint8Array!="undefined")xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}else{return intArrayFromString(xhr.responseText||"",true)}};var lazyArray=this;lazyArray.setDataGetter(function(chunkNum){var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]==="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]==="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!=="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._length}},chunkSize:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(function(key){var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){FS.forceLoadFile(node);return fn.apply(null,arguments)}});stream_ops.read=function stream_ops_read(stream,buffer,offset,length,position){FS.forceLoadFile(node);var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i<size;i++){buffer[offset+i]=contents[position+i]}}else{for(var i=0;i<size;i++){buffer[offset+i]=contents.get(position+i)}}return size};node.stream_ops=stream_ops;return node},createPreloadedFile:function(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish){Browser.init();var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency("cp "+fullname);function processData(byteArray){function finish(byteArray){if(preFinish)preFinish();if(!dontCreateFile){FS.createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}if(onload)onload();removeRunDependency(dep)}var handled=false;Module["preloadPlugins"].forEach(function(plugin){if(handled)return;if(plugin["canHandle"](fullname)){plugin["handle"](byteArray,fullname,finish,function(){if(onerror)onerror();removeRunDependency(dep)});handled=true}});if(!handled)finish(byteArray)}addRunDependency(dep);if(typeof url=="string"){Browser.asyncLoad(url,function(byteArray){processData(byteArray)},onerror)}else{processData(url)}},indexedDB:function(){return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME:function(){return"EM_FS_"+window.location.pathname},DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:function(paths,onload,onerror){onload=onload||function(){};onerror=onerror||function(){};var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=function openRequest_onupgradeneeded(){out("creating db");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME)};openRequest.onsuccess=function openRequest_onsuccess(){var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],"readwrite");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(function(path){var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=function putRequest_onsuccess(){ok++;if(ok+fail==total)finish()};putRequest.onerror=function putRequest_onerror(){fail++;if(ok+fail==total)finish()}});transaction.onerror=onerror};openRequest.onerror=onerror},loadFilesFromDB:function(paths,onload,onerror){onload=onload||function(){};onerror=onerror||function(){};var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=function openRequest_onsuccess(){var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],"readonly")}catch(e){onerror(e);return}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(function(path){var getRequest=files.get(path);getRequest.onsuccess=function getRequest_onsuccess(){if(FS.analyzePath(path).exists){FS.unlink(path)}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish()};getRequest.onerror=function getRequest_onerror(){fail++;if(ok+fail==total)finish()}});transaction.onerror=onerror};openRequest.onerror=onerror}};var SYSCALLS={mappings:{},DEFAULT_POLLMASK:5,umask:511,calculateAt:function(dirfd,path,allowEmpty){if(path[0]==="/"){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=FS.getStream(dirfd);if(!dirstream)throw new FS.ErrnoError(8);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(func,path,buf){try{var stat=func(path)}catch(e){if(e&&e.node&&PATH.normalize(path)!==PATH.normalize(FS.getPath(e.node))){return-54}throw e}HEAP32[buf>>2]=stat.dev;HEAP32[buf+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;HEAP32[buf+56>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+76>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+80>>2]=tempI64[0],HEAP32[buf+84>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},doMkdir:function(path,mode){path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0},doMknod:function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}FS.mknod(path,mode,dev);return 0},doReadlink:function(path,buf,bufsize){if(bufsize<=0)return-28;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len},doAccess:function(path,amode){if(amode&~7){return-28}var node;var lookup=FS.lookupPath(path,{follow:true});node=lookup.node;if(!node){return-44}var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0},doDup:function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd},doReadv:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i<iovcnt;i++){var ptr=HEAP32[iov+i*8>>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr<len)break}return ret},doWritev:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i<iovcnt;i++){var ptr=HEAP32[iov+i*8>>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream},get64:function(low,high){return low}};function ___sys_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-28}var newStream;newStream=FS.open(stream.path,stream.flags,0,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0}case 12:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 13:case 14:return 0;case 16:case 8:return-28;case 9:setErrNo(28);return-1;default:{return-28}}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_ioctl(fd,op,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(op){case 21509:case 21505:{if(!stream.tty)return-59;return 0}case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-59;return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{if(!stream.tty)return-59;return 0}default:abort("bad ioctl syscall "+op)}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_open(path,flags,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(path);var mode=varargs?SYSCALLS.get():0;var stream=FS.open(pathname,flags,mode);return stream.fd}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}var JSEvents={inEventHandler:0,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return false;for(var i in arrA){if(arrA[i]!=arrB[i])return false}return true}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList)){return}}JSEvents.deferredCalls.push({targetFunction:targetFunction,precedence:precedence,argsList:argsList});JSEvents.deferredCalls.sort(function(x,y){return x.precedence<y.precedence})},removeDeferredCalls:function(targetFunction){for(var i=0;i<JSEvents.deferredCalls.length;++i){if(JSEvents.deferredCalls[i].targetFunction==targetFunction){JSEvents.deferredCalls.splice(i,1);--i}}},canPerformEventHandlerRequests:function(){return JSEvents.inEventHandler&&JSEvents.currentEventHandler.allowsDeferredCalls},runDeferredCalls:function(){if(!JSEvents.canPerformEventHandlerRequests()){return}for(var i=0;i<JSEvents.deferredCalls.length;++i){var call=JSEvents.deferredCalls[i];JSEvents.deferredCalls.splice(i,1);--i;call.targetFunction.apply(null,call.argsList)}},eventHandlers:[],removeAllHandlersOnTarget:function(target,eventTypeString){for(var i=0;i<JSEvents.eventHandlers.length;++i){if(JSEvents.eventHandlers[i].target==target&&(!eventTypeString||eventTypeString==JSEvents.eventHandlers[i].eventTypeString)){JSEvents._removeHandler(i--)}}},_removeHandler:function(i){var h=JSEvents.eventHandlers[i];h.target.removeEventListener(h.eventTypeString,h.eventListenerFunc,h.useCapture);JSEvents.eventHandlers.splice(i,1)},registerOrRemoveHandler:function(eventHandler){var jsEventHandler=function jsEventHandler(event){++JSEvents.inEventHandler;JSEvents.currentEventHandler=eventHandler;JSEvents.runDeferredCalls();eventHandler.handlerFunc(event);JSEvents.runDeferredCalls();--JSEvents.inEventHandler};if(eventHandler.callbackfunc){eventHandler.eventListenerFunc=jsEventHandler;eventHandler.target.addEventListener(eventHandler.eventTypeString,jsEventHandler,eventHandler.useCapture);JSEvents.eventHandlers.push(eventHandler);JSEvents.registerRemoveEventListeners()}else{for(var i=0;i<JSEvents.eventHandlers.length;++i){if(JSEvents.eventHandlers[i].target==eventHandler.target&&JSEvents.eventHandlers[i].eventTypeString==eventHandler.eventTypeString){JSEvents._removeHandler(i--)}}}},getNodeNameForTarget:function(target){if(!target)return"";if(target==window)return"#window";if(target==screen)return"#screen";return target&&target.nodeName?target.nodeName:""},fullscreenEnabled:function(){return document.fullscreenEnabled||document.webkitFullscreenEnabled}};function requestPointerLock(target){if(target.requestPointerLock){target.requestPointerLock()}else if(target.msRequestPointerLock){target.msRequestPointerLock()}else{if(document.body.requestPointerLock||document.body.msRequestPointerLock){return-3}else{return-1}}return 0}function _emscripten_exit_pointerlock(){JSEvents.removeDeferredCalls(requestPointerLock);if(document.exitPointerLock){document.exitPointerLock()}else if(document.msExitPointerLock){document.msExitPointerLock()}else{return-1}return 0}function maybeCStringToJsString(cString){return cString>2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!=="undefined"?document:0,typeof window!=="undefined"?window:0];function findEventTarget(target){target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!=="undefined"?document.querySelector(target):undefined);return domElement}function getBoundingClientRect(e){return specialHTMLTargets.indexOf(e)<0?e.getBoundingClientRect():{"left":0,"top":0}}function _emscripten_get_element_css_size(target,width,height){target=findEventTarget(target);if(!target)return-4;var rect=getBoundingClientRect(target);HEAPF64[width>>3]=rect.width;HEAPF64[height>>3]=rect.height;return 0}function fillGamepadEventData(eventStruct,e){HEAPF64[eventStruct>>3]=e.timestamp;for(var i=0;i<e.axes.length;++i){HEAPF64[eventStruct+i*8+16>>3]=e.axes[i]}for(var i=0;i<e.buttons.length;++i){if(typeof e.buttons[i]==="object"){HEAPF64[eventStruct+i*8+528>>3]=e.buttons[i].value}else{HEAPF64[eventStruct+i*8+528>>3]=e.buttons[i]}}for(var i=0;i<e.buttons.length;++i){if(typeof e.buttons[i]==="object"){HEAP32[eventStruct+i*4+1040>>2]=e.buttons[i].pressed}else{HEAP32[eventStruct+i*4+1040>>2]=e.buttons[i]==1}}HEAP32[eventStruct+1296>>2]=e.connected;HEAP32[eventStruct+1300>>2]=e.index;HEAP32[eventStruct+8>>2]=e.axes.length;HEAP32[eventStruct+12>>2]=e.buttons.length;stringToUTF8(e.id,eventStruct+1304,64);stringToUTF8(e.mapping,eventStruct+1368,64)}function _emscripten_get_gamepad_status(index,gamepadState){if(index<0||index>=JSEvents.lastGamepadState.length)return-5;if(!JSEvents.lastGamepadState[index])return-7;fillGamepadEventData(gamepadState,JSEvents.lastGamepadState[index]);return 0}function _emscripten_get_num_gamepads(){return JSEvents.lastGamepadState.length}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension("ANGLE_instanced_arrays");if(ext){ctx["vertexAttribDivisor"]=function(index,divisor){ext["vertexAttribDivisorANGLE"](index,divisor)};ctx["drawArraysInstanced"]=function(mode,first,count,primcount){ext["drawArraysInstancedANGLE"](mode,first,count,primcount)};ctx["drawElementsInstanced"]=function(mode,count,type,indices,primcount){ext["drawElementsInstancedANGLE"](mode,count,type,indices,primcount)};return 1}}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension("OES_vertex_array_object");if(ext){ctx["createVertexArray"]=function(){return ext["createVertexArrayOES"]()};ctx["deleteVertexArray"]=function(vao){ext["deleteVertexArrayOES"](vao)};ctx["bindVertexArray"]=function(vao){ext["bindVertexArrayOES"](vao)};ctx["isVertexArray"]=function(vao){return ext["isVertexArrayOES"](vao)};return 1}}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension("WEBGL_draw_buffers");if(ext){ctx["drawBuffers"]=function(n,bufs){ext["drawBuffersWEBGL"](n,bufs)};return 1}}function __webgl_enable_WEBGL_multi_draw(ctx){return!!(ctx.multiDrawWebgl=ctx.getExtension("WEBGL_multi_draw"))}var GL={counter:1,buffers:[],programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:[],offscreenCanvases:{},timerQueriesEXT:[],programInfos:{},stringCache:{},unpackAlignment:4,recordError:function recordError(errorCode){if(!GL.lastError){GL.lastError=errorCode}},getNewId:function(table){var ret=GL.counter++;for(var i=table.length;i<ret;i++){table[i]=null}return ret},getSource:function(shader,count,string,length){var source="";for(var i=0;i<count;++i){var len=length?HEAP32[length+i*4>>2]:-1;source+=UTF8ToString(HEAP32[string+i*4>>2],len<0?undefined:len)}return source},createContext:function(canvas,webGLContextAttributes){var ctx=canvas.getContext("webgl",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:function(ctx,webGLContextAttributes){var handle=GL.getNewId(GL.contexts);var context={handle:handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};if(ctx.canvas)ctx.canvas.GLctxObject=context;GL.contexts[handle]=context;if(typeof webGLContextAttributes.enableExtensionsByDefault==="undefined"||webGLContextAttributes.enableExtensionsByDefault){GL.initExtensions(context)}return handle},makeContextCurrent:function(contextHandle){GL.currentContext=GL.contexts[contextHandle];Module.ctx=GLctx=GL.currentContext&&GL.currentContext.GLctx;return!(contextHandle&&!GLctx)},getContext:function(contextHandle){return GL.contexts[contextHandle]},deleteContext:function(contextHandle){if(GL.currentContext===GL.contexts[contextHandle])GL.currentContext=null;if(typeof JSEvents==="object")JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas);if(GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas)GL.contexts[contextHandle].GLctx.canvas.GLctxObject=undefined;GL.contexts[contextHandle]=null},initExtensions:function(context){if(!context)context=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;__webgl_enable_ANGLE_instanced_arrays(GLctx);__webgl_enable_OES_vertex_array_object(GLctx);__webgl_enable_WEBGL_draw_buffers(GLctx);GLctx.disjointTimerQueryExt=GLctx.getExtension("EXT_disjoint_timer_query");__webgl_enable_WEBGL_multi_draw(GLctx);var exts=GLctx.getSupportedExtensions()||[];exts.forEach(function(ext){if(ext.indexOf("lose_context")<0&&ext.indexOf("debug")<0){GLctx.getExtension(ext)}})},populateUniformTable:function(program){var p=GL.programs[program];var ptable=GL.programInfos[program]={uniforms:{},maxUniformLength:0,maxAttributeLength:-1,maxUniformBlockNameLength:-1};var utable=ptable.uniforms;var numUniforms=GLctx.getProgramParameter(p,35718);for(var i=0;i<numUniforms;++i){var u=GLctx.getActiveUniform(p,i);var name=u.name;ptable.maxUniformLength=Math.max(ptable.maxUniformLength,name.length+1);if(name.slice(-1)=="]"){name=name.slice(0,name.lastIndexOf("["))}var loc=GLctx.getUniformLocation(p,name);if(loc){var id=GL.getNewId(GL.uniforms);utable[name]=[u.size,id];GL.uniforms[id]=loc;for(var j=1;j<u.size;++j){var n=name+"["+j+"]";loc=GLctx.getUniformLocation(p,n);id=GL.getNewId(GL.uniforms);GL.uniforms[id]=loc}}}}};function _emscripten_glActiveTexture(x0){GLctx["activeTexture"](x0)}function _emscripten_glAttachShader(program,shader){GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _emscripten_glBeginQueryEXT(target,id){GLctx.disjointTimerQueryExt["beginQueryEXT"](target,GL.timerQueriesEXT[id])}function _emscripten_glBindAttribLocation(program,index,name){GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))}function _emscripten_glBindBuffer(target,buffer){GLctx.bindBuffer(target,GL.buffers[buffer])}function _emscripten_glBindFramebuffer(target,framebuffer){GLctx.bindFramebuffer(target,GL.framebuffers[framebuffer])}function _emscripten_glBindRenderbuffer(target,renderbuffer){GLctx.bindRenderbuffer(target,GL.renderbuffers[renderbuffer])}function _emscripten_glBindTexture(target,texture){GLctx.bindTexture(target,GL.textures[texture])}function _emscripten_glBindVertexArrayOES(vao){GLctx["bindVertexArray"](GL.vaos[vao])}function _emscripten_glBlendColor(x0,x1,x2,x3){GLctx["blendColor"](x0,x1,x2,x3)}function _emscripten_glBlendEquation(x0){GLctx["blendEquation"](x0)}function _emscripten_glBlendEquationSeparate(x0,x1){GLctx["blendEquationSeparate"](x0,x1)}function _emscripten_glBlendFunc(x0,x1){GLctx["blendFunc"](x0,x1)}function _emscripten_glBlendFuncSeparate(x0,x1,x2,x3){GLctx["blendFuncSeparate"](x0,x1,x2,x3)}function _emscripten_glBufferData(target,size,data,usage){GLctx.bufferData(target,data?HEAPU8.subarray(data,data+size):size,usage)}function _emscripten_glBufferSubData(target,offset,size,data){GLctx.bufferSubData(target,offset,HEAPU8.subarray(data,data+size))}function _emscripten_glCheckFramebufferStatus(x0){return GLctx["checkFramebufferStatus"](x0)}function _emscripten_glClear(x0){GLctx["clear"](x0)}function _emscripten_glClearColor(x0,x1,x2,x3){GLctx["clearColor"](x0,x1,x2,x3)}function _emscripten_glClearDepthf(x0){GLctx["clearDepth"](x0)}function _emscripten_glClearStencil(x0){GLctx["clearStencil"](x0)}function _emscripten_glColorMask(red,green,blue,alpha){GLctx.colorMask(!!red,!!green,!!blue,!!alpha)}function _emscripten_glCompileShader(shader){GLctx.compileShader(GL.shaders[shader])}function _emscripten_glCompressedTexImage2D(target,level,internalFormat,width,height,border,imageSize,data){GLctx["compressedTexImage2D"](target,level,internalFormat,width,height,border,data?HEAPU8.subarray(data,data+imageSize):null)}function _emscripten_glCompressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,imageSize,data){GLctx["compressedTexSubImage2D"](target,level,xoffset,yoffset,width,height,format,data?HEAPU8.subarray(data,data+imageSize):null)}function _emscripten_glCopyTexImage2D(x0,x1,x2,x3,x4,x5,x6,x7){GLctx["copyTexImage2D"](x0,x1,x2,x3,x4,x5,x6,x7)}function _emscripten_glCopyTexSubImage2D(x0,x1,x2,x3,x4,x5,x6,x7){GLctx["copyTexSubImage2D"](x0,x1,x2,x3,x4,x5,x6,x7)}function _emscripten_glCreateProgram(){var id=GL.getNewId(GL.programs);var program=GLctx.createProgram();program.name=id;GL.programs[id]=program;return id}function _emscripten_glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}function _emscripten_glCullFace(x0){GLctx["cullFace"](x0)}function _emscripten_glDeleteBuffers(n,buffers){for(var i=0;i<n;i++){var id=HEAP32[buffers+i*4>>2];var buffer=GL.buffers[id];if(!buffer)continue;GLctx.deleteBuffer(buffer);buffer.name=0;GL.buffers[id]=null}}function _emscripten_glDeleteFramebuffers(n,framebuffers){for(var i=0;i<n;++i){var id=HEAP32[framebuffers+i*4>>2];var framebuffer=GL.framebuffers[id];if(!framebuffer)continue;GLctx.deleteFramebuffer(framebuffer);framebuffer.name=0;GL.framebuffers[id]=null}}function _emscripten_glDeleteProgram(id){if(!id)return;var program=GL.programs[id];if(!program){GL.recordError(1281);return}GLctx.deleteProgram(program);program.name=0;GL.programs[id]=null;GL.programInfos[id]=null}function _emscripten_glDeleteQueriesEXT(n,ids){for(var i=0;i<n;i++){var id=HEAP32[ids+i*4>>2];var query=GL.timerQueriesEXT[id];if(!query)continue;GLctx.disjointTimerQueryExt["deleteQueryEXT"](query);GL.timerQueriesEXT[id]=null}}function _emscripten_glDeleteRenderbuffers(n,renderbuffers){for(var i=0;i<n;i++){var id=HEAP32[renderbuffers+i*4>>2];var renderbuffer=GL.renderbuffers[id];if(!renderbuffer)continue;GLctx.deleteRenderbuffer(renderbuffer);renderbuffer.name=0;GL.renderbuffers[id]=null}}function _emscripten_glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}function _emscripten_glDeleteTextures(n,textures){for(var i=0;i<n;i++){var id=HEAP32[textures+i*4>>2];var texture=GL.textures[id];if(!texture)continue;GLctx.deleteTexture(texture);texture.name=0;GL.textures[id]=null}}function _emscripten_glDeleteVertexArraysOES(n,vaos){for(var i=0;i<n;i++){var id=HEAP32[vaos+i*4>>2];GLctx["deleteVertexArray"](GL.vaos[id]);GL.vaos[id]=null}}function _emscripten_glDepthFunc(x0){GLctx["depthFunc"](x0)}function _emscripten_glDepthMask(flag){GLctx.depthMask(!!flag)}function _emscripten_glDepthRangef(x0,x1){GLctx["depthRange"](x0,x1)}function _emscripten_glDetachShader(program,shader){GLctx.detachShader(GL.programs[program],GL.shaders[shader])}function _emscripten_glDisable(x0){GLctx["disable"](x0)}function _emscripten_glDisableVertexAttribArray(index){GLctx.disableVertexAttribArray(index)}function _emscripten_glDrawArrays(mode,first,count){GLctx.drawArrays(mode,first,count)}function _emscripten_glDrawArraysInstancedANGLE(mode,first,count,primcount){GLctx["drawArraysInstanced"](mode,first,count,primcount)}var tempFixedLengthArray=[];function _emscripten_glDrawBuffersWEBGL(n,bufs){var bufArray=tempFixedLengthArray[n];for(var i=0;i<n;i++){bufArray[i]=HEAP32[bufs+i*4>>2]}GLctx["drawBuffers"](bufArray)}function _emscripten_glDrawElements(mode,count,type,indices){GLctx.drawElements(mode,count,type,indices)}function _emscripten_glDrawElementsInstancedANGLE(mode,count,type,indices,primcount){GLctx["drawElementsInstanced"](mode,count,type,indices,primcount)}function _emscripten_glEnable(x0){GLctx["enable"](x0)}function _emscripten_glEnableVertexAttribArray(index){GLctx.enableVertexAttribArray(index)}function _emscripten_glEndQueryEXT(target){GLctx.disjointTimerQueryExt["endQueryEXT"](target)}function _emscripten_glFinish(){GLctx["finish"]()}function _emscripten_glFlush(){GLctx["flush"]()}function _emscripten_glFramebufferRenderbuffer(target,attachment,renderbuffertarget,renderbuffer){GLctx.framebufferRenderbuffer(target,attachment,renderbuffertarget,GL.renderbuffers[renderbuffer])}function _emscripten_glFramebufferTexture2D(target,attachment,textarget,texture,level){GLctx.framebufferTexture2D(target,attachment,textarget,GL.textures[texture],level)}function _emscripten_glFrontFace(x0){GLctx["frontFace"](x0)}function __glGenObject(n,buffers,createFunction,objectTable){for(var i=0;i<n;i++){var buffer=GLctx[createFunction]();var id=buffer&&GL.getNewId(objectTable);if(buffer){buffer.name=id;objectTable[id]=buffer}else{GL.recordError(1282)}HEAP32[buffers+i*4>>2]=id}}function _emscripten_glGenBuffers(n,buffers){__glGenObject(n,buffers,"createBuffer",GL.buffers)}function _emscripten_glGenFramebuffers(n,ids){__glGenObject(n,ids,"createFramebuffer",GL.framebuffers)}function _emscripten_glGenQueriesEXT(n,ids){for(var i=0;i<n;i++){var query=GLctx.disjointTimerQueryExt["createQueryEXT"]();if(!query){GL.recordError(1282);while(i<n)HEAP32[ids+i++*4>>2]=0;return}var id=GL.getNewId(GL.timerQueriesEXT);query.name=id;GL.timerQueriesEXT[id]=query;HEAP32[ids+i*4>>2]=id}}function _emscripten_glGenRenderbuffers(n,renderbuffers){__glGenObject(n,renderbuffers,"createRenderbuffer",GL.renderbuffers)}function _emscripten_glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures)}function _emscripten_glGenVertexArraysOES(n,arrays){__glGenObject(n,arrays,"createVertexArray",GL.vaos)}function _emscripten_glGenerateMipmap(x0){GLctx["generateMipmap"](x0)}function __glGetActiveAttribOrUniform(funcName,program,index,bufSize,length,size,type,name){program=GL.programs[program];var info=GLctx[funcName](program,index);if(info){var numBytesWrittenExclNull=name&&stringToUTF8(info.name,name,bufSize);if(length)HEAP32[length>>2]=numBytesWrittenExclNull;if(size)HEAP32[size>>2]=info.size;if(type)HEAP32[type>>2]=info.type}}function _emscripten_glGetActiveAttrib(program,index,bufSize,length,size,type,name){__glGetActiveAttribOrUniform("getActiveAttrib",program,index,bufSize,length,size,type,name)}function _emscripten_glGetActiveUniform(program,index,bufSize,length,size,type,name){__glGetActiveAttribOrUniform("getActiveUniform",program,index,bufSize,length,size,type,name)}function _emscripten_glGetAttachedShaders(program,maxCount,count,shaders){var result=GLctx.getAttachedShaders(GL.programs[program]);var len=result.length;if(len>maxCount){len=maxCount}HEAP32[count>>2]=len;for(var i=0;i<len;++i){var id=GL.shaders.indexOf(result[i]);HEAP32[shaders+i*4>>2]=id}}function _emscripten_glGetAttribLocation(program,name){return GLctx.getAttribLocation(GL.programs[program],UTF8ToString(name))}function writeI53ToI64(ptr,num){HEAPU32[ptr>>2]=num;HEAPU32[ptr+4>>2]=(num-HEAPU32[ptr>>2])/4294967296}function emscriptenWebGLGet(name_,p,type){if(!p){GL.recordError(1281);return}var ret=undefined;switch(name_){case 36346:ret=1;break;case 36344:if(type!=0&&type!=1){GL.recordError(1280)}return;case 36345:ret=0;break;case 34466:var formats=GLctx.getParameter(34467);ret=formats?formats.length:0;break}if(ret===undefined){var result=GLctx.getParameter(name_);switch(typeof result){case"number":ret=result;break;case"boolean":ret=result?1:0;break;case"string":GL.recordError(1280);return;case"object":if(result===null){switch(name_){case 34964:case 35725:case 34965:case 36006:case 36007:case 32873:case 34229:case 34068:{ret=0;break}default:{GL.recordError(1280);return}}}else if(result instanceof Float32Array||result instanceof Uint32Array||result instanceof Int32Array||result instanceof Array){for(var i=0;i<result.length;++i){switch(type){case 0:HEAP32[p+i*4>>2]=result[i];break;case 2:HEAPF32[p+i*4>>2]=result[i];break;case 4:HEAP8[p+i>>0]=result[i]?1:0;break}}return}else{try{ret=result.name|0}catch(e){GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v: Unknown object returned from WebGL getParameter("+name_+")! (error: "+e+")");return}}break;default:GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v: Native code calling glGet"+type+"v("+name_+") and it returns "+result+" of type "+typeof result+"!");return}}switch(type){case 1:writeI53ToI64(p,ret);break;case 0:HEAP32[p>>2]=ret;break;case 2:HEAPF32[p>>2]=ret;break;case 4:HEAP8[p>>0]=ret?1:0;break}}function _emscripten_glGetBooleanv(name_,p){emscriptenWebGLGet(name_,p,4)}function _emscripten_glGetBufferParameteriv(target,value,data){if(!data){GL.recordError(1281);return}HEAP32[data>>2]=GLctx.getBufferParameter(target,value)}function _emscripten_glGetError(){var error=GLctx.getError()||GL.lastError;GL.lastError=0;return error}function _emscripten_glGetFloatv(name_,p){emscriptenWebGLGet(name_,p,2)}function _emscripten_glGetFramebufferAttachmentParameteriv(target,attachment,pname,params){var result=GLctx.getFramebufferAttachmentParameter(target,attachment,pname);if(result instanceof WebGLRenderbuffer||result instanceof WebGLTexture){result=result.name|0}HEAP32[params>>2]=result}function _emscripten_glGetIntegerv(name_,p){emscriptenWebGLGet(name_,p,0)}function _emscripten_glGetProgramInfoLog(program,maxLength,length,infoLog){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _emscripten_glGetProgramiv(program,pname,p){if(!p){GL.recordError(1281);return}if(program>=GL.counter){GL.recordError(1281);return}var ptable=GL.programInfos[program];if(!ptable){GL.recordError(1282);return}if(pname==35716){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";HEAP32[p>>2]=log.length+1}else if(pname==35719){HEAP32[p>>2]=ptable.maxUniformLength}else if(pname==35722){if(ptable.maxAttributeLength==-1){program=GL.programs[program];var numAttribs=GLctx.getProgramParameter(program,35721);ptable.maxAttributeLength=0;for(var i=0;i<numAttribs;++i){var activeAttrib=GLctx.getActiveAttrib(program,i);ptable.maxAttributeLength=Math.max(ptable.maxAttributeLength,activeAttrib.name.length+1)}}HEAP32[p>>2]=ptable.maxAttributeLength}else if(pname==35381){if(ptable.maxUniformBlockNameLength==-1){program=GL.programs[program];var numBlocks=GLctx.getProgramParameter(program,35382);ptable.maxUniformBlockNameLength=0;for(var i=0;i<numBlocks;++i){var activeBlockName=GLctx.getActiveUniformBlockName(program,i);ptable.maxUniformBlockNameLength=Math.max(ptable.maxUniformBlockNameLength,activeBlockName.length+1)}}HEAP32[p>>2]=ptable.maxUniformBlockNameLength}else{HEAP32[p>>2]=GLctx.getProgramParameter(GL.programs[program],pname)}}function _emscripten_glGetQueryObjecti64vEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.timerQueriesEXT[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}writeI53ToI64(params,ret)}function _emscripten_glGetQueryObjectivEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.timerQueriesEXT[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}HEAP32[params>>2]=ret}function _emscripten_glGetQueryObjectui64vEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.timerQueriesEXT[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}writeI53ToI64(params,ret)}function _emscripten_glGetQueryObjectuivEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.timerQueriesEXT[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}HEAP32[params>>2]=ret}function _emscripten_glGetQueryivEXT(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.disjointTimerQueryExt["getQueryEXT"](target,pname)}function _emscripten_glGetRenderbufferParameteriv(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getRenderbufferParameter(target,pname)}function _emscripten_glGetShaderInfoLog(shader,maxLength,length,infoLog){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _emscripten_glGetShaderPrecisionFormat(shaderType,precisionType,range,precision){var result=GLctx.getShaderPrecisionFormat(shaderType,precisionType);HEAP32[range>>2]=result.rangeMin;HEAP32[range+4>>2]=result.rangeMax;HEAP32[precision>>2]=result.precision}function _emscripten_glGetShaderSource(shader,bufSize,length,source){var result=GLctx.getShaderSource(GL.shaders[shader]);if(!result)return;var numBytesWrittenExclNull=bufSize>0&&source?stringToUTF8(result,source,bufSize):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _emscripten_glGetShaderiv(shader,pname,p){if(!p){GL.recordError(1281);return}if(pname==35716){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var logLength=log?log.length+1:0;HEAP32[p>>2]=logLength}else if(pname==35720){var source=GLctx.getShaderSource(GL.shaders[shader]);var sourceLength=source?source.length+1:0;HEAP32[p>>2]=sourceLength}else{HEAP32[p>>2]=GLctx.getShaderParameter(GL.shaders[shader],pname)}}function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _emscripten_glGetString(name_){if(GL.stringCache[name_])return GL.stringCache[name_];var ret;switch(name_){case 7939:var exts=GLctx.getSupportedExtensions()||[];exts=exts.concat(exts.map(function(e){return"GL_"+e}));ret=stringToNewUTF8(exts.join(" "));break;case 7936:case 7937:case 37445:case 37446:var s=GLctx.getParameter(name_);if(!s){GL.recordError(1280)}ret=stringToNewUTF8(s);break;case 7938:var glVersion=GLctx.getParameter(7938);{glVersion="OpenGL ES 2.0 ("+glVersion+")"}ret=stringToNewUTF8(glVersion);break;case 35724:var glslVersion=GLctx.getParameter(35724);var ver_re=/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/;var ver_num=glslVersion.match(ver_re);if(ver_num!==null){if(ver_num[1].length==3)ver_num[1]=ver_num[1]+"0";glslVersion="OpenGL ES GLSL ES "+ver_num[1]+" ("+glslVersion+")"}ret=stringToNewUTF8(glslVersion);break;default:GL.recordError(1280);return 0}GL.stringCache[name_]=ret;return ret}function _emscripten_glGetTexParameterfv(target,pname,params){if(!params){GL.recordError(1281);return}HEAPF32[params>>2]=GLctx.getTexParameter(target,pname)}function _emscripten_glGetTexParameteriv(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getTexParameter(target,pname)}function jstoi_q(str){return parseInt(str)}function _emscripten_glGetUniformLocation(program,name){name=UTF8ToString(name);var arrayIndex=0;if(name[name.length-1]=="]"){var leftBrace=name.lastIndexOf("[");arrayIndex=name[leftBrace+1]!="]"?jstoi_q(name.slice(leftBrace+1)):0;name=name.slice(0,leftBrace)}var uniformInfo=GL.programInfos[program]&&GL.programInfos[program].uniforms[name];if(uniformInfo&&arrayIndex>=0&&arrayIndex<uniformInfo[0]){return uniformInfo[1]+arrayIndex}else{return-1}}function emscriptenWebGLGetUniform(program,location,params,type){if(!params){GL.recordError(1281);return}var data=GLctx.getUniform(GL.programs[program],GL.uniforms[location]);if(typeof data=="number"||typeof data=="boolean"){switch(type){case 0:HEAP32[params>>2]=data;break;case 2:HEAPF32[params>>2]=data;break}}else{for(var i=0;i<data.length;i++){switch(type){case 0:HEAP32[params+i*4>>2]=data[i];break;case 2:HEAPF32[params+i*4>>2]=data[i];break}}}}function _emscripten_glGetUniformfv(program,location,params){emscriptenWebGLGetUniform(program,location,params,2)}function _emscripten_glGetUniformiv(program,location,params){emscriptenWebGLGetUniform(program,location,params,0)}function _emscripten_glGetVertexAttribPointerv(index,pname,pointer){if(!pointer){GL.recordError(1281);return}HEAP32[pointer>>2]=GLctx.getVertexAttribOffset(index,pname)}function emscriptenWebGLGetVertexAttrib(index,pname,params,type){if(!params){GL.recordError(1281);return}var data=GLctx.getVertexAttrib(index,pname);if(pname==34975){HEAP32[params>>2]=data&&data["name"]}else if(typeof data=="number"||typeof data=="boolean"){switch(type){case 0:HEAP32[params>>2]=data;break;case 2:HEAPF32[params>>2]=data;break;case 5:HEAP32[params>>2]=Math.fround(data);break}}else{for(var i=0;i<data.length;i++){switch(type){case 0:HEAP32[params+i*4>>2]=data[i];break;case 2:HEAPF32[params+i*4>>2]=data[i];break;case 5:HEAP32[params+i*4>>2]=Math.fround(data[i]);break}}}}function _emscripten_glGetVertexAttribfv(index,pname,params){emscriptenWebGLGetVertexAttrib(index,pname,params,2)}function _emscripten_glGetVertexAttribiv(index,pname,params){emscriptenWebGLGetVertexAttrib(index,pname,params,5)}function _emscripten_glHint(x0,x1){GLctx["hint"](x0,x1)}function _emscripten_glIsBuffer(buffer){var b=GL.buffers[buffer];if(!b)return 0;return GLctx.isBuffer(b)}function _emscripten_glIsEnabled(x0){return GLctx["isEnabled"](x0)}function _emscripten_glIsFramebuffer(framebuffer){var fb=GL.framebuffers[framebuffer];if(!fb)return 0;return GLctx.isFramebuffer(fb)}function _emscripten_glIsProgram(program){program=GL.programs[program];if(!program)return 0;return GLctx.isProgram(program)}function _emscripten_glIsQueryEXT(id){var query=GL.timerQueriesEXT[id];if(!query)return 0;return GLctx.disjointTimerQueryExt["isQueryEXT"](query)}function _emscripten_glIsRenderbuffer(renderbuffer){var rb=GL.renderbuffers[renderbuffer];if(!rb)return 0;return GLctx.isRenderbuffer(rb)}function _emscripten_glIsShader(shader){var s=GL.shaders[shader];if(!s)return 0;return GLctx.isShader(s)}function _emscripten_glIsTexture(id){var texture=GL.textures[id];if(!texture)return 0;return GLctx.isTexture(texture)}function _emscripten_glIsVertexArrayOES(array){var vao=GL.vaos[array];if(!vao)return 0;return GLctx["isVertexArray"](vao)}function _emscripten_glLineWidth(x0){GLctx["lineWidth"](x0)}function _emscripten_glLinkProgram(program){GLctx.linkProgram(GL.programs[program]);GL.populateUniformTable(program)}function _emscripten_glPixelStorei(pname,param){if(pname==3317){GL.unpackAlignment=param}GLctx.pixelStorei(pname,param)}function _emscripten_glPolygonOffset(x0,x1){GLctx["polygonOffset"](x0,x1)}function _emscripten_glQueryCounterEXT(id,target){GLctx.disjointTimerQueryExt["queryCounterEXT"](GL.timerQueriesEXT[id],target)}function computeUnpackAlignedImageSize(width,height,sizePerPixel,alignment){function roundedToNextMultipleOf(x,y){return x+y-1&-y}var plainRowSize=width*sizePerPixel;var alignedRowSize=roundedToNextMultipleOf(plainRowSize,alignment);return height*alignedRowSize}function __colorChannelsInGlTextureFormat(format){var colorChannels={5:3,6:4,8:2,29502:3,29504:4};return colorChannels[format-6402]||1}function heapObjectForWebGLType(type){type-=5120;if(type==1)return HEAPU8;if(type==4)return HEAP32;if(type==6)return HEAPF32;if(type==5||type==28922)return HEAPU32;return HEAPU16}function heapAccessShiftForWebGLHeap(heap){return 31-Math.clz32(heap.BYTES_PER_ELEMENT)}function emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat){var heap=heapObjectForWebGLType(type);var shift=heapAccessShiftForWebGLHeap(heap);var byteSize=1<<shift;var sizePerPixel=__colorChannelsInGlTextureFormat(format)*byteSize;var bytes=computeUnpackAlignedImageSize(width,height,sizePerPixel,GL.unpackAlignment);return heap.subarray(pixels>>shift,pixels+bytes>>shift)}function _emscripten_glReadPixels(x,y,width,height,format,type,pixels){var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);return}GLctx.readPixels(x,y,width,height,format,type,pixelData)}function _emscripten_glReleaseShaderCompiler(){}function _emscripten_glRenderbufferStorage(x0,x1,x2,x3){GLctx["renderbufferStorage"](x0,x1,x2,x3)}function _emscripten_glSampleCoverage(value,invert){GLctx.sampleCoverage(value,!!invert)}function _emscripten_glScissor(x0,x1,x2,x3){GLctx["scissor"](x0,x1,x2,x3)}function _emscripten_glShaderBinary(){GL.recordError(1280)}function _emscripten_glShaderSource(shader,count,string,length){var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}function _emscripten_glStencilFunc(x0,x1,x2){GLctx["stencilFunc"](x0,x1,x2)}function _emscripten_glStencilFuncSeparate(x0,x1,x2,x3){GLctx["stencilFuncSeparate"](x0,x1,x2,x3)}function _emscripten_glStencilMask(x0){GLctx["stencilMask"](x0)}function _emscripten_glStencilMaskSeparate(x0,x1){GLctx["stencilMaskSeparate"](x0,x1)}function _emscripten_glStencilOp(x0,x1,x2){GLctx["stencilOp"](x0,x1,x2)}function _emscripten_glStencilOpSeparate(x0,x1,x2,x3){GLctx["stencilOpSeparate"](x0,x1,x2,x3)}function _emscripten_glTexImage2D(target,level,internalFormat,width,height,border,format,type,pixels){GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels?emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat):null)}function _emscripten_glTexParameterf(x0,x1,x2){GLctx["texParameterf"](x0,x1,x2)}function _emscripten_glTexParameterfv(target,pname,params){var param=HEAPF32[params>>2];GLctx.texParameterf(target,pname,param)}function _emscripten_glTexParameteri(x0,x1,x2){GLctx["texParameteri"](x0,x1,x2)}function _emscripten_glTexParameteriv(target,pname,params){var param=HEAP32[params>>2];GLctx.texParameteri(target,pname,param)}function _emscripten_glTexSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixels){var pixelData=null;if(pixels)pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,0);GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixelData)}function _emscripten_glUniform1f(location,v0){GLctx.uniform1f(GL.uniforms[location],v0)}var miniTempWebGLFloatBuffers=[];function _emscripten_glUniform1fv(location,count,value){if(count<=288){var view=miniTempWebGLFloatBuffers[count-1];for(var i=0;i<count;++i){view[i]=HEAPF32[value+4*i>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*4>>2)}GLctx.uniform1fv(GL.uniforms[location],view)}function _emscripten_glUniform1i(location,v0){GLctx.uniform1i(GL.uniforms[location],v0)}var __miniTempWebGLIntBuffers=[];function _emscripten_glUniform1iv(location,count,value){if(count<=288){var view=__miniTempWebGLIntBuffers[count-1];for(var i=0;i<count;++i){view[i]=HEAP32[value+4*i>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*4>>2)}GLctx.uniform1iv(GL.uniforms[location],view)}function _emscripten_glUniform2f(location,v0,v1){GLctx.uniform2f(GL.uniforms[location],v0,v1)}function _emscripten_glUniform2fv(location,count,value){if(count<=144){var view=miniTempWebGLFloatBuffers[2*count-1];for(var i=0;i<2*count;i+=2){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*8>>2)}GLctx.uniform2fv(GL.uniforms[location],view)}function _emscripten_glUniform2i(location,v0,v1){GLctx.uniform2i(GL.uniforms[location],v0,v1)}function _emscripten_glUniform2iv(location,count,value){if(count<=144){var view=__miniTempWebGLIntBuffers[2*count-1];for(var i=0;i<2*count;i+=2){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*8>>2)}GLctx.uniform2iv(GL.uniforms[location],view)}function _emscripten_glUniform3f(location,v0,v1,v2){GLctx.uniform3f(GL.uniforms[location],v0,v1,v2)}function _emscripten_glUniform3fv(location,count,value){if(count<=96){var view=miniTempWebGLFloatBuffers[3*count-1];for(var i=0;i<3*count;i+=3){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*12>>2)}GLctx.uniform3fv(GL.uniforms[location],view)}function _emscripten_glUniform3i(location,v0,v1,v2){GLctx.uniform3i(GL.uniforms[location],v0,v1,v2)}function _emscripten_glUniform3iv(location,count,value){if(count<=96){var view=__miniTempWebGLIntBuffers[3*count-1];for(var i=0;i<3*count;i+=3){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2];view[i+2]=HEAP32[value+(4*i+8)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*12>>2)}GLctx.uniform3iv(GL.uniforms[location],view)}function _emscripten_glUniform4f(location,v0,v1,v2,v3){GLctx.uniform4f(GL.uniforms[location],v0,v1,v2,v3)}function _emscripten_glUniform4fv(location,count,value){if(count<=72){var view=miniTempWebGLFloatBuffers[4*count-1];var heap=HEAPF32;value>>=2;for(var i=0;i<4*count;i+=4){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3]}}else{var view=HEAPF32.subarray(value>>2,value+count*16>>2)}GLctx.uniform4fv(GL.uniforms[location],view)}function _emscripten_glUniform4i(location,v0,v1,v2,v3){GLctx.uniform4i(GL.uniforms[location],v0,v1,v2,v3)}function _emscripten_glUniform4iv(location,count,value){if(count<=72){var view=__miniTempWebGLIntBuffers[4*count-1];for(var i=0;i<4*count;i+=4){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2];view[i+2]=HEAP32[value+(4*i+8)>>2];view[i+3]=HEAP32[value+(4*i+12)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*16>>2)}GLctx.uniform4iv(GL.uniforms[location],view)}function _emscripten_glUniformMatrix2fv(location,count,transpose,value){if(count<=72){var view=miniTempWebGLFloatBuffers[4*count-1];for(var i=0;i<4*count;i+=4){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2];view[i+3]=HEAPF32[value+(4*i+12)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*16>>2)}GLctx.uniformMatrix2fv(GL.uniforms[location],!!transpose,view)}function _emscripten_glUniformMatrix3fv(location,count,transpose,value){if(count<=32){var view=miniTempWebGLFloatBuffers[9*count-1];for(var i=0;i<9*count;i+=9){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2];view[i+3]=HEAPF32[value+(4*i+12)>>2];view[i+4]=HEAPF32[value+(4*i+16)>>2];view[i+5]=HEAPF32[value+(4*i+20)>>2];view[i+6]=HEAPF32[value+(4*i+24)>>2];view[i+7]=HEAPF32[value+(4*i+28)>>2];view[i+8]=HEAPF32[value+(4*i+32)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*36>>2)}GLctx.uniformMatrix3fv(GL.uniforms[location],!!transpose,view)}function _emscripten_glUniformMatrix4fv(location,count,transpose,value){if(count<=18){var view=miniTempWebGLFloatBuffers[16*count-1];var heap=HEAPF32;value>>=2;for(var i=0;i<16*count;i+=16){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3];view[i+4]=heap[dst+4];view[i+5]=heap[dst+5];view[i+6]=heap[dst+6];view[i+7]=heap[dst+7];view[i+8]=heap[dst+8];view[i+9]=heap[dst+9];view[i+10]=heap[dst+10];view[i+11]=heap[dst+11];view[i+12]=heap[dst+12];view[i+13]=heap[dst+13];view[i+14]=heap[dst+14];view[i+15]=heap[dst+15]}}else{var view=HEAPF32.subarray(value>>2,value+count*64>>2)}GLctx.uniformMatrix4fv(GL.uniforms[location],!!transpose,view)}function _emscripten_glUseProgram(program){GLctx.useProgram(GL.programs[program])}function _emscripten_glValidateProgram(program){GLctx.validateProgram(GL.programs[program])}function _emscripten_glVertexAttrib1f(x0,x1){GLctx["vertexAttrib1f"](x0,x1)}function _emscripten_glVertexAttrib1fv(index,v){GLctx.vertexAttrib1f(index,HEAPF32[v>>2])}function _emscripten_glVertexAttrib2f(x0,x1,x2){GLctx["vertexAttrib2f"](x0,x1,x2)}function _emscripten_glVertexAttrib2fv(index,v){GLctx.vertexAttrib2f(index,HEAPF32[v>>2],HEAPF32[v+4>>2])}function _emscripten_glVertexAttrib3f(x0,x1,x2,x3){GLctx["vertexAttrib3f"](x0,x1,x2,x3)}function _emscripten_glVertexAttrib3fv(index,v){GLctx.vertexAttrib3f(index,HEAPF32[v>>2],HEAPF32[v+4>>2],HEAPF32[v+8>>2])}function _emscripten_glVertexAttrib4f(x0,x1,x2,x3,x4){GLctx["vertexAttrib4f"](x0,x1,x2,x3,x4)}function _emscripten_glVertexAttrib4fv(index,v){GLctx.vertexAttrib4f(index,HEAPF32[v>>2],HEAPF32[v+4>>2],HEAPF32[v+8>>2],HEAPF32[v+12>>2])}function _emscripten_glVertexAttribDivisorANGLE(index,divisor){GLctx["vertexAttribDivisor"](index,divisor)}function _emscripten_glVertexAttribPointer(index,size,type,normalized,stride,ptr){GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}function _emscripten_glViewport(x0,x1,x2,x3){GLctx["viewport"](x0,x1,x2,x3)}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function _emscripten_request_pointerlock(target,deferUntilInEventHandler){target=findEventTarget(target);if(!target)return-4;if(!target.requestPointerLock&&!target.msRequestPointerLock){return-1}var canPerformRequests=JSEvents.canPerformEventHandlerRequests();if(!canPerformRequests){if(deferUntilInEventHandler){JSEvents.deferCall(requestPointerLock,2,[target]);return 1}else{return-2}}return requestPointerLock(target)}function abortOnCannotGrowMemory(requestedSize){abort("OOM")}function _emscripten_resize_heap(requestedSize){abortOnCannotGrowMemory(requestedSize)}function _emscripten_run_script(ptr){eval(UTF8ToString(ptr))}function _emscripten_sample_gamepad_data(){return(JSEvents.lastGamepadState=navigator.getGamepads?navigator.getGamepads():navigator.webkitGetGamepads?navigator.webkitGetGamepads():null)?0:-1}function fillMouseEventData(eventStruct,e,target){var idx=eventStruct>>2;HEAP32[idx+0]=e.screenX;HEAP32[idx+1]=e.screenY;HEAP32[idx+2]=e.clientX;HEAP32[idx+3]=e.clientY;HEAP32[idx+4]=e.ctrlKey;HEAP32[idx+5]=e.shiftKey;HEAP32[idx+6]=e.altKey;HEAP32[idx+7]=e.metaKey;HEAP16[idx*2+16]=e.button;HEAP16[idx*2+17]=e.buttons;HEAP32[idx+9]=e["movementX"];HEAP32[idx+10]=e["movementY"];var rect=getBoundingClientRect(target);HEAP32[idx+11]=e.clientX-rect.left;HEAP32[idx+12]=e.clientY-rect.top}function registerMouseEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.mouseEvent)JSEvents.mouseEvent=_malloc(64);target=findEventTarget(target);var mouseEventHandlerFunc=function(ev){var e=ev||event;fillMouseEventData(JSEvents.mouseEvent,e,target);if(wasmTable.get(callbackfunc)(eventTypeId,JSEvents.mouseEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:eventTypeString!="mousemove"&&eventTypeString!="mouseenter"&&eventTypeString!="mouseleave",eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:mouseEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_click_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,4,"click",targetThread);return 0}function fillFullscreenChangeEventData(eventStruct){var fullscreenElement=document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement||document.msFullscreenElement;var isFullscreen=!!fullscreenElement;HEAP32[eventStruct>>2]=isFullscreen;HEAP32[eventStruct+4>>2]=JSEvents.fullscreenEnabled();var reportedElement=isFullscreen?fullscreenElement:JSEvents.previousFullscreenElement;var nodeName=JSEvents.getNodeNameForTarget(reportedElement);var id=reportedElement&&reportedElement.id?reportedElement.id:"";stringToUTF8(nodeName,eventStruct+8,128);stringToUTF8(id,eventStruct+136,128);HEAP32[eventStruct+264>>2]=reportedElement?reportedElement.clientWidth:0;HEAP32[eventStruct+268>>2]=reportedElement?reportedElement.clientHeight:0;HEAP32[eventStruct+272>>2]=screen.width;HEAP32[eventStruct+276>>2]=screen.height;if(isFullscreen){JSEvents.previousFullscreenElement=fullscreenElement}}function registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.fullscreenChangeEvent)JSEvents.fullscreenChangeEvent=_malloc(280);var fullscreenChangeEventhandlerFunc=function(ev){var e=ev||event;var fullscreenChangeEvent=JSEvents.fullscreenChangeEvent;fillFullscreenChangeEventData(fullscreenChangeEvent);if(wasmTable.get(callbackfunc)(eventTypeId,fullscreenChangeEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:fullscreenChangeEventhandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_fullscreenchange_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){if(!JSEvents.fullscreenEnabled())return-1;target=findEventTarget(target);if(!target)return-4;registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,19,"fullscreenchange",targetThread);registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,19,"webkitfullscreenchange",targetThread);return 0}function registerGamepadEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.gamepadEvent)JSEvents.gamepadEvent=_malloc(1432);var gamepadEventHandlerFunc=function(ev){var e=ev||event;var gamepadEvent=JSEvents.gamepadEvent;fillGamepadEventData(gamepadEvent,e["gamepad"]);if(wasmTable.get(callbackfunc)(eventTypeId,gamepadEvent,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:gamepadEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_gamepadconnected_callback_on_thread(userData,useCapture,callbackfunc,targetThread){if(!navigator.getGamepads&&!navigator.webkitGetGamepads)return-1;registerGamepadEventCallback(2,userData,useCapture,callbackfunc,26,"gamepadconnected",targetThread);return 0}function _emscripten_set_gamepaddisconnected_callback_on_thread(userData,useCapture,callbackfunc,targetThread){if(!navigator.getGamepads&&!navigator.webkitGetGamepads)return-1;registerGamepadEventCallback(2,userData,useCapture,callbackfunc,27,"gamepaddisconnected",targetThread);return 0}function registerKeyEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.keyEvent)JSEvents.keyEvent=_malloc(164);var keyEventHandlerFunc=function(e){var keyEventData=JSEvents.keyEvent;var idx=keyEventData>>2;HEAP32[idx+0]=e.location;HEAP32[idx+1]=e.ctrlKey;HEAP32[idx+2]=e.shiftKey;HEAP32[idx+3]=e.altKey;HEAP32[idx+4]=e.metaKey;HEAP32[idx+5]=e.repeat;HEAP32[idx+6]=e.charCode;HEAP32[idx+7]=e.keyCode;HEAP32[idx+8]=e.which;stringToUTF8(e.key||"",keyEventData+36,32);stringToUTF8(e.code||"",keyEventData+68,32);stringToUTF8(e.char||"",keyEventData+100,32);stringToUTF8(e.locale||"",keyEventData+132,32);if(wasmTable.get(callbackfunc)(eventTypeId,keyEventData,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:keyEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_keydown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,2,"keydown",targetThread);return 0}var Browser={mainLoop:{scheduler:null,method:"",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause:function(){Browser.mainLoop.scheduler=null;Browser.mainLoop.currentlyRunningMainloop++},resume:function(){Browser.mainLoop.currentlyRunningMainloop++;var timingMode=Browser.mainLoop.timingMode;var timingValue=Browser.mainLoop.timingValue;var func=Browser.mainLoop.func;Browser.mainLoop.func=null;setMainLoop(func,0,false,Browser.mainLoop.arg,true);_emscripten_set_main_loop_timing(timingMode,timingValue);Browser.mainLoop.scheduler()},updateStatus:function(){if(Module["setStatus"]){var message=Module["statusMessage"]||"Please wait...";var remaining=Browser.mainLoop.remainingBlockers;var expected=Browser.mainLoop.expectedBlockers;if(remaining){if(remaining<expected){Module["setStatus"](message+" ("+(expected-remaining)+"/"+expected+")")}else{Module["setStatus"](message)}}else{Module["setStatus"]("")}}},runIter:function(func){if(ABORT)return;if(Module["preMainLoop"]){var preRet=Module["preMainLoop"]();if(preRet===false){return}}try{func()}catch(e){if(e instanceof ExitStatus){return}else if(e=="unwind"){return}else{if(e&&typeof e==="object"&&e.stack)err("exception thrown: "+[e,e.stack]);throw e}}if(Module["postMainLoop"])Module["postMainLoop"]()}},isFullscreen:false,pointerLock:false,moduleContextCreatedCallbacks:[],workers:[],init:function(){if(!Module["preloadPlugins"])Module["preloadPlugins"]=[];if(Browser.initted)return;Browser.initted=true;try{new Blob;Browser.hasBlobConstructor=true}catch(e){Browser.hasBlobConstructor=false;console.log("warning: no blob constructor, cannot create blobs with mimetypes")}Browser.BlobBuilder=typeof MozBlobBuilder!="undefined"?MozBlobBuilder:typeof WebKitBlobBuilder!="undefined"?WebKitBlobBuilder:!Browser.hasBlobConstructor?console.log("warning: no BlobBuilder"):null;Browser.URLObject=typeof window!="undefined"?window.URL?window.URL:window.webkitURL:undefined;if(!Module.noImageDecoding&&typeof Browser.URLObject==="undefined"){console.log("warning: Browser does not support creating object URLs. Built-in browser image decoding will not be available.");Module.noImageDecoding=true}var imagePlugin={};imagePlugin["canHandle"]=function imagePlugin_canHandle(name){return!Module.noImageDecoding&&/\.(jpg|jpeg|png|bmp)$/i.test(name)};imagePlugin["handle"]=function imagePlugin_handle(byteArray,name,onload,onerror){var b=null;if(Browser.hasBlobConstructor){try{b=new Blob([byteArray],{type:Browser.getMimetype(name)});if(b.size!==byteArray.length){b=new Blob([new Uint8Array(byteArray).buffer],{type:Browser.getMimetype(name)})}}catch(e){warnOnce("Blob constructor present but fails: "+e+"; falling back to blob builder")}}if(!b){var bb=new Browser.BlobBuilder;bb.append(new Uint8Array(byteArray).buffer);b=bb.getBlob()}var url=Browser.URLObject.createObjectURL(b);var img=new Image;img.onload=function img_onload(){assert(img.complete,"Image "+name+" could not be decoded");var canvas=document.createElement("canvas");canvas.width=img.width;canvas.height=img.height;var ctx=canvas.getContext("2d");ctx.drawImage(img,0,0);Module["preloadedImages"][name]=canvas;Browser.URLObject.revokeObjectURL(url);if(onload)onload(byteArray)};img.onerror=function img_onerror(event){console.log("Image "+url+" could not be decoded");if(onerror)onerror()};img.src=url};Module["preloadPlugins"].push(imagePlugin);var audioPlugin={};audioPlugin["canHandle"]=function audioPlugin_canHandle(name){return!Module.noAudioDecoding&&name.substr(-4)in{".ogg":1,".wav":1,".mp3":1}};audioPlugin["handle"]=function audioPlugin_handle(byteArray,name,onload,onerror){var done=false;function finish(audio){if(done)return;done=true;Module["preloadedAudios"][name]=audio;if(onload)onload(byteArray)}function fail(){if(done)return;done=true;Module["preloadedAudios"][name]=new Audio;if(onerror)onerror()}if(Browser.hasBlobConstructor){try{var b=new Blob([byteArray],{type:Browser.getMimetype(name)})}catch(e){return fail()}var url=Browser.URLObject.createObjectURL(b);var audio=new Audio;audio.addEventListener("canplaythrough",function(){finish(audio)},false);audio.onerror=function audio_onerror(event){if(done)return;console.log("warning: browser could not fully decode audio "+name+", trying slower base64 approach");function encode64(data){var BASE="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var PAD="=";var ret="";var leftchar=0;var leftbits=0;for(var i=0;i<data.length;i++){leftchar=leftchar<<8|data[i];leftbits+=8;while(leftbits>=6){var curr=leftchar>>leftbits-6&63;leftbits-=6;ret+=BASE[curr]}}if(leftbits==2){ret+=BASE[(leftchar&3)<<4];ret+=PAD+PAD}else if(leftbits==4){ret+=BASE[(leftchar&15)<<2];ret+=PAD}return ret}audio.src="data:audio/x-"+name.substr(-3)+";base64,"+encode64(byteArray);finish(audio)};audio.src=url;Browser.safeSetTimeout(function(){finish(audio)},1e4)}else{return fail()}};Module["preloadPlugins"].push(audioPlugin);function pointerLockChange(){Browser.pointerLock=document["pointerLockElement"]===Module["canvas"]||document["mozPointerLockElement"]===Module["canvas"]||document["webkitPointerLockElement"]===Module["canvas"]||document["msPointerLockElement"]===Module["canvas"]}var canvas=Module["canvas"];if(canvas){canvas.requestPointerLock=canvas["requestPointerLock"]||canvas["mozRequestPointerLock"]||canvas["webkitRequestPointerLock"]||canvas["msRequestPointerLock"]||function(){};canvas.exitPointerLock=document["exitPointerLock"]||document["mozExitPointerLock"]||document["webkitExitPointerLock"]||document["msExitPointerLock"]||function(){};canvas.exitPointerLock=canvas.exitPointerLock.bind(document);document.addEventListener("pointerlockchange",pointerLockChange,false);document.addEventListener("mozpointerlockchange",pointerLockChange,false);document.addEventListener("webkitpointerlockchange",pointerLockChange,false);document.addEventListener("mspointerlockchange",pointerLockChange,false);if(Module["elementPointerLock"]){canvas.addEventListener("click",function(ev){if(!Browser.pointerLock&&Module["canvas"].requestPointerLock){Module["canvas"].requestPointerLock();ev.preventDefault()}},false)}}},createContext:function(canvas,useWebGL,setInModule,webGLContextAttributes){if(useWebGL&&Module.ctx&&canvas==Module.canvas)return Module.ctx;var ctx;var contextHandle;if(useWebGL){var contextAttributes={antialias:false,alpha:false,majorVersion:1};if(webGLContextAttributes){for(var attribute in webGLContextAttributes){contextAttributes[attribute]=webGLContextAttributes[attribute]}}if(typeof GL!=="undefined"){contextHandle=GL.createContext(canvas,contextAttributes);if(contextHandle){ctx=GL.getContext(contextHandle).GLctx}}}else{ctx=canvas.getContext("2d")}if(!ctx)return null;if(setInModule){if(!useWebGL)assert(typeof GLctx==="undefined","cannot set in module if GLctx is used, but we are a non-GL context that would replace it");Module.ctx=ctx;if(useWebGL)GL.makeContextCurrent(contextHandle);Module.useWebGL=useWebGL;Browser.moduleContextCreatedCallbacks.forEach(function(callback){callback()});Browser.init()}return ctx},destroyContext:function(canvas,useWebGL,setInModule){},fullscreenHandlersInstalled:false,lockPointer:undefined,resizeCanvas:undefined,requestFullscreen:function(lockPointer,resizeCanvas){Browser.lockPointer=lockPointer;Browser.resizeCanvas=resizeCanvas;if(typeof Browser.lockPointer==="undefined")Browser.lockPointer=true;if(typeof Browser.resizeCanvas==="undefined")Browser.resizeCanvas=false;var canvas=Module["canvas"];function fullscreenChange(){Browser.isFullscreen=false;var canvasContainer=canvas.parentNode;if((document["fullscreenElement"]||document["mozFullScreenElement"]||document["msFullscreenElement"]||document["webkitFullscreenElement"]||document["webkitCurrentFullScreenElement"])===canvasContainer){canvas.exitFullscreen=Browser.exitFullscreen;if(Browser.lockPointer)canvas.requestPointerLock();Browser.isFullscreen=true;if(Browser.resizeCanvas){Browser.setFullscreenCanvasSize()}else{Browser.updateCanvasDimensions(canvas)}}else{canvasContainer.parentNode.insertBefore(canvas,canvasContainer);canvasContainer.parentNode.removeChild(canvasContainer);if(Browser.resizeCanvas){Browser.setWindowedCanvasSize()}else{Browser.updateCanvasDimensions(canvas)}}if(Module["onFullScreen"])Module["onFullScreen"](Browser.isFullscreen);if(Module["onFullscreen"])Module["onFullscreen"](Browser.isFullscreen)}if(!Browser.fullscreenHandlersInstalled){Browser.fullscreenHandlersInstalled=true;document.addEventListener("fullscreenchange",fullscreenChange,false);document.addEventListener("mozfullscreenchange",fullscreenChange,false);document.addEventListener("webkitfullscreenchange",fullscreenChange,false);document.addEventListener("MSFullscreenChange",fullscreenChange,false)}var canvasContainer=document.createElement("div");canvas.parentNode.insertBefore(canvasContainer,canvas);canvasContainer.appendChild(canvas);canvasContainer.requestFullscreen=canvasContainer["requestFullscreen"]||canvasContainer["mozRequestFullScreen"]||canvasContainer["msRequestFullscreen"]||(canvasContainer["webkitRequestFullscreen"]?function(){canvasContainer["webkitRequestFullscreen"](Element["ALLOW_KEYBOARD_INPUT"])}:null)||(canvasContainer["webkitRequestFullScreen"]?function(){canvasContainer["webkitRequestFullScreen"](Element["ALLOW_KEYBOARD_INPUT"])}:null);canvasContainer.requestFullscreen()},exitFullscreen:function(){if(!Browser.isFullscreen){return false}var CFS=document["exitFullscreen"]||document["cancelFullScreen"]||document["mozCancelFullScreen"]||document["msExitFullscreen"]||document["webkitCancelFullScreen"]||function(){};CFS.apply(document,[]);return true},nextRAF:0,fakeRequestAnimationFrame:function(func){var now=Date.now();if(Browser.nextRAF===0){Browser.nextRAF=now+1e3/60}else{while(now+2>=Browser.nextRAF){Browser.nextRAF+=1e3/60}}var delay=Math.max(Browser.nextRAF-now,0);setTimeout(func,delay)},requestAnimationFrame:function(func){if(typeof requestAnimationFrame==="function"){requestAnimationFrame(func);return}var RAF=Browser.fakeRequestAnimationFrame;RAF(func)},safeRequestAnimationFrame:function(func){return Browser.requestAnimationFrame(function(){if(ABORT)return;func()})},safeSetTimeout:function(func,timeout){noExitRuntime=true;return setTimeout(function(){if(ABORT)return;func()},timeout)},getMimetype:function(name){return{"jpg":"image/jpeg","jpeg":"image/jpeg","png":"image/png","bmp":"image/bmp","ogg":"audio/ogg","wav":"audio/wav","mp3":"audio/mpeg"}[name.substr(name.lastIndexOf(".")+1)]},getUserMedia:function(func){if(!window.getUserMedia){window.getUserMedia=navigator["getUserMedia"]||navigator["mozGetUserMedia"]}window.getUserMedia(func)},getMovementX:function(event){return event["movementX"]||event["mozMovementX"]||event["webkitMovementX"]||0},getMovementY:function(event){return event["movementY"]||event["mozMovementY"]||event["webkitMovementY"]||0},getMouseWheelDelta:function(event){var delta=0;switch(event.type){case"DOMMouseScroll":delta=event.detail/3;break;case"mousewheel":delta=event.wheelDelta/120;break;case"wheel":delta=event.deltaY;switch(event.deltaMode){case 0:delta/=100;break;case 1:delta/=3;break;case 2:delta*=80;break;default:throw"unrecognized mouse wheel delta mode: "+event.deltaMode}break;default:throw"unrecognized mouse wheel event: "+event.type}return delta},mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,touches:{},lastTouches:{},calculateMouseEvent:function(event){if(Browser.pointerLock){if(event.type!="mousemove"&&"mozMovementX"in event){Browser.mouseMovementX=Browser.mouseMovementY=0}else{Browser.mouseMovementX=Browser.getMovementX(event);Browser.mouseMovementY=Browser.getMovementY(event)}if(typeof SDL!="undefined"){Browser.mouseX=SDL.mouseX+Browser.mouseMovementX;Browser.mouseY=SDL.mouseY+Browser.mouseMovementY}else{Browser.mouseX+=Browser.mouseMovementX;Browser.mouseY+=Browser.mouseMovementY}}else{var rect=Module["canvas"].getBoundingClientRect();var cw=Module["canvas"].width;var ch=Module["canvas"].height;var scrollX=typeof window.scrollX!=="undefined"?window.scrollX:window.pageXOffset;var scrollY=typeof window.scrollY!=="undefined"?window.scrollY:window.pageYOffset;if(event.type==="touchstart"||event.type==="touchend"||event.type==="touchmove"){var touch=event.touch;if(touch===undefined){return}var adjustedX=touch.pageX-(scrollX+rect.left);var adjustedY=touch.pageY-(scrollY+rect.top);adjustedX=adjustedX*(cw/rect.width);adjustedY=adjustedY*(ch/rect.height);var coords={x:adjustedX,y:adjustedY};if(event.type==="touchstart"){Browser.lastTouches[touch.identifier]=coords;Browser.touches[touch.identifier]=coords}else if(event.type==="touchend"||event.type==="touchmove"){var last=Browser.touches[touch.identifier];if(!last)last=coords;Browser.lastTouches[touch.identifier]=last;Browser.touches[touch.identifier]=coords}return}var x=event.pageX-(scrollX+rect.left);var y=event.pageY-(scrollY+rect.top);x=x*(cw/rect.width);y=y*(ch/rect.height);Browser.mouseMovementX=x-Browser.mouseX;Browser.mouseMovementY=y-Browser.mouseY;Browser.mouseX=x;Browser.mouseY=y}},asyncLoad:function(url,onload,onerror,noRunDep){var dep=!noRunDep?getUniqueRunDependency("al "+url):"";readAsync(url,function(arrayBuffer){assert(arrayBuffer,'Loading data file "'+url+'" failed (no arrayBuffer).');onload(new Uint8Array(arrayBuffer));if(dep)removeRunDependency(dep)},function(event){if(onerror){onerror()}else{throw'Loading data file "'+url+'" failed.'}});if(dep)addRunDependency(dep)},resizeListeners:[],updateResizeListeners:function(){var canvas=Module["canvas"];Browser.resizeListeners.forEach(function(listener){listener(canvas.width,canvas.height)})},setCanvasSize:function(width,height,noUpdates){var canvas=Module["canvas"];Browser.updateCanvasDimensions(canvas,width,height);if(!noUpdates)Browser.updateResizeListeners()},windowedWidth:0,windowedHeight:0,setFullscreenCanvasSize:function(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>2];flags=flags|8388608;HEAP32[SDL.screen>>2]=flags}Browser.updateCanvasDimensions(Module["canvas"]);Browser.updateResizeListeners()},setWindowedCanvasSize:function(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>2];flags=flags&~8388608;HEAP32[SDL.screen>>2]=flags}Browser.updateCanvasDimensions(Module["canvas"]);Browser.updateResizeListeners()},updateCanvasDimensions:function(canvas,wNative,hNative){if(wNative&&hNative){canvas.widthNative=wNative;canvas.heightNative=hNative}else{wNative=canvas.widthNative;hNative=canvas.heightNative}var w=wNative;var h=hNative;if(Module["forcedAspectRatio"]&&Module["forcedAspectRatio"]>0){if(w/h<Module["forcedAspectRatio"]){w=Math.round(h*Module["forcedAspectRatio"])}else{h=Math.round(w/Module["forcedAspectRatio"])}}if((document["fullscreenElement"]||document["mozFullScreenElement"]||document["msFullscreenElement"]||document["webkitFullscreenElement"]||document["webkitCurrentFullScreenElement"])===canvas.parentNode&&typeof screen!="undefined"){var factor=Math.min(screen.width/w,screen.height/h);w=Math.round(w*factor);h=Math.round(h*factor)}if(Browser.resizeCanvas){if(canvas.width!=w)canvas.width=w;if(canvas.height!=h)canvas.height=h;if(typeof canvas.style!="undefined"){canvas.style.removeProperty("width");canvas.style.removeProperty("height")}}else{if(canvas.width!=wNative)canvas.width=wNative;if(canvas.height!=hNative)canvas.height=hNative;if(typeof canvas.style!="undefined"){if(w!=wNative||h!=hNative){canvas.style.setProperty("width",w+"px","important");canvas.style.setProperty("height",h+"px","important")}else{canvas.style.removeProperty("width");canvas.style.removeProperty("height")}}}},wgetRequests:{},nextWgetRequestHandle:0,getNextWgetRequestHandle:function(){var handle=Browser.nextWgetRequestHandle;Browser.nextWgetRequestHandle++;return handle}};function _emscripten_set_main_loop_timing(mode,value){Browser.mainLoop.timingMode=mode;Browser.mainLoop.timingValue=value;if(!Browser.mainLoop.func){return 1}if(mode==0){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setTimeout(){var timeUntilNextTick=Math.max(0,Browser.mainLoop.tickStartTime+value-_emscripten_get_now())|0;setTimeout(Browser.mainLoop.runner,timeUntilNextTick)};Browser.mainLoop.method="timeout"}else if(mode==1){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_rAF(){Browser.requestAnimationFrame(Browser.mainLoop.runner)};Browser.mainLoop.method="rAF"}else if(mode==2){if(typeof setImmediate==="undefined"){var setImmediates=[];var emscriptenMainLoopMessageId="setimmediate";var Browser_setImmediate_messageHandler=function(event){if(event.data===emscriptenMainLoopMessageId||event.data.target===emscriptenMainLoopMessageId){event.stopPropagation();setImmediates.shift()()}};addEventListener("message",Browser_setImmediate_messageHandler,true);setImmediate=function Browser_emulated_setImmediate(func){setImmediates.push(func);if(ENVIRONMENT_IS_WORKER){if(Module["setImmediates"]===undefined)Module["setImmediates"]=[];Module["setImmediates"].push(func);postMessage({target:emscriptenMainLoopMessageId})}else postMessage(emscriptenMainLoopMessageId,"*")}}Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setImmediate(){setImmediate(Browser.mainLoop.runner)};Browser.mainLoop.method="immediate"}return 0}var _emscripten_get_now;if(ENVIRONMENT_IS_NODE){_emscripten_get_now=function(){var t=process["hrtime"]();return t[0]*1e3+t[1]/1e6}}else if(typeof dateNow!=="undefined"){_emscripten_get_now=dateNow}else _emscripten_get_now=function(){return performance.now()};function setMainLoop(browserIterationFunc,fps,simulateInfiniteLoop,arg,noSetTiming){noExitRuntime=true;assert(!Browser.mainLoop.func,"emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters.");Browser.mainLoop.func=browserIterationFunc;Browser.mainLoop.arg=arg;var thisMainLoopId=Browser.mainLoop.currentlyRunningMainloop;Browser.mainLoop.runner=function Browser_mainLoop_runner(){if(ABORT)return;if(Browser.mainLoop.queue.length>0){var start=Date.now();var blocker=Browser.mainLoop.queue.shift();blocker.func(blocker.arg);if(Browser.mainLoop.remainingBlockers){var remaining=Browser.mainLoop.remainingBlockers;var next=remaining%1==0?remaining-1:Math.floor(remaining);if(blocker.counted){Browser.mainLoop.remainingBlockers=next}else{next=next+.5;Browser.mainLoop.remainingBlockers=(8*remaining+next)/9}}console.log('main loop blocker "'+blocker.name+'" took '+(Date.now()-start)+" ms");Browser.mainLoop.updateStatus();if(thisMainLoopId<Browser.mainLoop.currentlyRunningMainloop)return;setTimeout(Browser.mainLoop.runner,0);return}if(thisMainLoopId<Browser.mainLoop.currentlyRunningMainloop)return;Browser.mainLoop.currentFrameNumber=Browser.mainLoop.currentFrameNumber+1|0;if(Browser.mainLoop.timingMode==1&&Browser.mainLoop.timingValue>1&&Browser.mainLoop.currentFrameNumber%Browser.mainLoop.timingValue!=0){Browser.mainLoop.scheduler();return}else if(Browser.mainLoop.timingMode==0){Browser.mainLoop.tickStartTime=_emscripten_get_now()}Browser.mainLoop.runIter(browserIterationFunc);if(thisMainLoopId<Browser.mainLoop.currentlyRunningMainloop)return;if(typeof SDL==="object"&&SDL.audio&&SDL.audio.queueNewAudioData)SDL.audio.queueNewAudioData();Browser.mainLoop.scheduler()};if(!noSetTiming){if(fps&&fps>0)_emscripten_set_main_loop_timing(0,1e3/fps);else _emscripten_set_main_loop_timing(1,1);Browser.mainLoop.scheduler()}if(simulateInfiniteLoop){throw"unwind"}}function _emscripten_set_main_loop(func,fps,simulateInfiniteLoop){var browserIterationFunc=wasmTable.get(func);setMainLoop(browserIterationFunc,fps,simulateInfiniteLoop)}function registerTouchEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.touchEvent)JSEvents.touchEvent=_malloc(1684);target=findEventTarget(target);var touchEventHandlerFunc=function(e){var touches={};var et=e.touches;for(var i=0;i<et.length;++i){var touch=et[i];touches[touch.identifier]=touch}et=e.changedTouches;for(var i=0;i<et.length;++i){var touch=et[i];touch.isChanged=1;touches[touch.identifier]=touch}et=e.targetTouches;for(var i=0;i<et.length;++i){touches[et[i].identifier].onTarget=1}var touchEvent=JSEvents.touchEvent;var idx=touchEvent>>2;HEAP32[idx+1]=e.ctrlKey;HEAP32[idx+2]=e.shiftKey;HEAP32[idx+3]=e.altKey;HEAP32[idx+4]=e.metaKey;idx+=5;var targetRect=getBoundingClientRect(target);var numTouches=0;for(var i in touches){var t=touches[i];HEAP32[idx+0]=t.identifier;HEAP32[idx+1]=t.screenX;HEAP32[idx+2]=t.screenY;HEAP32[idx+3]=t.clientX;HEAP32[idx+4]=t.clientY;HEAP32[idx+5]=t.pageX;HEAP32[idx+6]=t.pageY;HEAP32[idx+7]=t.isChanged;HEAP32[idx+8]=t.onTarget;HEAP32[idx+9]=t.clientX-targetRect.left;HEAP32[idx+10]=t.clientY-targetRect.top;idx+=13;if(++numTouches>31){break}}HEAP32[touchEvent>>2]=numTouches;if(wasmTable.get(callbackfunc)(eventTypeId,touchEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:eventTypeString=="touchstart"||eventTypeString=="touchend",eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:touchEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_touchcancel_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerTouchEventCallback(target,userData,useCapture,callbackfunc,25,"touchcancel",targetThread);return 0}function _emscripten_set_touchend_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerTouchEventCallback(target,userData,useCapture,callbackfunc,23,"touchend",targetThread);return 0}function _emscripten_set_touchmove_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerTouchEventCallback(target,userData,useCapture,callbackfunc,24,"touchmove",targetThread);return 0}function _emscripten_set_touchstart_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerTouchEventCallback(target,userData,useCapture,callbackfunc,22,"touchstart",targetThread);return 0}function _emscripten_thread_sleep(msecs){var start=_emscripten_get_now();while(_emscripten_get_now()-start<msecs){}}function _exit(status){exit(status)}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_read(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doReadv(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var stream=SYSCALLS.getStreamFromFD(fd);var HIGH_OFFSET=4294967296;var offset=offset_high*HIGH_OFFSET+(offset_low>>>0);var DOUBLE_LIMIT=9007199254740992;if(offset<=-DOUBLE_LIMIT||offset>=DOUBLE_LIMIT){return-61}FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doWritev(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _glActiveTexture(x0){GLctx["activeTexture"](x0)}function _glAttachShader(program,shader){GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _glBindAttribLocation(program,index,name){GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))}function _glBindBuffer(target,buffer){GLctx.bindBuffer(target,GL.buffers[buffer])}function _glBindFramebuffer(target,framebuffer){GLctx.bindFramebuffer(target,GL.framebuffers[framebuffer])}function _glBindRenderbuffer(target,renderbuffer){GLctx.bindRenderbuffer(target,GL.renderbuffers[renderbuffer])}function _glBindTexture(target,texture){GLctx.bindTexture(target,GL.textures[texture])}function _glBlendFunc(x0,x1){GLctx["blendFunc"](x0,x1)}function _glBufferData(target,size,data,usage){GLctx.bufferData(target,data?HEAPU8.subarray(data,data+size):size,usage)}function _glBufferSubData(target,offset,size,data){GLctx.bufferSubData(target,offset,HEAPU8.subarray(data,data+size))}function _glCheckFramebufferStatus(x0){return GLctx["checkFramebufferStatus"](x0)}function _glClear(x0){GLctx["clear"](x0)}function _glClearColor(x0,x1,x2,x3){GLctx["clearColor"](x0,x1,x2,x3)}function _glClearDepthf(x0){GLctx["clearDepth"](x0)}function _glCompileShader(shader){GLctx.compileShader(GL.shaders[shader])}function _glCompressedTexImage2D(target,level,internalFormat,width,height,border,imageSize,data){GLctx["compressedTexImage2D"](target,level,internalFormat,width,height,border,data?HEAPU8.subarray(data,data+imageSize):null)}function _glCreateProgram(){var id=GL.getNewId(GL.programs);var program=GLctx.createProgram();program.name=id;GL.programs[id]=program;return id}function _glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}function _glCullFace(x0){GLctx["cullFace"](x0)}function _glDeleteBuffers(n,buffers){for(var i=0;i<n;i++){var id=HEAP32[buffers+i*4>>2];var buffer=GL.buffers[id];if(!buffer)continue;GLctx.deleteBuffer(buffer);buffer.name=0;GL.buffers[id]=null}}function _glDeleteFramebuffers(n,framebuffers){for(var i=0;i<n;++i){var id=HEAP32[framebuffers+i*4>>2];var framebuffer=GL.framebuffers[id];if(!framebuffer)continue;GLctx.deleteFramebuffer(framebuffer);framebuffer.name=0;GL.framebuffers[id]=null}}function _glDeleteProgram(id){if(!id)return;var program=GL.programs[id];if(!program){GL.recordError(1281);return}GLctx.deleteProgram(program);program.name=0;GL.programs[id]=null;GL.programInfos[id]=null}function _glDeleteRenderbuffers(n,renderbuffers){for(var i=0;i<n;i++){var id=HEAP32[renderbuffers+i*4>>2];var renderbuffer=GL.renderbuffers[id];if(!renderbuffer)continue;GLctx.deleteRenderbuffer(renderbuffer);renderbuffer.name=0;GL.renderbuffers[id]=null}}function _glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}function _glDeleteTextures(n,textures){for(var i=0;i<n;i++){var id=HEAP32[textures+i*4>>2];var texture=GL.textures[id];if(!texture)continue;GLctx.deleteTexture(texture);texture.name=0;GL.textures[id]=null}}function _glDepthFunc(x0){GLctx["depthFunc"](x0)}function _glDepthMask(flag){GLctx.depthMask(!!flag)}function _glDetachShader(program,shader){GLctx.detachShader(GL.programs[program],GL.shaders[shader])}function _glDisable(x0){GLctx["disable"](x0)}function _glDisableVertexAttribArray(index){GLctx.disableVertexAttribArray(index)}function _glDrawArrays(mode,first,count){GLctx.drawArrays(mode,first,count)}function _glDrawElements(mode,count,type,indices){GLctx.drawElements(mode,count,type,indices)}function _glEnable(x0){GLctx["enable"](x0)}function _glEnableVertexAttribArray(index){GLctx.enableVertexAttribArray(index)}function _glFramebufferRenderbuffer(target,attachment,renderbuffertarget,renderbuffer){GLctx.framebufferRenderbuffer(target,attachment,renderbuffertarget,GL.renderbuffers[renderbuffer])}function _glFramebufferTexture2D(target,attachment,textarget,texture,level){GLctx.framebufferTexture2D(target,attachment,textarget,GL.textures[texture],level)}function _glFrontFace(x0){GLctx["frontFace"](x0)}function _glGenBuffers(n,buffers){__glGenObject(n,buffers,"createBuffer",GL.buffers)}function _glGenFramebuffers(n,ids){__glGenObject(n,ids,"createFramebuffer",GL.framebuffers)}function _glGenRenderbuffers(n,renderbuffers){__glGenObject(n,renderbuffers,"createRenderbuffer",GL.renderbuffers)}function _glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures)}function _glGetActiveUniform(program,index,bufSize,length,size,type,name){__glGetActiveAttribOrUniform("getActiveUniform",program,index,bufSize,length,size,type,name)}function _glGetAttribLocation(program,name){return GLctx.getAttribLocation(GL.programs[program],UTF8ToString(name))}function _glGetFloatv(name_,p){emscriptenWebGLGet(name_,p,2)}function _glGetFramebufferAttachmentParameteriv(target,attachment,pname,params){var result=GLctx.getFramebufferAttachmentParameter(target,attachment,pname);if(result instanceof WebGLRenderbuffer||result instanceof WebGLTexture){result=result.name|0}HEAP32[params>>2]=result}function _glGetProgramInfoLog(program,maxLength,length,infoLog){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _glGetProgramiv(program,pname,p){if(!p){GL.recordError(1281);return}if(program>=GL.counter){GL.recordError(1281);return}var ptable=GL.programInfos[program];if(!ptable){GL.recordError(1282);return}if(pname==35716){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";HEAP32[p>>2]=log.length+1}else if(pname==35719){HEAP32[p>>2]=ptable.maxUniformLength}else if(pname==35722){if(ptable.maxAttributeLength==-1){program=GL.programs[program];var numAttribs=GLctx.getProgramParameter(program,35721);ptable.maxAttributeLength=0;for(var i=0;i<numAttribs;++i){var activeAttrib=GLctx.getActiveAttrib(program,i);ptable.maxAttributeLength=Math.max(ptable.maxAttributeLength,activeAttrib.name.length+1)}}HEAP32[p>>2]=ptable.maxAttributeLength}else if(pname==35381){if(ptable.maxUniformBlockNameLength==-1){program=GL.programs[program];var numBlocks=GLctx.getProgramParameter(program,35382);ptable.maxUniformBlockNameLength=0;for(var i=0;i<numBlocks;++i){var activeBlockName=GLctx.getActiveUniformBlockName(program,i);ptable.maxUniformBlockNameLength=Math.max(ptable.maxUniformBlockNameLength,activeBlockName.length+1)}}HEAP32[p>>2]=ptable.maxUniformBlockNameLength}else{HEAP32[p>>2]=GLctx.getProgramParameter(GL.programs[program],pname)}}function _glGetShaderInfoLog(shader,maxLength,length,infoLog){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _glGetShaderiv(shader,pname,p){if(!p){GL.recordError(1281);return}if(pname==35716){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var logLength=log?log.length+1:0;HEAP32[p>>2]=logLength}else if(pname==35720){var source=GLctx.getShaderSource(GL.shaders[shader]);var sourceLength=source?source.length+1:0;HEAP32[p>>2]=sourceLength}else{HEAP32[p>>2]=GLctx.getShaderParameter(GL.shaders[shader],pname)}}function _glGetString(name_){if(GL.stringCache[name_])return GL.stringCache[name_];var ret;switch(name_){case 7939:var exts=GLctx.getSupportedExtensions()||[];exts=exts.concat(exts.map(function(e){return"GL_"+e}));ret=stringToNewUTF8(exts.join(" "));break;case 7936:case 7937:case 37445:case 37446:var s=GLctx.getParameter(name_);if(!s){GL.recordError(1280)}ret=stringToNewUTF8(s);break;case 7938:var glVersion=GLctx.getParameter(7938);{glVersion="OpenGL ES 2.0 ("+glVersion+")"}ret=stringToNewUTF8(glVersion);break;case 35724:var glslVersion=GLctx.getParameter(35724);var ver_re=/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/;var ver_num=glslVersion.match(ver_re);if(ver_num!==null){if(ver_num[1].length==3)ver_num[1]=ver_num[1]+"0";glslVersion="OpenGL ES GLSL ES "+ver_num[1]+" ("+glslVersion+")"}ret=stringToNewUTF8(glslVersion);break;default:GL.recordError(1280);return 0}GL.stringCache[name_]=ret;return ret}function _glGetUniformLocation(program,name){name=UTF8ToString(name);var arrayIndex=0;if(name[name.length-1]=="]"){var leftBrace=name.lastIndexOf("[");arrayIndex=name[leftBrace+1]!="]"?jstoi_q(name.slice(leftBrace+1)):0;name=name.slice(0,leftBrace)}var uniformInfo=GL.programInfos[program]&&GL.programInfos[program].uniforms[name];if(uniformInfo&&arrayIndex>=0&&arrayIndex<uniformInfo[0]){return uniformInfo[1]+arrayIndex}else{return-1}}function _glLinkProgram(program){GLctx.linkProgram(GL.programs[program]);GL.populateUniformTable(program)}function _glPixelStorei(pname,param){if(pname==3317){GL.unpackAlignment=param}GLctx.pixelStorei(pname,param)}function _glReadPixels(x,y,width,height,format,type,pixels){var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);return}GLctx.readPixels(x,y,width,height,format,type,pixelData)}function _glRenderbufferStorage(x0,x1,x2,x3){GLctx["renderbufferStorage"](x0,x1,x2,x3)}function _glShaderSource(shader,count,string,length){var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}function _glTexImage2D(target,level,internalFormat,width,height,border,format,type,pixels){GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels?emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat):null)}function _glTexParameteri(x0,x1,x2){GLctx["texParameteri"](x0,x1,x2)}function _glUniform1i(location,v0){GLctx.uniform1i(GL.uniforms[location],v0)}function _glUniform1iv(location,count,value){if(count<=288){var view=__miniTempWebGLIntBuffers[count-1];for(var i=0;i<count;++i){view[i]=HEAP32[value+4*i>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*4>>2)}GLctx.uniform1iv(GL.uniforms[location],view)}function _glUniform4f(location,v0,v1,v2,v3){GLctx.uniform4f(GL.uniforms[location],v0,v1,v2,v3)}function _glUniformMatrix4fv(location,count,transpose,value){if(count<=18){var view=miniTempWebGLFloatBuffers[16*count-1];var heap=HEAPF32;value>>=2;for(var i=0;i<16*count;i+=16){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3];view[i+4]=heap[dst+4];view[i+5]=heap[dst+5];view[i+6]=heap[dst+6];view[i+7]=heap[dst+7];view[i+8]=heap[dst+8];view[i+9]=heap[dst+9];view[i+10]=heap[dst+10];view[i+11]=heap[dst+11];view[i+12]=heap[dst+12];view[i+13]=heap[dst+13];view[i+14]=heap[dst+14];view[i+15]=heap[dst+15]}}else{var view=HEAPF32.subarray(value>>2,value+count*64>>2)}GLctx.uniformMatrix4fv(GL.uniforms[location],!!transpose,view)}function _glUseProgram(program){GLctx.useProgram(GL.programs[program])}function _glVertexAttrib2f(x0,x1,x2){GLctx["vertexAttrib2f"](x0,x1,x2)}function _glVertexAttrib3f(x0,x1,x2,x3){GLctx["vertexAttrib3f"](x0,x1,x2,x3)}function _glVertexAttrib4f(x0,x1,x2,x3,x4){GLctx["vertexAttrib4f"](x0,x1,x2,x3,x4)}function _glVertexAttribPointer(index,size,type,normalized,stride,ptr){GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}function _glViewport(x0,x1,x2,x3){GLctx["viewport"](x0,x1,x2,x3)}function GLFW_Window(id,width,height,title,monitor,share){this.id=id;this.x=0;this.y=0;this.fullscreen=false;this.storedX=0;this.storedY=0;this.width=width;this.height=height;this.storedWidth=width;this.storedHeight=height;this.title=title;this.monitor=monitor;this.share=share;this.attributes=GLFW.hints;this.inputModes={208897:212993,208898:0,208899:0};this.buttons=0;this.keys=new Array;this.domKeys=new Array;this.shouldClose=0;this.title=null;this.windowPosFunc=null;this.windowSizeFunc=null;this.windowCloseFunc=null;this.windowRefreshFunc=null;this.windowFocusFunc=null;this.windowIconifyFunc=null;this.framebufferSizeFunc=null;this.mouseButtonFunc=null;this.cursorPosFunc=null;this.cursorEnterFunc=null;this.scrollFunc=null;this.dropFunc=null;this.keyFunc=null;this.charFunc=null;this.userptr=null}var GLFW={WindowFromId:function(id){if(id<=0||!GLFW.windows)return null;return GLFW.windows[id-1]},joystickFunc:null,errorFunc:null,monitorFunc:null,active:null,windows:null,monitors:null,monitorString:null,versionString:null,initialTime:null,extensions:null,hints:null,defaultHints:{131073:0,131074:0,131075:1,131076:1,131077:1,135169:8,135170:8,135171:8,135172:8,135173:24,135174:8,135175:0,135176:0,135177:0,135178:0,135179:0,135180:0,135181:0,135182:0,135183:0,139265:196609,139266:1,139267:0,139268:0,139269:0,139270:0,139271:0,139272:0},DOMToGLFWKeyCode:function(keycode){switch(keycode){case 32:return 32;case 222:return 39;case 188:return 44;case 173:return 45;case 189:return 45;case 190:return 46;case 191:return 47;case 48:return 48;case 49:return 49;case 50:return 50;case 51:return 51;case 52:return 52;case 53:return 53;case 54:return 54;case 55:return 55;case 56:return 56;case 57:return 57;case 59:return 59;case 61:return 61;case 187:return 61;case 65:return 65;case 66:return 66;case 67:return 67;case 68:return 68;case 69:return 69;case 70:return 70;case 71:return 71;case 72:return 72;case 73:return 73;case 74:return 74;case 75:return 75;case 76:return 76;case 77:return 77;case 78:return 78;case 79:return 79;case 80:return 80;case 81:return 81;case 82:return 82;case 83:return 83;case 84:return 84;case 85:return 85;case 86:return 86;case 87:return 87;case 88:return 88;case 89:return 89;case 90:return 90;case 219:return 91;case 220:return 92;case 221:return 93;case 192:return 94;case 27:return 256;case 13:return 257;case 9:return 258;case 8:return 259;case 45:return 260;case 46:return 261;case 39:return 262;case 37:return 263;case 40:return 264;case 38:return 265;case 33:return 266;case 34:return 267;case 36:return 268;case 35:return 269;case 20:return 280;case 145:return 281;case 144:return 282;case 44:return 283;case 19:return 284;case 112:return 290;case 113:return 291;case 114:return 292;case 115:return 293;case 116:return 294;case 117:return 295;case 118:return 296;case 119:return 297;case 120:return 298;case 121:return 299;case 122:return 300;case 123:return 301;case 124:return 302;case 125:return 303;case 126:return 304;case 127:return 305;case 128:return 306;case 129:return 307;case 130:return 308;case 131:return 309;case 132:return 310;case 133:return 311;case 134:return 312;case 135:return 313;case 136:return 314;case 96:return 320;case 97:return 321;case 98:return 322;case 99:return 323;case 100:return 324;case 101:return 325;case 102:return 326;case 103:return 327;case 104:return 328;case 105:return 329;case 110:return 330;case 111:return 331;case 106:return 332;case 109:return 333;case 107:return 334;case 16:return 340;case 17:return 341;case 18:return 342;case 91:return 343;case 93:return 348;default:return-1}},getModBits:function(win){var mod=0;if(win.keys[340])mod|=1;if(win.keys[341])mod|=2;if(win.keys[342])mod|=4;if(win.keys[343])mod|=8;return mod},onKeyPress:function(event){if(!GLFW.active||!GLFW.active.charFunc)return;if(event.ctrlKey||event.metaKey)return;var charCode=event.charCode;if(charCode==0||charCode>=0&&charCode<=31)return;wasmTable.get(GLFW.active.charFunc)(GLFW.active.id,charCode)},onKeyChanged:function(keyCode,status){if(!GLFW.active)return;var key=GLFW.DOMToGLFWKeyCode(keyCode);if(key==-1)return;var repeat=status&&GLFW.active.keys[key];GLFW.active.keys[key]=status;GLFW.active.domKeys[keyCode]=status;if(!GLFW.active.keyFunc)return;if(repeat)status=2;wasmTable.get(GLFW.active.keyFunc)(GLFW.active.id,key,keyCode,status,GLFW.getModBits(GLFW.active))},onGamepadConnected:function(event){GLFW.refreshJoysticks()},onGamepadDisconnected:function(event){GLFW.refreshJoysticks()},onKeydown:function(event){GLFW.onKeyChanged(event.keyCode,1);if(event.keyCode===8||event.keyCode===9){event.preventDefault()}},onKeyup:function(event){GLFW.onKeyChanged(event.keyCode,0)},onBlur:function(event){if(!GLFW.active)return;for(var i=0;i<GLFW.active.domKeys.length;++i){if(GLFW.active.domKeys[i]){GLFW.onKeyChanged(i,0)}}},onMousemove:function(event){if(!GLFW.active)return;Browser.calculateMouseEvent(event);if(event.target!=Module["canvas"]||!GLFW.active.cursorPosFunc)return;wasmTable.get(GLFW.active.cursorPosFunc)(GLFW.active.id,Browser.mouseX,Browser.mouseY)},DOMToGLFWMouseButton:function(event){var eventButton=event["button"];if(eventButton>0){if(eventButton==1){eventButton=2}else{eventButton=1}}return eventButton},onMouseenter:function(event){if(!GLFW.active)return;if(event.target!=Module["canvas"]||!GLFW.active.cursorEnterFunc)return;wasmTable.get(GLFW.active.cursorEnterFunc)(GLFW.active.id,1)},onMouseleave:function(event){if(!GLFW.active)return;if(event.target!=Module["canvas"]||!GLFW.active.cursorEnterFunc)return;wasmTable.get(GLFW.active.cursorEnterFunc)(GLFW.active.id,0)},onMouseButtonChanged:function(event,status){if(!GLFW.active)return;Browser.calculateMouseEvent(event);if(event.target!=Module["canvas"])return;var eventButton=GLFW.DOMToGLFWMouseButton(event);if(status==1){GLFW.active.buttons|=1<<eventButton;try{event.target.setCapture()}catch(e){}}else{GLFW.active.buttons&=~(1<<eventButton)}if(!GLFW.active.mouseButtonFunc)return;wasmTable.get(GLFW.active.mouseButtonFunc)(GLFW.active.id,eventButton,status,GLFW.getModBits(GLFW.active))},onMouseButtonDown:function(event){if(!GLFW.active)return;GLFW.onMouseButtonChanged(event,1)},onMouseButtonUp:function(event){if(!GLFW.active)return;GLFW.onMouseButtonChanged(event,0)},onMouseWheel:function(event){var delta=-Browser.getMouseWheelDelta(event);delta=delta==0?0:delta>0?Math.max(delta,1):Math.min(delta,-1);GLFW.wheelPos+=delta;if(!GLFW.active||!GLFW.active.scrollFunc||event.target!=Module["canvas"])return;var sx=0;var sy=0;if(event.type=="mousewheel"){sx=event.wheelDeltaX;sy=event.wheelDeltaY}else{sx=event.deltaX;sy=event.deltaY}wasmTable.get(GLFW.active.scrollFunc)(GLFW.active.id,sx,sy);event.preventDefault()},onCanvasResize:function(width,height){if(!GLFW.active)return;var resizeNeeded=true;if(document["fullscreen"]||document["fullScreen"]||document["mozFullScreen"]||document["webkitIsFullScreen"]){GLFW.active.storedX=GLFW.active.x;GLFW.active.storedY=GLFW.active.y;GLFW.active.storedWidth=GLFW.active.width;GLFW.active.storedHeight=GLFW.active.height;GLFW.active.x=GLFW.active.y=0;GLFW.active.width=screen.width;GLFW.active.height=screen.height;GLFW.active.fullscreen=true}else if(GLFW.active.fullscreen==true){GLFW.active.x=GLFW.active.storedX;GLFW.active.y=GLFW.active.storedY;GLFW.active.width=GLFW.active.storedWidth;GLFW.active.height=GLFW.active.storedHeight;GLFW.active.fullscreen=false}else if(GLFW.active.width!=width||GLFW.active.height!=height){GLFW.active.width=width;GLFW.active.height=height}else{resizeNeeded=false}if(resizeNeeded){Browser.setCanvasSize(GLFW.active.width,GLFW.active.height,true);GLFW.onWindowSizeChanged();GLFW.onFramebufferSizeChanged()}},onWindowSizeChanged:function(){if(!GLFW.active)return;if(!GLFW.active.windowSizeFunc)return;wasmTable.get(GLFW.active.windowSizeFunc)(GLFW.active.id,GLFW.active.width,GLFW.active.height)},onFramebufferSizeChanged:function(){if(!GLFW.active)return;if(!GLFW.active.framebufferSizeFunc)return;wasmTable.get(GLFW.active.framebufferSizeFunc)(GLFW.active.id,GLFW.active.width,GLFW.active.height)},getTime:function(){return _emscripten_get_now()/1e3},setWindowTitle:function(winid,title){var win=GLFW.WindowFromId(winid);if(!win)return;win.title=UTF8ToString(title);if(GLFW.active.id==win.id){document.title=win.title}},setJoystickCallback:function(cbfun){GLFW.joystickFunc=cbfun;GLFW.refreshJoysticks()},joys:{},lastGamepadState:null,lastGamepadStateFrame:null,refreshJoysticks:function(){if(Browser.mainLoop.currentFrameNumber!==GLFW.lastGamepadStateFrame||!Browser.mainLoop.currentFrameNumber){GLFW.lastGamepadState=navigator.getGamepads?navigator.getGamepads():navigator.webkitGetGamepads?navigator.webkitGetGamepads:null;GLFW.lastGamepadStateFrame=Browser.mainLoop.currentFrameNumber;for(var joy=0;joy<GLFW.lastGamepadState.length;++joy){var gamepad=GLFW.lastGamepadState[joy];if(gamepad){if(!GLFW.joys[joy]){console.log("glfw joystick connected:",joy);GLFW.joys[joy]={id:allocate(intArrayFromString(gamepad.id),ALLOC_NORMAL),buttonsCount:gamepad.buttons.length,axesCount:gamepad.axes.length,buttons:allocate(new Array(gamepad.buttons.length),ALLOC_NORMAL),axes:allocate(new Array(gamepad.axes.length*4),ALLOC_NORMAL)};if(GLFW.joystickFunc){wasmTable.get(GLFW.joystickFunc)(joy,262145)}}var data=GLFW.joys[joy];for(var i=0;i<gamepad.buttons.length;++i){setValue(data.buttons+i,gamepad.buttons[i].pressed,"i8")}for(var i=0;i<gamepad.axes.length;++i){setValue(data.axes+i*4,gamepad.axes[i],"float")}}else{if(GLFW.joys[joy]){console.log("glfw joystick disconnected",joy);if(GLFW.joystickFunc){wasmTable.get(GLFW.joystickFunc)(joy,262146)}_free(GLFW.joys[joy].id);_free(GLFW.joys[joy].buttons);_free(GLFW.joys[joy].axes);delete GLFW.joys[joy]}}}}},setKeyCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.keyFunc;win.keyFunc=cbfun;return prevcbfun},setCharCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.charFunc;win.charFunc=cbfun;return prevcbfun},setMouseButtonCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.mouseButtonFunc;win.mouseButtonFunc=cbfun;return prevcbfun},setCursorPosCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.cursorPosFunc;win.cursorPosFunc=cbfun;return prevcbfun},setScrollCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.scrollFunc;win.scrollFunc=cbfun;return prevcbfun},setDropCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.dropFunc;win.dropFunc=cbfun;return prevcbfun},onDrop:function(event){if(!GLFW.active||!GLFW.active.dropFunc)return;if(!event.dataTransfer||!event.dataTransfer.files||event.dataTransfer.files.length==0)return;event.preventDefault();var filenames=allocate(new Array(event.dataTransfer.files.length*4),ALLOC_NORMAL);var filenamesArray=[];var count=event.dataTransfer.files.length;var written=0;var drop_dir=".glfw_dropped_files";FS.createPath("/",drop_dir);function save(file){var path="/"+drop_dir+"/"+file.name.replace(/\//g,"_");var reader=new FileReader;reader.onloadend=function(e){if(reader.readyState!=2){++written;console.log("failed to read dropped file: "+file.name+": "+reader.error);return}var data=e.target.result;FS.writeFile(path,new Uint8Array(data));if(++written===count){wasmTable.get(GLFW.active.dropFunc)(GLFW.active.id,count,filenames);for(var i=0;i<filenamesArray.length;++i){_free(filenamesArray[i])}_free(filenames)}};reader.readAsArrayBuffer(file);var filename=allocate(intArrayFromString(path),ALLOC_NORMAL);filenamesArray.push(filename);setValue(filenames+i*4,filename,"i8*")}for(var i=0;i<count;++i){save(event.dataTransfer.files[i])}return false},onDragover:function(event){if(!GLFW.active||!GLFW.active.dropFunc)return;event.preventDefault();return false},setWindowSizeCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowSizeFunc;win.windowSizeFunc=cbfun;return prevcbfun},setWindowCloseCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowCloseFunc;win.windowCloseFunc=cbfun;return prevcbfun},setWindowRefreshCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowRefreshFunc;win.windowRefreshFunc=cbfun;return prevcbfun},onClickRequestPointerLock:function(e){if(!Browser.pointerLock&&Module["canvas"].requestPointerLock){Module["canvas"].requestPointerLock();e.preventDefault()}},setInputMode:function(winid,mode,value){var win=GLFW.WindowFromId(winid);if(!win)return;switch(mode){case 208897:{switch(value){case 212993:{win.inputModes[mode]=value;Module["canvas"].removeEventListener("click",GLFW.onClickRequestPointerLock,true);Module["canvas"].exitPointerLock();break}case 212994:{console.log("glfwSetInputMode called with GLFW_CURSOR_HIDDEN value not implemented.");break}case 212995:{win.inputModes[mode]=value;Module["canvas"].addEventListener("click",GLFW.onClickRequestPointerLock,true);Module["canvas"].requestPointerLock();break}default:{console.log("glfwSetInputMode called with unknown value parameter value: "+value+".");break}}break}case 208898:{console.log("glfwSetInputMode called with GLFW_STICKY_KEYS mode not implemented.");break}case 208899:{console.log("glfwSetInputMode called with GLFW_STICKY_MOUSE_BUTTONS mode not implemented.");break}default:{console.log("glfwSetInputMode called with unknown mode parameter value: "+mode+".");break}}},getKey:function(winid,key){var win=GLFW.WindowFromId(winid);if(!win)return 0;return win.keys[key]},getMouseButton:function(winid,button){var win=GLFW.WindowFromId(winid);if(!win)return 0;return(win.buttons&1<<button)>0},getCursorPos:function(winid,x,y){setValue(x,Browser.mouseX,"double");setValue(y,Browser.mouseY,"double")},getMousePos:function(winid,x,y){setValue(x,Browser.mouseX,"i32");setValue(y,Browser.mouseY,"i32")},setCursorPos:function(winid,x,y){},getWindowPos:function(winid,x,y){var wx=0;var wy=0;var win=GLFW.WindowFromId(winid);if(win){wx=win.x;wy=win.y}if(x){setValue(x,wx,"i32")}if(y){setValue(y,wy,"i32")}},setWindowPos:function(winid,x,y){var win=GLFW.WindowFromId(winid);if(!win)return;win.x=x;win.y=y},getWindowSize:function(winid,width,height){var ww=0;var wh=0;var win=GLFW.WindowFromId(winid);if(win){ww=win.width;wh=win.height}if(width){setValue(width,ww,"i32")}if(height){setValue(height,wh,"i32")}},setWindowSize:function(winid,width,height){var win=GLFW.WindowFromId(winid);if(!win)return;if(GLFW.active.id==win.id){if(width==screen.width&&height==screen.height){Browser.requestFullscreen()}else{Browser.exitFullscreen();Browser.setCanvasSize(width,height);win.width=width;win.height=height}}if(!win.windowSizeFunc)return;wasmTable.get(win.windowSizeFunc)(win.id,width,height)},createWindow:function(width,height,title,monitor,share){var i,id;for(i=0;i<GLFW.windows.length&&GLFW.windows[i]!==null;i++){}if(i>0)throw"glfwCreateWindow only supports one window at time currently";id=i+1;if(width<=0||height<=0)return 0;if(monitor){Browser.requestFullscreen()}else{Browser.setCanvasSize(width,height)}for(i=0;i<GLFW.windows.length&&GLFW.windows[i]==null;i++){}var useWebGL=GLFW.hints[139265]>0;if(i==GLFW.windows.length){if(useWebGL){var contextAttributes={antialias:GLFW.hints[135181]>1,depth:GLFW.hints[135173]>0,stencil:GLFW.hints[135174]>0,alpha:GLFW.hints[135172]>0};Module.ctx=Browser.createContext(Module["canvas"],true,true,contextAttributes)}else{Browser.init()}}if(!Module.ctx&&useWebGL)return 0;var win=new GLFW_Window(id,width,height,title,monitor,share);if(id-1==GLFW.windows.length){GLFW.windows.push(win)}else{GLFW.windows[id-1]=win}GLFW.active=win;return win.id},destroyWindow:function(winid){var win=GLFW.WindowFromId(winid);if(!win)return;if(win.windowCloseFunc)wasmTable.get(win.windowCloseFunc)(win.id);GLFW.windows[win.id-1]=null;if(GLFW.active.id==win.id)GLFW.active=null;for(var i=0;i<GLFW.windows.length;i++)if(GLFW.windows[i]!==null)return;Module.ctx=Browser.destroyContext(Module["canvas"],true,true)},swapBuffers:function(winid){},GLFW2ParamToGLFW3Param:function(param){var table={196609:0,196610:0,196611:0,196612:0,196613:0,196614:0,131073:0,131074:0,131075:0,131076:0,131077:135169,131078:135170,131079:135171,131080:135172,131081:135173,131082:135174,131083:135183,131084:135175,131085:135176,131086:135177,131087:135178,131088:135179,131089:135180,131090:0,131091:135181,131092:139266,131093:139267,131094:139270,131095:139271,131096:139272};return table[param]}};function _glfwCreateWindow(width,height,title,monitor,share){return GLFW.createWindow(width,height,title,monitor,share)}function _glfwDefaultWindowHints(){GLFW.hints=GLFW.defaultHints}function _glfwDestroyWindow(winid){return GLFW.destroyWindow(winid)}function _glfwGetPrimaryMonitor(){return 1}function _glfwGetTime(){return GLFW.getTime()-GLFW.initialTime}function _glfwGetVideoModes(monitor,count){setValue(count,0,"i32");return 0}function _glfwInit(){if(GLFW.windows)return 1;GLFW.initialTime=GLFW.getTime();GLFW.hints=GLFW.defaultHints;GLFW.windows=new Array;GLFW.active=null;window.addEventListener("gamepadconnected",GLFW.onGamepadConnected,true);window.addEventListener("gamepaddisconnected",GLFW.onGamepadDisconnected,true);window.addEventListener("keydown",GLFW.onKeydown,true);window.addEventListener("keypress",GLFW.onKeyPress,true);window.addEventListener("keyup",GLFW.onKeyup,true);window.addEventListener("blur",GLFW.onBlur,true);Module["canvas"].addEventListener("touchmove",GLFW.onMousemove,true);Module["canvas"].addEventListener("touchstart",GLFW.onMouseButtonDown,true);Module["canvas"].addEventListener("touchcancel",GLFW.onMouseButtonUp,true);Module["canvas"].addEventListener("touchend",GLFW.onMouseButtonUp,true);Module["canvas"].addEventListener("mousemove",GLFW.onMousemove,true);Module["canvas"].addEventListener("mousedown",GLFW.onMouseButtonDown,true);Module["canvas"].addEventListener("mouseup",GLFW.onMouseButtonUp,true);Module["canvas"].addEventListener("wheel",GLFW.onMouseWheel,true);Module["canvas"].addEventListener("mousewheel",GLFW.onMouseWheel,true);Module["canvas"].addEventListener("mouseenter",GLFW.onMouseenter,true);Module["canvas"].addEventListener("mouseleave",GLFW.onMouseleave,true);Module["canvas"].addEventListener("drop",GLFW.onDrop,true);Module["canvas"].addEventListener("dragover",GLFW.onDragover,true);Browser.resizeListeners.push(function(width,height){GLFW.onCanvasResize(width,height)});return 1}function _glfwMakeContextCurrent(winid){}function _glfwSetCharCallback(winid,cbfun){return GLFW.setCharCallback(winid,cbfun)}function _glfwSetCursorEnterCallback(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.cursorEnterFunc;win.cursorEnterFunc=cbfun;return prevcbfun}function _glfwSetCursorPosCallback(winid,cbfun){return GLFW.setCursorPosCallback(winid,cbfun)}function _glfwSetDropCallback(winid,cbfun){return GLFW.setDropCallback(winid,cbfun)}function _glfwSetErrorCallback(cbfun){var prevcbfun=GLFW.errorFunc;GLFW.errorFunc=cbfun;return prevcbfun}function _glfwSetKeyCallback(winid,cbfun){return GLFW.setKeyCallback(winid,cbfun)}function _glfwSetMouseButtonCallback(winid,cbfun){return GLFW.setMouseButtonCallback(winid,cbfun)}function _glfwSetScrollCallback(winid,cbfun){return GLFW.setScrollCallback(winid,cbfun)}function _glfwSetWindowFocusCallback(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowFocusFunc;win.windowFocusFunc=cbfun;return prevcbfun}function _glfwSetWindowIconifyCallback(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowIconifyFunc;win.windowIconifyFunc=cbfun;return prevcbfun}function _glfwSetWindowShouldClose(winid,value){var win=GLFW.WindowFromId(winid);if(!win)return;win.shouldClose=value}function _glfwSetWindowSizeCallback(winid,cbfun){return GLFW.setWindowSizeCallback(winid,cbfun)}function _glfwSwapBuffers(winid){GLFW.swapBuffers(winid)}function _glfwSwapInterval(interval){interval=Math.abs(interval);if(interval==0)_emscripten_set_main_loop_timing(0,0);else _emscripten_set_main_loop_timing(1,interval)}function _glfwTerminate(){window.removeEventListener("gamepadconnected",GLFW.onGamepadConnected,true);window.removeEventListener("gamepaddisconnected",GLFW.onGamepadDisconnected,true);window.removeEventListener("keydown",GLFW.onKeydown,true);window.removeEventListener("keypress",GLFW.onKeyPress,true);window.removeEventListener("keyup",GLFW.onKeyup,true);window.removeEventListener("blur",GLFW.onBlur,true);Module["canvas"].removeEventListener("touchmove",GLFW.onMousemove,true);Module["canvas"].removeEventListener("touchstart",GLFW.onMouseButtonDown,true);Module["canvas"].removeEventListener("touchcancel",GLFW.onMouseButtonUp,true);Module["canvas"].removeEventListener("touchend",GLFW.onMouseButtonUp,true);Module["canvas"].removeEventListener("mousemove",GLFW.onMousemove,true);Module["canvas"].removeEventListener("mousedown",GLFW.onMouseButtonDown,true);Module["canvas"].removeEventListener("mouseup",GLFW.onMouseButtonUp,true);Module["canvas"].removeEventListener("wheel",GLFW.onMouseWheel,true);Module["canvas"].removeEventListener("mousewheel",GLFW.onMouseWheel,true);Module["canvas"].removeEventListener("mouseenter",GLFW.onMouseenter,true);Module["canvas"].removeEventListener("mouseleave",GLFW.onMouseleave,true);Module["canvas"].removeEventListener("drop",GLFW.onDrop,true);Module["canvas"].removeEventListener("dragover",GLFW.onDragover,true);Module["canvas"].width=Module["canvas"].height=1;GLFW.windows=null;GLFW.active=null}function _glfwWindowHint(target,hint){GLFW.hints[target]=hint}function _time(ptr){var ret=Date.now()/1e3|0;if(ptr){HEAP32[ptr>>2]=ret}return ret}var FSNode=function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev};var readMode=292|73;var writeMode=146;Object.defineProperties(FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(val){val?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===writeMode},set:function(val){val?this.mode|=writeMode:this.mode&=~writeMode}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}});FS.FSNode=FSNode;FS.staticInit();Module["FS_createPath"]=FS.createPath;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createDevice"]=FS.createDevice;Module["FS_unlink"]=FS.unlink;var GLctx;for(var i=0;i<32;++i)tempFixedLengthArray.push(new Array(i));var miniTempWebGLFloatBuffersStorage=new Float32Array(288);for(var i=0;i<288;++i){miniTempWebGLFloatBuffers[i]=miniTempWebGLFloatBuffersStorage.subarray(0,i+1)}var __miniTempWebGLIntBuffersStorage=new Int32Array(288);for(var i=0;i<288;++i){__miniTempWebGLIntBuffers[i]=__miniTempWebGLIntBuffersStorage.subarray(0,i+1)}Module["requestFullscreen"]=function Module_requestFullscreen(lockPointer,resizeCanvas){Browser.requestFullscreen(lockPointer,resizeCanvas)};Module["requestAnimationFrame"]=function Module_requestAnimationFrame(func){Browser.requestAnimationFrame(func)};Module["setCanvasSize"]=function Module_setCanvasSize(width,height,noUpdates){Browser.setCanvasSize(width,height,noUpdates)};Module["pauseMainLoop"]=function Module_pauseMainLoop(){Browser.mainLoop.pause()};Module["resumeMainLoop"]=function Module_resumeMainLoop(){Browser.mainLoop.resume()};Module["getUserMedia"]=function Module_getUserMedia(){Browser.getUserMedia()};Module["createContext"]=function Module_createContext(canvas,useWebGL,setInModule,webGLContextAttributes){return Browser.createContext(canvas,useWebGL,setInModule,webGLContextAttributes)};function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var asmLibraryArg={"i":___assert_fail,"S":___sys_fcntl64,"Ya":___sys_ioctl,"Za":___sys_open,"wa":_emscripten_exit_pointerlock,"je":_emscripten_get_element_css_size,"ee":_emscripten_get_gamepad_status,"fe":_emscripten_get_num_gamepads,"Kd":_emscripten_glActiveTexture,"Jd":_emscripten_glAttachShader,"_d":_emscripten_glBeginQueryEXT,"Id":_emscripten_glBindAttribLocation,"Hd":_emscripten_glBindBuffer,"Gd":_emscripten_glBindFramebuffer,"Fd":_emscripten_glBindRenderbuffer,"Ed":_emscripten_glBindTexture,"Sd":_emscripten_glBindVertexArrayOES,"Dd":_emscripten_glBlendColor,"Cd":_emscripten_glBlendEquation,"Bd":_emscripten_glBlendEquationSeparate,"Ad":_emscripten_glBlendFunc,"zd":_emscripten_glBlendFuncSeparate,"yd":_emscripten_glBufferData,"xd":_emscripten_glBufferSubData,"wd":_emscripten_glCheckFramebufferStatus,"vd":_emscripten_glClear,"ud":_emscripten_glClearColor,"td":_emscripten_glClearDepthf,"sd":_emscripten_glClearStencil,"rd":_emscripten_glColorMask,"qd":_emscripten_glCompileShader,"pd":_emscripten_glCompressedTexImage2D,"od":_emscripten_glCompressedTexSubImage2D,"nd":_emscripten_glCopyTexImage2D,"md":_emscripten_glCopyTexSubImage2D,"ld":_emscripten_glCreateProgram,"kd":_emscripten_glCreateShader,"jd":_emscripten_glCullFace,"id":_emscripten_glDeleteBuffers,"hd":_emscripten_glDeleteFramebuffers,"gd":_emscripten_glDeleteProgram,"ae":_emscripten_glDeleteQueriesEXT,"fd":_emscripten_glDeleteRenderbuffers,"ed":_emscripten_glDeleteShader,"dd":_emscripten_glDeleteTextures,"Rd":_emscripten_glDeleteVertexArraysOES,"cd":_emscripten_glDepthFunc,"bd":_emscripten_glDepthMask,"ad":_emscripten_glDepthRangef,"$c":_emscripten_glDetachShader,"_c":_emscripten_glDisable,"Zc":_emscripten_glDisableVertexAttribArray,"Yc":_emscripten_glDrawArrays,"Nd":_emscripten_glDrawArraysInstancedANGLE,"Od":_emscripten_glDrawBuffersWEBGL,"Xc":_emscripten_glDrawElements,"Md":_emscripten_glDrawElementsInstancedANGLE,"Wc":_emscripten_glEnable,"Vc":_emscripten_glEnableVertexAttribArray,"Zd":_emscripten_glEndQueryEXT,"Uc":_emscripten_glFinish,"Tc":_emscripten_glFlush,"Sc":_emscripten_glFramebufferRenderbuffer,"Rc":_emscripten_glFramebufferTexture2D,"Qc":_emscripten_glFrontFace,"Pc":_emscripten_glGenBuffers,"Nc":_emscripten_glGenFramebuffers,"be":_emscripten_glGenQueriesEXT,"Mc":_emscripten_glGenRenderbuffers,"Lc":_emscripten_glGenTextures,"Qd":_emscripten_glGenVertexArraysOES,"Oc":_emscripten_glGenerateMipmap,"Kc":_emscripten_glGetActiveAttrib,"Jc":_emscripten_glGetActiveUniform,"Ic":_emscripten_glGetAttachedShaders,"Hc":_emscripten_glGetAttribLocation,"Gc":_emscripten_glGetBooleanv,"Ec":_emscripten_glGetBufferParameteriv,"Dc":_emscripten_glGetError,"Cc":_emscripten_glGetFloatv,"Bc":_emscripten_glGetFramebufferAttachmentParameteriv,"Ac":_emscripten_glGetIntegerv,"yc":_emscripten_glGetProgramInfoLog,"zc":_emscripten_glGetProgramiv,"Ud":_emscripten_glGetQueryObjecti64vEXT,"Wd":_emscripten_glGetQueryObjectivEXT,"Td":_emscripten_glGetQueryObjectui64vEXT,"Vd":_emscripten_glGetQueryObjectuivEXT,"Xd":_emscripten_glGetQueryivEXT,"xc":_emscripten_glGetRenderbufferParameteriv,"vc":_emscripten_glGetShaderInfoLog,"uc":_emscripten_glGetShaderPrecisionFormat,"tc":_emscripten_glGetShaderSource,"wc":_emscripten_glGetShaderiv,"sc":_emscripten_glGetString,"rc":_emscripten_glGetTexParameterfv,"qc":_emscripten_glGetTexParameteriv,"nc":_emscripten_glGetUniformLocation,"pc":_emscripten_glGetUniformfv,"oc":_emscripten_glGetUniformiv,"jc":_emscripten_glGetVertexAttribPointerv,"mc":_emscripten_glGetVertexAttribfv,"lc":_emscripten_glGetVertexAttribiv,"ic":_emscripten_glHint,"hc":_emscripten_glIsBuffer,"gc":_emscripten_glIsEnabled,"fc":_emscripten_glIsFramebuffer,"ec":_emscripten_glIsProgram,"$d":_emscripten_glIsQueryEXT,"dc":_emscripten_glIsRenderbuffer,"cc":_emscripten_glIsShader,"bc":_emscripten_glIsTexture,"Pd":_emscripten_glIsVertexArrayOES,"ac":_emscripten_glLineWidth,"_b":_emscripten_glLinkProgram,"Zb":_emscripten_glPixelStorei,"Yb":_emscripten_glPolygonOffset,"Yd":_emscripten_glQueryCounterEXT,"Xb":_emscripten_glReadPixels,"Wb":_emscripten_glReleaseShaderCompiler,"Vb":_emscripten_glRenderbufferStorage,"Ub":_emscripten_glSampleCoverage,"Tb":_emscripten_glScissor,"Sb":_emscripten_glShaderBinary,"Rb":_emscripten_glShaderSource,"Qb":_emscripten_glStencilFunc,"Pb":_emscripten_glStencilFuncSeparate,"Ob":_emscripten_glStencilMask,"Nb":_emscripten_glStencilMaskSeparate,"Mb":_emscripten_glStencilOp,"Lb":_emscripten_glStencilOpSeparate,"Kb":_emscripten_glTexImage2D,"Jb":_emscripten_glTexParameterf,"Ib":_emscripten_glTexParameterfv,"Hb":_emscripten_glTexParameteri,"Gb":_emscripten_glTexParameteriv,"Fb":_emscripten_glTexSubImage2D,"Eb":_emscripten_glUniform1f,"Db":_emscripten_glUniform1fv,"Cb":_emscripten_glUniform1i,"Bb":_emscripten_glUniform1iv,"Ab":_emscripten_glUniform2f,"zb":_emscripten_glUniform2fv,"yb":_emscripten_glUniform2i,"xb":_emscripten_glUniform2iv,"wb":_emscripten_glUniform3f,"vb":_emscripten_glUniform3fv,"ub":_emscripten_glUniform3i,"tb":_emscripten_glUniform3iv,"sb":_emscripten_glUniform4f,"rb":_emscripten_glUniform4fv,"qb":_emscripten_glUniform4i,"pb":_emscripten_glUniform4iv,"ob":_emscripten_glUniformMatrix2fv,"nb":_emscripten_glUniformMatrix3fv,"lb":_emscripten_glUniformMatrix4fv,"kb":_emscripten_glUseProgram,"jb":_emscripten_glValidateProgram,"ib":_emscripten_glVertexAttrib1f,"hb":_emscripten_glVertexAttrib1fv,"gb":_emscripten_glVertexAttrib2f,"fb":_emscripten_glVertexAttrib2fv,"eb":_emscripten_glVertexAttrib3f,"db":_emscripten_glVertexAttrib3fv,"cb":_emscripten_glVertexAttrib4f,"ab":_emscripten_glVertexAttrib4fv,"Ld":_emscripten_glVertexAttribDivisorANGLE,"$a":_emscripten_glVertexAttribPointer,"_a":_emscripten_glViewport,"Ta":_emscripten_memcpy_big,"xa":_emscripten_request_pointerlock,"Ua":_emscripten_resize_heap,"Y":_emscripten_run_script,"ge":_emscripten_sample_gamepad_data,"ta":_emscripten_set_click_callback_on_thread,"va":_emscripten_set_fullscreenchange_callback_on_thread,"oa":_emscripten_set_gamepadconnected_callback_on_thread,"na":_emscripten_set_gamepaddisconnected_callback_on_thread,"ua":_emscripten_set_keydown_callback_on_thread,"me":_emscripten_set_main_loop,"pa":_emscripten_set_touchcancel_callback_on_thread,"ra":_emscripten_set_touchend_callback_on_thread,"qa":_emscripten_set_touchmove_callback_on_thread,"sa":_emscripten_set_touchstart_callback_on_thread,"Wa":_emscripten_thread_sleep,"ce":_exit,"T":_fd_close,"Xa":_fd_read,"Sa":_fd_seek,"R":_fd_write,"t":_glActiveTexture,"M":_glAttachShader,"p":_glBindAttribLocation,"a":_glBindBuffer,"n":_glBindFramebuffer,"O":_glBindRenderbuffer,"d":_glBindTexture,"bb":_glBlendFunc,"e":_glBufferData,"F":_glBufferSubData,"Ka":_glCheckFramebufferStatus,"G":_glClear,"U":_glClearColor,"Qa":_glClearDepthf,"Da":_glCompileShader,"Oa":_glCompressedTexImage2D,"Ba":_glCreateProgram,"Fa":_glCreateShader,"Va":_glCullFace,"q":_glDeleteBuffers,"$b":_glDeleteFramebuffers,"P":_glDeleteProgram,"kc":_glDeleteRenderbuffers,"v":_glDeleteShader,"Q":_glDeleteTextures,"mb":_glDepthFunc,"W":_glDepthMask,"w":_glDetachShader,"x":_glDisable,"k":_glDisableVertexAttribArray,"H":_glDrawArrays,"X":_glDrawElements,"s":_glEnable,"b":_glEnableVertexAttribArray,"B":_glFramebufferRenderbuffer,"u":_glFramebufferTexture2D,"Ra":_glFrontFace,"f":_glGenBuffers,"La":_glGenFramebuffers,"Na":_glGenRenderbuffers,"E":_glGenTextures,"Ga":_glGetActiveUniform,"m":_glGetAttribLocation,"Fc":_glGetFloatv,"V":_glGetFramebufferAttachmentParameteriv,"za":_glGetProgramInfoLog,"z":_glGetProgramiv,"Ca":_glGetShaderInfoLog,"N":_glGetShaderiv,"r":_glGetString,"h":_glGetUniformLocation,"Aa":_glLinkProgram,"Pa":_glPixelStorei,"Ha":_glReadPixels,"Ma":_glRenderbufferStorage,"Ea":_glShaderSource,"D":_glTexImage2D,"g":_glTexParameteri,"J":_glUniform1i,"ya":_glUniform1iv,"y":_glUniform4f,"C":_glUniformMatrix4fv,"l":_glUseProgram,"Ia":_glVertexAttrib2f,"Ja":_glVertexAttrib3f,"A":_glVertexAttrib4f,"c":_glVertexAttribPointer,"le":_glViewport,"K":_glfwCreateWindow,"ka":_glfwDefaultWindowHints,"ie":_glfwDestroyWindow,"L":_glfwGetPrimaryMonitor,"o":_glfwGetTime,"ja":_glfwGetVideoModes,"la":_glfwInit,"_":_glfwMakeContextCurrent,"da":_glfwSetCharCallback,"$":_glfwSetCursorEnterCallback,"ba":_glfwSetCursorPosCallback,"fa":_glfwSetDropCallback,"ma":_glfwSetErrorCallback,"ea":_glfwSetKeyCallback,"ca":_glfwSetMouseButtonCallback,"aa":_glfwSetScrollCallback,"ga":_glfwSetWindowFocusCallback,"ha":_glfwSetWindowIconifyCallback,"de":_glfwSetWindowShouldClose,"ia":_glfwSetWindowSizeCallback,"he":_glfwSwapBuffers,"Z":_glfwSwapInterval,"I":_glfwTerminate,"j":_glfwWindowHint,"ke":_time};var asm=createWasm();var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["oe"]).apply(null,arguments)};var _main=Module["_main"]=function(){return(_main=Module["_main"]=Module["asm"]["pe"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["re"]).apply(null,arguments)};var _free=Module["_free"]=function(){return(_free=Module["_free"]=Module["asm"]["se"]).apply(null,arguments)};var ___errno_location=Module["___errno_location"]=function(){return(___errno_location=Module["___errno_location"]=Module["asm"]["te"]).apply(null,arguments)};var stackAlloc=Module["stackAlloc"]=function(){return(stackAlloc=Module["stackAlloc"]=Module["asm"]["ue"]).apply(null,arguments)};Module["addRunDependency"]=addRunDependency;Module["removeRunDependency"]=removeRunDependency;Module["FS_createPath"]=FS.createPath;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createDevice"]=FS.createDevice;Module["FS_unlink"]=FS.unlink;var calledRun;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}var calledMain=false;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args){var entryFunction=Module["_main"];var argc=0;var argv=0;try{var ret=entryFunction(argc,argv);exit(ret,true)}catch(e){if(e instanceof ExitStatus){return}else if(e=="unwind"){noExitRuntime=true;return}else{var toLog=e;if(e&&typeof e==="object"&&e.stack){toLog=[e,e.stack]}err("exception thrown: "+toLog);quit_(1,e)}}finally{calledMain=true}}function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(shouldRunNow)callMain(args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}Module["run"]=run;function exit(status,implicit){if(implicit&&noExitRuntime&&status===0){return}if(noExitRuntime){}else{EXITSTATUS=status;exitRuntime();if(Module["onExit"])Module["onExit"](status);ABORT=true}quit_(status,new ExitStatus(status))}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}var shouldRunNow=true;if(Module["noInitialRun"])shouldRunNow=false;run();
diff --git a/examples/web/models/models_skybox.wasm b/examples/web/models/models_skybox.wasm
deleted file mode 100644
index 3a22218..0000000
--- a/examples/web/models/models_skybox.wasm
+++ /dev/null
Binary files differ
diff --git a/examples/web/models/models_waving_cubes.c b/examples/web/models/models_waving_cubes.c
deleted file mode 100644
index 067046d..0000000
--- a/examples/web/models/models_waving_cubes.c
+++ /dev/null
@@ -1,143 +0,0 @@
-/*******************************************************************************************
-*
-* raylib [models] example - Waving cubes
-*
-* This example has been created using raylib 2.5 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
-*
-* Example contributed by Codecat (@codecat) and reviewed by Ramon Santamaria (@raysan5)
-*
-* Copyright (c) 2019 Codecat (@codecat) and Ramon Santamaria (@raysan5)
-*
-********************************************************************************************/
-
-#include "raylib.h"
-
-#include <math.h>
-
-#if defined(PLATFORM_WEB)
- #include <emscripten/emscripten.h>
-#endif
-
-//----------------------------------------------------------------------------------
-// Global Variables Definition
-//----------------------------------------------------------------------------------
-const int screenWidth = 800;
-const int screenHeight = 450;
-
-static Camera3D camera = { 0 };
-
-// Specify the amount of blocks in each direction
-const int numBlocks = 15;
-
-//----------------------------------------------------------------------------------
-// Module Functions Declaration
-//----------------------------------------------------------------------------------
-void UpdateDrawFrame(void); // Update and Draw one frame
-
-//----------------------------------------------------------------------------------
-// Program Main Entry Point
-//----------------------------------------------------------------------------------
-int main()
-{
- // Initialization
- //--------------------------------------------------------------------------------------
- const int screenWidth = 800;
- const int screenHeight = 450;
-
- InitWindow(screenWidth, screenHeight, "raylib [models] example - waving cubes");
-
- // Initialize the camera
- camera.position = (Vector3){ 30.0f, 20.0f, 30.0f };
- camera.target = (Vector3){ 0.0f, 0.0f, 0.0f };
- camera.up = (Vector3){ 0.0f, 1.0f, 0.0f };
- camera.fovy = 70.0f;
- camera.projection = CAMERA_PERSPECTIVE;
-
-#if defined(PLATFORM_WEB)
- emscripten_set_main_loop(UpdateDrawFrame, 60, 1);
-#else
- SetTargetFPS(60); // Set our game to run at 60 frames-per-second
- //--------------------------------------------------------------------------------------
-
- // Main game loop
- while (!WindowShouldClose()) // Detect window close button or ESC key
- {
- UpdateDrawFrame();
- }
-#endif
-
- // De-Initialization
- //--------------------------------------------------------------------------------------
- CloseWindow(); // Close window and OpenGL context
- //--------------------------------------------------------------------------------------
-
- return 0;
-}
-
-//----------------------------------------------------------------------------------
-// Module Functions Definitions
-//----------------------------------------------------------------------------------
-void UpdateDrawFrame(void)
-{
- // Update
- //----------------------------------------------------------------------------------
- double time = GetTime();
-
- // Calculate time scale for cube position and size
- float scale = (2.0f + (float)sin(time))*0.7f;
-
- // Move camera around the scene
- double cameraTime = time*0.3;
- camera.position.x = (float)cos(cameraTime)*40.0f;
- camera.position.z = (float)sin(cameraTime)*40.0f;
- //----------------------------------------------------------------------------------
-
- // Draw
- //----------------------------------------------------------------------------------
- BeginDrawing();
-
- ClearBackground(RAYWHITE);
-
- BeginMode3D(camera);
-
- DrawGrid(10, 5.0f);
-
- for (int x = 0; x < numBlocks; x++)
- {
- for (int y = 0; y < numBlocks; y++)
- {
- for (int z = 0; z < numBlocks; z++)
- {
- // Scale of the blocks depends on x/y/z positions
- float blockScale = (x + y + z)/30.0f;
-
- // Scatter makes the waving effect by adding blockScale over time
- float scatter = sinf(blockScale*20.0f + (float)(time*4.0f));
-
- // Calculate the cube position
- Vector3 cubePos = {
- (float)(x - numBlocks/2)*(scale*3.0f) + scatter,
- (float)(y - numBlocks/2)*(scale*2.0f) + scatter,
- (float)(z - numBlocks/2)*(scale*3.0f) + scatter
- };
-
- // Pick a color with a hue depending on cube position for the rainbow color effect
- Color cubeColor = ColorFromHSV((float)(((x + y + z)*18)%360), 0.75f, 0.9f);
-
- // Calculate cube size
- float cubeSize = (2.4f - scale)*blockScale;
-
- // And finally, draw the cube!
- DrawCube(cubePos, cubeSize, cubeSize, cubeSize, cubeColor);
- }
- }
- }
-
- EndMode3D();
-
- DrawFPS(10, 10);
-
- EndDrawing();
- //----------------------------------------------------------------------------------
-} \ No newline at end of file
diff --git a/examples/web/models/models_waving_cubes.html b/examples/web/models/models_waving_cubes.html
deleted file mode 100644
index d77bf1f..0000000
--- a/examples/web/models/models_waving_cubes.html
+++ /dev/null
@@ -1 +0,0 @@
-<!doctypehtml><html lang=en-us><head><meta charset=utf-8><meta content="text/html; charset=utf-8"http-equiv=Content-Type><title>raylib HTML5 GAME</title><meta content="raylib HTML5 GAME"name=title><meta content="New HTML5 videogame, developed using raylib videogames library"name=description><meta content="raylib, games, html5, programming, C, C++, library, learn, videogames"name=keywords><meta content="width=device-width"name=viewport><meta content="raylib HTML5 GAME"property=og:title><meta content=image/png property=og:image:type><meta content=https://www.raylib.com/common/img/raylib_logo.png property=og:image><meta content=raylib.com property=og:site_name><meta content=https://www.raylib.com/games.html property=og:url><meta content="New HTML5 videogame, developed using raylib videogames library"property=og:description><meta content=summary name=twitter:card><meta content=@raysan5 name=twitter:site><meta content="raylib HTML5 GAME"name=twitter:title><meta content=https://www.raylib.com/common/raylib_logo.png name=twitter:image><meta content=https://www.raylib.com/games.html name=twitter:url><meta content="New HTML5 videogame, developed using raylib videogames library"name=twitter:description><link href=https://www.raylib.com/favicon.ico rel="shortcut icon"><style>body{font-family:arial;margin:0;padding:none}#header{width:100%;height:80px;background-color:#888}#logo{width:64px;height:64px;float:left;position:relative;margin:10px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAAlC+aJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjExR/NCNwAAA7JJREFUaEPtk0FyWzEMQ+37X7fZhxX4YY3AD1OKF1nkzTRlSBCCLeVBnvl/AUdaELOunPno1kts1kixdtEZKVs+xIxebBkZsVknn/L5nFGDLR8T4zVC9fX19S/+tTFijrYK4jUjbPUtqBHpnEE6PkZD7jQZV8n5Recw1XQKciZuPaEtR6UjNs5ENVGMsBVqpPtER0ZMOhpyp8m4YL4OjD9yxsyZxnQycfMJETNSzsRE1+dihK3YMiJmpHTW3xpmXPC6BXlCHfqnBlsjY5hxf/6EVEOM2BTEi0fYCX4ONSI6Kq3Blg/prIOMq2CsRur4KQ0x64SdjOufEDEdHZGOhmz5RDHCVqhRuQ86YsVskbc+GXchLiHnFyYH+UigQDVGnImbT8hwFkgLg2qiM8JO6Ylx1FNLa3DmYwqCTsZd4BPqGJG7MwKzpeiWKTKxXkLMVE3MSOmsdwxLH6Rd/wCCLSNDx6djeKfJuArGeoYamRHpaEjnCBYZVy8hZqo2GI36qPjsiOiMsBXGcev4Mx9TLGTchbgEjN/uz6jGrBvDjg+LTNx8Qp2CbG2xMKgmOiPslJ4Yxx+eSnSkzlosZNwFPiHl7FRTkLNRJm4+IeVM0ymIH42wE/wcKalQI4MRl4EW3p6VcRWMua8F6WjIlqZDxvVPiHQ6CjVbYkV9ohhhp/Rk1wiYgpyJ78i4CsZbjkb8Qx+ihvzu3RPaKogZkY6GlEeMsKdPSOFIC8VoOusg44L5c+T8ouOoGhWbdWJ8tMi4egkxo4hoh2yNTGf3iIyr5Lyic4bRENXo+lvDjAt4C1Hk/OKtUaAj0+n4dMSZ2D+hrYJsaYh2SClG2jV9kJKKzhlGQ1SsW299Mq6C8dYZHTExo8fzieI5ivipYnYy7nwJqGKmOYyRwfiUBXITfh5qSHRGWEkfqJqURgvsdHyWYv7Ko8DnYYegk3EB00cxprdrJRzFd7YQzawu8L1GMTYS/KpPaAFTkIn1EmJmspJSs5xBzSyGhlkBmlxfNFiP5mw4wlbMh4F5Ddxp5jNINBdCEz9zPOC1zD7Q0HBdmXndwv0TMtydEdzlWJT4VZ8Qt9Qn4/onxMIwa5ZYGJU5yufBiCjwE50AGjLCVuS8Yt4H7OgZLKK5EKOsLviEWJSL/+0uMi7gLUSBseYwqEbXvSHCec1CJvZPyHCmYQffaBBfOTCGHM2aEbZi1+gO1XTWVXMnzrhAn5DSOZVsiQlHnSITKzGj6DeTcZWc/3oy7h9//PF4PL4BlvsWrb6RE+oAAAAASUVORK5CYII=)}.emscripten{padding-right:0;margin-left:auto;margin-right:auto;display:block}div.emscripten{text-align:center}div.emscripten_border{border:1px solid #000}canvas.emscripten{border:0 none;background:#000;width:100%}.spinner{height:30px;width:30px;margin:0;margin-top:20px;margin-left:20px;display:inline-block;vertical-align:top;-webkit-animation:rotation .8s linear infinite;-moz-animation:rotation .8s linear infinite;-o-animation:rotation .8s linear infinite;animation:rotation .8s linear infinite;border-left:5px solid #000;border-right:5px solid #000;border-bottom:5px solid #000;border-top:5px solid red;border-radius:100%;background-color:#f5f5f5}@-webkit-keyframes rotation{from{-webkit-transform:rotate(0)}to{-webkit-transform:rotate(360deg)}}@-moz-keyframes rotation{from{-moz-transform:rotate(0)}to{-moz-transform:rotate(360deg)}}@-o-keyframes rotation{from{-o-transform:rotate(0)}to{-o-transform:rotate(360deg)}}@keyframes rotation{from{transform:rotate(0)}to{transform:rotate(360deg)}}#status{display:inline-block;vertical-align:top;margin-top:30px;margin-left:20px;font-weight:700;color:#282828}#progress{height:0;width:0}#controls{display:inline-block;float:right;vertical-align:top;margin-top:15px;margin-right:20px}#output{width:100%;height:140px;margin:0 auto;margin-top:10px;display:block;background-color:#000;color:#25ae26;font-family:'Lucida Console',Monaco,monospace;outline:0}input[type=button]{background-color:#d3d3d3;border:4px solid #a9a9a9;color:#000;text-decoration:none;cursor:pointer;width:140px;height:50px}input[type=button]:hover{background-color:#f5f5f5ff;border-color:#000}</style></head><body><div id=header><a href=https://www.raylib.com id=logo></a><div class=spinner id=spinner></div><div class=emscripten id=status>Downloading...</div><span id=controls><span><input onclick=Module.requestFullscreen(!1,!1) type=button value="🖵 FULLSCREEN"></span><span><input onclick=toggleAudio() type=button value="🔇 SUSPEND"id=btn-audio></span></span><div class=emscripten><progress hidden id=progress max=100 value=0></progress></div></div><div class=emscripten_border><canvas class=emscripten id=canvas oncontextmenu=event.preventDefault() tabindex=-1></canvas></div><textarea id=output rows=8></textarea><script src=https://cdn.jsdelivr.net/gh/eligrey/FileSaver.js/dist/FileSaver.min.js></script><script>function saveFileFromMEMFSToDisk(e,a){var t,i=/^((?!chrome|android).)*safari/i.test(navigator.userAgent),o=FS.readFile(e);t=i?new Blob([o.buffer],{type:"application/octet-stream"}):new Blob([o.buffer],{type:"application/octet-binary"}),saveAs(t,a)}</script><script>var statusElement=document.querySelector("#status"),progressElement=document.querySelector("#progress"),spinnerElement=document.querySelector("#spinner"),Module={preRun:[],postRun:[],print:function(){var e=document.querySelector("#output");return e&&(e.value=""),function(t){arguments.length>1&&(t=Array.prototype.slice.call(arguments).join(" ")),console.log(t),e&&(e.value+=t+"\n",e.scrollTop=e.scrollHeight)}}(),printErr:function(e){arguments.length>1&&(e=Array.prototype.slice.call(arguments).join(" ")),console.error(e)},canvas:function(){var e=document.querySelector("#canvas");return e.addEventListener("webglcontextlost",(function(e){alert("WebGL context lost. You will need to reload the page."),e.preventDefault()}),!1),e}(),setStatus:function(e){if(Module.setStatus.last||(Module.setStatus.last={time:Date.now(),text:""}),e!==Module.setStatus.last.text){var t=e.match(/([^(]+)\((\d+(\.\d+)?)\/(\d+)\)/),n=Date.now();t&&n-Module.setStatus.last.time<30||(Module.setStatus.last.time=n,Module.setStatus.last.text=e,t?(e=t[1],progressElement.value=100*parseInt(t[2]),progressElement.max=100*parseInt(t[4]),progressElement.hidden=!0,spinnerElement.hidden=!1):(progressElement.value=null,progressElement.max=null,progressElement.hidden=!0,e||(spinnerElement.style.display="none")),statusElement.innerHTML=e)}},totalDependencies:0,monitorRunDependencies:function(e){this.totalDependencies=Math.max(this.totalDependencies,e),Module.setStatus(e?"Preparing... ("+(this.totalDependencies-e)+"/"+this.totalDependencies+")":"All downloads complete.")}};Module.setStatus("Downloading..."),window.onerror=function(){Module.setStatus("Exception thrown, see JavaScript console"),spinnerElement.style.display="none",Module.setStatus=function(e){e&&Module.printErr("[post-exception status] "+e)}}</script><script>var audioBtn=document.querySelector("#btn-audio");const audioContexList=[];function toggleAudio(){var t=!1;audioContexList.forEach(e=>{"suspended"==e.state?(e.resume(),t=!0):"running"==e.state&&e.suspend()}),audioBtn.value=t?"🔇 SUSPEND":"🔈 RESUME"}self.AudioContext=new Proxy(self.AudioContext,{construct(t,e){const n=new t(...e);return audioContexList.push(n),"suspended"==n.state&&(audioBtn.value="🔈 RESUME"),n}})</script><script src=models_waving_cubes.js async></script></body></html> \ No newline at end of file
diff --git a/examples/web/models/models_waving_cubes.js b/examples/web/models/models_waving_cubes.js
deleted file mode 100644
index e6aab8b..0000000
--- a/examples/web/models/models_waving_cubes.js
+++ /dev/null
@@ -1 +0,0 @@
-var Module=typeof Module!=="undefined"?Module:{};var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram="./this.program";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window==="object";ENVIRONMENT_IS_WORKER=typeof importScripts==="function";ENVIRONMENT_IS_NODE=typeof process==="object"&&typeof process.versions==="object"&&typeof process.versions.node==="string";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require("path").dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require("fs");if(!nodePath)nodePath=require("path");filename=nodePath["normalize"](filename);return nodeFS["readFileSync"](filename,binary?null:"utf8")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);if(typeof module!=="undefined"){module["exports"]=Module}process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",abort);quit_=function(status){process["exit"](status)};Module["inspect"]=function(){return"[Emscripten Module object]"}}else if(ENVIRONMENT_IS_SHELL){if(typeof read!="undefined"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer==="function"){return new Uint8Array(readbuffer(f))}data=read(f,"binary");assert(typeof data==="object");return data};if(typeof scriptArgs!="undefined"){arguments_=scriptArgs}else if(typeof arguments!="undefined"){arguments_=arguments}if(typeof quit==="function"){quit_=function(status){quit(status)}}if(typeof print!=="undefined"){if(typeof console==="undefined")console={};console.log=print;console.warn=console.error=typeof printErr!=="undefined"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!=="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf("/")+1)}else{scriptDirectory=""}{read_=function(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=function(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var STACK_ALIGN=16;function alignMemory(size,factor){if(!factor)factor=STACK_ALIGN;return Math.ceil(size/factor)*factor}function warnOnce(text){if(!warnOnce.shown)warnOnce.shown={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;err(text)}}var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime=Module["noExitRuntime"]||true;if(typeof WebAssembly!=="object"){abort("no native wasm support detected")}function setValue(ptr,value,type,noSafe){type=type||"i8";if(type.charAt(type.length-1)==="*")type="i32";switch(type){case"i1":HEAP8[ptr>>0]=value;break;case"i8":HEAP8[ptr>>0]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":tempI64=[value>>>0,(tempDouble=value,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;default:abort("invalid type for setValue: "+type)}}var wasmMemory;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}var ALLOC_NORMAL=0;var ALLOC_STACK=1;function allocate(slab,allocator){var ret;if(allocator==ALLOC_STACK){ret=stackAlloc(slab.length)}else{ret=_malloc(slab.length)}if(slab.subarray||slab.slice){HEAPU8.set(slab,ret)}else{HEAPU8.set(new Uint8Array(slab),ret)}return ret}var UTF8Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heap,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heap[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str="";while(idx<endPtr){var u0=heap[idx++];if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heap[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heap[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u0=(u0&7)<<18|u1<<12|u2<<6|heap[idx++]&63}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||16777216;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;__ATINIT__.push({func:function(){___wasm_call_ctors()}});function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){FS.ignorePermissions=false;callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}what+="";err(what);ABORT=true;EXITSTATUS=1;what="abort("+what+"). Build with -s ASSERTIONS=1 for more info.";var e=new WebAssembly.RuntimeError(what);throw e}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix="file://";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile="models_waving_cubes.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}else{throw"both async and sync fetching of the wasm failed"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch==="function"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={"a":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;wasmMemory=Module["asm"]["Xd"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module["asm"]["_d"];removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiatedSource(output){receiveInstance(output["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming==="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch==="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync();return{}}var tempDouble;var tempI64;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback(Module);continue}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){wasmTable.get(func)()}else{wasmTable.get(func)(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}function ___assert_fail(condition,filename,line,func){abort("Assertion failed: "+UTF8ToString(condition)+", at: "+[filename?UTF8ToString(filename):"unknown filename",line,func?UTF8ToString(func):"unknown function"])}function setErrNo(value){HEAP32[___errno_location()>>2]=value;return value}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path==="/")return"/";path=PATH.normalize(path);path=path.replace(/\/$/,"");var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}};function getRandomDevice(){if(typeof crypto==="object"&&typeof crypto["getRandomValues"]==="function"){var randomBuffer=new Uint8Array(1);return function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]}}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");return function(){return crypto_module["randomBytes"](1)[0]}}catch(e){}}return function(){abort("randomDevice")}}var PATH_FS={resolve:function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!=="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=path.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(function(p){return!!p}),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:function(from,to){from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start<arr.length;start++){if(arr[start]!=="")break}var end=arr.length-1;for(;end>=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i<length;i++){if(fromParts[i]!==toParts[i]){samePartsLength=i;break}}var outputParts=[];for(var i=samePartsLength;i<fromParts.length;i++){outputParts.push("..")}outputParts=outputParts.concat(toParts.slice(samePartsLength));return outputParts.join("/")}};var TTY={ttys:[],init:function(){},shutdown:function(){},register:function(dev,ops){TTY.ttys[dev]={input:[],output:[],ops:ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open:function(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close:function(stream){stream.tty.ops.flush(stream.tty)},flush:function(stream){stream.tty.ops.flush(stream.tty)},read:function(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i<length;i++){var result;try{result=stream.tty.ops.get_char(stream.tty)}catch(e){throw new FS.ErrnoError(29)}if(result===undefined&&bytesRead===0){throw new FS.ErrnoError(6)}if(result===null||result===undefined)break;bytesRead++;buffer[offset+i]=result}if(bytesRead){stream.node.timestamp=Date.now()}return bytesRead},write:function(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.put_char){throw new FS.ErrnoError(60)}try{for(var i=0;i<length;i++){stream.tty.ops.put_char(stream.tty,buffer[offset+i])}}catch(e){throw new FS.ErrnoError(29)}if(length){stream.node.timestamp=Date.now()}return i}},default_tty_ops:{get_char:function(tty){if(!tty.input.length){var result=null;if(ENVIRONMENT_IS_NODE){var BUFSIZE=256;var buf=Buffer.alloc?Buffer.alloc(BUFSIZE):new Buffer(BUFSIZE);var bytesRead=0;try{bytesRead=nodeFS.readSync(process.stdin.fd,buf,0,BUFSIZE,null)}catch(e){if(e.toString().indexOf("EOF")!=-1)bytesRead=0;else throw e}if(bytesRead>0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function mmapAlloc(size){var alignedSize=alignMemory(size,16384);var ptr=_malloc(alignedSize);while(size<alignedSize)HEAP8[ptr+size++]=0;return ptr}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray:function(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage:function(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity<CAPACITY_DOUBLING_MAX?2:1.125)>>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage:function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr:function(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr:function(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp;old_node.parent=new_dir},unlink:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir:function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i<size;i++)buffer[offset+i]=contents[position+i]}return size},write:function(stream,buffer,offset,length,position,canOwn){if(!length)return 0;var node=stream.node;node.timestamp=Date.now();if(buffer.subarray&&(!node.contents||node.contents.subarray)){if(canOwn){node.contents=buffer.subarray(offset,offset+length);node.usedBytes=length;return length}else if(node.usedBytes===0&&position===0){node.contents=buffer.slice(offset,offset+length);node.usedBytes=length;return length}else if(position+length<=node.usedBytes){node.contents.set(buffer.subarray(offset,offset+length),position);return length}}MEMFS.expandFileStorage(node,position+length);if(node.contents.subarray&&buffer.subarray){node.contents.set(buffer.subarray(offset,offset+length),position)}else{for(var i=0;i<length;i++){node.contents[position+i]=buffer[offset+i]}}node.usedBytes=Math.max(node.usedBytes,position+length);return length},llseek:function(stream,offset,whence){var position=offset;if(whence===1){position+=stream.position}else if(whence===2){if(FS.isFile(stream.node.mode)){position+=stream.node.usedBytes}}if(position<0){throw new FS.ErrnoError(28)}return position},allocate:function(stream,offset,length){MEMFS.expandFileStorage(stream.node,offset+length);stream.node.usedBytes=Math.max(stream.node.usedBytes,offset+length)},mmap:function(stream,address,length,position,prot,flags){if(address!==0){throw new FS.ErrnoError(28)}if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}var ptr;var allocated;var contents=stream.node.contents;if(!(flags&2)&&contents.buffer===buffer){allocated=false;ptr=contents.byteOffset}else{if(position>0||position+length<contents.length){if(contents.subarray){contents=contents.subarray(position,position+length)}else{contents=Array.prototype.slice.call(contents,position,position+length)}}allocated=true;ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}HEAP8.set(contents,ptr)}return{ptr:ptr,allocated:allocated}},msync:function(stream,buffer,offset,length,mmapFlags){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}if(mmapFlags&2){return 0}var bytesWritten=MEMFS.stream_ops.write(stream,buffer,0,length,offset,false);return 0}}};var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,trackingDelegate:{},tracking:{openFlags:{READ:1,WRITE:2}},ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath:function(path,opts){path=PATH_FS.resolve(FS.cwd(),path);opts=opts||{};if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};for(var key in defaults){if(opts[key]===undefined){opts[key]=defaults[key]}}if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),false);var current=FS.root;var current_path="/";for(var i=0;i<parts.length;i++){var islast=i===parts.length-1;if(islast&&opts.parent){break}current=FS.lookupNode(current,parts[i]);current_path=PATH.join2(current_path,parts[i]);if(FS.isMountpoint(current)){if(!islast||islast&&opts.follow_mount){current=current.mounted.root}}if(!islast||opts.follow){var count=0;while(FS.isLink(current.mode)){var link=FS.readlink(current_path);current_path=PATH_FS.resolve(PATH.dirname(current_path),link);var lookup=FS.lookupPath(current_path,{recurse_count:opts.recurse_count});current=lookup.node;if(count++>40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath:function(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?mount+"/"+path:mount+path}path=path?node.name+"/"+path:node.name;node=node.parent}},hashName:function(parentid,name){var hash=0;for(var i=0;i<name.length;i++){hash=(hash<<5)-hash+name.charCodeAt(i)|0}return(parentid+hash>>>0)%FS.nameTable.length},hashAddNode:function(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode:function(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode:function(parent,name){var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode:function(parent,name,mode,rdev){var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:function(node){FS.hashRemoveNode(node)},isRoot:function(node){return node===node.parent},isMountpoint:function(node){return!!node.mounted},isFile:function(mode){return(mode&61440)===32768},isDir:function(mode){return(mode&61440)===16384},isLink:function(mode){return(mode&61440)===40960},isChrdev:function(mode){return(mode&61440)===8192},isBlkdev:function(mode){return(mode&61440)===24576},isFIFO:function(mode){return(mode&61440)===4096},isSocket:function(mode){return(mode&49152)===49152},flagModes:{"r":0,"r+":2,"w":577,"w+":578,"a":1089,"a+":1090},modeStringToFlags:function(str){var flags=FS.flagModes[str];if(typeof flags==="undefined"){throw new Error("Unknown file open mode: "+str)}return flags},flagsToPermissionString:function(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions:function(node,perms){if(FS.ignorePermissions){return 0}if(perms.indexOf("r")!==-1&&!(node.mode&292)){return 2}else if(perms.indexOf("w")!==-1&&!(node.mode&146)){return 2}else if(perms.indexOf("x")!==-1&&!(node.mode&73)){return 2}return 0},mayLookup:function(dir){var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate:function(dir,name){try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete:function(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen:function(node,flags){if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd:function(fd_start,fd_end){fd_start=fd_start||0;fd_end=fd_end||FS.MAX_OPEN_FDS;for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:function(fd){return FS.streams[fd]},createStream:function(stream,fd_start,fd_end){if(!FS.FSStream){FS.FSStream=function(){};FS.FSStream.prototype={object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}}}}var newStream=new FS.FSStream;for(var p in stream){newStream[p]=stream[p]}stream=newStream;var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:function(fd){FS.streams[fd]=null},chrdev_stream_ops:{open:function(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}},llseek:function(){throw new FS.ErrnoError(70)}},major:function(dev){return dev>>8},minor:function(dev){return dev&255},makedev:function(ma,mi){return ma<<8|mi},registerDevice:function(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:function(dev){return FS.devices[dev]},getMounts:function(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts},syncfs:function(populate,callback){if(typeof populate==="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err("warning: "+FS.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work")}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(function(mount){if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount:function(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount:function(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(function(hash){var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.indexOf(current.mount)!==-1){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup:function(parent,name){return parent.node_ops.lookup(parent,name)},mknod:function(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create:function(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:function(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree:function(path,mode){var dirs=path.split("/");var d="";for(var i=0;i<dirs.length;++i){if(!dirs[i])continue;d+="/"+dirs[i];try{FS.mkdir(d,mode)}catch(e){if(e.errno!=20)throw e}}},mkdev:function(path,mode,dev){if(typeof dev==="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:function(oldpath,newpath){if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:function(old_path,new_path){var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}try{if(FS.trackingDelegate["willMovePath"]){FS.trackingDelegate["willMovePath"](old_path,new_path)}}catch(e){err("FS.trackingDelegate['willMovePath']('"+old_path+"', '"+new_path+"') threw an exception: "+e.message)}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}try{if(FS.trackingDelegate["onMovePath"])FS.trackingDelegate["onMovePath"](old_path,new_path)}catch(e){err("FS.trackingDelegate['onMovePath']('"+old_path+"', '"+new_path+"') threw an exception: "+e.message)}},rmdir:function(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}try{if(FS.trackingDelegate["willDeletePath"]){FS.trackingDelegate["willDeletePath"](path)}}catch(e){err("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: "+e.message)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate["onDeletePath"])FS.trackingDelegate["onDeletePath"](path)}catch(e){err("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: "+e.message)}},readdir:function(path){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:function(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}try{if(FS.trackingDelegate["willDeletePath"]){FS.trackingDelegate["willDeletePath"](path)}}catch(e){err("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: "+e.message)}parent.node_ops.unlink(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate["onDeletePath"])FS.trackingDelegate["onDeletePath"](path)}catch(e){err("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: "+e.message)}},readlink:function(path){var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:function(path,dontFollow){var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:function(path){return FS.stat(path,true)},chmod:function(path,mode,dontFollow){var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:function(path,mode){FS.chmod(path,mode,true)},fchmod:function(fd,mode){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:function(path,uid,gid,dontFollow){var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:function(path,uid,gid){FS.chown(path,uid,gid,true)},fchown:function(fd,uid,gid){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:function(path,len){if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:function(fd,len){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:function(path,atime,mtime){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:function(path,flags,mode,fd_start,fd_end){if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags==="string"?FS.modeStringToFlags(flags):flags;mode=typeof mode==="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path==="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false},fd_start,fd_end);if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1;err("FS.trackingDelegate error on read file: "+path)}}try{if(FS.trackingDelegate["onOpenFile"]){var trackingFlags=0;if((flags&2097155)!==1){trackingFlags|=FS.tracking.openFlags.READ}if((flags&2097155)!==0){trackingFlags|=FS.tracking.openFlags.WRITE}FS.trackingDelegate["onOpenFile"](path,trackingFlags)}}catch(e){err("FS.trackingDelegate['onOpenFile']('"+path+"', flags) threw an exception: "+e.message)}return stream},close:function(stream){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:function(stream){return stream.fd===null},llseek:function(stream,offset,whence){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:function(stream,buffer,offset,length,position){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!=="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:function(stream,buffer,offset,length,position,canOwn){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!=="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;try{if(stream.path&&FS.trackingDelegate["onWriteToFile"])FS.trackingDelegate["onWriteToFile"](stream.path)}catch(e){err("FS.trackingDelegate['onWriteToFile']('"+stream.path+"') threw an exception: "+e.message)}return bytesWritten},allocate:function(stream,offset,length){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:function(stream,address,length,position,prot,flags){if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,address,length,position,prot,flags)},msync:function(stream,buffer,offset,length,mmapFlags){if(!stream||!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:function(stream){return 0},ioctl:function(stream,cmd,arg){if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:function(path,opts){opts=opts||{};opts.flags=opts.flags||0;opts.encoding=opts.encoding||"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error('Invalid encoding type "'+opts.encoding+'"')}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding==="binary"){ret=buf}FS.close(stream);return ret},writeFile:function(path,data,opts){opts=opts||{};opts.flags=opts.flags||577;var stream=FS.open(path,opts.flags,opts.mode);if(typeof data==="string"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,undefined,opts.canOwn)}else if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{throw new Error("Unsupported data type")}FS.close(stream)},cwd:function(){return FS.currentPath},chdir:function(path){var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories:function(){FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices:function(){FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:function(){return 0},write:function(stream,buffer,offset,length,pos){return length}});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var random_device=getRandomDevice();FS.createDevice("/dev","random",random_device);FS.createDevice("/dev","urandom",random_device);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories:function(){FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount:function(){var node=FS.createNode(proc_self,"fd",16384|511,73);node.node_ops={lookup:function(parent,name){var fd=+name;var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:function(){return stream.path}}};ret.parent=ret;return ret}};return node}},{},"/proc/self/fd")},createStandardStreams:function(){if(Module["stdin"]){FS.createDevice("/dev","stdin",Module["stdin"])}else{FS.symlink("/dev/tty","/dev/stdin")}if(Module["stdout"]){FS.createDevice("/dev","stdout",null,Module["stdout"])}else{FS.symlink("/dev/tty","/dev/stdout")}if(Module["stderr"]){FS.createDevice("/dev","stderr",null,Module["stderr"])}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},ensureErrnoError:function(){if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.node=node;this.setErrno=function(errno){this.errno=errno};this.setErrno(errno);this.message="FS error"};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[44].forEach(function(code){FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack="<generic error, no stack>"})},staticInit:function(){FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={"MEMFS":MEMFS}},init:function(input,output,error){FS.init.initialized=true;FS.ensureErrnoError();Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams()},quit:function(){FS.init.initialized=false;var fflush=Module["_fflush"];if(fflush)fflush(0);for(var i=0;i<FS.streams.length;i++){var stream=FS.streams[i];if(!stream){continue}FS.close(stream)}},getMode:function(canRead,canWrite){var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode},findObject:function(path,dontResolveLastLink){var ret=FS.analyzePath(path,dontResolveLastLink);if(ret.exists){return ret.object}else{return null}},analyzePath:function(path,dontResolveLastLink){try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath:function(parent,path,canRead,canWrite){parent=typeof parent==="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:function(parent,name,properties,canRead,canWrite){var path=PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:function(parent,name,data,canRead,canWrite,canOwn){var path=name?PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name):parent;var mode=FS.getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data==="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i<len;++i)arr[i]=data.charCodeAt(i);data=arr}FS.chmod(node,mode|146);var stream=FS.open(node,577);FS.write(stream,data,0,data.length,0,canOwn);FS.close(stream);FS.chmod(node,mode)}return node},createDevice:function(parent,name,input,output){var path=PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:function(stream){stream.seekable=false},close:function(stream){if(output&&output.buffer&&output.buffer.length){output(10)}},read:function(stream,buffer,offset,length,pos){var bytesRead=0;for(var i=0;i<length;i++){var result;try{result=input()}catch(e){throw new FS.ErrnoError(29)}if(result===undefined&&bytesRead===0){throw new FS.ErrnoError(6)}if(result===null||result===undefined)break;bytesRead++;buffer[offset+i]=result}if(bytesRead){stream.node.timestamp=Date.now()}return bytesRead},write:function(stream,buffer,offset,length,pos){for(var i=0;i<length;i++){try{output(buffer[offset+i])}catch(e){throw new FS.ErrnoError(29)}}if(length){stream.node.timestamp=Date.now()}return i}});return FS.mkdev(path,mode,dev)},forceLoadFile:function(obj){if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!=="undefined"){throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}},createLazyFile:function(parent,name,url,canRead,canWrite){function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=function(from,to){if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);if(typeof Uint8Array!="undefined")xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}else{return intArrayFromString(xhr.responseText||"",true)}};var lazyArray=this;lazyArray.setDataGetter(function(chunkNum){var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]==="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]==="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!=="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._length}},chunkSize:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(function(key){var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){FS.forceLoadFile(node);return fn.apply(null,arguments)}});stream_ops.read=function stream_ops_read(stream,buffer,offset,length,position){FS.forceLoadFile(node);var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i<size;i++){buffer[offset+i]=contents[position+i]}}else{for(var i=0;i<size;i++){buffer[offset+i]=contents.get(position+i)}}return size};node.stream_ops=stream_ops;return node},createPreloadedFile:function(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish){Browser.init();var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency("cp "+fullname);function processData(byteArray){function finish(byteArray){if(preFinish)preFinish();if(!dontCreateFile){FS.createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}if(onload)onload();removeRunDependency(dep)}var handled=false;Module["preloadPlugins"].forEach(function(plugin){if(handled)return;if(plugin["canHandle"](fullname)){plugin["handle"](byteArray,fullname,finish,function(){if(onerror)onerror();removeRunDependency(dep)});handled=true}});if(!handled)finish(byteArray)}addRunDependency(dep);if(typeof url=="string"){Browser.asyncLoad(url,function(byteArray){processData(byteArray)},onerror)}else{processData(url)}},indexedDB:function(){return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME:function(){return"EM_FS_"+window.location.pathname},DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:function(paths,onload,onerror){onload=onload||function(){};onerror=onerror||function(){};var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=function openRequest_onupgradeneeded(){out("creating db");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME)};openRequest.onsuccess=function openRequest_onsuccess(){var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],"readwrite");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(function(path){var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=function putRequest_onsuccess(){ok++;if(ok+fail==total)finish()};putRequest.onerror=function putRequest_onerror(){fail++;if(ok+fail==total)finish()}});transaction.onerror=onerror};openRequest.onerror=onerror},loadFilesFromDB:function(paths,onload,onerror){onload=onload||function(){};onerror=onerror||function(){};var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=function openRequest_onsuccess(){var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],"readonly")}catch(e){onerror(e);return}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(function(path){var getRequest=files.get(path);getRequest.onsuccess=function getRequest_onsuccess(){if(FS.analyzePath(path).exists){FS.unlink(path)}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish()};getRequest.onerror=function getRequest_onerror(){fail++;if(ok+fail==total)finish()}});transaction.onerror=onerror};openRequest.onerror=onerror}};var SYSCALLS={mappings:{},DEFAULT_POLLMASK:5,umask:511,calculateAt:function(dirfd,path,allowEmpty){if(path[0]==="/"){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=FS.getStream(dirfd);if(!dirstream)throw new FS.ErrnoError(8);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(func,path,buf){try{var stat=func(path)}catch(e){if(e&&e.node&&PATH.normalize(path)!==PATH.normalize(FS.getPath(e.node))){return-54}throw e}HEAP32[buf>>2]=stat.dev;HEAP32[buf+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;HEAP32[buf+56>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+76>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+80>>2]=tempI64[0],HEAP32[buf+84>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},doMkdir:function(path,mode){path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0},doMknod:function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}FS.mknod(path,mode,dev);return 0},doReadlink:function(path,buf,bufsize){if(bufsize<=0)return-28;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len},doAccess:function(path,amode){if(amode&~7){return-28}var node;var lookup=FS.lookupPath(path,{follow:true});node=lookup.node;if(!node){return-44}var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0},doDup:function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd},doReadv:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i<iovcnt;i++){var ptr=HEAP32[iov+i*8>>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr<len)break}return ret},doWritev:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i<iovcnt;i++){var ptr=HEAP32[iov+i*8>>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream},get64:function(low,high){return low}};function ___sys_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-28}var newStream;newStream=FS.open(stream.path,stream.flags,0,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0}case 12:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 13:case 14:return 0;case 16:case 8:return-28;case 9:setErrNo(28);return-1;default:{return-28}}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_ioctl(fd,op,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(op){case 21509:case 21505:{if(!stream.tty)return-59;return 0}case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-59;return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{if(!stream.tty)return-59;return 0}default:abort("bad ioctl syscall "+op)}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_open(path,flags,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(path);var mode=varargs?SYSCALLS.get():0;var stream=FS.open(pathname,flags,mode);return stream.fd}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}var JSEvents={inEventHandler:0,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return false;for(var i in arrA){if(arrA[i]!=arrB[i])return false}return true}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList)){return}}JSEvents.deferredCalls.push({targetFunction:targetFunction,precedence:precedence,argsList:argsList});JSEvents.deferredCalls.sort(function(x,y){return x.precedence<y.precedence})},removeDeferredCalls:function(targetFunction){for(var i=0;i<JSEvents.deferredCalls.length;++i){if(JSEvents.deferredCalls[i].targetFunction==targetFunction){JSEvents.deferredCalls.splice(i,1);--i}}},canPerformEventHandlerRequests:function(){return JSEvents.inEventHandler&&JSEvents.currentEventHandler.allowsDeferredCalls},runDeferredCalls:function(){if(!JSEvents.canPerformEventHandlerRequests()){return}for(var i=0;i<JSEvents.deferredCalls.length;++i){var call=JSEvents.deferredCalls[i];JSEvents.deferredCalls.splice(i,1);--i;call.targetFunction.apply(null,call.argsList)}},eventHandlers:[],removeAllHandlersOnTarget:function(target,eventTypeString){for(var i=0;i<JSEvents.eventHandlers.length;++i){if(JSEvents.eventHandlers[i].target==target&&(!eventTypeString||eventTypeString==JSEvents.eventHandlers[i].eventTypeString)){JSEvents._removeHandler(i--)}}},_removeHandler:function(i){var h=JSEvents.eventHandlers[i];h.target.removeEventListener(h.eventTypeString,h.eventListenerFunc,h.useCapture);JSEvents.eventHandlers.splice(i,1)},registerOrRemoveHandler:function(eventHandler){var jsEventHandler=function jsEventHandler(event){++JSEvents.inEventHandler;JSEvents.currentEventHandler=eventHandler;JSEvents.runDeferredCalls();eventHandler.handlerFunc(event);JSEvents.runDeferredCalls();--JSEvents.inEventHandler};if(eventHandler.callbackfunc){eventHandler.eventListenerFunc=jsEventHandler;eventHandler.target.addEventListener(eventHandler.eventTypeString,jsEventHandler,eventHandler.useCapture);JSEvents.eventHandlers.push(eventHandler);JSEvents.registerRemoveEventListeners()}else{for(var i=0;i<JSEvents.eventHandlers.length;++i){if(JSEvents.eventHandlers[i].target==eventHandler.target&&JSEvents.eventHandlers[i].eventTypeString==eventHandler.eventTypeString){JSEvents._removeHandler(i--)}}}},getNodeNameForTarget:function(target){if(!target)return"";if(target==window)return"#window";if(target==screen)return"#screen";return target&&target.nodeName?target.nodeName:""},fullscreenEnabled:function(){return document.fullscreenEnabled||document.webkitFullscreenEnabled}};function requestPointerLock(target){if(target.requestPointerLock){target.requestPointerLock()}else if(target.msRequestPointerLock){target.msRequestPointerLock()}else{if(document.body.requestPointerLock||document.body.msRequestPointerLock){return-3}else{return-1}}return 0}function _emscripten_exit_pointerlock(){JSEvents.removeDeferredCalls(requestPointerLock);if(document.exitPointerLock){document.exitPointerLock()}else if(document.msExitPointerLock){document.msExitPointerLock()}else{return-1}return 0}function maybeCStringToJsString(cString){return cString>2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!=="undefined"?document:0,typeof window!=="undefined"?window:0];function findEventTarget(target){target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!=="undefined"?document.querySelector(target):undefined);return domElement}function getBoundingClientRect(e){return specialHTMLTargets.indexOf(e)<0?e.getBoundingClientRect():{"left":0,"top":0}}function _emscripten_get_element_css_size(target,width,height){target=findEventTarget(target);if(!target)return-4;var rect=getBoundingClientRect(target);HEAPF64[width>>3]=rect.width;HEAPF64[height>>3]=rect.height;return 0}function fillGamepadEventData(eventStruct,e){HEAPF64[eventStruct>>3]=e.timestamp;for(var i=0;i<e.axes.length;++i){HEAPF64[eventStruct+i*8+16>>3]=e.axes[i]}for(var i=0;i<e.buttons.length;++i){if(typeof e.buttons[i]==="object"){HEAPF64[eventStruct+i*8+528>>3]=e.buttons[i].value}else{HEAPF64[eventStruct+i*8+528>>3]=e.buttons[i]}}for(var i=0;i<e.buttons.length;++i){if(typeof e.buttons[i]==="object"){HEAP32[eventStruct+i*4+1040>>2]=e.buttons[i].pressed}else{HEAP32[eventStruct+i*4+1040>>2]=e.buttons[i]==1}}HEAP32[eventStruct+1296>>2]=e.connected;HEAP32[eventStruct+1300>>2]=e.index;HEAP32[eventStruct+8>>2]=e.axes.length;HEAP32[eventStruct+12>>2]=e.buttons.length;stringToUTF8(e.id,eventStruct+1304,64);stringToUTF8(e.mapping,eventStruct+1368,64)}function _emscripten_get_gamepad_status(index,gamepadState){if(index<0||index>=JSEvents.lastGamepadState.length)return-5;if(!JSEvents.lastGamepadState[index])return-7;fillGamepadEventData(gamepadState,JSEvents.lastGamepadState[index]);return 0}function _emscripten_get_num_gamepads(){return JSEvents.lastGamepadState.length}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension("ANGLE_instanced_arrays");if(ext){ctx["vertexAttribDivisor"]=function(index,divisor){ext["vertexAttribDivisorANGLE"](index,divisor)};ctx["drawArraysInstanced"]=function(mode,first,count,primcount){ext["drawArraysInstancedANGLE"](mode,first,count,primcount)};ctx["drawElementsInstanced"]=function(mode,count,type,indices,primcount){ext["drawElementsInstancedANGLE"](mode,count,type,indices,primcount)};return 1}}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension("OES_vertex_array_object");if(ext){ctx["createVertexArray"]=function(){return ext["createVertexArrayOES"]()};ctx["deleteVertexArray"]=function(vao){ext["deleteVertexArrayOES"](vao)};ctx["bindVertexArray"]=function(vao){ext["bindVertexArrayOES"](vao)};ctx["isVertexArray"]=function(vao){return ext["isVertexArrayOES"](vao)};return 1}}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension("WEBGL_draw_buffers");if(ext){ctx["drawBuffers"]=function(n,bufs){ext["drawBuffersWEBGL"](n,bufs)};return 1}}function __webgl_enable_WEBGL_multi_draw(ctx){return!!(ctx.multiDrawWebgl=ctx.getExtension("WEBGL_multi_draw"))}var GL={counter:1,buffers:[],programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:[],offscreenCanvases:{},timerQueriesEXT:[],programInfos:{},stringCache:{},unpackAlignment:4,recordError:function recordError(errorCode){if(!GL.lastError){GL.lastError=errorCode}},getNewId:function(table){var ret=GL.counter++;for(var i=table.length;i<ret;i++){table[i]=null}return ret},getSource:function(shader,count,string,length){var source="";for(var i=0;i<count;++i){var len=length?HEAP32[length+i*4>>2]:-1;source+=UTF8ToString(HEAP32[string+i*4>>2],len<0?undefined:len)}return source},createContext:function(canvas,webGLContextAttributes){var ctx=canvas.getContext("webgl",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:function(ctx,webGLContextAttributes){var handle=GL.getNewId(GL.contexts);var context={handle:handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};if(ctx.canvas)ctx.canvas.GLctxObject=context;GL.contexts[handle]=context;if(typeof webGLContextAttributes.enableExtensionsByDefault==="undefined"||webGLContextAttributes.enableExtensionsByDefault){GL.initExtensions(context)}return handle},makeContextCurrent:function(contextHandle){GL.currentContext=GL.contexts[contextHandle];Module.ctx=GLctx=GL.currentContext&&GL.currentContext.GLctx;return!(contextHandle&&!GLctx)},getContext:function(contextHandle){return GL.contexts[contextHandle]},deleteContext:function(contextHandle){if(GL.currentContext===GL.contexts[contextHandle])GL.currentContext=null;if(typeof JSEvents==="object")JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas);if(GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas)GL.contexts[contextHandle].GLctx.canvas.GLctxObject=undefined;GL.contexts[contextHandle]=null},initExtensions:function(context){if(!context)context=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;__webgl_enable_ANGLE_instanced_arrays(GLctx);__webgl_enable_OES_vertex_array_object(GLctx);__webgl_enable_WEBGL_draw_buffers(GLctx);GLctx.disjointTimerQueryExt=GLctx.getExtension("EXT_disjoint_timer_query");__webgl_enable_WEBGL_multi_draw(GLctx);var exts=GLctx.getSupportedExtensions()||[];exts.forEach(function(ext){if(ext.indexOf("lose_context")<0&&ext.indexOf("debug")<0){GLctx.getExtension(ext)}})},populateUniformTable:function(program){var p=GL.programs[program];var ptable=GL.programInfos[program]={uniforms:{},maxUniformLength:0,maxAttributeLength:-1,maxUniformBlockNameLength:-1};var utable=ptable.uniforms;var numUniforms=GLctx.getProgramParameter(p,35718);for(var i=0;i<numUniforms;++i){var u=GLctx.getActiveUniform(p,i);var name=u.name;ptable.maxUniformLength=Math.max(ptable.maxUniformLength,name.length+1);if(name.slice(-1)=="]"){name=name.slice(0,name.lastIndexOf("["))}var loc=GLctx.getUniformLocation(p,name);if(loc){var id=GL.getNewId(GL.uniforms);utable[name]=[u.size,id];GL.uniforms[id]=loc;for(var j=1;j<u.size;++j){var n=name+"["+j+"]";loc=GLctx.getUniformLocation(p,n);id=GL.getNewId(GL.uniforms);GL.uniforms[id]=loc}}}}};function _emscripten_glActiveTexture(x0){GLctx["activeTexture"](x0)}function _emscripten_glAttachShader(program,shader){GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _emscripten_glBeginQueryEXT(target,id){GLctx.disjointTimerQueryExt["beginQueryEXT"](target,GL.timerQueriesEXT[id])}function _emscripten_glBindAttribLocation(program,index,name){GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))}function _emscripten_glBindBuffer(target,buffer){GLctx.bindBuffer(target,GL.buffers[buffer])}function _emscripten_glBindFramebuffer(target,framebuffer){GLctx.bindFramebuffer(target,GL.framebuffers[framebuffer])}function _emscripten_glBindRenderbuffer(target,renderbuffer){GLctx.bindRenderbuffer(target,GL.renderbuffers[renderbuffer])}function _emscripten_glBindTexture(target,texture){GLctx.bindTexture(target,GL.textures[texture])}function _emscripten_glBindVertexArrayOES(vao){GLctx["bindVertexArray"](GL.vaos[vao])}function _emscripten_glBlendColor(x0,x1,x2,x3){GLctx["blendColor"](x0,x1,x2,x3)}function _emscripten_glBlendEquation(x0){GLctx["blendEquation"](x0)}function _emscripten_glBlendEquationSeparate(x0,x1){GLctx["blendEquationSeparate"](x0,x1)}function _emscripten_glBlendFunc(x0,x1){GLctx["blendFunc"](x0,x1)}function _emscripten_glBlendFuncSeparate(x0,x1,x2,x3){GLctx["blendFuncSeparate"](x0,x1,x2,x3)}function _emscripten_glBufferData(target,size,data,usage){GLctx.bufferData(target,data?HEAPU8.subarray(data,data+size):size,usage)}function _emscripten_glBufferSubData(target,offset,size,data){GLctx.bufferSubData(target,offset,HEAPU8.subarray(data,data+size))}function _emscripten_glCheckFramebufferStatus(x0){return GLctx["checkFramebufferStatus"](x0)}function _emscripten_glClear(x0){GLctx["clear"](x0)}function _emscripten_glClearColor(x0,x1,x2,x3){GLctx["clearColor"](x0,x1,x2,x3)}function _emscripten_glClearDepthf(x0){GLctx["clearDepth"](x0)}function _emscripten_glClearStencil(x0){GLctx["clearStencil"](x0)}function _emscripten_glColorMask(red,green,blue,alpha){GLctx.colorMask(!!red,!!green,!!blue,!!alpha)}function _emscripten_glCompileShader(shader){GLctx.compileShader(GL.shaders[shader])}function _emscripten_glCompressedTexImage2D(target,level,internalFormat,width,height,border,imageSize,data){GLctx["compressedTexImage2D"](target,level,internalFormat,width,height,border,data?HEAPU8.subarray(data,data+imageSize):null)}function _emscripten_glCompressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,imageSize,data){GLctx["compressedTexSubImage2D"](target,level,xoffset,yoffset,width,height,format,data?HEAPU8.subarray(data,data+imageSize):null)}function _emscripten_glCopyTexImage2D(x0,x1,x2,x3,x4,x5,x6,x7){GLctx["copyTexImage2D"](x0,x1,x2,x3,x4,x5,x6,x7)}function _emscripten_glCopyTexSubImage2D(x0,x1,x2,x3,x4,x5,x6,x7){GLctx["copyTexSubImage2D"](x0,x1,x2,x3,x4,x5,x6,x7)}function _emscripten_glCreateProgram(){var id=GL.getNewId(GL.programs);var program=GLctx.createProgram();program.name=id;GL.programs[id]=program;return id}function _emscripten_glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}function _emscripten_glCullFace(x0){GLctx["cullFace"](x0)}function _emscripten_glDeleteBuffers(n,buffers){for(var i=0;i<n;i++){var id=HEAP32[buffers+i*4>>2];var buffer=GL.buffers[id];if(!buffer)continue;GLctx.deleteBuffer(buffer);buffer.name=0;GL.buffers[id]=null}}function _emscripten_glDeleteFramebuffers(n,framebuffers){for(var i=0;i<n;++i){var id=HEAP32[framebuffers+i*4>>2];var framebuffer=GL.framebuffers[id];if(!framebuffer)continue;GLctx.deleteFramebuffer(framebuffer);framebuffer.name=0;GL.framebuffers[id]=null}}function _emscripten_glDeleteProgram(id){if(!id)return;var program=GL.programs[id];if(!program){GL.recordError(1281);return}GLctx.deleteProgram(program);program.name=0;GL.programs[id]=null;GL.programInfos[id]=null}function _emscripten_glDeleteQueriesEXT(n,ids){for(var i=0;i<n;i++){var id=HEAP32[ids+i*4>>2];var query=GL.timerQueriesEXT[id];if(!query)continue;GLctx.disjointTimerQueryExt["deleteQueryEXT"](query);GL.timerQueriesEXT[id]=null}}function _emscripten_glDeleteRenderbuffers(n,renderbuffers){for(var i=0;i<n;i++){var id=HEAP32[renderbuffers+i*4>>2];var renderbuffer=GL.renderbuffers[id];if(!renderbuffer)continue;GLctx.deleteRenderbuffer(renderbuffer);renderbuffer.name=0;GL.renderbuffers[id]=null}}function _emscripten_glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}function _emscripten_glDeleteTextures(n,textures){for(var i=0;i<n;i++){var id=HEAP32[textures+i*4>>2];var texture=GL.textures[id];if(!texture)continue;GLctx.deleteTexture(texture);texture.name=0;GL.textures[id]=null}}function _emscripten_glDeleteVertexArraysOES(n,vaos){for(var i=0;i<n;i++){var id=HEAP32[vaos+i*4>>2];GLctx["deleteVertexArray"](GL.vaos[id]);GL.vaos[id]=null}}function _emscripten_glDepthFunc(x0){GLctx["depthFunc"](x0)}function _emscripten_glDepthMask(flag){GLctx.depthMask(!!flag)}function _emscripten_glDepthRangef(x0,x1){GLctx["depthRange"](x0,x1)}function _emscripten_glDetachShader(program,shader){GLctx.detachShader(GL.programs[program],GL.shaders[shader])}function _emscripten_glDisable(x0){GLctx["disable"](x0)}function _emscripten_glDisableVertexAttribArray(index){GLctx.disableVertexAttribArray(index)}function _emscripten_glDrawArrays(mode,first,count){GLctx.drawArrays(mode,first,count)}function _emscripten_glDrawArraysInstancedANGLE(mode,first,count,primcount){GLctx["drawArraysInstanced"](mode,first,count,primcount)}var tempFixedLengthArray=[];function _emscripten_glDrawBuffersWEBGL(n,bufs){var bufArray=tempFixedLengthArray[n];for(var i=0;i<n;i++){bufArray[i]=HEAP32[bufs+i*4>>2]}GLctx["drawBuffers"](bufArray)}function _emscripten_glDrawElements(mode,count,type,indices){GLctx.drawElements(mode,count,type,indices)}function _emscripten_glDrawElementsInstancedANGLE(mode,count,type,indices,primcount){GLctx["drawElementsInstanced"](mode,count,type,indices,primcount)}function _emscripten_glEnable(x0){GLctx["enable"](x0)}function _emscripten_glEnableVertexAttribArray(index){GLctx.enableVertexAttribArray(index)}function _emscripten_glEndQueryEXT(target){GLctx.disjointTimerQueryExt["endQueryEXT"](target)}function _emscripten_glFinish(){GLctx["finish"]()}function _emscripten_glFlush(){GLctx["flush"]()}function _emscripten_glFramebufferRenderbuffer(target,attachment,renderbuffertarget,renderbuffer){GLctx.framebufferRenderbuffer(target,attachment,renderbuffertarget,GL.renderbuffers[renderbuffer])}function _emscripten_glFramebufferTexture2D(target,attachment,textarget,texture,level){GLctx.framebufferTexture2D(target,attachment,textarget,GL.textures[texture],level)}function _emscripten_glFrontFace(x0){GLctx["frontFace"](x0)}function __glGenObject(n,buffers,createFunction,objectTable){for(var i=0;i<n;i++){var buffer=GLctx[createFunction]();var id=buffer&&GL.getNewId(objectTable);if(buffer){buffer.name=id;objectTable[id]=buffer}else{GL.recordError(1282)}HEAP32[buffers+i*4>>2]=id}}function _emscripten_glGenBuffers(n,buffers){__glGenObject(n,buffers,"createBuffer",GL.buffers)}function _emscripten_glGenFramebuffers(n,ids){__glGenObject(n,ids,"createFramebuffer",GL.framebuffers)}function _emscripten_glGenQueriesEXT(n,ids){for(var i=0;i<n;i++){var query=GLctx.disjointTimerQueryExt["createQueryEXT"]();if(!query){GL.recordError(1282);while(i<n)HEAP32[ids+i++*4>>2]=0;return}var id=GL.getNewId(GL.timerQueriesEXT);query.name=id;GL.timerQueriesEXT[id]=query;HEAP32[ids+i*4>>2]=id}}function _emscripten_glGenRenderbuffers(n,renderbuffers){__glGenObject(n,renderbuffers,"createRenderbuffer",GL.renderbuffers)}function _emscripten_glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures)}function _emscripten_glGenVertexArraysOES(n,arrays){__glGenObject(n,arrays,"createVertexArray",GL.vaos)}function _emscripten_glGenerateMipmap(x0){GLctx["generateMipmap"](x0)}function __glGetActiveAttribOrUniform(funcName,program,index,bufSize,length,size,type,name){program=GL.programs[program];var info=GLctx[funcName](program,index);if(info){var numBytesWrittenExclNull=name&&stringToUTF8(info.name,name,bufSize);if(length)HEAP32[length>>2]=numBytesWrittenExclNull;if(size)HEAP32[size>>2]=info.size;if(type)HEAP32[type>>2]=info.type}}function _emscripten_glGetActiveAttrib(program,index,bufSize,length,size,type,name){__glGetActiveAttribOrUniform("getActiveAttrib",program,index,bufSize,length,size,type,name)}function _emscripten_glGetActiveUniform(program,index,bufSize,length,size,type,name){__glGetActiveAttribOrUniform("getActiveUniform",program,index,bufSize,length,size,type,name)}function _emscripten_glGetAttachedShaders(program,maxCount,count,shaders){var result=GLctx.getAttachedShaders(GL.programs[program]);var len=result.length;if(len>maxCount){len=maxCount}HEAP32[count>>2]=len;for(var i=0;i<len;++i){var id=GL.shaders.indexOf(result[i]);HEAP32[shaders+i*4>>2]=id}}function _emscripten_glGetAttribLocation(program,name){return GLctx.getAttribLocation(GL.programs[program],UTF8ToString(name))}function writeI53ToI64(ptr,num){HEAPU32[ptr>>2]=num;HEAPU32[ptr+4>>2]=(num-HEAPU32[ptr>>2])/4294967296}function emscriptenWebGLGet(name_,p,type){if(!p){GL.recordError(1281);return}var ret=undefined;switch(name_){case 36346:ret=1;break;case 36344:if(type!=0&&type!=1){GL.recordError(1280)}return;case 36345:ret=0;break;case 34466:var formats=GLctx.getParameter(34467);ret=formats?formats.length:0;break}if(ret===undefined){var result=GLctx.getParameter(name_);switch(typeof result){case"number":ret=result;break;case"boolean":ret=result?1:0;break;case"string":GL.recordError(1280);return;case"object":if(result===null){switch(name_){case 34964:case 35725:case 34965:case 36006:case 36007:case 32873:case 34229:case 34068:{ret=0;break}default:{GL.recordError(1280);return}}}else if(result instanceof Float32Array||result instanceof Uint32Array||result instanceof Int32Array||result instanceof Array){for(var i=0;i<result.length;++i){switch(type){case 0:HEAP32[p+i*4>>2]=result[i];break;case 2:HEAPF32[p+i*4>>2]=result[i];break;case 4:HEAP8[p+i>>0]=result[i]?1:0;break}}return}else{try{ret=result.name|0}catch(e){GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v: Unknown object returned from WebGL getParameter("+name_+")! (error: "+e+")");return}}break;default:GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v: Native code calling glGet"+type+"v("+name_+") and it returns "+result+" of type "+typeof result+"!");return}}switch(type){case 1:writeI53ToI64(p,ret);break;case 0:HEAP32[p>>2]=ret;break;case 2:HEAPF32[p>>2]=ret;break;case 4:HEAP8[p>>0]=ret?1:0;break}}function _emscripten_glGetBooleanv(name_,p){emscriptenWebGLGet(name_,p,4)}function _emscripten_glGetBufferParameteriv(target,value,data){if(!data){GL.recordError(1281);return}HEAP32[data>>2]=GLctx.getBufferParameter(target,value)}function _emscripten_glGetError(){var error=GLctx.getError()||GL.lastError;GL.lastError=0;return error}function _emscripten_glGetFloatv(name_,p){emscriptenWebGLGet(name_,p,2)}function _emscripten_glGetFramebufferAttachmentParameteriv(target,attachment,pname,params){var result=GLctx.getFramebufferAttachmentParameter(target,attachment,pname);if(result instanceof WebGLRenderbuffer||result instanceof WebGLTexture){result=result.name|0}HEAP32[params>>2]=result}function _emscripten_glGetIntegerv(name_,p){emscriptenWebGLGet(name_,p,0)}function _emscripten_glGetProgramInfoLog(program,maxLength,length,infoLog){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _emscripten_glGetProgramiv(program,pname,p){if(!p){GL.recordError(1281);return}if(program>=GL.counter){GL.recordError(1281);return}var ptable=GL.programInfos[program];if(!ptable){GL.recordError(1282);return}if(pname==35716){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";HEAP32[p>>2]=log.length+1}else if(pname==35719){HEAP32[p>>2]=ptable.maxUniformLength}else if(pname==35722){if(ptable.maxAttributeLength==-1){program=GL.programs[program];var numAttribs=GLctx.getProgramParameter(program,35721);ptable.maxAttributeLength=0;for(var i=0;i<numAttribs;++i){var activeAttrib=GLctx.getActiveAttrib(program,i);ptable.maxAttributeLength=Math.max(ptable.maxAttributeLength,activeAttrib.name.length+1)}}HEAP32[p>>2]=ptable.maxAttributeLength}else if(pname==35381){if(ptable.maxUniformBlockNameLength==-1){program=GL.programs[program];var numBlocks=GLctx.getProgramParameter(program,35382);ptable.maxUniformBlockNameLength=0;for(var i=0;i<numBlocks;++i){var activeBlockName=GLctx.getActiveUniformBlockName(program,i);ptable.maxUniformBlockNameLength=Math.max(ptable.maxUniformBlockNameLength,activeBlockName.length+1)}}HEAP32[p>>2]=ptable.maxUniformBlockNameLength}else{HEAP32[p>>2]=GLctx.getProgramParameter(GL.programs[program],pname)}}function _emscripten_glGetQueryObjecti64vEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.timerQueriesEXT[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}writeI53ToI64(params,ret)}function _emscripten_glGetQueryObjectivEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.timerQueriesEXT[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}HEAP32[params>>2]=ret}function _emscripten_glGetQueryObjectui64vEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.timerQueriesEXT[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}writeI53ToI64(params,ret)}function _emscripten_glGetQueryObjectuivEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.timerQueriesEXT[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}HEAP32[params>>2]=ret}function _emscripten_glGetQueryivEXT(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.disjointTimerQueryExt["getQueryEXT"](target,pname)}function _emscripten_glGetRenderbufferParameteriv(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getRenderbufferParameter(target,pname)}function _emscripten_glGetShaderInfoLog(shader,maxLength,length,infoLog){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _emscripten_glGetShaderPrecisionFormat(shaderType,precisionType,range,precision){var result=GLctx.getShaderPrecisionFormat(shaderType,precisionType);HEAP32[range>>2]=result.rangeMin;HEAP32[range+4>>2]=result.rangeMax;HEAP32[precision>>2]=result.precision}function _emscripten_glGetShaderSource(shader,bufSize,length,source){var result=GLctx.getShaderSource(GL.shaders[shader]);if(!result)return;var numBytesWrittenExclNull=bufSize>0&&source?stringToUTF8(result,source,bufSize):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _emscripten_glGetShaderiv(shader,pname,p){if(!p){GL.recordError(1281);return}if(pname==35716){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var logLength=log?log.length+1:0;HEAP32[p>>2]=logLength}else if(pname==35720){var source=GLctx.getShaderSource(GL.shaders[shader]);var sourceLength=source?source.length+1:0;HEAP32[p>>2]=sourceLength}else{HEAP32[p>>2]=GLctx.getShaderParameter(GL.shaders[shader],pname)}}function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _emscripten_glGetString(name_){if(GL.stringCache[name_])return GL.stringCache[name_];var ret;switch(name_){case 7939:var exts=GLctx.getSupportedExtensions()||[];exts=exts.concat(exts.map(function(e){return"GL_"+e}));ret=stringToNewUTF8(exts.join(" "));break;case 7936:case 7937:case 37445:case 37446:var s=GLctx.getParameter(name_);if(!s){GL.recordError(1280)}ret=stringToNewUTF8(s);break;case 7938:var glVersion=GLctx.getParameter(7938);{glVersion="OpenGL ES 2.0 ("+glVersion+")"}ret=stringToNewUTF8(glVersion);break;case 35724:var glslVersion=GLctx.getParameter(35724);var ver_re=/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/;var ver_num=glslVersion.match(ver_re);if(ver_num!==null){if(ver_num[1].length==3)ver_num[1]=ver_num[1]+"0";glslVersion="OpenGL ES GLSL ES "+ver_num[1]+" ("+glslVersion+")"}ret=stringToNewUTF8(glslVersion);break;default:GL.recordError(1280);return 0}GL.stringCache[name_]=ret;return ret}function _emscripten_glGetTexParameterfv(target,pname,params){if(!params){GL.recordError(1281);return}HEAPF32[params>>2]=GLctx.getTexParameter(target,pname)}function _emscripten_glGetTexParameteriv(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getTexParameter(target,pname)}function jstoi_q(str){return parseInt(str)}function _emscripten_glGetUniformLocation(program,name){name=UTF8ToString(name);var arrayIndex=0;if(name[name.length-1]=="]"){var leftBrace=name.lastIndexOf("[");arrayIndex=name[leftBrace+1]!="]"?jstoi_q(name.slice(leftBrace+1)):0;name=name.slice(0,leftBrace)}var uniformInfo=GL.programInfos[program]&&GL.programInfos[program].uniforms[name];if(uniformInfo&&arrayIndex>=0&&arrayIndex<uniformInfo[0]){return uniformInfo[1]+arrayIndex}else{return-1}}function emscriptenWebGLGetUniform(program,location,params,type){if(!params){GL.recordError(1281);return}var data=GLctx.getUniform(GL.programs[program],GL.uniforms[location]);if(typeof data=="number"||typeof data=="boolean"){switch(type){case 0:HEAP32[params>>2]=data;break;case 2:HEAPF32[params>>2]=data;break}}else{for(var i=0;i<data.length;i++){switch(type){case 0:HEAP32[params+i*4>>2]=data[i];break;case 2:HEAPF32[params+i*4>>2]=data[i];break}}}}function _emscripten_glGetUniformfv(program,location,params){emscriptenWebGLGetUniform(program,location,params,2)}function _emscripten_glGetUniformiv(program,location,params){emscriptenWebGLGetUniform(program,location,params,0)}function _emscripten_glGetVertexAttribPointerv(index,pname,pointer){if(!pointer){GL.recordError(1281);return}HEAP32[pointer>>2]=GLctx.getVertexAttribOffset(index,pname)}function emscriptenWebGLGetVertexAttrib(index,pname,params,type){if(!params){GL.recordError(1281);return}var data=GLctx.getVertexAttrib(index,pname);if(pname==34975){HEAP32[params>>2]=data&&data["name"]}else if(typeof data=="number"||typeof data=="boolean"){switch(type){case 0:HEAP32[params>>2]=data;break;case 2:HEAPF32[params>>2]=data;break;case 5:HEAP32[params>>2]=Math.fround(data);break}}else{for(var i=0;i<data.length;i++){switch(type){case 0:HEAP32[params+i*4>>2]=data[i];break;case 2:HEAPF32[params+i*4>>2]=data[i];break;case 5:HEAP32[params+i*4>>2]=Math.fround(data[i]);break}}}}function _emscripten_glGetVertexAttribfv(index,pname,params){emscriptenWebGLGetVertexAttrib(index,pname,params,2)}function _emscripten_glGetVertexAttribiv(index,pname,params){emscriptenWebGLGetVertexAttrib(index,pname,params,5)}function _emscripten_glHint(x0,x1){GLctx["hint"](x0,x1)}function _emscripten_glIsBuffer(buffer){var b=GL.buffers[buffer];if(!b)return 0;return GLctx.isBuffer(b)}function _emscripten_glIsEnabled(x0){return GLctx["isEnabled"](x0)}function _emscripten_glIsFramebuffer(framebuffer){var fb=GL.framebuffers[framebuffer];if(!fb)return 0;return GLctx.isFramebuffer(fb)}function _emscripten_glIsProgram(program){program=GL.programs[program];if(!program)return 0;return GLctx.isProgram(program)}function _emscripten_glIsQueryEXT(id){var query=GL.timerQueriesEXT[id];if(!query)return 0;return GLctx.disjointTimerQueryExt["isQueryEXT"](query)}function _emscripten_glIsRenderbuffer(renderbuffer){var rb=GL.renderbuffers[renderbuffer];if(!rb)return 0;return GLctx.isRenderbuffer(rb)}function _emscripten_glIsShader(shader){var s=GL.shaders[shader];if(!s)return 0;return GLctx.isShader(s)}function _emscripten_glIsTexture(id){var texture=GL.textures[id];if(!texture)return 0;return GLctx.isTexture(texture)}function _emscripten_glIsVertexArrayOES(array){var vao=GL.vaos[array];if(!vao)return 0;return GLctx["isVertexArray"](vao)}function _emscripten_glLineWidth(x0){GLctx["lineWidth"](x0)}function _emscripten_glLinkProgram(program){GLctx.linkProgram(GL.programs[program]);GL.populateUniformTable(program)}function _emscripten_glPixelStorei(pname,param){if(pname==3317){GL.unpackAlignment=param}GLctx.pixelStorei(pname,param)}function _emscripten_glPolygonOffset(x0,x1){GLctx["polygonOffset"](x0,x1)}function _emscripten_glQueryCounterEXT(id,target){GLctx.disjointTimerQueryExt["queryCounterEXT"](GL.timerQueriesEXT[id],target)}function computeUnpackAlignedImageSize(width,height,sizePerPixel,alignment){function roundedToNextMultipleOf(x,y){return x+y-1&-y}var plainRowSize=width*sizePerPixel;var alignedRowSize=roundedToNextMultipleOf(plainRowSize,alignment);return height*alignedRowSize}function __colorChannelsInGlTextureFormat(format){var colorChannels={5:3,6:4,8:2,29502:3,29504:4};return colorChannels[format-6402]||1}function heapObjectForWebGLType(type){type-=5120;if(type==1)return HEAPU8;if(type==4)return HEAP32;if(type==6)return HEAPF32;if(type==5||type==28922)return HEAPU32;return HEAPU16}function heapAccessShiftForWebGLHeap(heap){return 31-Math.clz32(heap.BYTES_PER_ELEMENT)}function emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat){var heap=heapObjectForWebGLType(type);var shift=heapAccessShiftForWebGLHeap(heap);var byteSize=1<<shift;var sizePerPixel=__colorChannelsInGlTextureFormat(format)*byteSize;var bytes=computeUnpackAlignedImageSize(width,height,sizePerPixel,GL.unpackAlignment);return heap.subarray(pixels>>shift,pixels+bytes>>shift)}function _emscripten_glReadPixels(x,y,width,height,format,type,pixels){var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);return}GLctx.readPixels(x,y,width,height,format,type,pixelData)}function _emscripten_glReleaseShaderCompiler(){}function _emscripten_glRenderbufferStorage(x0,x1,x2,x3){GLctx["renderbufferStorage"](x0,x1,x2,x3)}function _emscripten_glSampleCoverage(value,invert){GLctx.sampleCoverage(value,!!invert)}function _emscripten_glScissor(x0,x1,x2,x3){GLctx["scissor"](x0,x1,x2,x3)}function _emscripten_glShaderBinary(){GL.recordError(1280)}function _emscripten_glShaderSource(shader,count,string,length){var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}function _emscripten_glStencilFunc(x0,x1,x2){GLctx["stencilFunc"](x0,x1,x2)}function _emscripten_glStencilFuncSeparate(x0,x1,x2,x3){GLctx["stencilFuncSeparate"](x0,x1,x2,x3)}function _emscripten_glStencilMask(x0){GLctx["stencilMask"](x0)}function _emscripten_glStencilMaskSeparate(x0,x1){GLctx["stencilMaskSeparate"](x0,x1)}function _emscripten_glStencilOp(x0,x1,x2){GLctx["stencilOp"](x0,x1,x2)}function _emscripten_glStencilOpSeparate(x0,x1,x2,x3){GLctx["stencilOpSeparate"](x0,x1,x2,x3)}function _emscripten_glTexImage2D(target,level,internalFormat,width,height,border,format,type,pixels){GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels?emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat):null)}function _emscripten_glTexParameterf(x0,x1,x2){GLctx["texParameterf"](x0,x1,x2)}function _emscripten_glTexParameterfv(target,pname,params){var param=HEAPF32[params>>2];GLctx.texParameterf(target,pname,param)}function _emscripten_glTexParameteri(x0,x1,x2){GLctx["texParameteri"](x0,x1,x2)}function _emscripten_glTexParameteriv(target,pname,params){var param=HEAP32[params>>2];GLctx.texParameteri(target,pname,param)}function _emscripten_glTexSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixels){var pixelData=null;if(pixels)pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,0);GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixelData)}function _emscripten_glUniform1f(location,v0){GLctx.uniform1f(GL.uniforms[location],v0)}var miniTempWebGLFloatBuffers=[];function _emscripten_glUniform1fv(location,count,value){if(count<=288){var view=miniTempWebGLFloatBuffers[count-1];for(var i=0;i<count;++i){view[i]=HEAPF32[value+4*i>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*4>>2)}GLctx.uniform1fv(GL.uniforms[location],view)}function _emscripten_glUniform1i(location,v0){GLctx.uniform1i(GL.uniforms[location],v0)}var __miniTempWebGLIntBuffers=[];function _emscripten_glUniform1iv(location,count,value){if(count<=288){var view=__miniTempWebGLIntBuffers[count-1];for(var i=0;i<count;++i){view[i]=HEAP32[value+4*i>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*4>>2)}GLctx.uniform1iv(GL.uniforms[location],view)}function _emscripten_glUniform2f(location,v0,v1){GLctx.uniform2f(GL.uniforms[location],v0,v1)}function _emscripten_glUniform2fv(location,count,value){if(count<=144){var view=miniTempWebGLFloatBuffers[2*count-1];for(var i=0;i<2*count;i+=2){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*8>>2)}GLctx.uniform2fv(GL.uniforms[location],view)}function _emscripten_glUniform2i(location,v0,v1){GLctx.uniform2i(GL.uniforms[location],v0,v1)}function _emscripten_glUniform2iv(location,count,value){if(count<=144){var view=__miniTempWebGLIntBuffers[2*count-1];for(var i=0;i<2*count;i+=2){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*8>>2)}GLctx.uniform2iv(GL.uniforms[location],view)}function _emscripten_glUniform3f(location,v0,v1,v2){GLctx.uniform3f(GL.uniforms[location],v0,v1,v2)}function _emscripten_glUniform3fv(location,count,value){if(count<=96){var view=miniTempWebGLFloatBuffers[3*count-1];for(var i=0;i<3*count;i+=3){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*12>>2)}GLctx.uniform3fv(GL.uniforms[location],view)}function _emscripten_glUniform3i(location,v0,v1,v2){GLctx.uniform3i(GL.uniforms[location],v0,v1,v2)}function _emscripten_glUniform3iv(location,count,value){if(count<=96){var view=__miniTempWebGLIntBuffers[3*count-1];for(var i=0;i<3*count;i+=3){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2];view[i+2]=HEAP32[value+(4*i+8)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*12>>2)}GLctx.uniform3iv(GL.uniforms[location],view)}function _emscripten_glUniform4f(location,v0,v1,v2,v3){GLctx.uniform4f(GL.uniforms[location],v0,v1,v2,v3)}function _emscripten_glUniform4fv(location,count,value){if(count<=72){var view=miniTempWebGLFloatBuffers[4*count-1];var heap=HEAPF32;value>>=2;for(var i=0;i<4*count;i+=4){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3]}}else{var view=HEAPF32.subarray(value>>2,value+count*16>>2)}GLctx.uniform4fv(GL.uniforms[location],view)}function _emscripten_glUniform4i(location,v0,v1,v2,v3){GLctx.uniform4i(GL.uniforms[location],v0,v1,v2,v3)}function _emscripten_glUniform4iv(location,count,value){if(count<=72){var view=__miniTempWebGLIntBuffers[4*count-1];for(var i=0;i<4*count;i+=4){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2];view[i+2]=HEAP32[value+(4*i+8)>>2];view[i+3]=HEAP32[value+(4*i+12)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*16>>2)}GLctx.uniform4iv(GL.uniforms[location],view)}function _emscripten_glUniformMatrix2fv(location,count,transpose,value){if(count<=72){var view=miniTempWebGLFloatBuffers[4*count-1];for(var i=0;i<4*count;i+=4){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2];view[i+3]=HEAPF32[value+(4*i+12)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*16>>2)}GLctx.uniformMatrix2fv(GL.uniforms[location],!!transpose,view)}function _emscripten_glUniformMatrix3fv(location,count,transpose,value){if(count<=32){var view=miniTempWebGLFloatBuffers[9*count-1];for(var i=0;i<9*count;i+=9){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2];view[i+3]=HEAPF32[value+(4*i+12)>>2];view[i+4]=HEAPF32[value+(4*i+16)>>2];view[i+5]=HEAPF32[value+(4*i+20)>>2];view[i+6]=HEAPF32[value+(4*i+24)>>2];view[i+7]=HEAPF32[value+(4*i+28)>>2];view[i+8]=HEAPF32[value+(4*i+32)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*36>>2)}GLctx.uniformMatrix3fv(GL.uniforms[location],!!transpose,view)}function _emscripten_glUniformMatrix4fv(location,count,transpose,value){if(count<=18){var view=miniTempWebGLFloatBuffers[16*count-1];var heap=HEAPF32;value>>=2;for(var i=0;i<16*count;i+=16){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3];view[i+4]=heap[dst+4];view[i+5]=heap[dst+5];view[i+6]=heap[dst+6];view[i+7]=heap[dst+7];view[i+8]=heap[dst+8];view[i+9]=heap[dst+9];view[i+10]=heap[dst+10];view[i+11]=heap[dst+11];view[i+12]=heap[dst+12];view[i+13]=heap[dst+13];view[i+14]=heap[dst+14];view[i+15]=heap[dst+15]}}else{var view=HEAPF32.subarray(value>>2,value+count*64>>2)}GLctx.uniformMatrix4fv(GL.uniforms[location],!!transpose,view)}function _emscripten_glUseProgram(program){GLctx.useProgram(GL.programs[program])}function _emscripten_glValidateProgram(program){GLctx.validateProgram(GL.programs[program])}function _emscripten_glVertexAttrib1f(x0,x1){GLctx["vertexAttrib1f"](x0,x1)}function _emscripten_glVertexAttrib1fv(index,v){GLctx.vertexAttrib1f(index,HEAPF32[v>>2])}function _emscripten_glVertexAttrib2f(x0,x1,x2){GLctx["vertexAttrib2f"](x0,x1,x2)}function _emscripten_glVertexAttrib2fv(index,v){GLctx.vertexAttrib2f(index,HEAPF32[v>>2],HEAPF32[v+4>>2])}function _emscripten_glVertexAttrib3f(x0,x1,x2,x3){GLctx["vertexAttrib3f"](x0,x1,x2,x3)}function _emscripten_glVertexAttrib3fv(index,v){GLctx.vertexAttrib3f(index,HEAPF32[v>>2],HEAPF32[v+4>>2],HEAPF32[v+8>>2])}function _emscripten_glVertexAttrib4f(x0,x1,x2,x3,x4){GLctx["vertexAttrib4f"](x0,x1,x2,x3,x4)}function _emscripten_glVertexAttrib4fv(index,v){GLctx.vertexAttrib4f(index,HEAPF32[v>>2],HEAPF32[v+4>>2],HEAPF32[v+8>>2],HEAPF32[v+12>>2])}function _emscripten_glVertexAttribDivisorANGLE(index,divisor){GLctx["vertexAttribDivisor"](index,divisor)}function _emscripten_glVertexAttribPointer(index,size,type,normalized,stride,ptr){GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}function _emscripten_glViewport(x0,x1,x2,x3){GLctx["viewport"](x0,x1,x2,x3)}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function abortOnCannotGrowMemory(requestedSize){abort("OOM")}function _emscripten_resize_heap(requestedSize){abortOnCannotGrowMemory(requestedSize)}function _emscripten_run_script(ptr){eval(UTF8ToString(ptr))}function _emscripten_sample_gamepad_data(){return(JSEvents.lastGamepadState=navigator.getGamepads?navigator.getGamepads():navigator.webkitGetGamepads?navigator.webkitGetGamepads():null)?0:-1}function fillMouseEventData(eventStruct,e,target){var idx=eventStruct>>2;HEAP32[idx+0]=e.screenX;HEAP32[idx+1]=e.screenY;HEAP32[idx+2]=e.clientX;HEAP32[idx+3]=e.clientY;HEAP32[idx+4]=e.ctrlKey;HEAP32[idx+5]=e.shiftKey;HEAP32[idx+6]=e.altKey;HEAP32[idx+7]=e.metaKey;HEAP16[idx*2+16]=e.button;HEAP16[idx*2+17]=e.buttons;HEAP32[idx+9]=e["movementX"];HEAP32[idx+10]=e["movementY"];var rect=getBoundingClientRect(target);HEAP32[idx+11]=e.clientX-rect.left;HEAP32[idx+12]=e.clientY-rect.top}function registerMouseEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.mouseEvent)JSEvents.mouseEvent=_malloc(64);target=findEventTarget(target);var mouseEventHandlerFunc=function(ev){var e=ev||event;fillMouseEventData(JSEvents.mouseEvent,e,target);if(wasmTable.get(callbackfunc)(eventTypeId,JSEvents.mouseEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:eventTypeString!="mousemove"&&eventTypeString!="mouseenter"&&eventTypeString!="mouseleave",eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:mouseEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_click_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,4,"click",targetThread);return 0}function fillFullscreenChangeEventData(eventStruct){var fullscreenElement=document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement||document.msFullscreenElement;var isFullscreen=!!fullscreenElement;HEAP32[eventStruct>>2]=isFullscreen;HEAP32[eventStruct+4>>2]=JSEvents.fullscreenEnabled();var reportedElement=isFullscreen?fullscreenElement:JSEvents.previousFullscreenElement;var nodeName=JSEvents.getNodeNameForTarget(reportedElement);var id=reportedElement&&reportedElement.id?reportedElement.id:"";stringToUTF8(nodeName,eventStruct+8,128);stringToUTF8(id,eventStruct+136,128);HEAP32[eventStruct+264>>2]=reportedElement?reportedElement.clientWidth:0;HEAP32[eventStruct+268>>2]=reportedElement?reportedElement.clientHeight:0;HEAP32[eventStruct+272>>2]=screen.width;HEAP32[eventStruct+276>>2]=screen.height;if(isFullscreen){JSEvents.previousFullscreenElement=fullscreenElement}}function registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.fullscreenChangeEvent)JSEvents.fullscreenChangeEvent=_malloc(280);var fullscreenChangeEventhandlerFunc=function(ev){var e=ev||event;var fullscreenChangeEvent=JSEvents.fullscreenChangeEvent;fillFullscreenChangeEventData(fullscreenChangeEvent);if(wasmTable.get(callbackfunc)(eventTypeId,fullscreenChangeEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:fullscreenChangeEventhandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_fullscreenchange_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){if(!JSEvents.fullscreenEnabled())return-1;target=findEventTarget(target);if(!target)return-4;registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,19,"fullscreenchange",targetThread);registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,19,"webkitfullscreenchange",targetThread);return 0}function registerGamepadEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.gamepadEvent)JSEvents.gamepadEvent=_malloc(1432);var gamepadEventHandlerFunc=function(ev){var e=ev||event;var gamepadEvent=JSEvents.gamepadEvent;fillGamepadEventData(gamepadEvent,e["gamepad"]);if(wasmTable.get(callbackfunc)(eventTypeId,gamepadEvent,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:gamepadEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_gamepadconnected_callback_on_thread(userData,useCapture,callbackfunc,targetThread){if(!navigator.getGamepads&&!navigator.webkitGetGamepads)return-1;registerGamepadEventCallback(2,userData,useCapture,callbackfunc,26,"gamepadconnected",targetThread);return 0}function _emscripten_set_gamepaddisconnected_callback_on_thread(userData,useCapture,callbackfunc,targetThread){if(!navigator.getGamepads&&!navigator.webkitGetGamepads)return-1;registerGamepadEventCallback(2,userData,useCapture,callbackfunc,27,"gamepaddisconnected",targetThread);return 0}function registerKeyEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.keyEvent)JSEvents.keyEvent=_malloc(164);var keyEventHandlerFunc=function(e){var keyEventData=JSEvents.keyEvent;var idx=keyEventData>>2;HEAP32[idx+0]=e.location;HEAP32[idx+1]=e.ctrlKey;HEAP32[idx+2]=e.shiftKey;HEAP32[idx+3]=e.altKey;HEAP32[idx+4]=e.metaKey;HEAP32[idx+5]=e.repeat;HEAP32[idx+6]=e.charCode;HEAP32[idx+7]=e.keyCode;HEAP32[idx+8]=e.which;stringToUTF8(e.key||"",keyEventData+36,32);stringToUTF8(e.code||"",keyEventData+68,32);stringToUTF8(e.char||"",keyEventData+100,32);stringToUTF8(e.locale||"",keyEventData+132,32);if(wasmTable.get(callbackfunc)(eventTypeId,keyEventData,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:keyEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_keydown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,2,"keydown",targetThread);return 0}var Browser={mainLoop:{scheduler:null,method:"",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause:function(){Browser.mainLoop.scheduler=null;Browser.mainLoop.currentlyRunningMainloop++},resume:function(){Browser.mainLoop.currentlyRunningMainloop++;var timingMode=Browser.mainLoop.timingMode;var timingValue=Browser.mainLoop.timingValue;var func=Browser.mainLoop.func;Browser.mainLoop.func=null;setMainLoop(func,0,false,Browser.mainLoop.arg,true);_emscripten_set_main_loop_timing(timingMode,timingValue);Browser.mainLoop.scheduler()},updateStatus:function(){if(Module["setStatus"]){var message=Module["statusMessage"]||"Please wait...";var remaining=Browser.mainLoop.remainingBlockers;var expected=Browser.mainLoop.expectedBlockers;if(remaining){if(remaining<expected){Module["setStatus"](message+" ("+(expected-remaining)+"/"+expected+")")}else{Module["setStatus"](message)}}else{Module["setStatus"]("")}}},runIter:function(func){if(ABORT)return;if(Module["preMainLoop"]){var preRet=Module["preMainLoop"]();if(preRet===false){return}}try{func()}catch(e){if(e instanceof ExitStatus){return}else if(e=="unwind"){return}else{if(e&&typeof e==="object"&&e.stack)err("exception thrown: "+[e,e.stack]);throw e}}if(Module["postMainLoop"])Module["postMainLoop"]()}},isFullscreen:false,pointerLock:false,moduleContextCreatedCallbacks:[],workers:[],init:function(){if(!Module["preloadPlugins"])Module["preloadPlugins"]=[];if(Browser.initted)return;Browser.initted=true;try{new Blob;Browser.hasBlobConstructor=true}catch(e){Browser.hasBlobConstructor=false;console.log("warning: no blob constructor, cannot create blobs with mimetypes")}Browser.BlobBuilder=typeof MozBlobBuilder!="undefined"?MozBlobBuilder:typeof WebKitBlobBuilder!="undefined"?WebKitBlobBuilder:!Browser.hasBlobConstructor?console.log("warning: no BlobBuilder"):null;Browser.URLObject=typeof window!="undefined"?window.URL?window.URL:window.webkitURL:undefined;if(!Module.noImageDecoding&&typeof Browser.URLObject==="undefined"){console.log("warning: Browser does not support creating object URLs. Built-in browser image decoding will not be available.");Module.noImageDecoding=true}var imagePlugin={};imagePlugin["canHandle"]=function imagePlugin_canHandle(name){return!Module.noImageDecoding&&/\.(jpg|jpeg|png|bmp)$/i.test(name)};imagePlugin["handle"]=function imagePlugin_handle(byteArray,name,onload,onerror){var b=null;if(Browser.hasBlobConstructor){try{b=new Blob([byteArray],{type:Browser.getMimetype(name)});if(b.size!==byteArray.length){b=new Blob([new Uint8Array(byteArray).buffer],{type:Browser.getMimetype(name)})}}catch(e){warnOnce("Blob constructor present but fails: "+e+"; falling back to blob builder")}}if(!b){var bb=new Browser.BlobBuilder;bb.append(new Uint8Array(byteArray).buffer);b=bb.getBlob()}var url=Browser.URLObject.createObjectURL(b);var img=new Image;img.onload=function img_onload(){assert(img.complete,"Image "+name+" could not be decoded");var canvas=document.createElement("canvas");canvas.width=img.width;canvas.height=img.height;var ctx=canvas.getContext("2d");ctx.drawImage(img,0,0);Module["preloadedImages"][name]=canvas;Browser.URLObject.revokeObjectURL(url);if(onload)onload(byteArray)};img.onerror=function img_onerror(event){console.log("Image "+url+" could not be decoded");if(onerror)onerror()};img.src=url};Module["preloadPlugins"].push(imagePlugin);var audioPlugin={};audioPlugin["canHandle"]=function audioPlugin_canHandle(name){return!Module.noAudioDecoding&&name.substr(-4)in{".ogg":1,".wav":1,".mp3":1}};audioPlugin["handle"]=function audioPlugin_handle(byteArray,name,onload,onerror){var done=false;function finish(audio){if(done)return;done=true;Module["preloadedAudios"][name]=audio;if(onload)onload(byteArray)}function fail(){if(done)return;done=true;Module["preloadedAudios"][name]=new Audio;if(onerror)onerror()}if(Browser.hasBlobConstructor){try{var b=new Blob([byteArray],{type:Browser.getMimetype(name)})}catch(e){return fail()}var url=Browser.URLObject.createObjectURL(b);var audio=new Audio;audio.addEventListener("canplaythrough",function(){finish(audio)},false);audio.onerror=function audio_onerror(event){if(done)return;console.log("warning: browser could not fully decode audio "+name+", trying slower base64 approach");function encode64(data){var BASE="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var PAD="=";var ret="";var leftchar=0;var leftbits=0;for(var i=0;i<data.length;i++){leftchar=leftchar<<8|data[i];leftbits+=8;while(leftbits>=6){var curr=leftchar>>leftbits-6&63;leftbits-=6;ret+=BASE[curr]}}if(leftbits==2){ret+=BASE[(leftchar&3)<<4];ret+=PAD+PAD}else if(leftbits==4){ret+=BASE[(leftchar&15)<<2];ret+=PAD}return ret}audio.src="data:audio/x-"+name.substr(-3)+";base64,"+encode64(byteArray);finish(audio)};audio.src=url;Browser.safeSetTimeout(function(){finish(audio)},1e4)}else{return fail()}};Module["preloadPlugins"].push(audioPlugin);function pointerLockChange(){Browser.pointerLock=document["pointerLockElement"]===Module["canvas"]||document["mozPointerLockElement"]===Module["canvas"]||document["webkitPointerLockElement"]===Module["canvas"]||document["msPointerLockElement"]===Module["canvas"]}var canvas=Module["canvas"];if(canvas){canvas.requestPointerLock=canvas["requestPointerLock"]||canvas["mozRequestPointerLock"]||canvas["webkitRequestPointerLock"]||canvas["msRequestPointerLock"]||function(){};canvas.exitPointerLock=document["exitPointerLock"]||document["mozExitPointerLock"]||document["webkitExitPointerLock"]||document["msExitPointerLock"]||function(){};canvas.exitPointerLock=canvas.exitPointerLock.bind(document);document.addEventListener("pointerlockchange",pointerLockChange,false);document.addEventListener("mozpointerlockchange",pointerLockChange,false);document.addEventListener("webkitpointerlockchange",pointerLockChange,false);document.addEventListener("mspointerlockchange",pointerLockChange,false);if(Module["elementPointerLock"]){canvas.addEventListener("click",function(ev){if(!Browser.pointerLock&&Module["canvas"].requestPointerLock){Module["canvas"].requestPointerLock();ev.preventDefault()}},false)}}},createContext:function(canvas,useWebGL,setInModule,webGLContextAttributes){if(useWebGL&&Module.ctx&&canvas==Module.canvas)return Module.ctx;var ctx;var contextHandle;if(useWebGL){var contextAttributes={antialias:false,alpha:false,majorVersion:1};if(webGLContextAttributes){for(var attribute in webGLContextAttributes){contextAttributes[attribute]=webGLContextAttributes[attribute]}}if(typeof GL!=="undefined"){contextHandle=GL.createContext(canvas,contextAttributes);if(contextHandle){ctx=GL.getContext(contextHandle).GLctx}}}else{ctx=canvas.getContext("2d")}if(!ctx)return null;if(setInModule){if(!useWebGL)assert(typeof GLctx==="undefined","cannot set in module if GLctx is used, but we are a non-GL context that would replace it");Module.ctx=ctx;if(useWebGL)GL.makeContextCurrent(contextHandle);Module.useWebGL=useWebGL;Browser.moduleContextCreatedCallbacks.forEach(function(callback){callback()});Browser.init()}return ctx},destroyContext:function(canvas,useWebGL,setInModule){},fullscreenHandlersInstalled:false,lockPointer:undefined,resizeCanvas:undefined,requestFullscreen:function(lockPointer,resizeCanvas){Browser.lockPointer=lockPointer;Browser.resizeCanvas=resizeCanvas;if(typeof Browser.lockPointer==="undefined")Browser.lockPointer=true;if(typeof Browser.resizeCanvas==="undefined")Browser.resizeCanvas=false;var canvas=Module["canvas"];function fullscreenChange(){Browser.isFullscreen=false;var canvasContainer=canvas.parentNode;if((document["fullscreenElement"]||document["mozFullScreenElement"]||document["msFullscreenElement"]||document["webkitFullscreenElement"]||document["webkitCurrentFullScreenElement"])===canvasContainer){canvas.exitFullscreen=Browser.exitFullscreen;if(Browser.lockPointer)canvas.requestPointerLock();Browser.isFullscreen=true;if(Browser.resizeCanvas){Browser.setFullscreenCanvasSize()}else{Browser.updateCanvasDimensions(canvas)}}else{canvasContainer.parentNode.insertBefore(canvas,canvasContainer);canvasContainer.parentNode.removeChild(canvasContainer);if(Browser.resizeCanvas){Browser.setWindowedCanvasSize()}else{Browser.updateCanvasDimensions(canvas)}}if(Module["onFullScreen"])Module["onFullScreen"](Browser.isFullscreen);if(Module["onFullscreen"])Module["onFullscreen"](Browser.isFullscreen)}if(!Browser.fullscreenHandlersInstalled){Browser.fullscreenHandlersInstalled=true;document.addEventListener("fullscreenchange",fullscreenChange,false);document.addEventListener("mozfullscreenchange",fullscreenChange,false);document.addEventListener("webkitfullscreenchange",fullscreenChange,false);document.addEventListener("MSFullscreenChange",fullscreenChange,false)}var canvasContainer=document.createElement("div");canvas.parentNode.insertBefore(canvasContainer,canvas);canvasContainer.appendChild(canvas);canvasContainer.requestFullscreen=canvasContainer["requestFullscreen"]||canvasContainer["mozRequestFullScreen"]||canvasContainer["msRequestFullscreen"]||(canvasContainer["webkitRequestFullscreen"]?function(){canvasContainer["webkitRequestFullscreen"](Element["ALLOW_KEYBOARD_INPUT"])}:null)||(canvasContainer["webkitRequestFullScreen"]?function(){canvasContainer["webkitRequestFullScreen"](Element["ALLOW_KEYBOARD_INPUT"])}:null);canvasContainer.requestFullscreen()},exitFullscreen:function(){if(!Browser.isFullscreen){return false}var CFS=document["exitFullscreen"]||document["cancelFullScreen"]||document["mozCancelFullScreen"]||document["msExitFullscreen"]||document["webkitCancelFullScreen"]||function(){};CFS.apply(document,[]);return true},nextRAF:0,fakeRequestAnimationFrame:function(func){var now=Date.now();if(Browser.nextRAF===0){Browser.nextRAF=now+1e3/60}else{while(now+2>=Browser.nextRAF){Browser.nextRAF+=1e3/60}}var delay=Math.max(Browser.nextRAF-now,0);setTimeout(func,delay)},requestAnimationFrame:function(func){if(typeof requestAnimationFrame==="function"){requestAnimationFrame(func);return}var RAF=Browser.fakeRequestAnimationFrame;RAF(func)},safeRequestAnimationFrame:function(func){return Browser.requestAnimationFrame(function(){if(ABORT)return;func()})},safeSetTimeout:function(func,timeout){noExitRuntime=true;return setTimeout(function(){if(ABORT)return;func()},timeout)},getMimetype:function(name){return{"jpg":"image/jpeg","jpeg":"image/jpeg","png":"image/png","bmp":"image/bmp","ogg":"audio/ogg","wav":"audio/wav","mp3":"audio/mpeg"}[name.substr(name.lastIndexOf(".")+1)]},getUserMedia:function(func){if(!window.getUserMedia){window.getUserMedia=navigator["getUserMedia"]||navigator["mozGetUserMedia"]}window.getUserMedia(func)},getMovementX:function(event){return event["movementX"]||event["mozMovementX"]||event["webkitMovementX"]||0},getMovementY:function(event){return event["movementY"]||event["mozMovementY"]||event["webkitMovementY"]||0},getMouseWheelDelta:function(event){var delta=0;switch(event.type){case"DOMMouseScroll":delta=event.detail/3;break;case"mousewheel":delta=event.wheelDelta/120;break;case"wheel":delta=event.deltaY;switch(event.deltaMode){case 0:delta/=100;break;case 1:delta/=3;break;case 2:delta*=80;break;default:throw"unrecognized mouse wheel delta mode: "+event.deltaMode}break;default:throw"unrecognized mouse wheel event: "+event.type}return delta},mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,touches:{},lastTouches:{},calculateMouseEvent:function(event){if(Browser.pointerLock){if(event.type!="mousemove"&&"mozMovementX"in event){Browser.mouseMovementX=Browser.mouseMovementY=0}else{Browser.mouseMovementX=Browser.getMovementX(event);Browser.mouseMovementY=Browser.getMovementY(event)}if(typeof SDL!="undefined"){Browser.mouseX=SDL.mouseX+Browser.mouseMovementX;Browser.mouseY=SDL.mouseY+Browser.mouseMovementY}else{Browser.mouseX+=Browser.mouseMovementX;Browser.mouseY+=Browser.mouseMovementY}}else{var rect=Module["canvas"].getBoundingClientRect();var cw=Module["canvas"].width;var ch=Module["canvas"].height;var scrollX=typeof window.scrollX!=="undefined"?window.scrollX:window.pageXOffset;var scrollY=typeof window.scrollY!=="undefined"?window.scrollY:window.pageYOffset;if(event.type==="touchstart"||event.type==="touchend"||event.type==="touchmove"){var touch=event.touch;if(touch===undefined){return}var adjustedX=touch.pageX-(scrollX+rect.left);var adjustedY=touch.pageY-(scrollY+rect.top);adjustedX=adjustedX*(cw/rect.width);adjustedY=adjustedY*(ch/rect.height);var coords={x:adjustedX,y:adjustedY};if(event.type==="touchstart"){Browser.lastTouches[touch.identifier]=coords;Browser.touches[touch.identifier]=coords}else if(event.type==="touchend"||event.type==="touchmove"){var last=Browser.touches[touch.identifier];if(!last)last=coords;Browser.lastTouches[touch.identifier]=last;Browser.touches[touch.identifier]=coords}return}var x=event.pageX-(scrollX+rect.left);var y=event.pageY-(scrollY+rect.top);x=x*(cw/rect.width);y=y*(ch/rect.height);Browser.mouseMovementX=x-Browser.mouseX;Browser.mouseMovementY=y-Browser.mouseY;Browser.mouseX=x;Browser.mouseY=y}},asyncLoad:function(url,onload,onerror,noRunDep){var dep=!noRunDep?getUniqueRunDependency("al "+url):"";readAsync(url,function(arrayBuffer){assert(arrayBuffer,'Loading data file "'+url+'" failed (no arrayBuffer).');onload(new Uint8Array(arrayBuffer));if(dep)removeRunDependency(dep)},function(event){if(onerror){onerror()}else{throw'Loading data file "'+url+'" failed.'}});if(dep)addRunDependency(dep)},resizeListeners:[],updateResizeListeners:function(){var canvas=Module["canvas"];Browser.resizeListeners.forEach(function(listener){listener(canvas.width,canvas.height)})},setCanvasSize:function(width,height,noUpdates){var canvas=Module["canvas"];Browser.updateCanvasDimensions(canvas,width,height);if(!noUpdates)Browser.updateResizeListeners()},windowedWidth:0,windowedHeight:0,setFullscreenCanvasSize:function(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>2];flags=flags|8388608;HEAP32[SDL.screen>>2]=flags}Browser.updateCanvasDimensions(Module["canvas"]);Browser.updateResizeListeners()},setWindowedCanvasSize:function(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>2];flags=flags&~8388608;HEAP32[SDL.screen>>2]=flags}Browser.updateCanvasDimensions(Module["canvas"]);Browser.updateResizeListeners()},updateCanvasDimensions:function(canvas,wNative,hNative){if(wNative&&hNative){canvas.widthNative=wNative;canvas.heightNative=hNative}else{wNative=canvas.widthNative;hNative=canvas.heightNative}var w=wNative;var h=hNative;if(Module["forcedAspectRatio"]&&Module["forcedAspectRatio"]>0){if(w/h<Module["forcedAspectRatio"]){w=Math.round(h*Module["forcedAspectRatio"])}else{h=Math.round(w/Module["forcedAspectRatio"])}}if((document["fullscreenElement"]||document["mozFullScreenElement"]||document["msFullscreenElement"]||document["webkitFullscreenElement"]||document["webkitCurrentFullScreenElement"])===canvas.parentNode&&typeof screen!="undefined"){var factor=Math.min(screen.width/w,screen.height/h);w=Math.round(w*factor);h=Math.round(h*factor)}if(Browser.resizeCanvas){if(canvas.width!=w)canvas.width=w;if(canvas.height!=h)canvas.height=h;if(typeof canvas.style!="undefined"){canvas.style.removeProperty("width");canvas.style.removeProperty("height")}}else{if(canvas.width!=wNative)canvas.width=wNative;if(canvas.height!=hNative)canvas.height=hNative;if(typeof canvas.style!="undefined"){if(w!=wNative||h!=hNative){canvas.style.setProperty("width",w+"px","important");canvas.style.setProperty("height",h+"px","important")}else{canvas.style.removeProperty("width");canvas.style.removeProperty("height")}}}},wgetRequests:{},nextWgetRequestHandle:0,getNextWgetRequestHandle:function(){var handle=Browser.nextWgetRequestHandle;Browser.nextWgetRequestHandle++;return handle}};function _emscripten_set_main_loop_timing(mode,value){Browser.mainLoop.timingMode=mode;Browser.mainLoop.timingValue=value;if(!Browser.mainLoop.func){return 1}if(mode==0){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setTimeout(){var timeUntilNextTick=Math.max(0,Browser.mainLoop.tickStartTime+value-_emscripten_get_now())|0;setTimeout(Browser.mainLoop.runner,timeUntilNextTick)};Browser.mainLoop.method="timeout"}else if(mode==1){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_rAF(){Browser.requestAnimationFrame(Browser.mainLoop.runner)};Browser.mainLoop.method="rAF"}else if(mode==2){if(typeof setImmediate==="undefined"){var setImmediates=[];var emscriptenMainLoopMessageId="setimmediate";var Browser_setImmediate_messageHandler=function(event){if(event.data===emscriptenMainLoopMessageId||event.data.target===emscriptenMainLoopMessageId){event.stopPropagation();setImmediates.shift()()}};addEventListener("message",Browser_setImmediate_messageHandler,true);setImmediate=function Browser_emulated_setImmediate(func){setImmediates.push(func);if(ENVIRONMENT_IS_WORKER){if(Module["setImmediates"]===undefined)Module["setImmediates"]=[];Module["setImmediates"].push(func);postMessage({target:emscriptenMainLoopMessageId})}else postMessage(emscriptenMainLoopMessageId,"*")}}Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setImmediate(){setImmediate(Browser.mainLoop.runner)};Browser.mainLoop.method="immediate"}return 0}var _emscripten_get_now;if(ENVIRONMENT_IS_NODE){_emscripten_get_now=function(){var t=process["hrtime"]();return t[0]*1e3+t[1]/1e6}}else if(typeof dateNow!=="undefined"){_emscripten_get_now=dateNow}else _emscripten_get_now=function(){return performance.now()};function setMainLoop(browserIterationFunc,fps,simulateInfiniteLoop,arg,noSetTiming){noExitRuntime=true;assert(!Browser.mainLoop.func,"emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters.");Browser.mainLoop.func=browserIterationFunc;Browser.mainLoop.arg=arg;var thisMainLoopId=Browser.mainLoop.currentlyRunningMainloop;Browser.mainLoop.runner=function Browser_mainLoop_runner(){if(ABORT)return;if(Browser.mainLoop.queue.length>0){var start=Date.now();var blocker=Browser.mainLoop.queue.shift();blocker.func(blocker.arg);if(Browser.mainLoop.remainingBlockers){var remaining=Browser.mainLoop.remainingBlockers;var next=remaining%1==0?remaining-1:Math.floor(remaining);if(blocker.counted){Browser.mainLoop.remainingBlockers=next}else{next=next+.5;Browser.mainLoop.remainingBlockers=(8*remaining+next)/9}}console.log('main loop blocker "'+blocker.name+'" took '+(Date.now()-start)+" ms");Browser.mainLoop.updateStatus();if(thisMainLoopId<Browser.mainLoop.currentlyRunningMainloop)return;setTimeout(Browser.mainLoop.runner,0);return}if(thisMainLoopId<Browser.mainLoop.currentlyRunningMainloop)return;Browser.mainLoop.currentFrameNumber=Browser.mainLoop.currentFrameNumber+1|0;if(Browser.mainLoop.timingMode==1&&Browser.mainLoop.timingValue>1&&Browser.mainLoop.currentFrameNumber%Browser.mainLoop.timingValue!=0){Browser.mainLoop.scheduler();return}else if(Browser.mainLoop.timingMode==0){Browser.mainLoop.tickStartTime=_emscripten_get_now()}Browser.mainLoop.runIter(browserIterationFunc);if(thisMainLoopId<Browser.mainLoop.currentlyRunningMainloop)return;if(typeof SDL==="object"&&SDL.audio&&SDL.audio.queueNewAudioData)SDL.audio.queueNewAudioData();Browser.mainLoop.scheduler()};if(!noSetTiming){if(fps&&fps>0)_emscripten_set_main_loop_timing(0,1e3/fps);else _emscripten_set_main_loop_timing(1,1);Browser.mainLoop.scheduler()}if(simulateInfiniteLoop){throw"unwind"}}function _emscripten_set_main_loop(func,fps,simulateInfiniteLoop){var browserIterationFunc=wasmTable.get(func);setMainLoop(browserIterationFunc,fps,simulateInfiniteLoop)}function registerTouchEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.touchEvent)JSEvents.touchEvent=_malloc(1684);target=findEventTarget(target);var touchEventHandlerFunc=function(e){var touches={};var et=e.touches;for(var i=0;i<et.length;++i){var touch=et[i];touches[touch.identifier]=touch}et=e.changedTouches;for(var i=0;i<et.length;++i){var touch=et[i];touch.isChanged=1;touches[touch.identifier]=touch}et=e.targetTouches;for(var i=0;i<et.length;++i){touches[et[i].identifier].onTarget=1}var touchEvent=JSEvents.touchEvent;var idx=touchEvent>>2;HEAP32[idx+1]=e.ctrlKey;HEAP32[idx+2]=e.shiftKey;HEAP32[idx+3]=e.altKey;HEAP32[idx+4]=e.metaKey;idx+=5;var targetRect=getBoundingClientRect(target);var numTouches=0;for(var i in touches){var t=touches[i];HEAP32[idx+0]=t.identifier;HEAP32[idx+1]=t.screenX;HEAP32[idx+2]=t.screenY;HEAP32[idx+3]=t.clientX;HEAP32[idx+4]=t.clientY;HEAP32[idx+5]=t.pageX;HEAP32[idx+6]=t.pageY;HEAP32[idx+7]=t.isChanged;HEAP32[idx+8]=t.onTarget;HEAP32[idx+9]=t.clientX-targetRect.left;HEAP32[idx+10]=t.clientY-targetRect.top;idx+=13;if(++numTouches>31){break}}HEAP32[touchEvent>>2]=numTouches;if(wasmTable.get(callbackfunc)(eventTypeId,touchEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:eventTypeString=="touchstart"||eventTypeString=="touchend",eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:touchEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_touchcancel_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerTouchEventCallback(target,userData,useCapture,callbackfunc,25,"touchcancel",targetThread);return 0}function _emscripten_set_touchend_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerTouchEventCallback(target,userData,useCapture,callbackfunc,23,"touchend",targetThread);return 0}function _emscripten_set_touchmove_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerTouchEventCallback(target,userData,useCapture,callbackfunc,24,"touchmove",targetThread);return 0}function _emscripten_set_touchstart_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerTouchEventCallback(target,userData,useCapture,callbackfunc,22,"touchstart",targetThread);return 0}function _emscripten_thread_sleep(msecs){var start=_emscripten_get_now();while(_emscripten_get_now()-start<msecs){}}function _exit(status){exit(status)}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_read(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doReadv(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var stream=SYSCALLS.getStreamFromFD(fd);var HIGH_OFFSET=4294967296;var offset=offset_high*HIGH_OFFSET+(offset_low>>>0);var DOUBLE_LIMIT=9007199254740992;if(offset<=-DOUBLE_LIMIT||offset>=DOUBLE_LIMIT){return-61}FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doWritev(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _glActiveTexture(x0){GLctx["activeTexture"](x0)}function _glAttachShader(program,shader){GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _glBindAttribLocation(program,index,name){GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))}function _glBindBuffer(target,buffer){GLctx.bindBuffer(target,GL.buffers[buffer])}function _glBindTexture(target,texture){GLctx.bindTexture(target,GL.textures[texture])}function _glBlendFunc(x0,x1){GLctx["blendFunc"](x0,x1)}function _glBufferData(target,size,data,usage){GLctx.bufferData(target,data?HEAPU8.subarray(data,data+size):size,usage)}function _glBufferSubData(target,offset,size,data){GLctx.bufferSubData(target,offset,HEAPU8.subarray(data,data+size))}function _glClear(x0){GLctx["clear"](x0)}function _glClearColor(x0,x1,x2,x3){GLctx["clearColor"](x0,x1,x2,x3)}function _glClearDepthf(x0){GLctx["clearDepth"](x0)}function _glCompileShader(shader){GLctx.compileShader(GL.shaders[shader])}function _glCompressedTexImage2D(target,level,internalFormat,width,height,border,imageSize,data){GLctx["compressedTexImage2D"](target,level,internalFormat,width,height,border,data?HEAPU8.subarray(data,data+imageSize):null)}function _glCreateProgram(){var id=GL.getNewId(GL.programs);var program=GLctx.createProgram();program.name=id;GL.programs[id]=program;return id}function _glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}function _glCullFace(x0){GLctx["cullFace"](x0)}function _glDeleteBuffers(n,buffers){for(var i=0;i<n;i++){var id=HEAP32[buffers+i*4>>2];var buffer=GL.buffers[id];if(!buffer)continue;GLctx.deleteBuffer(buffer);buffer.name=0;GL.buffers[id]=null}}function _glDeleteProgram(id){if(!id)return;var program=GL.programs[id];if(!program){GL.recordError(1281);return}GLctx.deleteProgram(program);program.name=0;GL.programs[id]=null;GL.programInfos[id]=null}function _glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}function _glDeleteTextures(n,textures){for(var i=0;i<n;i++){var id=HEAP32[textures+i*4>>2];var texture=GL.textures[id];if(!texture)continue;GLctx.deleteTexture(texture);texture.name=0;GL.textures[id]=null}}function _glDepthFunc(x0){GLctx["depthFunc"](x0)}function _glDetachShader(program,shader){GLctx.detachShader(GL.programs[program],GL.shaders[shader])}function _glDisable(x0){GLctx["disable"](x0)}function _glDisableVertexAttribArray(index){GLctx.disableVertexAttribArray(index)}function _glDrawArrays(mode,first,count){GLctx.drawArrays(mode,first,count)}function _glDrawElements(mode,count,type,indices){GLctx.drawElements(mode,count,type,indices)}function _glEnable(x0){GLctx["enable"](x0)}function _glEnableVertexAttribArray(index){GLctx.enableVertexAttribArray(index)}function _glFrontFace(x0){GLctx["frontFace"](x0)}function _glGenBuffers(n,buffers){__glGenObject(n,buffers,"createBuffer",GL.buffers)}function _glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures)}function _glGetAttribLocation(program,name){return GLctx.getAttribLocation(GL.programs[program],UTF8ToString(name))}function _glGetFloatv(name_,p){emscriptenWebGLGet(name_,p,2)}function _glGetProgramInfoLog(program,maxLength,length,infoLog){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _glGetProgramiv(program,pname,p){if(!p){GL.recordError(1281);return}if(program>=GL.counter){GL.recordError(1281);return}var ptable=GL.programInfos[program];if(!ptable){GL.recordError(1282);return}if(pname==35716){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";HEAP32[p>>2]=log.length+1}else if(pname==35719){HEAP32[p>>2]=ptable.maxUniformLength}else if(pname==35722){if(ptable.maxAttributeLength==-1){program=GL.programs[program];var numAttribs=GLctx.getProgramParameter(program,35721);ptable.maxAttributeLength=0;for(var i=0;i<numAttribs;++i){var activeAttrib=GLctx.getActiveAttrib(program,i);ptable.maxAttributeLength=Math.max(ptable.maxAttributeLength,activeAttrib.name.length+1)}}HEAP32[p>>2]=ptable.maxAttributeLength}else if(pname==35381){if(ptable.maxUniformBlockNameLength==-1){program=GL.programs[program];var numBlocks=GLctx.getProgramParameter(program,35382);ptable.maxUniformBlockNameLength=0;for(var i=0;i<numBlocks;++i){var activeBlockName=GLctx.getActiveUniformBlockName(program,i);ptable.maxUniformBlockNameLength=Math.max(ptable.maxUniformBlockNameLength,activeBlockName.length+1)}}HEAP32[p>>2]=ptable.maxUniformBlockNameLength}else{HEAP32[p>>2]=GLctx.getProgramParameter(GL.programs[program],pname)}}function _glGetShaderInfoLog(shader,maxLength,length,infoLog){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _glGetShaderiv(shader,pname,p){if(!p){GL.recordError(1281);return}if(pname==35716){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var logLength=log?log.length+1:0;HEAP32[p>>2]=logLength}else if(pname==35720){var source=GLctx.getShaderSource(GL.shaders[shader]);var sourceLength=source?source.length+1:0;HEAP32[p>>2]=sourceLength}else{HEAP32[p>>2]=GLctx.getShaderParameter(GL.shaders[shader],pname)}}function _glGetString(name_){if(GL.stringCache[name_])return GL.stringCache[name_];var ret;switch(name_){case 7939:var exts=GLctx.getSupportedExtensions()||[];exts=exts.concat(exts.map(function(e){return"GL_"+e}));ret=stringToNewUTF8(exts.join(" "));break;case 7936:case 7937:case 37445:case 37446:var s=GLctx.getParameter(name_);if(!s){GL.recordError(1280)}ret=stringToNewUTF8(s);break;case 7938:var glVersion=GLctx.getParameter(7938);{glVersion="OpenGL ES 2.0 ("+glVersion+")"}ret=stringToNewUTF8(glVersion);break;case 35724:var glslVersion=GLctx.getParameter(35724);var ver_re=/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/;var ver_num=glslVersion.match(ver_re);if(ver_num!==null){if(ver_num[1].length==3)ver_num[1]=ver_num[1]+"0";glslVersion="OpenGL ES GLSL ES "+ver_num[1]+" ("+glslVersion+")"}ret=stringToNewUTF8(glslVersion);break;default:GL.recordError(1280);return 0}GL.stringCache[name_]=ret;return ret}function _glGetUniformLocation(program,name){name=UTF8ToString(name);var arrayIndex=0;if(name[name.length-1]=="]"){var leftBrace=name.lastIndexOf("[");arrayIndex=name[leftBrace+1]!="]"?jstoi_q(name.slice(leftBrace+1)):0;name=name.slice(0,leftBrace)}var uniformInfo=GL.programInfos[program]&&GL.programInfos[program].uniforms[name];if(uniformInfo&&arrayIndex>=0&&arrayIndex<uniformInfo[0]){return uniformInfo[1]+arrayIndex}else{return-1}}function _glLinkProgram(program){GLctx.linkProgram(GL.programs[program]);GL.populateUniformTable(program)}function _glPixelStorei(pname,param){if(pname==3317){GL.unpackAlignment=param}GLctx.pixelStorei(pname,param)}function _glReadPixels(x,y,width,height,format,type,pixels){var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);return}GLctx.readPixels(x,y,width,height,format,type,pixelData)}function _glShaderSource(shader,count,string,length){var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}function _glTexImage2D(target,level,internalFormat,width,height,border,format,type,pixels){GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels?emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat):null)}function _glTexParameteri(x0,x1,x2){GLctx["texParameteri"](x0,x1,x2)}function _glUniform1i(location,v0){GLctx.uniform1i(GL.uniforms[location],v0)}function _glUniform4f(location,v0,v1,v2,v3){GLctx.uniform4f(GL.uniforms[location],v0,v1,v2,v3)}function _glUniformMatrix4fv(location,count,transpose,value){if(count<=18){var view=miniTempWebGLFloatBuffers[16*count-1];var heap=HEAPF32;value>>=2;for(var i=0;i<16*count;i+=16){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3];view[i+4]=heap[dst+4];view[i+5]=heap[dst+5];view[i+6]=heap[dst+6];view[i+7]=heap[dst+7];view[i+8]=heap[dst+8];view[i+9]=heap[dst+9];view[i+10]=heap[dst+10];view[i+11]=heap[dst+11];view[i+12]=heap[dst+12];view[i+13]=heap[dst+13];view[i+14]=heap[dst+14];view[i+15]=heap[dst+15]}}else{var view=HEAPF32.subarray(value>>2,value+count*64>>2)}GLctx.uniformMatrix4fv(GL.uniforms[location],!!transpose,view)}function _glUseProgram(program){GLctx.useProgram(GL.programs[program])}function _glVertexAttribPointer(index,size,type,normalized,stride,ptr){GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}function _glViewport(x0,x1,x2,x3){GLctx["viewport"](x0,x1,x2,x3)}function GLFW_Window(id,width,height,title,monitor,share){this.id=id;this.x=0;this.y=0;this.fullscreen=false;this.storedX=0;this.storedY=0;this.width=width;this.height=height;this.storedWidth=width;this.storedHeight=height;this.title=title;this.monitor=monitor;this.share=share;this.attributes=GLFW.hints;this.inputModes={208897:212993,208898:0,208899:0};this.buttons=0;this.keys=new Array;this.domKeys=new Array;this.shouldClose=0;this.title=null;this.windowPosFunc=null;this.windowSizeFunc=null;this.windowCloseFunc=null;this.windowRefreshFunc=null;this.windowFocusFunc=null;this.windowIconifyFunc=null;this.framebufferSizeFunc=null;this.mouseButtonFunc=null;this.cursorPosFunc=null;this.cursorEnterFunc=null;this.scrollFunc=null;this.dropFunc=null;this.keyFunc=null;this.charFunc=null;this.userptr=null}var GLFW={WindowFromId:function(id){if(id<=0||!GLFW.windows)return null;return GLFW.windows[id-1]},joystickFunc:null,errorFunc:null,monitorFunc:null,active:null,windows:null,monitors:null,monitorString:null,versionString:null,initialTime:null,extensions:null,hints:null,defaultHints:{131073:0,131074:0,131075:1,131076:1,131077:1,135169:8,135170:8,135171:8,135172:8,135173:24,135174:8,135175:0,135176:0,135177:0,135178:0,135179:0,135180:0,135181:0,135182:0,135183:0,139265:196609,139266:1,139267:0,139268:0,139269:0,139270:0,139271:0,139272:0},DOMToGLFWKeyCode:function(keycode){switch(keycode){case 32:return 32;case 222:return 39;case 188:return 44;case 173:return 45;case 189:return 45;case 190:return 46;case 191:return 47;case 48:return 48;case 49:return 49;case 50:return 50;case 51:return 51;case 52:return 52;case 53:return 53;case 54:return 54;case 55:return 55;case 56:return 56;case 57:return 57;case 59:return 59;case 61:return 61;case 187:return 61;case 65:return 65;case 66:return 66;case 67:return 67;case 68:return 68;case 69:return 69;case 70:return 70;case 71:return 71;case 72:return 72;case 73:return 73;case 74:return 74;case 75:return 75;case 76:return 76;case 77:return 77;case 78:return 78;case 79:return 79;case 80:return 80;case 81:return 81;case 82:return 82;case 83:return 83;case 84:return 84;case 85:return 85;case 86:return 86;case 87:return 87;case 88:return 88;case 89:return 89;case 90:return 90;case 219:return 91;case 220:return 92;case 221:return 93;case 192:return 94;case 27:return 256;case 13:return 257;case 9:return 258;case 8:return 259;case 45:return 260;case 46:return 261;case 39:return 262;case 37:return 263;case 40:return 264;case 38:return 265;case 33:return 266;case 34:return 267;case 36:return 268;case 35:return 269;case 20:return 280;case 145:return 281;case 144:return 282;case 44:return 283;case 19:return 284;case 112:return 290;case 113:return 291;case 114:return 292;case 115:return 293;case 116:return 294;case 117:return 295;case 118:return 296;case 119:return 297;case 120:return 298;case 121:return 299;case 122:return 300;case 123:return 301;case 124:return 302;case 125:return 303;case 126:return 304;case 127:return 305;case 128:return 306;case 129:return 307;case 130:return 308;case 131:return 309;case 132:return 310;case 133:return 311;case 134:return 312;case 135:return 313;case 136:return 314;case 96:return 320;case 97:return 321;case 98:return 322;case 99:return 323;case 100:return 324;case 101:return 325;case 102:return 326;case 103:return 327;case 104:return 328;case 105:return 329;case 110:return 330;case 111:return 331;case 106:return 332;case 109:return 333;case 107:return 334;case 16:return 340;case 17:return 341;case 18:return 342;case 91:return 343;case 93:return 348;default:return-1}},getModBits:function(win){var mod=0;if(win.keys[340])mod|=1;if(win.keys[341])mod|=2;if(win.keys[342])mod|=4;if(win.keys[343])mod|=8;return mod},onKeyPress:function(event){if(!GLFW.active||!GLFW.active.charFunc)return;if(event.ctrlKey||event.metaKey)return;var charCode=event.charCode;if(charCode==0||charCode>=0&&charCode<=31)return;wasmTable.get(GLFW.active.charFunc)(GLFW.active.id,charCode)},onKeyChanged:function(keyCode,status){if(!GLFW.active)return;var key=GLFW.DOMToGLFWKeyCode(keyCode);if(key==-1)return;var repeat=status&&GLFW.active.keys[key];GLFW.active.keys[key]=status;GLFW.active.domKeys[keyCode]=status;if(!GLFW.active.keyFunc)return;if(repeat)status=2;wasmTable.get(GLFW.active.keyFunc)(GLFW.active.id,key,keyCode,status,GLFW.getModBits(GLFW.active))},onGamepadConnected:function(event){GLFW.refreshJoysticks()},onGamepadDisconnected:function(event){GLFW.refreshJoysticks()},onKeydown:function(event){GLFW.onKeyChanged(event.keyCode,1);if(event.keyCode===8||event.keyCode===9){event.preventDefault()}},onKeyup:function(event){GLFW.onKeyChanged(event.keyCode,0)},onBlur:function(event){if(!GLFW.active)return;for(var i=0;i<GLFW.active.domKeys.length;++i){if(GLFW.active.domKeys[i]){GLFW.onKeyChanged(i,0)}}},onMousemove:function(event){if(!GLFW.active)return;Browser.calculateMouseEvent(event);if(event.target!=Module["canvas"]||!GLFW.active.cursorPosFunc)return;wasmTable.get(GLFW.active.cursorPosFunc)(GLFW.active.id,Browser.mouseX,Browser.mouseY)},DOMToGLFWMouseButton:function(event){var eventButton=event["button"];if(eventButton>0){if(eventButton==1){eventButton=2}else{eventButton=1}}return eventButton},onMouseenter:function(event){if(!GLFW.active)return;if(event.target!=Module["canvas"]||!GLFW.active.cursorEnterFunc)return;wasmTable.get(GLFW.active.cursorEnterFunc)(GLFW.active.id,1)},onMouseleave:function(event){if(!GLFW.active)return;if(event.target!=Module["canvas"]||!GLFW.active.cursorEnterFunc)return;wasmTable.get(GLFW.active.cursorEnterFunc)(GLFW.active.id,0)},onMouseButtonChanged:function(event,status){if(!GLFW.active)return;Browser.calculateMouseEvent(event);if(event.target!=Module["canvas"])return;var eventButton=GLFW.DOMToGLFWMouseButton(event);if(status==1){GLFW.active.buttons|=1<<eventButton;try{event.target.setCapture()}catch(e){}}else{GLFW.active.buttons&=~(1<<eventButton)}if(!GLFW.active.mouseButtonFunc)return;wasmTable.get(GLFW.active.mouseButtonFunc)(GLFW.active.id,eventButton,status,GLFW.getModBits(GLFW.active))},onMouseButtonDown:function(event){if(!GLFW.active)return;GLFW.onMouseButtonChanged(event,1)},onMouseButtonUp:function(event){if(!GLFW.active)return;GLFW.onMouseButtonChanged(event,0)},onMouseWheel:function(event){var delta=-Browser.getMouseWheelDelta(event);delta=delta==0?0:delta>0?Math.max(delta,1):Math.min(delta,-1);GLFW.wheelPos+=delta;if(!GLFW.active||!GLFW.active.scrollFunc||event.target!=Module["canvas"])return;var sx=0;var sy=0;if(event.type=="mousewheel"){sx=event.wheelDeltaX;sy=event.wheelDeltaY}else{sx=event.deltaX;sy=event.deltaY}wasmTable.get(GLFW.active.scrollFunc)(GLFW.active.id,sx,sy);event.preventDefault()},onCanvasResize:function(width,height){if(!GLFW.active)return;var resizeNeeded=true;if(document["fullscreen"]||document["fullScreen"]||document["mozFullScreen"]||document["webkitIsFullScreen"]){GLFW.active.storedX=GLFW.active.x;GLFW.active.storedY=GLFW.active.y;GLFW.active.storedWidth=GLFW.active.width;GLFW.active.storedHeight=GLFW.active.height;GLFW.active.x=GLFW.active.y=0;GLFW.active.width=screen.width;GLFW.active.height=screen.height;GLFW.active.fullscreen=true}else if(GLFW.active.fullscreen==true){GLFW.active.x=GLFW.active.storedX;GLFW.active.y=GLFW.active.storedY;GLFW.active.width=GLFW.active.storedWidth;GLFW.active.height=GLFW.active.storedHeight;GLFW.active.fullscreen=false}else if(GLFW.active.width!=width||GLFW.active.height!=height){GLFW.active.width=width;GLFW.active.height=height}else{resizeNeeded=false}if(resizeNeeded){Browser.setCanvasSize(GLFW.active.width,GLFW.active.height,true);GLFW.onWindowSizeChanged();GLFW.onFramebufferSizeChanged()}},onWindowSizeChanged:function(){if(!GLFW.active)return;if(!GLFW.active.windowSizeFunc)return;wasmTable.get(GLFW.active.windowSizeFunc)(GLFW.active.id,GLFW.active.width,GLFW.active.height)},onFramebufferSizeChanged:function(){if(!GLFW.active)return;if(!GLFW.active.framebufferSizeFunc)return;wasmTable.get(GLFW.active.framebufferSizeFunc)(GLFW.active.id,GLFW.active.width,GLFW.active.height)},getTime:function(){return _emscripten_get_now()/1e3},setWindowTitle:function(winid,title){var win=GLFW.WindowFromId(winid);if(!win)return;win.title=UTF8ToString(title);if(GLFW.active.id==win.id){document.title=win.title}},setJoystickCallback:function(cbfun){GLFW.joystickFunc=cbfun;GLFW.refreshJoysticks()},joys:{},lastGamepadState:null,lastGamepadStateFrame:null,refreshJoysticks:function(){if(Browser.mainLoop.currentFrameNumber!==GLFW.lastGamepadStateFrame||!Browser.mainLoop.currentFrameNumber){GLFW.lastGamepadState=navigator.getGamepads?navigator.getGamepads():navigator.webkitGetGamepads?navigator.webkitGetGamepads:null;GLFW.lastGamepadStateFrame=Browser.mainLoop.currentFrameNumber;for(var joy=0;joy<GLFW.lastGamepadState.length;++joy){var gamepad=GLFW.lastGamepadState[joy];if(gamepad){if(!GLFW.joys[joy]){console.log("glfw joystick connected:",joy);GLFW.joys[joy]={id:allocate(intArrayFromString(gamepad.id),ALLOC_NORMAL),buttonsCount:gamepad.buttons.length,axesCount:gamepad.axes.length,buttons:allocate(new Array(gamepad.buttons.length),ALLOC_NORMAL),axes:allocate(new Array(gamepad.axes.length*4),ALLOC_NORMAL)};if(GLFW.joystickFunc){wasmTable.get(GLFW.joystickFunc)(joy,262145)}}var data=GLFW.joys[joy];for(var i=0;i<gamepad.buttons.length;++i){setValue(data.buttons+i,gamepad.buttons[i].pressed,"i8")}for(var i=0;i<gamepad.axes.length;++i){setValue(data.axes+i*4,gamepad.axes[i],"float")}}else{if(GLFW.joys[joy]){console.log("glfw joystick disconnected",joy);if(GLFW.joystickFunc){wasmTable.get(GLFW.joystickFunc)(joy,262146)}_free(GLFW.joys[joy].id);_free(GLFW.joys[joy].buttons);_free(GLFW.joys[joy].axes);delete GLFW.joys[joy]}}}}},setKeyCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.keyFunc;win.keyFunc=cbfun;return prevcbfun},setCharCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.charFunc;win.charFunc=cbfun;return prevcbfun},setMouseButtonCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.mouseButtonFunc;win.mouseButtonFunc=cbfun;return prevcbfun},setCursorPosCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.cursorPosFunc;win.cursorPosFunc=cbfun;return prevcbfun},setScrollCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.scrollFunc;win.scrollFunc=cbfun;return prevcbfun},setDropCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.dropFunc;win.dropFunc=cbfun;return prevcbfun},onDrop:function(event){if(!GLFW.active||!GLFW.active.dropFunc)return;if(!event.dataTransfer||!event.dataTransfer.files||event.dataTransfer.files.length==0)return;event.preventDefault();var filenames=allocate(new Array(event.dataTransfer.files.length*4),ALLOC_NORMAL);var filenamesArray=[];var count=event.dataTransfer.files.length;var written=0;var drop_dir=".glfw_dropped_files";FS.createPath("/",drop_dir);function save(file){var path="/"+drop_dir+"/"+file.name.replace(/\//g,"_");var reader=new FileReader;reader.onloadend=function(e){if(reader.readyState!=2){++written;console.log("failed to read dropped file: "+file.name+": "+reader.error);return}var data=e.target.result;FS.writeFile(path,new Uint8Array(data));if(++written===count){wasmTable.get(GLFW.active.dropFunc)(GLFW.active.id,count,filenames);for(var i=0;i<filenamesArray.length;++i){_free(filenamesArray[i])}_free(filenames)}};reader.readAsArrayBuffer(file);var filename=allocate(intArrayFromString(path),ALLOC_NORMAL);filenamesArray.push(filename);setValue(filenames+i*4,filename,"i8*")}for(var i=0;i<count;++i){save(event.dataTransfer.files[i])}return false},onDragover:function(event){if(!GLFW.active||!GLFW.active.dropFunc)return;event.preventDefault();return false},setWindowSizeCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowSizeFunc;win.windowSizeFunc=cbfun;return prevcbfun},setWindowCloseCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowCloseFunc;win.windowCloseFunc=cbfun;return prevcbfun},setWindowRefreshCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowRefreshFunc;win.windowRefreshFunc=cbfun;return prevcbfun},onClickRequestPointerLock:function(e){if(!Browser.pointerLock&&Module["canvas"].requestPointerLock){Module["canvas"].requestPointerLock();e.preventDefault()}},setInputMode:function(winid,mode,value){var win=GLFW.WindowFromId(winid);if(!win)return;switch(mode){case 208897:{switch(value){case 212993:{win.inputModes[mode]=value;Module["canvas"].removeEventListener("click",GLFW.onClickRequestPointerLock,true);Module["canvas"].exitPointerLock();break}case 212994:{console.log("glfwSetInputMode called with GLFW_CURSOR_HIDDEN value not implemented.");break}case 212995:{win.inputModes[mode]=value;Module["canvas"].addEventListener("click",GLFW.onClickRequestPointerLock,true);Module["canvas"].requestPointerLock();break}default:{console.log("glfwSetInputMode called with unknown value parameter value: "+value+".");break}}break}case 208898:{console.log("glfwSetInputMode called with GLFW_STICKY_KEYS mode not implemented.");break}case 208899:{console.log("glfwSetInputMode called with GLFW_STICKY_MOUSE_BUTTONS mode not implemented.");break}default:{console.log("glfwSetInputMode called with unknown mode parameter value: "+mode+".");break}}},getKey:function(winid,key){var win=GLFW.WindowFromId(winid);if(!win)return 0;return win.keys[key]},getMouseButton:function(winid,button){var win=GLFW.WindowFromId(winid);if(!win)return 0;return(win.buttons&1<<button)>0},getCursorPos:function(winid,x,y){setValue(x,Browser.mouseX,"double");setValue(y,Browser.mouseY,"double")},getMousePos:function(winid,x,y){setValue(x,Browser.mouseX,"i32");setValue(y,Browser.mouseY,"i32")},setCursorPos:function(winid,x,y){},getWindowPos:function(winid,x,y){var wx=0;var wy=0;var win=GLFW.WindowFromId(winid);if(win){wx=win.x;wy=win.y}if(x){setValue(x,wx,"i32")}if(y){setValue(y,wy,"i32")}},setWindowPos:function(winid,x,y){var win=GLFW.WindowFromId(winid);if(!win)return;win.x=x;win.y=y},getWindowSize:function(winid,width,height){var ww=0;var wh=0;var win=GLFW.WindowFromId(winid);if(win){ww=win.width;wh=win.height}if(width){setValue(width,ww,"i32")}if(height){setValue(height,wh,"i32")}},setWindowSize:function(winid,width,height){var win=GLFW.WindowFromId(winid);if(!win)return;if(GLFW.active.id==win.id){if(width==screen.width&&height==screen.height){Browser.requestFullscreen()}else{Browser.exitFullscreen();Browser.setCanvasSize(width,height);win.width=width;win.height=height}}if(!win.windowSizeFunc)return;wasmTable.get(win.windowSizeFunc)(win.id,width,height)},createWindow:function(width,height,title,monitor,share){var i,id;for(i=0;i<GLFW.windows.length&&GLFW.windows[i]!==null;i++){}if(i>0)throw"glfwCreateWindow only supports one window at time currently";id=i+1;if(width<=0||height<=0)return 0;if(monitor){Browser.requestFullscreen()}else{Browser.setCanvasSize(width,height)}for(i=0;i<GLFW.windows.length&&GLFW.windows[i]==null;i++){}var useWebGL=GLFW.hints[139265]>0;if(i==GLFW.windows.length){if(useWebGL){var contextAttributes={antialias:GLFW.hints[135181]>1,depth:GLFW.hints[135173]>0,stencil:GLFW.hints[135174]>0,alpha:GLFW.hints[135172]>0};Module.ctx=Browser.createContext(Module["canvas"],true,true,contextAttributes)}else{Browser.init()}}if(!Module.ctx&&useWebGL)return 0;var win=new GLFW_Window(id,width,height,title,monitor,share);if(id-1==GLFW.windows.length){GLFW.windows.push(win)}else{GLFW.windows[id-1]=win}GLFW.active=win;return win.id},destroyWindow:function(winid){var win=GLFW.WindowFromId(winid);if(!win)return;if(win.windowCloseFunc)wasmTable.get(win.windowCloseFunc)(win.id);GLFW.windows[win.id-1]=null;if(GLFW.active.id==win.id)GLFW.active=null;for(var i=0;i<GLFW.windows.length;i++)if(GLFW.windows[i]!==null)return;Module.ctx=Browser.destroyContext(Module["canvas"],true,true)},swapBuffers:function(winid){},GLFW2ParamToGLFW3Param:function(param){var table={196609:0,196610:0,196611:0,196612:0,196613:0,196614:0,131073:0,131074:0,131075:0,131076:0,131077:135169,131078:135170,131079:135171,131080:135172,131081:135173,131082:135174,131083:135183,131084:135175,131085:135176,131086:135177,131087:135178,131088:135179,131089:135180,131090:0,131091:135181,131092:139266,131093:139267,131094:139270,131095:139271,131096:139272};return table[param]}};function _glfwCreateWindow(width,height,title,monitor,share){return GLFW.createWindow(width,height,title,monitor,share)}function _glfwDefaultWindowHints(){GLFW.hints=GLFW.defaultHints}function _glfwDestroyWindow(winid){return GLFW.destroyWindow(winid)}function _glfwGetPrimaryMonitor(){return 1}function _glfwGetTime(){return GLFW.getTime()-GLFW.initialTime}function _glfwGetVideoModes(monitor,count){setValue(count,0,"i32");return 0}function _glfwInit(){if(GLFW.windows)return 1;GLFW.initialTime=GLFW.getTime();GLFW.hints=GLFW.defaultHints;GLFW.windows=new Array;GLFW.active=null;window.addEventListener("gamepadconnected",GLFW.onGamepadConnected,true);window.addEventListener("gamepaddisconnected",GLFW.onGamepadDisconnected,true);window.addEventListener("keydown",GLFW.onKeydown,true);window.addEventListener("keypress",GLFW.onKeyPress,true);window.addEventListener("keyup",GLFW.onKeyup,true);window.addEventListener("blur",GLFW.onBlur,true);Module["canvas"].addEventListener("touchmove",GLFW.onMousemove,true);Module["canvas"].addEventListener("touchstart",GLFW.onMouseButtonDown,true);Module["canvas"].addEventListener("touchcancel",GLFW.onMouseButtonUp,true);Module["canvas"].addEventListener("touchend",GLFW.onMouseButtonUp,true);Module["canvas"].addEventListener("mousemove",GLFW.onMousemove,true);Module["canvas"].addEventListener("mousedown",GLFW.onMouseButtonDown,true);Module["canvas"].addEventListener("mouseup",GLFW.onMouseButtonUp,true);Module["canvas"].addEventListener("wheel",GLFW.onMouseWheel,true);Module["canvas"].addEventListener("mousewheel",GLFW.onMouseWheel,true);Module["canvas"].addEventListener("mouseenter",GLFW.onMouseenter,true);Module["canvas"].addEventListener("mouseleave",GLFW.onMouseleave,true);Module["canvas"].addEventListener("drop",GLFW.onDrop,true);Module["canvas"].addEventListener("dragover",GLFW.onDragover,true);Browser.resizeListeners.push(function(width,height){GLFW.onCanvasResize(width,height)});return 1}function _glfwMakeContextCurrent(winid){}function _glfwSetCharCallback(winid,cbfun){return GLFW.setCharCallback(winid,cbfun)}function _glfwSetCursorEnterCallback(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.cursorEnterFunc;win.cursorEnterFunc=cbfun;return prevcbfun}function _glfwSetCursorPosCallback(winid,cbfun){return GLFW.setCursorPosCallback(winid,cbfun)}function _glfwSetDropCallback(winid,cbfun){return GLFW.setDropCallback(winid,cbfun)}function _glfwSetErrorCallback(cbfun){var prevcbfun=GLFW.errorFunc;GLFW.errorFunc=cbfun;return prevcbfun}function _glfwSetKeyCallback(winid,cbfun){return GLFW.setKeyCallback(winid,cbfun)}function _glfwSetMouseButtonCallback(winid,cbfun){return GLFW.setMouseButtonCallback(winid,cbfun)}function _glfwSetScrollCallback(winid,cbfun){return GLFW.setScrollCallback(winid,cbfun)}function _glfwSetWindowFocusCallback(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowFocusFunc;win.windowFocusFunc=cbfun;return prevcbfun}function _glfwSetWindowIconifyCallback(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowIconifyFunc;win.windowIconifyFunc=cbfun;return prevcbfun}function _glfwSetWindowShouldClose(winid,value){var win=GLFW.WindowFromId(winid);if(!win)return;win.shouldClose=value}function _glfwSetWindowSizeCallback(winid,cbfun){return GLFW.setWindowSizeCallback(winid,cbfun)}function _glfwSwapBuffers(winid){GLFW.swapBuffers(winid)}function _glfwSwapInterval(interval){interval=Math.abs(interval);if(interval==0)_emscripten_set_main_loop_timing(0,0);else _emscripten_set_main_loop_timing(1,interval)}function _glfwTerminate(){window.removeEventListener("gamepadconnected",GLFW.onGamepadConnected,true);window.removeEventListener("gamepaddisconnected",GLFW.onGamepadDisconnected,true);window.removeEventListener("keydown",GLFW.onKeydown,true);window.removeEventListener("keypress",GLFW.onKeyPress,true);window.removeEventListener("keyup",GLFW.onKeyup,true);window.removeEventListener("blur",GLFW.onBlur,true);Module["canvas"].removeEventListener("touchmove",GLFW.onMousemove,true);Module["canvas"].removeEventListener("touchstart",GLFW.onMouseButtonDown,true);Module["canvas"].removeEventListener("touchcancel",GLFW.onMouseButtonUp,true);Module["canvas"].removeEventListener("touchend",GLFW.onMouseButtonUp,true);Module["canvas"].removeEventListener("mousemove",GLFW.onMousemove,true);Module["canvas"].removeEventListener("mousedown",GLFW.onMouseButtonDown,true);Module["canvas"].removeEventListener("mouseup",GLFW.onMouseButtonUp,true);Module["canvas"].removeEventListener("wheel",GLFW.onMouseWheel,true);Module["canvas"].removeEventListener("mousewheel",GLFW.onMouseWheel,true);Module["canvas"].removeEventListener("mouseenter",GLFW.onMouseenter,true);Module["canvas"].removeEventListener("mouseleave",GLFW.onMouseleave,true);Module["canvas"].removeEventListener("drop",GLFW.onDrop,true);Module["canvas"].removeEventListener("dragover",GLFW.onDragover,true);Module["canvas"].width=Module["canvas"].height=1;GLFW.windows=null;GLFW.active=null}function _glfwWindowHint(target,hint){GLFW.hints[target]=hint}function _time(ptr){var ret=Date.now()/1e3|0;if(ptr){HEAP32[ptr>>2]=ret}return ret}var FSNode=function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev};var readMode=292|73;var writeMode=146;Object.defineProperties(FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(val){val?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===writeMode},set:function(val){val?this.mode|=writeMode:this.mode&=~writeMode}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}});FS.FSNode=FSNode;FS.staticInit();var GLctx;for(var i=0;i<32;++i)tempFixedLengthArray.push(new Array(i));var miniTempWebGLFloatBuffersStorage=new Float32Array(288);for(var i=0;i<288;++i){miniTempWebGLFloatBuffers[i]=miniTempWebGLFloatBuffersStorage.subarray(0,i+1)}var __miniTempWebGLIntBuffersStorage=new Int32Array(288);for(var i=0;i<288;++i){__miniTempWebGLIntBuffers[i]=__miniTempWebGLIntBuffersStorage.subarray(0,i+1)}Module["requestFullscreen"]=function Module_requestFullscreen(lockPointer,resizeCanvas){Browser.requestFullscreen(lockPointer,resizeCanvas)};Module["requestAnimationFrame"]=function Module_requestAnimationFrame(func){Browser.requestAnimationFrame(func)};Module["setCanvasSize"]=function Module_setCanvasSize(width,height,noUpdates){Browser.setCanvasSize(width,height,noUpdates)};Module["pauseMainLoop"]=function Module_pauseMainLoop(){Browser.mainLoop.pause()};Module["resumeMainLoop"]=function Module_resumeMainLoop(){Browser.mainLoop.resume()};Module["getUserMedia"]=function Module_getUserMedia(){Browser.getUserMedia()};Module["createContext"]=function Module_createContext(canvas,useWebGL,setInModule,webGLContextAttributes){return Browser.createContext(canvas,useWebGL,setInModule,webGLContextAttributes)};function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var asmLibraryArg={"n":___assert_fail,"F":___sys_fcntl64,"Sa":___sys_ioctl,"Ta":___sys_open,"za":_emscripten_exit_pointerlock,"Z":_emscripten_get_element_css_size,"U":_emscripten_get_gamepad_status,"V":_emscripten_get_num_gamepads,"Hd":_emscripten_glActiveTexture,"Gd":_emscripten_glAttachShader,"N":_emscripten_glBeginQueryEXT,"Fd":_emscripten_glBindAttribLocation,"Ed":_emscripten_glBindBuffer,"Dd":_emscripten_glBindFramebuffer,"Cd":_emscripten_glBindRenderbuffer,"Bd":_emscripten_glBindTexture,"Pd":_emscripten_glBindVertexArrayOES,"zd":_emscripten_glBlendColor,"yd":_emscripten_glBlendEquation,"xd":_emscripten_glBlendEquationSeparate,"wd":_emscripten_glBlendFunc,"vd":_emscripten_glBlendFuncSeparate,"ud":_emscripten_glBufferData,"td":_emscripten_glBufferSubData,"sd":_emscripten_glCheckFramebufferStatus,"rd":_emscripten_glClear,"qd":_emscripten_glClearColor,"od":_emscripten_glClearDepthf,"nd":_emscripten_glClearStencil,"md":_emscripten_glColorMask,"ld":_emscripten_glCompileShader,"kd":_emscripten_glCompressedTexImage2D,"jd":_emscripten_glCompressedTexSubImage2D,"id":_emscripten_glCopyTexImage2D,"hd":_emscripten_glCopyTexSubImage2D,"gd":_emscripten_glCreateProgram,"fd":_emscripten_glCreateShader,"ed":_emscripten_glCullFace,"dd":_emscripten_glDeleteBuffers,"cd":_emscripten_glDeleteFramebuffers,"bd":_emscripten_glDeleteProgram,"P":_emscripten_glDeleteQueriesEXT,"ad":_emscripten_glDeleteRenderbuffers,"$c":_emscripten_glDeleteShader,"_c":_emscripten_glDeleteTextures,"Od":_emscripten_glDeleteVertexArraysOES,"Zc":_emscripten_glDepthFunc,"Yc":_emscripten_glDepthMask,"Xc":_emscripten_glDepthRangef,"Wc":_emscripten_glDetachShader,"Vc":_emscripten_glDisable,"Uc":_emscripten_glDisableVertexAttribArray,"Tc":_emscripten_glDrawArrays,"Kd":_emscripten_glDrawArraysInstancedANGLE,"Ld":_emscripten_glDrawBuffersWEBGL,"Sc":_emscripten_glDrawElements,"Jd":_emscripten_glDrawElementsInstancedANGLE,"Rc":_emscripten_glEnable,"Qc":_emscripten_glEnableVertexAttribArray,"M":_emscripten_glEndQueryEXT,"Pc":_emscripten_glFinish,"Oc":_emscripten_glFlush,"Nc":_emscripten_glFramebufferRenderbuffer,"Mc":_emscripten_glFramebufferTexture2D,"Lc":_emscripten_glFrontFace,"Kc":_emscripten_glGenBuffers,"Ic":_emscripten_glGenFramebuffers,"Q":_emscripten_glGenQueriesEXT,"Hc":_emscripten_glGenRenderbuffers,"Gc":_emscripten_glGenTextures,"Nd":_emscripten_glGenVertexArraysOES,"Jc":_emscripten_glGenerateMipmap,"Fc":_emscripten_glGetActiveAttrib,"Ec":_emscripten_glGetActiveUniform,"Dc":_emscripten_glGetAttachedShaders,"Bc":_emscripten_glGetAttribLocation,"Ac":_emscripten_glGetBooleanv,"zc":_emscripten_glGetBufferParameteriv,"yc":_emscripten_glGetError,"xc":_emscripten_glGetFloatv,"wc":_emscripten_glGetFramebufferAttachmentParameteriv,"vc":_emscripten_glGetIntegerv,"tc":_emscripten_glGetProgramInfoLog,"uc":_emscripten_glGetProgramiv,"Rd":_emscripten_glGetQueryObjecti64vEXT,"Td":_emscripten_glGetQueryObjectivEXT,"Qd":_emscripten_glGetQueryObjectui64vEXT,"Sd":_emscripten_glGetQueryObjectuivEXT,"Ud":_emscripten_glGetQueryivEXT,"sc":_emscripten_glGetRenderbufferParameteriv,"qc":_emscripten_glGetShaderInfoLog,"pc":_emscripten_glGetShaderPrecisionFormat,"oc":_emscripten_glGetShaderSource,"rc":_emscripten_glGetShaderiv,"nc":_emscripten_glGetString,"mc":_emscripten_glGetTexParameterfv,"lc":_emscripten_glGetTexParameteriv,"ic":_emscripten_glGetUniformLocation,"kc":_emscripten_glGetUniformfv,"jc":_emscripten_glGetUniformiv,"fc":_emscripten_glGetVertexAttribPointerv,"hc":_emscripten_glGetVertexAttribfv,"gc":_emscripten_glGetVertexAttribiv,"ec":_emscripten_glHint,"dc":_emscripten_glIsBuffer,"cc":_emscripten_glIsEnabled,"bc":_emscripten_glIsFramebuffer,"ac":_emscripten_glIsProgram,"O":_emscripten_glIsQueryEXT,"$b":_emscripten_glIsRenderbuffer,"_b":_emscripten_glIsShader,"Zb":_emscripten_glIsTexture,"Md":_emscripten_glIsVertexArrayOES,"Yb":_emscripten_glLineWidth,"Xb":_emscripten_glLinkProgram,"Wb":_emscripten_glPixelStorei,"Vb":_emscripten_glPolygonOffset,"L":_emscripten_glQueryCounterEXT,"Ub":_emscripten_glReadPixels,"Tb":_emscripten_glReleaseShaderCompiler,"Sb":_emscripten_glRenderbufferStorage,"Rb":_emscripten_glSampleCoverage,"Qb":_emscripten_glScissor,"Ob":_emscripten_glShaderBinary,"Nb":_emscripten_glShaderSource,"Mb":_emscripten_glStencilFunc,"Lb":_emscripten_glStencilFuncSeparate,"Kb":_emscripten_glStencilMask,"Jb":_emscripten_glStencilMaskSeparate,"Ib":_emscripten_glStencilOp,"Hb":_emscripten_glStencilOpSeparate,"Gb":_emscripten_glTexImage2D,"Fb":_emscripten_glTexParameterf,"Db":_emscripten_glTexParameterfv,"Cb":_emscripten_glTexParameteri,"Bb":_emscripten_glTexParameteriv,"Ab":_emscripten_glTexSubImage2D,"zb":_emscripten_glUniform1f,"yb":_emscripten_glUniform1fv,"xb":_emscripten_glUniform1i,"wb":_emscripten_glUniform1iv,"vb":_emscripten_glUniform2f,"ub":_emscripten_glUniform2fv,"sb":_emscripten_glUniform2i,"rb":_emscripten_glUniform2iv,"qb":_emscripten_glUniform3f,"pb":_emscripten_glUniform3fv,"ob":_emscripten_glUniform3i,"nb":_emscripten_glUniform3iv,"mb":_emscripten_glUniform4f,"lb":_emscripten_glUniform4fv,"kb":_emscripten_glUniform4i,"jb":_emscripten_glUniform4iv,"hb":_emscripten_glUniformMatrix2fv,"gb":_emscripten_glUniformMatrix3fv,"fb":_emscripten_glUniformMatrix4fv,"eb":_emscripten_glUseProgram,"db":_emscripten_glValidateProgram,"cb":_emscripten_glVertexAttrib1f,"bb":_emscripten_glVertexAttrib1fv,"ab":_emscripten_glVertexAttrib2f,"$a":_emscripten_glVertexAttrib2fv,"_a":_emscripten_glVertexAttrib3f,"Ya":_emscripten_glVertexAttrib3fv,"Xa":_emscripten_glVertexAttrib4f,"Wa":_emscripten_glVertexAttrib4fv,"Id":_emscripten_glVertexAttribDivisorANGLE,"Va":_emscripten_glVertexAttribPointer,"Ua":_emscripten_glViewport,"Na":_emscripten_memcpy_big,"Oa":_emscripten_resize_heap,"t":_emscripten_run_script,"W":_emscripten_sample_gamepad_data,"wa":_emscripten_set_click_callback_on_thread,"ya":_emscripten_set_fullscreenchange_callback_on_thread,"ra":_emscripten_set_gamepadconnected_callback_on_thread,"qa":_emscripten_set_gamepaddisconnected_callback_on_thread,"xa":_emscripten_set_keydown_callback_on_thread,"Wd":_emscripten_set_main_loop,"sa":_emscripten_set_touchcancel_callback_on_thread,"ua":_emscripten_set_touchend_callback_on_thread,"ta":_emscripten_set_touchmove_callback_on_thread,"va":_emscripten_set_touchstart_callback_on_thread,"Pa":_emscripten_thread_sleep,"R":_exit,"G":_fd_close,"Ra":_fd_read,"Ma":_fd_seek,"E":_fd_write,"K":_glActiveTexture,"x":_glAttachShader,"f":_glBindAttribLocation,"a":_glBindBuffer,"g":_glBindTexture,"Eb":_glBlendFunc,"k":_glBufferData,"r":_glBufferSubData,"H":_glClear,"I":_glClearColor,"Za":_glClearDepthf,"Fa":_glCompileShader,"Ja":_glCompressedTexImage2D,"Da":_glCreateProgram,"Ha":_glCreateShader,"tb":_glCullFace,"i":_glDeleteBuffers,"A":_glDeleteProgram,"B":_glDeleteShader,"D":_glDeleteTextures,"Pb":_glDepthFunc,"C":_glDetachShader,"J":_glDisable,"j":_glDisableVertexAttribArray,"Ad":_glDrawArrays,"pd":_glDrawElements,"s":_glEnable,"d":_glEnableVertexAttribArray,"ib":_glFrontFace,"l":_glGenBuffers,"La":_glGenTextures,"q":_glGetAttribLocation,"Cc":_glGetFloatv,"Aa":_glGetProgramInfoLog,"z":_glGetProgramiv,"Ea":_glGetShaderInfoLog,"y":_glGetShaderiv,"h":_glGetString,"p":_glGetUniformLocation,"Ba":_glLinkProgram,"Qa":_glPixelStorei,"Ia":_glReadPixels,"Ga":_glShaderSource,"Ka":_glTexImage2D,"m":_glTexParameteri,"T":_glUniform1i,"aa":_glUniform4f,"Ca":_glUniformMatrix4fv,"o":_glUseProgram,"e":_glVertexAttribPointer,"Vd":_glViewport,"v":_glfwCreateWindow,"na":_glfwDefaultWindowHints,"Y":_glfwDestroyWindow,"w":_glfwGetPrimaryMonitor,"c":_glfwGetTime,"ma":_glfwGetVideoModes,"oa":_glfwInit,"ba":_glfwMakeContextCurrent,"ga":_glfwSetCharCallback,"ca":_glfwSetCursorEnterCallback,"ea":_glfwSetCursorPosCallback,"ia":_glfwSetDropCallback,"pa":_glfwSetErrorCallback,"ha":_glfwSetKeyCallback,"fa":_glfwSetMouseButtonCallback,"da":_glfwSetScrollCallback,"ja":_glfwSetWindowFocusCallback,"ka":_glfwSetWindowIconifyCallback,"S":_glfwSetWindowShouldClose,"la":_glfwSetWindowSizeCallback,"X":_glfwSwapBuffers,"$":_glfwSwapInterval,"u":_glfwTerminate,"b":_glfwWindowHint,"_":_time};var asm=createWasm();var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["Yd"]).apply(null,arguments)};var _main=Module["_main"]=function(){return(_main=Module["_main"]=Module["asm"]["Zd"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["$d"]).apply(null,arguments)};var _free=Module["_free"]=function(){return(_free=Module["_free"]=Module["asm"]["ae"]).apply(null,arguments)};var ___errno_location=Module["___errno_location"]=function(){return(___errno_location=Module["___errno_location"]=Module["asm"]["be"]).apply(null,arguments)};var stackAlloc=Module["stackAlloc"]=function(){return(stackAlloc=Module["stackAlloc"]=Module["asm"]["ce"]).apply(null,arguments)};var calledRun;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}var calledMain=false;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args){var entryFunction=Module["_main"];var argc=0;var argv=0;try{var ret=entryFunction(argc,argv);exit(ret,true)}catch(e){if(e instanceof ExitStatus){return}else if(e=="unwind"){noExitRuntime=true;return}else{var toLog=e;if(e&&typeof e==="object"&&e.stack){toLog=[e,e.stack]}err("exception thrown: "+toLog);quit_(1,e)}}finally{calledMain=true}}function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(shouldRunNow)callMain(args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}Module["run"]=run;function exit(status,implicit){if(implicit&&noExitRuntime&&status===0){return}if(noExitRuntime){}else{EXITSTATUS=status;exitRuntime();if(Module["onExit"])Module["onExit"](status);ABORT=true}quit_(status,new ExitStatus(status))}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}var shouldRunNow=true;if(Module["noInitialRun"])shouldRunNow=false;run();
diff --git a/examples/web/models/models_waving_cubes.wasm b/examples/web/models/models_waving_cubes.wasm
deleted file mode 100644
index 2153faf..0000000
--- a/examples/web/models/models_waving_cubes.wasm
+++ /dev/null
Binary files differ
diff --git a/examples/web/models/models_yaw_pitch_roll.c b/examples/web/models/models_yaw_pitch_roll.c
deleted file mode 100644
index f085927..0000000
--- a/examples/web/models/models_yaw_pitch_roll.c
+++ /dev/null
@@ -1,145 +0,0 @@
-/*******************************************************************************************
-*
-* raylib [models] example - Plane rotations (yaw, pitch, roll)
-*
-* This example has been created using raylib 1.8 (www.raylib.com)
-* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
-*
-* Example contributed by Berni (@Berni8k) and reviewed by Ramon Santamaria (@raysan5)
-*
-* Copyright (c) 2017 Berni (@Berni8k) and Ramon Santamaria (@raysan5)
-*
-********************************************************************************************/
-
-#include "raylib.h"
-#include "raymath.h"
-
-#if defined(PLATFORM_WEB)
- #include <emscripten/emscripten.h>
-#endif
-
-//----------------------------------------------------------------------------------
-// Global Variables Definition
-//----------------------------------------------------------------------------------
-const int screenWidth = 800;
-const int screenHeight = 450;
-
-// Define our custom camera to look into our 3d world
-Camera camera = { 0 };
-
-Model model = { 0 };
-
-float pitch = 0.0f;
-float roll = 0.0f;
-float yaw = 0.0f;
-
-//----------------------------------------------------------------------------------
-// Module Functions Declaration
-//----------------------------------------------------------------------------------
-void UpdateDrawFrame(void); // Update and Draw one frame
-
-//----------------------------------------------------------------------------------
-// Program Main Entry Point
-//----------------------------------------------------------------------------------
-int main(void)
-{
- // Initialization
- //--------------------------------------------------------------------------------------
- InitWindow(screenWidth, screenHeight, "raylib [models] example - plane rotations (yaw, pitch, roll)");
-
- camera.position = (Vector3){ 0.0f, 50.0f, -120.0f };// Camera position perspective
- camera.target = (Vector3){ 0.0f, 0.0f, 0.0f }; // Camera looking at point
- camera.up = (Vector3){ 0.0f, 1.0f, 0.0f }; // Camera up vector (rotation towards target)
- camera.fovy = 30.0f; // Camera field-of-view Y
- camera.projection = CAMERA_PERSPECTIVE; // Camera type
-
- // Model loading
- model = LoadModel("resources/plane/plane.gltf"); // Load OBJ model
-
-#if defined(PLATFORM_WEB)
- emscripten_set_main_loop(UpdateDrawFrame, 60, 1);
-#else
- SetTargetFPS(60); // Set our game to run at 60 frames-per-second
- //--------------------------------------------------------------------------------------
-
- // Main game loop
- while (!WindowShouldClose()) // Detect window close button or ESC key
- {
- UpdateDrawFrame();
- }
-#endif
-
- // De-Initialization
- //--------------------------------------------------------------------------------------
- UnloadModel(model); // Unload all loaded data
-
- CloseWindow(); // Close window and OpenGL context
- //--------------------------------------------------------------------------------------
-
- return 0;
-}
-
-//----------------------------------------------------------------------------------
-// Module Functions Definition
-//----------------------------------------------------------------------------------
-void UpdateDrawFrame(void)
-{
- // Update
- //----------------------------------------------------------------------------------
- // Plane pitch (x-axis) controls
- if (IsKeyDown(KEY_DOWN)) pitch += 0.6f;
- else if (IsKeyDown(KEY_UP)) pitch -= 0.6f;
- else
- {
- if (pitch > 0.3f) pitch -= 0.3f;
- else if (pitch < -0.3f) pitch += 0.3f;
- }
-
- // Plane yaw (y-axis) controls
- if (IsKeyDown(KEY_S)) yaw += 1.0f;
- else if (IsKeyDown(KEY_A)) yaw -= 1.0f;
- else
- {
- if (yaw > 0.0f) yaw -= 0.5f;
- else if (yaw < 0.0f) yaw += 0.5f;
- }
-
- // Plane roll (z-axis) controls
- if (IsKeyDown(KEY_LEFT)) roll += 1.0f;
- else if (IsKeyDown(KEY_RIGHT)) roll -= 1.0f;
- else
- {
- if (roll > 0.0f) roll -= 0.5f;
- else if (roll < 0.0f) roll += 0.5f;
- }
-
- // Tranformation matrix for rotations
- model.transform = MatrixRotateXYZ((Vector3){DEG2RAD*pitch,DEG2RAD*yaw,DEG2RAD*roll});
- //----------------------------------------------------------------------------------
-
- // Draw
- //----------------------------------------------------------------------------------
- BeginDrawing();
-
- ClearBackground(RAYWHITE);
-
- // Draw 3D model (recomended to draw 3D always before 2D)
- BeginMode3D(camera);
-
- DrawModel(model, (Vector3){ 0.0f, 0.0f, 15.0f }, 0.25f, WHITE); // Draw 3d model with texture
- DrawGrid(10, 10.0f);
-
- EndMode3D();
-
- // Draw controls info
- DrawRectangle(30, 370, 260, 70, Fade(GREEN, 0.5f));
- DrawRectangleLines(30, 370, 260, 70, Fade(DARKGREEN, 0.5f));
- DrawText("Pitch controlled with: KEY_UP / KEY_DOWN", 40, 380, 10, DARKGRAY);
- DrawText("Roll controlled with: KEY_LEFT / KEY_RIGHT", 40, 400, 10, DARKGRAY);
- DrawText("Yaw controlled with: KEY_A / KEY_S", 40, 420, 10, DARKGRAY);
-
- DrawText("(c) WWI Plane Model created by GiaHanLam", screenWidth - 240, screenHeight - 20, 10, DARKGRAY);
-
- EndDrawing();
- //----------------------------------------------------------------------------------
-}
diff --git a/examples/web/models/models_yaw_pitch_roll.data b/examples/web/models/models_yaw_pitch_roll.data
deleted file mode 100644
index 103fd11..0000000
--- a/examples/web/models/models_yaw_pitch_roll.data
+++ /dev/null
Binary files differ
diff --git a/examples/web/models/models_yaw_pitch_roll.html b/examples/web/models/models_yaw_pitch_roll.html
deleted file mode 100644
index c888261..0000000
--- a/examples/web/models/models_yaw_pitch_roll.html
+++ /dev/null
@@ -1 +0,0 @@
-<!doctypehtml><html lang=en-us><head><meta charset=utf-8><meta content="text/html; charset=utf-8"http-equiv=Content-Type><title>raylib HTML5 GAME</title><meta content="raylib HTML5 GAME"name=title><meta content="New HTML5 videogame, developed using raylib videogames library"name=description><meta content="raylib, games, html5, programming, C, C++, library, learn, videogames"name=keywords><meta content="width=device-width"name=viewport><meta content="raylib HTML5 GAME"property=og:title><meta content=image/png property=og:image:type><meta content=https://www.raylib.com/common/img/raylib_logo.png property=og:image><meta content=raylib.com property=og:site_name><meta content=https://www.raylib.com/games.html property=og:url><meta content="New HTML5 videogame, developed using raylib videogames library"property=og:description><meta content=summary name=twitter:card><meta content=@raysan5 name=twitter:site><meta content="raylib HTML5 GAME"name=twitter:title><meta content=https://www.raylib.com/common/raylib_logo.png name=twitter:image><meta content=https://www.raylib.com/games.html name=twitter:url><meta content="New HTML5 videogame, developed using raylib videogames library"name=twitter:description><link href=https://www.raylib.com/favicon.ico rel="shortcut icon"><style>body{font-family:arial;margin:0;padding:none}#header{width:100%;height:80px;background-color:#888}#logo{width:64px;height:64px;float:left;position:relative;margin:10px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAAlC+aJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjExR/NCNwAAA7JJREFUaEPtk0FyWzEMQ+37X7fZhxX4YY3AD1OKF1nkzTRlSBCCLeVBnvl/AUdaELOunPno1kts1kixdtEZKVs+xIxebBkZsVknn/L5nFGDLR8T4zVC9fX19S/+tTFijrYK4jUjbPUtqBHpnEE6PkZD7jQZV8n5Recw1XQKciZuPaEtR6UjNs5ENVGMsBVqpPtER0ZMOhpyp8m4YL4OjD9yxsyZxnQycfMJETNSzsRE1+dihK3YMiJmpHTW3xpmXPC6BXlCHfqnBlsjY5hxf/6EVEOM2BTEi0fYCX4ONSI6Kq3Blg/prIOMq2CsRur4KQ0x64SdjOufEDEdHZGOhmz5RDHCVqhRuQ86YsVskbc+GXchLiHnFyYH+UigQDVGnImbT8hwFkgLg2qiM8JO6Ylx1FNLa3DmYwqCTsZd4BPqGJG7MwKzpeiWKTKxXkLMVE3MSOmsdwxLH6Rd/wCCLSNDx6djeKfJuArGeoYamRHpaEjnCBYZVy8hZqo2GI36qPjsiOiMsBXGcev4Mx9TLGTchbgEjN/uz6jGrBvDjg+LTNx8Qp2CbG2xMKgmOiPslJ4Yxx+eSnSkzlosZNwFPiHl7FRTkLNRJm4+IeVM0ymIH42wE/wcKalQI4MRl4EW3p6VcRWMua8F6WjIlqZDxvVPiHQ6CjVbYkV9ohhhp/Rk1wiYgpyJ78i4CsZbjkb8Qx+ihvzu3RPaKogZkY6GlEeMsKdPSOFIC8VoOusg44L5c+T8ouOoGhWbdWJ8tMi4egkxo4hoh2yNTGf3iIyr5Lyic4bRENXo+lvDjAt4C1Hk/OKtUaAj0+n4dMSZ2D+hrYJsaYh2SClG2jV9kJKKzhlGQ1SsW299Mq6C8dYZHTExo8fzieI5ivipYnYy7nwJqGKmOYyRwfiUBXITfh5qSHRGWEkfqJqURgvsdHyWYv7Ko8DnYYegk3EB00cxprdrJRzFd7YQzawu8L1GMTYS/KpPaAFTkIn1EmJmspJSs5xBzSyGhlkBmlxfNFiP5mw4wlbMh4F5Ddxp5jNINBdCEz9zPOC1zD7Q0HBdmXndwv0TMtydEdzlWJT4VZ8Qt9Qn4/onxMIwa5ZYGJU5yufBiCjwE50AGjLCVuS8Yt4H7OgZLKK5EKOsLviEWJSL/+0uMi7gLUSBseYwqEbXvSHCec1CJvZPyHCmYQffaBBfOTCGHM2aEbZi1+gO1XTWVXMnzrhAn5DSOZVsiQlHnSITKzGj6DeTcZWc/3oy7h9//PF4PL4BlvsWrb6RE+oAAAAASUVORK5CYII=)}.emscripten{padding-right:0;margin-left:auto;margin-right:auto;display:block}div.emscripten{text-align:center}div.emscripten_border{border:1px solid #000}canvas.emscripten{border:0 none;background:#000;width:100%}.spinner{height:30px;width:30px;margin:0;margin-top:20px;margin-left:20px;display:inline-block;vertical-align:top;-webkit-animation:rotation .8s linear infinite;-moz-animation:rotation .8s linear infinite;-o-animation:rotation .8s linear infinite;animation:rotation .8s linear infinite;border-left:5px solid #000;border-right:5px solid #000;border-bottom:5px solid #000;border-top:5px solid red;border-radius:100%;background-color:#f5f5f5}@-webkit-keyframes rotation{from{-webkit-transform:rotate(0)}to{-webkit-transform:rotate(360deg)}}@-moz-keyframes rotation{from{-moz-transform:rotate(0)}to{-moz-transform:rotate(360deg)}}@-o-keyframes rotation{from{-o-transform:rotate(0)}to{-o-transform:rotate(360deg)}}@keyframes rotation{from{transform:rotate(0)}to{transform:rotate(360deg)}}#status{display:inline-block;vertical-align:top;margin-top:30px;margin-left:20px;font-weight:700;color:#282828}#progress{height:0;width:0}#controls{display:inline-block;float:right;vertical-align:top;margin-top:15px;margin-right:20px}#output{width:100%;height:140px;margin:0 auto;margin-top:10px;display:block;background-color:#000;color:#25ae26;font-family:'Lucida Console',Monaco,monospace;outline:0}input[type=button]{background-color:#d3d3d3;border:4px solid #a9a9a9;color:#000;text-decoration:none;cursor:pointer;width:140px;height:50px}input[type=button]:hover{background-color:#f5f5f5ff;border-color:#000}</style></head><body><div id=header><a href=https://www.raylib.com id=logo></a><div class=spinner id=spinner></div><div class=emscripten id=status>Downloading...</div><span id=controls><span><input onclick=Module.requestFullscreen(!1,!1) type=button value="🖵 FULLSCREEN"></span><span><input onclick=toggleAudio() type=button value="🔇 SUSPEND"id=btn-audio></span></span><div class=emscripten><progress hidden id=progress max=100 value=0></progress></div></div><div class=emscripten_border><canvas class=emscripten id=canvas oncontextmenu=event.preventDefault() tabindex=-1></canvas></div><textarea id=output rows=8></textarea><script src=https://cdn.jsdelivr.net/gh/eligrey/FileSaver.js/dist/FileSaver.min.js></script><script>function saveFileFromMEMFSToDisk(e,a){var t,i=/^((?!chrome|android).)*safari/i.test(navigator.userAgent),o=FS.readFile(e);t=i?new Blob([o.buffer],{type:"application/octet-stream"}):new Blob([o.buffer],{type:"application/octet-binary"}),saveAs(t,a)}</script><script>var statusElement=document.querySelector("#status"),progressElement=document.querySelector("#progress"),spinnerElement=document.querySelector("#spinner"),Module={preRun:[],postRun:[],print:function(){var e=document.querySelector("#output");return e&&(e.value=""),function(t){arguments.length>1&&(t=Array.prototype.slice.call(arguments).join(" ")),console.log(t),e&&(e.value+=t+"\n",e.scrollTop=e.scrollHeight)}}(),printErr:function(e){arguments.length>1&&(e=Array.prototype.slice.call(arguments).join(" ")),console.error(e)},canvas:function(){var e=document.querySelector("#canvas");return e.addEventListener("webglcontextlost",(function(e){alert("WebGL context lost. You will need to reload the page."),e.preventDefault()}),!1),e}(),setStatus:function(e){if(Module.setStatus.last||(Module.setStatus.last={time:Date.now(),text:""}),e!==Module.setStatus.last.text){var t=e.match(/([^(]+)\((\d+(\.\d+)?)\/(\d+)\)/),n=Date.now();t&&n-Module.setStatus.last.time<30||(Module.setStatus.last.time=n,Module.setStatus.last.text=e,t?(e=t[1],progressElement.value=100*parseInt(t[2]),progressElement.max=100*parseInt(t[4]),progressElement.hidden=!0,spinnerElement.hidden=!1):(progressElement.value=null,progressElement.max=null,progressElement.hidden=!0,e||(spinnerElement.style.display="none")),statusElement.innerHTML=e)}},totalDependencies:0,monitorRunDependencies:function(e){this.totalDependencies=Math.max(this.totalDependencies,e),Module.setStatus(e?"Preparing... ("+(this.totalDependencies-e)+"/"+this.totalDependencies+")":"All downloads complete.")}};Module.setStatus("Downloading..."),window.onerror=function(){Module.setStatus("Exception thrown, see JavaScript console"),spinnerElement.style.display="none",Module.setStatus=function(e){e&&Module.printErr("[post-exception status] "+e)}}</script><script>var audioBtn=document.querySelector("#btn-audio");const audioContexList=[];function toggleAudio(){var t=!1;audioContexList.forEach(e=>{"suspended"==e.state?(e.resume(),t=!0):"running"==e.state&&e.suspend()}),audioBtn.value=t?"🔇 SUSPEND":"🔈 RESUME"}self.AudioContext=new Proxy(self.AudioContext,{construct(t,e){const n=new t(...e);return audioContexList.push(n),"suspended"==n.state&&(audioBtn.value="🔈 RESUME"),n}})</script><script src=models_yaw_pitch_roll.js async></script></body></html> \ No newline at end of file
diff --git a/examples/web/models/models_yaw_pitch_roll.js b/examples/web/models/models_yaw_pitch_roll.js
deleted file mode 100644
index 66d2c56..0000000
--- a/examples/web/models/models_yaw_pitch_roll.js
+++ /dev/null
@@ -1 +0,0 @@
-var Module=typeof Module!=="undefined"?Module:{};if(!Module.expectedDataFileDownloads){Module.expectedDataFileDownloads=0}Module.expectedDataFileDownloads++;(function(){var loadPackage=function(metadata){var PACKAGE_PATH;if(typeof window==="object"){PACKAGE_PATH=window["encodeURIComponent"](window.location.pathname.toString().substring(0,window.location.pathname.toString().lastIndexOf("/"))+"/")}else if(typeof location!=="undefined"){PACKAGE_PATH=encodeURIComponent(location.pathname.toString().substring(0,location.pathname.toString().lastIndexOf("/"))+"/")}else{throw"using preloaded data can only be done on a web page or in a web worker"}var PACKAGE_NAME="models/models_yaw_pitch_roll.data";var REMOTE_PACKAGE_BASE="models_yaw_pitch_roll.data";if(typeof Module["locateFilePackage"]==="function"&&!Module["locateFile"]){Module["locateFile"]=Module["locateFilePackage"];err("warning: you defined Module.locateFilePackage, that has been renamed to Module.locateFile (using your locateFilePackage for now)")}var REMOTE_PACKAGE_NAME=Module["locateFile"]?Module["locateFile"](REMOTE_PACKAGE_BASE,""):REMOTE_PACKAGE_BASE;var REMOTE_PACKAGE_SIZE=metadata["remote_package_size"];var PACKAGE_UUID=metadata["package_uuid"];function fetchRemotePackage(packageName,packageSize,callback,errback){var xhr=new XMLHttpRequest;xhr.open("GET",packageName,true);xhr.responseType="arraybuffer";xhr.onprogress=function(event){var url=packageName;var size=packageSize;if(event.total)size=event.total;if(event.loaded){if(!xhr.addedTotal){xhr.addedTotal=true;if(!Module.dataFileDownloads)Module.dataFileDownloads={};Module.dataFileDownloads[url]={loaded:event.loaded,total:size}}else{Module.dataFileDownloads[url].loaded=event.loaded}var total=0;var loaded=0;var num=0;for(var download in Module.dataFileDownloads){var data=Module.dataFileDownloads[download];total+=data.total;loaded+=data.loaded;num++}total=Math.ceil(total*Module.expectedDataFileDownloads/num);if(Module["setStatus"])Module["setStatus"]("Downloading data... ("+loaded+"/"+total+")")}else if(!Module.dataFileDownloads){if(Module["setStatus"])Module["setStatus"]("Downloading data...")}};xhr.onerror=function(event){throw new Error("NetworkError for: "+packageName)};xhr.onload=function(event){if(xhr.status==200||xhr.status==304||xhr.status==206||xhr.status==0&&xhr.response){var packageData=xhr.response;callback(packageData)}else{throw new Error(xhr.statusText+" : "+xhr.responseURL)}};xhr.send(null)}function handleError(error){console.error("package error:",error)}var fetchedCallback=null;var fetched=Module["getPreloadedPackage"]?Module["getPreloadedPackage"](REMOTE_PACKAGE_NAME,REMOTE_PACKAGE_SIZE):null;if(!fetched)fetchRemotePackage(REMOTE_PACKAGE_NAME,REMOTE_PACKAGE_SIZE,function(data){if(fetchedCallback){fetchedCallback(data);fetchedCallback=null}else{fetched=data}},handleError);function runWithFS(){function assert(check,msg){if(!check)throw msg+(new Error).stack}Module["FS_createPath"]("/","resources",true,true);Module["FS_createPath"]("/resources","plane",true,true);function DataRequest(start,end,audio){this.start=start;this.end=end;this.audio=audio}DataRequest.prototype={requests:{},open:function(mode,name){this.name=name;this.requests[name]=this;Module["addRunDependency"]("fp "+this.name)},send:function(){},onload:function(){var byteArray=this.byteArray.subarray(this.start,this.end);this.finish(byteArray)},finish:function(byteArray){var that=this;Module["FS_createDataFile"](this.name,null,byteArray,true,true,true);Module["removeRunDependency"]("fp "+that.name);this.requests[this.name]=null}};var files=metadata["files"];for(var i=0;i<files.length;++i){new DataRequest(files[i]["start"],files[i]["end"],files[i]["audio"]).open("GET",files[i]["filename"])}function processPackageData(arrayBuffer){assert(arrayBuffer,"Loading data file failed.");assert(arrayBuffer instanceof ArrayBuffer,"bad input to processPackageData");var byteArray=new Uint8Array(arrayBuffer);DataRequest.prototype.byteArray=byteArray;var files=metadata["files"];for(var i=0;i<files.length;++i){DataRequest.prototype.requests[files[i].filename].onload()}Module["removeRunDependency"]("datafile_models/models_yaw_pitch_roll.data")}Module["addRunDependency"]("datafile_models/models_yaw_pitch_roll.data");if(!Module.preloadResults)Module.preloadResults={};Module.preloadResults[PACKAGE_NAME]={fromCache:false};if(fetched){processPackageData(fetched);fetched=null}else{fetchedCallback=processPackageData}}if(Module["calledRun"]){runWithFS()}else{if(!Module["preRun"])Module["preRun"]=[];Module["preRun"].push(runWithFS)}};loadPackage({"files":[{"filename":"/resources/plane/plane.gltf","start":0,"end":5267,"audio":0},{"filename":"/resources/plane/plane_diffuse.png","start":5267,"end":828760,"audio":0}],"remote_package_size":828760,"package_uuid":"4fc7af9d-3f17-4850-ac4f-5ba6b2ae50cf"})})();var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram="./this.program";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window==="object";ENVIRONMENT_IS_WORKER=typeof importScripts==="function";ENVIRONMENT_IS_NODE=typeof process==="object"&&typeof process.versions==="object"&&typeof process.versions.node==="string";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require("path").dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require("fs");if(!nodePath)nodePath=require("path");filename=nodePath["normalize"](filename);return nodeFS["readFileSync"](filename,binary?null:"utf8")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);if(typeof module!=="undefined"){module["exports"]=Module}process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",abort);quit_=function(status){process["exit"](status)};Module["inspect"]=function(){return"[Emscripten Module object]"}}else if(ENVIRONMENT_IS_SHELL){if(typeof read!="undefined"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer==="function"){return new Uint8Array(readbuffer(f))}data=read(f,"binary");assert(typeof data==="object");return data};if(typeof scriptArgs!="undefined"){arguments_=scriptArgs}else if(typeof arguments!="undefined"){arguments_=arguments}if(typeof quit==="function"){quit_=function(status){quit(status)}}if(typeof print!=="undefined"){if(typeof console==="undefined")console={};console.log=print;console.warn=console.error=typeof printErr!=="undefined"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!=="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf("/")+1)}else{scriptDirectory=""}{read_=function(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=function(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var STACK_ALIGN=16;function alignMemory(size,factor){if(!factor)factor=STACK_ALIGN;return Math.ceil(size/factor)*factor}function warnOnce(text){if(!warnOnce.shown)warnOnce.shown={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;err(text)}}var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime=Module["noExitRuntime"]||true;if(typeof WebAssembly!=="object"){abort("no native wasm support detected")}function setValue(ptr,value,type,noSafe){type=type||"i8";if(type.charAt(type.length-1)==="*")type="i32";switch(type){case"i1":HEAP8[ptr>>0]=value;break;case"i8":HEAP8[ptr>>0]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":tempI64=[value>>>0,(tempDouble=value,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;default:abort("invalid type for setValue: "+type)}}var wasmMemory;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}var ALLOC_NORMAL=0;var ALLOC_STACK=1;function allocate(slab,allocator){var ret;if(allocator==ALLOC_STACK){ret=stackAlloc(slab.length)}else{ret=_malloc(slab.length)}if(slab.subarray||slab.slice){HEAPU8.set(slab,ret)}else{HEAPU8.set(new Uint8Array(slab),ret)}return ret}var UTF8Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heap,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heap[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str="";while(idx<endPtr){var u0=heap[idx++];if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heap[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heap[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u0=(u0&7)<<18|u1<<12|u2<<6|heap[idx++]&63}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||67108864;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;__ATINIT__.push({func:function(){___wasm_call_ctors()}});function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){FS.ignorePermissions=false;callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}what+="";err(what);ABORT=true;EXITSTATUS=1;what="abort("+what+"). Build with -s ASSERTIONS=1 for more info.";var e=new WebAssembly.RuntimeError(what);throw e}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix="file://";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile="models_yaw_pitch_roll.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}else{throw"both async and sync fetching of the wasm failed"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch==="function"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={"a":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;wasmMemory=Module["asm"]["ae"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module["asm"]["de"];removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiatedSource(output){receiveInstance(output["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming==="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch==="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync();return{}}var tempDouble;var tempI64;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback(Module);continue}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){wasmTable.get(func)()}else{wasmTable.get(func)(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}function ___assert_fail(condition,filename,line,func){abort("Assertion failed: "+UTF8ToString(condition)+", at: "+[filename?UTF8ToString(filename):"unknown filename",line,func?UTF8ToString(func):"unknown function"])}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path==="/")return"/";path=PATH.normalize(path);path=path.replace(/\/$/,"");var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}};function getRandomDevice(){if(typeof crypto==="object"&&typeof crypto["getRandomValues"]==="function"){var randomBuffer=new Uint8Array(1);return function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]}}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");return function(){return crypto_module["randomBytes"](1)[0]}}catch(e){}}return function(){abort("randomDevice")}}var PATH_FS={resolve:function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!=="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=path.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(function(p){return!!p}),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:function(from,to){from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start<arr.length;start++){if(arr[start]!=="")break}var end=arr.length-1;for(;end>=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i<length;i++){if(fromParts[i]!==toParts[i]){samePartsLength=i;break}}var outputParts=[];for(var i=samePartsLength;i<fromParts.length;i++){outputParts.push("..")}outputParts=outputParts.concat(toParts.slice(samePartsLength));return outputParts.join("/")}};var TTY={ttys:[],init:function(){},shutdown:function(){},register:function(dev,ops){TTY.ttys[dev]={input:[],output:[],ops:ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open:function(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close:function(stream){stream.tty.ops.flush(stream.tty)},flush:function(stream){stream.tty.ops.flush(stream.tty)},read:function(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i<length;i++){var result;try{result=stream.tty.ops.get_char(stream.tty)}catch(e){throw new FS.ErrnoError(29)}if(result===undefined&&bytesRead===0){throw new FS.ErrnoError(6)}if(result===null||result===undefined)break;bytesRead++;buffer[offset+i]=result}if(bytesRead){stream.node.timestamp=Date.now()}return bytesRead},write:function(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.put_char){throw new FS.ErrnoError(60)}try{for(var i=0;i<length;i++){stream.tty.ops.put_char(stream.tty,buffer[offset+i])}}catch(e){throw new FS.ErrnoError(29)}if(length){stream.node.timestamp=Date.now()}return i}},default_tty_ops:{get_char:function(tty){if(!tty.input.length){var result=null;if(ENVIRONMENT_IS_NODE){var BUFSIZE=256;var buf=Buffer.alloc?Buffer.alloc(BUFSIZE):new Buffer(BUFSIZE);var bytesRead=0;try{bytesRead=nodeFS.readSync(process.stdin.fd,buf,0,BUFSIZE,null)}catch(e){if(e.toString().indexOf("EOF")!=-1)bytesRead=0;else throw e}if(bytesRead>0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function mmapAlloc(size){var alignedSize=alignMemory(size,16384);var ptr=_malloc(alignedSize);while(size<alignedSize)HEAP8[ptr+size++]=0;return ptr}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray:function(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage:function(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity<CAPACITY_DOUBLING_MAX?2:1.125)>>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage:function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr:function(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr:function(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp;old_node.parent=new_dir},unlink:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir:function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i<size;i++)buffer[offset+i]=contents[position+i]}return size},write:function(stream,buffer,offset,length,position,canOwn){if(!length)return 0;var node=stream.node;node.timestamp=Date.now();if(buffer.subarray&&(!node.contents||node.contents.subarray)){if(canOwn){node.contents=buffer.subarray(offset,offset+length);node.usedBytes=length;return length}else if(node.usedBytes===0&&position===0){node.contents=buffer.slice(offset,offset+length);node.usedBytes=length;return length}else if(position+length<=node.usedBytes){node.contents.set(buffer.subarray(offset,offset+length),position);return length}}MEMFS.expandFileStorage(node,position+length);if(node.contents.subarray&&buffer.subarray){node.contents.set(buffer.subarray(offset,offset+length),position)}else{for(var i=0;i<length;i++){node.contents[position+i]=buffer[offset+i]}}node.usedBytes=Math.max(node.usedBytes,position+length);return length},llseek:function(stream,offset,whence){var position=offset;if(whence===1){position+=stream.position}else if(whence===2){if(FS.isFile(stream.node.mode)){position+=stream.node.usedBytes}}if(position<0){throw new FS.ErrnoError(28)}return position},allocate:function(stream,offset,length){MEMFS.expandFileStorage(stream.node,offset+length);stream.node.usedBytes=Math.max(stream.node.usedBytes,offset+length)},mmap:function(stream,address,length,position,prot,flags){if(address!==0){throw new FS.ErrnoError(28)}if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}var ptr;var allocated;var contents=stream.node.contents;if(!(flags&2)&&contents.buffer===buffer){allocated=false;ptr=contents.byteOffset}else{if(position>0||position+length<contents.length){if(contents.subarray){contents=contents.subarray(position,position+length)}else{contents=Array.prototype.slice.call(contents,position,position+length)}}allocated=true;ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}HEAP8.set(contents,ptr)}return{ptr:ptr,allocated:allocated}},msync:function(stream,buffer,offset,length,mmapFlags){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}if(mmapFlags&2){return 0}var bytesWritten=MEMFS.stream_ops.write(stream,buffer,0,length,offset,false);return 0}}};var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,trackingDelegate:{},tracking:{openFlags:{READ:1,WRITE:2}},ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath:function(path,opts){path=PATH_FS.resolve(FS.cwd(),path);opts=opts||{};if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};for(var key in defaults){if(opts[key]===undefined){opts[key]=defaults[key]}}if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),false);var current=FS.root;var current_path="/";for(var i=0;i<parts.length;i++){var islast=i===parts.length-1;if(islast&&opts.parent){break}current=FS.lookupNode(current,parts[i]);current_path=PATH.join2(current_path,parts[i]);if(FS.isMountpoint(current)){if(!islast||islast&&opts.follow_mount){current=current.mounted.root}}if(!islast||opts.follow){var count=0;while(FS.isLink(current.mode)){var link=FS.readlink(current_path);current_path=PATH_FS.resolve(PATH.dirname(current_path),link);var lookup=FS.lookupPath(current_path,{recurse_count:opts.recurse_count});current=lookup.node;if(count++>40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath:function(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?mount+"/"+path:mount+path}path=path?node.name+"/"+path:node.name;node=node.parent}},hashName:function(parentid,name){var hash=0;for(var i=0;i<name.length;i++){hash=(hash<<5)-hash+name.charCodeAt(i)|0}return(parentid+hash>>>0)%FS.nameTable.length},hashAddNode:function(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode:function(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode:function(parent,name){var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode:function(parent,name,mode,rdev){var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:function(node){FS.hashRemoveNode(node)},isRoot:function(node){return node===node.parent},isMountpoint:function(node){return!!node.mounted},isFile:function(mode){return(mode&61440)===32768},isDir:function(mode){return(mode&61440)===16384},isLink:function(mode){return(mode&61440)===40960},isChrdev:function(mode){return(mode&61440)===8192},isBlkdev:function(mode){return(mode&61440)===24576},isFIFO:function(mode){return(mode&61440)===4096},isSocket:function(mode){return(mode&49152)===49152},flagModes:{"r":0,"r+":2,"w":577,"w+":578,"a":1089,"a+":1090},modeStringToFlags:function(str){var flags=FS.flagModes[str];if(typeof flags==="undefined"){throw new Error("Unknown file open mode: "+str)}return flags},flagsToPermissionString:function(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions:function(node,perms){if(FS.ignorePermissions){return 0}if(perms.indexOf("r")!==-1&&!(node.mode&292)){return 2}else if(perms.indexOf("w")!==-1&&!(node.mode&146)){return 2}else if(perms.indexOf("x")!==-1&&!(node.mode&73)){return 2}return 0},mayLookup:function(dir){var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate:function(dir,name){try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete:function(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen:function(node,flags){if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd:function(fd_start,fd_end){fd_start=fd_start||0;fd_end=fd_end||FS.MAX_OPEN_FDS;for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:function(fd){return FS.streams[fd]},createStream:function(stream,fd_start,fd_end){if(!FS.FSStream){FS.FSStream=function(){};FS.FSStream.prototype={object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}}}}var newStream=new FS.FSStream;for(var p in stream){newStream[p]=stream[p]}stream=newStream;var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:function(fd){FS.streams[fd]=null},chrdev_stream_ops:{open:function(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}},llseek:function(){throw new FS.ErrnoError(70)}},major:function(dev){return dev>>8},minor:function(dev){return dev&255},makedev:function(ma,mi){return ma<<8|mi},registerDevice:function(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:function(dev){return FS.devices[dev]},getMounts:function(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts},syncfs:function(populate,callback){if(typeof populate==="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err("warning: "+FS.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work")}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(function(mount){if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount:function(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount:function(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(function(hash){var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.indexOf(current.mount)!==-1){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup:function(parent,name){return parent.node_ops.lookup(parent,name)},mknod:function(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create:function(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:function(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree:function(path,mode){var dirs=path.split("/");var d="";for(var i=0;i<dirs.length;++i){if(!dirs[i])continue;d+="/"+dirs[i];try{FS.mkdir(d,mode)}catch(e){if(e.errno!=20)throw e}}},mkdev:function(path,mode,dev){if(typeof dev==="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:function(oldpath,newpath){if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:function(old_path,new_path){var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}try{if(FS.trackingDelegate["willMovePath"]){FS.trackingDelegate["willMovePath"](old_path,new_path)}}catch(e){err("FS.trackingDelegate['willMovePath']('"+old_path+"', '"+new_path+"') threw an exception: "+e.message)}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}try{if(FS.trackingDelegate["onMovePath"])FS.trackingDelegate["onMovePath"](old_path,new_path)}catch(e){err("FS.trackingDelegate['onMovePath']('"+old_path+"', '"+new_path+"') threw an exception: "+e.message)}},rmdir:function(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}try{if(FS.trackingDelegate["willDeletePath"]){FS.trackingDelegate["willDeletePath"](path)}}catch(e){err("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: "+e.message)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate["onDeletePath"])FS.trackingDelegate["onDeletePath"](path)}catch(e){err("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: "+e.message)}},readdir:function(path){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:function(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}try{if(FS.trackingDelegate["willDeletePath"]){FS.trackingDelegate["willDeletePath"](path)}}catch(e){err("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: "+e.message)}parent.node_ops.unlink(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate["onDeletePath"])FS.trackingDelegate["onDeletePath"](path)}catch(e){err("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: "+e.message)}},readlink:function(path){var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:function(path,dontFollow){var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:function(path){return FS.stat(path,true)},chmod:function(path,mode,dontFollow){var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:function(path,mode){FS.chmod(path,mode,true)},fchmod:function(fd,mode){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:function(path,uid,gid,dontFollow){var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:function(path,uid,gid){FS.chown(path,uid,gid,true)},fchown:function(fd,uid,gid){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:function(path,len){if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:function(fd,len){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:function(path,atime,mtime){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:function(path,flags,mode,fd_start,fd_end){if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags==="string"?FS.modeStringToFlags(flags):flags;mode=typeof mode==="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path==="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false},fd_start,fd_end);if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1;err("FS.trackingDelegate error on read file: "+path)}}try{if(FS.trackingDelegate["onOpenFile"]){var trackingFlags=0;if((flags&2097155)!==1){trackingFlags|=FS.tracking.openFlags.READ}if((flags&2097155)!==0){trackingFlags|=FS.tracking.openFlags.WRITE}FS.trackingDelegate["onOpenFile"](path,trackingFlags)}}catch(e){err("FS.trackingDelegate['onOpenFile']('"+path+"', flags) threw an exception: "+e.message)}return stream},close:function(stream){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:function(stream){return stream.fd===null},llseek:function(stream,offset,whence){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:function(stream,buffer,offset,length,position){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!=="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:function(stream,buffer,offset,length,position,canOwn){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!=="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;try{if(stream.path&&FS.trackingDelegate["onWriteToFile"])FS.trackingDelegate["onWriteToFile"](stream.path)}catch(e){err("FS.trackingDelegate['onWriteToFile']('"+stream.path+"') threw an exception: "+e.message)}return bytesWritten},allocate:function(stream,offset,length){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:function(stream,address,length,position,prot,flags){if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,address,length,position,prot,flags)},msync:function(stream,buffer,offset,length,mmapFlags){if(!stream||!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:function(stream){return 0},ioctl:function(stream,cmd,arg){if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:function(path,opts){opts=opts||{};opts.flags=opts.flags||0;opts.encoding=opts.encoding||"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error('Invalid encoding type "'+opts.encoding+'"')}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding==="binary"){ret=buf}FS.close(stream);return ret},writeFile:function(path,data,opts){opts=opts||{};opts.flags=opts.flags||577;var stream=FS.open(path,opts.flags,opts.mode);if(typeof data==="string"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,undefined,opts.canOwn)}else if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{throw new Error("Unsupported data type")}FS.close(stream)},cwd:function(){return FS.currentPath},chdir:function(path){var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories:function(){FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices:function(){FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:function(){return 0},write:function(stream,buffer,offset,length,pos){return length}});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var random_device=getRandomDevice();FS.createDevice("/dev","random",random_device);FS.createDevice("/dev","urandom",random_device);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories:function(){FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount:function(){var node=FS.createNode(proc_self,"fd",16384|511,73);node.node_ops={lookup:function(parent,name){var fd=+name;var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:function(){return stream.path}}};ret.parent=ret;return ret}};return node}},{},"/proc/self/fd")},createStandardStreams:function(){if(Module["stdin"]){FS.createDevice("/dev","stdin",Module["stdin"])}else{FS.symlink("/dev/tty","/dev/stdin")}if(Module["stdout"]){FS.createDevice("/dev","stdout",null,Module["stdout"])}else{FS.symlink("/dev/tty","/dev/stdout")}if(Module["stderr"]){FS.createDevice("/dev","stderr",null,Module["stderr"])}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},ensureErrnoError:function(){if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.node=node;this.setErrno=function(errno){this.errno=errno};this.setErrno(errno);this.message="FS error"};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[44].forEach(function(code){FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack="<generic error, no stack>"})},staticInit:function(){FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={"MEMFS":MEMFS}},init:function(input,output,error){FS.init.initialized=true;FS.ensureErrnoError();Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams()},quit:function(){FS.init.initialized=false;var fflush=Module["_fflush"];if(fflush)fflush(0);for(var i=0;i<FS.streams.length;i++){var stream=FS.streams[i];if(!stream){continue}FS.close(stream)}},getMode:function(canRead,canWrite){var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode},findObject:function(path,dontResolveLastLink){var ret=FS.analyzePath(path,dontResolveLastLink);if(ret.exists){return ret.object}else{return null}},analyzePath:function(path,dontResolveLastLink){try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath:function(parent,path,canRead,canWrite){parent=typeof parent==="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:function(parent,name,properties,canRead,canWrite){var path=PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:function(parent,name,data,canRead,canWrite,canOwn){var path=name?PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name):parent;var mode=FS.getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data==="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i<len;++i)arr[i]=data.charCodeAt(i);data=arr}FS.chmod(node,mode|146);var stream=FS.open(node,577);FS.write(stream,data,0,data.length,0,canOwn);FS.close(stream);FS.chmod(node,mode)}return node},createDevice:function(parent,name,input,output){var path=PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:function(stream){stream.seekable=false},close:function(stream){if(output&&output.buffer&&output.buffer.length){output(10)}},read:function(stream,buffer,offset,length,pos){var bytesRead=0;for(var i=0;i<length;i++){var result;try{result=input()}catch(e){throw new FS.ErrnoError(29)}if(result===undefined&&bytesRead===0){throw new FS.ErrnoError(6)}if(result===null||result===undefined)break;bytesRead++;buffer[offset+i]=result}if(bytesRead){stream.node.timestamp=Date.now()}return bytesRead},write:function(stream,buffer,offset,length,pos){for(var i=0;i<length;i++){try{output(buffer[offset+i])}catch(e){throw new FS.ErrnoError(29)}}if(length){stream.node.timestamp=Date.now()}return i}});return FS.mkdev(path,mode,dev)},forceLoadFile:function(obj){if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!=="undefined"){throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}},createLazyFile:function(parent,name,url,canRead,canWrite){function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=function(from,to){if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);if(typeof Uint8Array!="undefined")xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}else{return intArrayFromString(xhr.responseText||"",true)}};var lazyArray=this;lazyArray.setDataGetter(function(chunkNum){var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]==="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]==="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!=="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._length}},chunkSize:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(function(key){var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){FS.forceLoadFile(node);return fn.apply(null,arguments)}});stream_ops.read=function stream_ops_read(stream,buffer,offset,length,position){FS.forceLoadFile(node);var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i<size;i++){buffer[offset+i]=contents[position+i]}}else{for(var i=0;i<size;i++){buffer[offset+i]=contents.get(position+i)}}return size};node.stream_ops=stream_ops;return node},createPreloadedFile:function(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish){Browser.init();var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency("cp "+fullname);function processData(byteArray){function finish(byteArray){if(preFinish)preFinish();if(!dontCreateFile){FS.createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}if(onload)onload();removeRunDependency(dep)}var handled=false;Module["preloadPlugins"].forEach(function(plugin){if(handled)return;if(plugin["canHandle"](fullname)){plugin["handle"](byteArray,fullname,finish,function(){if(onerror)onerror();removeRunDependency(dep)});handled=true}});if(!handled)finish(byteArray)}addRunDependency(dep);if(typeof url=="string"){Browser.asyncLoad(url,function(byteArray){processData(byteArray)},onerror)}else{processData(url)}},indexedDB:function(){return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME:function(){return"EM_FS_"+window.location.pathname},DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:function(paths,onload,onerror){onload=onload||function(){};onerror=onerror||function(){};var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=function openRequest_onupgradeneeded(){out("creating db");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME)};openRequest.onsuccess=function openRequest_onsuccess(){var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],"readwrite");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(function(path){var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=function putRequest_onsuccess(){ok++;if(ok+fail==total)finish()};putRequest.onerror=function putRequest_onerror(){fail++;if(ok+fail==total)finish()}});transaction.onerror=onerror};openRequest.onerror=onerror},loadFilesFromDB:function(paths,onload,onerror){onload=onload||function(){};onerror=onerror||function(){};var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=function openRequest_onsuccess(){var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],"readonly")}catch(e){onerror(e);return}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(function(path){var getRequest=files.get(path);getRequest.onsuccess=function getRequest_onsuccess(){if(FS.analyzePath(path).exists){FS.unlink(path)}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish()};getRequest.onerror=function getRequest_onerror(){fail++;if(ok+fail==total)finish()}});transaction.onerror=onerror};openRequest.onerror=onerror}};var SYSCALLS={mappings:{},DEFAULT_POLLMASK:5,umask:511,calculateAt:function(dirfd,path,allowEmpty){if(path[0]==="/"){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=FS.getStream(dirfd);if(!dirstream)throw new FS.ErrnoError(8);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(func,path,buf){try{var stat=func(path)}catch(e){if(e&&e.node&&PATH.normalize(path)!==PATH.normalize(FS.getPath(e.node))){return-54}throw e}HEAP32[buf>>2]=stat.dev;HEAP32[buf+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;HEAP32[buf+56>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+76>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+80>>2]=tempI64[0],HEAP32[buf+84>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},doMkdir:function(path,mode){path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0},doMknod:function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}FS.mknod(path,mode,dev);return 0},doReadlink:function(path,buf,bufsize){if(bufsize<=0)return-28;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len},doAccess:function(path,amode){if(amode&~7){return-28}var node;var lookup=FS.lookupPath(path,{follow:true});node=lookup.node;if(!node){return-44}var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0},doDup:function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd},doReadv:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i<iovcnt;i++){var ptr=HEAP32[iov+i*8>>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr<len)break}return ret},doWritev:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i<iovcnt;i++){var ptr=HEAP32[iov+i*8>>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream},get64:function(low,high){return low}};function ___sys_chdir(path){try{path=SYSCALLS.getStr(path);FS.chdir(path);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function setErrNo(value){HEAP32[___errno_location()>>2]=value;return value}function ___sys_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-28}var newStream;newStream=FS.open(stream.path,stream.flags,0,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0}case 12:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 13:case 14:return 0;case 16:case 8:return-28;case 9:setErrNo(28);return-1;default:{return-28}}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_getcwd(buf,size){try{if(size===0)return-28;var cwd=FS.cwd();var cwdLengthInBytes=lengthBytesUTF8(cwd);if(size<cwdLengthInBytes+1)return-68;stringToUTF8(cwd,buf,size);return buf}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_ioctl(fd,op,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(op){case 21509:case 21505:{if(!stream.tty)return-59;return 0}case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-59;return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{if(!stream.tty)return-59;return 0}default:abort("bad ioctl syscall "+op)}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_open(path,flags,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(path);var mode=varargs?SYSCALLS.get():0;var stream=FS.open(pathname,flags,mode);return stream.fd}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}var JSEvents={inEventHandler:0,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return false;for(var i in arrA){if(arrA[i]!=arrB[i])return false}return true}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList)){return}}JSEvents.deferredCalls.push({targetFunction:targetFunction,precedence:precedence,argsList:argsList});JSEvents.deferredCalls.sort(function(x,y){return x.precedence<y.precedence})},removeDeferredCalls:function(targetFunction){for(var i=0;i<JSEvents.deferredCalls.length;++i){if(JSEvents.deferredCalls[i].targetFunction==targetFunction){JSEvents.deferredCalls.splice(i,1);--i}}},canPerformEventHandlerRequests:function(){return JSEvents.inEventHandler&&JSEvents.currentEventHandler.allowsDeferredCalls},runDeferredCalls:function(){if(!JSEvents.canPerformEventHandlerRequests()){return}for(var i=0;i<JSEvents.deferredCalls.length;++i){var call=JSEvents.deferredCalls[i];JSEvents.deferredCalls.splice(i,1);--i;call.targetFunction.apply(null,call.argsList)}},eventHandlers:[],removeAllHandlersOnTarget:function(target,eventTypeString){for(var i=0;i<JSEvents.eventHandlers.length;++i){if(JSEvents.eventHandlers[i].target==target&&(!eventTypeString||eventTypeString==JSEvents.eventHandlers[i].eventTypeString)){JSEvents._removeHandler(i--)}}},_removeHandler:function(i){var h=JSEvents.eventHandlers[i];h.target.removeEventListener(h.eventTypeString,h.eventListenerFunc,h.useCapture);JSEvents.eventHandlers.splice(i,1)},registerOrRemoveHandler:function(eventHandler){var jsEventHandler=function jsEventHandler(event){++JSEvents.inEventHandler;JSEvents.currentEventHandler=eventHandler;JSEvents.runDeferredCalls();eventHandler.handlerFunc(event);JSEvents.runDeferredCalls();--JSEvents.inEventHandler};if(eventHandler.callbackfunc){eventHandler.eventListenerFunc=jsEventHandler;eventHandler.target.addEventListener(eventHandler.eventTypeString,jsEventHandler,eventHandler.useCapture);JSEvents.eventHandlers.push(eventHandler);JSEvents.registerRemoveEventListeners()}else{for(var i=0;i<JSEvents.eventHandlers.length;++i){if(JSEvents.eventHandlers[i].target==eventHandler.target&&JSEvents.eventHandlers[i].eventTypeString==eventHandler.eventTypeString){JSEvents._removeHandler(i--)}}}},getNodeNameForTarget:function(target){if(!target)return"";if(target==window)return"#window";if(target==screen)return"#screen";return target&&target.nodeName?target.nodeName:""},fullscreenEnabled:function(){return document.fullscreenEnabled||document.webkitFullscreenEnabled}};function requestPointerLock(target){if(target.requestPointerLock){target.requestPointerLock()}else if(target.msRequestPointerLock){target.msRequestPointerLock()}else{if(document.body.requestPointerLock||document.body.msRequestPointerLock){return-3}else{return-1}}return 0}function _emscripten_exit_pointerlock(){JSEvents.removeDeferredCalls(requestPointerLock);if(document.exitPointerLock){document.exitPointerLock()}else if(document.msExitPointerLock){document.msExitPointerLock()}else{return-1}return 0}function maybeCStringToJsString(cString){return cString>2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!=="undefined"?document:0,typeof window!=="undefined"?window:0];function findEventTarget(target){target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!=="undefined"?document.querySelector(target):undefined);return domElement}function getBoundingClientRect(e){return specialHTMLTargets.indexOf(e)<0?e.getBoundingClientRect():{"left":0,"top":0}}function _emscripten_get_element_css_size(target,width,height){target=findEventTarget(target);if(!target)return-4;var rect=getBoundingClientRect(target);HEAPF64[width>>3]=rect.width;HEAPF64[height>>3]=rect.height;return 0}function fillGamepadEventData(eventStruct,e){HEAPF64[eventStruct>>3]=e.timestamp;for(var i=0;i<e.axes.length;++i){HEAPF64[eventStruct+i*8+16>>3]=e.axes[i]}for(var i=0;i<e.buttons.length;++i){if(typeof e.buttons[i]==="object"){HEAPF64[eventStruct+i*8+528>>3]=e.buttons[i].value}else{HEAPF64[eventStruct+i*8+528>>3]=e.buttons[i]}}for(var i=0;i<e.buttons.length;++i){if(typeof e.buttons[i]==="object"){HEAP32[eventStruct+i*4+1040>>2]=e.buttons[i].pressed}else{HEAP32[eventStruct+i*4+1040>>2]=e.buttons[i]==1}}HEAP32[eventStruct+1296>>2]=e.connected;HEAP32[eventStruct+1300>>2]=e.index;HEAP32[eventStruct+8>>2]=e.axes.length;HEAP32[eventStruct+12>>2]=e.buttons.length;stringToUTF8(e.id,eventStruct+1304,64);stringToUTF8(e.mapping,eventStruct+1368,64)}function _emscripten_get_gamepad_status(index,gamepadState){if(index<0||index>=JSEvents.lastGamepadState.length)return-5;if(!JSEvents.lastGamepadState[index])return-7;fillGamepadEventData(gamepadState,JSEvents.lastGamepadState[index]);return 0}function _emscripten_get_num_gamepads(){return JSEvents.lastGamepadState.length}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension("ANGLE_instanced_arrays");if(ext){ctx["vertexAttribDivisor"]=function(index,divisor){ext["vertexAttribDivisorANGLE"](index,divisor)};ctx["drawArraysInstanced"]=function(mode,first,count,primcount){ext["drawArraysInstancedANGLE"](mode,first,count,primcount)};ctx["drawElementsInstanced"]=function(mode,count,type,indices,primcount){ext["drawElementsInstancedANGLE"](mode,count,type,indices,primcount)};return 1}}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension("OES_vertex_array_object");if(ext){ctx["createVertexArray"]=function(){return ext["createVertexArrayOES"]()};ctx["deleteVertexArray"]=function(vao){ext["deleteVertexArrayOES"](vao)};ctx["bindVertexArray"]=function(vao){ext["bindVertexArrayOES"](vao)};ctx["isVertexArray"]=function(vao){return ext["isVertexArrayOES"](vao)};return 1}}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension("WEBGL_draw_buffers");if(ext){ctx["drawBuffers"]=function(n,bufs){ext["drawBuffersWEBGL"](n,bufs)};return 1}}function __webgl_enable_WEBGL_multi_draw(ctx){return!!(ctx.multiDrawWebgl=ctx.getExtension("WEBGL_multi_draw"))}var GL={counter:1,buffers:[],programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:[],offscreenCanvases:{},timerQueriesEXT:[],programInfos:{},stringCache:{},unpackAlignment:4,recordError:function recordError(errorCode){if(!GL.lastError){GL.lastError=errorCode}},getNewId:function(table){var ret=GL.counter++;for(var i=table.length;i<ret;i++){table[i]=null}return ret},getSource:function(shader,count,string,length){var source="";for(var i=0;i<count;++i){var len=length?HEAP32[length+i*4>>2]:-1;source+=UTF8ToString(HEAP32[string+i*4>>2],len<0?undefined:len)}return source},createContext:function(canvas,webGLContextAttributes){var ctx=canvas.getContext("webgl",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:function(ctx,webGLContextAttributes){var handle=GL.getNewId(GL.contexts);var context={handle:handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};if(ctx.canvas)ctx.canvas.GLctxObject=context;GL.contexts[handle]=context;if(typeof webGLContextAttributes.enableExtensionsByDefault==="undefined"||webGLContextAttributes.enableExtensionsByDefault){GL.initExtensions(context)}return handle},makeContextCurrent:function(contextHandle){GL.currentContext=GL.contexts[contextHandle];Module.ctx=GLctx=GL.currentContext&&GL.currentContext.GLctx;return!(contextHandle&&!GLctx)},getContext:function(contextHandle){return GL.contexts[contextHandle]},deleteContext:function(contextHandle){if(GL.currentContext===GL.contexts[contextHandle])GL.currentContext=null;if(typeof JSEvents==="object")JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas);if(GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas)GL.contexts[contextHandle].GLctx.canvas.GLctxObject=undefined;GL.contexts[contextHandle]=null},initExtensions:function(context){if(!context)context=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;__webgl_enable_ANGLE_instanced_arrays(GLctx);__webgl_enable_OES_vertex_array_object(GLctx);__webgl_enable_WEBGL_draw_buffers(GLctx);GLctx.disjointTimerQueryExt=GLctx.getExtension("EXT_disjoint_timer_query");__webgl_enable_WEBGL_multi_draw(GLctx);var exts=GLctx.getSupportedExtensions()||[];exts.forEach(function(ext){if(ext.indexOf("lose_context")<0&&ext.indexOf("debug")<0){GLctx.getExtension(ext)}})},populateUniformTable:function(program){var p=GL.programs[program];var ptable=GL.programInfos[program]={uniforms:{},maxUniformLength:0,maxAttributeLength:-1,maxUniformBlockNameLength:-1};var utable=ptable.uniforms;var numUniforms=GLctx.getProgramParameter(p,35718);for(var i=0;i<numUniforms;++i){var u=GLctx.getActiveUniform(p,i);var name=u.name;ptable.maxUniformLength=Math.max(ptable.maxUniformLength,name.length+1);if(name.slice(-1)=="]"){name=name.slice(0,name.lastIndexOf("["))}var loc=GLctx.getUniformLocation(p,name);if(loc){var id=GL.getNewId(GL.uniforms);utable[name]=[u.size,id];GL.uniforms[id]=loc;for(var j=1;j<u.size;++j){var n=name+"["+j+"]";loc=GLctx.getUniformLocation(p,n);id=GL.getNewId(GL.uniforms);GL.uniforms[id]=loc}}}}};function _emscripten_glActiveTexture(x0){GLctx["activeTexture"](x0)}function _emscripten_glAttachShader(program,shader){GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _emscripten_glBeginQueryEXT(target,id){GLctx.disjointTimerQueryExt["beginQueryEXT"](target,GL.timerQueriesEXT[id])}function _emscripten_glBindAttribLocation(program,index,name){GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))}function _emscripten_glBindBuffer(target,buffer){GLctx.bindBuffer(target,GL.buffers[buffer])}function _emscripten_glBindFramebuffer(target,framebuffer){GLctx.bindFramebuffer(target,GL.framebuffers[framebuffer])}function _emscripten_glBindRenderbuffer(target,renderbuffer){GLctx.bindRenderbuffer(target,GL.renderbuffers[renderbuffer])}function _emscripten_glBindTexture(target,texture){GLctx.bindTexture(target,GL.textures[texture])}function _emscripten_glBindVertexArrayOES(vao){GLctx["bindVertexArray"](GL.vaos[vao])}function _emscripten_glBlendColor(x0,x1,x2,x3){GLctx["blendColor"](x0,x1,x2,x3)}function _emscripten_glBlendEquation(x0){GLctx["blendEquation"](x0)}function _emscripten_glBlendEquationSeparate(x0,x1){GLctx["blendEquationSeparate"](x0,x1)}function _emscripten_glBlendFunc(x0,x1){GLctx["blendFunc"](x0,x1)}function _emscripten_glBlendFuncSeparate(x0,x1,x2,x3){GLctx["blendFuncSeparate"](x0,x1,x2,x3)}function _emscripten_glBufferData(target,size,data,usage){GLctx.bufferData(target,data?HEAPU8.subarray(data,data+size):size,usage)}function _emscripten_glBufferSubData(target,offset,size,data){GLctx.bufferSubData(target,offset,HEAPU8.subarray(data,data+size))}function _emscripten_glCheckFramebufferStatus(x0){return GLctx["checkFramebufferStatus"](x0)}function _emscripten_glClear(x0){GLctx["clear"](x0)}function _emscripten_glClearColor(x0,x1,x2,x3){GLctx["clearColor"](x0,x1,x2,x3)}function _emscripten_glClearDepthf(x0){GLctx["clearDepth"](x0)}function _emscripten_glClearStencil(x0){GLctx["clearStencil"](x0)}function _emscripten_glColorMask(red,green,blue,alpha){GLctx.colorMask(!!red,!!green,!!blue,!!alpha)}function _emscripten_glCompileShader(shader){GLctx.compileShader(GL.shaders[shader])}function _emscripten_glCompressedTexImage2D(target,level,internalFormat,width,height,border,imageSize,data){GLctx["compressedTexImage2D"](target,level,internalFormat,width,height,border,data?HEAPU8.subarray(data,data+imageSize):null)}function _emscripten_glCompressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,imageSize,data){GLctx["compressedTexSubImage2D"](target,level,xoffset,yoffset,width,height,format,data?HEAPU8.subarray(data,data+imageSize):null)}function _emscripten_glCopyTexImage2D(x0,x1,x2,x3,x4,x5,x6,x7){GLctx["copyTexImage2D"](x0,x1,x2,x3,x4,x5,x6,x7)}function _emscripten_glCopyTexSubImage2D(x0,x1,x2,x3,x4,x5,x6,x7){GLctx["copyTexSubImage2D"](x0,x1,x2,x3,x4,x5,x6,x7)}function _emscripten_glCreateProgram(){var id=GL.getNewId(GL.programs);var program=GLctx.createProgram();program.name=id;GL.programs[id]=program;return id}function _emscripten_glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}function _emscripten_glCullFace(x0){GLctx["cullFace"](x0)}function _emscripten_glDeleteBuffers(n,buffers){for(var i=0;i<n;i++){var id=HEAP32[buffers+i*4>>2];var buffer=GL.buffers[id];if(!buffer)continue;GLctx.deleteBuffer(buffer);buffer.name=0;GL.buffers[id]=null}}function _emscripten_glDeleteFramebuffers(n,framebuffers){for(var i=0;i<n;++i){var id=HEAP32[framebuffers+i*4>>2];var framebuffer=GL.framebuffers[id];if(!framebuffer)continue;GLctx.deleteFramebuffer(framebuffer);framebuffer.name=0;GL.framebuffers[id]=null}}function _emscripten_glDeleteProgram(id){if(!id)return;var program=GL.programs[id];if(!program){GL.recordError(1281);return}GLctx.deleteProgram(program);program.name=0;GL.programs[id]=null;GL.programInfos[id]=null}function _emscripten_glDeleteQueriesEXT(n,ids){for(var i=0;i<n;i++){var id=HEAP32[ids+i*4>>2];var query=GL.timerQueriesEXT[id];if(!query)continue;GLctx.disjointTimerQueryExt["deleteQueryEXT"](query);GL.timerQueriesEXT[id]=null}}function _emscripten_glDeleteRenderbuffers(n,renderbuffers){for(var i=0;i<n;i++){var id=HEAP32[renderbuffers+i*4>>2];var renderbuffer=GL.renderbuffers[id];if(!renderbuffer)continue;GLctx.deleteRenderbuffer(renderbuffer);renderbuffer.name=0;GL.renderbuffers[id]=null}}function _emscripten_glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}function _emscripten_glDeleteTextures(n,textures){for(var i=0;i<n;i++){var id=HEAP32[textures+i*4>>2];var texture=GL.textures[id];if(!texture)continue;GLctx.deleteTexture(texture);texture.name=0;GL.textures[id]=null}}function _emscripten_glDeleteVertexArraysOES(n,vaos){for(var i=0;i<n;i++){var id=HEAP32[vaos+i*4>>2];GLctx["deleteVertexArray"](GL.vaos[id]);GL.vaos[id]=null}}function _emscripten_glDepthFunc(x0){GLctx["depthFunc"](x0)}function _emscripten_glDepthMask(flag){GLctx.depthMask(!!flag)}function _emscripten_glDepthRangef(x0,x1){GLctx["depthRange"](x0,x1)}function _emscripten_glDetachShader(program,shader){GLctx.detachShader(GL.programs[program],GL.shaders[shader])}function _emscripten_glDisable(x0){GLctx["disable"](x0)}function _emscripten_glDisableVertexAttribArray(index){GLctx.disableVertexAttribArray(index)}function _emscripten_glDrawArrays(mode,first,count){GLctx.drawArrays(mode,first,count)}function _emscripten_glDrawArraysInstancedANGLE(mode,first,count,primcount){GLctx["drawArraysInstanced"](mode,first,count,primcount)}var tempFixedLengthArray=[];function _emscripten_glDrawBuffersWEBGL(n,bufs){var bufArray=tempFixedLengthArray[n];for(var i=0;i<n;i++){bufArray[i]=HEAP32[bufs+i*4>>2]}GLctx["drawBuffers"](bufArray)}function _emscripten_glDrawElements(mode,count,type,indices){GLctx.drawElements(mode,count,type,indices)}function _emscripten_glDrawElementsInstancedANGLE(mode,count,type,indices,primcount){GLctx["drawElementsInstanced"](mode,count,type,indices,primcount)}function _emscripten_glEnable(x0){GLctx["enable"](x0)}function _emscripten_glEnableVertexAttribArray(index){GLctx.enableVertexAttribArray(index)}function _emscripten_glEndQueryEXT(target){GLctx.disjointTimerQueryExt["endQueryEXT"](target)}function _emscripten_glFinish(){GLctx["finish"]()}function _emscripten_glFlush(){GLctx["flush"]()}function _emscripten_glFramebufferRenderbuffer(target,attachment,renderbuffertarget,renderbuffer){GLctx.framebufferRenderbuffer(target,attachment,renderbuffertarget,GL.renderbuffers[renderbuffer])}function _emscripten_glFramebufferTexture2D(target,attachment,textarget,texture,level){GLctx.framebufferTexture2D(target,attachment,textarget,GL.textures[texture],level)}function _emscripten_glFrontFace(x0){GLctx["frontFace"](x0)}function __glGenObject(n,buffers,createFunction,objectTable){for(var i=0;i<n;i++){var buffer=GLctx[createFunction]();var id=buffer&&GL.getNewId(objectTable);if(buffer){buffer.name=id;objectTable[id]=buffer}else{GL.recordError(1282)}HEAP32[buffers+i*4>>2]=id}}function _emscripten_glGenBuffers(n,buffers){__glGenObject(n,buffers,"createBuffer",GL.buffers)}function _emscripten_glGenFramebuffers(n,ids){__glGenObject(n,ids,"createFramebuffer",GL.framebuffers)}function _emscripten_glGenQueriesEXT(n,ids){for(var i=0;i<n;i++){var query=GLctx.disjointTimerQueryExt["createQueryEXT"]();if(!query){GL.recordError(1282);while(i<n)HEAP32[ids+i++*4>>2]=0;return}var id=GL.getNewId(GL.timerQueriesEXT);query.name=id;GL.timerQueriesEXT[id]=query;HEAP32[ids+i*4>>2]=id}}function _emscripten_glGenRenderbuffers(n,renderbuffers){__glGenObject(n,renderbuffers,"createRenderbuffer",GL.renderbuffers)}function _emscripten_glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures)}function _emscripten_glGenVertexArraysOES(n,arrays){__glGenObject(n,arrays,"createVertexArray",GL.vaos)}function _emscripten_glGenerateMipmap(x0){GLctx["generateMipmap"](x0)}function __glGetActiveAttribOrUniform(funcName,program,index,bufSize,length,size,type,name){program=GL.programs[program];var info=GLctx[funcName](program,index);if(info){var numBytesWrittenExclNull=name&&stringToUTF8(info.name,name,bufSize);if(length)HEAP32[length>>2]=numBytesWrittenExclNull;if(size)HEAP32[size>>2]=info.size;if(type)HEAP32[type>>2]=info.type}}function _emscripten_glGetActiveAttrib(program,index,bufSize,length,size,type,name){__glGetActiveAttribOrUniform("getActiveAttrib",program,index,bufSize,length,size,type,name)}function _emscripten_glGetActiveUniform(program,index,bufSize,length,size,type,name){__glGetActiveAttribOrUniform("getActiveUniform",program,index,bufSize,length,size,type,name)}function _emscripten_glGetAttachedShaders(program,maxCount,count,shaders){var result=GLctx.getAttachedShaders(GL.programs[program]);var len=result.length;if(len>maxCount){len=maxCount}HEAP32[count>>2]=len;for(var i=0;i<len;++i){var id=GL.shaders.indexOf(result[i]);HEAP32[shaders+i*4>>2]=id}}function _emscripten_glGetAttribLocation(program,name){return GLctx.getAttribLocation(GL.programs[program],UTF8ToString(name))}function writeI53ToI64(ptr,num){HEAPU32[ptr>>2]=num;HEAPU32[ptr+4>>2]=(num-HEAPU32[ptr>>2])/4294967296}function emscriptenWebGLGet(name_,p,type){if(!p){GL.recordError(1281);return}var ret=undefined;switch(name_){case 36346:ret=1;break;case 36344:if(type!=0&&type!=1){GL.recordError(1280)}return;case 36345:ret=0;break;case 34466:var formats=GLctx.getParameter(34467);ret=formats?formats.length:0;break}if(ret===undefined){var result=GLctx.getParameter(name_);switch(typeof result){case"number":ret=result;break;case"boolean":ret=result?1:0;break;case"string":GL.recordError(1280);return;case"object":if(result===null){switch(name_){case 34964:case 35725:case 34965:case 36006:case 36007:case 32873:case 34229:case 34068:{ret=0;break}default:{GL.recordError(1280);return}}}else if(result instanceof Float32Array||result instanceof Uint32Array||result instanceof Int32Array||result instanceof Array){for(var i=0;i<result.length;++i){switch(type){case 0:HEAP32[p+i*4>>2]=result[i];break;case 2:HEAPF32[p+i*4>>2]=result[i];break;case 4:HEAP8[p+i>>0]=result[i]?1:0;break}}return}else{try{ret=result.name|0}catch(e){GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v: Unknown object returned from WebGL getParameter("+name_+")! (error: "+e+")");return}}break;default:GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v: Native code calling glGet"+type+"v("+name_+") and it returns "+result+" of type "+typeof result+"!");return}}switch(type){case 1:writeI53ToI64(p,ret);break;case 0:HEAP32[p>>2]=ret;break;case 2:HEAPF32[p>>2]=ret;break;case 4:HEAP8[p>>0]=ret?1:0;break}}function _emscripten_glGetBooleanv(name_,p){emscriptenWebGLGet(name_,p,4)}function _emscripten_glGetBufferParameteriv(target,value,data){if(!data){GL.recordError(1281);return}HEAP32[data>>2]=GLctx.getBufferParameter(target,value)}function _emscripten_glGetError(){var error=GLctx.getError()||GL.lastError;GL.lastError=0;return error}function _emscripten_glGetFloatv(name_,p){emscriptenWebGLGet(name_,p,2)}function _emscripten_glGetFramebufferAttachmentParameteriv(target,attachment,pname,params){var result=GLctx.getFramebufferAttachmentParameter(target,attachment,pname);if(result instanceof WebGLRenderbuffer||result instanceof WebGLTexture){result=result.name|0}HEAP32[params>>2]=result}function _emscripten_glGetIntegerv(name_,p){emscriptenWebGLGet(name_,p,0)}function _emscripten_glGetProgramInfoLog(program,maxLength,length,infoLog){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _emscripten_glGetProgramiv(program,pname,p){if(!p){GL.recordError(1281);return}if(program>=GL.counter){GL.recordError(1281);return}var ptable=GL.programInfos[program];if(!ptable){GL.recordError(1282);return}if(pname==35716){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";HEAP32[p>>2]=log.length+1}else if(pname==35719){HEAP32[p>>2]=ptable.maxUniformLength}else if(pname==35722){if(ptable.maxAttributeLength==-1){program=GL.programs[program];var numAttribs=GLctx.getProgramParameter(program,35721);ptable.maxAttributeLength=0;for(var i=0;i<numAttribs;++i){var activeAttrib=GLctx.getActiveAttrib(program,i);ptable.maxAttributeLength=Math.max(ptable.maxAttributeLength,activeAttrib.name.length+1)}}HEAP32[p>>2]=ptable.maxAttributeLength}else if(pname==35381){if(ptable.maxUniformBlockNameLength==-1){program=GL.programs[program];var numBlocks=GLctx.getProgramParameter(program,35382);ptable.maxUniformBlockNameLength=0;for(var i=0;i<numBlocks;++i){var activeBlockName=GLctx.getActiveUniformBlockName(program,i);ptable.maxUniformBlockNameLength=Math.max(ptable.maxUniformBlockNameLength,activeBlockName.length+1)}}HEAP32[p>>2]=ptable.maxUniformBlockNameLength}else{HEAP32[p>>2]=GLctx.getProgramParameter(GL.programs[program],pname)}}function _emscripten_glGetQueryObjecti64vEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.timerQueriesEXT[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}writeI53ToI64(params,ret)}function _emscripten_glGetQueryObjectivEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.timerQueriesEXT[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}HEAP32[params>>2]=ret}function _emscripten_glGetQueryObjectui64vEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.timerQueriesEXT[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}writeI53ToI64(params,ret)}function _emscripten_glGetQueryObjectuivEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.timerQueriesEXT[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}HEAP32[params>>2]=ret}function _emscripten_glGetQueryivEXT(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.disjointTimerQueryExt["getQueryEXT"](target,pname)}function _emscripten_glGetRenderbufferParameteriv(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getRenderbufferParameter(target,pname)}function _emscripten_glGetShaderInfoLog(shader,maxLength,length,infoLog){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _emscripten_glGetShaderPrecisionFormat(shaderType,precisionType,range,precision){var result=GLctx.getShaderPrecisionFormat(shaderType,precisionType);HEAP32[range>>2]=result.rangeMin;HEAP32[range+4>>2]=result.rangeMax;HEAP32[precision>>2]=result.precision}function _emscripten_glGetShaderSource(shader,bufSize,length,source){var result=GLctx.getShaderSource(GL.shaders[shader]);if(!result)return;var numBytesWrittenExclNull=bufSize>0&&source?stringToUTF8(result,source,bufSize):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _emscripten_glGetShaderiv(shader,pname,p){if(!p){GL.recordError(1281);return}if(pname==35716){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var logLength=log?log.length+1:0;HEAP32[p>>2]=logLength}else if(pname==35720){var source=GLctx.getShaderSource(GL.shaders[shader]);var sourceLength=source?source.length+1:0;HEAP32[p>>2]=sourceLength}else{HEAP32[p>>2]=GLctx.getShaderParameter(GL.shaders[shader],pname)}}function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _emscripten_glGetString(name_){if(GL.stringCache[name_])return GL.stringCache[name_];var ret;switch(name_){case 7939:var exts=GLctx.getSupportedExtensions()||[];exts=exts.concat(exts.map(function(e){return"GL_"+e}));ret=stringToNewUTF8(exts.join(" "));break;case 7936:case 7937:case 37445:case 37446:var s=GLctx.getParameter(name_);if(!s){GL.recordError(1280)}ret=stringToNewUTF8(s);break;case 7938:var glVersion=GLctx.getParameter(7938);{glVersion="OpenGL ES 2.0 ("+glVersion+")"}ret=stringToNewUTF8(glVersion);break;case 35724:var glslVersion=GLctx.getParameter(35724);var ver_re=/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/;var ver_num=glslVersion.match(ver_re);if(ver_num!==null){if(ver_num[1].length==3)ver_num[1]=ver_num[1]+"0";glslVersion="OpenGL ES GLSL ES "+ver_num[1]+" ("+glslVersion+")"}ret=stringToNewUTF8(glslVersion);break;default:GL.recordError(1280);return 0}GL.stringCache[name_]=ret;return ret}function _emscripten_glGetTexParameterfv(target,pname,params){if(!params){GL.recordError(1281);return}HEAPF32[params>>2]=GLctx.getTexParameter(target,pname)}function _emscripten_glGetTexParameteriv(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getTexParameter(target,pname)}function jstoi_q(str){return parseInt(str)}function _emscripten_glGetUniformLocation(program,name){name=UTF8ToString(name);var arrayIndex=0;if(name[name.length-1]=="]"){var leftBrace=name.lastIndexOf("[");arrayIndex=name[leftBrace+1]!="]"?jstoi_q(name.slice(leftBrace+1)):0;name=name.slice(0,leftBrace)}var uniformInfo=GL.programInfos[program]&&GL.programInfos[program].uniforms[name];if(uniformInfo&&arrayIndex>=0&&arrayIndex<uniformInfo[0]){return uniformInfo[1]+arrayIndex}else{return-1}}function emscriptenWebGLGetUniform(program,location,params,type){if(!params){GL.recordError(1281);return}var data=GLctx.getUniform(GL.programs[program],GL.uniforms[location]);if(typeof data=="number"||typeof data=="boolean"){switch(type){case 0:HEAP32[params>>2]=data;break;case 2:HEAPF32[params>>2]=data;break}}else{for(var i=0;i<data.length;i++){switch(type){case 0:HEAP32[params+i*4>>2]=data[i];break;case 2:HEAPF32[params+i*4>>2]=data[i];break}}}}function _emscripten_glGetUniformfv(program,location,params){emscriptenWebGLGetUniform(program,location,params,2)}function _emscripten_glGetUniformiv(program,location,params){emscriptenWebGLGetUniform(program,location,params,0)}function _emscripten_glGetVertexAttribPointerv(index,pname,pointer){if(!pointer){GL.recordError(1281);return}HEAP32[pointer>>2]=GLctx.getVertexAttribOffset(index,pname)}function emscriptenWebGLGetVertexAttrib(index,pname,params,type){if(!params){GL.recordError(1281);return}var data=GLctx.getVertexAttrib(index,pname);if(pname==34975){HEAP32[params>>2]=data&&data["name"]}else if(typeof data=="number"||typeof data=="boolean"){switch(type){case 0:HEAP32[params>>2]=data;break;case 2:HEAPF32[params>>2]=data;break;case 5:HEAP32[params>>2]=Math.fround(data);break}}else{for(var i=0;i<data.length;i++){switch(type){case 0:HEAP32[params+i*4>>2]=data[i];break;case 2:HEAPF32[params+i*4>>2]=data[i];break;case 5:HEAP32[params+i*4>>2]=Math.fround(data[i]);break}}}}function _emscripten_glGetVertexAttribfv(index,pname,params){emscriptenWebGLGetVertexAttrib(index,pname,params,2)}function _emscripten_glGetVertexAttribiv(index,pname,params){emscriptenWebGLGetVertexAttrib(index,pname,params,5)}function _emscripten_glHint(x0,x1){GLctx["hint"](x0,x1)}function _emscripten_glIsBuffer(buffer){var b=GL.buffers[buffer];if(!b)return 0;return GLctx.isBuffer(b)}function _emscripten_glIsEnabled(x0){return GLctx["isEnabled"](x0)}function _emscripten_glIsFramebuffer(framebuffer){var fb=GL.framebuffers[framebuffer];if(!fb)return 0;return GLctx.isFramebuffer(fb)}function _emscripten_glIsProgram(program){program=GL.programs[program];if(!program)return 0;return GLctx.isProgram(program)}function _emscripten_glIsQueryEXT(id){var query=GL.timerQueriesEXT[id];if(!query)return 0;return GLctx.disjointTimerQueryExt["isQueryEXT"](query)}function _emscripten_glIsRenderbuffer(renderbuffer){var rb=GL.renderbuffers[renderbuffer];if(!rb)return 0;return GLctx.isRenderbuffer(rb)}function _emscripten_glIsShader(shader){var s=GL.shaders[shader];if(!s)return 0;return GLctx.isShader(s)}function _emscripten_glIsTexture(id){var texture=GL.textures[id];if(!texture)return 0;return GLctx.isTexture(texture)}function _emscripten_glIsVertexArrayOES(array){var vao=GL.vaos[array];if(!vao)return 0;return GLctx["isVertexArray"](vao)}function _emscripten_glLineWidth(x0){GLctx["lineWidth"](x0)}function _emscripten_glLinkProgram(program){GLctx.linkProgram(GL.programs[program]);GL.populateUniformTable(program)}function _emscripten_glPixelStorei(pname,param){if(pname==3317){GL.unpackAlignment=param}GLctx.pixelStorei(pname,param)}function _emscripten_glPolygonOffset(x0,x1){GLctx["polygonOffset"](x0,x1)}function _emscripten_glQueryCounterEXT(id,target){GLctx.disjointTimerQueryExt["queryCounterEXT"](GL.timerQueriesEXT[id],target)}function computeUnpackAlignedImageSize(width,height,sizePerPixel,alignment){function roundedToNextMultipleOf(x,y){return x+y-1&-y}var plainRowSize=width*sizePerPixel;var alignedRowSize=roundedToNextMultipleOf(plainRowSize,alignment);return height*alignedRowSize}function __colorChannelsInGlTextureFormat(format){var colorChannels={5:3,6:4,8:2,29502:3,29504:4};return colorChannels[format-6402]||1}function heapObjectForWebGLType(type){type-=5120;if(type==1)return HEAPU8;if(type==4)return HEAP32;if(type==6)return HEAPF32;if(type==5||type==28922)return HEAPU32;return HEAPU16}function heapAccessShiftForWebGLHeap(heap){return 31-Math.clz32(heap.BYTES_PER_ELEMENT)}function emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat){var heap=heapObjectForWebGLType(type);var shift=heapAccessShiftForWebGLHeap(heap);var byteSize=1<<shift;var sizePerPixel=__colorChannelsInGlTextureFormat(format)*byteSize;var bytes=computeUnpackAlignedImageSize(width,height,sizePerPixel,GL.unpackAlignment);return heap.subarray(pixels>>shift,pixels+bytes>>shift)}function _emscripten_glReadPixels(x,y,width,height,format,type,pixels){var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);return}GLctx.readPixels(x,y,width,height,format,type,pixelData)}function _emscripten_glReleaseShaderCompiler(){}function _emscripten_glRenderbufferStorage(x0,x1,x2,x3){GLctx["renderbufferStorage"](x0,x1,x2,x3)}function _emscripten_glSampleCoverage(value,invert){GLctx.sampleCoverage(value,!!invert)}function _emscripten_glScissor(x0,x1,x2,x3){GLctx["scissor"](x0,x1,x2,x3)}function _emscripten_glShaderBinary(){GL.recordError(1280)}function _emscripten_glShaderSource(shader,count,string,length){var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}function _emscripten_glStencilFunc(x0,x1,x2){GLctx["stencilFunc"](x0,x1,x2)}function _emscripten_glStencilFuncSeparate(x0,x1,x2,x3){GLctx["stencilFuncSeparate"](x0,x1,x2,x3)}function _emscripten_glStencilMask(x0){GLctx["stencilMask"](x0)}function _emscripten_glStencilMaskSeparate(x0,x1){GLctx["stencilMaskSeparate"](x0,x1)}function _emscripten_glStencilOp(x0,x1,x2){GLctx["stencilOp"](x0,x1,x2)}function _emscripten_glStencilOpSeparate(x0,x1,x2,x3){GLctx["stencilOpSeparate"](x0,x1,x2,x3)}function _emscripten_glTexImage2D(target,level,internalFormat,width,height,border,format,type,pixels){GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels?emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat):null)}function _emscripten_glTexParameterf(x0,x1,x2){GLctx["texParameterf"](x0,x1,x2)}function _emscripten_glTexParameterfv(target,pname,params){var param=HEAPF32[params>>2];GLctx.texParameterf(target,pname,param)}function _emscripten_glTexParameteri(x0,x1,x2){GLctx["texParameteri"](x0,x1,x2)}function _emscripten_glTexParameteriv(target,pname,params){var param=HEAP32[params>>2];GLctx.texParameteri(target,pname,param)}function _emscripten_glTexSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixels){var pixelData=null;if(pixels)pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,0);GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixelData)}function _emscripten_glUniform1f(location,v0){GLctx.uniform1f(GL.uniforms[location],v0)}var miniTempWebGLFloatBuffers=[];function _emscripten_glUniform1fv(location,count,value){if(count<=288){var view=miniTempWebGLFloatBuffers[count-1];for(var i=0;i<count;++i){view[i]=HEAPF32[value+4*i>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*4>>2)}GLctx.uniform1fv(GL.uniforms[location],view)}function _emscripten_glUniform1i(location,v0){GLctx.uniform1i(GL.uniforms[location],v0)}var __miniTempWebGLIntBuffers=[];function _emscripten_glUniform1iv(location,count,value){if(count<=288){var view=__miniTempWebGLIntBuffers[count-1];for(var i=0;i<count;++i){view[i]=HEAP32[value+4*i>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*4>>2)}GLctx.uniform1iv(GL.uniforms[location],view)}function _emscripten_glUniform2f(location,v0,v1){GLctx.uniform2f(GL.uniforms[location],v0,v1)}function _emscripten_glUniform2fv(location,count,value){if(count<=144){var view=miniTempWebGLFloatBuffers[2*count-1];for(var i=0;i<2*count;i+=2){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*8>>2)}GLctx.uniform2fv(GL.uniforms[location],view)}function _emscripten_glUniform2i(location,v0,v1){GLctx.uniform2i(GL.uniforms[location],v0,v1)}function _emscripten_glUniform2iv(location,count,value){if(count<=144){var view=__miniTempWebGLIntBuffers[2*count-1];for(var i=0;i<2*count;i+=2){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*8>>2)}GLctx.uniform2iv(GL.uniforms[location],view)}function _emscripten_glUniform3f(location,v0,v1,v2){GLctx.uniform3f(GL.uniforms[location],v0,v1,v2)}function _emscripten_glUniform3fv(location,count,value){if(count<=96){var view=miniTempWebGLFloatBuffers[3*count-1];for(var i=0;i<3*count;i+=3){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*12>>2)}GLctx.uniform3fv(GL.uniforms[location],view)}function _emscripten_glUniform3i(location,v0,v1,v2){GLctx.uniform3i(GL.uniforms[location],v0,v1,v2)}function _emscripten_glUniform3iv(location,count,value){if(count<=96){var view=__miniTempWebGLIntBuffers[3*count-1];for(var i=0;i<3*count;i+=3){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2];view[i+2]=HEAP32[value+(4*i+8)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*12>>2)}GLctx.uniform3iv(GL.uniforms[location],view)}function _emscripten_glUniform4f(location,v0,v1,v2,v3){GLctx.uniform4f(GL.uniforms[location],v0,v1,v2,v3)}function _emscripten_glUniform4fv(location,count,value){if(count<=72){var view=miniTempWebGLFloatBuffers[4*count-1];var heap=HEAPF32;value>>=2;for(var i=0;i<4*count;i+=4){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3]}}else{var view=HEAPF32.subarray(value>>2,value+count*16>>2)}GLctx.uniform4fv(GL.uniforms[location],view)}function _emscripten_glUniform4i(location,v0,v1,v2,v3){GLctx.uniform4i(GL.uniforms[location],v0,v1,v2,v3)}function _emscripten_glUniform4iv(location,count,value){if(count<=72){var view=__miniTempWebGLIntBuffers[4*count-1];for(var i=0;i<4*count;i+=4){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2];view[i+2]=HEAP32[value+(4*i+8)>>2];view[i+3]=HEAP32[value+(4*i+12)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*16>>2)}GLctx.uniform4iv(GL.uniforms[location],view)}function _emscripten_glUniformMatrix2fv(location,count,transpose,value){if(count<=72){var view=miniTempWebGLFloatBuffers[4*count-1];for(var i=0;i<4*count;i+=4){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2];view[i+3]=HEAPF32[value+(4*i+12)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*16>>2)}GLctx.uniformMatrix2fv(GL.uniforms[location],!!transpose,view)}function _emscripten_glUniformMatrix3fv(location,count,transpose,value){if(count<=32){var view=miniTempWebGLFloatBuffers[9*count-1];for(var i=0;i<9*count;i+=9){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2];view[i+3]=HEAPF32[value+(4*i+12)>>2];view[i+4]=HEAPF32[value+(4*i+16)>>2];view[i+5]=HEAPF32[value+(4*i+20)>>2];view[i+6]=HEAPF32[value+(4*i+24)>>2];view[i+7]=HEAPF32[value+(4*i+28)>>2];view[i+8]=HEAPF32[value+(4*i+32)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*36>>2)}GLctx.uniformMatrix3fv(GL.uniforms[location],!!transpose,view)}function _emscripten_glUniformMatrix4fv(location,count,transpose,value){if(count<=18){var view=miniTempWebGLFloatBuffers[16*count-1];var heap=HEAPF32;value>>=2;for(var i=0;i<16*count;i+=16){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3];view[i+4]=heap[dst+4];view[i+5]=heap[dst+5];view[i+6]=heap[dst+6];view[i+7]=heap[dst+7];view[i+8]=heap[dst+8];view[i+9]=heap[dst+9];view[i+10]=heap[dst+10];view[i+11]=heap[dst+11];view[i+12]=heap[dst+12];view[i+13]=heap[dst+13];view[i+14]=heap[dst+14];view[i+15]=heap[dst+15]}}else{var view=HEAPF32.subarray(value>>2,value+count*64>>2)}GLctx.uniformMatrix4fv(GL.uniforms[location],!!transpose,view)}function _emscripten_glUseProgram(program){GLctx.useProgram(GL.programs[program])}function _emscripten_glValidateProgram(program){GLctx.validateProgram(GL.programs[program])}function _emscripten_glVertexAttrib1f(x0,x1){GLctx["vertexAttrib1f"](x0,x1)}function _emscripten_glVertexAttrib1fv(index,v){GLctx.vertexAttrib1f(index,HEAPF32[v>>2])}function _emscripten_glVertexAttrib2f(x0,x1,x2){GLctx["vertexAttrib2f"](x0,x1,x2)}function _emscripten_glVertexAttrib2fv(index,v){GLctx.vertexAttrib2f(index,HEAPF32[v>>2],HEAPF32[v+4>>2])}function _emscripten_glVertexAttrib3f(x0,x1,x2,x3){GLctx["vertexAttrib3f"](x0,x1,x2,x3)}function _emscripten_glVertexAttrib3fv(index,v){GLctx.vertexAttrib3f(index,HEAPF32[v>>2],HEAPF32[v+4>>2],HEAPF32[v+8>>2])}function _emscripten_glVertexAttrib4f(x0,x1,x2,x3,x4){GLctx["vertexAttrib4f"](x0,x1,x2,x3,x4)}function _emscripten_glVertexAttrib4fv(index,v){GLctx.vertexAttrib4f(index,HEAPF32[v>>2],HEAPF32[v+4>>2],HEAPF32[v+8>>2],HEAPF32[v+12>>2])}function _emscripten_glVertexAttribDivisorANGLE(index,divisor){GLctx["vertexAttribDivisor"](index,divisor)}function _emscripten_glVertexAttribPointer(index,size,type,normalized,stride,ptr){GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}function _emscripten_glViewport(x0,x1,x2,x3){GLctx["viewport"](x0,x1,x2,x3)}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function abortOnCannotGrowMemory(requestedSize){abort("OOM")}function _emscripten_resize_heap(requestedSize){abortOnCannotGrowMemory(requestedSize)}function _emscripten_run_script(ptr){eval(UTF8ToString(ptr))}function _emscripten_sample_gamepad_data(){return(JSEvents.lastGamepadState=navigator.getGamepads?navigator.getGamepads():navigator.webkitGetGamepads?navigator.webkitGetGamepads():null)?0:-1}function fillMouseEventData(eventStruct,e,target){var idx=eventStruct>>2;HEAP32[idx+0]=e.screenX;HEAP32[idx+1]=e.screenY;HEAP32[idx+2]=e.clientX;HEAP32[idx+3]=e.clientY;HEAP32[idx+4]=e.ctrlKey;HEAP32[idx+5]=e.shiftKey;HEAP32[idx+6]=e.altKey;HEAP32[idx+7]=e.metaKey;HEAP16[idx*2+16]=e.button;HEAP16[idx*2+17]=e.buttons;HEAP32[idx+9]=e["movementX"];HEAP32[idx+10]=e["movementY"];var rect=getBoundingClientRect(target);HEAP32[idx+11]=e.clientX-rect.left;HEAP32[idx+12]=e.clientY-rect.top}function registerMouseEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.mouseEvent)JSEvents.mouseEvent=_malloc(64);target=findEventTarget(target);var mouseEventHandlerFunc=function(ev){var e=ev||event;fillMouseEventData(JSEvents.mouseEvent,e,target);if(wasmTable.get(callbackfunc)(eventTypeId,JSEvents.mouseEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:eventTypeString!="mousemove"&&eventTypeString!="mouseenter"&&eventTypeString!="mouseleave",eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:mouseEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_click_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,4,"click",targetThread);return 0}function fillFullscreenChangeEventData(eventStruct){var fullscreenElement=document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement||document.msFullscreenElement;var isFullscreen=!!fullscreenElement;HEAP32[eventStruct>>2]=isFullscreen;HEAP32[eventStruct+4>>2]=JSEvents.fullscreenEnabled();var reportedElement=isFullscreen?fullscreenElement:JSEvents.previousFullscreenElement;var nodeName=JSEvents.getNodeNameForTarget(reportedElement);var id=reportedElement&&reportedElement.id?reportedElement.id:"";stringToUTF8(nodeName,eventStruct+8,128);stringToUTF8(id,eventStruct+136,128);HEAP32[eventStruct+264>>2]=reportedElement?reportedElement.clientWidth:0;HEAP32[eventStruct+268>>2]=reportedElement?reportedElement.clientHeight:0;HEAP32[eventStruct+272>>2]=screen.width;HEAP32[eventStruct+276>>2]=screen.height;if(isFullscreen){JSEvents.previousFullscreenElement=fullscreenElement}}function registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.fullscreenChangeEvent)JSEvents.fullscreenChangeEvent=_malloc(280);var fullscreenChangeEventhandlerFunc=function(ev){var e=ev||event;var fullscreenChangeEvent=JSEvents.fullscreenChangeEvent;fillFullscreenChangeEventData(fullscreenChangeEvent);if(wasmTable.get(callbackfunc)(eventTypeId,fullscreenChangeEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:fullscreenChangeEventhandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_fullscreenchange_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){if(!JSEvents.fullscreenEnabled())return-1;target=findEventTarget(target);if(!target)return-4;registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,19,"fullscreenchange",targetThread);registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,19,"webkitfullscreenchange",targetThread);return 0}function registerGamepadEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.gamepadEvent)JSEvents.gamepadEvent=_malloc(1432);var gamepadEventHandlerFunc=function(ev){var e=ev||event;var gamepadEvent=JSEvents.gamepadEvent;fillGamepadEventData(gamepadEvent,e["gamepad"]);if(wasmTable.get(callbackfunc)(eventTypeId,gamepadEvent,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:gamepadEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_gamepadconnected_callback_on_thread(userData,useCapture,callbackfunc,targetThread){if(!navigator.getGamepads&&!navigator.webkitGetGamepads)return-1;registerGamepadEventCallback(2,userData,useCapture,callbackfunc,26,"gamepadconnected",targetThread);return 0}function _emscripten_set_gamepaddisconnected_callback_on_thread(userData,useCapture,callbackfunc,targetThread){if(!navigator.getGamepads&&!navigator.webkitGetGamepads)return-1;registerGamepadEventCallback(2,userData,useCapture,callbackfunc,27,"gamepaddisconnected",targetThread);return 0}function registerKeyEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.keyEvent)JSEvents.keyEvent=_malloc(164);var keyEventHandlerFunc=function(e){var keyEventData=JSEvents.keyEvent;var idx=keyEventData>>2;HEAP32[idx+0]=e.location;HEAP32[idx+1]=e.ctrlKey;HEAP32[idx+2]=e.shiftKey;HEAP32[idx+3]=e.altKey;HEAP32[idx+4]=e.metaKey;HEAP32[idx+5]=e.repeat;HEAP32[idx+6]=e.charCode;HEAP32[idx+7]=e.keyCode;HEAP32[idx+8]=e.which;stringToUTF8(e.key||"",keyEventData+36,32);stringToUTF8(e.code||"",keyEventData+68,32);stringToUTF8(e.char||"",keyEventData+100,32);stringToUTF8(e.locale||"",keyEventData+132,32);if(wasmTable.get(callbackfunc)(eventTypeId,keyEventData,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:keyEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_keydown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,2,"keydown",targetThread);return 0}var Browser={mainLoop:{scheduler:null,method:"",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause:function(){Browser.mainLoop.scheduler=null;Browser.mainLoop.currentlyRunningMainloop++},resume:function(){Browser.mainLoop.currentlyRunningMainloop++;var timingMode=Browser.mainLoop.timingMode;var timingValue=Browser.mainLoop.timingValue;var func=Browser.mainLoop.func;Browser.mainLoop.func=null;setMainLoop(func,0,false,Browser.mainLoop.arg,true);_emscripten_set_main_loop_timing(timingMode,timingValue);Browser.mainLoop.scheduler()},updateStatus:function(){if(Module["setStatus"]){var message=Module["statusMessage"]||"Please wait...";var remaining=Browser.mainLoop.remainingBlockers;var expected=Browser.mainLoop.expectedBlockers;if(remaining){if(remaining<expected){Module["setStatus"](message+" ("+(expected-remaining)+"/"+expected+")")}else{Module["setStatus"](message)}}else{Module["setStatus"]("")}}},runIter:function(func){if(ABORT)return;if(Module["preMainLoop"]){var preRet=Module["preMainLoop"]();if(preRet===false){return}}try{func()}catch(e){if(e instanceof ExitStatus){return}else if(e=="unwind"){return}else{if(e&&typeof e==="object"&&e.stack)err("exception thrown: "+[e,e.stack]);throw e}}if(Module["postMainLoop"])Module["postMainLoop"]()}},isFullscreen:false,pointerLock:false,moduleContextCreatedCallbacks:[],workers:[],init:function(){if(!Module["preloadPlugins"])Module["preloadPlugins"]=[];if(Browser.initted)return;Browser.initted=true;try{new Blob;Browser.hasBlobConstructor=true}catch(e){Browser.hasBlobConstructor=false;console.log("warning: no blob constructor, cannot create blobs with mimetypes")}Browser.BlobBuilder=typeof MozBlobBuilder!="undefined"?MozBlobBuilder:typeof WebKitBlobBuilder!="undefined"?WebKitBlobBuilder:!Browser.hasBlobConstructor?console.log("warning: no BlobBuilder"):null;Browser.URLObject=typeof window!="undefined"?window.URL?window.URL:window.webkitURL:undefined;if(!Module.noImageDecoding&&typeof Browser.URLObject==="undefined"){console.log("warning: Browser does not support creating object URLs. Built-in browser image decoding will not be available.");Module.noImageDecoding=true}var imagePlugin={};imagePlugin["canHandle"]=function imagePlugin_canHandle(name){return!Module.noImageDecoding&&/\.(jpg|jpeg|png|bmp)$/i.test(name)};imagePlugin["handle"]=function imagePlugin_handle(byteArray,name,onload,onerror){var b=null;if(Browser.hasBlobConstructor){try{b=new Blob([byteArray],{type:Browser.getMimetype(name)});if(b.size!==byteArray.length){b=new Blob([new Uint8Array(byteArray).buffer],{type:Browser.getMimetype(name)})}}catch(e){warnOnce("Blob constructor present but fails: "+e+"; falling back to blob builder")}}if(!b){var bb=new Browser.BlobBuilder;bb.append(new Uint8Array(byteArray).buffer);b=bb.getBlob()}var url=Browser.URLObject.createObjectURL(b);var img=new Image;img.onload=function img_onload(){assert(img.complete,"Image "+name+" could not be decoded");var canvas=document.createElement("canvas");canvas.width=img.width;canvas.height=img.height;var ctx=canvas.getContext("2d");ctx.drawImage(img,0,0);Module["preloadedImages"][name]=canvas;Browser.URLObject.revokeObjectURL(url);if(onload)onload(byteArray)};img.onerror=function img_onerror(event){console.log("Image "+url+" could not be decoded");if(onerror)onerror()};img.src=url};Module["preloadPlugins"].push(imagePlugin);var audioPlugin={};audioPlugin["canHandle"]=function audioPlugin_canHandle(name){return!Module.noAudioDecoding&&name.substr(-4)in{".ogg":1,".wav":1,".mp3":1}};audioPlugin["handle"]=function audioPlugin_handle(byteArray,name,onload,onerror){var done=false;function finish(audio){if(done)return;done=true;Module["preloadedAudios"][name]=audio;if(onload)onload(byteArray)}function fail(){if(done)return;done=true;Module["preloadedAudios"][name]=new Audio;if(onerror)onerror()}if(Browser.hasBlobConstructor){try{var b=new Blob([byteArray],{type:Browser.getMimetype(name)})}catch(e){return fail()}var url=Browser.URLObject.createObjectURL(b);var audio=new Audio;audio.addEventListener("canplaythrough",function(){finish(audio)},false);audio.onerror=function audio_onerror(event){if(done)return;console.log("warning: browser could not fully decode audio "+name+", trying slower base64 approach");function encode64(data){var BASE="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var PAD="=";var ret="";var leftchar=0;var leftbits=0;for(var i=0;i<data.length;i++){leftchar=leftchar<<8|data[i];leftbits+=8;while(leftbits>=6){var curr=leftchar>>leftbits-6&63;leftbits-=6;ret+=BASE[curr]}}if(leftbits==2){ret+=BASE[(leftchar&3)<<4];ret+=PAD+PAD}else if(leftbits==4){ret+=BASE[(leftchar&15)<<2];ret+=PAD}return ret}audio.src="data:audio/x-"+name.substr(-3)+";base64,"+encode64(byteArray);finish(audio)};audio.src=url;Browser.safeSetTimeout(function(){finish(audio)},1e4)}else{return fail()}};Module["preloadPlugins"].push(audioPlugin);function pointerLockChange(){Browser.pointerLock=document["pointerLockElement"]===Module["canvas"]||document["mozPointerLockElement"]===Module["canvas"]||document["webkitPointerLockElement"]===Module["canvas"]||document["msPointerLockElement"]===Module["canvas"]}var canvas=Module["canvas"];if(canvas){canvas.requestPointerLock=canvas["requestPointerLock"]||canvas["mozRequestPointerLock"]||canvas["webkitRequestPointerLock"]||canvas["msRequestPointerLock"]||function(){};canvas.exitPointerLock=document["exitPointerLock"]||document["mozExitPointerLock"]||document["webkitExitPointerLock"]||document["msExitPointerLock"]||function(){};canvas.exitPointerLock=canvas.exitPointerLock.bind(document);document.addEventListener("pointerlockchange",pointerLockChange,false);document.addEventListener("mozpointerlockchange",pointerLockChange,false);document.addEventListener("webkitpointerlockchange",pointerLockChange,false);document.addEventListener("mspointerlockchange",pointerLockChange,false);if(Module["elementPointerLock"]){canvas.addEventListener("click",function(ev){if(!Browser.pointerLock&&Module["canvas"].requestPointerLock){Module["canvas"].requestPointerLock();ev.preventDefault()}},false)}}},createContext:function(canvas,useWebGL,setInModule,webGLContextAttributes){if(useWebGL&&Module.ctx&&canvas==Module.canvas)return Module.ctx;var ctx;var contextHandle;if(useWebGL){var contextAttributes={antialias:false,alpha:false,majorVersion:1};if(webGLContextAttributes){for(var attribute in webGLContextAttributes){contextAttributes[attribute]=webGLContextAttributes[attribute]}}if(typeof GL!=="undefined"){contextHandle=GL.createContext(canvas,contextAttributes);if(contextHandle){ctx=GL.getContext(contextHandle).GLctx}}}else{ctx=canvas.getContext("2d")}if(!ctx)return null;if(setInModule){if(!useWebGL)assert(typeof GLctx==="undefined","cannot set in module if GLctx is used, but we are a non-GL context that would replace it");Module.ctx=ctx;if(useWebGL)GL.makeContextCurrent(contextHandle);Module.useWebGL=useWebGL;Browser.moduleContextCreatedCallbacks.forEach(function(callback){callback()});Browser.init()}return ctx},destroyContext:function(canvas,useWebGL,setInModule){},fullscreenHandlersInstalled:false,lockPointer:undefined,resizeCanvas:undefined,requestFullscreen:function(lockPointer,resizeCanvas){Browser.lockPointer=lockPointer;Browser.resizeCanvas=resizeCanvas;if(typeof Browser.lockPointer==="undefined")Browser.lockPointer=true;if(typeof Browser.resizeCanvas==="undefined")Browser.resizeCanvas=false;var canvas=Module["canvas"];function fullscreenChange(){Browser.isFullscreen=false;var canvasContainer=canvas.parentNode;if((document["fullscreenElement"]||document["mozFullScreenElement"]||document["msFullscreenElement"]||document["webkitFullscreenElement"]||document["webkitCurrentFullScreenElement"])===canvasContainer){canvas.exitFullscreen=Browser.exitFullscreen;if(Browser.lockPointer)canvas.requestPointerLock();Browser.isFullscreen=true;if(Browser.resizeCanvas){Browser.setFullscreenCanvasSize()}else{Browser.updateCanvasDimensions(canvas)}}else{canvasContainer.parentNode.insertBefore(canvas,canvasContainer);canvasContainer.parentNode.removeChild(canvasContainer);if(Browser.resizeCanvas){Browser.setWindowedCanvasSize()}else{Browser.updateCanvasDimensions(canvas)}}if(Module["onFullScreen"])Module["onFullScreen"](Browser.isFullscreen);if(Module["onFullscreen"])Module["onFullscreen"](Browser.isFullscreen)}if(!Browser.fullscreenHandlersInstalled){Browser.fullscreenHandlersInstalled=true;document.addEventListener("fullscreenchange",fullscreenChange,false);document.addEventListener("mozfullscreenchange",fullscreenChange,false);document.addEventListener("webkitfullscreenchange",fullscreenChange,false);document.addEventListener("MSFullscreenChange",fullscreenChange,false)}var canvasContainer=document.createElement("div");canvas.parentNode.insertBefore(canvasContainer,canvas);canvasContainer.appendChild(canvas);canvasContainer.requestFullscreen=canvasContainer["requestFullscreen"]||canvasContainer["mozRequestFullScreen"]||canvasContainer["msRequestFullscreen"]||(canvasContainer["webkitRequestFullscreen"]?function(){canvasContainer["webkitRequestFullscreen"](Element["ALLOW_KEYBOARD_INPUT"])}:null)||(canvasContainer["webkitRequestFullScreen"]?function(){canvasContainer["webkitRequestFullScreen"](Element["ALLOW_KEYBOARD_INPUT"])}:null);canvasContainer.requestFullscreen()},exitFullscreen:function(){if(!Browser.isFullscreen){return false}var CFS=document["exitFullscreen"]||document["cancelFullScreen"]||document["mozCancelFullScreen"]||document["msExitFullscreen"]||document["webkitCancelFullScreen"]||function(){};CFS.apply(document,[]);return true},nextRAF:0,fakeRequestAnimationFrame:function(func){var now=Date.now();if(Browser.nextRAF===0){Browser.nextRAF=now+1e3/60}else{while(now+2>=Browser.nextRAF){Browser.nextRAF+=1e3/60}}var delay=Math.max(Browser.nextRAF-now,0);setTimeout(func,delay)},requestAnimationFrame:function(func){if(typeof requestAnimationFrame==="function"){requestAnimationFrame(func);return}var RAF=Browser.fakeRequestAnimationFrame;RAF(func)},safeRequestAnimationFrame:function(func){return Browser.requestAnimationFrame(function(){if(ABORT)return;func()})},safeSetTimeout:function(func,timeout){noExitRuntime=true;return setTimeout(function(){if(ABORT)return;func()},timeout)},getMimetype:function(name){return{"jpg":"image/jpeg","jpeg":"image/jpeg","png":"image/png","bmp":"image/bmp","ogg":"audio/ogg","wav":"audio/wav","mp3":"audio/mpeg"}[name.substr(name.lastIndexOf(".")+1)]},getUserMedia:function(func){if(!window.getUserMedia){window.getUserMedia=navigator["getUserMedia"]||navigator["mozGetUserMedia"]}window.getUserMedia(func)},getMovementX:function(event){return event["movementX"]||event["mozMovementX"]||event["webkitMovementX"]||0},getMovementY:function(event){return event["movementY"]||event["mozMovementY"]||event["webkitMovementY"]||0},getMouseWheelDelta:function(event){var delta=0;switch(event.type){case"DOMMouseScroll":delta=event.detail/3;break;case"mousewheel":delta=event.wheelDelta/120;break;case"wheel":delta=event.deltaY;switch(event.deltaMode){case 0:delta/=100;break;case 1:delta/=3;break;case 2:delta*=80;break;default:throw"unrecognized mouse wheel delta mode: "+event.deltaMode}break;default:throw"unrecognized mouse wheel event: "+event.type}return delta},mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,touches:{},lastTouches:{},calculateMouseEvent:function(event){if(Browser.pointerLock){if(event.type!="mousemove"&&"mozMovementX"in event){Browser.mouseMovementX=Browser.mouseMovementY=0}else{Browser.mouseMovementX=Browser.getMovementX(event);Browser.mouseMovementY=Browser.getMovementY(event)}if(typeof SDL!="undefined"){Browser.mouseX=SDL.mouseX+Browser.mouseMovementX;Browser.mouseY=SDL.mouseY+Browser.mouseMovementY}else{Browser.mouseX+=Browser.mouseMovementX;Browser.mouseY+=Browser.mouseMovementY}}else{var rect=Module["canvas"].getBoundingClientRect();var cw=Module["canvas"].width;var ch=Module["canvas"].height;var scrollX=typeof window.scrollX!=="undefined"?window.scrollX:window.pageXOffset;var scrollY=typeof window.scrollY!=="undefined"?window.scrollY:window.pageYOffset;if(event.type==="touchstart"||event.type==="touchend"||event.type==="touchmove"){var touch=event.touch;if(touch===undefined){return}var adjustedX=touch.pageX-(scrollX+rect.left);var adjustedY=touch.pageY-(scrollY+rect.top);adjustedX=adjustedX*(cw/rect.width);adjustedY=adjustedY*(ch/rect.height);var coords={x:adjustedX,y:adjustedY};if(event.type==="touchstart"){Browser.lastTouches[touch.identifier]=coords;Browser.touches[touch.identifier]=coords}else if(event.type==="touchend"||event.type==="touchmove"){var last=Browser.touches[touch.identifier];if(!last)last=coords;Browser.lastTouches[touch.identifier]=last;Browser.touches[touch.identifier]=coords}return}var x=event.pageX-(scrollX+rect.left);var y=event.pageY-(scrollY+rect.top);x=x*(cw/rect.width);y=y*(ch/rect.height);Browser.mouseMovementX=x-Browser.mouseX;Browser.mouseMovementY=y-Browser.mouseY;Browser.mouseX=x;Browser.mouseY=y}},asyncLoad:function(url,onload,onerror,noRunDep){var dep=!noRunDep?getUniqueRunDependency("al "+url):"";readAsync(url,function(arrayBuffer){assert(arrayBuffer,'Loading data file "'+url+'" failed (no arrayBuffer).');onload(new Uint8Array(arrayBuffer));if(dep)removeRunDependency(dep)},function(event){if(onerror){onerror()}else{throw'Loading data file "'+url+'" failed.'}});if(dep)addRunDependency(dep)},resizeListeners:[],updateResizeListeners:function(){var canvas=Module["canvas"];Browser.resizeListeners.forEach(function(listener){listener(canvas.width,canvas.height)})},setCanvasSize:function(width,height,noUpdates){var canvas=Module["canvas"];Browser.updateCanvasDimensions(canvas,width,height);if(!noUpdates)Browser.updateResizeListeners()},windowedWidth:0,windowedHeight:0,setFullscreenCanvasSize:function(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>2];flags=flags|8388608;HEAP32[SDL.screen>>2]=flags}Browser.updateCanvasDimensions(Module["canvas"]);Browser.updateResizeListeners()},setWindowedCanvasSize:function(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>2];flags=flags&~8388608;HEAP32[SDL.screen>>2]=flags}Browser.updateCanvasDimensions(Module["canvas"]);Browser.updateResizeListeners()},updateCanvasDimensions:function(canvas,wNative,hNative){if(wNative&&hNative){canvas.widthNative=wNative;canvas.heightNative=hNative}else{wNative=canvas.widthNative;hNative=canvas.heightNative}var w=wNative;var h=hNative;if(Module["forcedAspectRatio"]&&Module["forcedAspectRatio"]>0){if(w/h<Module["forcedAspectRatio"]){w=Math.round(h*Module["forcedAspectRatio"])}else{h=Math.round(w/Module["forcedAspectRatio"])}}if((document["fullscreenElement"]||document["mozFullScreenElement"]||document["msFullscreenElement"]||document["webkitFullscreenElement"]||document["webkitCurrentFullScreenElement"])===canvas.parentNode&&typeof screen!="undefined"){var factor=Math.min(screen.width/w,screen.height/h);w=Math.round(w*factor);h=Math.round(h*factor)}if(Browser.resizeCanvas){if(canvas.width!=w)canvas.width=w;if(canvas.height!=h)canvas.height=h;if(typeof canvas.style!="undefined"){canvas.style.removeProperty("width");canvas.style.removeProperty("height")}}else{if(canvas.width!=wNative)canvas.width=wNative;if(canvas.height!=hNative)canvas.height=hNative;if(typeof canvas.style!="undefined"){if(w!=wNative||h!=hNative){canvas.style.setProperty("width",w+"px","important");canvas.style.setProperty("height",h+"px","important")}else{canvas.style.removeProperty("width");canvas.style.removeProperty("height")}}}},wgetRequests:{},nextWgetRequestHandle:0,getNextWgetRequestHandle:function(){var handle=Browser.nextWgetRequestHandle;Browser.nextWgetRequestHandle++;return handle}};function _emscripten_set_main_loop_timing(mode,value){Browser.mainLoop.timingMode=mode;Browser.mainLoop.timingValue=value;if(!Browser.mainLoop.func){return 1}if(mode==0){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setTimeout(){var timeUntilNextTick=Math.max(0,Browser.mainLoop.tickStartTime+value-_emscripten_get_now())|0;setTimeout(Browser.mainLoop.runner,timeUntilNextTick)};Browser.mainLoop.method="timeout"}else if(mode==1){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_rAF(){Browser.requestAnimationFrame(Browser.mainLoop.runner)};Browser.mainLoop.method="rAF"}else if(mode==2){if(typeof setImmediate==="undefined"){var setImmediates=[];var emscriptenMainLoopMessageId="setimmediate";var Browser_setImmediate_messageHandler=function(event){if(event.data===emscriptenMainLoopMessageId||event.data.target===emscriptenMainLoopMessageId){event.stopPropagation();setImmediates.shift()()}};addEventListener("message",Browser_setImmediate_messageHandler,true);setImmediate=function Browser_emulated_setImmediate(func){setImmediates.push(func);if(ENVIRONMENT_IS_WORKER){if(Module["setImmediates"]===undefined)Module["setImmediates"]=[];Module["setImmediates"].push(func);postMessage({target:emscriptenMainLoopMessageId})}else postMessage(emscriptenMainLoopMessageId,"*")}}Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setImmediate(){setImmediate(Browser.mainLoop.runner)};Browser.mainLoop.method="immediate"}return 0}var _emscripten_get_now;if(ENVIRONMENT_IS_NODE){_emscripten_get_now=function(){var t=process["hrtime"]();return t[0]*1e3+t[1]/1e6}}else if(typeof dateNow!=="undefined"){_emscripten_get_now=dateNow}else _emscripten_get_now=function(){return performance.now()};function setMainLoop(browserIterationFunc,fps,simulateInfiniteLoop,arg,noSetTiming){noExitRuntime=true;assert(!Browser.mainLoop.func,"emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters.");Browser.mainLoop.func=browserIterationFunc;Browser.mainLoop.arg=arg;var thisMainLoopId=Browser.mainLoop.currentlyRunningMainloop;Browser.mainLoop.runner=function Browser_mainLoop_runner(){if(ABORT)return;if(Browser.mainLoop.queue.length>0){var start=Date.now();var blocker=Browser.mainLoop.queue.shift();blocker.func(blocker.arg);if(Browser.mainLoop.remainingBlockers){var remaining=Browser.mainLoop.remainingBlockers;var next=remaining%1==0?remaining-1:Math.floor(remaining);if(blocker.counted){Browser.mainLoop.remainingBlockers=next}else{next=next+.5;Browser.mainLoop.remainingBlockers=(8*remaining+next)/9}}console.log('main loop blocker "'+blocker.name+'" took '+(Date.now()-start)+" ms");Browser.mainLoop.updateStatus();if(thisMainLoopId<Browser.mainLoop.currentlyRunningMainloop)return;setTimeout(Browser.mainLoop.runner,0);return}if(thisMainLoopId<Browser.mainLoop.currentlyRunningMainloop)return;Browser.mainLoop.currentFrameNumber=Browser.mainLoop.currentFrameNumber+1|0;if(Browser.mainLoop.timingMode==1&&Browser.mainLoop.timingValue>1&&Browser.mainLoop.currentFrameNumber%Browser.mainLoop.timingValue!=0){Browser.mainLoop.scheduler();return}else if(Browser.mainLoop.timingMode==0){Browser.mainLoop.tickStartTime=_emscripten_get_now()}Browser.mainLoop.runIter(browserIterationFunc);if(thisMainLoopId<Browser.mainLoop.currentlyRunningMainloop)return;if(typeof SDL==="object"&&SDL.audio&&SDL.audio.queueNewAudioData)SDL.audio.queueNewAudioData();Browser.mainLoop.scheduler()};if(!noSetTiming){if(fps&&fps>0)_emscripten_set_main_loop_timing(0,1e3/fps);else _emscripten_set_main_loop_timing(1,1);Browser.mainLoop.scheduler()}if(simulateInfiniteLoop){throw"unwind"}}function _emscripten_set_main_loop(func,fps,simulateInfiniteLoop){var browserIterationFunc=wasmTable.get(func);setMainLoop(browserIterationFunc,fps,simulateInfiniteLoop)}function registerTouchEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.touchEvent)JSEvents.touchEvent=_malloc(1684);target=findEventTarget(target);var touchEventHandlerFunc=function(e){var touches={};var et=e.touches;for(var i=0;i<et.length;++i){var touch=et[i];touches[touch.identifier]=touch}et=e.changedTouches;for(var i=0;i<et.length;++i){var touch=et[i];touch.isChanged=1;touches[touch.identifier]=touch}et=e.targetTouches;for(var i=0;i<et.length;++i){touches[et[i].identifier].onTarget=1}var touchEvent=JSEvents.touchEvent;var idx=touchEvent>>2;HEAP32[idx+1]=e.ctrlKey;HEAP32[idx+2]=e.shiftKey;HEAP32[idx+3]=e.altKey;HEAP32[idx+4]=e.metaKey;idx+=5;var targetRect=getBoundingClientRect(target);var numTouches=0;for(var i in touches){var t=touches[i];HEAP32[idx+0]=t.identifier;HEAP32[idx+1]=t.screenX;HEAP32[idx+2]=t.screenY;HEAP32[idx+3]=t.clientX;HEAP32[idx+4]=t.clientY;HEAP32[idx+5]=t.pageX;HEAP32[idx+6]=t.pageY;HEAP32[idx+7]=t.isChanged;HEAP32[idx+8]=t.onTarget;HEAP32[idx+9]=t.clientX-targetRect.left;HEAP32[idx+10]=t.clientY-targetRect.top;idx+=13;if(++numTouches>31){break}}HEAP32[touchEvent>>2]=numTouches;if(wasmTable.get(callbackfunc)(eventTypeId,touchEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:eventTypeString=="touchstart"||eventTypeString=="touchend",eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:touchEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_touchcancel_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerTouchEventCallback(target,userData,useCapture,callbackfunc,25,"touchcancel",targetThread);return 0}function _emscripten_set_touchend_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerTouchEventCallback(target,userData,useCapture,callbackfunc,23,"touchend",targetThread);return 0}function _emscripten_set_touchmove_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerTouchEventCallback(target,userData,useCapture,callbackfunc,24,"touchmove",targetThread);return 0}function _emscripten_set_touchstart_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerTouchEventCallback(target,userData,useCapture,callbackfunc,22,"touchstart",targetThread);return 0}function _emscripten_thread_sleep(msecs){var start=_emscripten_get_now();while(_emscripten_get_now()-start<msecs){}}function _exit(status){exit(status)}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_read(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doReadv(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var stream=SYSCALLS.getStreamFromFD(fd);var HIGH_OFFSET=4294967296;var offset=offset_high*HIGH_OFFSET+(offset_low>>>0);var DOUBLE_LIMIT=9007199254740992;if(offset<=-DOUBLE_LIMIT||offset>=DOUBLE_LIMIT){return-61}FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doWritev(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _glActiveTexture(x0){GLctx["activeTexture"](x0)}function _glAttachShader(program,shader){GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _glBindAttribLocation(program,index,name){GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))}function _glBindBuffer(target,buffer){GLctx.bindBuffer(target,GL.buffers[buffer])}function _glBindTexture(target,texture){GLctx.bindTexture(target,GL.textures[texture])}function _glBlendFunc(x0,x1){GLctx["blendFunc"](x0,x1)}function _glBufferData(target,size,data,usage){GLctx.bufferData(target,data?HEAPU8.subarray(data,data+size):size,usage)}function _glBufferSubData(target,offset,size,data){GLctx.bufferSubData(target,offset,HEAPU8.subarray(data,data+size))}function _glClear(x0){GLctx["clear"](x0)}function _glClearColor(x0,x1,x2,x3){GLctx["clearColor"](x0,x1,x2,x3)}function _glClearDepthf(x0){GLctx["clearDepth"](x0)}function _glCompileShader(shader){GLctx.compileShader(GL.shaders[shader])}function _glCompressedTexImage2D(target,level,internalFormat,width,height,border,imageSize,data){GLctx["compressedTexImage2D"](target,level,internalFormat,width,height,border,data?HEAPU8.subarray(data,data+imageSize):null)}function _glCreateProgram(){var id=GL.getNewId(GL.programs);var program=GLctx.createProgram();program.name=id;GL.programs[id]=program;return id}function _glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}function _glCullFace(x0){GLctx["cullFace"](x0)}function _glDeleteBuffers(n,buffers){for(var i=0;i<n;i++){var id=HEAP32[buffers+i*4>>2];var buffer=GL.buffers[id];if(!buffer)continue;GLctx.deleteBuffer(buffer);buffer.name=0;GL.buffers[id]=null}}function _glDeleteProgram(id){if(!id)return;var program=GL.programs[id];if(!program){GL.recordError(1281);return}GLctx.deleteProgram(program);program.name=0;GL.programs[id]=null;GL.programInfos[id]=null}function _glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}function _glDeleteTextures(n,textures){for(var i=0;i<n;i++){var id=HEAP32[textures+i*4>>2];var texture=GL.textures[id];if(!texture)continue;GLctx.deleteTexture(texture);texture.name=0;GL.textures[id]=null}}function _glDepthFunc(x0){GLctx["depthFunc"](x0)}function _glDetachShader(program,shader){GLctx.detachShader(GL.programs[program],GL.shaders[shader])}function _glDisable(x0){GLctx["disable"](x0)}function _glDisableVertexAttribArray(index){GLctx.disableVertexAttribArray(index)}function _glDrawArrays(mode,first,count){GLctx.drawArrays(mode,first,count)}function _glDrawElements(mode,count,type,indices){GLctx.drawElements(mode,count,type,indices)}function _glEnable(x0){GLctx["enable"](x0)}function _glEnableVertexAttribArray(index){GLctx.enableVertexAttribArray(index)}function _glFrontFace(x0){GLctx["frontFace"](x0)}function _glGenBuffers(n,buffers){__glGenObject(n,buffers,"createBuffer",GL.buffers)}function _glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures)}function _glGetAttribLocation(program,name){return GLctx.getAttribLocation(GL.programs[program],UTF8ToString(name))}function _glGetFloatv(name_,p){emscriptenWebGLGet(name_,p,2)}function _glGetProgramInfoLog(program,maxLength,length,infoLog){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _glGetProgramiv(program,pname,p){if(!p){GL.recordError(1281);return}if(program>=GL.counter){GL.recordError(1281);return}var ptable=GL.programInfos[program];if(!ptable){GL.recordError(1282);return}if(pname==35716){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";HEAP32[p>>2]=log.length+1}else if(pname==35719){HEAP32[p>>2]=ptable.maxUniformLength}else if(pname==35722){if(ptable.maxAttributeLength==-1){program=GL.programs[program];var numAttribs=GLctx.getProgramParameter(program,35721);ptable.maxAttributeLength=0;for(var i=0;i<numAttribs;++i){var activeAttrib=GLctx.getActiveAttrib(program,i);ptable.maxAttributeLength=Math.max(ptable.maxAttributeLength,activeAttrib.name.length+1)}}HEAP32[p>>2]=ptable.maxAttributeLength}else if(pname==35381){if(ptable.maxUniformBlockNameLength==-1){program=GL.programs[program];var numBlocks=GLctx.getProgramParameter(program,35382);ptable.maxUniformBlockNameLength=0;for(var i=0;i<numBlocks;++i){var activeBlockName=GLctx.getActiveUniformBlockName(program,i);ptable.maxUniformBlockNameLength=Math.max(ptable.maxUniformBlockNameLength,activeBlockName.length+1)}}HEAP32[p>>2]=ptable.maxUniformBlockNameLength}else{HEAP32[p>>2]=GLctx.getProgramParameter(GL.programs[program],pname)}}function _glGetShaderInfoLog(shader,maxLength,length,infoLog){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _glGetShaderiv(shader,pname,p){if(!p){GL.recordError(1281);return}if(pname==35716){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var logLength=log?log.length+1:0;HEAP32[p>>2]=logLength}else if(pname==35720){var source=GLctx.getShaderSource(GL.shaders[shader]);var sourceLength=source?source.length+1:0;HEAP32[p>>2]=sourceLength}else{HEAP32[p>>2]=GLctx.getShaderParameter(GL.shaders[shader],pname)}}function _glGetString(name_){if(GL.stringCache[name_])return GL.stringCache[name_];var ret;switch(name_){case 7939:var exts=GLctx.getSupportedExtensions()||[];exts=exts.concat(exts.map(function(e){return"GL_"+e}));ret=stringToNewUTF8(exts.join(" "));break;case 7936:case 7937:case 37445:case 37446:var s=GLctx.getParameter(name_);if(!s){GL.recordError(1280)}ret=stringToNewUTF8(s);break;case 7938:var glVersion=GLctx.getParameter(7938);{glVersion="OpenGL ES 2.0 ("+glVersion+")"}ret=stringToNewUTF8(glVersion);break;case 35724:var glslVersion=GLctx.getParameter(35724);var ver_re=/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/;var ver_num=glslVersion.match(ver_re);if(ver_num!==null){if(ver_num[1].length==3)ver_num[1]=ver_num[1]+"0";glslVersion="OpenGL ES GLSL ES "+ver_num[1]+" ("+glslVersion+")"}ret=stringToNewUTF8(glslVersion);break;default:GL.recordError(1280);return 0}GL.stringCache[name_]=ret;return ret}function _glGetUniformLocation(program,name){name=UTF8ToString(name);var arrayIndex=0;if(name[name.length-1]=="]"){var leftBrace=name.lastIndexOf("[");arrayIndex=name[leftBrace+1]!="]"?jstoi_q(name.slice(leftBrace+1)):0;name=name.slice(0,leftBrace)}var uniformInfo=GL.programInfos[program]&&GL.programInfos[program].uniforms[name];if(uniformInfo&&arrayIndex>=0&&arrayIndex<uniformInfo[0]){return uniformInfo[1]+arrayIndex}else{return-1}}function _glLinkProgram(program){GLctx.linkProgram(GL.programs[program]);GL.populateUniformTable(program)}function _glPixelStorei(pname,param){if(pname==3317){GL.unpackAlignment=param}GLctx.pixelStorei(pname,param)}function _glReadPixels(x,y,width,height,format,type,pixels){var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);return}GLctx.readPixels(x,y,width,height,format,type,pixelData)}function _glShaderSource(shader,count,string,length){var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}function _glTexImage2D(target,level,internalFormat,width,height,border,format,type,pixels){GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels?emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat):null)}function _glTexParameteri(x0,x1,x2){GLctx["texParameteri"](x0,x1,x2)}function _glUniform1i(location,v0){GLctx.uniform1i(GL.uniforms[location],v0)}function _glUniform4f(location,v0,v1,v2,v3){GLctx.uniform4f(GL.uniforms[location],v0,v1,v2,v3)}function _glUniformMatrix4fv(location,count,transpose,value){if(count<=18){var view=miniTempWebGLFloatBuffers[16*count-1];var heap=HEAPF32;value>>=2;for(var i=0;i<16*count;i+=16){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3];view[i+4]=heap[dst+4];view[i+5]=heap[dst+5];view[i+6]=heap[dst+6];view[i+7]=heap[dst+7];view[i+8]=heap[dst+8];view[i+9]=heap[dst+9];view[i+10]=heap[dst+10];view[i+11]=heap[dst+11];view[i+12]=heap[dst+12];view[i+13]=heap[dst+13];view[i+14]=heap[dst+14];view[i+15]=heap[dst+15]}}else{var view=HEAPF32.subarray(value>>2,value+count*64>>2)}GLctx.uniformMatrix4fv(GL.uniforms[location],!!transpose,view)}function _glUseProgram(program){GLctx.useProgram(GL.programs[program])}function _glVertexAttrib2f(x0,x1,x2){GLctx["vertexAttrib2f"](x0,x1,x2)}function _glVertexAttrib3f(x0,x1,x2,x3){GLctx["vertexAttrib3f"](x0,x1,x2,x3)}function _glVertexAttrib4f(x0,x1,x2,x3,x4){GLctx["vertexAttrib4f"](x0,x1,x2,x3,x4)}function _glVertexAttribPointer(index,size,type,normalized,stride,ptr){GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}function _glViewport(x0,x1,x2,x3){GLctx["viewport"](x0,x1,x2,x3)}function GLFW_Window(id,width,height,title,monitor,share){this.id=id;this.x=0;this.y=0;this.fullscreen=false;this.storedX=0;this.storedY=0;this.width=width;this.height=height;this.storedWidth=width;this.storedHeight=height;this.title=title;this.monitor=monitor;this.share=share;this.attributes=GLFW.hints;this.inputModes={208897:212993,208898:0,208899:0};this.buttons=0;this.keys=new Array;this.domKeys=new Array;this.shouldClose=0;this.title=null;this.windowPosFunc=null;this.windowSizeFunc=null;this.windowCloseFunc=null;this.windowRefreshFunc=null;this.windowFocusFunc=null;this.windowIconifyFunc=null;this.framebufferSizeFunc=null;this.mouseButtonFunc=null;this.cursorPosFunc=null;this.cursorEnterFunc=null;this.scrollFunc=null;this.dropFunc=null;this.keyFunc=null;this.charFunc=null;this.userptr=null}var GLFW={WindowFromId:function(id){if(id<=0||!GLFW.windows)return null;return GLFW.windows[id-1]},joystickFunc:null,errorFunc:null,monitorFunc:null,active:null,windows:null,monitors:null,monitorString:null,versionString:null,initialTime:null,extensions:null,hints:null,defaultHints:{131073:0,131074:0,131075:1,131076:1,131077:1,135169:8,135170:8,135171:8,135172:8,135173:24,135174:8,135175:0,135176:0,135177:0,135178:0,135179:0,135180:0,135181:0,135182:0,135183:0,139265:196609,139266:1,139267:0,139268:0,139269:0,139270:0,139271:0,139272:0},DOMToGLFWKeyCode:function(keycode){switch(keycode){case 32:return 32;case 222:return 39;case 188:return 44;case 173:return 45;case 189:return 45;case 190:return 46;case 191:return 47;case 48:return 48;case 49:return 49;case 50:return 50;case 51:return 51;case 52:return 52;case 53:return 53;case 54:return 54;case 55:return 55;case 56:return 56;case 57:return 57;case 59:return 59;case 61:return 61;case 187:return 61;case 65:return 65;case 66:return 66;case 67:return 67;case 68:return 68;case 69:return 69;case 70:return 70;case 71:return 71;case 72:return 72;case 73:return 73;case 74:return 74;case 75:return 75;case 76:return 76;case 77:return 77;case 78:return 78;case 79:return 79;case 80:return 80;case 81:return 81;case 82:return 82;case 83:return 83;case 84:return 84;case 85:return 85;case 86:return 86;case 87:return 87;case 88:return 88;case 89:return 89;case 90:return 90;case 219:return 91;case 220:return 92;case 221:return 93;case 192:return 94;case 27:return 256;case 13:return 257;case 9:return 258;case 8:return 259;case 45:return 260;case 46:return 261;case 39:return 262;case 37:return 263;case 40:return 264;case 38:return 265;case 33:return 266;case 34:return 267;case 36:return 268;case 35:return 269;case 20:return 280;case 145:return 281;case 144:return 282;case 44:return 283;case 19:return 284;case 112:return 290;case 113:return 291;case 114:return 292;case 115:return 293;case 116:return 294;case 117:return 295;case 118:return 296;case 119:return 297;case 120:return 298;case 121:return 299;case 122:return 300;case 123:return 301;case 124:return 302;case 125:return 303;case 126:return 304;case 127:return 305;case 128:return 306;case 129:return 307;case 130:return 308;case 131:return 309;case 132:return 310;case 133:return 311;case 134:return 312;case 135:return 313;case 136:return 314;case 96:return 320;case 97:return 321;case 98:return 322;case 99:return 323;case 100:return 324;case 101:return 325;case 102:return 326;case 103:return 327;case 104:return 328;case 105:return 329;case 110:return 330;case 111:return 331;case 106:return 332;case 109:return 333;case 107:return 334;case 16:return 340;case 17:return 341;case 18:return 342;case 91:return 343;case 93:return 348;default:return-1}},getModBits:function(win){var mod=0;if(win.keys[340])mod|=1;if(win.keys[341])mod|=2;if(win.keys[342])mod|=4;if(win.keys[343])mod|=8;return mod},onKeyPress:function(event){if(!GLFW.active||!GLFW.active.charFunc)return;if(event.ctrlKey||event.metaKey)return;var charCode=event.charCode;if(charCode==0||charCode>=0&&charCode<=31)return;wasmTable.get(GLFW.active.charFunc)(GLFW.active.id,charCode)},onKeyChanged:function(keyCode,status){if(!GLFW.active)return;var key=GLFW.DOMToGLFWKeyCode(keyCode);if(key==-1)return;var repeat=status&&GLFW.active.keys[key];GLFW.active.keys[key]=status;GLFW.active.domKeys[keyCode]=status;if(!GLFW.active.keyFunc)return;if(repeat)status=2;wasmTable.get(GLFW.active.keyFunc)(GLFW.active.id,key,keyCode,status,GLFW.getModBits(GLFW.active))},onGamepadConnected:function(event){GLFW.refreshJoysticks()},onGamepadDisconnected:function(event){GLFW.refreshJoysticks()},onKeydown:function(event){GLFW.onKeyChanged(event.keyCode,1);if(event.keyCode===8||event.keyCode===9){event.preventDefault()}},onKeyup:function(event){GLFW.onKeyChanged(event.keyCode,0)},onBlur:function(event){if(!GLFW.active)return;for(var i=0;i<GLFW.active.domKeys.length;++i){if(GLFW.active.domKeys[i]){GLFW.onKeyChanged(i,0)}}},onMousemove:function(event){if(!GLFW.active)return;Browser.calculateMouseEvent(event);if(event.target!=Module["canvas"]||!GLFW.active.cursorPosFunc)return;wasmTable.get(GLFW.active.cursorPosFunc)(GLFW.active.id,Browser.mouseX,Browser.mouseY)},DOMToGLFWMouseButton:function(event){var eventButton=event["button"];if(eventButton>0){if(eventButton==1){eventButton=2}else{eventButton=1}}return eventButton},onMouseenter:function(event){if(!GLFW.active)return;if(event.target!=Module["canvas"]||!GLFW.active.cursorEnterFunc)return;wasmTable.get(GLFW.active.cursorEnterFunc)(GLFW.active.id,1)},onMouseleave:function(event){if(!GLFW.active)return;if(event.target!=Module["canvas"]||!GLFW.active.cursorEnterFunc)return;wasmTable.get(GLFW.active.cursorEnterFunc)(GLFW.active.id,0)},onMouseButtonChanged:function(event,status){if(!GLFW.active)return;Browser.calculateMouseEvent(event);if(event.target!=Module["canvas"])return;var eventButton=GLFW.DOMToGLFWMouseButton(event);if(status==1){GLFW.active.buttons|=1<<eventButton;try{event.target.setCapture()}catch(e){}}else{GLFW.active.buttons&=~(1<<eventButton)}if(!GLFW.active.mouseButtonFunc)return;wasmTable.get(GLFW.active.mouseButtonFunc)(GLFW.active.id,eventButton,status,GLFW.getModBits(GLFW.active))},onMouseButtonDown:function(event){if(!GLFW.active)return;GLFW.onMouseButtonChanged(event,1)},onMouseButtonUp:function(event){if(!GLFW.active)return;GLFW.onMouseButtonChanged(event,0)},onMouseWheel:function(event){var delta=-Browser.getMouseWheelDelta(event);delta=delta==0?0:delta>0?Math.max(delta,1):Math.min(delta,-1);GLFW.wheelPos+=delta;if(!GLFW.active||!GLFW.active.scrollFunc||event.target!=Module["canvas"])return;var sx=0;var sy=0;if(event.type=="mousewheel"){sx=event.wheelDeltaX;sy=event.wheelDeltaY}else{sx=event.deltaX;sy=event.deltaY}wasmTable.get(GLFW.active.scrollFunc)(GLFW.active.id,sx,sy);event.preventDefault()},onCanvasResize:function(width,height){if(!GLFW.active)return;var resizeNeeded=true;if(document["fullscreen"]||document["fullScreen"]||document["mozFullScreen"]||document["webkitIsFullScreen"]){GLFW.active.storedX=GLFW.active.x;GLFW.active.storedY=GLFW.active.y;GLFW.active.storedWidth=GLFW.active.width;GLFW.active.storedHeight=GLFW.active.height;GLFW.active.x=GLFW.active.y=0;GLFW.active.width=screen.width;GLFW.active.height=screen.height;GLFW.active.fullscreen=true}else if(GLFW.active.fullscreen==true){GLFW.active.x=GLFW.active.storedX;GLFW.active.y=GLFW.active.storedY;GLFW.active.width=GLFW.active.storedWidth;GLFW.active.height=GLFW.active.storedHeight;GLFW.active.fullscreen=false}else if(GLFW.active.width!=width||GLFW.active.height!=height){GLFW.active.width=width;GLFW.active.height=height}else{resizeNeeded=false}if(resizeNeeded){Browser.setCanvasSize(GLFW.active.width,GLFW.active.height,true);GLFW.onWindowSizeChanged();GLFW.onFramebufferSizeChanged()}},onWindowSizeChanged:function(){if(!GLFW.active)return;if(!GLFW.active.windowSizeFunc)return;wasmTable.get(GLFW.active.windowSizeFunc)(GLFW.active.id,GLFW.active.width,GLFW.active.height)},onFramebufferSizeChanged:function(){if(!GLFW.active)return;if(!GLFW.active.framebufferSizeFunc)return;wasmTable.get(GLFW.active.framebufferSizeFunc)(GLFW.active.id,GLFW.active.width,GLFW.active.height)},getTime:function(){return _emscripten_get_now()/1e3},setWindowTitle:function(winid,title){var win=GLFW.WindowFromId(winid);if(!win)return;win.title=UTF8ToString(title);if(GLFW.active.id==win.id){document.title=win.title}},setJoystickCallback:function(cbfun){GLFW.joystickFunc=cbfun;GLFW.refreshJoysticks()},joys:{},lastGamepadState:null,lastGamepadStateFrame:null,refreshJoysticks:function(){if(Browser.mainLoop.currentFrameNumber!==GLFW.lastGamepadStateFrame||!Browser.mainLoop.currentFrameNumber){GLFW.lastGamepadState=navigator.getGamepads?navigator.getGamepads():navigator.webkitGetGamepads?navigator.webkitGetGamepads:null;GLFW.lastGamepadStateFrame=Browser.mainLoop.currentFrameNumber;for(var joy=0;joy<GLFW.lastGamepadState.length;++joy){var gamepad=GLFW.lastGamepadState[joy];if(gamepad){if(!GLFW.joys[joy]){console.log("glfw joystick connected:",joy);GLFW.joys[joy]={id:allocate(intArrayFromString(gamepad.id),ALLOC_NORMAL),buttonsCount:gamepad.buttons.length,axesCount:gamepad.axes.length,buttons:allocate(new Array(gamepad.buttons.length),ALLOC_NORMAL),axes:allocate(new Array(gamepad.axes.length*4),ALLOC_NORMAL)};if(GLFW.joystickFunc){wasmTable.get(GLFW.joystickFunc)(joy,262145)}}var data=GLFW.joys[joy];for(var i=0;i<gamepad.buttons.length;++i){setValue(data.buttons+i,gamepad.buttons[i].pressed,"i8")}for(var i=0;i<gamepad.axes.length;++i){setValue(data.axes+i*4,gamepad.axes[i],"float")}}else{if(GLFW.joys[joy]){console.log("glfw joystick disconnected",joy);if(GLFW.joystickFunc){wasmTable.get(GLFW.joystickFunc)(joy,262146)}_free(GLFW.joys[joy].id);_free(GLFW.joys[joy].buttons);_free(GLFW.joys[joy].axes);delete GLFW.joys[joy]}}}}},setKeyCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.keyFunc;win.keyFunc=cbfun;return prevcbfun},setCharCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.charFunc;win.charFunc=cbfun;return prevcbfun},setMouseButtonCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.mouseButtonFunc;win.mouseButtonFunc=cbfun;return prevcbfun},setCursorPosCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.cursorPosFunc;win.cursorPosFunc=cbfun;return prevcbfun},setScrollCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.scrollFunc;win.scrollFunc=cbfun;return prevcbfun},setDropCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.dropFunc;win.dropFunc=cbfun;return prevcbfun},onDrop:function(event){if(!GLFW.active||!GLFW.active.dropFunc)return;if(!event.dataTransfer||!event.dataTransfer.files||event.dataTransfer.files.length==0)return;event.preventDefault();var filenames=allocate(new Array(event.dataTransfer.files.length*4),ALLOC_NORMAL);var filenamesArray=[];var count=event.dataTransfer.files.length;var written=0;var drop_dir=".glfw_dropped_files";FS.createPath("/",drop_dir);function save(file){var path="/"+drop_dir+"/"+file.name.replace(/\//g,"_");var reader=new FileReader;reader.onloadend=function(e){if(reader.readyState!=2){++written;console.log("failed to read dropped file: "+file.name+": "+reader.error);return}var data=e.target.result;FS.writeFile(path,new Uint8Array(data));if(++written===count){wasmTable.get(GLFW.active.dropFunc)(GLFW.active.id,count,filenames);for(var i=0;i<filenamesArray.length;++i){_free(filenamesArray[i])}_free(filenames)}};reader.readAsArrayBuffer(file);var filename=allocate(intArrayFromString(path),ALLOC_NORMAL);filenamesArray.push(filename);setValue(filenames+i*4,filename,"i8*")}for(var i=0;i<count;++i){save(event.dataTransfer.files[i])}return false},onDragover:function(event){if(!GLFW.active||!GLFW.active.dropFunc)return;event.preventDefault();return false},setWindowSizeCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowSizeFunc;win.windowSizeFunc=cbfun;return prevcbfun},setWindowCloseCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowCloseFunc;win.windowCloseFunc=cbfun;return prevcbfun},setWindowRefreshCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowRefreshFunc;win.windowRefreshFunc=cbfun;return prevcbfun},onClickRequestPointerLock:function(e){if(!Browser.pointerLock&&Module["canvas"].requestPointerLock){Module["canvas"].requestPointerLock();e.preventDefault()}},setInputMode:function(winid,mode,value){var win=GLFW.WindowFromId(winid);if(!win)return;switch(mode){case 208897:{switch(value){case 212993:{win.inputModes[mode]=value;Module["canvas"].removeEventListener("click",GLFW.onClickRequestPointerLock,true);Module["canvas"].exitPointerLock();break}case 212994:{console.log("glfwSetInputMode called with GLFW_CURSOR_HIDDEN value not implemented.");break}case 212995:{win.inputModes[mode]=value;Module["canvas"].addEventListener("click",GLFW.onClickRequestPointerLock,true);Module["canvas"].requestPointerLock();break}default:{console.log("glfwSetInputMode called with unknown value parameter value: "+value+".");break}}break}case 208898:{console.log("glfwSetInputMode called with GLFW_STICKY_KEYS mode not implemented.");break}case 208899:{console.log("glfwSetInputMode called with GLFW_STICKY_MOUSE_BUTTONS mode not implemented.");break}default:{console.log("glfwSetInputMode called with unknown mode parameter value: "+mode+".");break}}},getKey:function(winid,key){var win=GLFW.WindowFromId(winid);if(!win)return 0;return win.keys[key]},getMouseButton:function(winid,button){var win=GLFW.WindowFromId(winid);if(!win)return 0;return(win.buttons&1<<button)>0},getCursorPos:function(winid,x,y){setValue(x,Browser.mouseX,"double");setValue(y,Browser.mouseY,"double")},getMousePos:function(winid,x,y){setValue(x,Browser.mouseX,"i32");setValue(y,Browser.mouseY,"i32")},setCursorPos:function(winid,x,y){},getWindowPos:function(winid,x,y){var wx=0;var wy=0;var win=GLFW.WindowFromId(winid);if(win){wx=win.x;wy=win.y}if(x){setValue(x,wx,"i32")}if(y){setValue(y,wy,"i32")}},setWindowPos:function(winid,x,y){var win=GLFW.WindowFromId(winid);if(!win)return;win.x=x;win.y=y},getWindowSize:function(winid,width,height){var ww=0;var wh=0;var win=GLFW.WindowFromId(winid);if(win){ww=win.width;wh=win.height}if(width){setValue(width,ww,"i32")}if(height){setValue(height,wh,"i32")}},setWindowSize:function(winid,width,height){var win=GLFW.WindowFromId(winid);if(!win)return;if(GLFW.active.id==win.id){if(width==screen.width&&height==screen.height){Browser.requestFullscreen()}else{Browser.exitFullscreen();Browser.setCanvasSize(width,height);win.width=width;win.height=height}}if(!win.windowSizeFunc)return;wasmTable.get(win.windowSizeFunc)(win.id,width,height)},createWindow:function(width,height,title,monitor,share){var i,id;for(i=0;i<GLFW.windows.length&&GLFW.windows[i]!==null;i++){}if(i>0)throw"glfwCreateWindow only supports one window at time currently";id=i+1;if(width<=0||height<=0)return 0;if(monitor){Browser.requestFullscreen()}else{Browser.setCanvasSize(width,height)}for(i=0;i<GLFW.windows.length&&GLFW.windows[i]==null;i++){}var useWebGL=GLFW.hints[139265]>0;if(i==GLFW.windows.length){if(useWebGL){var contextAttributes={antialias:GLFW.hints[135181]>1,depth:GLFW.hints[135173]>0,stencil:GLFW.hints[135174]>0,alpha:GLFW.hints[135172]>0};Module.ctx=Browser.createContext(Module["canvas"],true,true,contextAttributes)}else{Browser.init()}}if(!Module.ctx&&useWebGL)return 0;var win=new GLFW_Window(id,width,height,title,monitor,share);if(id-1==GLFW.windows.length){GLFW.windows.push(win)}else{GLFW.windows[id-1]=win}GLFW.active=win;return win.id},destroyWindow:function(winid){var win=GLFW.WindowFromId(winid);if(!win)return;if(win.windowCloseFunc)wasmTable.get(win.windowCloseFunc)(win.id);GLFW.windows[win.id-1]=null;if(GLFW.active.id==win.id)GLFW.active=null;for(var i=0;i<GLFW.windows.length;i++)if(GLFW.windows[i]!==null)return;Module.ctx=Browser.destroyContext(Module["canvas"],true,true)},swapBuffers:function(winid){},GLFW2ParamToGLFW3Param:function(param){var table={196609:0,196610:0,196611:0,196612:0,196613:0,196614:0,131073:0,131074:0,131075:0,131076:0,131077:135169,131078:135170,131079:135171,131080:135172,131081:135173,131082:135174,131083:135183,131084:135175,131085:135176,131086:135177,131087:135178,131088:135179,131089:135180,131090:0,131091:135181,131092:139266,131093:139267,131094:139270,131095:139271,131096:139272};return table[param]}};function _glfwCreateWindow(width,height,title,monitor,share){return GLFW.createWindow(width,height,title,monitor,share)}function _glfwDefaultWindowHints(){GLFW.hints=GLFW.defaultHints}function _glfwDestroyWindow(winid){return GLFW.destroyWindow(winid)}function _glfwGetPrimaryMonitor(){return 1}function _glfwGetTime(){return GLFW.getTime()-GLFW.initialTime}function _glfwGetVideoModes(monitor,count){setValue(count,0,"i32");return 0}function _glfwInit(){if(GLFW.windows)return 1;GLFW.initialTime=GLFW.getTime();GLFW.hints=GLFW.defaultHints;GLFW.windows=new Array;GLFW.active=null;window.addEventListener("gamepadconnected",GLFW.onGamepadConnected,true);window.addEventListener("gamepaddisconnected",GLFW.onGamepadDisconnected,true);window.addEventListener("keydown",GLFW.onKeydown,true);window.addEventListener("keypress",GLFW.onKeyPress,true);window.addEventListener("keyup",GLFW.onKeyup,true);window.addEventListener("blur",GLFW.onBlur,true);Module["canvas"].addEventListener("touchmove",GLFW.onMousemove,true);Module["canvas"].addEventListener("touchstart",GLFW.onMouseButtonDown,true);Module["canvas"].addEventListener("touchcancel",GLFW.onMouseButtonUp,true);Module["canvas"].addEventListener("touchend",GLFW.onMouseButtonUp,true);Module["canvas"].addEventListener("mousemove",GLFW.onMousemove,true);Module["canvas"].addEventListener("mousedown",GLFW.onMouseButtonDown,true);Module["canvas"].addEventListener("mouseup",GLFW.onMouseButtonUp,true);Module["canvas"].addEventListener("wheel",GLFW.onMouseWheel,true);Module["canvas"].addEventListener("mousewheel",GLFW.onMouseWheel,true);Module["canvas"].addEventListener("mouseenter",GLFW.onMouseenter,true);Module["canvas"].addEventListener("mouseleave",GLFW.onMouseleave,true);Module["canvas"].addEventListener("drop",GLFW.onDrop,true);Module["canvas"].addEventListener("dragover",GLFW.onDragover,true);Browser.resizeListeners.push(function(width,height){GLFW.onCanvasResize(width,height)});return 1}function _glfwMakeContextCurrent(winid){}function _glfwSetCharCallback(winid,cbfun){return GLFW.setCharCallback(winid,cbfun)}function _glfwSetCursorEnterCallback(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.cursorEnterFunc;win.cursorEnterFunc=cbfun;return prevcbfun}function _glfwSetCursorPosCallback(winid,cbfun){return GLFW.setCursorPosCallback(winid,cbfun)}function _glfwSetDropCallback(winid,cbfun){return GLFW.setDropCallback(winid,cbfun)}function _glfwSetErrorCallback(cbfun){var prevcbfun=GLFW.errorFunc;GLFW.errorFunc=cbfun;return prevcbfun}function _glfwSetKeyCallback(winid,cbfun){return GLFW.setKeyCallback(winid,cbfun)}function _glfwSetMouseButtonCallback(winid,cbfun){return GLFW.setMouseButtonCallback(winid,cbfun)}function _glfwSetScrollCallback(winid,cbfun){return GLFW.setScrollCallback(winid,cbfun)}function _glfwSetWindowFocusCallback(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowFocusFunc;win.windowFocusFunc=cbfun;return prevcbfun}function _glfwSetWindowIconifyCallback(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowIconifyFunc;win.windowIconifyFunc=cbfun;return prevcbfun}function _glfwSetWindowShouldClose(winid,value){var win=GLFW.WindowFromId(winid);if(!win)return;win.shouldClose=value}function _glfwSetWindowSizeCallback(winid,cbfun){return GLFW.setWindowSizeCallback(winid,cbfun)}function _glfwSwapBuffers(winid){GLFW.swapBuffers(winid)}function _glfwSwapInterval(interval){interval=Math.abs(interval);if(interval==0)_emscripten_set_main_loop_timing(0,0);else _emscripten_set_main_loop_timing(1,interval)}function _glfwTerminate(){window.removeEventListener("gamepadconnected",GLFW.onGamepadConnected,true);window.removeEventListener("gamepaddisconnected",GLFW.onGamepadDisconnected,true);window.removeEventListener("keydown",GLFW.onKeydown,true);window.removeEventListener("keypress",GLFW.onKeyPress,true);window.removeEventListener("keyup",GLFW.onKeyup,true);window.removeEventListener("blur",GLFW.onBlur,true);Module["canvas"].removeEventListener("touchmove",GLFW.onMousemove,true);Module["canvas"].removeEventListener("touchstart",GLFW.onMouseButtonDown,true);Module["canvas"].removeEventListener("touchcancel",GLFW.onMouseButtonUp,true);Module["canvas"].removeEventListener("touchend",GLFW.onMouseButtonUp,true);Module["canvas"].removeEventListener("mousemove",GLFW.onMousemove,true);Module["canvas"].removeEventListener("mousedown",GLFW.onMouseButtonDown,true);Module["canvas"].removeEventListener("mouseup",GLFW.onMouseButtonUp,true);Module["canvas"].removeEventListener("wheel",GLFW.onMouseWheel,true);Module["canvas"].removeEventListener("mousewheel",GLFW.onMouseWheel,true);Module["canvas"].removeEventListener("mouseenter",GLFW.onMouseenter,true);Module["canvas"].removeEventListener("mouseleave",GLFW.onMouseleave,true);Module["canvas"].removeEventListener("drop",GLFW.onDrop,true);Module["canvas"].removeEventListener("dragover",GLFW.onDragover,true);Module["canvas"].width=Module["canvas"].height=1;GLFW.windows=null;GLFW.active=null}function _glfwWindowHint(target,hint){GLFW.hints[target]=hint}function _time(ptr){var ret=Date.now()/1e3|0;if(ptr){HEAP32[ptr>>2]=ret}return ret}var FSNode=function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev};var readMode=292|73;var writeMode=146;Object.defineProperties(FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(val){val?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===writeMode},set:function(val){val?this.mode|=writeMode:this.mode&=~writeMode}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}});FS.FSNode=FSNode;FS.staticInit();Module["FS_createPath"]=FS.createPath;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createDevice"]=FS.createDevice;Module["FS_unlink"]=FS.unlink;var GLctx;for(var i=0;i<32;++i)tempFixedLengthArray.push(new Array(i));var miniTempWebGLFloatBuffersStorage=new Float32Array(288);for(var i=0;i<288;++i){miniTempWebGLFloatBuffers[i]=miniTempWebGLFloatBuffersStorage.subarray(0,i+1)}var __miniTempWebGLIntBuffersStorage=new Int32Array(288);for(var i=0;i<288;++i){__miniTempWebGLIntBuffers[i]=__miniTempWebGLIntBuffersStorage.subarray(0,i+1)}Module["requestFullscreen"]=function Module_requestFullscreen(lockPointer,resizeCanvas){Browser.requestFullscreen(lockPointer,resizeCanvas)};Module["requestAnimationFrame"]=function Module_requestAnimationFrame(func){Browser.requestAnimationFrame(func)};Module["setCanvasSize"]=function Module_setCanvasSize(width,height,noUpdates){Browser.setCanvasSize(width,height,noUpdates)};Module["pauseMainLoop"]=function Module_pauseMainLoop(){Browser.mainLoop.pause()};Module["resumeMainLoop"]=function Module_resumeMainLoop(){Browser.mainLoop.resume()};Module["getUserMedia"]=function Module_getUserMedia(){Browser.getUserMedia()};Module["createContext"]=function Module_createContext(canvas,useWebGL,setInModule,webGLContextAttributes){return Browser.createContext(canvas,useWebGL,setInModule,webGLContextAttributes)};function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var asmLibraryArg={"a":___assert_fail,"Ta":___sys_chdir,"K":___sys_fcntl64,"Sa":___sys_getcwd,"Va":___sys_ioctl,"Xa":___sys_open,"Aa":_emscripten_exit_pointerlock,"$":_emscripten_get_element_css_size,"W":_emscripten_get_gamepad_status,"X":_emscripten_get_num_gamepads,"Jd":_emscripten_glActiveTexture,"Id":_emscripten_glAttachShader,"Zd":_emscripten_glBeginQueryEXT,"Hd":_emscripten_glBindAttribLocation,"Gd":_emscripten_glBindBuffer,"Fd":_emscripten_glBindFramebuffer,"Ed":_emscripten_glBindRenderbuffer,"Dd":_emscripten_glBindTexture,"Rd":_emscripten_glBindVertexArrayOES,"Cd":_emscripten_glBlendColor,"Bd":_emscripten_glBlendEquation,"Ad":_emscripten_glBlendEquationSeparate,"zd":_emscripten_glBlendFunc,"yd":_emscripten_glBlendFuncSeparate,"xd":_emscripten_glBufferData,"wd":_emscripten_glBufferSubData,"vd":_emscripten_glCheckFramebufferStatus,"ud":_emscripten_glClear,"td":_emscripten_glClearColor,"sd":_emscripten_glClearDepthf,"rd":_emscripten_glClearStencil,"qd":_emscripten_glColorMask,"pd":_emscripten_glCompileShader,"od":_emscripten_glCompressedTexImage2D,"nd":_emscripten_glCompressedTexSubImage2D,"md":_emscripten_glCopyTexImage2D,"ld":_emscripten_glCopyTexSubImage2D,"kd":_emscripten_glCreateProgram,"jd":_emscripten_glCreateShader,"id":_emscripten_glCullFace,"hd":_emscripten_glDeleteBuffers,"gd":_emscripten_glDeleteFramebuffers,"fd":_emscripten_glDeleteProgram,"S":_emscripten_glDeleteQueriesEXT,"ed":_emscripten_glDeleteRenderbuffers,"dd":_emscripten_glDeleteShader,"cd":_emscripten_glDeleteTextures,"Qd":_emscripten_glDeleteVertexArraysOES,"bd":_emscripten_glDepthFunc,"ad":_emscripten_glDepthMask,"$c":_emscripten_glDepthRangef,"_c":_emscripten_glDetachShader,"Zc":_emscripten_glDisable,"Yc":_emscripten_glDisableVertexAttribArray,"Xc":_emscripten_glDrawArrays,"Md":_emscripten_glDrawArraysInstancedANGLE,"Nd":_emscripten_glDrawBuffersWEBGL,"Wc":_emscripten_glDrawElements,"Ld":_emscripten_glDrawElementsInstancedANGLE,"Vc":_emscripten_glEnable,"Uc":_emscripten_glEnableVertexAttribArray,"Yd":_emscripten_glEndQueryEXT,"Tc":_emscripten_glFinish,"Sc":_emscripten_glFlush,"Rc":_emscripten_glFramebufferRenderbuffer,"Qc":_emscripten_glFramebufferTexture2D,"Pc":_emscripten_glFrontFace,"Oc":_emscripten_glGenBuffers,"Mc":_emscripten_glGenFramebuffers,"T":_emscripten_glGenQueriesEXT,"Lc":_emscripten_glGenRenderbuffers,"Kc":_emscripten_glGenTextures,"Pd":_emscripten_glGenVertexArraysOES,"Nc":_emscripten_glGenerateMipmap,"Ic":_emscripten_glGetActiveAttrib,"Hc":_emscripten_glGetActiveUniform,"Gc":_emscripten_glGetAttachedShaders,"Fc":_emscripten_glGetAttribLocation,"Ec":_emscripten_glGetBooleanv,"Dc":_emscripten_glGetBufferParameteriv,"Cc":_emscripten_glGetError,"Bc":_emscripten_glGetFloatv,"Ac":_emscripten_glGetFramebufferAttachmentParameteriv,"zc":_emscripten_glGetIntegerv,"xc":_emscripten_glGetProgramInfoLog,"yc":_emscripten_glGetProgramiv,"Td":_emscripten_glGetQueryObjecti64vEXT,"Vd":_emscripten_glGetQueryObjectivEXT,"Sd":_emscripten_glGetQueryObjectui64vEXT,"Ud":_emscripten_glGetQueryObjectuivEXT,"Wd":_emscripten_glGetQueryivEXT,"wc":_emscripten_glGetRenderbufferParameteriv,"uc":_emscripten_glGetShaderInfoLog,"tc":_emscripten_glGetShaderPrecisionFormat,"sc":_emscripten_glGetShaderSource,"vc":_emscripten_glGetShaderiv,"rc":_emscripten_glGetString,"qc":_emscripten_glGetTexParameterfv,"pc":_emscripten_glGetTexParameteriv,"mc":_emscripten_glGetUniformLocation,"oc":_emscripten_glGetUniformfv,"nc":_emscripten_glGetUniformiv,"jc":_emscripten_glGetVertexAttribPointerv,"lc":_emscripten_glGetVertexAttribfv,"kc":_emscripten_glGetVertexAttribiv,"ic":_emscripten_glHint,"hc":_emscripten_glIsBuffer,"gc":_emscripten_glIsEnabled,"fc":_emscripten_glIsFramebuffer,"ec":_emscripten_glIsProgram,"R":_emscripten_glIsQueryEXT,"dc":_emscripten_glIsRenderbuffer,"cc":_emscripten_glIsShader,"bc":_emscripten_glIsTexture,"Od":_emscripten_glIsVertexArrayOES,"ac":_emscripten_glLineWidth,"$b":_emscripten_glLinkProgram,"_b":_emscripten_glPixelStorei,"Zb":_emscripten_glPolygonOffset,"Xd":_emscripten_glQueryCounterEXT,"Yb":_emscripten_glReadPixels,"Xb":_emscripten_glReleaseShaderCompiler,"Vb":_emscripten_glRenderbufferStorage,"Ub":_emscripten_glSampleCoverage,"Tb":_emscripten_glScissor,"Sb":_emscripten_glShaderBinary,"Rb":_emscripten_glShaderSource,"Qb":_emscripten_glStencilFunc,"Pb":_emscripten_glStencilFuncSeparate,"Ob":_emscripten_glStencilMask,"Nb":_emscripten_glStencilMaskSeparate,"Mb":_emscripten_glStencilOp,"Kb":_emscripten_glStencilOpSeparate,"Jb":_emscripten_glTexImage2D,"Ib":_emscripten_glTexParameterf,"Hb":_emscripten_glTexParameterfv,"Gb":_emscripten_glTexParameteri,"Fb":_emscripten_glTexParameteriv,"Eb":_emscripten_glTexSubImage2D,"Db":_emscripten_glUniform1f,"Cb":_emscripten_glUniform1fv,"Bb":_emscripten_glUniform1i,"zb":_emscripten_glUniform1iv,"yb":_emscripten_glUniform2f,"xb":_emscripten_glUniform2fv,"wb":_emscripten_glUniform2i,"vb":_emscripten_glUniform2iv,"ub":_emscripten_glUniform3f,"tb":_emscripten_glUniform3fv,"sb":_emscripten_glUniform3i,"rb":_emscripten_glUniform3iv,"qb":_emscripten_glUniform4f,"ob":_emscripten_glUniform4fv,"nb":_emscripten_glUniform4i,"mb":_emscripten_glUniform4iv,"lb":_emscripten_glUniformMatrix2fv,"kb":_emscripten_glUniformMatrix3fv,"jb":_emscripten_glUniformMatrix4fv,"ib":_emscripten_glUseProgram,"hb":_emscripten_glValidateProgram,"gb":_emscripten_glVertexAttrib1f,"fb":_emscripten_glVertexAttrib1fv,"db":_emscripten_glVertexAttrib2f,"cb":_emscripten_glVertexAttrib2fv,"bb":_emscripten_glVertexAttrib3f,"ab":_emscripten_glVertexAttrib3fv,"$a":_emscripten_glVertexAttrib4f,"_a":_emscripten_glVertexAttrib4fv,"Kd":_emscripten_glVertexAttribDivisorANGLE,"Za":_emscripten_glVertexAttribPointer,"Ya":_emscripten_glViewport,"Pa":_emscripten_memcpy_big,"Qa":_emscripten_resize_heap,"x":_emscripten_run_script,"Y":_emscripten_sample_gamepad_data,"xa":_emscripten_set_click_callback_on_thread,"za":_emscripten_set_fullscreenchange_callback_on_thread,"sa":_emscripten_set_gamepadconnected_callback_on_thread,"ra":_emscripten_set_gamepaddisconnected_callback_on_thread,"ya":_emscripten_set_keydown_callback_on_thread,"$d":_emscripten_set_main_loop,"ta":_emscripten_set_touchcancel_callback_on_thread,"va":_emscripten_set_touchend_callback_on_thread,"ua":_emscripten_set_touchmove_callback_on_thread,"wa":_emscripten_set_touchstart_callback_on_thread,"Ra":_emscripten_thread_sleep,"U":_exit,"L":_fd_close,"Ua":_fd_read,"Na":_fd_seek,"J":_fd_write,"p":_glActiveTexture,"C":_glAttachShader,"k":_glBindAttribLocation,"b":_glBindBuffer,"i":_glBindTexture,"Lb":_glBlendFunc,"e":_glBufferData,"v":_glBufferSubData,"M":_glClear,"N":_glClearColor,"eb":_glClearDepthf,"Fa":_glCompileShader,"La":_glCompressedTexImage2D,"Da":_glCreateProgram,"Ha":_glCreateShader,"Ab":_glCullFace,"m":_glDeleteBuffers,"F":_glDeleteProgram,"G":_glDeleteShader,"I":_glDeleteTextures,"Wb":_glDepthFunc,"H":_glDetachShader,"O":_glDisable,"h":_glDisableVertexAttribArray,"Q":_glDrawArrays,"P":_glDrawElements,"w":_glEnable,"c":_glEnableVertexAttribArray,"pb":_glFrontFace,"f":_glGenBuffers,"Oa":_glGenTextures,"u":_glGetAttribLocation,"Jc":_glGetFloatv,"Ba":_glGetProgramInfoLog,"E":_glGetProgramiv,"Ea":_glGetShaderInfoLog,"D":_glGetShaderiv,"n":_glGetString,"t":_glGetUniformLocation,"Ca":_glLinkProgram,"Wa":_glPixelStorei,"Ia":_glReadPixels,"Ga":_glShaderSource,"Ma":_glTexImage2D,"o":_glTexParameteri,"y":_glUniform1i,"q":_glUniform4f,"r":_glUniformMatrix4fv,"l":_glUseProgram,"Ja":_glVertexAttrib2f,"Ka":_glVertexAttrib3f,"s":_glVertexAttrib4f,"d":_glVertexAttribPointer,"_d":_glViewport,"A":_glfwCreateWindow,"oa":_glfwDefaultWindowHints,"_":_glfwDestroyWindow,"B":_glfwGetPrimaryMonitor,"j":_glfwGetTime,"na":_glfwGetVideoModes,"pa":_glfwInit,"ca":_glfwMakeContextCurrent,"ha":_glfwSetCharCallback,"da":_glfwSetCursorEnterCallback,"fa":_glfwSetCursorPosCallback,"ja":_glfwSetDropCallback,"qa":_glfwSetErrorCallback,"ia":_glfwSetKeyCallback,"ga":_glfwSetMouseButtonCallback,"ea":_glfwSetScrollCallback,"ka":_glfwSetWindowFocusCallback,"la":_glfwSetWindowIconifyCallback,"V":_glfwSetWindowShouldClose,"ma":_glfwSetWindowSizeCallback,"Z":_glfwSwapBuffers,"ba":_glfwSwapInterval,"z":_glfwTerminate,"g":_glfwWindowHint,"aa":_time};var asm=createWasm();var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["be"]).apply(null,arguments)};var _main=Module["_main"]=function(){return(_main=Module["_main"]=Module["asm"]["ce"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["ee"]).apply(null,arguments)};var _free=Module["_free"]=function(){return(_free=Module["_free"]=Module["asm"]["fe"]).apply(null,arguments)};var ___errno_location=Module["___errno_location"]=function(){return(___errno_location=Module["___errno_location"]=Module["asm"]["ge"]).apply(null,arguments)};var stackAlloc=Module["stackAlloc"]=function(){return(stackAlloc=Module["stackAlloc"]=Module["asm"]["he"]).apply(null,arguments)};Module["addRunDependency"]=addRunDependency;Module["removeRunDependency"]=removeRunDependency;Module["FS_createPath"]=FS.createPath;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createDevice"]=FS.createDevice;Module["FS_unlink"]=FS.unlink;var calledRun;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}var calledMain=false;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args){var entryFunction=Module["_main"];var argc=0;var argv=0;try{var ret=entryFunction(argc,argv);exit(ret,true)}catch(e){if(e instanceof ExitStatus){return}else if(e=="unwind"){noExitRuntime=true;return}else{var toLog=e;if(e&&typeof e==="object"&&e.stack){toLog=[e,e.stack]}err("exception thrown: "+toLog);quit_(1,e)}}finally{calledMain=true}}function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(shouldRunNow)callMain(args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}Module["run"]=run;function exit(status,implicit){if(implicit&&noExitRuntime&&status===0){return}if(noExitRuntime){}else{EXITSTATUS=status;exitRuntime();if(Module["onExit"])Module["onExit"](status);ABORT=true}quit_(status,new ExitStatus(status))}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}var shouldRunNow=true;if(Module["noInitialRun"])shouldRunNow=false;run();
diff --git a/examples/web/models/models_yaw_pitch_roll.png b/examples/web/models/models_yaw_pitch_roll.png
deleted file mode 100644
index 8b36fe3..0000000
--- a/examples/web/models/models_yaw_pitch_roll.png
+++ /dev/null
Binary files differ
diff --git a/examples/web/models/models_yaw_pitch_roll.wasm b/examples/web/models/models_yaw_pitch_roll.wasm
deleted file mode 100644
index 9930ad5..0000000
--- a/examples/web/models/models_yaw_pitch_roll.wasm
+++ /dev/null
Binary files differ
diff --git a/examples/web/models/resources/billboard.png b/examples/web/models/resources/billboard.png
deleted file mode 100644
index 8c99118..0000000
--- a/examples/web/models/resources/billboard.png
+++ /dev/null
Binary files differ
diff --git a/examples/web/models/resources/cubicmap.png b/examples/web/models/resources/cubicmap.png
deleted file mode 100644
index 392dbf2..0000000
--- a/examples/web/models/resources/cubicmap.png
+++ /dev/null
Binary files differ
diff --git a/examples/web/models/resources/cubicmap_atlas.png b/examples/web/models/resources/cubicmap_atlas.png
deleted file mode 100644
index 9fc404a..0000000
--- a/examples/web/models/resources/cubicmap_atlas.png
+++ /dev/null
Binary files differ
diff --git a/examples/web/models/resources/dresden_square_1k.hdr b/examples/web/models/resources/dresden_square_1k.hdr
deleted file mode 100644
index b6d0e77..0000000
--- a/examples/web/models/resources/dresden_square_1k.hdr
+++ /dev/null
Binary files differ
diff --git a/examples/web/models/resources/dresden_square_2k.hdr b/examples/web/models/resources/dresden_square_2k.hdr
deleted file mode 100644
index 60b4a4c..0000000
--- a/examples/web/models/resources/dresden_square_2k.hdr
+++ /dev/null
Binary files differ
diff --git a/examples/web/models/resources/guy/guy.blend b/examples/web/models/resources/guy/guy.blend
deleted file mode 100644
index 3880467..0000000
--- a/examples/web/models/resources/guy/guy.blend
+++ /dev/null
Binary files differ
diff --git a/examples/web/models/resources/guy/guy.iqm b/examples/web/models/resources/guy/guy.iqm
deleted file mode 100644
index 36bed5e..0000000
--- a/examples/web/models/resources/guy/guy.iqm
+++ /dev/null
Binary files differ
diff --git a/examples/web/models/resources/guy/guyanim.iqm b/examples/web/models/resources/guy/guyanim.iqm
deleted file mode 100644
index 824a68a..0000000
--- a/examples/web/models/resources/guy/guyanim.iqm
+++ /dev/null
Binary files differ
diff --git a/examples/web/models/resources/guy/guytex.png b/examples/web/models/resources/guy/guytex.png
deleted file mode 100644
index 05a58ee..0000000
--- a/examples/web/models/resources/guy/guytex.png
+++ /dev/null
Binary files differ
diff --git a/examples/web/models/resources/heightmap.png b/examples/web/models/resources/heightmap.png
deleted file mode 100644
index 474db87..0000000
--- a/examples/web/models/resources/heightmap.png
+++ /dev/null
Binary files differ
diff --git a/examples/web/models/resources/models/LICENSE b/examples/web/models/resources/models/LICENSE
deleted file mode 100644
index 39cdd61..0000000
--- a/examples/web/models/resources/models/LICENSE
+++ /dev/null
@@ -1,4 +0,0 @@
-Medieval City models and textures have been created by Alberto Cano,
-and licensed as Creative Commons Attribution-NonCommercial 4.0.
-
-Check for details: https://creativecommons.org/licenses/by-nc/4.0/legalcode
diff --git a/examples/web/models/resources/models/bridge.obj b/examples/web/models/resources/models/bridge.obj
deleted file mode 100644
index ad283f1..0000000
--- a/examples/web/models/resources/models/bridge.obj
+++ /dev/null
@@ -1,1725 +0,0 @@
-# (c) 2018 Medieval Assets Pack by Alberto Cano
-# Licensed as Creative Commons Attribution-NonCommercial 4.0
-
-#
-# object bridge
-#
-
-v 3.9982 -0.0023 11.9925
-v 4.0712 0.0000 6.5164
-v 3.9982 2.2042 6.5164
-v 3.9982 1.3553 8.7417
-v 4.1679 -0.0000 4.0663
-v 4.1413 1.0540 4.2689
-v 4.0712 2.8371 4.8031
-v 3.9982 2.2699 8.7359
-v 3.0685 2.2722 8.7359
-v 3.0685 0.9146 11.9866
-v 3.9982 0.9123 11.9866
-v 4.3287 2.2355 3.4001
-v 4.3287 3.3078 3.4952
-v 0.0000 0.0000 4.0663
-v 0.0000 1.4511 3.3640
-v 4.3287 1.4511 3.3640
-v 4.4633 3.0558 2.1675
-v 4.4633 3.7271 2.1035
-v 0.0000 2.4236 2.1918
-v 4.4633 2.4236 2.1918
-v 4.5231 3.3391 0.8674
-v 4.5231 3.8066 0.8674
-v 0.0000 2.7841 0.8674
-v 4.5231 2.7841 0.8674
-v 3.0685 2.2065 6.5164
-v 3.1415 2.8394 4.8031
-v 0.0000 2.8394 4.8031
-v 0.0000 2.2065 6.5164
-v 3.0685 1.3576 8.7417
-v 0.0000 1.3576 8.7417
-v 3.3990 3.3101 3.4952
-v 0.0000 3.3101 3.4952
-v 3.5336 3.7294 2.1035
-v 0.0000 3.7294 2.1035
-v 3.5934 3.8066 0.8674
-v 0.0000 3.8066 0.8674
-v 4.5862 3.4521 0.0062
-v 4.5862 3.8557 0.0062
-v 0.0000 2.9214 0.0062
-v 4.5862 2.9214 0.0062
-v 3.6565 3.8557 0.0062
-v 0.0000 3.8557 0.0062
-v 3.9982 1.3576 -8.7294
-v 3.9982 2.2065 -6.5040
-v 3.9982 0.0000 -6.5040
-v 3.9982 -0.0674 -11.9801
-v 4.0712 2.8394 -4.7908
-v 4.0712 1.0546 -4.2566
-v 4.0712 0.0000 -4.0540
-v 3.9982 0.8472 -11.9860
-v 3.0685 0.8472 -11.9860
-v 3.0685 2.2722 -8.7353
-v 3.9982 2.2722 -8.7353
-v 4.3287 3.3101 -3.4828
-v 4.3287 2.2361 -3.3877
-v 4.3287 1.4511 -3.3516
-v 0.0000 1.4511 -3.3516
-v 0.0000 0.0000 -4.0540
-v 4.4633 3.7294 -2.0911
-v 4.4633 3.0564 -2.1551
-v 4.4633 2.4236 -2.1794
-v 0.0000 2.4236 -2.1794
-v 4.5231 3.8066 -0.8551
-v 4.5231 3.3391 -0.8551
-v 4.5231 2.7841 -0.8551
-v 0.0000 2.7841 -0.8551
-v 0.0000 2.8394 -4.7908
-v 3.1415 2.8394 -4.7908
-v 3.0685 2.2065 -6.5040
-v 0.0000 2.2065 -6.5040
-v 3.0685 1.3576 -8.7294
-v 0.0000 1.3576 -8.7294
-v 0.0000 3.3101 -3.4828
-v 3.3990 3.3101 -3.4828
-v 0.0000 3.7294 -2.0911
-v 3.5336 3.7294 -2.0911
-v 0.0000 3.8066 -0.8551
-v 3.5934 3.8066 -0.8551
-v 0.0000 0.0000 11.9925
-v 3.0685 0.0000 11.9925
-v 3.9982 3.1188 6.5105
-v 4.0712 3.7517 4.7973
-v 3.1415 3.7540 4.7973
-v 3.0685 3.1211 6.5105
-v 4.3287 4.2224 3.4893
-v 3.3990 4.2247 3.4893
-v 4.4633 4.7189 1.8730
-v 3.5336 4.7213 1.8730
-v 4.5231 4.7213 0.8616
-v 3.5934 4.7213 0.8616
-v 4.5862 4.7213 0.0003
-v 3.6565 4.7213 0.0003
-v 3.0685 -0.0674 -11.9801
-v 0.0000 0.0000 -11.9801
-v 4.0712 3.7540 -4.7966
-v 3.9982 3.1211 -6.5099
-v 3.0685 3.1211 -6.5099
-v 3.1415 3.7540 -4.7966
-v 4.3287 4.2247 -3.4887
-v 3.3990 4.2247 -3.4887
-v 4.4633 4.7213 -1.8724
-v 3.5336 4.7213 -1.8724
-v 4.5231 4.7213 -0.8610
-v 3.5934 4.7213 -0.8610
-v 4.0914 1.3553 8.7417
-v 4.0914 2.2042 6.5164
-v 4.0914 3.1188 6.5105
-v 4.0914 2.2699 8.7359
-v 4.1643 2.8371 4.8031
-v 4.1643 3.7517 4.7973
-v 4.4218 3.3078 3.4952
-v 4.4218 4.2224 3.4893
-v 4.5564 3.7271 2.1035
-v 4.5564 4.7189 1.8730
-v 4.6162 3.8066 0.8674
-v 4.6163 4.7213 0.8616
-v 4.6793 3.8557 0.0062
-v 4.6793 4.7213 0.0003
-v 4.6162 3.8066 -0.8551
-v 4.6163 4.7213 -0.8610
-v 4.5564 3.7294 -2.0911
-v 4.5564 4.7213 -1.8724
-v 4.4218 3.3101 -3.4828
-v 4.4218 4.2247 -3.4887
-v 4.1643 2.8394 -4.7908
-v 4.1643 3.7540 -4.7966
-v 4.0914 2.2065 -6.5040
-v 4.0914 3.1211 -6.5099
-v 4.0914 1.3576 -8.7294
-v 4.0914 2.2722 -8.7353
-v 4.0913 -0.0674 -11.9801
-v 4.0914 0.8472 -11.9860
-v 3.9982 -0.0713 -13.3621
-v 3.0685 -0.0713 -13.3621
-v 3.0685 0.8434 -13.3680
-v 3.9982 0.8434 -13.3680
-v 3.0686 0.0039 13.3744
-v 3.9982 0.0016 13.3744
-v 3.9982 0.9162 13.3686
-v 3.0686 0.9185 13.3686
-v 4.0913 -0.0023 11.9925
-v 4.0914 0.9123 11.9866
-v 3.0685 1.8566 -11.9925
-v 3.9982 1.8566 -11.9925
-v 3.9982 1.8527 -13.3744
-v 3.0685 1.8527 -13.3744
-v 4.0913 -0.0713 -13.3621
-v 4.0914 0.8434 -13.3680
-v 4.0914 0.9162 13.3686
-v 4.0914 0.0016 13.3744
-v 4.0022 1.9216 11.9801
-v 3.0726 1.9239 11.9801
-v 3.0726 1.9278 13.3621
-v 4.0022 1.9255 13.3621
-v 4.3309 1.0532 -4.2736
-v 4.5388 2.3452 -3.4047
-v 4.5388 1.1804 -3.3687
-v 4.3102 -0.0008 -3.9892
-v 4.7395 3.1981 -2.1722
-v 4.7395 2.2978 -2.1965
-v 4.8125 3.4962 -0.8721
-v 4.8125 2.7824 -0.8721
-v 4.8215 3.5568 -0.0066
-v 4.8215 2.8673 -0.0066
-v 3.6673 0.0018 -3.9977
-v 3.8281 1.1836 -3.3772
-v 3.9627 2.3550 -2.2050
-v 4.0226 2.7850 -0.8806
-v 4.0856 2.8699 -0.0066
-v 4.5862 3.5594 -0.0066
-v 4.5231 3.4988 -0.8806
-v 4.4633 3.1460 -2.1807
-v 4.3287 2.3484 -3.4132
-v 4.0712 1.0557 -4.2821
-v 4.1503 -0.0013 -5.7369
-v 4.2574 1.0789 -5.6478
-v 3.9982 1.0815 -5.6563
-v 4.3309 1.0532 4.2604
-v 4.3102 -0.0008 3.9760
-v 4.5388 1.1804 3.3555
-v 4.5388 2.3452 3.3915
-v 4.7395 2.2978 2.1833
-v 4.7395 3.1981 2.1590
-v 4.8125 2.7824 0.8589
-v 4.8125 3.4962 0.8589
-v 3.6673 0.0018 3.9845
-v 3.8281 1.1836 3.3640
-v 3.9627 2.3550 2.1918
-v 4.0226 2.7850 0.8674
-v 4.5231 3.4988 0.8674
-v 4.4633 3.1460 2.1675
-v 4.3287 2.3484 3.4001
-v 4.1413 1.0557 4.2689
-v 4.2574 1.0789 5.6346
-v 4.1503 -0.0013 5.7237
-v 4.0712 1.0815 5.6346
-v 4.1764 4.0031 5.7280
-v 2.7107 4.0031 5.7280
-v 2.7107 4.0031 7.1178
-v 4.1764 4.0031 7.1178
-v 4.1764 0.0000 5.7280
-v 2.6101 0.0000 5.7280
-v 3.0500 2.0015 5.5403
-v 4.3606 2.0015 5.5403
-v 3.0500 2.0015 6.7032
-v 2.6101 0.0000 7.1178
-v 4.1764 0.0000 7.1178
-v 4.3606 2.0015 6.7032
-v 4.1764 4.0031 -5.7156
-v 4.1764 4.0031 -7.1054
-v 2.7107 4.0031 -7.1054
-v 2.7107 4.0031 -5.7156
-v 4.1764 -0.0000 -5.7156
-v 4.3606 2.0015 -5.5280
-v 3.0500 2.0015 -5.5280
-v 2.6101 -0.0000 -5.7156
-v 3.0500 2.0015 -6.6909
-v 2.6101 -0.0000 -7.1054
-v 4.3606 2.0015 -6.6909
-v 4.1764 -0.0000 -7.1054
-v -3.9982 -0.0023 11.9925
-v -3.9982 1.3553 8.7417
-v -3.9982 2.2042 6.5164
-v -4.0712 0.0000 6.5164
-v -4.0712 2.8371 4.8031
-v -4.1413 1.0540 4.2689
-v -4.1679 -0.0000 4.0663
-v -3.9982 2.2699 8.7359
-v -3.9982 0.9123 11.9866
-v -3.0685 0.9146 11.9866
-v -3.0685 2.2722 8.7359
-v -4.3287 3.3078 3.4952
-v -4.3287 2.2355 3.4001
-v -4.3287 1.4511 3.3640
-v -4.4633 3.7271 2.1035
-v -4.4633 3.0558 2.1675
-v -4.4633 2.4236 2.1918
-v -4.5231 3.8066 0.8674
-v -4.5231 3.3391 0.8674
-v -4.5231 2.7841 0.8674
-v -3.1415 2.8394 4.8031
-v -3.0685 2.2065 6.5164
-v -3.0685 1.3576 8.7417
-v -3.3990 3.3101 3.4952
-v -3.5336 3.7294 2.1035
-v -3.5934 3.8066 0.8674
-v -4.5862 3.8557 0.0062
-v -4.5862 3.4521 0.0062
-v -4.5862 2.9214 0.0062
-v -3.6565 3.8557 0.0062
-v -3.9982 1.3576 -8.7294
-v -3.9982 -0.0674 -11.9801
-v -3.9982 0.0000 -6.5040
-v -3.9982 2.2065 -6.5040
-v -4.0712 0.0000 -4.0540
-v -4.0712 1.0546 -4.2566
-v -4.0712 2.8394 -4.7908
-v -3.9982 0.8472 -11.9860
-v -3.9982 2.2722 -8.7353
-v -3.0685 2.2722 -8.7353
-v -3.0685 0.8472 -11.9860
-v -4.3287 2.2361 -3.3877
-v -4.3287 3.3101 -3.4828
-v -4.3287 1.4511 -3.3516
-v -4.4633 3.0564 -2.1551
-v -4.4633 3.7294 -2.0911
-v -4.4633 2.4236 -2.1794
-v -4.5231 3.3391 -0.8551
-v -4.5231 3.8066 -0.8551
-v -4.5231 2.7841 -0.8551
-v -3.0685 2.2065 -6.5040
-v -3.1415 2.8394 -4.7908
-v -3.0685 1.3576 -8.7294
-v -3.3990 3.3101 -3.4828
-v -3.5336 3.7294 -2.0911
-v -3.5934 3.8066 -0.8551
-v -3.0685 0.0000 11.9925
-v -3.1415 3.7540 4.7973
-v -4.0712 3.7517 4.7973
-v -3.9982 3.1188 6.5105
-v -3.0685 3.1211 6.5105
-v -3.3990 4.2247 3.4893
-v -4.3287 4.2224 3.4893
-v -3.5336 4.7213 1.8730
-v -4.4633 4.7189 1.8730
-v -3.5934 4.7213 0.8616
-v -4.5231 4.7213 0.8616
-v -3.6565 4.7213 0.0003
-v -4.5862 4.7213 0.0003
-v -3.0685 -0.0674 -11.9801
-v -3.0685 3.1211 -6.5099
-v -3.9982 3.1211 -6.5099
-v -4.0712 3.7540 -4.7966
-v -3.1415 3.7540 -4.7966
-v -4.3287 4.2247 -3.4887
-v -3.3990 4.2247 -3.4887
-v -4.4633 4.7213 -1.8724
-v -3.5336 4.7213 -1.8724
-v -4.5231 4.7213 -0.8610
-v -3.5934 4.7213 -0.8610
-v -4.0914 1.3553 8.7417
-v -4.0914 2.2699 8.7359
-v -4.0914 3.1188 6.5105
-v -4.0914 2.2042 6.5164
-v -4.1643 3.7517 4.7973
-v -4.1643 2.8371 4.8031
-v -4.4218 4.2224 3.4893
-v -4.4218 3.3078 3.4952
-v -4.5564 4.7189 1.8730
-v -4.5564 3.7271 2.1035
-v -4.6162 4.7213 0.8616
-v -4.6162 3.8066 0.8674
-v -4.6793 4.7213 0.0003
-v -4.6793 3.8557 0.0062
-v -4.6162 4.7213 -0.8610
-v -4.6162 3.8066 -0.8551
-v -4.5564 4.7213 -1.8724
-v -4.5564 3.7294 -2.0911
-v -4.4218 4.2247 -3.4887
-v -4.4218 3.3101 -3.4828
-v -4.1643 3.7540 -4.7966
-v -4.1643 2.8394 -4.7908
-v -4.0914 3.1211 -6.5099
-v -4.0914 2.2065 -6.5040
-v -4.0914 2.2722 -8.7353
-v -4.0914 1.3576 -8.7294
-v -4.0914 0.8472 -11.9860
-v -4.0913 -0.0674 -11.9801
-v -3.9982 -0.0713 -13.3621
-v -3.9982 0.8434 -13.3680
-v -3.0685 0.8434 -13.3680
-v -3.0685 -0.0713 -13.3621
-v -3.0686 0.0039 13.3744
-v -3.0686 0.9185 13.3686
-v -3.9982 0.9162 13.3686
-v -3.9982 0.0016 13.3744
-v -4.0913 -0.0023 11.9925
-v -4.0914 0.9123 11.9866
-v -3.0685 1.8566 -11.9925
-v -3.0685 1.8527 -13.3744
-v -3.9982 1.8527 -13.3744
-v -3.9982 1.8566 -11.9925
-v -4.0914 0.8434 -13.3680
-v -4.0913 -0.0713 -13.3621
-v -4.0914 0.0016 13.3744
-v -4.0914 0.9162 13.3686
-v -4.0022 1.9216 11.9801
-v -4.0022 1.9255 13.3621
-v -3.0726 1.9278 13.3621
-v -3.0726 1.9239 11.9801
-v -4.3309 1.0532 -4.2736
-v -4.3102 -0.0008 -3.9892
-v -4.5388 1.1804 -3.3687
-v -4.5388 2.3452 -3.4047
-v -4.7395 2.2978 -2.1965
-v -4.7395 3.1981 -2.1722
-v -4.8125 2.7824 -0.8721
-v -4.8125 3.4962 -0.8721
-v -4.8215 2.8673 -0.0066
-v -4.8215 3.5568 -0.0066
-v -3.6673 0.0018 -3.9977
-v -3.8281 1.1836 -3.3772
-v -3.9627 2.3550 -2.2050
-v -4.0226 2.7850 -0.8806
-v -4.0856 2.8699 -0.0066
-v -4.5862 3.5594 -0.0066
-v -4.5231 3.4988 -0.8806
-v -4.4633 3.1460 -2.1807
-v -4.3287 2.3484 -3.4132
-v -4.0712 1.0557 -4.2821
-v -4.2574 1.0789 -5.6478
-v -4.1503 -0.0013 -5.7369
-v -3.9982 1.0815 -5.6563
-v -4.3309 1.0532 4.2604
-v -4.5388 2.3452 3.3915
-v -4.5388 1.1804 3.3555
-v -4.3102 -0.0008 3.9760
-v -4.7395 3.1981 2.1590
-v -4.7395 2.2978 2.1833
-v -4.8125 3.4962 0.8589
-v -4.8125 2.7824 0.8589
-v -3.6673 0.0018 3.9845
-v -3.8281 1.1836 3.3640
-v -3.9627 2.3550 2.1918
-v -4.0226 2.7850 0.8674
-v -4.5231 3.4988 0.8674
-v -4.4633 3.1460 2.1675
-v -4.3287 2.3484 3.4001
-v -4.1413 1.0557 4.2689
-v -4.1503 -0.0013 5.7237
-v -4.2574 1.0789 5.6346
-v -4.0712 1.0815 5.6346
-v -4.1764 4.0031 5.7280
-v -4.1764 4.0031 7.1178
-v -2.7107 4.0031 7.1178
-v -2.7107 4.0031 5.7280
-v -4.1764 0.0000 5.7280
-v -4.3606 2.0015 5.5403
-v -3.0500 2.0015 5.5403
-v -2.6101 0.0000 5.7280
-v -3.0500 2.0015 6.7032
-v -2.6101 0.0000 7.1178
-v -4.3606 2.0015 6.7032
-v -4.1764 0.0000 7.1178
-v -4.1764 4.0031 -5.7156
-v -2.7107 4.0031 -5.7156
-v -2.7107 4.0031 -7.1054
-v -4.1764 4.0031 -7.1054
-v -4.1764 -0.0000 -5.7156
-v -2.6101 -0.0000 -5.7156
-v -3.0500 2.0015 -5.5280
-v -4.3606 2.0015 -5.5280
-v -3.0500 2.0015 -6.6909
-v -2.6101 -0.0000 -7.1054
-v -4.1764 -0.0000 -7.1054
-v -4.3606 2.0015 -6.6909
-# 416 vertices
-
-vn 0.9998 0.0187 0.0075
-vn 1.0000 -0.0000 -0.0000
-vn 0.9996 0.0187 0.0223
-vn 0.9995 0.0081 0.0318
-vn 0.9995 0.0135 0.0290
-vn 0.0041 0.9228 0.3854
-vn 0.9942 -0.0101 0.1073
-vn 0.9942 -0.0095 0.1071
-vn 0.0000 -0.4357 -0.9001
-vn -0.0000 -0.4357 -0.9001
-vn 0.9983 -0.0052 0.0581
-vn 0.9984 0.0054 0.0561
-vn -0.0000 -0.7696 -0.6385
-vn 0.0000 -0.7696 -0.6385
-vn 0.9996 0.0025 0.0265
-vn 0.9996 0.0000 0.0273
-vn 0.0000 -0.9649 -0.2627
-vn -0.0000 -0.9649 -0.2627
-vn 0.0000 0.9380 0.3465
-vn 0.0000 0.9343 0.3564
-vn -0.0000 0.9409 0.3386
-vn 0.0000 0.9409 0.3386
-vn -0.0000 0.9575 0.2885
-vn -0.0000 0.9981 0.0624
-vn 0.9991 0.0000 0.0413
-vn 0.0000 -0.9875 -0.1574
-vn 0.0000 0.9984 0.0568
-vn -0.0000 0.9984 0.0568
-vn 1.0000 0.0000 -0.0000
-vn 0.9997 -0.0065 -0.0216
-vn 0.9998 -0.0039 -0.0203
-vn 0.9999 0.0000 -0.0168
-vn -0.0000 0.9159 -0.4015
-vn 0.9942 -0.0095 -0.1071
-vn 0.9924 -0.0353 -0.1180
-vn 0.0000 -0.4357 0.9001
-vn 0.9984 0.0053 -0.0561
-vn 0.9983 -0.0051 -0.0581
-vn 0.0000 -0.7696 0.6385
-vn 0.9996 0.0000 -0.0273
-vn 0.9996 0.0025 -0.0265
-vn 0.0000 -0.9649 0.2627
-vn -0.0000 0.9380 -0.3465
-vn 0.0000 0.9380 -0.3465
-vn 0.0000 0.9343 -0.3564
-vn -0.0000 0.9343 -0.3564
-vn -0.0000 0.9409 -0.3386
-vn 0.0000 0.9575 -0.2885
-vn -0.0000 0.9575 -0.2885
-vn 0.0000 0.9981 -0.0624
-vn 0.9991 0.0000 -0.0413
-vn 0.0000 -0.9875 0.1574
-vn 0.0000 0.9984 -0.0568
-vn 0.0000 0.9228 0.3854
-vn 0.0041 0.9380 0.3466
-vn 0.0041 0.9343 0.3564
-vn 0.0042 0.9408 0.3390
-vn 0.0042 0.9558 0.2938
-vn -0.0000 1.0000 0.0023
-vn 0.0044 1.0000 0.0001
-vn 0.0000 1.0000 -0.0000
-vn -0.0000 1.0000 -0.0000
-vn 0.0359 0.9222 -0.3851
-vn -0.0000 0.9559 -0.2937
-vn -0.0000 1.0000 0.0000
-vn 0.0000 1.0000 0.0000
-vn 0.9997 0.0002 0.0241
-vn 0.9939 0.0007 0.1107
-vn 0.9982 0.0136 0.0586
-vn 0.9989 0.0003 0.0470
-vn 0.9996 0.0002 0.0273
-vn 0.9994 0.0078 0.0334
-vn 0.9991 0.0003 0.0413
-vn 0.9991 -0.0003 -0.0413
-vn 0.9996 0.0061 -0.0277
-vn 0.9994 -0.0002 -0.0334
-vn 0.9985 -0.0004 -0.0544
-vn 0.9987 0.0111 -0.0503
-vn 0.9939 -0.0007 -0.1102
-vn 0.9997 -0.0002 -0.0240
-vn 1.0000 -0.0000 0.0000
-vn 0.0000 -0.0064 -1.0000
-vn -1.0000 0.0000 -0.0000
-vn -1.0000 0.0000 0.0000
-vn -0.9997 0.0002 0.0240
-vn -0.9939 0.0007 0.1102
-vn -0.9982 -0.0129 0.0584
-vn -0.9989 0.0003 0.0468
-vn -0.9996 0.0002 0.0273
-vn -0.9994 -0.0074 0.0334
-vn -0.9991 0.0003 0.0413
-vn -0.9991 -0.0003 -0.0413
-vn -0.9996 -0.0064 -0.0277
-vn -0.9994 -0.0002 -0.0334
-vn -0.9985 -0.0004 -0.0546
-vn -0.9987 -0.0117 -0.0505
-vn -0.9939 -0.0007 -0.1107
-vn -0.9997 -0.0002 -0.0241
-vn 0.0000 0.0064 1.0000
-vn 0.0000 1.0000 -0.0028
-vn 0.0044 1.0000 -0.0028
-vn -0.0000 0.0064 1.0000
-vn -0.0000 -0.0064 -1.0000
-vn -1.0000 0.0022 0.0000
-vn 1.0000 -0.0023 -0.0000
-vn -0.0000 -0.9343 -0.3564
-vn 0.0000 -0.9380 -0.3465
-vn -0.0000 -0.9380 -0.3465
-vn -0.0000 -0.9409 -0.3386
-vn 0.0000 -0.9409 -0.3386
-vn -0.0000 -0.9575 -0.2885
-vn -0.0000 -0.9979 -0.0642
-vn -0.0000 -0.9984 -0.0568
-vn -0.0000 -0.9984 0.0568
-vn -0.0000 -0.9981 0.0624
-vn -0.0000 -0.9575 0.2885
-vn -0.0000 -0.9409 0.3386
-vn -0.0000 -0.9380 0.3465
-vn -0.0000 -0.9343 0.3564
-vn -0.0000 -0.9159 0.4015
-vn 0.0000 0.9159 -0.4015
-vn 0.0000 0.9409 -0.3386
-vn 0.0000 0.9559 -0.2937
-vn 0.0000 1.0000 0.0023
-vn 0.0000 0.9559 0.2937
-vn -0.0000 -0.9228 -0.3854
-vn 0.9918 -0.0040 -0.1281
-vn 0.9915 -0.0440 -0.1224
-vn 0.9956 0.0025 -0.0932
-vn 0.9956 -0.0029 -0.0934
-vn 0.9995 0.0000 -0.0317
-vn 0.9995 0.0008 -0.0314
-vn 1.0000 0.0000 -0.0059
-vn -0.0241 -0.4629 0.8861
-vn -0.0225 -0.4634 0.8859
-vn -0.0204 -0.7227 0.6909
-vn -0.1050 -0.7000 0.7064
-vn -0.1280 -0.9301 0.3443
-vn -0.0114 -0.9510 0.3091
-vn -0.0076 -0.9952 0.0976
-vn -0.0062 -0.9953 0.0969
-vn 0.0194 0.9974 -0.0699
-vn 0.0271 0.9742 -0.2243
-vn -0.2950 0.9241 -0.2431
-vn -0.2404 0.8084 -0.5373
-vn 0.0616 0.8362 -0.5450
-vn 0.0745 0.5518 -0.8306
-vn 0.0580 0.5524 -0.8315
-vn 0.9973 -0.0516 -0.0515
-vn 0.9993 -0.0193 -0.0305
-vn 0.0166 0.9997 0.0182
-vn 0.9915 -0.0440 0.1224
-vn 0.9918 -0.0040 0.1281
-vn 0.9956 -0.0029 0.0934
-vn 0.9956 0.0025 0.0932
-vn 0.9995 0.0008 0.0314
-vn 0.9995 0.0000 0.0317
-vn 1.0000 0.0000 0.0059
-vn -0.0225 -0.4634 -0.8859
-vn -0.0241 -0.4629 -0.8861
-vn -0.1050 -0.7000 -0.7064
-vn -0.0204 -0.7227 -0.6909
-vn -0.0114 -0.9510 -0.3091
-vn -0.1280 -0.9301 -0.3443
-vn -0.0062 -0.9953 -0.0969
-vn -0.0076 -0.9952 -0.0976
-vn 0.0194 0.9974 0.0699
-vn -0.2950 0.9241 0.2431
-vn 0.0271 0.9742 0.2243
-vn 0.0617 0.8362 0.5450
-vn -0.2404 0.8084 0.5373
-vn 0.0794 0.5516 0.8303
-vn 0.0745 0.5518 0.8306
-vn 0.9993 -0.0193 0.0305
-vn 0.9973 -0.0516 0.0515
-vn 0.0227 0.9996 -0.0182
-vn 0.0246 0.9995 -0.0180
-vn 0.0000 -0.0933 -0.9956
-vn 0.0000 0.0933 -0.9956
-vn -0.9955 -0.0952 -0.0000
-vn 0.0000 0.2028 0.9792
-vn 0.0000 -0.2028 0.9792
-vn 0.9987 -0.0519 0.0000
-vn 0.9987 -0.0519 -0.0000
-vn 0.9987 0.0519 -0.0000
-vn 0.0000 -0.0933 0.9956
-vn 0.0000 0.0933 0.9956
-vn 0.0000 0.2028 -0.9792
-vn 0.0000 -0.2028 -0.9792
-vn -0.9998 0.0187 0.0075
-vn -0.9995 0.0135 0.0290
-vn -0.9995 0.0081 0.0318
-vn -0.9996 0.0187 0.0223
-vn -0.0041 0.9228 0.3854
-vn -0.9942 -0.0095 0.1071
-vn -0.9942 -0.0101 0.1073
-vn -0.9984 0.0054 0.0561
-vn -0.9983 -0.0052 0.0581
-vn -0.9996 0.0000 0.0273
-vn -0.9996 0.0025 0.0265
-vn -0.0000 0.9380 0.3465
-vn -0.0000 0.9343 0.3564
-vn 0.0000 0.9575 0.2885
-vn 0.0000 0.9981 0.0624
-vn -0.9991 0.0000 0.0413
-vn -0.0000 -0.9875 -0.1574
-vn -0.9999 0.0000 -0.0168
-vn -0.9998 -0.0039 -0.0203
-vn -0.9997 -0.0065 -0.0216
-vn -0.9924 -0.0353 -0.1180
-vn -0.9942 -0.0095 -0.1071
-vn -0.0000 -0.4357 0.9001
-vn -0.9983 -0.0051 -0.0581
-vn -0.9984 0.0053 -0.0561
-vn -0.0000 -0.7696 0.6385
-vn -0.9996 0.0025 -0.0265
-vn -0.9996 0.0000 -0.0273
-vn -0.0000 -0.9649 0.2627
-vn -0.9991 0.0000 -0.0413
-vn -0.0000 -0.9875 0.1574
-vn -0.0000 0.9228 0.3854
-vn -0.0041 0.9380 0.3466
-vn -0.0041 0.9343 0.3564
-vn -0.0042 0.9408 0.3390
-vn -0.0042 0.9558 0.2938
-vn -0.0044 1.0000 0.0001
-vn -0.0359 0.9222 -0.3851
-vn -1.0000 -0.0000 -0.0000
-vn -0.9997 0.0002 0.0241
-vn -0.9939 0.0007 0.1107
-vn -0.9989 0.0003 0.0470
-vn -0.9982 0.0136 0.0586
-vn -0.9994 0.0078 0.0334
-vn -0.9996 0.0061 -0.0277
-vn -0.9987 0.0111 -0.0503
-vn -0.9985 -0.0004 -0.0544
-vn -0.9939 -0.0007 -0.1102
-vn -0.9997 -0.0002 -0.0240
-vn -1.0000 -0.0000 0.0000
-vn 0.9997 0.0002 0.0240
-vn 0.9939 0.0007 0.1102
-vn 0.9989 0.0003 0.0468
-vn 0.9982 -0.0129 0.0584
-vn 0.9994 -0.0074 0.0334
-vn 0.9996 -0.0064 -0.0277
-vn 0.9987 -0.0117 -0.0505
-vn 0.9985 -0.0004 -0.0546
-vn 0.9939 -0.0007 -0.1107
-vn 0.9997 -0.0002 -0.0241
-vn -0.0044 1.0000 -0.0028
-vn 1.0000 0.0000 0.0000
-vn 1.0000 0.0023 -0.0000
-vn -1.0000 -0.0023 0.0000
-vn 0.0000 -0.9343 -0.3564
-vn 0.0000 -0.9575 -0.2885
-vn 0.0000 -0.9979 -0.0642
-vn 0.0000 -0.9984 -0.0568
-vn 0.0000 -0.9984 0.0568
-vn 0.0000 -0.9981 0.0624
-vn 0.0000 -0.9575 0.2885
-vn 0.0000 -0.9409 0.3386
-vn 0.0000 -0.9380 0.3465
-vn 0.0000 -0.9343 0.3564
-vn 0.0000 -0.9159 0.4015
-vn -0.0000 1.0000 -0.0028
-vn -0.0000 0.9559 0.2937
-vn 0.0000 -0.9228 -0.3854
-vn -0.9915 -0.0440 -0.1224
-vn -0.9918 -0.0040 -0.1281
-vn -0.9956 -0.0029 -0.0934
-vn -0.9956 0.0025 -0.0932
-vn -0.9995 0.0008 -0.0314
-vn -0.9995 0.0000 -0.0317
-vn -1.0000 0.0000 -0.0059
-vn 0.0225 -0.4634 0.8859
-vn 0.0241 -0.4629 0.8861
-vn 0.1050 -0.7000 0.7064
-vn 0.0204 -0.7227 0.6909
-vn 0.0114 -0.9510 0.3091
-vn 0.1280 -0.9301 0.3443
-vn 0.0062 -0.9953 0.0969
-vn 0.0076 -0.9952 0.0976
-vn -0.0194 0.9974 -0.0699
-vn 0.2950 0.9240 -0.2431
-vn -0.0271 0.9742 -0.2243
-vn -0.0616 0.8362 -0.5450
-vn 0.2404 0.8084 -0.5373
-vn -0.0580 0.5524 -0.8315
-vn -0.0745 0.5518 -0.8306
-vn -0.9993 -0.0193 -0.0305
-vn -0.9973 -0.0516 -0.0515
-vn -0.0166 0.9997 0.0182
-vn -0.9918 -0.0040 0.1281
-vn -0.9915 -0.0440 0.1224
-vn -0.9956 0.0025 0.0932
-vn -0.9956 -0.0029 0.0934
-vn -0.9995 0.0000 0.0317
-vn -0.9995 0.0008 0.0314
-vn -1.0000 0.0000 0.0059
-vn 0.0241 -0.4629 -0.8861
-vn 0.0225 -0.4634 -0.8859
-vn 0.0204 -0.7227 -0.6909
-vn 0.1050 -0.7000 -0.7064
-vn 0.1280 -0.9301 -0.3443
-vn 0.0114 -0.9510 -0.3091
-vn 0.0076 -0.9952 -0.0976
-vn 0.0062 -0.9953 -0.0969
-vn -0.0194 0.9974 0.0699
-vn -0.0271 0.9742 0.2243
-vn 0.2950 0.9241 0.2431
-vn 0.2404 0.8084 0.5373
-vn -0.0617 0.8362 0.5450
-vn -0.0745 0.5518 0.8306
-vn -0.0794 0.5516 0.8303
-vn -0.9973 -0.0516 0.0515
-vn -0.9993 -0.0193 0.0305
-vn -0.0246 0.9995 -0.0180
-vn -0.0227 0.9996 -0.0182
-vn 0.9955 -0.0952 -0.0000
-vn -0.9987 -0.0519 -0.0000
-vn -0.9987 -0.0519 0.0000
-vn -0.9987 0.0519 -0.0000
-# 322 vertex normals
-
-vt 0.0055 0.7726 0.0000
-vt 0.2148 0.7727 0.0000
-vt 0.2147 0.8639 0.0000
-vt 0.1297 0.8288 0.0000
-vt 0.3085 0.7727 0.0000
-vt 0.3007 0.8163 0.0000
-vt 0.2802 0.8900 0.0000
-vt 0.1697 0.7009 0.0000
-vt 0.1692 0.6636 0.0000
-vt 0.0461 0.6643 0.0000
-vt 0.0466 0.7016 0.0000
-vt 0.3350 0.8652 0.0000
-vt 0.3315 0.9095 0.0000
-vt 0.3723 0.8137 0.0000
-vt 0.3999 0.8136 0.0000
-vt 0.4003 0.8870 0.0000
-vt 0.3726 0.8844 0.0000
-vt 0.3826 0.8991 0.0000
-vt 0.3850 0.9268 0.0000
-vt 0.4256 0.8135 0.0000
-vt 0.4259 0.8892 0.0000
-vt 0.4323 0.9108 0.0000
-vt 0.4323 0.9301 0.0000
-vt 0.4509 0.8134 0.0000
-vt 0.4513 0.8901 0.0000
-vt 0.7184 0.6451 0.0000
-vt 0.6550 0.6472 0.0000
-vt 0.6551 0.5407 0.0000
-vt 0.7182 0.5411 0.0000
-vt 0.8032 0.6449 0.0000
-vt 0.8031 0.5410 0.0000
-vt 0.6057 0.6561 0.0000
-vt 0.6059 0.5409 0.0000
-vt 0.5512 0.6609 0.0000
-vt 0.5513 0.5412 0.0000
-vt 0.5132 0.6630 0.0000
-vt 0.5135 0.5412 0.0000
-vt 0.4653 0.9155 0.0000
-vt 0.4653 0.9321 0.0000
-vt 0.4646 0.8133 0.0000
-vt 0.4649 0.8911 0.0000
-vt 0.4819 0.6653 0.0000
-vt 0.4828 0.5414 0.0000
-vt 0.8014 0.8288 0.0000
-vt 0.7163 0.8639 0.0000
-vt 0.7163 0.7727 0.0000
-vt 0.9256 0.7699 0.0000
-vt 0.6506 0.8901 0.0000
-vt 0.6305 0.8163 0.0000
-vt 0.6227 0.7727 0.0000
-vt 0.9143 0.7019 0.0000
-vt 0.9142 0.6646 0.0000
-vt 0.7893 0.6638 0.0000
-vt 0.7895 0.7012 0.0000
-vt 0.5992 0.9096 0.0000
-vt 0.5956 0.8652 0.0000
-vt 0.5572 0.8820 0.0000
-vt 0.5296 0.8865 0.0000
-vt 0.5293 0.8131 0.0000
-vt 0.5569 0.8130 0.0000
-vt 0.5457 0.9269 0.0000
-vt 0.5481 0.8991 0.0000
-vt 0.5041 0.8889 0.0000
-vt 0.5037 0.8132 0.0000
-vt 0.4984 0.9301 0.0000
-vt 0.4984 0.9108 0.0000
-vt 0.4787 0.8900 0.0000
-vt 0.4783 0.8133 0.0000
-vt 0.3106 0.5420 0.0000
-vt 0.3104 0.6485 0.0000
-vt 0.2476 0.6456 0.0000
-vt 0.2475 0.5417 0.0000
-vt 0.1628 0.6457 0.0000
-vt 0.1626 0.5418 0.0000
-vt 0.3598 0.5418 0.0000
-vt 0.3596 0.6570 0.0000
-vt 0.4144 0.5416 0.0000
-vt 0.4143 0.6613 0.0000
-vt 0.4522 0.5415 0.0000
-vt 0.4519 0.6633 0.0000
-vt 0.9501 0.5408 0.0000
-vt 0.9502 0.6448 0.0000
-vt 0.2519 0.7005 0.0000
-vt 0.3148 0.7031 0.0000
-vt 0.3144 0.6658 0.0000
-vt 0.2515 0.6631 0.0000
-vt 0.3626 0.7133 0.0000
-vt 0.3622 0.6759 0.0000
-vt 0.4197 0.7185 0.0000
-vt 0.4194 0.6812 0.0000
-vt 0.4522 0.7209 0.0000
-vt 0.4518 0.6836 0.0000
-vt 0.4798 0.7234 0.0000
-vt 0.4795 0.6861 0.0000
-vt 0.0142 0.6459 0.0000
-vt 0.0160 0.5419 0.0000
-vt 0.6444 0.7033 0.0000
-vt 0.7072 0.7007 0.0000
-vt 0.7071 0.6634 0.0000
-vt 0.6442 0.6660 0.0000
-vt 0.5967 0.7134 0.0000
-vt 0.5965 0.6761 0.0000
-vt 0.5397 0.7186 0.0000
-vt 0.5395 0.6813 0.0000
-vt 0.5073 0.7209 0.0000
-vt 0.5071 0.6836 0.0000
-vt 0.1376 0.8475 0.0000
-vt 0.2215 0.8831 0.0000
-vt 0.2222 0.9224 0.0000
-vt 0.1383 0.8869 0.0000
-vt 0.2862 0.9096 0.0000
-vt 0.2869 0.9489 0.0000
-vt 0.3369 0.9293 0.0000
-vt 0.3376 0.9686 0.0000
-vt 0.3898 0.9467 0.0000
-vt 0.3989 0.9893 0.0000
-vt 0.4364 0.9496 0.0000
-vt 0.4370 0.9890 0.0000
-vt 0.4689 0.9514 0.0000
-vt 0.4695 0.9886 0.0000
-vt 0.5015 0.9489 0.0000
-vt 0.5014 0.9883 0.0000
-vt 0.5485 0.9461 0.0000
-vt 0.5386 0.9886 0.0000
-vt 0.6024 0.9297 0.0000
-vt 0.6000 0.9690 0.0000
-vt 0.6546 0.9116 0.0000
-vt 0.6514 0.9508 0.0000
-vt 0.7217 0.8877 0.0000
-vt 0.7179 0.9270 0.0000
-vt 0.8091 0.8562 0.0000
-vt 0.8049 0.8954 0.0000
-vt 0.9376 0.8026 0.0000
-vt 0.9333 0.8418 0.0000
-vt 0.1175 0.2765 0.0000
-vt 0.1172 0.2184 0.0000
-vt 0.0528 0.2186 0.0000
-vt 0.0531 0.2766 0.0000
-vt 0.0149 0.7906 0.0000
-vt 0.0156 0.8299 0.0000
-vt 0.1171 0.1374 0.0000
-vt 0.0526 0.1376 0.0000
-vt 0.1279 0.1213 0.0000
-vt 0.0641 0.1216 0.0000
-vt 0.0639 0.0185 0.0000
-vt 0.1276 0.0182 0.0000
-vt 0.0533 0.3601 0.0000
-vt 0.1177 0.3599 0.0000
-vt 0.1175 0.2816 0.0000
-vt 0.0531 0.2818 0.0000
-vt 0.5233 0.0680 0.0000
-vt 0.5233 0.0146 0.0000
-vt 0.4613 0.0144 0.0000
-vt 0.4612 0.0679 0.0000
-vt 0.5230 0.2785 0.0000
-vt 0.5231 0.1970 0.0000
-vt 0.4611 0.1969 0.0000
-vt 0.4610 0.2783 0.0000
-vt 0.5232 0.1436 0.0000
-vt 0.4612 0.1434 0.0000
-vt 0.1397 0.8448 0.0000
-vt 0.2234 0.8802 0.0000
-vt 0.2877 0.9066 0.0000
-vt 0.3381 0.9262 0.0000
-vt 0.3905 0.9436 0.0000
-vt 0.4365 0.9465 0.0000
-vt 0.4689 0.9482 0.0000
-vt 0.5015 0.9458 0.0000
-vt 0.5478 0.9429 0.0000
-vt 0.6014 0.9266 0.0000
-vt 0.6534 0.9085 0.0000
-vt 0.7201 0.8848 0.0000
-vt 0.8072 0.8534 0.0000
-vt 0.9356 0.7998 0.0000
-vt 0.0479 0.2818 0.0000
-vt 0.0481 0.3601 0.0000
-vt 0.7895 0.7049 0.0000
-vt 0.9144 0.7056 0.0000
-vt 0.7072 0.7044 0.0000
-vt 0.6444 0.7070 0.0000
-vt 0.5967 0.7172 0.0000
-vt 0.5397 0.7224 0.0000
-vt 0.5073 0.7247 0.0000
-vt 0.4798 0.7272 0.0000
-vt 0.4522 0.7246 0.0000
-vt 0.4198 0.7222 0.0000
-vt 0.3627 0.7170 0.0000
-vt 0.3149 0.7068 0.0000
-vt 0.2520 0.7042 0.0000
-vt 0.1697 0.7047 0.0000
-vt 0.0466 0.7053 0.0000
-vt 0.0171 0.7879 0.0000
-vt 0.2846 0.0635 0.0000
-vt 0.3350 0.1014 0.0000
-vt 0.2869 0.0984 0.0000
-vt 0.2402 0.0697 0.0000
-vt 0.3662 0.1505 0.0000
-vt 0.3291 0.1463 0.0000
-vt 0.3743 0.1993 0.0000
-vt 0.3449 0.1967 0.0000
-vt 0.3741 0.2313 0.0000
-vt 0.3456 0.2288 0.0000
-vt 0.9520 0.3232 0.0000
-vt 0.9511 0.3553 0.0000
-vt 0.8725 0.3642 0.0000
-vt 0.8736 0.3287 0.0000
-vt 0.7872 0.3718 0.0000
-vt 0.7856 0.3328 0.0000
-vt 0.7246 0.3759 0.0000
-vt 0.7245 0.3364 0.0000
-vt 0.6884 0.3767 0.0000
-vt 0.6880 0.3399 0.0000
-vt 0.9747 0.5705 0.0000
-vt 0.9874 0.5713 0.0000
-vt 0.9855 0.6101 0.0000
-vt 0.9700 0.6102 0.0000
-vt 0.9823 0.6717 0.0000
-vt 0.9673 0.6738 0.0000
-vt 0.9698 0.7513 0.0000
-vt 0.9586 0.7517 0.0000
-vt 0.9671 0.8478 0.0000
-vt 0.9532 0.8490 0.0000
-vt 0.2458 0.0054 0.0000
-vt 0.2902 0.0130 0.0000
-vt 0.9667 0.9098 0.0000
-vt 0.9528 0.9110 0.0000
-vt 0.2569 0.3810 0.0000
-vt 0.2142 0.3671 0.0000
-vt 0.2651 0.3469 0.0000
-vt 0.3131 0.3524 0.0000
-vt 0.3151 0.3071 0.0000
-vt 0.3523 0.3095 0.0000
-vt 0.3393 0.2602 0.0000
-vt 0.3688 0.2628 0.0000
-vt 0.4237 0.3291 0.0000
-vt 0.5022 0.3328 0.0000
-vt 0.5041 0.3683 0.0000
-vt 0.4253 0.3612 0.0000
-vt 0.5903 0.3350 0.0000
-vt 0.5895 0.3740 0.0000
-vt 0.6514 0.3372 0.0000
-vt 0.6522 0.3767 0.0000
-vt 0.9748 0.5306 0.0000
-vt 0.9902 0.5325 0.0000
-vt 0.9790 0.4672 0.0000
-vt 0.9938 0.4708 0.0000
-vt 0.9769 0.3892 0.0000
-vt 0.9881 0.3902 0.0000
-vt 0.9762 0.2924 0.0000
-vt 0.9863 0.2934 0.0000
-vt 0.2535 0.4317 0.0000
-vt 0.2085 0.4314 0.0000
-vt 0.9763 0.2308 0.0000
-vt 0.9863 0.2315 0.0000
-vt 0.9781 0.1864 0.0000
-vt 0.8088 0.1864 0.0000
-vt 0.8088 0.0170 0.0000
-vt 0.9781 0.0170 0.0000
-vt 0.7807 0.0185 0.0000
-vt 0.6794 0.0178 0.0000
-vt 0.7064 0.1575 0.0000
-vt 0.7912 0.1581 0.0000
-vt 0.6831 0.2968 0.0000
-vt 0.7779 0.2975 0.0000
-vt 0.6498 0.1633 0.0000
-vt 0.5711 0.1633 0.0000
-vt 0.5431 0.3053 0.0000
-vt 0.6371 0.3053 0.0000
-vt 0.5431 0.0214 0.0000
-vt 0.6371 0.0214 0.0000
-vt 0.3995 0.7402 0.0000
-vt 0.3720 0.7430 0.0000
-vt 0.4252 0.7378 0.0000
-vt 0.4506 0.7367 0.0000
-vt 0.6552 0.4343 0.0000
-vt 0.7180 0.4371 0.0000
-vt 0.8029 0.4370 0.0000
-vt 0.6060 0.4257 0.0000
-vt 0.5513 0.4214 0.0000
-vt 0.5137 0.4195 0.0000
-vt 0.4643 0.7356 0.0000
-vt 0.4838 0.4175 0.0000
-vt 0.5566 0.7439 0.0000
-vt 0.5290 0.7397 0.0000
-vt 0.5033 0.7375 0.0000
-vt 0.4780 0.7366 0.0000
-vt 0.2473 0.4377 0.0000
-vt 0.3107 0.4356 0.0000
-vt 0.1624 0.4378 0.0000
-vt 0.3600 0.4267 0.0000
-vt 0.4145 0.4219 0.0000
-vt 0.4525 0.4198 0.0000
-vt 0.9499 0.4368 0.0000
-vt 0.0139 0.4380 0.0000
-# 294 texture coords
-
-o bridge
-g bridge
-f 1/1/1 2/2/1 3/3/1
-f 3/3/2 4/4/2 1/1/2
-f 3/3/3 2/2/3 5/5/3
-f 3/3/4 5/5/4 6/6/4
-f 3/3/5 6/6/5 7/7/5
-f 8/8/6 9/9/6 10/10/6
-f 10/10/6 11/11/6 8/8/6
-f 7/7/7 6/6/7 12/12/7
-f 12/12/8 13/13/8 7/7/8
-f 14/14/9 15/15/9 16/16/9
-f 16/16/10 5/17/10 14/14/10
-f 13/13/11 12/12/11 17/18/11
-f 17/18/12 18/19/12 13/13/12
-f 15/15/13 19/20/13 20/21/13
-f 20/21/14 16/16/14 15/15/14
-f 18/19/15 17/18/15 21/22/15
-f 21/22/16 22/23/16 18/19/16
-f 19/20/17 23/24/17 24/25/17
-f 24/25/18 20/21/18 19/20/18
-f 25/26/19 26/27/19 27/28/19
-f 27/28/19 28/29/19 25/26/19
-f 29/30/20 25/26/20 28/29/20
-f 28/29/20 30/31/20 29/30/20
-f 26/27/21 31/32/21 32/33/21
-f 32/33/22 27/28/22 26/27/22
-f 31/32/23 33/34/23 34/35/23
-f 34/35/23 32/33/23 31/32/23
-f 33/34/24 35/36/24 36/37/24
-f 36/37/24 34/35/24 33/34/24
-f 22/23/25 21/22/25 37/38/25
-f 37/38/25 38/39/25 22/23/25
-f 23/24/26 39/40/26 40/41/26
-f 40/41/26 24/25/26 23/24/26
-f 35/36/27 41/42/27 42/43/27
-f 42/43/28 36/37/28 35/36/28
-f 43/44/29 44/45/29 45/46/29
-f 45/46/29 46/47/29 43/44/29
-f 44/45/30 47/48/30 48/49/30
-f 44/45/31 48/49/31 49/50/31
-f 44/45/32 49/50/32 45/46/32
-f 50/51/33 51/52/33 52/53/33
-f 52/53/33 53/54/33 50/51/33
-f 47/48/34 54/55/34 55/56/34
-f 55/56/35 48/49/35 47/48/35
-f 49/57/36 56/58/36 57/59/36
-f 57/59/36 58/60/36 49/57/36
-f 54/55/37 59/61/37 60/62/37
-f 60/62/38 55/56/38 54/55/38
-f 56/58/39 61/63/39 62/64/39
-f 62/64/39 57/59/39 56/58/39
-f 59/61/40 63/65/40 64/66/40
-f 64/66/41 60/62/41 59/61/41
-f 61/63/42 65/67/42 66/68/42
-f 66/68/42 62/64/42 61/63/42
-f 67/69/43 68/70/43 69/71/43
-f 69/71/44 70/72/44 67/69/44
-f 70/72/45 69/71/45 71/73/45
-f 71/73/46 72/74/46 70/72/46
-f 73/75/47 74/76/47 68/70/47
-f 68/70/47 67/69/47 73/75/47
-f 75/77/48 76/78/48 74/76/48
-f 74/76/49 73/75/49 75/77/49
-f 77/79/50 78/80/50 76/78/50
-f 76/78/50 75/77/50 77/79/50
-f 63/65/51 38/39/51 37/38/51
-f 37/38/51 64/66/51 63/65/51
-f 65/67/52 40/41/52 39/40/52
-f 39/40/52 66/68/52 65/67/52
-f 42/43/53 41/42/53 78/80/53
-f 78/80/53 77/79/53 42/43/53
-f 29/30/54 30/31/54 79/81/54
-f 79/81/54 80/82/54 29/30/54
-f 81/83/55 82/84/55 83/85/55
-f 83/85/55 84/86/55 81/83/55
-f 8/8/56 81/83/56 84/86/56
-f 84/86/56 9/9/56 8/8/56
-f 82/84/57 85/87/57 86/88/57
-f 86/88/57 83/85/57 82/84/57
-f 85/87/58 87/89/58 88/90/58
-f 88/90/58 86/88/58 85/87/58
-f 87/89/59 89/91/59 90/92/59
-f 90/92/60 88/90/60 87/89/60
-f 89/91/61 91/93/61 92/94/61
-f 92/94/62 90/92/62 89/91/62
-f 93/95/63 94/96/63 72/74/63
-f 72/74/33 71/73/33 93/95/33
-f 95/97/44 96/98/44 97/99/44
-f 97/99/43 98/100/43 95/97/43
-f 96/98/46 53/54/46 52/53/46
-f 52/53/45 97/99/45 96/98/45
-f 99/101/47 95/97/47 98/100/47
-f 98/100/47 100/102/47 99/101/47
-f 101/103/64 99/101/64 100/102/64
-f 100/102/64 102/104/64 101/103/64
-f 103/105/65 101/103/65 102/104/65
-f 102/104/65 104/106/65 103/105/65
-f 91/93/65 103/105/65 104/106/65
-f 104/106/66 92/94/66 91/93/66
-f 105/107/2 106/108/2 107/109/2
-f 107/109/2 108/110/2 105/107/2
-f 106/108/67 109/111/67 110/112/67
-f 110/112/67 107/109/67 106/108/67
-f 109/111/68 111/113/68 112/114/68
-f 112/114/68 110/112/68 109/111/68
-f 111/113/69 113/115/69 114/116/69
-f 114/116/70 112/114/70 111/113/70
-f 113/115/71 115/117/71 116/118/71
-f 116/118/72 114/116/72 113/115/72
-f 115/117/73 117/119/73 118/120/73
-f 118/120/73 116/118/73 115/117/73
-f 117/119/74 119/121/74 120/122/74
-f 120/122/74 118/120/74 117/119/74
-f 119/121/75 121/123/75 122/124/75
-f 122/124/76 120/122/76 119/121/76
-f 121/123/77 123/125/77 124/126/77
-f 124/126/78 122/124/78 121/123/78
-f 123/125/79 125/127/79 126/128/79
-f 126/128/79 124/126/79 123/125/79
-f 125/127/80 127/129/80 128/130/80
-f 128/130/80 126/128/80 125/127/80
-f 127/129/81 129/131/81 130/132/81
-f 130/132/81 128/130/81 127/129/81
-f 129/131/81 131/133/81 132/134/81
-f 132/134/81 130/132/81 129/131/81
-f 133/135/82 134/136/82 135/137/82
-f 135/137/82 136/138/82 133/135/82
-f 93/139/83 71/107/83 52/110/83
-f 52/110/83 51/140/83 93/139/83
-f 71/107/83 69/108/83 97/109/83
-f 97/109/84 52/110/84 71/107/84
-f 69/108/85 68/111/85 98/112/85
-f 98/112/85 97/109/85 69/108/85
-f 68/111/86 74/113/86 100/114/86
-f 100/114/86 98/112/86 68/111/86
-f 74/113/87 76/115/87 102/116/87
-f 102/116/88 100/114/88 74/113/88
-f 76/115/89 78/117/89 104/118/89
-f 104/118/90 102/116/90 76/115/90
-f 78/117/91 41/119/91 92/120/91
-f 92/120/91 104/118/91 78/117/91
-f 41/119/92 35/121/92 90/122/92
-f 90/122/92 92/120/92 41/119/92
-f 35/121/93 33/123/93 88/124/93
-f 88/124/94 90/122/94 35/121/94
-f 33/123/95 31/125/95 86/126/95
-f 86/126/96 88/124/96 33/123/96
-f 31/125/97 26/127/97 83/128/97
-f 83/128/97 86/126/97 31/125/97
-f 26/127/98 25/129/98 84/130/98
-f 84/130/98 83/128/98 26/127/98
-f 25/129/84 29/131/84 9/132/84
-f 9/132/84 84/130/84 25/129/84
-f 29/131/84 80/133/84 10/134/84
-f 10/134/84 9/132/84 29/131/84
-f 137/136/99 138/135/99 139/138/99
-f 139/138/99 140/137/99 137/136/99
-f 141/139/2 105/107/2 108/110/2
-f 108/110/2 142/140/2 141/139/2
-f 93/141/83 51/142/83 135/137/83
-f 135/137/83 134/136/83 93/141/83
-f 143/143/100 144/144/100 145/145/100
-f 145/145/100 146/146/100 143/143/100
-f 132/147/81 131/148/81 147/149/81
-f 147/149/81 148/150/81 132/147/81
-f 141/148/2 142/147/2 149/150/2
-f 149/150/2 150/149/2 141/148/2
-f 151/145/101 152/146/101 153/143/101
-f 153/143/101 154/144/101 151/145/101
-f 10/142/84 80/141/84 137/136/84
-f 137/136/84 140/137/84 10/142/84
-f 51/151/102 50/152/102 144/153/102
-f 144/153/99 143/154/99 51/151/99
-f 50/155/29 136/156/29 145/157/29
-f 145/157/29 144/158/29 50/155/29
-f 136/156/82 135/159/82 146/160/82
-f 146/160/82 145/157/82 136/156/82
-f 135/159/83 51/151/83 143/154/83
-f 143/154/83 146/160/83 135/159/83
-f 11/152/103 10/151/103 152/154/103
-f 152/154/103 151/153/103 11/152/103
-f 10/151/104 140/159/104 153/160/104
-f 153/160/104 152/154/104 10/151/104
-f 140/159/99 139/156/99 154/157/99
-f 154/157/99 153/160/99 140/159/99
-f 139/156/105 11/155/105 151/158/105
-f 151/158/105 154/157/105 139/156/105
-f 4/161/106 3/162/106 106/108/106
-f 106/108/106 105/107/106 4/161/106
-f 3/162/107 7/163/107 109/111/107
-f 109/111/108 106/108/108 3/162/108
-f 7/163/109 13/164/109 111/113/109
-f 111/113/110 109/111/110 7/163/110
-f 13/164/111 18/165/111 113/115/111
-f 113/115/111 111/113/111 13/164/111
-f 18/165/112 22/166/112 115/117/112
-f 115/117/112 113/115/112 18/165/112
-f 22/166/113 38/167/113 117/119/113
-f 117/119/113 115/117/113 22/166/113
-f 38/167/114 63/168/114 119/121/114
-f 119/121/114 117/119/114 38/167/114
-f 63/168/115 59/169/115 121/123/115
-f 121/123/115 119/121/115 63/168/115
-f 59/169/116 54/170/116 123/125/116
-f 123/125/116 121/123/116 59/169/116
-f 54/170/117 47/171/117 125/127/117
-f 125/127/117 123/125/117 54/170/117
-f 47/171/118 44/172/118 127/129/118
-f 127/129/118 125/127/118 47/171/118
-f 44/172/119 43/173/119 129/131/119
-f 129/131/119 127/129/119 44/172/119
-f 43/173/120 46/174/120 131/133/120
-f 131/133/120 129/131/120 43/173/120
-f 133/135/103 136/138/103 148/150/103
-f 148/150/103 147/149/103 133/135/103
-f 136/175/100 50/176/100 132/147/100
-f 132/147/100 148/150/100 136/175/100
-f 50/51/121 53/54/121 130/177/121
-f 130/177/121 132/178/121 50/51/121
-f 53/54/45 96/98/45 128/179/45
-f 128/179/45 130/177/45 53/54/45
-f 96/98/44 95/97/44 126/180/44
-f 126/180/44 128/179/44 96/98/44
-f 95/97/122 99/101/122 124/181/122
-f 124/181/122 126/180/122 95/97/122
-f 99/101/123 101/103/123 122/182/123
-f 122/182/123 124/181/123 99/101/123
-f 101/103/66 103/105/66 120/183/66
-f 120/183/66 122/182/66 101/103/66
-f 103/105/66 91/93/66 118/184/66
-f 118/184/66 120/183/66 103/105/66
-f 91/93/61 89/91/61 116/185/61
-f 116/185/61 118/184/61 91/93/61
-f 89/91/124 87/89/124 114/186/124
-f 114/186/124 116/185/124 89/91/124
-f 87/89/125 85/87/125 112/187/125
-f 112/187/125 114/186/125 87/89/125
-f 85/87/22 82/84/22 110/188/22
-f 110/188/22 112/187/22 85/87/22
-f 82/84/19 81/83/19 107/189/19
-f 107/189/19 110/188/19 82/84/19
-f 81/83/20 8/8/20 108/190/20
-f 108/190/20 107/189/20 81/83/20
-f 8/8/54 11/11/54 142/191/54
-f 142/191/54 108/190/54 8/8/54
-f 11/176/100 139/175/100 149/150/100
-f 149/150/100 142/147/100 11/176/100
-f 139/138/99 138/135/99 150/149/99
-f 150/149/99 149/150/99 139/138/99
-f 1/192/126 4/161/126 105/107/126
-f 105/107/126 141/139/126 1/192/126
-f 155/193/127 156/194/127 157/195/127
-f 157/195/128 158/196/128 155/193/128
-f 156/194/129 159/197/129 160/198/129
-f 160/198/130 157/195/130 156/194/130
-f 159/197/131 161/199/131 162/200/131
-f 162/200/132 160/198/132 159/197/132
-f 161/199/133 163/201/133 164/202/133
-f 164/202/133 162/200/133 161/199/133
-f 165/203/134 158/204/134 157/205/134
-f 157/205/135 166/206/135 165/203/135
-f 166/206/136 157/205/136 160/207/136
-f 160/207/137 167/208/137 166/206/137
-f 167/208/138 160/207/138 162/209/138
-f 162/209/139 168/210/139 167/208/139
-f 168/210/140 162/209/140 164/211/140
-f 164/211/141 169/212/141 168/210/141
-f 170/213/142 163/214/142 161/215/142
-f 161/215/142 171/216/142 170/213/142
-f 171/216/143 161/215/143 159/217/143
-f 159/217/144 172/218/144 171/216/144
-f 172/218/145 159/217/145 156/219/145
-f 156/219/146 173/220/146 172/218/146
-f 173/220/147 156/219/147 155/221/147
-f 155/221/148 174/222/148 173/220/148
-f 158/196/149 175/223/149 176/224/149
-f 176/224/150 155/193/150 158/196/150
-f 155/221/151 176/225/151 177/226/151
-f 177/226/151 174/222/151 155/221/151
-f 178/227/152 179/228/152 180/229/152
-f 180/229/153 181/230/153 178/227/153
-f 181/230/154 180/229/154 182/231/154
-f 182/231/155 183/232/155 181/230/155
-f 183/232/156 182/231/156 184/233/156
-f 184/233/157 185/234/157 183/232/157
-f 185/234/158 184/233/158 164/202/158
-f 164/202/158 163/201/158 185/234/158
-f 186/235/159 187/236/159 180/237/159
-f 180/237/160 179/238/160 186/235/160
-f 187/236/161 188/239/161 182/240/161
-f 182/240/162 180/237/162 187/236/162
-f 188/239/163 189/241/163 184/242/163
-f 184/242/164 182/240/164 188/239/164
-f 189/241/165 169/212/165 164/211/165
-f 164/211/166 184/242/166 189/241/166
-f 170/213/167 190/243/167 185/244/167
-f 185/244/167 163/214/167 170/213/167
-f 190/243/168 191/245/168 183/246/168
-f 183/246/169 185/244/169 190/243/169
-f 191/245/170 192/247/170 181/248/170
-f 181/248/171 183/246/171 191/245/171
-f 192/247/172 193/249/172 178/250/172
-f 178/250/173 181/248/173 192/247/173
-f 179/228/174 178/227/174 194/251/174
-f 194/251/175 195/252/175 179/228/175
-f 178/250/176 193/249/176 196/253/176
-f 196/253/177 194/254/177 178/250/177
-f 197/255/61 198/256/61 199/257/61
-f 199/257/61 200/258/61 197/255/61
-f 201/259/178 202/260/178 203/261/178
-f 203/261/178 204/262/178 201/259/178
-f 204/262/179 203/261/179 198/263/179
-f 198/263/179 197/264/179 204/262/179
-f 203/265/180 205/266/180 199/267/180
-f 199/267/180 198/268/180 203/265/180
-f 206/260/181 207/259/181 208/262/181
-f 208/262/181 205/261/181 206/260/181
-f 205/261/182 208/262/182 200/264/182
-f 200/264/182 199/263/182 205/261/182
-f 207/269/183 201/270/183 204/265/183
-f 204/265/184 208/266/184 207/269/184
-f 208/266/185 204/265/185 197/268/185
-f 197/268/185 200/267/185 208/266/185
-f 209/258/61 210/255/61 211/256/61
-f 211/256/61 212/257/61 209/258/61
-f 213/259/186 214/262/186 215/261/186
-f 215/261/186 216/260/186 213/259/186
-f 214/262/187 209/264/187 212/263/187
-f 212/263/187 215/261/187 214/262/187
-f 215/265/180 212/268/180 211/267/180
-f 211/267/180 217/266/180 215/265/180
-f 218/260/188 217/261/188 219/262/188
-f 219/262/188 220/259/188 218/260/188
-f 217/261/189 211/263/189 210/264/189
-f 210/264/189 219/262/189 217/261/189
-f 220/269/184 219/266/184 214/265/184
-f 214/265/183 213/270/183 220/269/183
-f 219/266/185 210/267/185 209/268/185
-f 209/268/185 214/265/185 219/266/185
-f 221/1/83 222/4/83 223/3/83
-f 223/3/190 224/2/190 221/1/190
-f 223/3/191 225/7/191 226/6/191
-f 223/3/192 226/6/192 227/5/192
-f 223/3/193 227/5/193 224/2/193
-f 228/8/194 229/11/194 230/10/194
-f 230/10/194 231/9/194 228/8/194
-f 225/7/195 232/13/195 233/12/195
-f 233/12/196 226/6/196 225/7/196
-f 234/271/10 15/15/10 14/14/10
-f 14/14/9 227/272/9 234/271/9
-f 232/13/197 235/19/197 236/18/197
-f 236/18/198 233/12/198 232/13/198
-f 237/273/14 19/20/14 15/15/14
-f 15/15/13 234/271/13 237/273/13
-f 235/19/199 238/23/199 239/22/199
-f 239/22/200 236/18/200 235/19/200
-f 240/274/18 23/24/18 19/20/18
-f 19/20/17 237/273/17 240/274/17
-f 27/28/201 241/275/201 242/276/201
-f 242/276/19 28/29/19 27/28/19
-f 28/29/20 242/276/20 243/277/20
-f 243/277/202 30/31/202 28/29/202
-f 32/33/22 244/278/22 241/275/22
-f 241/275/21 27/28/21 32/33/21
-f 34/35/203 245/279/203 244/278/203
-f 244/278/203 32/33/203 34/35/203
-f 36/37/204 246/280/204 245/279/204
-f 245/279/204 34/35/204 36/37/204
-f 238/23/205 247/39/205 248/38/205
-f 248/38/205 239/22/205 238/23/205
-f 249/281/206 39/40/206 23/24/206
-f 23/24/206 240/274/206 249/281/206
-f 42/43/27 250/282/27 246/280/27
-f 246/280/27 36/37/27 42/43/27
-f 251/44/83 252/47/83 253/46/83
-f 253/46/83 254/45/83 251/44/83
-f 254/45/207 253/46/207 255/50/207
-f 254/45/208 255/50/208 256/49/208
-f 254/45/209 256/49/209 257/48/209
-f 258/51/121 259/54/121 260/53/121
-f 260/53/121 261/52/121 258/51/121
-f 257/48/210 256/49/210 262/56/210
-f 262/56/211 263/55/211 257/48/211
-f 255/283/36 58/60/36 57/59/36
-f 57/59/212 264/284/212 255/283/212
-f 263/55/213 262/56/213 265/62/213
-f 265/62/214 266/61/214 263/55/214
-f 264/284/215 57/59/215 62/64/215
-f 62/64/215 267/285/215 264/284/215
-f 266/61/216 265/62/216 268/66/216
-f 268/66/217 269/65/217 266/61/217
-f 267/285/218 62/64/218 66/68/218
-f 66/68/218 270/286/218 267/285/218
-f 271/287/44 272/288/44 67/69/44
-f 67/69/44 70/72/44 271/287/44
-f 273/289/45 271/287/45 70/72/45
-f 70/72/45 72/74/45 273/289/45
-f 272/288/122 274/290/122 73/75/122
-f 73/75/122 67/69/122 272/288/122
-f 274/290/48 275/291/48 75/77/48
-f 75/77/48 73/75/48 274/290/48
-f 275/291/50 276/292/50 77/79/50
-f 77/79/50 75/77/50 275/291/50
-f 269/65/219 268/66/219 248/38/219
-f 248/38/219 247/39/219 269/65/219
-f 270/286/220 66/68/220 39/40/220
-f 39/40/220 249/281/220 270/286/220
-f 276/292/53 250/282/53 42/43/53
-f 42/43/53 77/79/53 276/292/53
-f 243/277/54 277/293/54 79/81/54
-f 79/81/221 30/31/221 243/277/221
-f 278/85/222 279/84/222 280/83/222
-f 280/83/222 281/86/222 278/85/222
-f 281/86/223 280/83/223 228/8/223
-f 228/8/223 231/9/223 281/86/223
-f 282/88/224 283/87/224 279/84/224
-f 279/84/224 278/85/224 282/88/224
-f 284/90/225 285/89/225 283/87/225
-f 283/87/225 282/88/225 284/90/225
-f 286/92/124 287/91/124 285/89/124
-f 285/89/226 284/90/226 286/92/226
-f 288/94/61 289/93/61 287/91/61
-f 287/91/61 286/92/61 288/94/61
-f 290/294/121 273/289/121 72/74/121
-f 72/74/227 94/96/227 290/294/227
-f 291/99/44 292/98/44 293/97/44
-f 293/97/44 294/100/44 291/99/44
-f 260/53/45 259/54/45 292/98/45
-f 292/98/45 291/99/45 260/53/45
-f 294/100/122 293/97/122 295/101/122
-f 295/101/122 296/102/122 294/100/122
-f 296/102/123 295/101/123 297/103/123
-f 297/103/123 298/104/123 296/102/123
-f 298/104/66 297/103/66 299/105/66
-f 299/105/66 300/106/66 298/104/66
-f 300/106/66 299/105/66 289/93/66
-f 289/93/66 288/94/66 300/106/66
-f 301/131/228 302/132/228 303/130/228
-f 303/130/228 304/129/228 301/131/228
-f 304/129/229 303/130/229 305/128/229
-f 305/128/229 306/127/229 304/129/229
-f 306/127/230 305/128/230 307/126/230
-f 307/126/230 308/125/230 306/127/230
-f 308/125/231 307/126/231 309/124/231
-f 309/124/232 310/123/232 308/125/232
-f 310/123/233 309/124/233 311/122/233
-f 311/122/89 312/121/89 310/123/89
-f 312/121/91 311/122/91 313/120/91
-f 313/120/91 314/119/91 312/121/91
-f 314/119/92 313/120/92 315/118/92
-f 315/118/92 316/117/92 314/119/92
-f 316/117/94 315/118/94 317/116/94
-f 317/116/234 318/115/234 316/117/234
-f 318/115/235 317/116/235 319/114/235
-f 319/114/236 320/113/236 318/115/236
-f 320/113/237 319/114/237 321/112/237
-f 321/112/237 322/111/237 320/113/237
-f 322/111/238 321/112/238 323/109/238
-f 323/109/238 324/108/238 322/111/238
-f 324/108/239 323/109/239 325/110/239
-f 325/110/239 326/107/239 324/108/239
-f 326/107/239 325/110/239 327/140/239
-f 327/140/239 328/139/239 326/107/239
-f 329/135/103 330/138/103 331/137/103
-f 331/137/82 332/136/82 329/135/82
-f 290/139/29 261/140/29 260/110/29
-f 260/110/29 273/107/29 290/139/29
-f 273/107/29 260/110/29 291/109/29
-f 291/109/29 271/108/29 273/107/29
-f 271/108/240 291/109/240 294/112/240
-f 294/112/240 272/111/240 271/108/240
-f 272/111/241 294/112/241 296/114/241
-f 296/114/241 274/113/241 272/111/241
-f 274/113/242 296/114/242 298/116/242
-f 298/116/243 275/115/243 274/113/243
-f 275/115/244 298/116/244 300/118/244
-f 300/118/71 276/117/71 275/115/71
-f 276/117/73 300/118/73 288/120/73
-f 288/120/73 250/119/73 276/117/73
-f 250/119/74 288/120/74 286/122/74
-f 286/122/74 246/121/74 250/119/74
-f 246/121/76 286/122/76 284/124/76
-f 284/124/245 245/123/245 246/121/245
-f 245/123/246 284/124/246 282/126/246
-f 282/126/247 244/125/247 245/123/247
-f 244/125/248 282/126/248 278/128/248
-f 278/128/248 241/127/248 244/125/248
-f 241/127/249 278/128/249 281/130/249
-f 281/130/249 242/129/249 241/127/249
-f 242/129/29 281/130/29 231/132/29
-f 231/132/29 243/131/29 242/129/29
-f 243/131/29 231/132/29 230/134/29
-f 230/134/29 277/133/29 243/131/29
-f 333/136/102 334/137/102 335/138/102
-f 335/138/102 336/135/102 333/136/102
-f 337/133/228 338/134/228 302/132/228
-f 302/132/228 301/131/228 337/133/228
-f 290/141/29 332/136/29 331/137/29
-f 331/137/29 261/142/29 290/141/29
-f 339/144/100 340/145/100 341/146/100
-f 341/146/100 342/143/100 339/144/100
-f 327/147/239 343/150/239 344/149/239
-f 344/149/239 328/148/239 327/147/239
-f 337/148/228 345/149/228 346/150/228
-f 346/150/228 338/147/228 337/148/228
-f 347/146/250 348/143/250 349/144/250
-f 349/144/250 350/145/250 347/146/250
-f 230/142/251 334/137/251 333/136/251
-f 333/136/251 277/141/251 230/142/251
-f 261/151/99 339/154/99 342/153/99
-f 342/153/99 258/152/99 261/151/99
-f 258/155/83 342/158/83 341/157/83
-f 341/157/83 330/156/83 258/155/83
-f 330/156/82 341/157/82 340/160/82
-f 340/160/103 331/159/103 330/156/103
-f 331/159/29 340/160/29 339/154/29
-f 339/154/29 261/151/29 331/159/29
-f 229/152/82 347/153/82 350/154/82
-f 350/154/82 230/151/82 229/152/82
-f 230/151/252 350/154/252 349/160/252
-f 349/160/252 334/159/252 230/151/252
-f 334/159/102 349/160/102 348/157/102
-f 348/157/102 335/156/102 334/159/102
-f 335/156/253 348/157/253 347/158/253
-f 347/158/253 229/155/253 335/156/253
-f 222/173/254 301/131/254 304/129/254
-f 304/129/254 223/172/254 222/173/254
-f 223/172/107 304/129/107 306/127/107
-f 306/127/107 225/171/107 223/172/107
-f 225/171/110 306/127/110 308/125/110
-f 308/125/110 232/170/110 225/171/110
-f 232/170/255 308/125/255 310/123/255
-f 310/123/255 235/169/255 232/170/255
-f 235/169/256 310/123/256 312/121/256
-f 312/121/256 238/168/256 235/169/256
-f 238/168/257 312/121/257 314/119/257
-f 314/119/257 247/167/257 238/168/257
-f 247/167/258 314/119/258 316/117/258
-f 316/117/258 269/166/258 247/167/258
-f 269/166/259 316/117/259 318/115/259
-f 318/115/259 266/165/259 269/166/259
-f 266/165/260 318/115/260 320/113/260
-f 320/113/260 263/164/260 266/165/260
-f 263/164/261 320/113/261 322/111/261
-f 322/111/261 257/163/261 263/164/261
-f 257/163/262 322/111/262 324/108/262
-f 324/108/262 254/162/262 257/163/262
-f 254/162/263 324/108/263 326/107/263
-f 326/107/263 251/161/263 254/162/263
-f 251/161/264 326/107/264 328/139/264
-f 328/139/264 252/192/264 251/161/264
-f 329/135/82 344/149/82 343/150/82
-f 343/150/82 330/138/82 329/135/82
-f 330/175/265 343/150/265 327/147/265
-f 327/147/265 258/176/265 330/175/265
-f 258/51/33 327/178/33 325/177/33
-f 325/177/33 259/54/33 258/51/33
-f 259/54/46 325/177/46 323/179/46
-f 323/179/46 292/98/46 259/54/46
-f 292/98/43 323/179/43 321/180/43
-f 321/180/43 293/97/43 292/98/43
-f 293/97/47 321/180/47 319/181/47
-f 319/181/47 295/101/47 293/97/47
-f 295/101/64 319/181/64 317/182/64
-f 317/182/123 297/103/123 295/101/123
-f 297/103/66 317/182/66 315/183/66
-f 315/183/66 299/105/66 297/103/66
-f 299/105/66 315/183/66 313/184/66
-f 313/184/65 289/93/65 299/105/65
-f 289/93/62 313/184/62 311/185/62
-f 311/185/62 287/91/62 289/93/62
-f 287/91/59 311/185/59 309/186/59
-f 309/186/124 285/89/124 287/91/124
-f 285/89/125 309/186/125 307/187/125
-f 307/187/266 283/87/266 285/89/266
-f 283/87/21 307/187/21 305/188/21
-f 305/188/22 279/84/22 283/87/22
-f 279/84/19 305/188/19 303/189/19
-f 303/189/201 280/83/201 279/84/201
-f 280/83/202 303/189/202 302/190/202
-f 302/190/202 228/8/202 280/83/202
-f 228/8/221 302/190/221 338/191/221
-f 338/191/221 229/11/221 228/8/221
-f 229/176/265 338/147/265 346/150/265
-f 346/150/265 335/175/265 229/176/265
-f 335/138/102 346/150/102 345/149/102
-f 345/149/102 336/135/102 335/138/102
-f 221/174/267 337/133/267 301/131/267
-f 301/131/267 222/173/267 221/174/267
-f 351/193/268 352/196/268 353/195/268
-f 353/195/269 354/194/269 351/193/269
-f 354/194/270 353/195/270 355/198/270
-f 355/198/271 356/197/271 354/194/271
-f 356/197/272 355/198/272 357/200/272
-f 357/200/273 358/199/273 356/197/273
-f 358/199/274 357/200/274 359/202/274
-f 359/202/274 360/201/274 358/199/274
-f 361/203/275 362/206/275 353/205/275
-f 353/205/276 352/204/276 361/203/276
-f 362/206/277 363/208/277 355/207/277
-f 355/207/278 353/205/278 362/206/278
-f 363/208/279 364/210/279 357/209/279
-f 357/209/280 355/207/280 363/208/280
-f 364/210/281 365/212/281 359/211/281
-f 359/211/282 357/209/282 364/210/282
-f 366/213/283 367/216/283 358/215/283
-f 358/215/283 360/214/283 366/213/283
-f 367/216/284 368/218/284 356/217/284
-f 356/217/285 358/215/285 367/216/285
-f 368/218/286 369/220/286 354/219/286
-f 354/219/287 356/217/287 368/218/287
-f 369/220/288 370/222/288 351/221/288
-f 351/221/289 354/219/289 369/220/289
-f 352/196/290 351/193/290 371/224/290
-f 371/224/291 372/223/291 352/196/291
-f 351/221/292 370/222/292 373/226/292
-f 373/226/292 371/225/292 351/221/292
-f 374/227/293 375/230/293 376/229/293
-f 376/229/294 377/228/294 374/227/294
-f 375/230/295 378/232/295 379/231/295
-f 379/231/296 376/229/296 375/230/296
-f 378/232/297 380/234/297 381/233/297
-f 381/233/298 379/231/298 378/232/298
-f 380/234/299 360/201/299 359/202/299
-f 359/202/299 381/233/299 380/234/299
-f 382/235/300 377/238/300 376/237/300
-f 376/237/301 383/236/301 382/235/301
-f 383/236/302 376/237/302 379/240/302
-f 379/240/303 384/239/303 383/236/303
-f 384/239/304 379/240/304 381/242/304
-f 381/242/305 385/241/305 384/239/305
-f 385/241/306 381/242/306 359/211/306
-f 359/211/307 365/212/307 385/241/307
-f 366/213/308 360/214/308 380/244/308
-f 380/244/308 386/243/308 366/213/308
-f 386/243/309 380/244/309 378/246/309
-f 378/246/310 387/245/310 386/243/310
-f 387/245/311 378/246/311 375/248/311
-f 375/248/312 388/247/312 387/245/312
-f 388/247/313 375/248/313 374/250/313
-f 374/250/314 389/249/314 388/247/314
-f 377/228/315 390/252/315 391/251/315
-f 391/251/316 374/227/316 377/228/316
-f 374/250/317 391/254/317 392/253/317
-f 392/253/318 389/249/318 374/250/318
-f 393/256/61 394/257/61 395/258/61
-f 395/258/61 396/255/61 393/256/61
-f 397/259/178 398/262/178 399/261/178
-f 399/261/178 400/260/178 397/259/178
-f 398/262/179 393/264/179 396/263/179
-f 396/263/179 399/261/179 398/262/179
-f 399/265/319 396/268/319 395/267/319
-f 395/267/319 401/266/319 399/265/319
-f 402/260/181 401/261/181 403/262/181
-f 403/262/181 404/259/181 402/260/181
-f 401/261/182 395/263/182 394/264/182
-f 394/264/182 403/262/182 401/261/182
-f 404/269/320 403/266/320 398/265/320
-f 398/265/321 397/270/321 404/269/321
-f 403/266/322 394/267/322 393/268/322
-f 393/268/322 398/265/322 403/266/322
-f 405/257/61 406/258/61 407/255/61
-f 407/255/61 408/256/61 405/257/61
-f 409/259/186 410/260/186 411/261/186
-f 411/261/186 412/262/186 409/259/186
-f 412/262/187 411/261/187 406/263/187
-f 406/263/187 405/264/187 412/262/187
-f 411/265/319 413/266/319 407/267/319
-f 407/267/319 406/268/319 411/265/319
-f 414/260/188 415/259/188 416/262/188
-f 416/262/188 413/261/188 414/260/188
-f 413/261/189 416/262/189 408/264/189
-f 408/264/189 407/263/189 413/261/189
-f 415/269/321 409/270/321 412/265/321
-f 412/265/320 416/266/320 415/269/320
-f 416/266/322 412/265/322 405/268/322
-f 405/268/322 408/267/322 416/266/322
-# 676 faces
-
diff --git a/examples/web/models/resources/models/bridge_diffuse.png b/examples/web/models/resources/models/bridge_diffuse.png
deleted file mode 100644
index 45a86b5..0000000
--- a/examples/web/models/resources/models/bridge_diffuse.png
+++ /dev/null
Binary files differ
diff --git a/examples/web/models/resources/models/castle.obj b/examples/web/models/resources/models/castle.obj
deleted file mode 100644
index a4ec921..0000000
--- a/examples/web/models/resources/models/castle.obj
+++ /dev/null
@@ -1,12919 +0,0 @@
-# (c) 2018 Medieval Assets Pack by Alberto Cano
-# Licensed as Creative Commons Attribution-NonCommercial 4.0
-
-#
-# object castle
-#
-
-v -17.17 7.76 -10.68
-v -16.55 7.76 -12.98
-v -16.55 0.00 -12.98
-v -17.17 0.00 -10.68
-v -14.87 7.76 -14.66
-v -14.87 0.00 -14.66
-v -12.57 7.76 -15.28
-v -12.57 0.00 -15.28
-v -10.27 7.76 -14.66
-v -10.27 0.00 -14.66
-v -8.58 7.76 -12.98
-v -8.58 0.00 -12.98
-v -7.97 7.76 -10.68
-v -7.97 0.00 -10.68
-v -8.58 7.76 -8.38
-v -8.58 0.00 -8.38
-v -10.27 7.76 -6.69
-v -10.27 0.00 -6.69
-v -12.57 7.76 -6.08
-v -12.57 0.00 -6.08
-v -14.87 7.76 -6.69
-v -14.87 0.00 -6.69
-v -16.55 7.76 -8.38
-v -16.55 0.00 -8.38
-v -16.78 7.76 -13.11
-v -17.43 7.76 -10.68
-v -17.43 8.57 -10.68
-v -16.78 8.57 -13.11
-v -15.00 7.76 -14.89
-v -15.00 8.57 -14.89
-v -12.57 7.76 -15.54
-v -12.57 8.57 -15.54
-v -10.13 7.76 -14.89
-v -10.13 8.57 -14.89
-v -8.35 7.76 -13.11
-v -8.35 8.57 -13.11
-v -7.70 7.76 -10.68
-v -7.70 8.57 -10.68
-v -8.35 7.76 -8.24
-v -8.35 8.57 -8.24
-v -10.13 7.76 -6.46
-v -10.13 8.57 -6.46
-v -12.57 7.76 -5.81
-v -12.57 8.57 -5.81
-v -15.00 7.76 -6.46
-v -15.00 8.57 -6.46
-v -16.78 7.76 -8.24
-v -16.78 8.57 -8.24
-v -17.17 8.57 -10.68
-v -16.55 8.57 -12.98
-v -14.87 8.57 -14.66
-v -12.57 8.57 -15.28
-v -10.27 8.57 -14.66
-v -8.58 8.57 -12.98
-v -7.97 8.57 -10.68
-v -8.58 8.57 -8.38
-v -10.27 8.57 -6.69
-v -12.57 8.57 -6.08
-v -14.87 8.57 -6.69
-v -16.55 8.57 -8.38
-v -17.17 16.89 -10.68
-v -16.55 16.89 -12.98
-v -14.87 16.89 -14.66
-v -12.57 16.89 -15.28
-v -10.27 16.89 -14.66
-v -8.58 16.89 -12.98
-v -7.97 16.89 -10.68
-v -8.58 16.89 -8.38
-v -10.27 16.89 -6.69
-v -12.57 16.89 -6.08
-v -14.87 16.89 -6.69
-v -16.55 16.89 -8.38
-v -17.13 21.30 -13.31
-v -17.83 21.30 -10.68
-v -18.23 21.30 -10.68
-v -17.47 21.30 -13.51
-v -15.20 21.30 -15.24
-v -15.40 21.30 -15.58
-v -12.57 21.30 -15.94
-v -12.57 21.30 -16.34
-v -9.93 21.30 -15.24
-v -9.73 21.30 -15.58
-v -8.01 21.30 -13.31
-v -7.66 21.30 -13.51
-v -7.30 21.30 -10.68
-v -6.90 21.30 -10.68
-v -8.01 21.30 -8.04
-v -7.66 21.30 -7.84
-v -9.93 21.30 -6.12
-v -9.73 21.30 -5.77
-v -12.57 21.30 -5.41
-v -12.57 21.30 -5.01
-v -15.20 21.30 -6.12
-v -15.40 21.30 -5.77
-v -17.13 21.30 -8.04
-v -17.47 21.30 -7.84
-v -16.72 24.76 -10.68
-v -16.17 24.76 -12.76
-v -14.64 24.76 -14.28
-v -12.57 24.76 -14.83
-v -10.49 24.76 -14.28
-v -8.97 24.76 -12.76
-v -8.41 24.76 -10.68
-v -8.97 24.76 -8.60
-v -10.49 24.76 -7.08
-v -12.57 24.76 -6.52
-v -14.64 24.76 -7.08
-v -16.17 24.76 -8.60
-v -16.69 28.50 -10.68
-v -16.13 28.50 -12.74
-v -14.63 28.50 -14.24
-v -12.57 28.50 -14.80
-v -10.51 28.50 -14.24
-v -9.00 28.50 -12.74
-v -8.45 28.50 -10.68
-v -9.00 28.50 -8.62
-v -10.51 28.50 -7.11
-v -12.57 28.50 -6.56
-v -14.63 28.50 -7.11
-v -16.13 28.50 -8.62
-v -17.83 17.36 -10.68
-v -17.13 17.36 -13.31
-v -15.20 17.36 -15.24
-v -12.57 17.36 -15.94
-v -9.93 17.36 -15.24
-v -8.01 17.36 -13.31
-v -7.30 17.36 -10.68
-v -8.01 17.36 -8.04
-v -9.93 17.36 -6.12
-v -12.57 17.36 -5.41
-v -15.20 17.36 -6.12
-v -17.13 17.36 -8.04
-v -17.91 20.21 -10.37
-v -17.91 20.52 -10.80
-v -17.91 19.21 -10.80
-v -17.91 19.23 -10.37
-v -17.81 19.26 -10.03
-v -17.91 19.26 -10.04
-v -17.91 19.12 -10.04
-v -17.81 19.12 -10.03
-v -17.89 20.75 -10.80
-v -17.98 20.75 -10.81
-v -17.94 20.29 -10.15
-v -17.84 20.29 -10.15
-v -17.68 19.12 -11.55
-v -17.78 19.12 -11.56
-v -17.78 19.26 -11.56
-v -17.68 19.26 -11.55
-v -17.89 19.07 -10.80
-v -17.98 19.07 -10.81
-v -17.82 19.12 -11.45
-v -17.73 19.12 -11.45
-v -18.05 19.12 -10.16
-v -18.05 19.26 -10.16
-v -18.08 19.23 -10.39
-v -17.98 20.52 -10.81
-v -17.98 20.21 -10.38
-v -17.93 19.26 -11.46
-v -17.93 19.12 -11.46
-v -18.01 19.24 -11.24
-v -18.09 19.07 -10.82
-v -18.09 19.21 -10.82
-v -17.83 20.21 -11.23
-v -17.83 19.24 -11.23
-v -17.73 20.29 -11.45
-v -17.82 20.29 -11.45
-v -17.84 19.12 -10.15
-v -17.94 19.12 -10.15
-v -17.90 20.21 -11.23
-v -17.98 19.23 -10.38
-v -17.90 19.24 -11.23
-v -17.98 19.21 -10.81
-v -17.82 19.26 -11.45
-v -17.73 19.26 -11.45
-v -17.94 19.26 -10.15
-v -17.84 19.26 -10.15
-v -18.02 19.26 -10.05
-v -18.02 19.12 -10.05
-v -17.88 19.12 -11.57
-v -17.88 19.26 -11.57
-v -12.87 20.21 -16.02
-v -12.44 20.52 -16.02
-v -12.44 19.21 -16.02
-v -12.87 19.23 -16.02
-v -13.21 19.26 -15.92
-v -13.20 19.26 -16.02
-v -13.20 19.12 -16.02
-v -13.21 19.12 -15.92
-v -12.44 20.75 -16.00
-v -12.43 20.75 -16.10
-v -13.09 20.29 -16.05
-v -13.10 20.29 -15.95
-v -11.69 19.12 -15.79
-v -11.68 19.12 -15.89
-v -11.68 19.26 -15.89
-v -11.69 19.26 -15.79
-v -12.44 19.07 -16.00
-v -12.43 19.07 -16.10
-v -11.79 19.12 -15.94
-v -11.80 19.12 -15.84
-v -13.08 19.12 -16.16
-v -13.08 19.26 -16.16
-v -12.85 19.23 -16.20
-v -12.43 20.52 -16.10
-v -12.86 20.21 -16.09
-v -11.78 19.26 -16.04
-v -11.78 19.12 -16.04
-v -12.00 19.24 -16.12
-v -12.42 19.07 -16.20
-v -12.42 19.21 -16.20
-v -12.01 20.21 -15.94
-v -12.01 19.24 -15.94
-v -11.80 20.29 -15.84
-v -11.79 20.29 -15.94
-v -13.10 19.12 -15.95
-v -13.09 19.12 -16.05
-v -12.01 20.21 -16.01
-v -12.86 19.23 -16.09
-v -12.01 19.24 -16.01
-v -12.43 19.21 -16.10
-v -11.79 19.26 -15.94
-v -11.80 19.26 -15.84
-v -13.09 19.26 -16.05
-v -13.10 19.26 -15.95
-v -13.19 19.26 -16.13
-v -13.19 19.12 -16.13
-v -11.67 19.12 -16.00
-v -11.67 19.26 -16.00
-v -9.24 23.34 -12.52
-v -9.78 23.34 -13.29
-v -9.10 24.92 -13.76
-v -8.56 24.92 -12.99
-v -8.63 28.41 -12.92
-v -9.53 28.41 -12.29
-v -9.18 28.41 -13.70
-v -10.08 28.41 -13.07
-v -12.87 27.21 -14.81
-v -12.44 27.52 -14.82
-v -12.44 26.21 -14.82
-v -12.87 26.24 -14.81
-v -13.21 26.26 -14.72
-v -13.20 26.26 -14.82
-v -13.20 26.12 -14.82
-v -13.21 26.12 -14.72
-v -12.44 27.75 -14.80
-v -12.43 27.75 -14.89
-v -13.09 27.30 -14.85
-v -13.10 27.30 -14.75
-v -11.69 26.12 -14.59
-v -11.68 26.12 -14.69
-v -11.68 26.26 -14.69
-v -11.69 26.26 -14.59
-v -12.44 26.07 -14.80
-v -12.43 26.07 -14.89
-v -11.79 26.12 -14.73
-v -11.80 26.12 -14.64
-v -13.08 26.12 -14.96
-v -13.08 26.26 -14.96
-v -12.85 26.24 -14.99
-v -12.43 27.52 -14.89
-v -12.86 27.21 -14.89
-v -11.78 26.26 -14.84
-v -11.78 26.12 -14.84
-v -12.00 26.25 -14.92
-v -12.42 26.07 -15.00
-v -12.42 26.21 -15.00
-v -12.01 27.21 -14.74
-v -12.01 26.25 -14.74
-v -11.80 27.30 -14.64
-v -11.79 27.30 -14.73
-v -13.10 26.12 -14.75
-v -13.09 26.12 -14.85
-v -12.01 27.21 -14.81
-v -12.86 26.24 -14.89
-v -12.01 26.25 -14.81
-v -12.43 26.21 -14.89
-v -11.79 26.26 -14.73
-v -11.80 26.26 -14.64
-v -13.09 26.26 -14.85
-v -13.10 26.26 -14.75
-v -13.19 26.26 -14.93
-v -13.19 26.12 -14.93
-v -11.67 26.12 -14.79
-v -11.67 26.26 -14.79
-v -14.41 23.34 -14.01
-v -15.18 23.34 -13.46
-v -15.65 24.92 -14.14
-v -14.88 24.92 -14.68
-v -14.81 28.41 -14.61
-v -14.18 28.41 -13.71
-v -15.59 28.41 -14.07
-v -14.96 28.41 -13.17
-v -8.43 27.21 -10.98
-v -8.42 27.52 -10.55
-v -8.42 26.21 -10.55
-v -8.43 26.24 -10.98
-v -8.52 26.26 -11.32
-v -8.42 26.26 -11.31
-v -8.42 26.12 -11.31
-v -8.52 26.12 -11.32
-v -8.45 27.75 -10.55
-v -8.35 27.75 -10.54
-v -8.39 27.30 -11.20
-v -8.49 27.30 -11.21
-v -8.65 26.12 -9.80
-v -8.56 26.12 -9.79
-v -8.56 26.26 -9.79
-v -8.65 26.26 -9.80
-v -8.45 26.07 -10.55
-v -8.35 26.07 -10.54
-v -8.51 26.12 -9.90
-v -8.61 26.12 -9.91
-v -8.29 26.12 -11.19
-v -8.29 26.26 -11.19
-v -8.25 26.24 -10.96
-v -8.35 27.52 -10.54
-v -8.35 27.21 -10.97
-v -8.40 26.26 -9.89
-v -8.40 26.12 -9.89
-v -8.32 26.25 -10.11
-v -8.24 26.07 -10.53
-v -8.24 26.21 -10.53
-v -8.50 27.21 -10.13
-v -8.50 26.25 -10.13
-v -8.61 27.30 -9.91
-v -8.51 27.30 -9.90
-v -8.49 26.12 -11.21
-v -8.39 26.12 -11.20
-v -8.43 27.21 -10.12
-v -8.35 26.24 -10.97
-v -8.43 26.25 -10.12
-v -8.35 26.21 -10.54
-v -8.51 26.26 -9.90
-v -8.61 26.26 -9.91
-v -8.39 26.26 -11.20
-v -8.49 26.26 -11.21
-v -8.32 26.26 -11.30
-v -8.32 26.12 -11.30
-v -8.45 26.12 -9.78
-v -8.45 26.26 -9.78
-v -13.04 12.70 -6.81
-v -12.09 12.70 -6.81
-v -12.09 14.28 -5.99
-v -13.04 14.28 -5.99
-v -13.04 17.34 -5.64
-v -13.04 17.34 -6.74
-v -12.09 17.34 -5.64
-v -12.09 17.34 -6.74
-v -8.98 12.70 -12.20
-v -9.46 12.70 -13.02
-v -8.74 14.28 -13.43
-v -8.27 14.28 -12.61
-v -7.97 17.34 -12.79
-v -8.92 17.34 -12.24
-v -8.44 17.34 -13.61
-v -9.39 17.34 -13.06
-v -12.09 12.70 -14.54
-v -13.04 12.70 -14.54
-v -13.04 14.28 -15.36
-v -12.09 14.28 -15.36
-v -12.09 17.34 -15.71
-v -12.09 17.34 -14.62
-v -13.04 17.34 -15.71
-v -13.04 17.34 -14.62
-v -10.73 23.34 -7.35
-v -9.95 23.34 -7.89
-v -9.48 24.92 -7.22
-v -10.25 24.92 -6.67
-v -10.32 28.41 -6.74
-v -10.95 28.41 -7.65
-v -9.55 28.41 -7.29
-v -10.18 28.41 -8.19
-v -9.46 12.70 -8.34
-v -8.98 12.70 -9.15
-v -8.27 14.28 -8.74
-v -8.74 14.28 -7.92
-v -8.44 17.34 -7.75
-v -9.39 17.34 -8.30
-v -7.97 17.34 -8.57
-v -8.92 17.34 -9.12
-v -7.23 20.21 -10.98
-v -7.22 20.52 -10.55
-v -7.22 19.21 -10.55
-v -7.23 19.23 -10.98
-v -7.32 19.26 -11.32
-v -7.22 19.26 -11.31
-v -7.22 19.12 -11.31
-v -7.32 19.12 -11.32
-v -7.24 20.75 -10.55
-v -7.15 20.75 -10.54
-v -7.19 20.29 -11.20
-v -7.29 20.29 -11.21
-v -7.45 19.12 -9.80
-v -7.35 19.12 -9.79
-v -7.35 19.26 -9.79
-v -7.45 19.26 -9.80
-v -7.24 19.07 -10.55
-v -7.15 19.07 -10.54
-v -7.31 19.12 -9.90
-v -7.41 19.12 -9.91
-v -7.09 19.12 -11.19
-v -7.09 19.26 -11.19
-v -7.05 19.23 -10.96
-v -7.15 20.52 -10.54
-v -7.15 20.21 -10.97
-v -7.20 19.26 -9.89
-v -7.20 19.12 -9.89
-v -7.12 19.24 -10.11
-v -7.04 19.07 -10.53
-v -7.04 19.21 -10.53
-v -7.30 20.21 -10.13
-v -7.30 19.24 -10.13
-v -7.41 20.29 -9.91
-v -7.31 20.29 -9.90
-v -7.29 19.12 -11.21
-v -7.19 19.12 -11.20
-v -7.23 20.21 -10.12
-v -7.15 19.23 -10.97
-v -7.23 19.24 -10.12
-v -7.15 19.21 -10.54
-v -7.31 19.26 -9.90
-v -7.41 19.26 -9.91
-v -7.19 19.26 -11.20
-v -7.29 19.26 -11.21
-v -7.11 19.26 -11.30
-v -7.11 19.12 -11.30
-v -7.25 19.12 -9.78
-v -7.25 19.26 -9.78
-v -12.26 27.21 -6.54
-v -12.69 27.52 -6.53
-v -12.69 26.21 -6.53
-v -12.26 26.24 -6.54
-v -11.92 26.26 -6.63
-v -11.93 26.26 -6.53
-v -11.93 26.12 -6.53
-v -11.92 26.12 -6.63
-v -12.69 27.75 -6.56
-v -12.70 27.75 -6.46
-v -12.04 27.30 -6.51
-v -12.03 27.30 -6.60
-v -13.44 26.12 -6.76
-v -13.45 26.12 -6.67
-v -13.45 26.26 -6.67
-v -13.44 26.26 -6.76
-v -12.69 26.07 -6.56
-v -12.70 26.07 -6.46
-v -13.34 26.12 -6.62
-v -13.34 26.12 -6.72
-v -12.05 26.12 -6.40
-v -12.05 26.26 -6.40
-v -12.28 26.24 -6.36
-v -12.70 27.52 -6.46
-v -12.27 27.21 -6.47
-v -13.35 26.26 -6.51
-v -13.35 26.12 -6.51
-v -13.13 26.25 -6.43
-v -12.71 26.07 -6.35
-v -12.71 26.21 -6.35
-v -13.12 27.21 -6.61
-v -13.12 26.25 -6.61
-v -13.34 27.30 -6.72
-v -13.34 27.30 -6.62
-v -12.03 26.12 -6.60
-v -12.04 26.12 -6.51
-v -13.12 27.21 -6.54
-v -12.27 26.24 -6.47
-v -13.12 26.25 -6.54
-v -12.70 26.21 -6.46
-v -13.34 26.26 -6.62
-v -13.34 26.26 -6.72
-v -12.04 26.26 -6.51
-v -12.03 26.26 -6.60
-v -11.94 26.26 -6.43
-v -11.94 26.12 -6.43
-v -13.46 26.12 -6.56
-v -13.46 26.26 -6.56
-v -16.15 12.70 -9.15
-v -15.67 12.70 -8.34
-v -16.39 14.28 -7.92
-v -16.86 14.28 -8.74
-v -17.17 17.34 -8.57
-v -16.21 17.34 -9.12
-v -16.69 17.34 -7.75
-v -15.74 17.34 -8.30
-v -12.26 20.21 -5.34
-v -12.69 20.52 -5.33
-v -12.69 19.21 -5.33
-v -12.26 19.23 -5.34
-v -11.92 19.26 -5.43
-v -11.93 19.26 -5.33
-v -11.93 19.12 -5.33
-v -11.92 19.12 -5.43
-v -12.69 20.75 -5.36
-v -12.70 20.75 -5.26
-v -12.04 20.29 -5.30
-v -12.03 20.29 -5.40
-v -13.44 19.12 -5.56
-v -13.45 19.12 -5.47
-v -13.45 19.26 -5.47
-v -13.44 19.26 -5.56
-v -12.69 19.07 -5.36
-v -12.70 19.07 -5.26
-v -13.34 19.12 -5.42
-v -13.34 19.12 -5.52
-v -12.05 19.12 -5.20
-v -12.05 19.26 -5.20
-v -12.28 19.23 -5.16
-v -12.70 20.52 -5.26
-v -12.27 20.21 -5.26
-v -13.35 19.26 -5.31
-v -13.35 19.12 -5.31
-v -13.13 19.24 -5.23
-v -12.71 19.07 -5.15
-v -12.71 19.21 -5.15
-v -13.12 20.21 -5.41
-v -13.12 19.24 -5.41
-v -13.34 20.29 -5.52
-v -13.34 20.29 -5.42
-v -12.03 19.12 -5.40
-v -12.04 19.12 -5.30
-v -13.12 20.21 -5.34
-v -12.27 19.23 -5.26
-v -13.12 19.24 -5.34
-v -12.70 19.21 -5.26
-v -13.34 19.26 -5.42
-v -13.34 19.26 -5.52
-v -12.04 19.26 -5.30
-v -12.03 19.26 -5.40
-v -11.94 19.26 -5.23
-v -11.94 19.12 -5.23
-v -13.46 19.12 -5.36
-v -13.46 19.26 -5.36
-v -15.89 23.34 -8.84
-v -15.35 23.34 -8.06
-v -16.03 24.92 -7.59
-v -16.57 24.92 -8.36
-v -16.50 28.41 -8.43
-v -15.60 28.41 -9.06
-v -15.96 28.41 -7.66
-v -15.06 28.41 -8.29
-v -16.70 27.21 -10.37
-v -16.71 27.52 -10.80
-v -16.71 26.21 -10.80
-v -16.70 26.24 -10.37
-v -16.61 26.26 -10.03
-v -16.71 26.26 -10.04
-v -16.71 26.12 -10.04
-v -16.61 26.12 -10.03
-v -16.69 27.75 -10.80
-v -16.78 27.75 -10.81
-v -16.74 27.30 -10.15
-v -16.64 27.30 -10.15
-v -16.48 26.12 -11.55
-v -16.58 26.12 -11.56
-v -16.58 26.26 -11.56
-v -16.48 26.26 -11.55
-v -16.69 26.07 -10.80
-v -16.78 26.07 -10.81
-v -16.62 26.12 -11.45
-v -16.53 26.12 -11.45
-v -16.84 26.12 -10.16
-v -16.84 26.26 -10.16
-v -16.88 26.24 -10.39
-v -16.78 27.52 -10.81
-v -16.78 27.21 -10.38
-v -16.73 26.26 -11.46
-v -16.73 26.12 -11.46
-v -16.81 26.25 -11.24
-v -16.89 26.07 -10.82
-v -16.89 26.21 -10.82
-v -16.63 27.21 -11.23
-v -16.63 26.25 -11.23
-v -16.53 27.30 -11.45
-v -16.62 27.30 -11.45
-v -16.64 26.12 -10.15
-v -16.74 26.12 -10.15
-v -16.70 27.21 -11.23
-v -16.78 26.24 -10.38
-v -16.70 26.25 -11.23
-v -16.78 26.21 -10.81
-v -16.62 26.26 -11.45
-v -16.53 26.26 -11.45
-v -16.74 26.26 -10.15
-v -16.64 26.26 -10.15
-v -16.82 26.26 -10.05
-v -16.82 26.12 -10.05
-v -16.68 26.12 -11.57
-v -16.68 26.26 -11.57
-v -15.67 12.70 -13.02
-v -16.15 12.70 -12.20
-v -16.86 14.28 -12.61
-v -16.39 14.28 -13.43
-v -16.69 17.34 -13.61
-v -15.74 17.34 -13.06
-v -17.17 17.34 -12.79
-v -16.21 17.34 -12.24
-v -16.83 28.50 -13.14
-v -17.49 28.50 -10.68
-v -17.49 30.29 -10.68
-v -16.83 30.29 -13.14
-v -15.03 28.50 -14.94
-v -15.03 30.29 -14.94
-v -12.57 28.50 -15.60
-v -12.57 30.29 -15.60
-v -10.10 28.50 -14.94
-v -10.10 30.29 -14.94
-v -8.30 28.50 -13.14
-v -8.30 30.29 -13.14
-v -7.64 28.50 -10.68
-v -7.64 30.29 -10.68
-v -8.30 28.50 -8.21
-v -8.30 30.29 -8.21
-v -10.10 28.50 -6.41
-v -10.10 30.29 -6.41
-v -12.57 28.50 -5.75
-v -12.57 30.29 -5.75
-v -15.03 28.50 -6.41
-v -15.03 30.29 -6.41
-v -16.83 28.50 -8.21
-v -16.83 30.29 -8.21
-v -16.78 30.29 -10.68
-v -16.21 30.29 -12.78
-v -15.03 30.90 -14.94
-v -16.83 30.90 -13.14
-v -16.21 30.90 -12.78
-v -14.67 30.90 -14.32
-v -14.67 30.29 -14.32
-v -12.57 30.29 -14.89
-v -10.10 30.90 -14.94
-v -12.57 30.90 -15.60
-v -12.57 30.90 -14.89
-v -10.46 30.90 -14.32
-v -10.46 30.29 -14.32
-v -8.92 30.29 -12.78
-v -7.64 30.90 -10.68
-v -8.30 30.90 -13.14
-v -8.92 30.90 -12.78
-v -8.36 30.90 -10.68
-v -8.36 30.29 -10.68
-v -8.92 30.29 -8.57
-v -10.10 30.90 -6.41
-v -8.30 30.90 -8.21
-v -8.92 30.90 -8.57
-v -10.46 30.90 -7.03
-v -10.46 30.29 -7.03
-v -12.57 30.29 -6.47
-v -15.03 30.90 -6.41
-v -12.57 30.90 -5.75
-v -12.57 30.90 -6.47
-v -14.67 30.90 -7.03
-v -14.67 30.29 -7.03
-v -16.21 30.29 -8.57
-v -17.49 30.90 -10.68
-v -16.83 30.90 -8.21
-v -16.21 30.90 -8.57
-v -16.78 30.90 -10.68
-v -16.78 29.42 -10.68
-v -16.21 29.42 -12.78
-v -14.67 29.42 -14.32
-v -12.57 29.42 -14.89
-v -10.46 29.42 -14.32
-v -8.92 29.42 -12.78
-v -8.36 29.42 -10.68
-v -8.92 29.42 -8.57
-v -10.46 29.42 -7.03
-v -12.57 29.42 -6.47
-v -14.67 29.42 -7.03
-v -16.21 29.42 -8.57
-v -12.57 29.42 -10.68
-v 15.69 11.78 11.98
-v 15.69 11.78 -12.46
-v 10.74 17.79 -7.40
-v 10.74 17.79 7.40
-v -15.69 11.78 -12.46
-v -10.74 17.79 -7.40
-v -15.69 11.78 11.98
-v -10.74 17.79 7.40
-v 12.89 0.00 11.03
-v 12.89 0.00 -11.03
-v 12.89 11.78 -11.03
-v 12.89 11.78 11.03
-v -12.89 0.00 -11.03
-v -12.89 11.78 -11.03
-v -23.42 0.00 -6.76
-v -23.42 0.00 6.76
-v -23.42 6.95 6.76
-v -23.42 6.95 -6.76
-v -12.89 0.00 11.03
-v -12.89 11.78 11.03
-v 8.74 17.79 -3.62
-v 8.74 17.79 3.62
-v -8.74 17.79 -3.62
-v -8.74 17.79 3.62
-v -12.89 6.95 6.76
-v -12.89 0.00 6.76
-v -12.89 6.95 -6.76
-v -12.89 0.00 -6.76
-v -9.46 12.70 7.57
-v -8.74 14.28 7.16
-v -8.27 14.28 7.98
-v -8.98 12.70 8.39
-v -9.39 17.34 7.53
-v -8.44 17.34 6.98
-v -7.97 17.34 7.80
-v -8.92 17.34 8.35
-v -9.31 28.15 -0.00
-v -9.31 23.30 4.54
-v 0.00 22.65 4.30
-v -0.11 25.84 -0.00
-v -9.31 27.72 -0.00
-v -9.31 22.87 4.55
-v 0.00 22.23 4.31
-v 0.00 22.65 -4.30
-v -9.31 23.30 -4.54
-v -9.31 22.87 -4.55
-v 0.00 22.23 -4.31
-v 9.31 28.15 -0.00
-v 9.31 23.30 4.54
-v 9.31 27.72 -0.00
-v 9.31 22.87 4.55
-v 9.31 23.30 -4.54
-v 9.31 22.87 -4.55
-v 4.76 26.71 -0.63
-v 5.87 26.95 -0.63
-v 5.91 26.75 -0.63
-v 4.80 26.52 -0.63
-v 4.68 27.10 -0.11
-v 5.79 27.34 -0.11
-v 4.72 26.91 -0.11
-v 5.79 27.35 -0.00
-v 4.68 27.12 -0.00
-v 4.72 26.93 -0.00
-v 5.91 26.75 0.63
-v 5.87 26.95 0.63
-v 4.76 26.71 0.63
-v 4.80 26.52 0.63
-v 5.79 27.34 0.11
-v 4.68 27.10 0.11
-v 4.72 26.91 0.11
-v 3.88 26.49 -0.63
-v 5.00 26.69 -0.63
-v 5.03 26.49 -0.63
-v 3.91 26.30 -0.63
-v 3.81 26.89 -0.11
-v 4.93 27.08 -0.11
-v 3.84 26.69 -0.11
-v 4.92 27.09 -0.00
-v 3.81 26.90 -0.00
-v 3.84 26.71 -0.00
-v 5.03 26.49 0.63
-v 5.00 26.69 0.63
-v 3.88 26.49 0.63
-v 3.91 26.30 0.63
-v 4.93 27.08 0.11
-v 3.81 26.89 0.11
-v 3.84 26.69 0.11
-v 2.89 26.32 -0.63
-v 4.01 26.46 -0.63
-v 4.04 26.27 -0.63
-v 2.91 26.13 -0.63
-v 2.84 26.72 -0.11
-v 3.96 26.86 -0.11
-v 2.86 26.53 -0.11
-v 3.96 26.87 -0.00
-v 2.84 26.74 -0.00
-v 2.86 26.54 -0.00
-v 4.04 26.27 0.63
-v 4.01 26.46 0.63
-v 2.89 26.32 0.63
-v 2.91 26.13 0.63
-v 3.96 26.86 0.11
-v 2.84 26.72 0.11
-v 2.86 26.53 0.11
-v 1.88 26.15 -0.63
-v 3.00 26.29 -0.63
-v 3.02 26.09 -0.63
-v 1.90 25.96 -0.63
-v 1.83 26.55 -0.11
-v 2.95 26.69 -0.11
-v 1.85 26.36 -0.11
-v 2.95 26.70 -0.00
-v 1.83 26.56 -0.00
-v 1.85 26.37 -0.00
-v 3.02 26.09 0.63
-v 3.00 26.29 0.63
-v 1.88 26.15 0.63
-v 1.90 25.96 0.63
-v 2.95 26.69 0.11
-v 1.83 26.55 0.11
-v 1.85 26.36 0.11
-v 0.78 26.08 -0.63
-v 1.91 26.12 -0.63
-v 1.92 25.93 -0.63
-v 0.79 25.89 -0.63
-v 0.77 26.49 -0.11
-v 1.90 26.52 -0.11
-v 0.77 26.29 -0.11
-v 1.90 26.54 -0.00
-v 0.77 26.50 -0.00
-v 0.77 26.30 -0.00
-v 1.92 25.93 0.63
-v 1.91 26.12 0.63
-v 0.78 26.08 0.63
-v 0.79 25.89 0.63
-v 1.90 26.52 0.11
-v 0.77 26.49 0.11
-v 0.77 26.29 0.11
-v -0.35 26.05 -0.63
-v 0.78 26.11 -0.63
-v 0.79 25.91 -0.63
-v -0.34 25.85 -0.63
-v -0.37 26.45 -0.11
-v 0.76 26.51 -0.11
-v -0.36 26.25 -0.11
-v 0.76 26.52 -0.00
-v -0.38 26.46 -0.00
-v -0.37 26.27 -0.00
-v 0.79 25.91 0.63
-v 0.78 26.11 0.63
-v -0.35 26.05 0.63
-v -0.34 25.85 0.63
-v 0.76 26.51 0.11
-v -0.37 26.45 0.11
-v -0.36 26.25 0.11
-v 6.98 27.27 -0.63
-v 8.09 27.50 -0.63
-v 8.13 27.31 -0.63
-v 7.02 27.08 -0.63
-v 6.90 27.66 -0.11
-v 8.01 27.90 -0.11
-v 6.94 27.47 -0.11
-v 8.00 27.91 -0.00
-v 6.89 27.68 -0.00
-v 6.93 27.48 -0.00
-v 8.13 27.31 0.63
-v 8.09 27.50 0.63
-v 6.98 27.27 0.63
-v 7.02 27.08 0.63
-v 8.01 27.90 0.11
-v 6.90 27.66 0.11
-v 6.94 27.47 0.11
-v 5.87 26.96 -0.63
-v 6.98 27.20 -0.63
-v 7.02 27.01 -0.63
-v 5.91 26.77 -0.63
-v 5.79 27.36 -0.11
-v 6.90 27.59 -0.11
-v 5.83 27.17 -0.11
-v 6.89 27.60 -0.00
-v 5.79 27.37 -0.00
-v 5.83 27.18 -0.00
-v 7.02 27.01 0.63
-v 6.98 27.20 0.63
-v 5.87 26.96 0.63
-v 5.91 26.77 0.63
-v 6.90 27.59 0.11
-v 5.79 27.36 0.11
-v 5.83 27.17 0.11
-v -6.20 26.77 -0.63
-v -6.16 26.96 -0.63
-v -5.05 26.72 -0.63
-v -5.09 26.53 -0.63
-v -4.97 27.12 -0.11
-v -6.08 27.35 -0.11
-v -5.01 26.92 -0.11
-v -6.07 27.36 -0.00
-v -4.96 27.13 -0.00
-v -5.01 26.94 -0.00
-v -5.05 26.72 0.63
-v -6.16 26.96 0.63
-v -6.20 26.77 0.63
-v -5.09 26.53 0.63
-v -4.97 27.12 0.11
-v -6.08 27.35 0.11
-v -5.01 26.92 0.11
-v -5.32 26.52 -0.63
-v -5.28 26.71 -0.63
-v -4.17 26.51 -0.63
-v -4.20 26.32 -0.63
-v -4.10 26.91 -0.11
-v -5.21 27.11 -0.11
-v -4.13 26.72 -0.11
-v -5.21 27.12 -0.00
-v -4.10 26.92 -0.00
-v -4.13 26.73 -0.00
-v -4.17 26.51 0.63
-v -5.28 26.71 0.63
-v -5.32 26.52 0.63
-v -4.20 26.32 0.63
-v -4.10 26.91 0.11
-v -5.21 27.11 0.11
-v -4.13 26.72 0.11
-v -4.32 26.27 -0.63
-v -4.30 26.46 -0.63
-v -3.18 26.32 -0.63
-v -3.20 26.13 -0.63
-v -3.13 26.72 -0.11
-v -4.25 26.86 -0.11
-v -3.15 26.53 -0.11
-v -4.25 26.87 -0.00
-v -3.13 26.73 -0.00
-v -3.15 26.54 -0.00
-v -3.18 26.32 0.63
-v -4.30 26.46 0.63
-v -4.32 26.27 0.63
-v -3.20 26.13 0.63
-v -3.13 26.72 0.11
-v -4.25 26.86 0.11
-v -3.15 26.53 0.11
-v -3.31 26.05 -0.63
-v -3.29 26.24 -0.63
-v -2.16 26.11 -0.63
-v -2.19 25.91 -0.63
-v -2.12 26.50 -0.11
-v -3.24 26.64 -0.11
-v -2.14 26.31 -0.11
-v -3.24 26.65 -0.00
-v -2.11 26.52 -0.00
-v -2.14 26.32 -0.00
-v -2.16 26.11 0.63
-v -3.29 26.24 0.63
-v -3.31 26.05 0.63
-v -2.19 25.91 0.63
-v -2.12 26.50 0.11
-v -3.24 26.64 0.11
-v -2.14 26.31 0.11
-v -2.21 25.88 -0.63
-v -2.20 26.08 -0.63
-v -1.07 26.04 -0.63
-v -1.07 25.84 -0.63
-v -1.05 26.44 -0.11
-v -2.19 26.48 -0.11
-v -1.06 26.25 -0.11
-v -2.19 26.49 -0.00
-v -1.05 26.45 -0.00
-v -1.06 26.26 -0.00
-v -1.07 26.04 0.63
-v -2.20 26.08 0.63
-v -2.21 25.88 0.63
-v -1.07 25.84 0.63
-v -1.05 26.44 0.11
-v -2.19 26.48 0.11
-v -1.06 26.25 0.11
-v -1.08 25.87 -0.63
-v -1.07 26.06 -0.63
-v 0.07 26.00 -0.63
-v 0.06 25.80 -0.63
-v 0.09 26.40 -0.11
-v -1.04 26.46 -0.11
-v 0.08 26.21 -0.11
-v -1.04 26.47 -0.00
-v 0.09 26.41 -0.00
-v 0.08 26.22 -0.00
-v 0.07 26.00 0.63
-v -1.07 26.06 0.63
-v -1.08 25.87 0.63
-v 0.06 25.80 0.63
-v 0.09 26.40 0.11
-v -1.04 26.46 0.11
-v 0.08 26.21 0.11
-v -8.19 27.32 -0.63
-v -8.15 27.51 -0.63
-v -7.04 27.28 -0.63
-v -7.08 27.09 -0.63
-v -6.96 27.67 -0.11
-v -8.07 27.90 -0.11
-v -7.00 27.48 -0.11
-v -8.06 27.92 -0.00
-v -6.95 27.68 -0.00
-v -6.99 27.49 -0.00
-v -7.04 27.28 0.63
-v -8.15 27.51 0.63
-v -8.19 27.32 0.63
-v -7.08 27.09 0.63
-v -6.96 27.67 0.11
-v -8.07 27.90 0.11
-v -7.00 27.48 0.11
-v -7.06 27.02 -0.63
-v -7.02 27.21 -0.63
-v -5.92 26.97 -0.63
-v -5.96 26.78 -0.63
-v -5.83 27.37 -0.11
-v -6.94 27.60 -0.11
-v -5.87 27.18 -0.11
-v -6.94 27.61 -0.00
-v -5.83 27.38 -0.00
-v -5.87 27.19 -0.00
-v -5.92 26.97 0.63
-v -7.02 27.21 0.63
-v -7.06 27.02 0.63
-v -5.96 26.78 0.63
-v -5.83 27.37 0.11
-v -6.94 27.60 0.11
-v -5.87 27.18 0.11
-v -9.18 27.83 -0.63
-v -8.10 27.48 -0.63
-v -8.16 27.29 -0.63
-v -9.24 27.64 -0.63
-v -9.05 28.21 -0.11
-v -7.98 27.86 -0.11
-v -9.11 28.02 -0.11
-v -7.97 27.87 -0.00
-v -9.05 28.22 -0.00
-v -9.11 28.04 -0.00
-v -8.16 27.29 0.63
-v -8.10 27.48 0.63
-v -9.18 27.83 0.63
-v -9.24 27.64 0.63
-v -7.98 27.86 0.11
-v -9.05 28.21 0.11
-v -9.11 28.02 0.11
-v 8.19 27.28 -0.63
-v 8.13 27.46 -0.63
-v 9.21 27.81 -0.63
-v 9.27 27.63 -0.63
-v 9.08 28.20 -0.11
-v 8.01 27.84 -0.11
-v 9.15 28.01 -0.11
-v 8.00 27.86 -0.00
-v 9.08 28.21 -0.00
-v 9.14 28.02 -0.00
-v 9.21 27.81 0.63
-v 8.13 27.46 0.63
-v 8.19 27.28 0.63
-v 9.27 27.63 0.63
-v 9.08 28.20 0.11
-v 8.01 27.84 0.11
-v 9.15 28.01 0.11
-v 9.46 12.70 7.57
-v 8.98 12.70 8.39
-v 8.27 14.28 7.98
-v 8.74 14.28 7.16
-v 8.44 17.34 6.98
-v 9.39 17.34 7.53
-v 7.97 17.34 7.80
-v 8.92 17.34 8.35
-v -15.48 7.80 6.90
-v -15.48 7.80 6.03
-v -17.46 7.80 6.03
-v -17.46 7.80 6.90
-v -15.48 6.95 6.90
-v -15.48 6.95 6.03
-v -17.46 6.95 6.03
-v -17.46 6.95 6.90
-v -18.47 7.80 6.90
-v -18.47 7.80 6.03
-v -20.45 7.80 6.03
-v -20.45 7.80 6.90
-v -18.47 6.95 6.90
-v -18.47 6.95 6.03
-v -20.45 6.95 6.03
-v -20.45 6.95 6.90
-v -21.45 7.80 6.90
-v -21.45 7.80 6.03
-v -23.44 7.80 6.03
-v -23.44 7.80 6.90
-v -21.45 6.95 6.90
-v -21.45 6.95 6.03
-v -23.44 6.95 6.03
-v -23.44 6.95 6.90
-v -23.40 7.80 5.50
-v -22.53 7.80 5.50
-v -22.53 7.80 3.51
-v -23.40 7.80 3.51
-v -23.40 6.95 5.50
-v -22.53 6.95 5.50
-v -22.53 6.95 3.51
-v -23.40 6.95 3.51
-v -23.40 7.80 2.51
-v -22.53 7.80 2.51
-v -22.53 7.80 0.53
-v -23.40 7.80 0.53
-v -23.40 6.95 2.51
-v -22.53 6.95 2.51
-v -22.53 6.95 0.53
-v -23.40 6.95 0.53
-v -23.40 7.80 -0.48
-v -22.53 7.80 -0.48
-v -22.53 7.80 -2.46
-v -23.40 7.80 -2.46
-v -23.40 6.95 -0.48
-v -22.53 6.95 -0.48
-v -22.53 6.95 -2.46
-v -23.40 6.95 -2.46
-v -23.40 7.80 -3.47
-v -22.53 7.80 -3.47
-v -22.53 7.80 -5.45
-v -23.40 7.80 -5.45
-v -23.40 6.95 -3.47
-v -22.53 6.95 -3.47
-v -22.53 6.95 -5.45
-v -23.40 6.95 -5.45
-v -21.45 7.80 -6.02
-v -21.45 7.80 -6.88
-v -23.44 7.80 -6.88
-v -23.44 7.80 -6.02
-v -21.45 6.95 -6.02
-v -21.45 6.95 -6.88
-v -23.44 6.95 -6.88
-v -23.44 6.95 -6.02
-v -18.47 7.80 -6.02
-v -18.47 7.80 -6.88
-v -20.45 7.80 -6.88
-v -20.45 7.80 -6.02
-v -18.47 6.95 -6.02
-v -18.47 6.95 -6.88
-v -20.45 6.95 -6.88
-v -20.45 6.95 -6.02
-v -15.48 7.80 -6.02
-v -15.48 7.80 -6.88
-v -17.46 7.80 -6.88
-v -17.46 7.80 -6.02
-v -15.48 6.95 -6.02
-v -15.48 6.95 -6.88
-v -17.46 6.95 -6.88
-v -17.46 6.95 -6.02
-v -7.10 7.80 -12.06
-v -7.10 7.80 -12.93
-v -9.08 7.80 -12.93
-v -9.08 7.80 -12.06
-v -7.10 6.95 -12.06
-v -7.10 6.95 -12.93
-v -9.08 6.95 -12.93
-v -9.08 6.95 -12.06
-v -4.46 7.80 -12.06
-v -4.46 7.80 -12.93
-v -6.45 7.80 -12.93
-v -6.45 7.80 -12.06
-v -4.46 6.95 -12.06
-v -4.46 6.95 -12.93
-v -6.45 6.95 -12.93
-v -6.45 6.95 -12.06
-v -1.83 7.80 -12.06
-v -1.83 7.80 -12.93
-v -3.81 7.80 -12.93
-v -3.81 7.80 -12.06
-v -1.83 6.95 -12.06
-v -1.83 6.95 -12.93
-v -3.81 6.95 -12.93
-v -3.81 6.95 -12.06
-v 0.81 7.80 -12.06
-v 0.81 7.80 -12.93
-v -1.17 7.80 -12.93
-v -1.17 7.80 -12.06
-v 0.81 6.95 -12.06
-v 0.81 6.95 -12.93
-v -1.17 6.95 -12.93
-v -1.17 6.95 -12.06
-v 3.44 7.80 -12.06
-v 3.44 7.80 -12.93
-v 1.46 7.80 -12.93
-v 1.46 7.80 -12.06
-v 3.44 6.95 -12.06
-v 3.44 6.95 -12.93
-v 1.46 6.95 -12.93
-v 1.46 6.95 -12.06
-v 6.08 7.80 -12.06
-v 6.08 7.80 -12.93
-v 4.10 7.80 -12.93
-v 4.10 7.80 -12.06
-v 6.08 6.95 -12.06
-v 6.08 6.95 -12.93
-v 4.10 6.95 -12.93
-v 4.10 6.95 -12.06
-v 8.72 7.80 -12.06
-v 8.72 7.80 -12.93
-v 6.74 7.80 -12.93
-v 6.74 7.80 -12.06
-v 8.72 6.95 -12.06
-v 8.72 6.95 -12.93
-v 6.74 6.95 -12.93
-v 6.74 6.95 -12.06
-v -4.39 18.64 -6.78
-v -4.39 18.64 -7.64
-v -6.37 18.64 -7.64
-v -6.37 18.64 -6.78
-v -4.39 17.79 -6.78
-v -4.39 17.79 -7.64
-v -6.37 17.79 -7.64
-v -6.37 17.79 -6.78
-v -1.66 18.64 -6.78
-v -1.66 18.64 -7.64
-v -3.64 18.64 -7.64
-v -3.64 18.64 -6.78
-v -1.66 17.79 -6.78
-v -1.66 17.79 -7.64
-v -3.64 17.79 -7.64
-v -3.64 17.79 -6.78
-v 1.06 18.64 -6.78
-v 1.06 18.64 -7.64
-v -0.92 18.64 -7.64
-v -0.92 18.64 -6.78
-v 1.06 17.79 -6.78
-v 1.06 17.79 -7.64
-v -0.92 17.79 -7.64
-v -0.92 17.79 -6.78
-v 3.79 18.64 -6.78
-v 3.79 18.64 -7.64
-v 1.80 18.64 -7.64
-v 1.80 18.64 -6.78
-v 3.79 17.79 -6.78
-v 3.79 17.79 -7.64
-v 1.80 17.79 -7.64
-v 1.80 17.79 -6.78
-v 6.51 18.64 -6.78
-v 6.51 18.64 -7.64
-v 4.53 18.64 -7.64
-v 4.53 18.64 -6.78
-v 6.51 17.79 -6.78
-v 6.51 17.79 -7.64
-v 4.53 17.79 -7.64
-v 4.53 17.79 -6.78
-v 9.24 18.64 -6.78
-v 9.24 18.64 -7.64
-v 7.25 18.64 -7.64
-v 7.25 18.64 -6.78
-v 9.24 17.79 -6.78
-v 9.24 17.79 -7.64
-v 7.25 17.79 -7.64
-v 7.25 17.79 -6.78
-v -7.11 18.64 -6.78
-v -7.11 18.64 -7.64
-v -9.09 18.64 -7.64
-v -9.09 18.64 -6.78
-v -7.11 17.79 -6.78
-v -7.11 17.79 -7.64
-v -9.09 17.79 -7.64
-v -9.09 17.79 -6.78
-v -9.92 18.64 -6.55
-v -10.78 18.64 -6.55
-v -10.78 18.64 -4.56
-v -9.92 18.64 -4.56
-v -9.92 17.79 -6.55
-v -10.78 17.79 -6.55
-v -10.78 17.79 -4.56
-v -9.92 17.79 -4.56
-v -9.92 18.64 -3.82
-v -10.78 18.64 -3.82
-v -10.78 18.64 -1.84
-v -9.92 18.64 -1.84
-v -9.92 17.79 -3.82
-v -10.78 17.79 -3.82
-v -10.78 17.79 -1.84
-v -9.92 17.79 -1.84
-v -9.92 18.64 -1.10
-v -10.78 18.64 -1.10
-v -10.78 18.64 0.88
-v -9.92 18.64 0.88
-v -9.92 17.79 -1.10
-v -10.78 17.79 -1.10
-v -10.78 17.79 0.88
-v -9.92 17.79 0.88
-v -9.92 18.64 1.63
-v -10.78 18.64 1.63
-v -10.78 18.64 3.61
-v -9.92 18.64 3.61
-v -9.92 17.79 1.63
-v -10.78 17.79 1.63
-v -10.78 17.79 3.61
-v -9.92 17.79 3.61
-v -7.11 18.64 7.48
-v -7.11 18.64 6.62
-v -9.09 18.64 6.62
-v -9.09 18.64 7.48
-v -7.11 17.79 7.48
-v -7.11 17.79 6.62
-v -9.09 17.79 6.62
-v -9.09 17.79 7.48
-v -4.39 18.64 7.48
-v -4.39 18.64 6.62
-v -6.37 18.64 6.62
-v -6.37 18.64 7.48
-v -4.39 17.79 7.48
-v -4.39 17.79 6.62
-v -6.37 17.79 6.62
-v -6.37 17.79 7.48
-v -1.66 18.64 7.48
-v -1.66 18.64 6.62
-v -3.64 18.64 6.62
-v -3.64 18.64 7.48
-v -1.66 17.79 7.48
-v -1.66 17.79 6.62
-v -3.64 17.79 6.62
-v -3.64 17.79 7.48
-v 1.06 18.64 7.48
-v 1.06 18.64 6.62
-v -0.92 18.64 6.62
-v -0.92 18.64 7.48
-v 1.06 17.79 7.48
-v 1.06 17.79 6.62
-v -0.92 17.79 6.62
-v -0.92 17.79 7.48
-v 3.79 18.64 7.48
-v 3.79 18.64 6.62
-v 1.80 18.64 6.62
-v 1.80 18.64 7.48
-v 3.79 17.79 7.48
-v 3.79 17.79 6.62
-v 1.80 17.79 6.62
-v 1.80 17.79 7.48
-v 9.24 18.64 7.48
-v 9.24 18.64 6.62
-v 7.25 18.64 6.62
-v 7.25 18.64 7.48
-v 9.24 17.79 7.48
-v 9.24 17.79 6.62
-v 7.25 17.79 6.62
-v 7.25 17.79 7.48
-v 6.51 18.64 7.48
-v 6.51 18.64 6.62
-v 4.53 18.64 6.62
-v 4.53 18.64 7.48
-v 6.51 17.79 7.48
-v 6.51 17.79 6.62
-v 4.53 17.79 6.62
-v 4.53 17.79 7.48
-v 10.85 18.64 -6.55
-v 9.99 18.64 -6.55
-v 9.99 18.64 -4.56
-v 10.85 18.64 -4.56
-v 10.85 17.79 -6.55
-v 9.99 17.79 -6.55
-v 9.99 17.79 -4.56
-v 10.85 17.79 -4.56
-v 10.85 18.64 -3.82
-v 9.99 18.64 -3.82
-v 9.99 18.64 -1.84
-v 10.85 18.64 -1.84
-v 10.85 17.79 -3.82
-v 9.99 17.79 -3.82
-v 9.99 17.79 -1.84
-v 10.85 17.79 -1.84
-v 10.85 18.64 -1.10
-v 9.99 18.64 -1.10
-v 9.99 18.64 0.88
-v 10.85 18.64 0.88
-v 10.85 17.79 -1.10
-v 9.99 17.79 -1.10
-v 9.99 17.79 0.88
-v 10.85 17.79 0.88
-v 10.85 18.64 1.63
-v 9.99 18.64 1.63
-v 9.99 18.64 3.61
-v 10.85 18.64 3.61
-v 10.85 17.79 1.63
-v 9.99 17.79 1.63
-v 9.99 17.79 3.61
-v 10.85 17.79 3.61
-v 10.85 18.64 4.35
-v 9.99 18.64 4.35
-v 9.99 18.64 6.33
-v 10.85 18.64 6.33
-v 10.85 17.79 4.35
-v 9.99 17.79 4.35
-v 9.99 17.79 6.33
-v 10.85 17.79 6.33
-v 11.17 6.95 -11.03
-v 11.17 6.95 -12.83
-v -11.17 6.95 -12.83
-v -11.17 6.95 -11.03
-v 11.17 -0.02 -12.83
-v -11.17 -0.02 -12.83
-v -19.96 4.66 -6.77
-v -19.60 5.22 -6.77
-v -19.60 2.88 -6.77
-v -19.96 2.92 -6.77
-v -20.24 2.96 -6.83
-v -20.24 2.71 -6.83
-v -20.24 2.71 -6.75
-v -20.24 2.96 -6.75
-v -19.60 5.63 -6.83
-v -20.15 4.82 -6.83
-v -20.15 4.82 -6.75
-v -19.60 5.63 -6.75
-v -18.96 2.71 -6.83
-v -18.96 2.96 -6.83
-v -18.96 2.96 -6.75
-v -18.96 2.71 -6.75
-v -19.60 2.63 -6.83
-v -19.05 2.71 -6.83
-v -19.05 2.71 -6.75
-v -19.60 2.63 -6.75
-v -20.15 2.71 -6.92
-v -20.15 2.96 -6.92
-v -19.96 2.92 -6.92
-v -19.60 5.22 -6.83
-v -19.96 4.66 -6.83
-v -19.05 2.96 -6.92
-v -19.05 2.71 -6.92
-v -19.24 2.94 -6.92
-v -19.60 2.63 -6.92
-v -19.60 2.88 -6.92
-v -19.24 4.66 -6.77
-v -19.24 2.94 -6.77
-v -19.05 4.82 -6.83
-v -19.05 4.82 -6.75
-v -20.15 2.71 -6.83
-v -20.15 2.71 -6.75
-v -19.24 4.66 -6.83
-v -19.96 2.92 -6.83
-v -19.24 2.94 -6.83
-v -19.60 2.88 -6.83
-v -19.05 2.96 -6.83
-v -19.05 2.96 -6.75
-v -20.15 2.96 -6.83
-v -20.15 2.96 -6.75
-v -20.24 2.96 -6.92
-v -20.24 2.71 -6.92
-v -18.96 2.71 -6.92
-v -18.96 2.96 -6.92
-v -6.81 4.66 -12.83
-v -6.45 5.22 -12.83
-v -6.45 2.88 -12.83
-v -6.81 2.92 -12.83
-v -7.09 2.96 -12.89
-v -7.09 2.71 -12.89
-v -7.09 2.71 -12.81
-v -7.09 2.96 -12.81
-v -6.45 5.63 -12.89
-v -6.99 4.82 -12.89
-v -6.99 4.82 -12.81
-v -6.45 5.63 -12.81
-v -5.81 2.71 -12.89
-v -5.81 2.96 -12.89
-v -5.81 2.96 -12.81
-v -5.81 2.71 -12.81
-v -6.45 2.63 -12.89
-v -5.90 2.71 -12.89
-v -5.90 2.71 -12.81
-v -6.45 2.63 -12.81
-v -6.99 2.71 -12.98
-v -6.99 2.96 -12.98
-v -6.81 2.92 -12.98
-v -6.45 5.22 -12.89
-v -6.81 4.66 -12.89
-v -5.90 2.96 -12.98
-v -5.90 2.71 -12.98
-v -6.09 2.94 -12.98
-v -6.45 2.63 -12.98
-v -6.45 2.88 -12.98
-v -6.09 4.66 -12.83
-v -6.09 2.94 -12.83
-v -5.90 4.82 -12.89
-v -5.90 4.82 -12.81
-v -6.99 2.71 -12.89
-v -6.99 2.71 -12.81
-v -6.09 4.66 -12.89
-v -6.81 2.92 -12.89
-v -6.09 2.94 -12.89
-v -6.45 2.88 -12.89
-v -5.90 2.96 -12.89
-v -5.90 2.96 -12.81
-v -6.99 2.96 -12.89
-v -6.99 2.96 -12.81
-v -7.09 2.96 -12.98
-v -7.09 2.71 -12.98
-v -5.81 2.71 -12.98
-v -5.81 2.96 -12.98
-v -4.17 10.56 -11.04
-v -3.81 11.12 -11.04
-v -3.81 8.77 -11.04
-v -4.17 8.82 -11.04
-v -4.45 8.86 -11.10
-v -4.45 8.61 -11.10
-v -4.45 8.61 -11.02
-v -4.45 8.86 -11.02
-v -3.81 11.53 -11.10
-v -4.36 10.72 -11.10
-v -4.36 10.72 -11.02
-v -3.81 11.53 -11.02
-v -3.17 8.61 -11.10
-v -3.17 8.86 -11.10
-v -3.17 8.86 -11.02
-v -3.17 8.61 -11.02
-v -3.81 8.52 -11.10
-v -3.27 8.61 -11.10
-v -3.27 8.61 -11.02
-v -3.81 8.52 -11.02
-v -4.36 8.61 -11.19
-v -4.36 8.86 -11.19
-v -4.17 8.82 -11.19
-v -3.81 11.12 -11.10
-v -4.17 10.56 -11.10
-v -3.27 8.86 -11.19
-v -3.27 8.61 -11.19
-v -3.45 8.83 -11.19
-v -3.81 8.52 -11.19
-v -3.81 8.77 -11.19
-v -3.45 10.56 -11.04
-v -3.45 8.83 -11.04
-v -3.27 10.72 -11.10
-v -3.27 10.72 -11.02
-v -4.36 8.61 -11.10
-v -4.36 8.61 -11.02
-v -3.45 10.56 -11.10
-v -4.17 8.82 -11.10
-v -3.45 8.83 -11.10
-v -3.81 8.77 -11.10
-v -3.27 8.86 -11.10
-v -3.27 8.86 -11.02
-v -4.36 8.86 -11.10
-v -4.36 8.86 -11.02
-v -4.45 8.86 -11.19
-v -4.45 8.61 -11.19
-v -3.17 8.61 -11.19
-v -3.17 8.86 -11.19
-v 3.09 10.56 -11.04
-v 3.44 11.12 -11.04
-v 3.44 8.77 -11.04
-v 3.09 8.82 -11.04
-v 2.81 8.86 -11.10
-v 2.81 8.61 -11.10
-v 2.81 8.61 -11.02
-v 2.81 8.86 -11.02
-v 3.44 11.53 -11.10
-v 2.90 10.72 -11.10
-v 2.90 10.72 -11.02
-v 3.44 11.53 -11.02
-v 4.08 8.61 -11.10
-v 4.08 8.86 -11.10
-v 4.08 8.86 -11.02
-v 4.08 8.61 -11.02
-v 3.44 8.52 -11.10
-v 3.99 8.61 -11.10
-v 3.99 8.61 -11.02
-v 3.44 8.52 -11.02
-v 2.90 8.61 -11.19
-v 2.90 8.86 -11.19
-v 3.09 8.82 -11.19
-v 3.44 11.12 -11.10
-v 3.09 10.56 -11.10
-v 3.99 8.86 -11.19
-v 3.99 8.61 -11.19
-v 3.80 8.83 -11.19
-v 3.44 8.52 -11.19
-v 3.44 8.77 -11.19
-v 3.80 10.56 -11.04
-v 3.80 8.83 -11.04
-v 3.99 10.72 -11.10
-v 3.99 10.72 -11.02
-v 2.90 8.61 -11.10
-v 2.90 8.61 -11.02
-v 3.80 10.56 -11.10
-v 3.09 8.82 -11.10
-v 3.80 8.83 -11.10
-v 3.44 8.77 -11.10
-v 3.99 8.86 -11.10
-v 3.99 8.86 -11.02
-v 2.90 8.86 -11.10
-v 2.90 8.86 -11.02
-v 2.81 8.86 -11.19
-v 2.81 8.61 -11.19
-v 4.08 8.61 -11.19
-v 4.08 8.86 -11.19
-v 5.72 4.66 -12.83
-v 6.08 5.22 -12.83
-v 6.08 2.88 -12.83
-v 5.72 2.92 -12.83
-v 5.44 2.96 -12.89
-v 5.44 2.71 -12.89
-v 5.44 2.71 -12.81
-v 5.44 2.96 -12.81
-v 6.08 5.63 -12.89
-v 5.54 4.82 -12.89
-v 5.54 4.82 -12.81
-v 6.08 5.63 -12.81
-v 6.72 2.71 -12.89
-v 6.72 2.96 -12.89
-v 6.72 2.96 -12.81
-v 6.72 2.71 -12.81
-v 6.08 2.63 -12.89
-v 6.63 2.71 -12.89
-v 6.63 2.71 -12.81
-v 6.08 2.63 -12.81
-v 5.54 2.71 -12.98
-v 5.54 2.96 -12.98
-v 5.72 2.92 -12.98
-v 6.08 5.22 -12.89
-v 5.72 4.66 -12.89
-v 6.63 2.96 -12.98
-v 6.63 2.71 -12.98
-v 6.44 2.94 -12.98
-v 6.08 2.63 -12.98
-v 6.08 2.88 -12.98
-v 6.44 4.66 -12.83
-v 6.44 2.94 -12.83
-v 6.63 4.82 -12.89
-v 6.63 4.82 -12.81
-v 5.54 2.71 -12.89
-v 5.54 2.71 -12.81
-v 6.44 4.66 -12.89
-v 5.72 2.92 -12.89
-v 6.44 2.94 -12.89
-v 6.08 2.88 -12.89
-v 6.63 2.96 -12.89
-v 6.63 2.96 -12.81
-v 5.54 2.96 -12.89
-v 5.54 2.96 -12.81
-v 5.44 2.96 -12.98
-v 5.44 2.71 -12.98
-v 6.72 2.71 -12.98
-v 6.72 2.96 -12.98
-v -6.30 20.76 -3.63
-v -5.94 21.32 -3.63
-v -5.94 18.98 -3.63
-v -6.30 19.02 -3.63
-v -6.58 19.06 -3.69
-v -6.58 18.81 -3.69
-v -6.58 18.81 -3.60
-v -6.58 19.06 -3.60
-v -5.94 21.73 -3.69
-v -6.49 20.92 -3.69
-v -6.49 20.92 -3.60
-v -5.94 21.73 -3.60
-v -5.30 18.81 -3.69
-v -5.30 19.06 -3.69
-v -5.30 19.06 -3.60
-v -5.30 18.81 -3.60
-v -5.94 18.73 -3.69
-v -5.40 18.81 -3.69
-v -5.40 18.81 -3.60
-v -5.94 18.73 -3.60
-v -6.49 18.81 -3.78
-v -6.49 19.06 -3.78
-v -6.30 19.02 -3.78
-v -5.94 21.32 -3.69
-v -6.30 20.76 -3.69
-v -5.40 19.06 -3.78
-v -5.40 18.81 -3.78
-v -5.58 19.04 -3.78
-v -5.94 18.73 -3.78
-v -5.94 18.98 -3.78
-v -5.58 20.76 -3.63
-v -5.58 19.04 -3.63
-v -5.40 20.92 -3.69
-v -5.40 20.92 -3.60
-v -6.49 18.81 -3.69
-v -6.49 18.81 -3.60
-v -5.58 20.76 -3.69
-v -6.30 19.02 -3.69
-v -5.58 19.04 -3.69
-v -5.94 18.98 -3.69
-v -5.40 19.06 -3.69
-v -5.40 19.06 -3.60
-v -6.49 19.06 -3.69
-v -6.49 19.06 -3.60
-v -6.58 19.06 -3.78
-v -6.58 18.81 -3.78
-v -5.30 18.81 -3.78
-v -5.30 19.06 -3.78
-v 5.89 20.76 -3.63
-v 6.25 21.32 -3.63
-v 6.25 18.98 -3.63
-v 5.89 19.02 -3.63
-v 5.61 19.06 -3.69
-v 5.61 18.81 -3.69
-v 5.61 18.81 -3.60
-v 5.61 19.06 -3.60
-v 6.25 21.73 -3.69
-v 5.70 20.92 -3.69
-v 5.70 20.92 -3.60
-v 6.25 21.73 -3.60
-v 6.89 18.81 -3.69
-v 6.89 19.06 -3.69
-v 6.89 19.06 -3.60
-v 6.89 18.81 -3.60
-v 6.25 18.73 -3.69
-v 6.79 18.81 -3.69
-v 6.79 18.81 -3.60
-v 6.25 18.73 -3.60
-v 5.70 18.81 -3.78
-v 5.70 19.06 -3.78
-v 5.89 19.02 -3.78
-v 6.25 21.32 -3.69
-v 5.89 20.76 -3.69
-v 6.79 19.06 -3.78
-v 6.79 18.81 -3.78
-v 6.61 19.04 -3.78
-v 6.25 18.73 -3.78
-v 6.25 18.98 -3.78
-v 6.61 20.76 -3.63
-v 6.61 19.04 -3.63
-v 6.79 20.92 -3.69
-v 6.79 20.92 -3.60
-v 5.70 18.81 -3.69
-v 5.70 18.81 -3.60
-v 6.61 20.76 -3.69
-v 5.89 19.02 -3.69
-v 6.61 19.04 -3.69
-v 6.25 18.98 -3.69
-v 6.79 19.06 -3.69
-v 6.79 19.06 -3.60
-v 5.70 19.06 -3.69
-v 5.70 19.06 -3.60
-v 5.61 19.06 -3.78
-v 5.61 18.81 -3.78
-v 6.89 18.81 -3.78
-v 6.89 19.06 -3.78
-v -8.76 20.76 0.36
-v -8.76 21.32 -0.00
-v -8.76 18.98 -0.00
-v -8.76 19.02 0.36
-v -8.82 19.06 0.64
-v -8.82 18.81 0.64
-v -8.74 18.81 0.64
-v -8.74 19.06 0.64
-v -8.82 21.73 -0.00
-v -8.82 20.92 0.55
-v -8.74 20.92 0.55
-v -8.74 21.73 -0.00
-v -8.82 18.81 -0.64
-v -8.82 19.06 -0.64
-v -8.74 19.06 -0.64
-v -8.74 18.81 -0.64
-v -8.82 18.73 -0.00
-v -8.82 18.81 -0.55
-v -8.74 18.81 -0.55
-v -8.74 18.73 -0.00
-v -8.91 18.81 0.55
-v -8.91 19.06 0.55
-v -8.91 19.02 0.36
-v -8.82 21.32 -0.00
-v -8.82 20.76 0.36
-v -8.91 19.06 -0.55
-v -8.91 18.81 -0.55
-v -8.91 19.04 -0.36
-v -8.91 18.73 -0.00
-v -8.91 18.98 -0.00
-v -8.76 20.76 -0.36
-v -8.76 19.04 -0.36
-v -8.82 20.92 -0.55
-v -8.74 20.92 -0.55
-v -8.82 18.81 0.55
-v -8.74 18.81 0.55
-v -8.82 20.76 -0.36
-v -8.82 19.02 0.36
-v -8.82 19.04 -0.36
-v -8.82 18.98 -0.00
-v -8.82 19.06 -0.55
-v -8.74 19.06 -0.55
-v -8.82 19.06 0.55
-v -8.74 19.06 0.55
-v -8.91 19.06 0.64
-v -8.91 18.81 0.64
-v -8.91 18.81 -0.64
-v -8.91 19.06 -0.64
-v -23.42 4.66 -0.35
-v -23.42 2.92 -0.35
-v -23.42 2.88 0.01
-v -23.42 5.22 0.01
-v -23.48 2.96 -0.63
-v -23.40 2.96 -0.63
-v -23.40 2.71 -0.63
-v -23.48 2.71 -0.63
-v -23.48 5.63 0.01
-v -23.40 5.63 0.01
-v -23.40 4.82 -0.54
-v -23.48 4.82 -0.54
-v -23.48 2.71 0.65
-v -23.40 2.71 0.65
-v -23.40 2.96 0.65
-v -23.48 2.96 0.65
-v -23.48 2.63 0.01
-v -23.40 2.63 0.01
-v -23.40 2.71 0.55
-v -23.48 2.71 0.55
-v -23.57 2.71 -0.54
-v -23.57 2.92 -0.35
-v -23.57 2.96 -0.54
-v -23.48 5.22 0.01
-v -23.48 4.66 -0.35
-v -23.57 2.96 0.55
-v -23.57 2.94 0.37
-v -23.57 2.71 0.55
-v -23.57 2.63 0.01
-v -23.57 2.88 0.01
-v -23.42 4.66 0.37
-v -23.42 2.94 0.37
-v -23.48 4.82 0.55
-v -23.40 4.82 0.55
-v -23.48 2.71 -0.54
-v -23.40 2.71 -0.54
-v -23.48 4.66 0.37
-v -23.48 2.92 -0.35
-v -23.48 2.94 0.37
-v -23.48 2.88 0.01
-v -23.48 2.96 0.55
-v -23.40 2.96 0.55
-v -23.40 2.96 -0.54
-v -23.48 2.96 -0.54
-v -23.57 2.71 -0.63
-v -23.57 2.96 -0.63
-v -23.57 2.96 0.65
-v -23.57 2.71 0.65
-v -19.96 4.66 6.78
-v -19.96 2.92 6.78
-v -19.60 2.88 6.78
-v -19.60 5.22 6.78
-v -20.24 2.96 6.85
-v -20.24 2.96 6.76
-v -20.24 2.71 6.76
-v -20.24 2.71 6.85
-v -19.60 5.63 6.85
-v -19.60 5.63 6.76
-v -20.15 4.82 6.76
-v -20.15 4.82 6.85
-v -18.96 2.71 6.85
-v -18.96 2.71 6.76
-v -18.96 2.96 6.76
-v -18.96 2.96 6.85
-v -19.60 2.63 6.85
-v -19.60 2.63 6.76
-v -19.05 2.71 6.76
-v -19.05 2.71 6.85
-v -20.15 2.71 6.94
-v -19.96 2.92 6.94
-v -20.15 2.96 6.94
-v -19.60 5.22 6.85
-v -19.96 4.66 6.85
-v -19.05 2.96 6.94
-v -19.24 2.94 6.94
-v -19.05 2.71 6.94
-v -19.60 2.63 6.94
-v -19.60 2.88 6.94
-v -19.24 4.66 6.78
-v -19.24 2.94 6.78
-v -19.05 4.82 6.85
-v -19.05 4.82 6.76
-v -20.15 2.71 6.85
-v -20.15 2.71 6.76
-v -19.24 4.66 6.85
-v -19.96 2.92 6.85
-v -19.24 2.94 6.85
-v -19.60 2.88 6.85
-v -19.05 2.96 6.85
-v -19.05 2.96 6.76
-v -20.15 2.96 6.76
-v -20.15 2.96 6.85
-v -20.24 2.71 6.94
-v -20.24 2.96 6.94
-v -18.96 2.96 6.94
-v -18.96 2.71 6.94
-v -5.42 9.62 11.04
-v -5.42 7.88 11.04
-v -5.06 7.83 11.04
-v -5.06 10.18 11.04
-v -5.70 7.92 11.10
-v -5.70 7.92 11.01
-v -5.70 7.67 11.01
-v -5.70 7.67 11.10
-v -5.06 10.59 11.10
-v -5.06 10.59 11.01
-v -5.61 9.78 11.01
-v -5.61 9.78 11.10
-v -4.43 7.67 11.10
-v -4.43 7.67 11.01
-v -4.43 7.92 11.01
-v -4.43 7.92 11.10
-v -5.06 7.58 11.10
-v -5.06 7.58 11.01
-v -4.52 7.67 11.01
-v -4.52 7.67 11.10
-v -5.61 7.67 11.19
-v -5.42 7.88 11.19
-v -5.61 7.92 11.19
-v -5.06 10.18 11.10
-v -5.42 9.62 11.10
-v -4.52 7.92 11.19
-v -4.71 7.89 11.19
-v -4.52 7.67 11.19
-v -5.06 7.58 11.19
-v -5.06 7.83 11.19
-v -4.71 9.62 11.04
-v -4.71 7.89 11.04
-v -4.52 9.78 11.10
-v -4.52 9.78 11.01
-v -5.61 7.67 11.10
-v -5.61 7.67 11.01
-v -4.71 9.62 11.10
-v -5.42 7.88 11.10
-v -4.71 7.89 11.10
-v -5.06 7.83 11.10
-v -4.52 7.92 11.10
-v -4.52 7.92 11.01
-v -5.61 7.92 11.01
-v -5.61 7.92 11.10
-v -5.70 7.67 11.19
-v -5.70 7.92 11.19
-v -4.43 7.92 11.19
-v -4.43 7.67 11.19
-v 3.43 9.62 11.04
-v 3.43 7.88 11.04
-v 3.79 7.83 11.04
-v 3.79 10.18 11.04
-v 3.15 7.92 11.10
-v 3.15 7.92 11.01
-v 3.15 7.67 11.01
-v 3.15 7.67 11.10
-v 3.79 10.59 11.10
-v 3.79 10.59 11.01
-v 3.24 9.78 11.01
-v 3.24 9.78 11.10
-v 4.43 7.67 11.10
-v 4.43 7.67 11.01
-v 4.43 7.92 11.01
-v 4.43 7.92 11.10
-v 3.79 7.58 11.10
-v 3.79 7.58 11.01
-v 4.33 7.67 11.01
-v 4.33 7.67 11.10
-v 3.24 7.67 11.19
-v 3.43 7.88 11.19
-v 3.24 7.92 11.19
-v 3.79 10.18 11.10
-v 3.43 9.62 11.10
-v 4.33 7.92 11.19
-v 4.15 7.89 11.19
-v 4.33 7.67 11.19
-v 3.79 7.58 11.19
-v 3.79 7.83 11.19
-v 4.15 9.62 11.04
-v 4.15 7.89 11.04
-v 4.33 9.78 11.10
-v 4.33 9.78 11.01
-v 3.24 7.67 11.10
-v 3.24 7.67 11.01
-v 4.15 9.62 11.10
-v 3.43 7.88 11.10
-v 4.15 7.89 11.10
-v 3.79 7.83 11.10
-v 4.33 7.92 11.10
-v 4.33 7.92 11.01
-v 3.24 7.92 11.01
-v 3.24 7.92 11.10
-v 3.15 7.67 11.19
-v 3.15 7.92 11.19
-v 4.43 7.92 11.19
-v 4.43 7.67 11.19
-v -0.84 4.66 11.04
-v -0.84 2.92 11.04
-v -0.48 2.88 11.04
-v -0.48 5.22 11.04
-v -1.12 2.96 11.10
-v -1.12 2.96 11.01
-v -1.12 2.71 11.01
-v -1.12 2.71 11.10
-v -0.48 5.63 11.10
-v -0.48 5.63 11.01
-v -1.03 4.82 11.01
-v -1.03 4.82 11.10
-v 0.15 2.71 11.10
-v 0.15 2.71 11.01
-v 0.15 2.96 11.01
-v 0.15 2.96 11.10
-v -0.48 2.63 11.10
-v -0.48 2.63 11.01
-v 0.06 2.71 11.01
-v 0.06 2.71 11.10
-v -1.03 2.71 11.19
-v -0.84 2.92 11.19
-v -1.03 2.96 11.19
-v -0.48 5.22 11.10
-v -0.84 4.66 11.10
-v 0.06 2.96 11.19
-v -0.13 2.94 11.19
-v 0.06 2.71 11.19
-v -0.48 2.63 11.19
-v -0.48 2.88 11.19
-v -0.13 4.66 11.04
-v -0.13 2.94 11.04
-v 0.06 4.82 11.10
-v 0.06 4.82 11.01
-v -1.03 2.71 11.10
-v -1.03 2.71 11.01
-v -0.13 4.66 11.10
-v -0.84 2.92 11.10
-v -0.13 2.94 11.10
-v -0.48 2.88 11.10
-v 0.06 2.96 11.10
-v 0.06 2.96 11.01
-v -1.03 2.96 11.01
-v -1.03 2.96 11.10
-v -1.12 2.71 11.19
-v -1.12 2.96 11.19
-v 0.15 2.96 11.19
-v 0.15 2.71 11.19
-v 0.43 20.76 3.64
-v 0.07 21.32 3.64
-v 0.07 18.98 3.64
-v 0.43 19.02 3.64
-v 0.71 19.06 3.70
-v 0.71 18.81 3.70
-v 0.71 18.81 3.61
-v 0.71 19.06 3.61
-v 0.07 21.73 3.70
-v 0.62 20.92 3.70
-v 0.62 20.92 3.61
-v 0.07 21.73 3.61
-v -0.57 18.81 3.70
-v -0.57 19.06 3.70
-v -0.57 19.06 3.61
-v -0.57 18.81 3.61
-v 0.07 18.73 3.70
-v -0.47 18.81 3.70
-v -0.47 18.81 3.61
-v 0.07 18.73 3.61
-v 0.62 18.81 3.79
-v 0.62 19.06 3.79
-v 0.43 19.02 3.79
-v 0.07 21.32 3.70
-v 0.43 20.76 3.70
-v -0.47 19.06 3.79
-v -0.47 18.81 3.79
-v -0.29 19.04 3.79
-v 0.07 18.73 3.79
-v 0.07 18.98 3.79
-v -0.29 20.76 3.64
-v -0.29 19.04 3.64
-v -0.47 20.92 3.70
-v -0.47 20.92 3.61
-v 0.62 18.81 3.70
-v 0.62 18.81 3.61
-v -0.29 20.76 3.70
-v 0.43 19.02 3.70
-v -0.29 19.04 3.70
-v 0.07 18.98 3.70
-v -0.47 19.06 3.70
-v -0.47 19.06 3.61
-v 0.62 19.06 3.70
-v 0.62 19.06 3.61
-v 0.71 19.06 3.79
-v 0.71 18.81 3.79
-v -0.57 18.81 3.79
-v -0.57 19.06 3.79
-v 6.58 20.76 3.64
-v 6.22 21.32 3.64
-v 6.22 18.98 3.64
-v 6.58 19.02 3.64
-v 6.86 19.06 3.70
-v 6.86 18.81 3.70
-v 6.86 18.81 3.61
-v 6.86 19.06 3.61
-v 6.22 21.73 3.70
-v 6.76 20.92 3.70
-v 6.76 20.92 3.61
-v 6.22 21.73 3.61
-v 5.58 18.81 3.70
-v 5.58 19.06 3.70
-v 5.58 19.06 3.61
-v 5.58 18.81 3.61
-v 6.22 18.73 3.70
-v 5.67 18.81 3.70
-v 5.67 18.81 3.61
-v 6.22 18.73 3.61
-v 6.76 18.81 3.79
-v 6.76 19.06 3.79
-v 6.58 19.02 3.79
-v 6.22 21.32 3.70
-v 6.58 20.76 3.70
-v 5.67 19.06 3.79
-v 5.67 18.81 3.79
-v 5.86 19.04 3.79
-v 6.22 18.73 3.79
-v 6.22 18.98 3.79
-v 5.86 20.76 3.64
-v 5.86 19.04 3.64
-v 5.67 20.92 3.70
-v 5.67 20.92 3.61
-v 6.76 18.81 3.70
-v 6.76 18.81 3.61
-v 5.86 20.76 3.70
-v 6.58 19.02 3.70
-v 5.86 19.04 3.70
-v 6.22 18.98 3.70
-v 5.67 19.06 3.70
-v 5.67 19.06 3.61
-v 6.76 19.06 3.70
-v 6.76 19.06 3.61
-v 6.86 19.06 3.79
-v 6.86 18.81 3.79
-v 5.58 18.81 3.79
-v 5.58 19.06 3.79
-v 12.89 4.66 -3.98
-v 12.89 5.22 -3.62
-v 12.89 2.88 -3.62
-v 12.89 2.92 -3.98
-v 12.96 2.96 -4.26
-v 12.96 2.71 -4.26
-v 12.87 2.71 -4.26
-v 12.87 2.96 -4.26
-v 12.96 5.63 -3.62
-v 12.96 4.82 -4.17
-v 12.87 4.82 -4.17
-v 12.87 5.63 -3.62
-v 12.96 2.71 -2.98
-v 12.96 2.96 -2.98
-v 12.87 2.96 -2.98
-v 12.87 2.71 -2.98
-v 12.96 2.63 -3.62
-v 12.96 2.71 -3.08
-v 12.87 2.71 -3.08
-v 12.87 2.63 -3.62
-v 13.05 2.71 -4.17
-v 13.05 2.96 -4.17
-v 13.05 2.92 -3.98
-v 12.96 5.22 -3.62
-v 12.96 4.66 -3.98
-v 13.05 2.96 -3.08
-v 13.05 2.71 -3.08
-v 13.05 2.94 -3.26
-v 13.05 2.63 -3.62
-v 13.05 2.88 -3.62
-v 12.89 4.66 -3.26
-v 12.89 2.94 -3.26
-v 12.96 4.82 -3.08
-v 12.87 4.82 -3.08
-v 12.96 2.71 -4.17
-v 12.87 2.71 -4.17
-v 12.96 4.66 -3.26
-v 12.96 2.92 -3.98
-v 12.96 2.94 -3.26
-v 12.96 2.88 -3.62
-v 12.96 2.96 -3.08
-v 12.87 2.96 -3.08
-v 12.96 2.96 -4.17
-v 12.87 2.96 -4.17
-v 13.05 2.96 -4.26
-v 13.05 2.71 -4.26
-v 13.05 2.71 -2.98
-v 13.05 2.96 -2.98
-v 12.89 4.66 3.26
-v 12.89 5.22 3.62
-v 12.89 2.88 3.62
-v 12.89 2.92 3.26
-v 12.96 2.96 2.98
-v 12.96 2.71 2.98
-v 12.87 2.71 2.98
-v 12.87 2.96 2.98
-v 12.96 5.63 3.62
-v 12.96 4.82 3.08
-v 12.87 4.82 3.08
-v 12.87 5.63 3.62
-v 12.96 2.71 4.26
-v 12.96 2.96 4.26
-v 12.87 2.96 4.26
-v 12.87 2.71 4.26
-v 12.96 2.63 3.62
-v 12.96 2.71 4.17
-v 12.87 2.71 4.17
-v 12.87 2.63 3.62
-v 13.05 2.71 3.08
-v 13.05 2.96 3.08
-v 13.05 2.92 3.26
-v 12.96 5.22 3.62
-v 12.96 4.66 3.26
-v 13.05 2.96 4.17
-v 13.05 2.71 4.17
-v 13.05 2.94 3.98
-v 13.05 2.63 3.62
-v 13.05 2.88 3.62
-v 12.89 4.66 3.98
-v 12.89 2.94 3.98
-v 12.96 4.82 4.17
-v 12.87 4.82 4.17
-v 12.96 2.71 3.08
-v 12.87 2.71 3.08
-v 12.96 4.66 3.98
-v 12.96 2.92 3.26
-v 12.96 2.94 3.98
-v 12.96 2.88 3.62
-v 12.96 2.96 4.17
-v 12.87 2.96 4.17
-v 12.96 2.96 3.08
-v 12.87 2.96 3.08
-v 13.05 2.96 2.98
-v 13.05 2.71 2.98
-v 13.05 2.71 4.26
-v 13.05 2.96 4.26
-v 8.75 20.76 0.36
-v 8.75 19.02 0.36
-v 8.75 18.98 -0.00
-v 8.75 21.32 -0.00
-v 8.81 19.06 0.64
-v 8.73 19.06 0.64
-v 8.73 18.81 0.64
-v 8.81 18.81 0.64
-v 8.81 21.73 -0.00
-v 8.73 21.73 -0.00
-v 8.73 20.92 0.55
-v 8.81 20.92 0.55
-v 8.81 18.81 -0.64
-v 8.73 18.81 -0.64
-v 8.73 19.06 -0.64
-v 8.81 19.06 -0.64
-v 8.81 18.73 -0.00
-v 8.73 18.73 -0.00
-v 8.73 18.81 -0.55
-v 8.81 18.81 -0.55
-v 8.90 18.81 0.55
-v 8.90 19.02 0.36
-v 8.90 19.06 0.55
-v 8.81 21.32 -0.00
-v 8.81 20.76 0.36
-v 8.90 19.06 -0.55
-v 8.90 19.04 -0.36
-v 8.90 18.81 -0.55
-v 8.90 18.73 -0.00
-v 8.90 18.98 -0.00
-v 8.75 20.76 -0.36
-v 8.75 19.04 -0.36
-v 8.81 20.92 -0.55
-v 8.73 20.92 -0.55
-v 8.81 18.81 0.55
-v 8.73 18.81 0.55
-v 8.81 20.76 -0.36
-v 8.81 19.02 0.36
-v 8.81 19.04 -0.36
-v 8.81 18.98 -0.00
-v 8.81 19.06 -0.55
-v 8.73 19.06 -0.55
-v 8.73 19.06 0.55
-v 8.81 19.06 0.55
-v 8.90 18.81 0.64
-v 8.90 19.06 0.64
-v 8.90 19.06 -0.64
-v 8.90 18.81 -0.64
-v -5.91 20.76 3.64
-v -6.27 21.32 3.64
-v -6.27 18.98 3.64
-v -5.91 19.02 3.64
-v -5.63 19.06 3.70
-v -5.63 18.81 3.70
-v -5.63 18.81 3.61
-v -5.63 19.06 3.61
-v -6.27 21.73 3.70
-v -5.73 20.92 3.70
-v -5.73 20.92 3.61
-v -6.27 21.73 3.61
-v -6.91 18.81 3.70
-v -6.91 19.06 3.70
-v -6.91 19.06 3.61
-v -6.91 18.81 3.61
-v -6.27 18.73 3.70
-v -6.82 18.81 3.70
-v -6.82 18.81 3.61
-v -6.27 18.73 3.61
-v -5.73 18.81 3.79
-v -5.73 19.06 3.79
-v -5.91 19.02 3.79
-v -6.27 21.32 3.70
-v -5.91 20.76 3.70
-v -6.82 19.06 3.79
-v -6.82 18.81 3.79
-v -6.63 19.04 3.79
-v -6.27 18.73 3.79
-v -6.27 18.98 3.79
-v -6.63 20.76 3.64
-v -6.63 19.04 3.64
-v -6.82 20.92 3.70
-v -6.82 20.92 3.61
-v -5.73 18.81 3.70
-v -5.73 18.81 3.61
-v -6.63 20.76 3.70
-v -5.91 19.02 3.70
-v -6.63 19.04 3.70
-v -6.27 18.98 3.70
-v -6.82 19.06 3.70
-v -6.82 19.06 3.61
-v -5.73 19.06 3.70
-v -5.73 19.06 3.61
-v -5.63 19.06 3.79
-v -5.63 18.81 3.79
-v -6.91 18.81 3.79
-v -6.91 19.06 3.79
-v 1.22 3.89 -13.04
-v 1.22 0.00 -13.04
-v 0.00 0.00 -13.04
-v 0.00 4.45 -13.04
-v -2.44 3.02 -13.04
-v -1.22 3.89 -13.04
-v -1.22 0.00 -13.04
-v -2.44 0.00 -13.04
-v 2.44 3.02 -13.04
-v 2.44 0.00 -13.04
-v 2.76 0.00 -12.61
-v 2.76 0.00 -13.28
-v 2.72 2.63 -13.28
-v 2.72 2.63 -12.61
-v 2.32 0.00 -13.28
-v 2.28 2.21 -13.28
-v 2.32 0.00 -12.61
-v 2.28 2.21 -12.61
-v 1.57 4.51 -13.28
-v 1.57 4.51 -12.61
-v 1.32 3.79 -13.28
-v 1.32 3.79 -12.61
-v 0.00 5.20 -13.28
-v 0.00 5.20 -12.61
-v 0.00 4.45 -13.28
-v 0.00 4.45 -12.61
-v -1.57 4.51 -13.28
-v -1.57 4.51 -12.61
-v -1.32 3.79 -13.28
-v -1.32 3.79 -12.61
-v -2.72 2.63 -13.28
-v -2.72 2.63 -12.61
-v -2.28 2.21 -13.28
-v -2.28 2.21 -12.61
-v -2.76 0.00 -13.28
-v -2.76 0.00 -12.61
-v -2.32 0.00 -13.28
-v -2.32 0.00 -12.61
-v -23.02 0.02 -7.19
-v -23.81 0.02 -7.26
-v -23.50 3.76 -6.94
-v -22.95 3.76 -6.89
-v -23.10 0.02 -6.35
-v -23.01 3.76 -6.25
-v -23.88 0.02 -6.42
-v -23.56 3.76 -6.30
-v -23.00 6.77 -7.20
-v -23.83 6.77 -7.27
-v -23.08 7.23 -6.33
-v -23.90 7.23 -6.41
-v -23.14 6.61 -6.66
-v -23.14 6.39 0.01
-v -23.82 6.39 0.01
-v -23.82 6.61 -6.66
-v -23.82 7.03 0.01
-v -23.82 7.24 -6.66
-v -23.14 7.03 0.01
-v -23.14 7.24 -6.66
-v -23.14 6.61 6.68
-v -23.82 6.61 6.68
-v -23.82 7.24 6.68
-v -23.14 7.24 6.68
-v -10.64 6.61 -6.65
-v -17.31 6.39 -6.65
-v -17.31 6.39 -7.33
-v -10.64 6.61 -7.33
-v -17.31 7.03 -7.33
-v -10.64 7.24 -7.33
-v -17.31 7.03 -6.65
-v -10.64 7.24 -6.65
-v -23.99 6.61 -6.65
-v -23.99 6.61 -7.33
-v -23.99 7.24 -7.33
-v -23.99 7.24 -6.65
-v -23.02 0.02 7.20
-v -22.95 3.76 6.91
-v -23.50 3.76 6.95
-v -23.81 0.02 7.27
-v -23.10 0.02 6.37
-v -23.01 3.76 6.27
-v -23.88 0.02 6.44
-v -23.56 3.76 6.32
-v -23.00 6.77 7.22
-v -23.83 6.77 7.29
-v -23.08 7.23 6.35
-v -23.90 7.23 6.42
-v -10.64 6.61 6.68
-v -10.64 6.61 7.36
-v -17.31 6.39 7.36
-v -17.31 6.39 6.68
-v -10.64 7.24 7.36
-v -17.31 7.03 7.36
-v -10.64 7.24 6.68
-v -17.31 7.03 6.68
-v -23.99 6.61 7.36
-v -23.99 6.61 6.68
-v -23.99 7.24 7.36
-v -23.99 7.24 6.68
-v 8.74 6.44 10.70
-v 8.74 6.44 11.59
-v 0.00 6.16 11.59
-v 0.00 6.16 10.70
-v 8.74 7.27 11.59
-v 0.00 6.98 11.59
-v 8.74 7.27 10.70
-v 0.00 6.98 10.70
-v -8.74 6.44 11.59
-v -8.74 6.44 10.70
-v -8.74 7.27 11.59
-v -8.74 7.27 10.70
-v 8.74 17.79 -0.00
-v 8.74 27.72 -0.00
-v 8.74 23.62 3.62
-v 0.00 17.79 -3.62
-v 0.00 23.02 -3.62
-v 8.74 23.62 -3.62
-v -8.74 17.79 -0.00
-v -8.74 27.60 -0.00
-v -8.74 23.62 -3.62
-v 0.00 17.79 3.62
-v 0.00 23.02 3.62
-v -8.74 23.62 3.62
-v 8.34 17.58 -3.11
-v 8.50 20.48 -3.15
-v 8.50 20.48 -3.73
-v 8.34 17.58 -3.92
-v 8.34 24.35 -3.11
-v 8.34 23.76 -3.83
-v 9.14 17.58 -3.11
-v 9.09 20.48 -3.15
-v 9.14 24.35 -3.11
-v 9.14 17.58 -3.92
-v 9.09 20.48 -3.73
-v 9.14 23.76 -3.83
-v -0.81 20.18 -3.56
-v -0.81 17.74 -3.56
-v -0.81 17.74 -3.74
-v -0.81 20.18 -3.74
-v -0.95 20.13 -3.74
-v -0.95 17.74 -3.74
-v -0.95 17.74 -3.56
-v -0.95 20.13 -3.56
-v -1.04 20.10 -3.76
-v -1.04 20.10 -3.58
-v -1.04 20.32 -3.58
-v -1.04 20.32 -3.76
-v 1.04 20.32 -3.58
-v 1.04 20.10 -3.58
-v 1.04 20.10 -3.76
-v 1.04 20.32 -3.76
-v -0.39 20.29 -3.76
-v -0.39 20.29 -3.58
-v -0.39 20.51 -3.76
-v -0.39 20.51 -3.58
-v 0.94 20.15 -3.56
-v 0.94 17.74 -3.56
-v 0.94 17.74 -3.74
-v 0.94 20.15 -3.74
-v 0.80 17.74 -3.74
-v 0.80 20.19 -3.74
-v 0.80 17.74 -3.56
-v 0.80 20.19 -3.56
-v 0.39 20.29 -3.76
-v 0.39 20.29 -3.58
-v 0.39 20.51 -3.76
-v 0.39 20.51 -3.58
-v 0.00 20.34 -3.76
-v 0.00 20.34 -3.58
-v 0.00 20.56 -3.76
-v 0.00 20.56 -3.58
-v -0.01 17.69 -4.00
-v 0.78 17.69 -4.00
-v 0.78 17.66 -3.95
-v -0.01 17.66 -3.95
-v -0.01 17.76 -4.01
-v 0.78 17.76 -4.01
-v 0.78 17.75 -3.95
-v 0.78 17.85 -3.95
-v 0.78 17.85 -3.64
-v 0.78 17.75 -3.64
-v 0.78 17.82 -4.00
-v 0.78 17.66 -3.64
-v -0.01 17.85 -3.95
-v -0.01 17.85 -3.64
-v -0.01 17.82 -4.00
-v -0.80 17.66 -3.95
-v -0.80 17.69 -4.00
-v -0.80 17.76 -4.01
-v -0.80 17.85 -3.64
-v -0.80 17.85 -3.95
-v -0.80 17.75 -3.95
-v -0.80 17.75 -3.64
-v -0.80 17.82 -4.00
-v -0.80 17.66 -3.64
-v 0.86 20.19 -3.66
-v 0.86 17.72 -3.66
-v 0.02 17.72 -3.66
-v 0.02 20.45 -3.66
-v -0.82 20.19 -3.66
-v -0.82 17.72 -3.66
-v -9.14 17.58 -3.11
-v -8.97 20.48 -3.15
-v -8.97 20.48 -3.73
-v -9.14 17.58 -3.92
-v -9.14 24.35 -3.11
-v -9.14 23.76 -3.83
-v -8.34 17.58 -3.11
-v -8.39 20.48 -3.15
-v -8.34 24.35 -3.11
-v -8.34 17.58 -3.92
-v -8.39 20.48 -3.73
-v -8.34 23.76 -3.83
-v -9.14 17.58 3.11
-v -9.14 17.58 3.92
-v -8.97 20.48 3.73
-v -8.97 20.48 3.15
-v -9.14 23.76 3.83
-v -9.14 24.35 3.11
-v -8.34 17.58 3.11
-v -8.39 20.48 3.15
-v -8.34 24.35 3.11
-v -8.39 20.48 3.73
-v -8.34 17.58 3.92
-v -8.34 23.76 3.83
-v 8.34 17.58 3.11
-v 8.34 17.58 3.92
-v 8.50 20.48 3.73
-v 8.50 20.48 3.15
-v 8.34 23.76 3.83
-v 8.34 24.35 3.11
-v 9.14 17.58 3.11
-v 9.09 20.48 3.15
-v 9.14 24.35 3.11
-v 9.09 20.48 3.73
-v 9.14 17.58 3.92
-v 9.14 23.76 3.83
-v 12.59 6.44 -8.74
-v 13.48 6.44 -8.74
-v 13.48 6.16 -0.00
-v 12.59 6.16 -0.00
-v 13.48 7.27 -8.74
-v 13.48 6.98 -0.00
-v 12.59 7.27 -8.74
-v 12.59 6.98 -0.00
-v 13.48 6.44 8.74
-v 12.59 6.44 8.74
-v 13.48 7.27 8.74
-v 12.59 7.27 8.74
-v -9.92 18.64 4.67
-v -10.78 18.64 4.67
-v -10.78 18.64 6.66
-v -9.92 18.64 6.66
-v -9.92 17.79 4.67
-v -10.78 17.79 4.67
-v -10.78 17.79 6.66
-v -9.92 17.79 6.66
-v -12.40 7.80 6.90
-v -12.40 7.80 6.03
-v -14.38 7.80 6.03
-v -14.38 7.80 6.90
-v -12.40 6.95 6.90
-v -12.40 6.95 6.03
-v -14.38 6.95 6.03
-v -14.38 6.95 6.90
-v -12.40 7.80 -5.99
-v -12.40 7.80 -6.86
-v -14.38 7.80 -6.86
-v -14.38 7.80 -5.99
-v -12.40 6.95 -5.99
-v -12.40 6.95 -6.86
-v -14.38 6.95 -6.86
-v -14.38 6.95 -5.99
-v -16.55 0.00 12.98
-v -16.55 7.76 12.98
-v -17.17 7.76 10.68
-v -17.17 0.00 10.68
-v -14.87 0.00 14.66
-v -14.87 7.76 14.66
-v -12.57 0.00 15.28
-v -12.57 7.76 15.28
-v -10.27 0.00 14.66
-v -10.27 7.76 14.66
-v -8.58 0.00 12.98
-v -8.58 7.76 12.98
-v -7.97 0.00 10.68
-v -7.97 7.76 10.68
-v -8.58 0.00 8.38
-v -8.58 7.76 8.38
-v -10.27 0.00 6.69
-v -10.27 7.76 6.69
-v -12.57 0.00 6.08
-v -12.57 7.76 6.08
-v -14.87 0.00 6.69
-v -14.87 7.76 6.69
-v -16.55 0.00 8.38
-v -16.55 7.76 8.38
-v -16.78 7.76 13.11
-v -16.78 8.57 13.11
-v -17.43 8.57 10.68
-v -17.43 7.76 10.68
-v -15.00 7.76 14.89
-v -15.00 8.57 14.89
-v -12.57 7.76 15.54
-v -12.57 8.57 15.54
-v -10.13 7.76 14.89
-v -10.13 8.57 14.89
-v -8.35 7.76 13.11
-v -8.35 8.57 13.11
-v -7.70 7.76 10.68
-v -7.70 8.57 10.68
-v -8.35 7.76 8.24
-v -8.35 8.57 8.24
-v -10.13 7.76 6.46
-v -10.13 8.57 6.46
-v -12.57 7.76 5.81
-v -12.57 8.57 5.81
-v -15.00 7.76 6.46
-v -15.00 8.57 6.46
-v -16.78 7.76 8.24
-v -16.78 8.57 8.24
-v -17.17 8.57 10.68
-v -16.55 8.57 12.98
-v -14.87 8.57 14.66
-v -12.57 8.57 15.28
-v -10.27 8.57 14.66
-v -8.58 8.57 12.98
-v -7.97 8.57 10.68
-v -8.58 8.57 8.38
-v -10.27 8.57 6.69
-v -12.57 8.57 6.08
-v -14.87 8.57 6.69
-v -16.55 8.57 8.38
-v -16.55 16.89 12.98
-v -17.17 16.89 10.68
-v -14.87 16.89 14.66
-v -12.57 16.89 15.28
-v -10.27 16.89 14.66
-v -8.58 16.89 12.98
-v -7.97 16.89 10.68
-v -8.58 16.89 8.38
-v -10.27 16.89 6.69
-v -12.57 16.89 6.08
-v -14.87 16.89 6.69
-v -16.55 16.89 8.38
-v -17.13 21.30 13.31
-v -17.47 21.30 13.51
-v -18.23 21.30 10.68
-v -17.83 21.30 10.68
-v -15.20 21.30 15.24
-v -15.40 21.30 15.58
-v -12.57 21.30 15.94
-v -12.57 21.30 16.34
-v -9.93 21.30 15.24
-v -9.73 21.30 15.58
-v -8.01 21.30 13.31
-v -7.66 21.30 13.51
-v -7.30 21.30 10.68
-v -6.90 21.30 10.68
-v -8.01 21.30 8.04
-v -7.66 21.30 7.84
-v -9.93 21.30 6.12
-v -9.73 21.30 5.77
-v -12.57 21.30 5.41
-v -12.57 21.30 5.01
-v -15.20 21.30 6.12
-v -15.40 21.30 5.77
-v -17.13 21.30 8.04
-v -17.47 21.30 7.84
-v -16.17 24.76 12.76
-v -16.72 24.76 10.68
-v -14.64 24.76 14.28
-v -12.57 24.76 14.83
-v -10.49 24.76 14.28
-v -8.97 24.76 12.76
-v -8.41 24.76 10.68
-v -8.97 24.76 8.60
-v -10.49 24.76 7.08
-v -12.57 24.76 6.52
-v -14.64 24.76 7.08
-v -16.17 24.76 8.60
-v -16.13 28.50 12.74
-v -16.69 28.50 10.68
-v -14.63 28.50 14.24
-v -12.57 28.50 14.80
-v -10.51 28.50 14.24
-v -9.00 28.50 12.74
-v -8.45 28.50 10.68
-v -9.00 28.50 8.62
-v -10.51 28.50 7.11
-v -12.57 28.50 6.56
-v -14.63 28.50 7.11
-v -16.13 28.50 8.62
-v -17.13 17.36 13.31
-v -17.83 17.36 10.68
-v -15.20 17.36 15.24
-v -12.57 17.36 15.94
-v -9.93 17.36 15.24
-v -8.01 17.36 13.31
-v -7.30 17.36 10.68
-v -8.01 17.36 8.04
-v -9.93 17.36 6.12
-v -12.57 17.36 5.41
-v -15.20 17.36 6.12
-v -17.13 17.36 8.04
-v -17.91 20.21 10.37
-v -17.91 19.23 10.37
-v -17.91 19.21 10.80
-v -17.91 20.52 10.80
-v -17.81 19.26 10.03
-v -17.81 19.12 10.03
-v -17.91 19.12 10.04
-v -17.91 19.26 10.04
-v -17.89 20.75 10.80
-v -17.84 20.29 10.15
-v -17.94 20.29 10.15
-v -17.98 20.75 10.81
-v -17.68 19.12 11.55
-v -17.68 19.26 11.55
-v -17.78 19.26 11.56
-v -17.78 19.12 11.56
-v -17.89 19.07 10.80
-v -17.73 19.12 11.45
-v -17.82 19.12 11.45
-v -17.98 19.07 10.81
-v -18.05 19.12 10.16
-v -18.08 19.23 10.39
-v -18.05 19.26 10.16
-v -17.98 20.21 10.38
-v -17.98 20.52 10.81
-v -17.93 19.26 11.46
-v -18.01 19.24 11.24
-v -17.93 19.12 11.46
-v -18.09 19.07 10.82
-v -18.09 19.21 10.82
-v -17.83 20.21 11.23
-v -17.83 19.24 11.23
-v -17.73 20.29 11.45
-v -17.82 20.29 11.45
-v -17.84 19.12 10.15
-v -17.94 19.12 10.15
-v -17.90 20.21 11.23
-v -17.98 19.23 10.38
-v -17.90 19.24 11.23
-v -17.98 19.21 10.81
-v -17.82 19.26 11.45
-v -17.73 19.26 11.45
-v -17.84 19.26 10.15
-v -17.94 19.26 10.15
-v -18.02 19.12 10.05
-v -18.02 19.26 10.05
-v -17.88 19.26 11.57
-v -17.88 19.12 11.57
-v -12.87 20.21 16.02
-v -12.87 19.23 16.02
-v -12.44 19.21 16.02
-v -12.44 20.52 16.02
-v -13.21 19.26 15.92
-v -13.21 19.12 15.92
-v -13.20 19.12 16.02
-v -13.20 19.26 16.02
-v -12.44 20.75 16.00
-v -13.10 20.29 15.95
-v -13.09 20.29 16.05
-v -12.43 20.75 16.10
-v -11.69 19.12 15.79
-v -11.69 19.26 15.79
-v -11.68 19.26 15.89
-v -11.68 19.12 15.89
-v -12.44 19.07 16.00
-v -11.80 19.12 15.84
-v -11.79 19.12 15.94
-v -12.43 19.07 16.10
-v -13.08 19.12 16.16
-v -12.85 19.23 16.20
-v -13.08 19.26 16.16
-v -12.86 20.21 16.09
-v -12.43 20.52 16.10
-v -11.78 19.26 16.04
-v -12.00 19.24 16.12
-v -11.78 19.12 16.04
-v -12.42 19.07 16.20
-v -12.42 19.21 16.20
-v -12.01 20.21 15.94
-v -12.01 19.24 15.94
-v -11.80 20.29 15.84
-v -11.79 20.29 15.94
-v -13.10 19.12 15.95
-v -13.09 19.12 16.05
-v -12.01 20.21 16.01
-v -12.86 19.23 16.09
-v -12.01 19.24 16.01
-v -12.43 19.21 16.10
-v -11.79 19.26 15.94
-v -11.80 19.26 15.84
-v -13.10 19.26 15.95
-v -13.09 19.26 16.05
-v -13.19 19.12 16.13
-v -13.19 19.26 16.13
-v -11.67 19.26 16.00
-v -11.67 19.12 16.00
-v -9.24 23.34 12.52
-v -8.56 24.92 12.99
-v -9.10 24.92 13.76
-v -9.78 23.34 13.29
-v -9.53 28.41 12.29
-v -8.63 28.41 12.92
-v -9.18 28.41 13.70
-v -10.08 28.41 13.07
-v -12.87 27.21 14.81
-v -12.87 26.24 14.81
-v -12.44 26.21 14.82
-v -12.44 27.52 14.82
-v -13.21 26.26 14.72
-v -13.21 26.12 14.72
-v -13.20 26.12 14.82
-v -13.20 26.26 14.82
-v -12.44 27.75 14.80
-v -13.10 27.30 14.75
-v -13.09 27.30 14.85
-v -12.43 27.75 14.89
-v -11.69 26.12 14.59
-v -11.69 26.26 14.59
-v -11.68 26.26 14.69
-v -11.68 26.12 14.69
-v -12.44 26.07 14.80
-v -11.80 26.12 14.64
-v -11.79 26.12 14.73
-v -12.43 26.07 14.89
-v -13.08 26.12 14.96
-v -12.85 26.24 14.99
-v -13.08 26.26 14.96
-v -12.86 27.21 14.89
-v -12.43 27.52 14.89
-v -11.78 26.26 14.84
-v -12.00 26.25 14.92
-v -11.78 26.12 14.84
-v -12.42 26.07 15.00
-v -12.42 26.21 15.00
-v -12.01 27.21 14.74
-v -12.01 26.25 14.74
-v -11.80 27.30 14.64
-v -11.79 27.30 14.73
-v -13.10 26.12 14.75
-v -13.09 26.12 14.85
-v -12.01 27.21 14.81
-v -12.86 26.24 14.89
-v -12.01 26.25 14.81
-v -12.43 26.21 14.89
-v -11.79 26.26 14.73
-v -11.80 26.26 14.64
-v -13.10 26.26 14.75
-v -13.09 26.26 14.85
-v -13.19 26.12 14.93
-v -13.19 26.26 14.93
-v -11.67 26.26 14.79
-v -11.67 26.12 14.79
-v -14.41 23.34 14.01
-v -14.88 24.92 14.68
-v -15.65 24.92 14.14
-v -15.18 23.34 13.46
-v -14.18 28.41 13.71
-v -14.81 28.41 14.61
-v -15.59 28.41 14.07
-v -14.96 28.41 13.17
-v -8.43 27.21 10.98
-v -8.43 26.24 10.98
-v -8.42 26.21 10.55
-v -8.42 27.52 10.55
-v -8.52 26.26 11.32
-v -8.52 26.12 11.32
-v -8.42 26.12 11.31
-v -8.42 26.26 11.31
-v -8.45 27.75 10.55
-v -8.49 27.30 11.21
-v -8.39 27.30 11.20
-v -8.35 27.75 10.54
-v -8.65 26.12 9.80
-v -8.65 26.26 9.80
-v -8.56 26.26 9.79
-v -8.56 26.12 9.79
-v -8.45 26.07 10.55
-v -8.61 26.12 9.91
-v -8.51 26.12 9.90
-v -8.35 26.07 10.54
-v -8.29 26.12 11.19
-v -8.25 26.24 10.96
-v -8.29 26.26 11.19
-v -8.35 27.21 10.97
-v -8.35 27.52 10.54
-v -8.40 26.26 9.89
-v -8.32 26.25 10.11
-v -8.40 26.12 9.89
-v -8.24 26.07 10.53
-v -8.24 26.21 10.53
-v -8.50 27.21 10.13
-v -8.50 26.25 10.13
-v -8.61 27.30 9.91
-v -8.51 27.30 9.90
-v -8.49 26.12 11.21
-v -8.39 26.12 11.20
-v -8.43 27.21 10.12
-v -8.35 26.24 10.97
-v -8.43 26.25 10.12
-v -8.35 26.21 10.54
-v -8.51 26.26 9.90
-v -8.61 26.26 9.91
-v -8.49 26.26 11.21
-v -8.39 26.26 11.20
-v -8.32 26.12 11.30
-v -8.32 26.26 11.30
-v -8.45 26.26 9.78
-v -8.45 26.12 9.78
-v -13.04 12.70 6.81
-v -13.04 14.28 5.99
-v -12.09 14.28 5.99
-v -12.09 12.70 6.81
-v -13.04 17.34 6.74
-v -13.04 17.34 5.64
-v -12.09 17.34 5.64
-v -12.09 17.34 6.74
-v -8.98 12.70 12.20
-v -8.27 14.28 12.61
-v -8.74 14.28 13.43
-v -9.46 12.70 13.02
-v -8.92 17.34 12.24
-v -7.97 17.34 12.79
-v -8.44 17.34 13.61
-v -9.39 17.34 13.06
-v -12.09 12.70 14.54
-v -12.09 14.28 15.36
-v -13.04 14.28 15.36
-v -13.04 12.70 14.54
-v -12.09 17.34 14.62
-v -12.09 17.34 15.71
-v -13.04 17.34 15.71
-v -13.04 17.34 14.62
-v -10.73 23.34 7.35
-v -10.25 24.92 6.67
-v -9.48 24.92 7.22
-v -9.95 23.34 7.89
-v -10.95 28.41 7.65
-v -10.32 28.41 6.74
-v -9.55 28.41 7.29
-v -10.18 28.41 8.19
-v -9.46 12.70 8.34
-v -8.74 14.28 7.92
-v -8.27 14.28 8.74
-v -8.98 12.70 9.15
-v -9.39 17.34 8.30
-v -8.44 17.34 7.75
-v -7.97 17.34 8.57
-v -8.92 17.34 9.12
-v -7.23 20.21 10.98
-v -7.23 19.23 10.98
-v -7.22 19.21 10.55
-v -7.22 20.52 10.55
-v -7.32 19.26 11.32
-v -7.32 19.12 11.32
-v -7.22 19.12 11.31
-v -7.22 19.26 11.31
-v -7.24 20.75 10.55
-v -7.29 20.29 11.21
-v -7.19 20.29 11.20
-v -7.15 20.75 10.54
-v -7.45 19.12 9.80
-v -7.45 19.26 9.80
-v -7.35 19.26 9.79
-v -7.35 19.12 9.79
-v -7.24 19.07 10.55
-v -7.41 19.12 9.91
-v -7.31 19.12 9.90
-v -7.15 19.07 10.54
-v -7.09 19.12 11.19
-v -7.05 19.23 10.96
-v -7.09 19.26 11.19
-v -7.15 20.21 10.97
-v -7.15 20.52 10.54
-v -7.20 19.26 9.89
-v -7.12 19.24 10.11
-v -7.20 19.12 9.89
-v -7.04 19.07 10.53
-v -7.04 19.21 10.53
-v -7.30 20.21 10.13
-v -7.30 19.24 10.13
-v -7.41 20.29 9.91
-v -7.31 20.29 9.90
-v -7.29 19.12 11.21
-v -7.19 19.12 11.20
-v -7.23 20.21 10.12
-v -7.15 19.23 10.97
-v -7.23 19.24 10.12
-v -7.15 19.21 10.54
-v -7.31 19.26 9.90
-v -7.41 19.26 9.91
-v -7.29 19.26 11.21
-v -7.19 19.26 11.20
-v -7.11 19.12 11.30
-v -7.11 19.26 11.30
-v -7.25 19.26 9.78
-v -7.25 19.12 9.78
-v -12.26 27.21 6.54
-v -12.26 26.24 6.54
-v -12.69 26.21 6.53
-v -12.69 27.52 6.53
-v -11.92 26.26 6.63
-v -11.92 26.12 6.63
-v -11.93 26.12 6.53
-v -11.93 26.26 6.53
-v -12.69 27.75 6.56
-v -12.03 27.30 6.60
-v -12.04 27.30 6.51
-v -12.70 27.75 6.46
-v -13.44 26.12 6.76
-v -13.44 26.26 6.76
-v -13.45 26.26 6.67
-v -13.45 26.12 6.67
-v -12.69 26.07 6.56
-v -13.34 26.12 6.72
-v -13.34 26.12 6.62
-v -12.70 26.07 6.46
-v -12.05 26.12 6.40
-v -12.28 26.24 6.36
-v -12.05 26.26 6.40
-v -12.27 27.21 6.47
-v -12.70 27.52 6.46
-v -13.35 26.26 6.51
-v -13.13 26.25 6.43
-v -13.35 26.12 6.51
-v -12.71 26.07 6.35
-v -12.71 26.21 6.35
-v -13.12 27.21 6.61
-v -13.12 26.25 6.61
-v -13.34 27.30 6.72
-v -13.34 27.30 6.62
-v -12.03 26.12 6.60
-v -12.04 26.12 6.51
-v -13.12 27.21 6.54
-v -12.27 26.24 6.47
-v -13.12 26.25 6.54
-v -12.70 26.21 6.46
-v -13.34 26.26 6.62
-v -13.34 26.26 6.72
-v -12.03 26.26 6.60
-v -12.04 26.26 6.51
-v -11.94 26.12 6.43
-v -11.94 26.26 6.43
-v -13.46 26.26 6.56
-v -13.46 26.12 6.56
-v -16.15 12.70 9.15
-v -16.86 14.28 8.74
-v -16.39 14.28 7.92
-v -15.67 12.70 8.34
-v -16.21 17.34 9.12
-v -17.17 17.34 8.57
-v -16.69 17.34 7.75
-v -15.74 17.34 8.30
-v -12.26 20.21 5.34
-v -12.26 19.23 5.34
-v -12.69 19.21 5.33
-v -12.69 20.52 5.33
-v -11.92 19.26 5.43
-v -11.92 19.12 5.43
-v -11.93 19.12 5.33
-v -11.93 19.26 5.33
-v -12.69 20.75 5.36
-v -12.03 20.29 5.40
-v -12.04 20.29 5.30
-v -12.70 20.75 5.26
-v -13.44 19.12 5.56
-v -13.44 19.26 5.56
-v -13.45 19.26 5.47
-v -13.45 19.12 5.47
-v -12.69 19.07 5.36
-v -13.34 19.12 5.52
-v -13.34 19.12 5.42
-v -12.70 19.07 5.26
-v -12.05 19.12 5.20
-v -12.28 19.23 5.16
-v -12.05 19.26 5.20
-v -12.27 20.21 5.26
-v -12.70 20.52 5.26
-v -13.35 19.26 5.31
-v -13.13 19.24 5.23
-v -13.35 19.12 5.31
-v -12.71 19.07 5.15
-v -12.71 19.21 5.15
-v -13.12 20.21 5.41
-v -13.12 19.24 5.41
-v -13.34 20.29 5.52
-v -13.34 20.29 5.42
-v -12.03 19.12 5.40
-v -12.04 19.12 5.30
-v -13.12 20.21 5.34
-v -12.27 19.23 5.26
-v -13.12 19.24 5.34
-v -12.70 19.21 5.26
-v -13.34 19.26 5.42
-v -13.34 19.26 5.52
-v -12.03 19.26 5.40
-v -12.04 19.26 5.30
-v -11.94 19.12 5.23
-v -11.94 19.26 5.23
-v -13.46 19.26 5.36
-v -13.46 19.12 5.36
-v -15.89 23.34 8.84
-v -16.57 24.92 8.36
-v -16.03 24.92 7.59
-v -15.35 23.34 8.06
-v -15.60 28.41 9.06
-v -16.50 28.41 8.43
-v -15.96 28.41 7.66
-v -15.06 28.41 8.29
-v -16.70 27.21 10.37
-v -16.70 26.24 10.37
-v -16.71 26.21 10.80
-v -16.71 27.52 10.80
-v -16.61 26.26 10.03
-v -16.61 26.12 10.03
-v -16.71 26.12 10.04
-v -16.71 26.26 10.04
-v -16.69 27.75 10.80
-v -16.64 27.30 10.15
-v -16.74 27.30 10.15
-v -16.78 27.75 10.81
-v -16.48 26.12 11.55
-v -16.48 26.26 11.55
-v -16.58 26.26 11.56
-v -16.58 26.12 11.56
-v -16.69 26.07 10.80
-v -16.53 26.12 11.45
-v -16.62 26.12 11.45
-v -16.78 26.07 10.81
-v -16.84 26.12 10.16
-v -16.88 26.24 10.39
-v -16.84 26.26 10.16
-v -16.78 27.21 10.38
-v -16.78 27.52 10.81
-v -16.73 26.26 11.46
-v -16.81 26.25 11.24
-v -16.73 26.12 11.46
-v -16.89 26.07 10.82
-v -16.89 26.21 10.82
-v -16.63 27.21 11.23
-v -16.63 26.25 11.23
-v -16.53 27.30 11.45
-v -16.62 27.30 11.45
-v -16.64 26.12 10.15
-v -16.74 26.12 10.15
-v -16.70 27.21 11.23
-v -16.78 26.24 10.38
-v -16.70 26.25 11.23
-v -16.78 26.21 10.81
-v -16.62 26.26 11.45
-v -16.53 26.26 11.45
-v -16.64 26.26 10.15
-v -16.74 26.26 10.15
-v -16.82 26.12 10.05
-v -16.82 26.26 10.05
-v -16.68 26.26 11.57
-v -16.68 26.12 11.57
-v -15.67 12.70 13.02
-v -16.39 14.28 13.43
-v -16.86 14.28 12.61
-v -16.15 12.70 12.20
-v -15.74 17.34 13.06
-v -16.69 17.34 13.61
-v -17.17 17.34 12.79
-v -16.21 17.34 12.24
-v -16.83 28.50 13.14
-v -16.83 30.29 13.14
-v -17.49 30.29 10.68
-v -17.49 28.50 10.68
-v -15.03 28.50 14.94
-v -15.03 30.29 14.94
-v -12.57 28.50 15.60
-v -12.57 30.29 15.60
-v -10.10 28.50 14.94
-v -10.10 30.29 14.94
-v -8.30 28.50 13.14
-v -8.30 30.29 13.14
-v -7.64 28.50 10.68
-v -7.64 30.29 10.68
-v -8.30 28.50 8.21
-v -8.30 30.29 8.21
-v -10.10 28.50 6.41
-v -10.10 30.29 6.41
-v -12.57 28.50 5.75
-v -12.57 30.29 5.75
-v -15.03 28.50 6.41
-v -15.03 30.29 6.41
-v -16.83 28.50 8.21
-v -16.83 30.29 8.21
-v -16.21 30.29 12.78
-v -16.78 30.29 10.68
-v -15.03 30.90 14.94
-v -14.67 30.90 14.32
-v -16.21 30.90 12.78
-v -16.83 30.90 13.14
-v -12.57 30.29 14.89
-v -14.67 30.29 14.32
-v -10.10 30.90 14.94
-v -10.46 30.90 14.32
-v -12.57 30.90 14.89
-v -12.57 30.90 15.60
-v -8.92 30.29 12.78
-v -10.46 30.29 14.32
-v -7.64 30.90 10.68
-v -8.36 30.90 10.68
-v -8.92 30.90 12.78
-v -8.30 30.90 13.14
-v -8.92 30.29 8.57
-v -8.36 30.29 10.68
-v -10.10 30.90 6.41
-v -10.46 30.90 7.03
-v -8.92 30.90 8.57
-v -8.30 30.90 8.21
-v -12.57 30.29 6.47
-v -10.46 30.29 7.03
-v -15.03 30.90 6.41
-v -14.67 30.90 7.03
-v -12.57 30.90 6.47
-v -12.57 30.90 5.75
-v -16.21 30.29 8.57
-v -14.67 30.29 7.03
-v -17.49 30.90 10.68
-v -16.78 30.90 10.68
-v -16.21 30.90 8.57
-v -16.83 30.90 8.21
-v -16.21 29.42 12.78
-v -16.78 29.42 10.68
-v -14.67 29.42 14.32
-v -12.57 29.42 14.89
-v -10.46 29.42 14.32
-v -8.92 29.42 12.78
-v -8.36 29.42 10.68
-v -8.92 29.42 8.57
-v -10.46 29.42 7.03
-v -12.57 29.42 6.47
-v -14.67 29.42 7.03
-v -16.21 29.42 8.57
-v -12.57 29.42 10.68
-v 17.17 7.76 10.68
-v 16.55 7.76 12.98
-v 16.55 0.00 12.98
-v 17.17 0.00 10.68
-v 14.87 7.76 14.66
-v 14.87 0.00 14.66
-v 12.57 7.76 15.28
-v 12.57 0.00 15.28
-v 10.27 7.76 14.66
-v 10.27 0.00 14.66
-v 8.58 7.76 12.98
-v 8.58 0.00 12.98
-v 7.97 7.76 10.68
-v 7.97 0.00 10.68
-v 8.58 7.76 8.38
-v 8.58 0.00 8.38
-v 10.27 7.76 6.69
-v 10.27 0.00 6.69
-v 12.57 7.76 6.08
-v 12.57 0.00 6.08
-v 14.87 7.76 6.69
-v 14.87 0.00 6.69
-v 16.55 7.76 8.38
-v 16.55 0.00 8.38
-v 16.78 7.76 13.11
-v 17.43 7.76 10.68
-v 17.43 8.57 10.68
-v 16.78 8.57 13.11
-v 15.00 7.76 14.89
-v 15.00 8.57 14.89
-v 12.57 7.76 15.54
-v 12.57 8.57 15.54
-v 10.13 7.76 14.89
-v 10.13 8.57 14.89
-v 8.35 7.76 13.11
-v 8.35 8.57 13.11
-v 7.70 7.76 10.68
-v 7.70 8.57 10.68
-v 8.35 7.76 8.24
-v 8.35 8.57 8.24
-v 10.13 7.76 6.46
-v 10.13 8.57 6.46
-v 12.57 7.76 5.81
-v 12.57 8.57 5.81
-v 15.00 7.76 6.46
-v 15.00 8.57 6.46
-v 16.78 7.76 8.24
-v 16.78 8.57 8.24
-v 17.17 8.57 10.68
-v 16.55 8.57 12.98
-v 14.87 8.57 14.66
-v 12.57 8.57 15.28
-v 10.27 8.57 14.66
-v 8.58 8.57 12.98
-v 7.97 8.57 10.68
-v 8.58 8.57 8.38
-v 10.27 8.57 6.69
-v 12.57 8.57 6.08
-v 14.87 8.57 6.69
-v 16.55 8.57 8.38
-v 17.17 16.89 10.68
-v 16.55 16.89 12.98
-v 14.87 16.89 14.66
-v 12.57 16.89 15.28
-v 10.27 16.89 14.66
-v 8.58 16.89 12.98
-v 7.97 16.89 10.68
-v 8.58 16.89 8.38
-v 10.27 16.89 6.69
-v 12.57 16.89 6.08
-v 14.87 16.89 6.69
-v 16.55 16.89 8.38
-v 17.13 21.30 13.31
-v 17.83 21.30 10.68
-v 18.23 21.30 10.68
-v 17.47 21.30 13.51
-v 15.20 21.30 15.24
-v 15.40 21.30 15.58
-v 12.57 21.30 15.94
-v 12.57 21.30 16.34
-v 9.93 21.30 15.24
-v 9.73 21.30 15.58
-v 8.01 21.30 13.31
-v 7.66 21.30 13.51
-v 7.30 21.30 10.68
-v 6.90 21.30 10.68
-v 8.01 21.30 8.04
-v 7.66 21.30 7.84
-v 9.93 21.30 6.12
-v 9.73 21.30 5.77
-v 12.57 21.30 5.41
-v 12.57 21.30 5.01
-v 15.20 21.30 6.12
-v 15.40 21.30 5.77
-v 17.13 21.30 8.04
-v 17.47 21.30 7.84
-v 16.72 24.76 10.68
-v 16.17 24.76 12.76
-v 14.64 24.76 14.28
-v 12.57 24.76 14.83
-v 10.49 24.76 14.28
-v 8.97 24.76 12.76
-v 8.41 24.76 10.68
-v 8.97 24.76 8.60
-v 10.49 24.76 7.08
-v 12.57 24.76 6.52
-v 14.64 24.76 7.08
-v 16.17 24.76 8.60
-v 16.69 28.50 10.68
-v 16.13 28.50 12.74
-v 14.63 28.50 14.24
-v 12.57 28.50 14.80
-v 10.51 28.50 14.24
-v 9.00 28.50 12.74
-v 8.45 28.50 10.68
-v 9.00 28.50 8.62
-v 10.51 28.50 7.11
-v 12.57 28.50 6.56
-v 14.63 28.50 7.11
-v 16.13 28.50 8.62
-v 17.83 17.36 10.68
-v 17.13 17.36 13.31
-v 15.20 17.36 15.24
-v 12.57 17.36 15.94
-v 9.93 17.36 15.24
-v 8.01 17.36 13.31
-v 7.30 17.36 10.68
-v 8.01 17.36 8.04
-v 9.93 17.36 6.12
-v 12.57 17.36 5.41
-v 15.20 17.36 6.12
-v 17.13 17.36 8.04
-v 17.91 20.21 10.37
-v 17.91 20.52 10.80
-v 17.91 19.21 10.80
-v 17.91 19.23 10.37
-v 17.81 19.26 10.03
-v 17.91 19.26 10.04
-v 17.91 19.12 10.04
-v 17.81 19.12 10.03
-v 17.89 20.75 10.80
-v 17.98 20.75 10.81
-v 17.94 20.29 10.15
-v 17.84 20.29 10.15
-v 17.68 19.12 11.55
-v 17.78 19.12 11.56
-v 17.78 19.26 11.56
-v 17.68 19.26 11.55
-v 17.89 19.07 10.80
-v 17.98 19.07 10.81
-v 17.82 19.12 11.45
-v 17.73 19.12 11.45
-v 18.05 19.12 10.16
-v 18.05 19.26 10.16
-v 18.08 19.23 10.39
-v 17.98 20.52 10.81
-v 17.98 20.21 10.38
-v 17.93 19.26 11.46
-v 17.93 19.12 11.46
-v 18.01 19.24 11.24
-v 18.09 19.07 10.82
-v 18.09 19.21 10.82
-v 17.83 20.21 11.23
-v 17.83 19.24 11.23
-v 17.73 20.29 11.45
-v 17.82 20.29 11.45
-v 17.84 19.12 10.15
-v 17.94 19.12 10.15
-v 17.90 20.21 11.23
-v 17.98 19.23 10.38
-v 17.90 19.24 11.23
-v 17.98 19.21 10.81
-v 17.82 19.26 11.45
-v 17.73 19.26 11.45
-v 17.94 19.26 10.15
-v 17.84 19.26 10.15
-v 18.02 19.26 10.05
-v 18.02 19.12 10.05
-v 17.88 19.12 11.57
-v 17.88 19.26 11.57
-v 12.87 20.21 16.02
-v 12.44 20.52 16.02
-v 12.44 19.21 16.02
-v 12.87 19.23 16.02
-v 13.21 19.26 15.92
-v 13.20 19.26 16.02
-v 13.20 19.12 16.02
-v 13.21 19.12 15.92
-v 12.44 20.75 16.00
-v 12.43 20.75 16.10
-v 13.09 20.29 16.05
-v 13.10 20.29 15.95
-v 11.69 19.12 15.79
-v 11.68 19.12 15.89
-v 11.68 19.26 15.89
-v 11.69 19.26 15.79
-v 12.44 19.07 16.00
-v 12.43 19.07 16.10
-v 11.79 19.12 15.94
-v 11.80 19.12 15.84
-v 13.08 19.12 16.16
-v 13.08 19.26 16.16
-v 12.85 19.23 16.20
-v 12.43 20.52 16.10
-v 12.86 20.21 16.09
-v 11.78 19.26 16.04
-v 11.78 19.12 16.04
-v 12.00 19.24 16.12
-v 12.42 19.07 16.20
-v 12.42 19.21 16.20
-v 12.01 20.21 15.94
-v 12.01 19.24 15.94
-v 11.80 20.29 15.84
-v 11.79 20.29 15.94
-v 13.10 19.12 15.95
-v 13.09 19.12 16.05
-v 12.01 20.21 16.01
-v 12.86 19.23 16.09
-v 12.01 19.24 16.01
-v 12.43 19.21 16.10
-v 11.79 19.26 15.94
-v 11.80 19.26 15.84
-v 13.09 19.26 16.05
-v 13.10 19.26 15.95
-v 13.19 19.26 16.13
-v 13.19 19.12 16.13
-v 11.67 19.12 16.00
-v 11.67 19.26 16.00
-v 9.24 23.34 12.52
-v 9.78 23.34 13.29
-v 9.10 24.92 13.76
-v 8.56 24.92 12.99
-v 8.63 28.41 12.92
-v 9.53 28.41 12.29
-v 9.18 28.41 13.70
-v 10.08 28.41 13.07
-v 12.87 27.21 14.81
-v 12.44 27.52 14.82
-v 12.44 26.21 14.82
-v 12.87 26.24 14.81
-v 13.21 26.26 14.72
-v 13.20 26.26 14.82
-v 13.20 26.12 14.82
-v 13.21 26.12 14.72
-v 12.44 27.75 14.80
-v 12.43 27.75 14.89
-v 13.09 27.30 14.85
-v 13.10 27.30 14.75
-v 11.69 26.12 14.59
-v 11.68 26.12 14.69
-v 11.68 26.26 14.69
-v 11.69 26.26 14.59
-v 12.44 26.07 14.80
-v 12.43 26.07 14.89
-v 11.79 26.12 14.73
-v 11.80 26.12 14.64
-v 13.08 26.12 14.96
-v 13.08 26.26 14.96
-v 12.85 26.24 14.99
-v 12.43 27.52 14.89
-v 12.86 27.21 14.89
-v 11.78 26.26 14.84
-v 11.78 26.12 14.84
-v 12.00 26.25 14.92
-v 12.42 26.07 15.00
-v 12.42 26.21 15.00
-v 12.01 27.21 14.74
-v 12.01 26.25 14.74
-v 11.80 27.30 14.64
-v 11.79 27.30 14.73
-v 13.10 26.12 14.75
-v 13.09 26.12 14.85
-v 12.01 27.21 14.81
-v 12.86 26.24 14.89
-v 12.01 26.25 14.81
-v 12.43 26.21 14.89
-v 11.79 26.26 14.73
-v 11.80 26.26 14.64
-v 13.09 26.26 14.85
-v 13.10 26.26 14.75
-v 13.19 26.26 14.93
-v 13.19 26.12 14.93
-v 11.67 26.12 14.79
-v 11.67 26.26 14.79
-v 14.41 23.34 14.01
-v 15.18 23.34 13.46
-v 15.65 24.92 14.14
-v 14.88 24.92 14.68
-v 14.81 28.41 14.61
-v 14.18 28.41 13.71
-v 15.59 28.41 14.07
-v 14.96 28.41 13.17
-v 8.43 27.21 10.98
-v 8.42 27.52 10.55
-v 8.42 26.21 10.55
-v 8.43 26.24 10.98
-v 8.52 26.26 11.32
-v 8.42 26.26 11.31
-v 8.42 26.12 11.31
-v 8.52 26.12 11.32
-v 8.45 27.75 10.55
-v 8.35 27.75 10.54
-v 8.39 27.30 11.20
-v 8.49 27.30 11.21
-v 8.65 26.12 9.80
-v 8.56 26.12 9.79
-v 8.56 26.26 9.79
-v 8.65 26.26 9.80
-v 8.45 26.07 10.55
-v 8.35 26.07 10.54
-v 8.51 26.12 9.90
-v 8.61 26.12 9.91
-v 8.29 26.12 11.19
-v 8.29 26.26 11.19
-v 8.25 26.24 10.96
-v 8.35 27.52 10.54
-v 8.35 27.21 10.97
-v 8.40 26.26 9.89
-v 8.40 26.12 9.89
-v 8.32 26.25 10.11
-v 8.24 26.07 10.53
-v 8.24 26.21 10.53
-v 8.50 27.21 10.13
-v 8.50 26.25 10.13
-v 8.61 27.30 9.91
-v 8.51 27.30 9.90
-v 8.49 26.12 11.21
-v 8.39 26.12 11.20
-v 8.43 27.21 10.12
-v 8.35 26.24 10.97
-v 8.43 26.25 10.12
-v 8.35 26.21 10.54
-v 8.51 26.26 9.90
-v 8.61 26.26 9.91
-v 8.39 26.26 11.20
-v 8.49 26.26 11.21
-v 8.32 26.26 11.30
-v 8.32 26.12 11.30
-v 8.45 26.12 9.78
-v 8.45 26.26 9.78
-v 13.04 12.70 6.81
-v 12.09 12.70 6.81
-v 12.09 14.28 5.99
-v 13.04 14.28 5.99
-v 13.04 17.34 5.64
-v 13.04 17.34 6.74
-v 12.09 17.34 5.64
-v 12.09 17.34 6.74
-v 8.98 12.70 12.20
-v 9.46 12.70 13.02
-v 8.74 14.28 13.43
-v 8.27 14.28 12.61
-v 7.97 17.34 12.79
-v 8.92 17.34 12.24
-v 8.44 17.34 13.61
-v 9.39 17.34 13.06
-v 12.09 12.70 14.54
-v 13.04 12.70 14.54
-v 13.04 14.28 15.36
-v 12.09 14.28 15.36
-v 12.09 17.34 15.71
-v 12.09 17.34 14.62
-v 13.04 17.34 15.71
-v 13.04 17.34 14.62
-v 10.73 23.34 7.35
-v 9.95 23.34 7.89
-v 9.48 24.92 7.22
-v 10.25 24.92 6.67
-v 10.32 28.41 6.74
-v 10.95 28.41 7.65
-v 9.55 28.41 7.29
-v 10.18 28.41 8.19
-v 9.46 12.70 8.34
-v 8.98 12.70 9.15
-v 8.27 14.28 8.74
-v 8.74 14.28 7.92
-v 8.44 17.34 7.75
-v 9.39 17.34 8.30
-v 7.97 17.34 8.57
-v 8.92 17.34 9.12
-v 7.23 20.21 10.98
-v 7.22 20.52 10.55
-v 7.22 19.21 10.55
-v 7.23 19.23 10.98
-v 7.32 19.26 11.32
-v 7.22 19.26 11.31
-v 7.22 19.12 11.31
-v 7.32 19.12 11.32
-v 7.24 20.75 10.55
-v 7.15 20.75 10.54
-v 7.19 20.29 11.20
-v 7.29 20.29 11.21
-v 7.45 19.12 9.80
-v 7.35 19.12 9.79
-v 7.35 19.26 9.79
-v 7.45 19.26 9.80
-v 7.24 19.07 10.55
-v 7.15 19.07 10.54
-v 7.31 19.12 9.90
-v 7.41 19.12 9.91
-v 7.09 19.12 11.19
-v 7.09 19.26 11.19
-v 7.05 19.23 10.96
-v 7.15 20.52 10.54
-v 7.15 20.21 10.97
-v 7.20 19.26 9.89
-v 7.20 19.12 9.89
-v 7.12 19.24 10.11
-v 7.04 19.07 10.53
-v 7.04 19.21 10.53
-v 7.30 20.21 10.13
-v 7.30 19.24 10.13
-v 7.41 20.29 9.91
-v 7.31 20.29 9.90
-v 7.29 19.12 11.21
-v 7.19 19.12 11.20
-v 7.23 20.21 10.12
-v 7.15 19.23 10.97
-v 7.23 19.24 10.12
-v 7.15 19.21 10.54
-v 7.31 19.26 9.90
-v 7.41 19.26 9.91
-v 7.19 19.26 11.20
-v 7.29 19.26 11.21
-v 7.11 19.26 11.30
-v 7.11 19.12 11.30
-v 7.25 19.12 9.78
-v 7.25 19.26 9.78
-v 12.26 27.21 6.54
-v 12.69 27.52 6.53
-v 12.69 26.21 6.53
-v 12.26 26.24 6.54
-v 11.92 26.26 6.63
-v 11.93 26.26 6.53
-v 11.93 26.12 6.53
-v 11.92 26.12 6.63
-v 12.69 27.75 6.56
-v 12.70 27.75 6.46
-v 12.04 27.30 6.51
-v 12.03 27.30 6.60
-v 13.44 26.12 6.76
-v 13.45 26.12 6.67
-v 13.45 26.26 6.67
-v 13.44 26.26 6.76
-v 12.69 26.07 6.56
-v 12.70 26.07 6.46
-v 13.34 26.12 6.62
-v 13.34 26.12 6.72
-v 12.05 26.12 6.40
-v 12.05 26.26 6.40
-v 12.28 26.24 6.36
-v 12.70 27.52 6.46
-v 12.27 27.21 6.47
-v 13.35 26.26 6.51
-v 13.35 26.12 6.51
-v 13.13 26.25 6.43
-v 12.71 26.07 6.35
-v 12.71 26.21 6.35
-v 13.12 27.21 6.61
-v 13.12 26.25 6.61
-v 13.34 27.30 6.72
-v 13.34 27.30 6.62
-v 12.03 26.12 6.60
-v 12.04 26.12 6.51
-v 13.12 27.21 6.54
-v 12.27 26.24 6.47
-v 13.12 26.25 6.54
-v 12.70 26.21 6.46
-v 13.34 26.26 6.62
-v 13.34 26.26 6.72
-v 12.04 26.26 6.51
-v 12.03 26.26 6.60
-v 11.94 26.26 6.43
-v 11.94 26.12 6.43
-v 13.46 26.12 6.56
-v 13.46 26.26 6.56
-v 16.15 12.70 9.15
-v 15.67 12.70 8.34
-v 16.39 14.28 7.92
-v 16.86 14.28 8.74
-v 17.17 17.34 8.57
-v 16.21 17.34 9.12
-v 16.69 17.34 7.75
-v 15.74 17.34 8.30
-v 12.26 20.21 5.34
-v 12.69 20.52 5.33
-v 12.69 19.21 5.33
-v 12.26 19.23 5.34
-v 11.92 19.26 5.43
-v 11.93 19.26 5.33
-v 11.93 19.12 5.33
-v 11.92 19.12 5.43
-v 12.69 20.75 5.36
-v 12.70 20.75 5.26
-v 12.04 20.29 5.30
-v 12.03 20.29 5.40
-v 13.44 19.12 5.56
-v 13.45 19.12 5.47
-v 13.45 19.26 5.47
-v 13.44 19.26 5.56
-v 12.69 19.07 5.36
-v 12.70 19.07 5.26
-v 13.34 19.12 5.42
-v 13.34 19.12 5.52
-v 12.05 19.12 5.20
-v 12.05 19.26 5.20
-v 12.28 19.23 5.16
-v 12.70 20.52 5.26
-v 12.27 20.21 5.26
-v 13.35 19.26 5.31
-v 13.35 19.12 5.31
-v 13.13 19.24 5.23
-v 12.71 19.07 5.15
-v 12.71 19.21 5.15
-v 13.12 20.21 5.41
-v 13.12 19.24 5.41
-v 13.34 20.29 5.52
-v 13.34 20.29 5.42
-v 12.03 19.12 5.40
-v 12.04 19.12 5.30
-v 13.12 20.21 5.34
-v 12.27 19.23 5.26
-v 13.12 19.24 5.34
-v 12.70 19.21 5.26
-v 13.34 19.26 5.42
-v 13.34 19.26 5.52
-v 12.04 19.26 5.30
-v 12.03 19.26 5.40
-v 11.94 19.26 5.23
-v 11.94 19.12 5.23
-v 13.46 19.12 5.36
-v 13.46 19.26 5.36
-v 15.89 23.34 8.84
-v 15.35 23.34 8.06
-v 16.03 24.92 7.59
-v 16.57 24.92 8.36
-v 16.50 28.41 8.43
-v 15.60 28.41 9.06
-v 15.96 28.41 7.66
-v 15.06 28.41 8.29
-v 16.70 27.21 10.37
-v 16.71 27.52 10.80
-v 16.71 26.21 10.80
-v 16.70 26.24 10.37
-v 16.61 26.26 10.03
-v 16.71 26.26 10.04
-v 16.71 26.12 10.04
-v 16.61 26.12 10.03
-v 16.69 27.75 10.80
-v 16.78 27.75 10.81
-v 16.74 27.30 10.15
-v 16.64 27.30 10.15
-v 16.48 26.12 11.55
-v 16.58 26.12 11.56
-v 16.58 26.26 11.56
-v 16.48 26.26 11.55
-v 16.69 26.07 10.80
-v 16.78 26.07 10.81
-v 16.62 26.12 11.45
-v 16.53 26.12 11.45
-v 16.84 26.12 10.16
-v 16.84 26.26 10.16
-v 16.88 26.24 10.39
-v 16.78 27.52 10.81
-v 16.78 27.21 10.38
-v 16.73 26.26 11.46
-v 16.73 26.12 11.46
-v 16.81 26.25 11.24
-v 16.89 26.07 10.82
-v 16.89 26.21 10.82
-v 16.63 27.21 11.23
-v 16.63 26.25 11.23
-v 16.53 27.30 11.45
-v 16.62 27.30 11.45
-v 16.64 26.12 10.15
-v 16.74 26.12 10.15
-v 16.70 27.21 11.23
-v 16.78 26.24 10.38
-v 16.70 26.25 11.23
-v 16.78 26.21 10.81
-v 16.62 26.26 11.45
-v 16.53 26.26 11.45
-v 16.74 26.26 10.15
-v 16.64 26.26 10.15
-v 16.82 26.26 10.05
-v 16.82 26.12 10.05
-v 16.68 26.12 11.57
-v 16.68 26.26 11.57
-v 15.67 12.70 13.02
-v 16.15 12.70 12.20
-v 16.86 14.28 12.61
-v 16.39 14.28 13.43
-v 16.69 17.34 13.61
-v 15.74 17.34 13.06
-v 17.17 17.34 12.79
-v 16.21 17.34 12.24
-v 16.83 28.50 13.14
-v 17.49 28.50 10.68
-v 17.49 30.29 10.68
-v 16.83 30.29 13.14
-v 15.03 28.50 14.94
-v 15.03 30.29 14.94
-v 12.57 28.50 15.60
-v 12.57 30.29 15.60
-v 10.10 28.50 14.94
-v 10.10 30.29 14.94
-v 8.30 28.50 13.14
-v 8.30 30.29 13.14
-v 7.64 28.50 10.68
-v 7.64 30.29 10.68
-v 8.30 28.50 8.21
-v 8.30 30.29 8.21
-v 10.10 28.50 6.41
-v 10.10 30.29 6.41
-v 12.57 28.50 5.75
-v 12.57 30.29 5.75
-v 15.03 28.50 6.41
-v 15.03 30.29 6.41
-v 16.83 28.50 8.21
-v 16.83 30.29 8.21
-v 16.78 30.29 10.68
-v 16.21 30.29 12.78
-v 15.03 30.90 14.94
-v 16.83 30.90 13.14
-v 16.21 30.90 12.78
-v 14.67 30.90 14.32
-v 14.67 30.29 14.32
-v 12.57 30.29 14.89
-v 10.10 30.90 14.94
-v 12.57 30.90 15.60
-v 12.57 30.90 14.89
-v 10.46 30.90 14.32
-v 10.46 30.29 14.32
-v 8.92 30.29 12.78
-v 7.64 30.90 10.68
-v 8.30 30.90 13.14
-v 8.92 30.90 12.78
-v 8.36 30.90 10.68
-v 8.36 30.29 10.68
-v 8.92 30.29 8.57
-v 10.10 30.90 6.41
-v 8.30 30.90 8.21
-v 8.92 30.90 8.57
-v 10.46 30.90 7.03
-v 10.46 30.29 7.03
-v 12.57 30.29 6.47
-v 15.03 30.90 6.41
-v 12.57 30.90 5.75
-v 12.57 30.90 6.47
-v 14.67 30.90 7.03
-v 14.67 30.29 7.03
-v 16.21 30.29 8.57
-v 17.49 30.90 10.68
-v 16.83 30.90 8.21
-v 16.21 30.90 8.57
-v 16.78 30.90 10.68
-v 16.78 29.42 10.68
-v 16.21 29.42 12.78
-v 14.67 29.42 14.32
-v 12.57 29.42 14.89
-v 10.46 29.42 14.32
-v 8.92 29.42 12.78
-v 8.36 29.42 10.68
-v 8.92 29.42 8.57
-v 10.46 29.42 7.03
-v 12.57 29.42 6.47
-v 14.67 29.42 7.03
-v 16.21 29.42 8.57
-v 12.57 29.42 10.68
-v 16.55 0.00 -12.98
-v 16.55 7.76 -12.98
-v 17.17 7.76 -10.68
-v 17.17 0.00 -10.68
-v 14.87 0.00 -14.66
-v 14.87 7.76 -14.66
-v 12.57 0.00 -15.28
-v 12.57 7.76 -15.28
-v 10.27 0.00 -14.66
-v 10.27 7.76 -14.66
-v 8.58 0.00 -12.98
-v 8.58 7.76 -12.98
-v 7.97 0.00 -10.68
-v 7.97 7.76 -10.68
-v 8.58 0.00 -8.38
-v 8.58 7.76 -8.38
-v 10.27 0.00 -6.69
-v 10.27 7.76 -6.69
-v 12.57 0.00 -6.08
-v 12.57 7.76 -6.08
-v 14.87 0.00 -6.69
-v 14.87 7.76 -6.69
-v 16.55 0.00 -8.38
-v 16.55 7.76 -8.38
-v 16.78 7.76 -13.11
-v 16.78 8.57 -13.11
-v 17.43 8.57 -10.68
-v 17.43 7.76 -10.68
-v 15.00 7.76 -14.89
-v 15.00 8.57 -14.89
-v 12.57 7.76 -15.54
-v 12.57 8.57 -15.54
-v 10.13 7.76 -14.89
-v 10.13 8.57 -14.89
-v 8.35 7.76 -13.11
-v 8.35 8.57 -13.11
-v 7.70 7.76 -10.68
-v 7.70 8.57 -10.68
-v 8.35 7.76 -8.24
-v 8.35 8.57 -8.24
-v 10.13 7.76 -6.46
-v 10.13 8.57 -6.46
-v 12.57 7.76 -5.81
-v 12.57 8.57 -5.81
-v 15.00 7.76 -6.46
-v 15.00 8.57 -6.46
-v 16.78 7.76 -8.24
-v 16.78 8.57 -8.24
-v 17.17 8.57 -10.68
-v 16.55 8.57 -12.98
-v 14.87 8.57 -14.66
-v 12.57 8.57 -15.28
-v 10.27 8.57 -14.66
-v 8.58 8.57 -12.98
-v 7.97 8.57 -10.68
-v 8.58 8.57 -8.38
-v 10.27 8.57 -6.69
-v 12.57 8.57 -6.08
-v 14.87 8.57 -6.69
-v 16.55 8.57 -8.38
-v 16.55 16.89 -12.98
-v 17.17 16.89 -10.68
-v 14.87 16.89 -14.66
-v 12.57 16.89 -15.28
-v 10.27 16.89 -14.66
-v 8.58 16.89 -12.98
-v 7.97 16.89 -10.68
-v 8.58 16.89 -8.38
-v 10.27 16.89 -6.69
-v 12.57 16.89 -6.08
-v 14.87 16.89 -6.69
-v 16.55 16.89 -8.38
-v 17.13 21.30 -13.31
-v 17.47 21.30 -13.51
-v 18.23 21.30 -10.68
-v 17.83 21.30 -10.68
-v 15.20 21.30 -15.24
-v 15.40 21.30 -15.58
-v 12.57 21.30 -15.94
-v 12.57 21.30 -16.34
-v 9.93 21.30 -15.24
-v 9.73 21.30 -15.58
-v 8.01 21.30 -13.31
-v 7.66 21.30 -13.51
-v 7.30 21.30 -10.68
-v 6.90 21.30 -10.68
-v 8.01 21.30 -8.04
-v 7.66 21.30 -7.84
-v 9.93 21.30 -6.12
-v 9.73 21.30 -5.77
-v 12.57 21.30 -5.41
-v 12.57 21.30 -5.01
-v 15.20 21.30 -6.12
-v 15.40 21.30 -5.77
-v 17.13 21.30 -8.04
-v 17.47 21.30 -7.84
-v 16.17 24.76 -12.76
-v 16.72 24.76 -10.68
-v 14.64 24.76 -14.28
-v 12.57 24.76 -14.83
-v 10.49 24.76 -14.28
-v 8.97 24.76 -12.76
-v 8.41 24.76 -10.68
-v 8.97 24.76 -8.60
-v 10.49 24.76 -7.08
-v 12.57 24.76 -6.52
-v 14.64 24.76 -7.08
-v 16.17 24.76 -8.60
-v 16.13 28.50 -12.74
-v 16.69 28.50 -10.68
-v 14.63 28.50 -14.24
-v 12.57 28.50 -14.80
-v 10.51 28.50 -14.24
-v 9.00 28.50 -12.74
-v 8.45 28.50 -10.68
-v 9.00 28.50 -8.62
-v 10.51 28.50 -7.11
-v 12.57 28.50 -6.56
-v 14.63 28.50 -7.11
-v 16.13 28.50 -8.62
-v 17.13 17.36 -13.31
-v 17.83 17.36 -10.68
-v 15.20 17.36 -15.24
-v 12.57 17.36 -15.94
-v 9.93 17.36 -15.24
-v 8.01 17.36 -13.31
-v 7.30 17.36 -10.68
-v 8.01 17.36 -8.04
-v 9.93 17.36 -6.12
-v 12.57 17.36 -5.41
-v 15.20 17.36 -6.12
-v 17.13 17.36 -8.04
-v 17.91 20.21 -10.37
-v 17.91 19.23 -10.37
-v 17.91 19.21 -10.80
-v 17.91 20.52 -10.80
-v 17.81 19.26 -10.03
-v 17.81 19.12 -10.03
-v 17.91 19.12 -10.04
-v 17.91 19.26 -10.04
-v 17.89 20.75 -10.80
-v 17.84 20.29 -10.15
-v 17.94 20.29 -10.15
-v 17.98 20.75 -10.81
-v 17.68 19.12 -11.55
-v 17.68 19.26 -11.55
-v 17.78 19.26 -11.56
-v 17.78 19.12 -11.56
-v 17.89 19.07 -10.80
-v 17.73 19.12 -11.45
-v 17.82 19.12 -11.45
-v 17.98 19.07 -10.81
-v 18.05 19.12 -10.16
-v 18.08 19.23 -10.39
-v 18.05 19.26 -10.16
-v 17.98 20.21 -10.38
-v 17.98 20.52 -10.81
-v 17.93 19.26 -11.46
-v 18.01 19.24 -11.24
-v 17.93 19.12 -11.46
-v 18.09 19.07 -10.82
-v 18.09 19.21 -10.82
-v 17.83 20.21 -11.23
-v 17.83 19.24 -11.23
-v 17.73 20.29 -11.45
-v 17.82 20.29 -11.45
-v 17.84 19.12 -10.15
-v 17.94 19.12 -10.15
-v 17.90 20.21 -11.23
-v 17.98 19.23 -10.38
-v 17.90 19.24 -11.23
-v 17.98 19.21 -10.81
-v 17.82 19.26 -11.45
-v 17.73 19.26 -11.45
-v 17.84 19.26 -10.15
-v 17.94 19.26 -10.15
-v 18.02 19.12 -10.05
-v 18.02 19.26 -10.05
-v 17.88 19.26 -11.57
-v 17.88 19.12 -11.57
-v 12.87 20.21 -16.02
-v 12.87 19.23 -16.02
-v 12.44 19.21 -16.02
-v 12.44 20.52 -16.02
-v 13.21 19.26 -15.92
-v 13.21 19.12 -15.92
-v 13.20 19.12 -16.02
-v 13.20 19.26 -16.02
-v 12.44 20.75 -16.00
-v 13.10 20.29 -15.95
-v 13.09 20.29 -16.05
-v 12.43 20.75 -16.10
-v 11.69 19.12 -15.79
-v 11.69 19.26 -15.79
-v 11.68 19.26 -15.89
-v 11.68 19.12 -15.89
-v 12.44 19.07 -16.00
-v 11.80 19.12 -15.84
-v 11.79 19.12 -15.94
-v 12.43 19.07 -16.10
-v 13.08 19.12 -16.16
-v 12.85 19.23 -16.20
-v 13.08 19.26 -16.16
-v 12.86 20.21 -16.09
-v 12.43 20.52 -16.10
-v 11.78 19.26 -16.04
-v 12.00 19.24 -16.12
-v 11.78 19.12 -16.04
-v 12.42 19.07 -16.20
-v 12.42 19.21 -16.20
-v 12.01 20.21 -15.94
-v 12.01 19.24 -15.94
-v 11.80 20.29 -15.84
-v 11.79 20.29 -15.94
-v 13.10 19.12 -15.95
-v 13.09 19.12 -16.05
-v 12.01 20.21 -16.01
-v 12.86 19.23 -16.09
-v 12.01 19.24 -16.01
-v 12.43 19.21 -16.10
-v 11.79 19.26 -15.94
-v 11.80 19.26 -15.84
-v 13.10 19.26 -15.95
-v 13.09 19.26 -16.05
-v 13.19 19.12 -16.13
-v 13.19 19.26 -16.13
-v 11.67 19.26 -16.00
-v 11.67 19.12 -16.00
-v 9.24 23.34 -12.52
-v 8.56 24.92 -12.99
-v 9.10 24.92 -13.76
-v 9.78 23.34 -13.29
-v 9.53 28.41 -12.29
-v 8.63 28.41 -12.92
-v 9.18 28.41 -13.70
-v 10.08 28.41 -13.07
-v 12.87 27.21 -14.81
-v 12.87 26.24 -14.81
-v 12.44 26.21 -14.82
-v 12.44 27.52 -14.82
-v 13.21 26.26 -14.72
-v 13.21 26.12 -14.72
-v 13.20 26.12 -14.82
-v 13.20 26.26 -14.82
-v 12.44 27.75 -14.80
-v 13.10 27.30 -14.75
-v 13.09 27.30 -14.85
-v 12.43 27.75 -14.89
-v 11.69 26.12 -14.59
-v 11.69 26.26 -14.59
-v 11.68 26.26 -14.69
-v 11.68 26.12 -14.69
-v 12.44 26.07 -14.80
-v 11.80 26.12 -14.64
-v 11.79 26.12 -14.73
-v 12.43 26.07 -14.89
-v 13.08 26.12 -14.96
-v 12.85 26.24 -14.99
-v 13.08 26.26 -14.96
-v 12.86 27.21 -14.89
-v 12.43 27.52 -14.89
-v 11.78 26.26 -14.84
-v 12.00 26.25 -14.92
-v 11.78 26.12 -14.84
-v 12.42 26.07 -15.00
-v 12.42 26.21 -15.00
-v 12.01 27.21 -14.74
-v 12.01 26.25 -14.74
-v 11.80 27.30 -14.64
-v 11.79 27.30 -14.73
-v 13.10 26.12 -14.75
-v 13.09 26.12 -14.85
-v 12.01 27.21 -14.81
-v 12.86 26.24 -14.89
-v 12.01 26.25 -14.81
-v 12.43 26.21 -14.89
-v 11.79 26.26 -14.73
-v 11.80 26.26 -14.64
-v 13.10 26.26 -14.75
-v 13.09 26.26 -14.85
-v 13.19 26.12 -14.93
-v 13.19 26.26 -14.93
-v 11.67 26.26 -14.79
-v 11.67 26.12 -14.79
-v 14.41 23.34 -14.01
-v 14.88 24.92 -14.68
-v 15.65 24.92 -14.14
-v 15.18 23.34 -13.46
-v 14.18 28.41 -13.71
-v 14.81 28.41 -14.61
-v 15.59 28.41 -14.07
-v 14.96 28.41 -13.17
-v 8.43 27.21 -10.98
-v 8.43 26.24 -10.98
-v 8.42 26.21 -10.55
-v 8.42 27.52 -10.55
-v 8.52 26.26 -11.32
-v 8.52 26.12 -11.32
-v 8.42 26.12 -11.31
-v 8.42 26.26 -11.31
-v 8.45 27.75 -10.55
-v 8.49 27.30 -11.21
-v 8.39 27.30 -11.20
-v 8.35 27.75 -10.54
-v 8.65 26.12 -9.80
-v 8.65 26.26 -9.80
-v 8.56 26.26 -9.79
-v 8.56 26.12 -9.79
-v 8.45 26.07 -10.55
-v 8.61 26.12 -9.91
-v 8.51 26.12 -9.90
-v 8.35 26.07 -10.54
-v 8.29 26.12 -11.19
-v 8.25 26.24 -10.96
-v 8.29 26.26 -11.19
-v 8.35 27.21 -10.97
-v 8.35 27.52 -10.54
-v 8.40 26.26 -9.89
-v 8.32 26.25 -10.11
-v 8.40 26.12 -9.89
-v 8.24 26.07 -10.53
-v 8.24 26.21 -10.53
-v 8.50 27.21 -10.13
-v 8.50 26.25 -10.13
-v 8.61 27.30 -9.91
-v 8.51 27.30 -9.90
-v 8.49 26.12 -11.21
-v 8.39 26.12 -11.20
-v 8.43 27.21 -10.12
-v 8.35 26.24 -10.97
-v 8.43 26.25 -10.12
-v 8.35 26.21 -10.54
-v 8.51 26.26 -9.90
-v 8.61 26.26 -9.91
-v 8.49 26.26 -11.21
-v 8.39 26.26 -11.20
-v 8.32 26.12 -11.30
-v 8.32 26.26 -11.30
-v 8.45 26.26 -9.78
-v 8.45 26.12 -9.78
-v 13.04 12.70 -6.81
-v 13.04 14.28 -5.99
-v 12.09 14.28 -5.99
-v 12.09 12.70 -6.81
-v 13.04 17.34 -6.74
-v 13.04 17.34 -5.64
-v 12.09 17.34 -5.64
-v 12.09 17.34 -6.74
-v 8.98 12.70 -12.20
-v 8.27 14.28 -12.61
-v 8.74 14.28 -13.43
-v 9.46 12.70 -13.02
-v 8.92 17.34 -12.24
-v 7.97 17.34 -12.79
-v 8.44 17.34 -13.61
-v 9.39 17.34 -13.06
-v 12.09 12.70 -14.54
-v 12.09 14.28 -15.36
-v 13.04 14.28 -15.36
-v 13.04 12.70 -14.54
-v 12.09 17.34 -14.62
-v 12.09 17.34 -15.71
-v 13.04 17.34 -15.71
-v 13.04 17.34 -14.62
-v 10.73 23.34 -7.35
-v 10.25 24.92 -6.67
-v 9.48 24.92 -7.22
-v 9.95 23.34 -7.89
-v 10.95 28.41 -7.65
-v 10.32 28.41 -6.74
-v 9.55 28.41 -7.29
-v 10.18 28.41 -8.19
-v 9.46 12.70 -8.34
-v 8.74 14.28 -7.92
-v 8.27 14.28 -8.74
-v 8.98 12.70 -9.15
-v 9.39 17.34 -8.30
-v 8.44 17.34 -7.75
-v 7.97 17.34 -8.57
-v 8.92 17.34 -9.12
-v 7.23 20.21 -10.98
-v 7.23 19.23 -10.98
-v 7.22 19.21 -10.55
-v 7.22 20.52 -10.55
-v 7.32 19.26 -11.32
-v 7.32 19.12 -11.32
-v 7.22 19.12 -11.31
-v 7.22 19.26 -11.31
-v 7.24 20.75 -10.55
-v 7.29 20.29 -11.21
-v 7.19 20.29 -11.20
-v 7.15 20.75 -10.54
-v 7.45 19.12 -9.80
-v 7.45 19.26 -9.80
-v 7.35 19.26 -9.79
-v 7.35 19.12 -9.79
-v 7.24 19.07 -10.55
-v 7.41 19.12 -9.91
-v 7.31 19.12 -9.90
-v 7.15 19.07 -10.54
-v 7.09 19.12 -11.19
-v 7.05 19.23 -10.96
-v 7.09 19.26 -11.19
-v 7.15 20.21 -10.97
-v 7.15 20.52 -10.54
-v 7.20 19.26 -9.89
-v 7.12 19.24 -10.11
-v 7.20 19.12 -9.89
-v 7.04 19.07 -10.53
-v 7.04 19.21 -10.53
-v 7.30 20.21 -10.13
-v 7.30 19.24 -10.13
-v 7.41 20.29 -9.91
-v 7.31 20.29 -9.90
-v 7.29 19.12 -11.21
-v 7.19 19.12 -11.20
-v 7.23 20.21 -10.12
-v 7.15 19.23 -10.97
-v 7.23 19.24 -10.12
-v 7.15 19.21 -10.54
-v 7.31 19.26 -9.90
-v 7.41 19.26 -9.91
-v 7.29 19.26 -11.21
-v 7.19 19.26 -11.20
-v 7.11 19.12 -11.30
-v 7.11 19.26 -11.30
-v 7.25 19.26 -9.78
-v 7.25 19.12 -9.78
-v 12.26 27.21 -6.54
-v 12.26 26.24 -6.54
-v 12.69 26.21 -6.53
-v 12.69 27.52 -6.53
-v 11.92 26.26 -6.63
-v 11.92 26.12 -6.63
-v 11.93 26.12 -6.53
-v 11.93 26.26 -6.53
-v 12.69 27.75 -6.56
-v 12.03 27.30 -6.60
-v 12.04 27.30 -6.51
-v 12.70 27.75 -6.46
-v 13.44 26.12 -6.76
-v 13.44 26.26 -6.76
-v 13.45 26.26 -6.67
-v 13.45 26.12 -6.67
-v 12.69 26.07 -6.56
-v 13.34 26.12 -6.72
-v 13.34 26.12 -6.62
-v 12.70 26.07 -6.46
-v 12.05 26.12 -6.40
-v 12.28 26.24 -6.36
-v 12.05 26.26 -6.40
-v 12.27 27.21 -6.47
-v 12.70 27.52 -6.46
-v 13.35 26.26 -6.51
-v 13.13 26.25 -6.43
-v 13.35 26.12 -6.51
-v 12.71 26.07 -6.35
-v 12.71 26.21 -6.35
-v 13.12 27.21 -6.61
-v 13.12 26.25 -6.61
-v 13.34 27.30 -6.72
-v 13.34 27.30 -6.62
-v 12.03 26.12 -6.60
-v 12.04 26.12 -6.51
-v 13.12 27.21 -6.54
-v 12.27 26.24 -6.47
-v 13.12 26.25 -6.54
-v 12.70 26.21 -6.46
-v 13.34 26.26 -6.62
-v 13.34 26.26 -6.72
-v 12.03 26.26 -6.60
-v 12.04 26.26 -6.51
-v 11.94 26.12 -6.43
-v 11.94 26.26 -6.43
-v 13.46 26.26 -6.56
-v 13.46 26.12 -6.56
-v 16.15 12.70 -9.15
-v 16.86 14.28 -8.74
-v 16.39 14.28 -7.92
-v 15.67 12.70 -8.34
-v 16.21 17.34 -9.12
-v 17.17 17.34 -8.57
-v 16.69 17.34 -7.75
-v 15.74 17.34 -8.30
-v 12.26 20.21 -5.34
-v 12.26 19.23 -5.34
-v 12.69 19.21 -5.33
-v 12.69 20.52 -5.33
-v 11.92 19.26 -5.43
-v 11.92 19.12 -5.43
-v 11.93 19.12 -5.33
-v 11.93 19.26 -5.33
-v 12.69 20.75 -5.36
-v 12.03 20.29 -5.40
-v 12.04 20.29 -5.30
-v 12.70 20.75 -5.26
-v 13.44 19.12 -5.56
-v 13.44 19.26 -5.56
-v 13.45 19.26 -5.47
-v 13.45 19.12 -5.47
-v 12.69 19.07 -5.36
-v 13.34 19.12 -5.52
-v 13.34 19.12 -5.42
-v 12.70 19.07 -5.26
-v 12.05 19.12 -5.20
-v 12.28 19.23 -5.16
-v 12.05 19.26 -5.20
-v 12.27 20.21 -5.26
-v 12.70 20.52 -5.26
-v 13.35 19.26 -5.31
-v 13.13 19.24 -5.23
-v 13.35 19.12 -5.31
-v 12.71 19.07 -5.15
-v 12.71 19.21 -5.15
-v 13.12 20.21 -5.41
-v 13.12 19.24 -5.41
-v 13.34 20.29 -5.52
-v 13.34 20.29 -5.42
-v 12.03 19.12 -5.40
-v 12.04 19.12 -5.30
-v 13.12 20.21 -5.34
-v 12.27 19.23 -5.26
-v 13.12 19.24 -5.34
-v 12.70 19.21 -5.26
-v 13.34 19.26 -5.42
-v 13.34 19.26 -5.52
-v 12.03 19.26 -5.40
-v 12.04 19.26 -5.30
-v 11.94 19.12 -5.23
-v 11.94 19.26 -5.23
-v 13.46 19.26 -5.36
-v 13.46 19.12 -5.36
-v 15.89 23.34 -8.84
-v 16.57 24.92 -8.36
-v 16.03 24.92 -7.59
-v 15.35 23.34 -8.06
-v 15.60 28.41 -9.06
-v 16.50 28.41 -8.43
-v 15.96 28.41 -7.66
-v 15.06 28.41 -8.29
-v 16.70 27.21 -10.37
-v 16.70 26.24 -10.37
-v 16.71 26.21 -10.80
-v 16.71 27.52 -10.80
-v 16.61 26.26 -10.03
-v 16.61 26.12 -10.03
-v 16.71 26.12 -10.04
-v 16.71 26.26 -10.04
-v 16.69 27.75 -10.80
-v 16.64 27.30 -10.15
-v 16.74 27.30 -10.15
-v 16.78 27.75 -10.81
-v 16.48 26.12 -11.55
-v 16.48 26.26 -11.55
-v 16.58 26.26 -11.56
-v 16.58 26.12 -11.56
-v 16.69 26.07 -10.80
-v 16.53 26.12 -11.45
-v 16.62 26.12 -11.45
-v 16.78 26.07 -10.81
-v 16.84 26.12 -10.16
-v 16.88 26.24 -10.39
-v 16.84 26.26 -10.16
-v 16.78 27.21 -10.38
-v 16.78 27.52 -10.81
-v 16.73 26.26 -11.46
-v 16.81 26.25 -11.24
-v 16.73 26.12 -11.46
-v 16.89 26.07 -10.82
-v 16.89 26.21 -10.82
-v 16.63 27.21 -11.23
-v 16.63 26.25 -11.23
-v 16.53 27.30 -11.45
-v 16.62 27.30 -11.45
-v 16.64 26.12 -10.15
-v 16.74 26.12 -10.15
-v 16.70 27.21 -11.23
-v 16.78 26.24 -10.38
-v 16.70 26.25 -11.23
-v 16.78 26.21 -10.81
-v 16.62 26.26 -11.45
-v 16.53 26.26 -11.45
-v 16.64 26.26 -10.15
-v 16.74 26.26 -10.15
-v 16.82 26.12 -10.05
-v 16.82 26.26 -10.05
-v 16.68 26.26 -11.57
-v 16.68 26.12 -11.57
-v 15.67 12.70 -13.02
-v 16.39 14.28 -13.43
-v 16.86 14.28 -12.61
-v 16.15 12.70 -12.20
-v 15.74 17.34 -13.06
-v 16.69 17.34 -13.61
-v 17.17 17.34 -12.79
-v 16.21 17.34 -12.24
-v 16.83 28.50 -13.14
-v 16.83 30.29 -13.14
-v 17.49 30.29 -10.68
-v 17.49 28.50 -10.68
-v 15.03 28.50 -14.94
-v 15.03 30.29 -14.94
-v 12.57 28.50 -15.60
-v 12.57 30.29 -15.60
-v 10.10 28.50 -14.94
-v 10.10 30.29 -14.94
-v 8.30 28.50 -13.14
-v 8.30 30.29 -13.14
-v 7.64 28.50 -10.68
-v 7.64 30.29 -10.68
-v 8.30 28.50 -8.21
-v 8.30 30.29 -8.21
-v 10.10 28.50 -6.41
-v 10.10 30.29 -6.41
-v 12.57 28.50 -5.75
-v 12.57 30.29 -5.75
-v 15.03 28.50 -6.41
-v 15.03 30.29 -6.41
-v 16.83 28.50 -8.21
-v 16.83 30.29 -8.21
-v 16.21 30.29 -12.78
-v 16.78 30.29 -10.68
-v 15.03 30.90 -14.94
-v 14.67 30.90 -14.32
-v 16.21 30.90 -12.78
-v 16.83 30.90 -13.14
-v 12.57 30.29 -14.89
-v 14.67 30.29 -14.32
-v 10.10 30.90 -14.94
-v 10.46 30.90 -14.32
-v 12.57 30.90 -14.89
-v 12.57 30.90 -15.60
-v 8.92 30.29 -12.78
-v 10.46 30.29 -14.32
-v 7.64 30.90 -10.68
-v 8.36 30.90 -10.68
-v 8.92 30.90 -12.78
-v 8.30 30.90 -13.14
-v 8.92 30.29 -8.57
-v 8.36 30.29 -10.68
-v 10.10 30.90 -6.41
-v 10.46 30.90 -7.03
-v 8.92 30.90 -8.57
-v 8.30 30.90 -8.21
-v 12.57 30.29 -6.47
-v 10.46 30.29 -7.03
-v 15.03 30.90 -6.41
-v 14.67 30.90 -7.03
-v 12.57 30.90 -6.47
-v 12.57 30.90 -5.75
-v 16.21 30.29 -8.57
-v 14.67 30.29 -7.03
-v 17.49 30.90 -10.68
-v 16.78 30.90 -10.68
-v 16.21 30.90 -8.57
-v 16.83 30.90 -8.21
-v 16.21 29.42 -12.78
-v 16.78 29.42 -10.68
-v 14.67 29.42 -14.32
-v 12.57 29.42 -14.89
-v 10.46 29.42 -14.32
-v 8.92 29.42 -12.78
-v 8.36 29.42 -10.68
-v 8.92 29.42 -8.57
-v 10.46 29.42 -7.03
-v 12.57 29.42 -6.47
-v 14.67 29.42 -7.03
-v 16.21 29.42 -8.57
-v 12.57 29.42 -10.68
-# 4553 vertices
-
-vn -1.00 0.00 -0.00
-vn -0.48 0.00 -0.88
-vn -0.17 0.00 -0.99
-vn 0.00 0.00 -1.00
-vn 0.17 0.00 -0.99
-vn 0.48 0.00 -0.88
-vn 1.00 0.00 -0.00
-vn 0.48 0.00 0.88
-vn 0.17 0.00 0.99
-vn 0.00 0.00 1.00
-vn -0.17 0.00 0.99
-vn -0.48 0.00 0.88
-vn -0.73 0.00 -0.69
-vn -0.27 0.00 -0.96
-vn -0.08 0.00 -1.00
-vn 0.08 0.00 -1.00
-vn 0.27 0.00 -0.96
-vn 0.73 0.00 -0.69
-vn 0.73 0.00 0.69
-vn 0.27 0.00 0.96
-vn 0.08 0.00 1.00
-vn -0.08 0.00 1.00
-vn -0.27 0.00 0.96
-vn -0.73 0.00 0.69
-vn -0.72 0.00 0.69
-vn 0.00 -1.00 -0.00
-vn 0.00 1.00 -0.00
-vn -0.60 0.56 -0.57
-vn -0.26 0.33 -0.91
-vn -0.07 0.25 -0.96
-vn 0.07 0.25 -0.96
-vn 0.26 0.33 -0.91
-vn 0.60 0.56 -0.57
-vn 0.60 0.56 0.57
-vn 0.26 0.33 0.91
-vn 0.07 0.25 0.96
-vn -0.07 0.25 0.96
-vn -0.26 0.33 0.91
-vn -0.60 0.56 0.57
-vn -0.73 0.01 -0.69
-vn -0.27 0.01 -0.96
-vn -0.08 0.01 -1.00
-vn -0.07 0.01 -1.00
-vn 0.08 0.01 -1.00
-vn 0.27 0.01 -0.96
-vn 0.73 0.01 -0.69
-vn 0.72 0.01 0.69
-vn 0.73 0.01 0.69
-vn 0.27 0.01 0.96
-vn 0.08 0.01 1.00
-vn -0.08 0.01 1.00
-vn -0.07 0.01 1.00
-vn -0.27 0.01 0.96
-vn -0.73 0.01 0.69
-vn -0.72 0.01 0.69
-vn -0.30 -0.91 -0.29
-vn -0.18 -0.75 -0.64
-vn -0.18 -0.74 -0.64
-vn -0.06 -0.65 -0.76
-vn 0.06 -0.65 -0.76
-vn 0.18 -0.75 -0.64
-vn 0.18 -0.74 -0.64
-vn 0.30 -0.91 -0.29
-vn 0.30 -0.91 0.29
-vn 0.18 -0.74 0.64
-vn 0.18 -0.75 0.64
-vn 0.06 -0.65 0.76
-vn -0.06 -0.65 0.76
-vn -0.18 -0.74 0.64
-vn -0.18 -0.75 0.64
-vn -0.30 -0.91 0.29
-vn -1.00 0.00 0.06
-vn -0.02 0.00 1.00
-vn -0.02 0.65 0.76
-vn 0.02 0.00 -1.00
-vn 0.00 -0.99 -0.12
-vn -0.85 0.00 0.52
-vn -0.95 0.12 0.30
-vn -0.62 0.00 -0.78
-vn -0.76 -0.16 -0.63
-vn -0.83 0.00 -0.56
-vn 0.02 0.66 -0.75
-vn -0.00 -0.99 0.12
-vn -0.72 0.09 -0.69
-vn -0.96 -0.21 0.19
-vn 0.02 -0.64 -0.77
-vn -0.02 -0.64 0.77
-vn -0.00 0.99 0.13
-vn 0.00 1.00 -0.10
-vn 0.00 0.99 -0.17
-vn 0.01 0.99 -0.17
-vn -0.00 0.99 0.10
-vn -0.74 0.00 0.67
-vn -0.75 0.00 0.67
-vn -0.54 0.00 -0.84
-vn -0.00 0.00 -1.00
-vn -0.96 0.00 -0.29
-vn -0.95 0.00 -0.30
-vn -0.31 0.95 -0.10
-vn 0.95 0.00 0.30
-vn 0.96 0.00 0.29
-vn 0.03 -1.00 0.01
-vn -0.05 0.00 -1.00
-vn -0.03 0.04 -1.00
-vn 0.10 0.00 -1.00
-vn 0.07 -0.06 -1.00
-vn 0.05 0.00 -1.00
-vn 0.31 0.95 0.10
-vn -0.04 -1.00 -0.01
-vn 0.08 0.04 -1.00
-vn -0.02 -0.06 -1.00
-vn 0.32 -0.94 0.10
-vn -0.32 -0.94 -0.10
-vn -0.04 1.00 -0.01
-vn 0.03 1.00 0.01
-vn 0.05 1.00 0.01
-vn -0.03 1.00 -0.01
-vn -0.07 0.00 -1.00
-vn 0.12 0.00 -0.99
-vn 0.33 -0.45 -0.83
-vn 0.19 -0.00 0.98
-vn 0.37 0.03 -0.93
-vn -0.19 0.00 -0.98
-vn -0.01 0.00 -1.00
-vn -0.96 0.00 -0.30
-vn 0.31 0.95 0.09
-vn -0.18 -0.35 -0.92
-vn 0.37 -0.00 -0.93
-vn -0.19 0.02 -0.98
-vn -0.37 0.00 0.93
-vn 1.00 0.00 -0.06
-vn 0.02 0.65 -0.76
-vn 0.85 0.00 -0.52
-vn 0.95 0.12 -0.30
-vn 0.62 0.00 0.78
-vn 0.76 -0.16 0.63
-vn 0.83 0.00 0.56
-vn 0.82 0.00 0.57
-vn -0.02 0.66 0.75
-vn 0.72 0.09 0.69
-vn 0.96 -0.21 -0.19
-vn 0.00 0.99 -0.13
-vn -0.00 1.00 0.10
-vn -0.00 0.99 0.17
-vn 0.00 0.99 -0.10
-vn 0.75 0.00 -0.67
-vn 0.54 0.00 0.84
-vn 0.00 -0.30 0.95
-vn 0.00 -0.07 1.00
-vn 0.38 -0.49 -0.78
-vn 0.16 0.00 0.99
-vn 0.44 -0.12 -0.89
-vn -0.16 0.00 -0.99
-vn 0.00 -0.30 -0.95
-vn 0.00 -0.07 -1.00
-vn 0.18 -0.35 0.92
-vn -0.37 -0.00 0.93
-vn 0.19 0.02 0.98
-vn 0.37 0.00 -0.93
-vn 0.38 -0.49 0.78
-vn -0.16 0.00 0.99
-vn 0.44 -0.12 0.89
-vn 0.16 0.00 -0.99
-vn 0.01 0.00 1.00
-vn 0.96 0.00 0.30
-vn -0.03 -1.00 -0.01
-vn 0.05 0.00 1.00
-vn 0.03 0.04 1.00
-vn -0.10 0.00 1.00
-vn -0.07 -0.06 1.00
-vn -0.05 0.00 1.00
-vn -0.31 0.95 -0.09
-vn 0.04 -1.00 0.01
-vn -0.08 0.04 1.00
-vn 0.02 -0.06 1.00
-vn 0.04 1.00 0.01
-vn -0.05 1.00 -0.02
-vn 0.07 0.00 1.00
-vn -0.12 0.00 0.99
-vn -0.38 -0.49 0.78
-vn -0.44 -0.12 0.89
-vn -0.43 -0.12 0.89
-vn -0.33 -0.45 0.83
-vn -0.19 -0.00 -0.98
-vn -0.37 0.03 0.93
-vn 0.19 0.00 0.98
-vn -0.38 -0.49 -0.78
-vn -0.44 -0.12 -0.89
-vn -0.43 -0.12 -0.89
-vn 0.72 0.00 0.69
-vn -0.07 0.00 1.00
-vn -0.72 0.00 -0.69
-vn 0.07 0.00 -1.00
-vn 0.72 0.00 -0.69
-vn 0.44 0.00 -0.90
-vn 0.44 0.00 0.90
-vn -0.44 0.00 0.90
-vn -0.44 0.00 -0.90
-vn 0.50 0.87 -0.00
-vn 0.00 0.45 -0.89
-vn -0.50 0.87 -0.00
-vn 0.00 0.42 0.91
-vn 0.08 1.00 -0.00
-vn 0.04 0.55 0.83
-vn -0.00 0.55 0.83
-vn 0.01 0.01 1.00
-vn -0.00 0.55 -0.83
-vn 0.04 0.55 -0.83
-vn 0.01 0.01 -1.00
-vn -0.08 1.00 -0.00
-vn -0.04 0.55 0.83
-vn -0.01 0.01 1.00
-vn -0.04 0.55 -0.83
-vn -0.01 0.01 -1.00
-vn -0.06 0.60 -0.79
-vn -0.91 -0.41 0.00
-vn -0.10 0.98 -0.19
-vn -0.06 0.60 0.79
-vn -0.91 -0.41 -0.00
-vn -0.10 0.98 0.19
-vn -0.05 0.61 -0.79
-vn -0.94 -0.35 -0.00
-vn -0.08 0.98 -0.19
-vn -0.05 0.61 0.79
-vn -0.08 0.98 0.19
-vn -0.04 0.61 -0.79
-vn -0.03 0.61 -0.79
-vn -0.97 -0.25 0.00
-vn -0.97 -0.25 -0.00
-vn -0.06 0.98 -0.19
-vn -0.04 0.61 0.79
-vn -0.03 0.61 0.79
-vn -0.06 0.98 0.19
-vn -0.01 0.61 -0.79
-vn -1.00 -0.07 -0.00
-vn -0.02 0.98 -0.19
-vn -0.01 0.61 0.79
-vn -0.02 0.98 0.19
-vn -1.00 -0.07 0.00
-vn -0.02 0.61 -0.79
-vn -0.99 -0.11 -0.00
-vn -0.02 0.61 0.79
-vn -0.99 -0.11 0.00
-vn 0.06 0.60 -0.79
-vn 0.91 -0.41 0.00
-vn 0.10 0.98 -0.19
-vn 0.06 0.60 0.79
-vn 0.91 -0.41 -0.00
-vn 0.10 0.98 0.19
-vn 0.05 0.61 -0.79
-vn 0.94 -0.35 -0.00
-vn 0.08 0.98 -0.19
-vn 0.05 0.61 0.79
-vn 0.94 -0.35 0.00
-vn 0.08 0.98 0.19
-vn 0.03 0.61 -0.79
-vn 0.04 0.61 -0.79
-vn 0.97 -0.25 0.00
-vn 0.06 0.98 -0.19
-vn 0.03 0.61 0.79
-vn 0.97 -0.25 -0.00
-vn 0.06 0.98 0.19
-vn 0.04 0.61 0.79
-vn 0.01 0.61 -0.79
-vn 1.00 -0.07 -0.00
-vn 0.02 0.98 -0.19
-vn 0.01 0.61 0.79
-vn 0.02 0.98 0.19
-vn 1.00 -0.07 0.00
-vn 0.02 0.61 -0.79
-vn 0.99 -0.11 -0.00
-vn 0.02 0.61 0.79
-vn 0.99 -0.11 0.00
-vn 0.10 0.98 -0.20
-vn 0.10 0.98 0.20
-vn 0.09 0.59 -0.80
-vn -0.82 0.57 0.00
-vn -0.82 0.57 -0.00
-vn 0.15 0.97 -0.20
-vn 0.09 0.59 0.80
-vn 0.15 0.97 0.20
-vn -0.09 0.59 -0.80
-vn 0.82 0.57 0.00
-vn -0.15 0.97 -0.20
-vn -0.09 0.59 0.80
-vn 0.82 0.57 -0.00
-vn -0.15 0.97 0.20
-vn -0.57 0.82 -0.00
-vn 0.08 -1.00 -0.00
-vn 0.57 0.82 -0.00
-vn -0.08 -1.00 -0.00
-vn 0.59 -0.81 -0.00
-vn -0.59 -0.81 -0.00
-vn 0.06 1.00 -0.00
-vn 0.10 0.99 -0.00
-vn -0.06 1.00 -0.00
-vn -0.07 -1.00 -0.00
-vn 0.07 -1.00 -0.00
-vn 0.00 0.37 0.93
-vn 0.00 -0.97 -0.26
-vn 0.00 0.37 -0.93
-vn 0.00 -0.97 0.26
-vn 0.00 -0.36 -0.93
-vn 0.00 -0.36 0.93
-vn 0.00 0.96 0.28
-vn 0.00 0.98 -0.21
-vn 0.00 0.94 -0.35
-vn 0.00 0.98 0.22
-vn 0.00 0.96 -0.28
-vn 0.00 0.98 0.21
-vn 0.00 0.94 0.35
-vn 0.00 0.98 -0.22
-vn 0.11 0.99 -0.00
-vn -0.10 0.99 -0.00
-vn 1.00 0.04 -0.00
-vn 0.87 0.50 -0.00
-vn -1.00 -0.04 -0.00
-vn -0.87 -0.50 -0.00
-vn 0.40 0.92 -0.00
-vn -0.42 -0.91 -0.00
-vn -0.40 0.92 -0.00
-vn 0.42 -0.91 -0.00
-vn -0.87 0.50 -0.00
-vn 0.87 -0.50 -0.00
-vn -1.00 0.04 -0.00
-vn 1.00 -0.04 -0.00
-vn 0.02 0.05 -1.00
-vn 0.95 -0.05 0.30
-vn -0.02 -0.01 1.00
-vn -0.94 0.18 -0.29
-vn 0.03 -0.06 -1.00
-vn 0.02 -0.06 -1.00
-vn 0.96 0.05 0.27
-vn -0.02 0.01 1.00
-vn -0.96 -0.22 -0.19
-vn 0.00 -1.00 -0.05
-vn 0.00 1.00 0.05
-vn 0.00 -1.00 0.05
-vn 0.00 1.00 -0.05
-vn 0.02 -1.00 -0.00
-vn -0.02 1.00 -0.00
-vn -0.01 1.00 -0.00
-vn -0.01 -1.00 -0.00
-vn 0.01 1.00 -0.00
-vn 0.02 0.05 1.00
-vn 0.95 -0.05 -0.30
-vn -0.02 -0.01 -1.00
-vn -0.94 0.18 0.29
-vn 0.03 -0.06 1.00
-vn 0.96 0.05 -0.27
-vn -0.02 0.01 -1.00
-vn -0.96 -0.22 0.19
-vn -0.96 -0.22 0.18
-vn 0.01 -1.00 -0.00
-vn -0.02 -1.00 -0.00
-vn 0.02 1.00 -0.00
-vn -0.99 0.12 -0.00
-vn -1.00 0.01 0.04
-vn -0.99 -0.10 0.07
-vn 0.00 0.01 1.00
-vn 0.00 -0.00 1.00
-vn 1.00 0.01 0.01
-vn 1.00 -0.03 0.02
-vn 0.00 0.04 -1.00
-vn 0.00 0.01 -1.00
-vn 0.00 -0.02 -1.00
-vn 0.13 -0.99 -0.00
-vn -0.13 0.99 -0.00
-vn -0.13 -0.99 -0.00
-vn 0.13 0.99 -0.00
-vn -0.07 1.00 -0.00
-vn 0.07 1.00 -0.00
-vn 0.00 -0.67 -0.74
-vn 0.00 -0.13 -0.99
-vn 0.00 0.67 -0.74
-vn 0.00 0.13 -0.99
-vn 0.00 0.12 -0.99
-vn -1.00 0.01 -0.04
-vn -0.99 -0.10 -0.07
-vn 0.00 -0.00 -1.00
-vn 1.00 0.01 -0.01
-vn 1.00 -0.03 -0.02
-vn 0.00 0.04 1.00
-vn 0.00 -0.02 1.00
-vn 0.72 0.01 -0.69
-vn -0.72 0.01 -0.69
-vn -1.00 0.00 -0.06
-vn -0.02 0.00 -1.00
-vn -0.02 0.65 -0.76
-vn 0.02 0.00 1.00
-vn 0.00 -0.99 0.12
-vn -0.85 0.00 -0.52
-vn -0.95 0.12 -0.30
-vn -0.62 0.00 0.78
-vn -0.76 -0.16 0.63
-vn -0.83 0.00 0.56
-vn 0.02 0.66 0.75
-vn -0.00 -0.99 -0.12
-vn -0.72 0.09 0.69
-vn -0.96 -0.21 -0.19
-vn 0.02 -0.64 0.77
-vn -0.02 -0.64 -0.77
-vn -0.00 0.99 -0.13
-vn 0.00 1.00 0.10
-vn 0.00 0.99 0.17
-vn 0.01 0.99 0.17
-vn -0.00 0.99 -0.10
-vn -0.74 0.00 -0.67
-vn -0.75 0.00 -0.67
-vn -0.54 0.00 0.84
-vn -0.00 0.00 1.00
-vn -0.96 0.00 0.29
-vn -0.95 0.00 0.30
-vn -0.31 0.95 0.10
-vn 0.95 0.00 -0.30
-vn 0.96 0.00 -0.29
-vn 0.03 -1.00 -0.01
-vn -0.03 0.04 1.00
-vn 0.10 0.00 1.00
-vn 0.07 -0.06 1.00
-vn 0.31 0.95 -0.10
-vn -0.04 -1.00 0.01
-vn 0.08 0.04 1.00
-vn -0.02 -0.06 1.00
-vn 0.32 -0.94 -0.10
-vn -0.32 -0.94 0.10
-vn -0.04 1.00 0.01
-vn 0.03 1.00 -0.01
-vn 0.05 1.00 -0.01
-vn -0.03 1.00 0.01
-vn 0.12 0.00 0.99
-vn 0.33 -0.45 0.83
-vn 0.19 -0.00 -0.98
-vn 0.37 0.03 0.93
-vn -0.19 0.00 0.98
-vn -0.01 0.00 1.00
-vn -0.96 0.00 0.30
-vn 0.31 0.95 -0.09
-vn -0.18 -0.35 0.92
-vn 0.37 -0.00 0.93
-vn -0.19 0.02 0.98
-vn -0.37 0.00 -0.93
-vn 1.00 0.00 0.06
-vn 0.02 0.65 0.76
-vn 0.85 0.00 0.52
-vn 0.95 0.12 0.30
-vn 0.62 0.00 -0.78
-vn 0.76 -0.16 -0.63
-vn 0.83 0.00 -0.56
-vn 0.82 0.00 -0.57
-vn -0.02 0.66 -0.75
-vn 0.72 0.09 -0.69
-vn 0.96 -0.21 0.19
-vn 0.00 0.99 0.13
-vn -0.00 1.00 -0.10
-vn -0.00 0.99 -0.17
-vn 0.00 0.99 0.10
-vn 0.75 0.00 0.67
-vn 0.54 0.00 -0.84
-vn 0.18 -0.35 -0.92
-vn -0.37 -0.00 -0.93
-vn 0.19 0.02 -0.98
-vn 0.37 0.00 0.93
-vn 0.01 0.00 -1.00
-vn 0.96 0.00 -0.30
-vn -0.03 -1.00 0.01
-vn 0.03 0.04 -1.00
-vn -0.10 0.00 -1.00
-vn -0.07 -0.06 -1.00
-vn -0.31 0.95 0.09
-vn 0.04 -1.00 -0.01
-vn -0.08 0.04 -1.00
-vn 0.04 1.00 -0.01
-vn -0.05 1.00 0.02
-vn -0.12 0.00 -0.99
-vn -0.33 -0.45 -0.83
-vn -0.19 -0.00 0.98
-vn -0.37 0.03 -0.93
-vn 0.19 0.00 -0.98
-vn 0.74 0.00 -0.67
-vn -0.05 1.00 -0.01
-vn -0.82 0.00 -0.57
-vn 0.05 1.00 0.02
-vn 0.74 0.00 0.67
-vn -0.05 1.00 0.01
-vn -0.82 0.00 0.57
-vn 0.05 1.00 -0.02
-# 487 vertex normals
-
-vt 0.10 0.10 0.00
-vt 0.07 0.10 0.00
-vt 0.07 0.01 0.00
-vt 0.10 0.01 0.00
-vt 0.05 0.10 0.00
-vt 0.05 0.01 0.00
-vt 0.02 0.10 0.00
-vt 0.02 0.01 0.00
-vt 0.38 0.10 0.00
-vt 0.35 0.10 0.00
-vt 0.35 0.01 0.00
-vt 0.38 0.01 0.00
-vt 0.32 0.10 0.00
-vt 0.32 0.01 0.00
-vt 0.29 0.10 0.00
-vt 0.29 0.01 0.00
-vt 0.27 0.10 0.00
-vt 0.27 0.01 0.00
-vt 0.24 0.10 0.00
-vt 0.24 0.01 0.00
-vt 0.21 0.10 0.00
-vt 0.21 0.01 0.00
-vt 0.17 0.10 0.00
-vt 0.17 0.01 0.00
-vt 0.13 0.10 0.00
-vt 0.13 0.01 0.00
-vt 0.34 0.56 0.00
-vt 0.37 0.56 0.00
-vt 0.37 0.57 0.00
-vt 0.34 0.57 0.00
-vt 0.30 0.56 0.00
-vt 0.30 0.57 0.00
-vt 0.27 0.56 0.00
-vt 0.27 0.57 0.00
-vt 0.61 0.56 0.00
-vt 0.64 0.56 0.00
-vt 0.64 0.57 0.00
-vt 0.61 0.57 0.00
-vt 0.58 0.56 0.00
-vt 0.58 0.57 0.00
-vt 0.55 0.56 0.00
-vt 0.55 0.57 0.00
-vt 0.52 0.56 0.00
-vt 0.52 0.57 0.00
-vt 0.49 0.56 0.00
-vt 0.49 0.57 0.00
-vt 0.46 0.56 0.00
-vt 0.46 0.57 0.00
-vt 0.43 0.56 0.00
-vt 0.43 0.57 0.00
-vt 0.40 0.56 0.00
-vt 0.40 0.57 0.00
-vt 0.97 0.27 0.00
-vt 0.96 0.28 0.00
-vt 0.94 0.27 0.00
-vt 0.93 0.26 0.00
-vt 0.93 0.25 0.00
-vt 0.93 0.24 0.00
-vt 0.93 0.23 0.00
-vt 0.94 0.23 0.00
-vt 0.94 0.22 0.00
-vt 0.96 0.22 0.00
-vt 0.97 0.23 0.00
-vt 0.97 0.22 0.00
-vt 0.98 0.24 0.00
-vt 0.98 0.23 0.00
-vt 0.99 0.25 0.00
-vt 0.98 0.26 0.00
-vt 0.81 0.06 0.00
-vt 0.81 0.16 0.00
-vt 0.78 0.16 0.00
-vt 0.78 0.06 0.00
-vt 0.76 0.16 0.00
-vt 0.76 0.06 0.00
-vt 0.73 0.16 0.00
-vt 0.73 0.06 0.00
-vt 0.71 0.16 0.00
-vt 0.71 0.06 0.00
-vt 0.69 0.16 0.00
-vt 0.69 0.06 0.00
-vt 0.98 0.06 0.00
-vt 0.98 0.16 0.00
-vt 0.95 0.16 0.00
-vt 0.95 0.06 0.00
-vt 0.93 0.16 0.00
-vt 0.93 0.06 0.00
-vt 0.91 0.16 0.00
-vt 0.91 0.06 0.00
-vt 0.88 0.16 0.00
-vt 0.88 0.06 0.00
-vt 0.86 0.16 0.00
-vt 0.86 0.07 0.00
-vt 0.83 0.16 0.00
-vt 0.83 0.07 0.00
-vt 0.98 0.28 0.00
-vt 0.96 0.29 0.00
-vt 0.99 0.27 0.00
-vt 1.00 0.25 0.00
-vt 0.99 0.23 0.00
-vt 0.98 0.22 0.00
-vt 0.96 0.21 0.00
-vt 0.92 0.23 0.00
-vt 0.92 0.25 0.00
-vt 0.93 0.27 0.00
-vt 0.92 0.27 0.00
-vt 0.94 0.28 0.00
-vt 0.11 0.23 0.00
-vt 0.09 0.22 0.00
-vt 0.10 0.18 0.00
-vt 0.13 0.19 0.00
-vt 0.14 0.24 0.00
-vt 0.15 0.19 0.00
-vt 0.17 0.24 0.00
-vt 0.18 0.20 0.00
-vt 0.21 0.24 0.00
-vt 0.20 0.20 0.00
-vt 0.24 0.24 0.00
-vt 0.23 0.19 0.00
-vt 0.27 0.23 0.00
-vt 0.25 0.19 0.00
-vt 0.30 0.22 0.00
-vt 0.28 0.18 0.00
-vt 0.32 0.21 0.00
-vt 0.30 0.17 0.00
-vt 0.35 0.19 0.00
-vt 0.32 0.16 0.00
-vt 0.03 0.19 0.00
-vt 0.01 0.17 0.00
-vt 0.04 0.14 0.00
-vt 0.06 0.16 0.00
-vt 0.06 0.21 0.00
-vt 0.08 0.17 0.00
-vt 0.12 0.14 0.00
-vt 0.14 0.15 0.00
-vt 0.16 0.15 0.00
-vt 0.18 0.16 0.00
-vt 0.20 0.16 0.00
-vt 0.22 0.15 0.00
-vt 0.24 0.15 0.00
-vt 0.26 0.14 0.00
-vt 0.28 0.13 0.00
-vt 0.31 0.12 0.00
-vt 0.06 0.11 0.00
-vt 0.08 0.12 0.00
-vt 0.10 0.13 0.00
-vt 0.14 0.12 0.00
-vt 0.12 0.12 0.00
-vt 0.12 0.11 0.00
-vt 0.14 0.11 0.00
-vt 0.10 0.12 0.00
-vt 0.10 0.11 0.00
-vt 0.35 0.12 0.00
-vt 0.33 0.12 0.00
-vt 0.33 0.11 0.00
-vt 0.35 0.11 0.00
-vt 0.31 0.11 0.00
-vt 0.29 0.12 0.00
-vt 0.29 0.11 0.00
-vt 0.27 0.12 0.00
-vt 0.27 0.11 0.00
-vt 0.24 0.12 0.00
-vt 0.24 0.11 0.00
-vt 0.22 0.12 0.00
-vt 0.22 0.11 0.00
-vt 0.20 0.12 0.00
-vt 0.20 0.11 0.00
-vt 0.18 0.12 0.00
-vt 0.18 0.11 0.00
-vt 0.16 0.12 0.00
-vt 0.16 0.11 0.00
-vt 0.67 0.06 0.00
-vt 0.64 0.06 0.00
-vt 0.64 0.01 0.00
-vt 0.67 0.01 0.00
-vt 0.60 0.06 0.00
-vt 0.60 0.01 0.00
-vt 0.99 0.06 0.00
-vt 0.96 0.06 0.00
-vt 0.96 0.01 0.00
-vt 0.99 0.01 0.00
-vt 0.93 0.01 0.00
-vt 0.89 0.06 0.00
-vt 0.89 0.01 0.00
-vt 0.86 0.06 0.00
-vt 0.86 0.01 0.00
-vt 0.83 0.06 0.00
-vt 0.83 0.01 0.00
-vt 0.80 0.06 0.00
-vt 0.80 0.01 0.00
-vt 0.77 0.06 0.00
-vt 0.77 0.01 0.00
-vt 0.73 0.01 0.00
-vt 0.70 0.06 0.00
-vt 0.70 0.01 0.00
-vt 0.95 0.87 0.00
-vt 0.93 0.89 0.00
-vt 0.92 0.82 0.00
-vt 0.95 0.82 0.00
-vt 0.92 0.79 0.00
-vt 0.90 0.79 0.00
-vt 0.90 0.77 0.00
-vt 0.92 0.77 0.00
-vt 0.99 0.56 0.00
-vt 0.98 0.56 0.00
-vt 0.98 0.52 0.00
-vt 0.99 0.52 0.00
-vt 0.93 0.78 0.00
-vt 0.96 0.78 0.00
-vt 0.96 0.79 0.00
-vt 0.96 0.81 0.00
-vt 0.94 0.81 0.00
-vt 0.93 0.90 0.00
-vt 0.95 0.88 0.00
-vt 0.96 0.88 0.00
-vt 0.89 0.79 0.00
-vt 0.89 0.81 0.00
-vt 0.90 0.87 0.00
-vt 0.90 0.82 0.00
-vt 0.99 0.60 0.00
-vt 0.98 0.60 0.00
-vt 0.99 0.66 0.00
-vt 0.99 0.59 0.00
-vt 0.99 0.46 0.00
-vt 0.92 0.76 0.00
-vt 0.86 0.76 0.00
-vt 0.86 0.77 0.00
-vt 0.96 0.83 0.00
-vt 0.95 0.83 0.00
-vt 0.98 0.66 0.00
-vt 0.98 0.46 0.00
-vt 0.96 0.76 0.00
-vt 0.92 0.75 0.00
-vt 0.96 0.75 0.00
-vt 0.86 0.75 0.00
-vt 0.93 0.77 0.00
-vt 0.96 0.77 0.00
-vt 0.97 0.76 0.00
-vt 0.97 0.77 0.00
-vt 0.97 0.75 0.00
-vt 0.97 0.79 0.00
-vt 0.98 0.80 0.00
-vt 0.97 0.78 0.00
-vt 0.62 0.90 0.00
-vt 0.63 0.90 0.00
-vt 0.63 0.93 0.00
-vt 0.62 0.93 0.00
-vt 0.66 0.90 0.00
-vt 0.64 0.93 0.00
-vt 0.64 0.98 0.00
-vt 0.66 0.98 0.00
-vt 0.63 0.99 0.00
-vt 0.62 0.99 0.00
-vt 0.60 0.18 0.00
-vt 0.63 0.18 0.00
-vt 0.63 0.20 0.00
-vt 0.60 0.20 0.00
-vt 0.56 0.18 0.00
-vt 0.56 0.20 0.00
-vt 0.53 0.18 0.00
-vt 0.53 0.20 0.00
-vt 0.89 0.18 0.00
-vt 0.92 0.18 0.00
-vt 0.92 0.20 0.00
-vt 0.89 0.20 0.00
-vt 0.86 0.18 0.00
-vt 0.86 0.20 0.00
-vt 0.82 0.18 0.00
-vt 0.82 0.20 0.00
-vt 0.79 0.18 0.00
-vt 0.79 0.20 0.00
-vt 0.76 0.18 0.00
-vt 0.76 0.20 0.00
-vt 0.73 0.18 0.00
-vt 0.73 0.20 0.00
-vt 0.69 0.18 0.00
-vt 0.69 0.20 0.00
-vt 0.66 0.18 0.00
-vt 0.66 0.20 0.00
-vt 0.86 0.88 0.00
-vt 0.83 0.89 0.00
-vt 0.83 0.88 0.00
-vt 0.85 0.88 0.00
-vt 0.88 0.87 0.00
-vt 0.87 0.86 0.00
-vt 0.88 0.84 0.00
-vt 0.88 0.81 0.00
-vt 0.87 0.82 0.00
-vt 0.86 0.79 0.00
-vt 0.85 0.80 0.00
-vt 0.83 0.79 0.00
-vt 0.83 0.80 0.00
-vt 0.81 0.79 0.00
-vt 0.81 0.80 0.00
-vt 0.79 0.81 0.00
-vt 0.79 0.82 0.00
-vt 0.78 0.84 0.00
-vt 0.79 0.84 0.00
-vt 0.79 0.87 0.00
-vt 0.79 0.86 0.00
-vt 0.81 0.88 0.00
-vt 0.60 0.67 0.00
-vt 0.58 0.67 0.00
-vt 0.58 0.66 0.00
-vt 0.61 0.66 0.00
-vt 0.64 0.67 0.00
-vt 0.64 0.66 0.00
-vt 0.68 0.67 0.00
-vt 0.68 0.66 0.00
-vt 0.72 0.67 0.00
-vt 0.72 0.66 0.00
-vt 0.76 0.67 0.00
-vt 0.76 0.66 0.00
-vt 0.79 0.67 0.00
-vt 0.79 0.66 0.00
-vt 0.81 0.67 0.00
-vt 0.81 0.66 0.00
-vt 0.84 0.67 0.00
-vt 0.84 0.66 0.00
-vt 0.88 0.67 0.00
-vt 0.88 0.66 0.00
-vt 0.53 0.67 0.00
-vt 0.49 0.67 0.00
-vt 0.50 0.66 0.00
-vt 0.53 0.66 0.00
-vt 0.56 0.67 0.00
-vt 0.56 0.66 0.00
-vt 0.66 0.16 0.00
-vt 0.63 0.17 0.00
-vt 0.63 0.12 0.00
-vt 0.68 0.14 0.00
-vt 0.68 0.12 0.00
-vt 0.68 0.09 0.00
-vt 0.66 0.07 0.00
-vt 0.63 0.07 0.00
-vt 0.61 0.07 0.00
-vt 0.59 0.09 0.00
-vt 0.59 0.12 0.00
-vt 0.59 0.14 0.00
-vt 0.61 0.16 0.00
-vt 0.60 0.21 0.00
-vt 0.56 0.21 0.00
-vt 0.64 0.68 0.00
-vt 0.60 0.68 0.00
-vt 0.92 0.21 0.00
-vt 0.89 0.21 0.00
-vt 0.72 0.68 0.00
-vt 0.68 0.68 0.00
-vt 0.86 0.21 0.00
-vt 0.82 0.21 0.00
-vt 0.79 0.68 0.00
-vt 0.76 0.68 0.00
-vt 0.79 0.21 0.00
-vt 0.76 0.21 0.00
-vt 0.84 0.68 0.00
-vt 0.81 0.68 0.00
-vt 0.73 0.21 0.00
-vt 0.69 0.21 0.00
-vt 0.53 0.68 0.00
-vt 0.49 0.68 0.00
-vt 0.66 0.21 0.00
-vt 0.63 0.21 0.00
-vt 0.58 0.68 0.00
-vt 0.56 0.68 0.00
-vt 0.24 0.62 0.00
-vt 0.00 0.62 0.00
-vt 0.05 0.71 0.00
-vt 0.19 0.71 0.00
-vt 0.00 0.41 0.00
-vt 0.28 0.41 0.00
-vt 0.24 0.49 0.00
-vt 0.05 0.49 0.00
-vt 0.01 0.52 0.00
-vt 0.29 0.52 0.00
-vt 0.24 0.59 0.00
-vt 0.05 0.59 0.00
-vt 0.38 0.32 0.00
-vt 0.53 0.32 0.00
-vt 0.53 0.42 0.00
-vt 0.38 0.42 0.00
-vt 0.67 0.21 0.00
-vt 0.49 0.21 0.00
-vt 0.49 0.30 0.00
-vt 0.67 0.30 0.00
-vt 0.46 0.89 0.00
-vt 0.27 0.89 0.00
-vt 0.27 0.99 0.00
-vt 0.46 0.99 0.00
-vt 0.62 0.80 0.00
-vt 0.77 0.80 0.00
-vt 0.77 0.88 0.00
-vt 0.62 0.88 0.00
-vt 0.24 0.73 0.00
-vt 0.32 0.73 0.00
-vt 0.31 0.72 0.00
-vt 0.24 0.72 0.00
-vt 0.32 0.63 0.00
-vt 0.31 0.64 0.00
-vt 0.24 0.63 0.00
-vt 0.24 0.64 0.00
-vt 0.19 0.33 0.00
-vt 0.19 0.25 0.00
-vt 0.20 0.27 0.00
-vt 0.20 0.31 0.00
-vt 0.31 0.25 0.00
-vt 0.30 0.27 0.00
-vt 0.31 0.33 0.00
-vt 0.30 0.31 0.00
-vt 0.14 0.26 0.00
-vt 0.14 0.40 0.00
-vt 0.18 0.34 0.00
-vt 0.18 0.26 0.00
-vt 0.36 0.40 0.00
-vt 0.32 0.34 0.00
-vt 0.36 0.26 0.00
-vt 0.32 0.26 0.00
-vt 0.49 0.15 0.00
-vt 0.49 0.25 0.00
-vt 0.36 0.25 0.00
-vt 0.36 0.15 0.00
-vt 0.41 0.01 0.00
-vt 0.58 0.01 0.00
-vt 0.58 0.14 0.00
-vt 0.41 0.14 0.00
-vt 0.58 0.42 0.00
-vt 0.58 0.54 0.00
-vt 0.45 0.53 0.00
-vt 0.45 0.45 0.00
-vt 0.71 0.95 0.00
-vt 0.66 0.89 0.00
-vt 0.14 0.94 0.00
-vt 0.01 0.95 0.00
-vt 0.76 0.89 0.00
-vt 0.32 0.41 0.00
-vt 0.32 0.53 0.00
-vt 0.27 0.95 0.00
-vt 0.80 0.98 0.00
-vt 0.80 0.93 0.00
-vt 0.81 0.93 0.00
-vt 0.81 0.98 0.00
-vt 0.78 0.98 0.00
-vt 0.78 0.93 0.00
-vt 0.77 0.93 0.00
-vt 0.77 0.98 0.00
-vt 0.77 0.99 0.00
-vt 0.78 0.99 0.00
-vt 0.73 0.93 0.00
-vt 0.74 0.93 0.00
-vt 0.74 0.98 0.00
-vt 0.73 0.98 0.00
-vt 0.76 0.98 0.00
-vt 0.86 0.48 0.00
-vt 0.86 0.45 0.00
-vt 0.94 0.45 0.00
-vt 0.94 0.48 0.00
-vt 0.95 0.40 0.00
-vt 0.99 0.40 0.00
-vt 0.99 0.45 0.00
-vt 0.95 0.45 0.00
-vt 0.99 0.35 0.00
-vt 0.90 0.35 0.00
-vt 0.90 0.39 0.00
-vt 0.99 0.39 0.00
-vt 0.68 0.24 0.00
-vt 0.71 0.24 0.00
-vt 0.71 0.62 0.00
-vt 0.68 0.62 0.00
-vt 0.61 0.69 0.00
-vt 0.80 0.69 0.00
-vt 0.80 0.76 0.00
-vt 0.61 0.76 0.00
-vt 0.87 0.95 0.00
-vt 0.86 0.97 0.00
-vt 0.86 0.91 0.00
-vt 0.87 0.91 0.00
-vt 0.90 0.94 0.00
-vt 0.90 0.91 0.00
-vt 0.91 0.91 0.00
-vt 0.91 0.94 0.00
-vt 0.98 0.83 0.00
-vt 0.98 0.76 0.00
-vt 0.89 0.94 0.00
-vt 0.89 0.91 0.00
-vt 0.95 0.93 0.00
-vt 0.97 0.93 0.00
-vt 0.97 0.94 0.00
-vt 0.97 0.97 0.00
-vt 0.97 0.99 0.00
-vt 0.96 0.99 0.00
-vt 0.86 0.98 0.00
-vt 0.87 0.97 0.00
-vt 0.88 0.97 0.00
-vt 0.86 0.99 0.00
-vt 0.90 0.99 0.00
-vt 0.90 0.97 0.00
-vt 0.91 0.99 0.00
-vt 0.93 0.97 0.00
-vt 0.93 0.98 0.00
-vt 0.85 0.95 0.00
-vt 0.85 0.91 0.00
-vt 0.98 0.90 0.00
-vt 0.93 0.93 0.00
-vt 0.84 0.97 0.00
-vt 0.85 0.97 0.00
-vt 0.99 0.78 0.00
-vt 0.99 0.67 0.00
-vt 0.99 0.83 0.00
-vt 0.99 0.89 0.00
-vt 0.99 0.99 0.00
-vt 0.93 0.95 0.00
-vt 0.93 0.96 0.00
-vt 0.90 0.96 0.00
-vt 0.90 0.95 0.00
-vt 0.96 0.95 0.00
-vt 0.96 0.96 0.00
-vt 0.84 0.92 0.00
-vt 0.85 0.92 0.00
-vt 0.98 0.99 0.00
-vt 0.98 0.67 0.00
-vt 0.88 0.92 0.00
-vt 0.97 0.95 0.00
-vt 0.89 0.95 0.00
-vt 0.95 0.92 0.00
-vt 0.97 0.92 0.00
-vt 0.93 0.92 0.00
-vt 0.98 0.95 0.00
-vt 0.98 0.96 0.00
-vt 0.97 0.96 0.00
-vt 0.98 0.94 0.00
-vt 0.89 0.99 0.00
-vt 0.89 0.97 0.00
-vt 0.88 0.96 0.00
-vt 0.88 0.95 0.00
-vt 0.89 0.96 0.00
-vt 0.04 0.35 0.00
-vt 0.04 0.25 0.00
-vt 0.07 0.25 0.00
-vt 0.07 0.36 0.00
-vt 0.13 0.33 0.00
-vt 0.10 0.35 0.00
-vt 0.10 0.25 0.00
-vt 0.13 0.25 0.00
-vt 0.01 0.33 0.00
-vt 0.01 0.25 0.00
-vt 0.93 0.52 0.00
-vt 0.94 0.52 0.00
-vt 0.94 0.58 0.00
-vt 0.93 0.58 0.00
-vt 0.92 0.49 0.00
-vt 0.91 0.49 0.00
-vt 0.91 0.54 0.00
-vt 0.92 0.55 0.00
-vt 0.97 0.52 0.00
-vt 0.95 0.52 0.00
-vt 0.95 0.58 0.00
-vt 0.97 0.58 0.00
-vt 0.94 0.64 0.00
-vt 0.93 0.64 0.00
-vt 0.89 0.58 0.00
-vt 0.89 0.59 0.00
-vt 0.95 0.64 0.00
-vt 0.97 0.64 0.00
-vt 0.94 0.69 0.00
-vt 0.93 0.69 0.00
-vt 0.86 0.59 0.00
-vt 0.86 0.61 0.00
-vt 0.95 0.69 0.00
-vt 0.97 0.69 0.00
-vt 0.83 0.58 0.00
-vt 0.83 0.59 0.00
-vt 0.81 0.54 0.00
-vt 0.80 0.55 0.00
-vt 0.81 0.49 0.00
-vt 0.80 0.49 0.00
-vt 0.82 0.22 0.00
-vt 0.85 0.22 0.00
-vt 0.84 0.39 0.00
-vt 0.81 0.39 0.00
-vt 0.76 0.22 0.00
-vt 0.80 0.22 0.00
-vt 0.79 0.38 0.00
-vt 0.76 0.38 0.00
-vt 0.82 0.52 0.00
-vt 0.85 0.52 0.00
-vt 0.80 0.51 0.00
-vt 0.76 0.53 0.00
-vt 0.18 0.92 0.00
-vt 0.09 0.92 0.00
-vt 0.09 0.93 0.00
-vt 0.18 0.93 0.00
-vt 0.00 0.90 0.00
-vt 0.10 0.89 0.00
-vt 0.10 0.90 0.00
-vt 0.00 0.91 0.00
-vt 0.00 0.92 0.00
-vt 0.00 0.93 0.00
-vt 0.20 0.90 0.00
-vt 0.20 0.91 0.00
-vt 0.20 0.93 0.00
-vt 0.23 0.90 0.00
-vt 0.23 0.93 0.00
-vt 0.26 0.76 0.00
-vt 0.26 0.90 0.00
-vt 0.22 0.84 0.00
-vt 0.22 0.76 0.00
-vt 0.11 0.81 0.00
-vt 0.11 0.87 0.00
-vt 0.02 0.88 0.00
-vt 0.02 0.81 0.00
-vt 0.31 0.84 0.00
-vt 0.31 0.76 0.00
-vt 0.11 0.74 0.00
-vt 0.11 0.80 0.00
-vt 0.01 0.80 0.00
-vt 0.01 0.74 0.00
-vt 0.20 0.81 0.00
-vt 0.20 0.88 0.00
-vt 0.20 0.74 0.00
-vt 0.20 0.80 0.00
-vt 0.36 0.65 0.00
-vt 0.36 0.75 0.00
-vt 0.34 0.75 0.00
-vt 0.33 0.65 0.00
-vt 0.36 0.89 0.00
-vt 0.33 0.87 0.00
-vt 0.45 0.67 0.00
-vt 0.45 0.76 0.00
-vt 0.43 0.76 0.00
-vt 0.42 0.67 0.00
-vt 0.45 0.89 0.00
-vt 0.42 0.89 0.00
-vt 0.41 0.66 0.00
-vt 0.38 0.66 0.00
-vt 0.39 0.77 0.00
-vt 0.41 0.77 0.00
-vt 0.38 0.88 0.00
-vt 0.41 0.88 0.00
-vt 0.72 0.62 0.00
-vt 0.72 0.52 0.00
-vt 0.73 0.52 0.00
-vt 0.73 0.62 0.00
-vt 0.74 0.62 0.00
-vt 0.74 0.43 0.00
-vt 0.73 0.43 0.00
-vt 0.59 0.58 0.00
-vt 0.64 0.58 0.00
-vt 0.64 0.63 0.00
-vt 0.59 0.63 0.00
-vt 0.75 0.42 0.00
-vt 0.73 0.42 0.00
-vt 0.73 0.36 0.00
-vt 0.75 0.36 0.00
-vt 0.92 0.71 0.00
-vt 0.97 0.71 0.00
-vt 0.92 0.73 0.00
-vt 0.73 0.29 0.00
-vt 0.73 0.24 0.00
-vt 0.75 0.24 0.00
-vt 0.75 0.29 0.00
-vt 0.86 0.72 0.00
-vt 0.86 0.73 0.00
-vt 0.81 0.72 0.00
-vt 0.81 0.70 0.00
-vt 0.73 0.33 0.00
-vt 0.75 0.33 0.00
-vt 0.89 0.74 0.00
-vt 0.89 0.72 0.00
-vt 0.83 0.62 0.00
-vt 0.92 0.62 0.00
-vt 0.92 0.61 0.00
-vt 0.83 0.61 0.00
-vt 0.83 0.63 0.00
-vt 0.92 0.63 0.00
-vt 0.71 0.65 0.00
-vt 0.71 0.66 0.00
-vt 0.75 0.66 0.00
-vt 0.75 0.65 0.00
-vt 0.71 0.64 0.00
-vt 0.75 0.64 0.00
-vt 0.58 0.64 0.00
-vt 0.62 0.66 0.00
-vt 0.62 0.64 0.00
-vt 0.92 0.64 0.00
-vt 0.83 0.64 0.00
-vt 0.75 0.61 0.00
-vt 0.75 0.62 0.00
-vt 0.75 0.63 0.00
-vt 0.67 0.66 0.00
-vt 0.67 0.64 0.00
-vt 0.41 0.65 0.00
-vt 0.41 0.57 0.00
-vt 0.44 0.57 0.00
-vt 0.44 0.66 0.00
-vt 0.48 0.65 0.00
-vt 0.48 0.57 0.00
-# 694 texture coords
-
-o castle
-g castle
-f 1/1/1 2/2/2 3/3/2
-f 3/3/2 4/4/1 1/1/1
-f 2/2/2 5/5/3 6/6/3
-f 6/6/3 3/3/2 2/2/2
-f 5/5/3 7/7/4 8/8/4
-f 8/8/4 6/6/3 5/5/3
-f 7/9/4 9/10/5 10/11/5
-f 10/11/5 8/12/4 7/9/4
-f 9/10/5 11/13/6 12/14/6
-f 12/14/6 10/11/5 9/10/5
-f 11/13/6 13/15/7 14/16/7
-f 14/16/7 12/14/6 11/13/6
-f 13/15/7 15/17/8 16/18/8
-f 16/18/8 14/16/7 13/15/7
-f 15/17/8 17/19/9 18/20/9
-f 18/20/9 16/18/8 15/17/8
-f 17/19/9 19/21/10 20/22/10
-f 20/22/10 18/20/9 17/19/9
-f 19/21/10 21/23/11 22/24/11
-f 22/24/11 20/22/10 19/21/10
-f 21/23/11 23/25/12 24/26/12
-f 24/26/12 22/24/11 21/23/11
-f 23/25/12 1/1/1 4/4/1
-f 4/4/1 24/26/12 23/25/12
-f 25/27/13 26/28/13 27/29/13
-f 27/29/13 28/30/13 25/27/13
-f 29/31/14 25/27/14 28/30/14
-f 28/30/14 30/32/14 29/31/14
-f 31/33/15 29/31/15 30/32/15
-f 30/32/15 32/34/15 31/33/15
-f 33/35/16 31/36/16 32/37/16
-f 32/37/16 34/38/16 33/35/16
-f 35/39/17 33/35/17 34/38/17
-f 34/38/17 36/40/17 35/39/17
-f 37/41/18 35/39/18 36/40/18
-f 36/40/18 38/42/18 37/41/18
-f 39/43/19 37/41/19 38/42/19
-f 38/42/19 40/44/19 39/43/19
-f 41/45/20 39/43/20 40/44/20
-f 40/44/20 42/46/20 41/45/20
-f 43/47/21 41/45/21 42/46/21
-f 42/46/21 44/48/21 43/47/21
-f 45/49/22 43/47/22 44/48/22
-f 44/48/22 46/50/22 45/49/22
-f 47/51/23 45/49/23 46/50/23
-f 46/50/23 48/52/23 47/51/23
-f 26/28/24 47/51/25 48/52/25
-f 48/52/25 27/29/24 26/28/24
-f 2/53/26 1/54/26 26/54/26
-f 26/54/26 25/53/26 2/53/26
-f 1/54/26 23/55/26 47/55/26
-f 47/55/26 26/54/26 1/54/26
-f 23/55/26 21/56/26 45/56/26
-f 45/56/26 47/55/26 23/55/26
-f 21/56/26 19/57/26 43/57/26
-f 43/57/26 45/56/26 21/56/26
-f 19/57/26 17/58/26 41/59/26
-f 41/59/26 43/57/26 19/57/26
-f 17/58/26 15/60/26 39/61/26
-f 39/61/26 41/59/26 17/58/26
-f 15/60/26 13/62/26 37/62/26
-f 37/62/26 39/61/26 15/60/26
-f 13/62/26 11/63/26 35/64/26
-f 35/64/26 37/62/26 13/62/26
-f 11/63/26 9/65/26 33/66/26
-f 33/66/26 35/64/26 11/63/26
-f 9/65/26 7/67/26 31/67/26
-f 31/67/26 33/66/26 9/65/26
-f 7/67/26 5/68/26 29/68/26
-f 29/68/26 31/67/26 7/67/26
-f 5/68/26 2/53/26 25/53/26
-f 25/53/26 29/68/26 5/68/26
-f 49/54/27 50/53/27 28/53/27
-f 28/53/27 27/54/27 49/54/27
-f 50/53/27 51/68/27 30/68/27
-f 30/68/27 28/53/27 50/53/27
-f 51/68/27 52/67/27 32/67/27
-f 32/67/27 30/68/27 51/68/27
-f 52/67/27 53/65/27 34/66/27
-f 34/66/27 32/67/27 52/67/27
-f 53/65/27 54/63/27 36/64/27
-f 36/64/27 34/66/27 53/65/27
-f 54/63/27 55/62/27 38/62/27
-f 38/62/27 36/64/27 54/63/27
-f 55/62/27 56/60/27 40/61/27
-f 40/61/27 38/62/27 55/62/27
-f 56/60/27 57/58/27 42/59/27
-f 42/59/27 40/61/27 56/60/27
-f 57/58/27 58/57/27 44/57/27
-f 44/57/27 42/59/27 57/58/27
-f 58/57/27 59/56/27 46/56/27
-f 46/56/27 44/57/27 58/57/27
-f 59/56/27 60/55/27 48/55/27
-f 48/55/27 46/56/27 59/56/27
-f 60/55/27 49/54/27 27/54/27
-f 27/54/27 48/55/27 60/55/27
-f 49/69/1 61/70/1 62/71/2
-f 62/71/2 50/72/2 49/69/1
-f 50/72/2 62/71/2 63/73/14
-f 63/73/14 51/74/14 50/72/2
-f 51/74/15 63/73/15 64/75/15
-f 64/75/15 52/76/15 51/74/15
-f 52/76/16 64/75/16 65/77/5
-f 65/77/5 53/78/5 52/76/16
-f 53/78/5 65/77/5 66/79/6
-f 66/79/6 54/80/6 53/78/5
-f 54/81/6 66/82/6 67/83/7
-f 67/83/7 55/84/7 54/81/6
-f 55/84/7 67/83/7 68/85/8
-f 68/85/8 56/86/8 55/84/7
-f 56/86/8 68/85/8 69/87/9
-f 69/87/9 57/88/9 56/86/8
-f 57/88/9 69/87/9 70/89/10
-f 70/89/10 58/90/10 57/88/9
-f 58/90/10 70/89/10 71/91/11
-f 71/91/11 59/92/11 58/90/10
-f 59/92/11 71/91/11 72/93/12
-f 72/93/12 60/94/12 59/92/11
-f 60/94/12 72/93/12 61/70/1
-f 61/70/1 49/69/1 60/94/12
-f 73/95/26 74/96/26 75/96/26
-f 75/96/26 76/95/26 73/95/26
-f 77/97/26 73/95/26 76/95/26
-f 76/95/26 78/97/26 77/97/26
-f 79/67/26 77/97/26 78/97/26
-f 78/97/26 80/98/26 79/67/26
-f 81/99/26 79/67/26 80/98/26
-f 80/98/26 82/99/26 81/99/26
-f 83/100/26 81/99/26 82/99/26
-f 82/99/26 84/100/26 83/100/26
-f 85/101/26 83/100/26 84/100/26
-f 84/100/26 86/101/26 85/101/26
-f 87/61/26 85/101/26 86/101/26
-f 86/101/26 88/61/26 87/61/26
-f 89/59/26 87/61/26 88/61/26
-f 88/61/26 90/102/26 89/59/26
-f 91/103/26 89/59/26 90/102/26
-f 90/102/26 92/103/26 91/103/26
-f 93/104/26 91/103/26 92/103/26
-f 92/103/26 94/105/26 93/104/26
-f 95/106/26 93/104/26 94/105/26
-f 94/105/26 96/106/26 95/106/26
-f 74/96/26 95/106/26 96/106/26
-f 96/106/26 75/96/26 74/96/26
-f 76/107/28 75/108/28 97/109/28
-f 97/109/28 98/110/28 76/107/28
-f 78/111/29 76/107/29 98/110/29
-f 98/110/29 99/112/29 78/111/29
-f 80/113/30 78/111/30 99/112/30
-f 99/112/30 100/114/30 80/113/30
-f 82/115/31 80/113/31 100/114/31
-f 100/114/31 101/116/31 82/115/31
-f 84/117/32 82/115/32 101/116/32
-f 101/116/32 102/118/32 84/117/32
-f 86/119/33 84/117/33 102/118/33
-f 102/118/33 103/120/33 86/119/33
-f 88/121/34 86/119/34 103/120/34
-f 103/120/34 104/122/34 88/121/34
-f 90/123/35 88/121/35 104/122/35
-f 104/122/35 105/124/35 90/123/35
-f 92/125/36 90/123/36 105/124/36
-f 105/124/36 106/126/36 92/125/36
-f 94/127/37 92/128/37 106/129/37
-f 106/129/37 107/130/37 94/127/37
-f 96/131/38 94/127/38 107/130/38
-f 107/130/38 108/132/38 96/131/38
-f 75/108/39 96/131/39 108/132/39
-f 108/132/39 97/109/39 75/108/39
-f 98/110/40 97/109/40 109/133/40
-f 109/133/40 110/134/40 98/110/40
-f 99/112/41 98/110/41 110/134/41
-f 110/134/41 111/135/41 99/112/41
-f 100/114/42 99/112/42 111/135/42
-f 111/135/42 112/136/43 100/114/42
-f 101/116/44 100/114/44 112/136/44
-f 112/136/44 113/137/44 101/116/44
-f 102/118/45 101/116/45 113/137/45
-f 113/137/45 114/138/45 102/118/45
-f 103/120/46 102/118/46 114/138/46
-f 114/138/46 115/139/46 103/120/46
-f 104/122/47 103/120/48 115/139/48
-f 115/139/48 116/140/48 104/122/47
-f 105/124/49 104/122/49 116/140/49
-f 116/140/49 117/141/49 105/124/49
-f 106/126/50 105/124/50 117/141/50
-f 117/141/50 118/142/50 106/126/50
-f 107/130/51 106/129/51 118/143/52
-f 118/143/52 119/144/51 107/130/51
-f 108/132/53 107/130/53 119/144/53
-f 119/144/53 120/145/53 108/132/53
-f 97/109/54 108/132/55 120/145/54
-f 120/145/54 109/133/54 97/109/54
-f 121/146/56 122/147/56 62/148/56
-f 62/148/56 61/149/56 121/146/56
-f 122/147/57 123/150/58 63/151/58
-f 63/151/58 62/148/57 122/147/57
-f 123/152/59 124/153/59 64/154/59
-f 64/154/59 63/155/59 123/152/59
-f 124/153/60 125/142/60 65/156/60
-f 65/156/60 64/154/60 124/153/60
-f 125/142/61 126/157/62 66/158/61
-f 66/158/61 65/156/62 125/142/61
-f 126/157/63 127/159/63 67/160/63
-f 67/160/63 66/158/63 126/157/63
-f 127/159/64 128/161/64 68/162/64
-f 68/162/64 67/160/64 127/159/64
-f 128/161/65 129/163/66 69/164/66
-f 69/164/66 68/162/66 128/161/65
-f 129/163/67 130/165/67 70/166/67
-f 70/166/67 69/164/67 129/163/67
-f 130/165/68 131/167/68 71/168/68
-f 71/168/68 70/166/68 130/165/68
-f 131/167/69 132/169/70 72/170/70
-f 72/170/70 71/168/70 131/167/69
-f 132/169/71 121/146/71 61/149/71
-f 61/149/71 72/170/71 132/169/71
-f 74/171/1 73/172/2 122/173/2
-f 122/173/2 121/174/1 74/171/1
-f 73/172/2 77/175/3 123/176/3
-f 123/176/3 122/173/2 73/172/2
-f 77/177/3 79/178/4 124/179/4
-f 124/179/4 123/180/3 77/177/3
-f 79/178/4 81/86/5 125/181/5
-f 125/181/5 124/179/4 79/178/4
-f 81/86/5 83/182/6 126/183/6
-f 126/183/6 125/181/5 81/86/5
-f 83/182/6 85/184/7 127/185/7
-f 127/185/7 126/183/6 83/182/6
-f 85/184/7 87/186/8 128/187/8
-f 128/187/8 127/185/7 85/184/7
-f 87/186/8 89/188/9 129/189/9
-f 129/189/9 128/187/8 87/186/8
-f 89/188/9 91/190/10 130/191/10
-f 130/191/10 129/189/9 89/188/9
-f 91/190/10 93/76/11 131/192/11
-f 131/192/11 130/191/10 91/190/10
-f 93/76/11 95/193/12 132/194/12
-f 132/194/12 131/192/11 93/76/11
-f 95/193/12 74/171/1 121/174/1
-f 121/174/1 132/194/12 95/193/12
-f 133/195/72 134/196/72 135/197/72
-f 135/197/72 136/198/72 133/195/72
-f 137/199/73 138/200/73 139/201/73
-f 139/201/73 140/202/73 137/199/73
-f 141/203/74 142/204/74 143/205/74
-f 143/205/74 144/206/74 141/203/74
-f 145/202/75 146/201/75 147/200/75
-f 147/200/75 148/199/75 145/202/75
-f 149/207/76 150/207/76 151/208/76
-f 151/208/76 152/209/76 149/207/76
-f 153/209/77 154/210/77 155/211/77
-f 142/212/78 156/196/78 157/213/78
-f 157/213/78 143/214/78 142/212/78
-f 158/210/79 159/209/79 160/211/79
-f 161/215/80 162/216/80 160/211/80
-f 160/211/80 159/209/80 161/215/80
-f 163/217/81 164/218/81 135/197/81
-f 135/197/81 134/196/81 163/217/81
-f 165/219/82 166/220/82 142/204/82
-f 142/204/82 141/203/82 165/219/82
-f 167/209/83 168/208/83 150/207/83
-f 150/207/83 149/207/83 167/209/83
-f 142/212/84 166/214/84 169/213/84
-f 169/213/84 156/196/84 142/212/84
-f 161/215/85 153/209/85 155/211/85
-f 155/211/85 162/216/85 161/215/85
-f 170/221/75 157/222/75 133/222/75
-f 133/222/75 136/221/75 170/221/75
-f 157/222/86 156/203/86 134/203/86
-f 134/203/86 133/222/86 157/222/86
-f 156/203/87 169/206/87 163/206/87
-f 163/206/87 134/203/87 156/203/87
-f 169/206/73 171/223/73 164/223/73
-f 164/223/73 163/206/73 169/206/73
-f 171/224/88 172/225/88 135/226/88
-f 135/226/88 164/224/88 171/224/88
-f 172/225/89 170/224/89 136/224/89
-f 136/224/89 135/226/89 172/225/89
-f 166/214/79 173/227/79 171/228/79
-f 171/228/79 169/213/79 166/214/79
-f 173/229/75 166/220/75 165/219/75
-f 165/219/75 174/221/75 173/229/75
-f 144/206/73 143/205/73 175/230/73
-f 175/230/73 176/223/73 144/206/73
-f 175/227/77 143/214/77 157/213/77
-f 157/213/77 170/228/77 175/227/77
-f 139/201/73 138/200/73 177/199/73
-f 177/199/73 178/202/73 139/201/73
-f 175/231/90 170/224/90 155/232/90
-f 155/232/90 154/233/91 175/231/90
-f 170/224/89 172/225/89 162/234/89
-f 162/234/89 155/232/89 170/224/89
-f 172/225/88 171/224/88 160/232/88
-f 160/232/88 162/234/88 172/225/88
-f 171/224/92 173/231/92 158/233/92
-f 158/233/92 160/232/92 171/224/92
-f 147/200/75 146/201/75 179/202/75
-f 179/202/75 180/199/75 147/200/75
-f 151/208/76 150/207/76 161/235/76
-f 161/235/76 159/236/76 151/208/76
-f 150/207/83 168/208/83 153/236/83
-f 153/236/83 161/235/83 150/207/83
-f 176/236/27 175/231/27 138/237/27
-f 138/237/27 137/238/27 176/236/27
-f 175/231/27 154/233/27 177/239/27
-f 177/239/27 138/237/27 175/231/27
-f 154/210/93 153/209/93 178/240/94
-f 178/240/94 177/241/94 154/210/93
-f 153/236/26 168/208/26 139/242/26
-f 139/242/26 178/238/26 153/236/26
-f 168/208/26 167/209/26 140/240/26
-f 140/240/26 139/242/26 168/208/26
-f 152/209/26 151/208/26 146/242/26
-f 146/242/26 145/240/26 152/209/26
-f 151/208/26 159/236/26 179/238/26
-f 179/238/26 146/242/26 151/208/26
-f 159/209/95 158/210/95 180/241/95
-f 180/241/95 179/240/95 159/209/95
-f 158/233/27 173/231/27 147/237/27
-f 147/237/27 180/239/27 158/233/27
-f 173/231/27 174/236/27 148/238/27
-f 148/238/27 147/237/27 173/231/27
-f 181/195/96 182/196/96 183/197/96
-f 183/197/96 184/198/96 181/195/96
-f 185/199/97 186/200/98 187/201/98
-f 187/201/98 188/202/97 185/199/97
-f 189/203/99 190/204/99 191/205/99
-f 191/205/99 192/206/99 189/203/99
-f 193/202/100 194/201/101 195/200/101
-f 195/200/101 196/199/100 193/202/100
-f 197/207/102 198/207/102 199/208/102
-f 199/208/102 200/209/102 197/207/102
-f 201/209/103 202/210/103 203/211/103
-f 190/212/104 204/196/104 205/213/104
-f 205/213/104 191/214/104 190/212/104
-f 206/210/105 207/209/105 208/211/105
-f 209/215/106 210/216/106 208/211/106
-f 208/211/106 207/209/106 209/215/106
-f 211/217/107 212/218/107 183/197/107
-f 183/197/107 182/196/107 211/217/107
-f 213/219/108 214/220/108 190/204/108
-f 190/204/108 189/203/108 213/219/108
-f 215/209/109 216/208/109 198/207/109
-f 198/207/109 197/207/109 215/209/109
-f 190/212/110 214/214/110 217/213/110
-f 217/213/110 204/196/110 190/212/110
-f 209/215/111 201/209/111 203/211/111
-f 203/211/111 210/216/111 209/215/111
-f 218/221/100 205/222/100 181/222/101
-f 181/222/101 184/221/101 218/221/100
-f 205/222/112 204/203/112 182/203/112
-f 182/203/112 181/222/112 205/222/112
-f 204/203/113 217/206/113 211/206/113
-f 211/206/113 182/203/113 204/203/113
-f 217/206/98 219/223/98 212/223/98
-f 212/223/98 211/206/98 217/206/98
-f 219/224/114 220/225/114 183/226/114
-f 183/226/114 212/224/114 219/224/114
-f 220/225/115 218/224/115 184/224/115
-f 184/224/115 183/226/115 220/225/115
-f 214/214/105 221/227/105 219/228/105
-f 219/228/105 217/213/105 214/214/105
-f 221/229/100 214/220/100 213/219/100
-f 213/219/100 222/221/100 221/229/100
-f 192/206/98 191/205/98 223/230/98
-f 223/230/98 224/223/98 192/206/98
-f 223/227/103 191/214/103 205/213/103
-f 205/213/103 218/228/103 223/227/103
-f 187/201/98 186/200/98 225/199/97
-f 225/199/97 226/202/97 187/201/98
-f 223/231/116 218/224/116 203/232/116
-f 203/232/116 202/233/116 223/231/116
-f 218/224/115 220/225/115 210/234/115
-f 210/234/115 203/232/115 218/224/115
-f 220/225/114 219/224/114 208/232/114
-f 208/232/114 210/234/114 220/225/114
-f 219/224/117 221/231/117 206/233/117
-f 206/233/117 208/232/117 219/224/117
-f 195/200/101 194/201/101 227/202/100
-f 227/202/100 228/199/100 195/200/101
-f 199/208/102 198/207/102 209/235/102
-f 209/235/102 207/236/102 199/208/102
-f 198/207/109 216/208/109 201/236/109
-f 201/236/109 209/235/109 198/207/109
-f 224/236/27 223/231/27 186/237/27
-f 186/237/27 185/238/27 224/236/27
-f 223/231/27 202/233/27 225/239/27
-f 225/239/27 186/237/27 223/231/27
-f 202/210/118 201/209/118 226/240/118
-f 226/240/118 225/241/118 202/210/118
-f 201/236/26 216/208/26 187/242/26
-f 187/242/26 226/238/26 201/236/26
-f 216/208/26 215/209/26 188/240/26
-f 188/240/26 187/242/26 216/208/26
-f 200/209/26 199/208/26 194/242/26
-f 194/242/26 193/240/26 200/209/26
-f 199/208/26 207/236/26 227/238/26
-f 227/238/26 194/242/26 199/208/26
-f 207/209/119 206/210/119 228/241/119
-f 228/241/119 227/240/119 207/209/119
-f 206/233/27 221/231/27 195/237/27
-f 195/237/27 228/239/27 206/233/27
-f 221/231/27 222/236/27 196/238/27
-f 196/238/27 195/237/27 221/231/27
-f 229/243/120 230/244/120 231/245/120
-f 231/245/120 232/246/120 229/243/120
-f 229/247/121 232/248/121 233/249/121
-f 233/249/121 234/250/121 229/247/121
-f 232/246/122 231/245/122 235/251/122
-f 235/251/122 233/252/122 232/246/122
-f 231/248/123 230/247/123 236/250/123
-f 236/250/123 235/249/123 231/248/123
-f 237/195/124 238/196/124 239/197/124
-f 239/197/124 240/198/124 237/195/124
-f 241/199/125 242/200/98 243/201/98
-f 243/201/98 244/202/125 241/199/125
-f 245/203/99 246/204/99 247/205/99
-f 247/205/99 248/206/99 245/203/99
-f 249/202/100 250/201/101 251/200/101
-f 251/200/101 252/199/100 249/202/100
-f 253/207/102 254/207/102 255/208/102
-f 255/208/102 256/209/102 253/207/102
-f 257/209/103 258/210/103 259/211/103
-f 246/212/104 260/196/104 261/213/104
-f 261/213/104 247/214/104 246/212/104
-f 262/210/105 263/209/105 264/211/105
-f 265/215/106 266/216/106 264/211/106
-f 264/211/106 263/209/106 265/215/106
-f 267/217/107 268/218/107 239/197/107
-f 239/197/107 238/196/107 267/217/107
-f 269/219/126 270/220/126 246/204/108
-f 246/204/108 245/203/108 269/219/126
-f 271/209/109 272/208/109 254/207/109
-f 254/207/109 253/207/109 271/209/109
-f 246/212/110 270/214/110 273/213/110
-f 273/213/110 260/196/110 246/212/110
-f 265/215/111 257/209/111 259/211/111
-f 259/211/111 266/216/111 265/215/111
-f 274/221/100 261/222/100 237/222/100
-f 237/222/100 240/221/100 274/221/100
-f 261/222/112 260/203/112 238/203/112
-f 238/203/112 237/222/112 261/222/112
-f 260/203/113 273/206/113 267/206/113
-f 267/206/113 238/203/113 260/203/113
-f 273/206/98 275/223/98 268/223/98
-f 268/223/98 267/206/98 273/206/98
-f 275/224/114 276/225/114 239/226/114
-f 239/226/114 268/224/114 275/224/114
-f 276/225/115 274/224/115 240/224/115
-f 240/224/115 239/226/115 276/225/115
-f 270/214/105 277/227/105 275/228/105
-f 275/228/105 273/213/105 270/214/105
-f 277/229/101 270/220/101 269/219/101
-f 269/219/101 278/221/101 277/229/101
-f 248/206/98 247/205/97 279/230/97
-f 279/230/97 280/223/98 248/206/98
-f 279/227/103 247/214/103 261/213/103
-f 261/213/103 274/228/103 279/227/103
-f 243/201/98 242/200/98 281/199/97
-f 281/199/97 282/202/97 243/201/98
-f 279/231/116 274/224/116 259/232/116
-f 259/232/116 258/233/116 279/231/116
-f 274/224/115 276/225/115 266/234/115
-f 266/234/115 259/232/115 274/224/115
-f 276/225/114 275/224/114 264/232/114
-f 264/232/114 266/234/114 276/225/114
-f 275/224/117 277/231/117 262/233/117
-f 262/233/117 264/232/117 275/224/117
-f 251/200/101 250/201/101 283/202/100
-f 283/202/100 284/199/100 251/200/101
-f 255/208/102 254/207/102 265/235/102
-f 265/235/102 263/236/102 255/208/102
-f 254/207/109 272/208/109 257/236/109
-f 257/236/109 265/235/109 254/207/109
-f 280/236/27 279/231/27 242/237/27
-f 242/237/27 241/238/27 280/236/27
-f 279/231/27 258/233/27 281/239/27
-f 281/239/27 242/237/27 279/231/27
-f 258/210/118 257/209/118 282/240/118
-f 282/240/118 281/241/118 258/210/118
-f 257/236/26 272/208/26 243/242/26
-f 243/242/26 282/238/26 257/236/26
-f 272/208/26 271/209/26 244/240/26
-f 244/240/26 243/242/26 272/208/26
-f 256/209/26 255/208/26 250/242/26
-f 250/242/26 249/240/26 256/209/26
-f 255/208/26 263/236/26 283/238/26
-f 283/238/26 250/242/26 255/208/26
-f 263/209/119 262/210/119 284/241/119
-f 284/241/119 283/240/119 263/209/119
-f 262/233/27 277/231/27 251/237/27
-f 251/237/27 284/239/27 262/233/27
-f 277/231/27 278/236/27 252/238/27
-f 252/238/27 251/237/27 277/231/27
-f 285/243/127 286/244/127 287/245/127
-f 287/245/127 288/246/127 285/243/127
-f 285/247/128 288/248/128 289/249/128
-f 289/249/128 290/250/128 285/247/128
-f 288/246/129 287/245/129 291/251/129
-f 291/251/129 289/252/129 288/246/129
-f 287/248/130 286/247/130 292/250/130
-f 292/250/130 291/249/130 287/248/130
-f 293/195/131 294/196/131 295/197/131
-f 295/197/131 296/198/131 293/195/131
-f 297/199/75 298/200/75 299/201/75
-f 299/201/75 300/202/75 297/199/75
-f 301/203/132 302/204/132 303/205/132
-f 303/205/132 304/206/132 301/203/132
-f 305/202/73 306/201/73 307/200/73
-f 307/200/73 308/199/73 305/202/73
-f 309/207/83 310/207/83 311/208/83
-f 311/208/83 312/209/83 309/207/83
-f 313/209/133 314/210/133 315/211/133
-f 302/212/134 316/196/134 317/213/134
-f 317/213/134 303/214/134 302/212/134
-f 318/210/135 319/209/135 320/211/135
-f 321/215/136 322/216/136 320/211/136
-f 320/211/136 319/209/136 321/215/136
-f 323/217/137 324/218/137 295/197/138
-f 295/197/138 294/196/138 323/217/137
-f 325/219/139 326/220/139 302/204/139
-f 302/204/139 301/203/139 325/219/139
-f 327/209/76 328/208/76 310/207/76
-f 310/207/76 309/207/76 327/209/76
-f 302/212/140 326/214/140 329/213/140
-f 329/213/140 316/196/140 302/212/140
-f 321/215/141 313/209/141 315/211/141
-f 315/211/141 322/216/141 321/215/141
-f 330/221/73 317/222/73 293/222/73
-f 293/222/73 296/221/73 330/221/73
-f 317/222/87 316/203/87 294/203/87
-f 294/203/87 293/222/87 317/222/87
-f 316/203/86 329/206/86 323/206/86
-f 323/206/86 294/203/86 316/203/86
-f 329/206/75 331/223/75 324/223/75
-f 324/223/75 323/206/75 329/206/75
-f 331/224/142 332/225/142 295/226/142
-f 295/226/142 324/224/142 331/224/142
-f 332/225/143 330/224/143 296/224/143
-f 296/224/143 295/226/143 332/225/143
-f 326/214/135 333/227/135 331/228/135
-f 331/228/135 329/213/135 326/214/135
-f 333/229/73 326/220/73 325/219/73
-f 325/219/73 334/221/73 333/229/73
-f 304/206/75 303/205/75 335/230/75
-f 335/230/75 336/223/75 304/206/75
-f 335/227/133 303/214/133 317/213/133
-f 317/213/133 330/228/133 335/227/133
-f 299/201/75 298/200/75 337/199/75
-f 337/199/75 338/202/75 299/201/75
-f 335/231/144 330/224/144 315/232/144
-f 315/232/144 314/233/144 335/231/144
-f 330/224/143 332/225/143 322/234/143
-f 322/234/143 315/232/143 330/224/143
-f 332/225/142 331/224/142 320/232/142
-f 320/232/142 322/234/142 332/225/142
-f 331/224/145 333/231/145 318/233/145
-f 318/233/145 320/232/145 331/224/145
-f 307/200/73 306/201/73 339/202/73
-f 339/202/73 340/199/73 307/200/73
-f 311/208/83 310/207/83 321/235/83
-f 321/235/83 319/236/83 311/208/83
-f 310/207/76 328/208/76 313/236/76
-f 313/236/76 321/235/76 310/207/76
-f 336/236/27 335/231/27 298/237/27
-f 298/237/27 297/238/27 336/236/27
-f 335/231/27 314/233/27 337/239/27
-f 337/239/27 298/237/27 335/231/27
-f 314/210/146 313/209/146 338/240/146
-f 338/240/146 337/241/146 314/210/146
-f 313/236/26 328/208/26 299/242/26
-f 299/242/26 338/238/26 313/236/26
-f 328/208/26 327/209/26 300/240/26
-f 300/240/26 299/242/26 328/208/26
-f 312/209/26 311/208/26 306/242/26
-f 306/242/26 305/240/26 312/209/26
-f 311/208/26 319/236/26 339/238/26
-f 339/238/26 306/242/26 311/208/26
-f 319/209/147 318/210/147 340/241/147
-f 340/241/147 339/240/147 319/209/147
-f 318/233/27 333/231/27 307/237/27
-f 307/237/27 340/239/27 318/233/27
-f 333/231/27 334/236/27 308/238/27
-f 308/238/27 307/237/27 333/231/27
-f 341/243/148 342/244/148 343/245/148
-f 343/245/148 344/246/148 341/243/148
-f 341/247/1 344/248/1 345/249/1
-f 345/249/1 346/250/1 341/247/1
-f 344/246/149 343/245/149 347/251/149
-f 347/251/149 345/252/149 344/246/149
-f 343/248/7 342/247/7 348/250/7
-f 348/250/7 347/249/7 343/248/7
-f 349/243/150 350/244/150 351/245/150
-f 351/245/150 352/246/150 349/243/150
-f 349/247/151 352/248/151 353/249/151
-f 353/249/151 354/250/151 349/247/151
-f 352/246/152 351/245/152 355/251/152
-f 355/251/152 353/252/152 352/246/152
-f 351/248/153 350/247/153 356/250/153
-f 356/250/153 355/249/153 351/248/153
-f 357/243/154 358/244/154 359/245/154
-f 359/245/154 360/246/154 357/243/154
-f 357/247/7 360/248/7 361/249/7
-f 361/249/7 362/250/7 357/247/7
-f 360/246/155 359/245/155 363/251/155
-f 363/251/155 361/252/155 360/246/155
-f 359/248/1 358/247/1 364/250/1
-f 364/250/1 363/249/1 359/248/1
-f 365/243/156 366/244/156 367/245/156
-f 367/245/156 368/246/156 365/243/156
-f 365/247/157 368/248/157 369/249/157
-f 369/249/157 370/250/157 365/247/157
-f 368/246/158 367/245/158 371/251/158
-f 371/251/158 369/252/158 368/246/158
-f 367/248/159 366/247/159 372/250/159
-f 372/250/159 371/249/159 367/248/159
-f 373/243/160 374/244/160 375/245/160
-f 375/245/160 376/246/160 373/243/160
-f 373/247/161 376/248/161 377/249/161
-f 377/249/161 378/250/161 373/247/161
-f 376/246/162 375/245/162 379/251/162
-f 379/251/162 377/252/162 376/246/162
-f 375/248/163 374/247/163 380/250/163
-f 380/250/163 379/249/163 375/248/163
-f 381/195/131 382/196/131 383/197/131
-f 383/197/131 384/198/131 381/195/131
-f 385/199/75 386/200/75 387/201/75
-f 387/201/75 388/202/75 385/199/75
-f 389/203/132 390/204/132 391/205/132
-f 391/205/132 392/206/132 389/203/132
-f 393/202/73 394/201/73 395/200/73
-f 395/200/73 396/199/73 393/202/73
-f 397/207/83 398/207/83 399/208/83
-f 399/208/83 400/209/83 397/207/83
-f 401/209/133 402/210/133 403/211/133
-f 390/212/134 404/196/134 405/213/134
-f 405/213/134 391/214/134 390/212/134
-f 406/210/135 407/209/135 408/211/135
-f 409/215/136 410/216/136 408/211/136
-f 408/211/136 407/209/136 409/215/136
-f 411/217/137 412/218/137 383/197/138
-f 383/197/138 382/196/138 411/217/137
-f 413/219/139 414/220/139 390/204/139
-f 390/204/139 389/203/139 413/219/139
-f 415/209/76 416/208/76 398/207/76
-f 398/207/76 397/207/76 415/209/76
-f 390/212/140 414/214/140 417/213/140
-f 417/213/140 404/196/140 390/212/140
-f 409/215/141 401/209/141 403/211/141
-f 403/211/141 410/216/141 409/215/141
-f 418/221/73 405/222/73 381/222/73
-f 381/222/73 384/221/73 418/221/73
-f 405/222/87 404/203/87 382/203/87
-f 382/203/87 381/222/87 405/222/87
-f 404/203/86 417/206/86 411/206/86
-f 411/206/86 382/203/86 404/203/86
-f 417/206/75 419/223/75 412/223/75
-f 412/223/75 411/206/75 417/206/75
-f 419/224/142 420/225/142 383/226/142
-f 383/226/142 412/224/142 419/224/142
-f 420/225/143 418/224/143 384/224/143
-f 384/224/143 383/226/143 420/225/143
-f 414/214/135 421/227/135 419/228/135
-f 419/228/135 417/213/135 414/214/135
-f 421/229/73 414/220/73 413/219/73
-f 413/219/73 422/221/73 421/229/73
-f 392/206/75 391/205/75 423/230/75
-f 423/230/75 424/223/75 392/206/75
-f 423/227/133 391/214/133 405/213/133
-f 405/213/133 418/228/133 423/227/133
-f 387/201/75 386/200/75 425/199/75
-f 425/199/75 426/202/75 387/201/75
-f 423/231/144 418/224/144 403/232/144
-f 403/232/144 402/233/144 423/231/144
-f 418/224/143 420/225/143 410/234/143
-f 410/234/143 403/232/143 418/224/143
-f 420/225/142 419/224/142 408/232/142
-f 408/232/142 410/234/142 420/225/142
-f 419/224/145 421/231/145 406/233/145
-f 406/233/145 408/232/145 419/224/145
-f 395/200/73 394/201/73 427/202/73
-f 427/202/73 428/199/73 395/200/73
-f 399/208/83 398/207/83 409/235/83
-f 409/235/83 407/236/83 399/208/83
-f 398/207/76 416/208/76 401/236/76
-f 401/236/76 409/235/76 398/207/76
-f 424/236/27 423/231/27 386/237/27
-f 386/237/27 385/238/27 424/236/27
-f 423/231/27 402/233/27 425/239/27
-f 425/239/27 386/237/27 423/231/27
-f 402/210/146 401/209/146 426/240/146
-f 426/240/146 425/241/146 402/210/146
-f 401/236/26 416/208/26 387/242/26
-f 387/242/26 426/238/26 401/236/26
-f 416/208/26 415/209/26 388/240/26
-f 388/240/26 387/242/26 416/208/26
-f 400/209/26 399/208/26 394/242/26
-f 394/242/26 393/240/26 400/209/26
-f 399/208/26 407/236/26 427/238/26
-f 427/238/26 394/242/26 399/208/26
-f 407/209/147 406/210/147 428/241/147
-f 428/241/147 427/240/147 407/209/147
-f 406/233/27 421/231/27 395/237/27
-f 395/237/27 428/239/27 406/233/27
-f 421/231/27 422/236/27 396/238/27
-f 396/238/27 395/237/27 421/231/27
-f 429/195/164 430/196/10 431/197/10
-f 431/197/10 432/198/164 429/195/164
-f 433/199/165 434/200/165 435/201/165
-f 435/201/165 436/202/165 433/199/165
-f 437/203/108 438/204/108 439/205/108
-f 439/205/108 440/206/108 437/203/108
-f 441/202/125 442/201/125 443/200/125
-f 443/200/125 444/199/125 441/202/125
-f 445/207/166 446/207/166 447/208/166
-f 447/208/166 448/209/166 445/207/166
-f 449/209/167 450/210/167 451/211/167
-f 438/212/168 452/196/168 453/213/168
-f 453/213/168 439/214/168 438/212/168
-f 454/210/169 455/209/169 456/211/169
-f 457/215/170 458/216/170 456/211/170
-f 456/211/170 455/209/170 457/215/170
-f 459/217/171 460/218/171 431/197/171
-f 431/197/171 430/196/171 459/217/171
-f 461/219/172 462/220/99 438/204/99
-f 438/204/99 437/203/99 461/219/172
-f 463/209/173 464/208/173 446/207/173
-f 446/207/173 445/207/173 463/209/173
-f 438/212/174 462/214/174 465/213/174
-f 465/213/174 452/196/174 438/212/174
-f 457/215/175 449/209/175 451/211/175
-f 451/211/175 458/216/175 457/215/175
-f 466/221/125 453/222/125 429/222/125
-f 429/222/125 432/221/125 466/221/125
-f 453/222/113 452/203/113 430/203/113
-f 430/203/113 429/222/113 453/222/113
-f 452/203/112 465/206/112 459/206/112
-f 459/206/112 430/203/112 452/203/112
-f 465/206/165 467/223/165 460/223/165
-f 460/223/165 459/206/165 465/206/165
-f 467/224/176 468/225/176 431/226/176
-f 431/226/176 460/224/176 467/224/176
-f 468/225/117 466/224/117 432/224/117
-f 432/224/117 431/226/117 468/225/117
-f 462/214/169 469/227/169 467/228/169
-f 467/228/169 465/213/169 462/214/169
-f 469/229/125 462/220/125 461/219/125
-f 461/219/125 470/221/125 469/229/125
-f 440/206/165 439/205/165 471/230/165
-f 471/230/165 472/223/165 440/206/165
-f 471/227/167 439/214/167 453/213/167
-f 453/213/167 466/228/167 471/227/167
-f 435/201/165 434/200/165 473/199/165
-f 473/199/165 474/202/165 435/201/165
-f 471/231/177 466/224/177 451/232/177
-f 451/232/177 450/233/177 471/231/177
-f 466/224/117 468/225/117 458/234/117
-f 458/234/117 451/232/117 466/224/117
-f 468/225/176 467/224/176 456/232/176
-f 456/232/176 458/234/176 468/225/176
-f 467/224/115 469/231/115 454/233/115
-f 454/233/115 456/232/115 467/224/115
-f 443/200/125 442/201/125 475/202/125
-f 475/202/125 476/199/125 443/200/125
-f 447/208/166 446/207/166 457/235/166
-f 457/235/166 455/236/166 447/208/166
-f 446/207/173 464/208/173 449/236/173
-f 449/236/173 457/235/173 446/207/173
-f 472/236/27 471/231/27 434/237/27
-f 434/237/27 433/238/27 472/236/27
-f 471/231/27 450/233/27 473/239/27
-f 473/239/27 434/237/27 471/231/27
-f 450/210/178 449/209/178 474/240/178
-f 474/240/178 473/241/178 450/210/178
-f 449/236/26 464/208/26 435/242/26
-f 435/242/26 474/238/26 449/236/26
-f 464/208/26 463/209/26 436/240/26
-f 436/240/26 435/242/26 464/208/26
-f 448/209/26 447/208/26 442/242/26
-f 442/242/26 441/240/26 448/209/26
-f 447/208/26 455/236/26 475/238/26
-f 475/238/26 442/242/26 447/208/26
-f 455/209/179 454/210/179 476/241/179
-f 476/241/179 475/240/179 455/209/179
-f 454/233/27 469/231/27 443/237/27
-f 443/237/27 476/239/27 454/233/27
-f 469/231/27 470/236/27 444/238/27
-f 444/238/27 443/237/27 469/231/27
-f 477/243/180 478/244/180 479/245/180
-f 479/245/180 480/246/180 477/243/180
-f 477/247/153 480/248/153 481/249/153
-f 481/249/153 482/250/153 477/247/153
-f 480/246/181 479/245/181 483/251/181
-f 483/251/181 481/252/182 480/246/181
-f 479/248/151 478/247/151 484/250/151
-f 484/250/151 483/249/151 479/248/151
-f 485/195/10 486/196/10 487/197/10
-f 487/197/10 488/198/10 485/195/10
-f 489/199/165 490/200/165 491/201/165
-f 491/201/165 492/202/165 489/199/165
-f 493/203/108 494/204/108 495/205/108
-f 495/205/108 496/206/108 493/203/108
-f 497/202/125 498/201/125 499/200/125
-f 499/200/125 500/199/125 497/202/125
-f 501/207/166 502/207/166 503/208/166
-f 503/208/166 504/209/166 501/207/166
-f 505/209/167 506/210/167 507/211/167
-f 494/212/168 508/196/168 509/213/168
-f 509/213/168 495/214/168 494/212/168
-f 510/210/169 511/209/169 512/211/169
-f 513/215/170 514/216/170 512/211/170
-f 512/211/170 511/209/170 513/215/170
-f 515/217/171 516/218/171 487/197/171
-f 487/197/171 486/196/171 515/217/171
-f 517/219/99 518/220/99 494/204/172
-f 494/204/172 493/203/99 517/219/99
-f 519/209/173 520/208/173 502/207/173
-f 502/207/173 501/207/173 519/209/173
-f 494/212/174 518/214/174 521/213/174
-f 521/213/174 508/196/174 494/212/174
-f 513/215/175 505/209/175 507/211/175
-f 507/211/175 514/216/175 513/215/175
-f 522/221/125 509/222/125 485/222/125
-f 485/222/125 488/221/125 522/221/125
-f 509/222/113 508/203/113 486/203/113
-f 486/203/113 485/222/113 509/222/113
-f 508/203/112 521/206/112 515/206/112
-f 515/206/112 486/203/112 508/203/112
-f 521/206/165 523/223/165 516/223/165
-f 516/223/165 515/206/165 521/206/165
-f 523/224/176 524/225/176 487/226/176
-f 487/226/176 516/224/176 523/224/176
-f 524/225/117 522/224/117 488/224/117
-f 488/224/117 487/226/117 524/225/117
-f 518/214/169 525/227/169 523/228/169
-f 523/228/169 521/213/169 518/214/169
-f 525/229/125 518/220/125 517/219/125
-f 517/219/125 526/221/125 525/229/125
-f 496/206/165 495/205/165 527/230/165
-f 527/230/165 528/223/165 496/206/165
-f 527/227/167 495/214/167 509/213/167
-f 509/213/167 522/228/167 527/227/167
-f 491/201/165 490/200/165 529/199/165
-f 529/199/165 530/202/165 491/201/165
-f 527/231/177 522/224/177 507/232/177
-f 507/232/177 506/233/177 527/231/177
-f 522/224/117 524/225/117 514/234/117
-f 514/234/117 507/232/117 522/224/117
-f 524/225/176 523/224/176 512/232/176
-f 512/232/176 514/234/176 524/225/176
-f 523/224/115 525/231/115 510/233/115
-f 510/233/115 512/232/115 523/224/115
-f 499/200/125 498/201/125 531/202/125
-f 531/202/125 532/199/125 499/200/125
-f 503/208/166 502/207/166 513/235/166
-f 513/235/166 511/236/166 503/208/166
-f 502/207/173 520/208/173 505/236/173
-f 505/236/173 513/235/173 502/207/173
-f 528/236/27 527/231/27 490/237/27
-f 490/237/27 489/238/27 528/236/27
-f 527/231/27 506/233/27 529/239/27
-f 529/239/27 490/237/27 527/231/27
-f 506/210/178 505/209/178 530/240/178
-f 530/240/178 529/241/178 506/210/178
-f 505/236/26 520/208/26 491/242/26
-f 491/242/26 530/238/26 505/236/26
-f 520/208/26 519/209/26 492/240/26
-f 492/240/26 491/242/26 520/208/26
-f 504/209/26 503/208/26 498/242/26
-f 498/242/26 497/240/26 504/209/26
-f 503/208/26 511/236/26 531/238/26
-f 531/238/26 498/242/26 503/208/26
-f 511/209/179 510/210/179 532/241/179
-f 532/241/179 531/240/179 511/209/179
-f 510/233/27 525/231/27 499/237/27
-f 499/237/27 532/239/27 510/233/27
-f 525/231/27 526/236/27 500/238/27
-f 500/238/27 499/237/27 525/231/27
-f 533/243/183 534/244/183 535/245/183
-f 535/245/183 536/246/183 533/243/183
-f 533/247/184 536/248/184 537/249/184
-f 537/249/184 538/250/184 533/247/184
-f 536/246/185 535/245/185 539/251/185
-f 539/251/185 537/252/185 536/246/185
-f 535/248/186 534/247/186 540/250/186
-f 540/250/186 539/249/186 535/248/186
-f 541/195/72 542/196/72 543/197/72
-f 543/197/72 544/198/72 541/195/72
-f 545/199/73 546/200/73 547/201/73
-f 547/201/73 548/202/73 545/199/73
-f 549/203/74 550/204/74 551/205/74
-f 551/205/74 552/206/74 549/203/74
-f 553/202/75 554/201/75 555/200/75
-f 555/200/75 556/199/75 553/202/75
-f 557/207/76 558/207/76 559/208/76
-f 559/208/76 560/209/76 557/207/76
-f 561/209/77 562/210/77 563/211/77
-f 550/212/78 564/196/78 565/213/78
-f 565/213/78 551/214/78 550/212/78
-f 566/210/79 567/209/79 568/211/79
-f 569/215/80 570/216/80 568/211/80
-f 568/211/80 567/209/80 569/215/80
-f 571/217/81 572/218/81 543/197/81
-f 543/197/81 542/196/81 571/217/81
-f 573/219/82 574/220/82 550/204/82
-f 550/204/82 549/203/82 573/219/82
-f 575/209/83 576/208/83 558/207/83
-f 558/207/83 557/207/83 575/209/83
-f 550/212/84 574/214/84 577/213/84
-f 577/213/84 564/196/84 550/212/84
-f 569/215/85 561/209/85 563/211/85
-f 563/211/85 570/216/85 569/215/85
-f 578/221/75 565/222/75 541/222/75
-f 541/222/75 544/221/75 578/221/75
-f 565/222/86 564/203/86 542/203/86
-f 542/203/86 541/222/86 565/222/86
-f 564/203/87 577/206/87 571/206/87
-f 571/206/87 542/203/87 564/203/87
-f 577/206/73 579/223/73 572/223/73
-f 572/223/73 571/206/73 577/206/73
-f 579/224/88 580/225/88 543/226/88
-f 543/226/88 572/224/88 579/224/88
-f 580/225/89 578/224/89 544/224/89
-f 544/224/89 543/226/89 580/225/89
-f 574/214/79 581/227/79 579/228/79
-f 579/228/79 577/213/79 574/214/79
-f 581/229/75 574/220/75 573/219/75
-f 573/219/75 582/221/75 581/229/75
-f 552/206/73 551/205/73 583/230/73
-f 583/230/73 584/223/73 552/206/73
-f 583/227/77 551/214/77 565/213/77
-f 565/213/77 578/228/77 583/227/77
-f 547/201/73 546/200/73 585/199/73
-f 585/199/73 586/202/73 547/201/73
-f 583/231/90 578/224/90 563/232/90
-f 563/232/90 562/233/90 583/231/90
-f 578/224/89 580/225/89 570/234/89
-f 570/234/89 563/232/89 578/224/89
-f 580/225/88 579/224/88 568/232/88
-f 568/232/88 570/234/88 580/225/88
-f 579/224/92 581/231/92 566/233/92
-f 566/233/92 568/232/92 579/224/92
-f 555/200/75 554/201/75 587/202/75
-f 587/202/75 588/199/75 555/200/75
-f 559/208/76 558/207/76 569/235/76
-f 569/235/76 567/236/76 559/208/76
-f 558/207/83 576/208/83 561/236/83
-f 561/236/83 569/235/83 558/207/83
-f 584/236/27 583/231/27 546/237/27
-f 546/237/27 545/238/27 584/236/27
-f 583/231/27 562/233/27 585/239/27
-f 585/239/27 546/237/27 583/231/27
-f 562/210/94 561/209/94 586/240/94
-f 586/240/94 585/241/94 562/210/94
-f 561/236/26 576/208/26 547/242/26
-f 547/242/26 586/238/26 561/236/26
-f 576/208/26 575/209/26 548/240/26
-f 548/240/26 547/242/26 576/208/26
-f 560/209/26 559/208/26 554/242/26
-f 554/242/26 553/240/26 560/209/26
-f 559/208/26 567/236/26 587/238/26
-f 587/238/26 554/242/26 559/208/26
-f 567/209/95 566/210/95 588/241/95
-f 588/241/95 587/240/95 567/209/95
-f 566/233/27 581/231/27 555/237/27
-f 555/237/27 588/239/27 566/233/27
-f 581/231/27 582/236/27 556/238/27
-f 556/238/27 555/237/27 581/231/27
-f 589/243/187 590/244/187 591/245/187
-f 591/245/187 592/246/187 589/243/187
-f 589/247/163 592/248/163 593/249/163
-f 593/249/163 594/250/163 589/247/163
-f 592/246/188 591/245/188 595/251/189
-f 595/251/189 593/252/188 592/246/188
-f 591/248/161 590/247/161 596/250/161
-f 596/250/161 595/249/161 591/248/161
-f 597/253/13 598/254/13 599/255/13
-f 599/255/13 600/256/13 597/253/13
-f 601/257/14 597/253/14 600/256/14
-f 600/256/14 602/258/14 601/257/14
-f 603/259/118 601/257/118 602/258/118
-f 602/258/118 604/260/15 603/259/118
-f 605/261/16 603/262/16 604/263/16
-f 604/263/16 606/264/16 605/261/16
-f 607/265/17 605/261/17 606/264/17
-f 606/264/17 608/266/17 607/265/17
-f 609/267/18 607/265/18 608/266/18
-f 608/266/18 610/268/18 609/267/18
-f 611/269/190 609/267/19 610/268/19
-f 610/268/19 612/270/190 611/269/190
-f 613/271/20 611/269/20 612/270/20
-f 612/270/20 614/272/20 613/271/20
-f 615/273/21 613/271/21 614/272/21
-f 614/272/21 616/274/21 615/273/21
-f 617/275/191 615/273/191 616/274/22
-f 616/274/22 618/276/191 617/275/191
-f 619/277/23 617/275/23 618/276/23
-f 618/276/23 620/278/23 619/277/23
-f 598/254/24 619/277/25 620/278/25
-f 620/278/25 599/255/24 598/254/24
-f 600/279/27 599/280/27 621/281/27
-f 621/281/27 622/282/27 600/279/27
-f 623/283/27 624/279/27 625/282/27
-f 625/282/27 626/284/27 623/283/27
-f 604/285/27 602/283/27 627/284/27
-f 627/284/27 628/285/27 604/285/27
-f 629/286/27 630/285/27 631/285/27
-f 631/285/27 632/287/27 629/286/27
-f 608/288/27 606/286/27 633/287/27
-f 633/287/27 634/289/27 608/288/27
-f 635/290/27 636/288/27 637/289/27
-f 637/289/27 638/291/27 635/290/27
-f 612/292/27 610/290/27 639/291/27
-f 639/291/27 640/293/27 612/292/27
-f 641/294/27 642/292/27 643/293/27
-f 643/293/27 644/295/27 641/294/27
-f 616/296/27 614/294/27 645/295/27
-f 645/295/27 646/297/27 616/296/27
-f 647/298/27 648/296/27 649/297/27
-f 649/297/27 650/299/27 647/298/27
-f 620/300/27 618/298/27 651/299/27
-f 651/299/27 652/300/27 620/300/27
-f 653/280/27 654/300/27 655/300/27
-f 655/300/27 656/281/27 653/280/27
-f 622/301/19 621/302/19 657/303/19
-f 657/303/19 658/304/19 622/301/19
-f 627/305/20 622/301/20 658/304/20
-f 658/304/20 659/306/20 627/305/20
-f 628/307/21 627/305/21 659/306/21
-f 659/306/21 660/308/21 628/307/21
-f 633/309/22 628/307/22 660/308/22
-f 660/308/22 661/310/22 633/309/22
-f 634/311/23 633/309/23 661/310/23
-f 661/310/23 662/312/23 634/311/23
-f 639/313/24 634/311/24 662/312/24
-f 662/312/24 663/314/24 639/313/24
-f 640/315/192 639/313/13 663/314/13
-f 663/314/13 664/316/192 640/315/192
-f 645/317/14 640/315/14 664/316/14
-f 664/316/14 665/318/14 645/317/14
-f 646/319/15 645/317/15 665/318/15
-f 665/318/15 666/320/15 646/319/15
-f 651/321/16 646/322/16 666/323/193
-f 666/323/193 667/324/16 651/321/16
-f 652/325/17 651/321/17 667/324/17
-f 667/324/17 668/326/17 652/325/17
-f 621/302/18 652/325/194 668/326/194
-f 668/326/194 657/303/18 621/302/18
-f 658/327/27 657/328/27 669/329/27
-f 659/330/27 658/327/27 669/329/27
-f 660/331/27 659/330/27 669/329/27
-f 661/332/27 660/331/27 669/329/27
-f 662/333/27 661/332/27 669/329/27
-f 663/334/27 662/333/27 669/329/27
-f 664/335/27 663/334/27 669/329/27
-f 665/336/27 664/335/27 669/329/27
-f 666/337/27 665/336/27 669/329/27
-f 667/338/27 666/337/27 669/329/27
-f 668/339/27 667/338/27 669/329/27
-f 657/328/27 668/339/27 669/329/27
-f 602/258/14 600/256/14 624/340/14
-f 624/340/14 623/341/14 602/258/14
-f 600/279/161 622/282/161 625/282/161
-f 625/282/161 624/279/161 600/279/161
-f 622/301/20 627/305/20 626/342/20
-f 626/342/20 625/343/20 622/301/20
-f 627/284/195 602/283/195 623/283/195
-f 623/283/195 626/284/195 627/284/195
-f 606/264/16 604/263/16 630/344/193
-f 630/344/193 629/345/16 606/264/16
-f 604/285/1 628/285/1 631/285/1
-f 631/285/1 630/285/1 604/285/1
-f 628/307/22 633/309/22 632/346/22
-f 632/346/22 631/347/22 628/307/22
-f 633/287/196 606/286/196 629/286/196
-f 629/286/196 632/287/196 633/287/196
-f 610/268/18 608/266/18 636/348/18
-f 636/348/18 635/349/18 610/268/18
-f 608/288/153 634/289/153 637/289/153
-f 637/289/153 636/288/153 608/288/153
-f 634/311/24 639/313/24 638/350/24
-f 638/350/24 637/351/24 634/311/24
-f 639/291/10 610/290/10 635/290/10
-f 635/290/10 638/291/10 639/291/10
-f 614/272/20 612/270/20 642/352/20
-f 642/352/20 641/353/20 614/272/20
-f 612/292/163 640/293/163 643/293/163
-f 643/293/163 642/292/163 612/292/163
-f 640/315/14 645/317/14 644/354/14
-f 644/354/14 643/355/14 640/315/14
-f 645/295/197 614/294/197 641/294/197
-f 641/294/197 644/295/197 645/295/197
-f 618/276/191 616/274/22 648/356/22
-f 648/356/22 647/357/22 618/276/191
-f 616/296/7 646/297/7 649/297/7
-f 649/297/7 648/296/7 616/296/7
-f 646/322/16 651/321/16 650/358/16
-f 650/358/16 649/359/16 646/322/16
-f 651/299/198 618/298/198 647/298/198
-f 647/298/198 650/299/198 651/299/198
-f 599/255/24 620/278/25 654/360/24
-f 654/360/24 653/361/24 599/255/24
-f 620/300/151 652/300/151 655/300/151
-f 655/300/151 654/300/151 620/300/151
-f 652/325/194 621/302/18 656/362/18
-f 656/362/18 655/363/194 652/325/194
-f 621/281/4 599/280/4 653/280/4
-f 653/280/4 656/281/4 621/281/4
-f 670/364/199 671/365/199 672/366/199
-f 672/366/199 673/367/199 670/364/199
-f 671/368/200 674/369/200 675/370/200
-f 675/370/200 672/371/200 671/368/200
-f 674/365/201 676/364/201 677/367/201
-f 677/367/201 675/366/201 674/365/201
-f 676/372/202 670/373/202 673/374/202
-f 673/374/202 677/375/202 676/372/202
-f 678/376/7 679/377/7 680/378/7
-f 680/378/7 681/379/7 678/376/7
-f 679/380/4 682/381/4 683/382/4
-f 683/382/4 680/383/4 679/380/4
-f 684/384/1 685/385/1 686/386/1
-f 686/386/1 687/387/1 684/384/1
-f 688/388/10 678/389/10 681/390/10
-f 681/390/10 689/391/10 688/388/10
-f 676/392/26 674/393/26 683/394/26
-f 683/394/26 689/395/26 676/392/26
-f 683/394/26 674/393/26 671/396/26
-f 671/396/26 680/397/26 683/394/26
-f 680/397/26 671/396/26 670/398/26
-f 670/398/26 681/399/26 680/397/26
-f 681/399/26 670/398/26 676/392/26
-f 676/392/26 689/395/26 681/399/26
-f 673/400/27 672/401/27 690/402/27
-f 690/402/27 691/403/27 673/400/27
-f 672/401/27 675/404/27 692/405/27
-f 692/405/27 690/402/27 672/401/27
-f 675/404/27 677/406/27 693/407/27
-f 693/407/27 692/405/27 675/404/27
-f 677/406/27 673/400/27 691/403/27
-f 691/403/27 693/407/27 677/406/27
-f 688/408/1 689/409/1 694/410/1
-f 694/410/1 695/411/1 688/408/1
-f 689/409/1 683/412/1 696/413/1
-f 696/413/1 694/410/1 689/409/1
-f 683/412/1 682/414/1 697/415/1
-f 697/415/1 696/413/1 683/412/1
-f 695/416/10 694/417/10 686/418/10
-f 686/418/10 685/419/10 695/416/10
-f 694/420/27 696/421/27 687/422/27
-f 687/422/27 686/423/27 694/420/27
-f 696/417/4 697/416/4 684/419/4
-f 684/419/4 687/418/4 696/417/4
-f 698/243/150 699/246/150 700/245/150
-f 700/245/150 701/244/150 698/243/150
-f 698/247/153 702/250/153 703/249/153
-f 703/249/153 699/248/153 698/247/153
-f 699/246/152 703/252/152 704/251/152
-f 704/251/152 700/245/152 699/246/152
-f 700/248/151 704/249/151 705/250/151
-f 705/250/151 701/247/151 700/248/151
-f 706/424/203 707/425/204 708/426/205
-f 708/426/205 709/427/27 706/424/203
-f 710/428/1 711/429/1 707/429/1
-f 707/429/1 706/428/1 710/428/1
-f 712/430/206 708/430/206 707/431/206
-f 707/431/206 711/431/206 712/430/206
-f 706/424/203 709/427/27 713/426/207
-f 713/426/207 714/425/208 706/424/203
-f 710/428/1 706/428/1 714/432/1
-f 714/432/1 715/432/1 710/428/1
-f 714/431/209 713/430/209 716/430/209
-f 716/430/209 715/431/209 714/431/209
-f 717/433/210 709/427/27 708/426/205
-f 708/426/205 718/434/211 717/433/210
-f 719/428/7 717/428/7 718/429/7
-f 718/429/7 720/429/7 719/428/7
-f 718/435/212 708/430/212 712/430/212
-f 712/430/212 720/435/212 718/435/212
-f 717/433/210 721/434/213 713/426/207
-f 713/426/207 709/427/27 717/433/210
-f 719/428/7 722/432/7 721/432/7
-f 721/432/7 717/428/7 719/428/7
-f 716/430/214 713/430/214 721/435/214
-f 721/435/214 722/435/214 716/430/214
-f 723/436/4 724/437/4 725/438/4
-f 725/438/4 726/439/4 723/436/4
-f 724/437/215 723/436/215 727/440/215
-f 727/440/215 728/441/215 724/437/215
-f 723/436/216 726/439/216 729/440/216
-f 729/440/216 727/440/216 723/436/216
-f 730/442/217 728/441/217 727/440/217
-f 727/440/217 731/443/217 730/442/217
-f 732/444/216 731/443/216 727/440/216
-f 727/440/216 729/445/216 732/444/216
-f 733/446/10 734/447/10 735/448/10
-f 735/448/10 736/449/10 733/446/10
-f 734/447/218 737/442/218 738/443/218
-f 738/443/218 735/448/218 734/447/218
-f 735/448/219 738/443/219 739/450/219
-f 739/450/219 736/449/219 735/448/219
-f 738/443/220 737/442/220 730/442/220
-f 730/442/220 731/443/220 738/443/220
-f 732/444/219 739/444/219 738/443/219
-f 738/443/219 731/443/219 732/444/219
-f 740/436/4 741/437/4 742/438/4
-f 742/438/4 743/439/4 740/436/4
-f 741/437/221 740/436/221 744/440/221
-f 744/440/221 745/441/221 741/437/221
-f 740/436/222 743/439/222 746/440/222
-f 746/440/222 744/440/222 740/436/222
-f 747/442/223 745/441/223 744/440/223
-f 744/440/223 748/443/223 747/442/223
-f 749/444/222 748/443/222 744/440/222
-f 744/440/222 746/445/222 749/444/222
-f 750/446/10 751/447/10 752/448/10
-f 752/448/10 753/449/10 750/446/10
-f 751/447/224 754/442/224 755/443/224
-f 755/443/224 752/448/224 751/447/224
-f 752/448/222 755/443/222 756/450/222
-f 756/450/222 753/449/222 752/448/222
-f 755/443/225 754/442/225 747/442/225
-f 747/442/225 748/443/225 755/443/225
-f 749/444/222 756/444/222 755/443/222
-f 755/443/222 748/443/222 749/444/222
-f 757/436/4 758/437/4 759/438/4
-f 759/438/4 760/439/4 757/436/4
-f 758/437/226 757/436/226 761/440/226
-f 761/440/226 762/441/227 758/437/226
-f 757/436/228 760/439/228 763/440/229
-f 763/440/229 761/440/229 757/436/228
-f 764/442/230 762/441/230 761/440/230
-f 761/440/230 765/443/230 764/442/230
-f 766/444/228 765/443/228 761/440/228
-f 761/440/228 763/445/228 766/444/228
-f 767/446/10 768/447/10 769/448/10
-f 769/448/10 770/449/10 767/446/10
-f 768/447/231 771/442/232 772/443/231
-f 772/443/231 769/448/232 768/447/231
-f 769/448/229 772/443/229 773/450/229
-f 773/450/229 770/449/229 769/448/229
-f 772/443/233 771/442/233 764/442/233
-f 764/442/233 765/443/233 772/443/233
-f 766/444/229 773/444/229 772/443/229
-f 772/443/229 765/443/229 766/444/229
-f 774/436/4 775/437/4 776/438/4
-f 776/438/4 777/439/4 774/436/4
-f 775/437/226 774/436/227 778/440/227
-f 778/440/227 779/441/227 775/437/226
-f 774/436/229 777/439/229 780/440/229
-f 780/440/229 778/440/229 774/436/229
-f 781/442/230 779/441/230 778/440/230
-f 778/440/230 782/443/230 781/442/230
-f 783/444/229 782/443/229 778/440/229
-f 778/440/229 780/445/229 783/444/229
-f 784/446/10 785/447/10 786/448/10
-f 786/448/10 787/449/10 784/446/10
-f 785/447/231 788/442/232 789/443/232
-f 789/443/232 786/448/231 785/447/231
-f 786/448/228 789/443/229 790/450/229
-f 790/450/229 787/449/228 786/448/228
-f 789/443/233 788/442/233 781/442/233
-f 781/442/233 782/443/233 789/443/233
-f 783/444/229 790/444/229 789/443/229
-f 789/443/229 782/443/229 783/444/229
-f 791/436/4 792/437/4 793/438/4
-f 793/438/4 794/439/4 791/436/4
-f 792/437/234 791/436/234 795/440/234
-f 795/440/234 796/441/234 792/437/234
-f 791/436/235 794/439/235 797/440/235
-f 797/440/235 795/440/235 791/436/235
-f 798/442/236 796/441/236 795/440/236
-f 795/440/236 799/443/236 798/442/236
-f 800/444/235 799/443/235 795/440/235
-f 795/440/235 797/445/235 800/444/235
-f 801/446/10 802/447/10 803/448/10
-f 803/448/10 804/449/10 801/446/10
-f 802/447/237 805/442/237 806/443/237
-f 806/443/237 803/448/237 802/447/237
-f 803/448/235 806/443/235 807/450/235
-f 807/450/235 804/449/235 803/448/235
-f 806/443/238 805/442/238 798/442/238
-f 798/442/238 799/443/238 806/443/238
-f 800/444/239 807/444/239 806/443/239
-f 806/443/239 799/443/239 800/444/239
-f 808/436/4 809/437/4 810/438/4
-f 810/438/4 811/439/4 808/436/4
-f 809/437/240 808/436/240 812/440/240
-f 812/440/240 813/441/240 809/437/240
-f 808/436/241 811/439/241 814/440/241
-f 814/440/241 812/440/241 808/436/241
-f 815/442/236 813/441/236 812/440/236
-f 812/440/236 816/443/236 815/442/236
-f 817/444/241 816/443/241 812/440/241
-f 812/440/241 814/445/241 817/444/241
-f 818/446/10 819/447/10 820/448/10
-f 820/448/10 821/449/10 818/446/10
-f 819/447/242 822/442/242 823/443/242
-f 823/443/242 820/448/242 819/447/242
-f 820/448/243 823/443/241 824/450/241
-f 824/450/241 821/449/243 820/448/243
-f 823/443/238 822/442/238 815/442/238
-f 815/442/238 816/443/238 823/443/238
-f 817/444/241 824/444/241 823/443/241
-f 823/443/241 816/443/241 817/444/241
-f 825/436/4 826/437/4 827/438/4
-f 827/438/4 828/439/4 825/436/4
-f 826/437/215 825/436/215 829/440/215
-f 829/440/215 830/441/215 826/437/215
-f 825/436/216 828/439/216 831/440/216
-f 831/440/216 829/440/216 825/436/216
-f 832/442/217 830/441/217 829/440/217
-f 829/440/217 833/443/217 832/442/217
-f 834/444/216 833/443/216 829/440/216
-f 829/440/216 831/445/216 834/444/216
-f 835/446/10 836/447/10 837/448/10
-f 837/448/10 838/449/10 835/446/10
-f 836/447/218 839/442/218 840/443/218
-f 840/443/218 837/448/218 836/447/218
-f 837/448/219 840/443/219 841/450/219
-f 841/450/219 838/449/219 837/448/219
-f 840/443/220 839/442/220 832/442/220
-f 832/442/220 833/443/220 840/443/220
-f 834/444/219 841/444/219 840/443/219
-f 840/443/219 833/443/219 834/444/219
-f 842/436/4 843/437/4 844/438/4
-f 844/438/4 845/439/4 842/436/4
-f 843/437/215 842/436/215 846/440/215
-f 846/440/215 847/441/215 843/437/215
-f 842/436/216 845/439/216 848/440/216
-f 848/440/216 846/440/216 842/436/216
-f 849/442/217 847/441/217 846/440/217
-f 846/440/217 850/443/217 849/442/217
-f 851/444/216 850/443/216 846/440/216
-f 846/440/216 848/445/216 851/444/216
-f 852/446/10 853/447/10 854/448/10
-f 854/448/10 855/449/10 852/446/10
-f 853/447/218 856/442/218 857/443/218
-f 857/443/218 854/448/218 853/447/218
-f 854/448/219 857/443/219 858/450/219
-f 858/450/219 855/449/219 854/448/219
-f 857/443/220 856/442/220 849/442/220
-f 849/442/220 850/443/220 857/443/220
-f 851/444/219 858/444/219 857/443/219
-f 857/443/219 850/443/219 851/444/219
-f 859/438/4 860/437/4 861/436/4
-f 861/436/4 862/439/4 859/438/4
-f 863/440/244 861/436/244 860/437/244
-f 860/437/244 864/441/244 863/440/244
-f 865/440/245 862/439/245 861/436/245
-f 861/436/245 863/440/245 865/440/245
-f 863/440/246 864/441/246 866/442/246
-f 866/442/246 867/443/246 863/440/246
-f 868/444/245 865/445/245 863/440/245
-f 863/440/245 867/443/245 868/444/245
-f 869/448/10 870/447/10 871/446/10
-f 871/446/10 872/449/10 869/448/10
-f 873/443/247 874/442/247 870/447/247
-f 870/447/247 869/448/247 873/443/247
-f 875/450/248 873/443/248 869/448/248
-f 869/448/248 872/449/248 875/450/248
-f 866/442/249 874/442/249 873/443/249
-f 873/443/249 867/443/249 866/442/249
-f 868/444/248 867/443/248 873/443/248
-f 873/443/248 875/444/248 868/444/248
-f 876/438/4 877/437/4 878/436/4
-f 878/436/4 879/439/4 876/438/4
-f 880/440/250 878/436/250 877/437/250
-f 877/437/250 881/441/250 880/440/250
-f 882/440/251 879/439/251 878/436/251
-f 878/436/251 880/440/251 882/440/251
-f 880/440/252 881/441/252 883/442/252
-f 883/442/252 884/443/252 880/440/252
-f 885/444/251 882/445/251 880/440/251
-f 880/440/251 884/443/251 885/444/251
-f 886/448/10 887/447/10 888/446/10
-f 888/446/10 889/449/10 886/448/10
-f 890/443/253 891/442/253 887/447/253
-f 887/447/253 886/448/253 890/443/253
-f 892/450/251 890/443/251 886/448/254
-f 886/448/254 889/449/254 892/450/251
-f 883/442/255 891/442/255 890/443/255
-f 890/443/255 884/443/255 883/442/255
-f 885/444/251 884/443/251 890/443/251
-f 890/443/251 892/444/251 885/444/251
-f 893/438/4 894/437/4 895/436/4
-f 895/436/4 896/439/4 893/438/4
-f 897/440/256 895/436/257 894/437/256
-f 894/437/256 898/441/256 897/440/256
-f 899/440/258 896/439/258 895/436/258
-f 895/436/258 897/440/258 899/440/258
-f 897/440/259 898/441/259 900/442/259
-f 900/442/259 901/443/259 897/440/259
-f 902/444/258 899/445/258 897/440/258
-f 897/440/258 901/443/258 902/444/258
-f 903/448/10 904/447/10 905/446/10
-f 905/446/10 906/449/10 903/448/10
-f 907/443/260 908/442/260 904/447/260
-f 904/447/260 903/448/260 907/443/260
-f 909/450/261 907/443/261 903/448/261
-f 903/448/261 906/449/261 909/450/261
-f 900/442/262 908/442/262 907/443/262
-f 907/443/262 901/443/262 900/442/262
-f 902/444/261 901/443/261 907/443/261
-f 907/443/261 909/444/261 902/444/261
-f 910/438/4 911/437/4 912/436/4
-f 912/436/4 913/439/4 910/438/4
-f 914/440/257 912/436/257 911/437/257
-f 911/437/257 915/441/256 914/440/257
-f 916/440/261 913/439/261 912/436/261
-f 912/436/261 914/440/261 916/440/261
-f 914/440/259 915/441/259 917/442/259
-f 917/442/259 918/443/259 914/440/259
-f 919/444/261 916/445/261 914/440/261
-f 914/440/261 918/443/261 919/444/261
-f 920/448/10 921/447/10 922/446/10
-f 922/446/10 923/449/10 920/448/10
-f 924/443/263 925/442/260 921/447/263
-f 921/447/263 920/448/263 924/443/263
-f 926/450/258 924/443/258 920/448/261
-f 920/448/261 923/449/261 926/450/258
-f 917/442/262 925/442/262 924/443/262
-f 924/443/262 918/443/262 917/442/262
-f 919/444/261 918/443/261 924/443/261
-f 924/443/261 926/444/261 919/444/261
-f 927/438/4 928/437/4 929/436/4
-f 929/436/4 930/439/4 927/438/4
-f 931/440/264 929/436/264 928/437/264
-f 928/437/264 932/441/264 931/440/264
-f 933/440/265 930/439/265 929/436/265
-f 929/436/265 931/440/265 933/440/265
-f 931/440/266 932/441/266 934/442/266
-f 934/442/266 935/443/266 931/440/266
-f 936/444/265 933/445/265 931/440/265
-f 931/440/265 935/443/265 936/444/265
-f 937/448/10 938/447/10 939/446/10
-f 939/446/10 940/449/10 937/448/10
-f 941/443/267 942/442/267 938/447/267
-f 938/447/267 937/448/267 941/443/267
-f 943/450/265 941/443/265 937/448/265
-f 937/448/265 940/449/265 943/450/265
-f 934/442/268 942/442/268 941/443/268
-f 941/443/268 935/443/268 934/442/268
-f 936/444/269 935/443/269 941/443/269
-f 941/443/269 943/444/269 936/444/269
-f 944/438/4 945/437/4 946/436/4
-f 946/436/4 947/439/4 944/438/4
-f 948/440/270 946/436/270 945/437/270
-f 945/437/270 949/441/270 948/440/270
-f 950/440/271 947/439/271 946/436/271
-f 946/436/271 948/440/271 950/440/271
-f 948/440/266 949/441/266 951/442/266
-f 951/442/266 952/443/266 948/440/266
-f 953/444/271 950/445/271 948/440/271
-f 948/440/271 952/443/271 953/444/271
-f 954/448/10 955/447/10 956/446/10
-f 956/446/10 957/449/10 954/448/10
-f 958/443/272 959/442/272 955/447/272
-f 955/447/272 954/448/272 958/443/272
-f 960/450/271 958/443/271 954/448/273
-f 954/448/273 957/449/273 960/450/271
-f 951/442/268 959/442/268 958/443/268
-f 958/443/268 952/443/268 951/442/268
-f 953/444/271 952/443/271 958/443/271
-f 958/443/271 960/444/271 953/444/271
-f 961/438/4 962/437/4 963/436/4
-f 963/436/4 964/439/4 961/438/4
-f 965/440/244 963/436/244 962/437/244
-f 962/437/244 966/441/244 965/440/244
-f 967/440/245 964/439/245 963/436/245
-f 963/436/245 965/440/245 967/440/245
-f 965/440/246 966/441/246 968/442/274
-f 968/442/274 969/443/246 965/440/246
-f 970/444/245 967/445/245 965/440/245
-f 965/440/245 969/443/245 970/444/245
-f 971/448/10 972/447/10 973/446/10
-f 973/446/10 974/449/10 971/448/10
-f 975/443/247 976/442/247 972/447/247
-f 972/447/247 971/448/247 975/443/247
-f 977/450/248 975/443/248 971/448/248
-f 971/448/248 974/449/248 977/450/248
-f 968/442/275 976/442/249 975/443/249
-f 975/443/249 969/443/249 968/442/275
-f 970/444/248 969/443/248 975/443/248
-f 975/443/248 977/444/248 970/444/248
-f 978/438/4 979/437/4 980/436/4
-f 980/436/4 981/439/4 978/438/4
-f 982/440/244 980/436/244 979/437/244
-f 979/437/244 983/441/244 982/440/244
-f 984/440/245 981/439/245 980/436/245
-f 980/436/245 982/440/245 984/440/245
-f 982/440/246 983/441/246 985/442/246
-f 985/442/246 986/443/246 982/440/246
-f 987/444/245 984/445/245 982/440/245
-f 982/440/245 986/443/245 987/444/245
-f 988/448/10 989/447/10 990/446/10
-f 990/446/10 991/449/10 988/448/10
-f 992/443/247 993/442/247 989/447/247
-f 989/447/247 988/448/247 992/443/247
-f 994/450/248 992/443/248 988/448/248
-f 988/448/248 991/449/248 994/450/248
-f 985/442/249 993/442/249 992/443/249
-f 992/443/249 986/443/249 985/442/249
-f 987/444/248 986/443/248 992/443/248
-f 992/443/248 994/444/248 987/444/248
-f 995/436/4 996/437/4 997/438/4
-f 997/438/4 998/439/4 995/436/4
-f 996/437/276 995/436/276 999/440/276
-f 999/440/276 1000/441/276 996/437/276
-f 995/436/277 998/439/277 1001/440/278
-f 1001/440/278 999/440/278 995/436/277
-f 1002/442/279 1000/441/279 999/440/279
-f 999/440/279 1003/443/279 1002/442/279
-f 1004/444/277 1003/443/277 999/440/277
-f 999/440/277 1001/445/277 1004/444/277
-f 1005/446/10 1006/447/10 1007/448/10
-f 1007/448/10 1008/449/10 1005/446/10
-f 1006/447/280 1009/442/280 1010/443/280
-f 1010/443/280 1007/448/280 1006/447/280
-f 1007/448/278 1010/443/278 1011/450/278
-f 1011/450/278 1008/449/278 1007/448/278
-f 1010/443/281 1009/442/281 1002/442/281
-f 1002/442/281 1003/443/281 1010/443/281
-f 1004/444/278 1011/444/278 1010/443/278
-f 1010/443/278 1003/443/278 1004/444/278
-f 1012/438/4 1013/437/4 1014/436/4
-f 1014/436/4 1015/439/4 1012/438/4
-f 1016/440/282 1014/436/282 1013/437/282
-f 1013/437/282 1017/441/282 1016/440/282
-f 1018/440/283 1015/439/283 1014/436/283
-f 1014/436/283 1016/440/283 1018/440/283
-f 1016/440/284 1017/441/284 1019/442/284
-f 1019/442/284 1020/443/284 1016/440/284
-f 1021/444/283 1018/445/283 1016/440/283
-f 1016/440/283 1020/443/283 1021/444/283
-f 1022/448/10 1023/447/10 1024/446/10
-f 1024/446/10 1025/449/10 1022/448/10
-f 1026/443/285 1027/442/285 1023/447/285
-f 1023/447/285 1022/448/285 1026/443/285
-f 1028/450/286 1026/443/286 1022/448/286
-f 1022/448/286 1025/449/286 1028/450/286
-f 1019/442/287 1027/442/287 1026/443/287
-f 1026/443/287 1020/443/287 1019/442/287
-f 1021/444/286 1020/443/286 1026/443/286
-f 1026/443/286 1028/444/286 1021/444/286
-f 1029/243/187 1030/244/187 1031/245/187
-f 1031/245/187 1032/246/187 1029/243/187
-f 1029/247/163 1032/248/163 1033/249/163
-f 1033/249/163 1034/250/163 1029/247/163
-f 1032/246/188 1031/245/188 1035/251/188
-f 1035/251/188 1033/252/188 1032/246/188
-f 1031/248/161 1030/247/161 1036/250/161
-f 1036/250/161 1035/249/161 1031/248/161
-f 1037/451/27 1038/452/27 1039/453/27
-f 1039/453/27 1040/454/27 1037/451/27
-f 1041/455/7 1042/456/7 1038/457/7
-f 1038/457/7 1037/458/7 1041/455/7
-f 1042/459/4 1043/460/4 1039/461/4
-f 1039/461/4 1038/462/4 1042/459/4
-f 1043/456/1 1044/455/1 1040/458/1
-f 1040/458/1 1039/457/1 1043/456/1
-f 1044/460/10 1041/459/10 1037/462/10
-f 1037/462/10 1040/461/10 1044/460/10
-f 1045/451/27 1046/452/27 1047/453/27
-f 1047/453/27 1048/454/27 1045/451/27
-f 1049/455/7 1050/456/7 1046/457/7
-f 1046/457/7 1045/458/7 1049/455/7
-f 1050/459/4 1051/460/4 1047/461/4
-f 1047/461/4 1046/462/4 1050/459/4
-f 1051/456/1 1052/455/1 1048/458/1
-f 1048/458/1 1047/457/1 1051/456/1
-f 1052/460/10 1049/459/10 1045/462/10
-f 1045/462/10 1048/461/10 1052/460/10
-f 1053/451/27 1054/452/27 1055/453/27
-f 1055/453/27 1056/454/27 1053/451/27
-f 1057/455/7 1058/456/7 1054/457/7
-f 1054/457/7 1053/458/7 1057/455/7
-f 1058/459/4 1059/460/4 1055/461/4
-f 1055/461/4 1054/462/4 1058/459/4
-f 1059/456/1 1060/455/1 1056/458/1
-f 1056/458/1 1055/457/1 1059/456/1
-f 1060/460/10 1057/459/10 1053/462/10
-f 1053/462/10 1056/461/10 1060/460/10
-f 1061/451/27 1062/452/27 1063/453/27
-f 1063/453/27 1064/454/27 1061/451/27
-f 1065/455/10 1066/456/10 1062/457/10
-f 1062/457/10 1061/458/10 1065/455/10
-f 1066/459/7 1067/460/7 1063/461/7
-f 1063/461/7 1062/462/7 1066/459/7
-f 1067/456/4 1068/455/4 1064/458/4
-f 1064/458/4 1063/457/4 1067/456/4
-f 1068/460/1 1065/459/1 1061/462/1
-f 1061/462/1 1064/461/1 1068/460/1
-f 1069/451/27 1070/452/27 1071/453/27
-f 1071/453/27 1072/454/27 1069/451/27
-f 1073/455/10 1074/456/10 1070/457/10
-f 1070/457/10 1069/458/10 1073/455/10
-f 1074/459/7 1075/460/7 1071/461/7
-f 1071/461/7 1070/462/7 1074/459/7
-f 1075/456/4 1076/455/4 1072/458/4
-f 1072/458/4 1071/457/4 1075/456/4
-f 1076/460/1 1073/459/1 1069/462/1
-f 1069/462/1 1072/461/1 1076/460/1
-f 1077/451/27 1078/452/27 1079/453/27
-f 1079/453/27 1080/454/27 1077/451/27
-f 1081/455/10 1082/456/10 1078/457/10
-f 1078/457/10 1077/458/10 1081/455/10
-f 1082/459/7 1083/460/7 1079/461/7
-f 1079/461/7 1078/462/7 1082/459/7
-f 1083/456/4 1084/455/4 1080/458/4
-f 1080/458/4 1079/457/4 1083/456/4
-f 1084/460/1 1081/459/1 1077/462/1
-f 1077/462/1 1080/461/1 1084/460/1
-f 1085/451/27 1086/452/27 1087/453/27
-f 1087/453/27 1088/454/27 1085/451/27
-f 1089/455/10 1090/456/10 1086/457/10
-f 1086/457/10 1085/458/10 1089/455/10
-f 1090/459/7 1091/460/7 1087/461/7
-f 1087/461/7 1086/462/7 1090/459/7
-f 1091/456/4 1092/455/4 1088/458/4
-f 1088/458/4 1087/457/4 1091/456/4
-f 1092/460/1 1089/459/1 1085/462/1
-f 1085/462/1 1088/461/1 1092/460/1
-f 1093/451/27 1094/452/27 1095/453/27
-f 1095/453/27 1096/454/27 1093/451/27
-f 1097/455/7 1098/456/7 1094/457/7
-f 1094/457/7 1093/458/7 1097/455/7
-f 1098/459/4 1099/460/4 1095/461/4
-f 1095/461/4 1094/462/4 1098/459/4
-f 1099/456/1 1100/455/1 1096/458/1
-f 1096/458/1 1095/457/1 1099/456/1
-f 1100/460/10 1097/459/10 1093/462/10
-f 1093/462/10 1096/461/10 1100/460/10
-f 1101/451/27 1102/452/27 1103/453/27
-f 1103/453/27 1104/454/27 1101/451/27
-f 1105/455/7 1106/456/7 1102/457/7
-f 1102/457/7 1101/458/7 1105/455/7
-f 1106/459/4 1107/460/4 1103/461/4
-f 1103/461/4 1102/462/4 1106/459/4
-f 1107/456/1 1108/455/1 1104/458/1
-f 1104/458/1 1103/457/1 1107/456/1
-f 1108/460/10 1105/459/10 1101/462/10
-f 1101/462/10 1104/461/10 1108/460/10
-f 1109/451/27 1110/452/27 1111/453/27
-f 1111/453/27 1112/454/27 1109/451/27
-f 1113/455/7 1114/456/7 1110/457/7
-f 1110/457/7 1109/458/7 1113/455/7
-f 1114/459/4 1115/460/4 1111/461/4
-f 1111/461/4 1110/462/4 1114/459/4
-f 1115/456/1 1116/455/1 1112/458/1
-f 1112/458/1 1111/457/1 1115/456/1
-f 1116/460/10 1113/459/10 1109/462/10
-f 1109/462/10 1112/461/10 1116/460/10
-f 1117/451/27 1118/452/27 1119/453/27
-f 1119/453/27 1120/454/27 1117/451/27
-f 1121/455/7 1122/456/7 1118/457/7
-f 1118/457/7 1117/458/7 1121/455/7
-f 1122/459/4 1123/460/4 1119/461/4
-f 1119/461/4 1118/462/4 1122/459/4
-f 1123/456/1 1124/455/1 1120/458/1
-f 1120/458/1 1119/457/1 1123/456/1
-f 1124/460/10 1121/459/10 1117/462/10
-f 1117/462/10 1120/461/10 1124/460/10
-f 1125/451/27 1126/452/27 1127/453/27
-f 1127/453/27 1128/454/27 1125/451/27
-f 1129/455/7 1130/456/7 1126/457/7
-f 1126/457/7 1125/458/7 1129/455/7
-f 1130/459/4 1131/460/4 1127/461/4
-f 1127/461/4 1126/462/4 1130/459/4
-f 1131/456/1 1132/455/1 1128/458/1
-f 1128/458/1 1127/457/1 1131/456/1
-f 1132/460/10 1129/459/10 1125/462/10
-f 1125/462/10 1128/461/10 1132/460/10
-f 1133/451/27 1134/452/27 1135/453/27
-f 1135/453/27 1136/454/27 1133/451/27
-f 1137/455/7 1138/456/7 1134/457/7
-f 1134/457/7 1133/458/7 1137/455/7
-f 1138/459/4 1139/460/4 1135/461/4
-f 1135/461/4 1134/462/4 1138/459/4
-f 1139/456/1 1140/455/1 1136/458/1
-f 1136/458/1 1135/457/1 1139/456/1
-f 1140/460/10 1137/459/10 1133/462/10
-f 1133/462/10 1136/461/10 1140/460/10
-f 1141/451/27 1142/452/27 1143/453/27
-f 1143/453/27 1144/454/27 1141/451/27
-f 1145/455/7 1146/456/7 1142/457/7
-f 1142/457/7 1141/458/7 1145/455/7
-f 1146/459/4 1147/460/4 1143/461/4
-f 1143/461/4 1142/462/4 1146/459/4
-f 1147/456/1 1148/455/1 1144/458/1
-f 1144/458/1 1143/457/1 1147/456/1
-f 1148/460/10 1145/459/10 1141/462/10
-f 1141/462/10 1144/461/10 1148/460/10
-f 1149/451/27 1150/452/27 1151/453/27
-f 1151/453/27 1152/454/27 1149/451/27
-f 1153/455/7 1154/456/7 1150/457/7
-f 1150/457/7 1149/458/7 1153/455/7
-f 1154/459/4 1155/460/4 1151/461/4
-f 1151/461/4 1150/462/4 1154/459/4
-f 1155/456/1 1156/455/1 1152/458/1
-f 1152/458/1 1151/457/1 1155/456/1
-f 1156/460/10 1153/459/10 1149/462/10
-f 1149/462/10 1152/461/10 1156/460/10
-f 1157/451/27 1158/452/27 1159/453/27
-f 1159/453/27 1160/454/27 1157/451/27
-f 1161/455/7 1162/456/7 1158/457/7
-f 1158/457/7 1157/458/7 1161/455/7
-f 1162/459/4 1163/460/4 1159/461/4
-f 1159/461/4 1158/462/4 1162/459/4
-f 1163/456/1 1164/455/1 1160/458/1
-f 1160/458/1 1159/457/1 1163/456/1
-f 1164/460/10 1161/459/10 1157/462/10
-f 1157/462/10 1160/461/10 1164/460/10
-f 1165/451/27 1166/452/27 1167/453/27
-f 1167/453/27 1168/454/27 1165/451/27
-f 1169/455/7 1170/456/7 1166/457/7
-f 1166/457/7 1165/458/7 1169/455/7
-f 1170/459/4 1171/460/4 1167/461/4
-f 1167/461/4 1166/462/4 1170/459/4
-f 1171/456/1 1172/455/1 1168/458/1
-f 1168/458/1 1167/457/1 1171/456/1
-f 1172/460/10 1169/459/10 1165/462/10
-f 1165/462/10 1168/461/10 1172/460/10
-f 1173/451/27 1174/452/27 1175/453/27
-f 1175/453/27 1176/454/27 1173/451/27
-f 1177/455/7 1178/456/7 1174/457/7
-f 1174/457/7 1173/458/7 1177/455/7
-f 1178/459/4 1179/460/4 1175/461/4
-f 1175/461/4 1174/462/4 1178/459/4
-f 1179/456/1 1180/455/1 1176/458/1
-f 1176/458/1 1175/457/1 1179/456/1
-f 1180/460/10 1177/459/10 1173/462/10
-f 1173/462/10 1176/461/10 1180/460/10
-f 1181/451/27 1182/452/27 1183/453/27
-f 1183/453/27 1184/454/27 1181/451/27
-f 1185/455/7 1186/456/7 1182/457/7
-f 1182/457/7 1181/458/7 1185/455/7
-f 1186/459/4 1187/460/4 1183/461/4
-f 1183/461/4 1182/462/4 1186/459/4
-f 1187/456/1 1188/455/1 1184/458/1
-f 1184/458/1 1183/457/1 1187/456/1
-f 1188/460/10 1185/459/10 1181/462/10
-f 1181/462/10 1184/461/10 1188/460/10
-f 1189/451/27 1190/452/27 1191/453/27
-f 1191/453/27 1192/454/27 1189/451/27
-f 1193/455/7 1194/456/7 1190/457/7
-f 1190/457/7 1189/458/7 1193/455/7
-f 1194/459/4 1195/460/4 1191/461/4
-f 1191/461/4 1190/462/4 1194/459/4
-f 1195/456/1 1196/455/1 1192/458/1
-f 1192/458/1 1191/457/1 1195/456/1
-f 1196/460/10 1193/459/10 1189/462/10
-f 1189/462/10 1192/461/10 1196/460/10
-f 1197/451/27 1198/452/27 1199/453/27
-f 1199/453/27 1200/454/27 1197/451/27
-f 1201/455/7 1202/456/7 1198/457/7
-f 1198/457/7 1197/458/7 1201/455/7
-f 1202/459/4 1203/460/4 1199/461/4
-f 1199/461/4 1198/462/4 1202/459/4
-f 1203/456/1 1204/455/1 1200/458/1
-f 1200/458/1 1199/457/1 1203/456/1
-f 1204/460/10 1201/459/10 1197/462/10
-f 1197/462/10 1200/461/10 1204/460/10
-f 1205/451/27 1206/452/27 1207/453/27
-f 1207/453/27 1208/454/27 1205/451/27
-f 1209/455/7 1210/456/7 1206/457/7
-f 1206/457/7 1205/458/7 1209/455/7
-f 1210/459/4 1211/460/4 1207/461/4
-f 1207/461/4 1206/462/4 1210/459/4
-f 1211/456/1 1212/455/1 1208/458/1
-f 1208/458/1 1207/457/1 1211/456/1
-f 1212/460/10 1209/459/10 1205/462/10
-f 1205/462/10 1208/461/10 1212/460/10
-f 1213/451/27 1214/452/27 1215/453/27
-f 1215/453/27 1216/454/27 1213/451/27
-f 1217/455/7 1218/456/7 1214/457/7
-f 1214/457/7 1213/458/7 1217/455/7
-f 1218/459/4 1219/460/4 1215/461/4
-f 1215/461/4 1214/462/4 1218/459/4
-f 1219/456/1 1220/455/1 1216/458/1
-f 1216/458/1 1215/457/1 1219/456/1
-f 1220/460/10 1217/459/10 1213/462/10
-f 1213/462/10 1216/461/10 1220/460/10
-f 1221/451/27 1222/452/27 1223/453/27
-f 1223/453/27 1224/454/27 1221/451/27
-f 1225/455/7 1226/456/7 1222/457/7
-f 1222/457/7 1221/458/7 1225/455/7
-f 1226/459/4 1227/460/4 1223/461/4
-f 1223/461/4 1222/462/4 1226/459/4
-f 1227/456/1 1228/455/1 1224/458/1
-f 1224/458/1 1223/457/1 1227/456/1
-f 1228/460/10 1225/459/10 1221/462/10
-f 1221/462/10 1224/461/10 1228/460/10
-f 1229/451/27 1230/452/27 1231/453/27
-f 1231/453/27 1232/454/27 1229/451/27
-f 1233/455/4 1234/456/4 1230/457/4
-f 1230/457/4 1229/458/4 1233/455/4
-f 1234/459/1 1235/460/1 1231/461/1
-f 1231/461/1 1230/462/1 1234/459/1
-f 1235/456/10 1236/455/10 1232/458/10
-f 1232/458/10 1231/457/10 1235/456/10
-f 1236/460/7 1233/459/7 1229/462/7
-f 1229/462/7 1232/461/7 1236/460/7
-f 1237/451/27 1238/452/27 1239/453/27
-f 1239/453/27 1240/454/27 1237/451/27
-f 1241/455/4 1242/456/4 1238/457/4
-f 1238/457/4 1237/458/4 1241/455/4
-f 1242/459/1 1243/460/1 1239/461/1
-f 1239/461/1 1238/462/1 1242/459/1
-f 1243/456/10 1244/455/10 1240/458/10
-f 1240/458/10 1239/457/10 1243/456/10
-f 1244/460/7 1241/459/7 1237/462/7
-f 1237/462/7 1240/461/7 1244/460/7
-f 1245/451/27 1246/452/27 1247/453/27
-f 1247/453/27 1248/454/27 1245/451/27
-f 1249/455/4 1250/456/4 1246/457/4
-f 1246/457/4 1245/458/4 1249/455/4
-f 1250/459/1 1251/460/1 1247/461/1
-f 1247/461/1 1246/462/1 1250/459/1
-f 1251/456/10 1252/455/10 1248/458/10
-f 1248/458/10 1247/457/10 1251/456/10
-f 1252/460/7 1249/459/7 1245/462/7
-f 1245/462/7 1248/461/7 1252/460/7
-f 1253/451/27 1254/452/27 1255/453/27
-f 1255/453/27 1256/454/27 1253/451/27
-f 1257/455/4 1258/456/4 1254/457/4
-f 1254/457/4 1253/458/4 1257/455/4
-f 1258/459/1 1259/460/1 1255/461/1
-f 1255/461/1 1254/462/1 1258/459/1
-f 1259/456/10 1260/455/10 1256/458/10
-f 1256/458/10 1255/457/10 1259/456/10
-f 1260/460/7 1257/459/7 1253/462/7
-f 1253/462/7 1256/461/7 1260/460/7
-f 1261/451/27 1262/452/27 1263/453/27
-f 1263/453/27 1264/454/27 1261/451/27
-f 1265/455/7 1266/456/7 1262/457/7
-f 1262/457/7 1261/458/7 1265/455/7
-f 1266/459/4 1267/460/4 1263/461/4
-f 1263/461/4 1262/462/4 1266/459/4
-f 1267/456/1 1268/455/1 1264/458/1
-f 1264/458/1 1263/457/1 1267/456/1
-f 1268/460/10 1265/459/10 1261/462/10
-f 1261/462/10 1264/461/10 1268/460/10
-f 1269/451/27 1270/452/27 1271/453/27
-f 1271/453/27 1272/454/27 1269/451/27
-f 1273/455/7 1274/456/7 1270/457/7
-f 1270/457/7 1269/458/7 1273/455/7
-f 1274/459/4 1275/460/4 1271/461/4
-f 1271/461/4 1270/462/4 1274/459/4
-f 1275/456/1 1276/455/1 1272/458/1
-f 1272/458/1 1271/457/1 1275/456/1
-f 1276/460/10 1273/459/10 1269/462/10
-f 1269/462/10 1272/461/10 1276/460/10
-f 1277/451/27 1278/452/27 1279/453/27
-f 1279/453/27 1280/454/27 1277/451/27
-f 1281/455/7 1282/456/7 1278/457/7
-f 1278/457/7 1277/458/7 1281/455/7
-f 1282/459/4 1283/460/4 1279/461/4
-f 1279/461/4 1278/462/4 1282/459/4
-f 1283/456/1 1284/455/1 1280/458/1
-f 1280/458/1 1279/457/1 1283/456/1
-f 1284/460/10 1281/459/10 1277/462/10
-f 1277/462/10 1280/461/10 1284/460/10
-f 1285/451/27 1286/452/27 1287/453/27
-f 1287/453/27 1288/454/27 1285/451/27
-f 1289/455/7 1290/456/7 1286/457/7
-f 1286/457/7 1285/458/7 1289/455/7
-f 1290/459/4 1291/460/4 1287/461/4
-f 1287/461/4 1286/462/4 1290/459/4
-f 1291/456/1 1292/455/1 1288/458/1
-f 1288/458/1 1287/457/1 1291/456/1
-f 1292/460/10 1289/459/10 1285/462/10
-f 1285/462/10 1288/461/10 1292/460/10
-f 1293/451/27 1294/452/27 1295/453/27
-f 1295/453/27 1296/454/27 1293/451/27
-f 1297/455/7 1298/456/7 1294/457/7
-f 1294/457/7 1293/458/7 1297/455/7
-f 1298/459/4 1299/460/4 1295/461/4
-f 1295/461/4 1294/462/4 1298/459/4
-f 1299/456/1 1300/455/1 1296/458/1
-f 1296/458/1 1295/457/1 1299/456/1
-f 1300/460/10 1297/459/10 1293/462/10
-f 1293/462/10 1296/461/10 1300/460/10
-f 1301/451/27 1302/452/27 1303/453/27
-f 1303/453/27 1304/454/27 1301/451/27
-f 1305/455/7 1306/456/7 1302/457/7
-f 1302/457/7 1301/458/7 1305/455/7
-f 1306/459/4 1307/460/4 1303/461/4
-f 1303/461/4 1302/462/4 1306/459/4
-f 1307/456/1 1308/455/1 1304/458/1
-f 1304/458/1 1303/457/1 1307/456/1
-f 1308/460/10 1305/459/10 1301/462/10
-f 1301/462/10 1304/461/10 1308/460/10
-f 1309/451/27 1310/452/27 1311/453/27
-f 1311/453/27 1312/454/27 1309/451/27
-f 1313/455/7 1314/456/7 1310/457/7
-f 1310/457/7 1309/458/7 1313/455/7
-f 1314/459/4 1315/460/4 1311/461/4
-f 1311/461/4 1310/462/4 1314/459/4
-f 1315/456/1 1316/455/1 1312/458/1
-f 1312/458/1 1311/457/1 1315/456/1
-f 1316/460/10 1313/459/10 1309/462/10
-f 1309/462/10 1312/461/10 1316/460/10
-f 1317/451/27 1318/452/27 1319/453/27
-f 1319/453/27 1320/454/27 1317/451/27
-f 1321/455/4 1322/456/4 1318/457/4
-f 1318/457/4 1317/458/4 1321/455/4
-f 1322/459/1 1323/460/1 1319/461/1
-f 1319/461/1 1318/462/1 1322/459/1
-f 1323/456/10 1324/455/10 1320/458/10
-f 1320/458/10 1319/457/10 1323/456/10
-f 1324/460/7 1321/459/7 1317/462/7
-f 1317/462/7 1320/461/7 1324/460/7
-f 1325/451/27 1326/452/27 1327/453/27
-f 1327/453/27 1328/454/27 1325/451/27
-f 1329/455/4 1330/456/4 1326/457/4
-f 1326/457/4 1325/458/4 1329/455/4
-f 1330/459/1 1331/460/1 1327/461/1
-f 1327/461/1 1326/462/1 1330/459/1
-f 1331/456/10 1332/455/10 1328/458/10
-f 1328/458/10 1327/457/10 1331/456/10
-f 1332/460/7 1329/459/7 1325/462/7
-f 1325/462/7 1328/461/7 1332/460/7
-f 1333/451/27 1334/452/27 1335/453/27
-f 1335/453/27 1336/454/27 1333/451/27
-f 1337/455/4 1338/456/4 1334/457/4
-f 1334/457/4 1333/458/4 1337/455/4
-f 1338/459/1 1339/460/1 1335/461/1
-f 1335/461/1 1334/462/1 1338/459/1
-f 1339/456/10 1340/455/10 1336/458/10
-f 1336/458/10 1335/457/10 1339/456/10
-f 1340/460/7 1337/459/7 1333/462/7
-f 1333/462/7 1336/461/7 1340/460/7
-f 1341/451/27 1342/452/27 1343/453/27
-f 1343/453/27 1344/454/27 1341/451/27
-f 1345/455/4 1346/456/4 1342/457/4
-f 1342/457/4 1341/458/4 1345/455/4
-f 1346/459/1 1347/460/1 1343/461/1
-f 1343/461/1 1342/462/1 1346/459/1
-f 1347/456/10 1348/455/10 1344/458/10
-f 1344/458/10 1343/457/10 1347/456/10
-f 1348/460/7 1345/459/7 1341/462/7
-f 1341/462/7 1344/461/7 1348/460/7
-f 1349/451/27 1350/452/27 1351/453/27
-f 1351/453/27 1352/454/27 1349/451/27
-f 1353/455/4 1354/456/4 1350/457/4
-f 1350/457/4 1349/458/4 1353/455/4
-f 1354/459/1 1355/460/1 1351/461/1
-f 1351/461/1 1350/462/1 1354/459/1
-f 1355/456/10 1356/455/10 1352/458/10
-f 1352/458/10 1351/457/10 1355/456/10
-f 1356/460/7 1353/459/7 1349/462/7
-f 1349/462/7 1352/461/7 1356/460/7
-f 1357/463/27 1358/464/27 1359/465/27
-f 1359/465/27 1360/466/27 1357/463/27
-f 1361/467/4 1362/468/4 1359/469/4
-f 1359/469/4 1358/470/4 1361/467/4
-f 1363/471/4 1364/472/4 1365/473/4
-f 1365/473/4 1366/474/4 1363/471/4
-f 1367/475/1 1368/476/1 1369/477/1
-f 1369/477/1 1370/478/1 1367/475/1
-f 1371/479/27 1372/480/288 1373/480/288
-f 1373/480/288 1374/479/27 1371/479/27
-f 1375/476/7 1376/475/7 1377/481/7
-f 1377/481/7 1378/482/7 1375/476/7
-f 1379/483/26 1380/484/289 1381/485/289
-f 1381/485/289 1382/483/26 1379/483/26
-f 1383/486/4 1384/487/4 1385/488/4
-f 1386/489/4 1387/490/4 1372/491/4
-f 1372/491/4 1371/492/4 1386/489/4
-f 1388/493/4 1389/494/4 1390/495/4
-f 1391/496/4 1392/497/4 1390/495/4
-f 1390/495/4 1389/494/4 1391/496/4
-f 1393/498/4 1394/499/4 1365/473/4
-f 1365/473/4 1364/472/4 1393/498/4
-f 1395/500/290 1371/479/27 1374/479/27
-f 1374/479/27 1396/500/290 1395/500/290
-f 1397/501/291 1379/483/26 1382/483/26
-f 1382/483/26 1398/501/291 1397/501/291
-f 1395/502/4 1399/503/4 1386/489/4
-f 1386/489/4 1371/492/4 1395/502/4
-f 1391/496/4 1383/486/4 1385/488/4
-f 1385/488/4 1392/497/4 1391/496/4
-f 1387/504/7 1363/504/7 1366/505/7
-f 1366/505/7 1400/505/7 1387/504/7
-f 1386/506/292 1364/506/292 1363/504/292
-f 1363/504/292 1387/504/292 1386/506/292
-f 1399/507/293 1393/507/293 1364/506/293
-f 1364/506/293 1386/506/293 1399/507/293
-f 1401/508/1 1394/508/1 1393/507/1
-f 1393/507/1 1399/507/1 1401/508/1
-f 1402/509/210 1365/510/210 1394/511/210
-f 1394/511/210 1401/512/210 1402/509/210
-f 1400/513/294 1366/514/294 1365/510/294
-f 1365/510/294 1402/509/294 1400/513/294
-f 1403/515/4 1401/516/4 1399/503/4
-f 1399/503/4 1395/502/4 1403/515/4
-f 1395/500/7 1396/500/7 1404/517/7
-f 1404/517/7 1403/517/7 1395/500/7
-f 1372/480/1 1405/518/1 1406/518/1
-f 1406/518/1 1373/480/1 1372/480/1
-f 1405/519/4 1372/491/4 1387/490/4
-f 1387/490/4 1400/474/4 1405/519/4
-f 1367/475/1 1407/481/1 1408/482/1
-f 1408/482/1 1368/476/1 1367/475/1
-f 1400/513/295 1385/513/295 1384/485/295
-f 1384/485/295 1405/520/295 1400/513/295
-f 1402/509/294 1392/509/294 1385/513/294
-f 1385/513/294 1400/513/294 1402/509/294
-f 1401/512/210 1390/512/210 1392/509/210
-f 1392/509/210 1402/509/210 1401/512/210
-f 1403/521/296 1388/521/296 1390/512/296
-f 1390/512/296 1401/512/296 1403/521/296
-f 1375/476/7 1409/477/7 1410/478/7
-f 1410/478/7 1376/475/7 1375/476/7
-f 1379/483/289 1391/522/289 1389/523/289
-f 1389/523/289 1380/484/289 1379/483/289
-f 1397/501/291 1383/524/291 1391/522/291
-f 1391/522/291 1379/483/291 1397/501/291
-f 1405/520/27 1367/525/27 1370/526/27
-f 1370/526/27 1406/527/27 1405/520/27
-f 1384/485/27 1407/528/27 1367/525/27
-f 1367/525/27 1405/520/27 1384/485/27
-f 1383/486/4 1408/486/4 1407/487/4
-f 1407/487/4 1384/487/4 1383/486/4
-f 1397/501/26 1368/501/26 1408/524/26
-f 1408/524/26 1383/524/26 1397/501/26
-f 1398/501/26 1369/501/26 1368/501/26
-f 1368/501/26 1397/501/26 1398/501/26
-f 1380/484/26 1375/484/26 1378/485/26
-f 1378/485/26 1381/485/26 1380/484/26
-f 1389/523/26 1409/523/26 1375/484/26
-f 1375/484/26 1380/484/26 1389/523/26
-f 1388/493/4 1410/529/4 1409/530/4
-f 1409/530/4 1389/494/4 1388/493/4
-f 1403/521/27 1376/531/27 1410/532/27
-f 1410/532/27 1388/521/27 1403/521/27
-f 1404/533/27 1377/531/27 1376/531/27
-f 1376/531/27 1403/521/27 1404/533/27
-f 1411/471/4 1412/472/4 1413/473/4
-f 1413/473/4 1414/474/4 1411/471/4
-f 1415/475/1 1416/476/1 1417/477/1
-f 1417/477/1 1418/478/1 1415/475/1
-f 1419/479/27 1420/480/288 1421/480/288
-f 1421/480/288 1422/479/27 1419/479/27
-f 1423/476/7 1424/475/7 1425/481/7
-f 1425/481/7 1426/482/7 1423/476/7
-f 1427/483/26 1428/484/289 1429/485/289
-f 1429/485/289 1430/483/26 1427/483/26
-f 1431/486/4 1432/487/4 1433/488/4
-f 1434/489/4 1435/490/4 1420/491/4
-f 1420/491/4 1419/492/4 1434/489/4
-f 1436/493/4 1437/494/4 1438/495/4
-f 1439/496/4 1440/497/4 1438/495/4
-f 1438/495/4 1437/494/4 1439/496/4
-f 1441/498/4 1442/499/4 1413/473/4
-f 1413/473/4 1412/472/4 1441/498/4
-f 1443/500/290 1419/479/27 1422/479/27
-f 1422/479/27 1444/500/290 1443/500/290
-f 1445/501/291 1427/483/26 1430/483/26
-f 1430/483/26 1446/501/291 1445/501/291
-f 1443/502/4 1447/503/4 1434/489/4
-f 1434/489/4 1419/492/4 1443/502/4
-f 1439/496/4 1431/486/4 1433/488/4
-f 1433/488/4 1440/497/4 1439/496/4
-f 1435/504/7 1411/504/7 1414/505/7
-f 1414/505/7 1448/505/7 1435/504/7
-f 1434/506/292 1412/506/292 1411/504/292
-f 1411/504/292 1435/504/292 1434/506/292
-f 1447/507/293 1441/507/293 1412/506/293
-f 1412/506/293 1434/506/293 1447/507/293
-f 1449/508/1 1442/508/1 1441/507/1
-f 1441/507/1 1447/507/1 1449/508/1
-f 1450/509/210 1413/510/210 1442/511/210
-f 1442/511/210 1449/512/210 1450/509/210
-f 1448/513/294 1414/514/294 1413/510/294
-f 1413/510/294 1450/509/294 1448/513/294
-f 1451/515/4 1449/516/4 1447/503/4
-f 1447/503/4 1443/502/4 1451/515/4
-f 1443/500/7 1444/500/7 1452/517/7
-f 1452/517/7 1451/517/7 1443/500/7
-f 1420/480/1 1453/518/1 1454/518/1
-f 1454/518/1 1421/480/1 1420/480/1
-f 1453/519/4 1420/491/4 1435/490/4
-f 1435/490/4 1448/474/4 1453/519/4
-f 1415/475/1 1455/481/1 1456/482/1
-f 1456/482/1 1416/476/1 1415/475/1
-f 1448/513/295 1433/513/295 1432/485/295
-f 1432/485/295 1453/520/295 1448/513/295
-f 1450/509/294 1440/509/294 1433/513/294
-f 1433/513/294 1448/513/294 1450/509/294
-f 1449/512/210 1438/512/210 1440/509/210
-f 1440/509/210 1450/509/210 1449/512/210
-f 1451/521/296 1436/521/296 1438/512/296
-f 1438/512/296 1449/512/296 1451/521/296
-f 1423/476/7 1457/477/7 1458/478/7
-f 1458/478/7 1424/475/7 1423/476/7
-f 1427/483/289 1439/522/289 1437/523/289
-f 1437/523/289 1428/484/289 1427/483/289
-f 1445/501/291 1431/524/291 1439/522/291
-f 1439/522/291 1427/483/291 1445/501/291
-f 1453/520/27 1415/525/27 1418/526/27
-f 1418/526/27 1454/527/27 1453/520/27
-f 1432/485/27 1455/528/27 1415/525/27
-f 1415/525/27 1453/520/27 1432/485/27
-f 1431/486/4 1456/486/4 1455/487/4
-f 1455/487/4 1432/487/4 1431/486/4
-f 1445/501/26 1416/501/26 1456/524/26
-f 1456/524/26 1431/524/26 1445/501/26
-f 1446/501/26 1417/501/26 1416/501/26
-f 1416/501/26 1445/501/26 1446/501/26
-f 1428/484/26 1423/484/26 1426/485/26
-f 1426/485/26 1429/485/26 1428/484/26
-f 1437/523/26 1457/523/26 1423/484/26
-f 1423/484/26 1428/484/26 1437/523/26
-f 1436/493/4 1458/529/4 1457/530/4
-f 1457/530/4 1437/494/4 1436/493/4
-f 1451/521/27 1424/531/27 1458/532/27
-f 1458/532/27 1436/521/27 1451/521/27
-f 1452/533/27 1425/531/27 1424/531/27
-f 1424/531/27 1451/521/27 1452/533/27
-f 1459/471/4 1460/472/4 1461/473/4
-f 1461/473/4 1462/474/4 1459/471/4
-f 1463/475/1 1464/476/1 1465/477/1
-f 1465/477/1 1466/478/1 1463/475/1
-f 1467/479/27 1468/480/288 1469/480/288
-f 1469/480/288 1470/479/27 1467/479/27
-f 1471/476/7 1472/475/7 1473/481/7
-f 1473/481/7 1474/482/7 1471/476/7
-f 1475/483/26 1476/484/289 1477/485/289
-f 1477/485/289 1478/483/26 1475/483/26
-f 1479/486/4 1480/487/4 1481/488/4
-f 1482/489/4 1483/490/4 1468/491/4
-f 1468/491/4 1467/492/4 1482/489/4
-f 1484/493/4 1485/494/4 1486/495/4
-f 1487/496/4 1488/497/4 1486/495/4
-f 1486/495/4 1485/494/4 1487/496/4
-f 1489/498/4 1490/499/4 1461/473/4
-f 1461/473/4 1460/472/4 1489/498/4
-f 1491/500/290 1467/479/27 1470/479/27
-f 1470/479/27 1492/500/290 1491/500/290
-f 1493/501/291 1475/483/26 1478/483/26
-f 1478/483/26 1494/501/291 1493/501/291
-f 1491/502/4 1495/503/4 1482/489/4
-f 1482/489/4 1467/492/4 1491/502/4
-f 1487/496/4 1479/486/4 1481/488/4
-f 1481/488/4 1488/497/4 1487/496/4
-f 1483/504/7 1459/504/7 1462/505/7
-f 1462/505/7 1496/505/7 1483/504/7
-f 1482/506/292 1460/506/292 1459/504/292
-f 1459/504/292 1483/504/292 1482/506/292
-f 1495/507/293 1489/507/293 1460/506/293
-f 1460/506/293 1482/506/293 1495/507/293
-f 1497/508/1 1490/508/1 1489/507/1
-f 1489/507/1 1495/507/1 1497/508/1
-f 1498/509/210 1461/510/210 1490/511/210
-f 1490/511/210 1497/512/210 1498/509/210
-f 1496/513/294 1462/514/294 1461/510/294
-f 1461/510/294 1498/509/294 1496/513/294
-f 1499/515/4 1497/516/4 1495/503/4
-f 1495/503/4 1491/502/4 1499/515/4
-f 1491/500/7 1492/500/7 1500/517/7
-f 1500/517/7 1499/517/7 1491/500/7
-f 1468/480/1 1501/518/1 1502/518/1
-f 1502/518/1 1469/480/1 1468/480/1
-f 1501/519/4 1468/491/4 1483/490/4
-f 1483/490/4 1496/474/4 1501/519/4
-f 1463/475/1 1503/481/1 1504/482/1
-f 1504/482/1 1464/476/1 1463/475/1
-f 1496/513/295 1481/513/295 1480/485/295
-f 1480/485/295 1501/520/295 1496/513/295
-f 1498/509/294 1488/509/294 1481/513/294
-f 1481/513/294 1496/513/294 1498/509/294
-f 1497/512/210 1486/512/210 1488/509/210
-f 1488/509/210 1498/509/210 1497/512/210
-f 1499/521/296 1484/521/296 1486/512/296
-f 1486/512/296 1497/512/296 1499/521/296
-f 1471/476/7 1505/477/7 1506/478/7
-f 1506/478/7 1472/475/7 1471/476/7
-f 1475/483/289 1487/522/289 1485/523/289
-f 1485/523/289 1476/484/289 1475/483/289
-f 1493/501/291 1479/524/291 1487/522/291
-f 1487/522/291 1475/483/291 1493/501/291
-f 1501/520/27 1463/525/27 1466/526/27
-f 1466/526/27 1502/527/27 1501/520/27
-f 1480/485/27 1503/528/27 1463/525/27
-f 1463/525/27 1501/520/27 1480/485/27
-f 1479/486/4 1504/486/4 1503/487/4
-f 1503/487/4 1480/487/4 1479/486/4
-f 1493/501/26 1464/501/26 1504/524/26
-f 1504/524/26 1479/524/26 1493/501/26
-f 1494/501/26 1465/501/26 1464/501/26
-f 1464/501/26 1493/501/26 1494/501/26
-f 1476/484/26 1471/484/26 1474/485/26
-f 1474/485/26 1477/485/26 1476/484/26
-f 1485/523/26 1505/523/26 1471/484/26
-f 1471/484/26 1476/484/26 1485/523/26
-f 1484/493/4 1506/529/4 1505/530/4
-f 1505/530/4 1485/494/4 1484/493/4
-f 1499/521/27 1472/531/27 1506/532/27
-f 1506/532/27 1484/521/27 1499/521/27
-f 1500/533/27 1473/531/27 1472/531/27
-f 1472/531/27 1499/521/27 1500/533/27
-f 1507/471/4 1508/472/4 1509/473/4
-f 1509/473/4 1510/474/4 1507/471/4
-f 1511/475/1 1512/476/1 1513/477/1
-f 1513/477/1 1514/478/1 1511/475/1
-f 1515/479/27 1516/480/288 1517/480/288
-f 1517/480/288 1518/479/27 1515/479/27
-f 1519/476/7 1520/475/7 1521/481/7
-f 1521/481/7 1522/482/7 1519/476/7
-f 1523/483/26 1524/484/289 1525/485/289
-f 1525/485/289 1526/483/26 1523/483/26
-f 1527/486/4 1528/487/4 1529/488/4
-f 1530/489/4 1531/490/4 1516/491/4
-f 1516/491/4 1515/492/4 1530/489/4
-f 1532/493/4 1533/494/4 1534/495/4
-f 1535/496/4 1536/497/4 1534/495/4
-f 1534/495/4 1533/494/4 1535/496/4
-f 1537/498/4 1538/499/4 1509/473/4
-f 1509/473/4 1508/472/4 1537/498/4
-f 1539/500/290 1515/479/27 1518/479/27
-f 1518/479/27 1540/500/290 1539/500/290
-f 1541/501/291 1523/483/26 1526/483/26
-f 1526/483/26 1542/501/291 1541/501/291
-f 1539/502/4 1543/503/4 1530/489/4
-f 1530/489/4 1515/492/4 1539/502/4
-f 1535/496/4 1527/486/4 1529/488/4
-f 1529/488/4 1536/497/4 1535/496/4
-f 1531/504/7 1507/504/7 1510/505/7
-f 1510/505/7 1544/505/7 1531/504/7
-f 1530/506/292 1508/506/292 1507/504/292
-f 1507/504/292 1531/504/292 1530/506/292
-f 1543/507/293 1537/507/293 1508/506/293
-f 1508/506/293 1530/506/293 1543/507/293
-f 1545/508/1 1538/508/1 1537/507/1
-f 1537/507/1 1543/507/1 1545/508/1
-f 1546/509/210 1509/510/210 1538/511/210
-f 1538/511/210 1545/512/210 1546/509/210
-f 1544/513/294 1510/514/294 1509/510/294
-f 1509/510/294 1546/509/294 1544/513/294
-f 1547/515/4 1545/516/4 1543/503/4
-f 1543/503/4 1539/502/4 1547/515/4
-f 1539/500/7 1540/500/7 1548/517/7
-f 1548/517/7 1547/517/7 1539/500/7
-f 1516/480/1 1549/518/1 1550/518/1
-f 1550/518/1 1517/480/1 1516/480/1
-f 1549/519/4 1516/491/4 1531/490/4
-f 1531/490/4 1544/474/4 1549/519/4
-f 1511/475/1 1551/481/1 1552/482/1
-f 1552/482/1 1512/476/1 1511/475/1
-f 1544/513/295 1529/513/295 1528/485/295
-f 1528/485/295 1549/520/295 1544/513/295
-f 1546/509/294 1536/509/294 1529/513/294
-f 1529/513/294 1544/513/294 1546/509/294
-f 1545/512/210 1534/512/210 1536/509/210
-f 1536/509/210 1546/509/210 1545/512/210
-f 1547/521/296 1532/521/296 1534/512/296
-f 1534/512/296 1545/512/296 1547/521/296
-f 1519/476/7 1553/477/7 1554/478/7
-f 1554/478/7 1520/475/7 1519/476/7
-f 1523/483/289 1535/522/289 1533/523/289
-f 1533/523/289 1524/484/289 1523/483/289
-f 1541/501/291 1527/524/291 1535/522/291
-f 1535/522/291 1523/483/291 1541/501/291
-f 1549/520/27 1511/525/27 1514/526/27
-f 1514/526/27 1550/527/27 1549/520/27
-f 1528/485/27 1551/528/27 1511/525/27
-f 1511/525/27 1549/520/27 1528/485/27
-f 1527/486/4 1552/486/4 1551/487/4
-f 1551/487/4 1528/487/4 1527/486/4
-f 1541/501/26 1512/501/26 1552/524/26
-f 1552/524/26 1527/524/26 1541/501/26
-f 1542/501/26 1513/501/26 1512/501/26
-f 1512/501/26 1541/501/26 1542/501/26
-f 1524/484/26 1519/484/26 1522/485/26
-f 1522/485/26 1525/485/26 1524/484/26
-f 1533/523/26 1553/523/26 1519/484/26
-f 1519/484/26 1524/484/26 1533/523/26
-f 1532/493/4 1554/529/4 1553/530/4
-f 1553/530/4 1533/494/4 1532/493/4
-f 1547/521/27 1520/531/27 1554/532/27
-f 1554/532/27 1532/521/27 1547/521/27
-f 1548/533/27 1521/531/27 1520/531/27
-f 1520/531/27 1547/521/27 1548/533/27
-f 1555/471/4 1556/472/4 1557/473/4
-f 1557/473/4 1558/474/4 1555/471/4
-f 1559/475/1 1560/476/1 1561/477/1
-f 1561/477/1 1562/478/1 1559/475/1
-f 1563/479/27 1564/480/288 1565/480/288
-f 1565/480/288 1566/479/27 1563/479/27
-f 1567/476/7 1568/475/7 1569/481/7
-f 1569/481/7 1570/482/7 1567/476/7
-f 1571/483/26 1572/484/289 1573/485/289
-f 1573/485/289 1574/483/26 1571/483/26
-f 1575/486/4 1576/487/4 1577/488/4
-f 1578/489/4 1579/490/4 1564/491/4
-f 1564/491/4 1563/492/4 1578/489/4
-f 1580/493/4 1581/494/4 1582/495/4
-f 1583/496/4 1584/497/4 1582/495/4
-f 1582/495/4 1581/494/4 1583/496/4
-f 1585/498/4 1586/499/4 1557/473/4
-f 1557/473/4 1556/472/4 1585/498/4
-f 1587/500/290 1563/479/27 1566/479/27
-f 1566/479/27 1588/500/290 1587/500/290
-f 1589/501/291 1571/483/26 1574/483/26
-f 1574/483/26 1590/501/291 1589/501/291
-f 1587/502/4 1591/503/4 1578/489/4
-f 1578/489/4 1563/492/4 1587/502/4
-f 1583/496/4 1575/486/4 1577/488/4
-f 1577/488/4 1584/497/4 1583/496/4
-f 1579/504/7 1555/504/7 1558/505/7
-f 1558/505/7 1592/505/7 1579/504/7
-f 1578/506/292 1556/506/292 1555/504/292
-f 1555/504/292 1579/504/292 1578/506/292
-f 1591/507/293 1585/507/293 1556/506/293
-f 1556/506/293 1578/506/293 1591/507/293
-f 1593/508/1 1586/508/1 1585/507/1
-f 1585/507/1 1591/507/1 1593/508/1
-f 1594/509/210 1557/510/210 1586/511/210
-f 1586/511/210 1593/512/210 1594/509/210
-f 1592/513/294 1558/514/294 1557/510/294
-f 1557/510/294 1594/509/294 1592/513/294
-f 1595/515/4 1593/516/4 1591/503/4
-f 1591/503/4 1587/502/4 1595/515/4
-f 1587/500/7 1588/500/7 1596/517/7
-f 1596/517/7 1595/517/7 1587/500/7
-f 1564/480/1 1597/518/1 1598/518/1
-f 1598/518/1 1565/480/1 1564/480/1
-f 1597/519/4 1564/491/4 1579/490/4
-f 1579/490/4 1592/474/4 1597/519/4
-f 1559/475/1 1599/481/1 1600/482/1
-f 1600/482/1 1560/476/1 1559/475/1
-f 1592/513/295 1577/513/295 1576/485/295
-f 1576/485/295 1597/520/295 1592/513/295
-f 1594/509/294 1584/509/294 1577/513/294
-f 1577/513/294 1592/513/294 1594/509/294
-f 1593/512/210 1582/512/210 1584/509/210
-f 1584/509/210 1594/509/210 1593/512/210
-f 1595/521/296 1580/521/296 1582/512/296
-f 1582/512/296 1593/512/296 1595/521/296
-f 1567/476/7 1601/477/7 1602/478/7
-f 1602/478/7 1568/475/7 1567/476/7
-f 1571/483/289 1583/522/289 1581/523/289
-f 1581/523/289 1572/484/289 1571/483/289
-f 1589/501/291 1575/524/291 1583/522/291
-f 1583/522/291 1571/483/291 1589/501/291
-f 1597/520/27 1559/525/27 1562/526/27
-f 1562/526/27 1598/527/27 1597/520/27
-f 1576/485/27 1599/528/27 1559/525/27
-f 1559/525/27 1597/520/27 1576/485/27
-f 1575/486/4 1600/486/4 1599/487/4
-f 1599/487/4 1576/487/4 1575/486/4
-f 1589/501/26 1560/501/26 1600/524/26
-f 1600/524/26 1575/524/26 1589/501/26
-f 1590/501/26 1561/501/26 1560/501/26
-f 1560/501/26 1589/501/26 1590/501/26
-f 1572/484/26 1567/484/26 1570/485/26
-f 1570/485/26 1573/485/26 1572/484/26
-f 1581/523/26 1601/523/26 1567/484/26
-f 1567/484/26 1572/484/26 1581/523/26
-f 1580/493/4 1602/529/4 1601/530/4
-f 1601/530/4 1581/494/4 1580/493/4
-f 1595/521/27 1568/531/27 1602/532/27
-f 1602/532/27 1580/521/27 1595/521/27
-f 1596/533/27 1569/531/27 1568/531/27
-f 1568/531/27 1595/521/27 1596/533/27
-f 1603/471/4 1604/472/4 1605/473/4
-f 1605/473/4 1606/474/4 1603/471/4
-f 1607/475/1 1608/476/1 1609/477/1
-f 1609/477/1 1610/478/1 1607/475/1
-f 1611/479/27 1612/480/288 1613/480/288
-f 1613/480/288 1614/479/27 1611/479/27
-f 1615/476/7 1616/475/7 1617/481/7
-f 1617/481/7 1618/482/7 1615/476/7
-f 1619/483/26 1620/484/289 1621/485/289
-f 1621/485/289 1622/483/26 1619/483/26
-f 1623/486/4 1624/487/4 1625/488/4
-f 1626/489/4 1627/490/4 1612/491/4
-f 1612/491/4 1611/492/4 1626/489/4
-f 1628/493/4 1629/494/4 1630/495/4
-f 1631/496/4 1632/497/4 1630/495/4
-f 1630/495/4 1629/494/4 1631/496/4
-f 1633/498/4 1634/499/4 1605/473/4
-f 1605/473/4 1604/472/4 1633/498/4
-f 1635/500/290 1611/479/27 1614/479/27
-f 1614/479/27 1636/500/290 1635/500/290
-f 1637/501/291 1619/483/26 1622/483/26
-f 1622/483/26 1638/501/291 1637/501/291
-f 1635/502/4 1639/503/4 1626/489/4
-f 1626/489/4 1611/492/4 1635/502/4
-f 1631/496/4 1623/486/4 1625/488/4
-f 1625/488/4 1632/497/4 1631/496/4
-f 1627/504/7 1603/504/7 1606/505/7
-f 1606/505/7 1640/505/7 1627/504/7
-f 1626/506/292 1604/506/292 1603/504/292
-f 1603/504/292 1627/504/292 1626/506/292
-f 1639/507/293 1633/507/293 1604/506/293
-f 1604/506/293 1626/506/293 1639/507/293
-f 1641/508/1 1634/508/1 1633/507/1
-f 1633/507/1 1639/507/1 1641/508/1
-f 1642/509/210 1605/510/210 1634/511/210
-f 1634/511/210 1641/512/210 1642/509/210
-f 1640/513/294 1606/514/294 1605/510/294
-f 1605/510/294 1642/509/294 1640/513/294
-f 1643/515/4 1641/516/4 1639/503/4
-f 1639/503/4 1635/502/4 1643/515/4
-f 1635/500/7 1636/500/7 1644/517/7
-f 1644/517/7 1643/517/7 1635/500/7
-f 1612/480/1 1645/518/1 1646/518/1
-f 1646/518/1 1613/480/1 1612/480/1
-f 1645/519/4 1612/491/4 1627/490/4
-f 1627/490/4 1640/474/4 1645/519/4
-f 1607/475/1 1647/481/1 1648/482/1
-f 1648/482/1 1608/476/1 1607/475/1
-f 1640/513/295 1625/513/295 1624/485/295
-f 1624/485/295 1645/520/295 1640/513/295
-f 1642/509/294 1632/509/294 1625/513/294
-f 1625/513/294 1640/513/294 1642/509/294
-f 1641/512/210 1630/512/210 1632/509/210
-f 1632/509/210 1642/509/210 1641/512/210
-f 1643/521/296 1628/521/296 1630/512/296
-f 1630/512/296 1641/512/296 1643/521/296
-f 1615/476/7 1649/477/7 1650/478/7
-f 1650/478/7 1616/475/7 1615/476/7
-f 1619/483/289 1631/522/289 1629/523/289
-f 1629/523/289 1620/484/289 1619/483/289
-f 1637/501/291 1623/524/291 1631/522/297
-f 1631/522/297 1619/483/297 1637/501/291
-f 1645/520/27 1607/525/27 1610/526/27
-f 1610/526/27 1646/527/27 1645/520/27
-f 1624/485/27 1647/528/27 1607/525/27
-f 1607/525/27 1645/520/27 1624/485/27
-f 1623/486/4 1648/486/4 1647/487/4
-f 1647/487/4 1624/487/4 1623/486/4
-f 1637/501/26 1608/501/26 1648/524/26
-f 1648/524/26 1623/524/26 1637/501/26
-f 1638/501/26 1609/501/26 1608/501/26
-f 1608/501/26 1637/501/26 1638/501/26
-f 1620/484/26 1615/484/26 1618/485/26
-f 1618/485/26 1621/485/26 1620/484/26
-f 1629/523/26 1649/523/26 1615/484/26
-f 1615/484/26 1620/484/26 1629/523/26
-f 1628/493/4 1650/529/4 1649/530/4
-f 1649/530/4 1629/494/4 1628/493/4
-f 1643/521/27 1616/531/27 1650/532/27
-f 1650/532/27 1628/521/27 1643/521/27
-f 1644/533/27 1617/531/27 1616/531/27
-f 1616/531/27 1643/521/27 1644/533/27
-f 1651/471/4 1652/472/4 1653/473/4
-f 1653/473/4 1654/474/4 1651/471/4
-f 1655/475/1 1656/476/1 1657/477/1
-f 1657/477/1 1658/478/1 1655/475/1
-f 1659/479/27 1660/480/288 1661/480/288
-f 1661/480/288 1662/479/27 1659/479/27
-f 1663/476/7 1664/475/7 1665/481/7
-f 1665/481/7 1666/482/7 1663/476/7
-f 1667/483/26 1668/484/289 1669/485/289
-f 1669/485/289 1670/483/26 1667/483/26
-f 1671/486/4 1672/487/4 1673/488/4
-f 1674/489/4 1675/490/4 1660/491/4
-f 1660/491/4 1659/492/4 1674/489/4
-f 1676/493/4 1677/494/4 1678/495/4
-f 1679/496/4 1680/497/4 1678/495/4
-f 1678/495/4 1677/494/4 1679/496/4
-f 1681/498/4 1682/499/4 1653/473/4
-f 1653/473/4 1652/472/4 1681/498/4
-f 1683/500/290 1659/479/27 1662/479/27
-f 1662/479/27 1684/500/290 1683/500/290
-f 1685/501/291 1667/483/26 1670/483/26
-f 1670/483/26 1686/501/291 1685/501/291
-f 1683/502/4 1687/503/4 1674/489/4
-f 1674/489/4 1659/492/4 1683/502/4
-f 1679/496/4 1671/486/4 1673/488/4
-f 1673/488/4 1680/497/4 1679/496/4
-f 1675/504/7 1651/504/7 1654/505/7
-f 1654/505/7 1688/505/7 1675/504/7
-f 1674/506/292 1652/506/292 1651/504/292
-f 1651/504/292 1675/504/292 1674/506/292
-f 1687/507/293 1681/507/293 1652/506/293
-f 1652/506/293 1674/506/293 1687/507/293
-f 1689/508/1 1682/508/1 1681/507/1
-f 1681/507/1 1687/507/1 1689/508/1
-f 1690/509/210 1653/510/210 1682/511/210
-f 1682/511/210 1689/512/210 1690/509/210
-f 1688/513/294 1654/514/294 1653/510/294
-f 1653/510/294 1690/509/294 1688/513/294
-f 1691/515/4 1689/516/4 1687/503/4
-f 1687/503/4 1683/502/4 1691/515/4
-f 1683/500/7 1684/500/7 1692/517/7
-f 1692/517/7 1691/517/7 1683/500/7
-f 1660/480/1 1693/518/1 1694/518/1
-f 1694/518/1 1661/480/1 1660/480/1
-f 1693/519/4 1660/491/4 1675/490/4
-f 1675/490/4 1688/474/4 1693/519/4
-f 1655/475/1 1695/481/1 1696/482/1
-f 1696/482/1 1656/476/1 1655/475/1
-f 1688/513/295 1673/513/295 1672/485/295
-f 1672/485/295 1693/520/295 1688/513/295
-f 1690/509/294 1680/509/294 1673/513/294
-f 1673/513/294 1688/513/294 1690/509/294
-f 1689/512/210 1678/512/210 1680/509/210
-f 1680/509/210 1690/509/210 1689/512/210
-f 1691/521/296 1676/521/296 1678/512/296
-f 1678/512/296 1689/512/296 1691/521/296
-f 1663/476/7 1697/477/7 1698/478/7
-f 1698/478/7 1664/475/7 1663/476/7
-f 1667/483/298 1679/522/298 1677/523/289
-f 1677/523/289 1668/484/289 1667/483/298
-f 1685/501/291 1671/524/291 1679/522/297
-f 1679/522/297 1667/483/297 1685/501/291
-f 1693/520/27 1655/525/27 1658/526/27
-f 1658/526/27 1694/527/27 1693/520/27
-f 1672/485/27 1695/528/27 1655/525/27
-f 1655/525/27 1693/520/27 1672/485/27
-f 1671/486/4 1696/486/4 1695/487/4
-f 1695/487/4 1672/487/4 1671/486/4
-f 1685/501/26 1656/501/26 1696/524/26
-f 1696/524/26 1671/524/26 1685/501/26
-f 1686/501/26 1657/501/26 1656/501/26
-f 1656/501/26 1685/501/26 1686/501/26
-f 1668/484/26 1663/484/26 1666/485/26
-f 1666/485/26 1669/485/26 1668/484/26
-f 1677/523/26 1697/523/26 1663/484/26
-f 1663/484/26 1668/484/26 1677/523/26
-f 1676/493/4 1698/529/4 1697/530/4
-f 1697/530/4 1677/494/4 1676/493/4
-f 1691/521/27 1664/531/27 1698/532/27
-f 1698/532/27 1676/521/27 1691/521/27
-f 1692/533/27 1665/531/27 1664/531/27
-f 1664/531/27 1691/521/27 1692/533/27
-f 1699/471/1 1700/472/1 1701/473/1
-f 1701/473/1 1702/474/1 1699/471/1
-f 1703/475/10 1704/476/10 1705/477/10
-f 1705/477/10 1706/478/10 1703/475/10
-f 1707/479/27 1708/480/299 1709/480/299
-f 1709/480/299 1710/479/27 1707/479/27
-f 1711/476/4 1712/475/4 1713/481/4
-f 1713/481/4 1714/482/4 1711/476/4
-f 1715/483/26 1716/484/300 1717/485/300
-f 1717/485/300 1718/483/26 1715/483/26
-f 1719/486/1 1720/487/1 1721/488/1
-f 1722/489/1 1723/490/1 1708/491/1
-f 1708/491/1 1707/492/1 1722/489/1
-f 1724/493/1 1725/494/1 1726/495/1
-f 1727/496/1 1728/497/1 1726/495/1
-f 1726/495/1 1725/494/1 1727/496/1
-f 1729/498/1 1730/499/1 1701/473/1
-f 1701/473/1 1700/472/1 1729/498/1
-f 1731/500/301 1707/479/27 1710/479/27
-f 1710/479/27 1732/500/301 1731/500/301
-f 1733/501/302 1715/483/26 1718/483/26
-f 1718/483/26 1734/501/302 1733/501/302
-f 1731/502/1 1735/503/1 1722/489/1
-f 1722/489/1 1707/492/1 1731/502/1
-f 1727/496/1 1719/486/1 1721/488/1
-f 1721/488/1 1728/497/1 1727/496/1
-f 1723/504/4 1699/504/4 1702/505/4
-f 1702/505/4 1736/505/4 1723/504/4
-f 1722/506/303 1700/506/303 1699/504/303
-f 1699/504/303 1723/504/303 1722/506/303
-f 1735/507/304 1729/507/304 1700/506/304
-f 1700/506/304 1722/506/304 1735/507/304
-f 1737/508/10 1730/508/10 1729/507/10
-f 1729/507/10 1735/507/10 1737/508/10
-f 1738/509/305 1701/510/305 1730/511/305
-f 1730/511/305 1737/512/305 1738/509/305
-f 1736/513/306 1702/514/306 1701/510/306
-f 1701/510/306 1738/509/306 1736/513/306
-f 1739/515/1 1737/516/1 1735/503/1
-f 1735/503/1 1731/502/1 1739/515/1
-f 1731/500/4 1732/500/4 1740/517/4
-f 1740/517/4 1739/517/4 1731/500/4
-f 1708/480/10 1741/518/10 1742/518/10
-f 1742/518/10 1709/480/10 1708/480/10
-f 1741/519/1 1708/491/1 1723/490/1
-f 1723/490/1 1736/474/1 1741/519/1
-f 1703/475/10 1743/481/10 1744/482/10
-f 1744/482/10 1704/476/10 1703/475/10
-f 1736/513/307 1721/513/307 1720/485/307
-f 1720/485/307 1741/520/307 1736/513/307
-f 1738/509/306 1728/509/306 1721/513/306
-f 1721/513/306 1736/513/306 1738/509/306
-f 1737/512/305 1726/512/305 1728/509/305
-f 1728/509/305 1738/509/305 1737/512/305
-f 1739/521/308 1724/521/308 1726/512/308
-f 1726/512/308 1737/512/308 1739/521/308
-f 1711/476/4 1745/477/4 1746/478/4
-f 1746/478/4 1712/475/4 1711/476/4
-f 1715/483/300 1727/522/300 1725/523/300
-f 1725/523/300 1716/484/300 1715/483/300
-f 1733/501/302 1719/524/302 1727/522/302
-f 1727/522/302 1715/483/302 1733/501/302
-f 1741/520/27 1703/525/27 1706/526/27
-f 1706/526/27 1742/527/27 1741/520/27
-f 1720/485/27 1743/528/27 1703/525/27
-f 1703/525/27 1741/520/27 1720/485/27
-f 1719/486/1 1744/486/1 1743/487/1
-f 1743/487/1 1720/487/1 1719/486/1
-f 1733/501/26 1704/501/26 1744/524/26
-f 1744/524/26 1719/524/26 1733/501/26
-f 1734/501/26 1705/501/26 1704/501/26
-f 1704/501/26 1733/501/26 1734/501/26
-f 1716/484/26 1711/484/26 1714/485/26
-f 1714/485/26 1717/485/26 1716/484/26
-f 1725/523/26 1745/523/26 1711/484/26
-f 1711/484/26 1716/484/26 1725/523/26
-f 1724/493/1 1746/529/1 1745/530/1
-f 1745/530/1 1725/494/1 1724/493/1
-f 1739/521/27 1712/531/27 1746/532/27
-f 1746/532/27 1724/521/27 1739/521/27
-f 1740/533/27 1713/531/27 1712/531/27
-f 1712/531/27 1739/521/27 1740/533/27
-f 1747/471/1 1748/474/1 1749/473/1
-f 1749/473/1 1750/472/1 1747/471/1
-f 1751/475/4 1752/478/4 1753/477/4
-f 1753/477/4 1754/476/4 1751/475/4
-f 1755/479/27 1756/479/27 1757/480/301
-f 1757/480/301 1758/480/301 1755/479/27
-f 1759/476/10 1760/482/10 1761/481/10
-f 1761/481/10 1762/475/10 1759/476/10
-f 1763/483/26 1764/483/26 1765/485/302
-f 1765/485/302 1766/484/302 1763/483/26
-f 1767/486/1 1768/488/1 1769/487/1
-f 1770/489/1 1755/492/1 1758/491/1
-f 1758/491/1 1771/490/1 1770/489/1
-f 1772/493/1 1773/495/1 1774/494/1
-f 1775/496/1 1774/494/1 1773/495/1
-f 1773/495/1 1776/497/1 1775/496/1
-f 1777/498/1 1750/472/1 1749/473/1
-f 1749/473/1 1778/499/1 1777/498/1
-f 1779/500/299 1780/500/299 1756/479/27
-f 1756/479/27 1755/479/27 1779/500/299
-f 1781/501/300 1782/501/300 1764/483/26
-f 1764/483/26 1763/483/26 1781/501/300
-f 1779/502/1 1755/492/1 1770/489/1
-f 1770/489/1 1783/503/1 1779/502/1
-f 1775/496/1 1776/497/1 1768/488/1
-f 1768/488/1 1767/486/1 1775/496/1
-f 1771/504/10 1784/505/10 1748/505/10
-f 1748/505/10 1747/504/10 1771/504/10
-f 1770/506/304 1771/504/304 1747/504/304
-f 1747/504/304 1750/506/304 1770/506/304
-f 1783/507/303 1770/506/303 1750/506/303
-f 1750/506/303 1777/507/303 1783/507/303
-f 1785/508/4 1783/507/4 1777/507/4
-f 1777/507/4 1778/508/4 1785/508/4
-f 1786/509/309 1785/512/309 1778/511/309
-f 1778/511/309 1749/510/309 1786/509/309
-f 1784/513/310 1786/509/310 1749/510/310
-f 1749/510/310 1748/514/310 1784/513/310
-f 1787/515/1 1779/502/1 1783/503/1
-f 1783/503/1 1785/516/1 1787/515/1
-f 1779/500/10 1787/517/10 1788/517/10
-f 1788/517/10 1780/500/10 1779/500/10
-f 1758/480/4 1757/480/4 1789/518/4
-f 1789/518/4 1790/518/4 1758/480/4
-f 1790/519/1 1784/474/1 1771/490/1
-f 1771/490/1 1758/491/1 1790/519/1
-f 1751/475/4 1754/476/4 1791/482/4
-f 1791/482/4 1792/481/4 1751/475/4
-f 1784/513/311 1790/520/311 1769/485/311
-f 1769/485/311 1768/513/311 1784/513/311
-f 1786/509/310 1784/513/310 1768/513/310
-f 1768/513/310 1776/509/310 1786/509/310
-f 1785/512/309 1786/509/309 1776/509/309
-f 1776/509/309 1773/512/309 1785/512/309
-f 1787/521/312 1785/512/312 1773/512/312
-f 1773/512/312 1772/521/312 1787/521/312
-f 1759/476/10 1762/475/10 1793/478/10
-f 1793/478/10 1794/477/10 1759/476/10
-f 1763/483/302 1766/484/302 1774/523/302
-f 1774/523/302 1775/522/302 1763/483/302
-f 1781/501/300 1763/483/300 1775/522/300
-f 1775/522/300 1767/524/300 1781/501/300
-f 1790/520/27 1789/527/27 1752/526/27
-f 1752/526/27 1751/525/27 1790/520/27
-f 1769/485/27 1790/520/27 1751/525/27
-f 1751/525/27 1792/528/27 1769/485/27
-f 1767/486/1 1769/487/1 1792/487/1
-f 1792/487/1 1791/486/1 1767/486/1
-f 1781/501/26 1767/524/26 1791/524/26
-f 1791/524/26 1754/501/26 1781/501/26
-f 1782/501/26 1781/501/26 1754/501/26
-f 1754/501/26 1753/501/26 1782/501/26
-f 1766/484/26 1765/485/26 1760/485/26
-f 1760/485/26 1759/484/26 1766/484/26
-f 1774/523/26 1766/484/26 1759/484/26
-f 1759/484/26 1794/523/26 1774/523/26
-f 1772/493/1 1774/494/1 1794/530/1
-f 1794/530/1 1793/529/1 1772/493/1
-f 1787/521/27 1772/521/27 1793/532/27
-f 1793/532/27 1762/531/27 1787/521/27
-f 1788/533/27 1787/521/27 1762/531/27
-f 1762/531/27 1761/531/27 1788/533/27
-f 1795/471/10 1796/474/10 1797/473/10
-f 1797/473/10 1798/472/10 1795/471/10
-f 1799/475/1 1800/478/1 1801/477/1
-f 1801/477/1 1802/476/1 1799/475/1
-f 1803/479/27 1804/479/27 1805/480/288
-f 1805/480/288 1806/480/288 1803/479/27
-f 1807/476/7 1808/482/7 1809/481/7
-f 1809/481/7 1810/475/7 1807/476/7
-f 1811/483/26 1812/483/26 1813/485/289
-f 1813/485/289 1814/484/289 1811/483/26
-f 1815/486/10 1816/488/10 1817/487/10
-f 1818/489/10 1803/492/10 1806/491/10
-f 1806/491/10 1819/490/10 1818/489/10
-f 1820/493/10 1821/495/10 1822/494/10
-f 1823/496/10 1822/494/10 1821/495/10
-f 1821/495/10 1824/497/10 1823/496/10
-f 1825/498/10 1798/472/10 1797/473/10
-f 1797/473/10 1826/499/10 1825/498/10
-f 1827/500/290 1828/500/290 1804/479/27
-f 1804/479/27 1803/479/27 1827/500/290
-f 1829/501/291 1830/501/291 1812/483/26
-f 1812/483/26 1811/483/26 1829/501/291
-f 1827/502/10 1803/492/10 1818/489/10
-f 1818/489/10 1831/503/10 1827/502/10
-f 1823/496/10 1824/497/10 1816/488/10
-f 1816/488/10 1815/486/10 1823/496/10
-f 1819/504/7 1832/505/7 1796/505/7
-f 1796/505/7 1795/504/7 1819/504/7
-f 1818/506/292 1819/504/292 1795/504/292
-f 1795/504/292 1798/506/292 1818/506/292
-f 1831/507/293 1818/506/293 1798/506/293
-f 1798/506/293 1825/507/293 1831/507/293
-f 1833/508/1 1831/507/1 1825/507/1
-f 1825/507/1 1826/508/1 1833/508/1
-f 1834/509/210 1833/512/210 1826/511/210
-f 1826/511/210 1797/510/210 1834/509/210
-f 1832/513/294 1834/509/294 1797/510/294
-f 1797/510/294 1796/514/294 1832/513/294
-f 1835/515/10 1827/502/10 1831/503/10
-f 1831/503/10 1833/516/10 1835/515/10
-f 1827/500/7 1835/517/7 1836/517/7
-f 1836/517/7 1828/500/7 1827/500/7
-f 1806/480/1 1805/480/1 1837/518/1
-f 1837/518/1 1838/518/1 1806/480/1
-f 1838/519/10 1832/474/10 1819/490/10
-f 1819/490/10 1806/491/10 1838/519/10
-f 1799/475/1 1802/476/1 1839/482/1
-f 1839/482/1 1840/481/1 1799/475/1
-f 1832/513/313 1838/520/295 1817/485/295
-f 1817/485/295 1816/513/313 1832/513/313
-f 1834/509/294 1832/513/294 1816/513/294
-f 1816/513/294 1824/509/294 1834/509/294
-f 1833/512/210 1834/509/210 1824/509/210
-f 1824/509/210 1821/512/210 1833/512/210
-f 1835/521/296 1833/512/296 1821/512/296
-f 1821/512/296 1820/521/296 1835/521/296
-f 1807/476/7 1810/475/7 1841/478/7
-f 1841/478/7 1842/477/7 1807/476/7
-f 1811/483/289 1814/484/289 1822/523/289
-f 1822/523/289 1823/522/289 1811/483/289
-f 1829/501/291 1811/483/291 1823/522/291
-f 1823/522/291 1815/524/291 1829/501/291
-f 1838/520/27 1837/527/27 1800/526/27
-f 1800/526/27 1799/525/27 1838/520/27
-f 1817/485/27 1838/520/27 1799/525/27
-f 1799/525/27 1840/528/27 1817/485/27
-f 1815/486/10 1817/487/10 1840/487/10
-f 1840/487/10 1839/486/10 1815/486/10
-f 1829/501/26 1815/524/26 1839/524/26
-f 1839/524/26 1802/501/26 1829/501/26
-f 1830/501/26 1829/501/26 1802/501/26
-f 1802/501/26 1801/501/26 1830/501/26
-f 1814/484/26 1813/485/26 1808/485/26
-f 1808/485/26 1807/484/26 1814/484/26
-f 1822/523/26 1814/484/26 1807/484/26
-f 1807/484/26 1842/523/26 1822/523/26
-f 1820/493/10 1822/494/10 1842/530/10
-f 1842/530/10 1841/529/10 1820/493/10
-f 1835/521/27 1820/521/27 1841/532/27
-f 1841/532/27 1810/531/27 1835/521/27
-f 1836/533/27 1835/521/27 1810/531/27
-f 1810/531/27 1809/531/27 1836/533/27
-f 1843/471/10 1844/474/10 1845/473/10
-f 1845/473/10 1846/472/10 1843/471/10
-f 1847/475/1 1848/478/1 1849/477/1
-f 1849/477/1 1850/476/1 1847/475/1
-f 1851/479/27 1852/479/27 1853/480/288
-f 1853/480/288 1854/480/288 1851/479/27
-f 1855/476/7 1856/482/7 1857/481/7
-f 1857/481/7 1858/475/7 1855/476/7
-f 1859/483/26 1860/483/26 1861/485/289
-f 1861/485/289 1862/484/289 1859/483/26
-f 1863/486/10 1864/488/10 1865/487/10
-f 1866/489/10 1851/492/10 1854/491/10
-f 1854/491/10 1867/490/10 1866/489/10
-f 1868/493/10 1869/495/10 1870/494/10
-f 1871/496/10 1870/494/10 1869/495/10
-f 1869/495/10 1872/497/10 1871/496/10
-f 1873/498/10 1846/472/10 1845/473/10
-f 1845/473/10 1874/499/10 1873/498/10
-f 1875/500/290 1876/500/290 1852/479/27
-f 1852/479/27 1851/479/27 1875/500/290
-f 1877/501/291 1878/501/291 1860/483/26
-f 1860/483/26 1859/483/26 1877/501/291
-f 1875/502/10 1851/492/10 1866/489/10
-f 1866/489/10 1879/503/10 1875/502/10
-f 1871/496/10 1872/497/10 1864/488/10
-f 1864/488/10 1863/486/10 1871/496/10
-f 1867/504/7 1880/505/7 1844/505/7
-f 1844/505/7 1843/504/7 1867/504/7
-f 1866/506/292 1867/504/292 1843/504/292
-f 1843/504/292 1846/506/292 1866/506/292
-f 1879/507/293 1866/506/293 1846/506/293
-f 1846/506/293 1873/507/293 1879/507/293
-f 1881/508/1 1879/507/1 1873/507/1
-f 1873/507/1 1874/508/1 1881/508/1
-f 1882/509/210 1881/512/210 1874/511/210
-f 1874/511/210 1845/510/210 1882/509/210
-f 1880/513/294 1882/509/294 1845/510/294
-f 1845/510/294 1844/514/294 1880/513/294
-f 1883/515/10 1875/502/10 1879/503/10
-f 1879/503/10 1881/516/10 1883/515/10
-f 1875/500/7 1883/517/7 1884/517/7
-f 1884/517/7 1876/500/7 1875/500/7
-f 1854/480/1 1853/480/1 1885/518/1
-f 1885/518/1 1886/518/1 1854/480/1
-f 1886/519/10 1880/474/10 1867/490/10
-f 1867/490/10 1854/491/10 1886/519/10
-f 1847/475/1 1850/476/1 1887/482/1
-f 1887/482/1 1888/481/1 1847/475/1
-f 1880/513/295 1886/520/295 1865/485/295
-f 1865/485/295 1864/513/295 1880/513/295
-f 1882/509/294 1880/513/294 1864/513/294
-f 1864/513/294 1872/509/294 1882/509/294
-f 1881/512/210 1882/509/210 1872/509/210
-f 1872/509/210 1869/512/210 1881/512/210
-f 1883/521/296 1881/512/296 1869/512/296
-f 1869/512/296 1868/521/296 1883/521/296
-f 1855/476/7 1858/475/7 1889/478/7
-f 1889/478/7 1890/477/7 1855/476/7
-f 1859/483/289 1862/484/289 1870/523/289
-f 1870/523/289 1871/522/289 1859/483/289
-f 1877/501/291 1859/483/291 1871/522/291
-f 1871/522/291 1863/524/291 1877/501/291
-f 1886/520/27 1885/527/27 1848/526/27
-f 1848/526/27 1847/525/27 1886/520/27
-f 1865/485/27 1886/520/27 1847/525/27
-f 1847/525/27 1888/528/27 1865/485/27
-f 1863/486/10 1865/487/10 1888/487/10
-f 1888/487/10 1887/486/10 1863/486/10
-f 1877/501/26 1863/524/26 1887/524/26
-f 1887/524/26 1850/501/26 1877/501/26
-f 1878/501/26 1877/501/26 1850/501/26
-f 1850/501/26 1849/501/26 1878/501/26
-f 1862/484/26 1861/485/26 1856/485/26
-f 1856/485/26 1855/484/26 1862/484/26
-f 1870/523/26 1862/484/26 1855/484/26
-f 1855/484/26 1890/523/26 1870/523/26
-f 1868/493/10 1870/494/10 1890/530/10
-f 1890/530/10 1889/529/10 1868/493/10
-f 1883/521/27 1868/521/27 1889/532/27
-f 1889/532/27 1858/531/27 1883/521/27
-f 1884/533/27 1883/521/27 1858/531/27
-f 1858/531/27 1857/531/27 1884/533/27
-f 1891/471/10 1892/474/10 1893/473/10
-f 1893/473/10 1894/472/10 1891/471/10
-f 1895/475/1 1896/478/1 1897/477/1
-f 1897/477/1 1898/476/1 1895/475/1
-f 1899/479/27 1900/479/27 1901/480/288
-f 1901/480/288 1902/480/288 1899/479/27
-f 1903/476/7 1904/482/7 1905/481/7
-f 1905/481/7 1906/475/7 1903/476/7
-f 1907/483/26 1908/483/26 1909/485/289
-f 1909/485/289 1910/484/289 1907/483/26
-f 1911/486/10 1912/488/10 1913/487/10
-f 1914/489/10 1899/492/10 1902/491/10
-f 1902/491/10 1915/490/10 1914/489/10
-f 1916/493/10 1917/495/10 1918/494/10
-f 1919/496/10 1918/494/10 1917/495/10
-f 1917/495/10 1920/497/10 1919/496/10
-f 1921/498/10 1894/472/10 1893/473/10
-f 1893/473/10 1922/499/10 1921/498/10
-f 1923/500/290 1924/500/290 1900/479/27
-f 1900/479/27 1899/479/27 1923/500/290
-f 1925/501/291 1926/501/291 1908/483/26
-f 1908/483/26 1907/483/26 1925/501/291
-f 1923/502/10 1899/492/10 1914/489/10
-f 1914/489/10 1927/503/10 1923/502/10
-f 1919/496/10 1920/497/10 1912/488/10
-f 1912/488/10 1911/486/10 1919/496/10
-f 1915/504/7 1928/505/7 1892/505/7
-f 1892/505/7 1891/504/7 1915/504/7
-f 1914/506/292 1915/504/292 1891/504/292
-f 1891/504/292 1894/506/292 1914/506/292
-f 1927/507/293 1914/506/293 1894/506/293
-f 1894/506/293 1921/507/293 1927/507/293
-f 1929/508/1 1927/507/1 1921/507/1
-f 1921/507/1 1922/508/1 1929/508/1
-f 1930/509/210 1929/512/210 1922/511/210
-f 1922/511/210 1893/510/210 1930/509/210
-f 1928/513/294 1930/509/294 1893/510/294
-f 1893/510/294 1892/514/294 1928/513/294
-f 1931/515/10 1923/502/10 1927/503/10
-f 1927/503/10 1929/516/10 1931/515/10
-f 1923/500/7 1931/517/7 1932/517/7
-f 1932/517/7 1924/500/7 1923/500/7
-f 1902/480/1 1901/480/1 1933/518/1
-f 1933/518/1 1934/518/1 1902/480/1
-f 1934/519/10 1928/474/10 1915/490/10
-f 1915/490/10 1902/491/10 1934/519/10
-f 1895/475/1 1898/476/1 1935/482/1
-f 1935/482/1 1936/481/1 1895/475/1
-f 1928/513/295 1934/520/295 1913/485/295
-f 1913/485/295 1912/513/295 1928/513/295
-f 1930/509/294 1928/513/294 1912/513/294
-f 1912/513/294 1920/509/294 1930/509/294
-f 1929/512/210 1930/509/210 1920/509/210
-f 1920/509/210 1917/512/210 1929/512/210
-f 1931/521/296 1929/512/296 1917/512/296
-f 1917/512/296 1916/521/296 1931/521/296
-f 1903/476/7 1906/475/7 1937/478/7
-f 1937/478/7 1938/477/7 1903/476/7
-f 1907/483/289 1910/484/289 1918/523/289
-f 1918/523/289 1919/522/289 1907/483/289
-f 1925/501/291 1907/483/291 1919/522/291
-f 1919/522/291 1911/524/291 1925/501/291
-f 1934/520/27 1933/527/27 1896/526/27
-f 1896/526/27 1895/525/27 1934/520/27
-f 1913/485/27 1934/520/27 1895/525/27
-f 1895/525/27 1936/528/27 1913/485/27
-f 1911/486/10 1913/487/10 1936/487/10
-f 1936/487/10 1935/486/10 1911/486/10
-f 1925/501/26 1911/524/26 1935/524/26
-f 1935/524/26 1898/501/26 1925/501/26
-f 1926/501/26 1925/501/26 1898/501/26
-f 1898/501/26 1897/501/26 1926/501/26
-f 1910/484/26 1909/485/26 1904/485/26
-f 1904/485/26 1903/484/26 1910/484/26
-f 1918/523/26 1910/484/26 1903/484/26
-f 1903/484/26 1938/523/26 1918/523/26
-f 1916/493/10 1918/494/10 1938/530/10
-f 1938/530/10 1937/529/10 1916/493/10
-f 1931/521/27 1916/521/27 1937/532/27
-f 1937/532/27 1906/531/27 1931/521/27
-f 1932/533/27 1931/521/27 1906/531/27
-f 1906/531/27 1905/531/27 1932/533/27
-f 1939/471/10 1940/474/10 1941/473/10
-f 1941/473/10 1942/472/10 1939/471/10
-f 1943/475/1 1944/478/1 1945/477/1
-f 1945/477/1 1946/476/1 1943/475/1
-f 1947/479/27 1948/479/27 1949/480/288
-f 1949/480/288 1950/480/288 1947/479/27
-f 1951/476/7 1952/482/7 1953/481/7
-f 1953/481/7 1954/475/7 1951/476/7
-f 1955/483/26 1956/483/26 1957/485/289
-f 1957/485/289 1958/484/289 1955/483/26
-f 1959/486/10 1960/488/10 1961/487/10
-f 1962/489/10 1947/492/10 1950/491/10
-f 1950/491/10 1963/490/10 1962/489/10
-f 1964/493/10 1965/495/10 1966/494/10
-f 1967/496/10 1966/494/10 1965/495/10
-f 1965/495/10 1968/497/10 1967/496/10
-f 1969/498/10 1942/472/10 1941/473/10
-f 1941/473/10 1970/499/10 1969/498/10
-f 1971/500/290 1972/500/290 1948/479/27
-f 1948/479/27 1947/479/27 1971/500/290
-f 1973/501/291 1974/501/291 1956/483/26
-f 1956/483/26 1955/483/26 1973/501/291
-f 1971/502/10 1947/492/10 1962/489/10
-f 1962/489/10 1975/503/10 1971/502/10
-f 1967/496/10 1968/497/10 1960/488/10
-f 1960/488/10 1959/486/10 1967/496/10
-f 1963/504/7 1976/505/7 1940/505/7
-f 1940/505/7 1939/504/7 1963/504/7
-f 1962/506/292 1963/504/292 1939/504/292
-f 1939/504/292 1942/506/292 1962/506/292
-f 1975/507/293 1962/506/293 1942/506/293
-f 1942/506/293 1969/507/293 1975/507/293
-f 1977/508/1 1975/507/1 1969/507/1
-f 1969/507/1 1970/508/1 1977/508/1
-f 1978/509/210 1977/512/210 1970/511/210
-f 1970/511/210 1941/510/210 1978/509/210
-f 1976/513/294 1978/509/294 1941/510/294
-f 1941/510/294 1940/514/294 1976/513/294
-f 1979/515/10 1971/502/10 1975/503/10
-f 1975/503/10 1977/516/10 1979/515/10
-f 1971/500/7 1979/517/7 1980/517/7
-f 1980/517/7 1972/500/7 1971/500/7
-f 1950/480/1 1949/480/1 1981/518/1
-f 1981/518/1 1982/518/1 1950/480/1
-f 1982/519/10 1976/474/10 1963/490/10
-f 1963/490/10 1950/491/10 1982/519/10
-f 1943/475/1 1946/476/1 1983/482/1
-f 1983/482/1 1984/481/1 1943/475/1
-f 1976/513/295 1982/520/295 1961/485/295
-f 1961/485/295 1960/513/295 1976/513/295
-f 1978/509/294 1976/513/294 1960/513/294
-f 1960/513/294 1968/509/294 1978/509/294
-f 1977/512/210 1978/509/210 1968/509/210
-f 1968/509/210 1965/512/210 1977/512/210
-f 1979/521/296 1977/512/296 1965/512/296
-f 1965/512/296 1964/521/296 1979/521/296
-f 1951/476/7 1954/475/7 1985/478/7
-f 1985/478/7 1986/477/7 1951/476/7
-f 1955/483/289 1958/484/289 1966/523/289
-f 1966/523/289 1967/522/289 1955/483/289
-f 1973/501/291 1955/483/291 1967/522/291
-f 1967/522/291 1959/524/291 1973/501/291
-f 1982/520/27 1981/527/27 1944/526/27
-f 1944/526/27 1943/525/27 1982/520/27
-f 1961/485/27 1982/520/27 1943/525/27
-f 1943/525/27 1984/528/27 1961/485/27
-f 1959/486/10 1961/487/10 1984/487/10
-f 1984/487/10 1983/486/10 1959/486/10
-f 1973/501/26 1959/524/26 1983/524/26
-f 1983/524/26 1946/501/26 1973/501/26
-f 1974/501/26 1973/501/26 1946/501/26
-f 1946/501/26 1945/501/26 1974/501/26
-f 1958/484/26 1957/485/26 1952/485/26
-f 1952/485/26 1951/484/26 1958/484/26
-f 1966/523/26 1958/484/26 1951/484/26
-f 1951/484/26 1986/523/26 1966/523/26
-f 1964/493/10 1966/494/10 1986/530/10
-f 1986/530/10 1985/529/10 1964/493/10
-f 1979/521/27 1964/521/27 1985/532/27
-f 1985/532/27 1954/531/27 1979/521/27
-f 1980/533/27 1979/521/27 1954/531/27
-f 1954/531/27 1953/531/27 1980/533/27
-f 1987/471/10 1988/472/10 1989/473/10
-f 1989/473/10 1990/474/10 1987/471/10
-f 1991/475/7 1992/476/7 1993/477/7
-f 1993/477/7 1994/478/7 1991/475/7
-f 1995/479/27 1996/480/290 1997/480/290
-f 1997/480/290 1998/479/27 1995/479/27
-f 1999/476/1 2000/475/1 2001/481/1
-f 2001/481/1 2002/482/1 1999/476/1
-f 2003/483/26 2004/484/291 2005/485/291
-f 2005/485/291 2006/483/26 2003/483/26
-f 2007/486/10 2008/487/10 2009/488/10
-f 2010/489/10 2011/490/10 1996/491/10
-f 1996/491/10 1995/492/10 2010/489/10
-f 2012/493/10 2013/494/10 2014/495/10
-f 2015/496/10 2016/497/10 2014/495/10
-f 2014/495/10 2013/494/10 2015/496/10
-f 2017/498/10 2018/499/10 1989/473/10
-f 1989/473/10 1988/472/10 2017/498/10
-f 2019/500/288 1995/479/27 1998/479/27
-f 1998/479/27 2020/500/288 2019/500/288
-f 2021/501/289 2003/483/26 2006/483/26
-f 2006/483/26 2022/501/289 2021/501/289
-f 2019/502/10 2023/503/10 2010/489/10
-f 2010/489/10 1995/492/10 2019/502/10
-f 2015/496/10 2007/486/10 2009/488/10
-f 2009/488/10 2016/497/10 2015/496/10
-f 2011/504/1 1987/504/1 1990/505/1
-f 1990/505/1 2024/505/1 2011/504/1
-f 2010/506/293 1988/506/293 1987/504/293
-f 1987/504/293 2011/504/293 2010/506/293
-f 2023/507/292 2017/507/292 1988/506/292
-f 1988/506/292 2010/506/292 2023/507/292
-f 2025/508/7 2018/508/7 2017/507/7
-f 2017/507/7 2023/507/7 2025/508/7
-f 2026/509/203 1989/510/203 2018/511/203
-f 2018/511/203 2025/512/203 2026/509/203
-f 2024/513/296 1990/514/296 1989/510/296
-f 1989/510/296 2026/509/296 2024/513/296
-f 2027/515/10 2025/516/10 2023/503/10
-f 2023/503/10 2019/502/10 2027/515/10
-f 2019/500/1 2020/500/1 2028/517/1
-f 2028/517/1 2027/517/1 2019/500/1
-f 1996/480/7 2029/518/7 2030/518/7
-f 2030/518/7 1997/480/7 1996/480/7
-f 2029/519/10 1996/491/10 2011/490/10
-f 2011/490/10 2024/474/10 2029/519/10
-f 1991/475/7 2031/481/7 2032/482/7
-f 2032/482/7 1992/476/7 1991/475/7
-f 2024/513/314 2009/513/314 2008/485/314
-f 2008/485/314 2029/520/314 2024/513/314
-f 2026/509/296 2016/509/296 2009/513/296
-f 2009/513/296 2024/513/296 2026/509/296
-f 2025/512/203 2014/512/203 2016/509/203
-f 2016/509/203 2026/509/203 2025/512/203
-f 2027/521/294 2012/521/294 2014/512/294
-f 2014/512/294 2025/512/294 2027/521/294
-f 1999/476/1 2033/477/1 2034/478/1
-f 2034/478/1 2000/475/1 1999/476/1
-f 2003/483/291 2015/522/291 2013/523/291
-f 2013/523/291 2004/484/291 2003/483/291
-f 2021/501/289 2007/524/289 2015/522/289
-f 2015/522/289 2003/483/289 2021/501/289
-f 2029/520/27 1991/525/27 1994/526/27
-f 1994/526/27 2030/527/27 2029/520/27
-f 2008/485/27 2031/528/27 1991/525/27
-f 1991/525/27 2029/520/27 2008/485/27
-f 2007/486/10 2032/486/10 2031/487/10
-f 2031/487/10 2008/487/10 2007/486/10
-f 2021/501/26 1992/501/26 2032/524/26
-f 2032/524/26 2007/524/26 2021/501/26
-f 2022/501/26 1993/501/26 1992/501/26
-f 1992/501/26 2021/501/26 2022/501/26
-f 2004/484/26 1999/484/26 2002/485/26
-f 2002/485/26 2005/485/26 2004/484/26
-f 2013/523/26 2033/523/26 1999/484/26
-f 1999/484/26 2004/484/26 2013/523/26
-f 2012/493/10 2034/529/10 2033/530/10
-f 2033/530/10 2013/494/10 2012/493/10
-f 2027/521/27 2000/531/27 2034/532/27
-f 2034/532/27 2012/521/27 2027/521/27
-f 2028/533/27 2001/531/27 2000/531/27
-f 2000/531/27 2027/521/27 2028/533/27
-f 2035/471/10 2036/472/10 2037/473/10
-f 2037/473/10 2038/474/10 2035/471/10
-f 2039/475/7 2040/476/7 2041/477/7
-f 2041/477/7 2042/478/7 2039/475/7
-f 2043/479/27 2044/480/290 2045/480/290
-f 2045/480/290 2046/479/27 2043/479/27
-f 2047/476/1 2048/475/1 2049/481/1
-f 2049/481/1 2050/482/1 2047/476/1
-f 2051/483/26 2052/484/291 2053/485/291
-f 2053/485/291 2054/483/26 2051/483/26
-f 2055/486/10 2056/487/10 2057/488/10
-f 2058/489/10 2059/490/10 2044/491/10
-f 2044/491/10 2043/492/10 2058/489/10
-f 2060/493/10 2061/494/10 2062/495/10
-f 2063/496/10 2064/497/10 2062/495/10
-f 2062/495/10 2061/494/10 2063/496/10
-f 2065/498/10 2066/499/10 2037/473/10
-f 2037/473/10 2036/472/10 2065/498/10
-f 2067/500/288 2043/479/27 2046/479/27
-f 2046/479/27 2068/500/288 2067/500/288
-f 2069/501/289 2051/483/26 2054/483/26
-f 2054/483/26 2070/501/289 2069/501/289
-f 2067/502/10 2071/503/10 2058/489/10
-f 2058/489/10 2043/492/10 2067/502/10
-f 2063/496/10 2055/486/10 2057/488/10
-f 2057/488/10 2064/497/10 2063/496/10
-f 2059/504/1 2035/504/1 2038/505/1
-f 2038/505/1 2072/505/1 2059/504/1
-f 2058/506/293 2036/506/293 2035/504/293
-f 2035/504/293 2059/504/293 2058/506/293
-f 2071/507/292 2065/507/292 2036/506/292
-f 2036/506/292 2058/506/292 2071/507/292
-f 2073/508/7 2066/508/7 2065/507/7
-f 2065/507/7 2071/507/7 2073/508/7
-f 2074/509/203 2037/510/203 2066/511/203
-f 2066/511/203 2073/512/203 2074/509/203
-f 2072/513/296 2038/514/296 2037/510/296
-f 2037/510/296 2074/509/296 2072/513/296
-f 2075/515/10 2073/516/10 2071/503/10
-f 2071/503/10 2067/502/10 2075/515/10
-f 2067/500/1 2068/500/1 2076/517/1
-f 2076/517/1 2075/517/1 2067/500/1
-f 2044/480/7 2077/518/7 2078/518/7
-f 2078/518/7 2045/480/7 2044/480/7
-f 2077/519/10 2044/491/10 2059/490/10
-f 2059/490/10 2072/474/10 2077/519/10
-f 2039/475/7 2079/481/7 2080/482/7
-f 2080/482/7 2040/476/7 2039/475/7
-f 2072/513/314 2057/513/314 2056/485/314
-f 2056/485/314 2077/520/314 2072/513/314
-f 2074/509/296 2064/509/296 2057/513/296
-f 2057/513/296 2072/513/296 2074/509/296
-f 2073/512/203 2062/512/203 2064/509/203
-f 2064/509/203 2074/509/203 2073/512/203
-f 2075/521/294 2060/521/294 2062/512/294
-f 2062/512/294 2073/512/294 2075/521/294
-f 2047/476/1 2081/477/1 2082/478/1
-f 2082/478/1 2048/475/1 2047/476/1
-f 2051/483/291 2063/522/291 2061/523/291
-f 2061/523/291 2052/484/291 2051/483/291
-f 2069/501/289 2055/524/289 2063/522/298
-f 2063/522/298 2051/483/298 2069/501/289
-f 2077/520/27 2039/525/27 2042/526/27
-f 2042/526/27 2078/527/27 2077/520/27
-f 2056/485/27 2079/528/27 2039/525/27
-f 2039/525/27 2077/520/27 2056/485/27
-f 2055/486/10 2080/486/10 2079/487/10
-f 2079/487/10 2056/487/10 2055/486/10
-f 2069/501/26 2040/501/26 2080/524/26
-f 2080/524/26 2055/524/26 2069/501/26
-f 2070/501/26 2041/501/26 2040/501/26
-f 2040/501/26 2069/501/26 2070/501/26
-f 2052/484/26 2047/484/26 2050/485/26
-f 2050/485/26 2053/485/26 2052/484/26
-f 2061/523/26 2081/523/26 2047/484/26
-f 2047/484/26 2052/484/26 2061/523/26
-f 2060/493/10 2082/529/10 2081/530/10
-f 2081/530/10 2061/494/10 2060/493/10
-f 2075/521/27 2048/531/27 2082/532/27
-f 2082/532/27 2060/521/27 2075/521/27
-f 2076/533/27 2049/531/27 2048/531/27
-f 2048/531/27 2075/521/27 2076/533/27
-f 2083/471/7 2084/472/7 2085/473/7
-f 2085/473/7 2086/474/7 2083/471/7
-f 2087/475/4 2088/476/4 2089/477/4
-f 2089/477/4 2090/478/4 2087/475/4
-f 2091/479/27 2092/480/301 2093/480/301
-f 2093/480/301 2094/479/27 2091/479/27
-f 2095/476/10 2096/475/10 2097/481/10
-f 2097/481/10 2098/482/10 2095/476/10
-f 2099/483/26 2100/484/302 2101/485/302
-f 2101/485/302 2102/483/26 2099/483/26
-f 2103/486/7 2104/487/7 2105/488/7
-f 2106/489/7 2107/490/7 2092/491/7
-f 2092/491/7 2091/492/7 2106/489/7
-f 2108/493/7 2109/494/7 2110/495/7
-f 2111/496/7 2112/497/7 2110/495/7
-f 2110/495/7 2109/494/7 2111/496/7
-f 2113/498/7 2114/499/7 2085/473/7
-f 2085/473/7 2084/472/7 2113/498/7
-f 2115/500/299 2091/479/27 2094/479/27
-f 2094/479/27 2116/500/299 2115/500/299
-f 2117/501/300 2099/483/26 2102/483/26
-f 2102/483/26 2118/501/300 2117/501/300
-f 2115/502/7 2119/503/7 2106/489/7
-f 2106/489/7 2091/492/7 2115/502/7
-f 2111/496/7 2103/486/7 2105/488/7
-f 2105/488/7 2112/497/7 2111/496/7
-f 2107/504/10 2083/504/10 2086/505/10
-f 2086/505/10 2120/505/10 2107/504/10
-f 2106/506/304 2084/506/304 2083/504/304
-f 2083/504/304 2107/504/304 2106/506/304
-f 2119/507/303 2113/507/303 2084/506/303
-f 2084/506/303 2106/506/303 2119/507/303
-f 2121/508/4 2114/508/4 2113/507/4
-f 2113/507/4 2119/507/4 2121/508/4
-f 2122/509/309 2085/510/309 2114/511/309
-f 2114/511/309 2121/512/309 2122/509/309
-f 2120/513/310 2086/514/310 2085/510/310
-f 2085/510/310 2122/509/310 2120/513/310
-f 2123/515/7 2121/516/7 2119/503/7
-f 2119/503/7 2115/502/7 2123/515/7
-f 2115/500/10 2116/500/10 2124/517/10
-f 2124/517/10 2123/517/10 2115/500/10
-f 2092/480/4 2125/518/4 2126/518/4
-f 2126/518/4 2093/480/4 2092/480/4
-f 2125/519/7 2092/491/7 2107/490/7
-f 2107/490/7 2120/474/7 2125/519/7
-f 2087/475/4 2127/481/4 2128/482/4
-f 2128/482/4 2088/476/4 2087/475/4
-f 2120/513/311 2105/513/311 2104/485/311
-f 2104/485/311 2125/520/311 2120/513/311
-f 2122/509/310 2112/509/310 2105/513/310
-f 2105/513/310 2120/513/310 2122/509/310
-f 2121/512/309 2110/512/309 2112/509/309
-f 2112/509/309 2122/509/309 2121/512/309
-f 2123/521/312 2108/521/312 2110/512/312
-f 2110/512/312 2121/512/312 2123/521/312
-f 2095/476/10 2129/477/10 2130/478/10
-f 2130/478/10 2096/475/10 2095/476/10
-f 2099/483/302 2111/522/302 2109/523/302
-f 2109/523/302 2100/484/302 2099/483/302
-f 2117/501/300 2103/524/300 2111/522/300
-f 2111/522/300 2099/483/300 2117/501/300
-f 2125/520/27 2087/525/27 2090/526/27
-f 2090/526/27 2126/527/27 2125/520/27
-f 2104/485/27 2127/528/27 2087/525/27
-f 2087/525/27 2125/520/27 2104/485/27
-f 2103/486/7 2128/486/7 2127/487/7
-f 2127/487/7 2104/487/7 2103/486/7
-f 2117/501/26 2088/501/26 2128/524/26
-f 2128/524/26 2103/524/26 2117/501/26
-f 2118/501/26 2089/501/26 2088/501/26
-f 2088/501/26 2117/501/26 2118/501/26
-f 2100/484/26 2095/484/26 2098/485/26
-f 2098/485/26 2101/485/26 2100/484/26
-f 2109/523/26 2129/523/26 2095/484/26
-f 2095/484/26 2100/484/26 2109/523/26
-f 2108/493/7 2130/529/7 2129/530/7
-f 2129/530/7 2109/494/7 2108/493/7
-f 2123/521/27 2096/531/27 2130/532/27
-f 2130/532/27 2108/521/27 2123/521/27
-f 2124/533/27 2097/531/27 2096/531/27
-f 2096/531/27 2123/521/27 2124/533/27
-f 2131/471/7 2132/472/7 2133/473/7
-f 2133/473/7 2134/474/7 2131/471/7
-f 2135/475/4 2136/476/4 2137/477/4
-f 2137/477/4 2138/478/4 2135/475/4
-f 2139/479/27 2140/480/301 2141/480/301
-f 2141/480/301 2142/479/27 2139/479/27
-f 2143/476/10 2144/475/10 2145/481/10
-f 2145/481/10 2146/482/10 2143/476/10
-f 2147/483/26 2148/484/302 2149/485/302
-f 2149/485/302 2150/483/26 2147/483/26
-f 2151/486/7 2152/487/7 2153/488/7
-f 2154/489/7 2155/490/7 2140/491/7
-f 2140/491/7 2139/492/7 2154/489/7
-f 2156/493/7 2157/494/7 2158/495/7
-f 2159/496/7 2160/497/7 2158/495/7
-f 2158/495/7 2157/494/7 2159/496/7
-f 2161/498/7 2162/499/7 2133/473/7
-f 2133/473/7 2132/472/7 2161/498/7
-f 2163/500/299 2139/479/27 2142/479/27
-f 2142/479/27 2164/500/299 2163/500/299
-f 2165/501/300 2147/483/26 2150/483/26
-f 2150/483/26 2166/501/300 2165/501/300
-f 2163/502/7 2167/503/7 2154/489/7
-f 2154/489/7 2139/492/7 2163/502/7
-f 2159/496/7 2151/486/7 2153/488/7
-f 2153/488/7 2160/497/7 2159/496/7
-f 2155/504/10 2131/504/10 2134/505/10
-f 2134/505/10 2168/505/10 2155/504/10
-f 2154/506/304 2132/506/304 2131/504/304
-f 2131/504/304 2155/504/304 2154/506/304
-f 2167/507/303 2161/507/303 2132/506/303
-f 2132/506/303 2154/506/303 2167/507/303
-f 2169/508/4 2162/508/4 2161/507/4
-f 2161/507/4 2167/507/4 2169/508/4
-f 2170/509/309 2133/510/309 2162/511/309
-f 2162/511/309 2169/512/309 2170/509/309
-f 2168/513/310 2134/514/310 2133/510/310
-f 2133/510/310 2170/509/310 2168/513/310
-f 2171/515/7 2169/516/7 2167/503/7
-f 2167/503/7 2163/502/7 2171/515/7
-f 2163/500/10 2164/500/10 2172/517/10
-f 2172/517/10 2171/517/10 2163/500/10
-f 2140/480/4 2173/518/4 2174/518/4
-f 2174/518/4 2141/480/4 2140/480/4
-f 2173/519/7 2140/491/7 2155/490/7
-f 2155/490/7 2168/474/7 2173/519/7
-f 2135/475/4 2175/481/4 2176/482/4
-f 2176/482/4 2136/476/4 2135/475/4
-f 2168/513/311 2153/513/311 2152/485/311
-f 2152/485/311 2173/520/311 2168/513/311
-f 2170/509/310 2160/509/310 2153/513/310
-f 2153/513/310 2168/513/310 2170/509/310
-f 2169/512/309 2158/512/309 2160/509/309
-f 2160/509/309 2170/509/309 2169/512/309
-f 2171/521/312 2156/521/312 2158/512/312
-f 2158/512/312 2169/512/312 2171/521/312
-f 2143/476/10 2177/477/10 2178/478/10
-f 2178/478/10 2144/475/10 2143/476/10
-f 2147/483/302 2159/522/302 2157/523/302
-f 2157/523/302 2148/484/302 2147/483/302
-f 2165/501/300 2151/524/300 2159/522/300
-f 2159/522/300 2147/483/300 2165/501/300
-f 2173/520/27 2135/525/27 2138/526/27
-f 2138/526/27 2174/527/27 2173/520/27
-f 2152/485/27 2175/528/27 2135/525/27
-f 2135/525/27 2173/520/27 2152/485/27
-f 2151/486/7 2176/486/7 2175/487/7
-f 2175/487/7 2152/487/7 2151/486/7
-f 2165/501/26 2136/501/26 2176/524/26
-f 2176/524/26 2151/524/26 2165/501/26
-f 2166/501/26 2137/501/26 2136/501/26
-f 2136/501/26 2165/501/26 2166/501/26
-f 2148/484/26 2143/484/26 2146/485/26
-f 2146/485/26 2149/485/26 2148/484/26
-f 2157/523/26 2177/523/26 2143/484/26
-f 2143/484/26 2148/484/26 2157/523/26
-f 2156/493/7 2178/529/7 2177/530/7
-f 2177/530/7 2157/494/7 2156/493/7
-f 2171/521/27 2144/531/27 2178/532/27
-f 2178/532/27 2156/521/27 2171/521/27
-f 2172/533/27 2145/531/27 2144/531/27
-f 2144/531/27 2171/521/27 2172/533/27
-f 2179/471/7 2180/474/7 2181/473/7
-f 2181/473/7 2182/472/7 2179/471/7
-f 2183/475/10 2184/478/10 2185/477/10
-f 2185/477/10 2186/476/10 2183/475/10
-f 2187/479/27 2188/479/27 2189/480/299
-f 2189/480/299 2190/480/299 2187/479/27
-f 2191/476/4 2192/482/4 2193/481/4
-f 2193/481/4 2194/475/4 2191/476/4
-f 2195/483/26 2196/483/26 2197/485/300
-f 2197/485/300 2198/484/300 2195/483/26
-f 2199/486/7 2200/488/7 2201/487/7
-f 2202/489/7 2187/492/7 2190/491/7
-f 2190/491/7 2203/490/7 2202/489/7
-f 2204/493/7 2205/495/7 2206/494/7
-f 2207/496/7 2206/494/7 2205/495/7
-f 2205/495/7 2208/497/7 2207/496/7
-f 2209/498/7 2182/472/7 2181/473/7
-f 2181/473/7 2210/499/7 2209/498/7
-f 2211/500/301 2212/500/301 2188/479/27
-f 2188/479/27 2187/479/27 2211/500/301
-f 2213/501/302 2214/501/302 2196/483/26
-f 2196/483/26 2195/483/26 2213/501/302
-f 2211/502/7 2187/492/7 2202/489/7
-f 2202/489/7 2215/503/7 2211/502/7
-f 2207/496/7 2208/497/7 2200/488/7
-f 2200/488/7 2199/486/7 2207/496/7
-f 2203/504/4 2216/505/4 2180/505/4
-f 2180/505/4 2179/504/4 2203/504/4
-f 2202/506/303 2203/504/303 2179/504/303
-f 2179/504/303 2182/506/303 2202/506/303
-f 2215/507/304 2202/506/304 2182/506/304
-f 2182/506/304 2209/507/304 2215/507/304
-f 2217/508/10 2215/507/10 2209/507/10
-f 2209/507/10 2210/508/10 2217/508/10
-f 2218/509/305 2217/512/305 2210/511/305
-f 2210/511/305 2181/510/305 2218/509/305
-f 2216/513/306 2218/509/306 2181/510/306
-f 2181/510/306 2180/514/306 2216/513/306
-f 2219/515/7 2211/502/7 2215/503/7
-f 2215/503/7 2217/516/7 2219/515/7
-f 2211/500/4 2219/517/4 2220/517/4
-f 2220/517/4 2212/500/4 2211/500/4
-f 2190/480/10 2189/480/10 2221/518/10
-f 2221/518/10 2222/518/10 2190/480/10
-f 2222/519/7 2216/474/7 2203/490/7
-f 2203/490/7 2190/491/7 2222/519/7
-f 2183/475/10 2186/476/10 2223/482/10
-f 2223/482/10 2224/481/10 2183/475/10
-f 2216/513/307 2222/520/307 2201/485/307
-f 2201/485/307 2200/513/307 2216/513/307
-f 2218/509/306 2216/513/306 2200/513/306
-f 2200/513/306 2208/509/306 2218/509/306
-f 2217/512/305 2218/509/305 2208/509/305
-f 2208/509/305 2205/512/305 2217/512/305
-f 2219/521/308 2217/512/308 2205/512/308
-f 2205/512/308 2204/521/308 2219/521/308
-f 2191/476/4 2194/475/4 2225/478/4
-f 2225/478/4 2226/477/4 2191/476/4
-f 2195/483/300 2198/484/300 2206/523/300
-f 2206/523/300 2207/522/300 2195/483/300
-f 2213/501/302 2195/483/302 2207/522/302
-f 2207/522/302 2199/524/302 2213/501/302
-f 2222/520/27 2221/527/27 2184/526/27
-f 2184/526/27 2183/525/27 2222/520/27
-f 2201/485/27 2222/520/27 2183/525/27
-f 2183/525/27 2224/528/27 2201/485/27
-f 2199/486/7 2201/487/7 2224/487/7
-f 2224/487/7 2223/486/7 2199/486/7
-f 2213/501/26 2199/524/26 2223/524/26
-f 2223/524/26 2186/501/26 2213/501/26
-f 2214/501/26 2213/501/26 2186/501/26
-f 2186/501/26 2185/501/26 2214/501/26
-f 2198/484/26 2197/485/26 2192/485/26
-f 2192/485/26 2191/484/26 2198/484/26
-f 2206/523/26 2198/484/26 2191/484/26
-f 2191/484/26 2226/523/26 2206/523/26
-f 2204/493/7 2206/494/7 2226/530/7
-f 2226/530/7 2225/529/7 2204/493/7
-f 2219/521/27 2204/521/27 2225/532/27
-f 2225/532/27 2194/531/27 2219/521/27
-f 2220/533/27 2219/521/27 2194/531/27
-f 2194/531/27 2193/531/27 2220/533/27
-f 2227/471/10 2228/472/10 2229/473/10
-f 2229/473/10 2230/474/10 2227/471/10
-f 2231/475/7 2232/476/7 2233/477/7
-f 2233/477/7 2234/478/7 2231/475/7
-f 2235/479/27 2236/480/290 2237/480/290
-f 2237/480/290 2238/479/27 2235/479/27
-f 2239/476/1 2240/475/1 2241/481/1
-f 2241/481/1 2242/482/1 2239/476/1
-f 2243/483/26 2244/484/291 2245/485/291
-f 2245/485/291 2246/483/26 2243/483/26
-f 2247/486/10 2248/487/10 2249/488/10
-f 2250/489/10 2251/490/10 2236/491/10
-f 2236/491/10 2235/492/10 2250/489/10
-f 2252/493/10 2253/494/10 2254/495/10
-f 2255/496/10 2256/497/10 2254/495/10
-f 2254/495/10 2253/494/10 2255/496/10
-f 2257/498/10 2258/499/10 2229/473/10
-f 2229/473/10 2228/472/10 2257/498/10
-f 2259/500/288 2235/479/27 2238/479/27
-f 2238/479/27 2260/500/288 2259/500/288
-f 2261/501/289 2243/483/26 2246/483/26
-f 2246/483/26 2262/501/289 2261/501/289
-f 2259/502/10 2263/503/10 2250/489/10
-f 2250/489/10 2235/492/10 2259/502/10
-f 2255/496/10 2247/486/10 2249/488/10
-f 2249/488/10 2256/497/10 2255/496/10
-f 2251/504/1 2227/504/1 2230/505/1
-f 2230/505/1 2264/505/1 2251/504/1
-f 2250/506/293 2228/506/293 2227/504/293
-f 2227/504/293 2251/504/293 2250/506/293
-f 2263/507/292 2257/507/292 2228/506/292
-f 2228/506/292 2250/506/292 2263/507/292
-f 2265/508/7 2258/508/7 2257/507/7
-f 2257/507/7 2263/507/7 2265/508/7
-f 2266/509/203 2229/510/203 2258/511/203
-f 2258/511/203 2265/512/203 2266/509/203
-f 2264/513/296 2230/514/296 2229/510/296
-f 2229/510/296 2266/509/296 2264/513/296
-f 2267/515/10 2265/516/10 2263/503/10
-f 2263/503/10 2259/502/10 2267/515/10
-f 2259/500/1 2260/500/1 2268/517/1
-f 2268/517/1 2267/517/1 2259/500/1
-f 2236/480/7 2269/518/7 2270/518/7
-f 2270/518/7 2237/480/7 2236/480/7
-f 2269/519/10 2236/491/10 2251/490/10
-f 2251/490/10 2264/474/10 2269/519/10
-f 2231/475/7 2271/481/7 2272/482/7
-f 2272/482/7 2232/476/7 2231/475/7
-f 2264/513/314 2249/513/314 2248/485/314
-f 2248/485/314 2269/520/314 2264/513/314
-f 2266/509/296 2256/509/296 2249/513/296
-f 2249/513/296 2264/513/296 2266/509/296
-f 2265/512/203 2254/512/203 2256/509/203
-f 2256/509/203 2266/509/203 2265/512/203
-f 2267/521/294 2252/521/294 2254/512/294
-f 2254/512/294 2265/512/294 2267/521/294
-f 2239/476/1 2273/477/1 2274/478/1
-f 2274/478/1 2240/475/1 2239/476/1
-f 2243/483/297 2255/522/297 2253/523/291
-f 2253/523/291 2244/484/291 2243/483/297
-f 2261/501/289 2247/524/289 2255/522/289
-f 2255/522/289 2243/483/289 2261/501/289
-f 2269/520/27 2231/525/27 2234/526/27
-f 2234/526/27 2270/527/27 2269/520/27
-f 2248/485/27 2271/528/27 2231/525/27
-f 2231/525/27 2269/520/27 2248/485/27
-f 2247/486/10 2272/486/10 2271/487/10
-f 2271/487/10 2248/487/10 2247/486/10
-f 2261/501/26 2232/501/26 2272/524/26
-f 2272/524/26 2247/524/26 2261/501/26
-f 2262/501/26 2233/501/26 2232/501/26
-f 2232/501/26 2261/501/26 2262/501/26
-f 2244/484/26 2239/484/26 2242/485/26
-f 2242/485/26 2245/485/26 2244/484/26
-f 2253/523/26 2273/523/26 2239/484/26
-f 2239/484/26 2244/484/26 2253/523/26
-f 2252/493/10 2274/529/10 2273/530/10
-f 2273/530/10 2253/494/10 2252/493/10
-f 2267/521/27 2240/531/27 2274/532/27
-f 2274/532/27 2252/521/27 2267/521/27
-f 2268/533/27 2241/531/27 2240/531/27
-f 2240/531/27 2267/521/27 2268/533/27
-f 2275/534/4 2276/535/4 2277/536/4
-f 2277/536/4 2278/537/4 2275/534/4
-f 2279/538/4 2280/539/4 2281/540/4
-f 2281/540/4 2282/541/4 2279/538/4
-f 2283/542/4 2284/543/4 2276/535/4
-f 2276/535/4 2275/534/4 2283/542/4
-f 2280/539/4 2278/537/4 2277/536/4
-f 2277/536/4 2281/540/4 2280/539/4
-f 2285/544/315 2286/545/315 2287/546/316
-f 2287/546/316 2288/547/316 2285/544/315
-f 2286/548/4 2289/549/4 2290/550/4
-f 2290/550/4 2287/551/4 2286/548/4
-f 2289/552/317 2291/553/317 2292/554/318
-f 2292/554/318 2290/555/318 2289/552/317
-f 2288/547/316 2287/546/316 2293/556/319
-f 2293/556/319 2294/557/319 2288/547/316
-f 2287/551/4 2290/550/4 2295/558/4
-f 2295/558/4 2293/559/4 2287/551/4
-f 2290/555/318 2292/554/318 2296/560/320
-f 2296/560/320 2295/561/320 2290/555/318
-f 2294/557/319 2293/556/319 2297/562/27
-f 2297/562/27 2298/563/27 2294/557/319
-f 2293/559/4 2295/558/4 2299/564/4
-f 2299/564/4 2297/565/4 2293/559/4
-f 2295/561/320 2296/560/320 2300/566/26
-f 2300/566/26 2299/567/26 2295/561/320
-f 2298/563/27 2297/562/27 2301/556/321
-f 2301/556/321 2302/557/321 2298/563/27
-f 2297/565/4 2299/564/4 2303/568/4
-f 2303/568/4 2301/569/4 2297/565/4
-f 2299/567/26 2300/566/26 2304/560/322
-f 2304/560/322 2303/561/322 2299/567/26
-f 2302/557/321 2301/556/321 2305/546/323
-f 2305/546/323 2306/547/323 2302/557/321
-f 2301/569/4 2303/568/4 2307/570/4
-f 2307/570/4 2305/571/4 2301/569/4
-f 2303/561/322 2304/560/322 2308/554/324
-f 2308/554/324 2307/555/324 2303/561/322
-f 2306/547/323 2305/546/323 2309/545/325
-f 2309/545/325 2310/544/325 2306/547/323
-f 2305/571/4 2307/570/4 2311/572/4
-f 2311/572/4 2309/573/4 2305/571/4
-f 2307/555/324 2308/554/324 2312/553/326
-f 2312/553/326 2311/552/326 2307/555/324
-f 2313/574/327 2314/575/327 2315/576/327
-f 2315/576/327 2316/577/327 2313/574/327
-f 2317/578/328 2313/579/328 2316/580/328
-f 2316/580/328 2318/581/328 2317/578/328
-f 2319/579/329 2317/578/329 2318/581/329
-f 2318/581/329 2320/580/329 2319/579/329
-f 2319/578/330 2320/581/330 2315/580/330
-f 2315/580/330 2314/579/330 2319/578/330
-f 2321/582/331 2316/577/331 2315/576/331
-f 2315/576/331 2322/583/332 2321/582/331
-f 2318/581/333 2316/580/333 2321/584/333
-f 2321/584/333 2323/585/333 2318/581/333
-f 2324/584/334 2320/580/334 2318/581/334
-f 2318/581/334 2323/585/334 2324/584/334
-f 2322/584/335 2315/580/335 2320/581/335
-f 2320/581/335 2324/585/335 2322/584/335
-f 2325/586/336 2326/587/26 2327/588/26
-f 2327/588/26 2328/589/336 2325/586/336
-f 2328/590/1 2327/591/1 2329/592/1
-f 2329/592/1 2330/593/1 2328/590/1
-f 2330/589/337 2329/588/27 2331/587/27
-f 2331/587/27 2332/586/337 2330/589/337
-f 2327/588/26 2326/587/26 2333/594/338
-f 2333/594/338 2334/595/338 2327/588/26
-f 2329/592/1 2327/591/1 2334/596/1
-f 2334/596/1 2335/597/1 2329/592/1
-f 2331/587/27 2329/588/27 2335/595/339
-f 2335/595/339 2336/594/339 2331/587/27
-f 2337/586/340 2338/587/26 2339/588/26
-f 2339/588/26 2340/589/340 2337/586/340
-f 2340/590/4 2339/591/4 2341/592/4
-f 2341/592/4 2342/593/4 2340/590/4
-f 2342/589/341 2341/588/27 2343/587/27
-f 2343/587/27 2344/586/342 2342/589/341
-f 2339/588/26 2338/587/26 2345/594/343
-f 2345/594/343 2346/595/343 2339/588/26
-f 2341/592/4 2339/591/4 2346/596/4
-f 2346/596/4 2347/597/4 2341/592/4
-f 2343/587/27 2341/588/27 2347/595/344
-f 2347/595/344 2348/594/344 2343/587/27
-f 2347/598/1 2346/596/1 2345/599/1
-f 2345/599/1 2348/600/1 2347/598/1
-f 2349/574/345 2350/577/345 2351/576/345
-f 2351/576/345 2352/575/345 2349/574/345
-f 2353/578/346 2354/581/346 2350/580/346
-f 2350/580/346 2349/579/346 2353/578/346
-f 2355/579/347 2356/580/347 2354/581/347
-f 2354/581/347 2353/578/347 2355/579/347
-f 2355/578/348 2352/579/348 2351/580/348
-f 2351/580/348 2356/581/348 2355/578/348
-f 2357/582/175 2358/583/349 2351/576/349
-f 2351/576/349 2350/577/349 2357/582/175
-f 2354/581/350 2359/585/350 2357/584/350
-f 2357/584/350 2350/580/350 2354/581/350
-f 2360/584/351 2359/585/351 2354/581/351
-f 2354/581/351 2356/580/351 2360/584/351
-f 2358/584/352 2360/585/352 2356/581/353
-f 2356/581/353 2351/580/352 2358/584/352
-f 2361/586/340 2362/589/340 2363/588/26
-f 2363/588/26 2364/587/26 2361/586/340
-f 2362/590/10 2365/593/10 2366/592/10
-f 2366/592/10 2363/591/10 2362/590/10
-f 2365/589/341 2367/586/342 2368/587/27
-f 2368/587/27 2366/588/27 2365/589/341
-f 2363/588/26 2369/595/343 2370/594/343
-f 2370/594/343 2364/587/26 2363/588/26
-f 2366/592/10 2371/597/10 2369/596/10
-f 2369/596/10 2363/591/10 2366/592/10
-f 2368/587/27 2372/594/344 2371/595/344
-f 2371/595/344 2366/588/27 2368/587/27
-f 2370/599/1 2369/596/1 2371/598/1
-f 2371/598/1 2372/600/1 2370/599/1
-f 2373/586/354 2374/589/340 2375/588/26
-f 2375/588/26 2376/587/26 2373/586/354
-f 2374/590/10 2377/593/10 2378/592/10
-f 2378/592/10 2375/591/10 2374/590/10
-f 2377/589/342 2379/586/341 2380/587/27
-f 2380/587/27 2378/588/27 2377/589/342
-f 2375/588/26 2381/595/355 2382/594/355
-f 2382/594/355 2376/587/26 2375/588/26
-f 2378/592/10 2383/597/10 2381/596/10
-f 2381/596/10 2375/591/10 2378/592/10
-f 2380/587/27 2384/594/356 2383/595/344
-f 2383/595/344 2378/588/27 2380/587/27
-f 2385/601/7 2386/602/7 2387/603/7
-f 2387/603/7 691/604/7 2385/601/7
-f 2388/605/4 2389/606/4 2390/607/4
-f 2390/607/4 690/608/4 2388/605/4
-f 2391/601/1 2392/602/1 2393/609/1
-f 2393/609/1 692/610/1 2391/601/1
-f 2394/611/10 2395/612/10 2396/613/10
-f 2396/613/10 693/614/10 2394/611/10
-f 690/610/7 2390/609/7 2386/602/7
-f 2386/602/7 2385/601/7 690/610/7
-f 693/604/1 2396/603/1 2392/602/1
-f 2392/602/1 2391/601/1 693/604/1
-f 692/615/4 2393/616/4 2389/606/4
-f 2389/606/4 2388/605/4 692/615/4
-f 691/617/10 2387/618/10 2395/612/10
-f 2395/612/10 2394/611/10 691/617/10
-f 2397/619/357 2398/620/358 2399/621/358
-f 2399/621/358 2400/622/357 2397/619/357
-f 2398/620/358 2401/623/359 2402/624/359
-f 2402/624/359 2399/621/358 2398/620/358
-f 2403/625/360 2404/626/10 2398/627/10
-f 2398/627/10 2397/628/360 2403/625/360
-f 2398/627/10 2404/626/10 2405/629/361
-f 2405/629/361 2401/630/361 2398/627/10
-f 2403/619/315 2406/622/315 2407/621/362
-f 2407/621/362 2404/620/362 2403/619/315
-f 2404/620/362 2407/621/362 2408/624/363
-f 2408/624/363 2405/623/363 2404/620/362
-f 2406/631/364 2400/632/364 2399/633/365
-f 2399/633/365 2407/634/365 2406/631/364
-f 2399/633/365 2402/635/366 2408/636/366
-f 2408/636/366 2407/634/365 2399/633/365
-f 2409/637/7 2410/638/7 2411/639/7
-f 2411/639/7 2412/640/7 2409/637/7
-f 2413/640/4 2412/641/4 2411/642/4
-f 2411/642/4 2414/643/4 2413/640/4
-f 2413/637/1 2414/638/1 2415/639/1
-f 2415/639/1 2416/640/1 2413/637/1
-f 2417/644/1 2418/645/1 2419/646/1
-f 2419/646/1 2420/647/1 2417/644/1
-f 2421/647/7 2422/644/7 2423/645/7
-f 2423/645/7 2424/646/7 2421/647/7
-f 2418/648/367 2417/649/367 2425/650/367
-f 2425/650/367 2426/651/367 2418/648/367
-f 2425/652/4 2417/567/4 2420/653/4
-f 2420/653/4 2427/654/4 2425/652/4
-f 2420/648/368 2419/649/368 2428/650/368
-f 2428/650/368 2427/651/368 2420/648/368
-f 2429/637/7 2430/638/7 2431/639/7
-f 2431/639/7 2432/640/7 2429/637/7
-f 2432/640/4 2431/643/4 2433/642/4
-f 2433/642/4 2434/641/4 2432/640/4
-f 2434/637/1 2433/638/1 2435/639/1
-f 2435/639/1 2436/640/1 2434/637/1
-f 2437/655/369 2423/656/369 2422/657/369
-f 2422/657/369 2438/658/369 2437/655/369
-f 2437/659/4 2439/660/4 2424/661/4
-f 2424/661/4 2423/662/4 2437/659/4
-f 2440/655/370 2421/656/370 2424/657/370
-f 2424/657/370 2439/658/370 2440/655/370
-f 2441/663/298 2442/664/298 2426/651/298
-f 2426/651/298 2425/650/298 2441/663/298
-f 2427/654/4 2443/665/4 2441/666/4
-f 2441/666/4 2425/652/4 2427/654/4
-f 2444/663/371 2443/664/371 2427/651/371
-f 2427/651/371 2428/650/371 2444/663/371
-f 2437/655/297 2438/658/297 2442/664/297
-f 2442/664/297 2441/663/297 2437/655/297
-f 2439/660/4 2437/659/4 2441/666/4
-f 2441/666/4 2443/665/4 2439/660/4
-f 2440/655/372 2439/658/372 2443/664/372
-f 2443/664/372 2444/663/372 2440/655/372
-f 2445/667/373 2446/668/373 2447/669/373
-f 2447/669/373 2448/670/373 2445/667/373
-f 2449/671/374 2450/672/374 2446/668/374
-f 2446/668/374 2445/667/374 2449/671/374
-f 2451/673/7 2452/674/7 2453/675/7
-f 2453/675/7 2454/676/7 2451/673/7
-f 2451/673/7 2450/673/7 2455/673/7
-f 2455/673/7 2452/674/7 2451/673/7
-f 2451/673/7 2447/677/7 2446/677/7
-f 2446/677/7 2450/673/7 2451/673/7
-f 2456/678/7 2447/677/7 2451/673/7
-f 2451/673/7 2454/676/7 2456/678/7
-f 2453/679/27 2452/303/27 2457/680/27
-f 2457/680/27 2458/681/27 2453/679/27
-f 2452/682/375 2455/672/375 2459/671/375
-f 2459/671/375 2457/683/375 2452/682/375
-f 2455/672/376 2450/672/377 2449/671/377
-f 2449/671/377 2459/671/376 2455/672/376
-f 2460/684/373 2461/685/373 2445/667/373
-f 2445/667/373 2448/670/373 2460/684/373
-f 2461/685/374 2462/686/374 2449/671/374
-f 2449/671/374 2445/667/374 2461/685/374
-f 2463/678/1 2464/677/1 2465/673/1
-f 2465/673/1 2466/676/1 2463/678/1
-f 2465/673/1 2464/677/1 2467/677/1
-f 2467/677/1 2462/673/1 2465/673/1
-f 2465/673/1 2462/673/1 2461/673/1
-f 2461/673/1 2460/674/1 2465/673/1
-f 2465/673/1 2460/674/1 2468/675/1
-f 2468/675/1 2466/676/1 2465/673/1
-f 2457/680/27 2464/687/27 2463/688/27
-f 2463/688/27 2458/681/27 2457/680/27
-f 2459/671/375 2467/686/375 2464/678/375
-f 2464/678/375 2457/683/375 2459/671/375
-f 2449/671/377 2462/686/377 2467/686/376
-f 2467/686/376 2459/671/376 2449/671/377
-f 2469/689/4 2470/690/4 2471/691/4
-f 2471/691/4 2472/692/4 2469/689/4
-f 2473/693/4 2472/692/4 2471/691/4
-f 2471/691/4 2474/694/4 2473/693/4
-f 2475/619/357 2476/620/358 2477/621/358
-f 2477/621/358 2478/622/357 2475/619/357
-f 2476/620/358 2479/623/359 2480/624/359
-f 2480/624/359 2477/621/358 2476/620/358
-f 2481/625/360 2482/626/10 2476/627/10
-f 2476/627/10 2475/628/360 2481/625/360
-f 2476/627/10 2482/626/10 2483/629/361
-f 2483/629/361 2479/630/361 2476/627/10
-f 2481/619/315 2484/622/315 2485/621/362
-f 2485/621/362 2482/620/362 2481/619/315
-f 2482/620/362 2485/621/362 2486/624/363
-f 2486/624/363 2483/623/363 2482/620/362
-f 2484/631/364 2478/632/364 2477/633/365
-f 2477/633/365 2485/634/365 2484/631/364
-f 2477/633/365 2480/635/366 2486/636/366
-f 2486/636/366 2485/634/365 2477/633/365
-f 2487/619/357 2488/622/357 2489/621/378
-f 2489/621/378 2490/620/378 2487/619/357
-f 2490/620/378 2489/621/378 2491/624/379
-f 2491/624/379 2492/623/379 2490/620/378
-f 2493/625/365 2487/628/365 2490/627/4
-f 2490/627/4 2494/626/4 2493/625/365
-f 2490/627/4 2492/630/380 2495/629/380
-f 2495/629/380 2494/626/4 2490/627/4
-f 2493/619/315 2494/620/381 2496/621/381
-f 2496/621/381 2497/622/315 2493/619/315
-f 2494/620/381 2495/623/382 2498/624/382
-f 2498/624/382 2496/621/381 2494/620/381
-f 2497/631/383 2496/634/360 2489/633/360
-f 2489/633/360 2488/632/383 2497/631/383
-f 2489/633/360 2496/634/360 2498/636/384
-f 2498/636/384 2491/635/384 2489/633/360
-f 2499/619/357 2500/622/357 2501/621/378
-f 2501/621/378 2502/620/378 2499/619/357
-f 2502/620/378 2501/621/378 2503/624/379
-f 2503/624/379 2504/623/379 2502/620/378
-f 2505/625/365 2499/628/365 2502/627/4
-f 2502/627/4 2506/626/4 2505/625/365
-f 2502/627/4 2504/630/380 2507/629/380
-f 2507/629/380 2506/626/4 2502/627/4
-f 2505/619/315 2506/620/381 2508/621/381
-f 2508/621/381 2509/622/315 2505/619/315
-f 2506/620/381 2507/623/382 2510/624/382
-f 2510/624/382 2508/621/381 2506/620/381
-f 2509/631/383 2508/634/360 2501/633/360
-f 2501/633/360 2500/632/383 2509/631/383
-f 2501/633/360 2508/634/360 2510/636/384
-f 2510/636/384 2503/635/384 2501/633/360
-f 2511/586/336 2512/589/336 2513/588/26
-f 2513/588/26 2514/587/26 2511/586/336
-f 2512/590/7 2515/593/7 2516/592/7
-f 2516/592/7 2513/591/7 2512/590/7
-f 2515/589/337 2517/586/337 2518/587/27
-f 2518/587/27 2516/588/27 2515/589/337
-f 2513/588/26 2519/595/338 2520/594/338
-f 2520/594/338 2514/587/26 2513/588/26
-f 2516/592/7 2521/597/7 2519/596/7
-f 2519/596/7 2513/591/7 2516/592/7
-f 2518/587/27 2522/594/339 2521/595/339
-f 2521/595/339 2516/588/27 2518/587/27
-f 2523/451/27 2524/452/27 2525/453/27
-f 2525/453/27 2526/454/27 2523/451/27
-f 2527/455/4 2528/456/4 2524/457/4
-f 2524/457/4 2523/458/4 2527/455/4
-f 2528/459/1 2529/460/1 2525/461/1
-f 2525/461/1 2524/462/1 2528/459/1
-f 2529/456/10 2530/455/10 2526/458/10
-f 2526/458/10 2525/457/10 2529/456/10
-f 2530/460/7 2527/459/7 2523/462/7
-f 2523/462/7 2526/461/7 2530/460/7
-f 2531/451/27 2532/452/27 2533/453/27
-f 2533/453/27 2534/454/27 2531/451/27
-f 2535/455/7 2536/456/7 2532/457/7
-f 2532/457/7 2531/458/7 2535/455/7
-f 2536/459/4 2537/460/4 2533/461/4
-f 2533/461/4 2532/462/4 2536/459/4
-f 2537/456/1 2538/455/1 2534/458/1
-f 2534/458/1 2533/457/1 2537/456/1
-f 2538/460/10 2535/459/10 2531/462/10
-f 2531/462/10 2534/461/10 2538/460/10
-f 2539/451/27 2540/452/27 2541/453/27
-f 2541/453/27 2542/454/27 2539/451/27
-f 2543/455/7 2544/456/7 2540/457/7
-f 2540/457/7 2539/458/7 2543/455/7
-f 2544/459/4 2545/460/4 2541/461/4
-f 2541/461/4 2540/462/4 2544/459/4
-f 2545/456/1 2546/455/1 2542/458/1
-f 2542/458/1 2541/457/1 2545/456/1
-f 2546/460/10 2543/459/10 2539/462/10
-f 2539/462/10 2542/461/10 2546/460/10
-f 2547/3/12 2548/2/12 2549/1/1
-f 2549/1/1 2550/4/1 2547/3/12
-f 2551/6/11 2552/5/11 2548/2/12
-f 2548/2/12 2547/3/12 2551/6/11
-f 2553/8/10 2554/7/10 2552/5/11
-f 2552/5/11 2551/6/11 2553/8/10
-f 2555/11/9 2556/10/9 2554/9/10
-f 2554/9/10 2553/12/10 2555/11/9
-f 2557/14/8 2558/13/8 2556/10/9
-f 2556/10/9 2555/11/9 2557/14/8
-f 2559/16/7 2560/15/7 2558/13/8
-f 2558/13/8 2557/14/8 2559/16/7
-f 2561/18/6 2562/17/6 2560/15/7
-f 2560/15/7 2559/16/7 2561/18/6
-f 2563/20/5 2564/19/5 2562/17/6
-f 2562/17/6 2561/18/6 2563/20/5
-f 2565/22/4 2566/21/4 2564/19/5
-f 2564/19/5 2563/20/5 2565/22/4
-f 2567/24/3 2568/23/3 2566/21/4
-f 2566/21/4 2565/22/4 2567/24/3
-f 2569/26/2 2570/25/2 2568/23/3
-f 2568/23/3 2567/24/3 2569/26/2
-f 2550/4/1 2549/1/1 2570/25/2
-f 2570/25/2 2569/26/2 2550/4/1
-f 2571/27/24 2572/30/24 2573/29/24
-f 2573/29/24 2574/28/24 2571/27/24
-f 2575/31/23 2576/32/23 2572/30/23
-f 2572/30/23 2571/27/23 2575/31/23
-f 2577/33/22 2578/34/22 2576/32/22
-f 2576/32/22 2575/31/22 2577/33/22
-f 2579/35/21 2580/38/21 2578/37/21
-f 2578/37/21 2577/36/21 2579/35/21
-f 2581/39/20 2582/40/20 2580/38/20
-f 2580/38/20 2579/35/20 2581/39/20
-f 2583/41/19 2584/42/19 2582/40/19
-f 2582/40/19 2581/39/19 2583/41/19
-f 2585/43/18 2586/44/18 2584/42/18
-f 2584/42/18 2583/41/18 2585/43/18
-f 2587/45/17 2588/46/17 2586/44/17
-f 2586/44/17 2585/43/17 2587/45/17
-f 2589/47/16 2590/48/16 2588/46/16
-f 2588/46/16 2587/45/16 2589/47/16
-f 2591/49/15 2592/50/15 2590/48/15
-f 2590/48/15 2589/47/15 2591/49/15
-f 2593/51/14 2594/52/14 2592/50/14
-f 2592/50/14 2591/49/14 2593/51/14
-f 2574/28/13 2573/29/13 2594/52/192
-f 2594/52/192 2593/51/192 2574/28/13
-f 2548/53/26 2571/53/26 2574/54/26
-f 2574/54/26 2549/54/26 2548/53/26
-f 2549/54/26 2574/54/26 2593/55/26
-f 2593/55/26 2570/55/26 2549/54/26
-f 2570/55/26 2593/55/26 2591/56/26
-f 2591/56/26 2568/56/26 2570/55/26
-f 2568/56/26 2591/56/26 2589/57/26
-f 2589/57/26 2566/57/26 2568/56/26
-f 2566/57/26 2589/57/26 2587/59/26
-f 2587/59/26 2564/58/26 2566/57/26
-f 2564/58/26 2587/59/26 2585/61/26
-f 2585/61/26 2562/60/26 2564/58/26
-f 2562/60/26 2585/61/26 2583/62/26
-f 2583/62/26 2560/62/26 2562/60/26
-f 2560/62/26 2583/62/26 2581/64/26
-f 2581/64/26 2558/63/26 2560/62/26
-f 2558/63/26 2581/64/26 2579/66/26
-f 2579/66/26 2556/65/26 2558/63/26
-f 2556/65/26 2579/66/26 2577/67/26
-f 2577/67/26 2554/67/26 2556/65/26
-f 2554/67/26 2577/67/26 2575/68/26
-f 2575/68/26 2552/68/26 2554/67/26
-f 2552/68/26 2575/68/26 2571/53/26
-f 2571/53/26 2548/53/26 2552/68/26
-f 2595/54/27 2573/54/27 2572/53/27
-f 2572/53/27 2596/53/27 2595/54/27
-f 2596/53/27 2572/53/27 2576/68/27
-f 2576/68/27 2597/68/27 2596/53/27
-f 2597/68/27 2576/68/27 2578/67/27
-f 2578/67/27 2598/67/27 2597/68/27
-f 2598/67/27 2578/67/27 2580/66/27
-f 2580/66/27 2599/65/27 2598/67/27
-f 2599/65/27 2580/66/27 2582/64/27
-f 2582/64/27 2600/63/27 2599/65/27
-f 2600/63/27 2582/64/27 2584/62/27
-f 2584/62/27 2601/62/27 2600/63/27
-f 2601/62/27 2584/62/27 2586/61/27
-f 2586/61/27 2602/60/27 2601/62/27
-f 2602/60/27 2586/61/27 2588/59/27
-f 2588/59/27 2603/58/27 2602/60/27
-f 2603/58/27 2588/59/27 2590/57/27
-f 2590/57/27 2604/57/27 2603/58/27
-f 2604/57/27 2590/57/27 2592/56/27
-f 2592/56/27 2605/56/27 2604/57/27
-f 2605/56/27 2592/56/27 2594/55/27
-f 2594/55/27 2606/55/27 2605/56/27
-f 2606/55/27 2594/55/27 2573/54/27
-f 2573/54/27 2595/54/27 2606/55/27
-f 2607/71/12 2608/70/1 2595/69/1
-f 2595/69/1 2596/72/12 2607/71/12
-f 2609/73/23 2607/71/12 2596/72/12
-f 2596/72/12 2597/74/23 2609/73/23
-f 2610/75/22 2609/73/22 2597/74/22
-f 2597/74/22 2598/76/22 2610/75/22
-f 2611/77/9 2610/75/21 2598/76/21
-f 2598/76/21 2599/78/9 2611/77/9
-f 2612/79/8 2611/77/9 2599/78/9
-f 2599/78/9 2600/80/8 2612/79/8
-f 2613/83/7 2612/82/8 2600/81/8
-f 2600/81/8 2601/84/7 2613/83/7
-f 2614/85/6 2613/83/7 2601/84/7
-f 2601/84/7 2602/86/6 2614/85/6
-f 2615/87/5 2614/85/6 2602/86/6
-f 2602/86/6 2603/88/5 2615/87/5
-f 2616/89/4 2615/87/5 2603/88/5
-f 2603/88/5 2604/90/4 2616/89/4
-f 2617/91/3 2616/89/4 2604/90/4
-f 2604/90/4 2605/92/3 2617/91/3
-f 2618/93/2 2617/91/3 2605/92/3
-f 2605/92/3 2606/94/2 2618/93/2
-f 2608/70/1 2618/93/2 2606/94/2
-f 2606/94/2 2595/69/1 2608/70/1
-f 2619/95/26 2620/95/26 2621/96/26
-f 2621/96/26 2622/96/26 2619/95/26
-f 2623/97/26 2624/97/26 2620/95/26
-f 2620/95/26 2619/95/26 2623/97/26
-f 2625/67/26 2626/98/26 2624/97/26
-f 2624/97/26 2623/97/26 2625/67/26
-f 2627/99/26 2628/99/26 2626/98/26
-f 2626/98/26 2625/67/26 2627/99/26
-f 2629/100/26 2630/100/26 2628/99/26
-f 2628/99/26 2627/99/26 2629/100/26
-f 2631/101/26 2632/101/26 2630/100/26
-f 2630/100/26 2629/100/26 2631/101/26
-f 2633/61/26 2634/61/26 2632/101/26
-f 2632/101/26 2631/101/26 2633/61/26
-f 2635/59/26 2636/102/26 2634/61/26
-f 2634/61/26 2633/61/26 2635/59/26
-f 2637/103/26 2638/103/26 2636/102/26
-f 2636/102/26 2635/59/26 2637/103/26
-f 2639/104/26 2640/105/26 2638/103/26
-f 2638/103/26 2637/103/26 2639/104/26
-f 2641/106/26 2642/106/26 2640/105/26
-f 2640/105/26 2639/104/26 2641/106/26
-f 2622/96/26 2621/96/26 2642/106/26
-f 2642/106/26 2641/106/26 2622/96/26
-f 2620/107/39 2643/110/39 2644/109/39
-f 2644/109/39 2621/108/39 2620/107/39
-f 2624/111/38 2645/112/38 2643/110/38
-f 2643/110/38 2620/107/38 2624/111/38
-f 2626/113/37 2646/114/37 2645/112/37
-f 2645/112/37 2624/111/37 2626/113/37
-f 2628/115/36 2647/116/36 2646/114/36
-f 2646/114/36 2626/113/36 2628/115/36
-f 2630/117/35 2648/118/35 2647/116/35
-f 2647/116/35 2628/115/35 2630/117/35
-f 2632/119/34 2649/120/34 2648/118/34
-f 2648/118/34 2630/117/34 2632/119/34
-f 2634/121/33 2650/122/33 2649/120/33
-f 2649/120/33 2632/119/33 2634/121/33
-f 2636/123/32 2651/124/32 2650/122/32
-f 2650/122/32 2634/121/32 2636/123/32
-f 2638/125/31 2652/126/31 2651/124/31
-f 2651/124/31 2636/123/31 2638/125/31
-f 2640/127/30 2653/130/30 2652/129/30
-f 2652/129/30 2638/128/30 2640/127/30
-f 2642/131/29 2654/132/29 2653/130/29
-f 2653/130/29 2640/127/29 2642/131/29
-f 2621/108/28 2644/109/28 2654/132/28
-f 2654/132/28 2642/131/28 2621/108/28
-f 2643/110/54 2655/134/54 2656/133/54
-f 2656/133/54 2644/109/54 2643/110/54
-f 2645/112/53 2657/135/53 2655/134/53
-f 2655/134/53 2643/110/53 2645/112/53
-f 2646/114/51 2658/136/52 2657/135/51
-f 2657/135/51 2645/112/51 2646/114/51
-f 2647/116/50 2659/137/50 2658/136/50
-f 2658/136/50 2646/114/50 2647/116/50
-f 2648/118/49 2660/138/49 2659/137/49
-f 2659/137/49 2647/116/49 2648/118/49
-f 2649/120/48 2661/139/48 2660/138/48
-f 2660/138/48 2648/118/48 2649/120/48
-f 2650/122/385 2662/140/46 2661/139/46
-f 2661/139/46 2649/120/46 2650/122/385
-f 2651/124/45 2663/141/45 2662/140/45
-f 2662/140/45 2650/122/45 2651/124/45
-f 2652/126/44 2664/142/44 2663/141/44
-f 2663/141/44 2651/124/44 2652/126/44
-f 2653/130/42 2665/144/42 2664/143/43
-f 2664/143/43 2652/129/42 2653/130/42
-f 2654/132/41 2666/145/41 2665/144/41
-f 2665/144/41 2653/130/41 2654/132/41
-f 2644/109/40 2656/133/40 2666/145/40
-f 2666/145/40 2654/132/386 2644/109/40
-f 2607/148/71 2667/147/71 2668/146/71
-f 2668/146/71 2608/149/71 2607/148/71
-f 2609/151/69 2669/150/70 2667/147/70
-f 2667/147/70 2607/148/69 2609/151/69
-f 2610/154/68 2670/153/68 2669/152/68
-f 2669/152/68 2609/155/68 2610/154/68
-f 2611/156/67 2671/142/67 2670/153/67
-f 2670/153/67 2610/154/67 2611/156/67
-f 2612/158/65 2672/157/66 2671/142/66
-f 2671/142/66 2611/156/65 2612/158/65
-f 2613/160/64 2673/159/64 2672/157/64
-f 2672/157/64 2612/158/64 2613/160/64
-f 2614/162/63 2674/161/63 2673/159/63
-f 2673/159/63 2613/160/63 2614/162/63
-f 2615/164/62 2675/163/61 2674/161/61
-f 2674/161/61 2614/162/62 2615/164/62
-f 2616/166/60 2676/165/60 2675/163/60
-f 2675/163/60 2615/164/60 2616/166/60
-f 2617/168/59 2677/167/59 2676/165/59
-f 2676/165/59 2616/166/59 2617/168/59
-f 2618/170/58 2678/169/57 2677/167/57
-f 2677/167/57 2617/168/57 2618/170/58
-f 2608/149/56 2668/146/56 2678/169/56
-f 2678/169/56 2618/170/56 2608/149/56
-f 2667/173/12 2619/172/12 2622/171/1
-f 2622/171/1 2668/174/1 2667/173/12
-f 2669/176/11 2623/175/11 2619/172/12
-f 2619/172/12 2667/173/12 2669/176/11
-f 2670/179/10 2625/178/10 2623/177/11
-f 2623/177/11 2669/180/11 2670/179/10
-f 2671/181/9 2627/86/9 2625/178/10
-f 2625/178/10 2670/179/10 2671/181/9
-f 2672/183/8 2629/182/8 2627/86/9
-f 2627/86/9 2671/181/9 2672/183/8
-f 2673/185/7 2631/184/7 2629/182/8
-f 2629/182/8 2672/183/8 2673/185/7
-f 2674/187/6 2633/186/6 2631/184/7
-f 2631/184/7 2673/185/7 2674/187/6
-f 2675/189/5 2635/188/5 2633/186/6
-f 2633/186/6 2674/187/6 2675/189/5
-f 2676/191/4 2637/190/4 2635/188/5
-f 2635/188/5 2675/189/5 2676/191/4
-f 2677/192/3 2639/76/3 2637/190/4
-f 2637/190/4 2676/191/4 2677/192/3
-f 2678/194/2 2641/193/2 2639/76/3
-f 2639/76/3 2677/192/3 2678/194/2
-f 2668/174/1 2622/171/1 2641/193/2
-f 2641/193/2 2678/194/2 2668/174/1
-f 2679/195/387 2680/198/387 2681/197/387
-f 2681/197/387 2682/196/387 2679/195/387
-f 2683/199/388 2684/202/388 2685/201/388
-f 2685/201/388 2686/200/388 2683/199/388
-f 2687/203/389 2688/206/389 2689/205/389
-f 2689/205/389 2690/204/389 2687/203/389
-f 2691/202/390 2692/199/390 2693/200/390
-f 2693/200/390 2694/201/390 2691/202/390
-f 2695/207/391 2696/209/391 2697/208/391
-f 2697/208/391 2698/207/391 2695/207/391
-f 2699/209/392 2700/211/392 2701/210/392
-f 2690/212/393 2689/214/393 2702/213/393
-f 2702/213/393 2703/196/393 2690/212/393
-f 2704/210/394 2705/211/394 2706/209/394
-f 2707/215/395 2706/209/395 2705/211/395
-f 2705/211/395 2708/216/395 2707/215/395
-f 2709/217/396 2682/196/396 2681/197/396
-f 2681/197/396 2710/218/396 2709/217/396
-f 2711/219/397 2687/203/397 2690/204/397
-f 2690/204/397 2712/220/397 2711/219/397
-f 2713/209/398 2695/207/398 2698/207/398
-f 2698/207/398 2714/208/398 2713/209/398
-f 2690/212/399 2703/196/399 2715/213/399
-f 2715/213/399 2712/214/399 2690/212/399
-f 2707/215/400 2708/216/400 2700/211/400
-f 2700/211/400 2699/209/400 2707/215/400
-f 2716/221/390 2680/221/390 2679/222/390
-f 2679/222/390 2702/222/390 2716/221/390
-f 2702/222/401 2679/222/401 2682/203/401
-f 2682/203/401 2703/203/401 2702/222/401
-f 2703/203/402 2682/203/402 2709/206/402
-f 2709/206/402 2715/206/402 2703/203/402
-f 2715/206/388 2709/206/388 2710/223/388
-f 2710/223/388 2717/223/388 2715/206/388
-f 2717/224/403 2710/224/403 2681/226/403
-f 2681/226/403 2718/225/403 2717/224/403
-f 2718/225/404 2681/226/404 2680/224/404
-f 2680/224/404 2716/224/404 2718/225/404
-f 2712/214/394 2715/213/394 2717/228/394
-f 2717/228/394 2719/227/394 2712/214/394
-f 2719/229/390 2720/221/390 2711/219/390
-f 2711/219/390 2712/220/390 2719/229/390
-f 2688/206/388 2721/223/388 2722/230/388
-f 2722/230/388 2689/205/388 2688/206/388
-f 2722/227/392 2716/228/392 2702/213/392
-f 2702/213/392 2689/214/392 2722/227/392
-f 2685/201/388 2723/202/388 2724/199/388
-f 2724/199/388 2686/200/388 2685/201/388
-f 2722/231/405 2701/233/406 2700/232/405
-f 2700/232/405 2716/224/405 2722/231/405
-f 2716/224/404 2700/232/404 2708/234/404
-f 2708/234/404 2718/225/404 2716/224/404
-f 2718/225/403 2708/234/403 2705/232/403
-f 2705/232/403 2717/224/403 2718/225/403
-f 2717/224/407 2705/232/407 2704/233/407
-f 2704/233/407 2719/231/407 2717/224/407
-f 2693/200/390 2725/199/390 2726/202/390
-f 2726/202/390 2694/201/390 2693/200/390
-f 2697/208/391 2706/236/391 2707/235/391
-f 2707/235/391 2698/207/391 2697/208/391
-f 2698/207/398 2707/235/398 2699/236/398
-f 2699/236/398 2714/208/398 2698/207/398
-f 2721/236/27 2683/238/27 2686/237/27
-f 2686/237/27 2722/231/27 2721/236/27
-f 2722/231/27 2686/237/27 2724/239/27
-f 2724/239/27 2701/233/27 2722/231/27
-f 2701/210/408 2724/241/409 2723/240/409
-f 2723/240/409 2699/209/408 2701/210/408
-f 2699/236/26 2723/238/26 2685/242/26
-f 2685/242/26 2714/208/26 2699/236/26
-f 2714/208/26 2685/242/26 2684/240/26
-f 2684/240/26 2713/209/26 2714/208/26
-f 2696/209/26 2691/240/26 2694/242/26
-f 2694/242/26 2697/208/26 2696/209/26
-f 2697/208/26 2694/242/26 2726/238/26
-f 2726/238/26 2706/236/26 2697/208/26
-f 2706/209/410 2726/240/410 2725/241/410
-f 2725/241/410 2704/210/410 2706/209/410
-f 2704/233/27 2725/239/27 2693/237/27
-f 2693/237/27 2719/231/27 2704/233/27
-f 2719/231/27 2693/237/27 2692/238/27
-f 2692/238/27 2720/236/27 2719/231/27
-f 2727/195/411 2728/198/411 2729/197/411
-f 2729/197/411 2730/196/411 2727/195/411
-f 2731/199/412 2732/202/412 2733/201/413
-f 2733/201/413 2734/200/413 2731/199/412
-f 2735/203/414 2736/206/414 2737/205/414
-f 2737/205/414 2738/204/414 2735/203/414
-f 2739/202/415 2740/199/415 2741/200/416
-f 2741/200/416 2742/201/416 2739/202/415
-f 2743/207/417 2744/209/417 2745/208/417
-f 2745/208/417 2746/207/417 2743/207/417
-f 2747/209/171 2748/211/171 2749/210/171
-f 2738/212/418 2737/214/418 2750/213/418
-f 2750/213/418 2751/196/418 2738/212/418
-f 2752/210/419 2753/211/419 2754/209/419
-f 2755/215/420 2754/209/420 2753/211/420
-f 2753/211/420 2756/216/420 2755/215/420
-f 2757/217/167 2730/196/167 2729/197/167
-f 2729/197/167 2758/218/167 2757/217/167
-f 2759/219/421 2735/203/421 2738/204/421
-f 2738/204/421 2760/220/421 2759/219/421
-f 2761/209/422 2743/207/422 2746/207/422
-f 2746/207/422 2762/208/422 2761/209/422
-f 2738/212/423 2751/196/423 2763/213/423
-f 2763/213/423 2760/214/423 2738/212/423
-f 2755/215/424 2756/216/424 2748/211/424
-f 2748/211/424 2747/209/424 2755/215/424
-f 2764/221/415 2728/221/416 2727/222/416
-f 2727/222/416 2750/222/415 2764/221/415
-f 2750/222/425 2727/222/425 2730/203/425
-f 2730/203/425 2751/203/425 2750/222/425
-f 2751/203/426 2730/203/426 2757/206/426
-f 2757/206/426 2763/206/426 2751/203/426
-f 2763/206/413 2757/206/413 2758/223/413
-f 2758/223/413 2765/223/413 2763/206/413
-f 2765/224/427 2758/224/427 2729/226/427
-f 2729/226/427 2766/225/427 2765/224/427
-f 2766/225/428 2729/226/428 2728/224/428
-f 2728/224/428 2764/224/428 2766/225/428
-f 2760/214/419 2763/213/419 2765/228/419
-f 2765/228/419 2767/227/419 2760/214/419
-f 2767/229/415 2768/221/415 2759/219/415
-f 2759/219/415 2760/220/415 2767/229/415
-f 2736/206/413 2769/223/413 2770/230/413
-f 2770/230/413 2737/205/413 2736/206/413
-f 2770/227/171 2764/228/171 2750/213/171
-f 2750/213/171 2737/214/171 2770/227/171
-f 2733/201/413 2771/202/412 2772/199/412
-f 2772/199/412 2734/200/413 2733/201/413
-f 2770/231/429 2749/233/429 2748/232/429
-f 2748/232/429 2764/224/429 2770/231/429
-f 2764/224/428 2748/232/428 2756/234/428
-f 2756/234/428 2766/225/428 2764/224/428
-f 2766/225/427 2756/234/427 2753/232/427
-f 2753/232/427 2765/224/427 2766/225/427
-f 2765/224/430 2753/232/430 2752/233/430
-f 2752/233/430 2767/231/430 2765/224/430
-f 2741/200/416 2773/199/415 2774/202/415
-f 2774/202/415 2742/201/416 2741/200/416
-f 2745/208/417 2754/236/417 2755/235/417
-f 2755/235/417 2746/207/417 2745/208/417
-f 2746/207/422 2755/235/422 2747/236/422
-f 2747/236/422 2762/208/422 2746/207/422
-f 2769/236/27 2731/238/27 2734/237/27
-f 2734/237/27 2770/231/27 2769/236/27
-f 2770/231/27 2734/237/27 2772/239/27
-f 2772/239/27 2749/233/27 2770/231/27
-f 2749/210/191 2772/241/191 2771/240/191
-f 2771/240/191 2747/209/191 2749/210/191
-f 2747/236/26 2771/238/26 2733/242/26
-f 2733/242/26 2762/208/26 2747/236/26
-f 2762/208/26 2733/242/26 2732/240/26
-f 2732/240/26 2761/209/26 2762/208/26
-f 2744/209/26 2739/240/26 2742/242/26
-f 2742/242/26 2745/208/26 2744/209/26
-f 2745/208/26 2742/242/26 2774/238/26
-f 2774/238/26 2754/236/26 2745/208/26
-f 2754/209/431 2774/240/431 2773/241/431
-f 2773/241/431 2752/210/431 2754/209/431
-f 2752/233/27 2773/239/27 2741/237/27
-f 2741/237/27 2767/231/27 2752/233/27
-f 2767/231/27 2741/237/27 2740/238/27
-f 2740/238/27 2768/236/27 2767/231/27
-f 2775/243/432 2776/246/432 2777/245/432
-f 2777/245/432 2778/244/432 2775/243/432
-f 2775/247/433 2779/250/433 2780/249/433
-f 2780/249/433 2776/248/433 2775/247/433
-f 2776/246/434 2780/252/434 2781/251/434
-f 2781/251/434 2777/245/434 2776/246/434
-f 2777/248/435 2781/249/435 2782/250/435
-f 2782/250/435 2778/247/435 2777/248/435
-f 2783/195/436 2784/198/436 2785/197/436
-f 2785/197/436 2786/196/436 2783/195/436
-f 2787/199/437 2788/202/437 2789/201/413
-f 2789/201/413 2790/200/413 2787/199/437
-f 2791/203/414 2792/206/414 2793/205/414
-f 2793/205/414 2794/204/414 2791/203/414
-f 2795/202/415 2796/199/415 2797/200/416
-f 2797/200/416 2798/201/416 2795/202/415
-f 2799/207/417 2800/209/417 2801/208/417
-f 2801/208/417 2802/207/417 2799/207/417
-f 2803/209/171 2804/211/171 2805/210/171
-f 2794/212/418 2793/214/418 2806/213/418
-f 2806/213/418 2807/196/418 2794/212/418
-f 2808/210/419 2809/211/419 2810/209/419
-f 2811/215/420 2810/209/420 2809/211/420
-f 2809/211/420 2812/216/420 2811/215/420
-f 2813/217/167 2786/196/167 2785/197/167
-f 2785/197/167 2814/218/167 2813/217/167
-f 2815/219/438 2791/203/421 2794/204/421
-f 2794/204/421 2816/220/438 2815/219/438
-f 2817/209/422 2799/207/422 2802/207/422
-f 2802/207/422 2818/208/422 2817/209/422
-f 2794/212/423 2807/196/423 2819/213/423
-f 2819/213/423 2816/214/423 2794/212/423
-f 2811/215/424 2812/216/424 2804/211/424
-f 2804/211/424 2803/209/424 2811/215/424
-f 2820/221/415 2784/221/415 2783/222/415
-f 2783/222/415 2806/222/415 2820/221/415
-f 2806/222/425 2783/222/425 2786/203/425
-f 2786/203/425 2807/203/425 2806/222/425
-f 2807/203/426 2786/203/426 2813/206/426
-f 2813/206/426 2819/206/426 2807/203/426
-f 2819/206/413 2813/206/413 2814/223/413
-f 2814/223/413 2821/223/413 2819/206/413
-f 2821/224/427 2814/224/427 2785/226/427
-f 2785/226/427 2822/225/427 2821/224/427
-f 2822/225/428 2785/226/428 2784/224/428
-f 2784/224/428 2820/224/428 2822/225/428
-f 2816/214/419 2819/213/419 2821/228/419
-f 2821/228/419 2823/227/419 2816/214/419
-f 2823/229/416 2824/221/416 2815/219/416
-f 2815/219/416 2816/220/416 2823/229/416
-f 2792/206/413 2825/223/413 2826/230/412
-f 2826/230/412 2793/205/412 2792/206/413
-f 2826/227/171 2820/228/171 2806/213/171
-f 2806/213/171 2793/214/171 2826/227/171
-f 2789/201/413 2827/202/412 2828/199/412
-f 2828/199/412 2790/200/413 2789/201/413
-f 2826/231/429 2805/233/429 2804/232/429
-f 2804/232/429 2820/224/429 2826/231/429
-f 2820/224/428 2804/232/428 2812/234/428
-f 2812/234/428 2822/225/428 2820/224/428
-f 2822/225/427 2812/234/427 2809/232/427
-f 2809/232/427 2821/224/427 2822/225/427
-f 2821/224/430 2809/232/430 2808/233/430
-f 2808/233/430 2823/231/430 2821/224/430
-f 2797/200/416 2829/199/415 2830/202/415
-f 2830/202/415 2798/201/416 2797/200/416
-f 2801/208/417 2810/236/417 2811/235/417
-f 2811/235/417 2802/207/417 2801/208/417
-f 2802/207/422 2811/235/422 2803/236/422
-f 2803/236/422 2818/208/422 2802/207/422
-f 2825/236/27 2787/238/27 2790/237/27
-f 2790/237/27 2826/231/27 2825/236/27
-f 2826/231/27 2790/237/27 2828/239/27
-f 2828/239/27 2805/233/27 2826/231/27
-f 2805/210/191 2828/241/191 2827/240/191
-f 2827/240/191 2803/209/191 2805/210/191
-f 2803/236/26 2827/238/26 2789/242/26
-f 2789/242/26 2818/208/26 2803/236/26
-f 2818/208/26 2789/242/26 2788/240/26
-f 2788/240/26 2817/209/26 2818/208/26
-f 2800/209/26 2795/240/26 2798/242/26
-f 2798/242/26 2801/208/26 2800/209/26
-f 2801/208/26 2798/242/26 2830/238/26
-f 2830/238/26 2810/236/26 2801/208/26
-f 2810/209/431 2830/240/431 2829/241/431
-f 2829/241/431 2808/210/431 2810/209/431
-f 2808/233/27 2829/239/27 2797/237/27
-f 2797/237/27 2823/231/27 2808/233/27
-f 2823/231/27 2797/237/27 2796/238/27
-f 2796/238/27 2824/236/27 2823/231/27
-f 2831/243/439 2832/246/439 2833/245/439
-f 2833/245/439 2834/244/439 2831/243/439
-f 2831/247/440 2835/250/440 2836/249/440
-f 2836/249/440 2832/248/440 2831/247/440
-f 2832/246/441 2836/252/441 2837/251/441
-f 2837/251/441 2833/245/441 2832/246/441
-f 2833/248/442 2837/249/442 2838/250/442
-f 2838/250/442 2834/247/442 2833/248/442
-f 2839/195/443 2840/198/443 2841/197/443
-f 2841/197/443 2842/196/443 2839/195/443
-f 2843/199/390 2844/202/390 2845/201/390
-f 2845/201/390 2846/200/390 2843/199/390
-f 2847/203/444 2848/206/444 2849/205/444
-f 2849/205/444 2850/204/444 2847/203/444
-f 2851/202/388 2852/199/388 2853/200/388
-f 2853/200/388 2854/201/388 2851/202/388
-f 2855/207/398 2856/209/398 2857/208/398
-f 2857/208/398 2858/207/398 2855/207/398
-f 2859/209/445 2860/211/445 2861/210/445
-f 2850/212/446 2849/214/446 2862/213/446
-f 2862/213/446 2863/196/446 2850/212/446
-f 2864/210/447 2865/211/447 2866/209/447
-f 2867/215/448 2866/209/448 2865/211/448
-f 2865/211/448 2868/216/448 2867/215/448
-f 2869/217/449 2842/196/450 2841/197/450
-f 2841/197/450 2870/218/449 2869/217/449
-f 2871/219/451 2847/203/451 2850/204/451
-f 2850/204/451 2872/220/451 2871/219/451
-f 2873/209/391 2855/207/391 2858/207/391
-f 2858/207/391 2874/208/391 2873/209/391
-f 2850/212/452 2863/196/452 2875/213/452
-f 2875/213/452 2872/214/452 2850/212/452
-f 2867/215/453 2868/216/453 2860/211/453
-f 2860/211/453 2859/209/453 2867/215/453
-f 2876/221/388 2840/221/388 2839/222/388
-f 2839/222/388 2862/222/388 2876/221/388
-f 2862/222/402 2839/222/402 2842/203/402
-f 2842/203/402 2863/203/402 2862/222/402
-f 2863/203/401 2842/203/401 2869/206/401
-f 2869/206/401 2875/206/401 2863/203/401
-f 2875/206/390 2869/206/390 2870/223/390
-f 2870/223/390 2877/223/390 2875/206/390
-f 2877/224/454 2870/224/454 2841/226/454
-f 2841/226/454 2878/225/454 2877/224/454
-f 2878/225/455 2841/226/455 2840/224/455
-f 2840/224/455 2876/224/455 2878/225/455
-f 2872/214/447 2875/213/447 2877/228/447
-f 2877/228/447 2879/227/447 2872/214/447
-f 2879/229/388 2880/221/388 2871/219/388
-f 2871/219/388 2872/220/388 2879/229/388
-f 2848/206/390 2881/223/390 2882/230/390
-f 2882/230/390 2849/205/390 2848/206/390
-f 2882/227/445 2876/228/445 2862/213/445
-f 2862/213/445 2849/214/445 2882/227/445
-f 2845/201/390 2883/202/390 2884/199/390
-f 2884/199/390 2846/200/390 2845/201/390
-f 2882/231/456 2861/233/456 2860/232/456
-f 2860/232/456 2876/224/456 2882/231/456
-f 2876/224/455 2860/232/455 2868/234/455
-f 2868/234/455 2878/225/455 2876/224/455
-f 2878/225/454 2868/234/454 2865/232/454
-f 2865/232/454 2877/224/454 2878/225/454
-f 2877/224/457 2865/232/457 2864/233/457
-f 2864/233/457 2879/231/457 2877/224/457
-f 2853/200/388 2885/199/388 2886/202/388
-f 2886/202/388 2854/201/388 2853/200/388
-f 2857/208/398 2866/236/398 2867/235/398
-f 2867/235/398 2858/207/398 2857/208/398
-f 2858/207/391 2867/235/391 2859/236/391
-f 2859/236/391 2874/208/391 2858/207/391
-f 2881/236/27 2843/238/27 2846/237/27
-f 2846/237/27 2882/231/27 2881/236/27
-f 2882/231/27 2846/237/27 2884/239/27
-f 2884/239/27 2861/233/27 2882/231/27
-f 2861/210/458 2884/241/458 2883/240/458
-f 2883/240/458 2859/209/458 2861/210/458
-f 2859/236/26 2883/238/26 2845/242/26
-f 2845/242/26 2874/208/26 2859/236/26
-f 2874/208/26 2845/242/26 2844/240/26
-f 2844/240/26 2873/209/26 2874/208/26
-f 2856/209/26 2851/240/26 2854/242/26
-f 2854/242/26 2857/208/26 2856/209/26
-f 2857/208/26 2854/242/26 2886/238/26
-f 2886/238/26 2866/236/26 2857/208/26
-f 2866/209/459 2886/240/459 2885/241/459
-f 2885/241/459 2864/210/459 2866/209/459
-f 2864/233/27 2885/239/27 2853/237/27
-f 2853/237/27 2879/231/27 2864/233/27
-f 2879/231/27 2853/237/27 2852/238/27
-f 2852/238/27 2880/236/27 2879/231/27
-f 2887/243/154 2888/246/154 2889/245/154
-f 2889/245/154 2890/244/154 2887/243/154
-f 2887/247/1 2891/250/1 2892/249/1
-f 2892/249/1 2888/248/1 2887/247/1
-f 2888/246/155 2892/252/155 2893/251/155
-f 2893/251/155 2889/245/155 2888/246/155
-f 2889/248/7 2893/249/7 2894/250/7
-f 2894/250/7 2890/247/7 2889/248/7
-f 2895/243/160 2896/246/160 2897/245/160
-f 2897/245/160 2898/244/160 2895/243/160
-f 2895/247/163 2899/250/163 2900/249/163
-f 2900/249/163 2896/248/163 2895/247/163
-f 2896/246/162 2900/252/162 2901/251/162
-f 2901/251/162 2897/245/162 2896/246/162
-f 2897/248/161 2901/249/161 2902/250/161
-f 2902/250/161 2898/247/161 2897/248/161
-f 2903/243/148 2904/246/148 2905/245/148
-f 2905/245/148 2906/244/148 2903/243/148
-f 2903/247/7 2907/250/7 2908/249/7
-f 2908/249/7 2904/248/7 2903/247/7
-f 2904/246/149 2908/252/149 2909/251/149
-f 2909/251/149 2905/245/149 2904/246/149
-f 2905/248/1 2909/249/1 2910/250/1
-f 2910/250/1 2906/247/1 2905/248/1
-f 2911/243/460 2912/246/460 2913/245/460
-f 2913/245/460 2914/244/460 2911/243/460
-f 2911/247/461 2915/250/461 2916/249/461
-f 2916/249/461 2912/248/461 2911/247/461
-f 2912/246/462 2916/252/462 2917/251/462
-f 2917/251/462 2913/245/462 2912/246/462
-f 2913/248/463 2917/249/463 2918/250/463
-f 2918/250/463 2914/247/463 2913/248/463
-f 2919/243/150 2920/246/150 2921/245/150
-f 2921/245/150 2922/244/150 2919/243/150
-f 2919/247/153 2923/250/153 2924/249/153
-f 2924/249/153 2920/248/153 2919/247/153
-f 2920/246/152 2924/252/152 2925/251/152
-f 2925/251/152 2921/245/152 2920/246/152
-f 2921/248/151 2925/249/151 2926/250/151
-f 2926/250/151 2922/247/151 2921/248/151
-f 2927/195/443 2928/198/443 2929/197/443
-f 2929/197/443 2930/196/443 2927/195/443
-f 2931/199/390 2932/202/390 2933/201/390
-f 2933/201/390 2934/200/390 2931/199/390
-f 2935/203/444 2936/206/444 2937/205/444
-f 2937/205/444 2938/204/444 2935/203/444
-f 2939/202/388 2940/199/388 2941/200/388
-f 2941/200/388 2942/201/388 2939/202/388
-f 2943/207/398 2944/209/398 2945/208/398
-f 2945/208/398 2946/207/398 2943/207/398
-f 2947/209/445 2948/211/445 2949/210/445
-f 2938/212/446 2937/214/446 2950/213/446
-f 2950/213/446 2951/196/446 2938/212/446
-f 2952/210/447 2953/211/447 2954/209/447
-f 2955/215/448 2954/209/448 2953/211/448
-f 2953/211/448 2956/216/448 2955/215/448
-f 2957/217/449 2930/196/450 2929/197/450
-f 2929/197/450 2958/218/449 2957/217/449
-f 2959/219/451 2935/203/451 2938/204/451
-f 2938/204/451 2960/220/451 2959/219/451
-f 2961/209/391 2943/207/391 2946/207/391
-f 2946/207/391 2962/208/391 2961/209/391
-f 2938/212/452 2951/196/452 2963/213/452
-f 2963/213/452 2960/214/452 2938/212/452
-f 2955/215/453 2956/216/453 2948/211/453
-f 2948/211/453 2947/209/453 2955/215/453
-f 2964/221/388 2928/221/388 2927/222/388
-f 2927/222/388 2950/222/388 2964/221/388
-f 2950/222/402 2927/222/402 2930/203/402
-f 2930/203/402 2951/203/402 2950/222/402
-f 2951/203/401 2930/203/401 2957/206/401
-f 2957/206/401 2963/206/401 2951/203/401
-f 2963/206/390 2957/206/390 2958/223/390
-f 2958/223/390 2965/223/390 2963/206/390
-f 2965/224/454 2958/224/454 2929/226/454
-f 2929/226/454 2966/225/454 2965/224/454
-f 2966/225/455 2929/226/455 2928/224/455
-f 2928/224/455 2964/224/455 2966/225/455
-f 2960/214/447 2963/213/447 2965/228/447
-f 2965/228/447 2967/227/447 2960/214/447
-f 2967/229/388 2968/221/388 2959/219/388
-f 2959/219/388 2960/220/388 2967/229/388
-f 2936/206/390 2969/223/390 2970/230/390
-f 2970/230/390 2937/205/390 2936/206/390
-f 2970/227/445 2964/228/445 2950/213/445
-f 2950/213/445 2937/214/445 2970/227/445
-f 2933/201/390 2971/202/390 2972/199/390
-f 2972/199/390 2934/200/390 2933/201/390
-f 2970/231/456 2949/233/456 2948/232/456
-f 2948/232/456 2964/224/456 2970/231/456
-f 2964/224/455 2948/232/455 2956/234/455
-f 2956/234/455 2966/225/455 2964/224/455
-f 2966/225/454 2956/234/454 2953/232/454
-f 2953/232/454 2965/224/454 2966/225/454
-f 2965/224/457 2953/232/457 2952/233/457
-f 2952/233/457 2967/231/457 2965/224/457
-f 2941/200/388 2973/199/388 2974/202/388
-f 2974/202/388 2942/201/388 2941/200/388
-f 2945/208/398 2954/236/398 2955/235/398
-f 2955/235/398 2946/207/398 2945/208/398
-f 2946/207/391 2955/235/391 2947/236/391
-f 2947/236/391 2962/208/391 2946/207/391
-f 2969/236/27 2931/238/27 2934/237/27
-f 2934/237/27 2970/231/27 2969/236/27
-f 2970/231/27 2934/237/27 2972/239/27
-f 2972/239/27 2949/233/27 2970/231/27
-f 2949/210/458 2972/241/458 2971/240/458
-f 2971/240/458 2947/209/458 2949/210/458
-f 2947/236/26 2971/238/26 2933/242/26
-f 2933/242/26 2962/208/26 2947/236/26
-f 2962/208/26 2933/242/26 2932/240/26
-f 2932/240/26 2961/209/26 2962/208/26
-f 2944/209/26 2939/240/26 2942/242/26
-f 2942/242/26 2945/208/26 2944/209/26
-f 2945/208/26 2942/242/26 2974/238/26
-f 2974/238/26 2954/236/26 2945/208/26
-f 2954/209/459 2974/240/459 2973/241/459
-f 2973/241/459 2952/210/459 2954/209/459
-f 2952/233/27 2973/239/27 2941/237/27
-f 2941/237/27 2967/231/27 2952/233/27
-f 2967/231/27 2941/237/27 2940/238/27
-f 2940/238/27 2968/236/27 2967/231/27
-f 2975/195/464 2976/198/464 2977/197/4
-f 2977/197/4 2978/196/4 2975/195/464
-f 2979/199/465 2980/202/465 2981/201/465
-f 2981/201/465 2982/200/465 2979/199/465
-f 2983/203/421 2984/206/421 2985/205/421
-f 2985/205/421 2986/204/421 2983/203/421
-f 2987/202/437 2988/199/437 2989/200/437
-f 2989/200/437 2990/201/437 2987/202/437
-f 2991/207/466 2992/209/466 2993/208/466
-f 2993/208/466 2994/207/466 2991/207/466
-f 2995/209/107 2996/211/107 2997/210/107
-f 2986/212/467 2985/214/467 2998/213/467
-f 2998/213/467 2999/196/467 2986/212/467
-f 3000/210/468 3001/211/468 3002/209/468
-f 3003/215/469 3002/209/469 3001/211/469
-f 3001/211/469 3004/216/469 3003/215/469
-f 3005/217/103 2978/196/103 2977/197/103
-f 2977/197/103 3006/218/103 3005/217/103
-f 3007/219/470 2983/203/414 2986/204/414
-f 2986/204/414 3008/220/414 3007/219/470
-f 3009/209/471 2991/207/471 2994/207/471
-f 2994/207/471 3010/208/471 3009/209/471
-f 2986/212/472 2999/196/472 3011/213/472
-f 3011/213/472 3008/214/472 2986/212/472
-f 3003/215/332 3004/216/332 2996/211/332
-f 2996/211/332 2995/209/332 3003/215/332
-f 3012/221/437 2976/221/437 2975/222/437
-f 2975/222/437 2998/222/437 3012/221/437
-f 2998/222/426 2975/222/426 2978/203/426
-f 2978/203/426 2999/203/426 2998/222/426
-f 2999/203/425 2978/203/425 3005/206/425
-f 3005/206/425 3011/206/425 2999/203/425
-f 3011/206/465 3005/206/465 3006/223/465
-f 3006/223/465 3013/223/465 3011/206/465
-f 3013/224/473 3006/224/473 2977/226/473
-f 2977/226/473 3014/225/473 3013/224/473
-f 3014/225/430 2977/226/430 2976/224/430
-f 2976/224/430 3012/224/430 3014/225/430
-f 3008/214/468 3011/213/468 3013/228/468
-f 3013/228/468 3015/227/468 3008/214/468
-f 3015/229/437 3016/221/437 3007/219/437
-f 3007/219/437 3008/220/437 3015/229/437
-f 2984/206/465 3017/223/465 3018/230/465
-f 3018/230/465 2985/205/465 2984/206/465
-f 3018/227/107 3012/228/107 2998/213/107
-f 2998/213/107 2985/214/107 3018/227/107
-f 2981/201/465 3019/202/465 3020/199/465
-f 3020/199/465 2982/200/465 2981/201/465
-f 3018/231/474 2997/233/474 2996/232/474
-f 2996/232/474 3012/224/474 3018/231/474
-f 3012/224/430 2996/232/430 3004/234/430
-f 3004/234/430 3014/225/430 3012/224/430
-f 3014/225/473 3004/234/473 3001/232/473
-f 3001/232/473 3013/224/473 3014/225/473
-f 3013/224/428 3001/232/428 3000/233/428
-f 3000/233/428 3015/231/428 3013/224/428
-f 2989/200/437 3021/199/437 3022/202/437
-f 3022/202/437 2990/201/437 2989/200/437
-f 2993/208/466 3002/236/466 3003/235/466
-f 3003/235/466 2994/207/466 2993/208/466
-f 2994/207/471 3003/235/471 2995/236/471
-f 2995/236/471 3010/208/471 2994/207/471
-f 3017/236/27 2979/238/27 2982/237/27
-f 2982/237/27 3018/231/27 3017/236/27
-f 3018/231/27 2982/237/27 3020/239/27
-f 3020/239/27 2997/233/27 3018/231/27
-f 2997/210/193 3020/241/193 3019/240/193
-f 3019/240/193 2995/209/193 2997/210/193
-f 2995/236/26 3019/238/26 2981/242/26
-f 2981/242/26 3010/208/26 2995/236/26
-f 3010/208/26 2981/242/26 2980/240/26
-f 2980/240/26 3009/209/26 3010/208/26
-f 2992/209/26 2987/240/26 2990/242/26
-f 2990/242/26 2993/208/26 2992/209/26
-f 2993/208/26 2990/242/26 3022/238/26
-f 3022/238/26 3002/236/26 2993/208/26
-f 3002/209/475 3022/240/475 3021/241/475
-f 3021/241/475 3000/210/475 3002/209/475
-f 3000/233/27 3021/239/27 2989/237/27
-f 2989/237/27 3015/231/27 3000/233/27
-f 3015/231/27 2989/237/27 2988/238/27
-f 2988/238/27 3016/236/27 3015/231/27
-f 3023/243/187 3024/246/187 3025/245/187
-f 3025/245/187 3026/244/187 3023/243/187
-f 3023/247/161 3027/250/161 3028/249/161
-f 3028/249/161 3024/248/161 3023/247/161
-f 3024/246/188 3028/252/189 3029/251/188
-f 3029/251/188 3025/245/188 3024/246/188
-f 3025/248/163 3029/249/163 3030/250/163
-f 3030/250/163 3026/247/163 3025/248/163
-f 3031/195/4 3032/198/4 3033/197/4
-f 3033/197/4 3034/196/4 3031/195/4
-f 3035/199/465 3036/202/465 3037/201/465
-f 3037/201/465 3038/200/465 3035/199/465
-f 3039/203/421 3040/206/421 3041/205/421
-f 3041/205/421 3042/204/421 3039/203/421
-f 3043/202/437 3044/199/437 3045/200/437
-f 3045/200/437 3046/201/437 3043/202/437
-f 3047/207/466 3048/209/466 3049/208/466
-f 3049/208/466 3050/207/466 3047/207/466
-f 3051/209/107 3052/211/107 3053/210/107
-f 3042/212/467 3041/214/467 3054/213/467
-f 3054/213/467 3055/196/467 3042/212/467
-f 3056/210/468 3057/211/468 3058/209/468
-f 3059/215/469 3058/209/469 3057/211/469
-f 3057/211/469 3060/216/469 3059/215/469
-f 3061/217/103 3034/196/103 3033/197/103
-f 3033/197/103 3062/218/103 3061/217/103
-f 3063/219/414 3039/203/414 3042/204/470
-f 3042/204/470 3064/220/414 3063/219/414
-f 3065/209/471 3047/207/471 3050/207/471
-f 3050/207/471 3066/208/471 3065/209/471
-f 3042/212/472 3055/196/472 3067/213/472
-f 3067/213/472 3064/214/472 3042/212/472
-f 3059/215/332 3060/216/332 3052/211/332
-f 3052/211/332 3051/209/332 3059/215/332
-f 3068/221/437 3032/221/437 3031/222/437
-f 3031/222/437 3054/222/437 3068/221/437
-f 3054/222/426 3031/222/426 3034/203/426
-f 3034/203/426 3055/203/426 3054/222/426
-f 3055/203/425 3034/203/425 3061/206/425
-f 3061/206/425 3067/206/425 3055/203/425
-f 3067/206/465 3061/206/465 3062/223/465
-f 3062/223/465 3069/223/465 3067/206/465
-f 3069/224/473 3062/224/473 3033/226/473
-f 3033/226/473 3070/225/473 3069/224/473
-f 3070/225/430 3033/226/430 3032/224/430
-f 3032/224/430 3068/224/430 3070/225/430
-f 3064/214/468 3067/213/468 3069/228/468
-f 3069/228/468 3071/227/468 3064/214/468
-f 3071/229/437 3072/221/437 3063/219/437
-f 3063/219/437 3064/220/437 3071/229/437
-f 3040/206/465 3073/223/465 3074/230/465
-f 3074/230/465 3041/205/465 3040/206/465
-f 3074/227/107 3068/228/107 3054/213/107
-f 3054/213/107 3041/214/107 3074/227/107
-f 3037/201/465 3075/202/465 3076/199/465
-f 3076/199/465 3038/200/465 3037/201/465
-f 3074/231/474 3053/233/474 3052/232/474
-f 3052/232/474 3068/224/474 3074/231/474
-f 3068/224/430 3052/232/430 3060/234/430
-f 3060/234/430 3070/225/430 3068/224/430
-f 3070/225/473 3060/234/473 3057/232/473
-f 3057/232/473 3069/224/473 3070/225/473
-f 3069/224/428 3057/232/428 3056/233/428
-f 3056/233/428 3071/231/428 3069/224/428
-f 3045/200/437 3077/199/437 3078/202/437
-f 3078/202/437 3046/201/437 3045/200/437
-f 3049/208/466 3058/236/466 3059/235/466
-f 3059/235/466 3050/207/466 3049/208/466
-f 3050/207/471 3059/235/471 3051/236/471
-f 3051/236/471 3066/208/471 3050/207/471
-f 3073/236/27 3035/238/27 3038/237/27
-f 3038/237/27 3074/231/27 3073/236/27
-f 3074/231/27 3038/237/27 3076/239/27
-f 3076/239/27 3053/233/27 3074/231/27
-f 3053/210/193 3076/241/193 3075/240/193
-f 3075/240/193 3051/209/193 3053/210/193
-f 3051/236/26 3075/238/26 3037/242/26
-f 3037/242/26 3066/208/26 3051/236/26
-f 3066/208/26 3037/242/26 3036/240/26
-f 3036/240/26 3065/209/26 3066/208/26
-f 3048/209/26 3043/240/26 3046/242/26
-f 3046/242/26 3049/208/26 3048/209/26
-f 3049/208/26 3046/242/26 3078/238/26
-f 3078/238/26 3058/236/26 3049/208/26
-f 3058/209/475 3078/240/475 3077/241/475
-f 3077/241/475 3056/210/475 3058/209/475
-f 3056/233/27 3077/239/27 3045/237/27
-f 3045/237/27 3071/231/27 3056/233/27
-f 3071/231/27 3045/237/27 3044/238/27
-f 3044/238/27 3072/236/27 3071/231/27
-f 3079/243/476 3080/246/476 3081/245/476
-f 3081/245/476 3082/244/476 3079/243/476
-f 3079/247/477 3083/250/477 3084/249/477
-f 3084/249/477 3080/248/477 3079/247/477
-f 3080/246/478 3084/252/478 3085/251/478
-f 3085/251/478 3081/245/478 3080/246/478
-f 3081/248/479 3085/249/479 3086/250/479
-f 3086/250/479 3082/247/479 3081/248/479
-f 3087/195/387 3088/198/387 3089/197/387
-f 3089/197/387 3090/196/387 3087/195/387
-f 3091/199/388 3092/202/388 3093/201/388
-f 3093/201/388 3094/200/388 3091/199/388
-f 3095/203/389 3096/206/389 3097/205/389
-f 3097/205/389 3098/204/389 3095/203/389
-f 3099/202/390 3100/199/390 3101/200/390
-f 3101/200/390 3102/201/390 3099/202/390
-f 3103/207/391 3104/209/391 3105/208/391
-f 3105/208/391 3106/207/391 3103/207/391
-f 3107/209/392 3108/211/392 3109/210/392
-f 3098/212/393 3097/214/393 3110/213/393
-f 3110/213/393 3111/196/393 3098/212/393
-f 3112/210/394 3113/211/394 3114/209/394
-f 3115/215/395 3114/209/395 3113/211/395
-f 3113/211/395 3116/216/395 3115/215/395
-f 3117/217/396 3090/196/396 3089/197/396
-f 3089/197/396 3118/218/396 3117/217/396
-f 3119/219/397 3095/203/397 3098/204/397
-f 3098/204/397 3120/220/397 3119/219/397
-f 3121/209/398 3103/207/398 3106/207/398
-f 3106/207/398 3122/208/398 3121/209/398
-f 3098/212/399 3111/196/399 3123/213/399
-f 3123/213/399 3120/214/399 3098/212/399
-f 3115/215/400 3116/216/400 3108/211/400
-f 3108/211/400 3107/209/400 3115/215/400
-f 3124/221/390 3088/221/390 3087/222/390
-f 3087/222/390 3110/222/390 3124/221/390
-f 3110/222/401 3087/222/401 3090/203/401
-f 3090/203/401 3111/203/401 3110/222/401
-f 3111/203/402 3090/203/402 3117/206/402
-f 3117/206/402 3123/206/402 3111/203/402
-f 3123/206/388 3117/206/388 3118/223/388
-f 3118/223/388 3125/223/388 3123/206/388
-f 3125/224/403 3118/224/403 3089/226/403
-f 3089/226/403 3126/225/403 3125/224/403
-f 3126/225/404 3089/226/404 3088/224/404
-f 3088/224/404 3124/224/404 3126/225/404
-f 3120/214/394 3123/213/394 3125/228/394
-f 3125/228/394 3127/227/394 3120/214/394
-f 3127/229/390 3128/221/390 3119/219/390
-f 3119/219/390 3120/220/390 3127/229/390
-f 3096/206/388 3129/223/388 3130/230/388
-f 3130/230/388 3097/205/388 3096/206/388
-f 3130/227/392 3124/228/392 3110/213/392
-f 3110/213/392 3097/214/392 3130/227/392
-f 3093/201/388 3131/202/388 3132/199/388
-f 3132/199/388 3094/200/388 3093/201/388
-f 3130/231/405 3109/233/405 3108/232/405
-f 3108/232/405 3124/224/405 3130/231/405
-f 3124/224/404 3108/232/404 3116/234/404
-f 3116/234/404 3126/225/404 3124/224/404
-f 3126/225/403 3116/234/403 3113/232/403
-f 3113/232/403 3125/224/403 3126/225/403
-f 3125/224/407 3113/232/407 3112/233/407
-f 3112/233/407 3127/231/407 3125/224/407
-f 3101/200/390 3133/199/390 3134/202/390
-f 3134/202/390 3102/201/390 3101/200/390
-f 3105/208/391 3114/236/391 3115/235/391
-f 3115/235/391 3106/207/391 3105/208/391
-f 3106/207/398 3115/235/398 3107/236/398
-f 3107/236/398 3122/208/398 3106/207/398
-f 3129/236/27 3091/238/27 3094/237/27
-f 3094/237/27 3130/231/27 3129/236/27
-f 3130/231/27 3094/237/27 3132/239/27
-f 3132/239/27 3109/233/27 3130/231/27
-f 3109/210/409 3132/241/409 3131/240/409
-f 3131/240/409 3107/209/409 3109/210/409
-f 3107/236/26 3131/238/26 3093/242/26
-f 3093/242/26 3122/208/26 3107/236/26
-f 3122/208/26 3093/242/26 3092/240/26
-f 3092/240/26 3121/209/26 3122/208/26
-f 3104/209/26 3099/240/26 3102/242/26
-f 3102/242/26 3105/208/26 3104/209/26
-f 3105/208/26 3102/242/26 3134/238/26
-f 3134/238/26 3114/236/26 3105/208/26
-f 3114/209/410 3134/240/410 3133/241/410
-f 3133/241/410 3112/210/410 3114/209/410
-f 3112/233/27 3133/239/27 3101/237/27
-f 3101/237/27 3127/231/27 3112/233/27
-f 3127/231/27 3101/237/27 3100/238/27
-f 3100/238/27 3128/236/27 3127/231/27
-f 3135/243/180 3136/246/180 3137/245/180
-f 3137/245/180 3138/244/180 3135/243/180
-f 3135/247/151 3139/250/151 3140/249/151
-f 3140/249/151 3136/248/151 3135/247/151
-f 3136/246/181 3140/252/181 3141/251/182
-f 3141/251/182 3137/245/181 3136/246/181
-f 3137/248/153 3141/249/153 3142/250/153
-f 3142/250/153 3138/247/153 3137/248/153
-f 3143/253/24 3144/256/24 3145/255/24
-f 3145/255/24 3146/254/24 3143/253/24
-f 3147/257/23 3148/258/23 3144/256/23
-f 3144/256/23 3143/253/23 3147/257/23
-f 3149/259/191 3150/260/22 3148/258/191
-f 3148/258/191 3147/257/191 3149/259/191
-f 3151/261/21 3152/264/21 3150/263/21
-f 3150/263/21 3149/262/21 3151/261/21
-f 3153/265/20 3154/266/20 3152/264/20
-f 3152/264/20 3151/261/20 3153/265/20
-f 3155/267/19 3156/268/19 3154/266/19
-f 3154/266/19 3153/265/19 3155/267/19
-f 3157/269/194 3158/270/194 3156/268/18
-f 3156/268/18 3155/267/18 3157/269/194
-f 3159/271/17 3160/272/17 3158/270/17
-f 3158/270/17 3157/269/17 3159/271/17
-f 3161/273/16 3162/274/16 3160/272/16
-f 3160/272/16 3159/271/16 3161/273/16
-f 3163/275/118 3164/276/118 3162/274/15
-f 3162/274/15 3161/273/118 3163/275/118
-f 3165/277/14 3166/278/14 3164/276/14
-f 3164/276/14 3163/275/14 3165/277/14
-f 3146/254/13 3145/255/13 3166/278/192
-f 3166/278/192 3165/277/192 3146/254/13
-f 3144/279/27 3167/282/27 3168/281/27
-f 3168/281/27 3145/280/27 3144/279/27
-f 3169/283/27 3170/284/27 3171/282/27
-f 3171/282/27 3172/279/27 3169/283/27
-f 3150/285/27 3173/285/27 3174/284/27
-f 3174/284/27 3148/283/27 3150/285/27
-f 3175/286/27 3176/287/27 3177/285/27
-f 3177/285/27 3178/285/27 3175/286/27
-f 3154/288/27 3179/289/27 3180/287/27
-f 3180/287/27 3152/286/27 3154/288/27
-f 3181/290/27 3182/291/27 3183/289/27
-f 3183/289/27 3184/288/27 3181/290/27
-f 3158/292/27 3185/293/27 3186/291/27
-f 3186/291/27 3156/290/27 3158/292/27
-f 3187/294/27 3188/295/27 3189/293/27
-f 3189/293/27 3190/292/27 3187/294/27
-f 3162/296/27 3191/297/27 3192/295/27
-f 3192/295/27 3160/294/27 3162/296/27
-f 3193/298/27 3194/299/27 3195/297/27
-f 3195/297/27 3196/296/27 3193/298/27
-f 3166/300/27 3197/300/27 3198/299/27
-f 3198/299/27 3164/298/27 3166/300/27
-f 3199/280/27 3200/281/27 3201/300/27
-f 3201/300/27 3202/300/27 3199/280/27
-f 3167/301/18 3203/304/18 3204/303/18
-f 3204/303/18 3168/302/18 3167/301/18
-f 3174/305/17 3205/306/17 3203/304/17
-f 3203/304/17 3167/301/17 3174/305/17
-f 3173/307/16 3206/308/16 3205/306/16
-f 3205/306/16 3174/305/16 3173/307/16
-f 3180/309/15 3207/310/15 3206/308/15
-f 3206/308/15 3173/307/15 3180/309/15
-f 3179/311/14 3208/312/14 3207/310/14
-f 3207/310/14 3180/309/14 3179/311/14
-f 3186/313/13 3209/314/13 3208/312/13
-f 3208/312/13 3179/311/13 3186/313/13
-f 3185/315/25 3210/316/25 3209/314/24
-f 3209/314/24 3186/313/24 3185/315/25
-f 3192/317/23 3211/318/23 3210/316/23
-f 3210/316/23 3185/315/23 3192/317/23
-f 3191/319/22 3212/320/22 3211/318/22
-f 3211/318/22 3192/317/22 3191/319/22
-f 3198/321/21 3213/324/21 3212/323/178
-f 3212/323/178 3191/322/21 3198/321/21
-f 3197/325/20 3214/326/20 3213/324/20
-f 3213/324/20 3198/321/20 3197/325/20
-f 3168/302/19 3204/303/19 3214/326/190
-f 3214/326/190 3197/325/190 3168/302/19
-f 3203/327/27 3215/329/27 3204/328/27
-f 3205/330/27 3215/329/27 3203/327/27
-f 3206/331/27 3215/329/27 3205/330/27
-f 3207/332/27 3215/329/27 3206/331/27
-f 3208/333/27 3215/329/27 3207/332/27
-f 3209/334/27 3215/329/27 3208/333/27
-f 3210/335/27 3215/329/27 3209/334/27
-f 3211/336/27 3215/329/27 3210/335/27
-f 3212/337/27 3215/329/27 3211/336/27
-f 3213/338/27 3215/329/27 3212/337/27
-f 3214/339/27 3215/329/27 3213/338/27
-f 3204/328/27 3215/329/27 3214/339/27
-f 3148/258/23 3169/341/23 3172/340/23
-f 3172/340/23 3144/256/23 3148/258/23
-f 3144/279/153 3172/279/153 3171/282/153
-f 3171/282/153 3167/282/153 3144/279/153
-f 3167/301/17 3171/343/17 3170/342/17
-f 3170/342/17 3174/305/17 3167/301/17
-f 3174/284/196 3170/284/196 3169/283/196
-f 3169/283/196 3148/283/196 3174/284/196
-f 3152/264/21 3175/345/21 3178/344/178
-f 3178/344/178 3150/263/21 3152/264/21
-f 3150/285/1 3178/285/1 3177/285/1
-f 3177/285/1 3173/285/1 3150/285/1
-f 3173/307/15 3177/347/15 3176/346/15
-f 3176/346/15 3180/309/15 3173/307/15
-f 3180/287/195 3176/287/195 3175/286/195
-f 3175/286/195 3152/286/195 3180/287/195
-f 3156/268/19 3181/349/19 3184/348/19
-f 3184/348/19 3154/266/19 3156/268/19
-f 3154/288/161 3184/288/161 3183/289/161
-f 3183/289/161 3179/289/161 3154/288/161
-f 3179/311/13 3183/351/13 3182/350/13
-f 3182/350/13 3186/313/13 3179/311/13
-f 3186/291/4 3182/291/4 3181/290/4
-f 3181/290/4 3156/290/4 3186/291/4
-f 3160/272/17 3187/353/17 3190/352/17
-f 3190/352/17 3158/270/17 3160/272/17
-f 3158/292/151 3190/292/151 3189/293/151
-f 3189/293/151 3185/293/151 3158/292/151
-f 3185/315/23 3189/355/23 3188/354/23
-f 3188/354/23 3192/317/23 3185/315/23
-f 3192/295/198 3188/295/198 3187/294/198
-f 3187/294/198 3160/294/198 3192/295/198
-f 3164/276/118 3193/357/15 3196/356/15
-f 3196/356/15 3162/274/15 3164/276/118
-f 3162/296/7 3196/296/7 3195/297/7
-f 3195/297/7 3191/297/7 3162/296/7
-f 3191/322/21 3195/359/21 3194/358/21
-f 3194/358/21 3198/321/21 3191/322/21
-f 3198/299/197 3194/299/197 3193/298/197
-f 3193/298/197 3164/298/197 3198/299/197
-f 3145/255/13 3199/361/13 3202/360/13
-f 3202/360/13 3166/278/192 3145/255/13
-f 3166/300/163 3202/300/163 3201/300/163
-f 3201/300/163 3197/300/163 3166/300/163
-f 3197/325/190 3201/363/190 3200/362/19
-f 3200/362/19 3168/302/19 3197/325/190
-f 3168/281/10 3200/281/10 3199/280/10
-f 3199/280/10 3145/280/10 3168/281/10
-f 3216/1/7 3217/2/8 3218/3/8
-f 3218/3/8 3219/4/7 3216/1/7
-f 3217/2/8 3220/5/9 3221/6/9
-f 3221/6/9 3218/3/8 3217/2/8
-f 3220/5/9 3222/7/10 3223/8/10
-f 3223/8/10 3221/6/9 3220/5/9
-f 3222/9/10 3224/10/11 3225/11/11
-f 3225/11/11 3223/12/10 3222/9/10
-f 3224/10/11 3226/13/12 3227/14/12
-f 3227/14/12 3225/11/11 3224/10/11
-f 3226/13/12 3228/15/1 3229/16/1
-f 3229/16/1 3227/14/12 3226/13/12
-f 3228/15/1 3230/17/2 3231/18/2
-f 3231/18/2 3229/16/1 3228/15/1
-f 3230/17/2 3232/19/3 3233/20/3
-f 3233/20/3 3231/18/2 3230/17/2
-f 3232/19/3 3234/21/4 3235/22/4
-f 3235/22/4 3233/20/3 3232/19/3
-f 3234/21/4 3236/23/5 3237/24/5
-f 3237/24/5 3235/22/4 3234/21/4
-f 3236/23/5 3238/25/6 3239/26/6
-f 3239/26/6 3237/24/5 3236/23/5
-f 3238/25/6 3216/1/7 3219/4/7
-f 3219/4/7 3239/26/6 3238/25/6
-f 3240/27/19 3241/28/19 3242/29/19
-f 3242/29/19 3243/30/19 3240/27/19
-f 3244/31/20 3240/27/20 3243/30/20
-f 3243/30/20 3245/32/20 3244/31/20
-f 3246/33/21 3244/31/21 3245/32/21
-f 3245/32/21 3247/34/21 3246/33/21
-f 3248/35/22 3246/36/22 3247/37/22
-f 3247/37/22 3249/38/22 3248/35/22
-f 3250/39/23 3248/35/23 3249/38/23
-f 3249/38/23 3251/40/23 3250/39/23
-f 3252/41/24 3250/39/24 3251/40/24
-f 3251/40/24 3253/42/24 3252/41/24
-f 3254/43/13 3252/41/13 3253/42/13
-f 3253/42/13 3255/44/13 3254/43/13
-f 3256/45/14 3254/43/14 3255/44/14
-f 3255/44/14 3257/46/14 3256/45/14
-f 3258/47/15 3256/45/15 3257/46/15
-f 3257/46/15 3259/48/15 3258/47/15
-f 3260/49/16 3258/47/16 3259/48/16
-f 3259/48/16 3261/50/16 3260/49/16
-f 3262/51/17 3260/49/17 3261/50/17
-f 3261/50/17 3263/52/17 3262/51/17
-f 3241/28/18 3262/51/194 3263/52/18
-f 3263/52/18 3242/29/18 3241/28/18
-f 3217/53/26 3216/54/26 3241/54/26
-f 3241/54/26 3240/53/26 3217/53/26
-f 3216/54/26 3238/55/26 3262/55/26
-f 3262/55/26 3241/54/26 3216/54/26
-f 3238/55/26 3236/56/26 3260/56/26
-f 3260/56/26 3262/55/26 3238/55/26
-f 3236/56/26 3234/57/26 3258/57/26
-f 3258/57/26 3260/56/26 3236/56/26
-f 3234/57/26 3232/58/26 3256/59/26
-f 3256/59/26 3258/57/26 3234/57/26
-f 3232/58/26 3230/60/26 3254/61/26
-f 3254/61/26 3256/59/26 3232/58/26
-f 3230/60/26 3228/62/26 3252/62/26
-f 3252/62/26 3254/61/26 3230/60/26
-f 3228/62/26 3226/63/26 3250/64/26
-f 3250/64/26 3252/62/26 3228/62/26
-f 3226/63/26 3224/65/26 3248/66/26
-f 3248/66/26 3250/64/26 3226/63/26
-f 3224/65/26 3222/67/26 3246/67/26
-f 3246/67/26 3248/66/26 3224/65/26
-f 3222/67/26 3220/68/26 3244/68/26
-f 3244/68/26 3246/67/26 3222/67/26
-f 3220/68/26 3217/53/26 3240/53/26
-f 3240/53/26 3244/68/26 3220/68/26
-f 3264/54/27 3265/53/27 3243/53/27
-f 3243/53/27 3242/54/27 3264/54/27
-f 3265/53/27 3266/68/27 3245/68/27
-f 3245/68/27 3243/53/27 3265/53/27
-f 3266/68/27 3267/67/27 3247/67/27
-f 3247/67/27 3245/68/27 3266/68/27
-f 3267/67/27 3268/65/27 3249/66/27
-f 3249/66/27 3247/67/27 3267/67/27
-f 3268/65/27 3269/63/27 3251/64/27
-f 3251/64/27 3249/66/27 3268/65/27
-f 3269/63/27 3270/62/27 3253/62/27
-f 3253/62/27 3251/64/27 3269/63/27
-f 3270/62/27 3271/60/27 3255/61/27
-f 3255/61/27 3253/62/27 3270/62/27
-f 3271/60/27 3272/58/27 3257/59/27
-f 3257/59/27 3255/61/27 3271/60/27
-f 3272/58/27 3273/57/27 3259/57/27
-f 3259/57/27 3257/59/27 3272/58/27
-f 3273/57/27 3274/56/27 3261/56/27
-f 3261/56/27 3259/57/27 3273/57/27
-f 3274/56/27 3275/55/27 3263/55/27
-f 3263/55/27 3261/56/27 3274/56/27
-f 3275/55/27 3264/54/27 3242/54/27
-f 3242/54/27 3263/55/27 3275/55/27
-f 3264/69/7 3276/70/7 3277/71/8
-f 3277/71/8 3265/72/8 3264/69/7
-f 3265/72/8 3277/71/8 3278/73/20
-f 3278/73/20 3266/74/20 3265/72/8
-f 3266/74/21 3278/73/21 3279/75/21
-f 3279/75/21 3267/76/21 3266/74/21
-f 3267/76/22 3279/75/22 3280/77/11
-f 3280/77/11 3268/78/11 3267/76/22
-f 3268/78/11 3280/77/11 3281/79/12
-f 3281/79/12 3269/80/12 3268/78/11
-f 3269/81/12 3281/82/12 3282/83/1
-f 3282/83/1 3270/84/1 3269/81/12
-f 3270/84/1 3282/83/1 3283/85/2
-f 3283/85/2 3271/86/2 3270/84/1
-f 3271/86/2 3283/85/2 3284/87/3
-f 3284/87/3 3272/88/3 3271/86/2
-f 3272/88/3 3284/87/3 3285/89/4
-f 3285/89/4 3273/90/4 3272/88/3
-f 3273/90/4 3285/89/4 3286/91/5
-f 3286/91/5 3274/92/5 3273/90/4
-f 3274/92/5 3286/91/5 3287/93/6
-f 3287/93/6 3275/94/6 3274/92/5
-f 3275/94/6 3287/93/6 3276/70/7
-f 3276/70/7 3264/69/7 3275/94/6
-f 3288/95/26 3289/96/26 3290/96/26
-f 3290/96/26 3291/95/26 3288/95/26
-f 3292/97/26 3288/95/26 3291/95/26
-f 3291/95/26 3293/97/26 3292/97/26
-f 3294/67/26 3292/97/26 3293/97/26
-f 3293/97/26 3295/98/26 3294/67/26
-f 3296/99/26 3294/67/26 3295/98/26
-f 3295/98/26 3297/99/26 3296/99/26
-f 3298/100/26 3296/99/26 3297/99/26
-f 3297/99/26 3299/100/26 3298/100/26
-f 3300/101/26 3298/100/26 3299/100/26
-f 3299/100/26 3301/101/26 3300/101/26
-f 3302/61/26 3300/101/26 3301/101/26
-f 3301/101/26 3303/61/26 3302/61/26
-f 3304/59/26 3302/61/26 3303/61/26
-f 3303/61/26 3305/102/26 3304/59/26
-f 3306/103/26 3304/59/26 3305/102/26
-f 3305/102/26 3307/103/26 3306/103/26
-f 3308/104/26 3306/103/26 3307/103/26
-f 3307/103/26 3309/105/26 3308/104/26
-f 3310/106/26 3308/104/26 3309/105/26
-f 3309/105/26 3311/106/26 3310/106/26
-f 3289/96/26 3310/106/26 3311/106/26
-f 3311/106/26 3290/96/26 3289/96/26
-f 3291/107/34 3290/108/34 3312/109/34
-f 3312/109/34 3313/110/34 3291/107/34
-f 3293/111/35 3291/107/35 3313/110/35
-f 3313/110/35 3314/112/35 3293/111/35
-f 3295/113/36 3293/111/36 3314/112/36
-f 3314/112/36 3315/114/36 3295/113/36
-f 3297/115/37 3295/113/37 3315/114/37
-f 3315/114/37 3316/116/37 3297/115/37
-f 3299/117/38 3297/115/38 3316/116/38
-f 3316/116/38 3317/118/38 3299/117/38
-f 3301/119/39 3299/117/39 3317/118/39
-f 3317/118/39 3318/120/39 3301/119/39
-f 3303/121/28 3301/119/28 3318/120/28
-f 3318/120/28 3319/122/28 3303/121/28
-f 3305/123/29 3303/121/29 3319/122/29
-f 3319/122/29 3320/124/29 3305/123/29
-f 3307/125/30 3305/123/30 3320/124/30
-f 3320/124/30 3321/126/30 3307/125/30
-f 3309/127/31 3307/128/31 3321/129/31
-f 3321/129/31 3322/130/31 3309/127/31
-f 3311/131/32 3309/127/32 3322/130/32
-f 3322/130/32 3323/132/32 3311/131/32
-f 3290/108/33 3311/131/33 3323/132/33
-f 3323/132/33 3312/109/33 3290/108/33
-f 3313/110/48 3312/109/48 3324/133/48
-f 3324/133/48 3325/134/48 3313/110/48
-f 3314/112/49 3313/110/49 3325/134/49
-f 3325/134/49 3326/135/49 3314/112/49
-f 3315/114/50 3314/112/50 3326/135/50
-f 3326/135/50 3327/136/50 3315/114/50
-f 3316/116/51 3315/114/51 3327/136/52
-f 3327/136/52 3328/137/51 3316/116/51
-f 3317/118/53 3316/116/53 3328/137/53
-f 3328/137/53 3329/138/53 3317/118/53
-f 3318/120/54 3317/118/54 3329/138/54
-f 3329/138/54 3330/139/54 3318/120/54
-f 3319/122/386 3318/120/40 3330/139/40
-f 3330/139/40 3331/140/40 3319/122/386
-f 3320/124/41 3319/122/41 3331/140/41
-f 3331/140/41 3332/141/41 3320/124/41
-f 3321/126/42 3320/124/42 3332/141/42
-f 3332/141/42 3333/142/43 3321/126/42
-f 3322/130/44 3321/129/44 3333/143/44
-f 3333/143/44 3334/144/44 3322/130/44
-f 3323/132/45 3322/130/45 3334/144/45
-f 3334/144/45 3335/145/45 3323/132/45
-f 3312/109/46 3323/132/385 3335/145/46
-f 3335/145/46 3324/133/46 3312/109/46
-f 3336/146/64 3337/147/64 3277/148/64
-f 3277/148/64 3276/149/64 3336/146/64
-f 3337/147/66 3338/150/66 3278/151/65
-f 3278/151/65 3277/148/65 3337/147/66
-f 3338/152/67 3339/153/67 3279/154/67
-f 3279/154/67 3278/155/67 3338/152/67
-f 3339/153/68 3340/142/68 3280/156/68
-f 3280/156/68 3279/154/68 3339/153/68
-f 3340/142/70 3341/157/70 3281/158/69
-f 3281/158/69 3280/156/69 3340/142/70
-f 3341/157/71 3342/159/71 3282/160/71
-f 3282/160/71 3281/158/71 3341/157/71
-f 3342/159/56 3343/161/56 3283/162/56
-f 3283/162/56 3282/160/56 3342/159/56
-f 3343/161/57 3344/163/57 3284/164/58
-f 3284/164/58 3283/162/58 3343/161/57
-f 3344/163/59 3345/165/59 3285/166/59
-f 3285/166/59 3284/164/59 3344/163/59
-f 3345/165/60 3346/167/60 3286/168/60
-f 3286/168/60 3285/166/60 3345/165/60
-f 3346/167/61 3347/169/61 3287/170/61
-f 3287/170/61 3286/168/62 3346/167/61
-f 3347/169/63 3336/146/63 3276/149/63
-f 3276/149/63 3287/170/63 3347/169/63
-f 3289/171/7 3288/172/8 3337/173/8
-f 3337/173/8 3336/174/7 3289/171/7
-f 3288/172/8 3292/175/9 3338/176/9
-f 3338/176/9 3337/173/8 3288/172/8
-f 3292/177/9 3294/178/10 3339/179/10
-f 3339/179/10 3338/180/9 3292/177/9
-f 3294/178/10 3296/86/11 3340/181/11
-f 3340/181/11 3339/179/10 3294/178/10
-f 3296/86/11 3298/182/12 3341/183/12
-f 3341/183/12 3340/181/11 3296/86/11
-f 3298/182/12 3300/184/1 3342/185/1
-f 3342/185/1 3341/183/12 3298/182/12
-f 3300/184/1 3302/186/2 3343/187/2
-f 3343/187/2 3342/185/1 3300/184/1
-f 3302/186/2 3304/188/3 3344/189/3
-f 3344/189/3 3343/187/2 3302/186/2
-f 3304/188/3 3306/190/4 3345/191/4
-f 3345/191/4 3344/189/3 3304/188/3
-f 3306/190/4 3308/76/5 3346/192/5
-f 3346/192/5 3345/191/4 3306/190/4
-f 3308/76/5 3310/193/6 3347/194/6
-f 3347/194/6 3346/192/5 3308/76/5
-f 3310/193/6 3289/171/7 3336/174/7
-f 3336/174/7 3347/194/6 3310/193/6
-f 3348/195/131 3349/196/131 3350/197/131
-f 3350/197/131 3351/198/131 3348/195/131
-f 3352/199/75 3353/200/75 3354/201/75
-f 3354/201/75 3355/202/75 3352/199/75
-f 3356/203/132 3357/204/132 3358/205/132
-f 3358/205/132 3359/206/132 3356/203/132
-f 3360/202/73 3361/201/73 3362/200/73
-f 3362/200/73 3363/199/73 3360/202/73
-f 3364/207/83 3365/207/83 3366/208/83
-f 3366/208/83 3367/209/83 3364/207/83
-f 3368/209/133 3369/210/133 3370/211/133
-f 3357/212/134 3371/196/134 3372/213/134
-f 3372/213/134 3358/214/134 3357/212/134
-f 3373/210/135 3374/209/135 3375/211/135
-f 3376/215/136 3377/216/136 3375/211/136
-f 3375/211/136 3374/209/136 3376/215/136
-f 3378/217/137 3379/218/137 3350/197/137
-f 3350/197/137 3349/196/137 3378/217/137
-f 3380/219/139 3381/220/139 3357/204/139
-f 3357/204/139 3356/203/139 3380/219/139
-f 3382/209/76 3383/208/76 3365/207/76
-f 3365/207/76 3364/207/76 3382/209/76
-f 3357/212/140 3381/214/140 3384/213/140
-f 3384/213/140 3371/196/140 3357/212/140
-f 3376/215/141 3368/209/141 3370/211/141
-f 3370/211/141 3377/216/141 3376/215/141
-f 3385/221/73 3372/222/73 3348/222/73
-f 3348/222/73 3351/221/73 3385/221/73
-f 3372/222/87 3371/203/87 3349/203/87
-f 3349/203/87 3348/222/87 3372/222/87
-f 3371/203/86 3384/206/86 3378/206/86
-f 3378/206/86 3349/203/86 3371/203/86
-f 3384/206/75 3386/223/75 3379/223/75
-f 3379/223/75 3378/206/75 3384/206/75
-f 3386/224/142 3387/225/142 3350/226/142
-f 3350/226/142 3379/224/142 3386/224/142
-f 3387/225/143 3385/224/143 3351/224/143
-f 3351/224/143 3350/226/143 3387/225/143
-f 3381/214/135 3388/227/135 3386/228/135
-f 3386/228/135 3384/213/135 3381/214/135
-f 3388/229/73 3381/220/73 3380/219/73
-f 3380/219/73 3389/221/73 3388/229/73
-f 3359/206/75 3358/205/75 3390/230/75
-f 3390/230/75 3391/223/75 3359/206/75
-f 3390/227/133 3358/214/133 3372/213/133
-f 3372/213/133 3385/228/133 3390/227/133
-f 3354/201/75 3353/200/75 3392/199/75
-f 3392/199/75 3393/202/75 3354/201/75
-f 3390/231/144 3385/224/144 3370/232/144
-f 3370/232/144 3369/233/144 3390/231/144
-f 3385/224/143 3387/225/143 3377/234/143
-f 3377/234/143 3370/232/143 3385/224/143
-f 3387/225/142 3386/224/142 3375/232/142
-f 3375/232/142 3377/234/142 3387/225/142
-f 3386/224/145 3388/231/145 3373/233/145
-f 3373/233/145 3375/232/145 3386/224/145
-f 3362/200/73 3361/201/73 3394/202/73
-f 3394/202/73 3395/199/73 3362/200/73
-f 3366/208/83 3365/207/83 3376/235/83
-f 3376/235/83 3374/236/83 3366/208/83
-f 3365/207/76 3383/208/76 3368/236/76
-f 3368/236/76 3376/235/76 3365/207/76
-f 3391/236/27 3390/231/27 3353/237/27
-f 3353/237/27 3352/238/27 3391/236/27
-f 3390/231/27 3369/233/27 3392/239/27
-f 3392/239/27 3353/237/27 3390/231/27
-f 3369/210/480 3368/209/480 3393/240/480
-f 3393/240/480 3392/241/480 3369/210/480
-f 3368/236/26 3383/208/26 3354/242/26
-f 3354/242/26 3393/238/26 3368/236/26
-f 3383/208/26 3382/209/26 3355/240/26
-f 3355/240/26 3354/242/26 3383/208/26
-f 3367/209/26 3366/208/26 3361/242/26
-f 3361/242/26 3360/240/26 3367/209/26
-f 3366/208/26 3374/236/26 3394/238/26
-f 3394/238/26 3361/242/26 3366/208/26
-f 3374/209/147 3373/210/147 3395/241/147
-f 3395/241/147 3394/240/147 3374/209/147
-f 3373/233/27 3388/231/27 3362/237/27
-f 3362/237/27 3395/239/27 3373/233/27
-f 3388/231/27 3389/236/27 3363/238/27
-f 3363/238/27 3362/237/27 3388/231/27
-f 3396/195/10 3397/196/10 3398/197/10
-f 3398/197/10 3399/198/10 3396/195/10
-f 3400/199/101 3401/200/100 3402/201/100
-f 3402/201/100 3403/202/101 3400/199/101
-f 3404/203/108 3405/204/108 3406/205/108
-f 3406/205/108 3407/206/108 3404/203/108
-f 3408/202/98 3409/201/97 3410/200/97
-f 3410/200/97 3411/199/98 3408/202/98
-f 3412/207/166 3413/207/166 3414/208/166
-f 3414/208/166 3415/209/166 3412/207/166
-f 3416/209/167 3417/210/167 3418/211/167
-f 3405/212/168 3419/196/168 3420/213/168
-f 3420/213/168 3406/214/168 3405/212/168
-f 3421/210/169 3422/209/169 3423/211/169
-f 3424/215/170 3425/216/170 3423/211/170
-f 3423/211/170 3422/209/170 3424/215/170
-f 3426/217/171 3427/218/171 3398/197/171
-f 3398/197/171 3397/196/171 3426/217/171
-f 3428/219/99 3429/220/99 3405/204/99
-f 3405/204/99 3404/203/99 3428/219/99
-f 3430/209/173 3431/208/173 3413/207/173
-f 3413/207/173 3412/207/173 3430/209/173
-f 3405/212/174 3429/214/174 3432/213/174
-f 3432/213/174 3419/196/174 3405/212/174
-f 3424/215/175 3416/209/175 3418/211/175
-f 3418/211/175 3425/216/175 3424/215/175
-f 3433/221/98 3420/222/98 3396/222/97
-f 3396/222/97 3399/221/97 3433/221/98
-f 3420/222/113 3419/203/113 3397/203/113
-f 3397/203/113 3396/222/113 3420/222/113
-f 3419/203/112 3432/206/112 3426/206/112
-f 3426/206/112 3397/203/112 3419/203/112
-f 3432/206/100 3434/223/100 3427/223/100
-f 3427/223/100 3426/206/100 3432/206/100
-f 3434/224/176 3435/225/176 3398/226/176
-f 3398/226/176 3427/224/176 3434/224/176
-f 3435/225/117 3433/224/117 3399/224/117
-f 3399/224/117 3398/226/117 3435/225/117
-f 3429/214/169 3436/227/169 3434/228/169
-f 3434/228/169 3432/213/169 3429/214/169
-f 3436/229/98 3429/220/98 3428/219/98
-f 3428/219/98 3437/221/98 3436/229/98
-f 3407/206/100 3406/205/100 3438/230/100
-f 3438/230/100 3439/223/100 3407/206/100
-f 3438/227/167 3406/214/167 3420/213/167
-f 3420/213/167 3433/228/167 3438/227/167
-f 3402/201/100 3401/200/100 3440/199/101
-f 3440/199/101 3441/202/101 3402/201/100
-f 3438/231/481 3433/224/481 3418/232/481
-f 3418/232/481 3417/233/481 3438/231/481
-f 3433/224/117 3435/225/117 3425/234/117
-f 3425/234/117 3418/232/117 3433/224/117
-f 3435/225/176 3434/224/176 3423/232/176
-f 3423/232/176 3425/234/176 3435/225/176
-f 3434/224/115 3436/231/115 3421/233/115
-f 3421/233/115 3423/232/115 3434/224/115
-f 3410/200/97 3409/201/97 3442/202/98
-f 3442/202/98 3443/199/98 3410/200/97
-f 3414/208/166 3413/207/166 3424/235/166
-f 3424/235/166 3422/236/166 3414/208/166
-f 3413/207/173 3431/208/173 3416/236/173
-f 3416/236/173 3424/235/173 3413/207/173
-f 3439/236/27 3438/231/27 3401/237/27
-f 3401/237/27 3400/238/27 3439/236/27
-f 3438/231/27 3417/233/27 3440/239/27
-f 3440/239/27 3401/237/27 3438/231/27
-f 3417/210/178 3416/209/178 3441/240/178
-f 3441/240/178 3440/241/178 3417/210/178
-f 3416/236/26 3431/208/26 3402/242/26
-f 3402/242/26 3441/238/26 3416/236/26
-f 3431/208/26 3430/209/26 3403/240/26
-f 3403/240/26 3402/242/26 3431/208/26
-f 3415/209/26 3414/208/26 3409/242/26
-f 3409/242/26 3408/240/26 3415/209/26
-f 3414/208/26 3422/236/26 3442/238/26
-f 3442/238/26 3409/242/26 3414/208/26
-f 3422/209/179 3421/210/179 3443/241/179
-f 3443/241/179 3442/240/179 3422/209/179
-f 3421/233/27 3436/231/27 3410/237/27
-f 3410/237/27 3443/239/27 3421/233/27
-f 3436/231/27 3437/236/27 3411/238/27
-f 3411/238/27 3410/237/27 3436/231/27
-f 3444/243/183 3445/244/183 3446/245/183
-f 3446/245/183 3447/246/183 3444/243/183
-f 3444/247/184 3447/248/184 3448/249/184
-f 3448/249/184 3449/250/184 3444/247/184
-f 3447/246/185 3446/245/185 3450/251/185
-f 3450/251/185 3448/252/185 3447/246/185
-f 3446/248/186 3445/247/186 3451/250/186
-f 3451/250/186 3450/249/186 3446/248/186
-f 3452/195/164 3453/196/164 3454/197/164
-f 3454/197/164 3455/198/164 3452/195/164
-f 3456/199/101 3457/200/100 3458/201/100
-f 3458/201/100 3459/202/101 3456/199/101
-f 3460/203/108 3461/204/108 3462/205/108
-f 3462/205/108 3463/206/108 3460/203/108
-f 3464/202/98 3465/201/97 3466/200/97
-f 3466/200/97 3467/199/98 3464/202/98
-f 3468/207/166 3469/207/166 3470/208/166
-f 3470/208/166 3471/209/166 3468/207/166
-f 3472/209/167 3473/210/167 3474/211/167
-f 3461/212/168 3475/196/168 3476/213/168
-f 3476/213/168 3462/214/168 3461/212/168
-f 3477/210/169 3478/209/169 3479/211/169
-f 3480/215/170 3481/216/170 3479/211/170
-f 3479/211/170 3478/209/170 3480/215/170
-f 3482/217/171 3483/218/171 3454/197/171
-f 3454/197/171 3453/196/171 3482/217/171
-f 3484/219/172 3485/220/172 3461/204/99
-f 3461/204/99 3460/203/99 3484/219/172
-f 3486/209/173 3487/208/173 3469/207/173
-f 3469/207/173 3468/207/173 3486/209/173
-f 3461/212/174 3485/214/174 3488/213/174
-f 3488/213/174 3475/196/174 3461/212/174
-f 3480/215/175 3472/209/175 3474/211/175
-f 3474/211/175 3481/216/175 3480/215/175
-f 3489/221/98 3476/222/98 3452/222/98
-f 3452/222/98 3455/221/98 3489/221/98
-f 3476/222/113 3475/203/113 3453/203/113
-f 3453/203/113 3452/222/113 3476/222/113
-f 3475/203/112 3488/206/112 3482/206/112
-f 3482/206/112 3453/203/112 3475/203/112
-f 3488/206/100 3490/223/100 3483/223/100
-f 3483/223/100 3482/206/100 3488/206/100
-f 3490/224/176 3491/225/176 3454/226/176
-f 3454/226/176 3483/224/176 3490/224/176
-f 3491/225/117 3489/224/117 3455/224/117
-f 3455/224/117 3454/226/117 3491/225/117
-f 3485/214/169 3492/227/169 3490/228/169
-f 3490/228/169 3488/213/169 3485/214/169
-f 3492/229/125 3485/220/125 3484/219/97
-f 3484/219/97 3493/221/97 3492/229/125
-f 3463/206/100 3462/205/101 3494/230/101
-f 3494/230/101 3495/223/100 3463/206/100
-f 3494/227/167 3462/214/167 3476/213/167
-f 3476/213/167 3489/228/167 3494/227/167
-f 3458/201/100 3457/200/100 3496/199/101
-f 3496/199/101 3497/202/101 3458/201/100
-f 3494/231/481 3489/224/481 3474/232/481
-f 3474/232/481 3473/233/481 3494/231/481
-f 3489/224/117 3491/225/117 3481/234/117
-f 3481/234/117 3474/232/117 3489/224/117
-f 3491/225/176 3490/224/176 3479/232/176
-f 3479/232/176 3481/234/176 3491/225/176
-f 3490/224/115 3492/231/115 3477/233/115
-f 3477/233/115 3479/232/115 3490/224/115
-f 3466/200/97 3465/201/97 3498/202/98
-f 3498/202/98 3499/199/98 3466/200/97
-f 3470/208/166 3469/207/166 3480/235/166
-f 3480/235/166 3478/236/166 3470/208/166
-f 3469/207/173 3487/208/173 3472/236/173
-f 3472/236/173 3480/235/173 3469/207/173
-f 3495/236/27 3494/231/27 3457/237/27
-f 3457/237/27 3456/238/27 3495/236/27
-f 3494/231/27 3473/233/27 3496/239/27
-f 3496/239/27 3457/237/27 3494/231/27
-f 3473/210/178 3472/209/178 3497/240/178
-f 3497/240/178 3496/241/178 3473/210/178
-f 3472/236/26 3487/208/26 3458/242/26
-f 3458/242/26 3497/238/26 3472/236/26
-f 3487/208/26 3486/209/26 3459/240/26
-f 3459/240/26 3458/242/26 3487/208/26
-f 3471/209/26 3470/208/26 3465/242/26
-f 3465/242/26 3464/240/26 3471/209/26
-f 3470/208/26 3478/236/26 3498/238/26
-f 3498/238/26 3465/242/26 3470/208/26
-f 3478/209/179 3477/210/179 3499/241/179
-f 3499/241/179 3498/240/179 3478/209/179
-f 3477/233/27 3492/231/27 3466/237/27
-f 3466/237/27 3499/239/27 3477/233/27
-f 3492/231/27 3493/236/27 3467/238/27
-f 3467/238/27 3466/237/27 3492/231/27
-f 3500/243/156 3501/244/156 3502/245/156
-f 3502/245/156 3503/246/156 3500/243/156
-f 3500/247/157 3503/248/157 3504/249/157
-f 3504/249/157 3505/250/157 3500/247/157
-f 3503/246/158 3502/245/158 3506/251/158
-f 3506/251/158 3504/252/158 3503/246/158
-f 3502/248/159 3501/247/159 3507/250/159
-f 3507/250/159 3506/249/159 3502/248/159
-f 3508/195/72 3509/196/72 3510/197/72
-f 3510/197/72 3511/198/72 3508/195/72
-f 3512/199/73 3513/200/73 3514/201/73
-f 3514/201/73 3515/202/73 3512/199/73
-f 3516/203/74 3517/204/74 3518/205/74
-f 3518/205/74 3519/206/74 3516/203/74
-f 3520/202/75 3521/201/75 3522/200/75
-f 3522/200/75 3523/199/75 3520/202/75
-f 3524/207/76 3525/207/76 3526/208/76
-f 3526/208/76 3527/209/76 3524/207/76
-f 3528/209/77 3529/210/77 3530/211/77
-f 3517/212/78 3531/196/78 3532/213/78
-f 3532/213/78 3518/214/78 3517/212/78
-f 3533/210/79 3534/209/79 3535/211/79
-f 3536/215/80 3537/216/80 3535/211/80
-f 3535/211/80 3534/209/80 3536/215/80
-f 3538/217/81 3539/218/81 3510/197/482
-f 3510/197/482 3509/196/482 3538/217/81
-f 3540/219/82 3541/220/82 3517/204/82
-f 3517/204/82 3516/203/82 3540/219/82
-f 3542/209/83 3543/208/83 3525/207/83
-f 3525/207/83 3524/207/83 3542/209/83
-f 3517/212/84 3541/214/84 3544/213/84
-f 3544/213/84 3531/196/84 3517/212/84
-f 3536/215/85 3528/209/85 3530/211/85
-f 3530/211/85 3537/216/85 3536/215/85
-f 3545/221/75 3532/222/75 3508/222/75
-f 3508/222/75 3511/221/75 3545/221/75
-f 3532/222/86 3531/203/86 3509/203/86
-f 3509/203/86 3508/222/86 3532/222/86
-f 3531/203/87 3544/206/87 3538/206/87
-f 3538/206/87 3509/203/87 3531/203/87
-f 3544/206/73 3546/223/73 3539/223/73
-f 3539/223/73 3538/206/73 3544/206/73
-f 3546/224/88 3547/225/88 3510/226/88
-f 3510/226/88 3539/224/88 3546/224/88
-f 3547/225/89 3545/224/89 3511/224/89
-f 3511/224/89 3510/226/89 3547/225/89
-f 3541/214/79 3548/227/79 3546/228/79
-f 3546/228/79 3544/213/79 3541/214/79
-f 3548/229/75 3541/220/75 3540/219/75
-f 3540/219/75 3549/221/75 3548/229/75
-f 3519/206/73 3518/205/73 3550/230/73
-f 3550/230/73 3551/223/73 3519/206/73
-f 3550/227/77 3518/214/77 3532/213/77
-f 3532/213/77 3545/228/77 3550/227/77
-f 3514/201/73 3513/200/73 3552/199/73
-f 3552/199/73 3553/202/73 3514/201/73
-f 3550/231/90 3545/224/90 3530/232/90
-f 3530/232/90 3529/233/90 3550/231/90
-f 3545/224/89 3547/225/89 3537/234/89
-f 3537/234/89 3530/232/89 3545/224/89
-f 3547/225/88 3546/224/88 3535/232/88
-f 3535/232/88 3537/234/88 3547/225/88
-f 3546/224/92 3548/231/92 3533/233/92
-f 3533/233/92 3535/232/92 3546/224/92
-f 3522/200/75 3521/201/75 3554/202/75
-f 3554/202/75 3555/199/75 3522/200/75
-f 3526/208/76 3525/207/76 3536/235/76
-f 3536/235/76 3534/236/76 3526/208/76
-f 3525/207/83 3543/208/83 3528/236/83
-f 3528/236/83 3536/235/83 3525/207/83
-f 3551/236/27 3550/231/27 3513/237/27
-f 3513/237/27 3512/238/27 3551/236/27
-f 3550/231/27 3529/233/27 3552/239/27
-f 3552/239/27 3513/237/27 3550/231/27
-f 3529/210/94 3528/209/94 3553/240/94
-f 3553/240/94 3552/241/94 3529/210/94
-f 3528/236/26 3543/208/26 3514/242/26
-f 3514/242/26 3553/238/26 3528/236/26
-f 3543/208/26 3542/209/26 3515/240/26
-f 3515/240/26 3514/242/26 3543/208/26
-f 3527/209/26 3526/208/26 3521/242/26
-f 3521/242/26 3520/240/26 3527/209/26
-f 3526/208/26 3534/236/26 3554/238/26
-f 3554/238/26 3521/242/26 3526/208/26
-f 3534/209/95 3533/210/95 3555/241/95
-f 3555/241/95 3554/240/95 3534/209/95
-f 3533/233/27 3548/231/27 3522/237/27
-f 3522/237/27 3555/239/27 3533/233/27
-f 3548/231/27 3549/236/27 3523/238/27
-f 3523/238/27 3522/237/27 3548/231/27
-f 3556/243/154 3557/244/154 3558/245/154
-f 3558/245/154 3559/246/154 3556/243/154
-f 3556/247/7 3559/248/7 3560/249/7
-f 3560/249/7 3561/250/7 3556/247/7
-f 3559/246/155 3558/245/155 3562/251/155
-f 3562/251/155 3560/252/155 3559/246/155
-f 3558/248/1 3557/247/1 3563/250/1
-f 3563/250/1 3562/249/1 3558/248/1
-f 3564/243/180 3565/244/180 3566/245/180
-f 3566/245/180 3567/246/180 3564/243/180
-f 3564/247/153 3567/248/153 3568/249/153
-f 3568/249/153 3569/250/153 3564/247/153
-f 3567/246/181 3566/245/181 3570/251/181
-f 3570/251/181 3568/252/181 3567/246/181
-f 3566/248/151 3565/247/151 3571/250/151
-f 3571/250/151 3570/249/151 3566/248/151
-f 3572/243/148 3573/244/148 3574/245/148
-f 3574/245/148 3575/246/148 3572/243/148
-f 3572/247/1 3575/248/1 3576/249/1
-f 3576/249/1 3577/250/1 3572/247/1
-f 3575/246/149 3574/245/149 3578/251/149
-f 3578/251/149 3576/252/149 3575/246/149
-f 3574/248/7 3573/247/7 3579/250/7
-f 3579/250/7 3578/249/7 3574/248/7
-f 3580/243/127 3581/244/127 3582/245/127
-f 3582/245/127 3583/246/127 3580/243/127
-f 3580/247/128 3583/248/128 3584/249/128
-f 3584/249/128 3585/250/128 3580/247/128
-f 3583/246/129 3582/245/129 3586/251/129
-f 3586/251/129 3584/252/129 3583/246/129
-f 3582/248/130 3581/247/130 3587/250/130
-f 3587/250/130 3586/249/130 3582/248/130
-f 3588/243/187 3589/244/187 3590/245/187
-f 3590/245/187 3591/246/187 3588/243/187
-f 3588/247/163 3591/248/163 3592/249/163
-f 3592/249/163 3593/250/163 3588/247/163
-f 3591/246/188 3590/245/188 3594/251/188
-f 3594/251/188 3592/252/188 3591/246/188
-f 3590/248/161 3589/247/161 3595/250/161
-f 3595/250/161 3594/249/161 3590/248/161
-f 3596/195/72 3597/196/72 3598/197/72
-f 3598/197/72 3599/198/72 3596/195/72
-f 3600/199/73 3601/200/73 3602/201/73
-f 3602/201/73 3603/202/73 3600/199/73
-f 3604/203/74 3605/204/74 3606/205/74
-f 3606/205/74 3607/206/74 3604/203/74
-f 3608/202/75 3609/201/75 3610/200/75
-f 3610/200/75 3611/199/75 3608/202/75
-f 3612/207/76 3613/207/76 3614/208/76
-f 3614/208/76 3615/209/76 3612/207/76
-f 3616/209/77 3617/210/77 3618/211/77
-f 3605/212/78 3619/196/78 3620/213/78
-f 3620/213/78 3606/214/78 3605/212/78
-f 3621/210/79 3622/209/79 3623/211/79
-f 3624/215/80 3625/216/80 3623/211/80
-f 3623/211/80 3622/209/80 3624/215/80
-f 3626/217/81 3627/218/81 3598/197/482
-f 3598/197/482 3597/196/482 3626/217/81
-f 3628/219/82 3629/220/82 3605/204/82
-f 3605/204/82 3604/203/82 3628/219/82
-f 3630/209/83 3631/208/83 3613/207/83
-f 3613/207/83 3612/207/83 3630/209/83
-f 3605/212/84 3629/214/84 3632/213/84
-f 3632/213/84 3619/196/84 3605/212/84
-f 3624/215/85 3616/209/85 3618/211/85
-f 3618/211/85 3625/216/85 3624/215/85
-f 3633/221/75 3620/222/75 3596/222/75
-f 3596/222/75 3599/221/75 3633/221/75
-f 3620/222/86 3619/203/86 3597/203/86
-f 3597/203/86 3596/222/86 3620/222/86
-f 3619/203/87 3632/206/87 3626/206/87
-f 3626/206/87 3597/203/87 3619/203/87
-f 3632/206/73 3634/223/73 3627/223/73
-f 3627/223/73 3626/206/73 3632/206/73
-f 3634/224/88 3635/225/88 3598/226/88
-f 3598/226/88 3627/224/88 3634/224/88
-f 3635/225/89 3633/224/89 3599/224/89
-f 3599/224/89 3598/226/89 3635/225/89
-f 3629/214/79 3636/227/79 3634/228/79
-f 3634/228/79 3632/213/79 3629/214/79
-f 3636/229/75 3629/220/75 3628/219/75
-f 3628/219/75 3637/221/75 3636/229/75
-f 3607/206/73 3606/205/73 3638/230/73
-f 3638/230/73 3639/223/73 3607/206/73
-f 3638/227/77 3606/214/77 3620/213/77
-f 3620/213/77 3633/228/77 3638/227/77
-f 3602/201/73 3601/200/73 3640/199/73
-f 3640/199/73 3641/202/73 3602/201/73
-f 3638/231/90 3633/224/90 3618/232/90
-f 3618/232/90 3617/233/90 3638/231/90
-f 3633/224/89 3635/225/89 3625/234/89
-f 3625/234/89 3618/232/89 3633/224/89
-f 3635/225/88 3634/224/88 3623/232/88
-f 3623/232/88 3625/234/88 3635/225/88
-f 3634/224/92 3636/231/92 3621/233/92
-f 3621/233/92 3623/232/92 3634/224/92
-f 3610/200/75 3609/201/75 3642/202/75
-f 3642/202/75 3643/199/75 3610/200/75
-f 3614/208/76 3613/207/76 3624/235/76
-f 3624/235/76 3622/236/76 3614/208/76
-f 3613/207/83 3631/208/83 3616/236/83
-f 3616/236/83 3624/235/83 3613/207/83
-f 3639/236/27 3638/231/27 3601/237/27
-f 3601/237/27 3600/238/27 3639/236/27
-f 3638/231/27 3617/233/27 3640/239/27
-f 3640/239/27 3601/237/27 3638/231/27
-f 3617/210/94 3616/209/94 3641/240/94
-f 3641/240/94 3640/241/94 3617/210/94
-f 3616/236/26 3631/208/26 3602/242/26
-f 3602/242/26 3641/238/26 3616/236/26
-f 3631/208/26 3630/209/26 3603/240/26
-f 3603/240/26 3602/242/26 3631/208/26
-f 3615/209/26 3614/208/26 3609/242/26
-f 3609/242/26 3608/240/26 3615/209/26
-f 3614/208/26 3622/236/26 3642/238/26
-f 3642/238/26 3609/242/26 3614/208/26
-f 3622/209/95 3621/210/95 3643/241/95
-f 3643/241/95 3642/240/95 3622/209/95
-f 3621/233/27 3636/231/27 3610/237/27
-f 3610/237/27 3643/239/27 3621/233/27
-f 3636/231/27 3637/236/27 3611/238/27
-f 3611/238/27 3610/237/27 3636/231/27
-f 3644/195/124 3645/196/96 3646/197/96
-f 3646/197/96 3647/198/124 3644/195/124
-f 3648/199/125 3649/200/125 3650/201/125
-f 3650/201/125 3651/202/125 3648/199/125
-f 3652/203/99 3653/204/99 3654/205/99
-f 3654/205/99 3655/206/99 3652/203/99
-f 3656/202/165 3657/201/165 3658/200/165
-f 3658/200/165 3659/199/165 3656/202/165
-f 3660/207/102 3661/207/102 3662/208/102
-f 3662/208/102 3663/209/102 3660/207/102
-f 3664/209/103 3665/210/103 3666/211/103
-f 3653/212/104 3667/196/104 3668/213/104
-f 3668/213/104 3654/214/104 3653/212/104
-f 3669/210/105 3670/209/105 3671/211/105
-f 3672/215/106 3673/216/106 3671/211/106
-f 3671/211/106 3670/209/106 3672/215/106
-f 3674/217/107 3675/218/107 3646/197/107
-f 3646/197/107 3645/196/107 3674/217/107
-f 3676/219/126 3677/220/108 3653/204/108
-f 3653/204/108 3652/203/108 3676/219/126
-f 3678/209/109 3679/208/109 3661/207/109
-f 3661/207/109 3660/207/109 3678/209/109
-f 3653/212/110 3677/214/110 3680/213/110
-f 3680/213/110 3667/196/110 3653/212/110
-f 3672/215/111 3664/209/111 3666/211/111
-f 3666/211/111 3673/216/111 3672/215/111
-f 3681/221/165 3668/222/165 3644/222/165
-f 3644/222/165 3647/221/165 3681/221/165
-f 3668/222/112 3667/203/112 3645/203/112
-f 3645/203/112 3644/222/112 3668/222/112
-f 3667/203/113 3680/206/113 3674/206/113
-f 3674/206/113 3645/203/113 3667/203/113
-f 3680/206/125 3682/223/125 3675/223/125
-f 3675/223/125 3674/206/125 3680/206/125
-f 3682/224/114 3683/225/114 3646/226/114
-f 3646/226/114 3675/224/114 3682/224/114
-f 3683/225/115 3681/224/115 3647/224/115
-f 3647/224/115 3646/226/115 3683/225/115
-f 3677/214/105 3684/227/105 3682/228/105
-f 3682/228/105 3680/213/105 3677/214/105
-f 3684/229/165 3677/220/165 3676/219/165
-f 3676/219/165 3685/221/165 3684/229/165
-f 3655/206/125 3654/205/125 3686/230/125
-f 3686/230/125 3687/223/125 3655/206/125
-f 3686/227/103 3654/214/103 3668/213/103
-f 3668/213/103 3681/228/103 3686/227/103
-f 3650/201/125 3649/200/125 3688/199/125
-f 3688/199/125 3689/202/125 3650/201/125
-f 3686/231/483 3681/224/483 3666/232/483
-f 3666/232/483 3665/233/483 3686/231/483
-f 3681/224/115 3683/225/115 3673/234/115
-f 3673/234/115 3666/232/115 3681/224/115
-f 3683/225/114 3682/224/114 3671/232/114
-f 3671/232/114 3673/234/114 3683/225/114
-f 3682/224/117 3684/231/117 3669/233/117
-f 3669/233/117 3671/232/117 3682/224/117
-f 3658/200/165 3657/201/165 3690/202/165
-f 3690/202/165 3691/199/165 3658/200/165
-f 3662/208/102 3661/207/102 3672/235/102
-f 3672/235/102 3670/236/102 3662/208/102
-f 3661/207/109 3679/208/109 3664/236/109
-f 3664/236/109 3672/235/109 3661/207/109
-f 3687/236/27 3686/231/27 3649/237/27
-f 3649/237/27 3648/238/27 3687/236/27
-f 3686/231/27 3665/233/27 3688/239/27
-f 3688/239/27 3649/237/27 3686/231/27
-f 3665/210/118 3664/209/118 3689/240/118
-f 3689/240/118 3688/241/118 3665/210/118
-f 3664/236/26 3679/208/26 3650/242/26
-f 3650/242/26 3689/238/26 3664/236/26
-f 3679/208/26 3678/209/26 3651/240/26
-f 3651/240/26 3650/242/26 3679/208/26
-f 3663/209/26 3662/208/26 3657/242/26
-f 3657/242/26 3656/240/26 3663/209/26
-f 3662/208/26 3670/236/26 3690/238/26
-f 3690/238/26 3657/242/26 3662/208/26
-f 3670/209/119 3669/210/119 3691/241/119
-f 3691/241/119 3690/240/119 3670/209/119
-f 3669/233/27 3684/231/27 3658/237/27
-f 3658/237/27 3691/239/27 3669/233/27
-f 3684/231/27 3685/236/27 3659/238/27
-f 3659/238/27 3658/237/27 3684/231/27
-f 3692/243/150 3693/244/150 3694/245/150
-f 3694/245/150 3695/246/150 3692/243/150
-f 3692/247/151 3695/248/151 3696/249/151
-f 3696/249/151 3697/250/151 3692/247/151
-f 3695/246/152 3694/245/152 3698/251/152
-f 3698/251/152 3696/252/152 3695/246/152
-f 3694/248/153 3693/247/153 3699/250/153
-f 3699/250/153 3698/249/153 3694/248/153
-f 3700/195/96 3701/196/124 3702/197/124
-f 3702/197/124 3703/198/96 3700/195/96
-f 3704/199/125 3705/200/125 3706/201/125
-f 3706/201/125 3707/202/125 3704/199/125
-f 3708/203/99 3709/204/99 3710/205/99
-f 3710/205/99 3711/206/99 3708/203/99
-f 3712/202/165 3713/201/165 3714/200/165
-f 3714/200/165 3715/199/165 3712/202/165
-f 3716/207/102 3717/207/102 3718/208/102
-f 3718/208/102 3719/209/102 3716/207/102
-f 3720/209/103 3721/210/103 3722/211/103
-f 3709/212/104 3723/196/104 3724/213/104
-f 3724/213/104 3710/214/104 3709/212/104
-f 3725/210/105 3726/209/105 3727/211/105
-f 3728/215/106 3729/216/106 3727/211/106
-f 3727/211/106 3726/209/106 3728/215/106
-f 3730/217/107 3731/218/107 3702/197/107
-f 3702/197/107 3701/196/107 3730/217/107
-f 3732/219/108 3733/220/108 3709/204/126
-f 3709/204/126 3708/203/108 3732/219/108
-f 3734/209/109 3735/208/109 3717/207/109
-f 3717/207/109 3716/207/109 3734/209/109
-f 3709/212/110 3733/214/110 3736/213/110
-f 3736/213/110 3723/196/110 3709/212/110
-f 3728/215/111 3720/209/111 3722/211/111
-f 3722/211/111 3729/216/111 3728/215/111
-f 3737/221/165 3724/222/165 3700/222/165
-f 3700/222/165 3703/221/165 3737/221/165
-f 3724/222/112 3723/203/112 3701/203/112
-f 3701/203/112 3700/222/112 3724/222/112
-f 3723/203/113 3736/206/113 3730/206/113
-f 3730/206/113 3701/203/113 3723/203/113
-f 3736/206/125 3738/223/125 3731/223/125
-f 3731/223/125 3730/206/125 3736/206/125
-f 3738/224/114 3739/225/114 3702/226/114
-f 3702/226/114 3731/224/114 3738/224/114
-f 3739/225/115 3737/224/115 3703/224/115
-f 3703/224/115 3702/226/115 3739/225/115
-f 3733/214/105 3740/227/105 3738/228/105
-f 3738/228/105 3736/213/105 3733/214/105
-f 3740/229/165 3733/220/165 3732/219/165
-f 3732/219/165 3741/221/165 3740/229/165
-f 3711/206/125 3710/205/125 3742/230/125
-f 3742/230/125 3743/223/125 3711/206/125
-f 3742/227/103 3710/214/103 3724/213/103
-f 3724/213/103 3737/228/103 3742/227/103
-f 3706/201/125 3705/200/125 3744/199/125
-f 3744/199/125 3745/202/125 3706/201/125
-f 3742/231/483 3737/224/483 3722/232/483
-f 3722/232/483 3721/233/483 3742/231/483
-f 3737/224/115 3739/225/115 3729/234/115
-f 3729/234/115 3722/232/115 3737/224/115
-f 3739/225/114 3738/224/114 3727/232/114
-f 3727/232/114 3729/234/114 3739/225/114
-f 3738/224/117 3740/231/117 3725/233/117
-f 3725/233/117 3727/232/117 3738/224/117
-f 3714/200/165 3713/201/165 3746/202/165
-f 3746/202/165 3747/199/165 3714/200/165
-f 3718/208/102 3717/207/102 3728/235/102
-f 3728/235/102 3726/236/102 3718/208/102
-f 3717/207/109 3735/208/109 3720/236/109
-f 3720/236/109 3728/235/109 3717/207/109
-f 3743/236/27 3742/231/27 3705/237/27
-f 3705/237/27 3704/238/27 3743/236/27
-f 3742/231/27 3721/233/27 3744/239/27
-f 3744/239/27 3705/237/27 3742/231/27
-f 3721/210/118 3720/209/118 3745/240/118
-f 3745/240/118 3744/241/118 3721/210/118
-f 3720/236/26 3735/208/26 3706/242/26
-f 3706/242/26 3745/238/26 3720/236/26
-f 3735/208/26 3734/209/26 3707/240/26
-f 3707/240/26 3706/242/26 3735/208/26
-f 3719/209/26 3718/208/26 3713/242/26
-f 3713/242/26 3712/240/26 3719/209/26
-f 3718/208/26 3726/236/26 3746/238/26
-f 3746/238/26 3713/242/26 3718/208/26
-f 3726/209/119 3725/210/119 3747/241/119
-f 3747/241/119 3746/240/119 3726/209/119
-f 3725/233/27 3740/231/27 3714/237/27
-f 3714/237/27 3747/239/27 3725/233/27
-f 3740/231/27 3741/236/27 3715/238/27
-f 3715/238/27 3714/237/27 3740/231/27
-f 3748/243/120 3749/244/120 3750/245/120
-f 3750/245/120 3751/246/120 3748/243/120
-f 3748/247/121 3751/248/121 3752/249/121
-f 3752/249/121 3753/250/121 3748/247/121
-f 3751/246/122 3750/245/122 3754/251/122
-f 3754/251/122 3752/252/122 3751/246/122
-f 3750/248/123 3749/247/123 3755/250/123
-f 3755/250/123 3754/249/123 3750/248/123
-f 3756/195/131 3757/196/131 3758/197/131
-f 3758/197/131 3759/198/131 3756/195/131
-f 3760/199/75 3761/200/75 3762/201/75
-f 3762/201/75 3763/202/75 3760/199/75
-f 3764/203/132 3765/204/132 3766/205/132
-f 3766/205/132 3767/206/132 3764/203/132
-f 3768/202/73 3769/201/73 3770/200/73
-f 3770/200/73 3771/199/73 3768/202/73
-f 3772/207/83 3773/207/83 3774/208/83
-f 3774/208/83 3775/209/83 3772/207/83
-f 3776/209/133 3777/210/133 3778/211/133
-f 3765/212/134 3779/196/134 3780/213/134
-f 3780/213/134 3766/214/134 3765/212/134
-f 3781/210/135 3782/209/135 3783/211/135
-f 3784/215/136 3785/216/136 3783/211/136
-f 3783/211/136 3782/209/136 3784/215/136
-f 3786/217/137 3787/218/137 3758/197/137
-f 3758/197/137 3757/196/137 3786/217/137
-f 3788/219/139 3789/220/139 3765/204/139
-f 3765/204/139 3764/203/139 3788/219/139
-f 3790/209/76 3791/208/76 3773/207/76
-f 3773/207/76 3772/207/76 3790/209/76
-f 3765/212/140 3789/214/140 3792/213/140
-f 3792/213/140 3779/196/140 3765/212/140
-f 3784/215/141 3776/209/141 3778/211/141
-f 3778/211/141 3785/216/141 3784/215/141
-f 3793/221/73 3780/222/73 3756/222/73
-f 3756/222/73 3759/221/73 3793/221/73
-f 3780/222/87 3779/203/87 3757/203/87
-f 3757/203/87 3756/222/87 3780/222/87
-f 3779/203/86 3792/206/86 3786/206/86
-f 3786/206/86 3757/203/86 3779/203/86
-f 3792/206/75 3794/223/75 3787/223/75
-f 3787/223/75 3786/206/75 3792/206/75
-f 3794/224/142 3795/225/142 3758/226/142
-f 3758/226/142 3787/224/142 3794/224/142
-f 3795/225/143 3793/224/143 3759/224/143
-f 3759/224/143 3758/226/143 3795/225/143
-f 3789/214/135 3796/227/135 3794/228/135
-f 3794/228/135 3792/213/135 3789/214/135
-f 3796/229/73 3789/220/73 3788/219/73
-f 3788/219/73 3797/221/73 3796/229/73
-f 3767/206/75 3766/205/75 3798/230/75
-f 3798/230/75 3799/223/75 3767/206/75
-f 3798/227/133 3766/214/133 3780/213/133
-f 3780/213/133 3793/228/133 3798/227/133
-f 3762/201/75 3761/200/75 3800/199/75
-f 3800/199/75 3801/202/75 3762/201/75
-f 3798/231/144 3793/224/144 3778/232/144
-f 3778/232/144 3777/233/144 3798/231/144
-f 3793/224/143 3795/225/143 3785/234/143
-f 3785/234/143 3778/232/143 3793/224/143
-f 3795/225/142 3794/224/142 3783/232/142
-f 3783/232/142 3785/234/142 3795/225/142
-f 3794/224/145 3796/231/145 3781/233/145
-f 3781/233/145 3783/232/145 3794/224/145
-f 3770/200/73 3769/201/73 3802/202/73
-f 3802/202/73 3803/199/73 3770/200/73
-f 3774/208/83 3773/207/83 3784/235/83
-f 3784/235/83 3782/236/83 3774/208/83
-f 3773/207/76 3791/208/76 3776/236/76
-f 3776/236/76 3784/235/76 3773/207/76
-f 3799/236/27 3798/231/27 3761/237/27
-f 3761/237/27 3760/238/27 3799/236/27
-f 3798/231/27 3777/233/27 3800/239/27
-f 3800/239/27 3761/237/27 3798/231/27
-f 3777/210/480 3776/209/480 3801/240/480
-f 3801/240/480 3800/241/480 3777/210/480
-f 3776/236/26 3791/208/26 3762/242/26
-f 3762/242/26 3801/238/26 3776/236/26
-f 3791/208/26 3790/209/26 3763/240/26
-f 3763/240/26 3762/242/26 3791/208/26
-f 3775/209/26 3774/208/26 3769/242/26
-f 3769/242/26 3768/240/26 3775/209/26
-f 3774/208/26 3782/236/26 3802/238/26
-f 3802/238/26 3769/242/26 3774/208/26
-f 3782/209/147 3781/210/147 3803/241/147
-f 3803/241/147 3802/240/147 3782/209/147
-f 3781/233/27 3796/231/27 3770/237/27
-f 3770/237/27 3803/239/27 3781/233/27
-f 3796/231/27 3797/236/27 3771/238/27
-f 3771/238/27 3770/237/27 3796/231/27
-f 3804/243/160 3805/244/160 3806/245/160
-f 3806/245/160 3807/246/160 3804/243/160
-f 3804/247/161 3807/248/161 3808/249/161
-f 3808/249/161 3809/250/161 3804/247/161
-f 3807/246/162 3806/245/162 3810/251/162
-f 3810/251/162 3808/252/162 3807/246/162
-f 3806/248/163 3805/247/163 3811/250/163
-f 3811/250/163 3810/249/163 3806/248/163
-f 3812/253/19 3813/254/19 3814/255/19
-f 3814/255/19 3815/256/19 3812/253/19
-f 3816/257/20 3812/253/20 3815/256/20
-f 3815/256/20 3817/258/20 3816/257/20
-f 3818/259/21 3816/257/21 3817/258/21
-f 3817/258/21 3819/260/21 3818/259/21
-f 3820/261/22 3818/262/191 3819/263/22
-f 3819/263/22 3821/264/22 3820/261/22
-f 3822/265/23 3820/261/23 3821/264/23
-f 3821/264/23 3823/266/23 3822/265/23
-f 3824/267/24 3822/265/24 3823/266/24
-f 3823/266/24 3825/268/24 3824/267/24
-f 3826/269/192 3824/267/13 3825/268/13
-f 3825/268/13 3827/270/192 3826/269/192
-f 3828/271/14 3826/269/14 3827/270/14
-f 3827/270/14 3829/272/14 3828/271/14
-f 3830/273/118 3828/271/15 3829/272/15
-f 3829/272/15 3831/274/15 3830/273/118
-f 3832/275/16 3830/273/16 3831/274/16
-f 3831/274/16 3833/276/16 3832/275/16
-f 3834/277/17 3832/275/17 3833/276/17
-f 3833/276/17 3835/278/17 3834/277/17
-f 3813/254/18 3834/277/194 3835/278/194
-f 3835/278/194 3814/255/18 3813/254/18
-f 3815/279/27 3814/280/27 3836/281/27
-f 3836/281/27 3837/282/27 3815/279/27
-f 3838/283/27 3839/279/27 3840/282/27
-f 3840/282/27 3841/284/27 3838/283/27
-f 3819/285/27 3817/283/27 3842/284/27
-f 3842/284/27 3843/285/27 3819/285/27
-f 3844/286/27 3845/285/27 3846/285/27
-f 3846/285/27 3847/287/27 3844/286/27
-f 3823/288/27 3821/286/27 3848/287/27
-f 3848/287/27 3849/289/27 3823/288/27
-f 3850/290/27 3851/288/27 3852/289/27
-f 3852/289/27 3853/291/27 3850/290/27
-f 3827/292/27 3825/290/27 3854/291/27
-f 3854/291/27 3855/293/27 3827/292/27
-f 3856/294/27 3857/292/27 3858/293/27
-f 3858/293/27 3859/295/27 3856/294/27
-f 3831/296/27 3829/294/27 3860/295/27
-f 3860/295/27 3861/297/27 3831/296/27
-f 3862/298/27 3863/296/27 3864/297/27
-f 3864/297/27 3865/299/27 3862/298/27
-f 3835/300/27 3833/298/27 3866/299/27
-f 3866/299/27 3867/300/27 3835/300/27
-f 3868/280/27 3869/300/27 3870/300/27
-f 3870/300/27 3871/281/27 3868/280/27
-f 3837/301/13 3836/302/13 3872/303/13
-f 3872/303/13 3873/304/13 3837/301/13
-f 3842/305/14 3837/301/14 3873/304/14
-f 3873/304/14 3874/306/14 3842/305/14
-f 3843/307/15 3842/305/118 3874/306/15
-f 3874/306/15 3875/308/15 3843/307/15
-f 3848/309/16 3843/307/16 3875/308/16
-f 3875/308/16 3876/310/16 3848/309/16
-f 3849/311/17 3848/309/17 3876/310/17
-f 3876/310/17 3877/312/17 3849/311/17
-f 3854/313/18 3849/311/18 3877/312/18
-f 3877/312/18 3878/314/18 3854/313/18
-f 3855/315/190 3854/313/19 3878/314/19
-f 3878/314/19 3879/316/190 3855/315/190
-f 3860/317/20 3855/315/20 3879/316/20
-f 3879/316/20 3880/318/20 3860/317/20
-f 3861/319/21 3860/317/21 3880/318/21
-f 3880/318/21 3881/320/21 3861/319/21
-f 3866/321/191 3861/322/22 3881/323/22
-f 3881/323/22 3882/324/22 3866/321/191
-f 3867/325/23 3866/321/23 3882/324/23
-f 3882/324/23 3883/326/23 3867/325/23
-f 3836/302/24 3867/325/25 3883/326/25
-f 3883/326/25 3872/303/24 3836/302/24
-f 3873/327/27 3872/328/27 3884/329/27
-f 3874/330/27 3873/327/27 3884/329/27
-f 3875/331/27 3874/330/27 3884/329/27
-f 3876/332/27 3875/331/27 3884/329/27
-f 3877/333/27 3876/332/27 3884/329/27
-f 3878/334/27 3877/333/27 3884/329/27
-f 3879/335/27 3878/334/27 3884/329/27
-f 3880/336/27 3879/335/27 3884/329/27
-f 3881/337/27 3880/336/27 3884/329/27
-f 3882/338/27 3881/337/27 3884/329/27
-f 3883/339/27 3882/338/27 3884/329/27
-f 3872/328/27 3883/339/27 3884/329/27
-f 3817/258/20 3815/256/20 3839/340/20
-f 3839/340/20 3838/341/20 3817/258/20
-f 3815/279/163 3837/282/163 3840/282/163
-f 3840/282/163 3839/279/163 3815/279/163
-f 3837/301/14 3842/305/14 3841/342/14
-f 3841/342/14 3840/343/14 3837/301/14
-f 3842/284/197 3817/283/197 3838/283/197
-f 3838/283/197 3841/284/197 3842/284/197
-f 3821/264/22 3819/263/22 3845/344/22
-f 3845/344/22 3844/345/22 3821/264/22
-f 3819/285/7 3843/285/7 3846/285/7
-f 3846/285/7 3845/285/7 3819/285/7
-f 3843/307/16 3848/309/16 3847/346/16
-f 3847/346/16 3846/347/16 3843/307/16
-f 3848/287/198 3821/286/198 3844/286/198
-f 3844/286/198 3847/287/198 3848/287/198
-f 3825/268/24 3823/266/24 3851/348/24
-f 3851/348/24 3850/349/24 3825/268/24
-f 3823/288/151 3849/289/151 3852/289/151
-f 3852/289/151 3851/288/151 3823/288/151
-f 3849/311/18 3854/313/18 3853/350/18
-f 3853/350/18 3852/351/18 3849/311/18
-f 3854/291/4 3825/290/4 3850/290/4
-f 3850/290/4 3853/291/4 3854/291/4
-f 3829/272/14 3827/270/14 3857/352/14
-f 3857/352/14 3856/353/14 3829/272/14
-f 3827/292/161 3855/293/161 3858/293/161
-f 3858/293/161 3857/292/161 3827/292/161
-f 3855/315/20 3860/317/20 3859/354/20
-f 3859/354/20 3858/355/20 3855/315/20
-f 3860/295/195 3829/294/195 3856/294/195
-f 3856/294/195 3859/295/195 3860/295/195
-f 3833/276/16 3831/274/16 3863/356/193
-f 3863/356/193 3862/357/16 3833/276/16
-f 3831/296/1 3861/297/1 3864/297/1
-f 3864/297/1 3863/296/1 3831/296/1
-f 3861/322/22 3866/321/191 3865/358/22
-f 3865/358/22 3864/359/22 3861/322/22
-f 3866/299/196 3833/298/196 3862/298/196
-f 3862/298/196 3865/299/196 3866/299/196
-f 3814/255/18 3835/278/194 3869/360/18
-f 3869/360/18 3868/361/18 3814/255/18
-f 3835/300/153 3867/300/153 3870/300/153
-f 3870/300/153 3869/300/153 3835/300/153
-f 3867/325/25 3836/302/24 3871/362/24
-f 3871/362/24 3870/363/25 3867/325/25
-f 3836/281/10 3814/280/10 3868/280/10
-f 3868/280/10 3871/281/10 3836/281/10
-f 3885/3/6 3886/2/6 3887/1/7
-f 3887/1/7 3888/4/7 3885/3/6
-f 3889/6/5 3890/5/5 3886/2/6
-f 3886/2/6 3885/3/6 3889/6/5
-f 3891/8/4 3892/7/4 3890/5/5
-f 3890/5/5 3889/6/5 3891/8/4
-f 3893/11/3 3894/10/3 3892/9/4
-f 3892/9/4 3891/12/4 3893/11/3
-f 3895/14/2 3896/13/2 3894/10/3
-f 3894/10/3 3893/11/3 3895/14/2
-f 3897/16/1 3898/15/1 3896/13/2
-f 3896/13/2 3895/14/2 3897/16/1
-f 3899/18/12 3900/17/12 3898/15/1
-f 3898/15/1 3897/16/1 3899/18/12
-f 3901/20/11 3902/19/11 3900/17/12
-f 3900/17/12 3899/18/12 3901/20/11
-f 3903/22/10 3904/21/10 3902/19/11
-f 3902/19/11 3901/20/11 3903/22/10
-f 3905/24/9 3906/23/9 3904/21/10
-f 3904/21/10 3903/22/10 3905/24/9
-f 3907/26/8 3908/25/8 3906/23/9
-f 3906/23/9 3905/24/9 3907/26/8
-f 3888/4/7 3887/1/7 3908/25/8
-f 3908/25/8 3907/26/8 3888/4/7
-f 3909/27/18 3910/30/18 3911/29/18
-f 3911/29/18 3912/28/18 3909/27/18
-f 3913/31/17 3914/32/17 3910/30/17
-f 3910/30/17 3909/27/17 3913/31/17
-f 3915/33/16 3916/34/16 3914/32/16
-f 3914/32/16 3913/31/16 3915/33/16
-f 3917/35/15 3918/38/15 3916/37/15
-f 3916/37/15 3915/36/15 3917/35/15
-f 3919/39/14 3920/40/14 3918/38/14
-f 3918/38/14 3917/35/14 3919/39/14
-f 3921/41/13 3922/42/13 3920/40/13
-f 3920/40/13 3919/39/13 3921/41/13
-f 3923/43/24 3924/44/24 3922/42/24
-f 3922/42/24 3921/41/24 3923/43/24
-f 3925/45/23 3926/46/23 3924/44/23
-f 3924/44/23 3923/43/23 3925/45/23
-f 3927/47/22 3928/48/22 3926/46/22
-f 3926/46/22 3925/45/22 3927/47/22
-f 3929/49/21 3930/50/21 3928/48/21
-f 3928/48/21 3927/47/21 3929/49/21
-f 3931/51/20 3932/52/20 3930/50/20
-f 3930/50/20 3929/49/20 3931/51/20
-f 3912/28/19 3911/29/19 3932/52/19
-f 3932/52/19 3931/51/190 3912/28/19
-f 3886/53/26 3909/53/26 3912/54/26
-f 3912/54/26 3887/54/26 3886/53/26
-f 3887/54/26 3912/54/26 3931/55/26
-f 3931/55/26 3908/55/26 3887/54/26
-f 3908/55/26 3931/55/26 3929/56/26
-f 3929/56/26 3906/56/26 3908/55/26
-f 3906/56/26 3929/56/26 3927/57/26
-f 3927/57/26 3904/57/26 3906/56/26
-f 3904/57/26 3927/57/26 3925/59/26
-f 3925/59/26 3902/58/26 3904/57/26
-f 3902/58/26 3925/59/26 3923/61/26
-f 3923/61/26 3900/60/26 3902/58/26
-f 3900/60/26 3923/61/26 3921/62/26
-f 3921/62/26 3898/62/26 3900/60/26
-f 3898/62/26 3921/62/26 3919/64/26
-f 3919/64/26 3896/63/26 3898/62/26
-f 3896/63/26 3919/64/26 3917/66/26
-f 3917/66/26 3894/65/26 3896/63/26
-f 3894/65/26 3917/66/26 3915/67/26
-f 3915/67/26 3892/67/26 3894/65/26
-f 3892/67/26 3915/67/26 3913/68/26
-f 3913/68/26 3890/68/26 3892/67/26
-f 3890/68/26 3913/68/26 3909/53/26
-f 3909/53/26 3886/53/26 3890/68/26
-f 3933/54/27 3911/54/27 3910/53/27
-f 3910/53/27 3934/53/27 3933/54/27
-f 3934/53/27 3910/53/27 3914/68/27
-f 3914/68/27 3935/68/27 3934/53/27
-f 3935/68/27 3914/68/27 3916/67/27
-f 3916/67/27 3936/67/27 3935/68/27
-f 3936/67/27 3916/67/27 3918/66/27
-f 3918/66/27 3937/65/27 3936/67/27
-f 3937/65/27 3918/66/27 3920/64/27
-f 3920/64/27 3938/63/27 3937/65/27
-f 3938/63/27 3920/64/27 3922/62/27
-f 3922/62/27 3939/62/27 3938/63/27
-f 3939/62/27 3922/62/27 3924/61/27
-f 3924/61/27 3940/60/27 3939/62/27
-f 3940/60/27 3924/61/27 3926/59/27
-f 3926/59/27 3941/58/27 3940/60/27
-f 3941/58/27 3926/59/27 3928/57/27
-f 3928/57/27 3942/57/27 3941/58/27
-f 3942/57/27 3928/57/27 3930/56/27
-f 3930/56/27 3943/56/27 3942/57/27
-f 3943/56/27 3930/56/27 3932/55/27
-f 3932/55/27 3944/55/27 3943/56/27
-f 3944/55/27 3932/55/27 3911/54/27
-f 3911/54/27 3933/54/27 3944/55/27
-f 3945/71/6 3946/70/7 3933/69/7
-f 3933/69/7 3934/72/6 3945/71/6
-f 3947/73/17 3945/71/6 3934/72/6
-f 3934/72/6 3935/74/17 3947/73/17
-f 3948/75/16 3947/73/16 3935/74/16
-f 3935/74/16 3936/76/16 3948/75/16
-f 3949/77/3 3948/75/15 3936/76/15
-f 3936/76/15 3937/78/3 3949/77/3
-f 3950/79/2 3949/77/3 3937/78/3
-f 3937/78/3 3938/80/2 3950/79/2
-f 3951/83/1 3950/82/2 3938/81/2
-f 3938/81/2 3939/84/1 3951/83/1
-f 3952/85/12 3951/83/1 3939/84/1
-f 3939/84/1 3940/86/12 3952/85/12
-f 3953/87/11 3952/85/12 3940/86/12
-f 3940/86/12 3941/88/11 3953/87/11
-f 3954/89/10 3953/87/11 3941/88/11
-f 3941/88/11 3942/90/10 3954/89/10
-f 3955/91/9 3954/89/10 3942/90/10
-f 3942/90/10 3943/92/9 3955/91/9
-f 3956/93/8 3955/91/9 3943/92/9
-f 3943/92/9 3944/94/8 3956/93/8
-f 3946/70/7 3956/93/8 3944/94/8
-f 3944/94/8 3933/69/7 3946/70/7
-f 3957/95/26 3958/95/26 3959/96/26
-f 3959/96/26 3960/96/26 3957/95/26
-f 3961/97/26 3962/97/26 3958/95/26
-f 3958/95/26 3957/95/26 3961/97/26
-f 3963/67/26 3964/98/26 3962/97/26
-f 3962/97/26 3961/97/26 3963/67/26
-f 3965/99/26 3966/99/26 3964/98/26
-f 3964/98/26 3963/67/26 3965/99/26
-f 3967/100/26 3968/100/26 3966/99/26
-f 3966/99/26 3965/99/26 3967/100/26
-f 3969/101/26 3970/101/26 3968/100/26
-f 3968/100/26 3967/100/26 3969/101/26
-f 3971/61/26 3972/61/26 3970/101/26
-f 3970/101/26 3969/101/26 3971/61/26
-f 3973/59/26 3974/102/26 3972/61/26
-f 3972/61/26 3971/61/26 3973/59/26
-f 3975/103/26 3976/103/26 3974/102/26
-f 3974/102/26 3973/59/26 3975/103/26
-f 3977/104/26 3978/105/26 3976/103/26
-f 3976/103/26 3975/103/26 3977/104/26
-f 3979/106/26 3980/106/26 3978/105/26
-f 3978/105/26 3977/104/26 3979/106/26
-f 3960/96/26 3959/96/26 3980/106/26
-f 3980/106/26 3979/106/26 3960/96/26
-f 3958/107/33 3981/110/33 3982/109/33
-f 3982/109/33 3959/108/33 3958/107/33
-f 3962/111/32 3983/112/32 3981/110/32
-f 3981/110/32 3958/107/32 3962/111/32
-f 3964/113/31 3984/114/31 3983/112/31
-f 3983/112/31 3962/111/31 3964/113/31
-f 3966/115/30 3985/116/30 3984/114/30
-f 3984/114/30 3964/113/30 3966/115/30
-f 3968/117/29 3986/118/29 3985/116/29
-f 3985/116/29 3966/115/29 3968/117/29
-f 3970/119/28 3987/120/28 3986/118/28
-f 3986/118/28 3968/117/28 3970/119/28
-f 3972/121/39 3988/122/39 3987/120/39
-f 3987/120/39 3970/119/39 3972/121/39
-f 3974/123/38 3989/124/38 3988/122/38
-f 3988/122/38 3972/121/38 3974/123/38
-f 3976/125/37 3990/126/37 3989/124/37
-f 3989/124/37 3974/123/37 3976/125/37
-f 3978/127/36 3991/130/36 3990/129/36
-f 3990/129/36 3976/128/36 3978/127/36
-f 3980/131/35 3992/132/35 3991/130/35
-f 3991/130/35 3978/127/35 3980/131/35
-f 3959/108/34 3982/109/34 3992/132/34
-f 3992/132/34 3980/131/34 3959/108/34
-f 3981/110/46 3993/134/46 3994/133/46
-f 3994/133/46 3982/109/46 3981/110/46
-f 3983/112/45 3995/135/45 3993/134/45
-f 3993/134/45 3981/110/45 3983/112/45
-f 3984/114/44 3996/136/44 3995/135/44
-f 3995/135/44 3983/112/44 3984/114/44
-f 3985/116/42 3997/137/42 3996/136/43
-f 3996/136/43 3984/114/42 3985/116/42
-f 3986/118/41 3998/138/41 3997/137/41
-f 3997/137/41 3985/116/41 3986/118/41
-f 3987/120/40 3999/139/40 3998/138/40
-f 3998/138/40 3986/118/40 3987/120/40
-f 3988/122/55 4000/140/54 3999/139/54
-f 3999/139/54 3987/120/54 3988/122/55
-f 3989/124/53 4001/141/53 4000/140/53
-f 4000/140/53 3988/122/53 3989/124/53
-f 3990/126/51 4002/142/52 4001/141/51
-f 4001/141/51 3989/124/51 3990/126/51
-f 3991/130/50 4003/144/50 4002/143/50
-f 4002/143/50 3990/129/50 3991/130/50
-f 3992/132/49 4004/145/49 4003/144/49
-f 4003/144/49 3991/130/49 3992/132/49
-f 3982/109/48 3994/133/48 4004/145/48
-f 4004/145/48 3992/132/47 3982/109/48
-f 3945/148/63 4005/147/63 4006/146/63
-f 4006/146/63 3946/149/63 3945/148/63
-f 3947/151/62 4007/150/61 4005/147/61
-f 4005/147/61 3945/148/62 3947/151/62
-f 3948/154/60 4008/153/60 4007/152/60
-f 4007/152/60 3947/155/60 3948/154/60
-f 3949/156/59 4009/142/59 4008/153/59
-f 4008/153/59 3948/154/59 3949/156/59
-f 3950/158/58 4010/157/57 4009/142/57
-f 4009/142/57 3949/156/58 3950/158/58
-f 3951/160/56 4011/159/56 4010/157/56
-f 4010/157/56 3950/158/56 3951/160/56
-f 3952/162/71 4012/161/71 4011/159/71
-f 4011/159/71 3951/160/71 3952/162/71
-f 3953/164/69 4013/163/70 4012/161/70
-f 4012/161/70 3952/162/69 3953/164/69
-f 3954/166/68 4014/165/68 4013/163/68
-f 4013/163/68 3953/164/68 3954/166/68
-f 3955/168/67 4015/167/67 4014/165/67
-f 4014/165/67 3954/166/67 3955/168/67
-f 3956/170/66 4016/169/66 4015/167/66
-f 4015/167/66 3955/168/65 3956/170/66
-f 3946/149/64 4006/146/64 4016/169/64
-f 4016/169/64 3956/170/64 3946/149/64
-f 4005/173/6 3957/172/6 3960/171/7
-f 3960/171/7 4006/174/7 4005/173/6
-f 4007/176/5 3961/175/5 3957/172/6
-f 3957/172/6 4005/173/6 4007/176/5
-f 4008/179/4 3963/178/4 3961/177/5
-f 3961/177/5 4007/180/5 4008/179/4
-f 4009/181/3 3965/86/3 3963/178/4
-f 3963/178/4 4008/179/4 4009/181/3
-f 4010/183/2 3967/182/2 3965/86/3
-f 3965/86/3 4009/181/3 4010/183/2
-f 4011/185/1 3969/184/1 3967/182/2
-f 3967/182/2 4010/183/2 4011/185/1
-f 4012/187/12 3971/186/12 3969/184/1
-f 3969/184/1 4011/185/1 4012/187/12
-f 4013/189/11 3973/188/11 3971/186/12
-f 3971/186/12 4012/187/12 4013/189/11
-f 4014/191/10 3975/190/10 3973/188/11
-f 3973/188/11 4013/189/11 4014/191/10
-f 4015/192/9 3977/76/9 3975/190/10
-f 3975/190/10 4014/191/10 4015/192/9
-f 4016/194/8 3979/193/8 3977/76/9
-f 3977/76/9 4015/192/9 4016/194/8
-f 4006/174/7 3960/171/7 3979/193/8
-f 3979/193/8 4016/194/8 4006/174/7
-f 4017/195/443 4018/198/443 4019/197/443
-f 4019/197/443 4020/196/443 4017/195/443
-f 4021/199/390 4022/202/390 4023/201/390
-f 4023/201/390 4024/200/390 4021/199/390
-f 4025/203/444 4026/206/444 4027/205/444
-f 4027/205/444 4028/204/444 4025/203/444
-f 4029/202/388 4030/199/388 4031/200/388
-f 4031/200/388 4032/201/388 4029/202/388
-f 4033/207/398 4034/209/398 4035/208/398
-f 4035/208/398 4036/207/398 4033/207/398
-f 4037/209/445 4038/211/445 4039/210/445
-f 4028/212/446 4027/214/446 4040/213/446
-f 4040/213/446 4041/196/446 4028/212/446
-f 4042/210/447 4043/211/447 4044/209/447
-f 4045/215/448 4044/209/448 4043/211/448
-f 4043/211/448 4046/216/448 4045/215/448
-f 4047/217/449 4020/196/449 4019/197/449
-f 4019/197/449 4048/218/449 4047/217/449
-f 4049/219/451 4025/203/451 4028/204/451
-f 4028/204/451 4050/220/451 4049/219/451
-f 4051/209/391 4033/207/391 4036/207/391
-f 4036/207/391 4052/208/391 4051/209/391
-f 4028/212/452 4041/196/452 4053/213/452
-f 4053/213/452 4050/214/452 4028/212/452
-f 4045/215/453 4046/216/453 4038/211/453
-f 4038/211/453 4037/209/453 4045/215/453
-f 4054/221/388 4018/221/388 4017/222/388
-f 4017/222/388 4040/222/388 4054/221/388
-f 4040/222/402 4017/222/402 4020/203/402
-f 4020/203/402 4041/203/402 4040/222/402
-f 4041/203/401 4020/203/401 4047/206/401
-f 4047/206/401 4053/206/401 4041/203/401
-f 4053/206/390 4047/206/390 4048/223/390
-f 4048/223/390 4055/223/390 4053/206/390
-f 4055/224/454 4048/224/454 4019/226/454
-f 4019/226/454 4056/225/454 4055/224/454
-f 4056/225/455 4019/226/455 4018/224/455
-f 4018/224/455 4054/224/455 4056/225/455
-f 4050/214/447 4053/213/447 4055/228/447
-f 4055/228/447 4057/227/447 4050/214/447
-f 4057/229/388 4058/221/388 4049/219/388
-f 4049/219/388 4050/220/388 4057/229/388
-f 4026/206/390 4059/223/390 4060/230/390
-f 4060/230/390 4027/205/390 4026/206/390
-f 4060/227/445 4054/228/445 4040/213/445
-f 4040/213/445 4027/214/445 4060/227/445
-f 4023/201/390 4061/202/390 4062/199/390
-f 4062/199/390 4024/200/390 4023/201/390
-f 4060/231/456 4039/233/456 4038/232/456
-f 4038/232/456 4054/224/456 4060/231/456
-f 4054/224/455 4038/232/455 4046/234/455
-f 4046/234/455 4056/225/455 4054/224/455
-f 4056/225/454 4046/234/454 4043/232/454
-f 4043/232/454 4055/224/454 4056/225/454
-f 4055/224/457 4043/232/457 4042/233/457
-f 4042/233/457 4057/231/457 4055/224/457
-f 4031/200/388 4063/199/388 4064/202/388
-f 4064/202/388 4032/201/388 4031/200/388
-f 4035/208/398 4044/236/398 4045/235/398
-f 4045/235/398 4036/207/398 4035/208/398
-f 4036/207/391 4045/235/391 4037/236/391
-f 4037/236/391 4052/208/391 4036/207/391
-f 4059/236/27 4021/238/27 4024/237/27
-f 4024/237/27 4060/231/27 4059/236/27
-f 4060/231/27 4024/237/27 4062/239/27
-f 4062/239/27 4039/233/27 4060/231/27
-f 4039/210/484 4062/241/484 4061/240/484
-f 4061/240/484 4037/209/484 4039/210/484
-f 4037/236/26 4061/238/26 4023/242/26
-f 4023/242/26 4052/208/26 4037/236/26
-f 4052/208/26 4023/242/26 4022/240/26
-f 4022/240/26 4051/209/26 4052/208/26
-f 4034/209/26 4029/240/26 4032/242/26
-f 4032/242/26 4035/208/26 4034/209/26
-f 4035/208/26 4032/242/26 4064/238/26
-f 4064/238/26 4044/236/26 4035/208/26
-f 4044/209/459 4064/240/459 4063/241/459
-f 4063/241/459 4042/210/459 4044/209/459
-f 4042/233/27 4063/239/27 4031/237/27
-f 4031/237/27 4057/231/27 4042/233/27
-f 4057/231/27 4031/237/27 4030/238/27
-f 4030/238/27 4058/236/27 4057/231/27
-f 4065/195/4 4066/198/4 4067/197/4
-f 4067/197/4 4068/196/4 4065/195/4
-f 4069/199/416 4070/202/416 4071/201/415
-f 4071/201/415 4072/200/415 4069/199/416
-f 4073/203/421 4074/206/421 4075/205/421
-f 4075/205/421 4076/204/421 4073/203/421
-f 4077/202/413 4078/199/413 4079/200/412
-f 4079/200/412 4080/201/412 4077/202/413
-f 4081/207/466 4082/209/466 4083/208/466
-f 4083/208/466 4084/207/466 4081/207/466
-f 4085/209/107 4086/211/107 4087/210/107
-f 4076/212/467 4075/214/467 4088/213/467
-f 4088/213/467 4089/196/467 4076/212/467
-f 4090/210/468 4091/211/468 4092/209/468
-f 4093/215/469 4092/209/469 4091/211/469
-f 4091/211/469 4094/216/469 4093/215/469
-f 4095/217/103 4068/196/103 4067/197/103
-f 4067/197/103 4096/218/103 4095/217/103
-f 4097/219/414 4073/203/414 4076/204/414
-f 4076/204/414 4098/220/414 4097/219/414
-f 4099/209/471 4081/207/471 4084/207/471
-f 4084/207/471 4100/208/471 4099/209/471
-f 4076/212/472 4089/196/472 4101/213/472
-f 4101/213/472 4098/214/472 4076/212/472
-f 4093/215/332 4094/216/332 4086/211/332
-f 4086/211/332 4085/209/332 4093/215/332
-f 4102/221/413 4066/221/412 4065/222/412
-f 4065/222/412 4088/222/413 4102/221/413
-f 4088/222/426 4065/222/426 4068/203/426
-f 4068/203/426 4089/203/426 4088/222/426
-f 4089/203/425 4068/203/425 4095/206/425
-f 4095/206/425 4101/206/425 4089/203/425
-f 4101/206/415 4095/206/415 4096/223/415
-f 4096/223/415 4103/223/415 4101/206/415
-f 4103/224/473 4096/224/473 4067/226/473
-f 4067/226/473 4104/225/473 4103/224/473
-f 4104/225/430 4067/226/430 4066/224/430
-f 4066/224/430 4102/224/430 4104/225/430
-f 4098/214/468 4101/213/468 4103/228/468
-f 4103/228/468 4105/227/468 4098/214/468
-f 4105/229/413 4106/221/413 4097/219/413
-f 4097/219/413 4098/220/413 4105/229/413
-f 4074/206/415 4107/223/415 4108/230/415
-f 4108/230/415 4075/205/415 4074/206/415
-f 4108/227/107 4102/228/107 4088/213/107
-f 4088/213/107 4075/214/107 4108/227/107
-f 4071/201/415 4109/202/416 4110/199/416
-f 4110/199/416 4072/200/415 4071/201/415
-f 4108/231/485 4087/233/485 4086/232/485
-f 4086/232/485 4102/224/485 4108/231/485
-f 4102/224/430 4086/232/430 4094/234/430
-f 4094/234/430 4104/225/430 4102/224/430
-f 4104/225/473 4094/234/473 4091/232/473
-f 4091/232/473 4103/224/473 4104/225/473
-f 4103/224/428 4091/232/428 4090/233/428
-f 4090/233/428 4105/231/428 4103/224/428
-f 4079/200/412 4111/199/413 4112/202/413
-f 4112/202/413 4080/201/412 4079/200/412
-f 4083/208/466 4092/236/466 4093/235/466
-f 4093/235/466 4084/207/466 4083/208/466
-f 4084/207/471 4093/235/471 4085/236/471
-f 4085/236/471 4100/208/471 4084/207/471
-f 4107/236/27 4069/238/27 4072/237/27
-f 4072/237/27 4108/231/27 4107/236/27
-f 4108/231/27 4072/237/27 4110/239/27
-f 4110/239/27 4087/233/27 4108/231/27
-f 4087/210/193 4110/241/193 4109/240/193
-f 4109/240/193 4085/209/193 4087/210/193
-f 4085/236/26 4109/238/26 4071/242/26
-f 4071/242/26 4100/208/26 4085/236/26
-f 4100/208/26 4071/242/26 4070/240/26
-f 4070/240/26 4099/209/26 4100/208/26
-f 4082/209/26 4077/240/26 4080/242/26
-f 4080/242/26 4083/208/26 4082/209/26
-f 4083/208/26 4080/242/26 4112/238/26
-f 4112/238/26 4092/236/26 4083/208/26
-f 4092/209/475 4112/240/475 4111/241/475
-f 4111/241/475 4090/210/475 4092/209/475
-f 4090/233/27 4111/239/27 4079/237/27
-f 4079/237/27 4105/231/27 4090/233/27
-f 4105/231/27 4079/237/27 4078/238/27
-f 4078/238/27 4106/236/27 4105/231/27
-f 4113/243/476 4114/246/476 4115/245/476
-f 4115/245/476 4116/244/476 4113/243/476
-f 4113/247/477 4117/250/477 4118/249/477
-f 4118/249/477 4114/248/477 4113/247/477
-f 4114/246/478 4118/252/478 4119/251/478
-f 4119/251/478 4115/245/478 4114/246/478
-f 4115/248/479 4119/249/479 4120/250/479
-f 4120/250/479 4116/247/479 4115/248/479
-f 4121/195/464 4122/198/464 4123/197/464
-f 4123/197/464 4124/196/464 4121/195/464
-f 4125/199/416 4126/202/416 4127/201/415
-f 4127/201/415 4128/200/415 4125/199/416
-f 4129/203/421 4130/206/421 4131/205/421
-f 4131/205/421 4132/204/421 4129/203/421
-f 4133/202/413 4134/199/413 4135/200/412
-f 4135/200/412 4136/201/412 4133/202/413
-f 4137/207/466 4138/209/466 4139/208/466
-f 4139/208/466 4140/207/466 4137/207/466
-f 4141/209/107 4142/211/107 4143/210/107
-f 4132/212/467 4131/214/467 4144/213/467
-f 4144/213/467 4145/196/467 4132/212/467
-f 4146/210/468 4147/211/468 4148/209/468
-f 4149/215/469 4148/209/469 4147/211/469
-f 4147/211/469 4150/216/469 4149/215/469
-f 4151/217/103 4124/196/103 4123/197/103
-f 4123/197/103 4152/218/103 4151/217/103
-f 4153/219/470 4129/203/414 4132/204/414
-f 4132/204/414 4154/220/470 4153/219/470
-f 4155/209/471 4137/207/471 4140/207/471
-f 4140/207/471 4156/208/471 4155/209/471
-f 4132/212/472 4145/196/472 4157/213/472
-f 4157/213/472 4154/214/472 4132/212/472
-f 4149/215/332 4150/216/332 4142/211/332
-f 4142/211/332 4141/209/332 4149/215/332
-f 4158/221/413 4122/221/413 4121/222/413
-f 4121/222/413 4144/222/413 4158/221/413
-f 4144/222/426 4121/222/426 4124/203/426
-f 4124/203/426 4145/203/426 4144/222/426
-f 4145/203/425 4124/203/425 4151/206/425
-f 4151/206/425 4157/206/425 4145/203/425
-f 4157/206/415 4151/206/415 4152/223/415
-f 4152/223/415 4159/223/415 4157/206/415
-f 4159/224/473 4152/224/473 4123/226/473
-f 4123/226/473 4160/225/473 4159/224/473
-f 4160/225/430 4123/226/430 4122/224/430
-f 4122/224/430 4158/224/430 4160/225/430
-f 4154/214/468 4157/213/468 4159/228/468
-f 4159/228/468 4161/227/468 4154/214/468
-f 4161/229/437 4162/221/412 4153/219/412
-f 4153/219/412 4154/220/437 4161/229/437
-f 4130/206/415 4163/223/415 4164/230/416
-f 4164/230/416 4131/205/416 4130/206/415
-f 4164/227/107 4158/228/107 4144/213/107
-f 4144/213/107 4131/214/107 4164/227/107
-f 4127/201/415 4165/202/416 4166/199/416
-f 4166/199/416 4128/200/415 4127/201/415
-f 4164/231/485 4143/233/485 4142/232/485
-f 4142/232/485 4158/224/485 4164/231/485
-f 4158/224/430 4142/232/430 4150/234/430
-f 4150/234/430 4160/225/430 4158/224/430
-f 4160/225/473 4150/234/473 4147/232/473
-f 4147/232/473 4159/224/473 4160/225/473
-f 4159/224/428 4147/232/428 4146/233/428
-f 4146/233/428 4161/231/428 4159/224/428
-f 4135/200/412 4167/199/413 4168/202/413
-f 4168/202/413 4136/201/412 4135/200/412
-f 4139/208/466 4148/236/466 4149/235/466
-f 4149/235/466 4140/207/466 4139/208/466
-f 4140/207/471 4149/235/471 4141/236/471
-f 4141/236/471 4156/208/471 4140/207/471
-f 4163/236/27 4125/238/27 4128/237/27
-f 4128/237/27 4164/231/27 4163/236/27
-f 4164/231/27 4128/237/27 4166/239/27
-f 4166/239/27 4143/233/27 4164/231/27
-f 4143/210/193 4166/241/193 4165/240/193
-f 4165/240/193 4141/209/193 4143/210/193
-f 4141/236/26 4165/238/26 4127/242/26
-f 4127/242/26 4156/208/26 4141/236/26
-f 4156/208/26 4127/242/26 4126/240/26
-f 4126/240/26 4155/209/26 4156/208/26
-f 4138/209/26 4133/240/26 4136/242/26
-f 4136/242/26 4139/208/26 4138/209/26
-f 4139/208/26 4136/242/26 4168/238/26
-f 4168/238/26 4148/236/26 4139/208/26
-f 4148/209/475 4168/240/475 4167/241/475
-f 4167/241/475 4146/210/475 4148/209/475
-f 4146/233/27 4167/239/27 4135/237/27
-f 4135/237/27 4161/231/27 4146/233/27
-f 4161/231/27 4135/237/27 4134/238/27
-f 4134/238/27 4162/236/27 4161/231/27
-f 4169/243/460 4170/246/460 4171/245/460
-f 4171/245/460 4172/244/460 4169/243/460
-f 4169/247/461 4173/250/461 4174/249/461
-f 4174/249/461 4170/248/461 4169/247/461
-f 4170/246/462 4174/252/462 4175/251/462
-f 4175/251/462 4171/245/462 4170/246/462
-f 4171/248/463 4175/249/463 4176/250/463
-f 4176/250/463 4172/247/463 4171/248/463
-f 4177/195/387 4178/198/387 4179/197/387
-f 4179/197/387 4180/196/387 4177/195/387
-f 4181/199/388 4182/202/388 4183/201/388
-f 4183/201/388 4184/200/388 4181/199/388
-f 4185/203/389 4186/206/389 4187/205/389
-f 4187/205/389 4188/204/389 4185/203/389
-f 4189/202/390 4190/199/390 4191/200/390
-f 4191/200/390 4192/201/390 4189/202/390
-f 4193/207/391 4194/209/391 4195/208/391
-f 4195/208/391 4196/207/391 4193/207/391
-f 4197/209/392 4198/211/392 4199/210/392
-f 4188/212/393 4187/214/393 4200/213/393
-f 4200/213/393 4201/196/393 4188/212/393
-f 4202/210/394 4203/211/394 4204/209/394
-f 4205/215/395 4204/209/395 4203/211/395
-f 4203/211/395 4206/216/395 4205/215/395
-f 4207/217/396 4180/196/486 4179/197/486
-f 4179/197/486 4208/218/396 4207/217/396
-f 4209/219/397 4185/203/397 4188/204/397
-f 4188/204/397 4210/220/397 4209/219/397
-f 4211/209/398 4193/207/398 4196/207/398
-f 4196/207/398 4212/208/398 4211/209/398
-f 4188/212/399 4201/196/399 4213/213/399
-f 4213/213/399 4210/214/399 4188/212/399
-f 4205/215/400 4206/216/400 4198/211/400
-f 4198/211/400 4197/209/400 4205/215/400
-f 4214/221/390 4178/221/390 4177/222/390
-f 4177/222/390 4200/222/390 4214/221/390
-f 4200/222/401 4177/222/401 4180/203/401
-f 4180/203/401 4201/203/401 4200/222/401
-f 4201/203/402 4180/203/402 4207/206/402
-f 4207/206/402 4213/206/402 4201/203/402
-f 4213/206/388 4207/206/388 4208/223/388
-f 4208/223/388 4215/223/388 4213/206/388
-f 4215/224/403 4208/224/403 4179/226/403
-f 4179/226/403 4216/225/403 4215/224/403
-f 4216/225/404 4179/226/404 4178/224/404
-f 4178/224/404 4214/224/404 4216/225/404
-f 4210/214/394 4213/213/394 4215/228/394
-f 4215/228/394 4217/227/394 4210/214/394
-f 4217/229/390 4218/221/390 4209/219/390
-f 4209/219/390 4210/220/390 4217/229/390
-f 4186/206/388 4219/223/388 4220/230/388
-f 4220/230/388 4187/205/388 4186/206/388
-f 4220/227/392 4214/228/392 4200/213/392
-f 4200/213/392 4187/214/392 4220/227/392
-f 4183/201/388 4221/202/388 4222/199/388
-f 4222/199/388 4184/200/388 4183/201/388
-f 4220/231/405 4199/233/405 4198/232/405
-f 4198/232/405 4214/224/405 4220/231/405
-f 4214/224/404 4198/232/404 4206/234/404
-f 4206/234/404 4216/225/404 4214/224/404
-f 4216/225/403 4206/234/403 4203/232/403
-f 4203/232/403 4215/224/403 4216/225/403
-f 4215/224/407 4203/232/407 4202/233/407
-f 4202/233/407 4217/231/407 4215/224/407
-f 4191/200/390 4223/199/390 4224/202/390
-f 4224/202/390 4192/201/390 4191/200/390
-f 4195/208/391 4204/236/391 4205/235/391
-f 4205/235/391 4196/207/391 4195/208/391
-f 4196/207/398 4205/235/398 4197/236/398
-f 4197/236/398 4212/208/398 4196/207/398
-f 4219/236/27 4181/238/27 4184/237/27
-f 4184/237/27 4220/231/27 4219/236/27
-f 4220/231/27 4184/237/27 4222/239/27
-f 4222/239/27 4199/233/27 4220/231/27
-f 4199/210/409 4222/241/409 4221/240/409
-f 4221/240/409 4197/209/409 4199/210/409
-f 4197/236/26 4221/238/26 4183/242/26
-f 4183/242/26 4212/208/26 4197/236/26
-f 4212/208/26 4183/242/26 4182/240/26
-f 4182/240/26 4211/209/26 4212/208/26
-f 4194/209/26 4189/240/26 4192/242/26
-f 4192/242/26 4195/208/26 4194/209/26
-f 4195/208/26 4192/242/26 4224/238/26
-f 4224/238/26 4204/236/26 4195/208/26
-f 4204/209/410 4224/240/410 4223/241/410
-f 4223/241/410 4202/210/410 4204/209/410
-f 4202/233/27 4223/239/27 4191/237/27
-f 4191/237/27 4217/231/27 4202/233/27
-f 4217/231/27 4191/237/27 4190/238/27
-f 4190/238/27 4218/236/27 4217/231/27
-f 4225/243/148 4226/246/148 4227/245/148
-f 4227/245/148 4228/244/148 4225/243/148
-f 4225/247/7 4229/250/7 4230/249/7
-f 4230/249/7 4226/248/7 4225/247/7
-f 4226/246/149 4230/252/149 4231/251/149
-f 4231/251/149 4227/245/149 4226/246/149
-f 4227/248/1 4231/249/1 4232/250/1
-f 4232/250/1 4228/247/1 4227/248/1
-f 4233/243/187 4234/246/187 4235/245/187
-f 4235/245/187 4236/244/187 4233/243/187
-f 4233/247/161 4237/250/161 4238/249/161
-f 4238/249/161 4234/248/161 4233/247/161
-f 4234/246/188 4238/252/188 4239/251/188
-f 4239/251/188 4235/245/188 4234/246/188
-f 4235/248/163 4239/249/163 4240/250/163
-f 4240/250/163 4236/247/163 4235/248/163
-f 4241/243/154 4242/246/154 4243/245/154
-f 4243/245/154 4244/244/154 4241/243/154
-f 4241/247/1 4245/250/1 4246/249/1
-f 4246/249/1 4242/248/1 4241/247/1
-f 4242/246/155 4246/252/155 4247/251/155
-f 4247/251/155 4243/245/155 4242/246/155
-f 4243/248/7 4247/249/7 4248/250/7
-f 4248/250/7 4244/247/7 4243/248/7
-f 4249/243/439 4250/246/439 4251/245/439
-f 4251/245/439 4252/244/439 4249/243/439
-f 4249/247/440 4253/250/440 4254/249/440
-f 4254/249/440 4250/248/440 4249/247/440
-f 4250/246/441 4254/252/441 4255/251/441
-f 4255/251/441 4251/245/441 4250/246/441
-f 4251/248/442 4255/249/442 4256/250/442
-f 4256/250/442 4252/247/442 4251/248/442
-f 4257/243/180 4258/246/180 4259/245/180
-f 4259/245/180 4260/244/180 4257/243/180
-f 4257/247/151 4261/250/151 4262/249/151
-f 4262/249/151 4258/248/151 4257/247/151
-f 4258/246/181 4262/252/181 4263/251/181
-f 4263/251/181 4259/245/181 4258/246/181
-f 4259/248/153 4263/249/153 4264/250/153
-f 4264/250/153 4260/247/153 4259/248/153
-f 4265/195/387 4266/198/387 4267/197/387
-f 4267/197/387 4268/196/387 4265/195/387
-f 4269/199/388 4270/202/388 4271/201/388
-f 4271/201/388 4272/200/388 4269/199/388
-f 4273/203/389 4274/206/389 4275/205/389
-f 4275/205/389 4276/204/389 4273/203/389
-f 4277/202/390 4278/199/390 4279/200/390
-f 4279/200/390 4280/201/390 4277/202/390
-f 4281/207/391 4282/209/391 4283/208/391
-f 4283/208/391 4284/207/391 4281/207/391
-f 4285/209/392 4286/211/392 4287/210/392
-f 4276/212/393 4275/214/393 4288/213/393
-f 4288/213/393 4289/196/393 4276/212/393
-f 4290/210/394 4291/211/394 4292/209/394
-f 4293/215/395 4292/209/395 4291/211/395
-f 4291/211/395 4294/216/395 4293/215/395
-f 4295/217/396 4268/196/486 4267/197/486
-f 4267/197/486 4296/218/396 4295/217/396
-f 4297/219/397 4273/203/397 4276/204/397
-f 4276/204/397 4298/220/397 4297/219/397
-f 4299/209/398 4281/207/398 4284/207/398
-f 4284/207/398 4300/208/398 4299/209/398
-f 4276/212/399 4289/196/399 4301/213/399
-f 4301/213/399 4298/214/399 4276/212/399
-f 4293/215/400 4294/216/400 4286/211/400
-f 4286/211/400 4285/209/400 4293/215/400
-f 4302/221/390 4266/221/390 4265/222/390
-f 4265/222/390 4288/222/390 4302/221/390
-f 4288/222/401 4265/222/401 4268/203/401
-f 4268/203/401 4289/203/401 4288/222/401
-f 4289/203/402 4268/203/402 4295/206/402
-f 4295/206/402 4301/206/402 4289/203/402
-f 4301/206/388 4295/206/388 4296/223/388
-f 4296/223/388 4303/223/388 4301/206/388
-f 4303/224/403 4296/224/403 4267/226/403
-f 4267/226/403 4304/225/403 4303/224/403
-f 4304/225/404 4267/226/404 4266/224/404
-f 4266/224/404 4302/224/404 4304/225/404
-f 4298/214/394 4301/213/394 4303/228/394
-f 4303/228/394 4305/227/394 4298/214/394
-f 4305/229/390 4306/221/390 4297/219/390
-f 4297/219/390 4298/220/390 4305/229/390
-f 4274/206/388 4307/223/388 4308/230/388
-f 4308/230/388 4275/205/388 4274/206/388
-f 4308/227/392 4302/228/392 4288/213/392
-f 4288/213/392 4275/214/392 4308/227/392
-f 4271/201/388 4309/202/388 4310/199/388
-f 4310/199/388 4272/200/388 4271/201/388
-f 4308/231/405 4287/233/405 4286/232/405
-f 4286/232/405 4302/224/405 4308/231/405
-f 4302/224/404 4286/232/404 4294/234/404
-f 4294/234/404 4304/225/404 4302/224/404
-f 4304/225/403 4294/234/403 4291/232/403
-f 4291/232/403 4303/224/403 4304/225/403
-f 4303/224/407 4291/232/407 4290/233/407
-f 4290/233/407 4305/231/407 4303/224/407
-f 4279/200/390 4311/199/390 4312/202/390
-f 4312/202/390 4280/201/390 4279/200/390
-f 4283/208/391 4292/236/391 4293/235/391
-f 4293/235/391 4284/207/391 4283/208/391
-f 4284/207/398 4293/235/398 4285/236/398
-f 4285/236/398 4300/208/398 4284/207/398
-f 4307/236/27 4269/238/27 4272/237/27
-f 4272/237/27 4308/231/27 4307/236/27
-f 4308/231/27 4272/237/27 4310/239/27
-f 4310/239/27 4287/233/27 4308/231/27
-f 4287/210/409 4310/241/409 4309/240/409
-f 4309/240/409 4285/209/409 4287/210/409
-f 4285/236/26 4309/238/26 4271/242/26
-f 4271/242/26 4300/208/26 4285/236/26
-f 4300/208/26 4271/242/26 4270/240/26
-f 4270/240/26 4299/209/26 4300/208/26
-f 4282/209/26 4277/240/26 4280/242/26
-f 4280/242/26 4283/208/26 4282/209/26
-f 4283/208/26 4280/242/26 4312/238/26
-f 4312/238/26 4292/236/26 4283/208/26
-f 4292/209/410 4312/240/410 4311/241/410
-f 4311/241/410 4290/210/410 4292/209/410
-f 4290/233/27 4311/239/27 4279/237/27
-f 4279/237/27 4305/231/27 4290/233/27
-f 4305/231/27 4279/237/27 4278/238/27
-f 4278/238/27 4306/236/27 4305/231/27
-f 4313/195/436 4314/198/436 4315/197/411
-f 4315/197/411 4316/196/411 4313/195/436
-f 4317/199/437 4318/202/437 4319/201/437
-f 4319/201/437 4320/200/437 4317/199/437
-f 4321/203/414 4322/206/414 4323/205/414
-f 4323/205/414 4324/204/414 4321/203/414
-f 4325/202/465 4326/199/465 4327/200/465
-f 4327/200/465 4328/201/465 4325/202/465
-f 4329/207/417 4330/209/417 4331/208/417
-f 4331/208/417 4332/207/417 4329/207/417
-f 4333/209/171 4334/211/171 4335/210/171
-f 4324/212/418 4323/214/418 4336/213/418
-f 4336/213/418 4337/196/418 4324/212/418
-f 4338/210/419 4339/211/419 4340/209/419
-f 4341/215/420 4340/209/420 4339/211/420
-f 4339/211/420 4342/216/420 4341/215/420
-f 4343/217/167 4316/196/167 4315/197/167
-f 4315/197/167 4344/218/167 4343/217/167
-f 4345/219/438 4321/203/421 4324/204/421
-f 4324/204/421 4346/220/421 4345/219/438
-f 4347/209/422 4329/207/422 4332/207/422
-f 4332/207/422 4348/208/422 4347/209/422
-f 4324/212/423 4337/196/423 4349/213/423
-f 4349/213/423 4346/214/423 4324/212/423
-f 4341/215/424 4342/216/424 4334/211/424
-f 4334/211/424 4333/209/424 4341/215/424
-f 4350/221/465 4314/221/465 4313/222/465
-f 4313/222/465 4336/222/465 4350/221/465
-f 4336/222/425 4313/222/425 4316/203/425
-f 4316/203/425 4337/203/425 4336/222/425
-f 4337/203/426 4316/203/426 4343/206/426
-f 4343/206/426 4349/206/426 4337/203/426
-f 4349/206/437 4343/206/437 4344/223/437
-f 4344/223/437 4351/223/437 4349/206/437
-f 4351/224/427 4344/224/427 4315/226/427
-f 4315/226/427 4352/225/427 4351/224/427
-f 4352/225/428 4315/226/428 4314/224/428
-f 4314/224/428 4350/224/428 4352/225/428
-f 4346/214/419 4349/213/419 4351/228/419
-f 4351/228/419 4353/227/419 4346/214/419
-f 4353/229/465 4354/221/465 4345/219/465
-f 4345/219/465 4346/220/465 4353/229/465
-f 4322/206/437 4355/223/437 4356/230/437
-f 4356/230/437 4323/205/437 4322/206/437
-f 4356/227/171 4350/228/171 4336/213/171
-f 4336/213/171 4323/214/171 4356/227/171
-f 4319/201/437 4357/202/437 4358/199/437
-f 4358/199/437 4320/200/437 4319/201/437
-f 4356/231/487 4335/233/487 4334/232/487
-f 4334/232/487 4350/224/487 4356/231/487
-f 4350/224/428 4334/232/428 4342/234/428
-f 4342/234/428 4352/225/428 4350/224/428
-f 4352/225/427 4342/234/427 4339/232/427
-f 4339/232/427 4351/224/427 4352/225/427
-f 4351/224/430 4339/232/430 4338/233/430
-f 4338/233/430 4353/231/430 4351/224/430
-f 4327/200/465 4359/199/465 4360/202/465
-f 4360/202/465 4328/201/465 4327/200/465
-f 4331/208/417 4340/236/417 4341/235/417
-f 4341/235/417 4332/207/417 4331/208/417
-f 4332/207/422 4341/235/422 4333/236/422
-f 4333/236/422 4348/208/422 4332/207/422
-f 4355/236/27 4317/238/27 4320/237/27
-f 4320/237/27 4356/231/27 4355/236/27
-f 4356/231/27 4320/237/27 4358/239/27
-f 4358/239/27 4335/233/27 4356/231/27
-f 4335/210/191 4358/241/191 4357/240/191
-f 4357/240/191 4333/209/191 4335/210/191
-f 4333/236/26 4357/238/26 4319/242/26
-f 4319/242/26 4348/208/26 4333/236/26
-f 4348/208/26 4319/242/26 4318/240/26
-f 4318/240/26 4347/209/26 4348/208/26
-f 4330/209/26 4325/240/26 4328/242/26
-f 4328/242/26 4331/208/26 4330/209/26
-f 4331/208/26 4328/242/26 4360/238/26
-f 4360/238/26 4340/236/26 4331/208/26
-f 4340/209/431 4360/240/431 4359/241/431
-f 4359/241/431 4338/210/431 4340/209/431
-f 4338/233/27 4359/239/27 4327/237/27
-f 4327/237/27 4353/231/27 4338/233/27
-f 4353/231/27 4327/237/27 4326/238/27
-f 4326/238/27 4354/236/27 4353/231/27
-f 4361/243/160 4362/246/160 4363/245/160
-f 4363/245/160 4364/244/160 4361/243/160
-f 4361/247/163 4365/250/163 4366/249/163
-f 4366/249/163 4362/248/163 4361/247/163
-f 4362/246/162 4366/252/162 4367/251/162
-f 4367/251/162 4363/245/162 4362/246/162
-f 4363/248/161 4367/249/161 4368/250/161
-f 4368/250/161 4364/247/161 4363/248/161
-f 4369/195/411 4370/198/411 4371/197/436
-f 4371/197/436 4372/196/436 4369/195/411
-f 4373/199/437 4374/202/437 4375/201/437
-f 4375/201/437 4376/200/437 4373/199/437
-f 4377/203/414 4378/206/414 4379/205/414
-f 4379/205/414 4380/204/414 4377/203/414
-f 4381/202/465 4382/199/465 4383/200/465
-f 4383/200/465 4384/201/465 4381/202/465
-f 4385/207/417 4386/209/417 4387/208/417
-f 4387/208/417 4388/207/417 4385/207/417
-f 4389/209/171 4390/211/171 4391/210/171
-f 4380/212/418 4379/214/418 4392/213/418
-f 4392/213/418 4393/196/418 4380/212/418
-f 4394/210/419 4395/211/419 4396/209/419
-f 4397/215/420 4396/209/420 4395/211/420
-f 4395/211/420 4398/216/420 4397/215/420
-f 4399/217/167 4372/196/167 4371/197/167
-f 4371/197/167 4400/218/167 4399/217/167
-f 4401/219/421 4377/203/421 4380/204/438
-f 4380/204/438 4402/220/421 4401/219/421
-f 4403/209/422 4385/207/422 4388/207/422
-f 4388/207/422 4404/208/422 4403/209/422
-f 4380/212/423 4393/196/423 4405/213/423
-f 4405/213/423 4402/214/423 4380/212/423
-f 4397/215/424 4398/216/424 4390/211/424
-f 4390/211/424 4389/209/424 4397/215/424
-f 4406/221/465 4370/221/465 4369/222/465
-f 4369/222/465 4392/222/465 4406/221/465
-f 4392/222/425 4369/222/425 4372/203/425
-f 4372/203/425 4393/203/425 4392/222/425
-f 4393/203/426 4372/203/426 4399/206/426
-f 4399/206/426 4405/206/426 4393/203/426
-f 4405/206/437 4399/206/437 4400/223/437
-f 4400/223/437 4407/223/437 4405/206/437
-f 4407/224/427 4400/224/427 4371/226/427
-f 4371/226/427 4408/225/427 4407/224/427
-f 4408/225/428 4371/226/428 4370/224/428
-f 4370/224/428 4406/224/428 4408/225/428
-f 4402/214/419 4405/213/419 4407/228/419
-f 4407/228/419 4409/227/419 4402/214/419
-f 4409/229/465 4410/221/465 4401/219/465
-f 4401/219/465 4402/220/465 4409/229/465
-f 4378/206/437 4411/223/437 4412/230/437
-f 4412/230/437 4379/205/437 4378/206/437
-f 4412/227/171 4406/228/171 4392/213/171
-f 4392/213/171 4379/214/171 4412/227/171
-f 4375/201/437 4413/202/437 4414/199/437
-f 4414/199/437 4376/200/437 4375/201/437
-f 4412/231/487 4391/233/487 4390/232/487
-f 4390/232/487 4406/224/487 4412/231/487
-f 4406/224/428 4390/232/428 4398/234/428
-f 4398/234/428 4408/225/428 4406/224/428
-f 4408/225/427 4398/234/427 4395/232/427
-f 4395/232/427 4407/224/427 4408/225/427
-f 4407/224/430 4395/232/430 4394/233/430
-f 4394/233/430 4409/231/430 4407/224/430
-f 4383/200/465 4415/199/465 4416/202/465
-f 4416/202/465 4384/201/465 4383/200/465
-f 4387/208/417 4396/236/417 4397/235/417
-f 4397/235/417 4388/207/417 4387/208/417
-f 4388/207/422 4397/235/422 4389/236/422
-f 4389/236/422 4404/208/422 4388/207/422
-f 4411/236/27 4373/238/27 4376/237/27
-f 4376/237/27 4412/231/27 4411/236/27
-f 4412/231/27 4376/237/27 4414/239/27
-f 4414/239/27 4391/233/27 4412/231/27
-f 4391/210/191 4414/241/191 4413/240/191
-f 4413/240/191 4389/209/191 4391/210/191
-f 4389/236/26 4413/238/26 4375/242/26
-f 4375/242/26 4404/208/26 4389/236/26
-f 4404/208/26 4375/242/26 4374/240/26
-f 4374/240/26 4403/209/26 4404/208/26
-f 4386/209/26 4381/240/26 4384/242/26
-f 4384/242/26 4387/208/26 4386/209/26
-f 4387/208/26 4384/242/26 4416/238/26
-f 4416/238/26 4396/236/26 4387/208/26
-f 4396/209/431 4416/240/431 4415/241/431
-f 4415/241/431 4394/210/431 4396/209/431
-f 4394/233/27 4415/239/27 4383/237/27
-f 4383/237/27 4409/231/27 4394/233/27
-f 4409/231/27 4383/237/27 4382/238/27
-f 4382/238/27 4410/236/27 4409/231/27
-f 4417/243/432 4418/246/432 4419/245/432
-f 4419/245/432 4420/244/432 4417/243/432
-f 4417/247/433 4421/250/433 4422/249/433
-f 4422/249/433 4418/248/433 4417/247/433
-f 4418/246/434 4422/252/434 4423/251/434
-f 4423/251/434 4419/245/434 4418/246/434
-f 4419/248/435 4423/249/435 4424/250/435
-f 4424/250/435 4420/247/435 4419/248/435
-f 4425/195/443 4426/198/443 4427/197/443
-f 4427/197/443 4428/196/443 4425/195/443
-f 4429/199/390 4430/202/390 4431/201/390
-f 4431/201/390 4432/200/390 4429/199/390
-f 4433/203/444 4434/206/444 4435/205/444
-f 4435/205/444 4436/204/444 4433/203/444
-f 4437/202/388 4438/199/388 4439/200/388
-f 4439/200/388 4440/201/388 4437/202/388
-f 4441/207/398 4442/209/398 4443/208/398
-f 4443/208/398 4444/207/398 4441/207/398
-f 4445/209/445 4446/211/445 4447/210/445
-f 4436/212/446 4435/214/446 4448/213/446
-f 4448/213/446 4449/196/446 4436/212/446
-f 4450/210/447 4451/211/447 4452/209/447
-f 4453/215/448 4452/209/448 4451/211/448
-f 4451/211/448 4454/216/448 4453/215/448
-f 4455/217/449 4428/196/449 4427/197/449
-f 4427/197/449 4456/218/449 4455/217/449
-f 4457/219/451 4433/203/451 4436/204/451
-f 4436/204/451 4458/220/451 4457/219/451
-f 4459/209/391 4441/207/391 4444/207/391
-f 4444/207/391 4460/208/391 4459/209/391
-f 4436/212/452 4449/196/452 4461/213/452
-f 4461/213/452 4458/214/452 4436/212/452
-f 4453/215/453 4454/216/453 4446/211/453
-f 4446/211/453 4445/209/453 4453/215/453
-f 4462/221/388 4426/221/388 4425/222/388
-f 4425/222/388 4448/222/388 4462/221/388
-f 4448/222/402 4425/222/402 4428/203/402
-f 4428/203/402 4449/203/402 4448/222/402
-f 4449/203/401 4428/203/401 4455/206/401
-f 4455/206/401 4461/206/401 4449/203/401
-f 4461/206/390 4455/206/390 4456/223/390
-f 4456/223/390 4463/223/390 4461/206/390
-f 4463/224/454 4456/224/454 4427/226/454
-f 4427/226/454 4464/225/454 4463/224/454
-f 4464/225/455 4427/226/455 4426/224/455
-f 4426/224/455 4462/224/455 4464/225/455
-f 4458/214/447 4461/213/447 4463/228/447
-f 4463/228/447 4465/227/447 4458/214/447
-f 4465/229/388 4466/221/388 4457/219/388
-f 4457/219/388 4458/220/388 4465/229/388
-f 4434/206/390 4467/223/390 4468/230/390
-f 4468/230/390 4435/205/390 4434/206/390
-f 4468/227/445 4462/228/445 4448/213/445
-f 4448/213/445 4435/214/445 4468/227/445
-f 4431/201/390 4469/202/390 4470/199/390
-f 4470/199/390 4432/200/390 4431/201/390
-f 4468/231/456 4447/233/456 4446/232/456
-f 4446/232/456 4462/224/456 4468/231/456
-f 4462/224/455 4446/232/455 4454/234/455
-f 4454/234/455 4464/225/455 4462/224/455
-f 4464/225/454 4454/234/454 4451/232/454
-f 4451/232/454 4463/224/454 4464/225/454
-f 4463/224/457 4451/232/457 4450/233/457
-f 4450/233/457 4465/231/457 4463/224/457
-f 4439/200/388 4471/199/388 4472/202/388
-f 4472/202/388 4440/201/388 4439/200/388
-f 4443/208/398 4452/236/398 4453/235/398
-f 4453/235/398 4444/207/398 4443/208/398
-f 4444/207/391 4453/235/391 4445/236/391
-f 4445/236/391 4460/208/391 4444/207/391
-f 4467/236/27 4429/238/27 4432/237/27
-f 4432/237/27 4468/231/27 4467/236/27
-f 4468/231/27 4432/237/27 4470/239/27
-f 4470/239/27 4447/233/27 4468/231/27
-f 4447/210/484 4470/241/484 4469/240/484
-f 4469/240/484 4445/209/484 4447/210/484
-f 4445/236/26 4469/238/26 4431/242/26
-f 4431/242/26 4460/208/26 4445/236/26
-f 4460/208/26 4431/242/26 4430/240/26
-f 4430/240/26 4459/209/26 4460/208/26
-f 4442/209/26 4437/240/26 4440/242/26
-f 4440/242/26 4443/208/26 4442/209/26
-f 4443/208/26 4440/242/26 4472/238/26
-f 4472/238/26 4452/236/26 4443/208/26
-f 4452/209/459 4472/240/459 4471/241/459
-f 4471/241/459 4450/210/459 4452/209/459
-f 4450/233/27 4471/239/27 4439/237/27
-f 4439/237/27 4465/231/27 4450/233/27
-f 4465/231/27 4439/237/27 4438/238/27
-f 4438/238/27 4466/236/27 4465/231/27
-f 4473/243/150 4474/246/150 4475/245/150
-f 4475/245/150 4476/244/150 4473/243/150
-f 4473/247/153 4477/250/153 4478/249/153
-f 4478/249/153 4474/248/153 4473/247/153
-f 4474/246/152 4478/252/152 4479/251/152
-f 4479/251/152 4475/245/152 4474/246/152
-f 4475/248/151 4479/249/151 4480/250/151
-f 4480/250/151 4476/247/151 4475/248/151
-f 4481/253/18 4482/256/18 4483/255/18
-f 4483/255/18 4484/254/18 4481/253/18
-f 4485/257/17 4486/258/17 4482/256/17
-f 4482/256/17 4481/253/17 4485/257/17
-f 4487/259/16 4488/260/16 4486/258/16
-f 4486/258/16 4485/257/16 4487/259/16
-f 4489/261/15 4490/264/15 4488/263/15
-f 4488/263/15 4487/262/118 4489/261/15
-f 4491/265/14 4492/266/14 4490/264/14
-f 4490/264/14 4489/261/14 4491/265/14
-f 4493/267/13 4494/268/13 4492/266/13
-f 4492/266/13 4491/265/13 4493/267/13
-f 4495/269/25 4496/270/25 4494/268/24
-f 4494/268/24 4493/267/24 4495/269/25
-f 4497/271/23 4498/272/23 4496/270/23
-f 4496/270/23 4495/269/23 4497/271/23
-f 4499/273/191 4500/274/22 4498/272/22
-f 4498/272/22 4497/271/22 4499/273/191
-f 4501/275/21 4502/276/21 4500/274/21
-f 4500/274/21 4499/273/21 4501/275/21
-f 4503/277/20 4504/278/20 4502/276/20
-f 4502/276/20 4501/275/20 4503/277/20
-f 4484/254/19 4483/255/19 4504/278/190
-f 4504/278/190 4503/277/190 4484/254/19
-f 4482/279/27 4505/282/27 4506/281/27
-f 4506/281/27 4483/280/27 4482/279/27
-f 4507/283/27 4508/284/27 4509/282/27
-f 4509/282/27 4510/279/27 4507/283/27
-f 4488/285/27 4511/285/27 4512/284/27
-f 4512/284/27 4486/283/27 4488/285/27
-f 4513/286/27 4514/287/27 4515/285/27
-f 4515/285/27 4516/285/27 4513/286/27
-f 4492/288/27 4517/289/27 4518/287/27
-f 4518/287/27 4490/286/27 4492/288/27
-f 4519/290/27 4520/291/27 4521/289/27
-f 4521/289/27 4522/288/27 4519/290/27
-f 4496/292/27 4523/293/27 4524/291/27
-f 4524/291/27 4494/290/27 4496/292/27
-f 4525/294/27 4526/295/27 4527/293/27
-f 4527/293/27 4528/292/27 4525/294/27
-f 4500/296/27 4529/297/27 4530/295/27
-f 4530/295/27 4498/294/27 4500/296/27
-f 4531/298/27 4532/299/27 4533/297/27
-f 4533/297/27 4534/296/27 4531/298/27
-f 4504/300/27 4535/300/27 4536/299/27
-f 4536/299/27 4502/298/27 4504/300/27
-f 4537/280/27 4538/281/27 4539/300/27
-f 4539/300/27 4540/300/27 4537/280/27
-f 4505/301/24 4541/304/24 4542/303/24
-f 4542/303/24 4506/302/24 4505/301/24
-f 4512/305/23 4543/306/23 4541/304/23
-f 4541/304/23 4505/301/23 4512/305/23
-f 4511/307/22 4544/308/22 4543/306/22
-f 4543/306/22 4512/305/191 4511/307/22
-f 4518/309/21 4545/310/21 4544/308/21
-f 4544/308/21 4511/307/21 4518/309/21
-f 4517/311/20 4546/312/20 4545/310/20
-f 4545/310/20 4518/309/20 4517/311/20
-f 4524/313/19 4547/314/19 4546/312/19
-f 4546/312/19 4517/311/19 4524/313/19
-f 4523/315/194 4548/316/194 4547/314/18
-f 4547/314/18 4524/313/18 4523/315/194
-f 4530/317/17 4549/318/17 4548/316/17
-f 4548/316/17 4523/315/17 4530/317/17
-f 4529/319/16 4550/320/16 4549/318/16
-f 4549/318/16 4530/317/16 4529/319/16
-f 4536/321/118 4551/324/15 4550/323/15
-f 4550/323/15 4529/322/15 4536/321/118
-f 4535/325/14 4552/326/14 4551/324/14
-f 4551/324/14 4536/321/14 4535/325/14
-f 4506/302/13 4542/303/13 4552/326/192
-f 4552/326/192 4535/325/192 4506/302/13
-f 4541/327/27 4553/329/27 4542/328/27
-f 4543/330/27 4553/329/27 4541/327/27
-f 4544/331/27 4553/329/27 4543/330/27
-f 4545/332/27 4553/329/27 4544/331/27
-f 4546/333/27 4553/329/27 4545/332/27
-f 4547/334/27 4553/329/27 4546/333/27
-f 4548/335/27 4553/329/27 4547/334/27
-f 4549/336/27 4553/329/27 4548/335/27
-f 4550/337/27 4553/329/27 4549/336/27
-f 4551/338/27 4553/329/27 4550/337/27
-f 4552/339/27 4553/329/27 4551/338/27
-f 4542/328/27 4553/329/27 4552/339/27
-f 4486/258/17 4507/341/17 4510/340/17
-f 4510/340/17 4482/256/17 4486/258/17
-f 4482/279/151 4510/279/151 4509/282/151
-f 4509/282/151 4505/282/151 4482/279/151
-f 4505/301/23 4509/343/23 4508/342/23
-f 4508/342/23 4512/305/23 4505/301/23
-f 4512/284/198 4508/284/198 4507/283/198
-f 4507/283/198 4486/283/198 4512/284/198
-f 4490/264/15 4513/345/15 4516/344/15
-f 4516/344/15 4488/263/15 4490/264/15
-f 4488/285/7 4516/285/7 4515/285/7
-f 4515/285/7 4511/285/7 4488/285/7
-f 4511/307/21 4515/347/21 4514/346/21
-f 4514/346/21 4518/309/21 4511/307/21
-f 4518/287/197 4514/287/197 4513/286/197
-f 4513/286/197 4490/286/197 4518/287/197
-f 4494/268/13 4519/349/13 4522/348/13
-f 4522/348/13 4492/266/13 4494/268/13
-f 4492/288/163 4522/288/163 4521/289/163
-f 4521/289/163 4517/289/163 4492/288/163
-f 4517/311/19 4521/351/19 4520/350/19
-f 4520/350/19 4524/313/19 4517/311/19
-f 4524/291/10 4520/291/10 4519/290/10
-f 4519/290/10 4494/290/10 4524/291/10
-f 4498/272/23 4525/353/23 4528/352/23
-f 4528/352/23 4496/270/23 4498/272/23
-f 4496/292/153 4528/292/153 4527/293/153
-f 4527/293/153 4523/293/153 4496/292/153
-f 4523/315/17 4527/355/17 4526/354/17
-f 4526/354/17 4530/317/17 4523/315/17
-f 4530/295/196 4526/295/196 4525/294/196
-f 4525/294/196 4498/294/196 4530/295/196
-f 4502/276/21 4531/357/21 4534/356/178
-f 4534/356/178 4500/274/21 4502/276/21
-f 4500/296/1 4534/296/1 4533/297/1
-f 4533/297/1 4529/297/1 4500/296/1
-f 4529/322/15 4533/359/15 4532/358/15
-f 4532/358/15 4536/321/118 4529/322/15
-f 4536/299/195 4532/299/195 4531/298/195
-f 4531/298/195 4502/298/195 4536/299/195
-f 4483/255/19 4537/361/19 4540/360/19
-f 4540/360/19 4504/278/190 4483/255/19
-f 4504/300/161 4540/300/161 4539/300/161
-f 4539/300/161 4535/300/161 4504/300/161
-f 4535/325/192 4539/363/192 4538/362/13
-f 4538/362/13 4506/302/13 4535/325/192
-f 4506/281/4 4538/281/4 4537/280/4
-f 4537/280/4 4483/280/4 4506/281/4
-# 7168 faces
-
diff --git a/examples/web/models/resources/models/castle_diffuse.png b/examples/web/models/resources/models/castle_diffuse.png
deleted file mode 100644
index c7085a3..0000000
--- a/examples/web/models/resources/models/castle_diffuse.png
+++ /dev/null
Binary files differ
diff --git a/examples/web/models/resources/models/cube.obj b/examples/web/models/resources/models/cube.obj
deleted file mode 100644
index bf7e3be..0000000
--- a/examples/web/models/resources/models/cube.obj
+++ /dev/null
@@ -1,68 +0,0 @@
-# reference material
-#mtllib cube.mtl
-
-# object box
-
-# vertex (XZY)
-v 5.5 0 1.5
-v 8.5 0 1.5
-v 5.5 0 -1.5
-v 8.5 0 -1.5
-v 5.5 3 1.5
-v 8.5 3 1.5
-v 5.5 3 -1.5
-v 8.5 3 -1.5
-
-# normals (XYZ)
-vn 0 -1 0
-vn 0 1 0
-vn 0 0 1
-vn 1 0 0
-vn 0 0 -1
-vn -1 0 0
-
-# UVs (XY)
-vt 0.5 0 0
-vt 1 0 0
-vt 1 0.5 0
-vt 0.5 0.5 0
-vt 0.5 0.5 0
-vt 1 0.5 0
-vt 0.5 1 0
-vt 1 1 0
-vt 0 0.5 0
-vt 1 0.5 0
-vt 1 0 0
-vt 0 0 0
-vt 0 0.5 0
-vt 1 0.5 0
-vt 1 1 0
-vt 0 1 0
-vt 0.5 0 0
-vt 0 0 0
-vt 0 0.5 0
-vt 0.5 0.5 0
-vt 0 0.5 0
-vt 0.5 0.5 0
-vt 0.5 1 0
-vt 0 1 0
-
-# merger
-g box
-
-# reference material
-#usemtl mat01
-
-# faces
-f 1/9/1 3/10/1 4/11/1
-f 4/11/1 2/12/1 1/9/1
-f 5/13/2 6/14/2 8/15/2
-f 8/15/2 7/16/2 5/13/2
-f 1/17/6 2/18/6 6/19/6
-f 6/19/6 5/20/6 1/17/6
-f 2/6/1 4/5/1 8/7/1
-f 8/7/1 6/8/1 2/6/1
-f 4/2/3 3/1/3 7/4/3
-f 7/4/3 8/3/3 4/2/3
-f 3/22/5 1/21/5 5/24/5
-f 5/24/5 7/23/5 3/22/5
diff --git a/examples/web/models/resources/models/cube_diffuse.png b/examples/web/models/resources/models/cube_diffuse.png
deleted file mode 100644
index 6becd47..0000000
--- a/examples/web/models/resources/models/cube_diffuse.png
+++ /dev/null
Binary files differ
diff --git a/examples/web/models/resources/models/house.obj b/examples/web/models/resources/models/house.obj
deleted file mode 100644
index 67d2c88..0000000
--- a/examples/web/models/resources/models/house.obj
+++ /dev/null
@@ -1,4564 +0,0 @@
-# (c) 2018 Medieval Assets Pack by Alberto Cano
-# Licensed as Creative Commons Attribution-NonCommercial 4.0
-
-#
-# object house
-#
-
-v -6.3138 8.7250 -0.7017
-v -7.4057 8.9558 -0.7017
-v -7.3659 9.1439 -0.7017
-v -6.2741 8.9132 -0.7017
-v -7.2840 9.5316 -0.1884
-v -6.1921 9.3008 -0.1884
-v -6.2319 9.1127 -0.1884
-v -6.1895 9.3135 -0.0777
-v -7.2813 9.5443 -0.0777
-v -6.2292 9.1254 -0.0777
-v -6.3138 8.7250 0.5464
-v -6.2741 8.9132 0.5464
-v -7.3659 9.1439 0.5464
-v -7.4057 8.9558 0.5464
-v -6.1921 9.3008 0.0331
-v -7.2840 9.5316 0.0331
-v -6.2319 9.1127 0.0331
-v -5.1675 8.5556 -0.7017
-v -6.2794 8.6512 -0.7017
-v -6.2629 8.8428 -0.7017
-v -5.1510 8.7472 -0.7017
-v -6.2290 9.2375 -0.1884
-v -5.1171 9.1420 -0.1884
-v -5.1335 8.9504 -0.1884
-v -5.1160 9.1549 -0.0777
-v -6.2279 9.2504 -0.0777
-v -5.1324 8.9633 -0.0777
-v -5.1675 8.5556 0.5464
-v -5.1510 8.7472 0.5464
-v -6.2629 8.8428 0.5464
-v -6.2794 8.6512 0.5464
-v -5.1171 9.1420 0.0331
-v -6.2290 9.2375 0.0331
-v -5.1335 8.9504 0.0331
-v -3.1858 8.2183 -0.7017
-v -4.3011 8.2559 -0.7017
-v -4.2946 8.4481 -0.7017
-v -3.1793 8.4104 -0.7017
-v -4.2813 8.8441 -0.1884
-v -3.1659 8.8064 -0.1884
-v -3.1724 8.6143 -0.1884
-v -3.1655 8.8194 -0.0777
-v -4.2808 8.8570 -0.0777
-v -3.1720 8.6272 -0.0777
-v -3.1858 8.2183 0.5464
-v -3.1793 8.4104 0.5464
-v -4.2946 8.4481 0.5464
-v -4.3011 8.2559 0.5464
-v -3.1659 8.8064 0.0331
-v -4.2813 8.8441 0.0331
-v -3.1724 8.6143 0.0331
-v -4.2172 8.3089 -0.7017
-v -5.3250 8.4436 -0.7017
-v -5.3018 8.6344 -0.7017
-v -4.1940 8.4997 -0.7017
-v -5.2540 9.0278 -0.1884
-v -4.1462 8.8931 -0.1884
-v -4.1694 8.7022 -0.1884
-v -4.1446 8.9059 -0.0777
-v -5.2524 9.0406 -0.0777
-v -4.1678 8.7150 -0.0777
-v -4.2172 8.3089 0.5464
-v -4.1940 8.4997 0.5464
-v -5.3018 8.6344 0.5464
-v -5.3250 8.4436 0.5464
-v -4.1462 8.8931 0.0331
-v -5.2540 9.0278 0.0331
-v -4.1694 8.7022 0.0331
-v 6.7499 10.4845 -0.7017
-v 6.7434 10.6766 -0.7017
-v 7.8588 10.7143 -0.7017
-v 7.8653 10.5221 -0.7017
-v 7.8454 11.1103 -0.1884
-v 6.7301 11.0726 -0.1884
-v 6.7366 10.8805 -0.1884
-v 6.7296 11.0856 -0.0777
-v 7.8450 11.1232 -0.0777
-v 6.7361 10.8934 -0.0777
-v 6.7499 10.4845 0.5464
-v 7.8653 10.5221 0.5464
-v 7.8588 10.7143 0.5464
-v 6.7434 10.6766 0.5464
-v 7.8454 11.1103 0.0331
-v 6.7301 11.0726 0.0331
-v 6.7366 10.8805 0.0331
-v 5.8327 10.2129 -0.7017
-v 5.7996 10.4023 -0.7017
-v 6.8989 10.5944 -0.7017
-v 6.9320 10.4050 -0.7017
-v 6.8307 10.9847 -0.1884
-v 5.7314 10.7926 -0.1884
-v 5.7645 10.6032 -0.1884
-v 5.7291 10.8054 -0.0777
-v 6.8284 10.9974 -0.0777
-v 5.7622 10.6159 -0.0777
-v 5.8327 10.2129 0.5464
-v 6.9320 10.4050 0.5464
-v 6.8989 10.5944 0.5464
-v 5.7996 10.4023 0.5464
-v 6.8307 10.9847 0.0331
-v 5.7314 10.7926 0.0331
-v 5.7645 10.6032 0.0331
-v 4.8462 10.0032 -0.7017
-v 4.8230 10.1940 -0.7017
-v 5.9308 10.3287 -0.7017
-v 5.9540 10.1379 -0.7017
-v 5.8830 10.7221 -0.1884
-v 4.7752 10.5874 -0.1884
-v 4.7984 10.3965 -0.1884
-v 4.7736 10.6002 -0.0777
-v 5.8814 10.7349 -0.0777
-v 4.7968 10.4094 -0.0777
-v 4.8462 10.0032 0.5464
-v 5.9540 10.1379 0.5464
-v 5.9308 10.3287 0.5464
-v 4.8230 10.1940 0.5464
-v 5.8830 10.7221 0.0331
-v 4.7752 10.5874 0.0331
-v 4.7984 10.3965 0.0331
-v 3.8496 9.8167 -0.7017
-v 3.8264 10.0075 -0.7017
-v 4.9342 10.1423 -0.7017
-v 4.9574 9.9514 -0.7017
-v 4.8864 10.5356 -0.1884
-v 3.7786 10.4009 -0.1884
-v 3.8018 10.2100 -0.1884
-v 3.7770 10.4137 -0.0777
-v 4.8848 10.5484 -0.0777
-v 3.8002 10.2229 -0.0777
-v 3.8496 9.8167 0.5464
-v 4.9574 9.9514 0.5464
-v 4.9342 10.1423 0.5464
-v 3.8264 10.0076 0.5464
-v 4.8864 10.5356 0.0331
-v 3.7786 10.4009 0.0331
-v 3.8018 10.2100 0.0331
-v 2.9090 9.7161 -0.7017
-v 2.9025 9.9083 -0.7017
-v 4.0178 9.9460 -0.7017
-v 4.0243 9.7538 -0.7017
-v 4.0044 10.3420 -0.1884
-v 2.8891 10.3043 -0.1884
-v 2.8956 10.1121 -0.1884
-v 2.8887 10.3173 -0.0777
-v 4.0040 10.3549 -0.0777
-v 2.8952 10.1251 -0.0777
-v 2.9090 9.7161 0.5464
-v 4.0243 9.7538 0.5464
-v 4.0178 9.9460 0.5464
-v 2.9025 9.9083 0.5464
-v 4.0044 10.3420 0.0331
-v 2.8891 10.3043 0.0331
-v 2.8956 10.1121 0.0331
-v 1.9911 9.6053 -0.7017
-v 1.9808 9.7973 -0.7017
-v 3.0952 9.8570 -0.7017
-v 3.1055 9.6650 -0.7017
-v 3.0740 10.2527 -0.1884
-v 1.9596 10.1930 -0.1884
-v 1.9699 10.0010 -0.1884
-v 1.9589 10.2059 -0.0777
-v 3.0733 10.2656 -0.0777
-v 1.9692 10.0139 -0.0777
-v 1.9911 9.6053 0.5464
-v 3.1055 9.6650 0.5464
-v 3.0952 9.8570 0.5464
-v 1.9808 9.7973 0.5464
-v 3.0740 10.2527 0.0331
-v 1.9596 10.1930 0.0331
-v 1.9699 10.0010 0.0331
-v -3.0236 10.4055 -0.7017
-v -4.1154 10.6363 -0.7017
-v -4.0757 10.8244 -0.7017
-v -2.9838 10.5936 -0.7017
-v -3.9937 11.2121 -0.1884
-v -2.9019 10.9813 -0.1884
-v -2.9417 10.7932 -0.1884
-v -2.8992 10.9940 -0.0777
-v -3.9911 11.2247 -0.0777
-v -2.9390 10.8059 -0.0777
-v -3.0236 10.4055 0.5464
-v -2.9838 10.5937 0.5464
-v -4.0757 10.8244 0.5464
-v -4.1154 10.6363 0.5464
-v -2.9019 10.9813 0.0331
-v -3.9937 11.2121 0.0331
-v -2.9417 10.7932 0.0331
-v -1.8772 10.2361 -0.7017
-v -2.9891 10.3316 -0.7017
-v -2.9726 10.5232 -0.7017
-v -1.8608 10.4277 -0.7017
-v -2.9387 10.9180 -0.1884
-v -1.8268 10.8225 -0.1884
-v -1.8433 10.6309 -0.1884
-v -1.8257 10.8354 -0.0777
-v -2.9376 10.9309 -0.0777
-v -1.8422 10.6438 -0.0777
-v -1.8772 10.2361 0.5464
-v -1.8608 10.4277 0.5464
-v -2.9726 10.5232 0.5464
-v -2.9891 10.3316 0.5464
-v -1.8268 10.8225 0.0331
-v -2.9387 10.9180 0.0331
-v -1.8433 10.6309 0.0331
-v -0.9270 9.9893 -0.7017
-v -2.0348 10.1241 -0.7017
-v -2.0116 10.3149 -0.7017
-v -0.9038 10.1802 -0.7017
-v -1.9637 10.7083 -0.1884
-v -0.8559 10.5736 -0.1884
-v -0.8791 10.3827 -0.1884
-v -0.8544 10.5864 -0.0777
-v -1.9622 10.7211 -0.0777
-v -0.8776 10.3955 -0.0777
-v -0.9270 9.9893 0.5464
-v -0.9038 10.1802 0.5464
-v -2.0116 10.3149 0.5464
-v -2.0348 10.1241 0.5464
-v -0.8559 10.5736 0.0331
-v -1.9637 10.7083 0.0331
-v -0.8791 10.3827 0.0331
-v 0.1045 9.8987 -0.7017
-v -1.0109 9.9364 -0.7017
-v -1.0044 10.1286 -0.7017
-v 0.1109 10.0909 -0.7017
-v -0.9910 10.5246 -0.1884
-v 0.1243 10.4869 -0.1884
-v 0.1178 10.2947 -0.1884
-v 0.1248 10.4999 -0.0777
-v -0.9906 10.5375 -0.0777
-v 0.1183 10.3077 -0.0777
-v 0.1045 9.8987 0.5464
-v 0.1109 10.0909 0.5464
-v -1.0044 10.1286 0.5464
-v -1.0109 9.9364 0.5464
-v 0.1243 10.4869 0.0331
-v -0.9910 10.5246 0.0331
-v 0.1178 10.2947 0.0331
-v 1.1663 9.7500 -0.7017
-v 0.0510 9.7876 -0.7017
-v 0.0575 9.9798 -0.7017
-v 1.1728 9.9421 -0.7017
-v 0.0708 10.3758 -0.1884
-v 1.1862 10.3381 -0.1884
-v 1.1797 10.1460 -0.1884
-v 1.1866 10.3511 -0.0777
-v 0.0713 10.3887 -0.0777
-v 1.1801 10.1589 -0.0777
-v 1.1663 9.7500 0.5464
-v 1.1728 9.9422 0.5464
-v 0.0575 9.9798 0.5464
-v 0.0510 9.7876 0.5464
-v 1.1862 10.3381 0.0331
-v 0.0708 10.3758 0.0331
-v 1.1797 10.1460 0.0331
-v 2.0591 9.7227 -0.7017
-v 0.9513 9.5879 -0.7017
-v 0.9281 9.7788 -0.7017
-v 2.0359 9.9135 -0.7017
-v 0.8803 10.1721 -0.1884
-v 1.9881 10.3069 -0.1884
-v 2.0113 10.1160 -0.1884
-v 1.9865 10.3197 -0.0777
-v 0.8787 10.1850 -0.0777
-v 2.0097 10.1289 -0.0777
-v 2.0591 9.7227 0.5464
-v 2.0359 9.9135 0.5464
-v 0.9281 9.7788 0.5464
-v 0.9513 9.5879 0.5464
-v 1.9881 10.3069 0.0331
-v 0.8803 10.1721 0.0331
-v 2.0113 10.1160 0.0331
-v 0.9445 11.6574 4.7943
-v 0.9445 11.7921 5.9021
-v 0.9445 11.9830 5.8789
-v 0.9445 11.8483 4.7711
-v 1.4578 12.3763 5.8310
-v 1.4578 12.2416 4.7232
-v 1.4578 12.0508 4.7465
-v 1.5686 12.2545 4.7217
-v 1.5686 12.3892 5.8295
-v 1.5686 12.0636 4.7449
-v 2.1926 11.6574 4.7943
-v 2.1926 11.8483 4.7711
-v 2.1926 11.9830 5.8789
-v 2.1926 11.7921 5.9021
-v 1.6793 12.2416 4.7232
-v 1.6793 12.3763 5.8310
-v 1.6793 12.0508 4.7465
-v 0.9445 11.4668 3.7151
-v 0.9445 11.5624 4.8270
-v 0.9445 11.7540 4.8105
-v 0.9445 11.6584 3.6987
-v 1.4578 12.1487 4.7766
-v 1.4578 12.0532 3.6647
-v 1.4578 11.8616 3.6812
-v 1.5686 12.0661 3.6636
-v 1.5686 12.1616 4.7755
-v 1.5686 11.8745 3.6801
-v 2.1926 11.4668 3.7151
-v 2.1926 11.6584 3.6987
-v 2.1926 11.7540 4.8105
-v 2.1926 11.5624 4.8270
-v 1.6793 12.0532 3.6647
-v 1.6793 12.1487 4.7766
-v 1.6793 11.8616 3.6812
-v 0.9445 11.2863 3.3077
-v 0.9445 11.3239 4.4230
-v 0.9445 11.5161 4.4165
-v 0.9445 11.4784 3.3012
-v 1.4578 11.9121 4.4032
-v 1.4578 11.8745 3.2879
-v 1.4578 11.6823 3.2943
-v 1.5686 11.8874 3.2874
-v 1.5686 11.9250 4.4027
-v 1.5686 11.6952 3.2939
-v 2.1926 11.2863 3.3077
-v 2.1926 11.4784 3.3012
-v 2.1926 11.5161 4.4165
-v 2.1926 11.3239 4.4230
-v 1.6793 11.8745 3.2879
-v 1.6793 11.9121 4.4032
-v 1.6793 11.6823 3.2943
-v 2.1926 11.3823 3.3259
-v 2.1926 11.5170 2.2181
-v 2.1926 11.7079 2.2413
-v 2.1926 11.5732 3.3492
-v 1.6793 12.1012 2.2892
-v 1.6793 11.9665 3.3970
-v 1.6793 11.7757 3.3738
-v 1.5686 11.9794 3.3985
-v 1.5686 12.1141 2.2907
-v 1.5686 11.7885 3.3753
-v 0.9445 11.3823 3.3259
-v 0.9445 11.5732 3.3492
-v 0.9445 11.7079 2.2413
-v 0.9445 11.5170 2.2181
-v 1.4578 11.9665 3.3970
-v 1.4578 12.1012 2.2892
-v 1.4578 11.7757 3.3738
-v 2.1926 11.5582 2.4201
-v 2.1926 11.6929 1.3123
-v 2.1926 11.8838 1.3355
-v 2.1926 11.7491 2.4433
-v 1.6793 12.2771 1.3833
-v 1.6793 12.1424 2.4911
-v 1.6793 11.9516 2.4679
-v 1.5686 12.1553 2.4927
-v 1.5686 12.2900 1.3849
-v 1.5686 11.9644 2.4695
-v 0.9445 11.5582 2.4201
-v 0.9445 11.7491 2.4433
-v 0.9445 11.8838 1.3355
-v 0.9445 11.6929 1.3123
-v 1.4578 12.1424 2.4911
-v 1.4578 12.2771 1.3833
-v 1.4578 11.9516 2.4679
-v 2.1926 11.7610 1.6115
-v 2.1926 11.8957 0.5037
-v 2.1926 12.0866 0.5269
-v 2.1926 11.9519 1.6347
-v 1.6793 12.4799 0.5747
-v 1.6793 12.3452 1.6826
-v 1.6793 12.1543 1.6593
-v 1.5686 12.3580 1.6841
-v 1.5686 12.4928 0.5763
-v 1.5686 12.1672 1.6609
-v 0.9445 11.7610 1.6115
-v 0.9445 11.9519 1.6347
-v 0.9445 12.0866 0.5269
-v 0.9445 11.8957 0.5037
-v 1.4578 12.3452 1.6826
-v 1.4578 12.4799 0.5747
-v 1.4578 12.1543 1.6593
-v -1.1371 7.4582 -4.0955
-v -4.2338 7.4582 -4.3121
-v -4.2273 7.6317 -4.5957
-v -1.1338 7.6317 -4.3617
-v -3.2516 7.7677 3.5028
-v -4.2338 7.4582 4.2507
-v -4.6406 11.0258 -0.0777
-v -3.2516 10.6900 -0.0777
-v -3.2516 7.7677 -3.8461
-v -0.6460 7.7677 -3.6582
-v -4.6406 11.2779 -0.0777
-v -1.3405 10.5888 -0.0777
-v -1.1371 7.4582 3.9402
-v 1.9596 7.4582 3.9402
-v 1.9596 7.6317 4.2064
-v -1.1338 7.6317 4.2064
-v -0.6460 7.7677 3.5028
-v 1.9596 7.7677 3.5028
-v 1.9596 10.0791 -0.0777
-v 1.9596 7.4582 -4.0955
-v 1.9596 7.6317 -4.3617
-v 1.9596 7.7677 -3.6582
-v -4.2273 7.6317 4.5343
-v 8.1465 7.6317 -4.5957
-v 8.1530 7.4582 -4.3121
-v 5.0563 7.4582 -4.0955
-v 5.0531 7.6317 -4.3617
-v 7.1709 7.7677 3.5028
-v 7.1709 10.6900 -0.0777
-v 8.5599 11.0258 -0.0777
-v 8.1530 7.4582 4.2507
-v 7.1709 7.7677 -3.8461
-v 4.5652 7.7677 -3.6582
-v 5.2597 10.5888 -0.0777
-v 8.5599 11.2779 -0.0777
-v 5.0563 7.4582 3.9402
-v 5.0531 7.6317 4.2064
-v 4.5652 7.7677 3.5028
-v 8.1465 7.6317 4.5343
-v -4.6567 6.8869 -2.9522
-v -7.7534 6.8869 -3.1079
-v -7.7469 7.0605 -3.3117
-v -4.6535 7.0605 -3.1435
-v -6.7712 7.1965 2.5090
-v -7.7534 6.8869 3.0465
-v -8.1602 9.3059 -0.0645
-v -6.7712 8.9701 -0.0645
-v -6.7712 7.1965 -2.7729
-v -4.1656 7.1965 -2.6379
-v -8.1602 9.5581 -0.0645
-v -4.8601 8.8689 -0.0645
-v -4.6567 6.8869 2.8233
-v -3.2516 6.8869 2.8233
-v -3.2516 7.0605 3.0146
-v -4.6535 7.0605 3.0146
-v -4.1656 7.1965 2.5090
-v -3.2516 7.1965 2.5090
-v -3.2516 8.5897 -0.0645
-v -3.2516 6.8869 -2.9522
-v -3.2516 7.0605 -3.1435
-v -3.2516 7.1965 -2.6379
-v -7.7469 7.0605 3.2504
-v -6.7232 3.1632 -3.0057
-v -7.2373 3.1632 -3.0057
-v -7.2146 4.8291 -2.9829
-v -6.8069 4.8291 -2.9829
-v -6.7232 3.1632 -2.4581
-v -6.8069 4.8291 -2.5099
-v -7.2373 3.1632 -2.4581
-v -7.2146 4.8291 -2.5099
-v -6.6744 6.9707 -3.0545
-v -7.2862 6.9707 -3.0545
-v -6.6744 7.4227 -2.4093
-v -7.2862 7.4227 -2.4093
-v -7.1861 2.8938 -0.0777
-v -3.1845 2.8938 -0.0777
-v -3.1845 2.8938 2.8036
-v -7.1861 2.8938 2.8036
-v -3.1845 7.0912 2.8036
-v -7.1861 7.0912 2.8036
-v -3.1845 2.8938 -2.9589
-v -7.1861 2.8938 -2.9589
-v -7.1861 7.0912 -2.9589
-v -3.1845 7.0912 -2.9589
-v -7.1861 9.1993 -0.0777
-v -7.1931 5.9506 -0.5142
-v -7.1931 4.9600 -0.5142
-v -7.1931 4.9340 -0.0777
-v -7.1931 6.2676 -0.0777
-v -7.1671 4.9838 -0.8556
-v -7.1671 4.8411 -0.8556
-v -7.2673 4.8411 -0.8556
-v -7.2673 4.9838 -0.8556
-v -7.1671 6.5014 -0.0777
-v -7.1671 6.0404 -0.7429
-v -7.2673 6.0404 -0.7429
-v -7.2673 6.5014 -0.0777
-v -7.1671 4.8411 0.7003
-v -7.1671 4.9838 0.7003
-v -7.2673 4.9838 0.7003
-v -7.2673 4.8411 0.7003
-v -7.1671 4.7914 -0.0777
-v -7.1671 4.8411 0.5875
-v -7.2673 4.8411 0.5875
-v -7.2673 4.7914 -0.0777
-v -7.3772 4.8411 -0.7429
-v -7.3772 4.9600 -0.5142
-v -7.3772 4.9838 -0.7429
-v -7.2673 5.9506 -0.5142
-v -7.2673 6.2676 -0.0777
-v -7.3772 4.9838 0.5875
-v -7.3772 4.9692 0.3589
-v -7.3772 4.8411 0.5875
-v -7.3772 4.7914 -0.0777
-v -7.3772 4.9340 -0.0777
-v -7.1931 5.9506 0.3589
-v -7.1931 4.9692 0.3589
-v -7.1671 6.0404 0.5875
-v -7.2673 6.0404 0.5875
-v -7.1671 4.8411 -0.7429
-v -7.2673 4.8411 -0.7429
-v -7.2673 5.9506 0.3589
-v -7.2673 4.9600 -0.5142
-v -7.2673 4.9692 0.3589
-v -7.2673 4.9340 -0.0777
-v -7.2673 4.9838 0.5875
-v -7.1671 4.9838 0.5875
-v -7.1671 4.9838 -0.7429
-v -7.2673 4.9838 -0.7429
-v -7.3772 4.8411 -0.8556
-v -7.3772 4.9838 -0.8556
-v -7.3772 4.9838 0.7003
-v -7.3772 4.8411 0.7003
-v -7.4310 3.2178 2.3310
-v -7.4310 2.7084 2.3310
-v -7.4310 2.7084 2.8790
-v -7.4310 3.2178 2.8790
-v -2.7750 2.7084 2.8790
-v -5.1030 2.5335 2.8790
-v -5.1030 2.5335 2.3310
-v -2.7750 2.7084 2.3310
-v -2.7750 3.2178 2.8790
-v -5.1030 3.0429 2.8790
-v -2.7750 3.2178 2.3310
-v -5.1030 3.0429 2.3310
-v -7.4310 3.2178 -2.4864
-v -7.4310 3.2178 -3.0343
-v -7.4310 2.7084 -3.0343
-v -7.4310 2.7084 -2.4864
-v -2.7750 2.7084 -3.0343
-v -2.7750 2.7084 -2.4864
-v -5.1030 2.5335 -2.4864
-v -5.1030 2.5335 -3.0343
-v -2.7750 3.2178 -3.0343
-v -5.1030 3.0429 -3.0343
-v -2.7750 3.2178 -2.4864
-v -5.1030 3.0429 -2.4864
-v -6.8803 -0.0302 2.7568
-v -6.8202 0.4686 2.6769
-v -6.8202 0.4686 1.9103
-v -6.8803 -0.0302 1.8305
-v -6.1832 -0.0302 2.7568
-v -6.2433 0.4686 2.6769
-v -6.1832 -0.0302 1.8305
-v -6.2433 0.4686 1.9103
-v -6.7553 3.1304 2.0287
-v -6.6814 1.5987 2.0734
-v -6.6814 1.5987 2.5139
-v -6.7553 3.1304 2.5586
-v -6.3096 1.5987 2.5139
-v -6.3082 3.1304 2.5586
-v -6.3096 1.5987 2.0734
-v -6.3082 3.1304 2.0287
-v -6.7553 0.5951 2.5586
-v -6.7553 0.5951 2.0287
-v -6.7995 0.5454 1.9480
-v -6.7995 0.5454 2.6393
-v -6.3082 0.5951 2.0287
-v -6.2639 0.5454 1.9480
-v -6.3082 0.5951 2.5586
-v -6.2639 0.5454 2.6393
-v -6.8803 -0.0302 -1.9648
-v -6.8202 0.4686 -2.0447
-v -6.8202 0.4686 -2.8113
-v -6.8803 -0.0302 -2.8911
-v -6.1832 -0.0302 -1.9648
-v -6.2433 0.4686 -2.0447
-v -6.1832 -0.0302 -2.8911
-v -6.2433 0.4686 -2.8113
-v -6.7553 3.1304 -2.6929
-v -6.6814 1.5987 -2.6482
-v -6.6814 1.5987 -2.2077
-v -6.7553 3.1304 -2.1631
-v -6.3096 1.5987 -2.2077
-v -6.3082 3.1304 -2.1631
-v -6.3096 1.5987 -2.6482
-v -6.3082 3.1304 -2.6929
-v -6.7553 0.5951 -2.1631
-v -6.7553 0.5951 -2.6929
-v -6.7995 0.5454 -2.7737
-v -6.7995 0.5454 -2.0823
-v -6.3082 0.5951 -2.6929
-v -6.2639 0.5454 -2.7737
-v -6.3082 0.5951 -2.1631
-v -6.2639 0.5454 -2.0823
-v -3.2516 2.9096 3.5028
-v 7.1709 2.9096 3.5028
-v 7.1709 7.9373 3.5028
-v -3.2516 7.9373 3.5028
-v 7.1709 2.9096 -0.0777
-v 7.1709 10.8036 -0.0777
-v 7.1709 2.9096 -3.6582
-v -3.2516 2.9096 -3.6582
-v -3.2516 7.9373 -3.6582
-v 7.1709 7.9373 -3.6582
-v -3.2516 2.9096 -0.0777
-v -3.2516 10.8036 -0.0777
-v -2.8467 2.9096 3.2440
-v 6.7660 2.9096 3.2440
-v -2.8467 2.9096 -0.0777
-v -2.8467 2.9096 -3.3994
-v 6.7660 2.9096 -3.3994
-v 6.7660 2.9096 -0.0777
-v -2.8468 -0.0302 3.2440
-v 6.7660 -0.0302 3.2440
-v -2.8468 -0.0302 -0.0777
-v -2.8468 -0.0302 -3.3994
-v 6.7660 -0.0302 -3.3994
-v 6.7660 -0.0302 -0.0777
-v 7.0102 3.0089 -4.2256
-v 7.5581 3.0089 -4.2256
-v 7.5581 2.4996 -4.2256
-v 7.0102 2.4996 -4.2256
-v 7.0102 3.0089 4.1317
-v 7.0102 2.4996 4.1317
-v 7.5581 2.4996 4.1317
-v 7.5581 3.0089 4.1317
-v -3.7439 3.0089 3.3027
-v -3.7439 2.4996 3.3027
-v -3.7439 2.4996 3.8506
-v -3.7439 3.0089 3.8506
-v 7.7366 3.0089 3.3027
-v 7.7366 3.0089 3.8506
-v 7.7366 2.4996 3.8506
-v 7.7366 2.4996 3.3027
-v -3.7439 3.0089 -3.4580
-v -3.7439 3.0089 -4.0060
-v -3.7439 2.4996 -4.0060
-v -3.7439 2.4996 -3.4580
-v 7.7366 3.0089 -3.4580
-v 7.7366 2.4996 -3.4580
-v 7.7366 2.4996 -4.0060
-v 7.7366 3.0089 -4.0060
-v -2.5135 6.6183 -3.5180
-v -2.5135 5.7934 -6.4571
-v 0.6090 5.7934 -6.4571
-v 0.6090 6.6183 -3.5180
-v -2.5135 6.8326 -3.5754
-v 0.6090 6.8326 -3.5754
-v 0.6090 6.0078 -6.5145
-v -2.5135 6.0078 -6.5145
-v 0.3848 3.3060 -6.2601
-v -2.4169 3.3060 -6.2601
-v -2.4169 3.3060 -3.5850
-v 0.3848 3.3060 -3.5850
-v 0.3848 2.8320 -3.5850
-v 0.3848 2.8320 -6.2601
-v -2.4169 2.8320 -6.2601
-v -2.4169 2.8320 -3.5850
-v -2.9596 2.9096 -4.0064
-v -3.5423 2.9096 -4.0064
-v -3.2948 5.6756 -3.7907
-v -2.8870 5.6756 -3.7907
-v -2.9596 2.9096 -3.3856
-v -2.8870 5.6756 -3.3177
-v -3.5423 2.9096 -3.3856
-v -3.2948 5.6756 -3.3177
-v -2.9450 7.9058 -4.0186
-v -3.5568 7.9058 -4.0186
-v -2.9450 8.2459 -3.3733
-v -3.5568 8.2459 -3.3733
-v -2.9596 2.9096 3.8510
-v -2.8870 5.6756 3.6354
-v -3.2948 5.6756 3.6354
-v -3.5423 2.9096 3.8510
-v -2.9596 2.9096 3.2303
-v -2.8870 5.6756 3.1623
-v -3.5423 2.9096 3.2303
-v -3.2948 5.6756 3.1623
-v -2.9450 7.9058 3.8633
-v -3.5568 7.9058 3.8633
-v -2.9450 8.2459 3.2180
-v -3.5568 8.2459 3.2180
-v -1.8648 5.8242 -3.6286
-v -0.5551 5.8242 -3.6286
-v -0.5551 5.8242 -3.9835
-v -1.8648 5.8242 -3.9835
-v -0.5551 3.3060 -3.6286
-v -0.5551 3.3060 -3.9835
-v -0.7855 3.3060 -3.8323
-v -1.6344 3.3060 -3.8323
-v -1.6344 5.4437 -3.8323
-v -0.7855 5.4437 -3.8323
-v -1.8648 3.3060 -3.9835
-v -1.8648 3.3060 -3.6286
-v -1.6344 5.4437 -3.9835
-v -1.6344 3.3060 -3.9835
-v -0.7855 5.4437 -3.9835
-v -0.7855 3.3060 -3.9835
-v 0.3607 2.7805 -6.2096
-v 1.9873 1.2273 -6.1877
-v 1.9873 1.2273 -5.9635
-v 0.3607 2.7805 -5.9635
-v 2.3459 1.5102 -5.9635
-v 2.3459 1.5102 -6.2096
-v 0.3607 3.3463 -6.2096
-v 0.3607 3.3463 -5.9635
-v 3.2877 -0.0134 -6.2096
-v 4.0129 -0.0134 -6.2096
-v 3.2877 -0.0134 -5.9635
-v 4.0129 -0.0134 -5.9635
-v -2.3337 -0.0302 -5.9479
-v -2.0764 -0.0302 -5.9479
-v -2.0324 2.9450 -5.7109
-v -2.2898 2.9450 -5.7109
-v -2.3337 -0.0302 -6.2053
-v -2.2898 2.9450 -5.9682
-v -2.0764 -0.0302 -6.2053
-v -2.0324 2.9450 -5.9682
-v -2.3337 5.9816 -5.9479
-v -2.0764 5.9816 -5.9479
-v -2.3337 5.9816 -6.2053
-v -2.0764 5.9816 -6.2053
-v -0.0074 -0.0302 -5.9479
-v 0.2500 -0.0302 -5.9479
-v 0.2939 2.9450 -5.7109
-v 0.0366 2.9450 -5.7109
-v -0.0074 -0.0302 -6.2053
-v 0.0366 2.9450 -5.9682
-v 0.2500 -0.0302 -6.2053
-v 0.2939 2.9450 -5.9682
-v -0.0074 5.9816 -5.9479
-v 0.2500 5.9816 -5.9479
-v -0.0074 5.9816 -6.2053
-v 0.2500 5.9816 -6.2053
-v -2.6217 0.0000 -3.7376
-v -3.2044 0.0000 -3.7376
-v -2.9569 1.0456 -3.5220
-v -2.5492 1.0456 -3.5220
-v -2.6217 0.0000 -3.1169
-v -2.5492 1.0456 -3.0489
-v -3.2044 0.0000 -3.1169
-v -2.9569 1.0456 -3.0489
-v -2.6072 2.9699 -3.7499
-v -3.2190 2.9699 -3.7499
-v -2.6072 3.0985 -3.1046
-v -3.2190 3.0985 -3.1046
-v 4.8927 5.3687 -5.8348
-v 4.8927 5.2326 -5.8348
-v 4.8927 5.2326 -5.9129
-v 4.8927 5.3687 -5.9129
-v 4.8927 5.0965 -5.8348
-v 4.8927 5.0965 -5.9129
-v 4.8927 4.9605 -5.8348
-v 4.8927 4.9605 -5.9129
-v 4.8927 4.7832 -5.8348
-v 4.8927 4.8244 -5.9129
-v 4.8927 5.3687 -5.9909
-v 4.8927 5.2540 -5.9909
-v 4.8927 5.2754 -6.0690
-v 4.8927 5.3687 -6.0690
-v 4.8927 5.1730 -5.9909
-v 4.8927 5.1792 -6.0690
-v 4.8927 5.3687 -6.2250
-v 4.8927 5.3687 -6.1470
-v 4.8927 5.2540 -6.1470
-v 4.8927 5.2326 -6.2250
-v 4.8927 5.1730 -6.1470
-v 4.8927 5.0965 -6.2250
-v 4.8927 5.3687 -6.3030
-v 4.8927 5.2326 -6.3030
-v 4.8927 5.2326 -6.3811
-v 4.8927 5.3687 -6.3811
-v 4.8927 5.0965 -6.3030
-v 4.8927 5.0965 -6.3811
-v 4.8927 4.9605 -6.3030
-v 4.8927 4.9605 -6.3811
-v 4.8927 4.7832 -6.3030
-v 4.8927 4.8244 -6.3811
-v 4.8927 5.3687 -5.7568
-v 4.8927 5.2326 -5.7568
-v 4.8927 5.0965 -5.7568
-v 4.8927 4.9605 -5.7568
-v 4.8927 4.8244 -5.7568
-v 4.8927 4.9605 -6.2250
-v 4.8927 4.8244 -6.2250
-v 4.8927 5.4217 -6.8979
-v 4.8927 4.9763 -6.8979
-v 4.8927 4.9763 -7.1386
-v 4.8927 5.4217 -7.1386
-v 4.8927 4.5310 -6.8979
-v 4.8927 4.5310 -7.1386
-v 4.8927 4.0856 -6.8979
-v 4.8927 4.0856 -7.1386
-v 4.8927 3.6402 -6.8979
-v 4.8927 3.7482 -7.1386
-v 4.8927 4.9763 -7.3794
-v 4.8927 5.4217 -7.3794
-v 4.8927 4.5310 -7.3794
-v 4.8927 4.0856 -7.3794
-v 4.8927 3.8020 -7.3794
-v 4.8927 4.9763 -7.6201
-v 4.8927 5.4217 -7.6201
-v 4.8927 4.5310 -7.6201
-v 4.8927 4.0856 -7.6201
-v 4.8927 3.7482 -7.6201
-v 4.8927 4.9763 -7.8609
-v 4.8927 5.4217 -7.8609
-v 4.8927 4.5310 -7.8609
-v 4.8927 4.0856 -7.8609
-v 4.8927 3.6402 -7.8609
-v 4.8983 5.4267 -4.2675
-v 4.8983 5.3567 -6.1034
-v 4.9561 5.3919 -6.1034
-v 4.9561 5.4619 -4.2675
-v 4.8983 5.4971 -4.2675
-v 4.8983 5.4271 -6.1034
-v 4.8983 5.4971 -7.9394
-v 4.9561 5.4619 -7.9394
-v 4.8983 5.4267 -7.9394
-v 5.2716 4.9661 -3.7293
-v 3.3567 4.9661 -3.7293
-v 3.3567 6.2120 -3.7293
-v 5.2716 6.2120 -3.7293
-v 5.4434 4.8376 -3.8169
-v 3.2170 4.8376 -3.8169
-v 3.3567 4.9661 -3.8169
-v 5.2716 4.9661 -3.8169
-v 3.2170 6.3098 -3.8169
-v 3.3567 6.2120 -3.8169
-v 5.4434 6.3098 -3.8169
-v 5.2716 6.2120 -3.8169
-v 3.2170 4.8376 -3.5927
-v 5.4434 4.8376 -3.5927
-v 3.2170 6.3098 -3.5927
-v 5.4434 6.3098 -3.5927
-v 3.1685 4.7720 -3.6639
-v 3.6230 4.7720 -4.9127
-v 3.7254 4.7720 -4.8755
-v 3.2708 4.7720 -3.6267
-v 3.1685 6.3098 -3.6639
-v 3.2708 6.3098 -3.6267
-v 3.7254 6.3098 -4.8755
-v 3.6230 6.3098 -4.9127
-v 5.3873 4.7720 -3.6267
-v 4.9328 4.7720 -4.8755
-v 5.0351 4.7720 -4.9127
-v 5.4897 4.7720 -3.6639
-v 5.3873 6.3098 -3.6267
-v 5.4897 6.3098 -3.6639
-v 5.0351 6.3098 -4.9127
-v 4.9328 6.3098 -4.8755
-v 6.8788 2.9096 -4.0064
-v 6.8063 5.6756 -3.7907
-v 7.2140 5.6756 -3.7907
-v 7.4615 2.9096 -4.0064
-v 6.8788 2.9096 -3.3856
-v 6.8063 5.6756 -3.3177
-v 7.4615 2.9096 -3.3856
-v 7.2140 5.6756 -3.3177
-v 6.8642 7.9058 -4.0186
-v 7.4761 7.9058 -4.0186
-v 6.8642 8.2459 -3.3734
-v 7.4761 8.2459 -3.3734
-v 6.8788 2.9096 3.8510
-v 7.4615 2.9096 3.8510
-v 7.2140 5.6756 3.6354
-v 6.8063 5.6756 3.6354
-v 6.8788 2.9096 3.2303
-v 6.8063 5.6756 3.1623
-v 7.4615 2.9096 3.2303
-v 7.2140 5.6756 3.1623
-v 6.8642 7.9058 3.8633
-v 7.4761 7.9058 3.8633
-v 6.8642 8.2459 3.2180
-v 7.4761 8.2459 3.2180
-v -1.0499 7.1920 0.8801
-v 1.5686 7.1920 0.8801
-v 1.5686 7.1920 5.9052
-v -1.0499 7.1920 5.9052
-v 1.5686 12.3427 5.9052
-v -1.0499 10.1678 5.9052
-v 4.1870 7.1920 5.9052
-v 4.1870 7.1920 0.8801
-v 4.1870 10.1678 0.8801
-v 4.1870 10.1678 5.9052
-v 1.5686 12.3427 0.8801
-v -1.0499 10.1678 0.8801
-v 1.0847 11.4972 -1.1541
-v 1.0847 12.4648 -1.1541
-v 2.0524 12.4648 -1.1541
-v 2.0524 11.4972 -1.1541
-v 1.2329 10.9471 0.9987
-v 1.2329 11.5276 0.9987
-v 1.9042 11.5276 0.9987
-v 1.9042 10.9471 0.9987
-v 1.5686 12.6046 6.6574
-v 1.5686 11.7979 3.3926
-v -1.5299 9.9268 3.3926
-v -1.6653 9.9268 6.6574
-v 4.8024 9.9268 6.6574
-v 4.6670 9.9268 3.3926
-v -1.6653 9.6585 6.6574
-v 1.5686 12.3363 6.6574
-v 4.8024 9.6585 6.6574
-v 4.6670 9.6585 3.3926
-v 4.8024 9.6585 0.1279
-v 1.5686 12.3363 0.1279
-v 1.5686 12.6046 0.1279
-v 4.8024 9.9268 0.1279
-v -1.6653 9.6585 0.1279
-v -1.6653 9.9268 0.1279
-v -1.5299 9.6585 3.3926
-v 1.5686 11.5296 3.3926
-v 0.9445 11.9887 1.1864
-v 0.9445 12.1807 1.1967
-v 0.9445 12.2404 0.0823
-v 0.9445 12.0484 0.0720
-v 1.4578 12.4440 0.0932
-v 1.4578 12.6360 0.1035
-v 1.4578 12.5763 1.2179
-v 1.4578 12.3843 1.2076
-v 1.5686 12.6490 0.1042
-v 1.5686 12.4569 0.0939
-v 1.5686 12.5893 1.2186
-v 1.5686 12.3972 1.2083
-v 2.1926 11.9887 1.1864
-v 2.1926 12.0484 0.0720
-v 2.1926 12.2404 0.0823
-v 2.1926 12.1807 1.1967
-v 1.6793 12.4440 0.0932
-v 1.6793 12.6360 0.1035
-v 1.6793 12.5763 1.2179
-v 1.6793 12.3843 1.2076
-v 0.9445 12.0392 6.7986
-v 0.9445 12.2301 6.7754
-v 0.9445 12.0954 5.6676
-v 0.9445 11.9045 5.6908
-v 1.4578 12.2978 5.6430
-v 1.4578 12.4887 5.6198
-v 1.4578 12.6234 6.7276
-v 1.4578 12.4325 6.7508
-v 1.5686 12.5016 5.6182
-v 1.5686 12.3107 5.6414
-v 1.5686 12.6363 6.7260
-v 1.5686 12.4454 6.7492
-v 2.1926 12.0392 6.7986
-v 2.1926 11.9045 5.6908
-v 2.1926 12.0954 5.6676
-v 2.1926 12.2301 6.7754
-v 1.6793 12.2978 5.6430
-v 1.6793 12.4887 5.6198
-v 1.6793 12.6234 6.7276
-v 1.6793 12.4325 6.7508
-v -4.7348 10.7447 -0.7017
-v -4.7116 10.9356 -0.7017
-v -3.6038 10.8009 -0.7017
-v -3.6270 10.6100 -0.7017
-v -3.5792 11.0033 -0.1884
-v -3.5560 11.1942 -0.1884
-v -4.6638 11.3289 -0.1884
-v -4.6870 11.1380 -0.1884
-v -3.5544 11.2071 -0.0777
-v -3.5776 11.0162 -0.0777
-v -4.6622 11.3418 -0.0777
-v -4.6854 11.1509 -0.0777
-v -4.7348 10.7447 0.5464
-v -3.6270 10.6100 0.5464
-v -3.6038 10.8009 0.5464
-v -4.7116 10.9356 0.5464
-v -3.5792 11.0033 0.0331
-v -3.5560 11.1942 0.0331
-v -4.6638 11.3289 0.0331
-v -4.6870 11.1380 0.0331
-v -4.7348 10.7185 -0.7017
-v -4.7116 10.9094 -0.7017
-v -3.6038 10.7747 -0.7017
-v -3.6270 10.5838 -0.7017
-v -3.5792 10.9772 -0.1884
-v -3.5560 11.1680 -0.1884
-v -4.6638 11.3028 -0.1884
-v -4.6870 11.1119 -0.1884
-v -3.5544 11.1809 -0.0777
-v -3.5776 10.9900 -0.0777
-v -4.6622 11.3156 -0.0777
-v -4.6854 11.1247 -0.0777
-v -4.7348 10.7185 0.5464
-v -3.6270 10.5838 0.5464
-v -3.6038 10.7747 0.5464
-v -4.7116 10.9094 0.5464
-v -3.5792 10.9772 0.0331
-v -3.5560 11.1680 0.0331
-v -4.6638 11.3028 0.0331
-v -4.6870 11.1119 0.0331
-v -5.3701 9.6711 0.4061
-v -5.3701 10.6387 0.4061
-v -5.3701 10.6387 -0.5615
-v -5.3701 9.6711 -0.5615
-v -3.2173 9.1210 0.2580
-v -3.2173 9.7015 0.2580
-v -3.2173 9.7015 -0.4133
-v -3.2173 9.1210 -0.4133
-v -8.2811 9.1402 -0.7017
-v -8.2579 9.3310 -0.7017
-v -7.1501 9.1963 -0.7017
-v -7.1733 9.0054 -0.7017
-v -7.1255 9.3988 -0.1884
-v -7.1023 9.5897 -0.1884
-v -8.2101 9.7244 -0.1884
-v -8.2333 9.5335 -0.1884
-v -7.1007 9.6025 -0.0777
-v -7.1239 9.4116 -0.0777
-v -8.2085 9.7372 -0.0777
-v -8.2317 9.5463 -0.0777
-v -8.2811 9.1402 0.5464
-v -7.1733 9.0054 0.5464
-v -7.1501 9.1963 0.5464
-v -8.2579 9.3310 0.5464
-v -7.1255 9.3988 0.0331
-v -7.1023 9.5897 0.0331
-v -8.2101 9.7244 0.0331
-v -8.2333 9.5335 0.0331
-v -9.2893 8.2216 0.4061
-v -9.2893 9.1892 0.4061
-v -9.2893 9.1892 -0.5615
-v -9.2893 8.2216 -0.5615
-v -7.1365 7.6714 0.2580
-v -7.1365 8.2520 0.2580
-v -7.1365 8.2520 -0.4133
-v -7.1365 7.6714 -0.4133
-v 8.6541 10.7185 -0.7017
-v 7.5463 10.5838 -0.7017
-v 7.5230 10.7747 -0.7017
-v 8.6309 10.9094 -0.7017
-v 7.4984 10.9772 -0.1884
-v 7.4752 11.1680 -0.1884
-v 8.5830 11.3028 -0.1884
-v 8.6062 11.1119 -0.1884
-v 7.4969 10.9900 -0.0777
-v 7.4736 11.1809 -0.0777
-v 8.5814 11.3156 -0.0777
-v 8.6047 11.1247 -0.0777
-v 8.6541 10.7185 0.5464
-v 8.6308 10.9094 0.5464
-v 7.5230 10.7747 0.5464
-v 7.5463 10.5838 0.5464
-v 7.4752 11.1680 0.0331
-v 7.4984 10.9772 0.0331
-v 8.5830 11.3028 0.0331
-v 8.6062 11.1119 0.0331
-v 1.0847 11.4972 7.9394
-v 2.0524 11.4972 7.9394
-v 2.0524 12.4648 7.9394
-v 1.0847 12.4648 7.9394
-v 1.2329 10.9471 5.7866
-v 1.2329 11.5276 5.7866
-v 1.9042 11.5276 5.7866
-v 1.9042 10.9471 5.7866
-v 4.7414 7.7419 5.5111
-v 4.7414 7.7419 6.0591
-v 4.7414 7.2325 6.0591
-v 4.7414 7.2325 5.5111
-v -1.6043 7.7419 5.5111
-v -1.6043 7.2325 5.5111
-v -1.6043 7.2325 6.0591
-v -1.6043 7.7419 6.0591
-v 1.5686 7.1097 6.0591
-v 1.5686 7.1097 5.5111
-v 1.5686 7.6191 6.0591
-v 1.5686 7.6191 5.5111
-v -1.2469 7.6233 5.5056
-v -1.2469 7.6233 6.0196
-v -1.2309 8.9468 5.9403
-v -1.2309 8.9468 5.5326
-v -0.6993 7.6233 5.5056
-v -0.7579 8.9468 5.5326
-v -0.6993 7.6233 6.0196
-v -0.7579 8.9468 5.9403
-v -1.2958 10.1392 5.4567
-v -1.2958 10.1392 6.0685
-v -0.6505 10.5249 5.4567
-v -0.6505 10.5249 6.0685
-v -0.6744 7.6552 6.1897
-v -1.2224 7.6552 6.1897
-v -1.2224 7.1458 6.1897
-v -0.6744 7.1458 6.1897
-v -0.6744 7.0906 4.5742
-v -1.2224 7.0906 4.5742
-v -1.2224 7.2524 3.0420
-v -0.6744 7.2524 3.0420
-v -1.2224 7.6000 4.5742
-v -1.2224 7.7618 3.0420
-v -0.6744 7.6000 4.5742
-v -0.6744 7.7618 3.0420
-v -0.1324 5.2606 3.5028
-v -0.1877 6.0816 4.8319
-v -0.7894 6.0816 4.8319
-v -0.8447 5.2606 3.5028
-v -0.1324 6.0605 3.5028
-v -0.1877 6.3358 4.2867
-v -0.8447 6.0605 3.5028
-v -0.7894 6.3358 4.2867
-v -0.1324 7.1920 5.8631
-v -0.8447 7.1920 5.8631
-v -0.1324 7.1920 5.1509
-v -0.8447 7.1920 5.1509
-v -2.6217 0.0000 3.5823
-v -2.5492 1.0456 3.3666
-v -2.9569 1.0456 3.3666
-v -3.2044 0.0000 3.5823
-v -2.6217 0.0000 2.9615
-v -2.5492 1.0456 2.8936
-v -3.2044 0.0000 2.9615
-v -2.9569 1.0456 2.8936
-v -2.6072 2.9699 3.5946
-v -3.2190 2.9699 3.5946
-v -2.6072 3.0985 2.9493
-v -3.2190 3.0985 2.9493
-v -6.7232 3.1632 2.8503
-v -6.8069 4.8291 2.8276
-v -7.2146 4.8291 2.8276
-v -7.2373 3.1632 2.8503
-v -6.7232 3.1632 2.3028
-v -6.8069 4.8291 2.3546
-v -7.2373 3.1632 2.3028
-v -7.2146 4.8291 2.3546
-v -6.6744 6.9707 2.8992
-v -7.2862 6.9707 2.8992
-v -6.6744 7.4227 2.2539
-v -7.2862 7.4227 2.2539
-v -6.7182 3.2178 3.0952
-v -7.2662 3.2178 3.0952
-v -7.2662 2.7084 3.0952
-v -6.7182 2.7084 3.0952
-v -6.7182 3.2178 -3.2505
-v -6.7182 2.7084 -3.2505
-v -7.2662 2.7084 -3.2505
-v -7.2662 3.2178 -3.2505
-v -7.2662 2.5856 -0.0777
-v -6.7182 2.5856 -0.0777
-v -7.2662 3.0950 -0.0777
-v -6.7182 3.0950 -0.0777
-v 3.2696 5.2606 3.5028
-v 3.9818 5.2606 3.5028
-v 3.9265 6.0816 4.8319
-v 3.3249 6.0816 4.8319
-v 3.2696 6.0605 3.5028
-v 3.3249 6.3358 4.2867
-v 3.9818 6.0605 3.5028
-v 3.9265 6.3358 4.2867
-v 3.2696 7.1920 5.8631
-v 3.9818 7.1920 5.8631
-v 3.2696 7.1920 5.1509
-v 3.9818 7.1920 5.1509
-v 2.0051 9.8771 5.9061
-v 1.5686 10.1940 5.9061
-v 1.5686 8.8605 5.9061
-v 2.0051 8.8864 5.9061
-v 2.3465 8.9102 5.8801
-v 2.3465 8.9102 5.9803
-v 2.3465 8.7676 5.9803
-v 2.3465 8.7676 5.8801
-v 1.5686 10.4279 5.8801
-v 1.5686 10.4279 5.9803
-v 2.2338 9.9669 5.9803
-v 2.2338 9.9669 5.8801
-v 0.7906 8.7676 5.8801
-v 0.7906 8.7676 5.9803
-v 0.7906 8.9102 5.9803
-v 0.7906 8.9102 5.8801
-v 1.5686 8.7179 5.8801
-v 1.5686 8.7179 5.9803
-v 0.9033 8.7676 5.9803
-v 0.9033 8.7676 5.8801
-v 2.2338 8.7676 6.0902
-v 2.2338 8.9102 6.0902
-v 2.0051 8.8864 6.0902
-v 1.5686 10.1940 5.9803
-v 2.0051 9.8771 5.9803
-v 0.9033 8.9102 6.0902
-v 0.9033 8.7676 6.0902
-v 1.1320 8.8957 6.0902
-v 1.5686 8.7179 6.0902
-v 1.5686 8.8605 6.0902
-v 1.1320 9.8771 5.9061
-v 1.1320 8.8957 5.9061
-v 0.9033 9.9669 5.8801
-v 0.9033 9.9669 5.9803
-v 2.2338 8.7676 5.8801
-v 2.2338 8.7676 5.9803
-v 1.1320 9.8771 5.9803
-v 2.0051 8.8864 5.9803
-v 1.1320 8.8957 5.9803
-v 1.5686 8.8605 5.9803
-v 0.9033 8.9102 5.9803
-v 0.9033 8.9102 5.8801
-v 2.2338 8.9102 5.9803
-v 2.2338 8.9102 5.8801
-v 2.3465 8.9102 6.0902
-v 2.3465 8.7676 6.0902
-v 0.7906 8.7676 6.0902
-v 0.7906 8.9102 6.0902
-v 7.1954 5.9506 -0.5142
-v 7.1954 6.2676 -0.0777
-v 7.1954 4.9340 -0.0777
-v 7.1954 4.9600 -0.5142
-v 7.1694 4.9838 -0.8556
-v 7.2696 4.9838 -0.8556
-v 7.2696 4.8411 -0.8556
-v 7.1694 4.8411 -0.8556
-v 7.1694 6.5014 -0.0777
-v 7.2696 6.5014 -0.0777
-v 7.2696 6.0404 -0.7429
-v 7.1694 6.0404 -0.7429
-v 7.1694 4.8411 0.7003
-v 7.2696 4.8411 0.7003
-v 7.2696 4.9838 0.7003
-v 7.1694 4.9838 0.7003
-v 7.1694 4.7914 -0.0777
-v 7.2696 4.7914 -0.0777
-v 7.2696 4.8411 0.5875
-v 7.1694 4.8411 0.5875
-v 7.3796 4.8411 -0.7429
-v 7.3796 4.9838 -0.7429
-v 7.3796 4.9600 -0.5142
-v 7.2696 6.2676 -0.0777
-v 7.2696 5.9506 -0.5142
-v 7.3796 4.9838 0.5875
-v 7.3796 4.8411 0.5875
-v 7.3796 4.9692 0.3589
-v 7.3796 4.7914 -0.0777
-v 7.3796 4.9340 -0.0777
-v 7.1954 5.9506 0.3589
-v 7.1954 4.9692 0.3589
-v 7.1694 6.0404 0.5875
-v 7.2696 6.0404 0.5875
-v 7.1694 4.8411 -0.7429
-v 7.2696 4.8411 -0.7429
-v 7.2696 5.9506 0.3589
-v 7.2696 4.9600 -0.5142
-v 7.2696 4.9692 0.3589
-v 7.2696 4.9340 -0.0777
-v 7.2696 4.9838 0.5875
-v 7.1694 4.9838 0.5875
-v 7.2696 4.9838 -0.7429
-v 7.1694 4.9838 -0.7429
-v 7.3796 4.9838 -0.8556
-v 7.3796 4.8411 -0.8556
-v 7.3796 4.8411 0.7003
-v 7.3796 4.9838 0.7003
-v 6.4902 0.0000 3.5823
-v 7.0730 0.0000 3.5823
-v 6.8254 1.0456 3.3666
-v 6.4177 1.0456 3.3666
-v 6.4902 0.0000 2.9615
-v 6.4177 1.0456 2.8936
-v 7.0730 0.0000 2.9615
-v 6.8254 1.0456 2.8936
-v 6.4757 2.9699 3.5946
-v 7.0875 2.9699 3.5946
-v 6.4757 3.0985 2.9493
-v 7.0875 3.0985 2.9493
-v 6.4902 0.0000 -3.7376
-v 6.4177 1.0456 -3.5220
-v 6.8254 1.0456 -3.5220
-v 7.0730 0.0000 -3.7376
-v 6.4902 0.0000 -3.1169
-v 6.4177 1.0456 -3.0489
-v 7.0730 0.0000 -3.1169
-v 6.8254 1.0456 -3.0489
-v 6.4757 2.9699 -3.7499
-v 7.0875 2.9699 -3.7499
-v 6.4757 3.0985 -3.1046
-v 7.0875 3.0985 -3.1046
-v 9.2893 9.6711 0.4061
-v 9.2893 9.6711 -0.5615
-v 9.2893 10.6387 -0.5615
-v 9.2893 10.6387 0.4061
-v 7.1365 9.1210 0.2580
-v 7.1365 9.7015 0.2580
-v 7.1365 9.7015 -0.4133
-v 7.1365 9.1210 -0.4133
-v 2.3881 0.8227 -4.2558
-v 3.0109 0.8227 -4.2558
-v 3.0109 0.8227 -5.9635
-v 2.3881 0.8227 -5.9635
-v 3.0109 0.7221 -4.2558
-v 3.0109 0.7221 -5.9635
-v 2.7807 0.4301 -4.2558
-v 3.4035 0.4301 -4.2558
-v 3.4035 0.4301 -5.9635
-v 2.7807 0.4301 -5.9635
-v 3.4035 0.3295 -4.2558
-v 3.4035 0.3295 -5.9635
-v 3.2028 0.2090 -4.2558
-v 3.8256 0.2090 -4.2558
-v 3.8256 0.2090 -5.9635
-v 3.2028 0.2090 -5.9635
-v 3.8256 0.1084 -4.2558
-v 3.8256 0.1084 -5.9635
-v 0.3607 2.7805 -4.2760
-v 1.9873 1.2273 -4.2541
-v 1.9873 1.2273 -4.0299
-v 0.3607 2.7805 -4.0299
-v 2.3459 1.5102 -4.0299
-v 2.3459 1.5102 -4.2760
-v 0.3607 3.3463 -4.2760
-v 0.3607 3.3463 -4.0299
-v 3.2877 -0.0134 -4.2760
-v 4.0129 -0.0134 -4.2760
-v 3.2877 -0.0134 -4.0299
-v 4.0129 -0.0134 -4.0299
-v 1.2101 2.0007 -4.2558
-v 1.8329 2.0007 -4.2558
-v 1.8329 2.0007 -5.9635
-v 1.2101 2.0007 -5.9635
-v 1.8329 1.9001 -4.2558
-v 1.8329 1.9001 -5.9635
-v 1.9954 1.2154 -4.2558
-v 2.6182 1.2154 -4.2558
-v 2.6182 1.2154 -5.9635
-v 1.9954 1.2154 -5.9635
-v 2.6182 1.1148 -4.2558
-v 2.6182 1.1148 -5.9635
-v 1.6028 1.6080 -4.2558
-v 2.2256 1.6080 -4.2558
-v 2.2256 1.6080 -5.9635
-v 1.6028 1.6080 -5.9635
-v 2.2256 1.5074 -4.2558
-v 2.2256 1.5074 -5.9635
-v 0.8175 2.3933 -4.2558
-v 1.4403 2.3933 -4.2558
-v 1.4403 2.3933 -5.9635
-v 0.8175 2.3933 -5.9635
-v 1.4403 2.2927 -4.2558
-v 1.4403 2.2927 -5.9635
-v 0.4248 2.7860 -4.2558
-v 1.0476 2.7860 -4.2558
-v 1.0476 2.7860 -5.9635
-v 0.4248 2.7860 -5.9635
-v 1.0476 2.6854 -4.2558
-v 1.0476 2.6854 -5.9635
-v 4.3804 4.9359 -3.7128
-v 4.3804 4.9359 -3.8100
-v 4.3804 6.2446 -3.8100
-v 4.3804 6.2446 -3.7128
-v 4.2479 4.9359 -3.8100
-v 4.2479 6.2446 -3.8100
-v 4.2479 4.9359 -3.7128
-v 4.2479 6.2446 -3.7128
-v 4.3840 7.5263 5.5056
-v 4.3681 8.8497 5.5326
-v 4.3681 8.8497 5.9403
-v 4.3840 7.5263 6.0196
-v 3.8365 7.5263 5.5056
-v 3.8950 8.8497 5.5326
-v 3.8365 7.5263 6.0196
-v 3.8950 8.8497 5.9403
-v 4.4329 10.0421 5.4567
-v 4.4329 10.0421 6.0685
-v 3.7876 10.4278 5.4567
-v 3.7876 10.4278 6.0685
-v 3.8116 7.6552 6.1897
-v 3.8116 7.1458 6.1897
-v 4.3595 7.1458 6.1897
-v 4.3595 7.6552 6.1897
-v 3.8116 7.0906 4.5742
-v 3.8116 7.2524 3.0420
-v 4.3595 7.2524 3.0420
-v 4.3595 7.0906 4.5742
-v 4.3595 7.7618 3.0420
-v 4.3595 7.6000 4.5742
-v 3.8116 7.7618 3.0420
-v 3.8116 7.6000 4.5742
-v -1.4771 5.0898 -6.4637
-v -1.9428 5.1372 -6.7076
-v -2.0334 5.8873 -6.3814
-v -1.4996 5.8873 -6.3814
-v -0.9691 5.1030 -6.5948
-v -0.9657 5.8873 -6.3814
-v -0.4435 5.1002 -6.5399
-v -0.4319 5.8873 -6.3814
-v 0.0759 5.0635 -6.4447
-v 0.1019 5.8873 -6.3814
-v -1.4413 4.3211 -6.5007
-v -1.7739 4.4052 -6.9063
-v -0.9920 4.3538 -6.7854
-v -0.5263 4.3417 -6.5267
-v -0.0178 4.2732 -6.3949
-v -1.3879 3.5934 -6.5914
-v -1.5246 3.7366 -7.0874
-v -0.9385 3.6267 -6.8777
-v -0.4313 3.6518 -6.7088
-v -0.2051 3.5484 -6.2310
-v -1.2861 2.9368 -6.7930
-v -1.7756 3.1551 -6.8101
-v -0.7710 2.9815 -6.6713
-v -0.3018 3.0074 -6.9315
-v 0.1094 3.0048 -6.5830
-# 1383 vertices
-
-vn 0.0000 0.0000 -1.0000
-vn 0.4638 0.6957 -0.5486
-vn 0.4636 0.6954 -0.5490
-vn 0.4638 0.6957 -0.5485
-vn 0.9977 -0.0673 -0.0000
-vn 0.5491 0.8298 -0.0992
-vn 0.9977 -0.0673 0.0000
-vn 0.0000 -0.0000 1.0000
-vn 0.4638 0.6957 0.5485
-vn 0.4637 0.6955 0.5489
-vn 0.4638 0.6957 0.5486
-vn 0.4637 0.6956 0.5488
-vn 0.5491 0.8298 0.0992
-vn 0.5492 0.8298 0.0991
-vn 0.2072 0.7740 -0.5984
-vn 0.2072 0.7738 -0.5986
-vn 0.2072 0.7741 -0.5981
-vn 0.9997 -0.0244 -0.0000
-vn 0.9995 -0.0305 -0.0000
-vn 0.2596 0.9591 -0.1127
-vn 0.2596 0.9591 -0.1126
-vn 0.2568 0.9599 -0.1127
-vn 0.2568 0.9599 -0.1128
-vn 0.9997 -0.0244 0.0000
-vn 0.9995 -0.0305 0.0000
-vn 0.2072 0.7740 0.5984
-vn 0.2596 0.9591 0.1126
-vn 0.2568 0.9599 0.1128
-vn 0.2568 0.9599 0.1127
-vn 0.2596 0.9591 0.1127
-vn 0.0825 0.7882 -0.6099
-vn 0.0855 0.7881 -0.6096
-vn 0.0855 0.7882 -0.6095
-vn 0.9999 -0.0122 -0.0000
-vn 0.1037 0.9879 -0.1155
-vn 0.1037 0.9879 -0.1153
-vn 0.1037 0.9879 -0.1154
-vn 0.0855 0.7880 0.6097
-vn 0.0855 0.7881 0.6096
-vn 0.0825 0.7882 0.6098
-vn 0.1037 0.9879 0.1155
-vn 0.1037 0.9879 0.1154
-vn 0.2867 0.7565 -0.5878
-vn 0.2896 0.7561 -0.5869
-vn 0.2868 0.7568 -0.5874
-vn 0.9993 -0.0367 -0.0000
-vn 0.3544 0.9287 -0.1096
-vn 0.9993 -0.0367 0.0000
-vn 0.2896 0.7559 0.5871
-vn 0.2867 0.7565 0.5878
-vn 0.2868 0.7568 0.5874
-vn 0.3544 0.9287 0.1096
-vn -0.0851 0.7903 -0.6068
-vn -0.0851 0.7905 -0.6065
-vn -0.9999 -0.0122 -0.0000
-vn -0.1037 0.9879 -0.1154
-vn -0.1037 0.9879 -0.1157
-vn -0.1037 0.9879 -0.1155
-vn -0.1037 0.9879 -0.1153
-vn -0.0851 0.7903 0.6068
-vn -0.1037 0.9879 0.1153
-vn -0.1037 0.9879 0.1155
-vn -0.1037 0.9879 0.1156
-vn -0.1037 0.9879 0.1154
-vn -0.3972 0.7211 -0.5676
-vn -0.3974 0.7215 -0.5671
-vn -0.9981 -0.0609 -0.0000
-vn -0.9985 -0.0548 -0.0000
-vn -0.4788 0.8717 -0.1041
-vn -0.4788 0.8717 -0.1043
-vn -0.4788 0.8717 -0.1044
-vn -0.4788 0.8717 -0.1042
-vn -0.3974 0.7215 0.5671
-vn -0.3972 0.7211 0.5676
-vn -0.3972 0.7212 0.5676
-vn -0.9981 -0.0609 0.0000
-vn -0.4788 0.8717 0.1041
-vn -0.4788 0.8717 0.1043
-vn -0.2868 0.7566 -0.5877
-vn -0.2868 0.7568 -0.5874
-vn -0.2895 0.7558 -0.5874
-vn -0.2896 0.7560 -0.5870
-vn -0.9993 -0.0367 -0.0000
-vn -0.3544 0.9287 -0.1095
-vn -0.3544 0.9287 -0.1096
-vn -0.9993 -0.0367 0.0000
-vn -0.2896 0.7559 0.5871
-vn -0.2868 0.7566 0.5877
-vn -0.2896 0.7560 0.5870
-vn -0.3544 0.9287 0.1096
-vn -0.3544 0.9287 0.1095
-vn -0.2896 0.7561 -0.5869
-vn -0.9991 -0.0428 -0.0000
-vn -0.9991 -0.0428 0.0000
-vn -0.0821 0.7905 -0.6069
-vn -0.0825 0.7884 -0.6096
-vn -0.9999 -0.0122 0.0000
-vn -0.0825 0.7882 0.6099
-vn -0.0821 0.7905 0.6069
-vn -0.1316 0.7835 -0.6073
-vn -0.1310 0.7857 -0.6045
-vn -0.1315 0.7830 -0.6079
-vn -0.9998 -0.0183 -0.0000
-vn -0.1668 0.9793 -0.1149
-vn -0.1653 0.9795 -0.1150
-vn -0.1653 0.9795 -0.1152
-vn -0.1643 0.9797 -0.1147
-vn -0.1668 0.9793 -0.1150
-vn -0.1315 0.7830 0.6079
-vn -0.1310 0.7859 0.6043
-vn -0.1316 0.7835 0.6073
-vn -0.1668 0.9793 0.1150
-vn -0.1643 0.9797 0.1146
-vn -0.1653 0.9795 0.1150
-vn -0.1668 0.9793 0.1149
-vn -0.9998 -0.0183 0.0000
-vn 0.4615 0.6968 -0.5491
-vn 0.4637 0.6955 -0.5489
-vn 0.4612 0.6964 -0.5498
-vn 0.9981 -0.0610 -0.0000
-vn 0.9973 -0.0732 -0.0000
-vn 0.5492 0.8298 -0.0991
-vn 0.5491 0.8298 -0.0994
-vn 0.9981 -0.0610 0.0000
-vn 0.4615 0.6968 0.5491
-vn 0.4611 0.6963 0.5501
-vn 0.5491 0.8298 0.0994
-vn 0.2082 0.7714 -0.6013
-vn 0.2082 0.7715 -0.6012
-vn 0.2081 0.7713 -0.6014
-vn 0.2082 0.7717 -0.6010
-vn 0.2567 0.9600 -0.1121
-vn 0.2567 0.9600 -0.1120
-vn 0.2581 0.9596 -0.1120
-vn 0.2082 0.7715 0.6012
-vn 0.2081 0.7714 0.6014
-vn 0.2567 0.9600 0.1120
-vn 0.2581 0.9596 0.1120
-vn 0.2567 0.9600 0.1121
-vn 0.2896 0.7560 -0.5870
-vn 0.2889 0.7562 -0.5871
-vn 0.2874 0.7563 -0.5878
-vn 0.9993 -0.0366 -0.0000
-vn 0.9991 -0.0427 -0.0000
-vn 0.3550 0.9284 -0.1096
-vn 0.9993 -0.0366 0.0000
-vn 0.2869 0.7569 0.5872
-vn 0.2889 0.7562 0.5872
-vn 0.2896 0.7560 0.5870
-vn 0.3550 0.9284 0.1096
-vn 0.0844 0.7904 -0.6067
-vn 0.0844 0.7899 -0.6074
-vn 0.0827 0.7884 -0.6096
-vn 0.0848 0.7882 -0.6095
-vn 0.1051 0.9877 -0.1155
-vn 0.1052 0.9877 -0.1153
-vn 0.1052 0.9877 -0.1155
-vn 0.0827 0.7882 0.6099
-vn 0.0844 0.7899 0.6074
-vn 0.0844 0.7904 0.6067
-vn 0.0848 0.7881 0.6097
-vn 0.1051 0.9877 0.1155
-vn 0.1052 0.9877 0.1155
-vn 0.1052 0.9878 0.1152
-vn 0.0823 0.7905 -0.6069
-vn 0.0821 0.7905 -0.6069
-vn 0.0847 0.7875 -0.6105
-vn 0.1029 0.9879 -0.1157
-vn 0.1050 0.9877 -0.1155
-vn 0.1052 0.9878 -0.1152
-vn 0.0821 0.7905 0.6069
-vn 0.0823 0.7905 0.6069
-vn 0.1050 0.9877 0.1155
-vn 0.1029 0.9880 0.1155
-vn 0.1052 0.9877 0.1153
-vn 0.9999 -0.0122 0.0000
-vn -0.2889 0.7562 -0.5871
-vn -0.2889 0.7563 -0.5870
-vn 0.9993 0.0366 0.0000
-vn 0.9991 0.0427 0.0000
-vn -0.3550 0.9284 -0.1096
-vn -0.3550 0.9284 -0.1095
-vn -0.2889 0.7562 0.5871
-vn -0.2889 0.7561 0.5873
-vn -0.3550 0.9284 0.1095
-vn -0.3550 0.9284 0.1096
-vn -1.0000 0.0000 -0.0000
-vn -0.9244 0.3783 -0.0488
-vn -0.9245 0.3784 -0.0458
-vn 0.0000 -0.1222 -0.9925
-vn -0.3448 0.9318 -0.1134
-vn -0.3462 0.9313 -0.1133
-vn -0.3461 0.9310 -0.1164
-vn -0.3447 0.9315 -0.1164
-vn 1.0000 0.0000 -0.0000
-vn 0.9245 0.3784 -0.0458
-vn 0.9244 0.3783 -0.0488
-vn 0.3462 0.9313 -0.1133
-vn 0.3461 0.9310 -0.1164
-vn -0.9250 0.3785 -0.0336
-vn 0.0000 -0.0856 -0.9963
-vn -0.3434 0.9359 -0.0790
-vn -0.3433 0.9356 -0.0820
-vn -0.3420 0.9364 -0.0790
-vn 0.9250 0.3785 -0.0336
-vn 0.3434 0.9359 -0.0790
-vn 0.3433 0.9356 -0.0820
-vn -0.9254 0.3787 -0.0122
-vn 0.0000 -0.0367 -0.9993
-vn 0.0000 -0.0366 -0.9993
-vn -0.3429 0.9389 -0.0305
-vn -0.3456 0.9379 -0.0305
-vn -0.3443 0.9384 -0.0305
-vn 0.9254 0.3787 -0.0122
-vn 0.3443 0.9384 -0.0305
-vn 0.3456 0.9379 -0.0305
-vn 0.9245 0.3784 0.0458
-vn 0.0000 -0.1222 0.9925
-vn 0.3462 0.9313 0.1133
-vn 0.3448 0.9318 0.1134
-vn 0.3448 0.9316 0.1149
-vn -0.9245 0.3784 0.0458
-vn -0.3462 0.9313 0.1133
-vn -0.3461 0.9311 0.1149
-vn -0.3448 0.9318 0.1134
-vn 0.0000 -0.1220 0.9925
-vn -0.9244 0.3786 0.0458
-vn 0.9245 0.3783 0.0461
-vn 0.3462 0.9313 0.1137
-vn 0.3448 0.9317 0.1142
-vn -0.9245 0.3783 0.0461
-vn -0.3462 0.9313 0.1137
-vn -0.3448 0.9317 0.1142
-vn 0.1113 -0.8478 -0.5185
-vn 0.1128 -0.8477 -0.5184
-vn 0.1284 -0.8312 -0.5409
-vn 0.1276 -0.8313 -0.5410
-vn -0.5831 -0.6350 -0.5068
-vn -0.5830 -0.6349 -0.5069
-vn -0.5055 -0.6699 -0.5437
-vn -0.5053 -0.6697 -0.5442
-vn -0.5051 -0.6694 -0.5447
-vn -0.5049 -0.6691 0.5454
-vn -0.5051 -0.6693 0.5449
-vn -0.5072 -0.6661 0.5469
-vn -0.1315 -0.7827 0.6084
-vn -0.1285 -0.7830 0.6086
-vn -0.1284 -0.7824 0.6095
-vn -0.1342 -0.7809 0.6101
-vn -0.1357 -0.7807 0.6099
-vn -0.1378 -0.7857 0.6030
-vn -0.1356 -0.7860 0.6032
-vn -0.1341 -0.7861 0.6033
-vn 0.4588 0.6974 -0.5506
-vn 0.4585 0.6969 -0.5515
-vn 0.1356 0.8168 -0.5607
-vn 0.1334 0.8170 -0.5609
-vn 0.1341 0.8170 -0.5609
-vn 0.0000 -0.8372 0.5469
-vn 0.0000 -0.8172 -0.5763
-vn 0.0000 0.8673 0.4978
-vn 0.0000 0.8680 0.4965
-vn 0.3717 0.7678 0.5219
-vn 0.3701 0.7677 0.5231
-vn 0.3693 0.7676 0.5239
-vn 0.0000 -0.8372 -0.5469
-vn 0.0000 -0.8172 0.5763
-vn 0.3700 0.7673 -0.5237
-vn 0.3701 0.7677 -0.5231
-vn 0.3717 0.7678 -0.5219
-vn 0.0000 0.8681 -0.4965
-vn 0.0000 0.8673 -0.4978
-vn 0.1682 -0.8258 0.5383
-vn 0.1700 -0.8418 0.5124
-vn 0.1708 -0.8417 0.5123
-vn -0.1354 -0.8945 -0.4260
-vn -0.1339 -0.8947 -0.4261
-vn 0.1830 0.8114 0.5551
-vn 0.1838 0.8113 0.5551
-vn 0.1853 0.8085 0.5585
-vn 0.4591 0.7053 0.5402
-vn 0.4589 0.7051 0.5405
-vn 0.4608 0.7019 0.5432
-vn -0.1158 -0.8474 -0.5182
-vn -0.1128 -0.8477 -0.5184
-vn -0.1284 -0.8312 -0.5409
-vn 0.5072 -0.6661 -0.5469
-vn 0.5054 -0.6698 -0.5441
-vn 0.5056 -0.6700 -0.5435
-vn 0.5809 -0.6359 -0.5081
-vn 0.5811 -0.6361 -0.5077
-vn 0.1284 -0.7824 0.6094
-vn 0.1285 -0.7830 0.6086
-vn 0.5072 -0.6661 0.5469
-vn 0.5051 -0.6694 0.5447
-vn 0.5049 -0.6691 0.5454
-vn 0.1341 -0.7861 0.6033
-vn 0.1371 -0.7858 0.6031
-vn 0.1342 -0.7809 0.6101
-vn -0.4585 0.6969 -0.5515
-vn -0.4587 0.6972 -0.5509
-vn -0.4588 0.6974 -0.5506
-vn -0.1341 0.8170 -0.5609
-vn -0.1341 0.8169 -0.5610
-vn -0.3719 0.7681 0.5212
-vn -0.3715 0.7674 0.5225
-vn -0.3717 0.7678 0.5219
-vn -0.3717 0.7678 -0.5219
-vn -0.3715 0.7674 -0.5225
-vn -0.3713 0.7669 -0.5234
-vn -0.1682 -0.8258 0.5383
-vn -0.1712 -0.8254 0.5380
-vn -0.1708 -0.8417 0.5123
-vn 0.1339 -0.8947 -0.4261
-vn -0.1838 0.8089 0.5585
-vn -0.1860 0.8109 0.5548
-vn -0.1830 0.8114 0.5551
-vn -0.4584 0.7029 0.5439
-vn -0.4568 0.7066 0.5404
-vn -0.4566 0.7062 0.5411
-vn 0.9996 0.0000 -0.0288
-vn 0.9997 -0.0183 -0.0183
-vn 0.9996 0.0000 -0.0291
-vn 0.9996 -0.0000 0.0282
-vn 0.9996 -0.0000 0.0285
-vn 0.9998 -0.0122 0.0183
-vn 0.9998 -0.0122 0.0152
-vn -0.9998 -0.0122 0.0183
-vn -0.9996 -0.0000 0.0285
-vn -0.9996 -0.0000 0.0282
-vn -0.9998 -0.0122 0.0152
-vn -0.9997 -0.0183 -0.0183
-vn -0.9996 0.0000 -0.0288
-vn -0.9996 0.0000 -0.0291
-vn 0.1039 -0.7575 -0.6445
-vn 0.1156 -0.7365 -0.6665
-vn 0.1096 -0.7370 -0.6669
-vn 0.1126 -0.7367 -0.6667
-vn -0.2503 -0.7694 -0.5877
-vn -0.2501 -0.7687 -0.5887
-vn -0.2503 -0.7693 -0.5879
-vn -0.5318 -0.6968 -0.4812
-vn -0.5318 -0.6968 -0.4813
-vn -0.5172 -0.6815 0.5177
-vn -0.5195 -0.6784 0.5195
-vn 0.2383 -0.8127 0.5316
-vn 0.2322 -0.8126 0.5346
-vn 0.2323 -0.8130 0.5338
-vn -0.1162 -0.6727 0.7308
-vn -0.1160 -0.6775 0.7263
-vn -0.1220 -0.6770 0.7258
-vn 0.4650 0.7097 -0.5292
-vn 0.4650 0.7098 -0.5291
-vn 0.4674 0.7088 -0.5283
-vn 0.0854 0.8601 -0.5030
-vn 0.0854 0.8600 -0.5032
-vn 0.0000 -0.7399 0.6727
-vn 0.0000 -0.7132 -0.7010
-vn 0.0000 0.8956 0.4448
-vn 0.0000 0.8960 0.4440
-vn 0.4281 0.7828 0.4516
-vn 0.4280 0.7826 0.4522
-vn 0.4279 0.7825 0.4524
-vn 0.0000 -0.7399 -0.6727
-vn 0.0000 -0.7132 0.7010
-vn 0.4279 0.7825 -0.4524
-vn 0.4280 0.7826 -0.4522
-vn 0.4281 0.7828 -0.4516
-vn 0.0000 0.8960 -0.4440
-vn 0.0000 0.8956 -0.4448
-vn 0.1524 -0.7316 0.6645
-vn 0.1494 -0.7319 0.6648
-vn 0.1528 -0.7516 0.6416
-vn -0.1223 -0.8258 -0.5505
-vn -0.1218 -0.8284 -0.5467
-vn 0.1223 0.8564 0.5016
-vn 0.1187 0.8583 0.4992
-vn 0.1193 0.8566 0.5019
-vn 0.4673 0.7148 0.5203
-vn 0.4648 0.7156 0.5214
-vn 0.4700 0.7141 0.5188
-vn -0.9995 -0.0183 0.0274
-vn -0.9992 -0.0000 0.0395
-vn -0.9992 -0.0000 0.0391
-vn -0.9995 -0.0183 -0.0274
-vn -0.9992 0.0000 -0.0399
-vn -0.9992 0.0000 -0.0404
-vn 0.0000 0.0122 -0.9999
-vn 0.0000 -0.0091 -1.0000
-vn 0.9999 0.0152 0.0000
-vn 0.0000 0.0305 0.9995
-vn -1.0000 0.0030 0.0000
-vn -1.0000 -0.0030 -0.0000
-vn 0.0000 -0.0305 -0.9995
-vn 0.9998 -0.0213 -0.0000
-vn 0.9998 -0.0183 -0.0000
-vn 0.9998 -0.0183 0.0122
-vn 0.9998 -0.0183 0.0107
-vn 0.0000 -0.0366 0.9993
-vn 0.0000 -0.0397 0.9992
-vn -0.9999 -0.0122 0.0061
-vn -1.0000 -0.0061 0.0061
-vn 0.0000 -1.0000 -0.0000
-vn 0.0000 1.0000 0.0000
-vn 0.0000 0.8224 -0.5689
-vn 0.0000 -0.9972 0.0743
-vn 0.0000 0.8224 0.5689
-vn 0.0000 -0.9973 -0.0740
-vn 0.0000 -0.9972 -0.0747
-vn 0.0000 -0.8101 0.5863
-vn 0.0000 -0.8103 0.5860
-vn 0.0000 -0.8103 -0.5860
-vn 0.0000 -0.8101 -0.5863
-vn 0.0000 0.9968 -0.0804
-vn 0.0000 0.9968 -0.0803
-vn 0.0000 0.9982 0.0594
-vn 0.0000 0.9982 0.0591
-vn 0.0000 0.9946 0.1037
-vn 0.0000 0.9946 0.1034
-vn 0.0000 0.9980 -0.0633
-vn 0.0000 -0.9972 0.0745
-vn 0.0000 -0.9972 -0.0745
-vn 0.2289 -0.9735 -0.0000
-vn -0.2289 0.9735 0.0000
-vn -0.2260 -0.9741 -0.0000
-vn 0.2318 0.9728 0.0000
-vn -0.9993 0.0383 0.0000
-vn -0.9993 0.0385 0.0000
-vn 0.0000 0.1578 0.9875
-vn 0.0000 0.1581 0.9874
-vn 0.0000 0.1580 0.9874
-vn 0.0000 0.1579 0.9875
-vn 0.9993 0.0383 0.0000
-vn 0.9993 0.0385 0.0000
-vn 0.0000 0.1581 -0.9874
-vn 0.0000 0.1583 -0.9874
-vn -0.9999 -0.0152 -0.0000
-vn -1.0000 0.0046 0.0000
-vn 0.0000 -0.0275 0.9996
-vn 0.0000 0.0076 1.0000
-vn 0.0000 -0.0275 -0.9996
-vn 0.0000 0.0076 -1.0000
-vn -0.9622 0.2725 0.0000
-vn -0.9623 0.2722 0.0000
-vn 0.0000 0.8520 -0.5235
-vn 0.0000 0.8512 -0.5248
-vn 0.9623 0.2722 0.0000
-vn 0.9622 0.2725 0.0000
-vn 0.0000 0.8520 0.5235
-vn 0.0000 0.8513 0.5246
-vn -0.9963 0.0856 0.0000
-vn -0.9964 0.0852 0.0000
-vn 0.0000 0.4396 -0.8982
-vn 0.9964 0.0852 0.0000
-vn 0.9963 0.0856 0.0000
-vn 0.0000 0.4405 0.8978
-vn 0.0000 0.4402 0.8979
-vn -0.9997 0.0236 0.0000
-vn 0.0000 0.0446 0.9990
-vn 1.0000 0.0004 0.0000
-vn 0.0000 0.0446 -0.9990
-vn 0.0000 0.1583 0.9874
-vn 0.0000 0.1579 -0.9875
-vn 0.0000 -0.0274 -0.9996
-vn 0.0000 0.8513 -0.5246
-vn 0.0000 0.4402 -0.8979
-vn 0.0000 0.4405 -0.8978
-vn 0.0000 0.4396 0.8982
-vn -0.9997 0.0232 0.0000
-vn 0.0000 0.0447 -0.9990
-vn 0.0000 -0.9633 0.2683
-vn 0.0000 0.9626 -0.2711
-vn 0.0000 0.9633 -0.2683
-vn 0.0000 -0.2569 -0.9664
-vn 0.0000 0.0762 -0.9971
-vn 0.0000 -0.0122 -0.9999
-vn 1.0000 -0.0091 -0.0000
-vn 1.0000 -0.0061 -0.0000
-vn 0.0000 -0.0244 0.9997
-vn -0.9996 0.0274 0.0000
-vn -1.0000 -0.0061 0.0030
-vn -1.0000 -0.0061 -0.0000
-vn 0.0000 -0.1037 -0.9946
-vn 1.0000 0.0061 0.0000
-vn 1.0000 0.0061 -0.0030
-vn 0.0000 0.0244 0.9997
-vn 0.0000 0.0183 0.9998
-vn -0.9994 -0.0306 0.0153
-vn -0.9994 -0.0306 0.0183
-vn 0.0000 0.0762 0.9971
-vn 0.0000 -0.0122 0.9999
-vn 0.0000 -0.0244 -0.9997
-vn -1.0000 -0.0061 -0.0030
-vn 0.0000 -0.1037 0.9946
-vn 1.0000 0.0061 0.0030
-vn 0.0000 0.0244 -0.9997
-vn 0.0000 0.0183 -0.9998
-vn -0.9994 -0.0306 -0.0153
-vn -0.9994 -0.0306 -0.0183
-vn -0.9483 -0.3173 -0.0000
-vn -0.9486 -0.3165 -0.0000
-vn 0.9451 0.3267 0.0000
-vn 0.9452 0.3265 0.0000
-vn -0.0122 -0.0025 -0.9999
-vn -0.1127 -0.0320 -0.9931
-vn -0.0870 -0.0321 -0.9957
-vn 0.9442 0.3295 0.0000
-vn -0.0061 -0.0030 -1.0000
-vn 0.0000 -0.0795 0.9968
-vn -1.0000 0.0047 0.0000
-vn 0.0000 0.0795 -0.9968
-vn 1.0000 -0.0047 -0.0000
-vn 0.0000 0.0795 0.9968
-vn 0.0000 -0.0795 -0.9968
-vn 0.0000 0.2019 -0.9794
-vn 0.0000 0.0458 -0.9989
-vn 0.0000 0.0420 -0.9991
-vn 0.9998 -0.0221 -0.0000
-vn 0.0000 -0.0649 0.9979
-vn 0.0000 -0.0648 0.9979
-vn -0.9972 0.0751 0.0000
-vn -0.9999 0.0152 0.0000
-vn -0.9998 0.0175 0.0000
-vn 0.0000 -0.1161 -0.9932
-vn 1.0000 0.0099 0.0000
-vn 1.0000 0.0091 0.0000
-vn 1.0000 0.0091 -0.0030
-vn 1.0000 0.0092 -0.0031
-vn 0.0000 0.0274 0.9996
-vn -0.9992 -0.0397 0.0061
-vn -0.9992 -0.0397 0.0092
-vn -0.5810 -0.8134 0.0306
-vn -0.5603 -0.8283 -0.0000
-vn 0.9999 0.0122 0.0000
-vn -0.5600 0.8279 -0.0304
-vn -0.5812 0.8137 0.0000
-vn -0.5810 -0.8134 -0.0306
-vn -0.5629 0.8260 0.0306
-vn 0.9932 -0.0000 0.1161
-vn 0.9933 -0.0000 0.1158
-vn 0.7528 0.0000 -0.6583
-vn 0.7514 0.0000 -0.6598
-vn -0.9933 0.0000 -0.1158
-vn -0.9932 0.0000 -0.1161
-vn 0.9933 0.0000 -0.1158
-vn -0.7514 0.0000 -0.6598
-vn -0.9932 -0.0000 0.1161
-vn -0.9933 -0.0000 0.1158
-vn -1.0000 -0.0091 -0.0000
-vn 0.9996 0.0274 0.0000
-vn -1.0000 0.0061 -0.0030
-vn -1.0000 0.0061 0.0000
-vn 0.9994 -0.0305 0.0152
-vn 0.9994 -0.0305 0.0183
-vn -1.0000 0.0061 0.0030
-vn 0.9994 -0.0305 -0.0152
-vn -0.9998 -0.0000 0.0221
-vn 0.0000 0.9167 0.3995
-vn 0.0000 0.9170 0.3989
-vn 0.9998 -0.0000 0.0221
-vn 0.0000 -0.9687 -0.2483
-vn 0.0000 -0.9685 -0.2490
-vn 0.0476 0.9818 -0.1841
-vn 0.0805 0.9968 0.0000
-vn -0.9123 0.4095 0.0000
-vn -0.9330 0.3598 -0.0122
-vn 0.9134 0.4033 -0.0550
-vn 0.8857 0.4642 0.0000
-vn 0.9999 0.0000 -0.0122
-vn -0.9999 -0.0000 0.0122
-vn -0.9999 -0.0000 0.0133
-vn -0.9133 -0.4032 -0.0575
-vn -0.8857 -0.4642 -0.0000
-vn -0.9100 -0.4146 -0.0000
-vn -0.9308 -0.3546 -0.0886
-vn 0.9137 -0.4027 -0.0538
-vn 0.8857 -0.4642 -0.0000
-vn 0.9100 -0.4146 -0.0000
-vn 0.9330 -0.3598 -0.0123
-vn 0.0475 0.9816 0.1852
-vn -0.9330 0.3598 0.0123
-vn 0.9133 0.4032 0.0576
-vn 0.9999 -0.0000 0.0132
-vn 0.9999 -0.0000 0.0122
-vn -0.9999 0.0000 -0.0122
-vn -0.9134 -0.4033 0.0550
-vn -0.9311 -0.3547 0.0856
-vn 0.9137 -0.4027 0.0549
-vn 0.9330 -0.3598 0.0122
-vn 0.0000 0.0488 -0.9988
-vn -0.9252 0.3789 0.0206
-vn -0.9253 0.3787 0.0206
-vn -0.9253 0.3787 0.0204
-vn -0.9252 0.3789 0.0204
-vn 0.0000 -0.0488 0.9988
-vn -0.3440 0.9376 0.0502
-vn -0.3440 0.9376 0.0501
-vn -0.3440 0.9376 0.0500
-vn 0.9253 0.3787 0.0204
-vn 0.9253 0.3787 0.0206
-vn 0.3427 0.9381 0.0503
-vn 0.3427 0.9381 0.0501
-vn 0.3427 0.9381 0.0502
-vn 0.0000 -0.1218 -0.9926
-vn 0.0000 0.1218 0.9926
-vn 0.3447 0.9315 -0.1164
-vn 0.2867 0.7564 -0.5879
-vn -0.9993 0.0367 0.0000
-vn 0.3544 0.9287 -0.1095
-vn 0.3544 0.9287 0.1095
-vn -0.9993 0.0367 -0.0000
-vn 0.2868 0.7566 0.5877
-vn 0.2106 -0.0000 0.9776
-vn 0.2135 -0.0000 0.9769
-vn 0.8058 0.5922 0.0000
-vn 0.8087 0.5882 0.0000
-vn 0.2106 0.0000 -0.9776
-vn 0.2135 0.0000 -0.9769
-vn -0.6251 -0.7806 -0.0000
-vn -0.6232 -0.7821 -0.0000
-vn 0.9991 -0.0426 -0.0000
-vn 0.2867 0.7563 -0.5880
-vn 0.2868 0.7567 -0.5875
-vn -0.9993 0.0366 0.0000
-vn 0.2868 0.7567 0.5875
-vn 0.2867 0.7564 0.5880
-vn 0.3544 0.9287 0.1097
-vn -0.9993 0.0366 -0.0000
-vn 0.2075 -0.0000 0.9782
-vn 0.2075 0.0000 -0.9782
-vn -0.6269 -0.7791 -0.0000
-vn -0.9993 -0.0366 -0.0000
-vn -0.2867 0.7564 -0.5879
-vn -0.2868 0.7567 -0.5875
-vn -0.9993 -0.0366 0.0000
-vn -0.3544 0.9287 -0.1094
-vn -0.2868 0.7567 0.5875
-vn 0.9993 0.0366 -0.0000
-vn -0.9997 0.0000 -0.0244
-vn 0.0000 0.9176 -0.3976
-vn 0.9997 0.0000 -0.0244
-vn 0.0000 -0.9679 0.2512
-vn 0.1188 -0.9929 -0.0000
-vn -0.1218 0.9926 0.0000
-vn -0.1188 -0.9929 -0.0000
-vn 0.1218 0.9926 0.0000
-vn 0.0000 0.0609 0.9981
-vn 0.0122 -0.0244 0.9996
-vn 0.0000 -0.0669 -0.9978
-vn 0.0946 -0.0488 -0.9943
-vn 0.1415 -0.0852 0.9863
-vn 0.1559 -0.0856 0.9841
-vn 0.0000 -0.9993 -0.0366
-vn 0.0000 -0.9946 -0.1037
-vn 0.0000 0.9993 0.0366
-vn 0.0000 -0.9993 0.0366
-vn 0.0000 0.9993 -0.0366
-vn 0.0000 -0.8504 0.5261
-vn 0.0000 -0.7737 0.6336
-vn 0.9999 0.0061 0.0122
-vn 0.9999 0.0122 0.0061
-vn 0.0000 0.9434 -0.3317
-vn 0.0000 0.8477 -0.5305
-vn -0.9999 0.0061 0.0153
-vn -1.0000 -0.0000 0.0061
-vn -0.9998 -0.0000 0.0214
-vn 0.0000 -0.6823 0.7311
-vn 0.0000 0.7102 -0.7040
-vn 0.0000 0.2019 0.9794
-vn 0.0000 0.0420 0.9991
-vn 0.0000 0.0458 0.9989
-vn 0.9998 -0.0220 -0.0000
-vn 0.0000 -0.0648 -0.9979
-vn -0.9972 0.0752 0.0000
-vn 0.0000 -0.1161 0.9932
-vn 1.0000 0.0092 0.0031
-vn 1.0000 0.0091 0.0030
-vn 0.0000 0.0274 -0.9996
-vn -0.9992 -0.0397 -0.0061
-vn -0.9992 -0.0397 -0.0092
-vn 0.0000 0.0152 0.9999
-vn 0.0000 -0.0091 1.0000
-vn 0.0000 0.0305 -0.9995
-vn 0.0000 0.0336 -0.9994
-vn 0.0000 -0.0367 0.9993
-vn 0.9998 -0.0152 -0.0122
-vn 0.9998 -0.0183 -0.0122
-vn 0.0000 -0.0397 -0.9992
-vn -0.9999 -0.0122 -0.0061
-vn -1.0000 -0.0061 -0.0061
-vn 0.0000 -0.9992 0.0397
-vn 0.0000 0.9992 -0.0397
-vn 0.0000 -0.9992 -0.0397
-vn 0.0000 0.9992 0.0397
-vn -0.9999 0.0061 0.0122
-vn -0.9999 0.0122 0.0061
-vn 0.9999 0.0061 0.0152
-vn 0.9998 -0.0000 0.0213
-vn 1.0000 -0.0000 0.0061
-vn 0.9095 0.4158 0.0000
-vn -0.2267 -0.9740 -0.0000
-vn -0.9096 0.4155 0.0000
-vn 0.2267 -0.9740 -0.0000
-vn -0.9153 -0.4027 -0.0000
-vn 0.9153 -0.4027 -0.0000
-vn 0.2447 0.9696 0.0000
-vn 0.2454 0.9694 0.0000
-vn -0.1847 0.9828 0.0000
-vn -0.3094 0.9509 0.0000
-vn 0.1957 0.9807 0.0000
-vn 0.0000 -0.8100 0.5864
-vn 0.0000 0.9982 0.0593
-vn -0.9998 -0.0220 -0.0000
-vn -0.9998 -0.0221 -0.0000
-vn 0.9971 0.0755 0.0000
-vn 0.9998 0.0175 0.0000
-vn 0.9972 0.0754 0.0000
-vn -1.0000 0.0099 0.0000
-vn -1.0000 0.0091 0.0000
-vn -1.0000 0.0091 0.0030
-vn 0.9992 -0.0396 -0.0061
-vn 0.9992 -0.0396 -0.0091
-vn 0.0000 -0.0650 0.9979
-vn -1.0000 0.0091 -0.0030
-vn 0.9992 -0.0396 0.0061
-vn 0.9992 -0.0396 0.0091
-vn -0.2135 -0.0000 0.9769
-vn -0.8058 0.5922 0.0000
-vn -0.8087 0.5882 0.0000
-vn -0.2135 0.0000 -0.9769
-vn 0.6269 -0.7791 -0.0000
-vn -0.1131 -0.0321 -0.9931
-vn -0.9999 0.0122 0.0000
-vn -0.0152 -0.0244 0.9996
-vn -0.0946 -0.0488 -0.9943
-vn -0.0915 -0.0488 -0.9946
-vn -0.9997 -0.0244 -0.0000
-vn -0.1430 -0.0852 0.9860
-vn -0.1559 -0.0856 0.9841
-vn 0.1677 0.1769 -0.9698
-vn 0.8852 0.1526 -0.4395
-vn 0.3225 0.1704 -0.9311
-vn -0.0915 0.1647 -0.9821
-vn -0.0990 0.1675 -0.9809
-vn 0.0351 0.2381 -0.9706
-vn 0.4087 0.0824 -0.9089
-vn 0.0681 0.1522 -0.9860
-vn 0.4566 0.0335 -0.8890
-vn 0.2185 0.1406 -0.9657
-vn 0.9746 0.1098 -0.1952
-vn -0.0808 0.1708 -0.9820
-vn 0.7953 0.0367 -0.6051
-vn 0.5738 -0.1465 -0.8058
-vn 0.5406 0.0855 -0.8369
-vn 0.9869 0.0793 -0.1403
-vn -0.4059 0.0183 -0.9138
-vn 0.9062 0.1768 -0.3841
-vn 0.9727 0.1342 -0.1891
-vn 0.6202 0.0823 -0.7801
-vn -0.3954 -0.3511 -0.8488
-vn -0.5274 -0.0761 -0.8462
-vn 0.4245 0.0701 -0.9027
-vn 0.9479 0.2046 -0.2443
-# 763 vertex normals
-
-vt 0.1653 0.1021 0.0000
-vt 0.1651 0.0040 0.0000
-vt 0.1820 0.0040 0.0000
-vt 0.1822 0.1021 0.0000
-vt 0.2390 0.0039 0.0000
-vt 0.2392 0.1021 0.0000
-vt 0.2288 0.1154 0.0000
-vt 0.1718 0.1155 0.0000
-vt 0.2488 0.1016 0.0000
-vt 0.2488 0.0038 0.0000
-vt 0.2488 0.1182 0.0000
-vt 0.2389 0.1192 0.0000
-vt 0.3830 0.9833 0.0000
-vt 0.4937 0.9905 0.0000
-vt 0.4968 0.9761 0.0000
-vt 0.3847 0.9691 0.0000
-vt 0.6248 0.0480 0.0000
-vt 0.6387 0.0358 0.0000
-vt 0.6762 0.1456 0.0000
-vt 0.6504 0.1422 0.0000
-vt 0.5881 0.0420 0.0000
-vt 0.5812 0.0529 0.0000
-vt 0.5194 0.7064 0.0000
-vt 0.3946 0.7339 0.0000
-vt 0.2729 0.9827 0.0000
-vt 0.2728 0.9686 0.0000
-vt 0.5372 0.0542 0.0000
-vt 0.5369 0.0436 0.0000
-vt 0.2725 0.7531 0.0000
-vt 0.0490 0.9765 0.0000
-vt 0.0520 0.9909 0.0000
-vt 0.1627 0.9835 0.0000
-vt 0.1610 0.9693 0.0000
-vt 0.1503 0.7341 0.0000
-vt 0.0254 0.7068 0.0000
-vt 0.0129 0.7181 0.0000
-vt 0.0276 0.9777 0.0000
-vt 0.5319 0.7177 0.0000
-vt 0.5181 0.9773 0.0000
-vt 0.6276 0.2100 0.0000
-vt 0.7886 0.2167 0.0000
-vt 0.7880 0.2311 0.0000
-vt 0.6271 0.2239 0.0000
-vt 0.4417 0.0530 0.0000
-vt 0.4170 0.0379 0.0000
-vt 0.4116 0.1636 0.0000
-vt 0.4454 0.1617 0.0000
-vt 0.4931 0.0459 0.0000
-vt 0.5057 0.0598 0.0000
-vt 0.7706 0.5706 0.0000
-vt 0.8113 0.7913 0.0000
-vt 0.6338 0.7720 0.0000
-vt 0.6173 0.5801 0.0000
-vt 0.5547 0.2097 0.0000
-vt 0.5544 0.2235 0.0000
-vt 0.5281 0.0606 0.0000
-vt 0.5276 0.0471 0.0000
-vt 0.5480 0.5803 0.0000
-vt 0.5491 0.7648 0.0000
-vt 0.5131 0.2010 0.0000
-vt 0.8012 0.2068 0.0000
-vt 0.7879 0.1921 0.0000
-vt 0.5137 0.1820 0.0000
-vt 0.9505 0.4390 0.0000
-vt 0.9294 0.4390 0.0000
-vt 0.9268 0.5619 0.0000
-vt 0.9416 0.5619 0.0000
-vt 0.9656 0.4348 0.0000
-vt 0.9905 0.4348 0.0000
-vt 0.9819 0.5570 0.0000
-vt 0.9629 0.5570 0.0000
-vt 0.9511 0.6874 0.0000
-vt 0.9289 0.6874 0.0000
-vt 0.9910 0.6819 0.0000
-vt 0.9651 0.6969 0.0000
-vt 0.4778 0.5469 0.0000
-vt 0.4769 0.4583 0.0000
-vt 0.5358 0.4581 0.0000
-vt 0.5367 0.5468 0.0000
-vt 0.6262 0.4580 0.0000
-vt 0.6271 0.5466 0.0000
-vt 0.4789 0.6840 0.0000
-vt 0.5368 0.6372 0.0000
-vt 0.4840 0.2971 0.0000
-vt 0.4836 0.2217 0.0000
-vt 0.4504 0.2199 0.0000
-vt 0.4509 0.3214 0.0000
-vt 0.4283 0.2164 0.0000
-vt 0.4283 0.1990 0.0000
-vt 0.4162 0.1990 0.0000
-vt 0.4162 0.2164 0.0000
-vt 0.4609 0.4514 0.0000
-vt 0.4609 0.4281 0.0000
-vt 0.4583 0.4281 0.0000
-vt 0.4583 0.4514 0.0000
-vt 0.4865 0.1873 0.0000
-vt 0.5044 0.1875 0.0000
-vt 0.5045 0.1849 0.0000
-vt 0.4865 0.1847 0.0000
-vt 0.6103 0.2288 0.0000
-vt 0.5859 0.2443 0.0000
-vt 0.6117 0.2447 0.0000
-vt 0.4590 0.3365 0.0000
-vt 0.5049 0.3047 0.0000
-vt 0.4891 0.2985 0.0000
-vt 0.4590 0.3204 0.0000
-vt 0.5355 0.2298 0.0000
-vt 0.5369 0.2457 0.0000
-vt 0.4175 0.2974 0.0000
-vt 0.4172 0.2227 0.0000
-vt 0.4609 0.4747 0.0000
-vt 0.4583 0.4747 0.0000
-vt 0.4655 0.5044 0.0000
-vt 0.4632 0.5044 0.0000
-vt 0.4632 0.4694 0.0000
-vt 0.4655 0.4694 0.0000
-vt 0.4632 0.4503 0.0000
-vt 0.4655 0.4503 0.0000
-vt 0.4632 0.4312 0.0000
-vt 0.4655 0.4312 0.0000
-vt 0.4632 0.3965 0.0000
-vt 0.4655 0.3965 0.0000
-vt 0.4486 0.1864 0.0000
-vt 0.4487 0.1898 0.0000
-vt 0.4128 0.1905 0.0000
-vt 0.4128 0.1871 0.0000
-vt 0.4891 0.2302 0.0000
-vt 0.5049 0.2318 0.0000
-vt 0.4583 0.5052 0.0000
-vt 0.4609 0.5052 0.0000
-vt 0.4609 0.3976 0.0000
-vt 0.4583 0.3976 0.0000
-vt 0.4674 0.1860 0.0000
-vt 0.4673 0.1809 0.0000
-vt 0.4485 0.1813 0.0000
-vt 0.4127 0.1820 0.0000
-vt 0.5045 0.1821 0.0000
-vt 0.4865 0.1818 0.0000
-vt 0.4675 0.1906 0.0000
-vt 0.4768 0.1904 0.0000
-vt 0.4767 0.1858 0.0000
-vt 0.4766 0.1807 0.0000
-vt 0.6243 0.2436 0.0000
-vt 0.6229 0.2277 0.0000
-vt 0.5075 0.1821 0.0000
-vt 0.5075 0.1850 0.0000
-vt 0.5075 0.1876 0.0000
-vt 0.1703 0.1211 0.0000
-vt 0.2654 0.1211 0.0000
-vt 0.2654 0.2162 0.0000
-vt 0.1703 0.2162 0.0000
-vt 0.8033 0.5516 0.0000
-vt 0.7284 0.5516 0.0000
-vt 0.7284 0.5346 0.0000
-vt 0.8033 0.5346 0.0000
-vt 0.7612 0.2899 0.0000
-vt 0.8771 0.2848 0.0000
-vt 0.8771 0.2638 0.0000
-vt 0.7612 0.2689 0.0000
-vt 0.6536 0.5516 0.0000
-vt 0.6536 0.5346 0.0000
-vt 0.9930 0.2899 0.0000
-vt 0.9930 0.2689 0.0000
-vt 0.7695 0.3379 0.0000
-vt 0.7630 0.3785 0.0000
-vt 0.7061 0.3785 0.0000
-vt 0.7007 0.3379 0.0000
-vt 0.7465 0.4731 0.0000
-vt 0.7420 0.5110 0.0000
-vt 0.6983 0.5110 0.0000
-vt 0.6938 0.4731 0.0000
-vt 0.5336 0.4511 0.0000
-vt 0.5358 0.3703 0.0000
-vt 0.5581 0.3703 0.0000
-vt 0.5604 0.4511 0.0000
-vt 0.5044 0.4512 0.0000
-vt 0.5079 0.3704 0.0000
-vt 0.5257 0.3704 0.0000
-vt 0.5258 0.4512 0.0000
-vt 0.7541 0.3903 0.0000
-vt 0.7147 0.3904 0.0000
-vt 0.7088 0.3850 0.0000
-vt 0.7601 0.3849 0.0000
-vt 0.7371 0.5221 0.0000
-vt 0.7033 0.5221 0.0000
-vt 0.6999 0.5170 0.0000
-vt 0.7404 0.5170 0.0000
-vt 0.5336 0.3173 0.0000
-vt 0.5604 0.3173 0.0000
-vt 0.5044 0.3174 0.0000
-vt 0.5258 0.3174 0.0000
-vt 0.2295 0.5679 0.0000
-vt 0.2295 0.7248 0.0000
-vt 0.1491 0.7248 0.0000
-vt 0.1491 0.5679 0.0000
-vt 0.0734 0.3884 0.0000
-vt 0.0734 0.5343 0.0000
-vt 0.1303 0.4803 0.0000
-vt 0.1303 0.3884 0.0000
-vt 0.3285 0.3780 0.0000
-vt 0.3285 0.5521 0.0000
-vt 0.2393 0.5521 0.0000
-vt 0.2393 0.3780 0.0000
-vt 0.0724 0.5388 0.0000
-vt 0.0724 0.7084 0.0000
-vt 0.1385 0.6456 0.0000
-vt 0.1385 0.5388 0.0000
-vt 0.0133 0.3872 0.0000
-vt 0.0133 0.4806 0.0000
-vt 0.0711 0.5356 0.0000
-vt 0.0711 0.3872 0.0000
-vt 0.0056 0.5388 0.0000
-vt 0.0056 0.6456 0.0000
-vt 0.0717 0.7084 0.0000
-vt 0.0717 0.5388 0.0000
-vt 0.7780 0.1420 0.0000
-vt 0.9957 0.1420 0.0000
-vt 0.9872 0.1360 0.0000
-vt 0.7865 0.1360 0.0000
-vt 0.8376 0.2361 0.0000
-vt 0.9159 0.2361 0.0000
-vt 0.9159 0.2269 0.0000
-vt 0.8433 0.2269 0.0000
-vt 0.9942 0.2361 0.0000
-vt 0.9885 0.2269 0.0000
-vt 0.9872 0.0716 0.0000
-vt 0.7865 0.0716 0.0000
-vt 0.9159 0.1545 0.0000
-vt 0.8433 0.1545 0.0000
-vt 0.9885 0.1545 0.0000
-vt 0.9876 0.0658 0.0000
-vt 0.9876 0.0428 0.0000
-vt 0.6555 0.0428 0.0000
-vt 0.6555 0.0658 0.0000
-vt 0.4488 0.0337 0.0000
-vt 0.9905 0.0337 0.0000
-vt 0.9905 0.0094 0.0000
-vt 0.4488 0.0094 0.0000
-vt 0.9148 0.8638 0.0000
-vt 0.9148 0.9891 0.0000
-vt 0.8086 0.9891 0.0000
-vt 0.8086 0.8638 0.0000
-vt 0.9707 0.8288 0.0000
-vt 0.8024 0.8287 0.0000
-vt 0.8033 0.8422 0.0000
-vt 0.9717 0.8424 0.0000
-vt 0.3342 0.1880 0.0000
-vt 0.2823 0.1880 0.0000
-vt 0.2823 0.1347 0.0000
-vt 0.3342 0.1347 0.0000
-vt 0.2844 0.1207 0.0000
-vt 0.3817 0.1207 0.0000
-vt 0.3817 0.1011 0.0000
-vt 0.2844 0.1011 0.0000
-vt 0.8802 0.3593 0.0000
-vt 0.9103 0.3593 0.0000
-vt 0.8975 0.5055 0.0000
-vt 0.8764 0.5055 0.0000
-vt 0.8320 0.3574 0.0000
-vt 0.8649 0.3574 0.0000
-vt 0.8535 0.5016 0.0000
-vt 0.8284 0.5016 0.0000
-vt 0.8794 0.6233 0.0000
-vt 0.9111 0.6233 0.0000
-vt 0.8656 0.6178 0.0000
-vt 0.8314 0.6355 0.0000
-vt 0.4228 0.7112 0.0000
-vt 0.4228 0.6424 0.0000
-vt 0.4423 0.6424 0.0000
-vt 0.4423 0.7112 0.0000
-vt 0.4425 0.5680 0.0000
-vt 0.4227 0.5680 0.0000
-vt 0.4227 0.7116 0.0000
-vt 0.4425 0.7116 0.0000
-vt 0.4065 0.5654 0.0000
-vt 0.3637 0.5654 0.0000
-vt 0.3637 0.6823 0.0000
-vt 0.4065 0.6823 0.0000
-vt 0.3520 0.5654 0.0000
-vt 0.3520 0.7031 0.0000
-vt 0.4182 0.7031 0.0000
-vt 0.4182 0.5654 0.0000
-vt 0.3394 0.5706 0.0000
-vt 0.3394 0.7049 0.0000
-vt 0.3486 0.7049 0.0000
-vt 0.3486 0.5706 0.0000
-vt 0.3548 0.7182 0.0000
-vt 0.4174 0.7182 0.0000
-vt 0.4174 0.7064 0.0000
-vt 0.3548 0.7064 0.0000
-vt 0.1513 0.0157 0.0000
-vt 0.0741 0.0157 0.0000
-vt 0.0741 0.0084 0.0000
-vt 0.1513 0.0084 0.0000
-vt 0.2558 0.0882 0.0000
-vt 0.3008 0.0414 0.0000
-vt 0.3107 0.0499 0.0000
-vt 0.2558 0.1052 0.0000
-vt 0.3368 0.0041 0.0000
-vt 0.3569 0.0041 0.0000
-vt 0.0100 0.0157 0.0000
-vt 0.0100 0.0084 0.0000
-vt 0.3418 0.3603 0.0000
-vt 0.3577 0.3603 0.0000
-vt 0.3604 0.5475 0.0000
-vt 0.3445 0.5475 0.0000
-vt 0.3638 0.3511 0.0000
-vt 0.3799 0.3511 0.0000
-vt 0.3947 0.5483 0.0000
-vt 0.3786 0.5483 0.0000
-vt 0.9865 0.8562 0.0000
-vt 0.9634 0.8562 0.0000
-vt 0.9732 0.9032 0.0000
-vt 0.9893 0.9032 0.0000
-vt 0.9534 0.8563 0.0000
-vt 0.9269 0.8563 0.0000
-vt 0.9361 0.9027 0.0000
-vt 0.9563 0.9027 0.0000
-vt 0.9870 0.9897 0.0000
-vt 0.9628 0.9897 0.0000
-vt 0.9264 0.9882 0.0000
-vt 0.9540 0.9939 0.0000
-vt 0.3862 0.0933 0.0000
-vt 0.3862 0.0789 0.0000
-vt 0.3785 0.0789 0.0000
-vt 0.3785 0.0933 0.0000
-vt 0.3862 0.0646 0.0000
-vt 0.3785 0.0646 0.0000
-vt 0.3862 0.0502 0.0000
-vt 0.3785 0.0502 0.0000
-vt 0.3862 0.0314 0.0000
-vt 0.3785 0.0358 0.0000
-vt 0.3708 0.0933 0.0000
-vt 0.3708 0.0812 0.0000
-vt 0.3630 0.0835 0.0000
-vt 0.3630 0.0933 0.0000
-vt 0.3708 0.0726 0.0000
-vt 0.3630 0.0733 0.0000
-vt 0.3476 0.0933 0.0000
-vt 0.3553 0.0933 0.0000
-vt 0.3553 0.0812 0.0000
-vt 0.3476 0.0789 0.0000
-vt 0.3553 0.0726 0.0000
-vt 0.3476 0.0646 0.0000
-vt 0.3398 0.0933 0.0000
-vt 0.3398 0.0789 0.0000
-vt 0.3321 0.0789 0.0000
-vt 0.3321 0.0933 0.0000
-vt 0.3398 0.0646 0.0000
-vt 0.3321 0.0646 0.0000
-vt 0.3398 0.0502 0.0000
-vt 0.3321 0.0502 0.0000
-vt 0.3398 0.0314 0.0000
-vt 0.3321 0.0358 0.0000
-vt 0.3940 0.0933 0.0000
-vt 0.3940 0.0789 0.0000
-vt 0.3940 0.0646 0.0000
-vt 0.3940 0.0502 0.0000
-vt 0.3940 0.0358 0.0000
-vt 0.3476 0.0502 0.0000
-vt 0.3476 0.0358 0.0000
-vt 0.0870 0.2093 0.0000
-vt 0.0870 0.1769 0.0000
-vt 0.1033 0.1769 0.0000
-vt 0.1033 0.2093 0.0000
-vt 0.0870 0.1445 0.0000
-vt 0.1033 0.1445 0.0000
-vt 0.0870 0.1122 0.0000
-vt 0.1033 0.1122 0.0000
-vt 0.0870 0.0798 0.0000
-vt 0.1033 0.0879 0.0000
-vt 0.1195 0.1769 0.0000
-vt 0.1195 0.2093 0.0000
-vt 0.1195 0.1445 0.0000
-vt 0.1195 0.1122 0.0000
-vt 0.1195 0.0919 0.0000
-vt 0.1358 0.1769 0.0000
-vt 0.1358 0.2093 0.0000
-vt 0.1358 0.1445 0.0000
-vt 0.1358 0.1122 0.0000
-vt 0.1358 0.0879 0.0000
-vt 0.1521 0.1769 0.0000
-vt 0.1521 0.2093 0.0000
-vt 0.1521 0.1445 0.0000
-vt 0.1521 0.1122 0.0000
-vt 0.1521 0.0798 0.0000
-vt 0.9805 0.3515 0.0000
-vt 0.8919 0.3515 0.0000
-vt 0.8919 0.3478 0.0000
-vt 0.9816 0.3476 0.0000
-vt 0.9830 0.3553 0.0000
-vt 0.8919 0.3552 0.0000
-vt 0.8919 0.3440 0.0000
-vt 0.9824 0.3437 0.0000
-vt 0.9965 0.3561 0.0000
-vt 0.9831 0.3494 0.0000
-vt 0.9965 0.3427 0.0000
-vt 0.7419 0.2470 0.0000
-vt 0.6431 0.2470 0.0000
-vt 0.6431 0.3190 0.0000
-vt 0.7419 0.3190 0.0000
-vt 0.7507 0.2396 0.0000
-vt 0.6359 0.2396 0.0000
-vt 0.6359 0.3246 0.0000
-vt 0.7507 0.3246 0.0000
-vt 0.6389 0.1517 0.0000
-vt 0.6389 0.1732 0.0000
-vt 0.8323 0.1732 0.0000
-vt 0.8323 0.1517 0.0000
-vt 0.8265 0.2627 0.0000
-vt 0.8140 0.2627 0.0000
-vt 0.8140 0.1773 0.0000
-vt 0.8265 0.1773 0.0000
-vt 0.6510 0.1648 0.0000
-vt 0.8174 0.1648 0.0000
-vt 0.8174 0.1732 0.0000
-vt 0.6510 0.1732 0.0000
-vt 0.8189 0.1848 0.0000
-vt 0.8189 0.2570 0.0000
-vt 0.8140 0.2570 0.0000
-vt 0.8140 0.1848 0.0000
-vt 0.5178 0.0689 0.0000
-vt 0.4575 0.0689 0.0000
-vt 0.4575 0.0739 0.0000
-vt 0.5178 0.0739 0.0000
-vt 0.5266 0.0771 0.0000
-vt 0.4556 0.0771 0.0000
-vt 0.4556 0.1622 0.0000
-vt 0.5266 0.1622 0.0000
-vt 0.4526 0.0711 0.0000
-vt 0.4480 0.0711 0.0000
-vt 0.4480 0.1341 0.0000
-vt 0.4526 0.1341 0.0000
-vt 0.0867 0.2315 0.0000
-vt 0.0133 0.2315 0.0000
-vt 0.0133 0.3783 0.0000
-vt 0.0867 0.3783 0.0000
-vt 0.2532 0.5764 0.0000
-vt 0.2532 0.7062 0.0000
-vt 0.3181 0.6514 0.0000
-vt 0.3181 0.5764 0.0000
-vt 0.1025 0.2299 0.0000
-vt 0.3167 0.2299 0.0000
-vt 0.3167 0.3662 0.0000
-vt 0.1025 0.3662 0.0000
-vt 0.1508 0.3732 0.0000
-vt 0.1508 0.4723 0.0000
-vt 0.2003 0.4304 0.0000
-vt 0.2003 0.3732 0.0000
-vt 0.2287 0.4613 0.0000
-vt 0.2287 0.5184 0.0000
-vt 0.1793 0.5602 0.0000
-vt 0.1793 0.4613 0.0000
-vt 0.4010 0.2138 0.0000
-vt 0.4010 0.2947 0.0000
-vt 0.3310 0.3538 0.0000
-vt 0.3310 0.2138 0.0000
-vt 0.5641 0.3335 0.0000
-vt 0.5946 0.3335 0.0000
-vt 0.6439 0.4416 0.0000
-vt 0.5931 0.4416 0.0000
-vt 0.6529 0.4224 0.0000
-vt 0.6831 0.4224 0.0000
-vt 0.6898 0.5217 0.0000
-vt 0.6462 0.5217 0.0000
-vt 0.5446 0.8121 0.0000
-vt 0.6711 0.8320 0.0000
-vt 0.6711 0.9870 0.0000
-vt 0.5446 0.9872 0.0000
-vt 0.4371 0.3303 0.0000
-vt 0.4358 0.5309 0.0000
-vt 0.4457 0.5400 0.0000
-vt 0.4471 0.3395 0.0000
-vt 0.4093 0.5489 0.0000
-vt 0.4272 0.5489 0.0000
-vt 0.4272 0.3265 0.0000
-vt 0.4093 0.3265 0.0000
-vt 0.6195 0.0640 0.0000
-vt 0.5319 0.0641 0.0000
-vt 0.5319 0.1713 0.0000
-vt 0.6195 0.1791 0.0000
-vt 0.7976 0.8121 0.0000
-vt 0.7976 0.9872 0.0000
-vt 0.0096 0.1316 0.0000
-vt 0.0232 0.1315 0.0000
-vt 0.0232 0.2108 0.0000
-vt 0.0096 0.2108 0.0000
-vt 0.0617 0.2213 0.0000
-vt 0.0151 0.2219 0.0000
-vt 0.0690 0.2103 0.0000
-vt 0.0690 0.1320 0.0000
-vt 0.0151 0.1205 0.0000
-vt 0.0616 0.1211 0.0000
-vt 0.0764 0.2116 0.0000
-vt 0.0694 0.2244 0.0000
-vt 0.0764 0.1307 0.0000
-vt 0.0694 0.1180 0.0000
-vt 0.8502 0.6523 0.0000
-vt 0.8216 0.6519 0.0000
-vt 0.8262 0.7280 0.0000
-vt 0.8489 0.7283 0.0000
-vt 0.8996 0.6351 0.0000
-vt 0.8678 0.6351 0.0000
-vt 0.8688 0.7106 0.0000
-vt 0.8962 0.7106 0.0000
-vt 0.8524 0.7973 0.0000
-vt 0.8184 0.7968 0.0000
-vt 0.8650 0.7842 0.0000
-vt 0.9025 0.8081 0.0000
-vt 0.8800 0.2990 0.0000
-vt 0.8800 0.3360 0.0000
-vt 0.7763 0.3478 0.0000
-vt 0.7763 0.3107 0.0000
-vt 0.9894 0.3030 0.0000
-vt 0.9894 0.3400 0.0000
-vt 0.8122 0.5069 0.0000
-vt 0.8110 0.4335 0.0000
-vt 0.7852 0.4335 0.0000
-vt 0.7817 0.5069 0.0000
-vt 0.6664 0.4078 0.0000
-vt 0.7042 0.4222 0.0000
-vt 0.7305 0.4089 0.0000
-vt 0.6664 0.3660 0.0000
-vt 0.7582 0.5158 0.0000
-vt 0.7594 0.5000 0.0000
-vt 0.7724 0.5000 0.0000
-vt 0.7736 0.5158 0.0000
-vt 0.8133 0.3622 0.0000
-vt 0.7828 0.3622 0.0000
-vt 0.7458 0.4669 0.0000
-vt 0.7801 0.4669 0.0000
-vt 0.7582 0.4758 0.0000
-vt 0.7736 0.4758 0.0000
-vt 0.0071 0.1053 0.0000
-vt 0.0071 0.0766 0.0000
-vt 0.0724 0.0766 0.0000
-vt 0.0724 0.1053 0.0000
-vt 0.0071 0.0727 0.0000
-vt 0.0724 0.0727 0.0000
-vt 0.4675 0.5387 0.0000
-vt 0.4559 0.5387 0.0000
-vt 0.4559 0.6952 0.0000
-vt 0.4675 0.6952 0.0000
-vt 0.4704 0.5364 0.0000
-vt 0.4532 0.5364 0.0000
-vt 0.4532 0.6969 0.0000
-vt 0.4704 0.6969 0.0000
-vt 0.9357 0.7417 0.0000
-vt 0.9172 0.7417 0.0000
-vt 0.9172 0.7159 0.0000
-vt 0.9357 0.7159 0.0000
-vt 0.9541 0.7417 0.0000
-vt 0.9541 0.7159 0.0000
-vt 0.9725 0.7417 0.0000
-vt 0.9725 0.7159 0.0000
-vt 0.9909 0.7417 0.0000
-vt 0.9909 0.7159 0.0000
-vt 0.9357 0.7675 0.0000
-vt 0.9172 0.7675 0.0000
-vt 0.9541 0.7675 0.0000
-vt 0.9725 0.7675 0.0000
-vt 0.9909 0.7675 0.0000
-vt 0.9357 0.7933 0.0000
-vt 0.9172 0.7933 0.0000
-vt 0.9541 0.7933 0.0000
-vt 0.9725 0.7933 0.0000
-vt 0.9909 0.7933 0.0000
-vt 0.9357 0.8191 0.0000
-vt 0.9172 0.8191 0.0000
-vt 0.9541 0.8191 0.0000
-vt 0.9725 0.8191 0.0000
-vt 0.9909 0.8191 0.0000
-# 572 texture coords
-
-o house
-g house
-f 1/1/1 2/2/1 3/3/1
-f 3/3/1 4/4/1 1/1/1
-f 5/5/2 6/6/3 4/4/4
-f 4/4/4 3/3/3 5/5/2
-f 6/6/5 7/7/5 1/8/5
-f 1/8/5 4/4/5 6/6/5
-f 8/9/6 6/6/6 5/5/6
-f 5/5/6 9/10/6 8/9/6
-f 10/11/5 7/12/5 6/6/5
-f 6/6/5 8/9/7 10/11/7
-f 11/1/8 12/4/8 13/3/8
-f 13/3/8 14/2/8 11/1/8
-f 12/4/9 15/6/10 16/5/11
-f 16/5/11 13/3/12 12/4/9
-f 11/8/5 17/7/5 15/6/5
-f 15/6/7 12/4/5 11/8/5
-f 8/9/13 9/10/13 16/5/13
-f 16/5/14 15/6/14 8/9/13
-f 10/11/5 8/9/5 15/6/5
-f 15/6/7 17/12/7 10/11/7
-f 18/1/1 19/2/1 20/3/1
-f 20/3/1 21/4/1 18/1/1
-f 22/5/15 23/6/15 21/4/16
-f 21/4/16 20/3/17 22/5/15
-f 23/6/18 24/7/18 18/8/18
-f 18/8/18 21/4/19 23/6/18
-f 25/9/20 23/6/21 22/5/22
-f 22/5/22 26/10/23 25/9/21
-f 27/11/19 24/12/18 23/6/18
-f 23/6/18 25/9/24 27/11/25
-f 28/1/8 29/4/8 30/3/8
-f 30/3/8 31/2/8 28/1/8
-f 29/4/26 32/6/26 33/5/26
-f 33/5/26 30/3/26 29/4/26
-f 28/8/18 34/7/18 32/6/18
-f 32/6/18 29/4/18 28/8/18
-f 25/9/27 26/10/28 33/5/29
-f 33/5/28 32/6/30 25/9/30
-f 27/11/19 25/9/18 32/6/18
-f 32/6/24 34/12/24 27/11/19
-f 35/1/1 36/2/1 37/3/1
-f 37/3/1 38/4/1 35/1/1
-f 39/5/31 40/6/32 38/4/33
-f 38/4/33 37/3/33 39/5/31
-f 40/6/34 41/7/34 35/8/34
-f 35/8/34 38/4/34 40/6/34
-f 42/9/35 40/6/36 39/5/35
-f 39/5/35 43/10/37 42/9/35
-f 44/11/34 41/12/34 40/6/34
-f 40/6/34 42/9/34 44/11/34
-f 45/1/8 46/4/8 47/3/8
-f 47/3/8 48/2/8 45/1/8
-f 46/4/38 49/6/39 50/5/40
-f 50/5/40 47/3/38 46/4/38
-f 45/8/34 51/7/34 49/6/34
-f 49/6/34 46/4/34 45/8/34
-f 42/9/41 43/10/42 50/5/41
-f 50/5/41 49/6/42 42/9/41
-f 44/11/34 42/9/34 49/6/34
-f 49/6/34 51/12/34 44/11/34
-f 52/1/1 53/2/1 54/3/1
-f 54/3/1 55/4/1 52/1/1
-f 56/5/43 57/6/43 55/4/44
-f 55/4/44 54/3/45 56/5/43
-f 57/6/46 58/7/46 52/8/46
-f 52/8/46 55/4/46 57/6/46
-f 59/9/47 57/6/47 56/5/47
-f 56/5/47 60/10/47 59/9/47
-f 61/11/46 58/12/46 57/6/46
-f 57/6/46 59/9/48 61/11/48
-f 62/1/8 63/4/8 64/3/8
-f 64/3/8 65/2/8 62/1/8
-f 63/4/49 66/6/50 67/5/50
-f 67/5/50 64/3/51 63/4/49
-f 62/8/46 68/7/46 66/6/46
-f 66/6/46 63/4/46 62/8/46
-f 59/9/52 60/10/52 67/5/52
-f 67/5/52 66/6/52 59/9/52
-f 61/11/46 59/9/46 66/6/46
-f 66/6/46 68/12/46 61/11/46
-f 69/1/1 70/4/1 71/3/1
-f 71/3/1 72/2/1 69/1/1
-f 73/5/53 71/3/54 70/4/54
-f 70/4/54 74/6/53 73/5/53
-f 74/6/55 70/4/55 69/8/55
-f 69/8/55 75/7/55 74/6/55
-f 76/9/56 77/10/56 73/5/57
-f 73/5/58 74/6/58 76/9/59
-f 78/11/55 76/9/55 74/6/55
-f 74/6/55 75/12/55 78/11/55
-f 79/1/8 80/2/8 81/3/8
-f 81/3/8 82/4/8 79/1/8
-f 82/4/60 81/3/60 83/5/60
-f 83/5/60 84/6/60 82/4/60
-f 79/8/55 82/4/55 84/6/55
-f 84/6/55 85/7/55 79/8/55
-f 76/9/61 84/6/62 83/5/63
-f 83/5/63 77/10/64 76/9/64
-f 78/11/55 85/12/55 84/6/55
-f 84/6/55 76/9/55 78/11/55
-f 86/1/1 87/4/1 88/3/1
-f 88/3/1 89/2/1 86/1/1
-f 90/5/65 88/3/65 87/4/66
-f 87/4/66 91/6/65 90/5/65
-f 91/6/67 87/4/67 86/8/68
-f 86/8/68 92/7/67 91/6/67
-f 93/9/69 94/10/70 90/5/71
-f 90/5/71 91/6/71 93/9/72
-f 95/11/67 93/9/67 91/6/67
-f 91/6/67 92/12/67 95/11/67
-f 96/1/8 97/2/8 98/3/8
-f 98/3/8 99/4/8 96/1/8
-f 99/4/73 98/3/74 100/5/75
-f 100/5/75 101/6/75 99/4/73
-f 96/8/68 99/4/67 101/6/76
-f 101/6/67 102/7/67 96/8/68
-f 93/9/77 101/6/78 100/5/78
-f 100/5/78 94/10/78 93/9/77
-f 95/11/67 102/12/76 101/6/76
-f 101/6/67 93/9/67 95/11/67
-f 103/1/1 104/4/1 105/3/1
-f 105/3/1 106/2/1 103/1/1
-f 107/5/79 105/3/80 104/4/81
-f 104/4/81 108/6/82 107/5/79
-f 108/6/83 104/4/83 103/8/83
-f 103/8/83 109/7/83 108/6/83
-f 110/9/84 111/10/84 107/5/85
-f 107/5/85 108/6/85 110/9/85
-f 112/11/86 110/9/86 108/6/83
-f 108/6/83 109/12/83 112/11/83
-f 113/1/8 114/2/8 115/3/8
-f 115/3/8 116/4/8 113/1/8
-f 116/4/87 115/3/88 117/5/88
-f 117/5/88 118/6/89 116/4/87
-f 113/8/83 116/4/83 118/6/86
-f 118/6/83 119/7/83 113/8/83
-f 110/9/90 118/6/90 117/5/90
-f 117/5/91 111/10/91 110/9/91
-f 112/11/83 119/12/86 118/6/86
-f 118/6/83 110/9/83 112/11/83
-f 120/1/1 121/4/1 122/3/1
-f 122/3/1 123/2/1 120/1/1
-f 124/5/82 122/3/92 121/4/92
-f 121/4/92 125/6/82 124/5/82
-f 125/6/83 121/4/93 120/8/83
-f 120/8/83 126/7/93 125/6/83
-f 127/9/85 128/10/85 124/5/85
-f 124/5/85 125/6/85 127/9/85
-f 129/11/83 127/9/83 125/6/83
-f 125/6/83 126/12/93 129/11/83
-f 130/1/8 131/2/8 132/3/8
-f 132/3/8 133/4/8 130/1/8
-f 133/4/88 132/3/87 134/5/89
-f 134/5/89 135/6/89 133/4/88
-f 130/8/83 133/4/83 135/6/86
-f 135/6/83 136/7/93 130/8/83
-f 127/9/90 135/6/90 134/5/90
-f 134/5/90 128/10/90 127/9/90
-f 129/11/83 136/12/94 135/6/86
-f 135/6/83 127/9/83 129/11/83
-f 137/1/1 138/4/1 139/3/1
-f 139/3/1 140/2/1 137/1/1
-f 141/5/95 139/3/96 138/4/96
-f 138/4/96 142/6/95 141/5/95
-f 142/6/55 138/4/55 137/8/55
-f 137/8/55 143/7/55 142/6/55
-f 144/9/58 145/10/58 141/5/58
-f 141/5/58 142/6/59 144/9/58
-f 146/11/55 144/9/55 142/6/55
-f 142/6/55 143/12/55 146/11/97
-f 147/1/8 148/2/8 149/3/8
-f 149/3/8 150/4/8 147/1/8
-f 150/4/98 149/3/98 151/5/99
-f 151/5/99 152/6/99 150/4/98
-f 147/8/55 150/4/55 152/6/55
-f 152/6/55 153/7/55 147/8/55
-f 144/9/63 152/6/61 151/5/62
-f 151/5/62 145/10/62 144/9/62
-f 146/11/55 153/12/55 152/6/55
-f 152/6/55 144/9/97 146/11/97
-f 154/1/1 155/4/1 156/3/1
-f 156/3/1 157/2/1 154/1/1
-f 158/5/100 156/3/101 155/4/102
-f 155/4/102 159/6/102 158/5/100
-f 159/6/103 155/4/103 154/8/103
-f 154/8/103 160/7/103 159/6/103
-f 161/9/104 162/10/105 158/5/105
-f 158/5/106 159/6/107 161/9/108
-f 163/11/103 161/9/103 159/6/103
-f 159/6/103 160/12/103 163/11/103
-f 164/1/8 165/2/8 166/3/8
-f 166/3/8 167/4/8 164/1/8
-f 167/4/109 166/3/110 168/5/111
-f 168/5/111 169/6/109 167/4/109
-f 164/8/103 167/4/103 169/6/103
-f 169/6/103 170/7/103 164/8/103
-f 161/9/112 169/6/113 168/5/114
-f 168/5/114 162/10/114 161/9/115
-f 163/11/116 170/12/116 169/6/116
-f 169/6/103 161/9/103 163/11/103
-f 171/1/1 172/2/1 173/3/1
-f 173/3/1 174/4/1 171/1/1
-f 175/5/117 176/6/118 174/4/3
-f 174/4/3 173/3/119 175/5/117
-f 176/6/120 177/7/120 171/8/121
-f 171/8/121 174/4/121 176/6/120
-f 178/9/122 176/6/6 175/5/6
-f 175/5/6 179/10/123 178/9/6
-f 180/11/120 177/12/120 176/6/120
-f 176/6/120 178/9/124 180/11/124
-f 181/1/8 182/4/8 183/3/8
-f 183/3/8 184/2/8 181/1/8
-f 182/4/12 185/6/10 186/5/125
-f 186/5/125 183/3/126 182/4/12
-f 181/8/121 187/7/120 185/6/120
-f 185/6/124 182/4/121 181/8/121
-f 178/9/13 179/10/127 186/5/13
-f 186/5/14 185/6/14 178/9/14
-f 180/11/120 178/9/120 185/6/120
-f 185/6/124 187/12/124 180/11/124
-f 188/1/1 189/2/1 190/3/1
-f 190/3/1 191/4/1 188/1/1
-f 192/5/128 193/6/129 191/4/130
-f 191/4/130 190/3/131 192/5/128
-f 193/6/18 194/7/18 188/8/19
-f 188/8/19 191/4/18 193/6/18
-f 195/9/132 193/6/133 192/5/134
-f 192/5/134 196/10/134 195/9/133
-f 197/11/18 194/12/18 193/6/18
-f 193/6/18 195/9/24 197/11/24
-f 198/1/8 199/4/8 200/3/8
-f 200/3/8 201/2/8 198/1/8
-f 199/4/135 202/6/135 203/5/136
-f 203/5/136 200/3/135 199/4/135
-f 198/8/19 204/7/18 202/6/18
-f 202/6/18 199/4/18 198/8/19
-f 195/9/137 196/10/138 203/5/138
-f 203/5/138 202/6/139 195/9/139
-f 197/11/18 195/9/18 202/6/18
-f 202/6/24 204/12/24 197/11/18
-f 205/1/1 206/2/1 207/3/1
-f 207/3/1 208/4/1 205/1/1
-f 209/5/140 210/6/141 208/4/142
-f 208/4/142 207/3/44 209/5/140
-f 210/6/143 211/7/143 205/8/143
-f 205/8/143 208/4/144 210/6/143
-f 212/9/145 210/6/145 209/5/47
-f 209/5/47 213/10/47 212/9/145
-f 214/11/143 211/12/143 210/6/143
-f 210/6/143 212/9/146 214/11/146
-f 215/1/8 216/4/8 217/3/8
-f 217/3/8 218/2/8 215/1/8
-f 216/4/147 219/6/148 220/5/149
-f 220/5/149 217/3/49 216/4/147
-f 215/8/143 221/7/143 219/6/143
-f 219/6/143 216/4/143 215/8/143
-f 212/9/150 213/10/52 220/5/52
-f 220/5/52 219/6/150 212/9/150
-f 214/11/143 212/9/143 219/6/143
-f 219/6/143 221/12/143 214/11/143
-f 222/1/1 223/2/1 224/3/1
-f 224/3/1 225/4/1 222/1/1
-f 226/5/151 227/6/152 225/4/153
-f 225/4/153 224/3/154 226/5/151
-f 227/6/34 228/7/34 222/8/34
-f 222/8/34 225/4/34 227/6/34
-f 229/9/155 227/6/155 226/5/156
-f 226/5/156 230/10/157 229/9/155
-f 231/11/34 228/12/34 227/6/34
-f 227/6/34 229/9/34 231/11/34
-f 232/1/8 233/4/8 234/3/8
-f 234/3/8 235/2/8 232/1/8
-f 233/4/158 236/6/159 237/5/160
-f 237/5/160 234/3/161 233/4/158
-f 232/8/34 238/7/34 236/6/34
-f 236/6/34 233/4/34 232/8/34
-f 229/9/162 230/10/163 237/5/164
-f 237/5/164 236/6/162 229/9/162
-f 231/11/34 229/9/34 236/6/34
-f 236/6/34 238/12/34 231/11/34
-f 239/1/1 240/2/1 241/3/1
-f 241/3/1 242/4/1 239/1/1
-f 243/5/165 244/6/166 242/4/167
-f 242/4/167 241/3/153 243/5/165
-f 244/6/34 245/7/34 239/8/34
-f 239/8/34 242/4/34 244/6/34
-f 246/9/156 244/6/168 243/5/169
-f 243/5/169 247/10/169 246/9/170
-f 248/11/34 245/12/34 244/6/34
-f 244/6/34 246/9/34 248/11/34
-f 249/1/8 250/4/8 251/3/8
-f 251/3/8 252/2/8 249/1/8
-f 250/4/161 253/6/171 254/5/172
-f 254/5/172 251/3/158 250/4/161
-f 249/8/34 255/7/34 253/6/34
-f 253/6/34 250/4/34 249/8/34
-f 246/9/164 247/10/173 254/5/173
-f 254/5/173 253/6/174 246/9/175
-f 248/11/34 246/9/34 253/6/34
-f 253/6/176 255/12/176 248/11/34
-f 256/1/1 257/2/1 258/3/1
-f 258/3/1 259/4/1 256/1/1
-f 260/5/177 261/6/82 259/4/92
-f 259/4/92 258/3/178 260/5/177
-f 261/6/179 262/7/179 256/8/180
-f 256/8/180 259/4/179 261/6/179
-f 263/9/85 261/6/85 260/5/181
-f 260/5/181 264/10/182 263/9/84
-f 265/11/179 262/12/179 261/6/179
-f 261/6/179 263/9/179 265/11/179
-f 266/1/8 267/4/8 268/3/8
-f 268/3/8 269/2/8 266/1/8
-f 267/4/87 270/6/89 271/5/183
-f 271/5/183 268/3/184 267/4/87
-f 266/8/180 272/7/179 270/6/179
-f 270/6/179 267/4/179 266/8/180
-f 263/9/91 264/10/185 271/5/185
-f 271/5/186 270/6/90 263/9/90
-f 265/11/179 263/9/179 270/6/179
-f 270/6/179 272/12/179 265/11/179
-f 273/1/187 274/2/187 275/3/187
-f 275/3/187 276/4/187 273/1/187
-f 277/5/188 278/6/189 276/4/189
-f 276/4/189 275/3/188 277/5/188
-f 278/6/190 279/7/190 273/8/190
-f 273/8/190 276/4/190 278/6/190
-f 280/9/191 278/6/192 277/5/193
-f 277/5/193 281/10/194 280/9/191
-f 282/11/190 279/12/190 278/6/190
-f 278/6/190 280/9/190 282/11/190
-f 283/1/195 284/4/195 285/3/195
-f 285/3/195 286/2/195 283/1/195
-f 284/4/196 287/6/196 288/5/197
-f 288/5/197 285/3/197 284/4/196
-f 283/8/190 289/7/190 287/6/190
-f 287/6/190 284/4/190 283/8/190
-f 280/9/198 281/10/199 288/5/199
-f 288/5/199 287/6/198 280/9/198
-f 282/11/190 280/9/190 287/6/190
-f 287/6/190 289/12/190 282/11/190
-f 290/1/187 291/2/187 292/3/187
-f 292/3/187 293/4/187 290/1/187
-f 294/5/200 295/6/200 293/4/200
-f 293/4/200 292/3/200 294/5/200
-f 295/6/201 296/7/201 290/8/201
-f 290/8/201 293/4/201 295/6/201
-f 297/9/202 295/6/202 294/5/203
-f 294/5/203 298/10/204 297/9/202
-f 299/11/201 296/12/201 295/6/201
-f 295/6/201 297/9/201 299/11/201
-f 300/1/195 301/4/195 302/3/195
-f 302/3/195 303/2/195 300/1/195
-f 301/4/205 304/6/205 305/5/205
-f 305/5/205 302/3/205 301/4/205
-f 300/8/201 306/7/201 304/6/201
-f 304/6/201 301/4/201 300/8/201
-f 297/9/206 298/10/206 305/5/207
-f 305/5/207 304/6/206 297/9/206
-f 299/11/201 297/9/201 304/6/201
-f 304/6/201 306/12/201 299/11/201
-f 307/1/187 308/2/187 309/3/187
-f 309/3/187 310/4/187 307/1/187
-f 311/5/208 312/6/208 310/4/208
-f 310/4/208 309/3/208 311/5/208
-f 312/6/209 313/7/210 307/8/210
-f 307/8/210 310/4/210 312/6/209
-f 314/9/211 312/6/212 311/5/213
-f 311/5/213 315/10/213 314/9/211
-f 316/11/210 313/12/210 312/6/209
-f 312/6/209 314/9/210 316/11/210
-f 317/1/195 318/4/195 319/3/195
-f 319/3/195 320/2/195 317/1/195
-f 318/4/214 321/6/214 322/5/214
-f 322/5/214 319/3/214 318/4/214
-f 317/8/210 323/7/210 321/6/209
-f 321/6/209 318/4/210 317/8/210
-f 314/9/215 315/10/215 322/5/215
-f 322/5/215 321/6/216 314/9/215
-f 316/11/210 314/9/210 321/6/209
-f 321/6/209 323/12/210 316/11/210
-f 324/1/195 325/2/195 326/3/195
-f 326/3/195 327/4/195 324/1/195
-f 328/5/217 329/6/217 327/4/217
-f 327/4/217 326/3/217 328/5/217
-f 329/6/218 330/7/218 324/8/218
-f 324/8/218 327/4/218 329/6/218
-f 331/9/219 329/6/219 328/5/220
-f 328/5/220 332/10/221 331/9/219
-f 333/11/218 330/12/218 329/6/218
-f 329/6/218 331/9/218 333/11/218
-f 334/1/187 335/4/187 336/3/187
-f 336/3/187 337/2/187 334/1/187
-f 335/4/222 338/6/222 339/5/222
-f 339/5/222 336/3/222 335/4/222
-f 334/8/218 340/7/218 338/6/218
-f 338/6/218 335/4/218 334/8/218
-f 331/9/223 332/10/224 339/5/225
-f 339/5/225 338/6/225 331/9/223
-f 333/11/218 331/9/218 338/6/218
-f 338/6/218 340/12/218 333/11/218
-f 341/1/195 342/2/195 343/3/195
-f 343/3/195 344/4/195 341/1/195
-f 345/5/217 346/6/217 344/4/217
-f 344/4/217 343/3/217 345/5/217
-f 346/6/226 347/7/226 341/8/226
-f 341/8/226 344/4/226 346/6/226
-f 348/9/219 346/6/219 345/5/220
-f 345/5/220 349/10/220 348/9/219
-f 350/11/218 347/12/226 346/6/226
-f 346/6/226 348/9/226 350/11/218
-f 351/1/187 352/4/187 353/3/187
-f 353/3/187 354/2/187 351/1/187
-f 352/4/222 355/6/222 356/5/222
-f 356/5/222 353/3/227 352/4/222
-f 351/8/226 357/7/226 355/6/226
-f 355/6/226 352/4/226 351/8/226
-f 348/9/223 349/10/223 356/5/225
-f 356/5/225 355/6/225 348/9/223
-f 350/11/218 348/9/226 355/6/226
-f 355/6/226 357/12/226 350/11/218
-f 358/1/195 359/2/195 360/3/195
-f 360/3/195 361/4/195 358/1/195
-f 362/5/228 363/6/217 361/4/217
-f 361/4/217 360/3/228 362/5/228
-f 363/6/226 364/7/226 358/8/226
-f 358/8/226 361/4/226 363/6/226
-f 365/9/219 363/6/219 362/5/229
-f 362/5/229 366/10/230 365/9/219
-f 367/11/218 364/12/226 363/6/226
-f 363/6/226 365/9/226 367/11/218
-f 368/1/187 369/4/187 370/3/187
-f 370/3/187 371/2/187 368/1/187
-f 369/4/222 372/6/222 373/5/231
-f 373/5/231 370/3/231 369/4/222
-f 368/8/226 374/7/226 372/6/226
-f 372/6/226 369/4/226 368/8/226
-f 365/9/223 366/10/232 373/5/233
-f 373/5/233 372/6/225 365/9/223
-f 367/11/218 365/9/226 372/6/226
-f 372/6/226 374/12/226 367/11/218
-f 375/13/234 376/14/235 377/15/235
-f 377/15/236 378/16/237 375/13/237
-f 379/17/238 380/18/238 381/19/239
-f 381/19/240 382/20/241 379/17/242
-f 382/20/243 381/19/244 376/18/245
-f 376/18/246 383/17/247 382/20/248
-f 383/17/249 376/18/249 375/21/250
-f 375/21/251 384/22/252 383/17/253
-f 377/15/254 385/23/255 386/24/255
-f 386/24/256 378/16/257 377/15/258
-f 387/13/259 388/25/259 389/26/259
-f 389/26/259 390/16/259 387/13/259
-f 391/22/260 392/27/260 388/28/260
-f 388/28/260 387/21/260 391/22/260
-f 390/16/261 389/26/261 393/29/262
-f 393/29/263 386/24/264 390/16/265
-f 394/25/266 375/13/266 378/16/266
-f 378/16/266 395/26/266 394/25/266
-f 384/22/267 375/21/267 394/28/267
-f 394/28/267 396/27/267 384/22/267
-f 378/16/268 386/24/269 393/29/270
-f 393/29/271 395/26/272 378/16/272
-f 380/14/273 387/13/273 390/16/273
-f 390/16/274 397/15/275 380/14/275
-f 379/17/260 391/22/260 387/21/260
-f 387/21/276 380/18/277 379/17/277
-f 397/15/278 390/16/279 386/24/280
-f 386/24/281 385/23/282 397/15/283
-f 398/30/284 399/31/284 400/32/285
-f 400/32/286 401/33/286 398/30/286
-f 402/17/287 403/20/288 404/19/289
-f 404/19/290 405/18/291 402/17/291
-f 403/20/292 406/17/293 399/18/293
-f 399/18/294 404/19/295 403/20/296
-f 406/17/297 407/22/298 400/21/298
-f 400/21/299 399/18/299 406/17/299
-f 408/34/300 409/35/301 398/30/302
-f 398/30/303 401/33/303 408/34/304
-f 389/26/259 388/25/259 410/32/259
-f 410/32/259 411/33/259 389/26/259
-f 388/28/260 392/27/260 412/22/260
-f 412/22/260 410/21/260 388/28/260
-f 393/29/262 389/26/261 411/33/261
-f 411/33/305 408/34/306 393/29/307
-f 401/33/266 400/32/266 394/25/266
-f 394/25/266 395/26/266 401/33/266
-f 407/22/267 396/27/267 394/28/267
-f 394/28/267 400/21/267 407/22/267
-f 401/33/272 395/26/272 393/29/271
-f 393/29/308 408/34/309 401/33/310
-f 411/33/311 410/32/311 405/31/312
-f 405/31/313 413/30/313 411/33/313
-f 410/21/260 412/22/260 402/17/260
-f 402/17/314 405/18/314 410/21/314
-f 408/34/315 411/33/316 413/30/317
-f 413/30/318 409/35/319 408/34/320
-f 404/36/321 399/37/322 398/30/322
-f 398/30/322 409/35/323 404/36/321
-f 404/36/324 409/35/325 413/30/326
-f 413/30/326 405/37/327 404/36/324
-f 397/15/328 385/23/329 381/38/330
-f 381/38/330 380/39/331 397/15/328
-f 377/15/332 376/39/332 381/38/333
-f 381/38/333 385/23/334 377/15/332
-f 414/40/335 415/41/335 416/42/335
-f 416/42/336 417/43/337 414/40/338
-f 418/44/339 419/45/340 420/46/341
-f 420/46/342 421/47/342 418/44/343
-f 421/47/344 420/46/344 415/45/345
-f 415/45/346 422/44/347 421/47/348
-f 422/44/349 415/45/349 414/48/349
-f 414/48/350 423/49/350 422/44/351
-f 416/50/352 424/51/353 425/52/354
-f 425/52/355 417/53/356 416/50/356
-f 426/40/357 427/54/357 428/55/357
-f 428/55/357 429/43/357 426/40/357
-f 430/49/358 431/56/358 427/57/358
-f 427/57/358 426/48/358 430/49/358
-f 429/53/359 428/58/359 432/59/360
-f 432/59/361 425/52/362 429/53/363
-f 433/54/364 414/40/364 417/43/364
-f 417/43/364 434/55/364 433/54/364
-f 423/49/365 414/48/365 433/57/365
-f 433/57/365 435/56/365 423/49/365
-f 417/53/366 425/52/367 432/59/368
-f 432/59/369 434/58/370 417/53/370
-f 419/41/371 426/40/371 429/43/372
-f 429/43/373 436/42/373 419/41/373
-f 418/44/358 430/49/358 426/48/358
-f 426/48/374 419/45/374 418/44/375
-f 436/50/376 429/53/377 425/52/378
-f 425/52/379 424/51/380 436/50/381
-f 436/60/382 424/61/383 420/62/384
-f 420/62/384 419/63/382 436/60/382
-f 416/60/385 415/63/385 420/62/386
-f 420/62/386 424/61/387 416/60/385
-f 437/64/388 438/65/388 439/66/389
-f 439/66/389 440/67/389 437/64/388
-f 441/68/390 437/69/390 440/70/390
-f 440/70/390 442/71/390 441/68/390
-f 443/64/391 441/65/391 442/66/391
-f 442/66/391 444/67/391 443/64/391
-f 443/68/392 444/71/393 439/70/393
-f 439/70/393 438/69/392 443/68/392
-f 445/72/394 440/67/389 439/66/389
-f 439/66/389 446/73/394 445/72/394
-f 442/71/395 440/70/395 445/74/396
-f 445/74/397 447/75/397 442/71/398
-f 448/72/399 444/67/400 442/66/400
-f 442/66/400 447/73/399 448/72/399
-f 446/74/401 439/70/393 444/71/393
-f 444/71/393 448/75/402 446/74/401
-f 449/76/403 450/77/403 451/78/403
-f 451/78/403 452/79/403 449/76/403
-f 452/79/8 451/78/8 453/80/8
-f 453/80/8 454/81/8 452/79/8
-f 455/78/1 456/79/1 457/81/1
-f 457/81/1 458/80/1 455/78/1
-f 449/76/187 459/82/187 457/83/187
-f 457/83/187 456/79/187 449/76/187
-f 456/79/403 455/78/403 450/77/403
-f 450/77/403 449/76/403 456/79/403
-f 452/79/187 454/83/187 459/82/187
-f 459/82/187 449/76/187 452/79/187
-f 460/84/187 461/85/187 462/86/187
-f 462/86/187 463/87/187 460/84/187
-f 464/88/1 465/89/1 466/90/1
-f 466/90/1 467/91/1 464/88/1
-f 468/92/404 469/93/405 470/94/405
-f 470/94/405 471/95/404 468/92/404
-f 472/89/8 473/88/8 474/91/8
-f 474/91/8 475/90/8 472/89/8
-f 476/96/403 477/97/406 478/98/406
-f 478/98/406 479/99/403 476/96/403
-f 480/100/187 481/101/187 482/102/187
-f 471/103/187 470/104/187 483/105/187
-f 483/105/187 484/106/187 471/103/187
-f 485/102/187 486/101/187 487/100/187
-f 488/107/187 487/100/187 486/101/187
-f 486/101/187 489/108/187 488/107/187
-f 490/109/187 463/87/187 462/86/187
-f 462/86/187 491/110/187 490/109/187
-f 492/111/407 468/92/404 471/95/404
-f 471/95/404 493/112/407 492/111/407
-f 494/97/408 476/96/403 479/99/403
-f 479/99/403 495/98/409 494/97/408
-f 471/103/187 484/106/187 496/105/187
-f 496/105/187 493/104/187 471/103/187
-f 488/107/187 489/108/187 481/101/187
-f 481/101/187 480/100/187 488/107/187
-f 497/113/8 461/114/8 460/115/8
-f 460/115/8 483/116/8 497/113/8
-f 483/116/410 460/115/410 463/117/411
-f 463/117/411 484/118/411 483/116/410
-f 484/118/412 463/117/412 490/119/413
-f 490/119/413 496/120/413 484/118/412
-f 496/120/1 490/119/1 491/121/1
-f 491/121/1 498/122/1 496/120/1
-f 498/123/414 491/124/414 462/125/415
-f 462/125/415 499/126/415 498/123/414
-f 499/126/416 462/125/416 461/124/417
-f 461/124/417 497/123/417 499/126/416
-f 493/104/187 496/105/187 498/127/187
-f 498/127/187 500/128/187 493/104/187
-f 500/129/8 501/130/8 492/111/8
-f 492/111/8 493/112/8 500/129/8
-f 469/93/1 502/131/1 503/132/1
-f 503/132/1 470/94/1 469/93/1
-f 503/128/187 497/127/187 483/105/187
-f 483/105/187 470/104/187 503/128/187
-f 466/90/1 504/89/1 505/88/1
-f 505/88/1 467/91/1 466/90/1
-f 503/133/418 482/134/418 481/135/419
-f 481/135/419 497/123/419 503/133/418
-f 497/123/417 481/135/417 489/136/416
-f 489/136/416 499/126/416 497/123/417
-f 499/126/415 489/136/415 486/135/414
-f 486/135/414 498/123/414 499/126/415
-f 498/123/420 486/135/420 485/134/420
-f 485/134/420 500/133/420 498/123/420
-f 474/91/8 506/88/8 507/89/8
-f 507/89/8 475/90/8 474/91/8
-f 478/98/406 487/137/406 488/138/421
-f 488/138/421 479/99/421 478/98/406
-f 479/99/422 488/138/422 480/137/409
-f 480/137/409 495/98/409 479/99/422
-f 502/139/404 464/140/404 467/141/404
-f 467/141/404 503/133/404 502/139/404
-f 503/133/404 467/141/404 505/142/404
-f 505/142/404 482/134/404 503/133/404
-f 482/102/187 505/143/187 504/144/187
-f 504/144/187 480/100/187 482/102/187
-f 480/137/403 504/145/403 466/146/403
-f 466/146/403 495/98/403 480/137/403
-f 495/98/403 466/146/403 465/147/403
-f 465/147/403 494/97/403 495/98/403
-f 477/97/403 472/147/403 475/146/403
-f 475/146/403 478/98/403 477/97/403
-f 478/98/403 475/146/403 507/145/403
-f 507/145/403 487/137/403 478/98/403
-f 487/100/187 507/144/187 506/143/187
-f 506/143/187 485/102/187 487/100/187
-f 485/134/404 506/142/404 474/141/404
-f 474/141/404 500/133/404 485/134/404
-f 500/133/404 474/141/404 473/140/404
-f 473/140/404 501/139/404 500/133/404
-f 508/148/187 509/149/187 510/150/187
-f 510/150/187 511/151/187 508/148/187
-f 512/152/423 513/153/403 514/154/403
-f 514/154/403 515/155/423 512/152/423
-f 516/156/8 517/157/8 513/158/8
-f 513/158/8 512/159/8 516/156/8
-f 518/155/424 519/154/404 517/153/404
-f 517/153/404 516/152/424 518/155/424
-f 510/160/425 509/161/425 514/154/403
-f 514/154/403 513/153/403 510/160/425
-f 511/162/8 510/163/8 513/158/8
-f 513/158/8 517/157/8 511/162/8
-f 508/161/426 511/160/426 517/153/404
-f 517/153/404 519/154/404 508/161/426
-f 520/148/187 521/151/187 522/150/187
-f 522/150/187 523/149/187 520/148/187
-f 524/152/423 525/155/423 526/154/403
-f 526/154/403 527/153/403 524/152/423
-f 528/156/1 524/159/1 527/158/1
-f 527/158/1 529/157/1 528/156/1
-f 530/155/424 528/152/424 529/153/404
-f 529/153/404 531/154/404 530/155/424
-f 522/160/425 527/153/403 526/154/403
-f 526/154/403 523/161/425 522/160/425
-f 521/162/1 529/157/1 527/158/1
-f 527/158/1 522/163/1 521/162/1
-f 520/161/426 531/154/404 529/153/404
-f 529/153/404 521/160/426 520/161/426
-f 532/164/427 533/165/428 534/166/428
-f 534/166/428 535/167/427 532/164/427
-f 536/168/429 537/169/430 533/170/430
-f 533/170/430 532/171/431 536/168/432
-f 538/164/433 539/165/434 537/166/434
-f 537/166/434 536/167/433 538/164/433
-f 535/168/435 534/169/436 539/170/436
-f 539/170/436 538/171/435 535/168/435
-f 540/172/437 541/173/438 542/174/438
-f 542/174/438 543/175/437 540/172/437
-f 543/176/439 542/177/440 544/178/440
-f 544/178/440 545/179/439 543/176/439
-f 545/172/195 544/173/195 546/174/195
-f 546/174/195 547/175/195 545/172/195
-f 547/179/441 546/178/442 541/177/442
-f 541/177/442 540/176/441 547/179/441
-f 548/180/443 549/181/443 550/182/444
-f 550/182/444 551/183/444 548/180/443
-f 549/184/445 552/185/445 553/186/446
-f 553/186/446 550/187/445 549/184/445
-f 552/180/447 554/181/447 555/182/448
-f 555/182/448 553/183/448 552/180/447
-f 554/184/449 548/185/449 551/186/450
-f 551/186/450 555/187/450 554/184/449
-f 533/165/451 551/183/452 550/182/452
-f 550/182/452 534/166/451 533/165/451
-f 534/169/453 550/187/453 553/186/453
-f 553/186/453 539/170/453 534/169/453
-f 539/165/454 553/183/455 555/182/455
-f 555/182/455 537/166/454 539/165/454
-f 537/169/456 555/187/457 551/186/457
-f 551/186/457 533/170/457 537/169/456
-f 549/188/458 548/189/458 542/174/438
-f 542/174/438 541/173/438 549/188/458
-f 548/190/459 554/191/459 544/178/440
-f 544/178/440 542/177/440 548/190/459
-f 554/188/460 552/189/460 546/174/195
-f 546/174/195 544/173/195 554/188/460
-f 552/191/461 549/190/461 541/177/442
-f 541/177/442 546/178/442 552/191/461
-f 556/164/427 557/165/428 558/166/428
-f 558/166/428 559/167/427 556/164/427
-f 560/168/430 561/169/462 557/170/462
-f 557/170/462 556/171/430 560/168/430
-f 562/164/433 563/165/434 561/166/434
-f 561/166/434 560/167/433 562/164/433
-f 559/168/463 558/169/435 563/170/435
-f 563/170/435 562/171/463 559/168/463
-f 564/172/437 565/173/438 566/174/438
-f 566/174/438 567/175/437 564/172/437
-f 567/176/439 566/177/440 568/178/440
-f 568/178/440 569/179/439 567/176/439
-f 569/175/195 568/174/195 570/173/195
-f 570/173/195 571/172/195 569/175/195
-f 571/179/464 570/178/442 565/177/442
-f 565/177/442 564/176/464 571/179/464
-f 572/180/443 573/181/443 574/182/444
-f 574/182/444 575/183/444 572/180/443
-f 573/184/446 576/185/465 577/186/465
-f 577/186/465 574/187/465 573/184/446
-f 576/180/448 578/181/448 579/182/447
-f 579/182/447 577/183/447 576/180/448
-f 578/184/449 572/185/449 575/186/449
-f 575/186/449 579/187/449 578/184/449
-f 557/165/451 575/183/452 574/182/452
-f 574/182/452 558/166/451 557/165/451
-f 558/169/466 574/187/467 577/186/466
-f 577/186/466 563/170/467 558/169/466
-f 563/165/455 577/183/454 579/182/454
-f 579/182/454 561/166/455 563/165/455
-f 561/169/468 579/187/468 575/186/468
-f 575/186/468 557/170/468 561/169/468
-f 573/188/469 572/189/469 566/174/438
-f 566/174/438 565/173/438 573/188/469
-f 572/190/459 578/191/459 568/178/440
-f 568/178/440 566/177/440 572/190/459
-f 578/189/460 576/188/460 570/173/195
-f 570/173/195 568/174/195 578/189/460
-f 576/191/470 573/190/470 565/177/442
-f 565/177/442 570/178/442 576/191/470
-f 580/192/8 581/193/8 582/194/8
-f 582/194/8 583/195/8 580/192/8
-f 584/196/195 585/197/195 582/198/195
-f 582/198/195 581/199/195 584/196/195
-f 586/200/1 587/201/1 588/202/1
-f 588/202/1 589/203/1 586/200/1
-f 590/204/187 591/205/187 588/206/187
-f 588/206/187 587/207/187 590/204/187
-f 586/208/195 589/209/195 585/210/195
-f 585/210/195 584/211/195 586/208/195
-f 580/212/187 583/213/187 591/214/187
-f 591/214/187 590/215/187 580/212/187
-f 581/216/403 580/217/403 592/218/403
-f 592/218/403 593/219/403 581/216/403
-f 580/220/403 590/221/403 594/222/403
-f 594/222/403 592/223/403 580/220/403
-f 590/221/403 587/224/403 595/225/403
-f 595/225/403 594/222/403 590/221/403
-f 587/217/403 586/216/403 596/219/403
-f 596/219/403 595/218/403 587/217/403
-f 586/224/403 584/221/403 597/222/403
-f 597/222/403 596/225/403 586/224/403
-f 584/221/403 581/220/403 593/223/403
-f 593/223/403 597/222/403 584/221/403
-f 593/219/8 592/218/8 598/226/8
-f 598/226/8 599/227/8 593/219/8
-f 592/223/187 594/222/187 600/228/187
-f 600/228/187 598/229/187 592/223/187
-f 594/222/187 595/225/187 601/230/187
-f 601/230/187 600/228/187 594/222/187
-f 595/218/1 596/219/1 602/227/1
-f 602/227/1 601/226/1 595/218/1
-f 596/225/195 597/222/195 603/228/195
-f 603/228/195 602/230/195 596/225/195
-f 597/222/195 593/223/195 599/229/195
-f 599/229/195 603/228/195 597/222/195
-f 604/151/1 605/150/1 606/149/1
-f 606/149/1 607/148/1 604/151/1
-f 608/151/8 609/148/8 610/149/8
-f 610/149/8 611/150/8 608/151/8
-f 607/231/403 606/232/403 610/233/403
-f 610/233/403 609/234/403 607/231/403
-f 606/232/195 605/231/195 611/234/195
-f 611/234/195 610/233/195 606/232/195
-f 605/234/404 604/233/404 608/232/404
-f 608/232/404 611/231/404 605/234/404
-f 612/151/187 613/148/187 614/149/187
-f 614/149/187 615/150/187 612/151/187
-f 616/151/195 617/150/195 618/149/195
-f 618/149/195 619/148/195 616/151/195
-f 613/235/403 619/236/403 618/237/403
-f 618/237/403 614/238/403 613/235/403
-f 614/238/8 618/237/8 617/236/8
-f 617/236/8 615/235/8 614/238/8
-f 615/238/404 617/237/404 616/236/404
-f 616/236/404 612/235/404 615/238/404
-f 620/151/187 621/150/187 622/149/187
-f 622/149/187 623/148/187 620/151/187
-f 624/151/195 625/148/195 626/149/195
-f 626/149/195 627/150/195 624/151/195
-f 623/235/403 622/238/403 626/237/403
-f 626/237/403 625/236/403 623/235/403
-f 622/238/1 621/235/1 627/236/1
-f 627/236/1 626/237/1 622/238/1
-f 621/238/404 620/235/404 624/236/404
-f 624/236/404 627/237/404 621/238/404
-f 628/239/471 629/240/471 630/241/471
-f 630/241/471 631/242/471 628/239/471
-f 632/242/472 633/239/472 634/240/473
-f 634/240/473 635/241/473 632/242/472
-f 631/243/195 630/244/195 634/245/195
-f 634/245/195 633/246/195 631/243/195
-f 630/244/474 629/243/474 635/246/474
-f 635/246/474 634/245/474 630/244/474
-f 629/244/187 628/243/187 632/246/187
-f 632/246/187 635/245/187 629/244/187
-f 636/247/404 637/248/404 638/249/404
-f 638/249/404 639/250/404 636/247/404
-f 636/251/195 639/252/195 640/253/195
-f 640/253/195 641/254/195 636/251/195
-f 637/252/1 636/251/1 641/254/1
-f 641/254/1 642/253/1 637/252/1
-f 638/252/187 637/251/187 642/254/187
-f 642/254/187 643/253/187 638/252/187
-f 644/255/475 645/256/475 646/257/476
-f 646/257/476 647/258/476 644/255/475
-f 648/259/477 644/260/477 647/261/478
-f 647/261/478 649/262/478 648/259/477
-f 650/260/479 648/259/479 649/262/479
-f 649/262/479 651/261/479 650/260/479
-f 650/259/480 651/262/481 646/261/482
-f 646/261/482 645/260/480 650/259/480
-f 652/263/483 647/258/476 646/257/476
-f 646/257/476 653/264/483 652/263/483
-f 649/262/484 647/261/484 652/265/484
-f 652/265/485 654/266/485 649/262/485
-f 655/265/486 651/261/487 649/262/486
-f 649/262/486 654/266/486 655/265/486
-f 653/265/488 646/261/482 651/262/481
-f 651/262/481 655/266/489 653/265/488
-f 656/255/490 657/258/491 658/257/491
-f 658/257/491 659/256/490 656/255/490
-f 660/259/477 661/262/478 657/261/478
-f 657/261/478 656/260/477 660/259/477
-f 662/260/492 663/261/492 661/262/492
-f 661/262/492 660/259/492 662/260/492
-f 662/259/480 659/260/480 658/261/482
-f 658/261/482 663/262/493 662/259/480
-f 664/263/494 665/264/494 658/257/491
-f 658/257/491 657/258/491 664/263/494
-f 661/262/495 666/266/495 664/265/495
-f 664/265/484 657/261/484 661/262/484
-f 667/265/496 666/266/496 661/262/496
-f 661/262/496 663/261/497 667/265/496
-f 665/265/498 667/266/499 663/262/493
-f 663/262/493 658/261/482 665/265/498
-f 668/267/404 669/268/404 670/269/404
-f 670/269/404 671/270/404 668/267/404
-f 672/271/195 673/272/195 670/273/195
-f 670/273/195 669/274/195 672/271/195
-f 674/275/1 675/276/1 676/277/1
-f 676/277/1 677/278/1 674/275/1
-f 678/272/187 679/271/187 668/274/187
-f 668/274/187 671/273/187 678/272/187
-f 678/279/1 671/280/1 680/277/1
-f 680/277/1 681/276/1 678/279/1
-f 671/280/1 670/281/1 682/278/1
-f 682/278/1 680/277/1 671/280/1
-f 670/281/1 673/282/1 683/275/1
-f 683/275/1 682/278/1 670/281/1
-f 681/283/195 680/284/195 676/285/195
-f 676/285/195 675/286/195 681/283/195
-f 680/287/403 682/288/403 677/289/403
-f 677/289/403 676/290/403 680/287/403
-f 682/284/187 683/283/187 674/286/187
-f 674/286/187 677/285/187 682/284/187
-f 684/291/500 685/292/501 686/293/501
-f 686/293/501 687/294/500 684/291/500
-f 688/293/502 689/292/502 690/291/503
-f 690/291/503 691/294/503 688/293/502
-f 687/295/8 686/296/8 688/297/8
-f 688/297/8 691/298/8 687/295/8
-f 692/299/504 685/296/505 689/297/506
-f 689/297/506 693/300/1 692/299/504
-f 692/301/501 694/302/501 686/293/501
-f 686/293/501 685/292/501 692/301/501
-f 695/302/507 693/301/507 689/292/502
-f 689/292/502 688/293/502 695/302/507
-f 694/299/8 695/300/8 688/297/8
-f 688/297/8 686/296/8 694/299/8
-f 684/295/508 690/298/1 689/297/506
-f 689/297/506 685/296/505 684/295/508
-f 696/303/509 697/304/509 698/305/8
-f 698/305/8 699/306/8 696/303/509
-f 700/307/510 696/308/510 699/309/187
-f 699/309/187 701/310/187 700/307/510
-f 702/304/511 700/303/511 701/306/1
-f 701/306/1 703/305/1 702/304/511
-f 697/308/512 702/307/512 703/310/195
-f 703/310/195 698/309/195 697/308/512
-f 704/303/513 699/306/8 698/305/8
-f 698/305/8 705/304/513 704/303/513
-f 706/307/482 701/310/187 699/309/187
-f 699/309/187 704/308/482 706/307/482
-f 707/304/514 703/305/1 701/306/1
-f 701/306/1 706/303/514 707/304/514
-f 705/308/484 698/309/195 703/310/195
-f 703/310/195 707/307/484 705/308/484
-f 708/303/509 709/304/509 710/305/8
-f 710/305/8 711/306/8 708/303/509
-f 712/307/510 708/308/510 711/309/187
-f 711/309/187 713/310/187 712/307/510
-f 714/304/511 712/303/511 713/306/1
-f 713/306/1 715/305/1 714/304/511
-f 709/308/512 714/307/512 715/310/195
-f 715/310/195 710/309/195 709/308/512
-f 716/303/513 711/306/8 710/305/8
-f 710/305/8 717/304/513 716/303/513
-f 718/307/482 713/310/187 711/309/187
-f 711/309/187 716/308/482 718/307/482
-f 719/304/514 715/305/1 713/306/1
-f 713/306/1 718/303/514 719/304/514
-f 717/308/484 710/309/195 715/310/195
-f 715/310/195 719/307/484 717/308/484
-f 720/311/515 721/312/515 722/313/516
-f 722/313/516 723/314/517 720/311/515
-f 724/315/518 720/316/518 723/317/518
-f 723/317/518 725/318/518 724/315/518
-f 726/312/519 724/311/519 725/314/520
-f 725/314/520 727/313/520 726/312/519
-f 726/315/521 727/318/522 722/317/523
-f 722/317/523 721/316/521 726/315/521
-f 728/319/524 723/314/517 722/313/516
-f 722/313/516 729/320/524 728/319/524
-f 725/318/525 723/317/525 728/321/526
-f 728/321/527 730/322/527 725/318/528
-f 731/320/529 727/313/529 725/314/529
-f 725/314/529 730/319/529 731/320/529
-f 729/321/530 722/317/523 727/318/522
-f 727/318/522 731/322/531 729/321/530
-f 732/323/195 733/324/195 734/325/195
-f 734/325/195 735/326/195 732/323/195
-f 733/324/195 736/327/195 737/328/195
-f 737/328/195 734/325/195 733/324/195
-f 736/327/195 738/329/195 739/330/195
-f 739/330/195 737/328/195 736/327/195
-f 738/329/195 740/331/195 741/332/195
-f 741/332/195 739/330/195 738/329/195
-f 742/333/195 743/334/195 744/335/195
-f 744/335/195 745/336/195 742/333/195
-f 743/334/195 746/337/195 747/338/195
-f 747/338/195 744/335/195 743/334/195
-f 748/339/195 749/340/195 750/341/195
-f 750/341/195 751/342/195 748/339/195
-f 751/342/195 750/341/195 752/343/195
-f 752/343/195 753/344/195 751/342/195
-f 754/345/195 755/346/195 756/347/195
-f 756/347/195 757/348/195 754/345/195
-f 755/346/195 758/349/195 759/350/195
-f 759/350/195 756/347/195 755/346/195
-f 758/349/195 760/351/195 761/352/195
-f 761/352/195 759/350/195 758/349/195
-f 760/351/195 762/353/195 763/354/195
-f 763/354/195 761/352/195 760/351/195
-f 764/355/195 765/356/195 733/324/195
-f 733/324/195 732/323/195 764/355/195
-f 765/356/195 766/357/195 736/327/195
-f 736/327/195 733/324/195 765/356/195
-f 766/357/195 767/358/195 738/329/195
-f 738/329/195 736/327/195 766/357/195
-f 767/358/195 768/359/195 740/331/195
-f 740/331/195 738/329/195 767/358/195
-f 748/339/195 751/342/195 755/346/195
-f 755/346/195 754/345/195 748/339/195
-f 751/342/195 753/344/195 758/349/195
-f 758/349/195 755/346/195 751/342/195
-f 753/344/195 769/360/195 760/351/195
-f 760/351/195 758/349/195 753/344/195
-f 769/360/195 770/361/195 762/353/195
-f 762/353/195 760/351/195 769/360/195
-f 735/326/195 734/325/195 743/334/195
-f 743/334/195 742/333/195 735/326/195
-f 734/325/195 737/328/195 746/337/195
-f 746/337/195 743/334/195 734/325/195
-f 749/340/195 745/336/195 744/335/195
-f 744/335/195 750/341/195 749/340/195
-f 750/341/195 744/335/195 747/338/195
-f 747/338/195 752/343/195 750/341/195
-f 771/362/195 772/363/195 773/364/195
-f 773/364/195 774/365/195 771/362/195
-f 772/363/195 775/366/195 776/367/195
-f 776/367/195 773/364/195 772/363/195
-f 775/366/195 777/368/195 778/369/195
-f 778/369/195 776/367/195 775/366/195
-f 777/368/195 779/370/195 780/371/195
-f 780/371/195 778/369/195 777/368/195
-f 774/365/195 773/364/195 781/372/195
-f 781/372/195 782/373/195 774/365/195
-f 773/364/195 776/367/195 783/374/195
-f 783/374/195 781/372/195 773/364/195
-f 776/367/195 778/369/195 784/375/195
-f 784/375/195 783/374/195 776/367/195
-f 778/369/195 780/371/195 785/376/195
-f 785/376/195 784/375/195 778/369/195
-f 782/373/195 781/372/195 786/377/195
-f 786/377/195 787/378/195 782/373/195
-f 781/372/195 783/374/195 788/379/195
-f 788/379/195 786/377/195 781/372/195
-f 783/374/195 784/375/195 789/380/195
-f 789/380/195 788/379/195 783/374/195
-f 784/375/195 785/376/195 790/381/195
-f 790/381/195 789/380/195 784/375/195
-f 787/378/195 786/377/195 791/382/195
-f 791/382/195 792/383/195 787/378/195
-f 786/377/195 788/379/195 793/384/195
-f 793/384/195 791/382/195 786/377/195
-f 788/379/195 789/380/195 794/385/195
-f 794/385/195 793/384/195 788/379/195
-f 789/380/195 790/381/195 795/386/195
-f 795/386/195 794/385/195 789/380/195
-f 796/387/532 797/388/533 798/389/34
-f 798/389/34 799/390/534 796/387/532
-f 800/391/535 801/392/536 797/388/533
-f 797/388/533 796/387/532 800/391/535
-f 799/390/534 798/389/34 801/393/536
-f 801/393/536 800/394/535 799/390/534
-f 802/395/1 803/396/1 804/397/1
-f 804/387/537 803/390/534 798/389/34
-f 798/389/34 797/388/533 804/387/537
-f 802/391/538 804/387/537 797/388/533
-f 797/388/533 801/392/536 802/391/538
-f 803/390/534 802/394/538 801/393/536
-f 801/393/536 798/389/34 803/390/534
-f 805/398/1 806/399/1 807/400/1
-f 807/400/1 808/401/1 805/398/1
-f 809/402/1 810/403/1 811/399/1
-f 811/399/1 812/398/1 809/402/1
-f 810/403/1 813/404/1 814/400/1
-f 814/400/1 811/399/1 810/403/1
-f 813/404/1 815/405/1 816/401/1
-f 816/401/1 814/400/1 813/404/1
-f 815/405/1 809/402/1 812/398/1
-f 812/398/1 816/401/1 815/405/1
-f 817/406/403 810/407/403 809/408/403
-f 809/408/403 818/409/403 817/406/403
-f 819/410/187 813/411/187 810/412/187
-f 810/412/187 817/413/187 819/410/187
-f 819/406/404 820/409/404 815/408/404
-f 815/408/404 813/407/404 819/406/404
-f 818/413/195 809/412/195 815/411/195
-f 815/411/195 820/410/195 818/413/195
-f 806/414/404 805/415/404 812/416/404
-f 812/416/404 811/417/404 806/414/404
-f 805/418/187 808/419/187 816/420/187
-f 816/420/187 812/421/187 805/418/187
-f 808/415/403 807/414/403 814/417/403
-f 814/417/403 816/416/403 808/415/403
-f 807/419/195 806/418/195 811/421/195
-f 811/421/195 814/420/195 807/419/195
-f 821/422/403 822/423/403 823/424/403
-f 823/424/403 824/425/403 821/422/403
-f 825/422/404 826/425/404 827/424/404
-f 827/424/404 828/423/404 825/422/404
-f 824/426/539 823/427/540 827/428/540
-f 827/428/540 826/429/539 824/426/539
-f 823/430/541 822/431/542 828/432/542
-f 828/432/542 827/433/541 823/430/541
-f 822/427/543 821/426/544 825/429/544
-f 825/429/544 828/428/543 822/427/543
-f 829/422/403 830/423/403 831/424/403
-f 831/424/403 832/425/403 829/422/403
-f 833/422/404 834/425/404 835/424/404
-f 835/424/404 836/423/404 833/422/404
-f 832/426/545 831/427/545 835/428/545
-f 835/428/545 834/429/545 832/426/545
-f 831/430/546 830/431/546 836/432/546
-f 836/432/546 835/433/546 831/430/546
-f 830/427/547 829/426/548 833/429/548
-f 833/429/548 836/428/547 830/427/547
-f 837/255/475 838/258/476 839/257/476
-f 839/257/476 840/256/475 837/255/475
-f 841/259/549 842/262/482 838/261/482
-f 838/261/482 837/260/549 841/259/549
-f 843/260/479 844/261/479 842/262/479
-f 842/262/479 841/259/479 843/260/479
-f 843/259/550 840/260/550 839/261/478
-f 839/261/478 844/262/478 843/259/550
-f 845/263/483 846/264/483 839/257/476
-f 839/257/476 838/258/476 845/263/483
-f 842/262/551 847/266/551 845/265/551
-f 845/265/552 838/261/552 842/262/552
-f 848/265/486 847/266/486 842/262/486
-f 842/262/486 844/261/487 848/265/486
-f 846/265/553 848/266/554 844/262/478
-f 844/262/478 839/261/478 846/265/553
-f 849/255/490 850/256/490 851/257/491
-f 851/257/491 852/258/491 849/255/490
-f 853/259/549 849/260/549 852/261/482
-f 852/261/482 854/262/482 853/259/549
-f 855/260/492 853/259/492 854/262/492
-f 854/262/492 856/261/492 855/260/492
-f 855/259/550 856/262/478 851/261/478
-f 851/261/478 850/260/550 855/259/550
-f 857/263/494 852/258/491 851/257/491
-f 851/257/491 858/264/494 857/263/494
-f 854/262/552 852/261/552 857/265/552
-f 857/265/555 859/266/555 854/262/555
-f 860/265/496 856/261/497 854/262/496
-f 854/262/496 859/266/496 860/265/496
-f 858/265/556 851/261/478 856/262/478
-f 856/262/478 860/266/556 858/265/556
-f 861/434/403 862/435/403 863/436/403
-f 863/436/403 864/437/403 861/434/403
-f 863/438/8 865/439/8 866/440/8
-f 866/440/8 864/441/8 863/438/8
-f 867/442/195 868/443/195 869/444/195
-f 869/444/195 870/445/195 867/442/195
-f 862/446/1 871/447/1 869/448/1
-f 869/448/1 868/449/1 862/446/1
-f 861/443/187 864/442/187 866/445/187
-f 866/445/187 872/444/187 861/443/187
-f 868/434/403 867/437/403 863/436/403
-f 863/436/403 862/435/403 868/434/403
-f 867/450/8 870/451/8 865/452/8
-f 865/452/8 863/453/8 867/450/8
-f 861/454/1 872/455/1 871/456/1
-f 871/456/1 862/457/1 861/454/1
-f 873/148/1 874/149/1 875/150/1
-f 875/150/1 876/151/1 873/148/1
-f 877/458/557 878/459/557 874/460/557
-f 874/460/557 873/461/557 877/458/557
-f 878/462/558 879/463/558 875/464/559
-f 875/464/559 874/465/559 878/462/558
-f 879/459/560 880/458/560 876/461/560
-f 876/461/560 875/460/560 879/459/560
-f 880/463/561 877/462/561 873/465/562
-f 873/465/562 876/464/562 880/463/561
-f 881/466/563 882/467/564 883/468/565
-f 883/468/565 884/469/566 881/466/563
-f 885/469/567 886/468/568 882/467/564
-f 882/467/564 881/466/563 885/469/567
-f 887/470/8 888/471/8 881/472/8
-f 881/472/8 884/473/8 887/470/8
-f 888/471/8 889/470/8 885/473/8
-f 885/473/8 881/472/8 888/471/8
-f 890/474/569 886/475/569 885/476/569
-f 885/476/569 889/477/569 890/474/569
-f 891/470/1 892/471/1 893/472/1
-f 893/472/1 894/473/1 891/470/1
-f 892/471/1 895/470/1 896/473/1
-f 896/473/1 893/472/1 892/471/1
-f 897/474/570 883/475/570 896/476/571
-f 896/476/571 895/477/571 897/474/570
-f 891/478/572 890/479/573 898/480/574
-f 898/480/574 892/481/575 891/478/572
-f 892/481/576 898/480/577 897/479/578
-f 897/479/578 895/478/579 892/481/576
-f 893/482/580 896/483/581 883/468/565
-f 883/468/565 882/467/564 893/482/580
-f 894/483/582 893/482/580 882/467/564
-f 882/467/564 886/468/568 894/483/582
-f 891/477/583 894/476/583 886/475/584
-f 886/475/584 890/474/584 891/477/583
-f 887/477/585 884/476/585 883/475/585
-f 883/475/585 897/474/585 887/477/585
-f 889/478/586 888/481/587 898/480/574
-f 898/480/574 890/479/573 889/478/586
-f 888/481/588 887/478/589 897/479/578
-f 897/479/578 898/480/577 888/481/588
-f 899/484/187 900/485/187 901/486/187
-f 901/486/187 902/487/187 899/484/187
-f 903/488/590 902/489/590 901/486/590
-f 901/486/590 904/490/590 903/488/590
-f 900/485/591 905/491/592 904/490/593
-f 904/490/593 901/486/594 900/485/591
-f 899/492/595 906/493/595 905/491/595
-f 905/491/595 900/485/595 899/492/595
-f 903/488/590 904/490/590 907/494/590
-f 907/494/590 908/495/590 903/488/590
-f 909/496/596 907/494/597 904/490/598
-f 904/490/598 905/491/596 909/496/596
-f 910/497/595 909/496/595 905/491/595
-f 905/491/595 906/493/595 910/497/595
-f 911/484/195 912/487/195 913/486/195
-f 913/486/195 914/485/195 911/484/195
-f 913/486/590 912/489/590 915/488/590
-f 915/488/590 916/490/590 913/486/590
-f 916/490/599 917/491/600 914/485/600
-f 914/485/600 913/486/599 916/490/599
-f 917/491/595 918/493/595 911/492/595
-f 911/492/595 914/485/595 917/491/595
-f 915/488/590 908/495/590 907/494/590
-f 907/494/590 916/490/590 915/488/590
-f 909/496/601 917/491/601 916/490/602
-f 916/490/602 907/494/603 909/496/601
-f 910/497/595 918/493/595 917/491/595
-f 917/491/595 909/496/595 910/497/595
-f 919/484/187 920/485/187 921/486/187
-f 921/486/187 922/487/187 919/484/187
-f 923/488/604 922/489/604 921/486/604
-f 921/486/604 924/490/604 923/488/604
-f 920/485/188 925/491/188 924/490/188
-f 924/490/188 921/486/188 920/485/188
-f 919/492/605 926/493/605 925/491/605
-f 925/491/605 920/485/605 919/492/605
-f 923/488/604 924/490/604 927/494/604
-f 927/494/604 928/495/604 923/488/604
-f 929/496/193 927/494/193 924/490/193
-f 924/490/193 925/491/193 929/496/193
-f 930/497/605 929/496/605 925/491/605
-f 925/491/605 926/493/605 930/497/605
-f 931/484/195 932/487/195 933/486/195
-f 933/486/195 934/485/195 931/484/195
-f 933/486/604 932/489/604 935/488/604
-f 935/488/604 936/490/604 933/486/604
-f 936/490/197 937/491/197 934/485/197
-f 934/485/197 933/486/197 936/490/197
-f 937/491/605 938/493/605 931/492/605
-f 931/492/605 934/485/605 937/491/605
-f 935/488/604 928/495/604 927/494/604
-f 927/494/604 936/490/604 935/488/604
-f 929/496/606 937/491/606 936/490/606
-f 936/490/606 927/494/606 929/496/606
-f 930/497/605 938/493/605 937/491/605
-f 937/491/605 929/496/605 930/497/605
-f 939/484/1 940/485/1 941/486/1
-f 941/486/1 942/487/1 939/484/1
-f 943/488/46 942/489/46 941/486/46
-f 941/486/46 944/490/46 943/488/46
-f 940/485/607 945/491/140 944/490/140
-f 944/490/140 941/486/44 940/485/607
-f 939/492/608 946/493/608 945/491/608
-f 945/491/608 940/485/608 939/492/608
-f 943/488/46 944/490/46 947/494/48
-f 947/494/46 948/495/46 943/488/46
-f 949/496/47 947/494/47 944/490/47
-f 944/490/47 945/491/47 949/496/609
-f 950/497/608 949/496/608 945/491/608
-f 945/491/608 946/493/608 950/497/608
-f 951/484/8 952/487/8 953/486/8
-f 953/486/8 954/485/8 951/484/8
-f 953/486/46 952/489/46 955/488/46
-f 955/488/46 956/490/46 953/486/46
-f 956/490/149 957/491/149 954/485/147
-f 954/485/147 953/486/49 956/490/149
-f 957/491/608 958/493/608 951/492/608
-f 951/492/608 954/485/608 957/491/608
-f 955/488/46 948/495/46 947/494/46
-f 947/494/46 956/490/46 955/488/46
-f 949/496/610 957/491/610 956/490/610
-f 956/490/52 947/494/52 949/496/52
-f 950/497/611 958/493/611 957/491/611
-f 957/491/608 949/496/608 950/497/608
-f 959/484/1 960/485/1 961/486/1
-f 961/486/1 962/487/1 959/484/1
-f 963/488/46 962/489/46 961/486/46
-f 961/486/46 964/490/46 963/488/46
-f 960/485/607 965/491/140 964/490/140
-f 964/490/140 961/486/44 960/485/607
-f 959/492/608 966/493/608 965/491/608
-f 965/491/608 960/485/608 959/492/608
-f 963/488/46 964/490/46 967/494/48
-f 967/494/46 968/495/46 963/488/46
-f 969/496/47 967/494/47 964/490/47
-f 964/490/47 965/491/47 969/496/609
-f 970/497/608 969/496/608 965/491/608
-f 965/491/608 966/493/608 970/497/608
-f 971/484/8 972/487/8 973/486/8
-f 973/486/8 974/485/8 971/484/8
-f 973/486/46 972/489/46 975/488/46
-f 975/488/46 976/490/46 973/486/46
-f 976/490/149 977/491/149 974/485/612
-f 974/485/612 973/486/49 976/490/149
-f 977/491/608 978/493/608 971/492/608
-f 971/492/608 974/485/608 977/491/608
-f 975/488/46 968/495/46 967/494/46
-f 967/494/46 976/490/46 975/488/46
-f 969/496/610 977/491/610 976/490/610
-f 976/490/52 967/494/52 969/496/52
-f 970/497/611 978/493/611 977/491/611
-f 977/491/608 969/496/608 970/497/608
-f 979/148/187 980/149/187 981/150/187
-f 981/150/187 982/151/187 979/148/187
-f 983/458/613 984/459/613 980/460/614
-f 980/460/614 979/461/614 983/458/613
-f 984/462/615 985/463/615 981/464/616
-f 981/464/616 980/465/616 984/462/615
-f 985/459/617 986/458/617 982/461/618
-f 982/461/618 981/460/618 985/459/617
-f 986/463/619 983/462/619 979/465/620
-f 979/465/620 982/464/620 986/463/619
-f 987/484/1 988/485/1 989/486/1
-f 989/486/1 990/487/1 987/484/1
-f 991/488/143 990/489/143 989/486/143
-f 989/486/143 992/490/621 991/488/143
-f 988/485/45 993/491/622 992/490/623
-f 992/490/623 989/486/45 988/485/45
-f 987/492/624 994/493/624 993/491/624
-f 993/491/624 988/485/624 987/492/624
-f 991/488/143 992/490/621 995/494/146
-f 995/494/143 996/495/143 991/488/143
-f 997/496/47 995/494/47 992/490/47
-f 992/490/47 993/491/47 997/496/47
-f 998/497/624 997/496/624 993/491/624
-f 993/491/624 994/493/624 998/497/624
-f 999/484/8 1000/487/8 1001/486/8
-f 1001/486/8 1002/485/8 999/484/8
-f 1001/486/143 1000/489/143 1003/488/143
-f 1003/488/143 1004/490/621 1001/486/143
-f 1004/490/625 1005/491/626 1002/485/612
-f 1002/485/612 1001/486/612 1004/490/625
-f 1005/491/624 1006/493/624 999/492/624
-f 999/492/624 1002/485/624 1005/491/624
-f 1003/488/143 996/495/143 995/494/143
-f 995/494/143 1004/490/621 1003/488/143
-f 997/496/52 1005/491/52 1004/490/627
-f 1004/490/627 995/494/52 997/496/52
-f 998/497/628 1006/493/628 1005/491/628
-f 1005/491/624 997/496/624 998/497/624
-f 1007/148/187 1008/149/187 1009/150/187
-f 1009/150/187 1010/151/187 1007/148/187
-f 1011/458/629 1012/459/629 1008/460/614
-f 1008/460/614 1007/461/614 1011/458/629
-f 1012/462/615 1013/463/615 1009/464/615
-f 1009/464/615 1008/465/615 1012/462/615
-f 1013/459/630 1014/458/630 1010/461/618
-f 1010/461/618 1009/460/618 1013/459/630
-f 1014/463/631 1011/462/631 1007/465/620
-f 1007/465/620 1010/464/620 1014/463/631
-f 1015/484/1 1016/487/1 1017/486/1
-f 1017/486/1 1018/485/1 1015/484/1
-f 1019/488/632 1020/490/632 1017/486/632
-f 1017/486/632 1016/489/632 1019/488/632
-f 1018/485/80 1017/486/633 1020/490/79
-f 1020/490/79 1021/491/634 1018/485/80
-f 1015/492/179 1018/485/179 1021/491/179
-f 1021/491/179 1022/493/179 1015/492/179
-f 1019/488/632 1023/495/632 1024/494/632
-f 1024/494/635 1020/490/632 1019/488/632
-f 1025/496/84 1021/491/636 1020/490/636
-f 1020/490/85 1024/494/85 1025/496/85
-f 1026/497/179 1022/493/179 1021/491/179
-f 1021/491/179 1025/496/179 1026/497/179
-f 1027/484/8 1028/485/8 1029/486/8
-f 1029/486/8 1030/487/8 1027/484/8
-f 1029/486/632 1031/490/632 1032/488/632
-f 1032/488/632 1030/489/632 1029/486/632
-f 1031/490/88 1029/486/88 1028/485/88
-f 1028/485/88 1033/491/637 1031/490/88
-f 1033/491/179 1028/485/179 1027/492/179
-f 1027/492/179 1034/493/179 1033/491/179
-f 1032/488/632 1031/490/632 1024/494/632
-f 1024/494/632 1023/495/632 1032/488/632
-f 1025/496/90 1024/494/90 1031/490/90
-f 1031/490/91 1033/491/91 1025/496/91
-f 1026/497/179 1025/496/179 1033/491/179
-f 1033/491/638 1034/493/638 1026/497/638
-f 1035/148/8 1036/151/8 1037/150/8
-f 1037/150/8 1038/149/8 1035/148/8
-f 1039/458/639 1035/461/639 1038/460/639
-f 1038/460/639 1040/459/639 1039/458/639
-f 1040/462/640 1038/465/640 1037/464/640
-f 1037/464/640 1041/463/640 1040/462/640
-f 1041/459/641 1037/460/641 1036/461/641
-f 1036/461/641 1042/458/641 1041/459/641
-f 1042/463/642 1036/464/642 1035/465/642
-f 1035/465/642 1039/462/642 1042/463/642
-f 1043/149/195 1044/150/195 1045/151/195
-f 1045/151/195 1046/148/195 1043/149/195
-f 1047/148/187 1048/149/187 1049/150/187
-f 1049/150/187 1050/151/187 1047/148/187
-f 1045/160/643 1051/153/403 1052/154/403
-f 1052/154/403 1046/161/643 1045/160/643
-f 1044/162/8 1053/157/8 1051/158/8
-f 1051/158/8 1045/163/8 1044/162/8
-f 1043/161/644 1054/154/404 1053/153/404
-f 1053/153/404 1044/160/644 1043/161/644
-f 1049/152/645 1048/155/645 1052/154/403
-f 1052/154/403 1051/153/403 1049/152/645
-f 1050/156/8 1049/159/8 1051/158/8
-f 1051/158/8 1053/157/8 1050/156/8
-f 1047/155/646 1050/152/646 1053/153/404
-f 1053/153/404 1054/154/404 1047/155/646
-f 1055/498/552 1056/499/552 1057/500/482
-f 1057/500/482 1058/501/482 1055/498/552
-f 1059/502/497 1055/503/497 1058/504/497
-f 1058/504/497 1060/505/497 1059/502/497
-f 1061/499/534 1059/498/534 1060/501/534
-f 1060/501/534 1062/500/534 1061/499/534
-f 1061/502/647 1062/505/648 1057/504/479
-f 1057/504/479 1056/503/647 1061/502/647
-f 1063/506/103 1058/501/482 1057/500/482
-f 1057/500/482 1064/507/103 1063/506/103
-f 1060/505/649 1058/504/649 1063/508/649
-f 1063/508/650 1065/509/650 1060/505/650
-f 1066/507/18 1062/500/18 1060/501/18
-f 1060/501/18 1065/506/18 1066/507/18
-f 1064/508/651 1057/504/479 1062/505/648
-f 1062/505/648 1066/509/652 1064/508/651
-f 1067/150/8 1068/151/8 1069/148/8
-f 1069/148/8 1070/149/8 1067/150/8
-f 1071/154/653 1072/153/653 1073/160/654
-f 1073/160/654 1074/161/654 1071/154/653
-f 1072/510/187 1075/511/187 1076/512/187
-f 1076/512/187 1073/513/187 1072/510/187
-f 1075/153/655 1077/154/655 1078/161/418
-f 1078/161/418 1076/160/418 1075/153/655
-f 1070/155/656 1069/152/656 1072/153/653
-f 1072/153/653 1071/154/653 1070/155/656
-f 1069/514/187 1068/515/187 1075/511/187
-f 1075/511/187 1072/510/187 1069/514/187
-f 1068/152/657 1067/155/657 1077/154/655
-f 1077/154/655 1075/153/655 1068/152/657
-f 1079/516/658 1080/517/659 1081/518/659
-f 1081/518/659 1082/519/658 1079/516/658
-f 1083/520/660 1084/521/661 1080/522/478
-f 1080/522/478 1079/523/584 1083/520/660
-f 1085/524/662 1086/525/663 1084/526/663
-f 1084/526/663 1083/527/662 1085/524/662
-f 1082/523/664 1081/522/482 1086/521/665
-f 1086/521/665 1085/520/666 1082/523/664
-f 1087/528/667 1088/529/667 1081/518/659
-f 1081/518/659 1080/517/659 1087/528/667
-f 1089/530/396 1087/531/396 1080/522/478
-f 1080/522/478 1084/521/661 1089/530/396
-f 1090/532/668 1089/533/668 1084/526/663
-f 1084/526/663 1086/525/663 1090/532/668
-f 1088/531/103 1090/530/103 1086/521/665
-f 1086/521/665 1081/522/482 1088/531/103
-f 1091/311/669 1092/314/670 1093/313/671
-f 1093/313/671 1094/312/669 1091/311/669
-f 1095/315/672 1096/318/518 1092/317/518
-f 1092/317/518 1091/316/518 1095/315/672
-f 1097/312/673 1098/313/673 1096/314/673
-f 1096/314/673 1095/311/673 1097/312/673
-f 1097/315/674 1094/316/521 1093/317/523
-f 1093/317/523 1098/318/522 1097/315/674
-f 1099/319/675 1100/320/675 1093/313/671
-f 1093/313/671 1092/314/670 1099/319/675
-f 1096/318/676 1101/322/677 1099/321/677
-f 1099/321/526 1092/317/525 1096/318/525
-f 1102/320/678 1101/319/678 1096/314/678
-f 1096/314/678 1098/313/678 1102/320/678
-f 1100/321/679 1102/322/680 1098/318/522
-f 1098/318/522 1093/317/523 1100/321/679
-f 1103/64/681 1104/67/682 1105/66/682
-f 1105/66/682 1106/65/681 1103/64/681
-f 1107/68/390 1108/71/390 1104/70/390
-f 1104/70/390 1103/69/390 1107/68/390
-f 1109/64/683 1110/67/683 1108/66/684
-f 1108/66/684 1107/65/683 1109/64/683
-f 1109/68/392 1106/69/392 1105/70/393
-f 1105/70/393 1110/71/393 1109/68/392
-f 1111/72/685 1112/73/685 1105/66/682
-f 1105/66/682 1104/67/682 1111/72/685
-f 1108/71/686 1113/75/687 1111/74/687
-f 1111/74/396 1104/70/396 1108/71/396
-f 1114/72/210 1113/73/210 1108/66/688
-f 1108/66/688 1110/67/688 1114/72/210
-f 1112/74/689 1114/75/690 1110/71/393
-f 1110/71/393 1105/70/393 1112/74/689
-f 1115/149/8 1116/150/8 1117/151/8
-f 1117/151/8 1118/148/8 1115/149/8
-f 1119/148/1 1120/149/1 1121/150/1
-f 1121/150/1 1122/151/1 1119/148/1
-f 1117/160/691 1123/153/403 1124/154/403
-f 1124/154/403 1118/161/691 1117/160/691
-f 1116/162/187 1125/157/187 1123/158/187
-f 1123/158/187 1117/163/187 1116/162/187
-f 1115/161/692 1126/154/404 1125/153/404
-f 1125/153/404 1116/160/692 1115/161/692
-f 1121/152/693 1120/155/693 1124/154/403
-f 1124/154/403 1123/153/403 1121/152/693
-f 1122/156/187 1121/159/187 1123/158/187
-f 1123/158/187 1125/157/187 1122/156/187
-f 1119/155/694 1122/152/694 1125/153/404
-f 1125/153/404 1126/154/404 1119/155/694
-f 1127/516/658 1128/519/658 1129/518/659
-f 1129/518/659 1130/517/659 1127/516/658
-f 1131/520/695 1127/523/570 1130/522/482
-f 1130/522/482 1132/521/696 1131/520/695
-f 1133/524/662 1131/527/662 1132/526/663
-f 1132/526/663 1134/525/663 1133/524/662
-f 1128/523/697 1133/520/698 1134/521/699
-f 1134/521/699 1129/522/478 1128/523/697
-f 1135/528/667 1130/517/659 1129/518/659
-f 1129/518/659 1136/529/667 1135/528/667
-f 1137/530/103 1132/521/696 1130/522/482
-f 1130/522/482 1135/531/103 1137/530/103
-f 1138/532/668 1134/525/663 1132/526/663
-f 1132/526/663 1137/533/668 1138/532/668
-f 1136/531/396 1129/522/478 1134/521/699
-f 1134/521/699 1138/530/396 1136/531/396
-f 1139/84/8 1140/87/8 1141/86/8
-f 1141/86/8 1142/85/8 1139/84/8
-f 1143/88/195 1144/91/195 1145/90/195
-f 1145/90/195 1146/89/195 1143/88/195
-f 1147/92/404 1148/95/404 1149/94/700
-f 1149/94/700 1150/93/700 1147/92/404
-f 1151/89/187 1152/90/187 1153/91/187
-f 1153/91/187 1154/88/187 1151/89/187
-f 1155/96/403 1156/99/403 1157/98/701
-f 1157/98/701 1158/97/701 1155/96/403
-f 1159/100/8 1160/102/8 1161/101/8
-f 1148/103/8 1162/106/8 1163/105/8
-f 1163/105/8 1149/104/8 1148/103/8
-f 1164/102/8 1165/100/8 1166/101/8
-f 1167/107/8 1168/108/8 1166/101/8
-f 1166/101/8 1165/100/8 1167/107/8
-f 1169/109/8 1170/110/8 1141/86/8
-f 1141/86/8 1140/87/8 1169/109/8
-f 1171/111/702 1172/112/702 1148/95/404
-f 1148/95/404 1147/92/404 1171/111/702
-f 1173/97/703 1174/98/703 1156/99/403
-f 1156/99/403 1155/96/403 1173/97/703
-f 1148/103/8 1172/104/8 1175/105/8
-f 1175/105/8 1162/106/8 1148/103/8
-f 1167/107/8 1159/100/8 1161/101/8
-f 1161/101/8 1168/108/8 1167/107/8
-f 1176/113/187 1163/116/187 1139/115/187
-f 1139/115/187 1142/114/187 1176/113/187
-f 1163/116/704 1162/118/704 1140/117/704
-f 1140/117/704 1139/115/704 1163/116/704
-f 1162/118/705 1175/120/705 1169/119/705
-f 1169/119/705 1140/117/705 1162/118/705
-f 1175/120/195 1177/122/195 1170/121/195
-f 1170/121/195 1169/119/195 1175/120/195
-f 1177/123/706 1178/126/707 1141/125/707
-f 1141/125/707 1170/124/706 1177/123/706
-f 1178/126/708 1176/123/708 1142/124/708
-f 1142/124/708 1141/125/708 1178/126/708
-f 1172/104/8 1179/128/8 1177/127/8
-f 1177/127/8 1175/105/8 1172/104/8
-f 1179/129/187 1172/112/187 1171/111/187
-f 1171/111/187 1180/130/187 1179/129/187
-f 1150/93/195 1149/94/195 1181/132/195
-f 1181/132/195 1182/131/195 1150/93/195
-f 1181/128/8 1149/104/8 1163/105/8
-f 1163/105/8 1176/127/8 1181/128/8
-f 1145/90/195 1144/91/195 1183/88/195
-f 1183/88/195 1184/89/195 1145/90/195
-f 1181/133/709 1176/123/709 1161/135/709
-f 1161/135/709 1160/134/709 1181/133/709
-f 1176/123/708 1178/126/708 1168/136/708
-f 1168/136/708 1161/135/708 1176/123/708
-f 1178/126/707 1177/123/706 1166/135/706
-f 1166/135/706 1168/136/707 1178/126/707
-f 1177/123/710 1179/133/710 1164/134/710
-f 1164/134/710 1166/135/710 1177/123/710
-f 1153/91/187 1152/90/187 1185/89/187
-f 1185/89/187 1186/88/187 1153/91/187
-f 1157/98/701 1156/99/701 1167/138/701
-f 1167/138/701 1165/137/701 1157/98/701
-f 1156/99/703 1174/98/703 1159/137/703
-f 1159/137/703 1167/138/703 1156/99/703
-f 1182/139/404 1181/133/404 1144/141/404
-f 1144/141/404 1143/140/404 1182/139/404
-f 1181/133/404 1160/134/404 1183/142/404
-f 1183/142/404 1144/141/404 1181/133/404
-f 1160/102/8 1159/100/8 1184/144/8
-f 1184/144/8 1183/143/8 1160/102/8
-f 1159/137/403 1174/98/403 1145/146/403
-f 1145/146/403 1184/145/403 1159/137/403
-f 1174/98/403 1173/97/403 1146/147/403
-f 1146/147/403 1145/146/403 1174/98/403
-f 1158/97/403 1157/98/403 1152/146/403
-f 1152/146/403 1151/147/403 1158/97/403
-f 1157/98/403 1165/137/403 1185/145/403
-f 1185/145/403 1152/146/403 1157/98/403
-f 1165/100/8 1164/102/8 1186/143/8
-f 1186/143/8 1185/144/8 1165/100/8
-f 1164/134/404 1179/133/404 1153/141/404
-f 1153/141/404 1186/142/404 1164/134/404
-f 1179/133/404 1180/139/404 1154/140/404
-f 1154/140/404 1153/141/404 1179/133/404
-f 1187/84/195 1188/87/195 1189/86/195
-f 1189/86/195 1190/85/195 1187/84/195
-f 1191/88/1 1192/91/1 1193/90/1
-f 1193/90/1 1194/89/1 1191/88/1
-f 1195/92/404 1196/95/404 1197/94/405
-f 1197/94/405 1198/93/405 1195/92/404
-f 1199/89/8 1200/90/8 1201/91/8
-f 1201/91/8 1202/88/8 1199/89/8
-f 1203/96/403 1204/99/403 1205/98/406
-f 1205/98/406 1206/97/406 1203/96/403
-f 1207/100/195 1208/102/195 1209/101/195
-f 1196/103/195 1210/106/195 1211/105/195
-f 1211/105/195 1197/104/195 1196/103/195
-f 1212/102/195 1213/100/195 1214/101/195
-f 1215/107/195 1216/108/195 1214/101/195
-f 1214/101/195 1213/100/195 1215/107/195
-f 1217/109/195 1218/110/195 1189/86/195
-f 1189/86/195 1188/87/195 1217/109/195
-f 1219/111/407 1220/112/407 1196/95/404
-f 1196/95/404 1195/92/404 1219/111/407
-f 1221/97/409 1222/98/408 1204/99/403
-f 1204/99/403 1203/96/403 1221/97/409
-f 1196/103/195 1220/104/195 1223/105/195
-f 1223/105/195 1210/106/195 1196/103/195
-f 1215/107/195 1207/100/195 1209/101/195
-f 1209/101/195 1216/108/195 1215/107/195
-f 1224/113/8 1211/116/8 1187/115/8
-f 1187/115/8 1190/114/8 1224/113/8
-f 1211/116/410 1210/118/711 1188/117/711
-f 1188/117/711 1187/115/410 1211/116/410
-f 1210/118/413 1223/120/413 1217/119/413
-f 1217/119/413 1188/117/413 1210/118/413
-f 1223/120/1 1225/122/1 1218/121/1
-f 1218/121/1 1217/119/1 1223/120/1
-f 1225/123/414 1226/126/415 1189/125/415
-f 1189/125/415 1218/124/414 1225/123/414
-f 1226/126/712 1224/123/417 1190/124/417
-f 1190/124/417 1189/125/416 1226/126/712
-f 1220/104/195 1227/128/195 1225/127/195
-f 1225/127/195 1223/105/195 1220/104/195
-f 1227/129/8 1220/112/8 1219/111/8
-f 1219/111/8 1228/130/8 1227/129/8
-f 1198/93/1 1197/94/1 1229/132/1
-f 1229/132/1 1230/131/1 1198/93/1
-f 1229/128/195 1197/104/195 1211/105/195
-f 1211/105/195 1224/127/195 1229/128/195
-f 1193/90/1 1192/91/1 1231/88/1
-f 1231/88/1 1232/89/1 1193/90/1
-f 1229/133/418 1224/123/419 1209/135/419
-f 1209/135/419 1208/134/418 1229/133/418
-f 1224/123/417 1226/126/712 1216/136/416
-f 1216/136/416 1209/135/417 1224/123/417
-f 1226/126/415 1225/123/414 1214/135/414
-f 1214/135/414 1216/136/415 1226/126/415
-f 1225/123/420 1227/133/420 1212/134/420
-f 1212/134/420 1214/135/420 1225/123/420
-f 1201/91/8 1200/90/8 1233/89/8
-f 1233/89/8 1234/88/8 1201/91/8
-f 1205/98/406 1204/99/421 1215/138/421
-f 1215/138/421 1213/137/406 1205/98/406
-f 1204/99/422 1222/98/408 1207/137/408
-f 1207/137/408 1215/138/422 1204/99/422
-f 1230/139/404 1229/133/404 1192/141/404
-f 1192/141/404 1191/140/404 1230/139/404
-f 1229/133/404 1208/134/404 1231/142/404
-f 1231/142/404 1192/141/404 1229/133/404
-f 1208/102/195 1207/100/195 1232/144/195
-f 1232/144/195 1231/143/195 1208/102/195
-f 1207/137/403 1222/98/403 1193/146/403
-f 1193/146/403 1232/145/403 1207/137/403
-f 1222/98/403 1221/97/403 1194/147/403
-f 1194/147/403 1193/146/403 1222/98/403
-f 1206/97/403 1205/98/403 1200/146/403
-f 1200/146/403 1199/147/403 1206/97/403
-f 1205/98/403 1213/137/403 1233/145/403
-f 1233/145/403 1200/146/403 1205/98/403
-f 1213/100/195 1212/102/195 1234/143/195
-f 1234/143/195 1233/144/195 1213/100/195
-f 1212/134/404 1227/133/404 1201/141/404
-f 1201/141/404 1234/142/404 1212/134/404
-f 1227/133/404 1228/139/404 1202/140/404
-f 1202/140/404 1201/141/404 1227/133/404
-f 1235/311/669 1236/312/669 1237/313/671
-f 1237/313/671 1238/314/670 1235/311/669
-f 1239/315/713 1235/316/714 1238/317/714
-f 1238/317/714 1240/318/714 1239/315/713
-f 1241/312/673 1239/311/673 1240/314/673
-f 1240/314/673 1242/313/673 1241/312/673
-f 1241/315/715 1242/318/390 1237/317/716
-f 1237/317/716 1236/316/717 1241/315/715
-f 1243/319/675 1238/314/670 1237/313/671
-f 1237/313/671 1244/320/675 1243/319/675
-f 1240/318/718 1238/317/718 1243/321/719
-f 1243/321/720 1245/322/720 1240/318/720
-f 1246/320/678 1242/313/678 1240/314/678
-f 1240/314/678 1245/319/678 1246/320/678
-f 1244/321/721 1237/317/716 1242/318/390
-f 1242/318/390 1246/322/722 1244/321/721
-f 1247/311/515 1248/314/517 1249/313/516
-f 1249/313/516 1250/312/515 1247/311/515
-f 1251/315/714 1252/318/714 1248/317/714
-f 1248/317/714 1247/316/714 1251/315/714
-f 1253/312/723 1254/313/520 1252/314/520
-f 1252/314/520 1251/311/723 1253/312/723
-f 1253/315/717 1250/316/717 1249/317/716
-f 1249/317/716 1254/318/390 1253/315/717
-f 1255/319/524 1256/320/524 1249/313/516
-f 1249/313/516 1248/314/517 1255/319/524
-f 1252/318/724 1257/322/724 1255/321/724
-f 1255/321/719 1248/317/718 1252/318/718
-f 1258/320/529 1257/319/529 1252/314/529
-f 1252/314/529 1254/313/529 1258/320/529
-f 1256/321/725 1258/322/726 1254/318/390
-f 1254/318/390 1249/317/716 1256/321/725
-f 1259/148/195 1260/151/195 1261/150/195
-f 1261/150/195 1262/149/195 1259/148/195
-f 1263/458/727 1259/461/727 1262/460/727
-f 1262/460/727 1264/459/727 1263/458/727
-f 1264/462/728 1262/465/729 1261/464/729
-f 1261/464/729 1265/463/728 1264/462/728
-f 1265/459/730 1261/460/730 1260/461/730
-f 1260/461/730 1266/458/730 1265/459/730
-f 1266/463/731 1260/464/731 1259/465/731
-f 1259/465/731 1263/462/731 1266/463/731
-f 1267/534/404 1268/535/404 1269/536/404
-f 1269/536/404 1270/537/404 1267/534/404
-f 1271/538/195 1272/539/195 1269/536/195
-f 1269/536/195 1268/535/195 1271/538/195
-f 1273/534/404 1274/535/404 1275/536/404
-f 1275/536/404 1276/537/404 1273/534/404
-f 1277/538/195 1278/539/195 1275/536/195
-f 1275/536/195 1274/535/195 1277/538/195
-f 1279/534/404 1280/535/404 1281/536/404
-f 1281/536/404 1282/537/404 1279/534/404
-f 1283/538/195 1284/539/195 1281/536/195
-f 1281/536/195 1280/535/195 1283/538/195
-f 1285/291/500 1286/292/501 1287/293/501
-f 1287/293/501 1288/294/500 1285/291/500
-f 1289/293/502 1290/292/502 1291/291/503
-f 1291/291/503 1292/294/503 1289/293/502
-f 1288/295/8 1287/296/8 1289/297/8
-f 1289/297/8 1292/298/8 1288/295/8
-f 1293/299/504 1286/296/732 1290/297/506
-f 1290/297/506 1294/300/1 1293/299/504
-f 1293/301/501 1295/302/501 1287/293/501
-f 1287/293/501 1286/292/501 1293/301/501
-f 1296/302/507 1294/301/507 1290/292/502
-f 1290/292/502 1289/293/502 1296/302/507
-f 1295/299/8 1296/300/8 1289/297/8
-f 1289/297/8 1287/296/8 1295/299/8
-f 1285/295/508 1291/298/1 1290/297/506
-f 1290/297/506 1286/296/732 1285/295/508
-f 1297/534/404 1298/535/404 1299/536/404
-f 1299/536/404 1300/537/404 1297/534/404
-f 1301/538/195 1302/539/195 1299/536/195
-f 1299/536/195 1298/535/195 1301/538/195
-f 1303/534/404 1304/535/404 1305/536/404
-f 1305/536/404 1306/537/404 1303/534/404
-f 1307/538/195 1308/539/195 1305/536/195
-f 1305/536/195 1304/535/195 1307/538/195
-f 1309/534/404 1310/535/404 1311/536/404
-f 1311/536/404 1312/537/404 1309/534/404
-f 1313/538/195 1314/539/195 1311/536/195
-f 1311/536/195 1310/535/195 1313/538/195
-f 1315/534/404 1316/535/404 1317/536/404
-f 1317/536/404 1318/537/404 1315/534/404
-f 1319/538/195 1320/539/195 1317/536/195
-f 1317/536/195 1316/535/195 1319/538/195
-f 1321/534/404 1322/535/404 1323/536/404
-f 1323/536/404 1324/537/404 1321/534/404
-f 1325/538/195 1326/539/195 1323/536/195
-f 1323/536/195 1322/535/195 1325/538/195
-f 1327/540/195 1328/541/195 1329/542/195
-f 1329/542/195 1330/543/195 1327/540/195
-f 1328/544/1 1331/545/1 1332/546/1
-f 1332/546/1 1329/547/1 1328/544/1
-f 1331/541/187 1333/540/187 1334/543/187
-f 1334/543/187 1332/542/187 1331/541/187
-f 1335/498/484 1336/501/478 1337/500/478
-f 1337/500/478 1338/499/484 1335/498/484
-f 1339/502/497 1340/505/497 1336/504/497
-f 1336/504/497 1335/503/497 1339/502/497
-f 1341/499/733 1342/500/733 1340/501/733
-f 1340/501/733 1339/498/733 1341/499/733
-f 1341/502/647 1338/503/647 1337/504/479
-f 1337/504/479 1342/505/734 1341/502/647
-f 1343/506/396 1344/507/396 1337/500/478
-f 1337/500/478 1336/501/478 1343/506/396
-f 1340/505/735 1345/509/736 1343/508/736
-f 1343/508/649 1336/504/649 1340/505/649
-f 1346/507/737 1345/506/737 1340/501/737
-f 1340/501/737 1342/500/737 1346/507/737
-f 1344/508/738 1346/509/739 1342/505/734
-f 1342/505/734 1337/504/479 1344/508/738
-f 1347/150/8 1348/149/8 1349/148/8
-f 1349/148/8 1350/151/8 1347/150/8
-f 1351/154/653 1352/161/654 1353/160/654
-f 1353/160/654 1354/153/653 1351/154/653
-f 1354/510/195 1353/513/195 1355/512/195
-f 1355/512/195 1356/511/195 1354/510/195
-f 1356/153/655 1355/160/418 1357/161/418
-f 1357/161/418 1358/154/655 1356/153/655
-f 1348/155/656 1351/154/653 1354/153/653
-f 1354/153/653 1349/152/656 1348/155/656
-f 1349/514/195 1354/510/195 1356/511/195
-f 1356/511/195 1350/515/195 1349/514/195
-f 1350/152/657 1356/153/655 1358/154/655
-f 1358/154/655 1347/155/657 1350/152/657
-f 1359/548/740 1360/549/741 1361/550/742
-f 1361/550/742 1362/551/743 1359/548/740
-f 1363/552/744 1359/548/740 1362/551/743
-f 1362/551/743 1364/553/745 1363/552/744
-f 1365/554/746 1363/552/744 1364/553/745
-f 1364/553/745 1366/555/747 1365/554/746
-f 1367/556/748 1365/554/746 1366/555/747
-f 1366/555/747 1368/557/511 1367/556/748
-f 1369/558/749 1370/559/750 1360/549/741
-f 1360/549/741 1359/548/740 1369/558/749
-f 1371/560/751 1369/558/749 1359/548/740
-f 1359/548/740 1363/552/744 1371/560/751
-f 1372/561/752 1371/560/751 1363/552/744
-f 1363/552/744 1365/554/746 1372/561/752
-f 1373/562/753 1372/561/752 1365/554/746
-f 1365/554/746 1367/556/748 1373/562/753
-f 1374/563/754 1375/564/755 1370/559/750
-f 1370/559/750 1369/558/749 1374/563/754
-f 1376/565/756 1374/563/754 1369/558/749
-f 1369/558/749 1371/560/751 1376/565/756
-f 1377/566/757 1376/565/756 1371/560/751
-f 1371/560/751 1372/561/752 1377/566/757
-f 1378/567/758 1377/566/757 1372/561/752
-f 1372/561/752 1373/562/753 1378/567/758
-f 1379/568/759 1380/569/760 1375/564/755
-f 1375/564/755 1374/563/754 1379/568/759
-f 1381/570/761 1379/568/759 1374/563/754
-f 1374/563/754 1376/565/756 1381/570/761
-f 1382/571/762 1381/570/761 1376/565/756
-f 1376/565/756 1377/566/757 1382/571/762
-f 1383/572/763 1382/571/762 1377/566/757
-f 1377/566/757 1378/567/758 1383/572/763
-# 1829 faces
-
diff --git a/examples/web/models/resources/models/house_diffuse.png b/examples/web/models/resources/models/house_diffuse.png
deleted file mode 100644
index b36a58a..0000000
--- a/examples/web/models/resources/models/house_diffuse.png
+++ /dev/null
Binary files differ
diff --git a/examples/web/models/resources/models/market.obj b/examples/web/models/resources/models/market.obj
deleted file mode 100644
index 14b56c9..0000000
--- a/examples/web/models/resources/models/market.obj
+++ /dev/null
@@ -1,7301 +0,0 @@
-# (c) 2018 Medieval Assets Pack by Alberto Cano
-# Licensed as Creative Commons Attribution-NonCommercial 4.0
-
-#
-# object market
-#
-
-v 3.5020 2.5780 0.6000
-v 3.5857 2.3300 -0.3566
-v 0.9034 2.4385 -0.3059
-v 0.7972 2.5666 0.3634
-v 7.0514 2.3106 -0.0534
-v 6.9677 2.5586 0.9032
-v 10.0279 2.4607 0.6293
-v 9.9809 2.5751 1.1668
-v 3.4183 2.7080 1.5566
-v 0.6157 2.7701 1.3114
-v 6.8840 2.6886 1.8598
-v 9.8972 2.7851 2.1234
-v 3.3346 3.0185 2.5132
-v 0.4535 3.1325 2.2611
-v 6.8004 2.9991 2.8164
-v 9.8135 3.1163 3.0800
-v 3.2509 3.4794 3.4697
-v 0.2754 3.5551 3.2094
-v 6.7167 3.4600 3.7729
-v 9.7298 3.4639 4.0366
-v 10.0455 2.8240 2.2646
-v 10.2142 2.4497 0.4830
-v 9.9850 2.4497 0.4630
-v 9.8767 2.8240 2.2499
-v 10.0391 2.6661 2.3384
-v 10.2064 2.2594 0.5720
-v 9.8703 2.6661 2.3236
-v 9.9773 2.2594 0.5519
-v 9.6576 3.4698 3.8991
-v 9.9399 3.4698 3.9238
-v 9.9304 3.2353 4.0334
-v 9.6480 3.2353 4.0087
-v 10.2259 2.6757 0.6552
-v 10.2479 2.6757 0.4044
-v 9.9655 2.6757 0.3797
-v 9.9436 2.6757 0.6305
-v 10.1948 1.3380 0.5581
-v 10.2479 0.0002 0.4044
-v 9.9655 0.0002 0.3797
-v 10.0260 1.3380 0.5433
-v 10.1801 1.3380 0.7269
-v 10.2259 0.0002 0.6552
-v 10.0113 1.3380 0.7121
-v 9.9436 0.0002 0.6305
-v -2.5487 5.3313 -3.7528
-v -6.4595 7.4224 -4.0554
-v -6.4595 7.8989 -0.3361
-v -2.5487 5.4078 -0.1848
-v -6.4595 7.8989 -7.7747
-v -10.3703 5.1783 -7.3209
-v -10.3703 5.1783 -3.7528
-v -2.5487 5.0684 -0.1976
-v -2.5487 4.9919 -3.7784
-v -6.4595 8.5550 -11.4939
-v -6.4595 8.8943 -11.4939
-v -2.5487 5.1783 -10.8889
-v -2.5487 4.8389 -10.9401
-v -10.3703 5.1783 -10.8889
-v -10.3703 4.8389 -10.8889
-v -10.3703 4.8389 -7.3209
-v -10.3703 4.8389 -3.7528
-v -6.4595 8.5550 3.3832
-v -6.4595 8.8943 3.3832
-v -10.3703 5.1783 3.3832
-v -10.3703 4.8389 3.3832
-v -2.5487 5.4843 3.3832
-v -2.5487 5.1449 3.3832
-v -6.4595 7.5595 -0.3361
-v -6.4595 7.0830 -4.0554
-v -10.3703 4.8389 -0.1848
-v -2.5487 5.2548 -7.3209
-v -10.3703 5.1783 -0.1848
-v -2.5487 4.9154 -7.3592
-v -6.4595 7.5595 -7.7747
-v -6.8581 7.8263 -12.4808
-v -6.8581 8.6234 -12.4808
-v -6.0610 8.6234 -12.4808
-v -6.0610 7.8263 -12.4808
-v -6.1229 7.4442 -11.5026
-v -6.1229 8.1175 -11.5026
-v -6.1553 7.9193 -10.5120
-v -6.1553 7.3108 -10.5120
-v -6.7962 7.4442 -11.5026
-v -6.7638 7.3108 -10.5120
-v -6.7638 7.9193 -10.5120
-v -6.7962 8.1175 -11.5026
-v -6.4595 0.0002 -10.1354
-v -6.4595 8.2940 -10.6813
-v -2.8857 5.2975 -10.1354
-v -2.8857 0.0002 -10.1354
-v -10.0333 5.2975 2.7784
-v -10.0333 5.2975 -10.1354
-v -10.0333 0.0002 -10.1354
-v -10.0333 0.0002 2.7784
-v -2.8857 5.2975 2.7784
-v -2.8857 0.0002 2.7784
-v -6.4595 0.0002 2.7784
-v -6.4595 8.2940 2.7784
-v -6.8605 5.0137 -10.5121
-v -6.4595 5.3049 -10.5121
-v -6.4595 4.0799 -10.4446
-v -6.8605 4.1037 -10.4446
-v -7.1742 4.1256 -10.4781
-v -7.1742 3.9945 -10.4781
-v -7.1742 3.9945 -10.3860
-v -7.1742 4.1256 -10.3860
-v -6.4595 5.5197 -10.5456
-v -7.0706 5.0963 -10.5456
-v -7.0706 5.0963 -10.4535
-v -6.4595 5.5197 -10.4535
-v -5.7449 3.9945 -10.4781
-v -5.7449 4.1256 -10.4781
-v -5.7449 4.1256 -10.3860
-v -5.7449 3.9945 -10.3860
-v -6.4595 3.9489 -10.4781
-v -5.8484 3.9945 -10.4781
-v -5.8484 3.9945 -10.3860
-v -6.4595 3.9489 -10.3860
-v -7.0706 4.1256 -10.5790
-v -6.8605 4.1037 -10.5790
-v -7.0706 3.9945 -10.5790
-v -6.4595 5.3049 -10.5456
-v -6.8605 5.0137 -10.5456
-v -5.8484 3.9945 -10.5790
-v -6.0585 4.1122 -10.5790
-v -5.8484 4.1256 -10.5790
-v -6.4595 3.9489 -10.5790
-v -6.4595 4.0799 -10.5790
-v -6.0585 5.0137 -10.5121
-v -6.0585 4.1122 -10.4446
-v -5.8484 5.0963 -10.5456
-v -5.8484 5.0963 -10.4535
-v -7.0706 3.9945 -10.4781
-v -7.0706 3.9945 -10.3860
-v -6.0585 5.0137 -10.5456
-v -6.8605 4.1037 -10.4781
-v -6.0585 4.1122 -10.4781
-v -6.4595 4.0799 -10.4781
-v -5.8484 4.1256 -10.4781
-v -5.8484 4.1256 -10.3860
-v -7.0706 4.1256 -10.4781
-v -7.0706 4.1256 -10.3860
-v -7.1742 4.1256 -10.5790
-v -7.1742 3.9945 -10.5790
-v -5.7449 3.9945 -10.5790
-v -5.7449 4.1256 -10.5790
-v -4.8366 2.9155 -11.3065
-v -4.8366 2.9155 -9.8475
-v -5.1698 0.0002 -9.8475
-v -5.1698 0.0002 -11.3065
-v -7.8178 2.9295 -10.3475
-v -5.1012 2.9295 -10.3475
-v -5.3801 0.0002 -10.3475
-v -7.5389 0.0002 -10.3475
-v -8.0825 2.9295 -9.8475
-v -8.0825 2.9154 -11.3065
-v -7.7492 0.0002 -11.3065
-v -7.7492 0.0002 -9.8475
-v -7.8178 2.9155 -11.3065
-v -7.5389 0.0002 -11.3065
-v -5.3801 0.0002 -11.3065
-v -5.1012 2.9155 -11.3065
-v -4.9724 1.3976 -11.3539
-v -4.9724 1.3976 -11.0656
-v -5.1101 0.0002 -11.1185
-v -5.1101 0.0002 -11.5366
-v -5.2488 1.3976 -11.3539
-v -5.4726 0.0002 -11.5366
-v -5.4726 0.0002 -11.1185
-v -5.2488 1.3976 -11.0656
-v -4.8038 2.9493 -11.1125
-v -4.8038 2.9493 -11.5426
-v -5.1768 2.9493 -11.5426
-v -5.1768 2.9493 -11.1125
-v -4.9146 0.0002 -10.3720
-v -4.7725 1.3976 -10.2190
-v -5.0597 1.3976 -10.1939
-v -5.3311 0.0002 -10.3356
-v -4.7966 1.3976 -10.4942
-v -4.9462 0.0002 -10.7332
-v -5.0838 1.3976 -10.4691
-v -5.3627 0.0002 -10.6968
-v -4.5534 2.8021 -10.2285
-v -4.9819 2.9493 -10.1910
-v -4.5859 2.8021 -10.6000
-v -5.0144 2.9493 -10.5625
-v -7.9466 1.3976 -11.3539
-v -7.8090 0.0002 -11.5366
-v -7.8090 0.0002 -11.1185
-v -7.9466 1.3976 -11.0656
-v -7.6703 1.3976 -11.3539
-v -7.4464 0.0002 -11.5366
-v -7.6703 1.3976 -11.0656
-v -7.4464 0.0002 -11.1185
-v -8.1152 2.9493 -11.1125
-v -8.1152 2.9493 -11.5426
-v -7.7423 2.9493 -11.5426
-v -7.7423 2.9493 -11.1125
-v -7.8593 1.3976 -10.1939
-v -8.1465 1.3976 -10.2190
-v -8.0045 0.0002 -10.3720
-v -7.5880 0.0002 -10.3356
-v -8.1224 1.3976 -10.4942
-v -7.9729 0.0002 -10.7332
-v -7.8353 1.3976 -10.4691
-v -7.5564 0.0002 -10.6968
-v -7.9372 2.9493 -10.1910
-v -8.3656 2.8021 -10.2285
-v -8.3331 2.8021 -10.6000
-v -7.9047 2.9493 -10.5625
-v -6.4595 2.8457 -10.1867
-v -6.4595 3.2124 -11.6295
-v -4.5275 2.6373 -11.6295
-v -4.5275 2.6373 -10.1867
-v -6.4595 3.4690 -11.6295
-v -6.4595 3.4690 -10.1867
-v -4.5275 2.8939 -10.1867
-v -4.5275 2.8939 -11.6295
-v -8.3915 2.8939 -10.1867
-v -8.3915 2.8939 -11.6295
-v -8.3915 2.6373 -11.6295
-v -8.3915 2.6373 -10.1867
-v -10.1121 2.4684 -10.3295
-v -10.3137 0.0002 -10.5615
-v -10.3137 0.0002 -9.7906
-v -10.1121 2.4684 -9.8940
-v -10.3137 4.9367 -9.7906
-v -10.3137 4.9367 -10.5615
-v -9.6716 2.4684 -10.3295
-v -9.5338 0.0002 -10.5615
-v -9.5338 5.4628 -10.5615
-v -9.6716 2.4684 -9.8940
-v -9.5338 0.0002 -9.7906
-v -9.5338 5.4628 -9.7906
-v -11.8271 0.0002 -7.0338
-v -10.6584 1.3390 -7.2308
-v -10.6584 1.3390 -6.7139
-v -11.8271 0.0002 -6.5169
-v -11.1508 1.6838 -7.2308
-v -12.4282 0.0002 -7.0338
-v -11.1508 1.6838 -6.7139
-v -12.4282 0.0002 -6.5169
-v -10.0210 2.4484 -7.0338
-v -10.0210 2.4484 -6.5169
-v -9.9166 3.3186 -7.0338
-v -9.9166 3.3186 -6.5169
-v -10.6584 1.3390 -0.3375
-v -10.6584 1.3390 0.1794
-v -11.8271 0.0002 -0.0176
-v -11.8271 0.0002 -0.5345
-v -11.1508 1.6838 0.1794
-v -12.4282 0.0002 -0.0176
-v -11.1508 1.6838 -0.3375
-v -12.4282 0.0002 -0.5345
-v -10.0210 2.4484 -0.5345
-v -10.0210 2.4484 -0.0176
-v -9.9166 3.3186 -0.0176
-v -9.9166 3.3186 -0.5345
-v -10.1121 2.4684 2.8671
-v -10.1121 2.4684 2.4316
-v -10.3137 0.0002 2.3281
-v -10.3137 0.0002 3.0991
-v -10.3137 4.9367 3.0991
-v -10.3137 4.9367 2.3281
-v -9.5338 0.0002 3.0991
-v -9.6716 2.4684 2.8671
-v -9.5338 5.4628 3.0991
-v -9.5338 0.0002 2.3281
-v -9.6716 2.4684 2.4316
-v -9.5338 5.4628 2.3281
-v -2.8142 2.4684 -10.1938
-v -2.8142 2.4684 -9.7583
-v -2.6125 0.0002 -9.6549
-v -2.6125 0.0002 -10.4258
-v -2.6125 4.9367 -10.4258
-v -2.6125 4.9367 -9.6549
-v -3.3925 0.0002 -10.4258
-v -3.2547 2.4684 -10.1938
-v -3.3925 5.4628 -10.4258
-v -3.3925 0.0002 -9.6549
-v -3.2547 2.4684 -9.7583
-v -3.3925 5.4628 -9.6549
-v -7.0328 8.4497 -10.4019
-v -7.0328 8.6617 -11.4049
-v -7.0328 8.4889 -11.4414
-v -7.0328 8.2769 -10.4384
-v -6.5612 8.6330 -10.3631
-v -6.5612 8.8059 -10.3266
-v -6.5612 9.0178 -11.3296
-v -6.5612 8.8450 -11.3661
-v -6.4595 8.6447 -10.3607
-v -6.4595 8.8175 -10.3241
-v -6.4595 9.0295 -11.3272
-v -6.4595 8.8567 -11.3637
-v -5.8863 8.4497 -10.4019
-v -5.8863 8.2769 -10.4384
-v -5.8863 8.4889 -11.4414
-v -5.8863 8.6617 -11.4049
-v -6.3578 8.6330 -10.3631
-v -6.3578 8.8059 -10.3266
-v -6.3578 9.0178 -11.3296
-v -6.3578 8.8450 -11.3661
-v -7.0328 8.3601 -10.5036
-v -7.0328 8.1873 -10.5401
-v -7.0328 7.9753 -9.5371
-v -7.0328 8.1481 -9.5005
-v -6.5612 8.5043 -9.4253
-v -6.5613 8.7162 -10.4283
-v -6.5612 8.3315 -9.4618
-v -6.4595 8.5159 -9.4228
-v -6.4595 8.7279 -10.4258
-v -6.4595 8.3431 -9.4594
-v -5.8863 8.3601 -10.5036
-v -5.8863 8.1481 -9.5005
-v -5.8863 7.9753 -9.5371
-v -5.8863 8.1873 -10.5401
-v -6.3578 8.7162 -10.4283
-v -6.3578 8.5043 -9.4253
-v -6.3578 8.3315 -9.4618
-v -7.0328 8.1098 -9.7108
-v -7.0328 7.9358 -9.7412
-v -7.0328 7.7594 -8.7313
-v -7.0328 7.9334 -8.7009
-v -6.5612 8.2919 -8.6383
-v -6.5612 8.4684 -9.6482
-v -6.5612 8.1179 -8.6687
-v -6.4595 8.3037 -8.6362
-v -6.4595 8.4801 -9.6461
-v -6.4595 8.1297 -8.6666
-v -5.8863 8.1098 -9.7108
-v -5.8863 7.9334 -8.7009
-v -5.8863 7.7594 -8.7313
-v -5.8863 7.9358 -9.7412
-v -6.3578 8.4684 -9.6482
-v -6.3578 8.2919 -8.6383
-v -6.3578 8.1179 -8.6687
-v -7.0328 7.8694 -8.8215
-v -7.0328 7.6941 -8.8428
-v -7.0328 7.5703 -7.8251
-v -7.0328 7.7457 -7.8038
-v -6.5613 8.1070 -7.7599
-v -6.5612 8.2307 -8.7775
-v -6.5613 7.9316 -7.7812
-v -6.4595 8.1188 -7.7584
-v -6.4595 8.2425 -8.7761
-v -6.4595 7.9434 -7.7798
-v -5.8863 7.8694 -8.8215
-v -5.8863 7.7457 -7.8038
-v -5.8863 7.5703 -7.8251
-v -5.8863 7.6941 -8.8428
-v -6.3578 8.2307 -8.7775
-v -6.3578 8.1070 -7.7599
-v -6.3578 7.9316 -7.7812
-v -7.0328 7.6652 -7.9060
-v -7.0328 7.4898 -7.9273
-v -7.0328 7.3661 -6.9097
-v -7.0328 7.5414 -6.8883
-v -6.5612 7.9027 -6.8444
-v -6.5613 8.0265 -7.8621
-v -6.5612 7.7274 -6.8657
-v -6.4595 7.9145 -6.8430
-v -6.4595 8.0383 -7.8606
-v -6.4595 7.7392 -6.8643
-v -5.8863 7.6652 -7.9060
-v -5.8863 7.5414 -6.8883
-v -5.8863 7.3661 -6.9097
-v -5.8863 7.4898 -7.9273
-v -6.3578 8.0265 -7.8621
-v -6.3578 7.9027 -6.8444
-v -6.3578 7.7274 -6.8657
-v -7.0328 7.4996 -6.9305
-v -7.0328 7.3243 -6.9519
-v -7.0328 7.2005 -5.9342
-v -7.0328 7.3759 -5.9129
-v -6.5612 7.7372 -5.8689
-v -6.5613 7.8610 -6.8866
-v -6.5612 7.5619 -5.8902
-v -6.4595 7.7490 -5.8675
-v -6.4595 7.8728 -6.8852
-v -6.4595 7.5737 -5.8888
-v -5.8863 7.4996 -6.9305
-v -5.8863 7.3759 -5.9129
-v -5.8863 7.2005 -5.9342
-v -5.8863 7.3243 -6.9519
-v -6.3578 7.8610 -6.8866
-v -6.3578 7.7372 -5.8689
-v -6.3578 7.5619 -5.8902
-v -7.0328 7.3800 -6.2166
-v -7.0328 7.2037 -6.2260
-v -7.0328 7.1488 -5.2023
-v -7.0328 7.3252 -5.1929
-v -6.5612 7.6887 -5.1734
-v -6.5612 7.7435 -6.1971
-v -6.5612 7.5123 -5.1828
-v -6.4595 7.7006 -5.1728
-v -6.4595 7.7554 -6.1965
-v -6.4595 7.5242 -5.1822
-v -5.8863 7.3800 -6.2166
-v -5.8863 7.3252 -5.1929
-v -5.8863 7.1488 -5.2023
-v -5.8863 7.2037 -6.2260
-v -6.3578 7.7435 -6.1971
-v -6.3578 7.6887 -5.1734
-v -6.3578 7.5123 -5.1828
-v -7.0328 8.0466 0.2463
-v -7.0328 7.8713 0.2676
-v -7.0328 7.9950 1.2853
-v -7.0328 8.1704 1.2639
-v -6.5612 8.4080 0.2023
-v -6.5612 8.2326 0.2237
-v -6.5612 8.5317 1.2200
-v -6.5612 8.3564 1.2413
-v -6.4595 8.4198 0.2009
-v -6.4595 8.2444 0.2222
-v -6.4595 8.5435 1.2186
-v -6.4595 8.3682 1.2399
-v -5.8863 8.0466 0.2463
-v -5.8863 8.1704 1.2639
-v -5.8863 7.9950 1.2853
-v -5.8863 7.8713 0.2676
-v -6.3578 8.2326 0.2237
-v -6.3578 8.4080 0.2023
-v -6.3578 8.5317 1.2200
-v -6.3578 8.3564 1.2413
-v -7.0328 7.9614 0.3570
-v -7.0328 7.9268 -0.6676
-v -7.0328 7.7502 -0.6617
-v -7.0328 7.7848 0.3629
-v -6.5612 8.3251 0.3447
-v -6.5612 8.2906 -0.6799
-v -6.5612 8.1140 -0.6740
-v -6.4595 8.3370 0.3443
-v -6.4595 8.3025 -0.6803
-v -6.4595 8.1259 -0.6744
-v -5.8863 7.9614 0.3570
-v -5.8863 7.7848 0.3629
-v -5.8863 7.7502 -0.6617
-v -5.8863 7.9268 -0.6676
-v -6.3578 8.3251 0.3447
-v -6.3578 8.2906 -0.6799
-v -6.3578 8.1140 -0.6740
-v -7.0328 7.8315 -0.6424
-v -7.0328 7.7437 -1.6638
-v -7.0328 7.5677 -1.6487
-v -7.0328 7.6555 -0.6273
-v -6.5612 8.1941 -0.6736
-v -6.5612 8.1064 -1.6950
-v -6.5612 7.9304 -1.6799
-v -6.4595 8.2060 -0.6746
-v -6.4595 8.1182 -1.6960
-v -6.4595 7.9422 -1.6809
-v -5.8863 7.8315 -0.6424
-v -5.8863 7.6555 -0.6273
-v -5.8863 7.5677 -1.6487
-v -5.8863 7.7437 -1.6638
-v -6.3578 8.1941 -0.6736
-v -6.3578 8.1064 -1.6950
-v -6.3578 7.9304 -1.6799
-v -7.0328 7.6668 -1.5253
-v -7.0328 7.5431 -2.5430
-v -7.0328 7.3677 -2.5216
-v -7.0328 7.4915 -1.5040
-v -6.5612 8.0282 -1.5692
-v -6.5612 7.9044 -2.5869
-v -6.5612 7.7291 -2.5656
-v -6.4595 8.0400 -1.5707
-v -6.4595 7.9162 -2.5883
-v -6.4595 7.7409 -2.5670
-v -5.8863 7.6668 -1.5253
-v -5.8863 7.4915 -1.5040
-v -5.8863 7.3677 -2.5216
-v -5.8863 7.5431 -2.5430
-v -6.3578 8.0282 -1.5692
-v -6.3578 7.9044 -2.5869
-v -6.3578 7.7291 -2.5656
-v -7.0328 7.4696 -2.4408
-v -7.0328 7.3458 -3.4585
-v -7.0328 7.1705 -3.4371
-v -7.0328 7.2943 -2.4195
-v -6.5612 7.8309 -2.4847
-v -6.5612 7.7072 -3.5024
-v -6.5613 7.5318 -3.4811
-v -6.4595 7.8427 -2.4862
-v -6.4595 7.7190 -3.5038
-v -6.4595 7.5436 -3.4825
-v -5.8863 7.4696 -2.4408
-v -5.8863 7.2943 -2.4195
-v -5.8863 7.1705 -3.4371
-v -5.8863 7.3459 -3.4585
-v -6.3578 7.8309 -2.4847
-v -6.3578 7.7072 -3.5024
-v -6.3578 7.5318 -3.4811
-v -7.0328 7.2372 -3.4260
-v -7.0328 7.2026 -4.4506
-v -7.0328 7.0261 -4.4446
-v -7.0328 7.0606 -3.4200
-v -6.5612 7.6010 -3.4383
-v -6.5612 7.5664 -4.4629
-v -6.5612 7.3898 -4.4569
-v -6.4595 7.6129 -3.4387
-v -6.4595 7.5783 -4.4633
-v -6.4595 7.4017 -4.4573
-v -5.8863 7.2372 -3.4260
-v -5.8863 7.0606 -3.4200
-v -5.8863 7.0261 -4.4446
-v -5.8863 7.2026 -4.4506
-v -6.3578 7.6010 -3.4383
-v -6.3578 7.5664 -4.4629
-v -6.3578 7.3898 -4.4569
-v -7.0328 7.1416 -4.2258
-v -7.0328 7.2654 -5.2435
-v -7.0328 7.0900 -5.2648
-v -7.0328 6.9662 -4.2471
-v -6.5612 7.5029 -4.1819
-v -6.5612 7.6267 -5.1995
-v -6.5612 7.4513 -5.2209
-v -6.4595 7.5147 -4.1804
-v -6.4595 7.6385 -5.1981
-v -6.4595 7.4631 -5.2194
-v -5.8863 7.1416 -4.2258
-v -5.8863 6.9662 -4.2471
-v -5.8863 7.0900 -5.2648
-v -5.8863 7.2654 -5.2435
-v -6.3578 7.5029 -4.1819
-v -6.3578 7.6267 -5.1995
-v -6.3578 7.4513 -5.2209
-v -7.0328 8.2934 1.2567
-v -7.0328 8.1180 1.2780
-v -7.0328 8.2418 2.2957
-v -7.0328 8.4171 2.2744
-v -6.5612 8.6547 1.2127
-v -6.5612 8.4794 1.2341
-v -6.5612 8.7784 2.2304
-v -6.5612 8.6031 2.2517
-v -6.4595 8.6665 1.2113
-v -6.4595 8.4912 1.2326
-v -6.4595 8.7903 2.2290
-v -6.4595 8.6149 2.2503
-v -5.8863 8.2934 1.2567
-v -5.8863 8.4171 2.2744
-v -5.8863 8.2418 2.2957
-v -5.8863 8.1180 1.2780
-v -6.3578 8.4794 1.2341
-v -6.3578 8.6547 1.2127
-v -6.3578 8.7784 2.2304
-v -6.3578 8.6031 2.2517
-v -7.0328 8.5448 2.0888
-v -7.0328 8.3694 2.1101
-v -7.0328 8.4932 3.1278
-v -7.0328 8.6685 3.1065
-v -6.5612 8.9061 2.0448
-v -6.5612 8.7308 2.0662
-v -6.5612 9.0299 3.0625
-v -6.5612 8.8545 3.0838
-v -6.4595 8.9179 2.0434
-v -6.4595 8.7426 2.0647
-v -6.4595 9.0417 3.0611
-v -6.4595 8.8663 3.0824
-v -5.8863 8.5448 2.0888
-v -5.8863 8.6685 3.1065
-v -5.8863 8.4932 3.1278
-v -5.8863 8.3695 2.1101
-v -6.3578 8.7308 2.0662
-v -6.3578 8.9061 2.0448
-v -6.3578 9.0299 3.0625
-v -6.3578 8.8545 3.0838
-v -10.0333 0.3779 -9.7364
-v -10.1350 0.3779 -9.7364
-v -10.1350 0.3779 2.5266
-v -10.0333 0.3779 2.5266
-v -10.1350 0.0002 -9.7364
-v -10.1350 0.0002 2.5266
-v -7.5634 0.3779 2.7526
-v -9.7086 0.3779 2.7526
-v -9.7086 0.3779 2.8543
-v -7.5634 0.3779 2.8543
-v -9.7086 0.0002 2.8543
-v -7.5634 0.0002 2.8543
-v -10.0175 0.3779 -10.1929
-v -2.9336 0.3779 -10.1929
-v -2.9336 0.3779 -10.2946
-v -10.0175 0.3779 -10.2946
-v -2.9336 0.0002 -10.2946
-v -10.0175 0.0002 -10.2946
-v -2.8857 0.3779 -9.7364
-v -2.8857 0.3779 2.5266
-v -2.7840 0.3779 2.5266
-v -2.7840 0.3779 -9.7364
-v -2.7840 0.0002 2.5266
-v -2.7840 0.0002 -9.7364
-v 0.5342 2.4385 -0.3182
-v 0.8185 2.3300 -2.9858
-v -0.1417 2.5780 -2.9858
-v -0.1417 2.5666 -0.2707
-v 0.8185 2.3106 -6.4648
-v -0.1417 2.5586 -6.4648
-v 0.3978 2.4607 -9.4895
-v -0.1417 2.5751 -9.4895
-v -1.1020 2.7080 -2.9858
-v -1.1020 2.7701 -0.1725
-v -1.1020 2.6886 -6.4648
-v -1.1020 2.7851 -9.4895
-v -2.0622 3.0185 -2.9858
-v -2.0622 3.1325 -0.0938
-v -2.0622 2.9991 -6.4648
-v -2.0622 3.1163 -9.4895
-v -3.0224 3.4794 -2.9858
-v -3.0224 3.5551 0.0010
-v -3.0224 3.4600 -6.4648
-v -3.0224 3.4639 -9.4895
-v -1.2297 2.8239 -9.6496
-v -1.2297 2.8239 -9.4801
-v 0.5598 2.4497 -9.4323
-v 0.5598 2.4497 -9.6623
-v 0.4705 2.2594 -9.6623
-v -1.3037 2.6661 -9.6496
-v -1.3037 2.6661 -9.4801
-v 0.4705 2.2594 -9.4323
-v -2.8918 3.4698 -9.4056
-v -2.8918 3.4698 -9.6890
-v -3.0018 3.2353 -9.6890
-v -3.0018 3.2353 -9.4056
-v 0.3893 2.6757 -9.6890
-v 0.3893 2.6757 -9.4056
-v 0.6411 2.6757 -9.4056
-v 0.6411 2.6757 -9.6890
-v 0.4834 1.3380 -9.6496
-v 0.4834 1.3380 -9.4801
-v 0.6411 0.0002 -9.4056
-v 0.6411 0.0002 -9.6890
-v 0.3893 0.0002 -9.6890
-v 0.3139 1.3380 -9.6496
-v 0.3139 1.3380 -9.4801
-v 0.3893 0.0002 -9.4056
-v 0.2950 7.8989 5.9442
-v 4.0001 7.4224 6.2684
-v 4.0396 5.3313 2.3461
-v 0.4851 5.4078 2.0351
-v 3.3579 5.1783 10.1379
-v 6.9123 5.1783 10.4489
-v 7.7052 7.8989 6.5925
-v 4.0651 4.9919 2.3483
-v 0.4979 5.0684 2.0362
-v 11.1484 5.1783 2.9680
-v 11.4104 8.8943 6.9167
-v 11.4104 8.5550 6.9167
-v 11.1994 4.8389 2.9725
-v 10.4667 5.1783 10.7598
-v 10.4667 4.8389 10.7598
-v 3.3579 4.8389 10.1379
-v 6.9123 4.8389 10.4489
-v -3.7510 5.1783 9.5159
-v -3.4102 8.8943 5.6200
-v -3.4102 8.5550 5.6200
-v -3.7510 4.8389 9.5159
-v -3.0693 5.4843 1.7241
-v -3.0693 5.1449 1.7241
-v 4.0001 7.0830 6.2684
-v 0.2950 7.5595 5.9442
-v -0.1966 4.8389 9.8269
-v 7.5940 5.2548 2.6571
-v -0.1966 5.1783 9.8269
-v 7.6322 4.9154 2.6604
-v 7.7052 7.5595 6.5925
-v 12.3587 7.8263 7.3997
-v 12.4282 7.8263 6.6057
-v 12.4282 8.6234 6.6057
-v 12.3587 8.6234 7.3997
-v 11.4483 7.4442 6.5821
-v 10.4587 7.3108 6.5280
-v 10.4587 7.9194 6.5280
-v 11.4483 8.1175 6.5821
-v 11.3896 7.4442 7.2528
-v 10.4056 7.3108 7.1342
-v 11.3896 8.1175 7.2528
-v 10.4056 7.9194 7.1342
-v 10.3684 5.2975 3.2381
-v 10.6008 8.2940 6.8458
-v 10.0570 0.0002 6.7983
-v 10.3684 0.0002 3.2381
-v -3.1191 5.2975 9.2330
-v -3.1191 0.0002 9.2330
-v 9.7455 0.0002 10.3585
-v 9.7455 5.2975 10.3585
-v -2.4962 0.0002 2.1125
-v -2.4962 5.2975 2.1125
-v -2.8077 0.0002 5.6727
-v -2.8077 8.2940 5.6728
-v 10.3650 4.0799 6.8252
-v 10.4322 5.3049 6.8311
-v 10.3973 5.0138 7.2306
-v 10.3300 4.1037 7.2247
-v 10.3361 4.1256 7.5401
-v 10.2444 4.1256 7.5321
-v 10.2444 3.9945 7.5321
-v 10.3361 3.9945 7.5401
-v 10.4656 5.5197 6.8340
-v 10.3739 5.5197 6.8260
-v 10.3206 5.0963 7.4347
-v 10.4124 5.0963 7.4428
-v 10.4606 3.9945 6.1162
-v 10.3689 3.9945 6.1082
-v 10.3689 4.1256 6.1082
-v 10.4606 4.1256 6.1162
-v 10.3984 3.9489 6.8281
-v 10.3066 3.9489 6.8201
-v 10.3599 3.9945 6.2113
-v 10.4516 3.9945 6.2194
-v 10.4640 4.1037 7.2364
-v 10.4457 4.1256 7.4457
-v 10.4457 3.9945 7.4457
-v 10.4656 5.3049 6.8340
-v 10.4307 5.0138 7.2335
-v 10.5339 4.1122 6.4374
-v 10.5522 3.9945 6.2282
-v 10.5522 4.1256 6.2282
-v 10.4989 4.0799 6.8369
-v 10.4989 3.9489 6.8369
-v 10.3999 4.1122 6.4257
-v 10.4672 5.0138 6.4316
-v 10.5189 5.0963 6.2253
-v 10.4272 5.0963 6.2172
-v 10.3451 3.9945 7.4369
-v 10.2534 3.9945 7.4289
-v 10.5006 5.0138 6.4345
-v 10.3634 4.1037 7.2276
-v 10.4333 4.1122 6.4286
-v 10.3984 4.0799 6.8281
-v 10.4516 4.1256 6.2194
-v 10.3599 4.1256 6.2113
-v 10.3451 4.1256 7.4369
-v 10.2534 4.1256 7.4289
-v 10.4367 4.1256 7.5489
-v 10.4367 3.9945 7.5489
-v 10.5612 3.9945 6.1250
-v 10.5612 4.1256 6.1250
-v 11.3651 2.9155 5.2836
-v 11.3361 0.0002 5.6155
-v 9.8826 0.0002 5.4884
-v 9.9117 2.9155 5.1564
-v 10.1499 2.9295 8.1699
-v 10.1742 0.0002 7.8920
-v 10.3624 0.0002 5.7415
-v 10.3867 2.9295 5.4636
-v 9.6288 2.9295 8.3900
-v 9.6578 0.0002 8.0580
-v 11.1113 0.0002 8.1851
-v 11.0822 2.9155 8.5171
-v 11.1053 2.9155 8.2535
-v 11.1296 0.0002 7.9756
-v 11.3420 2.9155 5.5472
-v 11.3177 0.0002 5.8250
-v 11.4004 1.3976 5.4230
-v 11.5704 0.0002 5.5761
-v 11.1539 0.0002 5.5396
-v 11.1133 1.3976 5.3979
-v 11.3763 1.3976 5.6983
-v 11.5388 0.0002 5.9373
-v 11.0892 1.3976 5.6732
-v 11.1223 0.0002 5.9008
-v 11.1747 2.9493 5.2340
-v 11.6031 2.9493 5.2715
-v 11.5706 2.9493 5.6430
-v 11.1421 2.9493 5.6055
-v 10.2372 1.3976 5.4089
-v 10.2873 1.3976 5.1250
-v 10.4274 0.0002 5.2798
-v 10.3548 0.0002 5.6916
-v 10.5594 1.3976 5.1730
-v 10.7844 0.0002 5.3428
-v 10.5093 1.3976 5.4568
-v 10.7118 0.0002 5.7545
-v 10.2411 2.9493 5.3311
-v 10.3158 2.8021 4.9075
-v 10.6831 2.8021 4.9723
-v 10.6084 2.9493 5.3958
-v 11.1412 1.3976 8.3859
-v 10.8540 1.3976 8.3608
-v 10.9187 0.0002 8.2282
-v 11.3352 0.0002 8.2647
-v 11.1653 1.3976 8.1106
-v 11.3668 0.0002 7.9035
-v 10.9503 0.0002 7.8671
-v 10.8781 1.3976 8.0855
-v 10.8860 2.9493 8.5328
-v 11.3145 2.9493 8.5703
-v 11.3470 2.9493 8.1988
-v 10.9185 2.9493 8.1613
-v 10.1581 0.0002 8.3580
-v 9.9932 1.3976 8.4861
-v 9.9932 1.3976 8.1978
-v 10.1581 0.0002 7.9399
-v 10.2695 1.3976 8.4861
-v 10.5206 0.0002 8.3580
-v 10.2695 1.3976 8.1978
-v 10.5206 0.0002 7.9399
-v 9.9836 2.8021 8.7052
-v 9.9836 2.9493 8.2751
-v 10.3565 2.8021 8.7052
-v 10.3565 2.9493 8.2751
-v 11.7138 2.6373 5.0039
-v 11.5454 3.2124 6.9285
-v 10.1081 2.8457 6.8027
-v 10.2765 2.6373 4.8781
-v 11.5454 3.4690 6.9285
-v 11.7138 2.8940 5.0039
-v 10.2765 2.8940 4.8781
-v 10.1081 3.4690 6.8027
-v 9.9397 2.8940 8.7274
-v 9.9397 2.6373 8.7274
-v 11.3770 2.6373 8.8531
-v 11.3770 2.8940 8.8531
-v 9.9320 2.4684 10.4539
-v 9.4982 2.4684 10.4159
-v 9.3776 0.0002 10.6078
-v 10.1455 0.0002 10.6750
-v 10.1455 4.9367 10.6750
-v 9.3776 4.9367 10.6078
-v 10.2135 0.0002 9.8980
-v 9.9704 2.4684 10.0150
-v 10.2135 5.4628 9.8980
-v 9.4455 0.0002 9.8308
-v 9.5366 2.4684 9.9770
-v 9.4455 5.4628 9.8308
-v -3.2143 2.4684 9.3037
-v -3.4630 0.0002 9.4844
-v -2.6950 0.0002 9.5515
-v -2.7805 2.4684 9.3417
-v -2.6950 4.9367 9.5515
-v -3.4630 4.9367 9.4844
-v -3.1759 2.4684 8.8648
-v -3.3950 0.0002 8.7074
-v -3.3950 5.4628 8.7074
-v -2.7421 2.4684 8.9028
-v -2.6270 0.0002 8.7746
-v -2.6270 5.4628 8.7746
-v 10.4329 2.4684 3.1719
-v 10.6816 0.0002 2.9912
-v 9.9136 0.0002 2.9240
-v 9.9991 2.4684 3.1339
-v 9.9136 4.9367 2.9240
-v 10.6816 4.9367 2.9912
-v 10.3945 2.4684 3.6107
-v 10.6136 0.0002 3.7682
-v 10.6136 5.4628 3.7682
-v 9.9607 2.4684 3.5728
-v 9.8456 0.0002 3.7010
-v 9.8456 5.4628 3.7010
-v 10.2725 8.4537 7.3926
-v 10.3089 8.2809 7.3957
-v 11.3081 8.4928 7.4832
-v 11.2717 8.6657 7.4800
-v 10.2386 8.8098 6.9163
-v 10.2750 8.6370 6.9194
-v 11.2378 9.0218 7.0037
-v 11.2742 8.8490 7.0069
-v 10.2450 8.8214 6.8147
-v 10.2814 8.6486 6.8179
-v 11.2442 9.0334 6.9021
-v 11.2806 8.8606 6.9053
-v 10.3724 8.4537 6.2504
-v 11.3716 8.6657 6.3378
-v 11.4080 8.4928 6.3410
-v 10.4088 8.2809 6.2536
-v 10.2927 8.6370 6.7168
-v 10.2563 8.8098 6.7136
-v 11.2555 9.0218 6.8010
-v 11.2919 8.8490 6.8042
-v 10.3738 8.3641 7.4014
-v 9.3746 8.1521 7.3140
-v 9.4110 7.9793 7.3172
-v 10.4102 8.1912 7.4046
-v 10.3399 8.7202 6.9251
-v 9.3407 8.5082 6.8377
-v 9.3771 8.3354 6.8409
-v 10.3463 8.7318 6.8236
-v 9.3471 8.5198 6.7362
-v 9.3835 8.3470 6.7393
-v 10.4737 8.3641 6.2593
-v 10.5101 8.1912 6.2625
-v 9.5109 7.9793 6.1751
-v 9.4745 8.1521 6.1719
-v 10.3576 8.7202 6.7225
-v 9.3584 8.5082 6.6350
-v 9.3948 8.3354 6.6382
-v 9.5841 8.1138 7.3323
-v 8.5780 7.9373 7.2443
-v 8.6083 7.7633 7.2470
-v 9.6143 7.9398 7.3350
-v 9.5627 8.4723 6.8571
-v 8.5567 8.2959 6.7691
-v 8.5870 8.1219 6.7718
-v 9.5696 8.4840 6.7556
-v 8.5635 8.3076 6.6676
-v 8.5938 8.1336 6.6703
-v 9.6840 8.1138 6.1902
-v 9.7143 7.9398 6.1928
-v 8.7082 7.7633 6.1048
-v 8.6779 7.9373 6.1022
-v 9.5805 8.4723 6.6545
-v 8.5744 8.2959 6.5664
-v 8.6047 8.1219 6.5691
-v 8.6981 7.8694 7.2548
-v 7.6843 7.7457 7.1661
-v 7.7055 7.5703 7.1680
-v 8.7194 7.6941 7.2567
-v 8.6954 8.2307 6.7813
-v 7.6816 8.1070 6.6926
-v 7.7029 7.9316 6.6944
-v 8.7029 8.2425 6.6798
-v 7.6891 8.1188 6.5911
-v 7.7103 7.9435 6.5930
-v 8.7980 7.8694 6.1127
-v 8.8193 7.6941 6.1145
-v 7.8055 7.5703 6.0258
-v 7.7842 7.7457 6.0240
-v 8.7132 8.2307 6.5786
-v 7.6994 8.1070 6.4899
-v 7.7206 7.9316 6.4917
-v 7.7861 7.6652 7.1750
-v 6.7723 7.5414 7.0863
-v 6.7936 7.3661 7.0882
-v 7.8074 7.4898 7.1769
-v 7.7834 8.0265 6.7015
-v 6.7696 7.9027 6.6128
-v 6.7909 7.7274 6.6146
-v 7.7909 8.0383 6.6000
-v 6.7771 7.9145 6.5113
-v 6.7983 7.7392 6.5132
-v 7.8860 7.6652 6.0329
-v 7.9073 7.4898 6.0348
-v 6.8935 7.3661 5.9461
-v 6.8722 7.5414 5.9442
-v 7.8012 8.0265 6.4988
-v 6.7874 7.9027 6.4101
-v 6.8086 7.7274 6.4120
-v 6.8144 7.4996 7.0900
-v 5.8006 7.3759 7.0013
-v 5.8218 7.2005 7.0032
-v 6.8356 7.3243 7.0919
-v 6.8117 7.8610 6.6164
-v 5.7979 7.7372 6.5277
-v 5.8191 7.5619 6.5296
-v 6.8191 7.8728 6.5150
-v 5.8053 7.7490 6.4263
-v 5.8266 7.5737 6.4281
-v 6.9143 7.4996 5.9479
-v 6.9355 7.3243 5.9497
-v 5.9217 7.2005 5.8610
-v 5.9005 7.3759 5.8592
-v 6.8294 7.8610 6.4138
-v 5.8156 7.7372 6.3251
-v 5.8369 7.5619 6.3269
-v 6.1031 7.3800 7.0278
-v 5.0833 7.3252 6.9386
-v 5.0927 7.1488 6.9394
-v 6.1125 7.2037 7.0286
-v 6.1248 7.7435 6.5564
-v 5.1050 7.6887 6.4671
-v 5.1144 7.5123 6.4680
-v 6.1330 7.7554 6.4550
-v 5.1132 7.7006 6.3657
-v 5.1226 7.5242 6.3666
-v 6.2030 7.3800 5.8856
-v 6.2124 7.2037 5.8865
-v 5.1926 7.1488 5.7972
-v 5.1832 7.3252 5.7964
-v 6.1425 7.7435 6.3537
-v 5.1227 7.6887 6.2645
-v 5.1321 7.5123 6.2653
-v -0.3351 8.0506 6.4645
-v -1.3489 8.1743 6.3758
-v -1.3702 7.9990 6.3739
-v -0.3564 7.8752 6.4626
-v -0.2715 8.2366 5.9967
-v -0.2503 8.4119 5.9986
-v -1.2641 8.5356 5.9099
-v -1.2853 8.3603 5.9080
-v -0.2612 8.2484 5.8955
-v -0.2400 8.4237 5.8974
-v -1.2538 8.5475 5.8087
-v -1.2750 8.3721 5.8068
-v -0.2352 8.0506 5.3224
-v -0.2564 7.8752 5.3205
-v -1.2703 7.9990 5.2318
-v -1.2490 8.1743 5.2337
-v -0.2538 8.2366 5.7941
-v -0.2325 8.4119 5.7959
-v -1.2463 8.5356 5.7072
-v -1.2676 8.3603 5.7054
-v -0.4454 7.9614 6.4549
-v -0.4513 7.7848 6.4543
-v 0.5694 7.7502 6.5436
-v 0.5753 7.9268 6.5442
-v 0.6286 8.2906 6.0755
-v -0.3921 8.3251 5.9862
-v 0.6227 8.1140 6.0750
-v 0.6379 8.3025 5.9742
-v -0.3828 8.3370 5.8849
-v 0.6320 8.1259 5.9737
-v -0.3455 7.9614 5.3127
-v 0.6752 7.9268 5.4020
-v 0.6693 7.7502 5.4015
-v -0.3514 7.7848 5.3122
-v -0.3743 8.3251 5.7835
-v 0.6464 8.2906 5.8728
-v 0.6404 8.1140 5.8723
-v 0.5502 7.8315 6.5420
-v 0.5351 7.6555 6.5406
-v 1.5526 7.5677 6.6297
-v 1.5677 7.7437 6.6310
-v 1.6398 8.1064 6.1640
-v 0.6223 8.1941 6.0749
-v 1.6248 7.9304 6.1626
-v 1.6497 8.1182 6.0627
-v 0.6322 8.2060 5.9737
-v 1.6346 7.9422 6.0614
-v 0.6501 7.8315 5.3998
-v 1.6676 7.7437 5.4889
-v 1.6525 7.5677 5.4875
-v 0.6350 7.6555 5.3985
-v 0.6400 8.1941 5.8723
-v 1.6576 8.1064 5.9613
-v 1.6425 7.9304 5.9600
-v 1.4297 7.6668 6.6189
-v 1.4084 7.4915 6.6170
-v 2.4223 7.3677 6.7057
-v 2.4435 7.5431 6.7076
-v 2.5284 7.9044 6.2417
-v 1.5146 8.0282 6.1530
-v 2.5071 7.7291 6.2398
-v 2.5387 7.9162 6.1405
-v 1.5249 8.0400 6.0518
-v 2.5174 7.7409 6.1386
-v 1.5296 7.6668 5.4768
-v 2.5434 7.5431 5.5655
-v 2.5222 7.3677 5.5636
-v 1.5084 7.4915 5.4749
-v 1.5323 8.0282 5.9503
-v 2.5461 7.9044 6.0390
-v 2.5249 7.7291 6.0372
-v 2.3417 7.4696 6.6987
-v 2.3204 7.2943 6.6968
-v 3.3342 7.1705 6.7855
-v 3.3555 7.3458 6.7874
-v 3.4404 7.7072 6.3215
-v 2.4266 7.8309 6.2328
-v 3.4191 7.5318 6.3196
-v 3.4507 7.7190 6.2203
-v 2.4369 7.8427 6.1316
-v 3.4294 7.5436 6.2184
-v 2.4416 7.4696 5.5566
-v 3.4554 7.3459 5.6453
-v 3.4342 7.1705 5.6434
-v 2.4204 7.2943 5.5547
-v 2.4443 7.8309 6.0301
-v 3.4581 7.7072 6.1188
-v 3.4368 7.5318 6.1170
-v 3.3231 7.2372 6.7846
-v 3.3172 7.0606 6.7840
-v 4.3379 7.0261 6.8733
-v 4.3438 7.2026 6.8739
-v 4.3972 7.5664 6.4052
-v 3.3765 7.6010 6.3159
-v 4.3912 7.3898 6.4047
-v 4.4064 7.5783 6.3039
-v 3.3857 7.6129 6.2146
-v 4.4005 7.4017 6.3034
-v 3.4231 7.2372 5.6424
-v 4.4438 7.2026 5.7317
-v 4.4378 7.0261 5.7312
-v 3.4171 7.0606 5.6419
-v 3.3942 7.6010 6.1132
-v 4.4149 7.5664 6.2025
-v 4.4090 7.3898 6.2020
-v 4.1199 7.1416 6.8543
-v 4.1412 6.9662 6.8561
-v 5.1550 7.0900 6.9448
-v 5.1337 7.2654 6.9430
-v 5.1310 7.6267 6.4694
-v 4.1172 7.5029 6.3807
-v 5.1523 7.4513 6.4713
-v 5.1385 7.6385 6.3679
-v 4.1247 7.5147 6.2793
-v 5.1597 7.4632 6.3698
-v 4.2198 7.1416 5.7121
-v 5.2336 7.2654 5.8008
-v 5.2549 7.0900 5.8027
-v 4.2411 6.9662 5.7140
-v 4.1350 7.5029 6.1780
-v 5.1488 7.6267 6.2667
-v 5.1700 7.4513 6.2686
-v -1.3417 8.2934 6.3764
-v -2.3555 8.4171 6.2877
-v -2.3767 8.2418 6.2859
-v -1.3629 8.1180 6.3746
-v -1.2781 8.4794 5.9087
-v -1.2568 8.6547 5.9105
-v -2.2706 8.7785 5.8218
-v -2.2919 8.6031 5.8200
-v -1.2678 8.4912 5.8075
-v -1.2465 8.6665 5.8093
-v -2.2603 8.7903 5.7206
-v -2.2816 8.6149 5.7188
-v -1.2418 8.2934 5.2343
-v -1.2630 8.1180 5.2325
-v -2.2768 8.2418 5.1438
-v -2.2556 8.4171 5.1456
-v -1.2603 8.4794 5.7060
-v -1.2391 8.6547 5.7079
-v -2.2529 8.7785 5.6192
-v -2.2741 8.6031 5.6173
-v -2.1706 8.5487 6.3039
-v -3.1844 8.6725 6.2152
-v -3.2057 8.4971 6.2134
-v -2.1919 8.3734 6.3021
-v -2.1070 8.7347 5.8362
-v -2.0858 8.9101 5.8380
-v -3.0996 9.0338 5.7493
-v -3.1208 8.8585 5.7475
-v -2.0967 8.7465 5.7349
-v -2.0755 8.9219 5.7368
-v -3.0893 9.0456 5.6481
-v -3.1105 8.8703 5.6463
-v -2.0707 8.5487 5.1618
-v -2.0919 8.3734 5.1599
-v -3.1058 8.4971 5.0712
-v -3.0845 8.6725 5.0731
-v -2.0893 8.7347 5.6335
-v -2.0680 8.9101 5.6353
-v -3.0818 9.0338 5.5466
-v -3.1031 8.8585 5.5448
-v 9.3480 0.3779 10.3237
-v -2.8683 0.3779 9.2549
-v -2.8772 0.3779 9.3562
-v 9.3392 0.3779 10.4250
-v -2.8772 0.0002 9.3562
-v 9.3392 0.0002 10.4250
-v -2.8782 0.3779 6.7747
-v -2.9795 0.3779 6.7658
-v -3.1664 0.3779 8.9028
-v -3.0651 0.3779 8.9117
-v -2.9795 0.0002 6.7658
-v -3.1664 0.0002 8.9028
-v 9.8042 0.3779 10.3477
-v 9.9055 0.3779 10.3566
-v 10.5229 0.3779 3.2996
-v 10.4216 0.3779 3.2907
-v 9.9055 0.0002 10.3566
-v 10.5229 0.0002 3.2996
-v 9.9710 0.3779 3.2033
-v 9.9798 0.3779 3.1020
-v -2.2365 0.3779 2.0332
-v -2.2454 0.3779 2.1345
-v 9.9798 0.0002 3.1020
-v -2.2365 0.0002 2.0332
-v 6.2825 1.3390 10.6899
-v 6.7975 1.3390 10.7349
-v 6.4994 0.0002 11.8820
-v 5.9844 0.0002 11.8370
-v 6.7546 1.6838 11.2254
-v 6.4470 0.0002 12.4808
-v 6.2396 1.6838 11.1803
-v 5.9321 0.0002 12.4357
-v 6.1419 2.4485 10.0377
-v 6.6568 2.4485 10.0827
-v 6.6659 3.3186 9.9788
-v 6.1510 3.3186 9.9337
-v -0.4901 0.0002 11.2705
-v -0.5845 1.3390 10.0891
-v -0.0696 1.3390 10.1341
-v 0.0248 0.0002 11.3156
-v -0.6274 1.6838 10.5795
-v -0.5425 0.0002 11.8693
-v -0.1125 1.6838 10.6246
-v -0.0276 0.0002 11.9143
-v -0.3327 2.4485 9.4712
-v 0.1822 2.4485 9.5163
-v -0.3236 3.3186 9.3673
-v 0.1913 3.3186 9.4123
-v 0.4752 3.2250 2.8977
-v 0.5226 2.5917 0.6116
-v -1.1298 2.5281 1.2709
-v -0.6899 3.2157 2.9125
-v 0.6472 2.3846 -0.1240
-v -1.5696 2.8885 0.0197
-v -3.1039 3.3135 1.9302
-v -2.6769 3.1809 2.7944
-v -2.8102 3.4446 0.1425
-v -1.2386 2.9112 -0.2054
-v -1.2238 2.9112 -0.0365
-v 0.5631 2.5370 -0.1449
-v 0.5430 2.5370 -0.3740
-v 0.4541 2.3467 -0.3662
-v -1.3123 2.7534 -0.1989
-v -1.2976 2.7534 -0.0301
-v 0.4741 2.3467 -0.1371
-v -2.8731 3.5571 0.1826
-v -2.8978 3.5571 -0.0998
-v -3.0074 3.3226 -0.0902
-v -2.9827 3.3226 0.1921
-v 0.6848 2.9267 1.5054
-v 0.8535 2.5525 -0.2762
-v 0.6244 2.5525 -0.2962
-v 0.5160 2.9267 1.4906
-v 0.6784 2.7689 1.5792
-v 0.8457 2.3622 -0.1873
-v 0.5096 2.7689 1.5644
-v 0.6166 2.3622 -0.2073
-v 0.2969 3.5726 3.1399
-v 0.5793 3.5726 3.1646
-v 0.5697 3.3381 3.2742
-v 0.2873 3.3381 3.2495
-v 0.3963 2.6757 -0.1902
-v 0.8470 2.6757 -0.0261
-v 0.9928 2.6757 -0.4266
-v 0.5420 2.6757 -0.5906
-v 0.5420 0.0002 -0.5906
-v 0.5134 1.3380 -0.3170
-v 0.7829 1.3380 -0.2189
-v 0.9928 0.0002 -0.4266
-v 0.3963 0.0002 -0.1902
-v 0.4154 1.3380 -0.0475
-v 0.6848 1.3380 0.0506
-v 0.8470 0.0002 -0.0261
-v -6.7958 5.4344 6.3699
-v -6.7911 8.0770 6.3442
-v -6.7911 8.0770 6.8626
-v -6.7958 5.4344 7.0678
-v -6.7958 10.7195 6.3699
-v -6.7958 10.7195 7.0678
-v -7.3095 8.0770 6.3442
-v -7.4937 5.4344 6.3699
-v -7.4937 10.7195 6.3699
-v -7.3095 8.0770 6.8626
-v -7.4937 5.4344 7.0678
-v -7.4937 10.7195 7.0678
-v -6.7763 11.1923 3.0462
-v -6.7763 11.1923 6.3332
-v -2.9784 11.1924 6.3332
-v -2.9784 11.1923 3.0462
-v -2.6969 11.1924 2.7017
-v -2.6969 11.1924 6.6778
-v -2.6969 0.0002 6.6777
-v -2.6969 0.0002 2.7017
-v -7.0579 11.1923 2.7017
-v -7.0579 0.0002 2.7017
-v -7.0579 11.1924 6.6777
-v -7.0579 0.0002 6.6777
-v -2.9784 11.6198 3.0462
-v -2.9784 11.6355 6.3332
-v -2.6969 11.6355 6.6778
-v -2.6969 11.6198 2.7017
-v -6.7763 11.6198 3.0462
-v -7.0579 11.6198 2.7017
-v -6.7763 11.6355 6.3332
-v -7.0579 11.6355 6.6777
-v -2.7270 0.0002 6.5128
-v -2.7223 2.6427 6.4871
-v -2.7223 2.6427 7.0055
-v -2.7270 0.0002 7.2107
-v -2.7270 5.2853 6.5128
-v -2.7270 5.2853 7.2107
-v -3.2407 2.6427 6.4871
-v -3.4249 0.0002 6.5128
-v -3.4249 5.2853 6.5128
-v -3.2407 2.6427 7.0055
-v -3.4249 0.0002 7.2107
-v -3.4249 5.2853 7.2107
-v -6.7958 0.0002 6.3699
-v -6.7911 2.6427 6.3442
-v -6.7911 2.6427 6.8626
-v -6.7958 0.0002 7.0678
-v -6.7958 5.2853 6.3699
-v -6.7958 5.2853 7.0678
-v -7.3095 2.6427 6.3442
-v -7.4937 0.0002 6.3699
-v -7.4937 5.2853 6.3699
-v -7.3095 2.6427 6.8626
-v -7.4937 0.0002 7.0678
-v -7.4937 5.2853 7.0678
-v -6.9779 0.0002 2.5398
-v -6.9732 2.6427 2.5141
-v -6.9732 2.6427 3.0325
-v -6.9779 0.0002 3.2377
-v -6.9779 5.2853 2.5398
-v -6.9779 5.2853 3.2377
-v -7.4916 2.6427 2.5141
-v -7.6758 0.0002 2.5398
-v -7.6758 5.2853 2.5398
-v -7.4916 2.6427 3.0325
-v -7.6758 0.0002 3.2377
-v -7.6758 5.2853 3.2377
-v -6.9779 5.4344 2.5398
-v -6.9732 8.0770 2.5141
-v -6.9732 8.0770 3.0325
-v -6.9779 5.4344 3.2377
-v -6.9779 10.7195 2.5398
-v -6.9779 10.7195 3.2377
-v -7.4916 8.0770 2.5141
-v -7.6758 5.4344 2.5398
-v -7.6758 10.7195 2.5398
-v -7.4916 8.0770 3.0325
-v -7.6758 5.4344 3.2377
-v -7.6758 10.7195 3.2377
-v -2.0520 11.1446 4.6897
-v -2.0520 11.1446 7.2398
-v -2.0520 10.4007 7.2398
-v -2.0520 10.2636 4.6897
-v -4.8774 11.1446 2.1397
-v -2.0520 11.1446 2.1397
-v -2.0520 10.4007 2.1397
-v -4.8774 10.2636 2.1397
-v -7.7027 11.1446 4.6897
-v -7.7027 11.1446 2.1397
-v -7.7027 10.4007 2.1397
-v -7.7027 10.2636 4.6897
-v -4.8774 11.1446 7.2398
-v -7.7027 11.1446 7.2398
-v -7.7027 10.4007 7.2398
-v -4.8774 10.2636 7.2398
-v -4.8774 10.2636 6.6777
-v -2.6969 10.4007 6.6777
-v -7.0579 10.2636 4.6897
-v -7.0579 10.4007 6.6777
-v -4.8774 10.2636 2.7017
-v -7.0579 10.4007 2.7017
-v -2.6969 10.2636 4.6897
-v -2.6969 10.4007 2.7017
-v -2.6969 11.1446 4.6897
-v -2.6969 11.1446 6.6777
-v -4.8774 11.1446 2.7017
-v -2.6969 11.1446 2.7017
-v -7.0579 11.1446 4.6897
-v -7.0579 11.1446 2.7017
-v -4.8774 11.1446 6.6777
-v -7.0579 11.1446 6.6777
-v -2.0520 5.7104 4.6897
-v -2.0520 5.7104 7.2398
-v -2.0520 4.9664 7.2398
-v -2.0520 4.8293 4.6897
-v -4.8774 5.7104 2.1397
-v -2.0520 5.7104 2.1397
-v -2.0520 4.9664 2.1397
-v -4.8774 4.8293 2.1397
-v -7.7027 5.7104 4.6897
-v -7.7027 5.7104 2.1397
-v -7.7027 4.9664 2.1397
-v -7.7027 4.8293 4.6897
-v -4.8774 5.7104 7.2398
-v -7.7027 5.7104 7.2398
-v -7.7027 4.9664 7.2398
-v -4.8774 4.8293 7.2398
-v -4.8774 4.8293 6.6777
-v -2.6969 4.9664 6.6777
-v -7.0579 4.8293 4.6897
-v -7.0579 4.9664 6.6777
-v -4.8774 4.8293 2.7017
-v -7.0579 4.9664 2.7017
-v -2.6969 4.8293 4.6897
-v -2.6969 4.9664 2.7017
-v -2.6969 5.7104 4.6897
-v -2.6969 5.7104 6.6777
-v -4.8774 5.7104 2.7017
-v -2.6969 5.7104 2.7017
-v -7.0579 5.7104 4.6897
-v -7.0579 5.7104 2.7017
-v -4.8774 5.7104 6.6777
-v -7.0579 5.7104 6.6777
-v -2.9788 5.4344 3.1190
-v -2.9812 8.0770 3.1450
-v -3.0264 8.0770 2.6286
-v -3.0396 5.4344 2.4238
-v -2.9788 10.7195 3.1190
-v -3.0396 10.7195 2.4238
-v -2.4648 8.0770 3.0998
-v -2.2836 5.4344 3.0582
-v -2.2836 10.7195 3.0582
-v -2.5100 8.0770 2.5834
-v -2.3444 5.4344 2.3629
-v -2.3444 10.7195 2.3629
-v -6.5153 13.0097 3.5380
-v -6.4668 13.0097 3.7033
-v -6.2096 12.6417 3.5380
-v -6.3366 13.0097 3.8161
-v -6.1661 13.0155 3.8406
-v -6.0094 13.0155 3.7691
-v -5.9163 13.0097 3.6241
-v -5.9163 13.0097 3.4519
-v -6.0094 13.0097 3.3070
-v -6.1661 13.0097 3.2354
-v -6.3366 13.0097 3.2599
-v -6.4668 13.0097 3.3727
-v -6.6423 11.7965 3.8161
-v -6.4316 12.1656 3.6807
-v -6.4735 12.1656 3.5380
-v -6.7239 11.7965 3.5380
-v -6.4233 11.7965 4.0059
-v -6.3192 12.1656 3.7781
-v -6.1364 11.7965 4.0471
-v -6.1720 12.1656 3.7992
-v -5.8728 11.7965 3.9267
-v -6.0368 12.1656 3.7375
-v -5.7161 11.7965 3.6829
-v -5.9564 12.1656 3.6124
-v -5.7161 11.7965 3.3931
-v -5.9564 12.1656 3.4637
-v -5.8728 11.7965 3.1493
-v -6.0368 12.1656 3.3386
-v -6.1364 11.7965 3.0289
-v -6.1720 12.1656 3.2768
-v -6.4233 11.7965 3.0702
-v -6.3192 12.1656 3.2980
-v -6.6423 11.7965 3.2599
-v -6.4316 12.1656 3.3954
-v -6.6804 11.4811 3.8406
-v -6.7693 11.4811 3.5380
-v -6.4421 11.4811 4.0471
-v -6.1299 11.4811 4.0920
-v -5.8431 11.4811 3.9610
-v -5.6726 11.4811 3.6957
-v -5.6726 11.4811 3.3803
-v -5.8431 11.4811 3.1150
-v -6.1299 11.4811 2.9840
-v -6.4421 11.4811 3.0289
-v -6.6804 11.4811 3.2354
-v -6.5691 11.1913 3.7691
-v -6.6369 11.1913 3.5380
-v -6.3871 11.1913 3.9267
-v -6.1488 11.1913 3.9610
-v -5.9298 11.1913 3.8610
-v -5.7996 11.1913 3.6584
-v -5.7996 11.1913 3.4176
-v -5.9298 11.1913 3.2151
-v -6.1488 11.1913 3.1150
-v -6.3871 11.1913 3.1493
-v -6.5691 11.1913 3.3070
-v -5.6312 12.2475 5.0831
-v -5.6312 12.2475 6.1931
-v -4.5212 12.2475 6.1931
-v -4.5212 12.2475 5.0831
-v -4.5629 11.7199 5.1248
-v -4.5629 11.7199 6.1513
-v -4.5212 11.1924 6.1931
-v -4.5212 11.1924 5.0831
-v -5.5895 11.7199 5.1248
-v -5.6312 11.1924 5.0831
-v -5.5895 11.7199 6.1513
-v -5.6312 11.1924 6.1931
-v -4.9724 13.3027 5.0831
-v -4.9724 13.3027 6.1931
-v -3.8624 13.3027 6.1931
-v -3.8624 13.3027 5.0831
-v -3.9042 12.7751 5.1248
-v -3.9042 12.7751 6.1513
-v -3.8624 12.2475 6.1931
-v -3.8624 12.2475 5.0831
-v -4.9307 12.7751 5.1248
-v -4.9724 12.2475 5.0831
-v -4.9307 12.7751 6.1513
-v -4.9724 12.2475 6.1931
-v -4.3095 12.2475 5.0831
-v -4.3095 12.2475 6.1931
-v -3.1995 12.2475 6.1931
-v -3.1995 12.2475 5.0831
-v -3.2412 11.7199 5.1248
-v -3.2412 11.7199 6.1513
-v -3.1995 11.1924 6.1931
-v -3.1995 11.1924 5.0831
-v -4.2677 11.7199 5.1248
-v -4.3095 11.1924 5.0831
-v -4.2677 11.7199 6.1513
-v -4.3095 11.1924 6.1931
-v -2.1016 1.0554 -10.4453
-v -2.1016 1.0554 -9.3353
-v -0.9916 1.0554 -9.3353
-v -0.9916 1.0554 -10.4453
-v -1.0333 0.5278 -10.4035
-v -1.0333 0.5278 -9.3770
-v -0.9916 0.0002 -9.3353
-v -0.9916 0.0002 -10.4453
-v -2.0599 0.5278 -10.4035
-v -2.1016 0.0002 -10.4453
-v -2.0599 0.5278 -9.3770
-v -2.1016 0.0002 -9.3353
-v -0.4238 9.0911 1.0076
-v -0.7481 9.1307 1.2453
-v -0.7462 8.2490 1.2440
-v -0.4209 8.1698 1.0056
-v 0.8136 8.7366 0.1412
-v 0.8501 9.3745 0.1156
-v 0.5590 9.2199 0.3088
-v 0.5648 8.4275 0.3048
-v 0.2346 8.2590 0.5361
-v 0.2298 9.1357 0.5394
-v -0.0995 9.0515 0.7700
-v -0.0957 8.0906 0.7673
-v -1.0298 9.2376 1.4426
-v -0.7500 10.0124 1.2467
-v -1.0784 10.0124 1.4766
-v -0.4267 10.0124 1.0097
-v -0.4392 10.5501 0.9784
-v -0.7754 10.5323 1.2333
-v 0.8866 10.0124 0.0901
-v 0.9081 11.0342 -0.0655
-v 0.5695 10.8552 0.1951
-v 0.5533 10.0124 0.3129
-v 0.2250 10.0124 0.5428
-v 0.2333 10.7115 0.4593
-v -0.1030 10.5679 0.7235
-v -0.1033 10.0124 0.7727
-v -1.1141 10.6391 1.4846
-v -0.8008 11.0523 1.2199
-v -1.1499 11.2658 1.4927
-v 1.1412 9.5290 -0.0776
-v 1.2199 10.0124 -0.1327
-v -1.2163 8.6765 1.5731
-v -0.9812 8.4627 1.4086
-v -1.3115 9.3444 1.6398
-v -0.4517 11.0878 0.9471
-v -0.1026 11.1234 0.6743
-v 0.9297 12.0560 -0.2212
-v 1.2468 11.2131 -0.3262
-v 1.2737 12.4139 -0.5197
-v 0.2415 11.4107 0.3758
-v 0.5856 11.6980 0.0773
-v -1.4067 10.0124 1.7065
-v -1.4529 10.7459 1.7360
-v 1.0625 9.0457 -0.0225
-v -1.4990 11.4794 1.7655
-v 1.2550 12.4098 -0.5440
-v -2.8087 10.9913 2.8559
-v -2.8274 10.9872 2.8316
-v 1.2409 12.4366 -0.5498
-v -2.8415 11.0140 2.8258
-v 1.2508 12.4573 -0.5291
-v -2.8316 11.0347 2.8465
-v 1.2711 12.4433 -0.5105
-v -2.8113 11.0207 2.8651
-v -9.3037 6.0183 6.5129
-v -9.2221 5.9964 6.4478
-v -10.8287 0.0002 6.1684
-v -10.9648 0.0221 6.2770
-v -9.2725 6.0099 6.6182
-v -10.9128 0.0137 6.4526
-v -9.1716 5.9829 6.6182
-v -10.7447 -0.0133 6.4526
-v -9.1405 5.9745 6.5129
-v -10.6927 -0.0217 6.2770
-v -7.6658 12.0061 6.4018
-v -7.5650 11.9791 6.4018
-v -7.5338 11.9708 6.2964
-v -7.6970 12.0145 6.2964
-v -7.6154 11.9926 6.2313
-v -8.4187 8.9945 6.3155
-v -8.5003 9.0164 6.3806
-v -8.4692 9.0080 6.4860
-v -8.3683 8.9810 6.4860
-v -8.3371 8.9727 6.3806
-v -7.7049 11.7782 4.9479
-v -7.6811 11.7472 4.9479
-v -7.6812 11.7472 6.3000
-v -7.7049 11.7782 6.3000
-v -7.6835 11.8125 4.9479
-v -7.6835 11.8125 6.3000
-v -7.6465 11.8026 4.9479
-v -7.6465 11.8026 6.3000
-v -7.6451 11.7622 4.9479
-v -7.6451 11.7622 6.3000
-v -9.3037 6.0183 5.0900
-v -9.2221 5.9964 5.0249
-v -10.8287 0.0002 4.7556
-v -10.9560 0.0221 4.8572
-v -9.2725 6.0099 5.1954
-v -10.9074 0.0137 5.0216
-v -9.1716 5.9829 5.1954
-v -10.7501 -0.0133 5.0216
-v -9.1405 5.9745 5.0900
-v -10.7014 -0.0217 4.8572
-v -7.6658 12.0061 4.9789
-v -7.5650 11.9791 4.9789
-v -7.5338 11.9708 4.8735
-v -7.6970 12.0145 4.8735
-v -7.6154 11.9926 4.8084
-v -8.4187 8.9945 4.8926
-v -8.5003 9.0164 4.9577
-v -8.4692 9.0080 5.0631
-v -8.3683 8.9810 5.0631
-v -8.3371 8.9727 4.9577
-v -7.8916 11.0814 4.9479
-v -7.8679 11.0503 4.9479
-v -7.8679 11.0503 6.3000
-v -7.8916 11.0814 6.3000
-v -7.8702 11.1156 4.9479
-v -7.8702 11.1156 6.3000
-v -7.8332 11.1057 4.9479
-v -7.8332 11.1057 6.3000
-v -7.8318 11.0654 4.9479
-v -7.8318 11.0654 6.3000
-v -2.9837 8.0770 6.8093
-v -2.9837 8.0770 6.2910
-v -2.9790 5.4344 6.3166
-v -2.9790 5.4344 7.0145
-v -2.9790 10.7195 6.3166
-v -2.9790 10.7195 7.0145
-v -2.4653 8.0770 6.2910
-v -2.2811 5.4344 6.3166
-v -2.2811 10.7195 6.3166
-v -2.4653 8.0770 6.8093
-v -2.2811 5.4344 7.0145
-v -2.2811 10.7195 7.0145
-v -8.2650 9.6877 4.9479
-v -8.2413 9.6567 4.9479
-v -8.2413 9.6567 6.3000
-v -8.2650 9.6877 6.3000
-v -8.2436 9.7220 4.9479
-v -8.2436 9.7220 6.3000
-v -8.2067 9.7121 4.9479
-v -8.2067 9.7121 6.3000
-v -8.2052 9.6717 4.9479
-v -8.2052 9.6717 6.3000
-v -8.4517 8.9909 5.0144
-v -8.4280 8.9599 5.0144
-v -8.4280 8.9599 6.3665
-v -8.4517 8.9909 6.3665
-v -8.4303 9.0251 5.0144
-v -8.4303 9.0251 6.3665
-v -8.3934 9.0152 5.0144
-v -8.3934 9.0152 6.3665
-v -8.3919 8.9749 5.0144
-v -8.3919 8.9749 6.3665
-v -8.6384 8.2941 5.0875
-v -8.6147 8.2630 5.0875
-v -8.6147 8.2630 6.4396
-v -8.6384 8.2941 6.4396
-v -8.6170 8.3283 5.0875
-v -8.6170 8.3283 6.4396
-v -8.5801 8.3184 5.0875
-v -8.5801 8.3184 6.4396
-v -8.5787 8.2781 5.0875
-v -8.5787 8.2781 6.4396
-v -8.8252 7.5972 5.0440
-v -8.8014 7.5662 5.0440
-v -8.8014 7.5662 6.3961
-v -8.8252 7.5972 6.3961
-v -8.8038 7.6315 5.0440
-v -8.8038 7.6315 6.3961
-v -8.7668 7.6216 5.0440
-v -8.7668 7.6216 6.3961
-v -8.7654 7.5812 5.0440
-v -8.7654 7.5812 6.3961
-v -9.1986 6.2036 5.1576
-v -9.1749 6.1725 5.1576
-v -9.1749 6.1725 6.5097
-v -9.1986 6.2036 6.5097
-v -9.1772 6.2378 5.1576
-v -9.1772 6.2378 6.5097
-v -9.1402 6.2279 5.1576
-v -9.1402 6.2279 6.5097
-v -9.1388 6.1876 5.1576
-v -9.1388 6.1876 6.5097
-v -9.5720 4.8099 5.1447
-v -9.5483 4.7789 5.1447
-v -9.5483 4.7789 6.4968
-v -9.5720 4.8099 6.4968
-v -9.5506 4.8442 5.1447
-v -9.5506 4.8442 6.4968
-v -9.5137 4.8343 5.1447
-v -9.5137 4.8343 6.4968
-v -9.5122 4.7939 5.1447
-v -9.5122 4.7939 6.4968
-v -9.3853 5.5068 5.1362
-v -9.3616 5.4757 5.1362
-v -9.3616 5.4757 6.4883
-v -9.3853 5.5068 6.4883
-v -9.3639 5.5410 5.1362
-v -9.3639 5.5410 6.4883
-v -9.3269 5.5311 5.1362
-v -9.3269 5.5311 6.4883
-v -9.3255 5.4907 5.1362
-v -9.3255 5.4907 6.4883
-v -9.0119 6.9004 5.0881
-v -8.9882 6.8694 5.0881
-v -8.9882 6.8694 6.4401
-v -9.0119 6.9004 6.4401
-v -8.9905 6.9346 5.0881
-v -8.9905 6.9346 6.4401
-v -8.9535 6.9247 5.0881
-v -8.9535 6.9247 6.4401
-v -8.9521 6.8844 5.0881
-v -8.9521 6.8844 6.4401
-v -9.7587 4.1131 5.1029
-v -9.7350 4.0820 5.1029
-v -9.7350 4.0820 6.4550
-v -9.7587 4.1131 6.4550
-v -9.7373 4.1473 5.1029
-v -9.7373 4.1473 6.4550
-v -9.7004 4.1374 5.1029
-v -9.7004 4.1374 6.4550
-v -9.6989 4.0971 5.1029
-v -9.6989 4.0971 6.4550
-v -9.9455 3.4163 5.0642
-v -9.9217 3.3852 5.0642
-v -9.9217 3.3852 6.4163
-v -9.9455 3.4163 6.4163
-v -9.9240 3.4505 5.0642
-v -9.9240 3.4505 6.4163
-v -9.8871 3.4406 5.0642
-v -9.8871 3.4406 6.4163
-v -9.8857 3.4002 5.0642
-v -9.8857 3.4002 6.4163
-v -10.1322 2.7194 5.1111
-v -10.1084 2.6884 5.1111
-v -10.1084 2.6884 6.4632
-v -10.1322 2.7194 6.4632
-v -10.1108 2.7537 5.1111
-v -10.1108 2.7537 6.4632
-v -10.0738 2.7438 5.1111
-v -10.0738 2.7438 6.4632
-v -10.0724 2.7034 5.1111
-v -10.0724 2.7034 6.4632
-v -10.3189 2.0226 5.0244
-v -10.2952 1.9915 5.0244
-v -10.2952 1.9915 6.3764
-v -10.3189 2.0226 6.3764
-v -10.2975 2.0568 5.0244
-v -10.2975 2.0568 6.3764
-v -10.2605 2.0469 5.0244
-v -10.2605 2.0469 6.3764
-v -10.2591 2.0066 5.0244
-v -10.2591 2.0066 6.3764
-v -10.5056 1.3258 4.9479
-v -10.4819 1.2947 4.9479
-v -10.4819 1.2947 6.3000
-v -10.5056 1.3258 6.3000
-v -10.4842 1.3600 4.9479
-v -10.4842 1.3600 6.3000
-v -10.4472 1.3501 4.9479
-v -10.4472 1.3501 6.3000
-v -10.4458 1.3098 4.9479
-v -10.4458 1.3098 6.3000
-v -10.6923 0.6289 4.9479
-v -10.6686 0.5979 4.9479
-v -10.6686 0.5979 6.3000
-v -10.6923 0.6289 6.3000
-v -10.6709 0.6632 4.9479
-v -10.6709 0.6632 6.3000
-v -10.6340 0.6533 4.9479
-v -10.6340 0.6533 6.3000
-v -10.6325 0.6129 4.9479
-v -10.6325 0.6129 6.3000
-v -2.5116 2.8029 2.1331
-v -2.2308 0.5479 2.1282
-v -2.7703 0.5479 1.6755
-v -2.8164 2.8029 1.8774
-v -2.7703 5.0580 1.6755
-v -2.2308 5.0580 2.1282
-v -2.7703 2.8029 2.4415
-v -2.6888 0.5479 2.6741
-v -2.6888 5.5387 2.6741
-v -3.0751 2.8029 2.1857
-v -3.2284 0.5479 2.2214
-v -3.2284 5.5387 2.2214
-v -8.0783 10.3846 4.9479
-v -8.0546 10.3535 4.9479
-v -8.0546 10.3535 6.3000
-v -8.0783 10.3846 6.3000
-v -8.0569 10.4188 4.9479
-v -8.0569 10.4188 6.3000
-v -8.0199 10.4089 4.9479
-v -8.0199 10.4089 6.3000
-v -8.0185 10.3685 4.9479
-v -8.0185 10.3685 6.3000
-v -0.4624 0.6639 -8.4482
-v -0.4624 1.1792 -8.4482
-v 0.9419 0.5798 -8.4482
-v 0.9419 0.4156 -8.4482
-v -0.4624 1.0343 -6.6030
-v -0.4624 0.5190 -6.6030
-v -0.3985 1.2576 -8.3389
-v 0.8795 0.6805 -8.3389
-v 0.9426 0.6693 -8.4482
-v -0.4617 1.2687 -8.4482
-v -0.4617 1.1238 -6.6030
-v -0.3985 1.1127 -6.6030
-v 0.8795 0.5356 -6.6030
-v 0.8787 0.5909 -8.3389
-v 0.8787 0.4585 -6.6030
-v -0.3993 1.1680 -8.3389
-v 0.7683 0.5204 -6.4465
-v -0.2351 1.0678 -6.4465
-v -0.2351 1.0443 -5.0016
-v 0.7683 0.4970 -5.0016
-v 0.9419 0.4348 -6.6030
-v 0.9419 0.4067 -4.8671
-v 0.9419 0.2426 -4.8671
-v 0.9419 0.2707 -6.6030
-v 0.8795 0.5074 -4.8671
-v 0.9426 0.4962 -4.8671
-v 0.9426 0.5244 -6.6030
-v -0.3985 1.0845 -4.8671
-v -0.3993 1.0195 -4.8671
-v -0.3993 1.0195 -6.6030
-v -0.4624 1.0061 -4.8671
-v -0.4624 0.4908 -4.8671
-v -0.4617 1.0957 -4.8671
-v 0.8787 0.4351 -4.8671
-v 0.7657 0.6533 -8.1839
-v -0.2352 1.2001 -8.1839
-v -0.2352 1.0782 -6.7233
-v 0.7657 0.5313 -6.7233
-v 0.7414 0.4585 -6.4575
-v 0.7414 0.4351 -5.0126
-v 0.7517 0.4351 -4.8671
-v -0.2607 1.1414 -8.2012
-v 0.7402 0.5946 -8.2012
-v -0.2607 1.0195 -6.7406
-v 0.7402 0.4726 -6.7406
-v 0.7402 0.4585 -6.6030
-v -0.2620 1.0059 -6.4575
-v -0.2620 0.9525 -5.0065
-v -0.2607 1.0059 -6.6030
-v 0.9419 0.5798 -1.2860
-v -0.4624 1.1792 -1.2860
-v -0.4624 0.6639 -1.2860
-v 0.9419 0.4156 -1.2860
-v -0.4624 1.0343 -3.1312
-v -0.4624 0.5190 -3.1312
-v -0.3985 1.2576 -1.3954
-v -0.4617 1.2688 -1.2860
-v 0.9426 0.6693 -1.2860
-v 0.8795 0.6805 -1.3954
-v -0.3985 1.1127 -3.1312
-v -0.4617 1.1238 -3.1312
-v 0.8795 0.5356 -3.1312
-v 0.8787 0.4585 -3.1312
-v 0.8787 0.5909 -1.3954
-v -0.3993 1.1680 -1.3954
-v -0.2351 1.0443 -4.7326
-v -0.2351 1.0678 -3.2877
-v 0.7683 0.5204 -3.2877
-v 0.7683 0.4970 -4.7326
-v 0.9419 0.4348 -3.1312
-v 0.9419 0.2707 -3.1312
-v 0.9426 0.5244 -3.1312
-v -0.3993 1.0195 -3.1312
-v -0.2352 1.0782 -3.0109
-v -0.2352 1.2001 -1.5503
-v 0.7657 0.6533 -1.5503
-v 0.7657 0.5313 -3.0109
-v 0.7414 0.4585 -3.2767
-v 0.7414 0.4351 -4.7216
-v -0.2607 1.1414 -1.5330
-v 0.7402 0.5946 -1.5330
-v -0.2607 1.0195 -2.9936
-v 0.7402 0.4726 -2.9936
-v 0.7402 0.4585 -3.1312
-v -0.2620 1.0059 -3.2767
-v -0.2620 0.9525 -4.7277
-v -0.2607 1.0059 -3.1312
-v 0.3667 0.9579 -7.4260
-v 0.4136 0.8449 -7.4260
-v 0.5265 0.9579 -7.3598
-v 0.5265 0.7981 -7.4260
-v 0.6395 0.8449 -7.4260
-v 0.6863 0.9579 -7.4260
-v 0.6395 1.0709 -7.4260
-v 0.5265 1.1177 -7.4260
-v 0.4136 1.0709 -7.4260
-v 0.3667 0.7981 -7.5858
-v 0.3006 0.9579 -7.5858
-v 0.6863 0.7981 -7.5858
-v 0.5265 0.7319 -7.5858
-v 0.7525 0.9579 -7.5858
-v 0.6863 1.1177 -7.5858
-v 0.5265 1.1839 -7.5858
-v 0.3667 1.1177 -7.5858
-v 0.4136 0.8449 -7.7456
-v 0.3667 0.9579 -7.7456
-v 0.6395 0.8449 -7.7456
-v 0.5265 0.7981 -7.7456
-v 0.6863 0.9579 -7.7456
-v 0.6395 1.0709 -7.7456
-v 0.5265 1.1177 -7.7456
-v 0.4136 1.0709 -7.7456
-v 0.5265 0.9579 -7.8118
-v 0.0422 1.0581 -7.1382
-v 0.0890 0.9451 -7.1382
-v 0.2020 1.0581 -7.0720
-v 0.2020 0.8983 -7.1382
-v 0.3150 0.9451 -7.1382
-v 0.3618 1.0581 -7.1382
-v 0.3150 1.1711 -7.1382
-v 0.2020 1.2179 -7.1382
-v 0.0890 1.1711 -7.1382
-v 0.0422 0.8983 -7.2980
-v -0.0240 1.0581 -7.2980
-v 0.3618 0.8983 -7.2980
-v 0.2020 0.8322 -7.2980
-v 0.4280 1.0581 -7.2980
-v 0.3618 1.2179 -7.2980
-v 0.2020 1.2841 -7.2980
-v 0.0422 1.2179 -7.2980
-v 0.0890 0.9451 -7.4578
-v 0.0422 1.0581 -7.4578
-v 0.3150 0.9451 -7.4578
-v 0.2020 0.8983 -7.4578
-v 0.3618 1.0581 -7.4578
-v 0.3150 1.1711 -7.4578
-v 0.2020 1.2179 -7.4578
-v 0.0890 1.1711 -7.4578
-v 0.2020 1.0581 -7.5240
-v 0.3667 0.9579 -6.8213
-v 0.4136 0.8449 -6.8213
-v 0.5265 0.9579 -6.7551
-v 0.5265 0.7981 -6.8213
-v 0.6395 0.8449 -6.8213
-v 0.6863 0.9579 -6.8213
-v 0.6395 1.0709 -6.8213
-v 0.5265 1.1177 -6.8213
-v 0.4136 1.0709 -6.8213
-v 0.3667 0.7981 -6.9811
-v 0.3006 0.9579 -6.9811
-v 0.6863 0.7981 -6.9811
-v 0.5265 0.7319 -6.9811
-v 0.7525 0.9579 -6.9811
-v 0.6863 1.1177 -6.9811
-v 0.5265 1.1839 -6.9811
-v 0.3667 1.1177 -6.9811
-v 0.4136 0.8449 -7.1409
-v 0.3667 0.9579 -7.1409
-v 0.6395 0.8449 -7.1409
-v 0.5265 0.7981 -7.1409
-v 0.6863 0.9579 -7.1409
-v 0.6395 1.0709 -7.1409
-v 0.5265 1.1177 -7.1409
-v 0.4136 1.0709 -7.1409
-v 0.5265 0.9579 -7.2071
-v 1.1147 -0.1222 -7.2632
-v 1.1615 -0.1949 -7.3498
-v 1.2745 -0.1729 -7.2207
-v 1.2745 -0.2249 -7.3856
-v 1.3875 -0.1949 -7.3498
-v 1.4343 -0.1222 -7.2632
-v 1.3875 -0.0496 -7.1766
-v 1.2745 -0.0195 -7.1408
-v 1.1615 -0.0496 -7.1766
-v 1.1147 -0.1025 -7.4883
-v 1.0485 0.0002 -7.3659
-v 1.2745 -0.1451 -7.5390
-v 1.4343 -0.1025 -7.4883
-v 1.5005 0.0002 -7.3659
-v 1.4343 0.1029 -7.2435
-v 1.2745 0.1455 -7.1928
-v 1.1147 0.1029 -7.2435
-v 0.9039 0.2883 -8.3941
-v 0.9039 0.2883 -8.3135
-v 0.9392 0.0002 -8.3242
-v 0.9392 0.0002 -8.4305
-v 0.8329 0.0002 -8.4305
-v 0.8232 0.2883 -8.3941
-v 0.8329 0.0002 -8.3242
-v 0.8232 0.2883 -8.3135
-v 0.9392 0.5764 -8.3242
-v 0.9392 0.5764 -8.4305
-v 0.8329 0.5764 -8.4305
-v 0.8329 0.5764 -8.3242
-v -0.2959 0.3757 -8.3941
-v -0.2959 0.3757 -8.3135
-v -0.2606 0.0002 -8.3242
-v -0.2606 0.0002 -8.4305
-v -0.3668 0.0002 -8.4305
-v -0.3766 0.3757 -8.3941
-v -0.3668 0.0002 -8.3242
-v -0.3766 0.3757 -8.3135
-v -0.2606 0.7511 -8.3242
-v -0.2606 0.7511 -8.4305
-v -0.3668 0.7511 -8.4305
-v -0.3668 0.7511 -8.3242
-v 0.9039 0.2883 -1.3718
-v 0.9392 0.0002 -1.3355
-v 0.9392 0.0002 -1.4417
-v 0.9039 0.2883 -1.4525
-v 0.8232 0.2883 -1.3718
-v 0.8329 0.0002 -1.3355
-v 0.8232 0.2883 -1.4525
-v 0.8329 0.0002 -1.4417
-v 0.9392 0.5764 -1.4417
-v 0.9392 0.5764 -1.3355
-v 0.8329 0.5764 -1.3355
-v 0.8329 0.5764 -1.4417
-v 1.4770 0.6639 0.6729
-v 1.4770 1.1792 0.6729
-v 1.4770 0.5798 -0.7314
-v 1.4770 0.4156 -0.7314
-v 3.3223 1.0343 0.6729
-v 3.3223 0.5190 0.6729
-v 1.5864 1.2576 0.6090
-v 1.5864 0.6805 -0.6690
-v 1.4770 0.6693 -0.7321
-v 1.4770 1.2688 0.6721
-v 3.3223 1.1238 0.6721
-v 3.3223 1.1127 0.6090
-v 3.3223 0.5356 -0.6690
-v 1.5864 0.5909 -0.6683
-v 3.3223 0.4585 -0.6683
-v 1.5864 1.1680 0.6097
-v 3.4787 0.5204 -0.5578
-v 3.4787 1.0678 0.4456
-v 4.9236 1.0443 0.4456
-v 4.9236 0.4970 -0.5578
-v 3.3223 0.4348 -0.7314
-v 5.0581 0.4067 -0.7314
-v 5.0581 0.2426 -0.7314
-v 3.3223 0.2707 -0.7314
-v 5.0581 0.5074 -0.6690
-v 5.0581 0.4962 -0.7321
-v 3.3223 0.5244 -0.7321
-v 5.0581 1.0845 0.6090
-v 5.0581 1.0195 0.6097
-v 3.3223 1.0195 0.6097
-v 5.0581 1.0061 0.6729
-v 5.0581 0.4908 0.6729
-v 5.0581 1.0957 0.6721
-v 5.0581 0.4351 -0.6683
-v 1.7413 0.6533 -0.5552
-v 1.7413 1.2001 0.4457
-v 3.2019 1.0782 0.4457
-v 3.2019 0.5313 -0.5552
-v 3.4678 0.4585 -0.5310
-v 4.9126 0.4351 -0.5310
-v 5.0581 0.4351 -0.5413
-v 1.7240 1.1414 0.4712
-v 1.7240 0.5946 -0.5297
-v 3.1846 1.0195 0.4712
-v 3.1846 0.4726 -0.5297
-v 3.3223 0.4585 -0.5297
-v 3.4678 1.0059 0.4724
-v 4.9188 0.9525 0.4724
-v 3.3223 1.0059 0.4712
-v 8.6393 0.5798 -0.7314
-v 8.6393 1.1792 0.6729
-v 8.6393 0.6639 0.6729
-v 8.6393 0.4156 -0.7314
-v 6.7940 1.0343 0.6729
-v 6.7940 0.5190 0.6729
-v 8.5299 1.2576 0.6090
-v 8.6393 1.2688 0.6721
-v 8.6393 0.6693 -0.7321
-v 8.5299 0.6805 -0.6690
-v 6.7940 1.1127 0.6090
-v 6.7940 1.1238 0.6721
-v 6.7940 0.5356 -0.6690
-v 6.7940 0.4585 -0.6683
-v 8.5299 0.5909 -0.6683
-v 8.5299 1.1680 0.6097
-v 5.1927 1.0443 0.4456
-v 6.6376 1.0678 0.4456
-v 6.6376 0.5204 -0.5578
-v 5.1927 0.4970 -0.5578
-v 6.7940 0.4348 -0.7314
-v 6.7940 0.2707 -0.7314
-v 6.7940 0.5244 -0.7321
-v 6.7940 1.0195 0.6097
-v 6.9144 1.0782 0.4457
-v 8.3750 1.2001 0.4457
-v 8.3750 0.6533 -0.5552
-v 6.9144 0.5313 -0.5552
-v 6.6485 0.4585 -0.5310
-v 5.2036 0.4351 -0.5310
-v 8.3922 1.1414 0.4712
-v 8.3922 0.5946 -0.5297
-v 6.9316 1.0195 0.4712
-v 6.9316 0.4726 -0.5297
-v 6.7940 0.4585 -0.5297
-v 6.6485 1.0059 0.4724
-v 5.1975 0.9525 0.4724
-v 6.7940 1.0059 0.4712
-v 1.5311 0.2883 -0.6934
-v 1.6118 0.2883 -0.6934
-v 1.6010 0.0002 -0.7287
-v 1.4947 0.0002 -0.7287
-v 1.4947 0.0002 -0.6225
-v 1.5311 0.2883 -0.6127
-v 1.6010 0.0002 -0.6225
-v 1.6118 0.2883 -0.6127
-v 1.6010 0.5764 -0.7287
-v 1.4947 0.5764 -0.7287
-v 1.4947 0.5764 -0.6225
-v 1.6010 0.5764 -0.6225
-v 8.5534 0.2883 -0.6934
-v 8.5898 0.0002 -0.7287
-v 8.4835 0.0002 -0.7287
-v 8.4727 0.2883 -0.6934
-v 8.5534 0.2883 -0.6127
-v 8.5898 0.0002 -0.6225
-v 8.4727 0.2883 -0.6127
-v 8.4835 0.0002 -0.6225
-v 8.4835 0.5764 -0.7287
-v 8.5898 0.5764 -0.7287
-v 8.5898 0.5764 -0.6225
-v 8.4835 0.5764 -0.6225
-v 8.5309 0.3757 0.5064
-v 8.6116 0.3757 0.5064
-v 8.6008 0.0002 0.4710
-v 8.4946 0.0002 0.4710
-v 8.4946 0.0002 0.5773
-v 8.5309 0.3757 0.5870
-v 8.6008 0.0002 0.5773
-v 8.6116 0.3757 0.5870
-v 8.6008 0.7511 0.4710
-v 8.4946 0.7511 0.4710
-v 8.4946 0.7511 0.5773
-v 8.6008 0.7511 0.5773
-# 2114 vertices
-
-vn 0.0135 0.9890 -0.1472
-vn 0.0265 0.9811 -0.1915
-vn 0.0343 0.9897 -0.1389
-vn 0.0088 0.9885 -0.1511
-vn 0.0132 0.9813 -0.1923
-vn 0.0130 0.9890 -0.1472
-vn -0.0074 0.9871 -0.1602
-vn 0.0084 0.9868 -0.1617
-vn 0.0296 0.9851 -0.1694
-vn 0.0423 0.9755 -0.2159
-vn 0.0010 0.9852 -0.1717
-vn -0.0153 0.9773 -0.2113
-vn 0.0486 0.9565 -0.2876
-vn 0.0664 0.9545 -0.2906
-vn 0.0082 0.9566 -0.2914
-vn -0.0177 0.9650 -0.2617
-vn 0.0456 0.9392 -0.3403
-vn 0.0534 0.9486 -0.3121
-vn 0.0320 0.9392 -0.3418
-vn 0.0217 0.9641 -0.2647
-vn 0.7309 0.6762 -0.0923
-vn 0.6082 0.7906 -0.0702
-vn -0.5892 0.7907 -0.1663
-vn -0.7004 0.6803 -0.2159
-vn 0.6800 -0.7039 0.2052
-vn 0.7681 -0.6150 0.1785
-vn -0.7015 -0.7078 0.0832
-vn -0.7927 -0.6074 0.0519
-vn -0.7481 0.6065 -0.2693
-vn 0.7787 0.6144 -0.1266
-vn 0.6121 -0.7546 0.2365
-vn -0.6447 -0.7553 0.1175
-vn 0.5398 0.5886 0.6019
-vn 0.6298 0.5285 -0.5693
-vn -0.5283 0.5227 -0.6691
-vn -0.6435 0.5818 0.4974
-vn 0.7933 0.0000 -0.6089
-vn 0.7351 0.1309 -0.6652
-vn -0.6128 0.1464 -0.7765
-vn -0.6699 -0.0000 -0.7425
-vn 0.6184 0.0000 0.7859
-vn 0.6674 -0.0308 0.7441
-vn -0.7403 -0.0000 0.6723
-vn -0.7914 -0.0125 0.6112
-vn 0.8663 0.4993 0.0145
-vn -0.0156 0.9999 0.0053
-vn -0.0237 0.9882 -0.1511
-vn 0.8851 0.4651 0.0153
-vn -0.0042 0.9878 0.1556
-vn -0.8945 0.4464 -0.0229
-vn -0.8736 0.4860 -0.0229
-vn 0.4646 -0.8851 0.0267
-vn 0.4990 -0.8662 0.0267
-vn -0.0504 -0.3407 -0.9388
-vn 0.0031 0.8403 -0.5420
-vn 0.8256 0.3438 -0.4475
-vn 0.3418 -0.7581 -0.5554
-vn -0.7897 0.2845 -0.5436
-vn -0.3254 -0.8004 -0.5035
-vn -0.4463 -0.8948 -0.0114
-vn -0.4860 -0.8739 -0.0130
-vn 0.0504 -0.3664 0.9291
-vn -0.0195 0.8638 0.5035
-vn -0.7132 0.2945 0.6361
-vn -0.3239 -0.7703 0.5493
-vn 0.7201 0.3096 0.6209
-vn 0.3250 -0.7693 0.5500
-vn 0.0237 -0.9882 0.1511
-vn 0.0156 -0.9999 -0.0053
-vn 0.8919 0.4520 0.0160
-vn 0.4516 -0.8918 0.0259
-vn 0.0034 -0.9878 -0.1556
-vn -0.6115 -0.4809 -0.6283
-vn -0.5722 0.6865 -0.4486
-vn 0.5707 0.6755 -0.4669
-vn 0.6072 -0.4795 -0.6336
-vn 0.6848 -0.7208 -0.1072
-vn 0.7274 0.6486 0.2239
-vn 0.7192 0.6808 0.1389
-vn 0.6627 -0.7476 -0.0443
-vn -0.6873 -0.7135 -0.1362
-vn -0.6935 -0.7165 -0.0755
-vn -0.7458 0.6588 0.0984
-vn -0.7268 0.6617 0.1843
-vn -0.0366 -0.0859 -0.9956
-vn -0.0359 -0.0858 -0.9957
-vn 0.6649 0.0000 -0.7469
-vn 0.7033 0.0000 -0.7109
-vn -0.5485 -0.0000 0.8361
-vn -0.6858 -0.0000 -0.7278
-vn -0.7107 -0.0000 -0.7035
-vn -0.7033 -0.0000 0.7109
-vn 0.9997 0.0000 0.0259
-vn 0.0370 0.0000 0.9993
-vn 0.7225 -0.3788 -0.5783
-vn -0.0019 -0.8215 -0.5703
-vn -0.0320 0.6989 -0.7145
-vn 0.5859 0.5261 -0.6164
-vn -0.7068 0.7071 -0.0183
-vn -0.7068 -0.7071 -0.0183
-vn -0.7213 -0.6923 -0.0187
-vn -0.7210 0.6927 -0.0187
-vn -0.0027 0.8048 -0.5936
-vn -0.7086 0.3271 -0.6252
-vn -0.9038 0.4273 -0.0236
-vn -0.0240 0.9997 -0.0008
-vn 0.7068 -0.7071 0.0183
-vn 0.7068 0.7071 0.0183
-vn 0.6928 0.7209 0.0179
-vn 0.6928 -0.7209 0.0179
-vn 0.0000 -1.0000 -0.0000
-vn 0.0404 -0.9992 0.0011
-vn 0.0420 -0.9991 0.0011
-vn -0.0031 -1.0000 0.0000
-vn 0.0164 0.7193 -0.6945
-vn 0.0351 0.7011 -0.7122
-vn -0.0557 -0.6963 -0.7156
-vn -0.0443 -0.4832 -0.8744
-vn 0.4696 -0.3061 -0.8281
-vn 0.0008 -0.6981 -0.7160
-vn -0.0805 0.7054 -0.7042
-vn -0.0492 0.7136 -0.6989
-vn -0.0229 -0.7244 -0.6890
-vn -0.0366 0.6888 -0.7240
-vn -0.7321 -0.3736 -0.5696
-vn -0.5955 0.5250 -0.6081
-vn 0.6985 0.3294 -0.6352
-vn 0.8969 0.4417 0.0233
-vn -0.0404 -0.9992 -0.0011
-vn -0.0389 -0.9992 -0.0011
-vn -0.4967 -0.2784 -0.8221
-vn 0.3800 0.8850 -0.2689
-vn -0.4028 0.8657 -0.2972
-vn -0.0114 0.9999 -0.0004
-vn 0.2930 0.9038 -0.3120
-vn 0.7000 0.7139 0.0183
-vn -0.3109 0.8885 -0.3376
-vn -0.6710 0.7412 -0.0175
-vn -0.5787 0.5808 -0.5726
-vn -0.5787 -0.5808 -0.5726
-vn 0.5757 -0.5742 -0.5821
-vn 0.5757 0.5742 -0.5821
-vn 0.7234 -0.0792 -0.6859
-vn 0.9941 -0.1050 0.0259
-vn 0.6760 -0.0743 -0.7332
-vn 0.7175 0.0654 -0.6935
-vn -0.7255 0.0617 -0.6855
-vn -0.6889 0.0583 -0.7225
-vn 0.6809 0.0623 -0.7297
-vn -0.9942 -0.1045 -0.0252
-vn -0.7328 -0.0749 -0.6763
-vn -0.6843 -0.0695 -0.7259
-vn -0.9942 -0.1046 -0.0259
-vn 0.6832 0.0628 -0.7275
-vn 0.7205 0.0660 -0.6903
-vn -0.7283 0.0622 -0.6825
-vn -0.6908 0.0588 -0.7206
-vn 0.7373 -0.0758 -0.6714
-vn 0.6969 -0.0659 0.7141
-vn 0.6977 -0.0956 0.7099
-vn 0.6433 0.0724 -0.7622
-vn -0.7342 0.0777 -0.6744
-vn -0.6902 0.2141 -0.6912
-vn -0.7418 0.0796 0.6659
-vn -0.6779 0.0615 0.7326
-vn 0.7397 -0.0461 0.6714
-vn 0.6794 -0.1869 -0.7095
-vn -0.6646 -0.0883 -0.7420
-vn -0.7012 0.0601 0.7104
-vn 0.7777 -0.1556 0.6090
-vn 0.7449 -0.1260 0.6552
-vn -0.6013 0.0107 0.7990
-vn -0.7084 0.0357 0.7049
-vn 0.6653 -0.0423 -0.7454
-vn 0.5569 0.1291 -0.8205
-vn -0.7843 0.1316 -0.6062
-vn -0.7358 0.2610 -0.6248
-vn 0.7308 -0.0961 0.6758
-vn -0.7232 0.0330 0.6899
-vn 0.5284 -0.1613 -0.8336
-vn -0.8211 -0.0103 -0.5707
-vn -0.7446 -0.0717 -0.6637
-vn -0.6516 0.0699 -0.7554
-vn -0.6896 -0.1018 0.7170
-vn -0.6890 -0.0703 0.7214
-vn 0.7266 0.0827 -0.6820
-vn 0.6806 0.2272 -0.6966
-vn 0.6862 0.0572 0.7251
-vn 0.7495 0.0758 0.6576
-vn -0.7323 -0.0485 0.6793
-vn -0.6882 -0.1760 -0.7039
-vn 0.6566 -0.0928 -0.7485
-vn 0.7090 0.0565 0.7029
-vn 0.6096 0.0072 0.7927
-vn -0.7373 -0.1337 0.6622
-vn -0.7709 -0.1659 0.6149
-vn 0.7160 0.0337 0.6973
-vn -0.6736 -0.0394 -0.7381
-vn -0.5646 0.1268 -0.8156
-vn 0.7780 0.1403 -0.6124
-vn 0.7255 0.2768 -0.6301
-vn 0.7206 0.0306 0.6927
-vn -0.7134 -0.1004 0.6935
-vn -0.5485 -0.1517 -0.8222
-vn 0.8246 -0.0113 -0.5656
-vn -0.0023 -0.9818 -0.1900
-vn -0.0370 -0.5484 -0.8354
-vn 0.4890 -0.6629 -0.5669
-vn 0.6481 -0.7614 0.0168
-vn -0.0145 0.7649 -0.6439
-vn -0.0122 0.9999 0.0000
-vn 0.7999 0.5998 0.0206
-vn 0.6452 0.4725 -0.6004
-vn -0.8163 0.5772 -0.0214
-vn -0.6531 0.4740 -0.5906
-vn -0.4845 -0.6734 -0.5585
-vn -0.6813 -0.7318 -0.0175
-vn -0.7224 -0.0000 -0.6915
-vn -0.6947 0.1354 -0.7065
-vn -0.7045 0.0948 0.7033
-vn -0.6985 -0.0000 0.7156
-vn -0.5433 -0.0900 0.8347
-vn -0.5257 -0.1391 -0.8392
-vn 0.7189 0.0115 -0.6950
-vn 0.6828 0.1275 -0.7194
-vn 0.8659 -0.0899 -0.4921
-vn 0.7115 0.0066 0.7027
-vn 0.7085 0.0729 0.7020
-vn 0.8598 -0.0578 0.5073
-vn 0.4360 -0.5183 -0.7357
-vn 0.5749 -0.3782 -0.7256
-vn 0.6416 -0.4248 0.6386
-vn 0.4532 -0.1733 0.8744
-vn -0.5657 0.3819 -0.7309
-vn -0.7454 0.4359 -0.5043
-vn -0.5947 0.4293 0.6798
-vn -0.6462 0.5506 0.5285
-vn 0.7385 -0.2551 -0.6241
-vn -0.0122 -0.2025 0.9792
-vn -0.7576 0.5683 -0.3212
-vn -0.8054 0.5220 0.2807
-vn 0.6245 -0.4408 -0.6448
-vn 0.5934 -0.3613 0.7193
-vn 0.4612 -0.4908 0.7392
-vn 0.4295 -0.2011 -0.8804
-vn -0.5432 0.4033 0.7364
-vn -0.7339 0.4466 0.5117
-vn -0.6155 0.4102 -0.6730
-vn -0.6641 0.5308 -0.5265
-vn -0.0748 -0.2061 -0.9757
-vn 0.7536 -0.2519 0.6072
-vn -0.7618 0.5860 0.2762
-vn -0.8011 0.5032 -0.3242
-vn -0.7151 -0.0000 0.6991
-vn -0.7061 -0.0000 -0.7081
-vn -0.7126 0.0892 -0.6959
-vn -0.6861 0.1439 0.7132
-vn -0.4959 -0.1470 0.8558
-vn -0.5711 -0.0850 -0.8165
-vn 0.6910 0.1200 0.7128
-vn 0.7263 0.0107 0.6873
-vn 0.8561 -0.0852 0.5097
-vn 0.7004 0.0775 -0.7095
-vn 0.7038 0.0070 -0.7103
-vn 0.8696 -0.0610 -0.4900
-vn 0.7151 0.0000 -0.6991
-vn 0.7062 0.0000 0.7080
-vn 0.7127 0.0892 0.6958
-vn 0.6863 0.1440 -0.7130
-vn 0.4959 -0.1470 -0.8559
-vn 0.5710 -0.0850 0.8165
-vn -0.6908 0.1200 -0.7130
-vn -0.7262 0.0107 -0.6874
-vn -0.8559 -0.0852 -0.5100
-vn -0.7004 0.0775 0.7095
-vn -0.7038 0.0070 0.7103
-vn -0.8696 -0.0610 0.4900
-vn -0.7095 0.1789 0.6816
-vn -0.7115 0.4588 -0.5322
-vn -0.8524 0.1339 -0.5055
-vn -0.8921 -0.1267 0.4337
-vn 0.0355 -0.2669 0.9631
-vn -0.2980 0.5435 0.7848
-vn -0.3090 0.8198 -0.4822
-vn -0.0355 0.2669 -0.9631
-vn 0.0263 0.5715 0.8202
-vn -0.0153 0.8618 -0.5070
-vn 0.7172 0.1799 0.6733
-vn 0.8851 -0.1185 0.4502
-vn 0.8669 0.1389 -0.4788
-vn 0.6997 0.4689 -0.5391
-vn 0.3300 0.5331 0.7790
-vn 0.2891 0.8257 -0.4844
-vn -0.9151 0.4011 0.0408
-vn -0.9997 -0.0000 -0.0259
-vn -0.8923 -0.1267 0.4334
-vn -0.7097 0.1787 0.6815
-vn -0.2979 0.5432 0.7849
-vn -0.3967 0.9078 0.1358
-vn 0.0107 0.9872 0.1594
-vn 0.9197 0.3832 0.0854
-vn 0.7173 0.1799 0.6731
-vn 0.4216 0.8935 0.1549
-vn -0.9130 0.4068 0.0305
-vn -0.8900 -0.1068 0.4433
-vn -0.7084 0.2058 0.6752
-vn -0.2964 0.5722 0.7647
-vn -0.3952 0.9118 0.1114
-vn 0.0359 -0.2232 0.9741
-vn 0.0256 0.6008 0.7990
-vn 0.0095 0.9912 0.1320
-vn 0.9179 0.3895 0.0755
-vn 0.7167 0.2060 0.6663
-vn 0.8823 -0.1001 0.4600
-vn 0.4192 0.8985 0.1305
-vn 0.3277 0.5623 0.7593
-vn -0.9099 0.4147 0.0145
-vn -0.8866 -0.0765 0.4562
-vn -0.7065 0.2453 0.6638
-vn -0.2941 0.6132 0.7332
-vn -0.3933 0.9164 0.0748
-vn 0.0362 -0.1574 0.9869
-vn 0.0244 0.6426 0.7658
-vn 0.0084 0.9957 0.0923
-vn 0.9152 0.3985 0.0610
-vn 0.7155 0.2441 0.6545
-vn 0.8781 -0.0717 0.4730
-vn 0.4158 0.9045 0.0946
-vn 0.3243 0.6035 0.7284
-vn 0.8781 -0.0719 0.4730
-vn 0.0362 -0.1572 0.9869
-vn -0.9057 0.4238 -0.0061
-vn -0.8824 -0.0345 0.4692
-vn -0.7045 0.2952 0.6453
-vn -0.2914 0.6638 0.6888
-vn -0.3910 0.9200 0.0275
-vn 0.0366 -0.0700 0.9969
-vn 0.0229 0.6943 0.7193
-vn 0.0065 0.9991 0.0412
-vn 0.9115 0.4093 0.0404
-vn 0.7145 0.2924 0.6356
-vn 0.8725 -0.0326 0.4876
-vn 0.4116 0.9101 0.0481
-vn 0.3201 0.6550 0.6845
-vn -0.7156 0.2441 -0.6544
-vn -0.8781 -0.0719 -0.4730
-vn -0.8715 0.0807 0.4837
-vn -0.7008 0.4154 0.5800
-vn -0.3243 0.6035 -0.7285
-vn -0.0362 -0.1574 -0.9869
-vn -0.2888 0.7788 0.5569
-vn 0.0362 0.1574 0.9869
-vn -0.0244 0.6426 -0.7658
-vn -0.0362 -0.1572 -0.9869
-vn 0.0179 0.8129 0.5821
-vn 0.7065 0.2453 -0.6639
-vn 0.7122 0.4076 0.5715
-vn 0.8587 0.0772 0.5066
-vn 0.8865 -0.0765 -0.4563
-vn 0.2937 0.6132 -0.7333
-vn 0.3120 0.7715 0.5544
-vn -0.9105 0.4121 -0.0343
-vn -0.7141 0.3063 -0.6295
-vn -0.8711 -0.0208 -0.4907
-vn -0.4108 0.9111 -0.0343
-vn -0.3189 0.6697 -0.6707
-vn -0.0366 -0.0443 -0.9983
-vn -0.0061 0.9996 -0.0259
-vn -0.0221 0.7090 -0.7049
-vn -0.0366 -0.0441 -0.9984
-vn 0.9046 0.4261 0.0122
-vn 0.8812 -0.0219 -0.4723
-vn 0.7040 0.3096 -0.6392
-vn 0.3906 0.9205 -0.0137
-vn 0.2911 0.6781 -0.6749
-vn -0.0370 -0.0443 -0.9983
-vn -0.9133 0.4042 -0.0504
-vn -0.7147 0.2697 -0.6453
-vn -0.8753 -0.0517 -0.4808
-vn -0.4135 0.9078 -0.0702
-vn -0.3220 0.6310 -0.7059
-vn -0.0366 -0.1118 -0.9931
-vn -0.0072 0.9978 -0.0656
-vn -0.0237 0.6702 -0.7418
-vn 0.9077 0.4196 -0.0038
-vn 0.8846 -0.0547 -0.4631
-vn 0.7055 0.2716 -0.6546
-vn 0.3921 0.9185 -0.0504
-vn 0.2926 0.6401 -0.7104
-vn -0.9152 0.3984 -0.0610
-vn -0.4158 0.9045 -0.0946
-vn -0.0084 0.9957 -0.0923
-vn 0.9099 0.4147 -0.0145
-vn 0.8866 -0.0765 -0.4562
-vn 0.3933 0.9164 -0.0748
-vn 0.2941 0.6132 -0.7331
-vn -0.7156 0.2441 -0.6545
-vn -0.3243 0.6035 -0.7284
-vn -0.0244 0.6426 -0.7659
-vn 0.2941 0.6132 -0.7332
-vn -0.7141 0.3063 -0.6294
-vn -0.4105 0.9112 -0.0343
-vn 0.2911 0.6784 -0.6745
-vn -0.9022 0.4309 0.0168
-vn -0.7122 0.4078 -0.5714
-vn -0.8587 0.0772 -0.5066
-vn -0.4032 0.9121 0.0740
-vn -0.3120 0.7715 -0.5545
-vn -0.0362 0.1574 -0.9869
-vn -0.0019 0.9957 0.0923
-vn -0.0179 0.8129 -0.5822
-vn 0.8957 0.4400 0.0641
-vn 0.8715 0.0807 -0.4836
-vn 0.7008 0.4155 -0.5799
-vn 0.3884 0.9166 0.0954
-vn 0.2888 0.7786 -0.5571
-vn -0.7008 0.4154 0.5799
-vn -0.2888 0.7787 0.5569
-vn 0.0179 0.8129 0.5822
-vn 0.3117 0.7716 0.5546
-vn -0.8715 0.0807 0.4836
-vn -0.7008 0.4155 0.5799
-vn 0.3120 0.7715 0.5545
-vn -0.0000 1.0000 0.0000
-vn -0.6928 0.7209 -0.0183
-vn -0.7210 0.6927 -0.0191
-vn 0.0267 0.6925 0.7209
-vn 0.0256 0.7208 0.6927
-vn -0.0267 0.6924 -0.7210
-vn -0.0256 0.7207 -0.6927
-vn -0.0369 -0.0000 -0.9993
-vn 0.6928 0.7209 0.0183
-vn 0.7211 0.6926 0.0191
-vn 0.1987 0.9800 -0.0099
-vn 0.2689 0.9632 -0.0000
-vn 0.2073 0.9783 0.0046
-vn 0.2140 0.9768 0.0084
-vn 0.2691 0.9631 0.0099
-vn 0.2075 0.9782 0.0053
-vn 0.2241 0.9743 0.0206
-vn 0.2270 0.9738 0.0099
-vn 0.2382 0.9712 -0.0038
-vn 0.3086 0.9512 -0.0076
-vn 0.2388 0.9709 0.0160
-vn 0.2892 0.9568 0.0305
-vn 0.3959 0.9183 -0.0053
-vn 0.4034 0.9149 -0.0168
-vn 0.3965 0.9177 0.0221
-vn 0.3576 0.9331 0.0366
-vn 0.4604 0.8877 0.0015
-vn 0.4276 0.9039 -0.0061
-vn 0.4608 0.8874 0.0107
-vn 0.3647 0.9311 0.0107
-vn 0.1907 0.6629 -0.7240
-vn 0.2444 0.6550 0.7151
-vn 0.1665 0.7388 0.6531
-vn 0.1318 0.7242 -0.6769
-vn -0.1907 -0.6270 -0.7553
-vn -0.2251 -0.6890 -0.6889
-vn -0.1814 -0.7064 0.6842
-vn -0.1629 -0.6523 0.7402
-vn 0.3247 0.5993 0.7317
-vn 0.2728 0.6545 -0.7051
-vn -0.2506 -0.6841 -0.6850
-vn -0.1732 -0.6751 0.7171
-vn -0.5606 0.5834 -0.5877
-vn -0.5557 0.5670 0.6081
-vn 0.6070 0.5343 0.5882
-vn 0.6068 0.5339 -0.5888
-vn 0.6859 0.0000 -0.7277
-vn 0.7024 0.0000 0.7118
-vn 0.7127 0.1240 0.6905
-vn 0.7138 0.1081 -0.6920
-vn -0.6903 -0.0073 -0.7235
-vn -0.7306 -0.0000 -0.6828
-vn -0.7311 -0.0000 0.6823
-vn -0.6748 0.0186 0.7378
-vn 0.2096 0.9771 0.0359
-vn -0.0057 0.9999 0.0130
-vn 0.0853 0.5578 -0.8256
-vn 0.0862 0.5307 -0.8431
-vn -0.0729 0.5479 0.8334
-vn -0.0746 0.5157 0.8535
-vn -0.2161 0.9763 -0.0130
-vn 0.0295 -0.8296 -0.5576
-vn 0.0267 -0.8474 -0.5303
-vn 0.5819 0.3933 -0.7118
-vn 0.5131 0.8572 0.0450
-vn 0.9162 -0.3916 0.0847
-vn 0.5894 -0.7327 -0.3403
-vn 0.5106 0.3556 0.7828
-vn 0.4916 -0.7532 0.4372
-vn -0.0477 -0.8368 0.5455
-vn -0.0450 -0.8565 0.5142
-vn -0.6762 0.3579 0.6439
-vn -0.4914 0.8706 -0.0267
-vn -0.9075 -0.4109 -0.0870
-vn -0.5824 -0.7427 0.3304
-vn -0.5474 0.3789 -0.7462
-vn -0.5233 -0.7274 -0.4440
-vn 0.0055 -0.9999 -0.0130
-vn -0.2096 -0.9771 -0.0366
-vn 0.0866 0.5201 -0.8497
-vn 0.0256 -0.8536 -0.5203
-vn 0.2159 -0.9763 0.0137
-vn 0.5787 -0.4414 0.6857
-vn 0.6890 -0.4416 -0.5747
-vn 0.4547 0.7093 -0.5386
-vn 0.3547 0.7091 0.6094
-vn 0.2192 -0.7156 -0.6632
-vn 0.1354 -0.7445 -0.6537
-vn -0.1110 0.6529 -0.7492
-vn -0.2283 0.6210 -0.7498
-vn 0.1007 -0.7155 0.6913
-vn 0.0198 -0.7444 0.6674
-vn -0.3550 0.6211 0.6987
-vn -0.2395 0.6528 0.7186
-vn 0.8165 0.0000 -0.5773
-vn 0.9944 -0.0607 0.0870
-vn 0.7658 0.0000 -0.6431
-vn -0.8544 -0.0000 0.5195
-vn -0.7659 -0.0000 0.6430
-vn 0.6428 0.0000 0.7660
-vn 0.7040 0.0000 0.7102
-vn 0.0870 0.0000 -0.9962
-vn -0.9962 -0.0000 -0.0870
-vn 0.7096 0.7014 0.0679
-vn 0.5953 -0.8018 0.0519
-vn 0.6383 -0.4253 -0.6416
-vn 0.6501 0.5443 -0.5303
-vn -0.0616 0.7071 0.7044
-vn -0.0616 -0.7073 0.7042
-vn 0.6132 0.7881 0.0534
-vn -0.0752 0.5062 0.8591
-vn 0.5560 0.3933 0.7322
-vn 0.0616 -0.7073 -0.7042
-vn 0.0616 0.7072 -0.7043
-vn 0.0025 -0.9996 -0.0282
-vn 0.7120 0.7019 0.0183
-vn 0.6981 0.7153 0.0328
-vn 0.7091 -0.7003 0.0816
-vn 0.8304 -0.5524 0.0725
-vn 0.8785 -0.3013 -0.3708
-vn 0.6996 0.7075 0.0999
-vn 0.7126 -0.7003 0.0427
-vn 0.6975 0.7122 0.0786
-vn 0.7160 0.6948 0.0679
-vn 0.6920 -0.7194 0.0603
-vn 0.5489 0.5385 0.6393
-vn 0.5171 -0.4257 0.7425
-vn 0.6745 0.3934 -0.6247
-vn 0.0752 0.5062 -0.8591
-vn -0.0025 -0.9996 0.0282
-vn 0.8009 -0.3015 0.5173
-vn 0.3172 0.8858 -0.3388
-vn 0.2588 0.8838 0.3899
-vn -0.0008 1.0000 0.0076
-vn 0.3405 0.8988 -0.2762
-vn 0.0603 0.7216 -0.6897
-vn 0.2945 0.8992 0.3235
-vn -0.0603 0.7216 0.6897
-vn 0.5247 0.5773 0.6256
-vn 0.5247 -0.5773 0.6256
-vn 0.6254 -0.5774 -0.5249
-vn 0.6254 0.5774 -0.5249
-vn 0.7322 -0.1102 -0.6721
-vn 0.7939 -0.1002 -0.5998
-vn 0.0862 -0.1487 -0.9851
-vn 0.7425 0.0909 -0.6637
-vn 0.7894 0.0844 -0.6080
-vn 0.6721 0.0844 0.7356
-vn 0.6159 0.0909 0.7826
-vn -0.0875 -0.1479 0.9851
-vn -0.0862 -0.1480 0.9852
-vn 0.6775 -0.1003 0.7286
-vn 0.6014 -0.1106 0.7912
-vn 0.7870 0.0852 -0.6110
-vn 0.7382 0.0918 -0.6683
-vn 0.6689 0.0852 0.7384
-vn 0.6108 0.0918 0.7865
-vn 0.7414 -0.1027 -0.6632
-vn 0.8144 0.0076 -0.5803
-vn -0.6630 -0.1133 -0.7400
-vn -0.6521 -0.0949 -0.7522
-vn 0.6316 0.1055 0.7681
-vn 0.6075 0.2294 0.7605
-vn -0.7872 0.0869 0.6106
-vn -0.7122 0.1350 0.6889
-vn -0.6004 -0.0871 -0.7949
-vn 0.7481 -0.1777 -0.6394
-vn 0.6821 -0.0426 0.7300
-vn -0.7715 0.0625 0.6331
-vn -0.8473 0.0519 0.5286
-vn -0.5909 -0.1532 -0.7921
-vn -0.5646 -0.1650 -0.8087
-vn -0.7549 0.1160 0.6455
-vn 0.8093 -0.0832 -0.5815
-vn 0.8678 0.0495 -0.4945
-vn 0.5600 0.1604 0.8128
-vn 0.5301 0.2864 0.7981
-vn -0.7879 0.0437 0.6142
-vn -0.5917 -0.1473 -0.7926
-vn 0.8352 -0.1717 -0.5225
-vn 0.5196 0.0145 0.8543
-vn 0.6149 -0.1027 0.7819
-vn -0.7730 -0.0949 0.6273
-vn -0.7816 -0.1133 0.6134
-vn 0.7010 0.0076 0.7132
-vn 0.7552 0.1055 -0.6469
-vn 0.7303 0.2295 -0.6434
-vn -0.5818 0.1351 -0.8021
-vn -0.6693 0.0869 -0.7379
-vn -0.7295 -0.0871 0.6784
-vn 0.6260 -0.1777 0.7593
-vn 0.7985 -0.0426 -0.6005
-vn -0.6498 0.0625 -0.7575
-vn -0.6965 -0.1651 0.6983
-vn -0.7194 -0.1532 0.6775
-vn -0.7427 0.0519 -0.6676
-vn -0.6311 0.1160 -0.7669
-vn 0.6960 -0.0832 0.7132
-vn 0.7686 0.0495 0.6378
-vn 0.6925 0.1603 -0.7034
-vn 0.6605 0.2861 -0.6942
-vn -0.7204 -0.1473 0.6777
-vn -0.6693 0.0437 -0.7417
-vn 0.7316 -0.1716 0.6597
-vn 0.6604 0.0145 -0.7508
-vn 0.6092 -0.6437 -0.4631
-vn 0.8347 -0.5459 0.0732
-vn 0.2647 -0.9640 0.0229
-vn 0.0591 -0.7354 -0.6751
-vn 0.6581 0.7508 0.0572
-vn 0.6428 0.5040 -0.5769
-vn 0.0681 0.6242 -0.7783
-vn -0.0681 0.6241 0.7783
-vn -0.0589 -0.7354 0.6750
-vn 0.5196 -0.6440 0.5615
-vn 0.5328 0.5040 0.6798
-vn 0.6483 0.0000 0.7614
-vn -0.7808 -0.0000 0.6248
-vn -0.7488 0.1037 0.6546
-vn 0.6321 0.1361 0.7628
-vn 0.7496 -0.1320 0.6487
-vn -0.8390 -0.0957 0.5356
-vn 0.7638 0.1125 -0.6356
-vn 0.7633 0.0103 -0.6460
-vn 0.6262 -0.0897 -0.7745
-vn -0.6325 0.0792 -0.7705
-vn -0.6508 0.0071 -0.7592
-vn -0.4791 -0.0678 -0.8751
-vn -0.7707 -0.0000 0.6372
-vn -0.7549 0.1360 0.6416
-vn 0.6235 0.1036 0.7749
-vn 0.6604 0.0000 0.7509
-vn 0.7335 -0.0957 0.6729
-vn -0.8507 -0.1320 0.5089
-vn -0.6398 0.0103 -0.7685
-vn -0.6418 0.1125 -0.7586
-vn -0.4822 -0.0897 -0.8714
-vn 0.7727 0.0071 -0.6348
-vn 0.7569 0.0792 -0.6487
-vn 0.6236 -0.0678 -0.7788
-vn 0.7708 0.0000 -0.6371
-vn 0.7549 0.1360 -0.6415
-vn -0.6235 0.1036 -0.7749
-vn -0.6606 -0.0000 -0.7508
-vn -0.7335 -0.0956 -0.6729
-vn 0.8507 -0.1320 -0.5089
-vn 0.6399 0.0103 0.7684
-vn 0.6418 0.1125 0.7586
-vn 0.4822 -0.0897 0.8715
-vn -0.7727 0.0071 0.6348
-vn -0.7570 0.0792 0.6486
-vn -0.6235 -0.0678 0.7789
-vn -0.7361 0.2604 0.6249
-vn -0.6206 -0.1072 0.7768
-vn 0.4593 0.1041 0.8822
-vn 0.4541 0.5106 0.7301
-vn -0.8117 0.5630 0.1556
-vn -0.9778 -0.1913 -0.0854
-vn 0.4768 0.8355 0.2731
-vn 0.9778 0.1913 0.0855
-vn -0.8202 0.5676 -0.0717
-vn 0.5203 0.8528 0.0458
-vn -0.6163 0.2604 -0.7432
-vn 0.5739 0.5108 -0.6401
-vn 0.6056 0.1041 -0.7889
-vn -0.4761 -0.1072 -0.8728
-vn -0.7722 0.5630 -0.2945
-vn 0.5169 0.8356 -0.1862
-vn -0.1877 0.4927 0.8497
-vn -0.6205 -0.1072 0.7769
-vn -0.0872 -0.0000 0.9962
-vn -0.2384 0.9290 0.2830
-vn -0.8116 0.5631 0.1556
-vn -0.9778 -0.1913 -0.0855
-vn -0.2224 0.9747 -0.0198
-vn -0.0374 0.4925 -0.8695
-vn 0.0872 0.0000 -0.9962
-vn -0.6165 0.2604 -0.7431
-vn -0.1858 0.9291 -0.3197
-vn -0.1688 0.4952 0.8522
-vn -0.7266 0.2838 0.6257
-vn -0.6224 -0.0889 0.7776
-vn -0.2031 0.9362 0.2869
-vn -0.7913 0.5907 0.1579
-vn -0.9835 -0.1591 -0.0862
-vn -0.1854 0.9825 -0.0160
-vn -0.7996 0.5964 -0.0702
-vn -0.0181 0.4949 -0.8687
-vn -0.4774 -0.0889 -0.8742
-vn -0.6067 0.2838 -0.7425
-vn -0.1503 0.9363 -0.3174
-vn -0.7518 0.5907 -0.2930
-vn -0.1408 0.4974 0.8560
-vn -0.7111 0.3178 0.6272
-vn -0.6238 -0.0620 0.7791
-vn -0.1505 0.9447 0.2914
-vn -0.7596 0.6299 0.1617
-vn -0.9900 -0.1114 -0.0870
-vn -0.1303 0.9914 -0.0114
-vn -0.7676 0.6374 -0.0671
-vn 0.0101 0.4974 -0.8674
-vn -0.4789 -0.0620 -0.8757
-vn -0.5911 0.3178 -0.7414
-vn -0.0975 0.9445 -0.3136
-vn -0.7198 0.6300 -0.2914
-vn -0.7110 0.3177 0.6273
-vn -0.6239 -0.0620 0.7790
-vn -0.1507 0.9447 0.2914
-vn -0.1301 0.9914 -0.0114
-vn -0.0977 0.9445 -0.3136
-vn -0.7675 0.6375 -0.0671
-vn -0.1043 0.4982 0.8608
-vn -0.6883 0.3607 0.6294
-vn -0.6239 -0.0273 0.7810
-vn -0.0816 0.9510 0.2983
-vn -0.7156 0.6785 0.1663
-vn -0.9950 -0.0494 -0.0870
-vn -0.0580 0.9983 -0.0053
-vn -0.7228 0.6882 -0.0633
-vn 0.0467 0.4982 -0.8658
-vn -0.4789 -0.0273 -0.8775
-vn -0.5685 0.3607 -0.7394
-vn -0.0284 0.9509 -0.3082
-vn -0.6757 0.6784 -0.2884
-vn 0.5911 0.3178 0.7414
-vn -0.6164 0.4639 0.6363
-vn -0.6147 0.0610 0.7864
-vn 0.4789 -0.0620 0.8757
-vn 0.9899 -0.1116 0.0870
-vn 0.7198 0.6300 0.2914
-vn -0.5875 0.7891 0.1793
-vn -0.9900 0.1114 -0.0870
-vn 0.9900 -0.1114 0.0870
-vn 0.7676 0.6374 0.0671
-vn -0.5924 0.8040 -0.0519
-vn 0.7111 0.3178 -0.6272
-vn 0.6238 -0.0620 -0.7791
-vn -0.4690 0.0610 -0.8811
-vn -0.4963 0.4639 -0.7338
-vn 0.7596 0.6300 -0.1617
-vn -0.5475 0.7891 -0.2785
-vn -0.0574 0.4978 0.8654
-vn 0.4784 -0.0172 0.8780
-vn 0.5610 0.3729 0.7391
-vn 0.6623 0.6922 0.2869
-vn 0.0082 0.9518 0.3067
-vn 0.9957 -0.0311 0.0870
-vn 0.7092 0.7023 0.0618
-vn 0.0364 0.9993 0.0031
-vn 0.0937 0.4978 -0.8622
-vn 0.6810 0.3729 -0.6303
-vn 0.6237 -0.0172 -0.7814
-vn 0.0871 0.0000 -0.9962
-vn 0.0612 0.9518 -0.3006
-vn 0.7021 0.6920 -0.1678
-vn -0.0292 0.4982 0.8666
-vn 0.4791 -0.0439 0.8766
-vn 0.5798 0.3403 0.7403
-vn 0.6973 0.6556 0.2899
-vn 0.0616 0.9486 0.3105
-vn 0.9931 -0.0790 0.0870
-vn 0.7446 0.6643 0.0648
-vn 0.0925 0.9957 0.0084
-vn 0.1217 0.4982 -0.8585
-vn 0.6994 0.3403 -0.6286
-vn 0.6243 -0.0439 -0.7800
-vn 0.1146 0.9485 -0.2953
-vn 0.7369 0.6557 -0.1640
-vn -0.0101 0.4974 0.8674
-vn 0.7199 0.6300 0.2914
-vn 0.0977 0.9445 0.3136
-vn 0.1303 0.9914 0.0114
-vn 0.1408 0.4974 -0.8560
-vn 0.1505 0.9447 -0.2914
-vn 0.4783 -0.0172 0.8780
-vn 0.6622 0.6922 0.2869
-vn 0.6238 -0.0172 -0.7814
-vn 0.7020 0.6921 -0.1678
-vn -0.1400 0.4883 0.8614
-vn 0.4689 0.0610 0.8811
-vn 0.4965 0.4637 0.7338
-vn 0.5475 0.7891 0.2785
-vn -0.1507 0.9442 0.2930
-vn 0.9900 0.1114 0.0870
-vn 0.5925 0.8039 0.0519
-vn 0.0117 0.4883 -0.8726
-vn 0.6164 0.4639 -0.6363
-vn 0.6147 0.0610 -0.7864
-vn -0.0975 0.9441 -0.3151
-vn 0.5876 0.7891 -0.1793
-vn -0.4691 0.0610 -0.8810
-vn -0.4965 0.4637 -0.7338
-vn 0.4790 -0.0620 0.8756
-vn -0.4966 0.4637 -0.7338
-vn -0.7045 0.7070 -0.0618
-vn 0.7044 0.7071 0.0618
-vn 0.9962 0.0000 0.0870
-vn -0.6045 -0.5330 -0.5921
-vn 0.7548 -0.4607 -0.4669
-vn 0.8091 -0.5137 -0.2853
-vn -0.8513 -0.2926 -0.4356
-vn 0.6794 0.4787 0.5562
-vn 0.3839 0.6087 0.6943
-vn -0.7292 0.5187 0.4463
-vn -0.5018 0.6546 0.5653
-vn -0.9262 -0.2822 -0.2502
-vn 0.7838 -0.3283 -0.5272
-vn 0.3097 0.6756 0.6691
-vn -0.4288 0.6329 0.6447
-vn -0.7472 -0.5135 -0.4219
-vn -0.6621 -0.4605 -0.5913
-vn 0.6980 -0.5328 -0.4784
-vn 0.9141 -0.2926 -0.2808
-vn -0.7657 0.4787 0.4295
-vn -0.4986 0.6086 0.6172
-vn 0.6408 0.5186 0.5661
-vn 0.3959 0.6547 0.6439
-vn -0.6802 -0.3283 -0.6554
-vn 0.9555 -0.2821 -0.0862
-vn -0.4212 0.6757 0.6050
-vn 0.3105 0.6332 0.7089
-vn -0.0198 0.9780 -0.2075
-vn -0.1722 0.9594 -0.2236
-vn 0.1265 0.9884 -0.0847
-vn -0.0153 0.9527 -0.3037
-vn 0.2132 0.9613 -0.1747
-vn 0.3605 0.9244 0.1243
-vn 0.4048 0.9138 0.0328
-vn -0.0248 0.9917 0.1259
-vn 0.4482 0.8868 0.1129
-vn 0.0996 0.6702 -0.7354
-vn 0.3283 0.6486 0.6867
-vn 0.2445 0.7467 0.6186
-vn 0.0437 0.7171 -0.6956
-vn -0.2775 -0.6071 -0.7446
-vn -0.3035 -0.6842 -0.6632
-vn -0.0984 -0.7122 0.6951
-vn -0.0755 -0.6694 0.7391
-vn 0.4027 0.5785 0.7093
-vn 0.1919 0.6731 -0.7142
-vn -0.3319 -0.6902 -0.6431
-vn -0.0797 -0.6712 0.7370
-vn -0.7004 0.6803 -0.2160
-vn 0.7679 -0.6151 0.1785
-vn -0.7927 -0.6073 0.0519
-vn -0.7481 0.6064 -0.2693
-vn 0.6120 -0.7546 0.2365
-vn -0.6449 -0.7552 0.1175
-vn -0.7446 0.6024 0.2876
-vn 0.3855 0.5740 0.7224
-vn 0.7714 0.5030 -0.3899
-vn -0.3155 0.4810 -0.8180
-vn -0.3497 0.2346 -0.9070
-vn -0.4784 -0.0000 -0.8782
-vn 0.9344 0.0000 -0.3563
-vn 0.8702 0.2228 -0.4395
-vn -0.9323 -0.0413 0.3594
-vn -0.8895 -0.0000 0.4570
-vn 0.3501 0.0000 0.9367
-vn 0.4708 -0.0163 0.8821
-vn 0.7055 -0.0105 -0.7086
-vn 0.7008 0.0000 -0.7134
-vn 0.7348 0.0000 0.6783
-vn 0.6868 0.0708 0.7234
-vn 0.7055 0.0105 -0.7086
-vn 0.6868 -0.0708 0.7234
-vn -0.6929 -0.0000 -0.7210
-vn -0.7269 0.0367 -0.6857
-vn -0.7269 -0.0368 -0.6857
-vn -0.7122 -0.0000 0.7019
-vn -0.6904 0.1207 0.7133
-vn -0.6904 -0.1207 0.7133
-vn 0.5788 0.5809 0.5723
-vn 0.5757 0.5742 -0.5822
-vn -0.5787 0.5809 -0.5723
-vn -0.5759 0.5741 0.5820
-vn 0.7031 0.0000 -0.7111
-vn 0.7109 0.0000 0.7033
-vn -0.7109 -0.0000 -0.7033
-vn -0.2926 0.9112 0.2899
-vn -0.3105 0.8976 -0.3128
-vn 0.5789 0.5810 0.5722
-vn 0.5757 0.5741 -0.5822
-vn 0.3178 0.8964 0.3090
-vn -0.5787 0.5806 -0.5728
-vn 0.2849 0.9124 -0.2937
-vn -0.5759 0.5742 0.5820
-vn 0.7347 0.0000 0.6784
-vn -0.6931 -0.0000 -0.7208
-vn 0.7069 0.7071 0.0183
-vn 0.5788 0.5808 0.5724
-vn 0.5868 -0.5689 0.5762
-vn 0.6977 -0.7162 0.0168
-vn -0.0259 0.7072 -0.7066
-vn 0.5758 0.5741 -0.5821
-vn 0.5835 -0.5623 -0.5860
-vn -0.0240 -0.7186 -0.6951
-vn -0.7069 0.7071 -0.0183
-vn -0.5789 0.5808 -0.5723
-vn -0.5869 -0.5689 -0.5761
-vn -0.6977 -0.7162 -0.0168
-vn 0.0259 0.7073 0.7065
-vn -0.5757 0.5742 0.5822
-vn -0.5833 -0.5625 0.5860
-vn 0.0240 -0.7186 0.6951
-vn 0.0027 -1.0000 -0.0000
-vn -0.0015 -1.0000 0.0015
-vn 0.0000 -1.0000 -0.0023
-vn 0.0011 -1.0000 0.0008
-vn -0.0027 -1.0000 0.0000
-vn 0.0015 -1.0000 -0.0015
-vn 0.0000 -1.0000 0.0023
-vn -0.0011 -1.0000 -0.0008
-vn -0.6376 -0.0107 0.7703
-vn -0.6326 -0.0000 0.7745
-vn -0.7934 -0.0000 -0.6087
-vn -0.7508 0.0682 -0.6570
-vn -0.6376 0.0107 0.7703
-vn -0.7508 -0.0683 -0.6570
-vn 0.7566 0.0000 0.6539
-vn 0.7871 0.0362 0.6158
-vn 0.7871 -0.0362 0.6158
-vn 0.6444 0.0000 -0.7647
-vn 0.6222 0.1241 -0.7729
-vn 0.6222 -0.1242 -0.7729
-vn -0.4426 0.8966 -0.0153
-vn -0.4547 0.8724 0.1793
-vn -0.0008 1.0000 -0.0023
-vn -0.3155 0.8195 0.4785
-vn 0.1209 0.8231 0.5548
-vn 0.4017 0.8668 0.2953
-vn 0.4432 0.8926 0.0824
-vn 0.4524 0.8892 -0.0687
-vn 0.4181 0.8485 -0.3244
-vn 0.0965 0.8110 -0.5770
-vn -0.3109 0.8384 -0.4477
-vn -0.4300 0.8837 -0.1847
-vn -0.8452 0.3597 0.3953
-vn -0.8767 0.2880 0.3853
-vn -0.9641 0.2643 -0.0252
-vn -0.9435 0.3307 -0.0214
-vn -0.4566 0.4067 0.7913
-vn -0.4883 0.3422 0.8028
-vn 0.1900 0.4124 0.8910
-vn 0.2110 0.3513 0.9122
-vn 0.7010 0.3693 0.6102
-vn 0.7366 0.2976 0.6073
-vn 0.9169 0.3330 0.2198
-vn 0.9392 0.2659 0.2174
-vn 0.9223 0.3403 -0.1831
-vn 0.9466 0.2716 -0.1739
-vn 0.6946 0.3845 -0.6080
-vn 0.7320 0.3135 -0.6049
-vn 0.1446 0.4173 -0.8972
-vn 0.1526 0.3586 -0.9209
-vn -0.4841 0.3941 -0.7813
-vn -0.5207 0.3250 -0.7895
-vn -0.8400 0.3468 -0.4173
-vn -0.8684 0.2769 -0.4113
-vn -0.8938 -0.1408 0.4257
-vn -0.9914 -0.1289 -0.0214
-vn -0.4862 -0.1589 0.8593
-vn 0.1995 -0.1608 0.9666
-vn 0.7412 -0.1446 0.6555
-vn 0.9637 -0.1299 0.2335
-vn 0.9714 -0.1329 -0.1968
-vn 0.7379 -0.1507 -0.6578
-vn 0.1553 -0.1625 -0.9744
-vn -0.5125 -0.1543 -0.8447
-vn -0.8853 -0.1356 -0.4448
-vn -0.8320 -0.4234 0.3586
-vn -0.9210 -0.3887 -0.0244
-vn -0.4574 -0.4944 0.7392
-vn 0.1995 -0.5049 0.8398
-vn 0.6989 -0.4361 0.5669
-vn 0.8969 -0.3914 0.2060
-vn 0.9022 -0.3996 -0.1625
-vn 0.6903 -0.4583 -0.5599
-vn 0.1415 -0.5142 -0.8459
-vn -0.4917 -0.4731 -0.7310
-vn -0.8273 -0.4074 -0.3868
-vn -0.5952 0.5356 -0.5990
-vn -0.5926 0.5265 0.6096
-vn 0.5952 0.5356 0.5991
-vn 0.5925 0.5264 -0.6097
-vn 0.7107 0.0000 -0.7035
-vn 0.7183 0.0000 0.6958
-vn 0.6997 0.1206 0.7042
-vn 0.6913 0.1282 -0.7111
-vn -0.7183 -0.0000 -0.6958
-vn -0.6997 0.1206 -0.7042
-vn -0.7107 -0.0000 0.7035
-vn -0.6913 0.1282 0.7111
-vn -0.5949 0.5356 -0.5993
-vn -0.5925 0.5266 0.6096
-vn 0.5950 0.5358 0.5991
-vn 0.5925 0.5266 -0.6096
-vn 0.7108 0.0000 -0.7034
-vn 0.7182 0.0000 0.6958
-vn 0.6995 0.1205 0.7044
-vn -0.6995 0.1205 -0.7044
-vn -0.7107 -0.0000 0.7034
-vn 0.7234 0.0000 0.6904
-vn 0.7160 0.0000 0.6981
-vn 0.6857 0.0025 0.7279
-vn 0.6898 0.0019 0.7240
-vn 0.6994 -0.0002 0.7147
-vn 0.7023 0.0000 0.7119
-vn 0.7084 0.0000 0.7058
-vn 0.7166 0.0000 0.6975
-vn 0.7157 0.0271 0.6979
-vn 0.7084 0.0122 0.7057
-vn 0.7232 0.0332 0.6898
-vn 0.7311 0.0656 0.6791
-vn 0.7335 0.0542 0.6776
-vn 0.6915 0.0643 0.7195
-vn 0.7015 0.1234 0.7019
-vn 0.7119 0.1116 0.6934
-vn 0.7000 0.0574 0.7118
-vn 0.7076 0.0500 0.7049
-vn 0.7226 0.0967 0.6845
-vn 0.7288 0.0763 0.6804
-vn 0.7157 0.0391 0.6974
-vn 0.7314 0.0261 0.6814
-vn 0.7500 0.0544 0.6592
-vn 0.7515 0.0277 0.6592
-vn 0.6888 0.0061 0.7249
-vn 0.6909 0.0772 0.7188
-vn 0.7390 0.0650 0.6705
-vn 0.7434 0.0744 0.6647
-vn 0.7147 0.1205 0.6890
-vn 0.6987 0.1308 0.7033
-vn 0.7104 0.1282 0.6921
-vn 0.7380 0.0938 0.6682
-vn 0.7239 0.1091 0.6812
-vn 0.7084 0.0019 0.7058
-vn 0.7283 0.0057 0.6852
-vn 0.6817 0.0082 0.7316
-vn 0.7459 0.0078 0.6660
-vn 0.3522 -0.5390 -0.7651
-vn 0.9098 -0.4135 -0.0366
-vn 0.6909 -0.6014 0.4013
-vn -0.1072 -0.9197 -0.3777
-vn -0.0796 0.3017 -0.9501
-vn -0.7758 0.1783 -0.6052
-vn 0.2146 0.9219 -0.3225
-vn -0.2037 0.9705 0.1289
-vn 0.8262 0.4990 0.2617
-vn 0.6217 0.4208 0.6606
-vn -0.9376 0.2333 -0.2579
-vn -0.0053 -0.0067 -1.0000
-vn -0.0240 0.0578 -0.9980
-vn -0.9300 0.2485 -0.2708
-vn -0.5910 0.1646 0.7897
-vn -0.6324 0.1389 0.7621
-vn 0.6093 -0.1348 0.7814
-vn 0.6033 -0.1670 0.7799
-vn 0.9433 -0.2321 -0.2373
-vn 0.9410 -0.2129 -0.2632
-vn -0.3342 0.7081 0.6220
-vn 0.6496 0.4493 0.6133
-vn 0.8970 0.3906 -0.2068
-vn -0.5706 0.7909 -0.2213
-vn 0.1400 0.5421 -0.8286
-vn -0.0164 -0.0521 -0.9985
-vn -0.9368 0.2178 -0.2739
-vn -0.5951 0.1923 0.7803
-vn 0.6266 -0.1124 0.7712
-vn 0.9346 -0.2476 -0.2556
-vn -0.9986 -0.0462 -0.0259
-vn -0.2396 -0.9709 -0.0061
-vn -0.2869 -0.9579 -0.0076
-vn -0.9987 -0.0443 -0.0259
-vn -0.3517 0.9361 -0.0092
-vn -0.3941 0.9190 -0.0099
-vn 0.7982 0.6020 0.0206
-vn 0.7805 0.6248 0.0206
-vn 0.8549 -0.5184 0.0221
-vn 0.8423 -0.5386 0.0221
-vn -0.9378 0.2325 -0.2578
-vn -0.0053 -0.0076 -1.0000
-vn -0.0191 0.0543 -0.9983
-vn -0.9299 0.2472 -0.2724
-vn -0.5911 0.1637 0.7898
-vn -0.6300 0.1363 0.7645
-vn 0.6090 -0.1358 0.7814
-vn 0.6046 -0.1693 0.7783
-vn 0.9429 -0.2329 -0.2380
-vn 0.9409 -0.2143 -0.2624
-vn -0.3342 0.7080 0.6221
-vn 0.6266 -0.1123 0.7712
-vn 0.7806 0.6247 0.0206
-vn 0.8547 -0.5186 0.0221
-vn -0.7272 -0.0000 0.6865
-vn -0.7085 -0.0000 -0.7057
-vn -0.7135 -0.0098 -0.7006
-vn -0.6791 0.0751 0.7302
-vn -0.7135 0.0099 -0.7006
-vn -0.6791 -0.0750 0.7302
-vn 0.6850 0.0000 -0.7286
-vn 0.7194 0.0390 -0.6935
-vn 0.7194 -0.0389 -0.6935
-vn 0.7197 0.0000 0.6943
-vn 0.6986 0.1135 0.7065
-vn 0.6986 -0.1135 0.7065
-vn 0.8423 -0.5385 0.0221
-vn 0.7984 0.6018 0.0206
-vn -0.3940 0.9190 -0.0099
-vn 0.8548 -0.5185 0.0221
-vn 0.8548 -0.5186 0.0221
-vn -0.9987 -0.0442 -0.0259
-vn 0.9969 0.0000 -0.0786
-vn 0.9905 0.1147 -0.0763
-vn -0.0626 0.1158 -0.9913
-vn -0.0950 -0.0000 -0.9955
-vn -0.2796 -0.1066 -0.9542
-vn 0.9918 -0.1139 0.0572
-vn 0.0675 0.0125 0.9976
-vn 0.0858 0.1349 0.9871
-vn -0.2052 -0.1025 0.9733
-vn -0.9975 0.0058 0.0710
-vn -0.9944 0.0650 0.0839
-vn -0.9715 -0.0552 0.2304
-vn -0.6855 -0.0000 -0.7280
-vn -0.7117 0.0026 -0.7025
-vn 0.7023 -0.0028 -0.7118
-vn 0.7627 0.0000 -0.6468
-vn -0.9997 0.0036 -0.0259
-vn 0.4753 0.8514 0.2220
-vn 0.0696 0.8741 0.4806
-vn 0.6676 0.4555 -0.5890
-vn -0.4571 0.6835 -0.5692
-vn -0.6398 0.7685 0.0107
-vn 0.7779 0.6269 0.0443
-vn -0.6398 0.7685 0.0122
-vn -0.4795 0.6298 0.6111
-vn -0.6954 0.7186 0.0092
-vn 0.6698 0.4569 0.5854
-vn 0.7990 0.3105 -0.5150
-vn -0.2519 0.8301 -0.4974
-vn -0.3190 0.7414 0.5904
-vn 0.7329 0.2053 0.6486
-vn 0.9997 -0.0036 0.0259
-vn 0.9997 -0.0037 0.0259
-vn -0.6548 0.7558 -0.0076
-vn 0.7651 0.6433 0.0275
-vn 0.7776 0.6272 0.0435
-vn 0.7660 0.6422 0.0282
-vn 0.8665 0.4984 0.0267
-vn 0.7381 0.6733 0.0427
-vn -0.6555 0.7551 -0.0076
-vn -0.6893 0.7243 -0.0153
-vn 0.8177 0.3500 -0.4570
-vn -0.2476 0.8669 -0.4326
-vn -0.2987 0.6636 0.6859
-vn 0.7069 0.1493 0.6914
-vn 0.4515 0.8535 -0.2602
-vn 0.5074 0.7968 0.3281
-vn 0.2501 0.9682 -0.0061
-vn 0.0654 0.9367 -0.3441
-vn 0.5489 0.8311 -0.0893
-vn -0.1656 0.9075 0.3861
-vn 0.5310 0.7600 0.3746
-vn 0.2636 0.9637 0.0435
-vn -0.0326 0.9558 -0.2922
-vn 0.1663 0.9031 0.3960
-vn 0.3174 0.9472 0.0450
-vn 0.7101 -0.0026 0.7041
-vn -0.7040 0.0028 0.7101
-vn -0.6740 -0.0000 0.7387
-vn 0.7631 0.0000 0.6462
-vn 0.4643 0.8641 -0.1946
-vn -0.4633 0.6740 0.5753
-vn 0.6767 0.4566 0.5775
-vn 0.0267 0.8740 -0.4853
-vn 0.7777 0.6287 -0.0031
-vn -0.6401 0.7670 -0.0450
-vn -0.6401 0.7669 -0.0465
-vn -0.6958 0.7169 -0.0435
-vn -0.4748 0.6371 -0.6072
-vn 0.6614 0.4545 -0.5967
-vn -0.3107 0.7496 -0.5844
-vn -0.2569 0.8267 0.5005
-vn 0.8059 0.3091 0.5050
-vn 0.7241 0.2003 -0.6600
-vn 0.7774 0.6290 -0.0015
-vn 0.7856 0.6186 0.0130
-vn -0.6184 0.7855 -0.0259
-vn 0.7377 0.6751 -0.0061
-vn 0.8560 0.5167 0.0175
-vn 0.7864 0.6176 0.0130
-vn -0.6191 0.7849 -0.0259
-vn -0.7177 0.6960 -0.0214
-vn -0.2913 0.6731 -0.6798
-vn -0.2523 0.8636 0.4364
-vn 0.8233 0.3467 0.4494
-vn 0.6989 0.1445 -0.7005
-vn 0.4549 0.8433 0.2861
-vn 0.5026 0.8103 -0.3014
-vn 0.2321 0.9725 0.0175
-vn 0.0992 0.9370 0.3349
-vn 0.5483 0.8273 0.1221
-vn -0.2085 0.9002 -0.3822
-vn 0.5234 0.7768 -0.3502
-vn 0.2615 0.9647 -0.0298
-vn 0.0050 0.9600 0.2800
-vn 0.1246 0.9101 -0.3953
-vn 0.3153 0.9486 -0.0282
-vn -0.8169 -0.0000 0.5768
-vn -0.6258 -0.3861 0.6777
-vn 0.0195 0.0000 0.9998
-vn 0.2014 -0.6946 0.6906
-vn 0.5961 -0.5506 0.5844
-vn 0.8169 0.0000 0.5768
-vn 0.5961 0.5506 0.5844
-vn 0.0128 0.8059 0.5918
-vn -0.5834 0.5641 0.5844
-vn -0.9336 -0.3574 -0.0244
-vn -0.9998 -0.0000 -0.0175
-vn 0.7233 -0.6904 0.0122
-vn 0.4091 -0.9123 0.0198
-vn 0.9998 0.0000 0.0175
-vn 0.7233 0.6904 0.0122
-vn -0.7233 0.6904 -0.0122
-vn -0.6408 -0.3639 -0.6760
-vn -0.8169 -0.0000 -0.5768
-vn 0.5834 -0.5641 -0.5844
-vn 0.1585 -0.7154 -0.6805
-vn 0.8169 0.0000 -0.5768
-vn 0.5834 0.5641 -0.5844
-vn -0.0128 0.8059 -0.5918
-vn -0.5961 0.5506 -0.5844
-vn -0.0195 -0.0000 -0.9998
-vn -0.7818 -0.5180 0.3471
-vn -0.5596 -0.8286 0.0130
-vn 0.0134 -0.8211 0.5707
-vn -0.0069 -0.9903 -0.1389
-vn 0.5627 -0.8261 0.0298
-vn 0.7819 -0.5022 0.3693
-vn 0.6193 -0.1894 0.7620
-vn 0.0208 -0.0265 0.9994
-vn -0.6067 -0.1945 0.7707
-vn -0.6661 0.0305 -0.7452
-vn -0.8609 0.3989 -0.3159
-vn -0.0139 -0.1853 -0.9826
-vn 0.6618 0.0254 -0.7492
-vn 0.8571 0.4195 -0.2991
-vn 0.6506 0.7470 0.1366
-vn 0.0113 0.9122 0.4097
-vn -0.6614 0.7353 0.1480
-vn 0.7166 0.0000 -0.6975
-vn 0.6728 0.0000 0.7399
-vn 0.7442 0.0499 0.6660
-vn 0.6789 0.1998 -0.7065
-vn -0.6653 0.0996 -0.7399
-vn -0.7553 -0.0000 -0.6554
-vn -0.7063 -0.0584 0.7055
-vn -0.6993 -0.0000 0.7149
-vn 0.7442 -0.0499 0.6660
-vn 0.6789 -0.1999 -0.7065
-vn -0.6653 -0.0996 -0.7399
-vn -0.7063 0.0584 0.7055
-vn 0.7130 0.0000 -0.7011
-vn 0.6819 0.0000 0.7315
-vn 0.7372 0.0373 0.6746
-vn 0.6867 0.1546 -0.7103
-vn -0.6761 0.0753 -0.7330
-vn -0.7451 -0.0000 -0.6670
-vn -0.7055 -0.0449 0.7072
-vn -0.7000 -0.0000 0.7141
-vn 0.7372 -0.0373 0.6746
-vn 0.6867 -0.1545 -0.7103
-vn -0.6761 -0.0752 -0.7330
-vn -0.7055 0.0449 0.7072
-vn 0.7240 0.0000 0.6898
-vn 0.6883 0.1882 0.7005
-vn 0.7366 0.0524 -0.6743
-vn 0.6648 0.0000 -0.7470
-vn -0.7486 -0.0000 0.6630
-vn -0.6573 0.1050 0.7462
-vn -0.7070 -0.0000 -0.7072
-vn -0.7139 -0.0549 -0.6981
-vn 0.7366 -0.0524 -0.6743
-vn 0.6883 -0.1883 0.7005
-vn -0.6573 -0.1050 0.7462
-vn -0.7139 0.0549 -0.6981
-vn -0.7144 -0.0000 0.6997
-vn -0.7018 0.0040 0.7124
-vn -0.7122 -0.0038 -0.7019
-vn -0.6630 -0.0000 -0.7486
-vn 0.0370 0.0051 0.9993
-vn 0.0368 0.0000 0.9993
-vn 0.1970 0.8805 -0.4311
-vn 0.4866 0.8721 0.0511
-vn -0.5691 0.5103 -0.6448
-vn -0.5652 0.6469 0.5119
-vn 0.0637 0.7472 0.6615
-vn 0.0055 0.6457 -0.7636
-vn 0.0658 0.7470 0.6615
-vn 0.6125 0.5972 0.5179
-vn 0.0610 0.7200 0.6913
-vn 0.5926 0.4910 -0.6386
-vn -0.5277 0.2999 -0.7947
-vn -0.5278 0.8091 0.2586
-vn 0.5964 0.7372 0.3174
-vn 0.6129 0.2264 -0.7570
-vn -0.0370 -0.0051 -0.9993
-vn -0.0369 -0.0052 -0.9993
-vn -0.0368 -0.0000 -0.9993
-vn 0.0370 0.7675 0.6400
-vn -0.0173 0.6369 -0.7708
-vn 0.0040 0.6464 -0.7630
-vn -0.0174 0.6352 -0.7721
-vn -0.0256 0.5730 -0.8192
-vn 0.0086 0.6883 -0.7254
-vn 0.0369 0.0052 0.9993
-vn 0.0371 0.7667 0.6409
-vn 0.0324 0.6979 0.7155
-vn -0.4877 0.3418 -0.8033
-vn -0.4669 0.8470 0.2540
-vn 0.6844 0.6729 0.2808
-vn 0.6434 0.1783 -0.7444
-vn -0.3576 0.8403 -0.4074
-vn 0.3627 0.8148 -0.4524
-vn -0.0227 0.9859 -0.1656
-vn -0.3447 0.9387 -0.0099
-vn -0.1041 0.8438 -0.5265
-vn 0.3559 0.9189 0.1701
-vn 0.4420 0.7767 -0.4487
-vn 0.0456 0.9798 -0.1945
-vn -0.2251 0.9725 0.0603
-vn 0.3389 0.9403 -0.0298
-vn 0.0446 0.9713 -0.2334
-vn 0.7046 -0.0040 -0.7096
-vn 0.7093 0.0038 0.7049
-vn 0.7206 0.0000 0.6934
-vn 0.6479 0.0000 -0.7617
-vn 0.0364 0.0051 0.9993
-vn -0.2314 0.8668 -0.4417
-vn 0.5686 0.6552 0.4974
-vn 0.5669 0.5062 -0.6499
-vn -0.4793 0.8774 0.0198
-vn -0.0635 0.6433 -0.7630
-vn -0.0130 0.7493 0.6621
-vn -0.0151 0.7492 0.6621
-vn -0.0124 0.7219 0.6919
-vn -0.6067 0.5916 0.5309
-vn -0.5964 0.4954 -0.6316
-vn -0.5948 0.7318 0.3327
-vn 0.5299 0.8110 0.2480
-vn 0.5228 0.2972 -0.7990
-vn -0.6162 0.2332 -0.7523
-vn -0.0366 -0.0051 -0.9993
-vn -0.0367 -0.0052 -0.9993
-vn -0.0618 0.6437 -0.7628
-vn -0.0392 0.6622 -0.7483
-vn 0.0119 0.7383 0.6743
-vn -0.0591 0.6863 -0.7249
-vn -0.0352 0.5516 -0.8334
-vn -0.0392 0.6609 -0.7494
-vn 0.0367 0.0052 0.9993
-vn 0.0119 0.7376 0.6752
-vn 0.0190 0.7262 0.6873
-vn -0.6832 0.6682 0.2945
-vn 0.4686 0.8490 0.2441
-vn 0.4822 0.3392 -0.8077
-vn -0.6481 0.1849 -0.7388
-vn 0.3254 0.8529 -0.4082
-vn -0.3965 0.7992 -0.4517
-vn 0.0114 0.9837 -0.1793
-vn 0.3544 0.9349 0.0183
-vn 0.0637 0.8450 -0.5310
-vn -0.3515 0.9262 0.1366
-vn -0.4719 0.7568 -0.4523
-vn -0.0595 0.9786 -0.1968
-vn 0.2373 0.9673 0.0900
-vn -0.3380 0.9391 -0.0618
-vn -0.0622 0.9698 -0.2357
-vn -0.7219 -0.0000 -0.6920
-vn 0.7481 0.0000 -0.6636
-vn 0.6577 0.0992 -0.7467
-vn -0.6897 0.1871 -0.6995
-vn -0.7360 0.0580 0.6744
-vn -0.6648 -0.0000 0.7470
-vn 0.7123 -0.0540 0.6997
-vn 0.7086 0.0000 0.7056
-vn 0.6577 -0.0992 -0.7467
-vn -0.6897 -0.1871 -0.6995
-vn -0.7360 -0.0580 0.6744
-vn 0.7123 0.0540 0.6997
-vn 0.7145 0.0000 -0.6996
-vn 0.6807 0.1988 -0.7050
-vn -0.6659 0.0942 -0.7401
-vn 0.6733 0.0000 0.7394
-vn 0.7439 0.0552 0.6661
-vn -0.7010 -0.0000 0.7132
-vn -0.7046 -0.0575 0.7073
-vn -0.6659 -0.0942 -0.7401
-vn 0.6807 -0.1988 -0.7050
-vn 0.7439 -0.0552 0.6661
-vn -0.7046 0.0575 0.7073
-vn -0.7191 -0.0000 -0.6949
-vn 0.7378 0.0000 -0.6751
-vn 0.6685 0.0750 -0.7399
-vn -0.6966 0.1446 -0.7028
-vn -0.7292 0.0437 0.6829
-vn -0.6741 -0.0000 0.7387
-vn 0.7118 -0.0415 0.7011
-vn 0.7092 0.0000 0.7051
-vn 0.6685 -0.0750 -0.7399
-vn -0.6966 -0.1446 -0.7028
-vn -0.7292 -0.0437 0.6829
-vn 0.7118 0.0415 0.7011
-# 1436 vertex normals
-
-vt 0.5543 0.3819 0.0000
-vt 0.5766 0.3819 0.0000
-vt 0.5699 0.3290 0.0000
-vt 0.5544 0.3281 0.0000
-vt 0.5766 0.4508 0.0000
-vt 0.5543 0.4508 0.0000
-vt 0.5668 0.5107 0.0000
-vt 0.5544 0.5107 0.0000
-vt 0.5323 0.3819 0.0000
-vt 0.5323 0.3262 0.0000
-vt 0.5323 0.4508 0.0000
-vt 0.5322 0.5107 0.0000
-vt 0.5099 0.3818 0.0000
-vt 0.5098 0.3244 0.0000
-vt 0.5099 0.4508 0.0000
-vt 0.5097 0.5109 0.0000
-vt 0.4869 0.3816 0.0000
-vt 0.4870 0.3221 0.0000
-vt 0.4870 0.4509 0.0000
-vt 0.4872 0.5110 0.0000
-vt 0.9115 0.1697 0.0000
-vt 0.9096 0.0208 0.0000
-vt 0.9278 0.0207 0.0000
-vt 0.9249 0.1696 0.0000
-vt 0.9657 0.1761 0.0000
-vt 0.9500 0.1783 0.0000
-vt 0.9522 0.0253 0.0000
-vt 0.9711 0.0226 0.0000
-vt 0.9317 0.3184 0.0000
-vt 0.9092 0.3185 0.0000
-vt 0.9871 0.3257 0.0000
-vt 0.9639 0.3290 0.0000
-vt 0.3011 0.1842 0.0000
-vt 0.3011 0.1683 0.0000
-vt 0.2824 0.1683 0.0000
-vt 0.2824 0.1842 0.0000
-vt 0.2731 0.1015 0.0000
-vt 0.2757 0.0096 0.0000
-vt 0.2570 0.0096 0.0000
-vt 0.2619 0.1015 0.0000
-vt 0.2914 0.0825 0.0000
-vt 0.2817 0.0825 0.0000
-vt 0.2860 0.0077 0.0000
-vt 0.3004 0.0077 0.0000
-vt 0.2570 0.1933 0.0000
-vt 0.2757 0.1933 0.0000
-vt 0.3004 0.1573 0.0000
-vt 0.2860 0.1573 0.0000
-vt 0.2831 0.5415 0.0000
-vt 0.2876 0.7272 0.0000
-vt 0.1570 0.7301 0.0000
-vt 0.1588 0.5391 0.0000
-vt 0.1600 0.5278 0.0000
-vt 0.2845 0.5302 0.0000
-vt 0.5593 0.7492 0.0000
-vt 0.5495 0.7564 0.0000
-vt 0.5310 0.5442 0.0000
-vt 0.5411 0.5368 0.0000
-vt 0.0350 0.5359 0.0000
-vt 0.0236 0.7419 0.0000
-vt 0.0133 0.7352 0.0000
-vt 0.0247 0.5291 0.0000
-vt 0.3718 0.4361 0.0000
-vt 0.4116 0.4372 0.0000
-vt 0.4148 0.5077 0.0000
-vt 0.3731 0.5041 0.0000
-vt 0.3312 0.5052 0.0000
-vt 0.3320 0.4348 0.0000
-vt 0.4175 0.7369 0.0000
-vt 0.4073 0.5435 0.0000
-vt 0.4090 0.5322 0.0000
-vt 0.5335 0.5329 0.0000
-vt 0.0354 0.5246 0.0000
-vt 0.2925 0.4331 0.0000
-vt 0.2885 0.5097 0.0000
-vt 0.4511 0.4380 0.0000
-vt 0.4572 0.5147 0.0000
-vt 0.4798 0.4212 0.0000
-vt 0.3807 0.4212 0.0000
-vt 0.3807 0.3221 0.0000
-vt 0.4798 0.3221 0.0000
-vt 0.2850 0.3118 0.0000
-vt 0.2850 0.3380 0.0000
-vt 0.2499 0.3303 0.0000
-vt 0.2499 0.3066 0.0000
-vt 0.3086 0.4106 0.0000
-vt 0.3086 0.3690 0.0000
-vt 0.2423 0.3710 0.0000
-vt 0.2423 0.4086 0.0000
-vt 0.3196 0.3267 0.0000
-vt 0.3196 0.3576 0.0000
-vt 0.3742 0.3652 0.0000
-vt 0.3742 0.4144 0.0000
-vt 0.4938 0.7770 0.0000
-vt 0.4938 0.9928 0.0000
-vt 0.5823 0.9148 0.0000
-vt 0.5823 0.7770 0.0000
-vt 0.0099 0.8916 0.0000
-vt 0.2078 0.8916 0.0000
-vt 0.2078 0.8042 0.0000
-vt 0.0099 0.8042 0.0000
-vt 0.1904 0.9949 0.0000
-vt 0.0053 0.9949 0.0000
-vt 0.0053 0.9131 0.0000
-vt 0.1904 0.9131 0.0000
-vt 0.4053 0.9148 0.0000
-vt 0.4053 0.7770 0.0000
-vt 0.2678 0.8611 0.0000
-vt 0.2678 0.7781 0.0000
-vt 0.3211 0.7781 0.0000
-vt 0.3211 0.9081 0.0000
-vt 0.8981 0.4255 0.0000
-vt 0.8858 0.4345 0.0000
-vt 0.8856 0.3969 0.0000
-vt 0.8979 0.3976 0.0000
-vt 0.9296 0.3584 0.0000
-vt 0.9296 0.3243 0.0000
-vt 0.9534 0.3243 0.0000
-vt 0.9534 0.3584 0.0000
-vt 0.9376 0.5171 0.0000
-vt 0.9376 0.4718 0.0000
-vt 0.9427 0.4718 0.0000
-vt 0.9427 0.5171 0.0000
-vt 0.9079 0.3584 0.0000
-vt 0.9079 0.3243 0.0000
-vt 0.9341 0.3999 0.0000
-vt 0.9546 0.4002 0.0000
-vt 0.9546 0.4032 0.0000
-vt 0.9341 0.4029 0.0000
-vt 0.9308 0.3930 0.0000
-vt 0.9175 0.3916 0.0000
-vt 0.9308 0.3847 0.0000
-vt 0.8856 0.4425 0.0000
-vt 0.8991 0.4326 0.0000
-vt 0.9062 0.4354 0.0000
-vt 0.8856 0.4497 0.0000
-vt 0.8535 0.3847 0.0000
-vt 0.8668 0.3922 0.0000
-vt 0.8535 0.3930 0.0000
-vt 0.8922 0.3818 0.0000
-vt 0.8922 0.3901 0.0000
-vt 0.8734 0.4256 0.0000
-vt 0.8733 0.3979 0.0000
-vt 0.9376 0.5625 0.0000
-vt 0.9427 0.5625 0.0000
-vt 0.9137 0.3997 0.0000
-vt 0.9136 0.4026 0.0000
-vt 0.8720 0.4326 0.0000
-vt 0.8649 0.4354 0.0000
-vt 0.9497 0.4833 0.0000
-vt 0.9497 0.4152 0.0000
-vt 0.9542 0.4152 0.0000
-vt 0.9542 0.4833 0.0000
-vt 0.9497 0.5204 0.0000
-vt 0.9542 0.5204 0.0000
-vt 0.9497 0.5575 0.0000
-vt 0.9542 0.5575 0.0000
-vt 0.9542 0.6250 0.0000
-vt 0.9497 0.6250 0.0000
-vt 0.8866 0.3751 0.0000
-vt 0.8570 0.3757 0.0000
-vt 0.8570 0.3729 0.0000
-vt 0.8866 0.3723 0.0000
-vt 0.9161 0.3745 0.0000
-vt 0.9161 0.3717 0.0000
-vt 0.8649 0.4026 0.0000
-vt 0.8720 0.4022 0.0000
-vt 0.9427 0.6217 0.0000
-vt 0.9376 0.6217 0.0000
-vt 0.9376 0.4126 0.0000
-vt 0.9427 0.4126 0.0000
-vt 0.8991 0.4019 0.0000
-vt 0.9062 0.4026 0.0000
-vt 0.9160 0.3675 0.0000
-vt 0.9315 0.3672 0.0000
-vt 0.9316 0.3714 0.0000
-vt 0.8865 0.3681 0.0000
-vt 0.8569 0.3687 0.0000
-vt 0.8414 0.3690 0.0000
-vt 0.8415 0.3732 0.0000
-vt 0.9341 0.3967 0.0000
-vt 0.9546 0.3970 0.0000
-vt 0.9137 0.3964 0.0000
-vt 0.9392 0.3712 0.0000
-vt 0.9393 0.3751 0.0000
-vt 0.9317 0.3752 0.0000
-vt 0.9391 0.3670 0.0000
-vt 0.9374 0.3847 0.0000
-vt 0.9374 0.3930 0.0000
-vt 0.9102 0.3996 0.0000
-vt 0.9102 0.3963 0.0000
-vt 0.9102 0.4026 0.0000
-vt 0.9581 0.4003 0.0000
-vt 0.9580 0.4033 0.0000
-vt 0.9581 0.3970 0.0000
-vt 0.8469 0.3930 0.0000
-vt 0.8469 0.3847 0.0000
-vt 0.8339 0.3733 0.0000
-vt 0.8338 0.3691 0.0000
-vt 0.8339 0.3771 0.0000
-vt 0.8416 0.3770 0.0000
-vt 0.6537 0.7500 0.0000
-vt 0.5717 0.7500 0.0000
-vt 0.5717 0.5730 0.0000
-vt 0.6537 0.5730 0.0000
-vt 0.6192 0.8707 0.0000
-vt 0.7028 0.8707 0.0000
-vt 0.6942 0.7769 0.0000
-vt 0.6278 0.7769 0.0000
-vt 0.5717 0.7509 0.0000
-vt 0.6192 0.8702 0.0000
-vt 0.6213 0.7769 0.0000
-vt 0.6111 0.8702 0.0000
-vt 0.7007 0.7769 0.0000
-vt 0.7028 0.8702 0.0000
-vt 0.7110 0.8702 0.0000
-vt 0.5998 0.7509 0.0000
-vt 0.5998 0.5730 0.0000
-vt 0.7566 0.8777 0.0000
-vt 0.7430 0.8777 0.0000
-vt 0.7455 0.8046 0.0000
-vt 0.7653 0.8046 0.0000
-vt 0.7197 0.8767 0.0000
-vt 0.7332 0.8767 0.0000
-vt 0.7265 0.8006 0.0000
-vt 0.7088 0.8006 0.0000
-vt 0.7452 0.9590 0.0000
-vt 0.7656 0.9590 0.0000
-vt 0.7232 0.9613 0.0000
-vt 0.7414 0.9613 0.0000
-vt 0.8245 0.8198 0.0000
-vt 0.8176 0.8887 0.0000
-vt 0.8307 0.8887 0.0000
-vt 0.8434 0.8198 0.0000
-vt 0.7950 0.8927 0.0000
-vt 0.7777 0.8923 0.0000
-vt 0.7895 0.8025 0.0000
-vt 0.8121 0.8029 0.0000
-vt 0.8080 0.9580 0.0000
-vt 0.8276 0.9653 0.0000
-vt 0.7767 0.9897 0.0000
-vt 0.8000 0.9901 0.0000
-vt 0.6832 0.7109 0.0000
-vt 0.6832 0.6133 0.0000
-vt 0.8256 0.6133 0.0000
-vt 0.8256 0.7109 0.0000
-vt 0.8172 0.6055 0.0000
-vt 0.6847 0.6055 0.0000
-vt 0.6847 0.5792 0.0000
-vt 0.8172 0.5792 0.0000
-vt 0.6843 0.7193 0.0000
-vt 0.6793 0.7379 0.0000
-vt 0.8273 0.7329 0.0000
-vt 0.8323 0.7143 0.0000
-vt 0.7770 0.1495 0.0000
-vt 0.7887 0.0175 0.0000
-vt 0.7500 0.0175 0.0000
-vt 0.7552 0.1495 0.0000
-vt 0.7500 0.2815 0.0000
-vt 0.7887 0.2815 0.0000
-vt 0.6720 0.1497 0.0000
-vt 0.6501 0.1497 0.0000
-vt 0.6432 0.0228 0.0000
-vt 0.6820 0.0228 0.0000
-vt 0.6820 0.2766 0.0000
-vt 0.6432 0.3036 0.0000
-vt 0.7224 0.1415 0.0000
-vt 0.7006 0.1415 0.0000
-vt 0.6960 0.0189 0.0000
-vt 0.7348 0.0189 0.0000
-vt 0.6954 0.2903 0.0000
-vt 0.7341 0.2903 0.0000
-vt 0.2296 0.2265 0.0000
-vt 0.2377 0.3163 0.0000
-vt 0.2165 0.3163 0.0000
-vt 0.2085 0.2265 0.0000
-vt 0.1711 0.3177 0.0000
-vt 0.1936 0.3147 0.0000
-vt 0.1836 0.2466 0.0000
-vt 0.1646 0.2356 0.0000
-vt 0.2296 0.4035 0.0000
-vt 0.2085 0.4035 0.0000
-vt 0.1915 0.3650 0.0000
-vt 0.1772 0.3973 0.0000
-vt 0.3399 0.3448 0.0000
-vt 0.3399 0.2955 0.0000
-vt 0.3315 0.2955 0.0000
-vt 0.3315 0.3447 0.0000
-vt 0.3349 0.3516 0.0000
-vt 0.3638 0.3512 0.0000
-vt 0.3684 0.3444 0.0000
-vt 0.3684 0.2958 0.0000
-vt 0.3638 0.2890 0.0000
-vt 0.3349 0.2886 0.0000
-vt 0.3687 0.3532 0.0000
-vt 0.3730 0.3452 0.0000
-vt 0.3730 0.2950 0.0000
-vt 0.3687 0.2871 0.0000
-vt 0.3420 0.2223 0.0000
-vt 0.3325 0.2223 0.0000
-vt 0.3326 0.2774 0.0000
-vt 0.3421 0.2774 0.0000
-vt 0.3741 0.2774 0.0000
-vt 0.3740 0.2222 0.0000
-vt 0.3362 0.2850 0.0000
-vt 0.3683 0.2849 0.0000
-vt 0.3795 0.2772 0.0000
-vt 0.3795 0.2222 0.0000
-vt 0.3740 0.2871 0.0000
-vt 0.3795 0.2865 0.0000
-vt 0.3281 0.7749 0.0000
-vt 0.3281 0.7711 0.0000
-vt 0.0089 0.7656 0.0000
-vt 0.0088 0.7694 0.0000
-vt 0.3283 0.7604 0.0000
-vt 0.0091 0.7549 0.0000
-vt 0.0711 0.7886 0.0000
-vt 0.0084 0.7886 0.0000
-vt 0.0084 0.7858 0.0000
-vt 0.0711 0.7858 0.0000
-vt 0.0084 0.7747 0.0000
-vt 0.0711 0.7747 0.0000
-vt 0.2599 0.7974 0.0000
-vt 0.0814 0.7941 0.0000
-vt 0.0814 0.7923 0.0000
-vt 0.2599 0.7956 0.0000
-vt 0.0815 0.7850 0.0000
-vt 0.2601 0.7883 0.0000
-vt 0.3904 0.9914 0.0000
-vt 0.3904 0.9117 0.0000
-vt 0.2102 0.9117 0.0000
-vt 0.2102 0.9914 0.0000
-vt 0.4064 0.1943 0.0000
-vt 0.3356 0.2009 0.0000
-vt 0.3508 0.1509 0.0000
-vt 0.4040 0.1592 0.0000
-vt 0.3141 0.2067 0.0000
-vt 0.3128 0.1381 0.0000
-vt 0.3695 0.0881 0.0000
-vt 0.3952 0.1005 0.0000
-vt 0.3151 0.0965 0.0000
-vt 0.5998 0.0056 0.0000
-vt 0.5984 0.1602 0.0000
-vt 0.6271 0.1602 0.0000
-vt 0.6385 0.0056 0.0000
-vt 0.5998 0.3148 0.0000
-vt 0.6385 0.3148 0.0000
-vt 0.5792 0.1625 0.0000
-vt 0.5495 0.1625 0.0000
-vt 0.5498 0.0090 0.0000
-vt 0.5897 0.0090 0.0000
-vt 0.5897 0.3161 0.0000
-vt 0.5498 0.3161 0.0000
-vt 0.1025 0.5132 0.0000
-vt 0.0149 0.5132 0.0000
-vt 0.0149 0.4236 0.0000
-vt 0.1025 0.4236 0.0000
-vt 0.1578 0.3962 0.0000
-vt 0.0854 0.3962 0.0000
-vt 0.0854 0.1884 0.0000
-vt 0.1578 0.1884 0.0000
-vt 0.0058 0.1784 0.0000
-vt 0.0667 0.1784 0.0000
-vt 0.0667 0.0037 0.0000
-vt 0.0058 0.0037 0.0000
-vt 0.0800 0.1790 0.0000
-vt 0.1409 0.1790 0.0000
-vt 0.1409 0.0042 0.0000
-vt 0.0800 0.0042 0.0000
-vt 0.0787 0.4021 0.0000
-vt 0.0041 0.4021 0.0000
-vt 0.0041 0.1881 0.0000
-vt 0.0787 0.1881 0.0000
-vt 0.0057 0.4170 0.0000
-vt 0.1117 0.4170 0.0000
-vt 0.1117 0.5198 0.0000
-vt 0.0057 0.5198 0.0000
-vt 0.1578 0.4044 0.0000
-vt 0.0854 0.4044 0.0000
-vt 0.0058 0.1853 0.0000
-vt 0.0667 0.1853 0.0000
-vt 0.0800 0.1859 0.0000
-vt 0.1409 0.1859 0.0000
-vt 0.0787 0.4106 0.0000
-vt 0.0041 0.4106 0.0000
-vt 0.1234 0.5153 0.0000
-vt 0.2286 0.5153 0.0000
-vt 0.2286 0.5003 0.0000
-vt 0.1234 0.5003 0.0000
-vt 0.1981 0.4483 0.0000
-vt 0.1195 0.4483 0.0000
-vt 0.1195 0.4224 0.0000
-vt 0.1981 0.4177 0.0000
-vt 0.2025 0.4850 0.0000
-vt 0.2869 0.4850 0.0000
-vt 0.2869 0.4598 0.0000
-vt 0.2025 0.4551 0.0000
-vt 0.2767 0.4483 0.0000
-vt 0.2767 0.4224 0.0000
-vt 0.1182 0.4850 0.0000
-vt 0.1182 0.4598 0.0000
-vt 0.2519 0.2562 0.0000
-vt 0.2598 0.2562 0.0000
-vt 0.2598 0.2285 0.0000
-vt 0.2519 0.2203 0.0000
-vt 0.2878 0.2921 0.0000
-vt 0.2878 0.2839 0.0000
-vt 0.2598 0.2839 0.0000
-vt 0.2519 0.2921 0.0000
-vt 0.3237 0.2562 0.0000
-vt 0.3157 0.2562 0.0000
-vt 0.3157 0.2839 0.0000
-vt 0.3237 0.2921 0.0000
-vt 0.2878 0.2203 0.0000
-vt 0.2878 0.2285 0.0000
-vt 0.3157 0.2285 0.0000
-vt 0.3237 0.2203 0.0000
-vt 0.4345 0.1722 0.0000
-vt 0.4256 0.1733 0.0000
-vt 0.4270 0.1485 0.0000
-vt 0.4169 0.1712 0.0000
-vt 0.4170 0.1257 0.0000
-vt 0.4257 0.1234 0.0000
-vt 0.4346 0.1245 0.0000
-vt 0.4424 0.1289 0.0000
-vt 0.4483 0.1356 0.0000
-vt 0.4515 0.1440 0.0000
-vt 0.4515 0.1530 0.0000
-vt 0.4483 0.1613 0.0000
-vt 0.4424 0.1680 0.0000
-vt 0.4148 0.0240 0.0000
-vt 0.4045 0.0414 0.0000
-vt 0.3976 0.0383 0.0000
-vt 0.4037 0.0190 0.0000
-vt 0.4245 0.0314 0.0000
-vt 0.4105 0.0459 0.0000
-vt 0.4324 0.0410 0.0000
-vt 0.4152 0.0515 0.0000
-vt 0.4382 0.0525 0.0000
-vt 0.4182 0.0578 0.0000
-vt 0.3409 0.0445 0.0000
-vt 0.3589 0.0536 0.0000
-vt 0.3564 0.0601 0.0000
-vt 0.3361 0.0564 0.0000
-vt 0.3480 0.0344 0.0000
-vt 0.3632 0.0477 0.0000
-vt 0.3571 0.0262 0.0000
-vt 0.3688 0.0427 0.0000
-vt 0.3678 0.0204 0.0000
-vt 0.3754 0.0391 0.0000
-vt 0.3796 0.0172 0.0000
-vt 0.3827 0.0371 0.0000
-vt 0.3917 0.0167 0.0000
-vt 0.3902 0.0369 0.0000
-vt 0.4221 0.0116 0.0000
-vt 0.4080 0.0053 0.0000
-vt 0.4344 0.0210 0.0000
-vt 0.4441 0.0327 0.0000
-vt 0.4513 0.0455 0.0000
-vt 0.3286 0.0372 0.0000
-vt 0.3224 0.0505 0.0000
-vt 0.3374 0.0247 0.0000
-vt 0.3489 0.0144 0.0000
-vt 0.3625 0.0070 0.0000
-vt 0.3774 0.0029 0.0000
-vt 0.3928 0.0023 0.0000
-vt 0.4102 0.2721 0.0000
-vt 0.3951 0.2794 0.0000
-vt 0.3897 0.2637 0.0000
-vt 0.4061 0.2601 0.0000
-vt 0.4170 0.2828 0.0000
-vt 0.4040 0.2934 0.0000
-vt 0.4261 0.2917 0.0000
-vt 0.4159 0.3050 0.0000
-vt 0.4371 0.2981 0.0000
-vt 0.4302 0.3135 0.0000
-vt 0.4390 0.1981 0.0000
-vt 0.4328 0.1825 0.0000
-vt 0.4489 0.1782 0.0000
-vt 0.4513 0.1948 0.0000
-vt 0.4279 0.2041 0.0000
-vt 0.4182 0.1904 0.0000
-vt 0.4184 0.2126 0.0000
-vt 0.4058 0.2015 0.0000
-vt 0.4112 0.2231 0.0000
-vt 0.3964 0.2152 0.0000
-vt 0.4066 0.2349 0.0000
-vt 0.3903 0.2307 0.0000
-vt 0.4048 0.2475 0.0000
-vt 0.3880 0.2471 0.0000
-vt 0.7282 0.5246 0.0000
-vt 0.7378 0.5238 0.0000
-vt 0.7411 0.5710 0.0000
-vt 0.7328 0.5717 0.0000
-vt 0.7186 0.5257 0.0000
-vt 0.7245 0.5726 0.0000
-vt 0.7163 0.5737 0.0000
-vt 0.7090 0.5267 0.0000
-vt 0.6995 0.5283 0.0000
-vt 0.7081 0.5751 0.0000
-vt 0.7957 0.5247 0.0000
-vt 0.8053 0.5255 0.0000
-vt 0.7990 0.5727 0.0000
-vt 0.7908 0.5717 0.0000
-vt 0.7860 0.5239 0.0000
-vt 0.7826 0.5710 0.0000
-vt 0.7763 0.5233 0.0000
-vt 0.7743 0.5705 0.0000
-vt 0.7667 0.5230 0.0000
-vt 0.7660 0.5703 0.0000
-vt 0.7571 0.5230 0.0000
-vt 0.7577 0.5703 0.0000
-vt 0.7474 0.5233 0.0000
-vt 0.7494 0.5705 0.0000
-vt 0.2323 0.2005 0.0000
-vt 0.1605 0.2005 0.0000
-vt 0.1605 0.1287 0.0000
-vt 0.2323 0.1287 0.0000
-vt 0.2493 0.0649 0.0000
-vt 0.1549 0.0649 0.0000
-vt 0.1510 0.0139 0.0000
-vt 0.2531 0.0139 0.0000
-vt 0.1510 0.1160 0.0000
-vt 0.2531 0.1160 0.0000
-vt 0.8932 0.8530 0.0000
-vt 0.8784 0.8552 0.0000
-vt 0.8769 0.8224 0.0000
-vt 0.8917 0.8188 0.0000
-vt 0.9487 0.8371 0.0000
-vt 0.9515 0.8608 0.0000
-vt 0.9383 0.8557 0.0000
-vt 0.9371 0.8262 0.0000
-vt 0.9218 0.8207 0.0000
-vt 0.9232 0.8532 0.0000
-vt 0.9081 0.8508 0.0000
-vt 0.9066 0.8151 0.0000
-vt 0.8658 0.8597 0.0000
-vt 0.8798 0.8879 0.0000
-vt 0.8649 0.8886 0.0000
-vt 0.8947 0.8872 0.0000
-vt 0.8960 0.9072 0.0000
-vt 0.8803 0.9073 0.0000
-vt 0.9543 0.8844 0.0000
-vt 0.9601 0.9224 0.0000
-vt 0.9439 0.9164 0.0000
-vt 0.9394 0.8851 0.0000
-vt 0.9245 0.8858 0.0000
-vt 0.9278 0.9118 0.0000
-vt 0.9117 0.9072 0.0000
-vt 0.9096 0.8865 0.0000
-vt 0.8648 0.9120 0.0000
-vt 0.8807 0.9266 0.0000
-vt 0.8646 0.9353 0.0000
-vt 0.9648 0.8659 0.0000
-vt 0.9692 0.8836 0.0000
-vt 0.8564 0.8393 0.0000
-vt 0.8666 0.8309 0.0000
-vt 0.8532 0.8643 0.0000
-vt 0.8972 0.9272 0.0000
-vt 0.9137 0.9278 0.0000
-vt 0.9659 0.9604 0.0000
-vt 0.9763 0.9283 0.0000
-vt 0.9833 0.9730 0.0000
-vt 0.9311 0.9378 0.0000
-vt 0.9484 0.9478 0.0000
-vt 0.8501 0.8893 0.0000
-vt 0.8493 0.9166 0.0000
-vt 0.9603 0.8481 0.0000
-vt 0.8485 0.9440 0.0000
-vt 0.9897 0.8367 0.0000
-vt 0.9878 0.8367 0.0000
-vt 0.9878 0.5203 0.0000
-vt 0.9897 0.5203 0.0000
-vt 0.9916 0.8367 0.0000
-vt 0.9916 0.5203 0.0000
-vt 0.9839 0.8367 0.0000
-vt 0.9818 0.8367 0.0000
-vt 0.9818 0.5203 0.0000
-vt 0.9839 0.5203 0.0000
-vt 0.9859 0.8367 0.0000
-vt 0.9859 0.5203 0.0000
-vt 0.9958 0.8502 0.0000
-vt 0.9868 0.8563 0.0000
-vt 0.9783 0.8496 0.0000
-vt 0.9928 0.8397 0.0000
-vt 0.9820 0.8393 0.0000
-vt 0.9203 0.5099 0.0000
-vt 0.9177 0.5100 0.0000
-vt 0.9146 0.4105 0.0000
-vt 0.9189 0.4103 0.0000
-vt 0.9223 0.5099 0.0000
-vt 0.9221 0.4104 0.0000
-vt 0.9252 0.5099 0.0000
-vt 0.9269 0.4107 0.0000
-vt 0.9272 0.5099 0.0000
-vt 0.9301 0.4107 0.0000
-vt 0.9151 0.5100 0.0000
-vt 0.9104 0.4108 0.0000
-vt 0.9068 0.6461 0.0000
-vt 0.9068 0.6257 0.0000
-vt 0.9272 0.6194 0.0000
-vt 0.9272 0.6524 0.0000
-vt 0.9398 0.6359 0.0000
-vt 0.9182 0.5597 0.0000
-vt 0.9208 0.5597 0.0000
-vt 0.9228 0.5596 0.0000
-vt 0.9257 0.5596 0.0000
-vt 0.9277 0.5597 0.0000
-vt 0.9156 0.5597 0.0000
-vt 0.9188 0.6094 0.0000
-vt 0.9214 0.6094 0.0000
-vt 0.9234 0.6094 0.0000
-vt 0.9263 0.6093 0.0000
-vt 0.9283 0.6094 0.0000
-vt 0.9162 0.6094 0.0000
-vt 0.9909 0.4977 0.0000
-vt 0.9862 0.4977 0.0000
-vt 0.9862 0.3406 0.0000
-vt 0.9909 0.3406 0.0000
-vt 0.9718 0.4977 0.0000
-vt 0.9671 0.4977 0.0000
-vt 0.9671 0.3406 0.0000
-vt 0.9718 0.3406 0.0000
-vt 0.9766 0.4977 0.0000
-vt 0.9766 0.3406 0.0000
-vt 0.9814 0.4977 0.0000
-vt 0.9814 0.3406 0.0000
-vt 0.4627 0.1545 0.0000
-vt 0.4900 0.1545 0.0000
-vt 0.4886 0.0081 0.0000
-vt 0.4519 0.0081 0.0000
-vt 0.4886 0.3010 0.0000
-vt 0.4519 0.3010 0.0000
-vt 0.5082 0.1567 0.0000
-vt 0.4982 0.0112 0.0000
-vt 0.5360 0.0112 0.0000
-vt 0.5362 0.1567 0.0000
-vt 0.5360 0.3022 0.0000
-vt 0.4982 0.3022 0.0000
-vt 0.8396 0.7268 0.0000
-vt 0.8396 0.7694 0.0000
-vt 0.9436 0.7198 0.0000
-vt 0.9436 0.7062 0.0000
-vt 0.6527 0.5196 0.0000
-vt 0.5818 0.5262 0.0000
-vt 0.5823 0.5023 0.0000
-vt 0.6532 0.4957 0.0000
-vt 0.8263 0.3959 0.0000
-vt 0.8263 0.3521 0.0000
-vt 0.8299 0.3500 0.0000
-vt 0.8299 0.3981 0.0000
-vt 0.7694 0.3981 0.0000
-vt 0.7694 0.3959 0.0000
-vt 0.8397 0.7769 0.0000
-vt 0.9437 0.7272 0.0000
-vt 0.6526 0.5237 0.0000
-vt 0.5817 0.5303 0.0000
-vt 0.6942 0.3326 0.0000
-vt 0.7990 0.3325 0.0000
-vt 0.7985 0.3269 0.0000
-vt 0.6938 0.3278 0.0000
-vt 0.9750 0.7589 0.0000
-vt 0.8460 0.8162 0.0000
-vt 0.8459 0.8073 0.0000
-vt 0.9749 0.7500 0.0000
-vt 0.7029 0.3584 0.0000
-vt 0.7029 0.4454 0.0000
-vt 0.6025 0.4454 0.0000
-vt 0.6025 0.3584 0.0000
-vt 0.6885 0.4818 0.0000
-vt 0.5970 0.4799 0.0000
-vt 0.5977 0.4706 0.0000
-vt 0.6891 0.4725 0.0000
-vt 0.7694 0.3521 0.0000
-vt 0.7125 0.3521 0.0000
-vt 0.7125 0.3500 0.0000
-vt 0.7694 0.3500 0.0000
-vt 0.6881 0.4868 0.0000
-vt 0.5967 0.4849 0.0000
-vt 0.6961 0.3466 0.0000
-vt 0.5980 0.3534 0.0000
-vt 0.5976 0.3494 0.0000
-vt 0.6956 0.3408 0.0000
-vt 0.7235 0.5183 0.0000
-vt 0.7240 0.4945 0.0000
-vt 0.7125 0.3959 0.0000
-vt 0.7125 0.3981 0.0000
-vt 0.7234 0.5225 0.0000
-vt 0.5899 0.3399 0.0000
-vt 0.5896 0.3354 0.0000
-vt 0.7801 0.4810 0.0000
-vt 0.7795 0.4903 0.0000
-vt 0.7791 0.4953 0.0000
-vt 0.7943 0.3415 0.0000
-vt 0.7948 0.3470 0.0000
-vt 0.7756 0.4056 0.0000
-vt 0.7227 0.4056 0.0000
-vt 0.7174 0.4000 0.0000
-vt 0.7810 0.4000 0.0000
-vt 0.7174 0.4051 0.0000
-vt 0.8395 0.4464 0.0000
-vt 0.8395 0.4056 0.0000
-vt 0.8445 0.4000 0.0000
-vt 0.8445 0.4521 0.0000
-vt 0.7860 0.4464 0.0000
-vt 0.7810 0.4521 0.0000
-vt 0.7860 0.4056 0.0000
-vt 0.7810 0.4056 0.0000
-vt 0.7957 0.4563 0.0000
-vt 0.8479 0.4563 0.0000
-vt 0.8479 0.4601 0.0000
-vt 0.7957 0.4601 0.0000
-vt 0.7389 0.4601 0.0000
-vt 0.7389 0.4563 0.0000
-vt 0.7071 0.4601 0.0000
-vt 0.7071 0.4563 0.0000
-vt 0.6117 0.4563 0.0000
-vt 0.6117 0.4601 0.0000
-vt 0.7810 0.4464 0.0000
-vt 0.7756 0.4465 0.0000
-vt 0.7225 0.4465 0.0000
-vt 0.7174 0.4521 0.0000
-vt 0.8927 0.0885 0.0000
-vt 0.8969 0.0810 0.0000
-vt 0.9040 0.0969 0.0000
-vt 0.7896 0.0803 0.0000
-vt 0.8005 0.0831 0.0000
-vt 0.7899 0.0962 0.0000
-vt 0.8040 0.0926 0.0000
-vt 0.8032 0.1028 0.0000
-vt 0.7986 0.1119 0.0000
-vt 0.8969 0.1127 0.0000
-vt 0.8927 0.1052 0.0000
-vt 0.8917 0.0969 0.0000
-vt 0.8804 0.0738 0.0000
-vt 0.8804 0.0857 0.0000
-vt 0.8177 0.0918 0.0000
-vt 0.8187 0.0777 0.0000
-vt 0.8166 0.1056 0.0000
-vt 0.8156 0.1197 0.0000
-vt 0.8804 0.1080 0.0000
-vt 0.8804 0.1199 0.0000
-vt 0.8804 0.0969 0.0000
-vt 0.8639 0.0810 0.0000
-vt 0.8681 0.0885 0.0000
-vt 0.8311 0.0946 0.0000
-vt 0.8360 0.0857 0.0000
-vt 0.8303 0.1048 0.0000
-vt 0.8336 0.1146 0.0000
-vt 0.8681 0.1052 0.0000
-vt 0.8639 0.1127 0.0000
-vt 0.8691 0.0969 0.0000
-vt 0.8568 0.0969 0.0000
-vt 0.8472 0.0847 0.0000
-vt 0.8445 0.1003 0.0000
-vt 0.8552 0.1486 0.0000
-vt 0.8618 0.1328 0.0000
-vt 0.8776 0.1486 0.0000
-vt 0.8776 0.1262 0.0000
-vt 0.8933 0.1328 0.0000
-vt 0.8999 0.1486 0.0000
-vt 0.8933 0.1644 0.0000
-vt 0.8776 0.1709 0.0000
-vt 0.8618 0.1644 0.0000
-vt 0.8921 0.2853 0.0000
-vt 0.8780 0.2903 0.0000
-vt 0.8731 0.2809 0.0000
-vt 0.8852 0.2721 0.0000
-vt 0.8950 0.3000 0.0000
-vt 0.8800 0.3007 0.0000
-vt 0.8934 0.3149 0.0000
-vt 0.8789 0.3112 0.0000
-vt 0.8876 0.3287 0.0000
-vt 0.8748 0.3209 0.0000
-vt 0.8780 0.3402 0.0000
-vt 0.8680 0.3291 0.0000
-vt 0.8616 0.2542 0.0000
-vt 0.8564 0.2683 0.0000
-vt 0.8460 0.2661 0.0000
-vt 0.8469 0.2512 0.0000
-vt 0.8747 0.2614 0.0000
-vt 0.8657 0.2733 0.0000
-vt 0.8151 0.1246 0.0000
-vt 0.8347 0.1328 0.0000
-vt 0.7954 0.1328 0.0000
-vt 0.8151 0.1802 0.0000
-vt 0.7954 0.1721 0.0000
-vt 0.8347 0.1721 0.0000
-vt 0.7873 0.1524 0.0000
-vt 0.8429 0.1524 0.0000
-vt 0.8717 0.2132 0.0000
-vt 0.8609 0.2131 0.0000
-vt 0.8603 0.1878 0.0000
-vt 0.8719 0.1869 0.0000
-vt 0.8834 0.1879 0.0000
-vt 0.8825 0.2133 0.0000
-vt 0.8956 0.1897 0.0000
-vt 0.8925 0.2133 0.0000
-vt 0.8509 0.2131 0.0000
-vt 0.8481 0.1893 0.0000
-vt 0.8600 0.2384 0.0000
-vt 0.8715 0.2395 0.0000
-vt 0.8831 0.2386 0.0000
-vt 0.8953 0.2370 0.0000
-vt 0.8478 0.2367 0.0000
-vt 0.6535 0.9321 0.0000
-vt 0.6428 0.9320 0.0000
-vt 0.6438 0.8990 0.0000
-vt 0.6559 0.8983 0.0000
-vt 0.6680 0.9016 0.0000
-vt 0.6635 0.9322 0.0000
-vt 0.6314 0.9001 0.0000
-vt 0.6327 0.9319 0.0000
-vt 0.6228 0.9318 0.0000
-vt 0.6185 0.8998 0.0000
-vt 0.6434 0.9650 0.0000
-vt 0.6555 0.9660 0.0000
-vt 0.6676 0.9629 0.0000
-vt 0.6310 0.9636 0.0000
-vt 0.6181 0.9637 0.0000
-# 820 texture coords
-
-o market
-g market
-f 1/1/1 2/2/2 3/3/3
-f 3/3/3 4/4/4 1/1/1
-f 5/5/5 2/2/2 1/1/1
-f 1/1/1 6/6/6 5/5/5
-f 7/7/7 5/5/5 6/6/6
-f 6/6/6 8/8/8 7/7/7
-f 9/9/9 1/1/1 4/4/4
-f 4/4/4 10/10/10 9/9/9
-f 6/6/6 1/1/1 9/9/9
-f 9/9/9 11/11/11 6/6/6
-f 8/8/8 6/6/6 11/11/11
-f 11/11/11 12/12/12 8/8/8
-f 13/13/13 9/9/9 10/10/10
-f 10/10/10 14/14/14 13/13/13
-f 11/11/11 9/9/9 13/13/13
-f 13/13/13 15/15/15 11/11/11
-f 12/12/12 11/11/11 15/15/15
-f 15/15/15 16/16/16 12/12/12
-f 17/17/17 13/13/13 14/14/14
-f 14/14/14 18/18/18 17/17/17
-f 15/15/15 13/13/13 17/17/17
-f 17/17/17 19/19/19 15/15/15
-f 16/16/16 15/15/15 19/19/19
-f 19/19/19 20/20/20 16/16/16
-f 21/21/21 22/22/22 23/23/23
-f 23/23/23 24/24/24 21/21/21
-f 21/25/21 25/26/25 26/27/26
-f 26/27/26 22/28/22 21/25/21
-f 27/24/27 28/23/28 26/22/26
-f 26/22/26 25/21/25 27/24/27
-f 24/25/24 23/28/23 28/27/28
-f 28/27/28 27/26/27 24/25/24
-f 29/29/29 30/30/30 21/21/21
-f 21/21/21 24/24/24 29/29/29
-f 30/31/30 31/32/31 25/26/25
-f 25/26/25 21/25/21 30/31/30
-f 31/30/31 32/29/32 27/24/27
-f 27/24/27 25/21/25 31/30/31
-f 27/26/27 32/32/32 29/31/29
-f 29/31/29 24/25/24 27/26/27
-f 33/33/33 34/34/34 35/35/35
-f 35/35/35 36/36/36 33/33/33
-f 37/37/37 38/38/38 39/39/39
-f 39/39/39 40/40/40 37/37/37
-f 37/41/37 41/42/41 42/43/42
-f 42/43/42 38/44/38 37/41/37
-f 43/40/43 44/39/44 42/38/42
-f 42/38/42 41/37/41 43/40/43
-f 40/41/40 39/44/39 44/43/44
-f 44/43/44 43/42/43 40/41/40
-f 35/45/35 34/46/34 37/37/37
-f 37/37/37 40/40/40 35/45/35
-f 37/41/37 34/47/34 33/48/33
-f 33/48/33 41/42/41 37/41/37
-f 33/46/33 36/45/36 43/40/43
-f 43/40/43 41/37/41 33/46/33
-f 36/48/36 35/47/35 40/41/40
-f 40/41/40 43/42/43 36/48/36
-f 45/49/45 46/50/46 47/51/47
-f 47/51/47 48/52/48 45/49/45
-f 46/50/46 49/51/49 50/52/50
-f 50/52/50 51/49/51 46/50/46
-f 45/49/45 48/52/48 52/53/52
-f 52/53/52 53/54/53 45/49/45
-f 54/55/54 55/56/55 56/57/56
-f 56/57/56 57/58/57 54/55/54
-f 58/59/58 55/60/55 54/61/54
-f 54/61/54 59/62/59 58/59/58
-f 51/49/51 50/52/50 60/53/60
-f 60/53/60 61/54/61 51/49/51
-f 62/55/62 63/56/63 64/57/64
-f 64/57/64 65/58/65 62/55/62
-f 66/59/66 63/60/63 62/61/62
-f 62/61/62 67/62/67 66/59/66
-f 53/63/53 52/64/52 68/65/68
-f 68/65/68 69/66/69 53/63/53
-f 61/63/61 69/66/69 68/67/68
-f 68/67/68 70/68/60 61/63/61
-f 56/57/56 55/56/55 49/69/49
-f 49/69/49 71/70/70 56/57/56
-f 71/70/70 49/69/49 46/50/46
-f 46/50/46 45/49/45 71/70/70
-f 66/59/66 48/52/48 47/51/47
-f 47/51/47 63/60/63 66/59/66
-f 64/57/64 63/56/63 47/69/47
-f 47/69/47 72/70/50 64/57/64
-f 47/69/47 46/50/46 51/49/51
-f 51/49/51 72/70/50 47/69/47
-f 58/59/58 50/52/50 49/51/49
-f 49/51/49 55/60/55 58/59/58
-f 56/57/56 71/70/70 73/71/71
-f 73/71/71 57/72/57 56/57/56
-f 71/70/70 45/49/45 53/54/53
-f 53/54/53 73/71/71 71/70/70
-f 67/73/67 52/53/52 48/52/48
-f 48/52/48 66/59/66 67/73/67
-f 64/57/64 72/70/50 70/71/60
-f 70/71/60 65/72/65 64/57/64
-f 72/70/50 51/49/51 61/54/61
-f 61/54/61 70/71/60 72/70/50
-f 59/73/59 60/53/60 50/52/50
-f 50/52/50 58/59/58 59/73/59
-f 57/74/57 73/68/71 74/67/72
-f 74/67/72 54/75/54 57/74/57
-f 73/68/71 53/63/53 69/66/69
-f 69/66/69 74/67/72 73/68/71
-f 67/76/67 62/77/62 68/65/68
-f 68/65/68 52/64/52 67/76/67
-f 59/76/59 54/77/54 74/65/72
-f 74/65/72 60/64/60 59/76/59
-f 60/64/60 74/65/72 69/66/69
-f 69/66/69 61/63/61 60/64/60
-f 65/74/65 70/68/60 68/67/68
-f 68/67/68 62/75/62 65/74/65
-f 75/78/73 76/79/74 77/80/75
-f 77/80/75 78/81/76 75/78/73
-f 79/82/77 80/83/78 81/84/79
-f 81/84/79 82/85/80 79/82/77
-f 83/86/81 79/87/77 82/88/80
-f 82/88/80 84/89/82 83/86/81
-f 85/84/83 86/83/84 83/82/81
-f 83/82/81 84/85/82 85/84/83
-f 80/87/78 86/86/84 85/89/83
-f 85/89/83 81/88/79 80/87/78
-f 78/90/76 77/91/75 80/83/78
-f 80/83/78 79/82/77 78/90/76
-f 78/92/76 79/87/77 83/86/81
-f 83/86/81 75/93/73 78/92/76
-f 75/90/73 83/82/81 86/83/84
-f 86/83/84 76/91/74 75/90/73
-f 76/93/74 86/86/84 80/87/78
-f 80/87/78 77/92/75 76/93/74
-f 87/94/85 88/95/86 89/96/87
-f 89/96/87 90/97/88 87/94/85
-f 91/98/89 92/99/90 93/100/91
-f 93/100/91 94/101/92 91/98/89
-f 89/102/87 95/103/93 96/104/93
-f 96/104/93 90/105/88 89/102/87
-f 92/106/90 88/95/86 87/94/85
-f 87/94/85 93/107/91 92/106/90
-f 91/108/89 94/109/92 97/110/94
-f 97/110/94 98/111/94 91/108/89
-f 99/112/95 100/113/96 101/114/97
-f 101/114/97 102/115/98 99/112/95
-f 103/116/99 104/117/100 105/118/101
-f 105/118/101 106/119/102 103/116/99
-f 107/120/103 108/121/104 109/122/105
-f 109/122/105 110/123/106 107/120/103
-f 111/117/107 112/116/108 113/124/109
-f 113/124/109 114/125/110 111/117/107
-f 115/126/111 116/127/112 117/128/113
-f 117/128/113 118/129/114 115/126/111
-f 119/130/115 120/131/116 121/132/117
-f 122/133/118 123/134/119 108/135/104
-f 108/135/104 107/136/103 122/133/118
-f 124/137/120 125/138/121 126/139/122
-f 127/140/123 128/141/124 125/138/121
-f 125/138/121 124/137/120 127/140/123
-f 129/142/125 130/143/126 101/114/97
-f 101/114/97 100/113/96 129/142/125
-f 131/144/127 107/120/103 110/123/106
-f 110/123/106 132/145/128 131/144/127
-f 133/146/129 115/126/111 118/129/114
-f 118/129/114 134/147/130 133/146/129
-f 135/148/131 122/133/118 107/136/103
-f 107/136/103 131/149/127 135/148/131
-f 120/131/116 128/141/124 127/140/123
-f 127/140/123 121/132/117 120/131/116
-f 99/150/95 102/151/98 136/152/132
-f 136/152/132 123/153/119 99/150/95
-f 100/154/96 99/150/95 123/153/119
-f 123/153/119 122/155/118 100/154/96
-f 129/156/125 100/154/96 122/155/118
-f 122/155/118 135/157/131 129/156/125
-f 137/158/133 130/159/126 129/156/125
-f 129/156/125 135/157/131 137/158/133
-f 101/160/97 130/161/126 137/162/133
-f 137/162/133 138/163/134 101/160/97
-f 102/164/98 101/160/97 138/163/134
-f 138/163/134 136/165/132 102/164/98
-f 135/148/131 131/149/127 139/166/135
-f 139/166/135 137/167/133 135/148/131
-f 132/145/128 140/168/136 139/169/135
-f 139/169/135 131/144/127 132/145/128
-f 109/122/105 108/121/104 141/170/137
-f 141/170/137 142/171/138 109/122/105
-f 123/134/119 136/172/132 141/173/137
-f 141/173/137 108/135/104 123/134/119
-f 143/124/139 144/125/140 104/117/100
-f 104/117/100 103/116/99 143/124/139
-f 120/174/116 119/175/115 141/176/137
-f 141/176/137 136/165/132 120/174/116
-f 128/177/124 120/174/116 136/165/132
-f 136/165/132 138/163/134 128/177/124
-f 125/178/121 128/177/124 138/163/134
-f 138/163/134 137/162/133 125/178/121
-f 126/179/122 125/178/121 137/162/133
-f 137/162/133 139/180/135 126/179/122
-f 145/118/141 146/119/142 112/116/108
-f 112/116/108 111/117/107 145/118/141
-f 127/181/123 124/182/120 116/127/112
-f 116/127/112 115/126/111 127/181/123
-f 121/183/117 127/181/123 115/126/111
-f 115/126/111 133/146/129 121/183/117
-f 103/184/99 106/185/102 142/186/138
-f 142/186/138 141/176/137 103/184/99
-f 143/187/139 103/184/99 141/176/137
-f 141/176/137 119/175/115 143/187/139
-f 144/188/140 143/189/139 119/130/115
-f 119/130/115 121/132/117 144/188/140
-f 104/190/100 144/191/140 121/183/117
-f 121/183/117 133/146/129 104/190/100
-f 105/192/101 104/190/100 133/146/129
-f 133/146/129 134/147/130 105/192/101
-f 111/193/107 114/194/110 117/128/113
-f 117/128/113 116/127/112 111/193/107
-f 145/195/141 111/193/107 116/127/112
-f 116/127/112 124/182/120 145/195/141
-f 146/196/142 145/197/141 124/137/120
-f 124/137/120 126/139/122 146/196/142
-f 112/198/108 146/199/142 126/179/122
-f 126/179/122 139/180/135 112/198/108
-f 113/200/109 112/198/108 139/180/135
-f 139/180/135 140/201/136 113/200/109
-f 147/202/143 148/203/144 149/204/144
-f 149/204/144 150/205/145 147/202/143
-f 151/206/146 152/207/147 153/208/148
-f 153/208/148 154/209/149 151/206/146
-f 155/210/150 156/202/151 157/205/152
-f 157/205/152 158/204/153 155/210/150
-f 159/211/154 160/209/155 157/212/152
-f 157/212/152 156/213/151 159/211/154
-f 150/214/145 161/208/156 162/215/157
-f 162/215/157 147/216/143 150/214/145
-f 151/217/146 154/218/149 160/205/155
-f 160/205/155 159/202/154 151/217/146
-f 153/218/148 152/217/147 162/202/157
-f 162/202/157 161/205/156 153/218/148
-f 163/219/158 164/220/159 165/221/160
-f 165/221/160 166/222/161 163/219/158
-f 167/223/162 163/224/158 166/225/161
-f 166/225/161 168/226/163 167/223/162
-f 169/221/164 170/220/165 167/219/162
-f 167/219/162 168/222/163 169/221/164
-f 165/225/160 164/224/159 170/223/165
-f 170/223/165 169/226/164 165/225/160
-f 171/227/166 164/220/159 163/219/158
-f 163/219/158 172/228/167 171/227/166
-f 173/229/168 172/230/167 163/224/158
-f 163/224/158 167/223/162 173/229/168
-f 174/227/169 173/228/168 167/219/162
-f 167/219/162 170/220/165 174/227/169
-f 174/229/169 170/223/165 164/224/159
-f 164/224/159 171/230/166 174/229/169
-f 175/231/170 176/232/171 177/233/172
-f 177/233/172 178/234/173 175/231/170
-f 179/235/174 176/236/171 175/237/170
-f 175/237/170 180/238/175 179/235/174
-f 181/233/176 179/232/174 180/231/175
-f 180/231/175 182/234/177 181/233/176
-f 178/237/173 177/236/172 181/235/176
-f 181/235/176 182/238/177 178/237/173
-f 183/239/178 184/240/179 177/233/172
-f 177/233/172 176/232/171 183/239/178
-f 183/241/178 176/236/171 179/235/174
-f 179/235/174 185/242/180 183/241/178
-f 185/239/180 179/232/174 181/233/176
-f 181/233/176 186/240/181 185/239/180
-f 184/241/179 186/242/181 181/235/176
-f 181/235/176 177/236/172 184/241/179
-f 187/219/182 188/222/183 189/221/184
-f 189/221/184 190/220/185 187/219/182
-f 191/223/186 192/226/187 188/225/183
-f 188/225/183 187/224/182 191/223/186
-f 191/219/186 193/220/188 194/221/189
-f 194/221/189 192/222/187 191/219/186
-f 193/223/188 190/224/185 189/225/184
-f 189/225/184 194/226/189 193/223/188
-f 195/227/190 196/228/191 187/219/182
-f 187/219/182 190/220/185 195/227/190
-f 187/224/182 196/230/191 197/229/192
-f 197/229/192 191/223/186 187/224/182
-f 191/219/186 197/228/192 198/227/193
-f 198/227/193 193/220/188 191/219/186
-f 198/229/193 195/230/190 190/224/185
-f 190/224/185 193/223/188 198/229/193
-f 199/233/194 200/232/195 201/231/196
-f 201/231/196 202/234/197 199/233/194
-f 203/235/198 204/238/199 201/237/196
-f 201/237/196 200/236/195 203/235/198
-f 205/233/200 206/234/201 204/231/199
-f 204/231/199 203/232/198 205/233/200
-f 205/235/200 199/236/194 202/237/197
-f 202/237/197 206/238/201 205/235/200
-f 199/233/194 207/240/202 208/239/203
-f 208/239/203 200/232/195 199/233/194
-f 208/241/203 209/242/204 203/235/198
-f 203/235/198 200/236/195 208/241/203
-f 209/239/204 210/240/205 205/233/200
-f 205/233/200 203/232/198 209/239/204
-f 205/235/200 210/242/205 207/241/202
-f 207/241/202 199/236/194 205/235/200
-f 211/243/206 212/244/207 213/245/208
-f 213/245/208 214/246/209 211/243/206
-f 215/244/210 216/243/211 217/246/212
-f 217/246/212 218/245/213 215/244/210
-f 218/247/213 217/248/212 214/249/209
-f 214/249/209 213/250/208 218/247/213
-f 212/251/207 215/252/210 218/253/213
-f 218/253/213 213/254/208 212/251/207
-f 219/248/214 220/247/215 221/250/216
-f 221/250/216 222/249/217 219/248/214
-f 221/245/216 212/244/207 211/243/206
-f 211/243/206 222/246/217 221/245/216
-f 219/246/214 216/243/211 215/244/210
-f 215/244/210 220/245/215 219/246/214
-f 220/253/215 215/252/210 212/251/207
-f 212/251/207 221/254/216 220/253/215
-f 223/255/218 224/256/219 225/257/220
-f 225/257/220 226/258/221 223/255/218
-f 227/259/222 228/260/223 223/255/218
-f 223/255/218 226/258/221 227/259/222
-f 223/261/218 229/262/224 230/263/225
-f 230/263/225 224/264/219 223/261/218
-f 228/265/223 231/266/226 229/262/224
-f 229/262/224 223/261/218 228/265/223
-f 229/267/224 232/268/227 233/269/228
-f 233/269/228 230/270/225 229/267/224
-f 234/271/229 232/268/227 229/267/224
-f 229/267/224 231/272/226 234/271/229
-f 226/261/221 225/264/220 233/263/228
-f 233/263/228 232/262/227 226/261/221
-f 227/265/222 226/261/221 232/262/227
-f 232/262/227 234/266/229 227/265/222
-f 235/273/230 236/274/231 237/275/232
-f 237/275/232 238/276/233 235/273/230
-f 239/277/234 236/278/231 235/279/230
-f 235/279/230 240/280/235 239/277/234
-f 241/275/236 239/274/234 240/273/235
-f 240/273/235 242/276/237 241/275/236
-f 238/279/233 237/278/232 241/277/236
-f 241/277/236 242/280/237 238/279/233
-f 243/281/238 244/282/239 237/275/232
-f 237/275/232 236/274/231 243/281/238
-f 243/283/238 236/278/231 239/277/234
-f 239/277/234 245/284/240 243/283/238
-f 245/281/240 239/274/234 241/275/236
-f 241/275/236 246/282/241 245/281/240
-f 244/283/239 246/284/241 241/277/236
-f 241/277/236 237/278/232 244/283/239
-f 247/275/242 248/274/243 249/273/244
-f 249/273/244 250/276/245 247/275/242
-f 251/277/246 252/280/247 249/279/244
-f 249/279/244 248/278/243 251/277/246
-f 253/275/248 254/276/249 252/273/247
-f 252/273/247 251/274/246 253/275/248
-f 253/277/248 247/278/242 250/279/245
-f 250/279/245 254/280/249 253/277/248
-f 247/275/242 255/282/250 256/281/251
-f 256/281/251 248/274/243 247/275/242
-f 256/283/251 257/284/252 251/277/246
-f 251/277/246 248/278/243 256/283/251
-f 257/281/252 258/282/253 253/275/248
-f 253/275/248 251/274/246 257/281/252
-f 253/277/248 258/284/253 255/283/250
-f 255/283/250 247/278/242 253/277/248
-f 259/255/254 260/258/255 261/257/256
-f 261/257/256 262/256/257 259/255/254
-f 259/255/254 263/260/258 264/259/259
-f 264/259/259 260/258/255 259/255/254
-f 265/263/260 266/262/261 259/261/254
-f 259/261/254 262/264/257 265/263/260
-f 266/262/261 267/266/262 263/265/258
-f 263/265/258 259/261/254 266/262/261
-f 268/269/263 269/268/264 266/267/261
-f 266/267/261 265/270/260 268/269/263
-f 270/271/265 267/272/262 266/267/261
-f 266/267/261 269/268/264 270/271/265
-f 260/261/255 269/262/264 268/263/263
-f 268/263/263 261/264/256 260/261/255
-f 264/265/259 270/266/265 269/262/264
-f 269/262/264 260/261/255 264/265/259
-f 271/255/266 272/258/267 273/257/268
-f 273/257/268 274/256/269 271/255/266
-f 271/255/266 275/260/270 276/259/271
-f 276/259/271 272/258/267 271/255/266
-f 277/263/272 278/262/273 271/261/266
-f 271/261/266 274/264/269 277/263/272
-f 278/262/273 279/266/274 275/265/270
-f 275/265/270 271/261/266 278/262/273
-f 280/269/275 281/268/276 278/267/273
-f 278/267/273 277/270/272 280/269/275
-f 282/271/277 279/272/274 278/267/273
-f 278/267/273 281/268/276 282/271/277
-f 272/261/267 281/262/276 280/263/275
-f 280/263/275 273/264/268 272/261/267
-f 276/265/271 282/266/277 281/262/276
-f 281/262/276 272/261/267 276/265/271
-f 283/285/278 284/286/279 285/287/280
-f 285/287/280 286/288/281 283/285/278
-f 283/285/278 286/289/281 287/290/282
-f 287/290/282 288/291/283 283/285/278
-f 288/291/283 289/292/284 284/286/279
-f 284/286/279 283/285/278 288/291/283
-f 284/286/279 289/292/284 290/293/285
-f 290/293/285 285/294/280 284/286/279
-f 291/295/282 292/296/286 288/291/283
-f 288/291/283 287/290/282 291/295/282
-f 288/291/283 292/296/286 293/297/287
-f 293/297/287 289/292/284 288/291/283
-f 289/292/284 293/297/287 294/298/285
-f 294/298/285 290/293/285 289/292/284
-f 295/285/288 296/288/289 297/287/290
-f 297/287/290 298/286/291 295/285/288
-f 299/290/282 296/289/289 295/285/288
-f 295/285/288 300/291/292 299/290/282
-f 298/286/291 301/292/293 300/291/292
-f 300/291/292 295/285/288 298/286/291
-f 298/286/291 297/294/290 302/293/285
-f 302/293/285 301/292/293 298/286/291
-f 300/291/292 292/296/286 291/295/282
-f 291/295/282 299/290/282 300/291/292
-f 300/291/292 301/292/293 293/297/287
-f 293/297/287 292/296/286 300/291/292
-f 301/292/293 302/293/285 294/298/285
-f 294/298/285 293/297/287 301/292/293
-f 303/299/294 304/300/295 305/301/296
-f 305/301/296 306/302/297 303/299/294
-f 306/302/297 307/303/298 308/304/299
-f 308/304/299 303/299/294 306/302/297
-f 306/302/297 305/305/296 309/306/282
-f 309/306/282 307/303/298 306/302/297
-f 308/304/299 307/303/298 310/307/286
-f 310/307/286 311/308/300 308/304/299
-f 307/303/298 309/309/282 312/310/282
-f 312/310/282 310/307/286 307/303/298
-f 313/299/301 314/302/302 315/301/289
-f 315/301/289 316/300/93 313/299/301
-f 317/304/303 318/303/292 314/302/302
-f 314/302/302 313/299/301 317/304/303
-f 314/302/302 318/303/292 319/306/282
-f 319/306/282 315/305/289 314/302/302
-f 317/304/303 311/308/300 310/307/286
-f 310/307/286 318/303/292 317/304/303
-f 318/303/292 310/307/286 312/310/282
-f 312/310/282 319/309/282 318/303/292
-f 320/299/304 321/300/295 322/301/305
-f 322/301/305 323/302/306 320/299/304
-f 323/302/306 324/303/307 325/304/308
-f 325/304/308 320/299/304 323/302/306
-f 323/302/306 322/305/305 326/306/309
-f 326/306/309 324/303/307 323/302/306
-f 325/304/308 324/303/307 327/307/310
-f 327/307/310 328/308/311 325/304/308
-f 324/303/307 326/309/309 329/310/309
-f 329/310/309 327/307/310 324/303/307
-f 330/299/312 331/302/313 332/301/314
-f 332/301/314 333/300/93 330/299/312
-f 334/304/315 335/303/316 331/302/313
-f 331/302/313 330/299/312 334/304/315
-f 331/302/313 335/303/316 336/306/309
-f 336/306/309 332/305/314 331/302/313
-f 334/304/315 328/308/311 327/307/310
-f 327/307/310 335/303/316 334/304/315
-f 335/303/316 327/307/310 329/310/309
-f 329/310/309 336/309/309 335/303/316
-f 337/299/317 338/300/295 339/301/318
-f 339/301/318 340/302/319 337/299/317
-f 340/302/319 341/303/320 342/304/321
-f 342/304/321 337/299/317 340/302/319
-f 340/302/319 339/305/318 343/306/322
-f 343/306/322 341/303/320 340/302/319
-f 342/304/321 341/303/320 344/307/323
-f 344/307/323 345/308/324 342/304/321
-f 341/303/320 343/309/322 346/310/322
-f 346/310/322 344/307/323 341/303/320
-f 347/299/325 348/302/326 349/301/327
-f 349/301/327 350/300/93 347/299/325
-f 351/304/328 352/303/329 348/302/326
-f 348/302/326 347/299/325 351/304/328
-f 348/302/326 352/303/329 353/306/322
-f 353/306/322 349/305/327 348/302/326
-f 351/304/328 345/308/324 344/307/323
-f 344/307/323 352/303/329 351/304/328
-f 352/303/329 344/307/323 346/310/322
-f 346/310/322 353/309/322 352/303/329
-f 354/299/317 355/300/295 356/301/318
-f 356/301/318 357/302/319 354/299/317
-f 357/302/319 358/303/320 359/304/321
-f 359/304/321 354/299/317 357/302/319
-f 357/302/319 356/305/318 360/306/322
-f 360/306/322 358/303/320 357/302/319
-f 359/304/321 358/303/320 361/307/323
-f 361/307/323 362/308/324 359/304/321
-f 358/303/320 360/309/322 363/310/322
-f 363/310/322 361/307/323 358/303/320
-f 364/299/325 365/302/326 366/301/330
-f 366/301/330 367/300/93 364/299/325
-f 368/304/328 369/303/329 365/302/326
-f 365/302/326 364/299/325 368/304/328
-f 365/302/326 369/303/329 370/306/322
-f 370/306/322 366/305/330 365/302/326
-f 368/304/328 362/308/324 361/307/323
-f 361/307/323 369/303/329 368/304/328
-f 369/303/329 361/307/323 363/310/322
-f 363/310/322 370/309/322 369/303/329
-f 371/299/317 372/300/295 373/301/318
-f 373/301/318 374/302/319 371/299/317
-f 374/302/319 375/303/320 376/304/321
-f 376/304/321 371/299/317 374/302/319
-f 374/302/319 373/305/318 377/306/331
-f 377/306/331 375/303/320 374/302/319
-f 376/304/321 375/303/320 378/307/323
-f 378/307/323 379/308/324 376/304/321
-f 375/303/320 377/309/331 380/310/322
-f 380/310/322 378/307/323 375/303/320
-f 381/299/325 382/302/326 383/301/330
-f 383/301/330 384/300/93 381/299/325
-f 385/304/328 386/303/329 382/302/326
-f 382/302/326 381/299/325 385/304/328
-f 382/302/326 386/303/329 387/306/322
-f 387/306/322 383/305/330 382/302/326
-f 385/304/328 379/308/324 378/307/323
-f 378/307/323 386/303/329 385/304/328
-f 386/303/329 378/307/323 380/310/322
-f 380/310/322 387/309/322 386/303/329
-f 388/299/332 389/300/295 390/301/333
-f 390/301/333 391/302/334 388/299/332
-f 391/302/334 392/303/335 393/304/336
-f 393/304/336 388/299/332 391/302/334
-f 391/302/334 390/305/333 394/306/337
-f 394/306/337 392/303/335 391/302/334
-f 393/304/336 392/303/335 395/307/338
-f 395/307/338 396/308/339 393/304/336
-f 392/303/335 394/309/337 397/310/337
-f 397/310/337 395/307/338 392/303/335
-f 398/299/340 399/302/341 400/301/342
-f 400/301/342 401/300/93 398/299/340
-f 402/304/343 403/303/344 399/302/341
-f 399/302/341 398/299/340 402/304/343
-f 399/302/341 403/303/344 404/306/337
-f 404/306/337 400/305/342 399/302/341
-f 402/304/343 396/308/339 395/307/338
-f 395/307/338 403/303/344 402/304/343
-f 403/303/344 395/307/338 397/310/337
-f 397/310/337 404/309/337 403/303/344
-f 405/285/345 406/288/346 407/287/347
-f 407/287/347 408/286/348 405/285/345
-f 405/285/345 409/291/349 410/290/350
-f 410/290/350 406/289/346 405/285/345
-f 409/291/349 405/285/345 408/286/348
-f 408/286/348 411/292/351 409/291/349
-f 412/293/352 411/292/351 408/286/348
-f 408/286/348 407/294/347 412/293/352
-f 409/291/349 413/296/353 414/295/354
-f 414/295/354 410/290/350 409/291/349
-f 409/291/349 411/292/351 415/297/355
-f 415/297/355 413/296/353 409/291/349
-f 411/292/351 412/293/352 416/298/352
-f 416/298/352 415/297/355 411/292/351
-f 417/285/356 418/286/357 419/287/358
-f 419/287/358 420/288/359 417/285/356
-f 421/290/350 422/291/360 417/285/356
-f 417/285/356 420/289/359 421/290/350
-f 418/286/357 417/285/356 422/291/360
-f 422/291/360 423/292/361 418/286/357
-f 424/293/352 419/294/358 418/286/357
-f 418/286/357 423/292/361 424/293/352
-f 414/295/354 413/296/353 422/291/360
-f 422/291/360 421/290/350 414/295/354
-f 422/291/360 413/296/353 415/297/355
-f 415/297/355 423/292/361 422/291/360
-f 423/292/361 415/297/355 416/298/352
-f 416/298/352 424/293/352 423/292/361
-f 425/299/362 426/302/363 427/301/364
-f 427/301/364 428/300/295 425/299/362
-f 426/302/363 425/299/362 429/304/365
-f 429/304/365 430/303/366 426/302/363
-f 431/306/367 427/305/364 426/302/363
-f 426/302/363 430/303/366 431/306/367
-f 429/304/365 432/308/368 433/307/369
-f 433/307/369 430/303/366 429/304/365
-f 430/303/366 433/307/369 434/310/370
-f 434/310/370 431/309/367 430/303/366
-f 435/299/371 436/300/93 437/301/372
-f 437/301/372 438/302/373 435/299/371
-f 439/304/374 435/299/371 438/302/373
-f 438/302/373 440/303/375 439/304/374
-f 441/306/376 440/303/375 438/302/373
-f 438/302/373 437/305/372 441/306/376
-f 439/304/374 440/303/375 433/307/369
-f 433/307/369 432/308/368 439/304/374
-f 440/303/375 441/309/376 434/310/370
-f 434/310/370 433/307/369 440/303/375
-f 442/299/377 443/302/378 444/301/379
-f 444/301/379 445/300/295 442/299/377
-f 443/302/378 442/299/377 446/304/380
-f 446/304/380 447/303/381 443/302/378
-f 448/306/382 444/305/379 443/302/378
-f 443/302/378 447/303/381 448/306/382
-f 446/304/380 449/308/383 450/307/384
-f 450/307/384 447/303/381 446/304/380
-f 447/303/381 450/307/384 451/310/382
-f 451/310/382 448/309/382 447/303/381
-f 452/299/385 453/300/93 454/301/386
-f 454/301/386 455/302/387 452/299/385
-f 456/304/388 452/299/385 455/302/387
-f 455/302/387 457/303/389 456/304/388
-f 458/306/382 457/303/389 455/302/387
-f 455/302/387 454/305/386 458/306/382
-f 456/304/388 457/303/389 450/307/384
-f 450/307/384 449/308/383 456/304/388
-f 457/303/389 458/309/382 451/310/382
-f 451/310/382 450/307/384 457/303/389
-f 459/299/390 460/302/345 461/301/346
-f 461/301/346 462/300/295 459/299/390
-f 460/302/345 459/299/390 463/304/391
-f 463/304/391 464/303/349 460/302/345
-f 465/306/350 461/305/346 460/302/345
-f 460/302/345 464/303/349 465/306/350
-f 463/304/391 466/308/392 467/307/353
-f 467/307/353 464/303/349 463/304/391
-f 464/303/349 467/307/353 468/310/350
-f 468/310/350 465/309/350 464/303/349
-f 469/299/393 470/300/93 471/301/394
-f 471/301/394 472/302/356 469/299/393
-f 473/304/395 469/299/393 472/302/356
-f 472/302/356 474/303/396 473/304/395
-f 475/306/350 474/303/396 472/302/356
-f 472/302/356 471/305/394 475/306/350
-f 473/304/395 474/303/396 467/307/353
-f 467/307/353 466/308/392 473/304/395
-f 474/303/396 475/309/350 468/310/350
-f 468/310/350 467/307/353 474/303/396
-f 476/299/390 477/302/397 478/301/346
-f 478/301/346 479/300/295 476/299/390
-f 477/302/397 476/299/390 480/304/391
-f 480/304/391 481/303/398 477/302/397
-f 482/306/350 478/305/346 477/302/397
-f 477/302/397 481/303/398 482/306/350
-f 480/304/391 483/308/392 484/307/399
-f 484/307/399 481/303/398 480/304/391
-f 481/303/398 484/307/399 485/310/350
-f 485/310/350 482/309/350 481/303/398
-f 486/299/393 487/300/93 488/301/394
-f 488/301/394 489/302/356 486/299/393
-f 490/304/395 486/299/393 489/302/356
-f 489/302/356 491/303/400 490/304/395
-f 492/306/350 491/303/400 489/302/356
-f 489/302/356 488/305/394 492/306/350
-f 490/304/395 491/303/400 484/307/399
-f 484/307/399 483/308/392 490/304/395
-f 491/303/400 492/309/350 485/310/350
-f 485/310/350 484/307/399 491/303/400
-f 493/299/362 494/302/401 495/301/364
-f 495/301/364 496/300/295 493/299/362
-f 494/302/401 493/299/362 497/304/402
-f 497/304/402 498/303/366 494/302/401
-f 499/306/367 495/305/364 494/302/401
-f 494/302/401 498/303/366 499/306/367
-f 497/304/402 500/308/368 501/307/369
-f 501/307/369 498/303/366 497/304/402
-f 498/303/366 501/307/369 502/310/370
-f 502/310/370 499/309/367 498/303/366
-f 503/299/371 504/300/93 505/301/372
-f 505/301/372 506/302/373 503/299/371
-f 507/304/374 503/299/371 506/302/373
-f 506/302/373 508/303/403 507/304/374
-f 509/306/367 508/303/403 506/302/373
-f 506/302/373 505/305/372 509/306/367
-f 507/304/374 508/303/403 501/307/369
-f 501/307/369 500/308/368 507/304/374
-f 508/303/403 509/309/367 502/310/370
-f 502/310/370 501/307/369 508/303/403
-f 510/299/404 511/302/405 512/301/406
-f 512/301/406 513/300/295 510/299/404
-f 511/302/405 510/299/404 514/304/407
-f 514/304/407 515/303/408 511/302/405
-f 516/306/409 512/305/406 511/302/405
-f 511/302/405 515/303/408 516/306/409
-f 514/304/407 517/308/410 518/307/411
-f 518/307/411 515/303/408 514/304/407
-f 515/303/408 518/307/411 519/310/409
-f 519/310/409 516/309/409 515/303/408
-f 520/299/412 521/300/93 522/301/413
-f 522/301/413 523/302/414 520/299/412
-f 524/304/415 520/299/412 523/302/414
-f 523/302/414 525/303/416 524/304/415
-f 526/306/409 525/303/416 523/302/414
-f 523/302/414 522/305/413 526/306/409
-f 524/304/415 525/303/416 518/307/411
-f 518/307/411 517/308/410 524/304/415
-f 525/303/416 526/309/409 519/310/409
-f 519/310/409 518/307/411 525/303/416
-f 527/285/345 528/288/346 529/287/347
-f 529/287/347 530/286/417 527/285/345
-f 527/285/345 531/291/349 532/290/350
-f 532/290/350 528/289/346 527/285/345
-f 531/291/349 527/285/345 530/286/417
-f 530/286/417 533/292/418 531/291/349
-f 534/293/352 533/292/418 530/286/417
-f 530/286/417 529/294/347 534/293/352
-f 531/291/349 535/296/353 536/295/350
-f 536/295/350 532/290/350 531/291/349
-f 531/291/349 533/292/418 537/297/419
-f 537/297/419 535/296/353 531/291/349
-f 533/292/418 534/293/352 538/298/352
-f 538/298/352 537/297/419 533/292/418
-f 539/285/356 540/286/357 541/287/358
-f 541/287/358 542/288/394 539/285/356
-f 543/290/350 544/291/396 539/285/356
-f 539/285/356 542/289/394 543/290/350
-f 540/286/357 539/285/356 544/291/396
-f 544/291/396 545/292/420 540/286/357
-f 546/293/352 541/294/358 540/286/357
-f 540/286/357 545/292/420 546/293/352
-f 536/295/350 535/296/353 544/291/396
-f 544/291/396 543/290/350 536/295/350
-f 544/291/396 535/296/353 537/297/419
-f 537/297/419 545/292/420 544/291/396
-f 545/292/420 537/297/419 538/298/352
-f 538/298/352 546/293/352 545/292/420
-f 547/285/345 548/288/346 549/287/421
-f 549/287/421 550/286/422 547/285/345
-f 547/285/345 551/291/349 552/290/350
-f 552/290/350 548/289/346 547/285/345
-f 551/291/349 547/285/345 550/286/422
-f 550/286/422 553/292/418 551/291/349
-f 554/293/352 553/292/418 550/286/422
-f 550/286/422 549/294/421 554/293/352
-f 551/291/349 555/296/353 556/295/354
-f 556/295/354 552/290/350 551/291/349
-f 551/291/349 553/292/418 557/297/419
-f 557/297/419 555/296/353 551/291/349
-f 553/292/418 554/293/352 558/298/352
-f 558/298/352 557/297/419 553/292/418
-f 559/285/356 560/286/357 561/287/358
-f 561/287/358 562/288/394 559/285/356
-f 563/290/350 564/291/360 559/285/356
-f 559/285/356 562/289/394 563/290/350
-f 560/286/357 559/285/356 564/291/360
-f 564/291/360 565/292/423 560/286/357
-f 566/293/352 561/294/358 560/286/357
-f 560/286/357 565/292/423 566/293/352
-f 556/295/354 555/296/353 564/291/360
-f 564/291/360 563/290/350 556/295/354
-f 564/291/360 555/296/353 557/297/419
-f 557/297/419 565/292/423 564/291/360
-f 565/292/423 557/297/419 558/298/352
-f 558/298/352 566/293/352 565/292/423
-f 567/311/424 568/312/425 569/313/426
-f 569/313/426 570/314/424 567/311/424
-f 568/312/425 571/315/295 572/316/295
-f 572/316/295 569/313/426 568/312/425
-f 573/317/424 574/318/424 575/319/427
-f 575/319/427 576/320/428 573/317/424
-f 576/320/428 575/319/427 577/321/94
-f 577/321/94 578/322/94 576/320/428
-f 579/323/424 580/324/424 581/325/429
-f 581/325/429 582/326/430 579/323/424
-f 582/326/430 581/325/429 583/327/431
-f 583/327/431 584/328/431 582/326/430
-f 585/311/424 586/314/424 587/313/432
-f 587/313/432 588/312/433 585/311/424
-f 588/312/433 587/313/432 589/316/93
-f 589/316/93 590/315/93 588/312/433
-f 591/3/434 592/2/435 593/1/436
-f 593/1/436 594/4/437 591/3/434
-f 595/5/438 596/6/439 593/1/436
-f 593/1/436 592/2/435 595/5/438
-f 597/7/440 598/8/441 596/6/439
-f 596/6/439 595/5/438 597/7/440
-f 594/4/437 593/1/436 599/9/442
-f 599/9/442 600/10/443 594/4/437
-f 596/6/439 601/11/444 599/9/442
-f 599/9/442 593/1/436 596/6/439
-f 598/8/441 602/12/445 601/11/444
-f 601/11/444 596/6/439 598/8/441
-f 600/10/443 599/9/442 603/13/446
-f 603/13/446 604/14/447 600/10/443
-f 601/11/444 605/15/448 603/13/446
-f 603/13/446 599/9/442 601/11/444
-f 602/12/445 606/16/449 605/15/448
-f 605/15/448 601/11/444 602/12/445
-f 604/14/447 603/13/446 607/17/450
-f 607/17/450 608/18/451 604/14/447
-f 605/15/448 609/19/452 607/17/450
-f 607/17/450 603/13/446 605/15/448
-f 606/16/449 610/20/453 609/19/452
-f 609/19/452 605/15/448 606/16/449
-f 611/21/454 612/24/455 613/23/456
-f 613/23/456 614/22/457 611/21/454
-f 615/27/458 616/26/459 611/25/454
-f 611/25/454 614/28/457 615/27/458
-f 617/24/460 616/21/459 615/22/458
-f 615/22/458 618/23/461 617/24/460
-f 612/25/455 617/26/460 618/27/461
-f 618/27/461 613/28/456 612/25/455
-f 619/29/462 612/24/455 611/21/454
-f 611/21/454 620/30/463 619/29/462
-f 620/31/463 611/25/454 616/26/459
-f 616/26/459 621/32/464 620/31/463
-f 621/30/464 616/21/459 617/24/460
-f 617/24/460 622/29/465 621/30/464
-f 619/31/462 622/32/465 617/26/460
-f 617/26/460 612/25/455 619/31/462
-f 623/33/466 624/36/467 625/35/468
-f 625/35/468 626/34/469 623/33/466
-f 627/37/470 628/40/471 629/39/472
-f 629/39/472 630/38/473 627/37/470
-f 631/43/474 632/42/475 627/41/470
-f 627/41/470 630/44/473 631/43/474
-f 633/40/476 632/37/475 631/38/474
-f 631/38/474 634/39/477 633/40/476
-f 628/41/471 633/42/476 634/43/477
-f 634/43/477 629/44/472 628/41/471
-f 625/45/468 628/40/471 627/37/470
-f 627/37/470 626/46/469 625/45/468
-f 623/48/466 626/47/469 627/41/470
-f 627/41/470 632/42/475 623/48/466
-f 623/46/466 632/37/475 633/40/476
-f 633/40/476 624/45/467 623/46/466
-f 624/48/467 633/42/476 628/41/471
-f 628/41/471 625/47/468 624/48/467
-f 635/51/478 636/50/479 637/49/480
-f 637/49/480 638/52/481 635/51/478
-f 636/50/479 639/49/482 640/52/483
-f 640/52/483 641/51/484 636/50/479
-f 637/49/480 642/54/485 643/53/486
-f 643/53/486 638/52/481 637/49/480
-f 644/57/487 645/56/488 646/55/489
-f 646/55/489 647/58/490 644/57/487
-f 648/59/491 649/62/492 646/61/489
-f 646/61/489 645/60/488 648/59/491
-f 639/49/482 650/54/493 651/53/494
-f 651/53/494 640/52/483 639/49/482
-f 652/57/495 653/56/496 654/55/497
-f 654/55/497 655/58/498 652/57/495
-f 656/59/499 657/62/500 654/61/497
-f 654/61/497 653/60/496 656/59/499
-f 642/63/485 658/66/501 659/65/502
-f 659/65/502 643/64/486 642/63/485
-f 659/67/502 658/66/501 650/63/493
-f 650/63/493 660/68/494 659/67/502
-f 641/69/484 645/56/488 644/57/487
-f 644/57/487 661/70/503 641/69/484
-f 636/50/479 641/69/484 661/70/503
-f 661/70/503 637/49/480 636/50/479
-f 656/59/499 653/60/496 635/51/478
-f 635/51/478 638/52/481 656/59/499
-f 635/69/478 653/56/496 652/57/495
-f 652/57/495 662/70/483 635/69/478
-f 635/69/478 662/70/483 639/49/482
-f 639/49/482 636/50/479 635/69/478
-f 648/59/491 645/60/488 641/51/484
-f 641/51/484 640/52/483 648/59/491
-f 644/57/487 647/72/490 663/71/504
-f 663/71/504 661/70/503 644/57/487
-f 661/70/503 663/71/504 642/54/485
-f 642/54/485 637/49/480 661/70/503
-f 657/73/500 656/59/499 638/52/481
-f 638/52/481 643/53/486 657/73/500
-f 652/57/495 655/72/498 660/71/494
-f 660/71/494 662/70/483 652/57/495
-f 662/70/483 660/71/494 650/54/493
-f 650/54/493 639/49/482 662/70/483
-f 649/73/492 648/59/491 640/52/483
-f 640/52/483 651/53/494 649/73/492
-f 647/74/490 646/75/489 664/67/505
-f 664/67/505 663/68/504 647/74/490
-f 663/68/504 664/67/505 658/66/501
-f 658/66/501 642/63/485 663/68/504
-f 659/65/502 654/77/497 657/76/500
-f 657/76/500 643/64/486 659/65/502
-f 664/65/505 646/77/489 649/76/492
-f 649/76/492 651/64/494 664/65/505
-f 658/66/501 664/65/505 651/64/494
-f 651/64/494 650/63/493 658/66/501
-f 655/74/498 654/75/497 659/67/502
-f 659/67/502 660/68/494 655/74/498
-f 665/78/506 666/81/507 667/80/508
-f 667/80/508 668/79/509 665/78/506
-f 669/82/510 670/85/511 671/84/512
-f 671/84/512 672/83/513 669/82/510
-f 673/86/514 674/89/515 670/88/511
-f 670/88/511 669/87/510 673/86/514
-f 673/82/514 675/83/516 676/84/517
-f 676/84/517 674/85/515 673/82/514
-f 672/87/513 671/88/512 676/89/517
-f 676/89/517 675/86/516 672/87/513
-f 672/83/513 667/91/508 666/90/507
-f 666/90/507 669/82/510 672/83/513
-f 666/92/507 665/93/506 673/86/514
-f 673/86/514 669/87/510 666/92/507
-f 665/90/506 668/91/509 675/83/516
-f 675/83/516 673/82/514 665/90/506
-f 668/93/509 667/92/508 672/87/513
-f 672/87/513 675/86/516 668/93/509
-f 677/96/518 678/95/519 679/94/519
-f 679/94/519 680/97/520 677/96/518
-f 681/98/521 682/101/522 683/100/523
-f 683/100/523 684/99/524 681/98/521
-f 677/329/518 680/330/520 685/331/525
-f 685/331/525 686/332/525 677/329/518
-f 684/106/524 683/107/523 679/94/519
-f 679/94/519 678/95/519 684/106/524
-f 687/110/526 682/109/522 681/108/521
-f 681/108/521 688/111/526 687/110/526
-f 689/114/527 690/113/528 691/112/529
-f 691/112/529 692/115/530 689/114/527
-f 693/116/531 694/119/531 695/118/532
-f 695/118/532 696/117/532 693/116/531
-f 697/120/533 698/123/424 699/122/534
-f 699/122/534 700/121/535 697/120/533
-f 701/117/536 702/125/536 703/124/537
-f 703/124/537 704/116/537 701/117/536
-f 705/126/111 706/129/111 707/128/538
-f 707/128/538 708/127/538 705/126/111
-f 709/131/539 710/130/540 711/132/541
-f 712/133/542 697/136/533 700/135/535
-f 700/135/535 713/134/543 712/133/542
-f 714/138/544 715/137/545 716/139/546
-f 714/138/544 717/141/547 718/140/548
-f 718/140/548 715/137/545 714/138/544
-f 689/114/527 719/143/549 720/142/550
-f 720/142/550 690/113/528 689/114/527
-f 721/144/551 722/145/552 698/123/424
-f 698/123/424 697/120/533 721/144/551
-f 723/146/553 724/147/553 706/129/111
-f 706/129/111 705/126/111 723/146/553
-f 725/148/554 721/149/551 697/136/533
-f 697/136/533 712/133/542 725/148/554
-f 709/131/539 711/132/541 718/140/548
-f 718/140/548 717/141/547 709/131/539
-f 691/150/529 713/153/543 726/152/555
-f 726/152/555 692/151/530 691/150/529
-f 690/154/528 712/155/542 713/153/543
-f 713/153/543 691/150/529 690/154/528
-f 720/156/550 725/157/554 712/155/542
-f 712/155/542 690/154/528 720/156/550
-f 720/156/550 719/159/549 727/158/556
-f 727/158/556 725/157/554 720/156/550
-f 689/160/527 728/163/557 727/162/556
-f 727/162/556 719/161/549 689/160/527
-f 692/164/530 726/165/555 728/163/557
-f 728/163/557 689/160/527 692/164/530
-f 729/166/558 721/149/551 725/148/554
-f 725/148/554 727/167/556 729/166/558
-f 722/145/552 721/144/551 729/169/558
-f 729/169/558 730/168/559 722/145/552
-f 731/170/560 700/121/535 699/122/534
-f 699/122/534 732/171/561 731/170/560
-f 713/134/543 700/135/535 731/173/560
-f 731/173/560 726/172/555 713/134/543
-f 733/124/562 693/116/531 696/117/532
-f 696/117/532 734/125/563 733/124/562
-f 709/174/539 726/165/555 731/176/560
-f 731/176/560 710/175/540 709/174/539
-f 717/177/547 728/163/557 726/165/555
-f 726/165/555 709/174/539 717/177/547
-f 714/178/544 727/162/556 728/163/557
-f 728/163/557 717/177/547 714/178/544
-f 716/179/546 729/180/558 727/162/556
-f 727/162/556 714/178/544 716/179/546
-f 735/118/564 701/117/536 704/116/537
-f 704/116/537 736/119/565 735/118/564
-f 718/181/548 705/126/111 708/127/538
-f 708/127/538 715/182/545 718/181/548
-f 711/183/541 723/146/553 705/126/111
-f 705/126/111 718/181/548 711/183/541
-f 693/184/531 731/176/560 732/186/561
-f 732/186/561 694/185/531 693/184/531
-f 733/187/562 710/175/540 731/176/560
-f 731/176/560 693/184/531 733/187/562
-f 734/188/563 711/132/541 710/130/540
-f 710/130/540 733/189/562 734/188/563
-f 696/190/532 723/146/553 711/183/541
-f 711/183/541 734/191/563 696/190/532
-f 695/192/532 724/147/553 723/146/553
-f 723/146/553 696/190/532 695/192/532
-f 701/193/536 708/127/538 707/128/538
-f 707/128/538 702/194/536 701/193/536
-f 735/195/564 715/182/545 708/127/538
-f 708/127/538 701/193/536 735/195/564
-f 736/196/565 716/139/546 715/137/545
-f 715/137/545 735/197/564 736/196/565
-f 704/198/537 729/180/558 716/179/546
-f 716/179/546 736/199/565 704/198/537
-f 703/200/537 730/201/559 729/180/558
-f 729/180/558 704/198/537 703/200/537
-f 737/202/566 738/205/567 739/204/568
-f 739/204/568 740/203/568 737/202/566
-f 741/206/569 742/209/570 743/208/571
-f 743/208/571 744/207/572 741/206/569
-f 745/210/573 746/204/574 747/205/575
-f 747/205/575 748/202/576 745/210/573
-f 749/211/577 748/213/576 747/212/575
-f 747/212/575 750/209/578 749/211/577
-f 751/215/579 752/208/580 738/214/567
-f 738/214/567 737/216/566 751/215/579
-f 741/217/569 749/202/577 750/205/578
-f 750/205/578 742/218/570 741/217/569
-f 743/218/571 752/205/580 751/202/579
-f 751/202/579 744/217/572 743/218/571
-f 753/219/581 754/222/582 755/221/583
-f 755/221/583 756/220/584 753/219/581
-f 757/223/585 758/226/586 754/225/582
-f 754/225/582 753/224/581 757/223/585
-f 757/219/585 759/220/587 760/221/588
-f 760/221/588 758/222/586 757/219/585
-f 759/223/587 756/224/584 755/225/583
-f 755/225/583 760/226/588 759/223/587
-f 761/227/589 762/228/590 753/219/581
-f 753/219/581 756/220/584 761/227/589
-f 753/224/581 762/230/590 763/229/591
-f 763/229/591 757/223/585 753/224/581
-f 757/219/585 763/228/591 764/227/592
-f 764/227/592 759/220/587 757/219/585
-f 764/229/592 761/230/589 756/224/584
-f 756/224/584 759/223/587 764/229/592
-f 765/233/593 766/232/594 767/231/595
-f 767/231/595 768/234/596 765/233/593
-f 769/235/597 770/238/598 767/237/595
-f 767/237/595 766/236/594 769/235/597
-f 771/233/599 772/234/600 770/231/598
-f 770/231/598 769/232/597 771/233/599
-f 771/235/599 765/236/593 768/237/596
-f 768/237/596 772/238/600 771/235/599
-f 765/233/593 773/240/601 774/239/602
-f 774/239/602 766/232/594 765/233/593
-f 774/241/602 775/242/603 769/235/597
-f 769/235/597 766/236/594 774/241/602
-f 775/239/603 776/240/604 771/233/599
-f 771/233/599 769/232/597 775/239/603
-f 771/235/599 776/242/604 773/241/601
-f 773/241/601 765/236/593 771/235/599
-f 777/219/605 778/220/606 779/221/607
-f 779/221/607 780/222/608 777/219/605
-f 781/223/609 777/224/605 780/225/608
-f 780/225/608 782/226/610 781/223/609
-f 783/221/611 784/220/612 781/219/609
-f 781/219/609 782/222/610 783/221/611
-f 779/225/607 778/224/606 784/223/612
-f 784/223/612 783/226/611 779/225/607
-f 785/227/613 778/220/606 777/219/605
-f 777/219/605 786/228/614 785/227/613
-f 787/229/615 786/230/614 777/224/605
-f 777/224/605 781/223/609 787/229/615
-f 788/227/616 787/228/615 781/219/609
-f 781/219/609 784/220/612 788/227/616
-f 788/229/616 784/223/612 778/224/606
-f 778/224/606 785/230/613 788/229/616
-f 789/231/617 790/232/618 791/233/619
-f 791/233/619 792/234/620 789/231/617
-f 793/235/621 790/236/618 789/237/617
-f 789/237/617 794/238/622 793/235/621
-f 795/233/623 793/232/621 794/231/622
-f 794/231/622 796/234/624 795/233/623
-f 792/237/620 791/236/619 795/235/623
-f 795/235/623 796/238/624 792/237/620
-f 797/239/625 798/240/626 791/233/619
-f 791/233/619 790/232/618 797/239/625
-f 797/241/625 790/236/618 793/235/621
-f 793/235/621 799/242/627 797/241/625
-f 799/239/627 793/232/621 795/233/623
-f 795/233/623 800/240/628 799/239/627
-f 798/241/626 800/242/628 795/235/623
-f 795/235/623 791/236/619 798/241/626
-f 801/245/629 802/244/630 803/243/631
-f 803/243/631 804/246/632 801/245/629
-f 805/244/633 806/245/634 807/246/635
-f 807/246/635 808/243/424 805/244/633
-f 806/247/634 801/250/629 804/249/632
-f 804/249/632 807/248/635 806/247/634
-f 806/253/634 805/252/633 802/251/630
-f 802/251/630 801/254/629 806/253/634
-f 809/248/636 810/249/637 811/250/638
-f 811/250/638 812/247/639 809/248/636
-f 811/245/638 810/246/637 803/243/631
-f 803/243/631 802/244/630 811/245/638
-f 809/246/636 812/245/639 805/244/633
-f 805/244/633 808/243/424 809/246/636
-f 812/253/639 811/254/638 802/251/630
-f 802/251/630 805/252/633 812/253/639
-f 813/255/640 814/258/641 815/257/642
-f 815/257/642 816/256/643 813/255/640
-f 813/255/640 817/260/644 818/259/645
-f 818/259/645 814/258/641 813/255/640
-f 819/263/646 820/262/647 813/261/640
-f 813/261/640 816/264/643 819/263/646
-f 820/262/647 821/266/648 817/265/644
-f 817/265/644 813/261/640 820/262/647
-f 822/269/649 823/268/650 820/267/647
-f 820/267/647 819/270/646 822/269/649
-f 824/271/651 821/272/648 820/267/647
-f 820/267/647 823/268/650 824/271/651
-f 814/261/641 823/262/650 822/263/649
-f 822/263/649 815/264/642 814/261/641
-f 818/265/645 824/266/651 823/262/650
-f 823/262/650 814/261/641 818/265/645
-f 825/255/652 826/256/653 827/257/654
-f 827/257/654 828/258/655 825/255/652
-f 829/259/656 830/260/657 825/255/652
-f 825/255/652 828/258/655 829/259/656
-f 825/261/652 831/262/658 832/263/659
-f 832/263/659 826/264/653 825/261/652
-f 830/265/657 833/266/660 831/262/658
-f 831/262/658 825/261/652 830/265/657
-f 831/267/658 834/268/661 835/269/662
-f 835/269/662 832/270/659 831/267/658
-f 836/271/663 834/268/661 831/267/658
-f 831/267/658 833/272/660 836/271/663
-f 828/261/655 827/264/654 835/263/662
-f 835/263/662 834/262/661 828/261/655
-f 829/265/656 828/261/655 834/262/661
-f 834/262/661 836/266/663 829/265/656
-f 837/255/664 838/256/665 839/257/666
-f 839/257/666 840/258/667 837/255/664
-f 841/259/668 842/260/669 837/255/664
-f 837/255/664 840/258/667 841/259/668
-f 837/261/664 843/262/670 844/263/671
-f 844/263/671 838/264/665 837/261/664
-f 842/265/669 845/266/672 843/262/670
-f 843/262/670 837/261/664 842/265/669
-f 843/267/670 846/268/673 847/269/674
-f 847/269/674 844/270/671 843/267/670
-f 848/271/675 846/268/673 843/267/670
-f 843/267/670 845/272/672 848/271/675
-f 840/261/667 839/264/666 847/263/674
-f 847/263/674 846/262/673 840/261/667
-f 841/265/668 840/261/667 846/262/673
-f 846/262/673 848/266/675 841/265/668
-f 849/285/676 850/288/677 851/287/678
-f 851/287/678 852/286/679 849/285/676
-f 849/285/676 853/291/680 854/290/681
-f 854/290/681 850/289/677 849/285/676
-f 853/291/680 849/285/676 852/286/679
-f 852/286/679 855/292/682 853/291/680
-f 856/293/683 855/292/682 852/286/679
-f 852/286/679 851/294/678 856/293/683
-f 853/291/680 857/296/684 858/295/681
-f 858/295/681 854/290/681 853/291/680
-f 853/291/680 855/292/682 859/297/685
-f 859/297/685 857/296/684 853/291/680
-f 855/292/682 856/293/683 860/298/683
-f 860/298/683 859/297/685 855/292/682
-f 861/285/686 862/286/687 863/287/688
-f 863/287/688 864/288/689 861/285/686
-f 865/290/681 866/291/690 861/285/686
-f 861/285/686 864/289/689 865/290/681
-f 862/286/687 861/285/686 866/291/690
-f 866/291/690 867/292/691 862/286/687
-f 868/293/683 863/294/688 862/286/687
-f 862/286/687 867/292/691 868/293/683
-f 858/295/681 857/296/684 866/291/690
-f 866/291/690 865/290/681 858/295/681
-f 866/291/690 857/296/684 859/297/685
-f 859/297/685 867/292/691 866/291/690
-f 867/292/691 859/297/685 860/298/683
-f 860/298/683 868/293/683 867/292/691
-f 869/299/692 870/302/676 871/301/693
-f 871/301/693 872/300/694 869/299/692
-f 870/302/676 869/299/692 873/304/695
-f 873/304/695 874/303/696 870/302/676
-f 875/306/697 871/305/693 870/302/676
-f 870/302/676 874/303/696 875/306/697
-f 873/304/695 876/308/698 877/307/684
-f 877/307/684 874/303/696 873/304/695
-f 874/303/696 877/307/684 878/310/697
-f 878/310/697 875/309/697 874/303/696
-f 879/299/699 880/300/700 881/301/689
-f 881/301/689 882/302/701 879/299/699
-f 883/304/702 879/299/699 882/302/701
-f 882/302/701 884/303/690 883/304/702
-f 885/306/697 884/303/690 882/302/701
-f 882/302/701 881/305/689 885/306/697
-f 883/304/702 884/303/690 877/307/684
-f 877/307/684 876/308/698 883/304/702
-f 884/303/690 885/309/697 878/310/697
-f 878/310/697 877/307/684 884/303/690
-f 886/299/703 887/302/704 888/301/705
-f 888/301/705 889/300/694 886/299/703
-f 887/302/704 886/299/703 890/304/706
-f 890/304/706 891/303/707 887/302/704
-f 892/306/708 888/305/705 887/302/704
-f 887/302/704 891/303/707 892/306/708
-f 890/304/706 893/308/709 894/307/710
-f 894/307/710 891/303/707 890/304/706
-f 891/303/707 894/307/710 895/310/708
-f 895/310/708 892/309/708 891/303/707
-f 896/299/711 897/300/525 898/301/712
-f 898/301/712 899/302/713 896/299/711
-f 900/304/714 896/299/711 899/302/713
-f 899/302/713 901/303/715 900/304/714
-f 902/306/708 901/303/715 899/302/713
-f 899/302/713 898/305/712 902/306/708
-f 900/304/714 901/303/715 894/307/710
-f 894/307/710 893/308/709 900/304/714
-f 901/303/715 902/309/708 895/310/708
-f 895/310/708 894/307/710 901/303/715
-f 903/299/716 904/302/717 905/301/718
-f 905/301/718 906/300/694 903/299/716
-f 904/302/717 903/299/716 907/304/719
-f 907/304/719 908/303/720 904/302/717
-f 909/306/721 905/305/718 904/302/717
-f 904/302/717 908/303/720 909/306/721
-f 907/304/719 910/308/722 911/307/723
-f 911/307/723 908/303/720 907/304/719
-f 908/303/720 911/307/723 912/310/721
-f 912/310/721 909/309/721 908/303/720
-f 913/299/724 914/300/525 915/301/725
-f 915/301/725 916/302/726 913/299/724
-f 917/304/727 913/299/724 916/302/726
-f 916/302/726 918/303/728 917/304/727
-f 919/306/721 918/303/728 916/302/726
-f 916/302/726 915/305/725 919/306/721
-f 917/304/727 918/303/728 911/307/723
-f 911/307/723 910/308/722 917/304/727
-f 918/303/728 919/309/721 912/310/721
-f 912/310/721 911/307/723 918/303/728
-f 920/299/716 921/302/729 922/301/730
-f 922/301/730 923/300/694 920/299/716
-f 921/302/729 920/299/716 924/304/731
-f 924/304/731 925/303/720 921/302/729
-f 926/306/721 922/305/730 921/302/729
-f 921/302/729 925/303/720 926/306/721
-f 924/304/731 927/308/732 928/307/723
-f 928/307/723 925/303/720 924/304/731
-f 925/303/720 928/307/723 929/310/721
-f 929/310/721 926/309/721 925/303/720
-f 930/299/724 931/300/525 932/301/725
-f 932/301/725 933/302/726 930/299/724
-f 934/304/733 930/299/724 933/302/726
-f 933/302/726 935/303/728 934/304/733
-f 936/306/721 935/303/728 933/302/726
-f 933/302/726 932/305/725 936/306/721
-f 934/304/733 935/303/728 928/307/723
-f 928/307/723 927/308/732 934/304/733
-f 935/303/728 936/309/721 929/310/721
-f 929/310/721 928/307/723 935/303/728
-f 937/299/716 938/302/717 939/301/730
-f 939/301/730 940/300/694 937/299/716
-f 938/302/717 937/299/716 941/304/731
-f 941/304/731 942/303/720 938/302/717
-f 943/306/721 939/305/730 938/302/717
-f 938/302/717 942/303/720 943/306/721
-f 941/304/731 944/308/722 945/307/734
-f 945/307/734 942/303/720 941/304/731
-f 942/303/720 945/307/734 946/310/721
-f 946/310/721 943/309/721 942/303/720
-f 947/299/724 948/300/700 949/301/725
-f 949/301/725 950/302/726 947/299/724
-f 951/304/733 947/299/724 950/302/726
-f 950/302/726 952/303/728 951/304/733
-f 953/306/721 952/303/728 950/302/726
-f 950/302/726 949/305/725 953/306/721
-f 951/304/733 952/303/728 945/307/734
-f 945/307/734 944/308/722 951/304/733
-f 952/303/728 953/309/721 946/310/721
-f 946/310/721 945/307/734 952/303/728
-f 954/299/735 955/302/736 956/301/737
-f 956/301/737 957/300/694 954/299/735
-f 955/302/736 954/299/735 958/304/738
-f 958/304/738 959/303/739 955/302/736
-f 960/306/740 956/305/737 955/302/736
-f 955/302/736 959/303/739 960/306/740
-f 958/304/738 961/308/741 962/307/742
-f 962/307/742 959/303/739 958/304/738
-f 959/303/739 962/307/742 963/310/740
-f 963/310/740 960/309/740 959/303/739
-f 964/299/743 965/300/525 966/301/744
-f 966/301/744 967/302/745 964/299/743
-f 968/304/746 964/299/743 967/302/745
-f 967/302/745 969/303/747 968/304/746
-f 970/306/740 969/303/747 967/302/745
-f 967/302/745 966/305/744 970/306/740
-f 968/304/746 969/303/747 962/307/742
-f 962/307/742 961/308/741 968/304/746
-f 969/303/747 970/309/740 963/310/740
-f 963/310/740 962/307/742 969/303/747
-f 971/285/748 972/286/749 973/287/750
-f 973/287/750 974/288/751 971/285/748
-f 971/285/748 974/289/751 975/290/752
-f 975/290/752 976/291/753 971/285/748
-f 976/291/753 977/292/754 972/286/749
-f 972/286/749 971/285/748 976/291/753
-f 972/286/749 977/292/754 978/293/755
-f 978/293/755 973/294/750 972/286/749
-f 979/295/756 980/296/757 976/291/753
-f 976/291/753 975/290/752 979/295/756
-f 976/291/753 980/296/757 981/297/758
-f 981/297/758 977/292/754 976/291/753
-f 977/292/754 981/297/758 982/298/755
-f 982/298/755 978/293/755 977/292/754
-f 983/285/759 984/288/760 985/287/761
-f 985/287/761 986/286/762 983/285/759
-f 987/290/752 984/289/760 983/285/759
-f 983/285/759 988/291/763 987/290/752
-f 986/286/762 989/292/764 988/291/763
-f 988/291/763 983/285/759 986/286/762
-f 986/286/762 985/294/761 990/293/755
-f 990/293/755 989/292/764 986/286/762
-f 988/291/763 980/296/757 979/295/756
-f 979/295/756 987/290/752 988/291/763
-f 988/291/763 989/292/764 981/297/758
-f 981/297/758 980/296/757 988/291/763
-f 989/292/764 990/293/755 982/298/755
-f 982/298/755 981/297/758 989/292/764
-f 991/299/765 992/300/694 993/301/766
-f 993/301/766 994/302/767 991/299/765
-f 994/302/767 995/303/768 996/304/769
-f 996/304/769 991/299/765 994/302/767
-f 994/302/767 993/305/766 997/306/770
-f 997/306/770 995/303/768 994/302/767
-f 996/304/769 995/303/768 998/307/771
-f 998/307/771 999/308/772 996/304/769
-f 995/303/768 997/309/770 1000/310/770
-f 1000/310/770 998/307/771 995/303/768
-f 1001/299/773 1002/302/774 1003/301/775
-f 1003/301/775 1004/300/776 1001/299/773
-f 1005/304/777 1006/303/778 1002/302/774
-f 1002/302/774 1001/299/773 1005/304/777
-f 1002/302/774 1006/303/778 1007/306/770
-f 1007/306/770 1003/305/775 1002/302/774
-f 1005/304/777 999/308/772 998/307/771
-f 998/307/771 1006/303/778 1005/304/777
-f 1006/303/778 998/307/771 1000/310/770
-f 1000/310/770 1007/309/770 1006/303/778
-f 1008/299/779 1009/300/694 1010/301/780
-f 1010/301/780 1011/302/781 1008/299/779
-f 1011/302/781 1012/303/782 1013/304/783
-f 1013/304/783 1008/299/779 1011/302/781
-f 1011/302/781 1010/305/780 1014/306/784
-f 1014/306/784 1012/303/782 1011/302/781
-f 1013/304/783 1012/303/782 1015/307/785
-f 1015/307/785 1016/308/786 1013/304/783
-f 1012/303/782 1014/309/784 1017/310/784
-f 1017/310/784 1015/307/785 1012/303/782
-f 1018/299/787 1019/302/788 1020/301/789
-f 1020/301/789 1021/300/525 1018/299/787
-f 1022/304/790 1023/303/791 1019/302/788
-f 1019/302/788 1018/299/787 1022/304/790
-f 1019/302/788 1023/303/791 1024/306/784
-f 1024/306/784 1020/305/789 1019/302/788
-f 1022/304/790 1016/308/786 1015/307/785
-f 1015/307/785 1023/303/791 1022/304/790
-f 1023/303/791 1015/307/785 1017/310/784
-f 1017/310/784 1024/309/784 1023/303/791
-f 1025/299/792 1026/300/694 1027/301/751
-f 1027/301/751 1028/302/748 1025/299/792
-f 1028/302/748 1029/303/793 1030/304/794
-f 1030/304/794 1025/299/792 1028/302/748
-f 1028/302/748 1027/305/751 1031/306/756
-f 1031/306/756 1029/303/793 1028/302/748
-f 1030/304/794 1029/303/793 1032/307/757
-f 1032/307/757 1033/308/795 1030/304/794
-f 1029/303/793 1031/309/756 1034/310/756
-f 1034/310/756 1032/307/757 1029/303/793
-f 1035/299/796 1036/302/759 1037/301/760
-f 1037/301/760 1038/300/700 1035/299/796
-f 1039/304/797 1040/303/763 1036/302/759
-f 1036/302/759 1035/299/796 1039/304/797
-f 1036/302/759 1040/303/763 1041/306/756
-f 1041/306/756 1037/305/760 1036/302/759
-f 1039/304/797 1033/308/795 1032/307/757
-f 1032/307/757 1040/303/763 1039/304/797
-f 1040/303/763 1032/307/757 1034/310/756
-f 1034/310/756 1041/309/756 1040/303/763
-f 1042/299/792 1043/300/694 1044/301/751
-f 1044/301/751 1045/302/748 1042/299/792
-f 1045/302/748 1046/303/753 1047/304/794
-f 1047/304/794 1042/299/792 1045/302/748
-f 1045/302/748 1044/305/751 1048/306/756
-f 1048/306/756 1046/303/753 1045/302/748
-f 1047/304/794 1046/303/753 1049/307/757
-f 1049/307/757 1050/308/795 1047/304/794
-f 1046/303/753 1048/309/756 1051/310/756
-f 1051/310/756 1049/307/757 1046/303/753
-f 1052/299/796 1053/302/759 1054/301/760
-f 1054/301/760 1055/300/700 1052/299/796
-f 1056/304/797 1057/303/763 1053/302/759
-f 1053/302/759 1052/299/796 1056/304/797
-f 1053/302/759 1057/303/763 1058/306/756
-f 1058/306/756 1054/305/760 1053/302/759
-f 1056/304/797 1050/308/795 1049/307/757
-f 1049/307/757 1057/303/763 1056/304/797
-f 1057/303/763 1049/307/757 1051/310/756
-f 1051/310/756 1058/309/756 1057/303/763
-f 1059/299/765 1060/300/694 1061/301/798
-f 1061/301/798 1062/302/767 1059/299/765
-f 1062/302/767 1063/303/799 1064/304/769
-f 1064/304/769 1059/299/765 1062/302/767
-f 1062/302/767 1061/305/798 1065/306/770
-f 1065/306/770 1063/303/799 1062/302/767
-f 1064/304/769 1063/303/799 1066/307/771
-f 1066/307/771 1067/308/772 1064/304/769
-f 1063/303/799 1065/309/770 1068/310/770
-f 1068/310/770 1066/307/771 1063/303/799
-f 1069/299/773 1070/302/774 1071/301/800
-f 1071/301/800 1072/300/525 1069/299/773
-f 1073/304/777 1074/303/801 1070/302/774
-f 1070/302/774 1069/299/773 1073/304/777
-f 1070/302/774 1074/303/801 1075/306/770
-f 1075/306/770 1071/305/800 1070/302/774
-f 1073/304/777 1067/308/772 1066/307/771
-f 1066/307/771 1074/303/801 1073/304/777
-f 1074/303/801 1066/307/771 1068/310/770
-f 1068/310/770 1075/309/770 1074/303/801
-f 1076/299/802 1077/300/694 1078/301/803
-f 1078/301/803 1079/302/804 1076/299/802
-f 1079/302/804 1080/303/805 1081/304/806
-f 1081/304/806 1076/299/802 1079/302/804
-f 1079/302/804 1078/305/803 1082/306/807
-f 1082/306/807 1080/303/805 1079/302/804
-f 1081/304/806 1080/303/805 1083/307/808
-f 1083/307/808 1084/308/722 1081/304/806
-f 1080/303/805 1082/309/807 1085/310/807
-f 1085/310/807 1083/307/808 1080/303/805
-f 1086/299/809 1087/302/810 1088/301/811
-f 1088/301/811 1089/300/700 1086/299/809
-f 1090/304/812 1091/303/813 1087/302/810
-f 1087/302/810 1086/299/809 1090/304/812
-f 1087/302/810 1091/303/813 1092/306/807
-f 1092/306/807 1088/305/811 1087/302/810
-f 1090/304/812 1084/308/722 1083/307/808
-f 1083/307/808 1091/303/813 1090/304/812
-f 1091/303/813 1083/307/808 1085/310/807
-f 1085/310/807 1092/309/807 1091/303/813
-f 1093/285/748 1094/286/749 1095/287/750
-f 1095/287/750 1096/288/751 1093/285/748
-f 1093/285/748 1096/289/751 1097/290/752
-f 1097/290/752 1098/291/753 1093/285/748
-f 1098/291/753 1099/292/754 1094/286/749
-f 1094/286/749 1093/285/748 1098/291/753
-f 1094/286/749 1099/292/754 1100/293/755
-f 1100/293/755 1095/294/750 1094/286/749
-f 1101/295/756 1102/296/757 1098/291/753
-f 1098/291/753 1097/290/752 1101/295/756
-f 1098/291/753 1102/296/757 1103/297/758
-f 1103/297/758 1099/292/754 1098/291/753
-f 1099/292/754 1103/297/758 1104/298/755
-f 1104/298/755 1100/293/755 1099/292/754
-f 1105/285/759 1106/288/760 1107/287/814
-f 1107/287/814 1108/286/815 1105/285/759
-f 1109/290/752 1106/289/760 1105/285/759
-f 1105/285/759 1110/291/763 1109/290/752
-f 1108/286/815 1111/292/764 1110/291/763
-f 1110/291/763 1105/285/759 1108/286/815
-f 1108/286/815 1107/294/814 1112/293/755
-f 1112/293/755 1111/292/764 1108/286/815
-f 1110/291/763 1102/296/757 1101/295/756
-f 1101/295/756 1109/290/752 1110/291/763
-f 1110/291/763 1111/292/764 1103/297/758
-f 1103/297/758 1102/296/757 1110/291/763
-f 1111/292/764 1112/293/755 1104/298/755
-f 1104/298/755 1103/297/758 1111/292/764
-f 1113/285/748 1114/286/749 1115/287/750
-f 1115/287/750 1116/288/816 1113/285/748
-f 1113/285/748 1116/289/816 1117/290/752
-f 1117/290/752 1118/291/793 1113/285/748
-f 1118/291/793 1119/292/754 1114/286/749
-f 1114/286/749 1113/285/748 1118/291/793
-f 1114/286/749 1119/292/754 1120/293/755
-f 1120/293/755 1115/294/750 1114/286/749
-f 1121/295/756 1122/296/757 1118/291/793
-f 1118/291/793 1117/290/752 1121/295/756
-f 1118/291/793 1122/296/757 1123/297/758
-f 1123/297/758 1119/292/754 1118/291/793
-f 1119/292/754 1123/297/758 1124/298/755
-f 1124/298/755 1120/293/755 1119/292/754
-f 1125/285/759 1126/288/760 1127/287/814
-f 1127/287/814 1128/286/817 1125/285/759
-f 1129/290/752 1126/289/760 1125/285/759
-f 1125/285/759 1130/291/763 1129/290/752
-f 1128/286/817 1131/292/764 1130/291/763
-f 1130/291/763 1125/285/759 1128/286/817
-f 1128/286/817 1127/294/814 1132/293/755
-f 1132/293/755 1131/292/764 1128/286/817
-f 1130/291/763 1122/296/757 1121/295/756
-f 1121/295/756 1129/290/752 1130/291/763
-f 1130/291/763 1131/292/764 1123/297/758
-f 1123/297/758 1122/296/757 1130/291/763
-f 1131/292/764 1132/293/755 1124/298/755
-f 1124/298/755 1123/297/758 1131/292/764
-f 1133/311/424 1134/314/424 1135/313/531
-f 1135/313/531 1136/312/531 1133/311/424
-f 1136/312/531 1135/313/531 1137/316/694
-f 1137/316/694 1138/315/694 1136/312/531
-f 1139/317/424 1140/320/818 1141/319/818
-f 1141/319/818 1142/318/424 1139/317/424
-f 1140/320/818 1143/322/526 1144/321/526
-f 1144/321/526 1141/319/818 1140/320/818
-f 1145/323/424 1146/326/819 1147/325/819
-f 1147/325/819 1148/324/424 1145/323/424
-f 1146/326/819 1149/328/820 1150/327/820
-f 1150/327/820 1147/325/819 1146/326/819
-f 1151/311/424 1152/312/537 1153/313/537
-f 1153/313/537 1154/314/424 1151/311/424
-f 1152/312/537 1155/315/525 1156/316/525
-f 1156/316/525 1153/313/537 1152/312/537
-f 1157/275/821 1158/274/822 1159/273/823
-f 1159/273/823 1160/276/824 1157/275/821
-f 1161/277/825 1162/280/826 1159/279/823
-f 1159/279/823 1158/278/822 1161/277/825
-f 1163/275/827 1164/276/828 1162/273/826
-f 1162/273/826 1161/274/825 1163/275/827
-f 1163/277/827 1157/278/821 1160/279/824
-f 1160/279/824 1164/280/828 1163/277/827
-f 1157/275/821 1165/282/829 1166/281/830
-f 1166/281/830 1158/274/822 1157/275/821
-f 1166/283/830 1167/284/831 1161/277/825
-f 1161/277/825 1158/278/822 1166/283/830
-f 1167/281/831 1168/282/832 1163/275/827
-f 1163/275/827 1161/274/825 1167/281/831
-f 1163/277/827 1168/284/832 1165/283/829
-f 1165/283/829 1157/278/821 1163/277/827
-f 1169/273/833 1170/274/834 1171/275/835
-f 1171/275/835 1172/276/836 1169/273/833
-f 1173/277/837 1170/278/834 1169/279/833
-f 1169/279/833 1174/280/838 1173/277/837
-f 1175/275/839 1173/274/837 1174/273/838
-f 1174/273/838 1176/276/840 1175/275/839
-f 1172/279/836 1171/278/835 1175/277/839
-f 1175/277/839 1176/280/840 1172/279/836
-f 1177/281/841 1178/282/842 1171/275/835
-f 1171/275/835 1170/274/834 1177/281/841
-f 1177/283/841 1170/278/834 1173/277/837
-f 1173/277/837 1179/284/843 1177/283/841
-f 1179/281/843 1173/274/837 1175/275/839
-f 1175/275/839 1180/282/844 1179/281/843
-f 1178/283/842 1180/284/844 1175/277/839
-f 1175/277/839 1171/278/835 1178/283/842
-f 1181/333/845 1182/334/846 1183/335/847
-f 1183/335/847 1184/336/848 1181/333/845
-f 1182/334/846 1185/337/849 1186/338/850
-f 1186/338/850 1183/335/847 1182/334/846
-f 1183/335/847 1187/339/851 1188/340/852
-f 1188/340/852 1184/336/848 1183/335/847
-f 1183/335/847 1186/338/850 1189/341/853
-f 1189/341/853 1187/339/851 1183/335/847
-f 1190/21/854 1191/24/855 1192/23/856
-f 1192/23/856 1193/22/857 1190/21/854
-f 1194/27/858 1195/26/859 1190/25/854
-f 1190/25/854 1193/28/857 1194/27/858
-f 1196/24/860 1195/21/859 1194/22/858
-f 1194/22/858 1197/23/861 1196/24/860
-f 1191/25/855 1196/26/860 1197/27/861
-f 1197/27/861 1192/28/856 1191/25/855
-f 1198/29/862 1191/24/855 1190/21/854
-f 1190/21/854 1199/30/863 1198/29/862
-f 1199/31/863 1190/25/854 1195/26/859
-f 1195/26/859 1200/32/864 1199/31/863
-f 1200/30/864 1195/21/859 1196/24/860
-f 1196/24/860 1201/29/865 1200/30/864
-f 1198/31/862 1201/32/865 1196/26/860
-f 1196/26/860 1191/25/855 1198/31/862
-f 1202/21/21 1203/22/22 1204/23/23
-f 1204/23/23 1205/24/866 1202/21/21
-f 1202/25/21 1206/26/25 1207/27/867
-f 1207/27/867 1203/28/22 1202/25/21
-f 1208/24/27 1209/23/868 1207/22/867
-f 1207/22/867 1206/21/25 1208/24/27
-f 1205/25/866 1204/28/23 1209/27/868
-f 1209/27/868 1208/26/27 1205/25/866
-f 1210/29/869 1211/30/30 1202/21/21
-f 1202/21/21 1205/24/866 1210/29/869
-f 1211/31/30 1212/32/870 1206/26/25
-f 1206/26/25 1202/25/21 1211/31/30
-f 1212/30/870 1213/29/871 1208/24/27
-f 1208/24/27 1206/21/25 1212/30/870
-f 1208/26/27 1213/32/871 1210/31/869
-f 1210/31/869 1205/25/866 1208/26/27
-f 1214/33/872 1215/36/873 1216/35/874
-f 1216/35/874 1217/34/875 1214/33/872
-f 1218/38/876 1219/37/877 1220/40/878
-f 1220/40/878 1221/39/879 1218/38/876
-f 1222/43/880 1223/42/881 1219/41/877
-f 1219/41/877 1218/44/876 1222/43/880
-f 1224/40/882 1223/37/881 1222/38/880
-f 1222/38/880 1225/39/883 1224/40/882
-f 1220/41/878 1224/42/882 1225/43/883
-f 1225/43/883 1221/44/879 1220/41/878
-f 1217/46/875 1216/45/874 1220/40/878
-f 1220/40/878 1219/37/877 1217/46/875
-f 1214/48/872 1217/47/875 1219/41/877
-f 1219/41/877 1223/42/881 1214/48/872
-f 1214/46/872 1223/37/881 1224/40/882
-f 1224/40/882 1215/45/873 1214/46/872
-f 1215/48/873 1224/42/882 1220/41/878
-f 1220/41/878 1216/47/874 1215/48/873
-f 1226/342/884 1227/343/885 1228/344/886
-f 1228/344/886 1229/345/887 1226/342/884
-f 1230/346/888 1231/347/889 1228/344/886
-f 1228/344/886 1227/343/885 1230/346/888
-f 1232/348/890 1227/349/885 1226/350/884
-f 1226/350/884 1233/351/891 1232/348/890
-f 1232/348/890 1234/352/892 1230/353/888
-f 1230/353/888 1227/349/885 1232/348/890
-f 1235/344/893 1232/343/890 1233/342/891
-f 1233/342/891 1236/345/894 1235/344/893
-f 1235/344/893 1237/347/895 1234/346/892
-f 1234/346/892 1232/343/890 1235/344/893
-f 1229/350/887 1228/349/886 1235/348/893
-f 1235/348/893 1236/351/894 1229/350/887
-f 1231/353/889 1237/352/895 1235/348/893
-f 1235/348/893 1228/349/886 1231/353/889
-f 1238/354/896 1239/355/897 1240/356/898
-f 1240/356/898 1241/357/899 1238/354/896
-f 1242/358/900 1243/359/901 1244/360/901
-f 1244/360/901 1245/361/88 1242/358/900
-f 1246/362/902 1242/363/900 1245/364/88
-f 1245/364/88 1247/365/902 1246/362/902
-f 1248/366/92 1246/367/902 1247/368/902
-f 1247/368/902 1249/369/92 1248/366/92
-f 1243/370/901 1248/371/92 1249/372/92
-f 1249/372/92 1244/373/901 1243/370/901
-f 1250/357/903 1251/356/904 1252/374/905
-f 1252/374/905 1253/375/906 1250/357/903
-f 1254/354/907 1250/357/903 1253/375/906
-f 1253/375/906 1255/376/908 1254/354/907
-f 1256/355/909 1254/354/907 1255/376/908
-f 1255/376/908 1257/377/910 1256/355/909
-f 1251/356/904 1256/355/909 1257/377/910
-f 1257/377/910 1252/374/905 1251/356/904
-f 1253/378/906 1252/379/905 1243/359/901
-f 1243/359/901 1242/358/900 1253/378/906
-f 1255/380/908 1253/381/906 1242/363/900
-f 1242/363/900 1246/362/902 1255/380/908
-f 1257/382/910 1255/383/908 1246/367/902
-f 1246/367/902 1248/366/92 1257/382/910
-f 1252/384/905 1257/385/910 1248/371/92
-f 1248/371/92 1243/370/901 1252/384/905
-f 1251/386/904 1250/387/903 1241/388/899
-f 1241/388/899 1240/389/898 1251/386/904
-f 1256/386/909 1251/387/904 1240/388/898
-f 1240/388/898 1239/389/897 1256/386/909
-f 1254/386/907 1256/387/909 1239/388/897
-f 1239/388/897 1238/389/896 1254/386/907
-f 1250/387/903 1254/386/907 1238/389/896
-f 1238/389/896 1241/388/899 1250/387/903
-f 1258/342/884 1259/343/885 1260/344/886
-f 1260/344/886 1261/345/887 1258/342/884
-f 1262/346/888 1263/347/889 1260/344/886
-f 1260/344/886 1259/343/885 1262/346/888
-f 1264/348/890 1259/349/885 1258/350/884
-f 1258/350/884 1265/351/891 1264/348/890
-f 1264/348/890 1266/352/892 1262/353/888
-f 1262/353/888 1259/349/885 1264/348/890
-f 1267/344/893 1264/343/890 1265/342/891
-f 1265/342/891 1268/345/894 1267/344/893
-f 1267/344/893 1269/347/895 1266/346/892
-f 1266/346/892 1264/343/890 1267/344/893
-f 1261/350/887 1260/349/886 1267/348/893
-f 1267/348/893 1268/351/894 1261/350/887
-f 1263/353/889 1269/352/895 1267/348/893
-f 1267/348/893 1260/349/886 1263/353/889
-f 1270/342/884 1271/343/885 1272/344/886
-f 1272/344/886 1273/345/887 1270/342/884
-f 1274/346/888 1275/347/889 1272/344/886
-f 1272/344/886 1271/343/885 1274/346/888
-f 1276/348/890 1271/349/885 1270/350/884
-f 1270/350/884 1277/351/891 1276/348/890
-f 1276/348/890 1278/352/892 1274/353/888
-f 1274/353/888 1271/349/885 1276/348/890
-f 1279/344/893 1276/343/890 1277/342/891
-f 1277/342/891 1280/345/894 1279/344/893
-f 1279/344/893 1281/347/895 1278/346/892
-f 1278/346/892 1276/343/890 1279/344/893
-f 1273/350/887 1272/349/886 1279/348/893
-f 1279/348/893 1280/351/894 1273/350/887
-f 1275/353/889 1281/352/895 1279/348/893
-f 1279/348/893 1272/349/886 1275/353/889
-f 1282/342/884 1283/343/885 1284/344/911
-f 1284/344/911 1285/345/887 1282/342/884
-f 1286/346/888 1287/347/889 1284/344/911
-f 1284/344/911 1283/343/885 1286/346/888
-f 1288/348/912 1283/349/885 1282/350/884
-f 1282/350/884 1289/351/891 1288/348/912
-f 1288/348/912 1290/352/892 1286/353/888
-f 1286/353/888 1283/349/885 1288/348/912
-f 1291/344/893 1288/343/912 1289/342/891
-f 1289/342/891 1292/345/894 1291/344/893
-f 1291/344/893 1293/347/895 1290/346/892
-f 1290/346/892 1288/343/912 1291/344/893
-f 1285/350/887 1284/349/911 1291/348/893
-f 1291/348/893 1292/351/894 1285/350/887
-f 1287/353/889 1293/352/895 1291/348/893
-f 1291/348/893 1284/349/911 1287/353/889
-f 1294/342/884 1295/343/885 1296/344/911
-f 1296/344/911 1297/345/887 1294/342/884
-f 1298/346/888 1299/347/889 1296/344/911
-f 1296/344/911 1295/343/885 1298/346/888
-f 1300/348/912 1295/349/885 1294/350/884
-f 1294/350/884 1301/351/891 1300/348/912
-f 1300/348/912 1302/352/892 1298/353/888
-f 1298/353/888 1295/349/885 1300/348/912
-f 1303/344/893 1300/343/912 1301/342/891
-f 1301/342/891 1304/345/894 1303/344/893
-f 1303/344/893 1305/347/895 1302/346/892
-f 1302/346/892 1300/343/912 1303/344/893
-f 1297/350/887 1296/349/911 1303/348/893
-f 1303/348/893 1304/351/894 1297/350/887
-f 1299/353/889 1305/352/895 1303/348/893
-f 1303/348/893 1296/349/911 1299/353/889
-f 1306/390/913 1307/391/914 1308/392/915
-f 1308/392/915 1309/393/916 1306/390/913
-f 1310/394/917 1311/395/918 1312/396/919
-f 1312/396/919 1313/397/920 1310/394/917
-f 1314/390/921 1315/398/922 1316/399/923
-f 1316/399/923 1317/393/924 1314/390/921
-f 1318/394/925 1319/400/926 1320/401/927
-f 1320/401/927 1321/397/928 1318/394/925
-f 1321/402/928 1322/403/929 1323/404/930
-f 1323/404/930 1308/405/915 1321/402/928
-f 1317/406/924 1324/407/931 1325/408/932
-f 1325/408/932 1320/409/927 1317/406/924
-f 1313/410/920 1326/411/933 1327/412/934
-f 1327/412/934 1316/413/923 1313/410/920
-f 1309/414/916 1328/415/935 1329/416/936
-f 1329/416/936 1312/417/919 1309/414/916
-f 1306/414/913 1330/415/424 1331/404/424
-f 1331/404/424 1307/405/914 1306/414/913
-f 1310/410/917 1332/411/424 1333/416/424
-f 1333/416/424 1311/417/918 1310/410/917
-f 1314/406/921 1334/407/424 1335/412/424
-f 1335/412/424 1315/413/922 1314/406/921
-f 1318/402/925 1336/403/424 1337/408/424
-f 1337/408/424 1319/409/926 1318/402/925
-f 1320/392/927 1319/391/926 1314/390/921
-f 1314/390/921 1317/393/924 1320/392/927
-f 1308/396/915 1307/395/914 1318/394/925
-f 1318/394/925 1321/397/928 1308/396/915
-f 1325/408/932 1322/403/929 1321/402/928
-f 1321/402/928 1320/409/927 1325/408/932
-f 1327/412/934 1324/407/931 1317/406/924
-f 1317/406/924 1316/413/923 1327/412/934
-f 1329/416/936 1326/411/933 1313/410/920
-f 1313/410/920 1312/417/919 1329/416/936
-f 1337/408/424 1334/407/424 1314/406/921
-f 1314/406/921 1319/409/926 1337/408/424
-f 1331/404/424 1336/403/424 1318/402/925
-f 1318/402/925 1307/405/914 1331/404/424
-f 1312/399/919 1311/398/918 1306/390/913
-f 1306/390/913 1309/393/916 1312/399/919
-f 1316/401/923 1315/400/922 1310/394/917
-f 1310/394/917 1313/397/920 1316/401/923
-f 1323/404/930 1328/415/935 1309/414/916
-f 1309/414/916 1308/405/915 1323/404/930
-f 1333/416/424 1330/415/424 1306/414/913
-f 1306/414/913 1311/417/918 1333/416/424
-f 1335/412/424 1332/411/424 1310/410/917
-f 1310/410/917 1315/413/922 1335/412/424
-f 1338/390/913 1339/391/914 1340/392/915
-f 1340/392/915 1341/393/916 1338/390/913
-f 1342/394/917 1343/395/918 1344/396/919
-f 1344/396/919 1345/397/920 1342/394/917
-f 1346/390/921 1347/398/922 1348/399/923
-f 1348/399/923 1349/393/924 1346/390/921
-f 1350/394/925 1351/400/926 1352/401/927
-f 1352/401/927 1353/397/928 1350/394/925
-f 1353/402/928 1354/403/929 1355/404/930
-f 1355/404/930 1340/405/915 1353/402/928
-f 1349/406/924 1356/407/931 1357/408/932
-f 1357/408/932 1352/409/927 1349/406/924
-f 1345/410/920 1358/411/933 1359/412/934
-f 1359/412/934 1348/413/923 1345/410/920
-f 1341/414/916 1360/415/935 1361/416/936
-f 1361/416/936 1344/417/919 1341/414/916
-f 1338/414/913 1362/415/424 1363/404/424
-f 1363/404/424 1339/405/914 1338/414/913
-f 1342/410/917 1364/411/424 1365/416/424
-f 1365/416/424 1343/417/918 1342/410/917
-f 1346/406/921 1366/407/424 1367/412/424
-f 1367/412/424 1347/413/922 1346/406/921
-f 1350/402/925 1368/403/424 1369/408/424
-f 1369/408/424 1351/409/926 1350/402/925
-f 1352/392/927 1351/391/926 1346/390/921
-f 1346/390/921 1349/393/924 1352/392/927
-f 1340/396/915 1339/395/914 1350/394/925
-f 1350/394/925 1353/397/928 1340/396/915
-f 1357/408/932 1354/403/929 1353/402/928
-f 1353/402/928 1352/409/927 1357/408/932
-f 1359/412/934 1356/407/931 1349/406/924
-f 1349/406/924 1348/413/923 1359/412/934
-f 1361/416/936 1358/411/933 1345/410/920
-f 1345/410/920 1344/417/919 1361/416/936
-f 1369/408/424 1366/407/424 1346/406/921
-f 1346/406/921 1351/409/926 1369/408/424
-f 1363/404/424 1368/403/424 1350/402/925
-f 1350/402/925 1339/405/914 1363/404/424
-f 1344/399/919 1343/398/918 1338/390/913
-f 1338/390/913 1341/393/916 1344/399/919
-f 1348/401/923 1347/400/922 1342/394/917
-f 1342/394/917 1345/397/920 1348/401/923
-f 1355/404/930 1360/415/935 1341/414/916
-f 1341/414/916 1340/405/915 1355/404/930
-f 1365/416/424 1362/415/424 1338/414/913
-f 1338/414/913 1343/417/918 1365/416/424
-f 1367/412/424 1364/411/424 1342/410/917
-f 1342/410/917 1347/413/922 1367/412/424
-f 1370/342/937 1371/343/938 1372/344/939
-f 1372/344/939 1373/345/940 1370/342/937
-f 1374/346/941 1375/347/942 1372/344/939
-f 1372/344/939 1371/343/938 1374/346/941
-f 1376/348/943 1371/349/938 1370/350/937
-f 1370/350/937 1377/351/944 1376/348/943
-f 1376/348/943 1378/352/945 1374/353/941
-f 1374/353/941 1371/349/938 1376/348/943
-f 1379/344/946 1376/343/943 1377/342/944
-f 1377/342/944 1380/345/947 1379/344/946
-f 1379/344/946 1381/347/948 1378/346/945
-f 1378/346/945 1376/343/943 1379/344/946
-f 1373/350/940 1372/349/939 1379/348/946
-f 1379/348/946 1380/351/947 1373/350/940
-f 1375/353/942 1381/352/948 1379/348/946
-f 1379/348/946 1372/349/939 1375/353/942
-f 1382/418/949 1383/419/950 1384/420/951
-f 1383/419/950 1385/421/952 1384/420/951
-f 1385/422/952 1386/423/953 1384/420/951
-f 1386/423/953 1387/424/954 1384/420/951
-f 1387/424/954 1388/425/955 1384/420/951
-f 1388/425/955 1389/426/956 1384/420/951
-f 1389/426/956 1390/427/957 1384/420/951
-f 1390/427/957 1391/428/958 1384/420/951
-f 1391/428/958 1392/429/959 1384/420/951
-f 1392/429/959 1393/430/960 1384/420/951
-f 1393/430/960 1382/418/949 1384/420/951
-f 1394/431/961 1395/432/962 1396/433/963
-f 1396/433/963 1397/434/964 1394/431/961
-f 1398/435/965 1399/436/966 1395/432/962
-f 1395/432/962 1394/431/961 1398/435/965
-f 1400/437/967 1401/438/968 1399/436/966
-f 1399/436/966 1398/435/965 1400/437/967
-f 1402/439/969 1403/440/970 1401/438/968
-f 1401/438/968 1400/437/967 1402/439/969
-f 1404/441/971 1405/442/972 1403/443/970
-f 1403/443/970 1402/444/969 1404/441/971
-f 1406/445/973 1407/446/974 1405/442/972
-f 1405/442/972 1404/441/971 1406/445/973
-f 1408/447/975 1409/448/976 1407/446/974
-f 1407/446/974 1406/445/973 1408/447/975
-f 1410/449/977 1411/450/978 1409/448/976
-f 1409/448/976 1408/447/975 1410/449/977
-f 1412/451/979 1413/452/980 1411/450/978
-f 1411/450/978 1410/449/977 1412/451/979
-f 1414/453/981 1415/454/982 1413/452/980
-f 1413/452/980 1412/451/979 1414/453/981
-f 1397/434/964 1396/433/963 1415/454/982
-f 1415/454/982 1414/453/981 1397/434/964
-f 1416/455/983 1394/431/961 1397/434/964
-f 1397/434/964 1417/456/984 1416/455/983
-f 1418/457/985 1398/435/965 1394/431/961
-f 1394/431/961 1416/455/983 1418/457/985
-f 1419/458/986 1400/437/967 1398/435/965
-f 1398/435/965 1418/457/985 1419/458/986
-f 1420/459/987 1402/439/969 1400/437/967
-f 1400/437/967 1419/458/986 1420/459/987
-f 1421/460/988 1404/441/971 1402/444/969
-f 1402/444/969 1420/461/987 1421/460/988
-f 1422/462/989 1406/445/973 1404/441/971
-f 1404/441/971 1421/460/988 1422/462/989
-f 1423/463/990 1408/447/975 1406/445/973
-f 1406/445/973 1422/462/989 1423/463/990
-f 1424/464/991 1410/449/977 1408/447/975
-f 1408/447/975 1423/463/990 1424/464/991
-f 1425/465/992 1412/451/979 1410/449/977
-f 1410/449/977 1424/464/991 1425/465/992
-f 1426/466/993 1414/453/981 1412/451/979
-f 1412/451/979 1425/465/992 1426/466/993
-f 1417/456/984 1397/434/964 1414/453/981
-f 1414/453/981 1426/466/993 1417/456/984
-f 1427/467/994 1416/468/983 1417/469/984
-f 1417/469/984 1428/470/995 1427/467/994
-f 1429/471/996 1418/472/985 1416/468/983
-f 1416/468/983 1427/467/994 1429/471/996
-f 1430/473/997 1419/474/986 1418/472/985
-f 1418/472/985 1429/471/996 1430/473/997
-f 1431/475/998 1420/476/987 1419/474/986
-f 1419/474/986 1430/473/997 1431/475/998
-f 1432/477/999 1421/478/988 1420/479/987
-f 1420/479/987 1431/480/998 1432/477/999
-f 1433/481/1000 1422/482/989 1421/478/988
-f 1421/478/988 1432/477/999 1433/481/1000
-f 1434/483/1001 1423/484/990 1422/482/989
-f 1422/482/989 1433/481/1000 1434/483/1001
-f 1435/485/1002 1424/486/991 1423/484/990
-f 1423/484/990 1434/483/1001 1435/485/1002
-f 1436/487/1003 1425/488/992 1424/486/991
-f 1424/486/991 1435/485/1002 1436/487/1003
-f 1437/489/1004 1426/490/993 1425/488/992
-f 1425/488/992 1436/487/1003 1437/489/1004
-f 1428/470/995 1417/469/984 1426/490/993
-f 1426/490/993 1437/489/1004 1428/470/995
-f 1383/491/950 1382/492/949 1396/493/963
-f 1396/493/963 1395/494/962 1383/491/950
-f 1385/495/952 1383/491/950 1395/494/962
-f 1395/494/962 1399/496/966 1385/495/952
-f 1401/497/968 1386/498/953 1385/495/952
-f 1385/495/952 1399/496/966 1401/497/968
-f 1387/499/954 1386/498/953 1401/497/968
-f 1401/497/968 1403/500/970 1387/499/954
-f 1388/501/955 1387/502/954 1403/503/970
-f 1403/503/970 1405/504/972 1388/501/955
-f 1389/505/956 1388/501/955 1405/504/972
-f 1405/504/972 1407/506/974 1389/505/956
-f 1390/507/957 1389/505/956 1407/506/974
-f 1407/506/974 1409/508/976 1390/507/957
-f 1391/509/958 1390/507/957 1409/508/976
-f 1409/508/976 1411/510/978 1391/509/958
-f 1392/511/959 1391/509/958 1411/510/978
-f 1411/510/978 1413/512/980 1392/511/959
-f 1393/513/960 1392/511/959 1413/512/980
-f 1413/512/980 1415/514/982 1393/513/960
-f 1382/492/949 1393/513/960 1415/514/982
-f 1415/514/982 1396/493/963 1382/492/949
-f 1438/515/1005 1439/516/1006 1440/517/1007
-f 1440/517/1007 1441/518/1008 1438/515/1005
-f 1442/519/1009 1443/520/1010 1444/521/1011
-f 1444/521/1011 1445/522/1012 1442/519/1009
-f 1446/520/1013 1442/519/1009 1445/522/1012
-f 1445/522/1012 1447/521/1014 1446/520/1013
-f 1448/520/1015 1446/519/1013 1447/522/1014
-f 1447/522/1014 1449/521/1016 1448/520/1015
-f 1443/519/1010 1448/520/1015 1449/521/1016
-f 1449/521/1016 1444/522/1011 1443/519/1010
-f 1440/523/1007 1443/520/1010 1442/519/1009
-f 1442/519/1009 1441/524/1008 1440/523/1007
-f 1441/524/1008 1442/519/1009 1446/520/1013
-f 1446/520/1013 1438/523/1005 1441/524/1008
-f 1438/524/1005 1446/519/1013 1448/520/1015
-f 1448/520/1015 1439/523/1006 1438/524/1005
-f 1439/523/1006 1448/520/1015 1443/519/1010
-f 1443/519/1010 1440/524/1007 1439/523/1006
-f 1450/515/1005 1451/516/1006 1452/517/1007
-f 1452/517/1007 1453/518/1008 1450/515/1005
-f 1454/519/1009 1455/520/1010 1456/521/1011
-f 1456/521/1011 1457/522/1012 1454/519/1009
-f 1458/520/1013 1454/519/1009 1457/522/1012
-f 1457/522/1012 1459/521/1014 1458/520/1013
-f 1460/520/1015 1458/519/1013 1459/522/1014
-f 1459/522/1014 1461/521/1016 1460/520/1015
-f 1455/519/1010 1460/520/1015 1461/521/1016
-f 1461/521/1016 1456/522/1011 1455/519/1010
-f 1452/523/1007 1455/520/1010 1454/519/1009
-f 1454/519/1009 1453/524/1008 1452/523/1007
-f 1453/524/1008 1454/519/1009 1458/520/1013
-f 1458/520/1013 1450/523/1005 1453/524/1008
-f 1450/524/1005 1458/519/1013 1460/520/1015
-f 1460/520/1015 1451/523/1006 1450/524/1005
-f 1451/523/1006 1460/520/1015 1455/519/1010
-f 1455/519/1010 1452/524/1007 1451/523/1006
-f 1462/515/1005 1463/516/1006 1464/517/1007
-f 1464/517/1007 1465/518/1008 1462/515/1005
-f 1466/519/1009 1467/520/1010 1468/521/1011
-f 1468/521/1011 1469/522/1012 1466/519/1009
-f 1470/520/1013 1466/519/1009 1469/522/1012
-f 1469/522/1012 1471/521/1014 1470/520/1013
-f 1472/520/1015 1470/519/1013 1471/522/1014
-f 1471/522/1014 1473/521/1016 1472/520/1015
-f 1467/519/1010 1472/520/1015 1473/521/1016
-f 1473/521/1016 1468/522/1011 1467/519/1010
-f 1464/523/1007 1467/520/1010 1466/519/1009
-f 1466/519/1009 1465/524/1008 1464/523/1007
-f 1465/524/1008 1466/519/1009 1470/520/1013
-f 1470/520/1013 1462/523/1005 1465/524/1008
-f 1462/524/1005 1470/519/1013 1472/520/1015
-f 1472/520/1015 1463/523/1006 1462/524/1005
-f 1463/523/1006 1472/520/1015 1467/519/1010
-f 1467/519/1010 1464/524/1007 1463/523/1006
-f 1474/515/1017 1475/516/1018 1476/517/1019
-f 1476/517/1019 1477/518/1020 1474/515/1017
-f 1478/519/1021 1479/520/1022 1480/521/1023
-f 1480/521/1023 1481/522/1012 1478/519/1021
-f 1482/520/1013 1478/519/1021 1481/522/1012
-f 1481/522/1012 1483/521/1024 1482/520/1013
-f 1484/520/1025 1482/519/1013 1483/522/1024
-f 1483/522/1024 1485/521/1016 1484/520/1025
-f 1479/519/1022 1484/520/1025 1485/521/1016
-f 1485/521/1016 1480/522/1023 1479/519/1022
-f 1476/523/1019 1479/520/1022 1478/519/1021
-f 1478/519/1021 1477/524/1020 1476/523/1019
-f 1477/524/1020 1478/519/1021 1482/520/1013
-f 1482/520/1013 1474/523/1017 1477/524/1020
-f 1474/524/1017 1482/519/1013 1484/520/1025
-f 1484/520/1025 1475/523/1018 1474/524/1017
-f 1475/523/1018 1484/520/1025 1479/519/1022
-f 1479/519/1022 1476/524/1019 1475/523/1018
-f 1486/525/1026 1487/526/1027 1488/527/1022
-f 1488/527/1022 1489/528/1026 1486/525/1026
-f 1490/529/1028 1491/530/1029 1492/531/1030
-f 1492/531/1030 1493/532/1031 1490/529/1028
-f 1494/533/1032 1495/534/1032 1496/535/1027
-f 1496/535/1027 1497/536/1033 1494/533/1032
-f 1498/537/1032 1487/526/1027 1499/538/1034
-f 1499/538/1034 1500/539/1035 1498/537/1032
-f 1501/540/1036 1502/541/1037 1503/542/1038
-f 1503/542/1038 1499/538/1034 1501/540/1036
-f 1504/543/1039 1505/544/1040 1506/545/1041
-f 1506/545/1041 1507/546/1042 1504/543/1039
-f 1508/547/1043 1509/548/1044 1510/549/1045
-f 1510/549/1045 1511/550/1046 1508/547/1043
-f 1512/551/1047 1503/542/1038 1513/552/1048
-f 1513/552/1048 1514/553/1049 1512/551/1047
-f 1511/550/1046 1501/540/1036 1486/525/1026
-f 1486/525/1026 1496/535/1027 1511/550/1046
-f 1504/543/1039 1491/530/1029 1515/554/1050
-f 1515/554/1050 1516/555/1051 1504/543/1039
-f 1508/547/1043 1495/534/1032 1492/531/1030
-f 1492/531/1030 1507/546/1042 1508/547/1043
-f 1517/556/1032 1518/557/1032 1498/537/1032
-f 1498/537/1032 1519/558/1032 1517/556/1032
-f 1520/559/1052 1502/541/1037 1510/549/1045
-f 1510/549/1045 1521/560/1053 1520/559/1052
-f 1522/561/1054 1505/544/1040 1523/562/1055
-f 1523/562/1055 1524/563/1056 1522/561/1054
-f 1525/564/1057 1509/548/1044 1506/545/1041
-f 1506/545/1041 1526/565/1058 1525/564/1057
-f 1527/566/1059 1500/539/1035 1512/551/1047
-f 1512/551/1047 1528/567/1060 1527/566/1059
-f 1496/535/1027 1486/525/1026 1489/528/1026
-f 1489/528/1026 1497/536/1033 1496/535/1027
-f 1529/568/1061 1515/554/1050 1491/530/1029
-f 1491/530/1029 1490/529/1028 1529/568/1061
-f 1493/532/1031 1492/531/1030 1495/534/1032
-f 1495/534/1032 1494/533/1032 1493/532/1031
-f 1519/558/1032 1498/537/1032 1500/539/1035
-f 1500/539/1035 1527/566/1059 1519/558/1032
-f 1511/550/1046 1510/549/1045 1502/541/1037
-f 1502/541/1037 1501/540/1036 1511/550/1046
-f 1516/555/1051 1523/562/1055 1505/544/1040
-f 1505/544/1040 1504/543/1039 1516/555/1051
-f 1507/546/1042 1506/545/1041 1509/548/1044
-f 1509/548/1044 1508/547/1043 1507/546/1042
-f 1528/567/1060 1512/551/1047 1514/553/1049
-f 1514/553/1049 1530/569/1062 1528/567/1060
-f 1487/526/1027 1486/525/1026 1501/540/1036
-f 1501/540/1036 1499/538/1034 1487/526/1027
-f 1507/546/1042 1492/531/1030 1491/530/1029
-f 1491/530/1029 1504/543/1039 1507/546/1042
-f 1511/550/1046 1496/535/1027 1495/534/1032
-f 1495/534/1032 1508/547/1043 1511/550/1046
-f 1487/526/1027 1498/537/1032 1518/557/1032
-f 1518/557/1032 1488/527/1022 1487/526/1027
-f 1513/552/1048 1503/542/1038 1502/541/1037
-f 1502/541/1037 1520/559/1052 1513/552/1048
-f 1526/565/1058 1506/545/1041 1505/544/1040
-f 1505/544/1040 1522/561/1054 1526/565/1058
-f 1521/560/1053 1510/549/1045 1509/548/1044
-f 1509/548/1044 1525/564/1057 1521/560/1053
-f 1503/542/1038 1512/551/1047 1500/539/1035
-f 1500/539/1035 1499/538/1034 1503/542/1038
-f 1531/570/1063 1524/571/1064 1532/572/1065
-f 1532/572/1065 1533/573/1066 1531/570/1063
-f 1534/574/1067 1531/570/1063 1533/573/1066
-f 1533/573/1066 1535/575/1068 1534/574/1067
-f 1536/576/1069 1534/577/1067 1535/578/1068
-f 1535/578/1068 1537/579/1070 1536/576/1069
-f 1538/580/1071 1536/576/1069 1537/579/1070
-f 1537/579/1070 1539/581/1072 1538/580/1071
-f 1524/571/1064 1538/580/1071 1539/581/1072
-f 1539/581/1072 1532/572/1065 1524/571/1064
-f 1534/582/1067 1536/583/1069 1538/584/1071
-f 1531/585/1063 1534/582/1067 1538/584/1071
-f 1524/586/1064 1531/585/1063 1538/584/1071
-f 1540/587/1073 1541/588/1074 1542/589/1075
-f 1542/589/1075 1543/590/1076 1540/587/1073
-f 1544/591/1077 1540/587/1073 1543/590/1076
-f 1543/590/1076 1545/592/1078 1544/591/1077
-f 1546/593/1079 1544/591/1077 1545/592/1078
-f 1545/592/1078 1547/594/1080 1546/593/1079
-f 1548/595/1081 1546/593/1079 1547/594/1080
-f 1547/594/1080 1549/596/1082 1548/595/1081
-f 1541/588/1074 1548/597/1081 1549/598/1082
-f 1549/598/1082 1542/589/1075 1541/588/1074
-f 1550/599/1083 1551/600/1084 1552/601/1085
-f 1553/602/1086 1550/599/1083 1552/601/1085
-f 1554/603/1087 1553/602/1086 1552/601/1085
-f 1555/604/1088 1541/588/1074 1540/587/1073
-f 1540/587/1073 1556/605/1089 1555/604/1088
-f 1556/605/1089 1540/587/1073 1544/591/1077
-f 1544/591/1077 1557/606/1090 1556/605/1089
-f 1557/606/1090 1544/591/1077 1546/593/1079
-f 1546/593/1079 1558/607/1091 1557/606/1090
-f 1558/607/1091 1546/593/1079 1548/595/1081
-f 1548/595/1081 1559/608/1092 1558/607/1091
-f 1559/609/1092 1548/597/1081 1541/588/1074
-f 1541/588/1074 1555/604/1088 1559/609/1092
-f 1554/610/1087 1555/604/1088 1556/605/1089
-f 1556/605/1089 1553/611/1086 1554/610/1087
-f 1553/611/1086 1556/605/1089 1557/606/1090
-f 1557/606/1090 1550/612/1083 1553/611/1086
-f 1550/612/1083 1557/606/1090 1558/607/1091
-f 1558/607/1091 1551/613/1084 1550/612/1083
-f 1551/613/1084 1558/607/1091 1559/608/1092
-f 1559/608/1092 1552/614/1085 1551/613/1084
-f 1552/615/1085 1559/609/1092 1555/604/1088
-f 1555/604/1088 1554/610/1087 1552/615/1085
-f 1560/616/1093 1561/617/1094 1562/618/1095
-f 1562/618/1095 1563/619/1096 1560/616/1093
-f 1564/620/1097 1560/621/1093 1563/622/1096
-f 1563/622/1096 1565/623/1098 1564/620/1097
-f 1566/624/1099 1564/620/1097 1565/623/1098
-f 1565/623/1098 1567/625/1100 1566/624/1099
-f 1568/626/1101 1566/624/1099 1567/625/1100
-f 1567/625/1100 1569/627/1102 1568/626/1101
-f 1561/617/1094 1568/626/1101 1569/627/1102
-f 1569/627/1102 1562/618/1095 1561/617/1094
-f 1570/587/1103 1571/588/1104 1572/589/1105
-f 1572/589/1105 1573/590/1106 1570/587/1103
-f 1574/591/1107 1570/587/1103 1573/590/1106
-f 1573/590/1106 1575/592/1108 1574/591/1107
-f 1576/593/1109 1574/591/1107 1575/592/1108
-f 1575/592/1108 1577/594/1110 1576/593/1109
-f 1578/595/1111 1576/593/1109 1577/594/1110
-f 1577/594/1110 1579/596/1112 1578/595/1111
-f 1571/588/1104 1578/597/1111 1579/598/1112
-f 1579/598/1112 1572/589/1105 1571/588/1104
-f 1580/599/1113 1581/600/1084 1582/601/1085
-f 1583/602/1086 1580/599/1113 1582/601/1085
-f 1584/603/1087 1583/602/1086 1582/601/1085
-f 1585/604/1088 1571/588/1104 1570/587/1103
-f 1570/587/1103 1586/605/1089 1585/604/1088
-f 1586/605/1089 1570/587/1103 1574/591/1107
-f 1574/591/1107 1587/606/1090 1586/605/1089
-f 1587/606/1090 1574/591/1107 1576/593/1109
-f 1576/593/1109 1588/607/1114 1587/606/1090
-f 1588/607/1114 1576/593/1109 1578/595/1111
-f 1578/595/1111 1589/608/1092 1588/607/1114
-f 1589/609/1092 1578/597/1111 1571/588/1104
-f 1571/588/1104 1585/604/1088 1589/609/1092
-f 1584/610/1087 1585/604/1088 1586/605/1089
-f 1586/605/1089 1583/611/1086 1584/610/1087
-f 1583/611/1086 1586/605/1089 1587/606/1090
-f 1587/606/1090 1580/612/1113 1583/611/1086
-f 1580/612/1113 1587/606/1090 1588/607/1114
-f 1588/607/1114 1581/613/1084 1580/612/1113
-f 1581/613/1084 1588/607/1114 1589/608/1092
-f 1589/608/1092 1582/614/1085 1581/613/1084
-f 1582/615/1085 1589/609/1092 1585/604/1088
-f 1585/604/1088 1584/610/1087 1582/615/1085
-f 1590/616/1093 1591/617/1094 1592/618/1095
-f 1592/618/1095 1593/619/1096 1590/616/1093
-f 1594/620/1097 1590/621/1093 1593/622/1096
-f 1593/622/1096 1595/623/1098 1594/620/1097
-f 1596/624/1099 1594/620/1097 1595/623/1098
-f 1595/623/1098 1597/625/1115 1596/624/1099
-f 1598/626/1116 1596/624/1099 1597/625/1115
-f 1597/625/1115 1599/627/1102 1598/626/1116
-f 1591/617/1094 1598/626/1116 1599/627/1102
-f 1599/627/1102 1592/618/1095 1591/617/1094
-f 1600/628/1117 1601/629/1118 1602/630/1119
-f 1602/630/1119 1603/631/1120 1600/628/1117
-f 1604/632/1121 1601/629/1118 1600/628/1117
-f 1600/628/1117 1605/633/1122 1604/632/1121
-f 1606/634/1123 1607/635/1124 1602/636/1119
-f 1602/636/1119 1601/637/1118 1606/634/1123
-f 1604/638/1121 1608/639/1125 1606/634/1123
-f 1606/634/1123 1601/637/1118 1604/638/1121
-f 1609/628/1126 1610/631/1127 1607/630/1124
-f 1607/630/1124 1606/629/1123 1609/628/1126
-f 1608/632/1125 1611/633/1128 1609/628/1126
-f 1609/628/1126 1606/629/1123 1608/632/1125
-f 1609/634/1126 1600/637/1117 1603/636/1120
-f 1603/636/1120 1610/635/1127 1609/634/1126
-f 1605/638/1122 1600/637/1117 1609/634/1126
-f 1609/634/1126 1611/639/1128 1605/638/1122
-f 1612/616/1093 1613/617/1094 1614/618/1095
-f 1614/618/1095 1615/619/1096 1612/616/1093
-f 1616/620/1097 1612/621/1093 1615/622/1096
-f 1615/622/1096 1617/623/1098 1616/620/1097
-f 1618/624/1099 1616/620/1097 1617/623/1098
-f 1617/623/1098 1619/625/1115 1618/624/1099
-f 1620/626/1116 1618/624/1099 1619/625/1115
-f 1619/625/1115 1621/627/1129 1620/626/1116
-f 1613/617/1094 1620/626/1116 1621/627/1129
-f 1621/627/1129 1614/618/1095 1613/617/1094
-f 1622/616/1093 1623/617/1094 1624/618/1095
-f 1624/618/1095 1625/619/1096 1622/616/1093
-f 1626/620/1097 1622/621/1093 1625/622/1096
-f 1625/622/1096 1627/623/1098 1626/620/1097
-f 1628/624/1099 1626/620/1097 1627/623/1098
-f 1627/623/1098 1629/625/1115 1628/624/1099
-f 1630/626/1101 1628/624/1099 1629/625/1115
-f 1629/625/1115 1631/627/1129 1630/626/1101
-f 1623/617/1094 1630/626/1101 1631/627/1129
-f 1631/627/1129 1624/618/1095 1623/617/1094
-f 1632/616/1093 1633/617/1094 1634/618/1095
-f 1634/618/1095 1635/619/1096 1632/616/1093
-f 1636/620/1097 1632/621/1093 1635/622/1096
-f 1635/622/1096 1637/623/1098 1636/620/1097
-f 1638/624/1130 1636/620/1097 1637/623/1098
-f 1637/623/1098 1639/625/1100 1638/624/1130
-f 1640/626/1101 1638/624/1130 1639/625/1100
-f 1639/625/1100 1641/627/1102 1640/626/1101
-f 1633/617/1094 1640/626/1101 1641/627/1102
-f 1641/627/1102 1634/618/1095 1633/617/1094
-f 1642/616/1093 1643/617/1094 1644/618/1095
-f 1644/618/1095 1645/619/1096 1642/616/1093
-f 1646/620/1097 1642/621/1093 1645/622/1096
-f 1645/622/1096 1647/623/1098 1646/620/1097
-f 1648/624/1099 1646/620/1097 1647/623/1098
-f 1647/623/1098 1649/625/1115 1648/624/1099
-f 1650/626/1116 1648/624/1099 1649/625/1115
-f 1649/625/1115 1651/627/1102 1650/626/1116
-f 1643/617/1094 1650/626/1116 1651/627/1102
-f 1651/627/1102 1644/618/1095 1643/617/1094
-f 1652/616/1093 1653/617/1094 1654/618/1095
-f 1654/618/1095 1655/619/1096 1652/616/1093
-f 1656/620/1097 1652/621/1093 1655/622/1096
-f 1655/622/1096 1657/623/1098 1656/620/1097
-f 1658/624/1099 1656/620/1097 1657/623/1098
-f 1657/623/1098 1659/625/1115 1658/624/1099
-f 1660/626/1101 1658/624/1099 1659/625/1115
-f 1659/625/1115 1661/627/1102 1660/626/1101
-f 1653/617/1094 1660/626/1101 1661/627/1102
-f 1661/627/1102 1654/618/1095 1653/617/1094
-f 1662/616/1093 1663/617/1094 1664/618/1095
-f 1664/618/1095 1665/619/1096 1662/616/1093
-f 1666/620/1097 1662/621/1093 1665/622/1096
-f 1665/622/1096 1667/623/1098 1666/620/1097
-f 1668/624/1099 1666/620/1097 1667/623/1098
-f 1667/623/1098 1669/625/1100 1668/624/1099
-f 1670/626/1101 1668/624/1099 1669/625/1100
-f 1669/625/1100 1671/627/1102 1670/626/1101
-f 1663/617/1094 1670/626/1101 1671/627/1102
-f 1671/627/1102 1664/618/1095 1663/617/1094
-f 1672/616/1093 1673/617/1094 1674/618/1095
-f 1674/618/1095 1675/619/1096 1672/616/1093
-f 1676/620/1097 1672/621/1093 1675/622/1096
-f 1675/622/1096 1677/623/1131 1676/620/1097
-f 1678/624/1099 1676/620/1097 1677/623/1131
-f 1677/623/1131 1679/625/1100 1678/624/1099
-f 1680/626/1132 1678/624/1099 1679/625/1100
-f 1679/625/1100 1681/627/1102 1680/626/1132
-f 1673/617/1094 1680/626/1132 1681/627/1102
-f 1681/627/1102 1674/618/1095 1673/617/1094
-f 1682/616/1093 1683/617/1094 1684/618/1095
-f 1684/618/1095 1685/619/1096 1682/616/1093
-f 1686/620/1097 1682/621/1093 1685/622/1096
-f 1685/622/1096 1687/623/1098 1686/620/1097
-f 1688/624/1099 1686/620/1097 1687/623/1098
-f 1687/623/1098 1689/625/1115 1688/624/1099
-f 1690/626/1116 1688/624/1099 1689/625/1115
-f 1689/625/1115 1691/627/1102 1690/626/1116
-f 1683/617/1094 1690/626/1116 1691/627/1102
-f 1691/627/1102 1684/618/1095 1683/617/1094
-f 1692/616/1093 1693/617/1094 1694/618/1095
-f 1694/618/1095 1695/619/1096 1692/616/1093
-f 1696/620/1097 1692/621/1093 1695/622/1096
-f 1695/622/1096 1697/623/1098 1696/620/1097
-f 1698/624/1130 1696/620/1097 1697/623/1098
-f 1697/623/1098 1699/625/1100 1698/624/1130
-f 1700/626/1133 1698/624/1130 1699/625/1100
-f 1699/625/1100 1701/627/1102 1700/626/1133
-f 1693/617/1094 1700/626/1133 1701/627/1102
-f 1701/627/1102 1694/618/1095 1693/617/1094
-f 1702/616/1093 1703/617/1094 1704/618/1095
-f 1704/618/1095 1705/619/1096 1702/616/1093
-f 1706/620/1097 1702/621/1093 1705/622/1096
-f 1705/622/1096 1707/623/1131 1706/620/1097
-f 1708/624/1099 1706/620/1097 1707/623/1131
-f 1707/623/1131 1709/625/1100 1708/624/1099
-f 1710/626/1101 1708/624/1099 1709/625/1100
-f 1709/625/1100 1711/627/1102 1710/626/1101
-f 1703/617/1094 1710/626/1101 1711/627/1102
-f 1711/627/1102 1704/618/1095 1703/617/1094
-f 1712/616/1093 1713/617/1094 1714/618/1095
-f 1714/618/1095 1715/619/1096 1712/616/1093
-f 1716/620/1097 1712/621/1093 1715/622/1096
-f 1715/622/1096 1717/623/1098 1716/620/1097
-f 1718/624/1130 1716/620/1097 1717/623/1098
-f 1717/623/1098 1719/625/1100 1718/624/1130
-f 1720/626/1101 1718/624/1130 1719/625/1100
-f 1719/625/1100 1721/627/1102 1720/626/1101
-f 1713/617/1094 1720/626/1101 1721/627/1102
-f 1721/627/1102 1714/618/1095 1713/617/1094
-f 1722/616/1093 1723/617/1094 1724/618/1095
-f 1724/618/1095 1725/619/1096 1722/616/1093
-f 1726/620/1097 1722/621/1093 1725/622/1096
-f 1725/622/1096 1727/623/1098 1726/620/1097
-f 1728/624/1130 1726/620/1097 1727/623/1098
-f 1727/623/1098 1729/625/1100 1728/624/1130
-f 1730/626/1101 1728/624/1130 1729/625/1100
-f 1729/625/1100 1731/627/1102 1730/626/1101
-f 1723/617/1094 1730/626/1101 1731/627/1102
-f 1731/627/1102 1724/618/1095 1723/617/1094
-f 1732/616/1093 1733/617/1094 1734/618/1095
-f 1734/618/1095 1735/619/1134 1732/616/1093
-f 1736/620/1097 1732/621/1093 1735/622/1134
-f 1735/622/1134 1737/623/1098 1736/620/1097
-f 1738/624/1130 1736/620/1097 1737/623/1098
-f 1737/623/1098 1739/625/1100 1738/624/1130
-f 1740/626/1101 1738/624/1130 1739/625/1100
-f 1739/625/1100 1741/627/1102 1740/626/1101
-f 1733/617/1094 1740/626/1101 1741/627/1102
-f 1741/627/1102 1734/618/1095 1733/617/1094
-f 1742/616/1093 1743/617/1094 1744/618/1095
-f 1744/618/1095 1745/619/1134 1742/616/1093
-f 1746/620/1097 1742/621/1093 1745/622/1134
-f 1745/622/1134 1747/623/1098 1746/620/1097
-f 1748/624/1130 1746/620/1097 1747/623/1098
-f 1747/623/1098 1749/625/1100 1748/624/1130
-f 1750/626/1101 1748/624/1130 1749/625/1100
-f 1749/625/1100 1751/627/1102 1750/626/1101
-f 1743/617/1094 1750/626/1101 1751/627/1102
-f 1751/627/1102 1744/618/1095 1743/617/1094
-f 1752/255/1135 1753/256/1136 1754/257/1137
-f 1754/257/1137 1755/258/1138 1752/255/1135
-f 1756/259/1139 1757/260/1140 1752/255/1135
-f 1752/255/1135 1755/258/1138 1756/259/1139
-f 1752/261/1135 1758/262/1141 1759/263/1142
-f 1759/263/1142 1753/264/1136 1752/261/1135
-f 1757/265/1140 1760/266/1143 1758/262/1141
-f 1758/262/1141 1752/261/1135 1757/265/1140
-f 1758/267/1141 1761/268/1144 1762/269/1145
-f 1762/269/1145 1759/270/1142 1758/267/1141
-f 1763/271/1146 1761/268/1144 1758/267/1141
-f 1758/267/1141 1760/272/1143 1763/271/1146
-f 1755/261/1138 1754/264/1137 1762/263/1145
-f 1762/263/1145 1761/262/1144 1755/261/1138
-f 1756/265/1139 1755/261/1138 1761/262/1144
-f 1761/262/1144 1763/266/1146 1756/265/1139
-f 1764/616/1093 1765/617/1094 1766/618/1095
-f 1766/618/1095 1767/619/1096 1764/616/1093
-f 1768/620/1097 1764/621/1093 1767/622/1096
-f 1767/622/1096 1769/623/1098 1768/620/1097
-f 1770/624/1099 1768/620/1097 1769/623/1098
-f 1769/623/1098 1771/625/1115 1770/624/1099
-f 1772/626/1116 1770/624/1099 1771/625/1115
-f 1771/625/1115 1773/627/1129 1772/626/1116
-f 1765/617/1094 1772/626/1116 1773/627/1129
-f 1773/627/1129 1766/618/1095 1765/617/1094
-f 1774/640/1147 1775/641/1148 1776/642/1149
-f 1776/642/1149 1777/643/1150 1774/640/1147
-f 1778/644/1151 1775/645/1148 1774/646/1147
-f 1774/646/1147 1779/647/295 1778/644/1151
-f 1780/648/1152 1781/649/1153 1782/650/1154
-f 1782/650/1154 1783/651/1155 1780/648/1152
-f 1784/652/1156 1785/653/1157 1780/648/1152
-f 1780/648/1152 1783/651/1155 1784/652/1156
-f 1775/641/1148 1783/654/1155 1782/655/1154
-f 1782/655/1154 1776/642/1149 1775/641/1148
-f 1784/656/1156 1783/657/1155 1775/645/1148
-f 1775/645/1148 1778/644/1151 1784/656/1156
-f 1786/658/1158 1781/659/1153 1787/660/1159
-f 1787/660/1159 1788/661/1160 1786/658/1158
-f 1781/662/1153 1780/663/1152 1789/664/1161
-f 1789/664/1161 1787/665/1159 1781/662/1153
-f 1790/666/1162 1791/667/1163 1792/668/1164
-f 1792/668/1164 1793/669/1165 1790/666/1162
-f 1794/670/1166 1795/671/1167 1796/672/93
-f 1796/672/93 1797/673/93 1794/670/1166
-f 1786/674/1158 1798/675/1168 1799/676/1169
-f 1799/676/1169 1800/677/1170 1786/674/1158
-f 1800/678/1170 1799/679/1169 1795/671/1167
-f 1795/671/1167 1794/670/1166 1800/678/1170
-f 1785/680/1157 1801/681/1171 1802/682/1172
-f 1802/682/1172 1803/683/1173 1785/680/1157
-f 1804/684/1151 1778/644/1151 1779/647/295
-f 1779/647/295 1805/685/295 1804/684/1151
-f 1801/686/1171 1785/653/1157 1784/652/1156
-f 1784/652/1156 1806/687/1174 1801/686/1171
-f 1806/688/1174 1784/656/1156 1778/644/1151
-f 1778/644/1151 1804/684/1151 1806/688/1174
-f 1798/689/1168 1786/658/1158 1788/661/1160
-f 1788/661/1160 1807/690/1175 1798/689/1168
-f 1808/666/1176 1809/667/1177 1810/668/1178
-f 1810/668/1178 1811/669/1179 1808/666/1176
-f 1777/691/1150 1776/692/1149 1794/670/1166
-f 1794/670/1166 1797/673/93 1777/691/1150
-f 1781/649/1153 1786/674/1158 1800/677/1170
-f 1800/677/1170 1782/650/1154 1781/649/1153
-f 1776/692/1149 1782/693/1154 1800/678/1170
-f 1800/678/1170 1794/670/1166 1776/692/1149
-f 1789/694/1161 1780/695/1152 1785/680/1157
-f 1785/680/1157 1803/683/1173 1789/694/1161
-f 1812/696/1180 1813/697/1181 1807/698/1175
-f 1807/698/1175 1788/699/1160 1812/696/1180
-f 1807/698/1175 1813/697/1181 1814/700/1182
-f 1815/701/1183 1816/702/1184 1787/703/1159
-f 1787/703/1159 1789/704/1161 1815/701/1183
-f 1817/705/1185 1815/701/1183 1789/704/1161
-f 1789/704/1161 1803/706/1173 1817/705/1185
-f 1788/699/1160 1818/707/1186 1819/708/1187
-f 1790/709/1162 1793/710/1165 1813/711/1181
-f 1813/711/1181 1812/712/1180 1790/709/1162
-f 1820/713/1188 1791/714/1163 1790/709/1162
-f 1790/709/1162 1812/712/1180 1820/713/1188
-f 1821/715/1189 1792/716/1164 1791/714/1163
-f 1791/714/1163 1820/713/1188 1821/715/1189
-f 1793/717/1165 1792/716/1164 1821/715/1189
-f 1821/715/1189 1813/718/1181 1793/717/1165
-f 1808/713/1176 1811/715/1179 1818/716/1186
-f 1818/716/1186 1816/714/1184 1808/713/1176
-f 1815/709/1183 1809/712/1177 1808/713/1176
-f 1808/713/1176 1816/714/1184 1815/709/1183
-f 1817/710/1185 1810/711/1178 1809/712/1177
-f 1809/712/1177 1815/709/1183 1817/710/1185
-f 1811/715/1179 1810/718/1178 1817/717/1185
-f 1817/717/1185 1818/716/1186 1811/715/1179
-f 1822/719/1190 1819/708/1187 1818/707/1186
-f 1818/707/1186 1817/705/1185 1822/719/1190
-f 1820/720/1188 1812/696/1180 1819/708/1187
-f 1819/708/1187 1822/719/1190 1820/720/1188
-f 1821/721/1189 1802/722/1172 1814/700/1182
-f 1814/700/1182 1813/697/1181 1821/721/1189
-f 1803/706/1173 1820/720/1188 1822/719/1190
-f 1816/702/1184 1818/707/1186 1788/699/1160
-f 1788/699/1160 1787/703/1159 1816/702/1184
-f 1819/708/1187 1812/696/1180 1788/699/1160
-f 1821/721/1189 1820/720/1188 1803/706/1173
-f 1803/706/1173 1802/722/1172 1821/721/1189
-f 1822/719/1190 1817/705/1185 1803/706/1173
-f 1823/642/1191 1824/641/1192 1825/640/1193
-f 1825/640/1193 1826/643/1194 1823/642/1191
-f 1827/644/1151 1828/647/295 1825/646/1193
-f 1825/646/1193 1824/645/1192 1827/644/1151
-f 1829/648/1195 1830/651/1196 1831/650/1197
-f 1831/650/1197 1832/649/1198 1829/648/1195
-f 1829/648/1195 1833/653/1199 1834/652/1200
-f 1834/652/1200 1830/651/1196 1829/648/1195
-f 1831/655/1197 1830/654/1196 1824/641/1192
-f 1824/641/1192 1823/642/1191 1831/655/1197
-f 1834/656/1200 1827/644/1151 1824/645/1192
-f 1824/645/1192 1830/657/1196 1834/656/1200
-f 1835/658/1201 1836/661/1202 1837/660/1203
-f 1837/660/1203 1832/659/1198 1835/658/1201
-f 1832/662/1198 1837/665/1203 1838/664/1204
-f 1838/664/1204 1829/663/1195 1832/662/1198
-f 1839/668/1205 1840/667/1206 1841/666/1207
-f 1841/666/1207 1842/669/1208 1839/668/1205
-f 1843/670/1166 1844/673/93 1796/672/93
-f 1796/672/93 1795/671/1167 1843/670/1166
-f 1835/674/1201 1845/677/1209 1799/676/1210
-f 1799/676/1210 1798/675/1211 1835/674/1201
-f 1845/678/1209 1843/670/1166 1795/671/1167
-f 1795/671/1167 1799/679/1210 1845/678/1209
-f 1833/680/1199 1846/683/1212 1802/682/1213
-f 1802/682/1213 1801/681/1214 1833/680/1199
-f 1804/684/1151 1805/685/295 1828/647/295
-f 1828/647/295 1827/644/1151 1804/684/1151
-f 1801/686/1214 1806/687/1215 1834/652/1200
-f 1834/652/1200 1833/653/1199 1801/686/1214
-f 1806/688/1215 1804/684/1151 1827/644/1151
-f 1827/644/1151 1834/656/1200 1806/688/1215
-f 1798/689/1211 1807/690/1216 1836/661/1202
-f 1836/661/1202 1835/658/1201 1798/689/1211
-f 1847/668/1217 1848/667/1218 1849/666/1219
-f 1849/666/1219 1850/669/1220 1847/668/1217
-f 1843/670/1166 1823/692/1191 1826/691/1194
-f 1826/691/1194 1844/673/93 1843/670/1166
-f 1832/649/1198 1831/650/1197 1845/677/1209
-f 1845/677/1209 1835/674/1201 1832/649/1198
-f 1845/678/1209 1831/693/1197 1823/692/1191
-f 1823/692/1191 1843/670/1166 1845/678/1209
-f 1833/680/1199 1829/695/1195 1838/694/1204
-f 1838/694/1204 1846/683/1212 1833/680/1199
-f 1851/696/1221 1836/699/1202 1807/698/1216
-f 1807/698/1216 1852/697/1222 1851/696/1221
-f 1852/697/1222 1807/698/1216 1814/700/1223
-f 1853/701/1224 1838/704/1204 1837/703/1203
-f 1837/703/1203 1854/702/1225 1853/701/1224
-f 1855/705/1226 1846/706/1212 1838/704/1204
-f 1838/704/1204 1853/701/1224 1855/705/1226
-f 1856/707/1227 1836/699/1202 1857/708/1228
-f 1841/709/1207 1851/712/1221 1852/711/1222
-f 1852/711/1222 1842/710/1208 1841/709/1207
-f 1841/709/1207 1840/714/1206 1858/713/1229
-f 1858/713/1229 1851/712/1221 1841/709/1207
-f 1840/714/1206 1839/716/1205 1859/715/1230
-f 1859/715/1230 1858/713/1229 1840/714/1206
-f 1842/717/1208 1852/718/1222 1859/715/1230
-f 1859/715/1230 1839/716/1205 1842/717/1208
-f 1849/713/1219 1854/714/1225 1856/716/1227
-f 1856/716/1227 1850/715/1220 1849/713/1219
-f 1849/713/1219 1848/712/1218 1853/709/1224
-f 1853/709/1224 1854/714/1225 1849/713/1219
-f 1848/712/1218 1847/711/1217 1855/710/1226
-f 1855/710/1226 1853/709/1224 1848/712/1218
-f 1850/715/1220 1856/716/1227 1855/717/1226
-f 1855/717/1226 1847/718/1217 1850/715/1220
-f 1860/719/1231 1855/705/1226 1856/707/1227
-f 1856/707/1227 1857/708/1228 1860/719/1231
-f 1858/720/1229 1860/719/1231 1857/708/1228
-f 1857/708/1228 1851/696/1221 1858/720/1229
-f 1814/700/1223 1802/722/1213 1859/721/1230
-f 1859/721/1230 1852/697/1222 1814/700/1223
-f 1858/720/1229 1846/706/1212 1860/719/1231
-f 1854/702/1225 1837/703/1203 1836/699/1202
-f 1836/699/1202 1856/707/1227 1854/702/1225
-f 1851/696/1221 1857/708/1228 1836/699/1202
-f 1859/721/1230 1802/722/1213 1846/706/1212
-f 1846/706/1212 1858/720/1229 1859/721/1230
-f 1855/705/1226 1860/719/1231 1846/706/1212
-f 1861/723/1232 1862/724/1233 1863/725/1234
-f 1862/726/1233 1864/727/1235 1863/728/1234
-f 1864/727/1235 1865/729/1236 1863/728/1234
-f 1865/729/1236 1866/730/1237 1863/728/1234
-f 1866/730/1237 1867/731/1238 1863/728/1234
-f 1867/732/1238 1868/733/1239 1863/725/1234
-f 1868/733/1239 1869/734/1240 1863/725/1234
-f 1869/734/1240 1861/723/1232 1863/725/1234
-f 1870/735/1241 1862/724/1233 1861/723/1232
-f 1861/723/1232 1871/736/1242 1870/735/1241
-f 1872/737/1243 1865/729/1236 1864/727/1235
-f 1864/727/1235 1873/738/1244 1872/737/1243
-f 1874/739/1245 1866/730/1237 1865/729/1236
-f 1865/729/1236 1872/737/1243 1874/739/1245
-f 1875/740/1246 1867/731/1238 1866/730/1237
-f 1866/730/1237 1874/739/1245 1875/740/1246
-f 1876/741/424 1868/733/1239 1867/732/1238
-f 1867/732/1238 1875/742/1246 1876/741/424
-f 1877/743/1247 1869/734/1240 1868/733/1239
-f 1868/733/1239 1876/741/424 1877/743/1247
-f 1871/736/1242 1861/723/1232 1869/734/1240
-f 1869/734/1240 1877/743/1247 1871/736/1242
-f 1878/744/1248 1870/735/1241 1871/736/1242
-f 1871/736/1242 1879/745/1249 1878/744/1248
-f 1880/746/1250 1872/737/1243 1873/738/1244
-f 1873/738/1244 1881/747/1251 1880/746/1250
-f 1882/748/1252 1874/739/1245 1872/737/1243
-f 1872/737/1243 1880/746/1250 1882/748/1252
-f 1883/749/1253 1875/740/1246 1874/739/1245
-f 1874/739/1245 1882/748/1252 1883/749/1253
-f 1884/750/1254 1876/741/424 1875/742/1246
-f 1875/742/1246 1883/751/1253 1884/750/1254
-f 1885/752/1255 1877/743/1247 1876/741/424
-f 1876/741/424 1884/750/1254 1885/752/1255
-f 1879/745/1249 1871/736/1242 1877/743/1247
-f 1877/743/1247 1885/752/1255 1879/745/1249
-f 1878/744/1248 1879/745/1249 1886/753/1256
-f 1881/747/1251 1878/754/1248 1886/755/1256
-f 1880/746/1250 1881/747/1251 1886/755/1256
-f 1882/748/1252 1880/746/1250 1886/755/1256
-f 1883/749/1253 1882/748/1252 1886/755/1256
-f 1884/750/1254 1883/751/1253 1886/753/1256
-f 1885/752/1255 1884/750/1254 1886/753/1256
-f 1879/745/1249 1885/752/1255 1886/753/1256
-f 1887/723/1232 1888/724/1233 1889/725/1234
-f 1888/726/1233 1890/727/1235 1889/728/1234
-f 1890/727/1235 1891/729/1236 1889/728/1234
-f 1891/729/1236 1892/730/1237 1889/728/1234
-f 1892/730/1237 1893/731/1238 1889/728/1234
-f 1893/732/1238 1894/733/1239 1889/725/1234
-f 1894/733/1239 1895/734/1240 1889/725/1234
-f 1895/734/1240 1887/723/1232 1889/725/1234
-f 1896/735/1241 1888/724/1233 1887/723/1232
-f 1887/723/1232 1897/736/1242 1896/735/1241
-f 1898/737/1243 1891/729/1236 1890/727/1235
-f 1890/727/1235 1899/738/1244 1898/737/1243
-f 1900/739/1245 1892/730/1237 1891/729/1236
-f 1891/729/1236 1898/737/1243 1900/739/1245
-f 1901/740/1246 1893/731/1238 1892/730/1237
-f 1892/730/1237 1900/739/1245 1901/740/1246
-f 1902/741/424 1894/733/1239 1893/732/1238
-f 1893/732/1238 1901/742/1246 1902/741/424
-f 1903/743/1247 1895/734/1240 1894/733/1239
-f 1894/733/1239 1902/741/424 1903/743/1247
-f 1897/736/1242 1887/723/1232 1895/734/1240
-f 1895/734/1240 1903/743/1247 1897/736/1242
-f 1904/744/1248 1896/735/1241 1897/736/1242
-f 1897/736/1242 1905/745/1249 1904/744/1248
-f 1906/746/1250 1898/737/1243 1899/738/1244
-f 1899/738/1244 1907/747/1251 1906/746/1250
-f 1908/748/1252 1900/739/1245 1898/737/1243
-f 1898/737/1243 1906/746/1250 1908/748/1252
-f 1909/749/1253 1901/740/1246 1900/739/1245
-f 1900/739/1245 1908/748/1252 1909/749/1253
-f 1910/750/1254 1902/741/424 1901/742/1246
-f 1901/742/1246 1909/751/1253 1910/750/1254
-f 1911/752/1255 1903/743/1247 1902/741/424
-f 1902/741/424 1910/750/1254 1911/752/1255
-f 1905/745/1249 1897/736/1242 1903/743/1247
-f 1903/743/1247 1911/752/1255 1905/745/1249
-f 1904/744/1248 1905/745/1249 1912/753/1256
-f 1907/747/1251 1904/754/1248 1912/755/1256
-f 1906/746/1250 1907/747/1251 1912/755/1256
-f 1908/748/1252 1906/746/1250 1912/755/1256
-f 1909/749/1253 1908/748/1252 1912/755/1256
-f 1910/750/1254 1909/751/1253 1912/753/1256
-f 1911/752/1255 1910/750/1254 1912/753/1256
-f 1905/745/1249 1911/752/1255 1912/753/1256
-f 1913/723/1232 1914/724/1233 1915/725/1234
-f 1914/726/1233 1916/727/1235 1915/728/1234
-f 1916/727/1235 1917/729/1236 1915/728/1234
-f 1917/729/1236 1918/730/1237 1915/728/1234
-f 1918/730/1237 1919/731/1238 1915/728/1234
-f 1919/732/1238 1920/733/1239 1915/725/1234
-f 1920/733/1239 1921/734/1240 1915/725/1234
-f 1921/734/1240 1913/723/1232 1915/725/1234
-f 1922/735/1241 1914/724/1233 1913/723/1232
-f 1913/723/1232 1923/736/1242 1922/735/1241
-f 1924/737/1243 1917/729/1236 1916/727/1235
-f 1916/727/1235 1925/738/1244 1924/737/1243
-f 1926/739/1245 1918/730/1237 1917/729/1236
-f 1917/729/1236 1924/737/1243 1926/739/1245
-f 1927/740/1246 1919/731/1238 1918/730/1237
-f 1918/730/1237 1926/739/1245 1927/740/1246
-f 1928/741/424 1920/733/1239 1919/732/1238
-f 1919/732/1238 1927/742/1246 1928/741/424
-f 1929/743/1247 1921/734/1240 1920/733/1239
-f 1920/733/1239 1928/741/424 1929/743/1247
-f 1923/736/1242 1913/723/1232 1921/734/1240
-f 1921/734/1240 1929/743/1247 1923/736/1242
-f 1930/744/1248 1922/735/1241 1923/736/1242
-f 1923/736/1242 1931/745/1249 1930/744/1248
-f 1932/746/1250 1924/737/1243 1925/738/1244
-f 1925/738/1244 1933/747/1251 1932/746/1250
-f 1934/748/1252 1926/739/1245 1924/737/1243
-f 1924/737/1243 1932/746/1250 1934/748/1252
-f 1935/749/1253 1927/740/1246 1926/739/1245
-f 1926/739/1245 1934/748/1252 1935/749/1253
-f 1936/750/1254 1928/741/424 1927/742/1246
-f 1927/742/1246 1935/751/1253 1936/750/1254
-f 1937/752/1255 1929/743/1247 1928/741/424
-f 1928/741/424 1936/750/1254 1937/752/1255
-f 1931/745/1249 1923/736/1242 1929/743/1247
-f 1929/743/1247 1937/752/1255 1931/745/1249
-f 1930/744/1248 1931/745/1249 1938/753/1256
-f 1933/747/1251 1930/754/1248 1938/755/1256
-f 1932/746/1250 1933/747/1251 1938/755/1256
-f 1934/748/1252 1932/746/1250 1938/755/1256
-f 1935/749/1253 1934/748/1252 1938/755/1256
-f 1936/750/1254 1935/751/1253 1938/753/1256
-f 1937/752/1255 1936/750/1254 1938/753/1256
-f 1931/745/1249 1937/752/1255 1938/753/1256
-f 1939/756/1257 1940/757/1258 1941/758/1259
-f 1940/757/1258 1942/759/1260 1941/758/1259
-f 1942/759/1260 1943/760/1261 1941/758/1259
-f 1943/760/1261 1944/761/1262 1941/758/1259
-f 1944/761/1262 1945/762/1263 1941/758/1259
-f 1945/762/1263 1946/763/1264 1941/758/1259
-f 1946/763/1264 1947/764/1265 1941/758/1259
-f 1947/764/1265 1939/756/1257 1941/758/1259
-f 1948/765/1266 1940/766/1258 1939/767/1257
-f 1939/767/1257 1949/768/1267 1948/765/1266
-f 1950/769/1268 1942/770/1260 1940/766/1258
-f 1940/766/1258 1948/765/1266 1950/769/1268
-f 1951/771/1269 1943/772/1261 1942/770/1260
-f 1942/770/1260 1950/769/1268 1951/771/1269
-f 1952/773/1270 1944/774/1262 1943/772/1261
-f 1943/772/1261 1951/771/1269 1952/773/1270
-f 1953/775/1271 1945/776/1263 1944/774/1262
-f 1944/774/1262 1952/773/1270 1953/775/1271
-f 1954/777/1272 1946/778/1264 1945/779/1263
-f 1945/779/1263 1953/780/1271 1954/777/1272
-f 1955/781/1273 1947/782/1265 1946/778/1264
-f 1946/778/1264 1954/777/1272 1955/781/1273
-f 1949/768/1267 1939/767/1257 1947/782/1265
-f 1947/782/1265 1955/781/1273 1949/768/1267
-f 1950/783/1268 1948/784/1266 1951/785/1269
-f 1954/786/1272 1953/787/1271 1955/788/1273
-f 1953/787/1271 1952/789/1270 1949/790/1267
-f 1949/790/1267 1955/788/1273 1953/787/1271
-f 1952/789/1270 1951/785/1269 1948/784/1266
-f 1948/784/1266 1949/790/1267 1952/789/1270
-f 1956/791/1274 1957/792/1275 1958/793/1276
-f 1958/793/1276 1959/794/1277 1956/791/1274
-f 1960/795/1278 1961/796/1279 1956/791/1274
-f 1956/791/1274 1959/794/1277 1960/795/1278
-f 1962/797/1280 1963/798/1281 1961/796/1279
-f 1961/796/1279 1960/795/1278 1962/797/1280
-f 1957/792/1275 1963/799/1281 1962/800/1280
-f 1962/800/1280 1958/793/1276 1957/792/1275
-f 1964/801/1282 1957/792/1275 1956/791/1274
-f 1956/791/1274 1965/802/1283 1964/801/1282
-f 1966/803/1284 1965/802/1283 1956/791/1274
-f 1956/791/1274 1961/796/1279 1966/803/1284
-f 1967/804/1285 1966/803/1284 1961/796/1279
-f 1961/796/1279 1963/798/1281 1967/804/1285
-f 1967/805/1285 1963/799/1281 1957/792/1275
-f 1957/792/1275 1964/801/1282 1967/805/1285
-f 1968/806/1286 1969/807/1287 1970/808/1288
-f 1970/808/1288 1971/809/1289 1968/806/1286
-f 1972/810/1290 1973/811/1291 1968/806/1286
-f 1968/806/1286 1971/809/1289 1972/810/1290
-f 1974/812/1292 1975/813/1293 1973/814/1291
-f 1973/814/1291 1972/815/1290 1974/812/1292
-f 1969/807/1287 1975/813/1293 1974/812/1292
-f 1974/812/1292 1970/808/1288 1969/807/1287
-f 1976/816/1294 1969/807/1287 1968/806/1286
-f 1968/806/1286 1977/817/1295 1976/816/1294
-f 1978/818/1296 1977/817/1295 1968/806/1286
-f 1968/806/1286 1973/811/1291 1978/818/1296
-f 1979/819/1297 1978/820/1296 1973/814/1291
-f 1973/814/1291 1975/813/1293 1979/819/1297
-f 1979/819/1297 1975/813/1293 1969/807/1287
-f 1969/807/1287 1976/816/1294 1979/819/1297
-f 1980/791/1298 1981/794/1299 1982/793/1300
-f 1982/793/1300 1983/792/1301 1980/791/1298
-f 1980/791/1298 1984/796/1302 1985/795/1303
-f 1985/795/1303 1981/794/1299 1980/791/1298
-f 1984/796/1302 1986/798/1304 1987/797/1305
-f 1987/797/1305 1985/795/1303 1984/796/1302
-f 1983/792/1301 1982/793/1300 1987/800/1305
-f 1987/800/1305 1986/799/1304 1983/792/1301
-f 1988/801/1306 1989/802/1307 1980/791/1298
-f 1980/791/1298 1983/792/1301 1988/801/1306
-f 1980/791/1298 1989/802/1307 1990/803/1308
-f 1990/803/1308 1984/796/1302 1980/791/1298
-f 1984/796/1302 1990/803/1308 1991/804/1309
-f 1991/804/1309 1986/798/1304 1984/796/1302
-f 1991/805/1309 1988/801/1306 1983/792/1301
-f 1983/792/1301 1986/799/1304 1991/805/1309
-f 1992/640/1310 1993/641/1311 1994/642/1312
-f 1994/642/1312 1995/643/1313 1992/640/1310
-f 1996/644/1314 1993/645/1311 1992/646/1310
-f 1992/646/1310 1997/647/1315 1996/644/1314
-f 1998/648/1316 1999/649/1317 2000/650/1318
-f 2000/650/1318 2001/651/1319 1998/648/1316
-f 2002/652/1320 2003/653/1321 1998/648/1316
-f 1998/648/1316 2001/651/1319 2002/652/1320
-f 1993/641/1311 2001/654/1319 2000/655/1318
-f 2000/655/1318 1994/642/1312 1993/641/1311
-f 2002/656/1320 2001/657/1319 1993/645/1311
-f 1993/645/1311 1996/644/1314 2002/656/1320
-f 2004/658/1322 1999/659/1317 2005/660/1323
-f 2005/660/1323 2006/661/1324 2004/658/1322
-f 1999/662/1317 1998/663/1316 2007/664/1325
-f 2007/664/1325 2005/665/1323 1999/662/1317
-f 2008/666/1326 2009/667/1327 2010/668/1328
-f 2010/668/1328 2011/669/1329 2008/666/1326
-f 2012/670/1330 2013/671/1331 2014/672/1332
-f 2014/672/1332 2015/673/431 2012/670/1330
-f 2004/674/1322 2016/675/1333 2017/676/1334
-f 2017/676/1334 2018/677/1335 2004/674/1322
-f 2018/678/1335 2017/679/1334 2013/671/1331
-f 2013/671/1331 2012/670/1330 2018/678/1335
-f 2003/680/1321 2019/681/1336 2020/682/1337
-f 2020/682/1337 2021/683/1338 2003/680/1321
-f 2022/684/1339 1996/644/1314 1997/647/1315
-f 1997/647/1315 2023/685/1315 2022/684/1339
-f 2019/686/1336 2003/653/1321 2002/652/1320
-f 2002/652/1320 2024/687/1340 2019/686/1336
-f 2024/688/1340 2002/656/1320 1996/644/1314
-f 1996/644/1314 2022/684/1339 2024/688/1340
-f 2016/689/1333 2004/658/1322 2006/661/1324
-f 2006/661/1324 2025/690/1341 2016/689/1333
-f 2026/666/1342 2027/667/1343 2028/668/1344
-f 2028/668/1344 2029/669/1345 2026/666/1342
-f 1995/691/1313 1994/692/1312 2012/670/1330
-f 2012/670/1330 2015/673/431 1995/691/1313
-f 1999/649/1317 2004/674/1322 2018/677/1335
-f 2018/677/1335 2000/650/1318 1999/649/1317
-f 1994/692/1312 2000/693/1318 2018/678/1335
-f 2018/678/1335 2012/670/1330 1994/692/1312
-f 2007/694/1325 1998/695/1316 2003/680/1321
-f 2003/680/1321 2021/683/1338 2007/694/1325
-f 2030/696/1346 2031/697/1347 2025/698/1341
-f 2025/698/1341 2006/699/1324 2030/696/1346
-f 2025/698/1341 2031/697/1347 2032/700/1348
-f 2033/701/1349 2034/702/1350 2005/703/1323
-f 2005/703/1323 2007/704/1325 2033/701/1349
-f 2035/705/1351 2033/701/1349 2007/704/1325
-f 2007/704/1325 2021/706/1338 2035/705/1351
-f 2006/699/1324 2036/707/1352 2037/708/1353
-f 2008/709/1326 2011/710/1329 2031/711/1347
-f 2031/711/1347 2030/712/1346 2008/709/1326
-f 2038/713/1354 2009/714/1327 2008/709/1326
-f 2008/709/1326 2030/712/1346 2038/713/1354
-f 2039/715/1355 2010/716/1328 2009/714/1327
-f 2009/714/1327 2038/713/1354 2039/715/1355
-f 2011/717/1329 2010/716/1328 2039/715/1355
-f 2039/715/1355 2031/718/1347 2011/717/1329
-f 2026/713/1342 2029/715/1345 2036/716/1352
-f 2036/716/1352 2034/714/1350 2026/713/1342
-f 2033/709/1349 2027/712/1343 2026/713/1342
-f 2026/713/1342 2034/714/1350 2033/709/1349
-f 2035/710/1351 2028/711/1344 2027/712/1343
-f 2027/712/1343 2033/709/1349 2035/710/1351
-f 2029/715/1345 2028/718/1344 2035/717/1351
-f 2035/717/1351 2036/716/1352 2029/715/1345
-f 2040/719/1356 2037/708/1353 2036/707/1352
-f 2036/707/1352 2035/705/1351 2040/719/1356
-f 2038/720/1354 2030/696/1346 2037/708/1353
-f 2037/708/1353 2040/719/1356 2038/720/1354
-f 2039/721/1355 2020/722/1337 2032/700/1348
-f 2032/700/1348 2031/697/1347 2039/721/1355
-f 2021/706/1338 2038/720/1354 2040/719/1356
-f 2034/702/1350 2036/707/1352 2006/699/1324
-f 2006/699/1324 2005/703/1323 2034/702/1350
-f 2037/708/1353 2030/696/1346 2006/699/1324
-f 2039/721/1355 2038/720/1354 2021/706/1338
-f 2021/706/1338 2020/722/1337 2039/721/1355
-f 2040/719/1356 2035/705/1351 2021/706/1338
-f 2041/642/1357 2042/641/1358 2043/640/1359
-f 2043/640/1359 2044/643/1360 2041/642/1357
-f 2045/644/1361 2046/647/1315 2043/646/1359
-f 2043/646/1359 2042/645/1358 2045/644/1361
-f 2047/648/1362 2048/651/1363 2049/650/1364
-f 2049/650/1364 2050/649/1365 2047/648/1362
-f 2047/648/1362 2051/653/1366 2052/652/1367
-f 2052/652/1367 2048/651/1363 2047/648/1362
-f 2049/655/1364 2048/654/1363 2042/641/1358
-f 2042/641/1358 2041/642/1357 2049/655/1364
-f 2052/656/1367 2045/644/1361 2042/645/1358
-f 2042/645/1358 2048/657/1363 2052/656/1367
-f 2053/658/1368 2054/661/1369 2055/660/1370
-f 2055/660/1370 2050/659/1365 2053/658/1368
-f 2050/662/1365 2055/665/1370 2056/664/1371
-f 2056/664/1371 2047/663/1362 2050/662/1365
-f 2057/668/1372 2058/667/1373 2059/666/1374
-f 2059/666/1374 2060/669/1375 2057/668/1372
-f 2061/670/1376 2062/673/431 2014/672/431
-f 2014/672/431 2013/671/1377 2061/670/1376
-f 2053/674/1368 2063/677/1378 2017/676/1379
-f 2017/676/1379 2016/675/1380 2053/674/1368
-f 2063/678/1378 2061/670/1376 2013/671/1377
-f 2013/671/1377 2017/679/1379 2063/678/1378
-f 2051/680/1366 2064/683/1381 2020/682/1382
-f 2020/682/1382 2019/681/1383 2051/680/1366
-f 2022/684/1384 2023/685/1315 2046/647/1315
-f 2046/647/1315 2045/644/1361 2022/684/1384
-f 2019/686/1383 2024/687/1385 2052/652/1367
-f 2052/652/1367 2051/653/1366 2019/686/1383
-f 2024/688/1385 2022/684/1384 2045/644/1361
-f 2045/644/1361 2052/656/1367 2024/688/1385
-f 2016/689/1380 2025/690/1386 2054/661/1369
-f 2054/661/1369 2053/658/1368 2016/689/1380
-f 2065/668/1387 2066/667/1388 2067/666/1389
-f 2067/666/1389 2068/669/1390 2065/668/1387
-f 2061/670/1376 2041/692/1357 2044/691/1360
-f 2044/691/1360 2062/673/431 2061/670/1376
-f 2050/649/1365 2049/650/1364 2063/677/1378
-f 2063/677/1378 2053/674/1368 2050/649/1365
-f 2063/678/1378 2049/693/1364 2041/692/1357
-f 2041/692/1357 2061/670/1376 2063/678/1378
-f 2051/680/1366 2047/695/1362 2056/694/1371
-f 2056/694/1371 2064/683/1381 2051/680/1366
-f 2069/696/1391 2054/699/1369 2025/698/1386
-f 2025/698/1386 2070/697/1392 2069/696/1391
-f 2070/697/1392 2025/698/1386 2032/700/1393
-f 2071/701/1394 2056/704/1371 2055/703/1370
-f 2055/703/1370 2072/702/1395 2071/701/1394
-f 2073/705/1396 2064/706/1381 2056/704/1371
-f 2056/704/1371 2071/701/1394 2073/705/1396
-f 2074/707/1397 2054/699/1369 2075/708/1398
-f 2059/709/1374 2069/712/1391 2070/711/1392
-f 2070/711/1392 2060/710/1375 2059/709/1374
-f 2059/709/1374 2058/714/1373 2076/713/1399
-f 2076/713/1399 2069/712/1391 2059/709/1374
-f 2058/714/1373 2057/716/1372 2077/715/1400
-f 2077/715/1400 2076/713/1399 2058/714/1373
-f 2060/717/1375 2070/718/1392 2077/715/1400
-f 2077/715/1400 2057/716/1372 2060/717/1375
-f 2067/713/1389 2072/714/1395 2074/716/1397
-f 2074/716/1397 2068/715/1390 2067/713/1389
-f 2067/713/1389 2066/712/1388 2071/709/1394
-f 2071/709/1394 2072/714/1395 2067/713/1389
-f 2066/712/1388 2065/711/1387 2073/710/1396
-f 2073/710/1396 2071/709/1394 2066/712/1388
-f 2068/715/1390 2074/716/1397 2073/717/1396
-f 2073/717/1396 2065/718/1387 2068/715/1390
-f 2078/719/1401 2073/705/1396 2074/707/1397
-f 2074/707/1397 2075/708/1398 2078/719/1401
-f 2076/720/1399 2078/719/1401 2075/708/1398
-f 2075/708/1398 2069/696/1391 2076/720/1399
-f 2032/700/1393 2020/722/1382 2077/721/1400
-f 2077/721/1400 2070/697/1392 2032/700/1393
-f 2076/720/1399 2064/706/1381 2078/719/1401
-f 2072/702/1395 2055/703/1370 2054/699/1369
-f 2054/699/1369 2074/707/1397 2072/702/1395
-f 2069/696/1391 2075/708/1398 2054/699/1369
-f 2077/721/1400 2020/722/1382 2064/706/1381
-f 2064/706/1381 2076/720/1399 2077/721/1400
-f 2073/705/1396 2078/719/1401 2064/706/1381
-f 2079/791/1402 2080/792/1403 2081/793/1404
-f 2081/793/1404 2082/794/1405 2079/791/1402
-f 2083/795/1406 2084/796/1407 2079/791/1402
-f 2079/791/1402 2082/794/1405 2083/795/1406
-f 2085/797/1408 2086/798/1409 2084/796/1407
-f 2084/796/1407 2083/795/1406 2085/797/1408
-f 2080/792/1403 2086/799/1409 2085/800/1408
-f 2085/800/1408 2081/793/1404 2080/792/1403
-f 2087/801/1410 2080/792/1403 2079/791/1402
-f 2079/791/1402 2088/802/1411 2087/801/1410
-f 2089/803/1412 2088/802/1411 2079/791/1402
-f 2079/791/1402 2084/796/1407 2089/803/1412
-f 2090/804/1413 2089/803/1412 2084/796/1407
-f 2084/796/1407 2086/798/1409 2090/804/1413
-f 2090/805/1413 2086/799/1409 2080/792/1403
-f 2080/792/1403 2087/801/1410 2090/805/1413
-f 2091/791/1414 2092/794/1415 2093/793/1416
-f 2093/793/1416 2094/792/1279 2091/791/1414
-f 2091/791/1414 2095/796/1417 2096/795/1418
-f 2096/795/1418 2092/794/1415 2091/791/1414
-f 2095/796/1417 2097/798/1419 2098/797/1420
-f 2098/797/1420 2096/795/1418 2095/796/1417
-f 2094/792/1279 2093/793/1416 2098/800/1420
-f 2098/800/1420 2097/799/1419 2094/792/1279
-f 2099/801/1421 2100/802/1422 2091/791/1414
-f 2091/791/1414 2094/792/1279 2099/801/1421
-f 2091/791/1414 2100/802/1422 2101/803/1423
-f 2101/803/1423 2095/796/1417 2091/791/1414
-f 2095/796/1417 2101/803/1423 2102/804/1424
-f 2102/804/1424 2097/798/1419 2095/796/1417
-f 2102/805/1424 2099/801/1421 2094/792/1279
-f 2094/792/1279 2097/799/1419 2102/805/1424
-f 2103/806/1425 2104/807/1426 2105/808/1427
-f 2105/808/1427 2106/809/1428 2103/806/1425
-f 2107/810/1429 2108/811/1430 2103/806/1425
-f 2103/806/1425 2106/809/1428 2107/810/1429
-f 2109/812/1431 2110/813/1432 2108/814/1430
-f 2108/814/1430 2107/815/1429 2109/812/1431
-f 2104/807/1426 2110/813/1432 2109/812/1431
-f 2109/812/1431 2105/808/1427 2104/807/1426
-f 2111/816/1433 2104/807/1426 2103/806/1425
-f 2103/806/1425 2112/817/1434 2111/816/1433
-f 2113/818/1435 2112/817/1434 2103/806/1425
-f 2103/806/1425 2108/811/1430 2113/818/1435
-f 2114/819/1436 2113/820/1435 2108/814/1430
-f 2108/814/1430 2110/813/1432 2114/819/1436
-f 2114/819/1436 2110/813/1432 2104/807/1426
-f 2104/807/1426 2111/816/1433 2114/819/1436
-# 2914 faces
-
diff --git a/examples/web/models/resources/models/market_diffuse.png b/examples/web/models/resources/models/market_diffuse.png
deleted file mode 100644
index 3ad3046..0000000
--- a/examples/web/models/resources/models/market_diffuse.png
+++ /dev/null
Binary files differ
diff --git a/examples/web/models/resources/models/turret.obj b/examples/web/models/resources/models/turret.obj
deleted file mode 100644
index bf7caac..0000000
--- a/examples/web/models/resources/models/turret.obj
+++ /dev/null
@@ -1,1888 +0,0 @@
-# (c) 2018 Medieval Assets Pack by Alberto Cano
-# Licensed as Creative Commons Attribution-NonCommercial 4.0
-
-#
-# object turret
-#
-
-v 0.0000 13.3010 3.5973
-v 0.0000 12.1596 2.3386
-v 2.5639 12.1596 2.3386
-v 3.4913 13.3010 3.5973
-v 3.5203 14.0462 3.0738
-v 3.9444 14.0450 3.1421
-v 3.9444 14.0369 -0.0000
-v 3.4351 14.0369 -0.0000
-v 3.4352 14.0462 2.9719
-v 3.3643 13.3303 2.9127
-v 0.0000 13.3303 2.9127
-v 0.0000 13.3010 2.9740
-v 3.4352 13.3010 2.9740
-v 0.0000 14.0462 2.9719
-v 3.9444 13.2918 -0.0000
-v 3.9444 13.2998 3.1441
-v 3.4913 14.0462 3.5952
-v 3.3643 13.3303 -0.0000
-v 0.0000 13.3303 -0.0000
-v 0.0000 14.0462 3.5952
-v 2.5639 12.1504 -0.0000
-v 3.4352 13.2918 -0.0000
-v 3.5237 14.9316 3.0740
-v 3.9478 14.9305 3.1422
-v 3.4947 14.9316 3.5953
-v 3.5271 16.4764 1.4274
-v 3.9512 16.4752 1.4274
-v 3.9512 15.9080 2.0774
-v 3.5271 15.9092 2.0092
-v 1.8327 16.4815 3.5953
-v 1.8617 16.4815 3.0742
-v 2.5117 15.9086 3.0742
-v 2.4725 15.9086 3.5953
-v 3.9512 16.4757 3.1424
-v 3.4981 16.4769 3.5955
-v 3.5271 16.4769 3.0742
-v 2.5639 12.1596 -2.3386
-v 0.0000 12.1596 -2.3386
-v 0.0000 13.3010 -3.5973
-v 3.4913 13.3010 -3.5973
-v 3.5203 14.0462 -3.0738
-v 3.4351 14.0462 -2.9720
-v 3.9444 14.0450 -3.1421
-v 0.0000 13.3010 -2.9740
-v 0.0000 13.3303 -2.9127
-v 3.3643 13.3303 -2.9127
-v 3.4352 13.3010 -2.9740
-v 0.0000 14.0462 -2.9719
-v 3.9444 13.2998 -3.1441
-v 3.4913 14.0462 -3.5952
-v 0.0000 14.0462 -3.5952
-v 3.9478 14.9305 -3.1422
-v 3.5237 14.9316 -3.0740
-v 3.4947 14.9316 -3.5953
-v 3.9512 15.9080 -2.0774
-v 3.9512 16.4752 -1.4274
-v 3.5271 16.4764 -1.4274
-v 3.5271 15.9092 -2.0092
-v 2.5117 15.9086 -3.0742
-v 1.8617 16.4815 -3.0742
-v 1.8327 16.4815 -3.5954
-v 2.4725 15.9086 -3.5953
-v 3.4981 16.4769 -3.5955
-v 3.9512 16.4757 -3.1424
-v 3.5271 16.4769 -3.0742
-v -2.5639 12.1596 2.3386
-v -3.4913 13.3010 3.5973
-v -3.5203 14.0462 3.0738
-v -3.4351 14.0462 2.9720
-v -3.4351 14.0369 0.0000
-v -3.9444 14.0369 0.0000
-v -3.9444 14.0450 3.1421
-v -3.3643 13.3303 2.9127
-v -3.4351 13.3010 2.9740
-v -3.9444 13.2918 0.0000
-v -3.9444 13.2998 3.1441
-v -3.4913 14.0462 3.5952
-v -3.3643 13.3303 0.0000
-v -2.5639 12.1504 0.0000
-v -3.4351 13.2918 0.0000
-v -3.9478 14.9305 3.1422
-v -3.5237 14.9316 3.0740
-v -3.4947 14.9316 3.5954
-v -3.9512 15.9080 2.0774
-v -3.9512 16.4752 1.4274
-v -3.5271 16.4764 1.4274
-v -3.5271 15.9092 2.0092
-v -2.5117 15.9086 3.0742
-v -1.8617 16.4815 3.0742
-v -1.8327 16.4815 3.5954
-v -2.4725 15.9086 3.5953
-v -3.4981 16.4769 3.5955
-v -3.9512 16.4757 3.1424
-v -3.5271 16.4769 3.0742
-v -2.5639 12.1596 -2.3386
-v -3.4913 13.3010 -3.5972
-v -3.5203 14.0462 -3.0738
-v -3.9444 14.0450 -3.1421
-v -3.4351 14.0462 -2.9719
-v -3.3643 13.3303 -2.9127
-v -3.4351 13.3010 -2.9740
-v -3.9444 13.2998 -3.1441
-v -3.4913 14.0462 -3.5952
-v -3.5237 14.9316 -3.0740
-v -3.9478 14.9305 -3.1422
-v -3.4947 14.9316 -3.5953
-v -3.5271 16.4764 -1.4274
-v -3.9512 16.4752 -1.4274
-v -3.9512 15.9080 -2.0774
-v -3.5271 15.9092 -2.0092
-v -1.8327 16.4815 -3.5953
-v -1.8617 16.4815 -3.0742
-v -2.5117 15.9086 -3.0742
-v -2.4725 15.9086 -3.5953
-v -3.9512 16.4757 -3.1424
-v -3.4981 16.4769 -3.5955
-v -3.5271 16.4769 -3.0742
-v 0.1550 14.0277 -3.1544
-v 0.1550 14.0277 -3.5335
-v 0.1550 16.9018 -3.5335
-v 0.1550 16.9018 -3.1544
-v -0.5341 14.0277 -3.5335
-v -0.5341 16.9018 -3.5335
-v -0.5341 14.0277 -3.1544
-v -0.5341 16.9018 -3.1544
-v -3.5170 14.0277 -0.3456
-v -3.8961 14.0277 -0.3456
-v -3.8961 16.9018 -0.3456
-v -3.5170 16.9018 -0.3456
-v -3.8961 14.0277 0.3435
-v -3.8961 16.9018 0.3435
-v -3.5170 14.0277 0.3435
-v -3.5170 16.9018 0.3435
-v -0.3446 14.0277 3.1662
-v -0.3446 14.0277 3.5453
-v -0.3446 16.9018 3.5453
-v -0.3446 16.9018 3.1662
-v 0.3445 14.0277 3.5453
-v 0.3445 16.9018 3.5453
-v 0.3445 14.0277 3.1662
-v 0.3445 16.9018 3.1662
-v 3.5160 14.0277 0.3435
-v 3.8951 14.0277 0.3435
-v 3.8951 16.9018 0.3435
-v 3.5160 16.9018 0.3435
-v 3.8951 14.0277 -0.3456
-v 3.8951 16.9018 -0.3456
-v 3.5160 14.0277 -0.3456
-v 3.5160 16.9018 -0.3456
-v 0.0000 8.6187 2.3766
-v 0.4715 8.6467 2.3766
-v 0.4598 9.7167 2.3896
-v -0.0117 10.0591 2.3896
-v 0.8403 8.5183 2.4160
-v 0.8403 8.5183 2.3077
-v 0.8403 8.6724 2.3077
-v 0.8403 8.6724 2.4160
-v 0.7068 9.8138 2.4290
-v 0.7068 9.8138 2.3207
-v -0.0117 10.3117 2.3207
-v -0.0117 10.3117 2.4290
-v -0.8403 8.6724 2.4160
-v -0.8403 8.6724 2.3077
-v -0.8403 8.5183 2.3077
-v -0.8403 8.5183 2.4160
-v -0.7186 8.5183 2.4160
-v -0.7186 8.5183 2.3077
-v -0.0000 8.4646 2.3077
-v -0.0000 8.4646 2.4160
-v 0.7185 8.5183 2.5347
-v 0.7185 8.6724 2.5347
-v 0.4715 8.6467 2.5347
-v 0.4598 9.7167 2.4290
-v -0.0117 10.0591 2.4290
-v -0.7186 8.6724 2.5347
-v -0.7186 8.5183 2.5347
-v -0.4715 8.6567 2.5347
-v -0.0000 8.4646 2.5347
-v -0.0000 8.6187 2.5347
-v -0.4833 9.7167 2.3896
-v -0.4715 8.6567 2.3766
-v -0.7303 9.8138 2.3207
-v -0.7302 9.8138 2.4290
-v 0.7185 8.5183 2.3077
-v 0.7185 8.5183 2.4160
-v -0.4832 9.7167 2.4290
-v 0.4715 8.6467 2.4160
-v -0.4716 8.6567 2.4160
-v -0.0000 8.6187 2.4160
-v -0.7186 8.6724 2.4160
-v -0.7186 8.6724 2.3077
-v 0.7185 8.6724 2.4160
-v 0.7185 8.6724 2.3077
-v 0.8403 8.5183 2.5347
-v 0.8403 8.6724 2.5347
-v -0.8403 8.6724 2.5347
-v -0.8403 8.5183 2.5347
-v 2.6080 8.6187 -0.0010
-v 2.6080 8.6467 -0.4725
-v 2.6210 9.7167 -0.4608
-v 2.6210 10.0591 0.0107
-v 2.6474 8.5183 -0.8413
-v 2.5392 8.5183 -0.8413
-v 2.5392 8.6724 -0.8413
-v 2.6474 8.6724 -0.8413
-v 2.6604 9.8138 -0.7079
-v 2.5522 9.8138 -0.7078
-v 2.5522 10.3117 0.0107
-v 2.6604 10.3117 0.0107
-v 2.6474 8.6724 0.8393
-v 2.5392 8.6724 0.8393
-v 2.5392 8.5183 0.8393
-v 2.6474 8.5183 0.8393
-v 2.6474 8.5183 0.7175
-v 2.5392 8.5183 0.7175
-v 2.5392 8.4646 -0.0010
-v 2.6474 8.4646 -0.0010
-v 2.7661 8.5183 -0.7195
-v 2.7661 8.6724 -0.7195
-v 2.7661 8.6467 -0.4725
-v 2.6604 9.7167 -0.4609
-v 2.6604 10.0591 0.0107
-v 2.7661 8.6724 0.7175
-v 2.7661 8.5183 0.7175
-v 2.7661 8.6567 0.4705
-v 2.7661 8.4646 -0.0010
-v 2.7661 8.6187 -0.0010
-v 2.6210 9.7167 0.4822
-v 2.6080 8.6567 0.4705
-v 2.5522 9.8138 0.7292
-v 2.6604 9.8138 0.7292
-v 2.5392 8.5183 -0.7196
-v 2.6474 8.5183 -0.7195
-v 2.6604 9.7167 0.4822
-v 2.6474 8.6467 -0.4725
-v 2.6474 8.6567 0.4705
-v 2.6474 8.6187 -0.0010
-v 2.6474 8.6724 0.7175
-v 2.5392 8.6724 0.7175
-v 2.6474 8.6724 -0.7195
-v 2.5392 8.6724 -0.7196
-v 2.7661 8.5183 -0.8413
-v 2.7661 8.6724 -0.8413
-v 2.7661 8.6724 0.8393
-v 2.7661 8.5183 0.8393
-v -2.6159 8.6187 -0.0010
-v -2.6159 8.6467 0.4705
-v -2.6289 9.7167 0.4588
-v -2.6289 10.0591 -0.0127
-v -2.6553 8.5183 0.8393
-v -2.5470 8.5183 0.8393
-v -2.5470 8.6724 0.8393
-v -2.6553 8.6724 0.8393
-v -2.6683 9.8138 0.7058
-v -2.5600 9.8138 0.7058
-v -2.5600 10.3117 -0.0127
-v -2.6683 10.3117 -0.0127
-v -2.6553 8.6724 -0.8413
-v -2.5470 8.6724 -0.8413
-v -2.5470 8.5183 -0.8413
-v -2.6553 8.5183 -0.8413
-v -2.6553 8.5183 -0.7195
-v -2.5470 8.5183 -0.7195
-v -2.5470 8.4646 -0.0010
-v -2.6553 8.4646 -0.0010
-v -2.7740 8.5183 0.7175
-v -2.7740 8.6724 0.7175
-v -2.7740 8.6467 0.4705
-v -2.6683 9.7167 0.4589
-v -2.6683 10.0591 -0.0127
-v -2.7740 8.6724 -0.7195
-v -2.7740 8.5183 -0.7195
-v -2.7740 8.6567 -0.4725
-v -2.7740 8.4646 -0.0010
-v -2.7740 8.6187 -0.0010
-v -2.6289 9.7167 -0.4843
-v -2.6159 8.6567 -0.4725
-v -2.5600 9.8138 -0.7312
-v -2.6683 9.8138 -0.7312
-v -2.5470 8.5183 0.7175
-v -2.6553 8.5183 0.7175
-v -2.6683 9.7167 -0.4842
-v -2.6553 8.6467 0.4705
-v -2.6553 8.6567 -0.4725
-v -2.6553 8.6187 -0.0010
-v -2.6553 8.6724 -0.7195
-v -2.5470 8.6724 -0.7195
-v -2.6553 8.6724 0.7175
-v -2.5470 8.6724 0.7175
-v -2.7740 8.5183 0.8393
-v -2.7740 8.6724 0.8393
-v -2.7740 8.6724 -0.8413
-v -2.7740 8.5183 -0.8413
-v -2.5639 0.0000 -2.3386
-v -2.5639 0.0000 2.3365
-v -2.5639 12.1411 2.3365
-v 2.5639 -0.0000 2.3365
-v 2.5639 12.1411 2.3365
-v 2.5639 -0.0000 -2.3386
-v -3.3222 12.8680 -0.0010
-v -3.3222 12.8680 -2.9994
-v -3.3222 11.9932 -2.9994
-v -3.3222 11.8321 -0.0010
-v -0.0000 12.8680 2.9974
-v -3.3222 12.8680 2.9974
-v -3.3222 11.9932 2.9974
-v -0.0000 11.8320 2.9974
-v 3.3221 12.8680 -0.0010
-v 3.3221 12.8680 2.9974
-v 3.3221 11.9932 2.9974
-v 3.3221 11.8320 -0.0010
-v -0.0000 12.8680 -2.9994
-v 3.3221 12.8680 -2.9994
-v 3.3221 11.9932 -2.9994
-v -0.0000 11.8320 -2.9994
-v -2.5639 11.9932 -2.3386
-v -0.0000 11.8320 -2.3386
-v 2.5639 11.9932 -2.3386
-v 2.5639 11.8321 -0.0010
-v 2.5639 11.9932 2.3365
-v -0.0000 11.8321 2.3365
-v -2.5639 11.9932 2.3365
-v -2.5639 11.8321 -0.0010
-v -2.5639 12.8680 -2.3386
-v -2.5639 12.8680 -0.0010
-v -2.5639 12.8680 2.3365
-v -0.0000 12.8680 2.3365
-v 2.5639 12.8680 2.3365
-v 2.5639 12.8680 -0.0010
-v 2.5639 12.8680 -2.3386
-v -0.0000 12.8680 -2.3386
-v -3.3222 6.6605 -0.0010
-v -3.3222 6.6605 -2.9994
-v -3.3222 5.7858 -2.9994
-v -3.3222 5.6246 -0.0010
-v -0.0000 6.6605 2.9974
-v -3.3222 6.6605 2.9974
-v -3.3222 5.7858 2.9974
-v -0.0000 5.6246 2.9974
-v 3.3221 6.6605 -0.0010
-v 3.3221 6.6605 2.9974
-v 3.3221 5.7858 2.9974
-v 3.3221 5.6246 -0.0010
-v -0.0000 6.6605 -2.9994
-v 3.3221 6.6605 -2.9994
-v 3.3221 5.7858 -2.9994
-v -0.0000 5.6246 -2.9994
-v -2.5639 5.7858 -2.3386
-v -0.0000 5.6246 -2.3386
-v 2.5639 5.7858 -2.3386
-v 2.5639 5.6246 -0.0010
-v 2.5639 5.7858 2.3365
-v -0.0000 5.6246 2.3365
-v -2.5639 5.7858 2.3365
-v -2.5639 5.6246 -0.0010
-v -2.5639 6.6605 -2.3386
-v -2.5639 6.6605 -0.0010
-v -2.5639 6.6605 2.3365
-v -0.0000 6.6605 2.3365
-v 2.5639 6.6605 2.3365
-v 2.5639 6.6605 -0.0010
-v 2.5639 6.6605 -2.3386
-v -0.0000 6.6605 -2.3386
-v -2.6103 9.3882 2.4561
-v -2.6767 9.3882 1.9558
-v -2.9138 6.4859 1.8341
-v -2.9138 6.4859 2.7406
-v -2.9138 12.2904 1.8341
-v -2.9138 12.2904 2.7406
-v -1.9967 6.4859 2.7406
-v -2.0923 9.3882 2.4561
-v -1.9967 11.6821 2.7406
-v -1.9967 6.4859 1.8341
-v -2.1587 9.3882 1.9558
-v -1.9967 11.6821 1.8341
-v -2.6103 9.4353 -2.4582
-v -2.9138 6.5331 -2.7426
-v -2.9138 6.5331 -1.8362
-v -2.6767 9.4353 -1.9578
-v -2.9138 12.3375 -1.8362
-v -2.9138 12.3375 -2.7426
-v -2.0923 9.4353 -2.4581
-v -1.9967 6.5331 -2.7426
-v -1.9967 11.7293 -2.7426
-v -2.1587 9.4353 -1.9578
-v -1.9967 6.5331 -1.8362
-v -1.9967 11.7293 -1.8362
-v -2.6103 2.9022 -2.4582
-v -2.9138 0.0000 -2.7426
-v -2.9138 0.0000 -1.8362
-v -2.6767 2.9022 -1.9578
-v -2.9138 5.8044 -1.8362
-v -2.9138 5.8044 -2.7426
-v -2.0923 2.9022 -2.4581
-v -1.9967 0.0000 -2.7426
-v -1.9967 6.4231 -2.7426
-v -2.1587 2.9022 -1.9578
-v -1.9967 0.0000 -1.8362
-v -1.9967 6.4231 -1.8362
-v 2.6103 9.4517 2.4561
-v 2.9138 6.5495 2.7406
-v 2.9138 6.5495 1.8341
-v 2.6767 9.4517 1.9558
-v 2.9138 12.3539 1.8341
-v 2.9138 12.3539 2.7406
-v 2.0923 9.4517 2.4561
-v 1.9967 6.5495 2.7406
-v 1.9967 11.7456 2.7406
-v 2.1587 9.4517 1.9558
-v 1.9967 6.5495 1.8341
-v 1.9967 11.7456 1.8341
-v 2.6103 2.9022 -2.4581
-v 2.6767 2.9022 -1.9578
-v 2.9138 -0.0000 -1.8362
-v 2.9138 -0.0000 -2.7426
-v 2.9138 5.8044 -1.8362
-v 2.9138 5.8044 -2.7426
-v 1.9967 -0.0000 -2.7426
-v 2.0923 2.9022 -2.4581
-v 1.9967 6.4231 -2.7426
-v 1.9967 -0.0000 -1.8362
-v 2.1587 2.9022 -1.9578
-v 1.9967 6.4231 -1.8362
-v 2.6103 9.4353 -2.4582
-v 2.6767 9.4353 -1.9578
-v 2.9138 6.5331 -1.8362
-v 2.9138 6.5331 -2.7427
-v 2.9138 12.3375 -1.8362
-v 2.9138 12.3375 -2.7427
-v 1.9967 6.5331 -2.7427
-v 2.0923 9.4353 -2.4581
-v 1.9967 11.7293 -2.7427
-v 1.9967 6.5331 -1.8362
-v 2.1587 9.4353 -1.9578
-v 1.9967 11.7293 -1.8362
-v 2.6103 2.9022 2.4561
-v 2.9138 -0.0000 2.7406
-v 2.9138 -0.0000 1.8341
-v 2.6767 2.9022 1.9558
-v 2.9138 5.8044 1.8341
-v 2.9138 5.8044 2.7406
-v 2.0923 2.9022 2.4561
-v 1.9967 -0.0000 2.7406
-v 1.9967 6.4231 2.7406
-v 2.1587 2.9022 1.9558
-v 1.9967 -0.0000 1.8341
-v 1.9967 6.4231 1.8341
-v -2.6103 2.9022 2.4561
-v -2.6767 2.9022 1.9558
-v -2.9138 0.0000 1.8341
-v -2.9138 0.0000 2.7406
-v -2.9138 5.8044 1.8341
-v -2.9138 5.8044 2.7406
-v -1.9967 0.0000 2.7406
-v -2.0923 2.9022 2.4561
-v -1.9967 6.4231 2.7406
-v -1.9967 0.0000 1.8341
-v -2.1587 2.9022 1.9558
-v -1.9967 6.4231 1.8341
-v -1.5453 5.6703 -3.5469
-v -1.5453 7.5835 -3.4309
-v -0.7727 7.5835 -3.4309
-v -0.7727 4.7854 -3.5469
-v -1.5453 9.4968 -3.2987
-v -0.7727 9.4968 -3.2987
-v -1.5453 11.4101 -3.3804
-v -0.7727 11.4101 -3.3804
-v -1.5453 13.3234 -3.5469
-v -0.7727 13.3234 -3.5469
-v -0.0000 7.5835 -3.4309
-v -0.0000 4.2830 -3.5469
-v -0.0000 9.4968 -3.2987
-v -0.0000 11.4101 -3.3804
-v -0.0000 13.3234 -3.5469
-v 0.7726 7.5835 -3.4309
-v 0.7726 4.7854 -3.5469
-v 0.7726 9.4968 -3.2987
-v 0.7726 11.4101 -3.3804
-v 0.7726 13.3234 -3.5469
-v 1.5453 7.5835 -3.4309
-v 1.5453 5.6702 -3.5469
-v 1.5453 9.4968 -3.2987
-v 1.5453 11.4101 -3.3804
-v 1.5453 13.3234 -3.5469
-v 0.0000 23.5750 -0.0000
-v -4.1897 16.4768 -3.9339
-v -4.1897 16.4768 3.9339
-v 4.1897 16.4768 3.9339
-v 4.1897 16.4768 -3.9339
-v -1.2971 3.7738 -2.1572
-v -1.2971 3.7738 -2.6666
-v -1.7173 3.6544 -2.6666
-v -1.7173 3.6544 -2.1572
-v -1.2971 -0.0000 -2.6666
-v -1.2971 3.3171 -2.6666
-v -1.2971 3.3171 -2.4156
-v -1.2971 -0.0000 -2.4156
-v -1.7173 -0.0000 -2.6666
-v -1.7173 3.3171 -2.6666
-v -1.7173 -0.0000 -2.1572
-v -1.7173 3.3171 -2.1572
-v 1.2970 3.7738 -2.6666
-v 1.2970 3.7738 -2.1572
-v 1.7173 3.6544 -2.1572
-v 1.7173 3.6544 -2.6666
-v 1.2970 -0.0000 -2.4156
-v 1.2970 3.3171 -2.4156
-v 1.2970 3.3171 -2.6666
-v 1.2970 -0.0000 -2.6666
-v 1.7173 -0.0000 -2.6666
-v 1.7173 3.3171 -2.6666
-v 1.7173 3.3171 -2.1572
-v 1.7173 -0.0000 -2.1572
-v -0.0000 4.3176 -2.6666
-v -0.0000 4.3176 -2.1572
-v -0.0000 3.7437 -2.6666
-v -0.0000 3.7437 -2.4156
-v -0.0000 -0.0000 -2.4156
-# 518 vertices
-
-vn 0.0000 -0.7408 0.6718
-vn 0.0016 1.0000 -0.0028
-vn -0.0000 0.9024 0.4309
-vn 0.0000 -0.0028 -1.0000
-vn 1.0000 0.0000 -0.0000
-vn 0.4189 -0.8046 0.4210
-vn 0.7071 0.0020 0.7071
-vn -0.0000 1.0000 -0.0000
-vn 0.0000 0.0028 1.0000
-vn 0.6366 -0.7712 0.0024
-vn 0.4322 0.9018 -0.0014
-vn -1.0000 -0.0000 0.0000
-vn 0.1589 -0.0004 -0.9873
-vn -0.9985 0.0039 -0.0555
-vn 0.7071 -0.0029 0.7071
-vn 0.0524 -0.7346 -0.6765
-vn -0.6635 -0.7469 -0.0434
-vn 0.7071 -0.0016 0.7071
-vn -1.0000 0.0014 -0.0007
-vn 1.0000 -0.0014 0.0007
-vn 0.1062 -0.7327 -0.6723
-vn -0.0001 -0.0001 1.0000
-vn -0.0000 0.0001 -1.0000
-vn -0.6920 -0.7204 -0.0452
-vn 0.0000 -0.7408 -0.6718
-vn 0.0016 1.0000 0.0028
-vn -0.0000 0.9024 -0.4309
-vn 0.0000 -0.0028 1.0000
-vn 0.4189 -0.8046 -0.4210
-vn 0.7071 0.0020 -0.7071
-vn -0.0000 1.0000 0.0000
-vn -0.0000 0.0028 -1.0000
-vn 0.6366 -0.7712 -0.0024
-vn 0.4322 0.9018 0.0014
-vn 0.1589 -0.0004 0.9873
-vn -0.9985 0.0039 0.0555
-vn 0.7071 -0.0029 -0.7071
-vn 0.0524 -0.7346 0.6765
-vn -0.6635 -0.7469 0.0434
-vn 0.7071 -0.0016 -0.7071
-vn -1.0000 0.0014 0.0007
-vn 1.0000 -0.0014 -0.0007
-vn 0.1062 -0.7327 0.6723
-vn -0.0001 -0.0001 -1.0000
-vn -0.0000 0.0001 1.0000
-vn -0.6920 -0.7204 0.0452
-vn -0.0000 -0.7408 0.6718
-vn -0.0016 1.0000 -0.0028
-vn 0.0000 0.9024 0.4309
-vn -0.0000 -0.0028 -1.0000
-vn -1.0000 0.0000 0.0000
-vn -0.4189 -0.8046 0.4210
-vn -0.7071 0.0020 0.7071
-vn 0.0000 1.0000 -0.0000
-vn -0.6366 -0.7712 0.0024
-vn -0.4322 0.9018 -0.0014
-vn -0.4321 0.9018 -0.0014
-vn 1.0000 -0.0000 -0.0000
-vn -0.1589 -0.0004 -0.9873
-vn 0.9985 0.0039 -0.0555
-vn -0.7071 -0.0029 0.7071
-vn -0.0524 -0.7346 -0.6765
-vn 0.6635 -0.7469 -0.0434
-vn -0.7071 -0.0016 0.7071
-vn 1.0000 0.0014 -0.0007
-vn -1.0000 -0.0014 0.0007
-vn -0.1062 -0.7327 -0.6723
-vn 0.0001 -0.0001 1.0000
-vn 0.0000 0.0001 -1.0000
-vn 0.6920 -0.7204 -0.0452
-vn -0.0000 -0.7408 -0.6718
-vn -0.0016 1.0000 0.0028
-vn 0.0000 0.9024 -0.4309
-vn -0.0000 -0.0028 1.0000
-vn -0.4189 -0.8046 -0.4210
-vn -0.7071 0.0020 -0.7071
-vn 0.0000 1.0000 0.0000
-vn -0.6366 -0.7712 -0.0024
-vn -0.4321 0.9018 0.0014
-vn -0.4322 0.9018 0.0014
-vn -0.1589 -0.0004 0.9873
-vn 0.9985 0.0039 0.0555
-vn -0.7071 -0.0029 -0.7071
-vn -0.0524 -0.7346 0.6765
-vn 0.6635 -0.7469 0.0434
-vn -0.7071 -0.0016 -0.7071
-vn 1.0000 0.0014 0.0007
-vn -1.0000 -0.0014 -0.0007
-vn -0.1062 -0.7327 0.6723
-vn 0.0001 -0.0001 -1.0000
-vn 0.0000 0.0001 1.0000
-vn 0.6920 -0.7204 0.0452
-vn -0.0000 0.0000 -1.0000
-vn 0.0000 0.0000 1.0000
-vn -0.0035 -0.0104 0.9999
-vn 1.0000 -0.0000 -0.0002
-vn 0.5696 0.8219 -0.0001
-vn -0.0745 -0.9972 0.0000
-vn -0.0000 -0.0000 1.0000
-vn -0.0000 0.0000 1.0000
-vn 0.0033 -0.0104 0.9999
-vn -0.5696 0.8219 0.0001
-vn 0.0745 -0.9972 0.0000
-vn 0.0000 -0.0000 1.0000
-vn -0.9999 -0.0109 0.0008
-vn -0.5875 -0.8092 0.0009
-vn 0.5875 -0.8092 -0.0008
-vn 0.9999 0.0111 -0.0004
-vn 0.0803 0.9968 0.0001
-vn -0.0593 0.9982 -0.0000
-vn -0.0027 -0.0118 0.9999
-vn -0.9999 -0.0102 0.0001
-vn 0.9999 0.0103 -0.0002
-vn 0.0029 -0.0117 0.9999
-vn 1.0000 -0.0000 0.0001
-vn -0.1034 0.9946 0.0000
-vn -0.0593 0.9982 0.0000
-vn 0.0803 0.9968 -0.0000
-vn 0.0634 0.9980 -0.0000
-vn -1.0000 0.0000 0.0001
-vn -0.0000 -1.0000 0.0000
-vn 0.0000 -1.0000 0.0000
-vn 0.0000 -1.0000 -0.0000
-vn -0.0001 0.0000 1.0000
-vn 0.9999 -0.0104 0.0035
-vn -0.0001 0.0000 -1.0000
-vn -0.0001 0.8219 -0.5696
-vn -0.0000 -0.9972 0.0745
-vn 1.0000 -0.0000 0.0000
-vn 0.9999 -0.0104 -0.0034
-vn 0.0001 0.8219 0.5696
-vn 0.0000 -0.9972 -0.0745
-vn 0.0008 -0.0109 0.9999
-vn 0.0008 -0.8092 0.5875
-vn -0.0008 -0.8092 -0.5875
-vn -0.0004 0.0111 -0.9999
-vn 0.0000 0.9968 -0.0803
-vn -0.0000 0.9982 0.0593
-vn 0.9999 -0.0118 0.0027
-vn 0.0001 -0.0102 0.9999
-vn -0.0002 0.0103 -0.9999
-vn 0.9999 -0.0117 -0.0029
-vn 0.0001 -0.0000 -1.0000
-vn 0.0000 0.9946 0.1034
-vn 0.0000 0.9982 0.0593
-vn 0.0000 0.9968 -0.0804
-vn 0.0000 0.9980 -0.0634
-vn 0.0001 -0.0000 1.0000
-vn -0.0000 -0.9972 -0.0745
-vn -0.0000 -1.0000 -0.0000
-vn -0.9999 -0.0104 -0.0035
-vn 0.0002 -0.0000 1.0000
-vn -1.0000 0.0000 -0.0000
-vn -0.9999 -0.0104 0.0033
-vn -0.0008 -0.0109 -0.9999
-vn -0.0009 -0.8092 -0.5875
-vn 0.0007 -0.8092 0.5875
-vn 0.0004 0.0111 0.9999
-vn -0.0001 0.9968 0.0803
-vn 0.0000 0.9982 -0.0593
-vn -0.9999 -0.0118 -0.0027
-vn -0.0001 -0.0102 -0.9999
-vn 0.0002 0.0103 0.9999
-vn -0.9999 -0.0117 0.0029
-vn -0.0001 -0.0000 1.0000
-vn 0.0000 0.9946 -0.1034
-vn 0.0000 0.9968 0.0803
-vn 0.0000 0.9980 0.0634
-vn -1.0000 0.0000 -0.0001
-vn 0.0000 -0.0000 -1.0000
-vn -0.0547 -0.9980 0.0314
-vn -0.0263 -0.9978 -0.0603
-vn 0.0547 -0.9980 -0.0314
-vn 0.0263 -0.9978 0.0603
-vn 0.0547 -0.9980 0.0314
-vn -0.0263 -0.9978 0.0603
-vn -0.0547 -0.9980 -0.0314
-vn 0.0263 -0.9978 -0.0603
-vn -0.9945 0.0939 0.0469
-vn -0.9945 -0.0939 0.0469
-vn 0.0000 0.0976 0.9952
-vn -0.0469 -0.1106 0.9928
-vn 0.9980 0.0430 -0.0471
-vn 0.9974 -0.0543 -0.0471
-vn -0.0000 0.0419 -0.9991
-vn -0.0199 -0.0471 -0.9987
-vn -0.9945 0.0939 -0.0469
-vn -0.9945 -0.0939 -0.0469
-vn 0.0000 0.0976 -0.9952
-vn -0.0469 -0.1106 -0.9928
-vn 0.9980 0.0430 0.0471
-vn 0.9974 -0.0543 0.0471
-vn 0.0000 0.0419 0.9991
-vn -0.0199 -0.0471 0.9987
-vn 0.0375 -0.0870 -0.9955
-vn 0.9983 -0.0354 0.0471
-vn 0.0162 -0.0377 0.9992
-vn 0.9945 0.0939 0.0469
-vn 0.9945 -0.0939 0.0469
-vn -0.0000 0.0976 0.9952
-vn 0.0469 -0.1106 0.9928
-vn -0.9980 0.0430 -0.0471
-vn -0.9974 -0.0543 -0.0471
-vn 0.0199 -0.0471 -0.9987
-vn 0.9945 0.0939 -0.0469
-vn 0.9945 -0.0939 -0.0469
-vn -0.0000 0.0976 -0.9952
-vn -0.0375 -0.0870 -0.9955
-vn -0.9980 0.0430 0.0471
-vn -0.9983 -0.0354 0.0471
-vn -0.0162 -0.0377 0.9992
-vn 0.0469 -0.1106 -0.9928
-vn -0.9974 -0.0543 0.0471
-vn 0.0199 -0.0471 0.9987
-vn -0.0375 -0.0870 0.9955
-vn -0.9983 -0.0354 -0.0471
-vn -0.0162 -0.0377 -0.9992
-vn 0.0375 -0.0870 0.9955
-vn 0.9983 -0.0354 -0.0471
-vn 0.0162 -0.0377 -0.9992
-vn 0.0281 0.0492 -0.9984
-vn 0.0141 0.0591 -0.9982
-vn 0.0101 0.0563 -0.9984
-vn 0.0163 0.0408 -0.9990
-vn -0.0000 0.0132 -0.9999
-vn -0.0000 -0.0647 -0.9979
-vn -0.0000 -0.0867 -0.9962
-vn -0.0000 0.0535 -0.9986
-vn -0.0000 0.0380 -0.9993
-vn -0.0101 0.0563 -0.9984
-vn -0.0163 0.0408 -0.9990
-vn -0.0141 0.0591 -0.9982
-vn -0.0281 0.0492 -0.9984
-vn -0.8612 0.5083 0.0000
-vn 0.0000 0.4847 0.8747
-vn 0.8612 0.5083 -0.0000
-vn -0.0000 0.4847 -0.8747
-vn -0.2731 0.9620 0.0000
-vn 0.2731 0.9620 0.0000
-vn 0.3867 0.9222 0.0000
-vn -0.0000 -0.0000 -1.0000
-vn 0.3124 -0.9499 -0.0000
-vn -0.3867 0.9222 0.0000
-vn -0.3124 -0.9499 0.0000
-# 244 vertex normals
-
-vt 0.4672 0.7287 0.0000
-vt 0.4672 0.6812 0.0000
-vt 0.5381 0.6812 0.0000
-vt 0.5637 0.7287 0.0000
-vt 0.4511 0.6743 0.0000
-vt 0.4498 0.6669 0.0000
-vt 0.5101 0.6669 0.0000
-vt 0.5101 0.6758 0.0000
-vt 0.4531 0.6758 0.0000
-vt 0.6996 0.8663 0.0000
-vt 0.6083 0.8663 0.0000
-vt 0.6083 0.8881 0.0000
-vt 0.6996 0.8881 0.0000
-vt 0.6083 0.9203 0.0000
-vt 0.6996 0.9203 0.0000
-vt 0.6348 0.6259 0.0000
-vt 0.6348 0.6557 0.0000
-vt 0.5033 0.6557 0.0000
-vt 0.5033 0.6259 0.0000
-vt 0.4860 0.7374 0.0000
-vt 0.4587 0.8045 0.0000
-vt 0.4433 0.8046 0.0000
-vt 0.7663 0.6259 0.0000
-vt 0.7905 0.6258 0.0000
-vt 0.7905 0.6557 0.0000
-vt 0.7664 0.6557 0.0000
-vt 0.5578 0.5104 0.0000
-vt 0.6319 0.5104 0.0000
-vt 0.6319 0.6024 0.0000
-vt 0.5578 0.6024 0.0000
-vt 0.4411 0.6748 0.0000
-vt 0.4531 0.7357 0.0000
-vt 0.4411 0.7357 0.0000
-vt 0.5654 0.8042 0.0000
-vt 0.5654 0.7371 0.0000
-vt 0.5169 0.8663 0.0000
-vt 0.5169 0.8881 0.0000
-vt 0.5169 0.9203 0.0000
-vt 0.7344 0.2540 0.0000
-vt 0.7344 0.2807 0.0000
-vt 0.7215 0.2807 0.0000
-vt 0.7215 0.2540 0.0000
-vt 0.7532 0.2524 0.0000
-vt 0.7532 0.2800 0.0000
-vt 0.7370 0.2800 0.0000
-vt 0.7370 0.2524 0.0000
-vt 0.8440 0.5063 0.0000
-vt 0.8440 0.5248 0.0000
-vt 0.8307 0.5248 0.0000
-vt 0.8307 0.5063 0.0000
-vt 0.7344 0.3486 0.0000
-vt 0.7215 0.3486 0.0000
-vt 0.7215 0.3237 0.0000
-vt 0.7344 0.3237 0.0000
-vt 0.7532 0.3506 0.0000
-vt 0.7370 0.3506 0.0000
-vt 0.7370 0.3238 0.0000
-vt 0.7532 0.3238 0.0000
-vt 0.8440 0.5570 0.0000
-vt 0.8307 0.5570 0.0000
-vt 0.8364 0.5997 0.0000
-vt 0.7950 0.5997 0.0000
-vt 0.8096 0.5854 0.0000
-vt 0.8364 0.5608 0.0000
-vt 0.8663 0.5452 0.0000
-vt 0.8798 0.5570 0.0000
-vt 0.8093 0.5451 0.0000
-vt 0.7959 0.5570 0.0000
-vt 0.8620 0.5854 0.0000
-vt 0.8784 0.5997 0.0000
-vt 0.6756 0.2660 0.0000
-vt 0.6505 0.2660 0.0000
-vt 0.6505 0.4622 0.0000
-vt 0.6756 0.4622 0.0000
-vt 0.6058 0.3002 0.0000
-vt 0.6440 0.3002 0.0000
-vt 0.6440 0.4741 0.0000
-vt 0.6058 0.4741 0.0000
-vt 0.6280 0.0055 0.0000
-vt 0.6545 0.0069 0.0000
-vt 0.6548 0.0671 0.0000
-vt 0.6284 0.0865 0.0000
-vt 0.6000 0.2239 0.0000
-vt 0.6163 0.2239 0.0000
-vt 0.6163 0.2472 0.0000
-vt 0.6000 0.2472 0.0000
-vt 0.6822 0.1033 0.0000
-vt 0.6903 0.1033 0.0000
-vt 0.6903 0.1767 0.0000
-vt 0.6822 0.1767 0.0000
-vt 0.5852 0.2472 0.0000
-vt 0.5852 0.2239 0.0000
-vt 0.6098 0.1405 0.0000
-vt 0.6145 0.1405 0.0000
-vt 0.6140 0.1724 0.0000
-vt 0.6093 0.1724 0.0000
-vt 0.6552 0.1246 0.0000
-vt 0.6681 0.1246 0.0000
-vt 0.6659 0.1454 0.0000
-vt 0.6571 0.0825 0.0000
-vt 0.6723 0.0885 0.0000
-vt 0.6279 0.1193 0.0000
-vt 0.6279 0.1037 0.0000
-vt 0.6681 0.2453 0.0000
-vt 0.6552 0.2453 0.0000
-vt 0.6668 0.2246 0.0000
-vt 0.6507 0.1850 0.0000
-vt 0.6636 0.1850 0.0000
-vt 0.6018 0.0674 0.0000
-vt 0.6015 0.0077 0.0000
-vt 0.6903 0.2501 0.0000
-vt 0.6822 0.2501 0.0000
-vt 0.6135 0.2044 0.0000
-vt 0.6089 0.2043 0.0000
-vt 0.5834 0.0885 0.0000
-vt 0.5987 0.0825 0.0000
-vt 0.6955 0.1208 0.0000
-vt 0.6955 0.0105 0.0000
-vt 0.7028 0.0105 0.0000
-vt 0.7028 0.1208 0.0000
-vt 0.7028 0.1808 0.0000
-vt 0.6955 0.1808 0.0000
-vt 0.7028 0.2409 0.0000
-vt 0.6955 0.2409 0.0000
-vt 0.7028 0.3501 0.0000
-vt 0.6955 0.3501 0.0000
-vt 0.6375 0.2580 0.0000
-vt 0.6331 0.2581 0.0000
-vt 0.6322 0.2120 0.0000
-vt 0.6366 0.2119 0.0000
-vt 0.6312 0.1659 0.0000
-vt 0.6356 0.1658 0.0000
-vt 0.5834 0.0179 0.0000
-vt 0.5987 0.0169 0.0000
-vt 0.6903 0.3459 0.0000
-vt 0.6822 0.3459 0.0000
-vt 0.6822 0.0075 0.0000
-vt 0.6903 0.0075 0.0000
-vt 0.6571 0.0163 0.0000
-vt 0.6723 0.0179 0.0000
-vt 0.6242 0.1418 0.0000
-vt 0.6307 0.1417 0.0000
-vt 0.6247 0.1661 0.0000
-vt 0.6256 0.2121 0.0000
-vt 0.6265 0.2583 0.0000
-vt 0.6335 0.2823 0.0000
-vt 0.6270 0.2824 0.0000
-vt 0.6047 0.1405 0.0000
-vt 0.6042 0.1724 0.0000
-vt 0.6038 0.2043 0.0000
-vt 0.6365 0.1297 0.0000
-vt 0.6367 0.1416 0.0000
-vt 0.6305 0.1298 0.0000
-vt 0.6240 0.1300 0.0000
-vt 0.6681 0.1144 0.0000
-vt 0.6552 0.1144 0.0000
-vt 0.6037 0.2097 0.0000
-vt 0.6088 0.2097 0.0000
-vt 0.6135 0.2098 0.0000
-vt 0.6145 0.1351 0.0000
-vt 0.6099 0.1351 0.0000
-vt 0.6048 0.1351 0.0000
-vt 0.6552 0.2555 0.0000
-vt 0.6681 0.2555 0.0000
-vt 0.6272 0.2943 0.0000
-vt 0.6337 0.2942 0.0000
-vt 0.6395 0.2822 0.0000
-vt 0.6397 0.2940 0.0000
-vt 0.1601 0.2593 0.0000
-vt 0.1601 0.0045 0.0000
-vt 0.2454 0.0045 0.0000
-vt 0.2454 0.2590 0.0000
-vt 0.2838 0.5470 0.0000
-vt 0.2838 0.2690 0.0000
-vt 0.1765 0.2690 0.0000
-vt 0.1765 0.5470 0.0000
-vt 0.1150 0.3564 0.0000
-vt 0.1150 0.0538 0.0000
-vt 0.0116 0.0538 0.0000
-vt 0.0116 0.3569 0.0000
-vt 0.0100 0.6667 0.0000
-vt 0.0100 0.3673 0.0000
-vt 0.1291 0.3673 0.0000
-vt 0.1291 0.6667 0.0000
-vt 0.9942 0.1083 0.0000
-vt 0.9942 0.2099 0.0000
-vt 0.9659 0.2099 0.0000
-vt 0.9607 0.1083 0.0000
-vt 0.9942 0.0068 0.0000
-vt 0.9659 0.0068 0.0000
-vt 0.3004 0.5798 0.0000
-vt 0.2911 0.5701 0.0000
-vt 0.2911 0.6124 0.0000
-vt 0.3004 0.6124 0.0000
-vt 0.3004 0.6450 0.0000
-vt 0.2911 0.6547 0.0000
-vt 0.3334 0.6547 0.0000
-vt 0.3334 0.6450 0.0000
-vt 0.3663 0.6450 0.0000
-vt 0.3757 0.6547 0.0000
-vt 0.3757 0.6124 0.0000
-vt 0.3663 0.6124 0.0000
-vt 0.3663 0.5798 0.0000
-vt 0.3757 0.5701 0.0000
-vt 0.3334 0.5701 0.0000
-vt 0.3334 0.5798 0.0000
-vt 0.2876 0.5671 0.0000
-vt 0.2747 0.5537 0.0000
-vt 0.3334 0.5537 0.0000
-vt 0.3334 0.5671 0.0000
-vt 0.3793 0.5671 0.0000
-vt 0.3922 0.5537 0.0000
-vt 0.3922 0.6125 0.0000
-vt 0.3793 0.6125 0.0000
-vt 0.3793 0.6578 0.0000
-vt 0.3922 0.6712 0.0000
-vt 0.3334 0.6712 0.0000
-vt 0.3334 0.6578 0.0000
-vt 0.2876 0.6578 0.0000
-vt 0.2747 0.6712 0.0000
-vt 0.2747 0.6125 0.0000
-vt 0.2876 0.6125 0.0000
-vt 0.9513 0.1060 0.0000
-vt 0.9513 0.0044 0.0000
-vt 0.9230 0.0044 0.0000
-vt 0.9178 0.1060 0.0000
-vt 0.9097 0.1060 0.0000
-vt 0.9097 0.0044 0.0000
-vt 0.8814 0.0044 0.0000
-vt 0.8762 0.1060 0.0000
-vt 0.8814 0.2076 0.0000
-vt 0.9097 0.2076 0.0000
-vt 0.9230 0.2075 0.0000
-vt 0.9513 0.2075 0.0000
-vt 0.8658 0.1132 0.0000
-vt 0.8487 0.1132 0.0000
-vt 0.8445 0.0044 0.0000
-vt 0.8755 0.0044 0.0000
-vt 0.8445 0.2221 0.0000
-vt 0.8755 0.2221 0.0000
-vt 0.7801 0.1104 0.0000
-vt 0.7912 0.0058 0.0000
-vt 0.7576 0.0058 0.0000
-vt 0.7611 0.1104 0.0000
-vt 0.7912 0.2151 0.0000
-vt 0.7576 0.2374 0.0000
-vt 0.7362 0.1124 0.0000
-vt 0.7464 0.0064 0.0000
-vt 0.7139 0.0064 0.0000
-vt 0.7182 0.1124 0.0000
-vt 0.7139 0.2409 0.0000
-vt 0.7464 0.2409 0.0000
-vt 0.8231 0.1080 0.0000
-vt 0.8044 0.1080 0.0000
-vt 0.7986 0.0056 0.0000
-vt 0.8316 0.0056 0.0000
-vt 0.8316 0.2103 0.0000
-vt 0.7986 0.2321 0.0000
-vt 0.3996 0.1076 0.0000
-vt 0.3999 0.1680 0.0000
-vt 0.3755 0.1681 0.0000
-vt 0.3751 0.0799 0.0000
-vt 0.4002 0.2285 0.0000
-vt 0.3758 0.2286 0.0000
-vt 0.4005 0.2888 0.0000
-vt 0.3761 0.2890 0.0000
-vt 0.4008 0.3494 0.0000
-vt 0.3764 0.3495 0.0000
-vt 0.3512 0.1683 0.0000
-vt 0.3507 0.0641 0.0000
-vt 0.3515 0.2287 0.0000
-vt 0.3518 0.2891 0.0000
-vt 0.3521 0.3496 0.0000
-vt 0.3268 0.1684 0.0000
-vt 0.3264 0.0801 0.0000
-vt 0.3271 0.2288 0.0000
-vt 0.3274 0.2892 0.0000
-vt 0.3277 0.3497 0.0000
-vt 0.3025 0.1685 0.0000
-vt 0.3022 0.1081 0.0000
-vt 0.3028 0.2289 0.0000
-vt 0.3031 0.2893 0.0000
-vt 0.3033 0.3498 0.0000
-vt 0.1505 0.9738 0.0000
-vt 0.0042 0.6813 0.0000
-vt 0.2968 0.6813 0.0000
-vt 0.9446 0.3902 0.0000
-vt 0.9268 0.3902 0.0000
-vt 0.9268 0.3744 0.0000
-vt 0.9446 0.3744 0.0000
-vt 0.8974 0.3747 0.0000
-vt 0.8974 0.4922 0.0000
-vt 0.9065 0.4922 0.0000
-vt 0.9065 0.3747 0.0000
-vt 0.9924 0.3882 0.0000
-vt 0.9924 0.5080 0.0000
-vt 0.9766 0.5080 0.0000
-vt 0.9766 0.3882 0.0000
-vt 0.9160 0.3747 0.0000
-vt 0.9160 0.4922 0.0000
-vt 0.9924 0.5202 0.0000
-vt 0.9766 0.5245 0.0000
-vt 0.9160 0.5041 0.0000
-vt 0.8974 0.5041 0.0000
-vt 0.9268 0.4879 0.0000
-vt 0.9446 0.4879 0.0000
-vt 0.9446 0.5038 0.0000
-vt 0.9268 0.5038 0.0000
-vt 0.8789 0.3882 0.0000
-vt 0.8789 0.5080 0.0000
-vt 0.8630 0.5080 0.0000
-vt 0.8630 0.3882 0.0000
-vt 0.8789 0.5245 0.0000
-vt 0.8630 0.5202 0.0000
-vt 0.9268 0.4391 0.0000
-vt 0.9446 0.4391 0.0000
-vt 0.9277 0.5235 0.0000
-vt 0.9277 0.5442 0.0000
-vt 0.9356 0.4391 0.0000
-vt 0.9356 0.3902 0.0000
-vt 0.9356 0.4879 0.0000
-vt 0.4150 0.4926 0.0000
-vt 0.3619 0.5102 0.0000
-vt 0.3617 0.3568 0.0000
-vt 0.4148 0.3567 0.0000
-vt 0.3087 0.4928 0.0000
-vt 0.3085 0.3569 0.0000
-# 327 texture coords
-
-o turret
-g turret
-f 1/1/1 2/2/1 3/3/1
-f 3/3/1 4/4/1 1/1/1
-f 5/5/2 6/6/2 7/7/2
-f 5/5/2 7/7/2 8/8/2
-f 5/5/2 8/8/2 9/9/2
-f 10/10/3 11/11/3 12/12/3
-f 12/12/3 13/13/3 10/10/3
-f 12/12/4 14/14/4 9/15/4
-f 9/15/4 13/13/4 12/12/4
-f 15/16/5 7/17/5 6/18/5
-f 6/18/5 16/19/5 15/16/5
-f 3/20/6 16/21/6 4/22/6
-f 4/23/7 16/24/7 6/25/7
-f 6/25/7 17/26/7 4/23/7
-f 10/27/8 18/28/8 19/29/8
-f 19/29/8 11/30/8 10/27/8
-f 17/31/8 5/5/8 9/9/8
-f 17/31/8 9/9/8 14/32/8
-f 17/31/8 14/32/8 20/33/8
-f 4/23/9 17/26/9 20/17/9
-f 20/17/9 1/16/9 4/23/9
-f 15/34/10 16/21/10 3/20/10
-f 3/20/10 21/35/10 15/34/10
-f 10/36/11 13/37/11 22/12/11
-f 22/12/11 18/11/11 10/36/11
-f 13/37/12 9/38/12 8/14/12
-f 8/14/12 22/12/12 13/37/12
-f 5/39/13 23/40/13 24/41/13
-f 24/41/13 6/42/13 5/39/13
-f 17/43/14 25/44/14 23/45/14
-f 23/45/14 5/46/14 17/43/14
-f 6/47/15 24/48/15 25/49/15
-f 25/49/15 17/50/15 6/47/15
-f 26/51/16 27/52/16 28/53/16
-f 28/53/16 29/54/16 26/51/16
-f 30/55/17 31/56/17 32/57/17
-f 32/57/17 33/58/17 30/55/17
-f 34/59/18 35/60/18 25/49/18
-f 25/49/18 24/48/18 34/59/18
-f 36/61/19 26/62/19 29/63/19
-f 29/63/19 23/64/19 36/61/19
-f 28/65/20 27/66/20 34/59/20
-f 34/59/20 24/48/20 28/65/20
-f 24/41/21 23/40/21 29/54/21
-f 29/54/21 28/53/21 24/41/21
-f 33/67/22 25/49/22 35/60/22
-f 35/60/22 30/68/22 33/67/22
-f 32/69/23 31/70/23 36/61/23
-f 36/61/23 23/64/23 32/69/23
-f 23/45/24 25/44/24 33/58/24
-f 33/58/24 32/57/24 23/45/24
-f 37/3/25 38/2/25 39/1/25
-f 39/1/25 40/4/25 37/3/25
-f 41/5/26 42/9/26 8/8/26
-f 41/5/26 8/8/26 7/7/26
-f 41/5/26 7/7/26 43/6/26
-f 44/12/27 45/11/27 46/10/27
-f 46/10/27 47/13/27 44/12/27
-f 42/15/28 48/14/28 44/12/28
-f 44/12/28 47/13/28 42/15/28
-f 43/18/5 7/17/5 15/16/5
-f 15/16/5 49/19/5 43/18/5
-f 37/20/29 40/22/29 49/21/29
-f 40/23/30 50/26/30 43/25/30
-f 43/25/30 49/24/30 40/23/30
-f 19/29/31 18/28/31 46/27/31
-f 46/27/31 45/30/31 19/29/31
-f 50/31/31 51/33/31 48/32/31
-f 50/31/31 48/32/31 42/9/31
-f 50/31/31 42/9/31 41/5/31
-f 51/17/32 50/26/32 40/23/32
-f 40/23/32 39/16/32 51/17/32
-f 15/34/33 21/35/33 37/20/33
-f 37/20/33 49/21/33 15/34/33
-f 22/12/34 47/37/34 46/36/34
-f 46/36/34 18/11/34 22/12/34
-f 8/14/12 42/38/12 47/37/12
-f 47/37/12 22/12/12 8/14/12
-f 52/41/35 53/40/35 41/39/35
-f 41/39/35 43/42/35 52/41/35
-f 53/45/36 54/44/36 50/43/36
-f 50/43/36 41/46/36 53/45/36
-f 54/49/37 52/48/37 43/47/37
-f 43/47/37 50/50/37 54/49/37
-f 55/53/38 56/52/38 57/51/38
-f 57/51/38 58/54/38 55/53/38
-f 59/57/39 60/56/39 61/55/39
-f 61/55/39 62/58/39 59/57/39
-f 54/49/40 63/60/40 64/59/40
-f 64/59/40 52/48/40 54/49/40
-f 58/63/41 57/62/41 65/61/41
-f 65/61/41 53/64/41 58/63/41
-f 55/65/42 52/48/42 64/59/42
-f 64/59/42 56/66/42 55/65/42
-f 52/41/43 55/53/43 58/54/43
-f 58/54/43 53/40/43 52/41/43
-f 63/60/44 54/49/44 62/67/44
-f 62/67/44 61/68/44 63/60/44
-f 59/69/45 53/64/45 65/61/45
-f 65/61/45 60/70/45 59/69/45
-f 53/45/46 59/57/46 62/58/46
-f 62/58/46 54/44/46 53/45/46
-f 66/3/47 2/2/47 1/1/47
-f 1/1/47 67/4/47 66/3/47
-f 68/5/48 69/9/48 70/8/48
-f 68/5/48 70/8/48 71/7/48
-f 68/5/48 71/7/48 72/6/48
-f 12/12/49 11/11/49 73/10/49
-f 73/10/49 74/13/49 12/12/49
-f 69/15/50 14/14/50 12/12/50
-f 12/12/50 74/13/50 69/15/50
-f 72/18/51 71/17/51 75/16/51
-f 75/16/51 76/19/51 72/18/51
-f 66/20/52 67/22/52 76/21/52
-f 67/23/53 77/26/53 72/25/53
-f 72/25/53 76/24/53 67/23/53
-f 19/29/54 78/28/54 73/27/54
-f 73/27/54 11/30/54 19/29/54
-f 77/31/54 20/33/54 14/32/54
-f 77/31/54 14/32/54 69/9/54
-f 77/31/54 69/9/54 68/5/54
-f 20/17/9 77/26/9 67/23/9
-f 67/23/9 1/16/9 20/17/9
-f 75/34/55 79/35/55 66/20/55
-f 66/20/55 76/21/55 75/34/55
-f 80/12/56 74/37/57 73/36/57
-f 73/36/57 78/11/56 80/12/56
-f 70/14/58 69/38/58 74/37/58
-f 74/37/58 80/12/58 70/14/58
-f 81/41/59 82/40/59 68/39/59
-f 68/39/59 72/42/59 81/41/59
-f 82/45/60 83/44/60 77/43/60
-f 77/43/60 68/46/60 82/45/60
-f 83/49/61 81/48/61 72/47/61
-f 72/47/61 77/50/61 83/49/61
-f 84/53/62 85/52/62 86/51/62
-f 86/51/62 87/54/62 84/53/62
-f 88/57/63 89/56/63 90/55/63
-f 90/55/63 91/58/63 88/57/63
-f 83/49/64 92/60/64 93/59/64
-f 93/59/64 81/48/64 83/49/64
-f 87/63/65 86/62/65 94/61/65
-f 94/61/65 82/64/65 87/63/65
-f 84/65/66 81/48/66 93/59/66
-f 93/59/66 85/66/66 84/65/66
-f 81/41/67 84/53/67 87/54/67
-f 87/54/67 82/40/67 81/41/67
-f 92/60/68 83/49/68 91/67/68
-f 91/67/68 90/68/68 92/60/68
-f 88/69/69 82/64/69 94/61/69
-f 94/61/69 89/70/69 88/69/69
-f 82/45/70 88/57/70 91/58/70
-f 91/58/70 83/44/70 82/45/70
-f 39/1/71 38/2/71 95/3/71
-f 95/3/71 96/4/71 39/1/71
-f 97/5/72 98/6/72 71/7/72
-f 97/5/72 71/7/72 70/8/72
-f 97/5/72 70/8/72 99/9/72
-f 100/10/73 45/11/73 44/12/73
-f 44/12/73 101/13/73 100/10/73
-f 44/12/74 48/14/74 99/15/74
-f 99/15/74 101/13/74 44/12/74
-f 75/16/51 71/17/51 98/18/51
-f 98/18/51 102/19/51 75/16/51
-f 95/20/75 102/21/75 96/22/75
-f 96/23/76 102/24/76 98/25/76
-f 98/25/76 103/26/76 96/23/76
-f 100/27/77 78/28/77 19/29/77
-f 19/29/77 45/30/77 100/27/77
-f 103/31/77 97/5/77 99/9/77
-f 103/31/77 99/9/77 48/32/77
-f 103/31/77 48/32/77 51/33/77
-f 96/23/32 103/26/32 51/17/32
-f 51/17/32 39/16/32 96/23/32
-f 75/34/78 102/21/78 95/20/78
-f 95/20/78 79/35/78 75/34/78
-f 100/36/79 101/37/79 80/12/80
-f 80/12/80 78/11/80 100/36/79
-f 101/37/58 99/38/58 70/14/58
-f 70/14/58 80/12/58 101/37/58
-f 97/39/81 104/40/81 105/41/81
-f 105/41/81 98/42/81 97/39/81
-f 103/43/82 106/44/82 104/45/82
-f 104/45/82 97/46/82 103/43/82
-f 98/47/83 105/48/83 106/49/83
-f 106/49/83 103/50/83 98/47/83
-f 107/51/84 108/52/84 109/53/84
-f 109/53/84 110/54/84 107/51/84
-f 111/55/85 112/56/85 113/57/85
-f 113/57/85 114/58/85 111/55/85
-f 115/59/86 116/60/86 106/49/86
-f 106/49/86 105/48/86 115/59/86
-f 117/61/87 107/62/87 110/63/87
-f 110/63/87 104/64/87 117/61/87
-f 109/65/88 108/66/88 115/59/88
-f 115/59/88 105/48/88 109/65/88
-f 105/41/89 104/40/89 110/54/89
-f 110/54/89 109/53/89 105/41/89
-f 114/67/90 106/49/90 116/60/90
-f 116/60/90 111/68/90 114/67/90
-f 113/69/91 112/70/91 117/61/91
-f 117/61/91 104/64/91 113/69/91
-f 104/45/92 106/44/92 114/58/92
-f 114/58/92 113/57/92 104/45/92
-f 118/71/58 119/72/58 120/73/58
-f 120/73/58 121/74/58 118/71/58
-f 119/75/93 122/76/93 123/77/93
-f 123/77/93 120/78/93 119/75/93
-f 122/72/51 124/71/51 125/74/51
-f 125/74/51 123/73/51 122/72/51
-f 126/71/93 127/72/93 128/73/93
-f 128/73/93 129/74/93 126/71/93
-f 127/75/51 130/76/51 131/77/51
-f 131/77/51 128/78/51 127/75/51
-f 130/72/94 132/71/94 133/74/94
-f 133/74/94 131/73/94 130/72/94
-f 134/71/51 135/72/51 136/73/51
-f 136/73/51 137/74/51 134/71/51
-f 135/75/94 138/76/94 139/77/94
-f 139/77/94 136/78/94 135/75/94
-f 138/72/58 140/71/58 141/74/58
-f 141/74/58 139/73/58 138/72/58
-f 142/71/94 143/72/94 144/73/94
-f 144/73/94 145/74/94 142/71/94
-f 143/75/58 146/76/58 147/77/58
-f 147/77/58 144/78/58 143/75/58
-f 146/72/93 148/71/93 149/74/93
-f 149/74/93 147/73/93 146/72/93
-f 150/79/95 151/80/95 152/81/95
-f 152/81/95 153/82/95 150/79/95
-f 154/83/96 155/84/96 156/85/96
-f 156/85/96 157/86/96 154/83/96
-f 158/87/97 159/88/97 160/89/97
-f 160/89/97 161/90/97 158/87/97
-f 162/86/51 163/91/51 164/92/51
-f 164/92/51 165/83/51 162/86/51
-f 166/93/98 167/94/98 168/95/98
-f 168/95/98 169/96/98 166/93/98
-f 170/97/99 171/98/99 172/99/99
-f 173/100/99 158/101/99 161/102/99
-f 161/102/99 174/103/99 173/100/99
-f 175/104/100 176/105/100 177/106/100
-f 177/106/99 176/105/99 178/107/99
-f 178/107/99 179/108/99 177/106/99
-f 150/79/101 153/82/101 180/109/101
-f 180/109/101 181/110/101 150/79/101
-f 161/90/102 160/89/102 182/111/102
-f 182/111/102 183/112/102 161/90/102
-f 169/96/103 168/95/103 184/113/103
-f 184/113/103 185/114/103 169/96/103
-f 174/103/100 161/102/100 183/115/100
-f 183/115/100 186/116/100 174/103/100
-f 172/99/104 179/108/104 178/107/104
-f 178/107/104 170/97/104 172/99/104
-f 152/117/105 151/118/105 187/119/105
-f 187/119/105 173/120/105 152/117/105
-f 152/117/106 173/120/106 174/121/106
-f 174/121/106 153/122/106 152/117/106
-f 153/122/107 174/121/107 186/123/107
-f 186/123/107 180/124/107 153/122/107
-f 180/124/108 186/123/108 188/125/108
-f 188/125/108 181/126/108 180/124/108
-f 181/127/109 188/128/109 189/129/109
-f 189/129/109 150/130/109 181/127/109
-f 150/130/110 189/129/110 187/131/110
-f 187/131/110 151/132/110 150/130/110
-f 190/133/111 188/134/111 186/116/111
-f 186/116/111 183/115/111 190/133/111
-f 182/111/112 191/135/112 190/136/112
-f 190/136/112 183/112/112 182/111/112
-f 192/137/113 193/138/113 159/88/113
-f 159/88/113 158/87/113 192/137/113
-f 173/100/114 187/139/114 192/140/114
-f 192/140/114 158/101/114 173/100/114
-f 194/92/115 154/83/115 157/86/115
-f 157/86/115 195/91/115 194/92/115
-f 171/141/116 192/142/116 187/131/116
-f 187/131/116 172/143/116 171/141/116
-f 172/143/117 187/131/117 189/129/117
-f 189/129/117 179/144/117 172/143/117
-f 179/144/118 189/129/118 188/128/118
-f 188/128/118 177/145/118 179/144/118
-f 177/145/119 188/128/119 190/146/119
-f 190/146/119 175/147/119 177/145/119
-f 196/85/120 162/86/120 165/83/120
-f 165/83/120 197/84/120 196/85/120
-f 176/148/98 166/93/98 169/96/98
-f 169/96/98 178/149/98 176/148/98
-f 178/149/103 169/96/103 185/114/103
-f 185/114/103 170/150/103 178/149/103
-f 156/151/54 193/152/54 192/142/54
-f 192/142/54 157/153/54 156/151/54
-f 157/153/8 192/142/8 171/141/8
-f 171/141/8 195/154/8 157/153/8
-f 195/155/104 171/98/104 170/97/104
-f 170/97/104 194/156/104 195/155/104
-f 194/157/121 170/150/121 185/114/121
-f 185/114/121 154/158/121 194/157/121
-f 154/158/121 185/114/121 184/113/121
-f 184/113/121 155/159/121 154/158/121
-f 164/160/122 167/94/122 166/93/122
-f 166/93/122 165/161/122 164/160/122
-f 165/161/123 166/93/123 176/148/123
-f 176/148/123 197/162/123 165/161/123
-f 197/163/124 176/105/124 175/104/124
-f 175/104/124 196/164/124 197/163/124
-f 196/165/54 175/147/54 190/146/54
-f 190/146/54 162/166/54 196/165/54
-f 162/166/54 190/146/54 191/167/54
-f 191/167/54 163/168/54 162/166/54
-f 198/79/125 199/80/125 200/81/125
-f 200/81/125 201/82/125 198/79/125
-f 202/83/126 203/84/126 204/85/126
-f 204/85/126 205/86/126 202/83/126
-f 206/87/127 207/88/127 208/89/127
-f 208/89/127 209/90/127 206/87/127
-f 210/86/104 211/91/104 212/92/104
-f 212/92/104 213/83/104 210/86/104
-f 214/93/128 215/94/128 216/95/128
-f 216/95/128 217/96/128 214/93/128
-f 218/97/58 219/98/58 220/99/58
-f 221/100/129 206/101/129 209/102/129
-f 209/102/129 222/103/129 221/100/129
-f 223/104/129 224/105/129 225/106/129
-f 225/106/58 224/105/58 226/107/58
-f 226/107/58 227/108/58 225/106/58
-f 198/79/130 201/82/130 228/109/130
-f 228/109/130 229/110/130 198/79/130
-f 209/90/131 208/89/131 230/111/131
-f 230/111/131 231/112/131 209/90/131
-f 217/96/132 216/95/132 232/113/132
-f 232/113/132 233/114/132 217/96/132
-f 222/103/58 209/102/58 231/115/58
-f 231/115/58 234/116/58 222/103/58
-f 220/99/5 227/108/5 226/107/5
-f 226/107/5 218/97/5 220/99/5
-f 200/117/133 199/118/133 235/119/133
-f 235/119/133 221/120/133 200/117/133
-f 200/117/134 221/120/134 222/121/134
-f 222/121/134 201/122/134 200/117/134
-f 201/122/135 222/121/135 234/123/135
-f 234/123/135 228/124/135 201/122/135
-f 228/124/136 234/123/136 236/125/136
-f 236/125/136 229/126/136 228/124/136
-f 229/127/137 236/128/137 237/129/137
-f 237/129/137 198/130/137 229/127/137
-f 198/130/138 237/129/138 235/131/138
-f 235/131/138 199/132/138 198/130/138
-f 238/133/139 236/134/139 234/116/139
-f 234/116/139 231/115/139 238/133/139
-f 230/111/140 239/135/140 238/136/140
-f 238/136/140 231/112/140 230/111/140
-f 240/137/141 241/138/141 207/88/141
-f 207/88/141 206/87/141 240/137/141
-f 221/100/142 235/139/142 240/140/142
-f 240/140/142 206/101/142 221/100/142
-f 242/92/143 202/83/143 205/86/143
-f 205/86/143 243/91/143 242/92/143
-f 219/141/144 240/142/144 235/131/144
-f 235/131/144 220/143/144 219/141/144
-f 220/143/145 235/131/145 237/129/145
-f 237/129/145 227/144/145 220/143/145
-f 227/144/146 237/129/146 236/128/146
-f 236/128/146 225/145/146 227/144/146
-f 225/145/147 236/128/147 238/146/147
-f 238/146/147 223/147/147 225/145/147
-f 244/85/148 210/86/148 213/83/148
-f 213/83/148 245/84/148 244/85/148
-f 224/148/128 214/93/128 217/96/128
-f 217/96/128 226/149/128 224/148/128
-f 226/149/149 217/96/149 233/114/149
-f 233/114/149 218/150/149 226/149/149
-f 204/151/8 241/152/8 240/142/8
-f 240/142/8 205/153/8 204/151/8
-f 205/153/8 240/142/8 219/141/8
-f 219/141/8 243/154/8 205/153/8
-f 243/155/58 219/98/58 218/97/58
-f 218/97/58 242/156/58 243/155/58
-f 242/157/121 218/150/121 233/114/121
-f 233/114/121 202/158/121 242/157/121
-f 202/158/122 233/114/122 232/113/122
-f 232/113/122 203/159/122 202/158/122
-f 212/160/121 215/94/121 214/93/121
-f 214/93/121 213/161/121 212/160/121
-f 213/161/150 214/93/150 224/148/150
-f 224/148/150 245/162/150 213/161/150
-f 245/163/115 224/105/115 223/104/115
-f 223/104/115 244/164/115 245/163/115
-f 244/165/54 223/147/54 238/146/54
-f 238/146/54 210/166/54 244/165/54
-f 210/166/54 238/146/54 239/167/54
-f 239/167/54 211/168/54 210/166/54
-f 246/79/151 247/80/151 248/81/151
-f 248/81/151 249/82/151 246/79/151
-f 250/83/152 251/84/152 252/85/152
-f 252/85/152 253/86/152 250/83/152
-f 254/87/131 255/88/131 256/89/131
-f 256/89/131 257/90/131 254/87/131
-f 258/86/93 259/91/93 260/92/93
-f 260/92/93 261/83/93 258/86/93
-f 262/93/149 263/94/149 264/95/149
-f 264/95/149 265/96/149 262/93/149
-f 266/97/51 267/98/51 268/99/51
-f 269/100/12 254/101/12 257/102/12
-f 257/102/12 270/103/12 269/100/12
-f 271/104/153 272/105/153 273/106/153
-f 273/106/12 272/105/12 274/107/12
-f 274/107/12 275/108/12 273/106/12
-f 246/79/154 249/82/154 276/109/154
-f 276/109/154 277/110/154 246/79/154
-f 257/90/127 256/89/127 278/111/127
-f 278/111/127 279/112/127 257/90/127
-f 265/96/128 264/95/128 280/113/128
-f 280/113/128 281/114/128 265/96/128
-f 270/103/12 257/102/12 279/115/12
-f 279/115/12 282/116/12 270/103/12
-f 268/99/51 275/108/51 274/107/51
-f 274/107/51 266/97/51 268/99/51
-f 248/117/155 247/118/155 283/119/155
-f 283/119/155 269/120/155 248/117/155
-f 248/117/156 269/120/156 270/121/156
-f 270/121/156 249/122/156 248/117/156
-f 249/122/157 270/121/157 282/123/157
-f 282/123/157 276/124/157 249/122/157
-f 276/124/158 282/123/158 284/125/158
-f 284/125/158 277/126/158 276/124/158
-f 277/127/159 284/128/159 285/129/159
-f 285/129/159 246/130/159 277/127/159
-f 246/130/160 285/129/160 283/131/160
-f 283/131/160 247/132/160 246/130/160
-f 286/133/161 284/134/161 282/116/161
-f 282/116/161 279/115/161 286/133/161
-f 278/111/162 287/135/162 286/136/162
-f 286/136/162 279/112/162 278/111/162
-f 288/137/163 289/138/163 255/88/163
-f 255/88/163 254/87/163 288/137/163
-f 269/100/164 283/139/164 288/140/164
-f 288/140/164 254/101/164 269/100/164
-f 290/92/165 250/83/165 253/86/165
-f 253/86/165 291/91/165 290/92/165
-f 267/141/166 288/142/166 283/131/166
-f 283/131/166 268/143/166 267/141/166
-f 268/143/160 283/131/160 285/129/160
-f 285/129/160 275/144/160 268/143/160
-f 275/144/167 285/129/167 284/128/167
-f 284/128/167 273/145/167 275/144/167
-f 273/145/168 284/128/168 286/146/168
-f 286/146/168 271/147/168 273/145/168
-f 292/85/126 258/86/126 261/83/126
-f 261/83/126 293/84/126 292/85/126
-f 272/148/149 262/93/149 265/96/149
-f 265/96/149 274/149/149 272/148/149
-f 274/149/128 265/96/128 281/114/128
-f 281/114/128 266/150/128 274/149/128
-f 252/151/54 289/152/54 288/142/54
-f 288/142/54 253/153/54 252/151/54
-f 253/153/54 288/142/54 267/141/54
-f 267/141/54 291/154/54 253/153/54
-f 291/155/51 267/98/51 266/97/51
-f 266/97/51 290/156/51 291/155/51
-f 290/157/123 266/150/123 281/114/123
-f 281/114/123 250/158/123 290/157/123
-f 250/158/121 281/114/121 280/113/121
-f 280/113/121 251/159/121 250/158/121
-f 260/160/121 263/94/121 262/93/121
-f 262/93/121 261/161/121 260/160/121
-f 261/161/121 262/93/121 272/148/121
-f 272/148/121 293/162/121 261/161/121
-f 293/163/169 272/105/169 271/104/169
-f 271/104/169 292/164/169 293/163/169
-f 292/165/54 271/147/54 286/146/54
-f 286/146/54 258/166/54 292/165/54
-f 258/166/54 286/146/54 287/167/54
-f 287/167/54 259/168/54 258/166/54
-f 95/169/51 294/170/51 295/171/51
-f 295/171/51 296/172/51 95/169/51
-f 296/173/94 295/174/94 297/175/94
-f 297/175/94 298/176/94 296/173/94
-f 298/177/58 297/178/58 299/179/58
-f 299/179/58 37/180/58 298/177/58
-f 37/181/170 299/182/170 294/183/170
-f 294/183/170 95/184/170 37/181/170
-f 300/185/51 301/186/51 302/187/51
-f 302/187/51 303/188/51 300/185/51
-f 304/185/100 305/189/100 306/190/100
-f 306/190/100 307/188/100 304/185/100
-f 308/185/58 309/189/58 310/190/58
-f 310/190/58 311/188/58 308/185/58
-f 312/185/93 313/186/93 314/187/93
-f 314/187/93 315/188/93 312/185/93
-f 316/191/171 302/192/171 315/193/171
-f 315/193/171 317/194/171 316/191/171
-f 318/195/172 314/196/172 311/197/172
-f 311/197/172 319/198/172 318/195/172
-f 320/199/173 310/200/173 307/201/173
-f 307/201/173 321/202/173 320/199/173
-f 322/203/174 306/204/174 303/205/174
-f 303/205/174 323/206/174 322/203/174
-f 324/207/54 301/208/54 300/209/54
-f 300/209/54 325/210/54 324/207/54
-f 326/211/8 305/212/8 304/213/8
-f 304/213/8 327/214/8 326/211/8
-f 328/215/77 309/216/77 308/217/77
-f 308/217/77 329/218/77 328/215/77
-f 330/219/77 313/220/77 312/221/77
-f 312/221/77 331/222/77 330/219/77
-f 308/185/58 311/188/58 314/187/58
-f 314/187/58 313/186/58 308/185/58
-f 312/185/93 315/188/93 302/190/93
-f 302/190/93 301/189/93 312/185/93
-f 318/195/175 317/194/175 315/193/175
-f 315/193/175 314/196/175 318/195/175
-f 320/199/176 319/198/176 311/197/176
-f 311/197/176 310/200/176 320/199/176
-f 322/203/177 321/202/177 307/201/177
-f 307/201/177 306/204/177 322/203/177
-f 330/219/54 329/218/54 308/217/54
-f 308/217/54 313/220/54 330/219/54
-f 324/207/31 331/222/31 312/221/31
-f 312/221/31 301/208/31 324/207/31
-f 300/185/51 303/188/51 306/190/51
-f 306/190/51 305/189/51 300/185/51
-f 304/185/94 307/188/94 310/187/94
-f 310/187/94 309/186/94 304/185/94
-f 316/191/178 323/206/178 303/205/178
-f 303/205/178 302/192/178 316/191/178
-f 326/211/77 325/210/77 300/209/77
-f 300/209/77 305/212/77 326/211/77
-f 328/215/77 327/214/77 304/213/77
-f 304/213/77 309/216/77 328/215/77
-f 332/185/51 333/186/51 334/187/51
-f 334/187/51 335/188/51 332/185/51
-f 336/223/94 337/224/94 338/225/94
-f 338/225/94 339/226/94 336/223/94
-f 340/227/58 341/228/58 342/229/58
-f 342/229/58 343/230/58 340/227/58
-f 344/185/93 345/186/93 346/187/93
-f 346/187/93 347/188/93 344/185/93
-f 348/191/171 334/192/171 347/193/171
-f 347/193/171 349/194/171 348/191/171
-f 350/195/172 346/196/172 343/197/172
-f 343/197/172 351/198/172 350/195/172
-f 352/199/173 342/200/173 339/201/173
-f 339/201/173 353/202/173 352/199/173
-f 354/203/174 338/204/174 335/205/174
-f 335/205/174 355/206/174 354/203/174
-f 356/207/54 333/208/54 332/209/54
-f 332/209/54 357/210/54 356/207/54
-f 358/211/8 337/212/8 336/213/8
-f 336/213/8 359/214/8 358/211/8
-f 360/215/54 341/216/54 340/217/54
-f 340/217/54 361/218/54 360/215/54
-f 362/219/77 345/220/77 344/221/77
-f 344/221/77 363/222/77 362/219/77
-f 340/227/58 343/230/58 346/231/58
-f 346/231/58 345/232/58 340/227/58
-f 344/185/93 347/188/93 334/190/93
-f 334/190/93 333/189/93 344/185/93
-f 350/195/175 349/194/175 347/193/175
-f 347/193/175 346/196/175 350/195/175
-f 352/199/176 351/198/176 343/197/176
-f 343/197/176 342/200/176 352/199/176
-f 354/203/177 353/202/177 339/201/177
-f 339/201/177 338/204/177 354/203/177
-f 362/219/54 361/218/54 340/217/54
-f 340/217/54 345/220/54 362/219/54
-f 356/207/31 363/222/31 344/221/31
-f 344/221/31 333/208/31 356/207/31
-f 332/185/51 335/188/51 338/190/51
-f 338/190/51 337/189/51 332/185/51
-f 336/223/94 339/226/94 342/233/94
-f 342/233/94 341/234/94 336/223/94
-f 348/191/178 355/206/178 335/205/178
-f 335/205/178 334/192/178 348/191/178
-f 358/211/77 357/210/77 332/209/77
-f 332/209/77 337/212/77 358/211/77
-f 360/215/54 359/214/54 336/213/54
-f 336/213/54 341/216/54 360/215/54
-f 364/235/179 365/236/179 366/237/179
-f 366/237/179 367/238/179 364/235/179
-f 368/239/180 365/236/180 364/235/180
-f 364/235/180 369/240/180 368/239/180
-f 364/241/181 367/242/181 370/243/181
-f 370/243/181 371/244/181 364/241/181
-f 369/245/182 364/241/182 371/244/182
-f 371/244/182 372/246/182 369/245/182
-f 371/247/183 370/248/183 373/249/183
-f 373/249/183 374/250/183 371/247/183
-f 375/251/184 372/252/184 371/247/184
-f 371/247/184 374/250/184 375/251/184
-f 365/253/185 374/254/185 373/255/185
-f 373/255/185 366/256/185 365/253/185
-f 368/257/186 375/258/186 374/254/186
-f 374/254/186 365/253/186 368/257/186
-f 376/235/187 377/238/187 378/237/187
-f 378/237/187 379/236/187 376/235/187
-f 380/239/188 381/240/188 376/235/188
-f 376/235/188 379/236/188 380/239/188
-f 376/241/189 382/244/189 383/243/189
-f 383/243/189 377/242/189 376/241/189
-f 381/245/190 384/246/190 382/244/190
-f 382/244/190 376/241/190 381/245/190
-f 382/247/191 385/250/191 386/249/191
-f 386/249/191 383/248/191 382/247/191
-f 387/251/192 385/250/192 382/247/192
-f 382/247/192 384/252/192 387/251/192
-f 379/253/193 378/256/193 386/255/193
-f 386/255/193 385/254/193 379/253/193
-f 380/257/194 379/253/194 385/254/194
-f 385/254/194 387/258/194 380/257/194
-f 388/235/187 389/238/187 390/237/187
-f 390/237/187 391/236/187 388/235/187
-f 392/239/188 393/240/188 388/235/188
-f 388/235/188 391/236/188 392/239/188
-f 388/241/189 394/244/189 395/243/189
-f 395/243/189 389/242/189 388/241/189
-f 393/245/195 396/246/195 394/244/195
-f 394/244/195 388/241/195 393/245/195
-f 394/247/191 397/250/191 398/249/191
-f 398/249/191 395/248/191 394/247/191
-f 399/251/196 397/250/196 394/247/196
-f 394/247/196 396/252/196 399/251/196
-f 391/253/193 390/256/193 398/255/193
-f 398/255/193 397/254/193 391/253/193
-f 392/257/197 391/253/197 397/254/197
-f 397/254/197 399/258/197 392/257/197
-f 400/235/198 401/238/198 402/237/198
-f 402/237/198 403/236/198 400/235/198
-f 404/239/199 405/240/199 400/235/199
-f 400/235/199 403/236/199 404/239/199
-f 400/241/200 406/244/200 407/243/200
-f 407/243/200 401/242/200 400/241/200
-f 405/245/201 408/246/201 406/244/201
-f 406/244/201 400/241/201 405/245/201
-f 406/247/202 409/250/202 410/249/202
-f 410/249/202 407/248/202 406/247/202
-f 411/251/203 409/250/203 406/247/203
-f 406/247/203 408/252/203 411/251/203
-f 403/253/185 402/256/185 410/255/185
-f 410/255/185 409/254/185 403/253/185
-f 404/257/204 403/253/204 409/254/204
-f 409/254/204 411/258/204 404/257/204
-f 412/235/205 413/236/205 414/237/205
-f 414/237/205 415/238/205 412/235/205
-f 416/239/206 413/236/206 412/235/206
-f 412/235/206 417/240/206 416/239/206
-f 412/241/207 415/242/207 418/243/207
-f 418/243/207 419/244/207 412/241/207
-f 417/245/208 412/241/208 419/244/208
-f 419/244/208 420/246/208 417/245/208
-f 419/247/209 418/248/209 421/249/209
-f 421/249/209 422/250/209 419/247/209
-f 423/251/210 420/252/210 419/247/210
-f 419/247/210 422/250/210 423/251/210
-f 413/253/193 422/254/193 421/255/193
-f 421/255/193 414/256/193 413/253/193
-f 416/257/211 423/258/211 422/254/211
-f 422/254/211 413/253/211 416/257/211
-f 424/235/205 425/236/205 426/237/205
-f 426/237/205 427/238/205 424/235/205
-f 428/239/206 425/236/206 424/235/206
-f 424/235/206 429/240/206 428/239/206
-f 424/241/207 427/242/207 430/243/207
-f 430/243/207 431/244/207 424/241/207
-f 429/245/212 424/241/212 431/244/212
-f 431/244/212 432/246/212 429/245/212
-f 431/247/209 430/248/209 433/249/209
-f 433/249/209 434/250/209 431/247/209
-f 435/251/213 432/252/213 431/247/213
-f 431/247/213 434/250/213 435/251/213
-f 425/253/193 434/254/193 433/255/193
-f 433/255/193 426/256/193 425/253/193
-f 428/257/214 435/258/214 434/254/214
-f 434/254/214 425/253/214 428/257/214
-f 436/235/198 437/238/198 438/237/198
-f 438/237/198 439/236/198 436/235/198
-f 440/239/199 441/240/199 436/235/199
-f 436/235/199 439/236/199 440/239/199
-f 436/241/200 442/244/200 443/243/200
-f 443/243/200 437/242/200 436/241/200
-f 441/245/215 444/246/215 442/244/215
-f 442/244/215 436/241/215 441/245/215
-f 442/247/202 445/250/202 446/249/202
-f 446/249/202 443/248/202 442/247/202
-f 447/251/216 445/250/216 442/247/216
-f 442/247/216 444/252/216 447/251/216
-f 439/253/185 438/256/185 446/255/185
-f 446/255/185 445/254/185 439/253/185
-f 440/257/217 439/253/217 445/254/217
-f 445/254/217 447/258/217 440/257/217
-f 448/235/179 449/236/179 450/237/179
-f 450/237/179 451/238/179 448/235/179
-f 452/239/180 449/236/180 448/235/180
-f 448/235/180 453/240/180 452/239/180
-f 448/241/181 451/242/181 454/243/181
-f 454/243/181 455/244/181 448/241/181
-f 453/245/218 448/241/218 455/244/218
-f 455/244/218 456/246/218 453/245/218
-f 455/247/183 454/248/183 457/249/183
-f 457/249/183 458/250/183 455/247/183
-f 459/251/219 456/252/219 455/247/219
-f 455/247/219 458/250/219 459/251/219
-f 449/253/185 458/254/185 457/255/185
-f 457/255/185 450/256/185 449/253/185
-f 452/257/220 459/258/220 458/254/220
-f 458/254/220 449/253/220 452/257/220
-f 460/259/221 461/260/222 462/261/223
-f 462/261/223 463/262/224 460/259/221
-f 461/260/222 464/263/225 465/264/225
-f 465/264/225 462/261/223 461/260/222
-f 464/263/225 466/265/226 467/266/226
-f 467/266/226 465/264/225 464/263/225
-f 466/265/226 468/267/227 469/268/227
-f 469/268/227 467/266/226 466/265/226
-f 463/262/224 462/261/223 470/269/228
-f 470/269/228 471/270/229 463/262/224
-f 462/261/223 465/264/225 472/271/225
-f 472/271/225 470/269/228 462/261/223
-f 465/264/225 467/266/226 473/272/226
-f 473/272/226 472/271/225 465/264/225
-f 467/266/226 469/268/227 474/273/227
-f 474/273/227 473/272/226 467/266/226
-f 471/270/229 470/269/228 475/274/230
-f 475/274/230 476/275/231 471/270/229
-f 470/269/228 472/271/225 477/276/225
-f 477/276/225 475/274/230 470/269/228
-f 472/271/225 473/272/226 478/277/226
-f 478/277/226 477/276/225 472/271/225
-f 473/272/226 474/273/227 479/278/227
-f 479/278/227 478/277/226 473/272/226
-f 476/275/231 475/274/230 480/279/232
-f 480/279/232 481/280/233 476/275/231
-f 475/274/230 477/276/225 482/281/225
-f 482/281/225 480/279/232 475/274/230
-f 477/276/225 478/277/226 483/282/226
-f 483/282/226 482/281/225 477/276/225
-f 478/277/226 479/278/227 484/283/227
-f 484/283/227 483/282/226 478/277/226
-f 485/284/234 486/285/234 487/286/234
-f 485/284/235 487/285/235 488/286/235
-f 485/284/236 488/285/236 489/286/236
-f 485/284/237 489/285/237 486/286/237
-f 490/287/238 491/288/238 492/289/238
-f 492/289/238 493/290/238 490/287/238
-f 494/291/58 495/292/58 496/293/58
-f 496/293/58 497/294/58 494/291/58
-f 498/295/93 499/296/93 495/297/93
-f 495/297/93 494/298/93 498/295/93
-f 500/299/153 501/300/153 499/292/153
-f 499/292/153 498/291/153 500/299/153
-f 492/301/93 491/302/93 495/297/93
-f 495/297/93 499/296/93 492/301/93
-f 493/303/153 492/304/153 499/292/153
-f 499/292/153 501/300/153 493/303/153
-f 502/305/239 503/306/239 504/307/239
-f 504/307/239 505/308/239 502/305/239
-f 506/294/153 507/293/153 508/292/153
-f 508/292/153 509/291/153 506/294/153
-f 510/291/129 511/292/129 512/300/129
-f 512/300/129 513/299/129 510/291/129
-f 509/309/93 508/310/93 511/311/93
-f 511/311/93 510/312/93 509/309/93
-f 505/304/129 504/303/129 512/300/129
-f 512/300/129 511/292/129 505/304/129
-f 502/313/93 505/314/93 511/311/93
-f 511/311/93 508/310/93 502/313/93
-f 502/305/240 514/315/77 515/316/77
-f 515/316/77 503/306/240 502/305/240
-f 508/310/93 516/317/241 514/318/241
-f 514/318/241 502/313/93 508/310/93
-f 516/315/242 517/319/242 496/320/242
-f 496/320/242 495/288/242 516/315/242
-f 491/288/243 490/287/243 515/316/77
-f 515/316/77 514/315/77 491/288/243
-f 495/297/170 491/302/170 514/318/241
-f 514/318/241 516/317/241 495/297/170
-f 508/305/244 507/321/244 517/319/244
-f 517/319/244 516/315/244 508/305/244
-f 496/322/170 517/323/170 518/324/170
-f 518/324/170 497/325/170 496/322/170
-f 517/323/93 507/326/93 506/327/93
-f 506/327/93 518/324/93 517/323/93
-# 782 faces
-
diff --git a/examples/web/models/resources/models/turret_diffuse.png b/examples/web/models/resources/models/turret_diffuse.png
deleted file mode 100644
index 33628e3..0000000
--- a/examples/web/models/resources/models/turret_diffuse.png
+++ /dev/null
Binary files differ
diff --git a/examples/web/models/resources/models/well.obj b/examples/web/models/resources/models/well.obj
deleted file mode 100644
index 9f26e58..0000000
--- a/examples/web/models/resources/models/well.obj
+++ /dev/null
@@ -1,1030 +0,0 @@
-# (c) 2018 Medieval Assets Pack by Alberto Cano
-# Licensed as Creative Commons Attribution-NonCommercial 4.0
-
-#
-# object well
-#
-
-v 2.4349 0.3719 -0.9996
-v 2.4286 0.3719 1.0149
-v 2.4526 -0.0641 1.0250
-v 2.4590 -0.0641 -1.0095
-v 1.3014 0.7560 -0.5342
-v 1.2980 0.7560 0.5425
-v 1.2552 1.8149 0.5246
-v 1.2585 1.8149 -0.5166
-v 0.9996 0.3719 2.4349
-v 1.0095 -0.0641 2.4590
-v 0.5342 0.7560 1.3014
-v 0.5166 1.8149 1.2585
-v -1.0149 0.3719 2.4286
-v -1.0250 -0.0641 2.4526
-v -0.5425 0.7560 1.2980
-v -0.5246 1.8149 1.2552
-v -2.4349 0.3719 0.9996
-v -2.4590 -0.0641 1.0095
-v -1.3014 0.7560 0.5342
-v -1.2585 1.8149 0.5166
-v -2.4286 0.3719 -1.0149
-v -2.4526 -0.0641 -1.0250
-v -1.2980 0.7560 -0.5425
-v -1.2552 1.8149 -0.5246
-v -0.9996 0.3719 -2.4349
-v -1.0095 -0.0641 -2.4590
-v -0.5342 0.7560 -1.3014
-v -0.5166 1.8149 -1.2585
-v 1.0149 0.3719 -2.4286
-v 1.0250 -0.0641 -2.4526
-v 0.5425 0.7560 -1.2980
-v 0.5246 1.8149 -1.2552
-v 2.1428 1.8318 -0.8796
-v 2.1372 1.8318 0.8932
-v 2.0129 1.4147 0.8412
-v 2.0182 1.4147 -0.8285
-v 0.8796 1.8318 2.1428
-v 0.8285 1.4147 2.0182
-v -0.8932 1.8318 2.1372
-v -0.8412 1.4147 2.0129
-v -2.1428 1.8318 0.8796
-v -2.0182 1.4147 0.8285
-v -2.1372 1.8318 -0.8932
-v -2.0129 1.4147 -0.8412
-v -0.8796 1.8318 -2.1428
-v -0.8285 1.4147 -2.0182
-v 0.8932 1.8318 -2.1372
-v 0.8412 1.4147 -2.0129
-v 0.4215 2.1696 1.0809
-v 0.8827 2.1696 1.3472
-v 0.8143 1.8149 1.3867
-v 0.4215 1.8149 1.1599
-v 0.4215 2.5243 1.1599
-v 0.4215 2.5243 1.2443
-v 0.7412 2.5243 1.4289
-v 0.8143 2.5243 1.3867
-v 0.4215 1.8149 1.2443
-v 0.7412 1.8149 1.4289
-v 0.8827 2.1696 1.8798
-v 0.8143 1.8149 1.8403
-v 0.7412 2.5243 1.7981
-v 0.8143 2.5243 1.8403
-v 0.7412 1.8149 1.7981
-v 0.4215 2.1696 2.1461
-v 0.4215 1.8149 2.0671
-v 0.4215 2.5243 1.9827
-v 0.4215 2.5243 2.0671
-v 0.4215 1.8149 1.9827
-v -0.0397 2.1696 1.8798
-v 0.0287 1.8149 1.8403
-v 0.1017 2.5243 1.7981
-v 0.0287 2.5243 1.8403
-v 0.1017 1.8149 1.7981
-v -0.0397 2.1696 1.3472
-v 0.0287 1.8149 1.3867
-v 0.1017 2.5243 1.4289
-v 0.0287 2.5243 1.3867
-v 0.1017 1.8149 1.4289
-v 0.8059 2.5243 1.6104
-v 0.7586 2.5265 1.5850
-v 0.7735 2.5748 1.5456
-v 0.8229 2.5963 1.5597
-v 0.7586 2.5220 1.6358
-v 0.7735 2.6139 1.5784
-v 0.8398 2.6683 1.4739
-v 0.7884 2.6449 1.4621
-v 0.7016 2.7447 1.3431
-v 0.7409 2.7822 1.3381
-v 0.7884 2.6839 1.4949
-v 0.7016 2.7838 1.3758
-v 0.5259 2.8041 1.2723
-v 0.5405 2.8499 1.2575
-v 0.5259 2.8432 1.3051
-v 0.3171 2.8041 1.2723
-v 0.3024 2.8499 1.2575
-v 0.3171 2.8432 1.3051
-v 0.1414 2.7447 1.3431
-v 0.1021 2.7822 1.3381
-v 0.1414 2.7838 1.3758
-v 0.0546 2.6449 1.4621
-v 0.0032 2.6683 1.4739
-v 0.0546 2.6839 1.4949
-v 0.0695 2.5748 1.5456
-v 0.0201 2.5963 1.5597
-v 0.0695 2.6139 1.5784
-v 0.0843 2.5265 1.5850
-v 0.0370 2.5243 1.6104
-v 0.0843 2.5220 1.6358
-v 0.0235 3.7677 0.2755
-v 0.0235 3.7677 0.2601
-v 0.0081 3.7677 0.2601
-v 0.0081 3.7677 0.2755
-v -1.5438 3.5501 0.2185
-v -1.3084 4.6406 1.4987
-v -1.7540 4.6406 1.4987
-v -1.9516 3.5501 0.2185
-v -1.7540 4.6406 1.1371
-v -1.9631 3.9325 0.2185
-v -1.3084 4.6406 1.1371
-v -1.5551 3.9325 0.2185
-v -1.7540 4.6406 -1.4441
-v -1.3084 4.6406 -1.4441
-v -1.5438 3.5501 -0.1639
-v -1.9516 3.5501 -0.1639
-v -1.7540 4.6406 -1.0825
-v -1.9631 3.9325 -0.1639
-v -1.3084 4.6406 -1.0825
-v -1.5551 3.9325 -0.1639
-v -1.5544 3.8720 0.2185
-v -1.9999 3.8720 0.2185
-v -1.7540 1.7269 0.2185
-v -1.3084 1.7269 0.2185
-v -1.9999 3.8720 -0.1639
-v -1.7540 1.7269 -0.1639
-v -1.5544 3.8720 -0.1639
-v -1.3084 1.7269 -0.1639
-v -1.3084 5.9529 0.2185
-v -1.7540 6.0405 0.2185
-v -1.7540 6.0405 -0.1639
-v -1.3084 5.9529 -0.1639
-v -1.3084 4.6406 -1.5881
-v -1.3084 4.6406 1.6293
-v -1.7540 4.6406 1.6293
-v -1.7540 4.6406 -1.5881
-v -1.7540 5.0230 1.2025
-v -1.7540 5.0230 -1.0636
-v -1.3084 5.0230 1.2025
-v -1.3084 5.0230 -1.0636
-v 1.7856 4.6406 1.4987
-v 1.3401 4.6406 1.4987
-v 1.5755 3.5501 0.2185
-v 1.9832 3.5501 0.2185
-v 1.7856 4.6406 1.1371
-v 1.9947 3.9325 0.2185
-v 1.3401 4.6406 1.1371
-v 1.5867 3.9325 0.2185
-v 1.5755 3.5501 -0.1639
-v 1.3401 4.6406 -1.4441
-v 1.7856 4.6406 -1.4441
-v 1.9832 3.5501 -0.1639
-v 1.7856 4.6406 -1.0825
-v 1.9947 3.9325 -0.1639
-v 1.3401 4.6406 -1.0825
-v 1.5867 3.9325 -0.1639
-v 1.7856 1.7269 0.2185
-v 2.0315 3.8720 0.2185
-v 1.5860 3.8720 0.2185
-v 1.3401 1.7269 0.2185
-v 1.7856 1.7269 -0.1639
-v 2.0315 3.8720 -0.1639
-v 1.3401 1.7269 -0.1639
-v 1.5860 3.8720 -0.1639
-v 1.7856 6.0405 0.2185
-v 1.3401 5.9529 0.2185
-v 1.7856 6.0405 -0.1639
-v 1.3401 5.9529 -0.1639
-v 1.3401 4.6406 -1.5881
-v 1.7856 4.6406 -1.5881
-v 1.7856 4.6406 1.6293
-v 1.3401 4.6406 1.6293
-v 1.7856 5.0230 -1.0636
-v 1.7856 5.0230 1.2025
-v 1.3401 5.0230 -1.0636
-v 1.3401 5.0230 1.2025
-v 0.0158 3.3853 -0.1777
-v 0.0158 3.3853 0.2678
-v -1.5551 3.6592 0.1980
-v -1.5551 3.6592 -0.1317
-v 0.0158 3.7677 0.2678
-v -1.5551 4.0416 0.1980
-v 0.0158 3.7677 -0.1777
-v -1.5551 4.0416 -0.1317
-v 1.5798 3.6592 -0.1190
-v 1.5798 3.6592 0.1925
-v 1.5977 4.0416 0.1982
-v 1.5978 4.0416 -0.1247
-v 2.3235 4.2740 -2.1877
-v 2.3235 6.4188 0.0227
-v 2.3257 6.1975 0.0227
-v 2.3235 4.0678 -2.1877
-v -0.0629 5.6948 0.0227
-v -0.0629 3.7727 -2.1877
-v -0.0629 3.9789 -2.1877
-v -0.0629 5.9161 0.0227
-v -2.4516 6.1975 0.0227
-v -2.4494 6.4188 0.0227
-v -2.4494 4.2740 -2.1877
-v -2.4494 4.0678 -2.1877
-v 1.8518 1.4319 -0.7602
-v 1.8470 1.4319 0.7719
-v 1.7317 0.9075 0.7237
-v 1.7363 0.9075 -0.7128
-v 0.7719 1.4319 -1.8470
-v 0.7237 0.9075 -1.7317
-v -0.7602 1.4319 -1.8518
-v -0.7128 0.9075 -1.7363
-v -1.8470 1.4319 -0.7719
-v -1.7317 0.9075 -0.7237
-v -1.8518 1.4319 0.7602
-v -1.7363 0.9075 0.7128
-v -0.7719 1.4319 1.8470
-v -0.7237 0.9075 1.7317
-v 0.7602 1.4319 1.8518
-v 0.7128 0.9075 1.7363
-v 0.7058 0.3719 1.7193
-v 1.7148 0.3719 0.7166
-v -0.7166 0.3719 1.7148
-v -1.7193 0.3719 0.7058
-v -1.7148 0.3719 -0.7166
-v -0.7058 0.3719 -1.7193
-v 0.7166 0.3719 -1.7148
-v 1.7193 0.3719 -0.7058
-v -2.4494 4.2740 2.2332
-v -2.4494 4.0678 2.2332
-v -0.0629 3.7727 2.2332
-v -0.0629 3.9789 2.2332
-v 2.3235 4.2740 2.2332
-v 2.3235 4.0678 2.2332
-# 238 vertices
-
-vn 0.9985 0.0551 0.0032
-vn -0.9992 -0.0404 -0.0032
-vn 0.7038 0.0551 0.7083
-vn -0.7043 -0.0404 -0.7088
-vn -0.0032 0.0551 0.9985
-vn 0.0032 -0.0404 -0.9992
-vn -0.7083 0.0551 0.7038
-vn 0.7088 -0.0404 -0.7043
-vn -0.9985 0.0551 -0.0032
-vn 0.9992 -0.0404 0.0032
-vn -0.7038 0.0551 -0.7083
-vn 0.7043 -0.0404 0.7088
-vn 0.0032 0.0551 -0.9985
-vn -0.0032 -0.0404 0.9992
-vn 0.7083 0.0551 -0.7038
-vn -0.7088 -0.0404 0.7043
-vn 0.9583 -0.2859 0.0030
-vn 0.6755 -0.2859 0.6797
-vn -0.0030 -0.2859 0.9583
-vn -0.6797 -0.2859 0.6755
-vn -0.9583 -0.2859 -0.0030
-vn -0.6755 -0.2859 -0.6797
-vn 0.0030 -0.2859 -0.9583
-vn 0.6797 -0.2859 -0.6755
-vn 0.0000 1.0000 0.0000
-vn 0.4910 -0.1894 -0.8504
-vn -0.5000 -0.0000 0.8660
-vn 0.9819 -0.1894 -0.0000
-vn -1.0000 0.0000 -0.0000
-vn 0.4910 -0.1894 0.8504
-vn -0.5000 -0.0000 -0.8660
-vn -0.4910 -0.1894 0.8504
-vn -0.0000 1.0000 0.0000
-vn 0.5000 -0.0000 -0.8660
-vn -0.9819 -0.1894 0.0000
-vn 1.0000 0.0000 -0.0000
-vn -0.4910 -0.1894 -0.8504
-vn 0.5000 -0.0000 0.8660
-vn 0.4910 0.1894 -0.8504
-vn 0.9819 0.1894 -0.0000
-vn 0.4910 0.1894 0.8504
-vn -0.4910 0.1894 0.8504
-vn -0.9819 0.1894 0.0000
-vn -0.4910 0.1894 -0.8504
-vn 0.4000 -0.6147 -0.6798
-vn -0.9844 0.1624 -0.0673
-vn 0.4299 0.4376 0.7897
-vn 0.4104 -0.5289 -0.7429
-vn -0.8731 -0.3134 0.3735
-vn 0.4104 0.8234 0.3918
-vn 0.2376 -0.3681 -0.8989
-vn -0.4653 -0.5690 0.6781
-vn 0.2376 0.9492 0.2064
-vn 0.0000 -0.3090 -0.9511
-vn 0.0000 -0.6428 0.7660
-vn -0.0000 0.9903 0.1392
-vn -0.2376 -0.3681 -0.8989
-vn 0.4653 -0.5690 0.6781
-vn -0.2376 0.9492 0.2064
-vn -0.4104 -0.5289 -0.7429
-vn 0.8731 -0.3134 0.3734
-vn -0.4104 0.8234 0.3918
-vn -0.4550 -0.7224 -0.5207
-vn 0.9908 0.0868 -0.1035
-vn -0.4550 0.6382 0.6210
-vn 0.4550 -0.7224 -0.5207
-vn -0.9908 0.0868 -0.1035
-vn 0.4550 0.6382 0.6210
-vn -0.4000 -0.6147 -0.6798
-vn 0.9844 0.1624 -0.0673
-vn -0.4299 0.4376 0.7897
-vn -0.0000 -0.7612 0.6485
-vn -0.9898 0.0808 0.1170
-vn 0.0000 0.7920 -0.6105
-vn 0.9859 -0.0989 -0.1353
-vn 0.0000 -0.7612 -0.6485
-vn -0.9898 0.0808 -0.1170
-vn 0.0000 0.7920 0.6105
-vn 0.9859 -0.0989 0.1353
-vn 0.0000 -0.0000 1.0000
-vn -0.9935 -0.1139 -0.0000
-vn 0.0000 0.0000 -1.0000
-vn 0.9935 0.1139 -0.0000
-vn -0.0000 -0.0000 1.0000
-vn -0.9936 0.1127 0.0000
-vn -0.0000 0.0000 -1.0000
-vn 0.9931 -0.1174 0.0000
-vn 0.0000 -1.0000 -0.0000
-vn -1.0000 -0.0000 -0.0000
-vn 1.0000 -0.0000 0.0000
-vn 0.0000 -0.7612 0.6485
-vn 0.9898 0.0808 0.1170
-vn -0.9859 -0.0989 -0.1353
-vn 0.9898 0.0808 -0.1170
-vn -0.9859 -0.0989 0.1353
-vn 0.9935 -0.1139 0.0000
-vn -0.9935 0.1139 0.0000
-vn 0.9936 0.1127 0.0000
-vn -0.9931 -0.1174 -0.0000
-vn -1.0000 -0.0000 0.0000
-vn -0.1717 -0.9851 0.0000
-vn -0.0444 -0.0000 0.9990
-vn 0.1717 0.9851 0.0000
-vn -0.0293 0.0000 -0.9996
-vn 0.1725 -0.9850 0.0000
-vn 0.0475 -0.0086 0.9988
-vn -0.1706 0.9853 -0.0000
-vn 0.0369 -0.0083 -0.9993
-vn 1.0000 0.0053 -0.0056
-vn 0.1223 -0.7317 0.6705
-vn -0.1219 0.7292 -0.6733
-vn -1.0000 0.0053 -0.0056
-vn -0.1223 -0.7317 0.6705
-vn 0.1219 0.7292 -0.6733
-vn 0.9766 -0.2148 0.0031
-vn 0.6928 -0.2148 -0.6884
-vn 0.0031 -0.2148 -0.9766
-vn -0.6884 -0.2148 -0.6928
-vn -0.9766 -0.2148 -0.0031
-vn -0.6928 -0.2148 0.6884
-vn -0.0031 -0.2148 0.9766
-vn 0.6884 -0.2148 0.6928
-vn -0.1030 -0.9947 -0.0003
-vn -0.0726 -0.9947 -0.0731
-vn 0.0003 -0.9947 -0.1030
-vn 0.0731 -0.9947 -0.0726
-vn 0.1030 -0.9947 0.0003
-vn 0.0726 -0.9947 0.0731
-vn -0.0003 -0.9947 0.1030
-vn -0.0731 -0.9947 0.0726
-vn 0.7045 -0.0317 0.7090
-vn -0.0032 -0.0317 0.9995
-vn -0.7090 -0.0317 0.7045
-vn -0.9995 -0.0317 -0.0032
-vn -0.7045 -0.0317 -0.7090
-vn 0.0032 -0.0317 -0.9995
-vn 0.7090 -0.0317 -0.7045
-vn 0.9995 -0.0317 0.0032
-vn 0.0000 1.0000 -0.0000
-vn -0.0000 1.0000 -0.0000
-vn 0.0135 0.9998 -0.0134
-vn 0.0001 0.9998 -0.0190
-vn -0.0134 0.9998 -0.0135
-vn -0.0190 0.9998 -0.0001
-vn -0.0135 0.9998 0.0134
-vn -0.0001 0.9998 0.0190
-vn 0.0134 0.9998 0.0135
-vn 0.0190 0.9998 0.0001
-vn -1.0000 0.0053 0.0056
-vn -0.1223 -0.7317 -0.6705
-vn 0.1219 0.7292 0.6733
-vn 1.0000 0.0053 0.0056
-vn 0.1223 -0.7317 -0.6705
-vn -0.1219 0.7292 0.6733
-# 154 vertex normals
-
-vt 0.2239 0.9582 0.0000
-vt 0.2956 0.9582 0.0000
-vt 0.2956 0.9813 0.0000
-vt 0.2239 0.9813 0.0000
-vt 0.6981 0.4745 0.0000
-vt 0.6481 0.4745 0.0000
-vt 0.6481 0.4250 0.0000
-vt 0.6981 0.4250 0.0000
-vt 0.0089 0.9582 0.0000
-vt 0.0805 0.9582 0.0000
-vt 0.0805 0.9813 0.0000
-vt 0.0089 0.9813 0.0000
-vt 0.1500 0.9582 0.0000
-vt 0.1500 0.9813 0.0000
-vt 0.2217 0.9582 0.0000
-vt 0.2217 0.9813 0.0000
-vt 0.1522 0.9582 0.0000
-vt 0.1522 0.9813 0.0000
-vt 0.2694 0.8091 0.0000
-vt 0.3575 0.8091 0.0000
-vt 0.3575 0.8362 0.0000
-vt 0.2694 0.8362 0.0000
-vt 0.0050 0.8091 0.0000
-vt 0.0931 0.8091 0.0000
-vt 0.0931 0.8362 0.0000
-vt 0.0050 0.8362 0.0000
-vt 0.1813 0.8091 0.0000
-vt 0.1813 0.8362 0.0000
-vt 0.9021 0.7436 0.0000
-vt 0.9884 0.7433 0.0000
-vt 0.9886 0.7791 0.0000
-vt 0.9022 0.7794 0.0000
-vt 0.9273 0.7182 0.0000
-vt 0.9631 0.7181 0.0000
-vt 0.9633 0.8045 0.0000
-vt 0.9276 0.8046 0.0000
-vt 0.4225 0.7567 0.0000
-vt 0.3739 0.7478 0.0000
-vt 0.3792 0.7144 0.0000
-vt 0.4236 0.7209 0.0000
-vt 0.4096 0.7906 0.0000
-vt 0.4029 0.7965 0.0000
-vt 0.3668 0.7872 0.0000
-vt 0.3687 0.7804 0.0000
-vt 0.9628 0.8255 0.0000
-vt 0.9859 0.8256 0.0000
-vt 0.9856 0.8700 0.0000
-vt 0.9625 0.8699 0.0000
-vt 0.3297 0.7421 0.0000
-vt 0.3319 0.7086 0.0000
-vt 0.3267 0.7831 0.0000
-vt 0.3273 0.7760 0.0000
-vt 0.2845 0.7412 0.0000
-vt 0.2835 0.7076 0.0000
-vt 0.2858 0.7825 0.0000
-vt 0.2856 0.7753 0.0000
-vt 0.2860 0.7825 0.0000
-vt 0.0756 0.6646 0.0000
-vt 0.0832 0.6680 0.0000
-vt 0.0803 0.6775 0.0000
-vt 0.0716 0.6780 0.0000
-vt 0.3119 0.6839 0.0000
-vt 0.2977 0.6888 0.0000
-vt 0.2975 0.6818 0.0000
-vt 0.3061 0.6799 0.0000
-vt 0.2061 0.7218 0.0000
-vt 0.1979 0.7267 0.0000
-vt 0.1950 0.7215 0.0000
-vt 0.2058 0.7160 0.0000
-vt 0.0693 0.6955 0.0000
-vt 0.0782 0.6946 0.0000
-vt 0.0903 0.7196 0.0000
-vt 0.0830 0.7239 0.0000
-vt 0.2823 0.6822 0.0000
-vt 0.2824 0.6892 0.0000
-vt 0.2578 0.6899 0.0000
-vt 0.2577 0.6828 0.0000
-vt 0.1859 0.7298 0.0000
-vt 0.1894 0.7350 0.0000
-vt 0.1688 0.7416 0.0000
-vt 0.1672 0.7359 0.0000
-vt 0.1153 0.7380 0.0000
-vt 0.1113 0.7447 0.0000
-vt 0.2304 0.6905 0.0000
-vt 0.2302 0.6834 0.0000
-vt 0.1447 0.7400 0.0000
-vt 0.1453 0.7346 0.0000
-vt 0.1469 0.7465 0.0000
-vt 0.1468 0.7543 0.0000
-vt 0.2016 0.6916 0.0000
-vt 0.2013 0.6846 0.0000
-vt 0.1206 0.7317 0.0000
-vt 0.1235 0.7271 0.0000
-vt 0.1781 0.7441 0.0000
-vt 0.1816 0.7517 0.0000
-vt 0.1742 0.6930 0.0000
-vt 0.1738 0.6860 0.0000
-vt 0.1006 0.7183 0.0000
-vt 0.1053 0.7147 0.0000
-vt 0.2030 0.7310 0.0000
-vt 0.2093 0.7374 0.0000
-vt 0.1496 0.6944 0.0000
-vt 0.1492 0.6874 0.0000
-vt 0.0874 0.7010 0.0000
-vt 0.0934 0.6991 0.0000
-vt 0.2133 0.7170 0.0000
-vt 0.2193 0.7232 0.0000
-vt 0.1344 0.6954 0.0000
-vt 0.1340 0.6883 0.0000
-vt 0.0867 0.6887 0.0000
-vt 0.0925 0.6872 0.0000
-vt 0.2177 0.7080 0.0000
-vt 0.2256 0.7108 0.0000
-vt 0.1198 0.6917 0.0000
-vt 0.1252 0.6872 0.0000
-vt 0.0853 0.6791 0.0000
-vt 0.0900 0.6756 0.0000
-vt 0.8686 0.4503 0.0000
-vt 0.8602 0.4537 0.0000
-vt 0.8568 0.4454 0.0000
-vt 0.8652 0.4419 0.0000
-vt 0.4316 0.2725 0.0000
-vt 0.4412 0.4245 0.0000
-vt 0.4715 0.4254 0.0000
-vt 0.4631 0.2738 0.0000
-vt 0.4354 0.4803 0.0000
-vt 0.6812 0.4986 0.0000
-vt 0.6391 0.5296 0.0000
-vt 0.4677 0.5253 0.0000
-vt 0.7540 0.7227 0.0000
-vt 0.7259 0.7227 0.0000
-vt 0.7104 0.5721 0.0000
-vt 0.7385 0.5721 0.0000
-vt 0.7328 0.3910 0.0000
-vt 0.7072 0.3910 0.0000
-vt 0.7072 0.2553 0.0000
-vt 0.7328 0.2553 0.0000
-vt 0.7385 0.8750 0.0000
-vt 0.7104 0.8689 0.0000
-vt 0.7328 0.5281 0.0000
-vt 0.7072 0.5281 0.0000
-vt 0.4336 0.8157 0.0000
-vt 0.5568 0.8159 0.0000
-vt 0.5567 0.8330 0.0000
-vt 0.4336 0.8328 0.0000
-vt 0.6156 0.5421 0.0000
-vt 0.5880 0.5670 0.0000
-vt 0.4416 0.5670 0.0000
-vt 0.4077 0.5421 0.0000
-vt 0.5414 0.8438 0.0000
-vt 0.5414 0.8626 0.0000
-vt 0.4454 0.8625 0.0000
-vt 0.4454 0.8436 0.0000
-vt 0.5880 0.5650 0.0000
-vt 0.6156 0.5400 0.0000
-vt 0.4077 0.5400 0.0000
-vt 0.4416 0.5650 0.0000
-vt 0.8568 0.8820 0.0000
-vt 0.8568 0.8568 0.0000
-vt 0.7762 0.8607 0.0000
-vt 0.7762 0.8794 0.0000
-vt 0.8579 0.8109 0.0000
-vt 0.8579 0.8320 0.0000
-vt 0.7705 0.8472 0.0000
-vt 0.7705 0.8260 0.0000
-vt 0.9371 0.8787 0.0000
-vt 0.9371 0.8610 0.0000
-vt 0.9450 0.8260 0.0000
-vt 0.9460 0.8472 0.0000
-vt 0.9380 0.8607 0.0000
-vt 0.9380 0.8790 0.0000
-vt 0.0988 0.4994 0.0000
-vt 0.0988 0.6767 0.0000
-vt 0.0897 0.6679 0.0000
-vt 0.0903 0.4912 0.0000
-vt 0.8296 0.5549 0.0000
-vt 0.8296 0.4722 0.0000
-vt 0.8972 0.4776 0.0000
-vt 0.8978 0.5642 0.0000
-vt 0.2369 0.4875 0.0000
-vt 0.0992 0.4876 0.0000
-vt 0.2368 0.4756 0.0000
-vt 0.2377 0.6567 0.0000
-vt 0.3859 0.6664 0.0000
-vt 0.3768 0.6754 0.0000
-vt 0.3751 0.4981 0.0000
-vt 0.3835 0.4897 0.0000
-vt 0.7620 0.4776 0.0000
-vt 0.7613 0.5642 0.0000
-vt 0.3746 0.4863 0.0000
-vt 0.2718 0.8593 0.0000
-vt 0.3599 0.8593 0.0000
-vt 0.3599 0.8934 0.0000
-vt 0.2718 0.8934 0.0000
-vt 0.1836 0.8593 0.0000
-vt 0.1836 0.8934 0.0000
-vt 0.0955 0.8593 0.0000
-vt 0.0955 0.8934 0.0000
-vt 0.0073 0.8593 0.0000
-vt 0.0073 0.8934 0.0000
-vt 0.6906 0.6470 0.0000
-vt 0.6907 0.6100 0.0000
-vt 0.6947 0.6083 0.0000
-vt 0.6946 0.6487 0.0000
-vt 0.6643 0.6730 0.0000
-vt 0.6660 0.6771 0.0000
-vt 0.6273 0.6729 0.0000
-vt 0.6256 0.6769 0.0000
-vt 0.6012 0.6467 0.0000
-vt 0.5972 0.6483 0.0000
-vt 0.6014 0.6097 0.0000
-vt 0.5973 0.6080 0.0000
-vt 0.6276 0.5836 0.0000
-vt 0.6260 0.5796 0.0000
-vt 0.6646 0.5837 0.0000
-vt 0.6663 0.5797 0.0000
-vt 0.0955 0.9283 0.0000
-vt 0.0073 0.9283 0.0000
-vt 0.1836 0.9283 0.0000
-vt 0.2718 0.9283 0.0000
-vt 0.3599 0.9283 0.0000
-vt 0.6553 0.7336 0.0000
-vt 0.6147 0.7338 0.0000
-vt 0.6062 0.7134 0.0000
-vt 0.6637 0.7132 0.0000
-vt 0.5861 0.7626 0.0000
-vt 0.5656 0.7542 0.0000
-vt 0.5862 0.8032 0.0000
-vt 0.5658 0.8117 0.0000
-vt 0.6150 0.8318 0.0000
-vt 0.6066 0.8522 0.0000
-vt 0.6556 0.8317 0.0000
-vt 0.6641 0.8521 0.0000
-vt 0.6842 0.8029 0.0000
-vt 0.7047 0.8113 0.0000
-vt 0.6841 0.7623 0.0000
-vt 0.7045 0.7537 0.0000
-vt 0.4901 0.7084 0.0000
-vt 0.5278 0.7080 0.0000
-vt 0.5414 0.7398 0.0000
-vt 0.4772 0.7405 0.0000
-vt 0.4632 0.6821 0.0000
-vt 0.4314 0.6956 0.0000
-vt 0.4628 0.6444 0.0000
-vt 0.4307 0.6315 0.0000
-vt 0.4891 0.6175 0.0000
-vt 0.4755 0.5857 0.0000
-vt 0.5268 0.6171 0.0000
-vt 0.5397 0.5850 0.0000
-vt 0.5537 0.6434 0.0000
-vt 0.5855 0.6298 0.0000
-vt 0.5541 0.6811 0.0000
-vt 0.5862 0.6939 0.0000
-# 253 texture coords
-
-o well
-g well
-f 1/1/1 2/2/1 3/3/1
-f 3/3/1 4/4/1 1/1/1
-f 5/5/2 6/6/2 7/7/2
-f 7/7/2 8/8/2 5/5/2
-f 2/9/3 9/10/3 10/11/3
-f 10/11/3 3/12/3 2/9/3
-f 6/5/4 11/6/4 12/7/4
-f 12/7/4 7/8/4 6/5/4
-f 9/10/5 13/13/5 14/14/5
-f 14/14/5 10/11/5 9/10/5
-f 11/5/6 15/6/6 16/7/6
-f 16/7/6 12/8/6 11/5/6
-f 13/13/7 17/15/7 18/16/7
-f 18/16/7 14/14/7 13/13/7
-f 15/5/8 19/6/8 20/7/8
-f 20/7/8 16/8/8 15/5/8
-f 17/15/9 21/2/9 22/3/9
-f 22/3/9 18/16/9 17/15/9
-f 19/5/10 23/6/10 24/7/10
-f 24/7/10 20/8/10 19/5/10
-f 21/9/11 25/10/11 26/11/11
-f 26/11/11 22/12/11 21/9/11
-f 23/5/12 27/6/12 28/7/12
-f 28/7/12 24/8/12 23/5/12
-f 25/10/13 29/17/13 30/18/13
-f 30/18/13 26/11/13 25/10/13
-f 28/8/14 27/5/14 31/6/14
-f 31/6/14 32/7/14 28/8/14
-f 29/17/15 1/1/15 4/4/15
-f 4/4/15 30/18/15 29/17/15
-f 32/8/16 31/5/16 5/6/16
-f 5/6/16 8/7/16 32/8/16
-f 33/19/17 34/20/17 35/21/17
-f 35/21/17 36/22/17 33/19/17
-f 34/23/18 37/24/18 38/25/18
-f 38/25/18 35/26/18 34/23/18
-f 37/24/19 39/27/19 40/28/19
-f 40/28/19 38/25/19 37/24/19
-f 39/27/20 41/19/20 42/22/20
-f 42/22/20 40/28/20 39/27/20
-f 41/19/21 43/20/21 44/21/21
-f 44/21/21 42/22/21 41/19/21
-f 43/23/22 45/24/22 46/25/22
-f 46/25/22 44/26/22 43/23/22
-f 45/24/23 47/27/23 48/28/23
-f 48/28/23 46/25/23 45/24/23
-f 47/27/24 33/19/24 36/22/24
-f 36/22/24 48/28/24 47/27/24
-f 19/29/25 6/30/25 5/31/25
-f 5/31/25 23/32/25 19/29/25
-f 6/30/25 19/29/25 15/33/25
-f 15/33/25 11/34/25 6/30/25
-f 23/32/25 5/31/25 31/35/25
-f 31/35/25 27/36/25 23/32/25
-f 49/37/26 50/38/26 51/39/26
-f 51/39/26 52/40/26 49/37/26
-f 53/41/25 54/42/25 55/43/25
-f 55/43/25 56/44/25 53/41/25
-f 57/45/27 58/46/27 55/47/27
-f 55/47/27 54/48/27 57/45/27
-f 50/38/28 59/49/28 60/50/28
-f 60/50/28 51/39/28 50/38/28
-f 56/44/25 55/43/25 61/51/25
-f 61/51/25 62/52/25 56/44/25
-f 58/45/29 63/46/29 61/47/29
-f 61/47/29 55/48/29 58/45/29
-f 59/49/30 64/53/30 65/54/30
-f 65/54/30 60/50/30 59/49/30
-f 62/52/25 61/51/25 66/55/25
-f 66/55/25 67/56/25 62/52/25
-f 63/45/31 68/46/31 66/47/31
-f 66/47/31 61/48/31 63/45/31
-f 64/53/32 69/49/32 70/50/32
-f 70/50/32 65/54/32 64/53/32
-f 67/56/33 66/57/33 71/51/33
-f 71/51/33 72/52/33 67/56/33
-f 68/45/34 73/46/34 71/47/34
-f 71/47/34 66/48/34 68/45/34
-f 69/49/35 74/38/35 75/39/35
-f 75/39/35 70/50/35 69/49/35
-f 72/52/25 71/51/25 76/43/25
-f 76/43/25 77/44/25 72/52/25
-f 73/45/36 78/46/36 76/47/36
-f 76/47/36 71/48/36 73/45/36
-f 74/38/37 49/37/37 52/40/37
-f 52/40/37 75/39/37 74/38/37
-f 77/44/25 76/43/25 54/42/25
-f 54/42/25 53/41/25 77/44/25
-f 76/48/38 78/45/38 57/46/38
-f 57/46/38 54/47/38 76/48/38
-f 53/41/39 56/44/39 50/38/39
-f 50/38/39 49/37/39 53/41/39
-f 56/44/40 62/52/40 59/49/40
-f 59/49/40 50/38/40 56/44/40
-f 62/52/41 67/56/41 64/53/41
-f 64/53/41 59/49/41 62/52/41
-f 67/56/42 72/52/42 69/49/42
-f 69/49/42 64/53/42 67/56/42
-f 72/52/43 77/44/43 74/38/43
-f 74/38/43 69/49/43 72/52/43
-f 77/44/44 53/41/44 49/37/44
-f 49/37/44 74/38/44 77/44/44
-f 79/58/45 80/59/45 81/60/45
-f 81/60/45 82/61/45 79/58/45
-f 83/62/46 84/63/46 81/64/46
-f 81/64/46 80/65/46 83/62/46
-f 79/66/47 82/67/47 84/68/47
-f 84/68/47 83/69/47 79/66/47
-f 85/70/48 86/71/48 87/72/48
-f 87/72/48 88/73/48 85/70/48
-f 86/74/49 89/75/49 90/76/49
-f 90/76/49 87/77/49 86/74/49
-f 89/78/50 85/79/50 88/80/50
-f 88/80/50 90/81/50 89/78/50
-f 88/73/51 87/72/51 91/82/51
-f 91/82/51 92/83/51 88/73/51
-f 87/77/52 90/76/52 93/84/52
-f 93/84/52 91/85/52 87/77/52
-f 90/81/53 88/80/53 92/86/53
-f 92/86/53 93/87/53 90/81/53
-f 92/83/54 91/82/54 94/88/54
-f 94/88/54 95/89/54 92/83/54
-f 91/85/55 93/84/55 96/90/55
-f 96/90/55 94/91/55 91/85/55
-f 93/87/56 92/86/56 95/92/56
-f 95/92/56 96/93/56 93/87/56
-f 95/89/57 94/88/57 97/94/57
-f 97/94/57 98/95/57 95/89/57
-f 94/91/58 96/90/58 99/96/58
-f 99/96/58 97/97/58 94/91/58
-f 96/93/59 95/92/59 98/98/59
-f 98/98/59 99/99/59 96/93/59
-f 98/95/60 97/94/60 100/100/60
-f 100/100/60 101/101/60 98/95/60
-f 97/97/61 99/96/61 102/102/61
-f 102/102/61 100/103/61 97/97/61
-f 99/99/62 98/98/62 101/104/62
-f 101/104/62 102/105/62 99/99/62
-f 100/100/63 103/106/63 104/107/63
-f 104/107/63 101/101/63 100/100/63
-f 102/102/64 105/108/64 103/109/64
-f 103/109/64 100/103/64 102/102/64
-f 102/105/65 101/104/65 104/110/65
-f 104/110/65 105/111/65 102/105/65
-f 86/71/66 85/70/66 82/61/66
-f 82/61/66 81/60/66 86/71/66
-f 89/75/67 86/74/67 81/64/67
-f 81/64/67 84/63/67 89/75/67
-f 82/67/68 85/79/68 89/78/68
-f 89/78/68 84/68/68 82/67/68
-f 103/106/69 106/112/69 107/113/69
-f 107/113/69 104/107/69 103/106/69
-f 108/114/70 106/115/70 103/109/70
-f 103/109/70 105/108/70 108/114/70
-f 107/116/71 108/117/71 105/111/71
-f 105/111/71 104/110/71 107/116/71
-f 109/118/25 110/119/25 111/120/25
-f 111/120/25 112/121/25 109/118/25
-f 109/118/25 110/119/25 111/120/25
-f 111/120/25 112/121/25 109/118/25
-f 113/122/72 114/123/72 115/124/72
-f 115/124/72 116/125/72 113/122/72
-f 116/126/73 115/127/73 117/128/73
-f 117/128/73 118/129/73 116/126/73
-f 118/122/74 117/123/74 119/124/74
-f 119/124/74 120/125/74 118/122/74
-f 120/129/75 119/128/75 114/127/75
-f 114/127/75 113/126/75 120/129/75
-f 121/123/76 122/124/76 123/125/76
-f 123/125/76 124/122/76 121/123/76
-f 125/128/77 121/127/77 124/126/77
-f 124/126/77 126/129/77 125/128/77
-f 127/124/78 125/123/78 126/122/78
-f 126/122/78 128/125/78 127/124/78
-f 122/127/79 127/128/79 128/129/79
-f 128/129/79 123/126/79 122/127/79
-f 129/130/80 130/131/80 131/132/80
-f 131/132/80 132/133/80 129/130/80
-f 130/134/81 133/135/81 134/136/81
-f 134/136/81 131/137/81 130/134/81
-f 133/131/82 135/130/82 136/133/82
-f 136/133/82 134/132/82 133/131/82
-f 135/135/83 129/134/83 132/137/83
-f 132/137/83 136/136/83 135/135/83
-f 129/130/84 137/138/84 138/139/84
-f 138/139/84 130/131/84 129/130/84
-f 130/134/85 138/140/85 139/141/85
-f 139/141/85 133/135/85 130/134/85
-f 133/131/86 139/139/86 140/138/86
-f 140/138/86 135/130/86 133/131/86
-f 135/135/87 140/141/87 137/140/87
-f 137/140/87 129/134/87 135/135/87
-f 141/142/88 142/143/88 143/144/88
-f 143/144/88 144/145/88 141/142/88
-f 143/146/89 145/147/89 146/148/89
-f 146/148/89 144/149/89 143/146/89
-f 145/150/25 147/151/25 148/152/25
-f 148/152/25 146/153/25 145/150/25
-f 147/154/90 142/155/90 141/156/90
-f 141/156/90 148/157/90 147/154/90
-f 149/123/91 150/124/91 151/125/91
-f 151/125/91 152/122/91 149/123/91
-f 153/128/92 149/127/92 152/126/92
-f 152/126/92 154/129/92 153/128/92
-f 155/124/74 153/123/74 154/122/74
-f 154/122/74 156/125/74 155/124/74
-f 150/127/93 155/128/93 156/129/93
-f 156/129/93 151/126/93 150/127/93
-f 157/125/76 158/124/76 159/123/76
-f 159/123/76 160/122/76 157/125/76
-f 160/126/94 159/127/94 161/128/94
-f 161/128/94 162/129/94 160/126/94
-f 162/122/78 161/123/78 163/124/78
-f 163/124/78 164/125/78 162/122/78
-f 164/129/95 163/128/95 158/127/95
-f 158/127/95 157/126/95 164/129/95
-f 165/133/84 166/130/84 167/131/84
-f 167/131/84 168/132/84 165/133/84
-f 169/136/96 170/135/96 166/134/96
-f 166/134/96 165/137/96 169/136/96
-f 171/132/82 172/131/82 170/130/82
-f 170/130/82 169/133/82 171/132/82
-f 168/137/97 167/134/97 172/135/97
-f 172/135/97 171/136/97 168/137/97
-f 173/138/80 174/139/80 167/131/80
-f 167/131/80 166/130/80 173/138/80
-f 175/141/98 173/140/98 166/134/98
-f 166/134/98 170/135/98 175/141/98
-f 176/139/82 175/138/82 170/130/82
-f 170/130/82 172/131/82 176/139/82
-f 174/140/99 176/141/99 172/135/99
-f 172/135/99 167/134/99 174/140/99
-f 177/143/88 178/144/88 179/145/88
-f 179/145/88 180/142/88 177/143/88
-f 181/157/36 182/154/36 179/155/36
-f 179/155/36 178/156/36 181/157/36
-f 183/151/25 184/152/25 182/153/25
-f 182/153/25 181/150/25 183/151/25
-f 177/156/100 180/155/100 184/154/100
-f 184/154/100 183/157/100 177/156/100
-f 185/158/101 186/159/101 187/160/101
-f 187/160/101 188/161/101 185/158/101
-f 186/162/102 189/163/102 190/164/102
-f 190/164/102 187/165/102 186/162/102
-f 189/159/103 191/158/103 192/161/103
-f 192/161/103 190/160/103 189/159/103
-f 191/163/104 185/162/104 188/165/104
-f 188/165/104 192/164/104 191/163/104
-f 185/158/105 193/166/105 194/167/105
-f 194/167/105 186/159/105 185/158/105
-f 186/162/106 194/168/106 195/169/106
-f 195/169/106 189/163/106 186/162/106
-f 189/159/107 195/170/107 196/171/107
-f 196/171/107 191/158/107 189/159/107
-f 191/163/108 196/169/108 193/168/108
-f 193/168/108 185/162/108 191/163/108
-f 197/172/109 198/173/109 199/174/109
-f 199/174/109 200/175/109 197/172/109
-f 201/176/110 202/177/110 200/178/110
-f 200/178/110 199/179/110 201/176/110
-f 203/180/82 197/172/82 200/181/82
-f 200/181/82 202/182/82 203/180/82
-f 204/183/111 198/173/111 197/172/111
-f 197/172/111 203/180/111 204/183/111
-f 205/184/112 206/185/112 207/186/112
-f 207/186/112 208/187/112 205/184/112
-f 208/188/113 202/177/113 201/176/113
-f 201/176/113 205/189/113 208/188/113
-f 208/190/82 207/186/82 203/180/82
-f 203/180/82 202/182/82 208/190/82
-f 207/186/114 206/185/114 204/183/114
-f 204/183/114 203/180/114 207/186/114
-f 209/191/115 210/192/115 211/193/115
-f 211/193/115 212/194/115 209/191/115
-f 213/195/116 209/191/116 212/194/116
-f 212/194/116 214/196/116 213/195/116
-f 215/197/117 213/195/117 214/196/117
-f 214/196/117 216/198/117 215/197/117
-f 217/199/118 215/197/118 216/198/118
-f 216/198/118 218/200/118 217/199/118
-f 219/191/119 217/192/119 218/193/119
-f 218/193/119 220/194/119 219/191/119
-f 221/195/120 219/191/120 220/194/120
-f 220/194/120 222/196/120 221/195/120
-f 223/197/121 221/195/121 222/196/121
-f 222/196/121 224/198/121 223/197/121
-f 210/199/122 223/197/122 224/198/122
-f 224/198/122 211/200/122 210/199/122
-f 210/201/123 209/202/123 36/203/123
-f 36/203/123 35/204/123 210/201/123
-f 223/205/124 210/201/124 35/204/124
-f 35/204/124 38/206/124 223/205/124
-f 221/207/125 223/205/125 38/206/125
-f 38/206/125 40/208/125 221/207/125
-f 219/209/126 221/207/126 40/208/126
-f 40/208/126 42/210/126 219/209/126
-f 217/211/127 219/209/127 42/210/127
-f 42/210/127 44/212/127 217/211/127
-f 215/213/128 217/211/128 44/212/128
-f 44/212/128 46/214/128 215/213/128
-f 213/215/129 215/213/129 46/214/129
-f 46/214/129 48/216/129 213/215/129
-f 209/202/130 213/215/130 48/216/130
-f 48/216/130 36/203/130 209/202/130
-f 211/200/131 224/198/131 225/217/131
-f 225/217/131 226/218/131 211/200/131
-f 224/198/132 222/196/132 227/219/132
-f 227/219/132 225/217/132 224/198/132
-f 222/196/133 220/194/133 228/220/133
-f 228/220/133 227/219/133 222/196/133
-f 220/194/134 218/193/134 229/221/134
-f 229/221/134 228/220/134 220/194/134
-f 218/200/135 216/198/135 230/217/135
-f 230/217/135 229/218/135 218/200/135
-f 216/198/136 214/196/136 231/219/136
-f 231/219/136 230/217/136 216/198/136
-f 214/196/137 212/194/137 232/220/137
-f 232/220/137 231/219/137 214/196/137
-f 212/194/138 211/193/138 226/221/138
-f 226/221/138 232/220/138 212/194/138
-f 232/222/33 226/223/33 2/224/33
-f 2/224/33 1/225/33 232/222/33
-f 226/223/139 225/226/139 9/227/139
-f 9/227/139 2/224/139 226/223/139
-f 225/226/33 227/228/33 13/229/33
-f 13/229/33 9/227/33 225/226/33
-f 227/228/25 228/230/25 17/231/25
-f 17/231/25 13/229/25 227/228/25
-f 228/230/139 229/232/139 21/233/139
-f 21/233/139 17/231/139 228/230/139
-f 229/232/25 230/234/25 25/235/25
-f 25/235/25 21/233/25 229/232/25
-f 230/234/25 231/236/25 29/237/25
-f 29/237/25 25/235/25 230/234/25
-f 231/236/140 232/222/140 1/225/140
-f 1/225/140 29/237/140 231/236/140
-f 16/238/141 20/239/141 41/240/141
-f 41/240/141 39/241/141 16/238/141
-f 12/242/142 16/238/142 39/241/142
-f 39/241/142 37/243/142 12/242/142
-f 7/244/143 12/242/143 37/243/143
-f 37/243/143 34/245/143 7/244/143
-f 8/246/144 7/244/144 34/245/144
-f 34/245/144 33/247/144 8/246/144
-f 32/248/145 8/246/145 33/247/145
-f 33/247/145 47/249/145 32/248/145
-f 28/250/146 32/248/146 47/249/146
-f 47/249/146 45/251/146 28/250/146
-f 24/252/147 28/250/147 45/251/147
-f 45/251/147 43/253/147 24/252/147
-f 20/239/148 24/252/148 43/253/148
-f 43/253/148 41/240/148 20/239/148
-f 233/172/149 206/173/149 205/174/149
-f 205/174/149 234/175/149 233/172/149
-f 201/176/150 235/177/150 234/178/150
-f 234/178/150 205/179/150 201/176/150
-f 236/180/84 233/172/84 234/181/84
-f 234/181/84 235/182/84 236/180/84
-f 204/183/151 206/173/151 233/172/151
-f 233/172/151 236/180/151 204/183/151
-f 199/184/152 198/185/152 237/186/152
-f 237/186/152 238/187/152 199/184/152
-f 238/188/153 235/177/153 201/176/153
-f 201/176/153 199/189/153 238/188/153
-f 238/190/84 237/186/84 236/180/84
-f 236/180/84 235/182/84 238/190/84
-f 237/186/154 198/185/154 204/183/154
-f 204/183/154 236/180/154 237/186/154
-# 368 faces
-
diff --git a/examples/web/models/resources/models/well_diffuse.png b/examples/web/models/resources/models/well_diffuse.png
deleted file mode 100644
index f8f6686..0000000
--- a/examples/web/models/resources/models/well_diffuse.png
+++ /dev/null
Binary files differ
diff --git a/examples/web/models/resources/plane/LICENSE b/examples/web/models/resources/plane/LICENSE
deleted file mode 100644
index 57333b2..0000000
--- a/examples/web/models/resources/plane/LICENSE
+++ /dev/null
@@ -1,9 +0,0 @@
-WWI Plane Model created by GiaHanLam (https://sketchfab.com/GiaHanLam)
-This model is free to use, licensed as Creative Commons Attribution (CC-BY 4.0)
-
-License details: https://creativecommons.org/licenses/by/4.0/
-
-As per the license, author must be credited and commercial use is allowed.
-
-This model was donwload from author Sketchfab account: https://sketchfab.com/3d-models/wwi-plane-model-f0d39a6daacd4925a8922db193886715
-
diff --git a/examples/web/models/resources/plane/plane.bin b/examples/web/models/resources/plane/plane.bin
deleted file mode 100644
index 4e5ee53..0000000
--- a/examples/web/models/resources/plane/plane.bin
+++ /dev/null
Binary files differ
diff --git a/examples/web/models/resources/plane/plane.gltf b/examples/web/models/resources/plane/plane.gltf
deleted file mode 100644
index 928b172..0000000
--- a/examples/web/models/resources/plane/plane.gltf
+++ /dev/null
@@ -1,327 +0,0 @@
-{
- "accessors": [
- {
- "bufferView": 2,
- "componentType": 5126,
- "count": 3446,
- "max": [
- 143.99604797363281,
- 168.74668884277344,
- 75.31597900390625
- ],
- "min": [
- -143.99604797363281,
- -43.94732666015625,
- -49.556678771972656
- ],
- "type": "VEC3"
- },
- {
- "bufferView": 2,
- "byteOffset": 41352,
- "componentType": 5126,
- "count": 3446,
- "max": [
- 1,
- 0.99916732311248779,
- 0.99978786706924438
- ],
- "min": [
- -1,
- -0.99928808212280273,
- -0.99977350234985352
- ],
- "type": "VEC3"
- },
- {
- "bufferView": 3,
- "componentType": 5126,
- "count": 3446,
- "max": [
- 1,
- 1,
- 1,
- 1
- ],
- "min": [
- 0,
- 0,
- 0,
- 0
- ],
- "type": "VEC4"
- },
- {
- "bufferView": 1,
- "componentType": 5126,
- "count": 3446,
- "max": [
- 4.8965663909912109,
- 0.99786919355392456
- ],
- "min": [
- 0.0036561768501996994,
- 0.0083234198391437531
- ],
- "type": "VEC2"
- },
- {
- "bufferView": 0,
- "componentType": 5125,
- "count": 7692,
- "max": [
- 3445
- ],
- "min": [
- 0
- ],
- "type": "SCALAR"
- }
- ],
- "asset": {
- "extras": {
- "author": "GiaHanLam (https://sketchfab.com/GiaHanLam)",
- "license": "CC-BY-4.0 (http://creativecommons.org/licenses/by/4.0/)",
- "source": "https://sketchfab.com/3d-models/wwi-plane-model-f0d39a6daacd4925a8922db193886715",
- "title": "WWI Plane Model"
- },
- "generator": "Sketchfab-8.25.0",
- "version": "2.0"
- },
- "bufferViews": [
- {
- "buffer": 0,
- "byteLength": 30768,
- "byteOffset": 0,
- "name": "floatBufferViews",
- "target": 34963
- },
- {
- "buffer": 0,
- "byteLength": 27568,
- "byteOffset": 30768,
- "byteStride": 8,
- "name": "floatBufferViews",
- "target": 34962
- },
- {
- "buffer": 0,
- "byteLength": 82704,
- "byteOffset": 58336,
- "byteStride": 12,
- "name": "floatBufferViews",
- "target": 34962
- },
- {
- "buffer": 0,
- "byteLength": 55136,
- "byteOffset": 141040,
- "byteStride": 16,
- "name": "floatBufferViews",
- "target": 34962
- }
- ],
- "buffers": [
- {
- "byteLength": 196176,
- "uri": "plane.bin"
- }
- ],
- "images": [
- {
- "uri": "plane_diffuse.png"
- }
- ],
- "materials": [
- {
- "doubleSided": true,
- "name": "Material_24",
- "pbrMetallicRoughness": {
- "baseColorFactor": [
- 1,
- 1,
- 1,
- 1
- ],
- "baseColorTexture": {
- "index": 0,
- "texCoord": 0
- },
- "metallicFactor": 0,
- "roughnessFactor": 0.59999999999999998
- }
- }
- ],
- "meshes": [
- {
- "name": "BODY_Material #24_0",
- "primitives": [
- {
- "attributes": {
- "COLOR_0": 2,
- "NORMAL": 1,
- "POSITION": 0,
- "TEXCOORD_0": 3
- },
- "indices": 4,
- "material": 0,
- "mode": 4
- }
- ]
- }
- ],
- "nodes": [
- {
- "children": [
- 1
- ],
- "name": "RootNode (gltf orientation matrix)",
- "rotation": [
- -0.70710678118654746,
- -0,
- -0,
- 0.70710678118654757
- ]
- },
- {
- "children": [
- 2
- ],
- "name": "RootNode (model correction matrix)"
- },
- {
- "children": [
- 3
- ],
- "matrix": [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- -1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- "name": "base"
- },
- {
- "children": [
- 4,
- 6
- ],
- "name": "RootNode"
- },
- {
- "children": [
- 5
- ],
- "matrix": [
- 1,
- 0,
- 0,
- 0,
- 0,
- 2.2204460492503131e-16,
- -1,
- 0,
- 0,
- 1,
- 2.2204460492503131e-16,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- "name": "BODY"
- },
- {
- "mesh": 0,
- "name": "BODY_Material #24_0"
- },
- {
- "children": [
- 7
- ],
- "matrix": [
- 1,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- -680,
- 0,
- 90,
- 1
- ],
- "name": "Sky001"
- },
- {
- "children": [
- 8
- ],
- "matrix": [
- 1,
- 0,
- 0,
- 0,
- 0,
- 2.2204460492503131e-16,
- 1,
- 0,
- 0,
- -1,
- 2.2204460492503131e-16,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- "name": ""
- },
- {
- "name": ""
- }
- ],
- "samplers": [
- {
- "magFilter": 9729,
- "minFilter": 9987,
- "wrapS": 10497,
- "wrapT": 10497
- }
- ],
- "scene": 0,
- "scenes": [
- {
- "name": "OSG_Scene",
- "nodes": [
- 0
- ]
- }
- ],
- "textures": [
- {
- "sampler": 0,
- "source": 0
- }
- ]
-}
-
diff --git a/examples/web/models/resources/plane/plane_diffuse.png b/examples/web/models/resources/plane/plane_diffuse.png
deleted file mode 100644
index 07371c0..0000000
--- a/examples/web/models/resources/plane/plane_diffuse.png
+++ /dev/null
Binary files differ
diff --git a/examples/web/models/resources/shaders/glsl100/cubemap.fs b/examples/web/models/resources/shaders/glsl100/cubemap.fs
deleted file mode 100644
index 402cdea..0000000
--- a/examples/web/models/resources/shaders/glsl100/cubemap.fs
+++ /dev/null
@@ -1,29 +0,0 @@
-#version 100
-
-precision mediump float;
-
-// Input vertex attributes (from vertex shader)
-varying vec3 fragPosition;
-
-// Input uniform values
-uniform sampler2D equirectangularMap;
-
-vec2 SampleSphericalMap(vec3 v)
-{
- vec2 uv = vec2(atan(v.z, v.x), asin(v.y));
- uv *= vec2(0.1591, 0.3183);
- uv += 0.5;
- return uv;
-}
-
-void main()
-{
- // Normalize local position
- vec2 uv = SampleSphericalMap(normalize(fragPosition));
-
- // Fetch color from texture map
- vec3 color = texture2D(equirectangularMap, uv).rgb;
-
- // Calculate final fragment color
- gl_FragColor = vec4(color, 1.0);
-}
diff --git a/examples/web/models/resources/shaders/glsl100/cubemap.vs b/examples/web/models/resources/shaders/glsl100/cubemap.vs
deleted file mode 100644
index 6f486fb..0000000
--- a/examples/web/models/resources/shaders/glsl100/cubemap.vs
+++ /dev/null
@@ -1,20 +0,0 @@
-#version 100
-
-// Input vertex attributes
-attribute vec3 vertexPosition;
-
-// Input uniform values
-uniform mat4 matProjection;
-uniform mat4 matView;
-
-// Output vertex attributes (to fragment shader)
-varying vec3 fragPosition;
-
-void main()
-{
- // Calculate fragment position based on model transformations
- fragPosition = vertexPosition;
-
- // Calculate final vertex position
- gl_Position = matProjection*matView*vec4(vertexPosition, 1.0);
-}
diff --git a/examples/web/models/resources/shaders/glsl100/skybox.fs b/examples/web/models/resources/shaders/glsl100/skybox.fs
deleted file mode 100644
index 1269a96..0000000
--- a/examples/web/models/resources/shaders/glsl100/skybox.fs
+++ /dev/null
@@ -1,28 +0,0 @@
-#version 100
-
-precision mediump float;
-
-// Input vertex attributes (from vertex shader)
-varying vec3 fragPosition;
-
-// Input uniform values
-uniform samplerCube environmentMap;
-uniform bool vflipped;
-
-void main()
-{
- // Fetch color from texture map
- vec4 texelColor = vec4(0.0);
-
- if (vflipped) texelColor = textureCube(environmentMap, vec3(fragPosition.x, -fragPosition.y, fragPosition.z));
- else texelColor = textureCube(environmentMap, fragPosition);
-
- vec3 color = vec3(texelColor.x, texelColor.y, texelColor.z);
-
- // Apply gamma correction
- color = color/(color + vec3(1.0));
- color = pow(color, vec3(1.0/2.2));
-
- // Calculate final fragment color
- gl_FragColor = vec4(color, 1.0);
-}
diff --git a/examples/web/models/resources/shaders/glsl100/skybox.vs b/examples/web/models/resources/shaders/glsl100/skybox.vs
deleted file mode 100644
index e440ace..0000000
--- a/examples/web/models/resources/shaders/glsl100/skybox.vs
+++ /dev/null
@@ -1,24 +0,0 @@
-#version 100
-
-// Input vertex attributes
-attribute vec3 vertexPosition;
-
-// Input uniform values
-uniform mat4 matProjection;
-uniform mat4 matView;
-
-// Output vertex attributes (to fragment shader)
-varying vec3 fragPosition;
-
-void main()
-{
- // Calculate fragment position based on model transformations
- fragPosition = vertexPosition;
-
- // Remove translation from the view matrix
- mat4 rotView = mat4(mat3(matView));
- vec4 clipPos = matProjection*rotView*vec4(vertexPosition, 1.0);
-
- // Calculate final vertex position
- gl_Position = clipPos;
-}
diff --git a/examples/web/models/resources/shaders/glsl330/brdf.fs b/examples/web/models/resources/shaders/glsl330/brdf.fs
deleted file mode 100644
index d04bc66..0000000
--- a/examples/web/models/resources/shaders/glsl330/brdf.fs
+++ /dev/null
@@ -1,133 +0,0 @@
-/*******************************************************************************************
-*
-* BRDF LUT Generation - Bidirectional reflectance distribution function fragment shader
-*
-* REF: https://github.com/HectorMF/BRDFGenerator
-*
-* Copyright (c) 2017 Victor Fisac
-*
-**********************************************************************************************/
-
-#version 330
-
-
-// Input vertex attributes (from vertex shader)
-in vec2 fragTexCoord;
-
-// Constant values
-const float PI = 3.14159265359;
-const uint MAX_SAMPLES = 1024u;
-
-// Output fragment color
-out vec4 finalColor;
-
-vec2 Hammersley(uint i, uint N);
-float RadicalInverseVdC(uint bits);
-float GeometrySchlickGGX(float NdotV, float roughness);
-float GeometrySmith(vec3 N, vec3 V, vec3 L, float roughness);
-vec3 ImportanceSampleGGX(vec2 Xi, vec3 N, float roughness);
-vec2 IntegrateBRDF(float NdotV, float roughness);
-
-float RadicalInverseVdC(uint bits)
-{
- bits = (bits << 16u) | (bits >> 16u);
- bits = ((bits & 0x55555555u) << 1u) | ((bits & 0xAAAAAAAAu) >> 1u);
- bits = ((bits & 0x33333333u) << 2u) | ((bits & 0xCCCCCCCCu) >> 2u);
- bits = ((bits & 0x0F0F0F0Fu) << 4u) | ((bits & 0xF0F0F0F0u) >> 4u);
- bits = ((bits & 0x00FF00FFu) << 8u) | ((bits & 0xFF00FF00u) >> 8u);
- return float(bits) * 2.3283064365386963e-10; // / 0x100000000
-}
-
-// Compute Hammersley coordinates
-vec2 Hammersley(uint i, uint N)
-{
- return vec2(float(i)/float(N), RadicalInverseVdC(i));
-}
-
-// Integrate number of importance samples for (roughness and NoV)
-vec3 ImportanceSampleGGX(vec2 Xi, vec3 N, float roughness)
-{
- float a = roughness*roughness;
- float phi = 2.0 * PI * Xi.x;
- float cosTheta = sqrt((1.0 - Xi.y)/(1.0 + (a*a - 1.0)*Xi.y));
- float sinTheta = sqrt(1.0 - cosTheta*cosTheta);
-
- // Transform from spherical coordinates to cartesian coordinates (halfway vector)
- vec3 H = vec3(cos(phi)*sinTheta, sin(phi)*sinTheta, cosTheta);
-
- // Transform from tangent space H vector to world space sample vector
- vec3 up = ((abs(N.z) < 0.999) ? vec3(0.0, 0.0, 1.0) : vec3(1.0, 0.0, 0.0));
- vec3 tangent = normalize(cross(up, N));
- vec3 bitangent = cross(N, tangent);
- vec3 sampleVec = tangent*H.x + bitangent*H.y + N*H.z;
-
- return normalize(sampleVec);
-}
-
-float GeometrySchlickGGX(float NdotV, float roughness)
-{
- // For IBL k is calculated different
- float k = (roughness*roughness)/2.0;
-
- float nom = NdotV;
- float denom = NdotV*(1.0 - k) + k;
-
- return nom/denom;
-}
-
-// Compute the geometry term for the BRDF given roughness squared, NoV, NoL
-float GeometrySmith(vec3 N, vec3 V, vec3 L, float roughness)
-{
- float NdotV = max(dot(N, V), 0.0);
- float NdotL = max(dot(N, L), 0.0);
- float ggx2 = GeometrySchlickGGX(NdotV, roughness);
- float ggx1 = GeometrySchlickGGX(NdotL, roughness);
-
- return ggx1*ggx2;
-}
-
-vec2 IntegrateBRDF(float NdotV, float roughness)
-{
- float A = 0.0;
- float B = 0.0;
- vec3 V = vec3(sqrt(1.0 - NdotV*NdotV), 0.0, NdotV);
- vec3 N = vec3(0.0, 0.0, 1.0);
-
- for (uint i = 0u; i < MAX_SAMPLES; i++)
- {
- // Generate a sample vector that's biased towards the preferred alignment direction (importance sampling)
-
- vec2 Xi = Hammersley(i, MAX_SAMPLES); // Compute a Hammersely coordinate
- vec3 H = ImportanceSampleGGX(Xi, N, roughness); // Integrate number of importance samples for (roughness and NoV)
- vec3 L = normalize(2.0*dot(V, H)*H - V); // Compute reflection vector L
-
- float NdotL = max(L.z, 0.0); // Compute normal dot light
- float NdotH = max(H.z, 0.0); // Compute normal dot half
- float VdotH = max(dot(V, H), 0.0); // Compute view dot half
-
- if (NdotL > 0.0)
- {
- float G = GeometrySmith(N, V, L, roughness); // Compute the geometry term for the BRDF given roughness squared, NoV, NoL
- float GVis = (G*VdotH)/(NdotH*NdotV); // Compute the visibility term given G, VoH, NoH, NoV, NoL
- float Fc = pow(1.0 - VdotH, 5.0); // Compute the fresnel term given VoH
-
- A += (1.0 - Fc)*GVis; // Sum the result given fresnel, geometry, visibility
- B += Fc*GVis;
- }
- }
-
- // Calculate brdf average sample
- A /= float(MAX_SAMPLES);
- B /= float(MAX_SAMPLES);
-
- return vec2(A, B);
-}
-
-void main()
-{
- // Calculate brdf based on texture coordinates
- vec2 brdf = IntegrateBRDF(fragTexCoord.x, fragTexCoord.y);
-
- // Calculate final fragment color
- finalColor = vec4(brdf.r, brdf.g, 0.0, 1.0);
-}
diff --git a/examples/web/models/resources/shaders/glsl330/brdf.vs b/examples/web/models/resources/shaders/glsl330/brdf.vs
deleted file mode 100644
index 0638467..0000000
--- a/examples/web/models/resources/shaders/glsl330/brdf.vs
+++ /dev/null
@@ -1,25 +0,0 @@
-/*******************************************************************************************
-*
-* rPBR [shader] - Bidirectional reflectance distribution function vertex shader
-*
-* Copyright (c) 2017 Victor Fisac
-*
-**********************************************************************************************/
-
-#version 330
-
-// Input vertex attributes
-in vec3 vertexPosition;
-in vec2 vertexTexCoord;
-
-// Output vertex attributes (to fragment shader)
-out vec2 fragTexCoord;
-
-void main()
-{
- // Calculate fragment position based on model transformations
- fragTexCoord = vertexTexCoord;
-
- // Calculate final vertex position
- gl_Position = vec4(vertexPosition, 1.0);
-} \ No newline at end of file
diff --git a/examples/web/models/resources/shaders/glsl330/cubemap.fs b/examples/web/models/resources/shaders/glsl330/cubemap.fs
deleted file mode 100644
index e4d4ddd..0000000
--- a/examples/web/models/resources/shaders/glsl330/cubemap.fs
+++ /dev/null
@@ -1,30 +0,0 @@
-#version 330
-
-// Input vertex attributes (from vertex shader)
-in vec3 fragPosition;
-
-// Input uniform values
-uniform sampler2D equirectangularMap;
-
-// Output fragment color
-out vec4 finalColor;
-
-vec2 SampleSphericalMap(vec3 v)
-{
- vec2 uv = vec2(atan(v.z, v.x), asin(v.y));
- uv *= vec2(0.1591, 0.3183);
- uv += 0.5;
- return uv;
-}
-
-void main()
-{
- // Normalize local position
- vec2 uv = SampleSphericalMap(normalize(fragPosition));
-
- // Fetch color from texture map
- vec3 color = texture(equirectangularMap, uv).rgb;
-
- // Calculate final fragment color
- finalColor = vec4(color, 1.0);
-}
diff --git a/examples/web/models/resources/shaders/glsl330/cubemap.vs b/examples/web/models/resources/shaders/glsl330/cubemap.vs
deleted file mode 100644
index 8c1cde4..0000000
--- a/examples/web/models/resources/shaders/glsl330/cubemap.vs
+++ /dev/null
@@ -1,28 +0,0 @@
-/*******************************************************************************************
-*
-* rPBR [shader] - Equirectangular to cubemap vertex shader
-*
-* Copyright (c) 2017 Victor Fisac
-*
-**********************************************************************************************/
-
-#version 330
-
-// Input vertex attributes
-in vec3 vertexPosition;
-
-// Input uniform values
-uniform mat4 matProjection;
-uniform mat4 matView;
-
-// Output vertex attributes (to fragment shader)
-out vec3 fragPosition;
-
-void main()
-{
- // Calculate fragment position based on model transformations
- fragPosition = vertexPosition;
-
- // Calculate final vertex position
- gl_Position = matProjection*matView*vec4(vertexPosition, 1.0);
-}
diff --git a/examples/web/models/resources/shaders/glsl330/irradiance.fs b/examples/web/models/resources/shaders/glsl330/irradiance.fs
deleted file mode 100644
index 4ef03e0..0000000
--- a/examples/web/models/resources/shaders/glsl330/irradiance.fs
+++ /dev/null
@@ -1,58 +0,0 @@
-/*******************************************************************************************
-*
-* rPBR [shader] - Irradiance cubemap fragment shader
-*
-* Copyright (c) 2017 Victor Fisac
-*
-**********************************************************************************************/
-
-#version 330
-
-// Input vertex attributes (from vertex shader)
-in vec3 fragPosition;
-
-// Input uniform values
-uniform samplerCube environmentMap;
-
-// Constant values
-const float PI = 3.14159265359;
-
-// Output fragment color
-out vec4 finalColor;
-
-void main()
-{
- // The sample direction equals the hemisphere's orientation
- vec3 normal = normalize(fragPosition);
-
- vec3 irradiance = vec3(0.0);
-
- vec3 up = vec3(0.0, 1.0, 0.0);
- vec3 right = cross(up, normal);
- up = cross(normal, right);
-
- float sampleDelta = 0.025;
- float nrSamples = 0.0;
-
- for (float phi = 0.0; phi < 2.0*PI; phi += sampleDelta)
- {
- for (float theta = 0.0; theta < 0.5*PI; theta += sampleDelta)
- {
- // Spherical to cartesian (in tangent space)
- vec3 tangentSample = vec3(sin(theta)*cos(phi), sin(theta)*sin(phi), cos(theta));
-
- // tangent space to world
- vec3 sampleVec = tangentSample.x*right + tangentSample.y*up + tangentSample.z*normal;
-
- // Fetch color from environment cubemap
- irradiance += texture(environmentMap, sampleVec).rgb*cos(theta)*sin(theta);
- nrSamples++;
- }
- }
-
- // Calculate irradiance average value from samples
- irradiance = PI*irradiance*(1.0/float(nrSamples));
-
- // Calculate final fragment color
- finalColor = vec4(irradiance, 1.0);
-}
diff --git a/examples/web/models/resources/shaders/glsl330/pbr.fs b/examples/web/models/resources/shaders/glsl330/pbr.fs
deleted file mode 100644
index 68bf203..0000000
--- a/examples/web/models/resources/shaders/glsl330/pbr.fs
+++ /dev/null
@@ -1,300 +0,0 @@
-/*******************************************************************************************
-*
-* rPBR [shader] - Physically based rendering fragment shader
-*
-* Copyright (c) 2017 Victor Fisac
-*
-**********************************************************************************************/
-
-#version 330
-
-#define MAX_REFLECTION_LOD 4.0
-#define MAX_DEPTH_LAYER 20
-#define MIN_DEPTH_LAYER 10
-
-#define MAX_LIGHTS 4
-#define LIGHT_DIRECTIONAL 0
-#define LIGHT_POINT 1
-
-struct MaterialProperty {
- vec3 color;
- int useSampler;
- sampler2D sampler;
-};
-
-struct Light {
- int enabled;
- int type;
- vec3 position;
- vec3 target;
- vec4 color;
-};
-
-// Input vertex attributes (from vertex shader)
-in vec3 fragPosition;
-in vec2 fragTexCoord;
-in vec3 fragNormal;
-in vec3 fragTangent;
-in vec3 fragBinormal;
-
-// Input material values
-uniform MaterialProperty albedo;
-uniform MaterialProperty normals;
-uniform MaterialProperty metalness;
-uniform MaterialProperty roughness;
-uniform MaterialProperty occlusion;
-uniform MaterialProperty emission;
-uniform MaterialProperty height;
-
-// Input uniform values
-uniform samplerCube irradianceMap;
-uniform samplerCube prefilterMap;
-uniform sampler2D brdfLUT;
-
-// Input lighting values
-uniform Light lights[MAX_LIGHTS];
-
-// Other uniform values
-uniform int renderMode;
-uniform vec3 viewPos;
-vec2 texCoord;
-
-// Constant values
-const float PI = 3.14159265359;
-
-// Output fragment color
-out vec4 finalColor;
-
-vec3 ComputeMaterialProperty(MaterialProperty property);
-float DistributionGGX(vec3 N, vec3 H, float roughness);
-float GeometrySchlickGGX(float NdotV, float roughness);
-float GeometrySmith(vec3 N, vec3 V, vec3 L, float roughness);
-vec3 fresnelSchlick(float cosTheta, vec3 F0);
-vec3 fresnelSchlickRoughness(float cosTheta, vec3 F0, float roughness);
-vec2 ParallaxMapping(vec2 texCoords, vec3 viewDir);
-
-// WARNING: There is some weird behaviour with this function, always returns black!
-// Yes, I even tried: return texture(property.sampler, texCoord).rgb;
-vec3 ComputeMaterialProperty(MaterialProperty property)
-{
- vec3 result = vec3(0.0, 0.0, 0.0);
-
- if (property.useSampler == 1) result = texture(property.sampler, texCoord).rgb;
- else result = property.color;
-
- return result;
-}
-
-float DistributionGGX(vec3 N, vec3 H, float roughness)
-{
- float a = roughness*roughness;
- float a2 = a*a;
- float NdotH = max(dot(N, H), 0.0);
- float NdotH2 = NdotH*NdotH;
-
- float nom = a2;
- float denom = (NdotH2*(a2 - 1.0) + 1.0);
- denom = PI*denom*denom;
-
- return nom/denom;
-}
-
-float GeometrySchlickGGX(float NdotV, float roughness)
-{
- float r = (roughness + 1.0);
- float k = r*r/8.0;
-
- float nom = NdotV;
- float denom = NdotV*(1.0 - k) + k;
-
- return nom/denom;
-}
-float GeometrySmith(vec3 N, vec3 V, vec3 L, float roughness)
-{
- float NdotV = max(dot(N, V), 0.0);
- float NdotL = max(dot(N, L), 0.0);
- float ggx2 = GeometrySchlickGGX(NdotV, roughness);
- float ggx1 = GeometrySchlickGGX(NdotL, roughness);
-
- return ggx1*ggx2;
-}
-
-vec3 fresnelSchlick(float cosTheta, vec3 F0)
-{
- return F0 + (1.0 - F0)*pow(1.0 - cosTheta, 5.0);
-}
-
-vec3 fresnelSchlickRoughness(float cosTheta, vec3 F0, float roughness)
-{
- return F0 + (max(vec3(1.0 - roughness), F0) - F0)*pow(1.0 - cosTheta, 5.0);
-}
-
-vec2 ParallaxMapping(vec2 texCoords, vec3 viewDir)
-{
- // Calculate the number of depth layers and calculate the size of each layer
- float numLayers = mix(MAX_DEPTH_LAYER, MIN_DEPTH_LAYER, abs(dot(vec3(0.0, 0.0, 1.0), viewDir)));
- float layerDepth = 1.0/numLayers;
-
- // Calculate depth of current layer
- float currentLayerDepth = 0.0;
-
- // Calculate the amount to shift the texture coordinates per layer (from vector P)
- // Note: height amount is stored in height material attribute color R channel (sampler use is independent)
- vec2 P = viewDir.xy*height.color.r;
- vec2 deltaTexCoords = P/numLayers;
-
- // Store initial texture coordinates and depth values
- vec2 currentTexCoords = texCoords;
- float currentDepthMapValue = texture(height.sampler, currentTexCoords).r;
-
- while (currentLayerDepth < currentDepthMapValue)
- {
- // Shift texture coordinates along direction of P
- currentTexCoords -= deltaTexCoords;
-
- // Get depth map value at current texture coordinates
- currentDepthMapValue = texture(height.sampler, currentTexCoords).r;
-
- // Get depth of next layer
- currentLayerDepth += layerDepth;
- }
-
- // Get texture coordinates before collision (reverse operations)
- vec2 prevTexCoords = currentTexCoords + deltaTexCoords;
-
- // Get depth after and before collision for linear interpolation
- float afterDepth = currentDepthMapValue - currentLayerDepth;
- float beforeDepth = texture(height.sampler, prevTexCoords).r - currentLayerDepth + layerDepth;
-
- // Interpolation of texture coordinates
- float weight = afterDepth/(afterDepth - beforeDepth);
- vec2 finalTexCoords = prevTexCoords*weight + currentTexCoords*(1.0 - weight);
-
- return finalTexCoords;
-}
-
-void main()
-{
- // Calculate TBN and RM matrices
- mat3 TBN = transpose(mat3(fragTangent, fragBinormal, fragNormal));
-
- // Calculate lighting required attributes
- vec3 normal = normalize(fragNormal);
- vec3 view = normalize(viewPos - fragPosition);
- vec3 refl = reflect(-view, normal);
-
- // Check if parallax mapping is enabled and calculate texture coordinates to use based on height map
- // NOTE: remember that 'texCoord' variable must be assigned before calling any ComputeMaterialProperty() function
- if (height.useSampler == 1) texCoord = ParallaxMapping(fragTexCoord, view);
- else texCoord = fragTexCoord; // Use default texture coordinates
-
- // Fetch material values from texture sampler or color attributes
- vec3 color = texture(albedo.sampler, texCoord).rgb; //ComputeMaterialProperty(albedo);
- vec3 metal = texture(metalness.sampler, texCoord).rgb; //ComputeMaterialProperty(metalness);
- vec3 rough = texture(roughness.sampler, texCoord).rgb; //ComputeMaterialProperty(roughness);
- vec3 emiss = texture(emission.sampler, texCoord).rgb; //ComputeMaterialProperty(emission);
- vec3 ao = texture(occlusion.sampler, texCoord).rgb; //ComputeMaterialProperty(occlusion);
-
- // Check if normal mapping is enabled
- if (normals.useSampler == 1)
- {
- // Fetch normal map color and transform lighting values to tangent space
- normal = texture(normals.sampler, texCoord).rgb; //ComputeMaterialProperty(normals);
- normal = normalize(normal*2.0 - 1.0);
- normal = normalize(normal*TBN);
-
- // Convert tangent space normal to world space due to cubemap reflection calculations
- refl = normalize(reflect(-view, normal));
- }
-
- // Calculate reflectance at normal incidence
- vec3 F0 = vec3(0.04);
- F0 = mix(F0, color, metal.r);
-
- // Calculate lighting for all lights
- vec3 Lo = vec3(0.0);
- vec3 lightDot = vec3(0.0);
-
- for (int i = 0; i < MAX_LIGHTS; i++)
- {
- if (lights[i].enabled == 1)
- {
- // Calculate per-light radiance
- vec3 light = vec3(0.0);
- vec3 radiance = lights[i].color.rgb;
- if (lights[i].type == LIGHT_DIRECTIONAL) light = -normalize(lights[i].target - lights[i].position);
- else if (lights[i].type == LIGHT_POINT)
- {
- light = normalize(lights[i].position - fragPosition);
- float distance = length(lights[i].position - fragPosition);
- float attenuation = 1.0/(distance*distance);
- radiance *= attenuation;
- }
-
- // Cook-torrance BRDF
- vec3 high = normalize(view + light);
- float NDF = DistributionGGX(normal, high, rough.r);
- float G = GeometrySmith(normal, view, light, rough.r);
- vec3 F = fresnelSchlick(max(dot(high, view), 0.0), F0);
- vec3 nominator = NDF*G*F;
- float denominator = 4*max(dot(normal, view), 0.0)*max(dot(normal, light), 0.0) + 0.001;
- vec3 brdf = nominator/denominator;
-
- // Store to kS the fresnel value and calculate energy conservation
- vec3 kS = F;
- vec3 kD = vec3(1.0) - kS;
-
- // Multiply kD by the inverse metalness such that only non-metals have diffuse lighting
- kD *= 1.0 - metal.r;
-
- // Scale light by dot product between normal and light direction
- float NdotL = max(dot(normal, light), 0.0);
-
- // Add to outgoing radiance Lo
- // Note: BRDF is already multiplied by the Fresnel so it doesn't need to be multiplied again
- Lo += (kD*color/PI + brdf)*radiance*NdotL*lights[i].color.a;
- lightDot += radiance*NdotL + brdf*lights[i].color.a;
- }
- }
-
- // Calculate ambient lighting using IBL
- vec3 F = fresnelSchlickRoughness(max(dot(normal, view), 0.0), F0, rough.r);
- vec3 kS = F;
- vec3 kD = 1.0 - kS;
- kD *= 1.0 - metal.r;
-
- // Calculate indirect diffuse
- vec3 irradiance = texture(irradianceMap, fragNormal).rgb;
- vec3 diffuse = color*irradiance;
-
- // Sample both the prefilter map and the BRDF lut and combine them together as per the Split-Sum approximation
- vec3 prefilterColor = textureLod(prefilterMap, refl, rough.r*MAX_REFLECTION_LOD).rgb;
- vec2 brdf = texture(brdfLUT, vec2(max(dot(normal, view), 0.0), rough.r)).rg;
- vec3 reflection = prefilterColor*(F*brdf.x + brdf.y);
-
- // Calculate final lighting
- vec3 ambient = (kD*diffuse + reflection)*ao;
-
- // Calculate fragment color based on render mode
- vec3 fragmentColor = ambient + Lo + emiss; // Physically Based Rendering
-
- if (renderMode == 1) fragmentColor = color; // Albedo
- else if (renderMode == 2) fragmentColor = normal; // Normals
- else if (renderMode == 3) fragmentColor = metal; // Metalness
- else if (renderMode == 4) fragmentColor = rough; // Roughness
- else if (renderMode == 5) fragmentColor = ao; // Ambient Occlusion
- else if (renderMode == 6) fragmentColor = emiss; // Emission
- else if (renderMode == 7) fragmentColor = lightDot; // Lighting
- else if (renderMode == 8) fragmentColor = kS; // Fresnel
- else if (renderMode == 9) fragmentColor = irradiance; // Irradiance
- else if (renderMode == 10) fragmentColor = reflection; // Reflection
-
- // Apply HDR tonemapping
- fragmentColor = fragmentColor/(fragmentColor + vec3(1.0));
-
- // Apply gamma correction
- fragmentColor = pow(fragmentColor, vec3(1.0/2.2));
-
- // Calculate final fragment color
- finalColor = vec4(fragmentColor, 1.0);
-}
diff --git a/examples/web/models/resources/shaders/glsl330/pbr.vs b/examples/web/models/resources/shaders/glsl330/pbr.vs
deleted file mode 100644
index 045428c..0000000
--- a/examples/web/models/resources/shaders/glsl330/pbr.vs
+++ /dev/null
@@ -1,49 +0,0 @@
-/*******************************************************************************************
-*
-* rPBR [shader] - Physically based rendering vertex shader
-*
-* Copyright (c) 2017 Victor Fisac
-*
-**********************************************************************************************/
-
-#version 330
-
-// Input vertex attributes
-in vec3 vertexPosition;
-in vec2 vertexTexCoord;
-in vec3 vertexNormal;
-in vec4 vertexTangent;
-
-// Input uniform values
-uniform mat4 mvp;
-uniform mat4 matModel;
-
-// Output vertex attributes (to fragment shader)
-out vec3 fragPosition;
-out vec2 fragTexCoord;
-out vec3 fragNormal;
-out vec3 fragTangent;
-out vec3 fragBinormal;
-
-void main()
-{
- // Calculate binormal from vertex normal and tangent
- vec3 vertexBinormal = cross(vertexNormal, vec3(vertexTangent));
-
- // Calculate fragment normal based on normal transformations
- mat3 normalMatrix = transpose(inverse(mat3(matModel)));
-
- // Calculate fragment position based on model transformations
- fragPosition = vec3(matModel*vec4(vertexPosition, 1.0));
-
- // Send vertex attributes to fragment shader
- fragTexCoord = vertexTexCoord;
- fragNormal = normalize(normalMatrix*vertexNormal);
- fragTangent = normalize(normalMatrix*vec3(vertexTangent));
- fragTangent = normalize(fragTangent - dot(fragTangent, fragNormal)*fragNormal);
- fragBinormal = normalize(normalMatrix*vertexBinormal);
- fragBinormal = cross(fragNormal, fragTangent);
-
- // Calculate final vertex position
- gl_Position = mvp*vec4(vertexPosition, 1.0);
-} \ No newline at end of file
diff --git a/examples/web/models/resources/shaders/glsl330/prefilter.fs b/examples/web/models/resources/shaders/glsl330/prefilter.fs
deleted file mode 100644
index 941ea86..0000000
--- a/examples/web/models/resources/shaders/glsl330/prefilter.fs
+++ /dev/null
@@ -1,120 +0,0 @@
-/*******************************************************************************************
-*
-* rPBR [shader] - Prefiltered environment for reflections fragment shader
-*
-* Copyright (c) 2017 Victor Fisac
-*
-**********************************************************************************************/
-
-#version 330
-#define MAX_SAMPLES 1024u
-#define CUBEMAP_RESOLUTION 1024.0
-
-// Input vertex attributes (from vertex shader)
-in vec3 fragPosition;
-
-// Input uniform values
-uniform samplerCube environmentMap;
-uniform float roughness;
-
-// Constant values
-const float PI = 3.14159265359;
-
-// Output fragment color
-out vec4 finalColor;
-
-float DistributionGGX(vec3 N, vec3 H, float roughness);
-float RadicalInverse_VdC(uint bits);
-vec2 Hammersley(uint i, uint N);
-vec3 ImportanceSampleGGX(vec2 Xi, vec3 N, float roughness);
-
-float DistributionGGX(vec3 N, vec3 H, float roughness)
-{
- float a = roughness*roughness;
- float a2 = a*a;
- float NdotH = max(dot(N, H), 0.0);
- float NdotH2 = NdotH*NdotH;
-
- float nom = a2;
- float denom = (NdotH2*(a2 - 1.0) + 1.0);
- denom = PI*denom*denom;
-
- return nom/denom;
-}
-
-float RadicalInverse_VdC(uint bits)
-{
- bits = (bits << 16u) | (bits >> 16u);
- bits = ((bits & 0x55555555u) << 1u) | ((bits & 0xAAAAAAAAu) >> 1u);
- bits = ((bits & 0x33333333u) << 2u) | ((bits & 0xCCCCCCCCu) >> 2u);
- bits = ((bits & 0x0F0F0F0Fu) << 4u) | ((bits & 0xF0F0F0F0u) >> 4u);
- bits = ((bits & 0x00FF00FFu) << 8u) | ((bits & 0xFF00FF00u) >> 8u);
- return float(bits)*2.3283064365386963e-10; // / 0x100000000
-}
-
-vec2 Hammersley(uint i, uint N)
-{
- return vec2(float(i)/float(N), RadicalInverse_VdC(i));
-}
-
-vec3 ImportanceSampleGGX(vec2 Xi, vec3 N, float roughness)
-{
- float a = roughness*roughness;
- float phi = 2.0*PI*Xi.x;
- float cosTheta = sqrt((1.0 - Xi.y)/(1.0 + (a*a - 1.0)*Xi.y));
- float sinTheta = sqrt(1.0 - cosTheta*cosTheta);
-
- // Transform from spherical coordinates to cartesian coordinates (halfway vector)
- vec3 H = vec3(cos(phi)*sinTheta, sin(phi)*sinTheta, cosTheta);
-
- // Transform from tangent space H vector to world space sample vector
- vec3 up = ((abs(N.z) < 0.999) ? vec3(0.0, 0.0, 1.0) : vec3(1.0, 0.0, 0.0));
- vec3 tangent = normalize(cross(up, N));
- vec3 bitangent = cross(N, tangent);
- vec3 sampleVec = tangent*H.x + bitangent*H.y + N*H.z;
-
- return normalize(sampleVec);
-}
-
-void main()
-{
- // Make the simplyfying assumption that V equals R equals the normal
- vec3 N = normalize(fragPosition);
- vec3 R = N;
- vec3 V = R;
-
- vec3 prefilteredColor = vec3(0.0);
- float totalWeight = 0.0;
-
- for (uint i = 0u; i < MAX_SAMPLES; i++)
- {
- // Generate a sample vector that's biased towards the preferred alignment direction (importance sampling)
- vec2 Xi = Hammersley(i, MAX_SAMPLES);
- vec3 H = ImportanceSampleGGX(Xi, N, roughness);
- vec3 L = normalize(2.0*dot(V, H)*H - V);
-
- float NdotL = max(dot(N, L), 0.0);
- if(NdotL > 0.0)
- {
- // Sample from the environment's mip level based on roughness/pdf
- float D = DistributionGGX(N, H, roughness);
- float NdotH = max(dot(N, H), 0.0);
- float HdotV = max(dot(H, V), 0.0);
- float pdf = D*NdotH/(4.0*HdotV) + 0.0001;
-
- float resolution = CUBEMAP_RESOLUTION;
- float saTexel = 4.0*PI/(6.0*resolution*resolution);
- float saSample = 1.0/(float(MAX_SAMPLES)*pdf + 0.0001);
- float mipLevel = ((roughness == 0.0) ? 0.0 : 0.5*log2(saSample/saTexel));
-
- prefilteredColor += textureLod(environmentMap, L, mipLevel).rgb*NdotL;
- totalWeight += NdotL;
- }
- }
-
- // Calculate prefilter average color
- prefilteredColor = prefilteredColor/totalWeight;
-
- // Calculate final fragment color
- finalColor = vec4(prefilteredColor, 1.0);
-}
diff --git a/examples/web/models/resources/shaders/glsl330/skybox.fs b/examples/web/models/resources/shaders/glsl330/skybox.fs
deleted file mode 100644
index c7a1788..0000000
--- a/examples/web/models/resources/shaders/glsl330/skybox.fs
+++ /dev/null
@@ -1,37 +0,0 @@
-/*******************************************************************************************
-*
-* rPBR [shader] - Background skybox fragment shader
-*
-* Copyright (c) 2017 Victor Fisac
-*
-* 19-Jun-2020 - modified by Giuseppe Mastrangelo (@peppemas) - VFlip Support
-*
-**********************************************************************************************/
-
-#version 330
-
-// Input vertex attributes (from vertex shader)
-in vec3 fragPosition;
-
-// Input uniform values
-uniform samplerCube environmentMap;
-uniform bool vflipped;
-
-// Output fragment color
-out vec4 finalColor;
-
-void main()
-{
- // Fetch color from texture map
- vec3 color = vec3(0.0);
-
- if (vflipped) color = texture(environmentMap, vec3(fragPosition.x, -fragPosition.y, fragPosition.z)).rgb;
- else color = texture(environmentMap, fragPosition).rgb;
-
- // Apply gamma correction
- color = color/(color + vec3(1.0));
- color = pow(color, vec3(1.0/2.2));
-
- // Calculate final fragment color
- finalColor = vec4(color, 1.0);
-}
diff --git a/examples/web/models/resources/shaders/glsl330/skybox.vs b/examples/web/models/resources/shaders/glsl330/skybox.vs
deleted file mode 100644
index 3260d66..0000000
--- a/examples/web/models/resources/shaders/glsl330/skybox.vs
+++ /dev/null
@@ -1,32 +0,0 @@
-/*******************************************************************************************
-*
-* rPBR [shader] - Background skybox vertex shader
-*
-* Copyright (c) 2017 Victor Fisac
-*
-**********************************************************************************************/
-
-#version 330
-
-// Input vertex attributes
-in vec3 vertexPosition;
-
-// Input uniform values
-uniform mat4 matProjection;
-uniform mat4 matView;
-
-// Output vertex attributes (to fragment shader)
-out vec3 fragPosition;
-
-void main()
-{
- // Calculate fragment position based on model transformations
- fragPosition = vertexPosition;
-
- // Remove translation from the view matrix
- mat4 rotView = mat4(mat3(matView));
- vec4 clipPos = matProjection*rotView*vec4(vertexPosition, 1.0);
-
- // Calculate final vertex position
- gl_Position = clipPos;
-}
diff --git a/examples/web/models/rlights.h b/examples/web/models/rlights.h
deleted file mode 100644
index 1950447..0000000
--- a/examples/web/models/rlights.h
+++ /dev/null
@@ -1,177 +0,0 @@
-/**********************************************************************************************
-*
-* raylib.lights - Some useful functions to deal with lights data
-*
-* CONFIGURATION:
-*
-* #define RLIGHTS_IMPLEMENTATION
-* Generates the implementation of the library into the included file.
-* If not defined, the library is in header only mode and can be included in other headers
-* or source files without problems. But only ONE file should hold the implementation.
-*
-* LICENSE: zlib/libpng
-*
-* Copyright (c) 2017 Victor Fisac and Ramon Santamaria
-*
-* This software is provided "as-is", without any express or implied warranty. In no event
-* will the authors be held liable for any damages arising from the use of this software.
-*
-* Permission is granted to anyone to use this software for any purpose, including commercial
-* applications, and to alter it and redistribute it freely, subject to the following restrictions:
-*
-* 1. The origin of this software must not be misrepresented; you must not claim that you
-* wrote the original software. If you use this software in a product, an acknowledgment
-* in the product documentation would be appreciated but is not required.
-*
-* 2. Altered source versions must be plainly marked as such, and must not be misrepresented
-* as being the original software.
-*
-* 3. This notice may not be removed or altered from any source distribution.
-*
-**********************************************************************************************/
-
-#ifndef RLIGHTS_H
-#define RLIGHTS_H
-
-//----------------------------------------------------------------------------------
-// Defines and Macros
-//----------------------------------------------------------------------------------
-#define MAX_LIGHTS 4 // Max lights supported by shader
-#define LIGHT_DISTANCE 3.5f // Light distance from world center
-#define LIGHT_HEIGHT 1.0f // Light height position
-
-//----------------------------------------------------------------------------------
-// Types and Structures Definition
-//----------------------------------------------------------------------------------
-typedef enum {
- LIGHT_DIRECTIONAL,
- LIGHT_POINT
-} LightType;
-
-typedef struct {
- bool enabled;
- LightType type;
- Vector3 position;
- Vector3 target;
- Color color;
- int enabledLoc;
- int typeLoc;
- int posLoc;
- int targetLoc;
- int colorLoc;
-} Light;
-
-#ifdef __cplusplus
-extern "C" { // Prevents name mangling of functions
-#endif
-
-//----------------------------------------------------------------------------------
-// Global Variables Definition
-//----------------------------------------------------------------------------------
-int lightsCount = 0; // Current amount of created lights
-
-//----------------------------------------------------------------------------------
-// Module Functions Declaration
-//----------------------------------------------------------------------------------
-Light CreateLight(int type, Vector3 pos, Vector3 targ, Color color, Shader shader); // Defines a light and get locations from PBR shader
-void UpdateLightValues(Shader shader, Light light); // Send to PBR shader light values
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif // RLIGHTS_H
-
-
-/***********************************************************************************
-*
-* RLIGHTS IMPLEMENTATION
-*
-************************************************************************************/
-
-#if defined(RLIGHTS_IMPLEMENTATION)
-
-#include "raylib.h"
-
-//----------------------------------------------------------------------------------
-// Defines and Macros
-//----------------------------------------------------------------------------------
-// ...
-
-//----------------------------------------------------------------------------------
-// Types and Structures Definition
-//----------------------------------------------------------------------------------
-// ...
-
-//----------------------------------------------------------------------------------
-// Global Variables Definition
-//----------------------------------------------------------------------------------
-// ...
-
-//----------------------------------------------------------------------------------
-// Module specific Functions Declaration
-//----------------------------------------------------------------------------------
-// ...
-
-//----------------------------------------------------------------------------------
-// Module Functions Definition
-//----------------------------------------------------------------------------------
-
-// Defines a light and get locations from PBR shader
-Light CreateLight(int type, Vector3 pos, Vector3 targ, Color color, Shader shader)
-{
- Light light = { 0 };
-
- if (lightsCount < MAX_LIGHTS)
- {
- light.enabled = true;
- light.type = type;
- light.position = pos;
- light.target = targ;
- light.color = color;
-
- char enabledName[32] = "lights[x].enabled\0";
- char typeName[32] = "lights[x].type\0";
- char posName[32] = "lights[x].position\0";
- char targetName[32] = "lights[x].target\0";
- char colorName[32] = "lights[x].color\0";
- enabledName[7] = '0' + lightsCount;
- typeName[7] = '0' + lightsCount;
- posName[7] = '0' + lightsCount;
- targetName[7] = '0' + lightsCount;
- colorName[7] = '0' + lightsCount;
-
- light.enabledLoc = GetShaderLocation(shader, enabledName);
- light.typeLoc = GetShaderLocation(shader, typeName);
- light.posLoc = GetShaderLocation(shader, posName);
- light.targetLoc = GetShaderLocation(shader, targetName);
- light.colorLoc = GetShaderLocation(shader, colorName);
-
- UpdateLightValues(shader, light);
- lightsCount++;
- }
-
- return light;
-}
-
-// Send to PBR shader light values
-void UpdateLightValues(Shader shader, Light light)
-{
- // Send to shader light enabled state and type
- SetShaderValue(shader, light.enabledLoc, &light.enabled, UNIFORM_INT);
- SetShaderValue(shader, light.typeLoc, &light.type, UNIFORM_INT);
-
- // Send to shader light position values
- float position[3] = { light.position.x, light.position.y, light.position.z };
- SetShaderValue(shader, light.posLoc, position, UNIFORM_VEC3);
-
- // Send to shader light target position values
- float target[3] = { light.target.x, light.target.y, light.target.z };
- SetShaderValue(shader, light.targetLoc, target, UNIFORM_VEC3);
-
- // Send to shader light color values
- float diff[4] = { (float)light.color.r/(float)255, (float)light.color.g/(float)255, (float)light.color.b/(float)255, (float)light.color.a/(float)255 };
- SetShaderValue(shader, light.colorLoc, diff, UNIFORM_VEC4);
-}
-
-#endif // RLIGHTS_IMPLEMENTATION \ No newline at end of file