Working on web examples

Reorganizing folders
Review examples
Work on makefile and loader.html
This commit is contained in:
Ray
2017-04-09 23:46:47 +02:00
parent 8374460c39
commit f7bebf9861
421 changed files with 103013 additions and 524979 deletions

View File

@@ -0,0 +1,99 @@
/*******************************************************************************************
*
* 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
//----------------------------------------------------------------------------------
int screenWidth = 800;
int screenHeight = 450;
// Define the camera to look into our 3d world
Camera camera = {{ 5.0f, 4.0f, 5.0f }, { 0.0f, 2.0f, 0.0f }, { 0.0f, 1.0f, 0.0f }, 45.0f };
Texture2D bill; // 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
//----------------------------------------------------------------------------------
// Main Enry Point
//----------------------------------------------------------------------------------
int main()
{
// Initialization
//--------------------------------------------------------------------------------------
InitWindow(screenWidth, screenHeight, "raylib [models] example - drawing billboards");
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, 0, 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);
Begin3dMode(camera);
DrawBillboard(camera, bill, billPosition, 2.0f, WHITE);
DrawGrid(10, 1.0f); // Draw a grid
End3dMode();
DrawFPS(10, 10);
EndDrawing();
//----------------------------------------------------------------------------------
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

View File

@@ -0,0 +1,239 @@
<!doctype html>
<html lang="en-us">
<head>
<meta charset="utf-8">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>raylib HTML5 GAME</title>
<meta name="title" content="raylib HTML5 GAME">
<meta name="description" content="New HTML5 videogame, developed using raylib videogames library">
<meta name="keywords" content="raylib, games, html5, programming, C, C++, library, learn, videogames">
<meta name="viewport" content="width=device-width">
<!-- Facebook metatags for sharing -->
<meta property="og:title" content="raylib HTML5 GAME">
<meta property="og:image:type" content="image/png">
<meta property="og:image" content="http://www.raylib.com/img/raylib_logo.png">
<meta property="og:image" content="http://www.raylib.com/img/raylib_logo.png">
<meta property="og:url" content="http://www.raylib.com/games">
<meta property="og:site_name" content="raylib.com">
<meta property="og:description" content="New hmtl5 videogame, developed using raylib videogames library">
<meta name="twitter:card" content="summary">
<meta name="twitter:site" content="@emegemegames">
<meta name="twitter:title" content="raylib HTML5 GAME">
<meta name="twitter:description" content="New HTML5 videogame, developed using raylib videogames library">
<meta name="twitter:image" content="http://www.raylib.com/img/raylib_logo.png">
<meta name="twitter:url" content="http://www.raylib.com/img/raylib_logo.png">
<!--<link rel="stylesheet" href="./Koala Seasons by emegeme_files/main.css">-->
<link rel="shortcut icon" href="http://www.raylib.com/favicon.ico">
<style>
body {
font-family: arial;
margin: 0;
padding: none;
}
#header_part {
width: 100%;
height: 80px;
background-color: #888888;
}
#logo {
width:64px;
height:64px;
float:left;
position:relative;
margin:10px;
background-image:url(http://www.raylib.com/img/raylib_logo64x64.png);
}
.emscripten { padding-right: 0; margin-left: auto; margin-right: auto; display: block; }
div.emscripten { text-align: center; }
div.emscripten_border { border: 1px solid black; }
/* the canvas *must not* have any border or padding, or mouse coords will be wrong */
canvas.emscripten { border: 0px none; }
#emscripten_logo {
display: inline-block;
margin: 0;
}
.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 0.8s linear infinite;
border-left: 5px solid black;
border-right: 5px solid black;
border-bottom: 5px solid black;
border-top: 5px solid red;
border-radius: 100%;
background-color: rgb(245, 245, 245);
}
@-webkit-keyframes rotation {
from {-webkit-transform: rotate(0deg);}
to {-webkit-transform: rotate(360deg);}
}
@-moz-keyframes rotation {
from {-moz-transform: rotate(0deg);}
to {-moz-transform: rotate(360deg);}
}
@-o-keyframes rotation {
from {-o-transform: rotate(0deg);}
to {-o-transform: rotate(360deg);}
}
@keyframes rotation {
from {transform: rotate(0deg);}
to {transform: rotate(360deg);}
}
#status {
display: inline-block;
vertical-align: top;
margin-top: 30px;
margin-left: 20px;
font-weight: bold;
color: rgb(40, 40, 40);
}
#progress {
height: 20px;
width: 30px;
}
#controls {
display: inline-block;
float: right;
vertical-align: top;
margin-top: 30px;
margin-right: 20px;
}
#output {
width: 100%;
height: 140px;
margin: 0 auto;
margin-top: 10px;
display: block;
background-color: black;
color: rgb(37, 174, 38);
font-family: 'Lucida Console', Monaco, monospace;
outline: none;
}
</style>
</head>
<body>
<div id="header_part">
<a id="logo" href="http://www.raylib.com"></a>
<div class="spinner" id='spinner'></div>
<div class="emscripten" id="status">Downloading...</div>
<span id='controls'>
<span><input type="button" value="Fullscreen" onclick="Module.requestFullScreen(false, false)"></span>
</span>
<div class="emscripten">
<progress value="0" max="100" id="progress" hidden=1></progress>
</div>
</div>
<div class="emscripten_border">
<canvas class="emscripten" id="canvas" oncontextmenu="event.preventDefault()"></canvas>
</div>
<textarea id="output" rows="8"></textarea>
<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) {
if (arguments.length > 1) 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) {
if (arguments.length > 1) 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() {
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 http://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="models_billboard.js"></script>
</body>
</html>

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,152 @@
/*******************************************************************************************
*
* 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
//----------------------------------------------------------------------------------
int screenWidth = 800;
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;
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
//----------------------------------------------------------------------------------
// Main Enry Point
//----------------------------------------------------------------------------------
int main()
{
// Initialization
//--------------------------------------------------------------------------------------
InitWindow(screenWidth, screenHeight, "raylib [models] example - box collisions");
playerColor = GREEN;
#if defined(PLATFORM_WEB)
emscripten_set_main_loop(UpdateDrawFrame, 0, 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);
Begin3dMode(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
End3dMode();
DrawText("Move player with cursors to collide", 220, 40, 20, GRAY);
DrawFPS(10, 10);
EndDrawing();
//----------------------------------------------------------------------------------
}

View File

@@ -0,0 +1,239 @@
<!doctype html>
<html lang="en-us">
<head>
<meta charset="utf-8">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>raylib HTML5 GAME</title>
<meta name="title" content="raylib HTML5 GAME">
<meta name="description" content="New HTML5 videogame, developed using raylib videogames library">
<meta name="keywords" content="raylib, games, html5, programming, C, C++, library, learn, videogames">
<meta name="viewport" content="width=device-width">
<!-- Facebook metatags for sharing -->
<meta property="og:title" content="raylib HTML5 GAME">
<meta property="og:image:type" content="image/png">
<meta property="og:image" content="http://www.raylib.com/img/raylib_logo.png">
<meta property="og:image" content="http://www.raylib.com/img/raylib_logo.png">
<meta property="og:url" content="http://www.raylib.com/games">
<meta property="og:site_name" content="raylib.com">
<meta property="og:description" content="New hmtl5 videogame, developed using raylib videogames library">
<meta name="twitter:card" content="summary">
<meta name="twitter:site" content="@emegemegames">
<meta name="twitter:title" content="raylib HTML5 GAME">
<meta name="twitter:description" content="New HTML5 videogame, developed using raylib videogames library">
<meta name="twitter:image" content="http://www.raylib.com/img/raylib_logo.png">
<meta name="twitter:url" content="http://www.raylib.com/img/raylib_logo.png">
<!--<link rel="stylesheet" href="./Koala Seasons by emegeme_files/main.css">-->
<link rel="shortcut icon" href="http://www.raylib.com/favicon.ico">
<style>
body {
font-family: arial;
margin: 0;
padding: none;
}
#header_part {
width: 100%;
height: 80px;
background-color: #888888;
}
#logo {
width:64px;
height:64px;
float:left;
position:relative;
margin:10px;
background-image:url(http://www.raylib.com/img/raylib_logo64x64.png);
}
.emscripten { padding-right: 0; margin-left: auto; margin-right: auto; display: block; }
div.emscripten { text-align: center; }
div.emscripten_border { border: 1px solid black; }
/* the canvas *must not* have any border or padding, or mouse coords will be wrong */
canvas.emscripten { border: 0px none; }
#emscripten_logo {
display: inline-block;
margin: 0;
}
.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 0.8s linear infinite;
border-left: 5px solid black;
border-right: 5px solid black;
border-bottom: 5px solid black;
border-top: 5px solid red;
border-radius: 100%;
background-color: rgb(245, 245, 245);
}
@-webkit-keyframes rotation {
from {-webkit-transform: rotate(0deg);}
to {-webkit-transform: rotate(360deg);}
}
@-moz-keyframes rotation {
from {-moz-transform: rotate(0deg);}
to {-moz-transform: rotate(360deg);}
}
@-o-keyframes rotation {
from {-o-transform: rotate(0deg);}
to {-o-transform: rotate(360deg);}
}
@keyframes rotation {
from {transform: rotate(0deg);}
to {transform: rotate(360deg);}
}
#status {
display: inline-block;
vertical-align: top;
margin-top: 30px;
margin-left: 20px;
font-weight: bold;
color: rgb(40, 40, 40);
}
#progress {
height: 20px;
width: 30px;
}
#controls {
display: inline-block;
float: right;
vertical-align: top;
margin-top: 30px;
margin-right: 20px;
}
#output {
width: 100%;
height: 140px;
margin: 0 auto;
margin-top: 10px;
display: block;
background-color: black;
color: rgb(37, 174, 38);
font-family: 'Lucida Console', Monaco, monospace;
outline: none;
}
</style>
</head>
<body>
<div id="header_part">
<a id="logo" href="http://www.raylib.com"></a>
<div class="spinner" id='spinner'></div>
<div class="emscripten" id="status">Downloading...</div>
<span id='controls'>
<span><input type="button" value="Fullscreen" onclick="Module.requestFullScreen(false, false)"></span>
</span>
<div class="emscripten">
<progress value="0" max="100" id="progress" hidden=1></progress>
</div>
</div>
<div class="emscripten_border">
<canvas class="emscripten" id="canvas" oncontextmenu="event.preventDefault()"></canvas>
</div>
<textarea id="output" rows="8"></textarea>
<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) {
if (arguments.length > 1) 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) {
if (arguments.length > 1) 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() {
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 http://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="models_box_collisions.js"></script>
</body>
</html>

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,115 @@
/*******************************************************************************************
*
* 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) 2015 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
#include "raylib.h"
#if defined(PLATFORM_WEB)
#include <emscripten/emscripten.h>
#endif
//----------------------------------------------------------------------------------
// Global Variables Definition
//----------------------------------------------------------------------------------
int screenWidth = 800;
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;
Model map;
Vector3 mapPosition = { -16.0f, 0.0f, -8.0f }; // Set model position
//----------------------------------------------------------------------------------
// Module Functions Declaration
//----------------------------------------------------------------------------------
void UpdateDrawFrame(void); // Update and Draw one frame
//----------------------------------------------------------------------------------
// Main Enry Point
//----------------------------------------------------------------------------------
int main()
{
// 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)
map = LoadCubicmap(image); // Load cubicmap model (generate model from image)
// NOTE: By default each cube is mapped to one part of texture atlas
Texture2D texture = LoadTexture("resources/cubicmap_atlas.png"); // Load map texture
map.material.texDiffuse = 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, 0, 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(map); // 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);
Begin3dMode(camera);
DrawModel(map, mapPosition, 1.0f, WHITE);
End3dMode();
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();
//----------------------------------------------------------------------------------
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

View File

@@ -0,0 +1,239 @@
<!doctype html>
<html lang="en-us">
<head>
<meta charset="utf-8">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>raylib HTML5 GAME</title>
<meta name="title" content="raylib HTML5 GAME">
<meta name="description" content="New HTML5 videogame, developed using raylib videogames library">
<meta name="keywords" content="raylib, games, html5, programming, C, C++, library, learn, videogames">
<meta name="viewport" content="width=device-width">
<!-- Facebook metatags for sharing -->
<meta property="og:title" content="raylib HTML5 GAME">
<meta property="og:image:type" content="image/png">
<meta property="og:image" content="http://www.raylib.com/img/raylib_logo.png">
<meta property="og:image" content="http://www.raylib.com/img/raylib_logo.png">
<meta property="og:url" content="http://www.raylib.com/games">
<meta property="og:site_name" content="raylib.com">
<meta property="og:description" content="New hmtl5 videogame, developed using raylib videogames library">
<meta name="twitter:card" content="summary">
<meta name="twitter:site" content="@emegemegames">
<meta name="twitter:title" content="raylib HTML5 GAME">
<meta name="twitter:description" content="New HTML5 videogame, developed using raylib videogames library">
<meta name="twitter:image" content="http://www.raylib.com/img/raylib_logo.png">
<meta name="twitter:url" content="http://www.raylib.com/img/raylib_logo.png">
<!--<link rel="stylesheet" href="./Koala Seasons by emegeme_files/main.css">-->
<link rel="shortcut icon" href="http://www.raylib.com/favicon.ico">
<style>
body {
font-family: arial;
margin: 0;
padding: none;
}
#header_part {
width: 100%;
height: 80px;
background-color: #888888;
}
#logo {
width:64px;
height:64px;
float:left;
position:relative;
margin:10px;
background-image:url(http://www.raylib.com/img/raylib_logo64x64.png);
}
.emscripten { padding-right: 0; margin-left: auto; margin-right: auto; display: block; }
div.emscripten { text-align: center; }
div.emscripten_border { border: 1px solid black; }
/* the canvas *must not* have any border or padding, or mouse coords will be wrong */
canvas.emscripten { border: 0px none; }
#emscripten_logo {
display: inline-block;
margin: 0;
}
.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 0.8s linear infinite;
border-left: 5px solid black;
border-right: 5px solid black;
border-bottom: 5px solid black;
border-top: 5px solid red;
border-radius: 100%;
background-color: rgb(245, 245, 245);
}
@-webkit-keyframes rotation {
from {-webkit-transform: rotate(0deg);}
to {-webkit-transform: rotate(360deg);}
}
@-moz-keyframes rotation {
from {-moz-transform: rotate(0deg);}
to {-moz-transform: rotate(360deg);}
}
@-o-keyframes rotation {
from {-o-transform: rotate(0deg);}
to {-o-transform: rotate(360deg);}
}
@keyframes rotation {
from {transform: rotate(0deg);}
to {transform: rotate(360deg);}
}
#status {
display: inline-block;
vertical-align: top;
margin-top: 30px;
margin-left: 20px;
font-weight: bold;
color: rgb(40, 40, 40);
}
#progress {
height: 20px;
width: 30px;
}
#controls {
display: inline-block;
float: right;
vertical-align: top;
margin-top: 30px;
margin-right: 20px;
}
#output {
width: 100%;
height: 140px;
margin: 0 auto;
margin-top: 10px;
display: block;
background-color: black;
color: rgb(37, 174, 38);
font-family: 'Lucida Console', Monaco, monospace;
outline: none;
}
</style>
</head>
<body>
<div id="header_part">
<a id="logo" href="http://www.raylib.com"></a>
<div class="spinner" id='spinner'></div>
<div class="emscripten" id="status">Downloading...</div>
<span id='controls'>
<span><input type="button" value="Fullscreen" onclick="Module.requestFullScreen(false, false)"></span>
</span>
<div class="emscripten">
<progress value="0" max="100" id="progress" hidden=1></progress>
</div>
</div>
<div class="emscripten_border">
<canvas class="emscripten" id="canvas" oncontextmenu="event.preventDefault()"></canvas>
</div>
<textarea id="output" rows="8"></textarea>
<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) {
if (arguments.length > 1) 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) {
if (arguments.length > 1) 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() {
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 http://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="models_cubicmap.js"></script>
</body>
</html>

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,102 @@
/*******************************************************************************************
*
* 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
//----------------------------------------------------------------------------------
int screenWidth = 800;
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 };
//----------------------------------------------------------------------------------
// Module Functions Declaration
//----------------------------------------------------------------------------------
void UpdateDrawFrame(void); // Update and Draw one frame
//----------------------------------------------------------------------------------
// Main Enry Point
//----------------------------------------------------------------------------------
int main()
{
// Initialization
//--------------------------------------------------------------------------------------
InitWindow(screenWidth, screenHeight, "raylib [models] example - geometric shapes");
#if defined(PLATFORM_WEB)
emscripten_set_main_loop(UpdateDrawFrame, 0, 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);
Begin3dMode(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
End3dMode();
DrawFPS(10, 10);
EndDrawing();
//----------------------------------------------------------------------------------
}

View File

@@ -0,0 +1,239 @@
<!doctype html>
<html lang="en-us">
<head>
<meta charset="utf-8">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>raylib HTML5 GAME</title>
<meta name="title" content="raylib HTML5 GAME">
<meta name="description" content="New HTML5 videogame, developed using raylib videogames library">
<meta name="keywords" content="raylib, games, html5, programming, C, C++, library, learn, videogames">
<meta name="viewport" content="width=device-width">
<!-- Facebook metatags for sharing -->
<meta property="og:title" content="raylib HTML5 GAME">
<meta property="og:image:type" content="image/png">
<meta property="og:image" content="http://www.raylib.com/img/raylib_logo.png">
<meta property="og:image" content="http://www.raylib.com/img/raylib_logo.png">
<meta property="og:url" content="http://www.raylib.com/games">
<meta property="og:site_name" content="raylib.com">
<meta property="og:description" content="New hmtl5 videogame, developed using raylib videogames library">
<meta name="twitter:card" content="summary">
<meta name="twitter:site" content="@emegemegames">
<meta name="twitter:title" content="raylib HTML5 GAME">
<meta name="twitter:description" content="New HTML5 videogame, developed using raylib videogames library">
<meta name="twitter:image" content="http://www.raylib.com/img/raylib_logo.png">
<meta name="twitter:url" content="http://www.raylib.com/img/raylib_logo.png">
<!--<link rel="stylesheet" href="./Koala Seasons by emegeme_files/main.css">-->
<link rel="shortcut icon" href="http://www.raylib.com/favicon.ico">
<style>
body {
font-family: arial;
margin: 0;
padding: none;
}
#header_part {
width: 100%;
height: 80px;
background-color: #888888;
}
#logo {
width:64px;
height:64px;
float:left;
position:relative;
margin:10px;
background-image:url(http://www.raylib.com/img/raylib_logo64x64.png);
}
.emscripten { padding-right: 0; margin-left: auto; margin-right: auto; display: block; }
div.emscripten { text-align: center; }
div.emscripten_border { border: 1px solid black; }
/* the canvas *must not* have any border or padding, or mouse coords will be wrong */
canvas.emscripten { border: 0px none; }
#emscripten_logo {
display: inline-block;
margin: 0;
}
.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 0.8s linear infinite;
border-left: 5px solid black;
border-right: 5px solid black;
border-bottom: 5px solid black;
border-top: 5px solid red;
border-radius: 100%;
background-color: rgb(245, 245, 245);
}
@-webkit-keyframes rotation {
from {-webkit-transform: rotate(0deg);}
to {-webkit-transform: rotate(360deg);}
}
@-moz-keyframes rotation {
from {-moz-transform: rotate(0deg);}
to {-moz-transform: rotate(360deg);}
}
@-o-keyframes rotation {
from {-o-transform: rotate(0deg);}
to {-o-transform: rotate(360deg);}
}
@keyframes rotation {
from {transform: rotate(0deg);}
to {transform: rotate(360deg);}
}
#status {
display: inline-block;
vertical-align: top;
margin-top: 30px;
margin-left: 20px;
font-weight: bold;
color: rgb(40, 40, 40);
}
#progress {
height: 20px;
width: 30px;
}
#controls {
display: inline-block;
float: right;
vertical-align: top;
margin-top: 30px;
margin-right: 20px;
}
#output {
width: 100%;
height: 140px;
margin: 0 auto;
margin-top: 10px;
display: block;
background-color: black;
color: rgb(37, 174, 38);
font-family: 'Lucida Console', Monaco, monospace;
outline: none;
}
</style>
</head>
<body>
<div id="header_part">
<a id="logo" href="http://www.raylib.com"></a>
<div class="spinner" id='spinner'></div>
<div class="emscripten" id="status">Downloading...</div>
<span id='controls'>
<span><input type="button" value="Fullscreen" onclick="Module.requestFullScreen(false, false)"></span>
</span>
<div class="emscripten">
<progress value="0" max="100" id="progress" hidden=1></progress>
</div>
</div>
<div class="emscripten_border">
<canvas class="emscripten" id="canvas" oncontextmenu="event.preventDefault()"></canvas>
</div>
<textarea id="output" rows="8"></textarea>
<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) {
if (arguments.length > 1) 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) {
if (arguments.length > 1) 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() {
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 http://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="models_geometric_shapes.js"></script>
</body>
</html>

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,111 @@
/*******************************************************************************************
*
* 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) 2015 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
#include "raylib.h"
#if defined(PLATFORM_WEB)
#include <emscripten/emscripten.h>
#endif
//----------------------------------------------------------------------------------
// Global Variables Definition
//----------------------------------------------------------------------------------
int screenWidth = 800;
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;
Model map;
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
//----------------------------------------------------------------------------------
// Main Enry Point
//----------------------------------------------------------------------------------
int main()
{
// 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)
map = LoadHeightmap(image, (Vector3){ 16, 8, 16 }); // Load heightmap model with defined size
map.material.texDiffuse = 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, 0, 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(map); // 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);
Begin3dMode(camera);
// NOTE: Model is scaled to 1/4 of its original size (128x128 units)
DrawModel(map, mapPosition, 1.0f, RED);
DrawGrid(20, 1.0f);
End3dMode();
DrawTexture(texture, screenWidth - texture.width - 20, 20, WHITE);
DrawRectangleLines(screenWidth - texture.width - 20, 20, texture.width, texture.height, GREEN);
DrawFPS(10, 10);
EndDrawing();
//----------------------------------------------------------------------------------
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

View File

@@ -0,0 +1,239 @@
<!doctype html>
<html lang="en-us">
<head>
<meta charset="utf-8">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>raylib HTML5 GAME</title>
<meta name="title" content="raylib HTML5 GAME">
<meta name="description" content="New HTML5 videogame, developed using raylib videogames library">
<meta name="keywords" content="raylib, games, html5, programming, C, C++, library, learn, videogames">
<meta name="viewport" content="width=device-width">
<!-- Facebook metatags for sharing -->
<meta property="og:title" content="raylib HTML5 GAME">
<meta property="og:image:type" content="image/png">
<meta property="og:image" content="http://www.raylib.com/img/raylib_logo.png">
<meta property="og:image" content="http://www.raylib.com/img/raylib_logo.png">
<meta property="og:url" content="http://www.raylib.com/games">
<meta property="og:site_name" content="raylib.com">
<meta property="og:description" content="New hmtl5 videogame, developed using raylib videogames library">
<meta name="twitter:card" content="summary">
<meta name="twitter:site" content="@emegemegames">
<meta name="twitter:title" content="raylib HTML5 GAME">
<meta name="twitter:description" content="New HTML5 videogame, developed using raylib videogames library">
<meta name="twitter:image" content="http://www.raylib.com/img/raylib_logo.png">
<meta name="twitter:url" content="http://www.raylib.com/img/raylib_logo.png">
<!--<link rel="stylesheet" href="./Koala Seasons by emegeme_files/main.css">-->
<link rel="shortcut icon" href="http://www.raylib.com/favicon.ico">
<style>
body {
font-family: arial;
margin: 0;
padding: none;
}
#header_part {
width: 100%;
height: 80px;
background-color: #888888;
}
#logo {
width:64px;
height:64px;
float:left;
position:relative;
margin:10px;
background-image:url(http://www.raylib.com/img/raylib_logo64x64.png);
}
.emscripten { padding-right: 0; margin-left: auto; margin-right: auto; display: block; }
div.emscripten { text-align: center; }
div.emscripten_border { border: 1px solid black; }
/* the canvas *must not* have any border or padding, or mouse coords will be wrong */
canvas.emscripten { border: 0px none; }
#emscripten_logo {
display: inline-block;
margin: 0;
}
.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 0.8s linear infinite;
border-left: 5px solid black;
border-right: 5px solid black;
border-bottom: 5px solid black;
border-top: 5px solid red;
border-radius: 100%;
background-color: rgb(245, 245, 245);
}
@-webkit-keyframes rotation {
from {-webkit-transform: rotate(0deg);}
to {-webkit-transform: rotate(360deg);}
}
@-moz-keyframes rotation {
from {-moz-transform: rotate(0deg);}
to {-moz-transform: rotate(360deg);}
}
@-o-keyframes rotation {
from {-o-transform: rotate(0deg);}
to {-o-transform: rotate(360deg);}
}
@keyframes rotation {
from {transform: rotate(0deg);}
to {transform: rotate(360deg);}
}
#status {
display: inline-block;
vertical-align: top;
margin-top: 30px;
margin-left: 20px;
font-weight: bold;
color: rgb(40, 40, 40);
}
#progress {
height: 20px;
width: 30px;
}
#controls {
display: inline-block;
float: right;
vertical-align: top;
margin-top: 30px;
margin-right: 20px;
}
#output {
width: 100%;
height: 140px;
margin: 0 auto;
margin-top: 10px;
display: block;
background-color: black;
color: rgb(37, 174, 38);
font-family: 'Lucida Console', Monaco, monospace;
outline: none;
}
</style>
</head>
<body>
<div id="header_part">
<a id="logo" href="http://www.raylib.com"></a>
<div class="spinner" id='spinner'></div>
<div class="emscripten" id="status">Downloading...</div>
<span id='controls'>
<span><input type="button" value="Fullscreen" onclick="Module.requestFullScreen(false, false)"></span>
</span>
<div class="emscripten">
<progress value="0" max="100" id="progress" hidden=1></progress>
</div>
</div>
<div class="emscripten_border">
<canvas class="emscripten" id="canvas" oncontextmenu="event.preventDefault()"></canvas>
</div>
<textarea id="output" rows="8"></textarea>
<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) {
if (arguments.length > 1) 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) {
if (arguments.length > 1) 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() {
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 http://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="models_heightmap.js"></script>
</body>
</html>

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,106 @@
/*******************************************************************************************
*
* raylib [models] example - Load and draw a 3d model (OBJ) (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) 2014 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
#include "raylib.h"
#if defined(PLATFORM_WEB)
#include <emscripten/emscripten.h>
#endif
//----------------------------------------------------------------------------------
// Global Variables Definition
//----------------------------------------------------------------------------------
int screenWidth = 800;
int screenHeight = 450;
// Define the camera to look into our 3d world
Camera camera = {{ 3.0f, 3.0f, 3.0f }, { 0.0f, 1.5f, 0.0f }, { 0.0f, 1.0f, 0.0f }, 45.0f };
Model dwarf; // Declare OBJ model
Texture2D texture; // Declare model texture
Vector3 position = { 0.0f, 0.0f, 0.0f }; // Define model position
//----------------------------------------------------------------------------------
// Module Functions Declaration
//----------------------------------------------------------------------------------
void UpdateDrawFrame(void); // Update and Draw one frame
//----------------------------------------------------------------------------------
// Main Enry Point
//----------------------------------------------------------------------------------
int main()
{
// Initialization
//--------------------------------------------------------------------------------------
InitWindow(screenWidth, screenHeight, "raylib [models] example - obj model loading");
dwarf = LoadModel("resources/model/dwarf.obj"); // Load OBJ model
texture = LoadTexture("resources/model/dwarf_diffuse.png"); // Load model texture
dwarf.material.texDiffuse = texture; // Set dwarf model diffuse texture
#if defined(PLATFORM_WEB)
emscripten_set_main_loop(UpdateDrawFrame, 0, 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(dwarf); // Unload model
CloseWindow(); // Close window and OpenGL context
//--------------------------------------------------------------------------------------
return 0;
}
//----------------------------------------------------------------------------------
// Module Functions Definition
//----------------------------------------------------------------------------------
void UpdateDrawFrame(void)
{
// Update
//----------------------------------------------------------------------------------
//...
//----------------------------------------------------------------------------------
// Draw
//----------------------------------------------------------------------------------
BeginDrawing();
ClearBackground(RAYWHITE);
Begin3dMode(camera);
DrawModel(dwarf, position, 2.0f, WHITE); // Draw 3d model with texture
DrawGrid(10, 1.0f); // Draw a grid
DrawGizmo(position); // Draw gizmo
End3dMode();
DrawText("(c) Dwarf 3D model by David Moreno", screenWidth - 200, screenHeight - 20, 10, GRAY);
DrawFPS(10, 10);
EndDrawing();
//----------------------------------------------------------------------------------
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,239 @@
<!doctype html>
<html lang="en-us">
<head>
<meta charset="utf-8">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>raylib HTML5 GAME</title>
<meta name="title" content="raylib HTML5 GAME">
<meta name="description" content="New HTML5 videogame, developed using raylib videogames library">
<meta name="keywords" content="raylib, games, html5, programming, C, C++, library, learn, videogames">
<meta name="viewport" content="width=device-width">
<!-- Facebook metatags for sharing -->
<meta property="og:title" content="raylib HTML5 GAME">
<meta property="og:image:type" content="image/png">
<meta property="og:image" content="http://www.raylib.com/img/raylib_logo.png">
<meta property="og:image" content="http://www.raylib.com/img/raylib_logo.png">
<meta property="og:url" content="http://www.raylib.com/games">
<meta property="og:site_name" content="raylib.com">
<meta property="og:description" content="New hmtl5 videogame, developed using raylib videogames library">
<meta name="twitter:card" content="summary">
<meta name="twitter:site" content="@emegemegames">
<meta name="twitter:title" content="raylib HTML5 GAME">
<meta name="twitter:description" content="New HTML5 videogame, developed using raylib videogames library">
<meta name="twitter:image" content="http://www.raylib.com/img/raylib_logo.png">
<meta name="twitter:url" content="http://www.raylib.com/img/raylib_logo.png">
<!--<link rel="stylesheet" href="./Koala Seasons by emegeme_files/main.css">-->
<link rel="shortcut icon" href="http://www.raylib.com/favicon.ico">
<style>
body {
font-family: arial;
margin: 0;
padding: none;
}
#header_part {
width: 100%;
height: 80px;
background-color: #888888;
}
#logo {
width:64px;
height:64px;
float:left;
position:relative;
margin:10px;
background-image:url(http://www.raylib.com/img/raylib_logo64x64.png);
}
.emscripten { padding-right: 0; margin-left: auto; margin-right: auto; display: block; }
div.emscripten { text-align: center; }
div.emscripten_border { border: 1px solid black; }
/* the canvas *must not* have any border or padding, or mouse coords will be wrong */
canvas.emscripten { border: 0px none; }
#emscripten_logo {
display: inline-block;
margin: 0;
}
.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 0.8s linear infinite;
border-left: 5px solid black;
border-right: 5px solid black;
border-bottom: 5px solid black;
border-top: 5px solid red;
border-radius: 100%;
background-color: rgb(245, 245, 245);
}
@-webkit-keyframes rotation {
from {-webkit-transform: rotate(0deg);}
to {-webkit-transform: rotate(360deg);}
}
@-moz-keyframes rotation {
from {-moz-transform: rotate(0deg);}
to {-moz-transform: rotate(360deg);}
}
@-o-keyframes rotation {
from {-o-transform: rotate(0deg);}
to {-o-transform: rotate(360deg);}
}
@keyframes rotation {
from {transform: rotate(0deg);}
to {transform: rotate(360deg);}
}
#status {
display: inline-block;
vertical-align: top;
margin-top: 30px;
margin-left: 20px;
font-weight: bold;
color: rgb(40, 40, 40);
}
#progress {
height: 20px;
width: 30px;
}
#controls {
display: inline-block;
float: right;
vertical-align: top;
margin-top: 30px;
margin-right: 20px;
}
#output {
width: 100%;
height: 140px;
margin: 0 auto;
margin-top: 10px;
display: block;
background-color: black;
color: rgb(37, 174, 38);
font-family: 'Lucida Console', Monaco, monospace;
outline: none;
}
</style>
</head>
<body>
<div id="header_part">
<a id="logo" href="http://www.raylib.com"></a>
<div class="spinner" id='spinner'></div>
<div class="emscripten" id="status">Downloading...</div>
<span id='controls'>
<span><input type="button" value="Fullscreen" onclick="Module.requestFullScreen(false, false)"></span>
</span>
<div class="emscripten">
<progress value="0" max="100" id="progress" hidden=1></progress>
</div>
</div>
<div class="emscripten_border">
<canvas class="emscripten" id="canvas" oncontextmenu="event.preventDefault()"></canvas>
</div>
<textarea id="output" rows="8"></textarea>
<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) {
if (arguments.length > 1) 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) {
if (arguments.length > 1) 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() {
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 http://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="models_obj_loading.js"></script>
</body>
</html>

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,239 @@
/*******************************************************************************************
*
* raylib [models] example - Ray 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"
#include <stdio.h>
#include <float.h>
#if defined(PLATFORM_WEB)
#include <emscripten/emscripten.h>
#endif
//----------------------------------------------------------------------------------
// Global Variables Definition
//----------------------------------------------------------------------------------
const int screenWidth = 800;
const int screenHeight = 450;
Camera camera;
Vector3 cubePosition = { 0.0f, 1.0f, 0.0f };
Vector3 cubeSize = { 2.0f, 2.0f, 2.0f };
Ray ray; // Picking line ray
Model tower;
Texture2D texture;
Vector3 towerPos = { 0.0f, 0.0f, 0.0f };
BoundingBox towerBBox;
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
//----------------------------------------------------------------------------------
// Main Enry Point
//----------------------------------------------------------------------------------
int main()
{
// Initialization
//--------------------------------------------------------------------------------------
int screenWidth = 800;
int screenHeight = 450;
InitWindow(screenWidth, screenHeight, "raylib [models] example - 3d ray 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
tower = LoadModel("resources/tower.obj"); // Load OBJ model
texture = LoadTexture("resources/tower.png"); // Load model texture
tower.material.texDiffuse = texture; // Set model diffuse texture
towerBBox = CalculateBoundingBox(tower.mesh);
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, 0, 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;
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 = Barycenter(nearestHit.hitPosition, ta, tb, tc);
hitTriangle = true;
}
else hitTriangle = false;
RayHitInfo meshHitInfo;
// Check ray collision against bounding box first, before trying the full ray-mesh test
if (CheckCollisionRayBox(ray, towerBBox))
{
hitMeshBBox = true;
// Check ray collision against mesh
meshHitInfo = GetCollisionRayMesh(ray, &tower.mesh);
if ((meshHitInfo.hit) && (meshHitInfo.distance < nearestHit.distance))
{
nearestHit = meshHitInfo;
cursorColor = ORANGE;
hitObjectName = "Mesh";
}
} hitMeshBBox = false;
//----------------------------------------------------------------------------------
// Draw
//----------------------------------------------------------------------------------
BeginDrawing();
ClearBackground(RAYWHITE);
Begin3dMode(camera);
// Draw the tower
DrawModel(tower, towerPos, 1.0, 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.hitPosition, 0.5, 0.5, 0.5, cursorColor);
DrawCubeWires(nearestHit.hitPosition, 0.5, 0.5, 0.5, YELLOW);
Vector3 normalEnd;
normalEnd.x = nearestHit.hitPosition.x + nearestHit.hitNormal.x;
normalEnd.y = nearestHit.hitPosition.y + nearestHit.hitNormal.y;
normalEnd.z = nearestHit.hitPosition.z + nearestHit.hitNormal.z;
DrawLine3D(nearestHit.hitPosition, normalEnd, YELLOW);
}
DrawRay(ray, MAROON);
DrawGrid(100, 1.0f);
End3dMode();
// Draw some debug GUI text
DrawText(FormatText("Hit Object: %s", hitObjectName), 10, 50, 10, BLACK);
if (nearestHit.hit)
{
int ypos = 70;
DrawText(FormatText("Distance: %3.2f", nearestHit.distance), 10, ypos, 10, BLACK);
DrawText(FormatText("Hit Pos: %3.2f %3.2f %3.2f",
nearestHit.hitPosition.x,
nearestHit.hitPosition.y,
nearestHit.hitPosition.z), 10, ypos + 15, 10, BLACK);
DrawText(FormatText("Hit Norm: %3.2f %3.2f %3.2f",
nearestHit.hitNormal.x,
nearestHit.hitNormal.y,
nearestHit.hitNormal.z), 10, ypos + 30, 10, BLACK);
if (hitTriangle) DrawText(FormatText("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);
DrawFPS(10, 10);
EndDrawing();
//----------------------------------------------------------------------------------
}

View File

@@ -0,0 +1,554 @@
# Blender v2.78 (sub 0) OBJ File: 'lowpoly-tower.blend'
# www.blender.org
o Grid
v -4.000000 0.000000 4.000000
v -2.327363 0.000000 4.654725
v 0.000000 0.000000 4.654725
v 2.327363 0.000000 4.654725
v 4.000000 0.000000 4.000000
v -4.654725 0.955085 2.327363
v -2.000000 0.815050 2.000000
v 0.000000 0.476341 2.423448
v 2.000000 0.476341 2.000000
v 4.654725 0.000000 2.327363
v -4.654725 1.649076 0.000000
v -2.423448 1.092402 0.000000
v 2.423448 0.198579 0.000000
v 4.654725 0.000000 0.000000
v -4.654725 1.649076 -2.327363
v -2.000000 1.092402 -2.000000
v 0.000000 0.476341 -2.423448
v 2.000000 -0.012791 -2.000000
v 4.654725 0.000000 -2.612731
v -4.000000 0.955085 -4.000000
v -2.327363 0.955085 -4.654725
v 0.000000 0.955085 -4.654725
v 2.327363 0.000000 -4.654725
v 4.000000 0.000000 -4.000000
v 2.423448 0.682825 0.000000
v 2.000000 0.565423 -2.000000
v -4.654725 -0.020560 2.327363
v -4.654725 0.000000 0.000000
v -4.654725 0.000000 -2.327363
v -4.000000 0.000000 -4.000000
v -2.327363 0.000000 -4.654725
v 0.000000 -0.020560 -4.654725
v 0.000000 0.709880 -1.230535
v -0.000000 7.395413 0.000000
v 0.962071 0.709880 -0.767226
v -0.533909 0.709880 1.108674
v -1.199683 0.709880 0.273820
v -0.962071 0.709880 -0.767226
v 1.506076 0.859071 1.325337
v 1.199683 0.709880 0.273820
v 0.533909 0.709880 1.108674
v 0.000000 1.875340 -1.177842
v -0.000000 2.293973 -0.649884
v -0.000000 4.365648 -0.627970
v 0.000000 6.167194 -0.942957
v 0.000000 6.232434 -1.708677
v 1.335898 6.232434 -1.065343
v 0.737233 6.167195 -0.587924
v 0.490966 4.365648 -0.391533
v 0.508100 2.293973 -0.405196
v 0.920874 1.875340 -0.734372
v -0.741367 6.232434 1.539465
v -0.409133 6.167195 0.849574
v -0.272466 4.365648 0.565781
v -0.281974 2.293973 0.585526
v -0.511047 1.875340 1.061199
v -1.665837 6.232434 0.380217
v -0.919314 6.167195 0.209828
v -0.612225 4.365648 0.139736
v -0.633590 2.293973 0.144613
v -1.148311 1.875340 0.262095
v -1.335898 6.232434 -1.065343
v -0.737233 6.167195 -0.587924
v -0.490967 4.365648 -0.391533
v -0.508100 2.293973 -0.405196
v -0.920874 1.875340 -0.734372
v 1.665837 6.232434 0.380216
v 0.919315 6.167195 0.209828
v 0.612225 4.365648 0.139736
v 0.633590 2.293973 0.144613
v 1.148311 1.875340 0.262095
v 0.741367 6.232434 1.539465
v 0.409133 6.167195 0.849575
v 0.272466 4.365648 0.565781
v 0.281974 2.293973 0.585526
v 0.511046 1.875340 1.061199
v 0.000000 5.012550 -0.969733
v 0.758168 5.012550 -0.604618
v -0.420751 5.012550 0.873699
v -0.945419 5.012550 0.215786
v -0.758168 5.012550 -0.604618
v 0.945419 5.012550 0.215786
v 0.420751 5.012550 0.873699
vt 0.0523 0.5444
vt 0.1817 0.4284
vt 0.1641 0.5859
vt 0.0177 0.4451
vt 0.1526 0.3090
vt 0.0189 0.1737
vt 0.0188 0.3088
vt 0.0561 0.0762
vt 0.1757 0.1924
vt 0.3024 0.4534
vt 0.3071 0.5902
vt 0.3413 0.2459
vt 0.2906 0.1614
vt 0.4116 0.1801
vt 0.2834 0.3774
vt 0.1526 0.0362
vt 0.2917 0.1622
vt 0.4446 0.5865
vt 0.4443 0.2989
vt 0.3711 0.3021
vt 0.4396 0.0275
vt 0.4094 0.1829
vt 0.4219 0.4255
vt 0.5474 0.5381
vt 0.5811 0.4376
vt 0.5715 0.1505
vt 0.5811 0.2997
vt 0.5272 0.0533
vt 0.2208 0.2194
vt 0.3456 0.3610
vt 0.2878 0.0321
vt 0.2321 0.3392
vt 0.4432 0.0177
vt 0.7347 0.7934
vt 0.7382 0.7595
vt 0.8982 0.7768
vt 0.6169 0.7595
vt 0.6139 0.7879
vt 0.4951 0.7634
vt 0.1551 0.6832
vt 0.2925 0.6268
vt 0.2925 0.6832
vt 0.7795 0.6832
vt 0.6421 0.6268
vt 0.7795 0.6255
vt 0.5046 0.7241
vt 0.6421 0.7241
vt 0.3986 0.6268
vt 0.3986 0.6832
vt 0.5046 0.6268
vt 0.0177 0.6268
vt 0.1551 0.6255
vt 0.8856 0.6268
vt 0.1899 0.9579
vt 0.1194 0.8696
vt 0.2324 0.8696
vt 0.1899 0.7813
vt 0.0943 0.7595
vt 0.0177 0.8206
vt 0.0177 0.9186
vt 0.0943 0.9797
vt 0.2793 0.2349
vt 0.2304 0.2758
vt 0.6597 0.0177
vt 0.6954 0.0993
vt 0.6367 0.0768
vt 0.7558 0.0777
vt 0.7238 0.0440
vt 0.8840 0.1330
vt 0.7385 0.1141
vt 0.9157 0.0886
vt 0.9781 0.1232
vt 0.9224 0.1276
vt 0.2677 0.8141
vt 0.3463 0.8037
vt 0.3086 0.8339
vt 0.6387 0.3550
vt 0.7130 0.3801
vt 0.6596 0.4053
vt 0.7245 0.3245
vt 0.6919 0.3383
vt 0.8655 0.3566
vt 0.7351 0.3577
vt 0.9770 0.3365
vt 0.9078 0.3751
vt 0.9174 0.3282
vt 0.2677 0.9018
vt 0.3086 0.8821
vt 0.6803 0.2948
vt 0.6251 0.3035
vt 0.7194 0.2854
vt 0.8764 0.2832
vt 0.9221 0.2861
vt 0.3363 0.9565
vt 0.3464 0.9122
vt 0.6751 0.2482
vt 0.6178 0.2499
vt 0.7179 0.2431
vt 0.9823 0.2484
vt 0.9247 0.2452
vt 0.3935 0.9014
vt 0.6755 0.1996
vt 0.6164 0.1941
vt 0.7201 0.1992
vt 0.8793 0.2446
vt 0.9823 0.2060
vt 0.9257 0.2051
vt 0.4598 0.8580
vt 0.4144 0.8579
vt 0.6819 0.1498
vt 0.6222 0.1361
vt 0.7266 0.1555
vt 0.8831 0.1684
vt 0.9252 0.1659
vt 0.4218 0.7790
vt 0.3934 0.8145
vt 0.3363 0.7595
vt 0.8815 0.2060
vt 0.8720 0.3208
vt 0.8825 0.1012
vt 0.9735 0.0816
vt 0.9718 0.3817
vt 0.9807 0.2918
vt 0.4218 0.9370
vt 0.9810 0.1644
vn 0.1035 0.8806 0.4623
vn 0.0964 0.9481 0.3030
vn 0.0000 0.9780 0.2088
vn 0.0659 0.9835 0.1683
vn 0.2325 0.9320 0.2779
vn 0.0553 0.9960 -0.0702
vn 0.2827 0.9564 0.0728
vn 0.1873 0.9776 -0.0961
vn 0.2421 0.9703 0.0000
vn 0.0921 0.9772 -0.1913
vn -0.0277 0.9947 -0.0993
vn 0.2308 0.9274 -0.2944
vn 0.2771 0.9572 -0.0837
vn 0.3724 0.9074 0.1947
vn 0.0777 0.9770 -0.1985
vn -0.1094 0.9539 0.2794
vn 0.0364 0.9844 0.1721
vn 0.1683 0.9835 0.0659
vn 0.0674 0.9901 0.1230
vn 0.4338 0.8823 0.1829
vn 0.2845 0.9565 0.0649
vn 0.0886 0.9961 0.0000
vn 0.2000 0.9789 0.0424
vn 0.1417 0.9830 0.1171
vn 0.3021 0.9524 0.0412
vn -0.0193 0.9986 -0.0493
vn 0.0000 0.9777 0.2098
vn 0.0005 0.9781 -0.2083
vn 0.1879 0.9782 -0.0887
vn 0.2249 0.0000 0.9744
vn 0.9783 0.0000 -0.2071
vn 0.9783 0.0000 0.2071
vn 0.0000 0.0000 -1.0000
vn -1.0000 0.0000 0.0000
vn -0.3645 0.0000 -0.9312
vn -0.9312 0.0000 -0.3645
vn -0.9312 0.0000 0.3645
vn 0.2615 0.7979 -0.5431
vn 0.5877 0.7979 -0.1341
vn 0.4713 0.7979 0.3758
vn -0.0000 0.7979 0.6028
vn -0.4713 0.7979 0.3758
vn -0.5877 0.7979 -0.1341
vn -0.2615 0.7979 -0.5431
vn -0.1285 0.9864 -0.1025
vn 0.0929 0.8937 0.4389
vn -0.4335 0.0407 -0.9002
vn -0.2867 0.7507 -0.5952
vn -0.4339 0.0095 -0.9009
vn -0.4338 0.0209 -0.9008
vn -0.0408 -0.9956 -0.0848
vn -0.9741 0.0407 -0.2223
vn -0.6441 0.7507 -0.1470
vn -0.9749 0.0095 -0.2225
vn -0.9747 0.0209 -0.2225
vn -0.0918 -0.9956 -0.0209
vn -0.7812 0.0407 0.6230
vn -0.5165 0.7507 0.4119
vn -0.7818 0.0095 0.6235
vn -0.7817 0.0209 0.6234
vn -0.0736 -0.9956 0.0587
vn -0.0000 0.0407 0.9992
vn 0.0000 0.7507 0.6607
vn 0.0000 0.0095 1.0000
vn -0.0000 0.0209 0.9998
vn -0.0000 -0.9956 0.0941
vn 0.7812 0.0407 0.6230
vn 0.5165 0.7507 0.4119
vn 0.7818 0.0095 0.6235
vn 0.7817 0.0209 0.6234
vn 0.0736 -0.9956 0.0587
vn 0.9741 0.0407 -0.2223
vn 0.6441 0.7507 -0.1470
vn 0.9749 0.0095 -0.2225
vn 0.9747 0.0209 -0.2225
vn 0.0918 -0.9956 -0.0209
vn 0.4335 0.0407 -0.9002
vn 0.2867 0.7507 -0.5952
vn 0.4339 0.0095 -0.9009
vn 0.4338 0.0209 -0.9008
vn 0.0408 -0.9956 -0.0848
vn 0.3918 -0.4298 -0.8135
vn 0.8803 -0.4298 -0.2009
vn 0.7059 -0.4298 0.5630
vn -0.0000 -0.4298 0.9029
vn -0.7059 -0.4298 0.5630
vn -0.8803 -0.4298 -0.2009
vn -0.3918 -0.4298 -0.8135
vn 0.0210 0.9998 -0.0048
vn 0.0482 0.9981 -0.0385
vn -0.0166 0.9914 -0.1301
vn -0.0090 0.9904 -0.1379
vn 0.2820 0.9576 0.0597
vn -0.0000 0.9846 0.1749
vn -0.0921 0.9772 -0.1913
vn -0.1734 0.9794 0.1036
s off
f 1/1/1 7/2/1 6/3/1
f 2/4/2 8/5/2 7/2/2
f 4/6/3 8/5/3 3/7/3
f 5/8/4 9/9/4 4/6/4
f 6/3/5 12/10/5 11/11/5
f 35/12/6 25/13/6 26/14/6
f 7/2/7 37/15/7 12/10/7
f 10/16/8 13/17/8 9/9/8
f 12/10/9 15/18/9 11/11/9
f 35/12/10 17/19/10 33/20/10
f 13/17/11 19/21/11 18/22/11
f 16/23/12 20/24/12 15/18/12
f 17/19/13 21/25/13 16/23/13
f 17/19/14 23/26/14 22/27/14
f 26/14/15 24/28/15 23/26/15
f 1/1/16 2/4/16 7/2/16
f 2/4/3 3/7/3 8/5/3
f 4/6/17 9/9/17 8/5/17
f 5/8/18 10/16/18 9/9/18
f 6/3/19 7/2/19 12/10/19
f 25/13/20 39/29/20 9/9/20
f 38/30/21 12/10/21 37/15/21
f 10/16/22 14/31/22 13/17/22
f 12/10/23 16/23/23 15/18/23
f 8/5/24 36/32/24 7/2/24
f 38/30/25 17/19/25 16/23/25
f 13/17/22 14/31/22 19/21/22
f 16/23/26 21/25/26 20/24/26
f 17/19/27 22/27/27 21/25/27
f 17/19/28 26/14/28 23/26/28
f 26/14/29 19/33/29 24/28/29
f 26/34/30 18/35/30 19/36/30
f 26/34/31 13/37/31 18/35/31
f 25/38/32 9/39/32 13/37/32
f 22/40/33 31/41/33 21/42/33
f 6/43/34 28/44/34 27/45/34
f 15/46/34 28/44/34 11/47/34
f 21/42/35 30/48/35 20/49/35
f 20/49/36 29/50/36 15/46/36
f 22/40/33 23/51/33 32/52/33
f 6/43/37 27/45/37 1/53/37
f 46/54/38 34/55/38 47/56/38
f 47/56/39 34/55/39 67/57/39
f 67/57/40 34/55/40 72/58/40
f 72/58/41 34/55/41 52/59/41
f 52/59/42 34/55/42 57/60/42
f 57/60/43 34/55/43 62/61/43
f 62/61/44 34/55/44 46/54/44
f 40/62/45 41/63/45 39/29/45
f 39/29/46 8/5/46 9/9/46
f 38/64/47 42/65/47 33/66/47
f 65/67/48 42/65/48 66/68/48
f 65/67/49 44/69/49 43/70/49
f 81/71/50 45/72/50 77/73/50
f 62/74/51 45/75/51 63/76/51
f 37/77/52 66/78/52 38/79/52
f 60/80/53 66/78/53 61/81/53
f 60/80/54 64/82/54 65/83/54
f 58/84/55 81/85/55 80/86/55
f 57/87/56 63/76/56 58/88/56
f 56/89/57 37/77/57 36/90/57
f 55/91/58 61/81/58 56/89/58
f 54/92/59 60/80/59 55/91/59
f 79/93/60 58/84/60 80/86/60
f 52/94/61 58/88/61 53/95/61
f 76/96/62 36/90/62 41/97/62
f 75/98/63 56/89/63 76/96/63
f 75/98/64 54/92/64 55/91/64
f 73/99/65 79/93/65 83/100/65
f 73/101/66 52/94/66 53/95/66
f 71/102/67 41/97/67 40/103/67
f 70/104/68 76/96/68 71/102/68
f 70/104/69 74/105/69 75/98/69
f 68/106/70 83/100/70 82/107/70
f 67/108/71 73/101/71 68/109/71
f 51/110/72 40/103/72 35/111/72
f 50/112/73 71/102/73 51/110/73
f 49/113/74 70/104/74 50/112/74
f 78/114/75 68/106/75 82/107/75
f 47/115/76 68/109/76 48/116/76
f 42/65/77 35/111/77 33/66/77
f 43/70/78 51/110/78 42/65/78
f 44/69/79 50/112/79 43/70/79
f 45/72/80 78/114/80 77/73/80
f 46/117/81 48/116/81 45/75/81
f 44/69/82 78/114/82 49/113/82
f 49/113/83 82/107/83 69/118/83
f 82/107/84 74/105/84 69/118/84
f 83/100/85 54/92/85 74/105/85
f 79/93/86 59/119/86 54/92/86
f 80/86/87 64/82/87 59/119/87
f 64/120/88 77/73/88 44/69/88
f 35/12/89 40/62/89 25/13/89
f 7/2/90 36/32/90 37/15/90
f 35/12/91 26/14/91 17/19/91
f 25/13/92 40/62/92 39/29/92
f 38/30/93 16/23/93 12/10/93
f 8/5/94 41/63/94 36/32/94
f 38/30/95 33/20/95 17/19/95
f 26/34/31 25/38/31 13/37/31
f 22/40/33 32/52/33 31/41/33
f 6/43/34 11/47/34 28/44/34
f 15/46/34 29/50/34 28/44/34
f 21/42/35 31/41/35 30/48/35
f 20/49/36 30/48/36 29/50/36
f 39/29/96 41/63/96 8/5/96
f 38/64/47 66/68/47 42/65/47
f 65/67/48 43/70/48 42/65/48
f 65/67/49 64/120/49 44/69/49
f 81/71/50 63/121/50 45/72/50
f 62/74/51 46/117/51 45/75/51
f 37/77/52 61/81/52 66/78/52
f 60/80/53 65/83/53 66/78/53
f 60/80/54 59/119/54 64/82/54
f 58/84/55 63/122/55 81/85/55
f 57/87/56 62/74/56 63/76/56
f 56/89/57 61/81/57 37/77/57
f 55/91/58 60/80/58 61/81/58
f 54/92/59 59/119/59 60/80/59
f 79/93/60 53/123/60 58/84/60
f 52/94/61 57/87/61 58/88/61
f 76/96/62 56/89/62 36/90/62
f 75/98/63 55/91/63 56/89/63
f 75/98/64 74/105/64 54/92/64
f 73/99/65 53/123/65 79/93/65
f 73/101/66 72/124/66 52/94/66
f 71/102/67 76/96/67 41/97/67
f 70/104/68 75/98/68 76/96/68
f 70/104/69 69/118/69 74/105/69
f 68/106/70 73/99/70 83/100/70
f 67/108/71 72/124/71 73/101/71
f 51/110/72 71/102/72 40/103/72
f 50/112/73 70/104/73 71/102/73
f 49/113/74 69/118/74 70/104/74
f 78/114/75 48/125/75 68/106/75
f 47/115/76 67/108/76 68/109/76
f 42/65/77 51/110/77 35/111/77
f 43/70/78 50/112/78 51/110/78
f 44/69/79 49/113/79 50/112/79
f 45/72/80 48/125/80 78/114/80
f 46/117/81 47/115/81 48/116/81
f 44/69/82 77/73/82 78/114/82
f 49/113/83 78/114/83 82/107/83
f 82/107/84 83/100/84 74/105/84
f 83/100/85 79/93/85 54/92/85
f 79/93/86 80/86/86 59/119/86
f 80/86/87 81/85/87 64/82/87
f 64/120/88 81/71/88 77/73/88
<EFBFBD>PNG

IHDR<00><00><00>>a<>gAMA<00><> <0B>a cHRMz&<00><><00><00><>u0<00>`:<3A>p<><70>Q<bKGD<00>C<EFBFBD> pHYs  <01><>~<7E>`<60>IDATx<54><78><EFBFBD>w|<1C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>]<5D>$Iq/<2F>^L %<25><>FB<46>Mo JB˓'l<><6C>BǸH<C7B8>!<21>F<EFBFBD><06><>c<><63>ܭ.IV<49>[f<>~<7E><>3<EFBFBD><33><EFBFBD>lLy<4C><79><EFBFBD><EFBFBD>~<7E><><EFBFBD><EFBFBD>;m<><6D>s<EFBFBD><73><EFBFBD>\<5C><><EFBFBD><14><03>P(<28>R<EFBFBD>@<40><><EFBFBD>K<EFBFBD>@<40>!BH<42><48>`<60><>-<2D>ܱ<EFBFBD><DCB1><EFBFBD>:<3A>@
<EFBFBD>aC <20><><1C><1E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>5<EFBFBD>\<5C><><EFBFBD><EFBFBD><EFBFBD>*<2A>/<2F>B4<>?<3F>g}<7D>9<14><05><><EFBFBD><EFBFBD> <16><>o<EFBFBD><6F><EFBFBD>$0<><30>"\<5C>;<3B><><EFBFBD><EFBFBD>\<5C>s<EFBFBD><73><EFBFBD><EFBFBD><EFBFBD>s/?`~<7E><><EFBFBD>A<EFBFBD><41><EFBFBD><00><><EFBFBD> <0B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>c<EFBFBD>"$.<2E>?<3F>Sot:<3A><>Ʊ)<29>3.\<5C><>}<7D>=3<><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD>t<EFBFBD><74>B\<5C><>E<EFBFBD><45><EFBFBD>8<>i9<10>}+<2B>;<3B><12><>l!<21>F<EFBFBD><46>M<EFBFBD><4D><EFBFBD>R`<60><><EFBFBD>R$<24><>*$#߃d"<22><>|<"HF<48><1D><> E<>%<25><><EFBFBD>}L<>?{<7B>O<EFBFBD><1C>}<7D><><EFBFBD><EFBFBD>5~<7E><><EFBFBD><EFBFBD>ͱR"<22><><1C>k<EFBFBD><6B>#A<><41>@2<>As<41><73>4<EFBFBD>
<EFBFBD><EFBFBD>;<3B><11>B~<7E>sq<73><71><EFBFBD><EFBFBD><0F>9<EFBFBD><39><EFBFBD><EFBFBD>ړ<EFBFBD>+<2B><><01>Ou4<10><><EFBFBD><EFBFBD>#[<5B>y<1F><<3C><>O.z<>?<3F><><17>W<EFBFBD><57><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F><08>7<EFBFBD>K<01>q<EFBFBD>{<7B><>#<02>=hBH<01><10><><EFBFBD><16>Z<EFBFBD><5A>H<EFBFBD><48>\<5C><>MfzM)<29><1F><>O<EFBFBD>s<EFBFBD><73>o<EFBFBD>p<EFBFBD><70>l<EFBFBD><6C>{<0E>o<EFBFBD><04>4H<34><31>M<1F><>{g<><67><EFBFBD><EFBFBD>ϑڷ<CF91>ԾEZ<45>>GH<47> <03><>I<EFBFBD><49>Y<EFBFBD><59><EFBFBD><EFBFBD>r<><72><EFBFBD>C<EFBFBD>*<2A>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><1E>"c<>&<26>.MP<4D>X<EFBFBD><58><EFBFBD><E68985><EFBFBD><EFBFBD><EFBFBD>yr<79><72><EFBFBD><EFBFBD>o'<27><><<3C><><EFBFBD> <09>R<EFBFBD>w<><77><EFBFBD><EFBFBD>Y3<1A>$#<23>#Dj<12>%<25><>d<EFBFBD><64><EFBFBD><EFBFBD>*%[<5B>J<EFBFBD><4A>Y<08><>?u6!Ǣ<><C7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȇ<EFBFBD>p<0F><>!*<2A> <0C>;A<><41><EFBFBD><45><D2B6><14><>y<EFBFBD><79><EFBFBD><EFBFBD><EFBFBD><>T"<22><><EFBFBD><EFBFBD>Ɵ|<7C>+<2B><><EFBFBD>c<EFBFBD>4$w,<2C>SZa<5A> w)<29><>_"@<40>¾5<00>e<EFBFBD><65><EFBFBD>=<3D>
<EFBFBD><EFBFBD>+ hN9^}<7D>!<05><>H<EFBFBD><48><EFBFBD>g<EFBFBD>ϫ*x<><78>Ag<41><0F><>JZ<4A>B<EFBFBD>jE<6A>F<EFBFBD><46>w<EFBFBD><>—E<C297><07>)<29><>#<23><>z#<23><><EFBFBD><EFBFBD> [<5B>$<0F>BxG0<30><7F>‰K<C289>NA<4E><41>q<EFBFBD>R]]$<10><> <0B><><EFBFBD>@mM
9<EFBFBD>z<EFBFBD>w<EFBFBD>~`<07><>[,<2C>-<2D>v<EFBFBD><76><EFBFBD>!<21>đ<EFBFBD>Oyt D<>^<5E>"<22>R6<52>2餁A<>Q$<10>9<EFBFBD>;,^<5E><><EFBFBD>\<5C><>`ٲe\~<7E><>_x<5F><78><EFBFBD><EFBFBD>G<><47>O<EFBFBD>,<2C><>h_<68><5F>H<EFBFBD>~<7E><EFBFBD>I<EFBFBD><49><EFBFBD>oOJ<4F>.<2E><>|<7C><><EFBFBD>s<EFBFBD><73>'D]<5D><>@~-<2D>Y<EFBFBD>K C<>]Jey<65><79>=<3D>W/<00><><EFBFBD>J<EFBFBD><4A>^<5E><><EFBFBD>+><3E>G<EFBFBD>l<EFBFBD>+=<07><>@sS#<23>WLKK O,|<7C>[<5B><><EFBFBD>E<EFBFBD>E<EFBFBD> <0C><><EFBFBD><EFBFBD>T<><54>}<1F><><EFBFBD>H<EFBFBD>?<19>D2Lہ
<EFBFBD><EFBFBD><03><05>Nہ5>d :<17><>@r<><72><EFBFBD>"<22><> :{<7B>U<EFBFBD><55><EFBFBD><EFBFBD><EFBFBD>
<02><14>DZm'<27><>|1<>8؎²mP`;<16>m<EFBFBD>J<EFBFBD>A&<01>DJ<44><4A>R<08>!<11><><EFBFBD><EFBFBD><EFBFBD>rL W<>Q^<5E>ġ<EFBFBD>#<23><><EFBFBD><EFBFBD><EFBFBD>L<>OST7+<2B><>t<EFBFBD>u 4<>l c<>Ѵ<EFBFBD><D1B4>M<EFBFBD><4D><EFBFBD>)&<26><>q<EFBFBD><71><EFBFBD>=<3D>_KB<4B>k<EFBFBD>\A<><41>ل<EFBFBD><D984>M<EFBFBD><4D>Y><3E><1A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>f<EFBFBD>m&ݺ<><DDBA><EFBFBD>9<EFBFBD>O-zCO܀<4F><DC80><08><><EFBFBD>=B<><42><EFBFBD>i<EFBFBD><69>1(Eہ<45><DB81><EFBFBD><EFBFBD>G<EFBFBD><47><EFBFBD>|<17><><EFBFBD><EFBFBD><0F>ZQ<5A>Z_A.<2E><><EFBFBD><Mt<4D><<3C><>` <0C>~<7E><1D><><EFBFBD>\<04>(<28>h*<2A>R<EFBFBD><52><EFBFBD>=<3D><><EFBFBD><EFBFBD>^<5E><>3<EFBFBD><33>gI)<05><03>غv<15><>v<EFBFBD>Of ><3E><><EFBFBD>G<03>~<7E><><EFBFBD>:b<><1F><>#<23>oaE><3E><>{<7B>4H<><48>$ޣGw<47><77>|<7C><0E><><EFBFBD>jZ<6A><1B><><EFBFBD><EFBFBD>c <0C>g𝳧q<F09DB3A7><71>S<EFBFBD><53><EFBFBD><EFBFBD>r<EFBFBD><72>1<>8<><38>b L<0E>{<7B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>D{<11><>?<3F><><EFBFBD><EFBFBD>&@}<7D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"_<>!.H<><48><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>kW<EFBFBD>m<EFBFBD>4<EFBFBD>{<7B><>Ӑ<EFBFBD>Rd<52><64>p<EFBFBD>s}<7D> ̌<><CC8C>
PY]$<24> <20><>ll.{Lk<4C><6B>99<39><39>{
Z<EFBFBD><EFBFBD><EFBFBD><02><><EFBFBD>S<08><>̅gO<67>$<24>N <20>.;<3B><>y'<27><><1A>JEi<45><69>><3E>{ߢm<DFA2>ۉ5 7q<><71><EFBFBD><EFBFBD><EFBFBD>76<37><36><EFBFBD><EFBFBD><EFBFBD>7<06>x<EFBFBD><78>f<1A>݆O<DD86><4F>$A2TJ<54>19@<40>#<23><19>}<7D><><EFBFBD>h*<2A><EFBFBD><EBA9AC><EFBFBD>9Iѳ<>V$3<06>K<EFBFBD>ї<EFBFBD>.<2E>l<EFBFBD><6C>1m6<>T<EFBFBD>3<EFBFBD>88N<38><4E>KU<4B>%<25><>.G<>e<EFBFBD><10><><EFBFBD><EFBFBD>!_<><5F>7I<00>ý<EFBFBD>
.<2E>+<2B><><EFBFBD><EFBFBD><EFBFBD>+<2B>$<24><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD>s<EFBFBD>&uI<75><49>#z<> 3غvN<>AiUs
)D<>^Y<><59><EFBFBD>d<EFBFBD><64>@<40>y<EFBFBD>XF<58><46>q<EFBFBD>W<EFBFBD>0Y<30>t)<29><>4<EFBFBD><34>H 8QPqm<>><02>p<EFBFBD><70><EFBFBD><EFBFBD>.U<08>W<EFBFBD> <20>@<40><06><>l}x<><78>O<EFBFBD><4F><EFBFBD><EFBFBD>D<EFBFBD>,D<>]7<><37>#C<><43><EFBFBD><EFBFBD> <0B>4| ڎ<><DA8E>Gp<47>J<EFBFBD><4A><EFBFBD> <0B><>e[<1A>IJ<49><4A><01>@J<03>0S<30>@<40><><16><>}'bR]<5D><><EFBFBD><EFBFBD>sd1<03><HF<48><46>
<EFBFBD><EFBFBD>]<5D>#߻&s<>xƌ<>Ǧ<EFBFBD><C7A6><EFBFBD>w5<><35><EFBFBD>3<EFBFBD><33>t<<1E><> <20><>x<EFBFBD><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD>l=<3D>V<EFBFBD><56>L롉@<40><><EFBFBD>(<28>i<EFBFBD><01>4<EFBFBD>%wV<77><01>`0<><30><EFBFBD><00><><EFBFBD> <04>o<EFBFBD><6F>2 HZ<48><5A><EFBFBD>Hbw<><77><EFBFBD>#<23><>pZYY9 <0F><>V<>㚛_<E39A9B><00>5<EFBFBD>8N<38>W<EFBFBD><14>01<30><31> B`H#<23>ܟ<><DC9F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><08>H<EFBFBD><48>7ʓ9<CA93><39>t<EFBFBD>$<24>Y<13>p<EFBFBD>y<17><>W<EFBFBD>S<EFBFBD>n*<2A>
<EFBFBD>O<EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޻Z<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>WT
<<3C>8b<38>V<EFBFBD><56>&<26>X<EFBFBD><58>0<02>Ba<42><16>K<1D>|g <20>|<0E>iC<69>L2<06>{_="䇂it<69><74><EFBFBD><EFBFBD>އ/ <09><>E)<10><EFBFBD>o^{<7B><>/$ <09><><EFBFBD>[<5B><>W|iU3Y<13><><EFBFBD>@#}<7D>;<3B>l;<3B>Wh<57><68><EFBFBD><EFBFBD><EFBFBD>N95A<04>GM<00><><EFBFBD>%<25><>a<EFBFBD><1C><><01><>+<2B>OL<4F><4C><EFBFBD><EFBFBD><EFBFBD>{<7B><>8-ޓ<02>Cӭc;<3B><EFBFBD><7F>M<><4D><EFBFBD><10>tik<69>Q<EFBFBD><51><EFBFBD><EFBFBD><EFBFBD>ñ8]<5D>3<EFBFBD>I<EFBFBD>n<EFBFBD><6E>ٳG<D9B3><47><EFBFBD><EFBFBD>!|9L<39><14>U<EFBFBD><55><EFBFBD><EFBFBD><EFBFBD><EFBFBD>k<EFBFBD>>vХa\Z<>L<EFBFBD><4C><EFBFBD>Ț<EFBFBD>E<><45>B<><42><EFBFBD><EFBFBD><EFBFBD>)<29><>'<0E><>w5<><35><EFBFBD><16>*Z<>>j<><6A><EFBFBD><EFBFBD><EFBFBD>3i*<2A><>{<7B>'ACc=R<><52>F!<12><>><3E>8<EFBFBD><38>ǃ<10><>f<EFBFBD><66>4&F<><46>4fG)<29><>O<EFBFBD><4F><EFBFBD><EFBFBD>_<EFBFBD>!R;<3B>ΑX<CE91><58>eDZ,<1B>qR<71><52><EFBFBD><EFBFBD><EFBFBD><EFBFBD>M8><3E><> <b<2"P)S<7F><53><EFBFBD>!_6<5F><36><EFBFBD><EFBFBD>Q<EFBFBD><51><EFBFBD>k<EFBFBD><-<2D>Nf<4E><66><EFBFBD>=d<>~<7E>0<EFBFBD><08>a<EFBFBD><61><10><>7<EFBFBD><37><EFBFBD><EFBFBD>hd<68><64><EFBFBD><EFBFBD><EFBFBD>O<EFBFBD><4F>M<EFBFBD>[<5B><><1B><EFBFBD>f
<0C>P<EFBFBD>2<06>N<EFBFBD>Q<EFBFBD>t<><74><18><>M>!<21> <09><>M<EFBFBD><4D>^_<><01>M<EFBFBD><4D><11><>}<7D><><EFBFBD>o$<24><><EFBFBD><EFBFBD><0E><><EFBFBD><EFBFBD><EFBFBD>RR$,<2C>Á<EFBFBD><C381><EFBFBD>1<EFBFBD><31><EFBFBD>Q<EFBFBD> <20><>{<7B><18><07><><1C><>.<2E>C<11><>/<2F>?<3F><><EFBFBD><E7A388>r<Y<><59><EFBFBD>O;o<>/<>o<EFBFBD><6F>S<1F><15>W~<7E><>]S[<5B>4N<34><4E>A<EFBFBD><41>1<EFBFBD>,2<>{<7B><><EFBFBD>23<32><33>^<5E><><EFBFBD>Vna<6E><61><EFBFBD>Ю<17>qP<0E><>Uˈ<55><CB88>|a2<06><>#<23><><EFBFBD>S<EFBFBD><14><><EFBFBD>g<EFBFBD>Q<EFBFBD><51>„<EFBFBD><0E><>=<10><EFBFBD><7F><EFBFBD>B"P<><50><EFBFBD>+<2B><12><><EFBFBD>B$!߃<><DF83>@Ji <20>&<26><><EFBFBD><EFBFBD>e<EFBFBD><65>3~@<40><>BdOL<><4C><EFBFBD>)
<EFBFBD>w<EFBFBD><EFBFBD><EFBFBD>ʔ<1F><>@<40><>uuu<75><07>vaPU<50>w<EFBFBD><03><>1<EFBFBD>E<EFBFBD>$f[<5B><>=6+w)<29><><EFBFBD><EFBFBD>7Vl<56>_<EFBFBD><5F>!Hp<08><><EFBFBD> 2<06><><EFBFBD>ի<EFBFBD>1<EFBFBD><03><>?<3F><14><> =<3D><0E><><EFBFBD><EFBFBD><EFBFBD>OnM<6E><4D><13>JWs<57><73><EFBFBD>/ ߃<>D`<1A>ɫ3M<33><4D>0H[E<><45><EFBFBD><07>`<60>(<28><1D>\au~<7E>\2q$<1F><><EFBFBD>K<EFBFBD><4B>p<19>><17><10><>~<7E><><EFBFBD>P]]<5D><><EFBFBD><15>} <09><><0E><><EFBFBD>F<EFBFBD><46><EFBFBD>Q<EFBFBD>%<25>Wl<57><6C><15>><3E>[<5B><><03>Hx*A<><41><EFBFBD><EFBFBD><18><>^\<5C>P<EFBFBD><50><19>w<EFBFBD><77>G<<3C>ZS<17><><EFBFBD><EFBFBD><EFBFBD>r<EFBFBD>G<EFBFBD>p<1C><><EFBFBD><EFBFBD><EFBFBD>S<EFBFBD><0F>|^}<7D>5.<2E><>"<00>i<EFBFBD><69><EFBFBD>?<3F><><EFBFBD>ۇ<EFBFBD>%<25><><EFBFBD><EFBFBD><EFBFBD>'<27><><EFBFBD><EFBFBD><EFBFBD>fO<1C>"<22><>?{0x<30>`<1F><00>_<EFBFBD>!n<>j[<19>f<EFBFBD>"<22><08>[<5B><>d<EFBFBD>><3E>$<24><>a<>1<EFBFBD> @Ѻo9B<39>ap<61>9]<5D><>KCҫW/<2F><>E<EFBFBD><45>"H<08>b<EFBFBD>#e<02><> <20>
<EFBFBD>߰<EFBFBD>͛<EFBFBD>}<7D>1<EFBFBD>#B<>'<10><><EFBFBD>(<28>0Sdӏ>P<><50>ouCB<43>{<7B>=s<>;<3B>]<5D>^Q<><51><EFBFBD><EFBFBD><03>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD>w<EFBFBD>y<EFBFBD><79><EFBFBD>֔<EFBFBD><D694>/s<><73>J镬<4A>(<15>gYG<59> }<7D><>Np!<21>x<06><>W<EFBFBD><57>2[<5B><><EFBFBD>`<00>{<7B> ;+;1w<31>0O\l<18>Oo<4F><6F>T<EFBFBD><54><EFBFBD>*<2A>X<>E$<12><><12>IW<19><e3a<33><01>ad2Mӵ*$<24>={Ґ<><D290>B/<2F><13><><EFBFBD><EFBFBD>s<EFBFBD>uXGЗ@~2<>ʕ!;[<5B>g=Vމ<8qt<<3C>^Q<>0<EFBFBD>:<3A>k<EFBFBD><6B>'<27><>ŝ'<27>Q<EFBFBD><EFBFBD>]2} <0B>
8 :<3A>GA<47><41><EFBFBD>@<40><>s¤u<C2A4>&<26><><EFBFBD>g<EFBFBD>Hs5u<35><75><EFBFBD>$_~<11>3<EFBFBD><33><EFBFBD>ݯ<EFBFBD><DDAF>:h?<3F>R
!R<18><><EFBFBD><EFBFBD>NB <20><><EFBFBD><EFBFBD><11><14>Ϟ<EFBFBD><CF9E>l6<6C>^IeU<65><55><EFBFBD>t<EFBFBD>z<EFBFBD>X<EFBFBD><58><EFBFBD><0F><><EFBFBD><EFBFBD>z<EFBFBD><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD>A0<18>A)?P!<21><><EFBFBD><08>
<18><>I&<26><>ӧ<EFBFBD><D3A7>V<EFBFBD><56>WB><3E><><15>޿}<7D>O<04><08>J<EFBFBD>
<EFBFBD><EFBFBD>
$<24>7'j!\<5C>y2<79>Ӻ<0E>
)<29><><EFBFBD><EFBFBD>Y<EFBFBD>*<2A><><03>ֽ<EFBFBD><D6BD>'ah<61><68>PJ<50>`<60><><EFBFBD><EFBFBD><EFBFBD>׎<EFBFBD><D78E><EFBFBD><EFBFBD> "<22><><EFBFBD>C!__"p<><15><><EFBFBD>-<2D><><EFBFBD><EFBFBD>Ng<4E><67>XS$]<5D>M1<4D><07>y<EFBFBD><79>W)h
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>9a<EFBFBD><EFBFBD><EFBFBD><10><>G<EFBFBD>qX<><58>uضE<D8B6>e<EFBFBD>8J<38><4A>]<5D>8<EFBFBD><38>Q<EFBFBD><51>d<EFBFBD>ǻ<EFBFBD>,Eck<63>N<EFBFBD>S<10>[<18>$<24>
<EFBFBD><13>ڵ<EFBFBD><08>8Nj0<6A><30>iS<69>2 <20>*<2A>}!<21>t<EFBFBD>
<EFBFBD>"<22><><EFBFBD><EFBFBD>2C<32><43>Dx<44><78><EFBFBD><EFBFBD>s'<27>>x<>]<5D><>;<3B>~<7E>O9,[eѺ<65><D1BA><EFBFBD><EFBFBD><19><><EFBFBD>]<5D>AZ<41><5A><EFBFBD>}<7D><>뾋RJ#<23><>$<24><03><><EFBFBD>#<14>lbe<62>w<EFBFBD>q<EFBFBD>R<EFBFBD><52><EFBFBD><EFBFBD>KNb<4E><62><13><><EFBFBD>ԷS<D4B7><53>;8Nc]<13><><EFBFBD>8<EFBFBD><08>m!<04>{i<>P<EFBFBD><1C><>5<EFBFBD><35><EFBFBD><EFBFBD>f<gˆLF5<>{  Z<><><D4B4>wz<13>!<21>א<EFBFBD><D790>C<EFBFBD>s
<EFBFBD>t<EFBFBD><EFBFBD>3<14><1D><15><><EFBFBD><01>2t<><74><EFBFBD><EFBFBD>Y<EFBFBD><59>۶P<DBB6>F~G"X<><58>{l<><6C><EFBFBD><EFBFBD><EFBFBD>BjV<6A><56><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|OY<4F><59><EFBFBD><EFBFBD>|+<2B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Lb<4C>G<EFBFBD>9<EFBFBD>ѣG<D1A3><47><EFBFBD>JcS3<53>y<79>0 #U4<55><15><><EFBFBD>-`D<>6<EFBFBD><36><1D><><EFBFBD><EFBFBD><EFBFBD>խ<EFBFBD>@O<><4F><EFBFBD><EFBFBD>B<08>U{<7B>Q<08><>q<>ڢ<EFBFBD>ʡ<EFBFBD>-<2D><><EFBFBD>ض<EFBFBD><D8B6>،ލh4J<34><4A><EFBFBD><EFBFBD><EFBFBD>8<01><>`kj><3E>5<>I<13><08>B>/H<1D><><EFBFBD><01><><00><><EFBFBD>C~W<08><><1C>֊L"<22>>XAM<41>A
<0B>(,<2C>Z<48><D083>e<EFBFBD><65>t.3<EFBFBD>L ̫L<><4C><EFBFBD> <20><1A>СC<D0A1><43><EFBFBD>b<EFBFBD>6<EFBFBD>
<EFBFBD>45<EFBFBD><EFBFBD>:@,#<1E><>B"
<EFBFBD><EFBFBD>פp.<2E><14><>E4<1A><><13><><1C><>ױ<><D7B1><EFBFBD><EFBFBD>M<EFBFBD>u<1E>{<7B><><EFBFBD><EFBFBD>P<EFBFBD><50><EFBFBD><0E><><06><>I<EFBFBD>ǧ<><C7A7><EFBFBD>r<EFBFBD>r<EFBFBD>@<40>$
!<21>8t4<74>K<12><>_t<5F><04>U@)<29><>8 -<2D>q8p<38><70>h<EFBFBD>=e<><65>u<EFBFBD><75><EFBFBD><EFBFBD><EFBFBD><10>G^j<><6A>t<EFBFBD><74>}}<7D>^<5E>Gm<><6D>457<11><>D"jj<6A>|<02><><EFBFBD><18><>X<EFBFBD>b1,+<2B>m<EFBFBD>8v(|<7C>e<EFBFBD>6<EFBFBD>X<EFBFBD><58>'<16><>D<EFBFBD>D<EFBFBD>c<EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>HO <06><>s0pxFg<46>-E<>:B"<22><>GT<1E>u@k<><6B><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>u9<75><39><EFBFBD>,<2C><><EFBFBD>:t(5<><35>444RZR<5A>#<23><>B<EFBFBD><42>L&NOVv<56>ߓ<><DF93>AzF"<22>~<7E><>/<2F><>e<EFBFBD><65><EFBFBD>G<EFBFBD><47>c1<63>kk<6B><6B>IM<49><4D><EFBFBD><EFBFBD><12><><EFBFBD>Q<><51>)<29> <0B><><EFBFBD>R|H<>t8,<78>A(//Ʋb8<62><38>eYGT<47><54><02><><EFBFBD>#4W(.=<3D><><EFBFBD>޳;<3B>YYdf<64>ӧo<1F><>3<EFBFBD><33><EFBFBD>?=<3D><>W~ǟ<><C79F><EFBFBD><EFBFBD><EFBFBD>$<><08>v<EFBFBD><76><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><16><><EFBFBD><EEA5A9><EFBFBD>XPI)q<1D>[<5B><>pX8 $#@|<7C><>}<1D><02>0<EFBFBD><30>#<23>=<3D><>7<EFBFBD> 55U<35><55>TaA<><EFBFBD><EF9785>z<EFBFBD><7A><EFBFBD>inn<6E><6E><EFBFBD><EFBFBD><EFBFBD>Æ&B<>f<><66><EFBFBD><EFBFBD>C<EFBFBD><43>_<07>G
<EFBFBD>#<0F>m<EFBFBD>AVϞ 8<00>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD>LKS <0B>m<EFBFBD>"<22>4
L<EFBFBD><EFBFBD>0<EFBFBD>Np<><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD>#<23><01><><0F>H<EFBFBD>۳ץ<DBB3><04><02>P'<27>8p<38><70><EFBFBD><EFBFBD>f<EFBFBD><66>8<EFBFBD><38><EFBFBD>釂#!<21><>PXPD}C<13>H;i<>0<EFBFBD>x !<21>#'<00><><EFBFBD>+<2B>C<04><>EID!<04>#+<2B>
<EFBFBD><08><>_<EFBFBD><5F><EFBFBD><EFBFBD><EFBFBD>t:w<><77>q<EFBFBD><71>9<EFBFBD><39><1F>]<5D>(<28> <0C><>e<EFBFBD>4<EFBFBD><34><1E><>J<EFBFBD><4A>Qx<51><78><EFBFBD>#"<22><>K<EFBFBD>eV<65><56><17><>WO<57>G<EFBFBD>i<EFBFBD><69> <20>C~MC<4D><43>}<7D>u<EFBFBD><75><EFBFBD>H<EFBFBD><48>@YY9<59>h<EFBFBD><68>a$é<><C3A9>~<7E>{<7B>Q%𩧟#<16><>Ε<EFBFBD><CE95><EFBFBD>v<EFBFBD>O<EFBFBD><4F><19>C<EFBFBD><43>&뫬<><EBABAC><EFBFBD><EFBFBD>!<21><>J<EFBFBD>
<EFBFBD><>"<22><>q<EFBFBD>_<EFBFBD> <20>r<>s<EFBFBD>Օ<EFBFBD>><3E><><1B>!<0E><><EFBFBD><EFBFBD>D<00>i<12><>B<0E><>غ,<2C><><EFBFBD><0F>$<24>ގP<DE8E><50>H<EFBFBD>9q<39>!<21><><EFBFBD><EFBFBD>C!<21><><1E>t<EFBFBD><74>#<23><>x<EFBFBD><78><EFBFBD> <0C>p("<22>Z<1C><>??<3F><EFBFBD><1D><1D>j}<04><<3C><15>o<EFBFBD><6F><EFBFBD><EFBFBD>G|<7C><><EFBFBD>t<><74>dHF<48><46><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>nu<0E>_<EFBFBD>9<EFBFBD>Ȭ<EFBFBD><C8AC>p(N<><4E>8@W,7y<37><79><EFBFBD><EFBFBD><EFBFBD>8 y<><79>n"<0F><><EFBFBD>s_E<5F>~U<><>d<1C><>J<EFBFBD><4A>o<EFBFBD>:<12><>"<22>#<23><><EFBFBD><EFBFBD>><12>%O<><4F>X<EFBFBD><58><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>g<>H<EFBFBD><48>w<<3C><15>8<14><>2<EFBFBD>
<EFBFBD>u<><75><EFBFBD><EFBFBD><EFBFBD>!<21><08>P
<EFBFBD>G<EFBFBD>z<1D>;<14><><EFBFBD><EFBFBD><EFBFBD>8<EFBFBD><38><13>x<EFBFBD>v|<7C><><EFBFBD><E79D89><EFBFBD>{1r<31>4<EFBFBD>
;<08><1C><><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD>pc9kDS<44><53>=<3D>W<EFBFBD>nN<6E><4E>+<2B><><EFBFBD><EFBFBD><EFBFBD>%<25>dq`̞u<CC9E>wuџ{<7B><>k<EFBFBD><6B><EFBFBD><EFBFBD>6&<26>
<EFBFBD><12>ힱR<ED9EB1><52><0E>?<3F>ԇ<EFBFBD>+<2B><>Jg<4A>z/<2F><1D><><EFBFBD>HA<48><41>19L<1B><><EFBFBD> 0ͭ<<3C><>(%<25><>N<EFBFBD><4E><EFBFBD>*(<28><0F>aW<61>.<2E>(<28><><EFBFBD><EFBFBD><18><15><><EFBFBD><EFBFBD><EFBFBD>ǽ<EFBFBD><1F>eDV<44><1F><>]u7yL
r<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>t<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD>Ȋv<EFBFBD>N<EFBFBD>8<EFBFBD>s<EFBFBD>_<<3C><>ʭD<CAAD><44><EFBFBD><EFBFBD> <0C>s~<7E>ţ<EFBFBD><C5A3><6B><D7AE><13><>ZD<5A><44><EFBFBD>BFFfg<0E><><EFBFBD><0E><><EFBFBD><EFBFBD><>#<23><0F>ʓ<15><><EFBFBD><EFBFBD>G|<1B>8<06><><1F><>8<EFBFBD>V5R=<3D>vR<14>/<2F><>=<3D>w<EFBFBD>Hv5<76><35>E<EFBFBD><45><&s<>o<EFBFBD>TWW&t<>;w<12>Fرc<0F><>u<EFBFBD><75><EFBFBD>}G<><47><EFBFBD>.5<><35>R<EFBFBD><52><1A><><EFBFBD>}<7D><><EFBFBD><EFBFBD><EFBFBD><1A>_
'<27><75>=<3D>gy<67><1C><>;.<2E>#YH_<48><0E><1E>G<EFBFBD><47> <09><06><>Ǟ<EFBFBD>Rq;ܤH)8c<38><63><18>x<EFBFBD><78>G<<3C><> ?<3F><>g<EFBFBD><67><EFBFBD>t<EFBFBD><0E>o<EFBFBD><6F><EFBFBD><EFBFBD><EFBFBD>s<EFBFBD><73><EFBFBD>?9<><39><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0 <0C><><EFBFBD>H<EFBFBD><1D>ÕW<C395>w'/<2F>{<7B>A<EFBFBD><41><EFBFBD><EFBFBD>o<EFBFBD><6F><EFBFBD>n'<27>=<3D><>:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>p<EFBFBD><70><EFBFBD>c<EFBFBD><63><EFBFBD><EFBFBD>)<29><><EFBFBD><EFBFBD><02>2<01><><EFBFBD>4 <0C>}<7D> <09><EFBFBD>,6n\Om<4F><01><><EFBFBD>n<19>S<EFBFBD><53>J$̞2<CC9E><32>,<2C><><EFBFBD>/g<><67>]<5D><>n<EFBFBD><6E><EFBFBD>3&SS<53><53>́1<CC81><31><EFBFBD><EFBFBD><EFBFBD>"Q<><51>8<EFBFBD>̘<0E><><EFBFBD>ۨ/?<3F>)<17><>)3R<33><06><>ӱ<EFBFBD><e$<24>|<7C>y<EFBFBD>ʪ8<CAAA><38>ӈGcX<63><18><><08>w<14><>[<5B><>)g<>?J_<><0F><><EFBFBD>$-33 <20><>Ɠ<EFBFBD><C693><EFBFBD><EFBFBD>M;<3B><>ӿwV<77><56>+<2B><>y<0F><><EFBFBD><EFBFBD>E<EFBFBD>{<7B>t<EFBFBD>YS<59>!wcכE<18>vc 8<><38>@<40><><EFBFBD><EFBFBD>S,<2C>!5<0F><>SFq<46><71><EFBFBD><EFBFBD><EFBFBD>u<EFBFBD>jm<6A>Ž[8<><38><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٳ<EFBFBD>`<60><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><11>&<26><><EFBFBD>w1<77><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>C@ZZ<5A><5A>Ï<EFBFBD><C38F>[/`<60><>cX<63>ig
򓡶<EFBFBD><00><><EFBFBD><EFBFBD><EFBFBD>-<2D>|<7C>q,\<5C><><EFBFBD><EFBFBD><EFBFBD>!w<>nfO<66>fNu<4E>[<5B>*<2A><>w<EFBFBD>n7o\<5C><><EFBFBD><03>8H<38><48><EFBFBD>F<><46><EFBFBD>" kh_<68>!پm<D9BE><6D>z<EFBFBD><7A><32>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܫd
<EFBFBD>K}YJ9<4A>2<EFBFBD>i<EFBFBD><69>N<1D>K<EFBFBD>%%E<><45><EFBFBD><EFBFBD><EFBFBD>0ꃗވR<DE88><52><EFBFBD>F<1C><><EFBFBD><18><><05>୬P(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>c<EFBFBD>\<5C><>Mz<4D>Κ<EFBFBD><CE9A>Ws7<73>еtB<74>3Z;^j <0E><><EFBFBD>W<EFBFBD><57><EFBFBD><19><>ݸ<EFBFBD>YS<59>a<EFBFBD><61><EFBFBD>̚z <0C>G<EFBFBD>GN<><4E><EFBFBD><EFBFBD>&<26>p<EFBFBD>vPPS<50><12>A<>˲<><CBB2><EFBFBD>)ۡ<><DBA1>
a<08><>˪<EFBFBD>)<29>g`U<>rV<72>+QA<03>¼<EFBFBD>X<EFBFBD><58>(<28><>nA<6E>wEcE= M<><4D>y`<60>3<x<>
dfvG)Ekk<6B><6B>3<EFBFBD>p<EFBFBD>h<EFBFBD>ؚ<EFBFBD><D89A>Bb<42><><DDBA>
<EFBFBD><EFBFBD>߯<EFBFBD><07><><1C><> <0B><00>.<2E><>rF<0F><><EFBFBD>9<>P]p<>S<EFBFBD><53><EFBFBD><EFBFBD>5C϶<10>x<EFBFBD><14>60k<30><6B>ܾ<EFBFBD>E<EFBFBD> *X6G+{<7B>wi|;[<5B>l<EFBFBD><6C><EFBFBD><EFBFBD><EFBFBD>s~N<><4E>=̚v O<><4F><EFBFBD>/<2F>@Jvn<76>+<>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>'o<> kX?<3F><>*<2A><1A>_<EFBFBD><5F><EFBFBD><EFBFBD><EFBFBD>so<73><6F><EFBFBD><EFBFBD><00><>]%~U<>m;<17>T<EFBFBD>&<26>0<15><><EFBFBD>m<EFBFBD>vA<76><41><EFBFBD>7<EFBFBD><37>K
E[[<5B><>iB8\><3E>٣G"u<>K<EFBFBD><4B><EFBFBD><EFBFBD>2{<7B>8o<><6F>c<EFBFBD>\<5C><> <0B>p<EFBFBD><70>%8@<40><><~<7E>~<7E><><10>[]"<01>:e*<2A>
-~<7E><><EFBFBD><EFBFBD>6r<36>ӹm<D3B9>j<>+<00><><EFBFBD><EFBFBD>ӎa<D38E><61>ۑ~}<7D><>@2s<32>Q,<2C>\<5C>`<60><u$y<><79><EFBFBD><EFBFBD>w@A<><41>EZ7N:<3A> <0C><>s k<>'*<2A><>Ѝ<EFBFBD><D08D><EFBFBD>(<28>0%<25><><EFBFBD><EFBFBD>>z<><1A>|<7C>tW<74>'W<><57>p<EFBFBD>o<EFBFBD>w<>ĥ<EFBFBD><C4A5>{<7B><> @<40><><EFBFBD><EFBFBD>Z<13>w<08>p<EFBFBD><10>eE<65><45><EFBFBD><<3C><>o<EFBFBD><6F><EFBFBD>O<04><><EFBFBD><EFBFBD><EFBFBD><05> q<><71>͏<13>Y<EFBFBD><59><EFBFBD>DP<44><50><07>t<EFBFBD> <0C>}I<08><><EFBFBD><EFBFBD>TY<54>k<EFBFBD><6B><EFBFBD>͢<EFBFBD><CDA2><EFBFBD>n<EFBFBD>As<41>͛<EFBFBD>SSP<53><50>=<17>K<EFBFBD><4B>I}<7D>V<EFBFBD><56><EFBFBD>w~ʜ??<3F>r?LxŤ<78><C5A4><EFBFBD>ϐ|<7C><>*<2A><> L<><4C><0F><><EFBFBD>s?<3F><04>(<28> }$7U<37><03> <09>O<EFBFBD><4F><EFBFBD>Dw<44>stAGs<47><73>CI<43>,<2C><><EFBFBD><EFBFBD>;y<><79>ڑH<DA91><48><EFBFBD><EFBFBD>N_<><5F>. `<60><><EFBFBD> <04><>f0<66>#<23><>KA<4B><41>=p<><70><6E>5<EFBFBD>.<2E><>oi<6F><69><EFBFBD><EFBFBD>d<EFBFBD>l<EFBFBD>i<EFBFBD>c<EFBFBD>ܻ<01>m/h<>QST<01>F:<3A><15>>J<><4A><EFBFBD><EFBFBD>4<EFBFBD><34><03>KVʡ<56><CAA1> (<28><><EFBFBD><EFBFBD>]\<5C>ٵ{<7B><><EFBFBD><EFBFBD>pK<70><4B>Ըmu?!<21><>?<12><>n9<6E><39><EFBFBD>Z6<>l<EFBFBD>1SuW<75><57><EFBFBD><EFBFBD>,<05><>_<EFBFBD><14>X<EFBFBD>?<3F><10><04>)<70><D993>'N<><4E><EFBFBD><EFBFBD>gG<><47>]<5D>\O<>2<EFBFBD>/<2F>$ <09>
ش~<18><><EFBFBD>R̽<05>l<EFBFBD><6C><EFBFBD><0F>p<EFBFBD><0F>o<EFBFBD><6F><EFBFBD>{<05>ʇ<EFBFBD><0F><><EFBFBD>
<EFBFBD><EFBFBD>=<3D>h.<2E><><EFBFBD><EFBFBD>"<22>E8<><38>3<EFBFBD>n;wo<77><6F><EFBFBD><EFBFBD>>~<7E><>Ht5<74><08>}<7D>Vw<1C>M%<1A><>=<3D><1C>Fٺ'ѠA<D1A0>ٵakB<1D><>U;f<>x<EFBFBD>!Q<>bv<EEB5B7>|<7C><1F>R<EFBFBD>b<EFBFBD>#+<2B><>C~
<1C>m<EFBFBD><6D><EFBFBD><13><>0n<30>D<EFBFBD><44><EFBFBD>xڱ)D0e<30>T<EFBFBD>bk֔<6B>>شq#<08>.8<EFBFBD><EFBFBD>e<><65>[<5B>[[<5B><14>+<2B>M<><4D>{<7B>u<EFBFBD>h<EFBFBD><68>Lr7<72>f<EFBFBD><66><EFBFBD><EFBFBD>V<><56><EFBFBD>_<EFBFBD>8<02><>M{<7B>c<EFBFBD><63>M<EFBFBD>ئ<EFBFBD><D8A6><EFBFBD>9f<39><66><EFBFBD><EFBFBD><EFBFBD><EFBFBD>U <20><><EFBFBD><EFBFBD>e<EFBFBD>GE<18><><EFBFBD>o<EFBFBD><6F><EFBFBD><><CA85><EFBFBD><EFBFBD><EFBFBD>cq<63>
<EFBFBD>)++E9<0E><><14><><EFBFBD><EFBFBD><1D><>"<22><EFBFBD><7F>TVU<56>Z<EFBFBD>(<28>P<EFBFBD>1S'h<>Q<EFBFBD>y<EFBFBD><79>vH<76>'<27><>Ţ<EFBFBD>v"<22>2<EFBFBD>O!<21>y<EFBFBD><79><EFBFBD><EFBFBD><13><><EFBFBD>L<08><>OG<><47>dO<64>y<EFBFBD><79>)S<><53><EFBFBD><EFBFBD>q<EFBFBD><71>Ր ,<2C>{3Br<><72><EFBFBD>2<EFBFBD>])<29><>0<1F>Cw<43>^:<3A>~<7E>Coc;<18>ʶ<>l<EFBFBD>ރ<EFBFBD>q<14>Ǝ<EFBFBD><C68E><EFBFBD><EFBFBD>]<5D><><EFBFBD>)^<5E><>c<EFBFBD>a<EFBFBD>-<2D>h<EFBFBD>X{<7B><>%(/+<03><>ӫ<EFBFBD><D3AB><EFBFBD>k<EFBFBD>PYQ<59>R<EFBFBD>~<7E><> M<><4D><EFBFBD>
<EFBFBD>Z5q<35>~]G<><47><EFBFBD>~<7E>%<25><><CE90><EFBFBD>eY<65>6"<22><><EFBFBD><EFBFBD>D<00>O(<28><><EFBFBD>><3E>`<60><18><>c<7F>2|<7C><><EFBFBD>9w<39>x<EFBFBD>.<2E>Z<><5A>_<5F>sn<73>ql<71><6C>-<2D>͖]<5D><><EFBFBD><EFBFBD><EFBFBD>X6<58>.<16><><EFBFBD>Uǎa<C78E><61>]Zv;<3B>f<EFBFBD><66><4F>x<EFBFBD><78> Y<>I<EFBFBD><1E><>X<EFBFBD><58>ʔ<EFBFBD>{<7B>;J<>6禜r<<3C><>6<EFBFBD><36>8<EFBFBD><38><0E><EFBFBD>n\ѻW<1F><><EFBFBD>]5<><35>-<2D>rz<72>F55R<>V<EFBFBD><56><EFBFBD><EFBFBD>c<EFBFBD>Vn<56><6E><EFBFBD><EFBFBD><EFBFBD>w'<27><><EFBFBD>"<22><>}<7D>s]}<1D><>5<EFBFBD>b1<62><31><EFBFBD>C<EFBFBD>><3E>=<3D>S<EFBFBD><0F>#<23>[<5B>yk<79>f<EFBFBD><66>f73O<<3C><><11>|<7C><>WbGc<47><63><EFBFBD>} $<24>-XJma<6D><17>/ι<><CEB9><EFBFBD><EFBFBD>U<EFBFBD>5<EFBFBD>/<2F>%zo<7A><6F><EFBFBD>E<EFBFBD>:<3A>(<><13><>=<06> <20>U<EFBFBD><55><EFBFBD><00>e#
<EFBFBD><EFBFBD>m[|<7C>Z<EFBFBD>q)<29>Q)صgك<>P<EFBFBD><50><EFBFBD><EFBFBD><EFBFBD>\<0F>aɚR<C99A>m<EFBFBD>Bma%<25>emi'<1E>Q<EFBFBD><51>
'n<>>€<1D><>(<28><>m<EFBFBD><6D><EFBFBD><EFBFBD>δ<EFBFBD>eQ}<7D><><EFBFBD><EFBFBD>Z<EFBFBD>6<EFBFBD><36>(F<><46><EFBFBD>t|<7C>/n<><6E><EFBFBD><EFBFBD><15>%<25>%<25><>SH}m<>.<2E><16>q<EFBFBD><71>һW/<2F><><EFBFBD>MNN<0E>4|<11>W<EFBFBD>xW<78>8<EFBFBD><38><EFBFBD>s<EFBFBD>O9'<27>ˊT<CB8A><54><EFBFBD>[[<5B><><EFBFBD><EFBFBD>ͪ<EFBFBD><CDAA><EFBFBD>/T<0E><><EFBFBD>s<EFBFBD>B<EFBFBD>ѹ<EFBFBD><D1B9>c<EFBFBD>m<EFBFBD>2<EFBFBD> <0B><07>Ź<EFBFBD><C5B9><EFBFBD><EFBFBD>
h<EFBFBD>o<1F><>=<3D><><EFBFBD><EFBFBD>w<EFBFBD>~<7E>%<25><16>ıe<C4B1>f$ <20>&f(<28><><EFBFBD><EFBFBD>F]q<>&< <20><><EFBFBD><EFBFBD>e$а<>Ʒ<gM<67>-¶͛<C2B6>+;<3B><><EFBFBD><E99389><EFBFBD>\]O<><4F>~nNv<0E>Q<EFBFBD><51><EFBFBD>h<EFBFBD><EFBFBD><ED8AA3>l<EFBFBD><6C><EFBFBD><EFBFBD><EFBFBD>t<EFBFBD><74><EFBFBD><EFBFBD>7<EFBFBD><37><EFBFBD>>o<><6F>Ij<00>}<x<><78>W<EFBFBD><57>7]<5D>o0 <0C>@<10><10><71>8x<>i<EFBFBD><06><>ַeYXq<58>H4<48><34>9<EFBFBD>\ѕLR<>x)8ykv<6B><76>k @J<><4A><EFBFBD><EFBFBD><EFBFBD>q<EFBFBD><71><EFBFBD><17>O<>Z<EFBFBD>cW_<57>$<24><>gM<19>
<03>놩'<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>{<7B>Y'<1F><><EFBFBD>0A<><41><EFBFBD>*<2A>v<76><00><>Z&<26>U<><55>5?<3F><><EFBFBD>.`<60><>2<><32> i(;H<><48>j<EFBFBD><6A>V<EFBFBD>8<EFBFBD>g<1E><>'&+g[~<7E><>ڊhk;<3B><><15><0F><><EFBFBD>B[}3<>u-<2D>+,eq<19><>"<22><>D<EFBFBD><44>P<EFBFBD><50><EFBFBD><EFBFBD>F<EFBFBD>h;I<>L,w<>l<EFBFBD>K<><4B><EFBFBD>?<3F><><EFBFBD><EFBFBD><12>R<EFBFBD><52><EFBFBD><EFBFBD>V:BHw<48>"<22><>;<3B><<3C><>?<><7F>_<EFBFBD>~7<>?<3F><><EFBFBD>/O<>*"<22><>
<EFBFBD>#<23>^<5E><0F><<3C>(<28>>+<04><>9<EFBFBD>θ<>[<5B>5<EFBFBD><35>w<EFBFBD>bwq<01><><EFBFBD><08><> <0B>c#<23><>m <0B>p<EFBFBD><70>Qlݾ
<EFBFBD><EFBFBD><EFBFBD>J<EFBFBD>d<EFBFBD><EFBFBD><EFBFBD>^<5E>mr?*<2A> <0C><>*<2A><03>c<EFBFBD><63><EFBFBD><EFBFBD><EFBFBD>v<EFBFBD>XU<58>a<EFBFBD>(<28>b<EFBFBD><62>c<EFBFBD><63><EFBFBD><EFBFBD>@A<>^<5E> 8<><38><EFBFBD><EFBFBD>߲I<DFB2>linǶl<C7B6><6C><0E>b:<3A>g<EFBFBD>,<2C><>iz<69>;*ɜ<><C99C>6;+<2B><><EFBFBD><EFBFBD>&<0E><><EFBFBD>lw<6C> <20>`<60><>ׁR<D781><52><EFBFBD>B)<29><><EFBFBD><EFBFBD>p(x<><78><EFBFBD>)(*<2A>9<EFBFBD>4$<24>a<08><04><00>00<30> <0E>3<EFBFBD>'<27>4<EFBFBD>+HbG<14>p<EFBFBD><70><EFBFBD>RwH7B<1A><><EFBFBD><EFBFBD><EFBFBD>:
t<13>R<EFBFBD><52>xp<78><70><EFBFBD>c^<5E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>b<EFBFBD>ϯ<EFBFBD><CFAF>o<EFBFBD>'{D?<3F><>+9<><39>o<EFBFBD> <20> (x<><78> <0B>o<EFBFBD><6F><EFBFBD>Wp<57>=<3D><>B<EFBFBD>8
*<2A><><EFBFBD>5<EFBFBD><35><EFBFBD>yI<79>f<EFBFBD>6<EFBFBD><36><EFBFBD>b<EFBFBD><62><EFBFBD>) <0C><><EFBFBD><EFBFBD><EFBFBD>s<EFBFBD>ygb<67>l*<2A><><08>P8n<38>><3E>m<EFBFBD>@0<><30><EFBFBD>{w<>x>~<7E><03>p)<29><><EFBFBD><15>5K$<24><>8<EFBFBD><38><38><04>zw<7A><77><EFBFBD>l<6C>G<EFBFBD><47><00>?d<><64>o<EFBFBD><6F>r<EFBFBD><72><EFBFBD>u?g<>ġ<14><>U<EFBFBD><55>HH<48>
<0E><><1F>>HAQa<51><61>Rh<52><68>C<EFBFBD>a<18><>1R<07><><EFBFBD>f<EFBFBD><66><EFBFBD>ow<07>z<EFBFBD><7A>N<EFBFBD><4E>|<7C><16><>`<60><><EFBFBD><EFBFBD><EFBFBD><14>b<EFBFBD>?p<><70>Ź<EFBFBD><C5B9>#<23><><EFBFBD>v<EFBFBD>q<EFBFBD><06>-<2D><>'<27>G<EFBFBD><EFBFBD>F,;Fޚz<><1C><1D><>g<EFBFBD>m<EFBFBD><6D>5<EFBFBD><35><EFBFBD>H)<29><>R`[<16>i<EFBFBD>m[>YC<59><43><EFBFBD><EFBFBD>p<EFBFBD>E<>0}
<EFBFBD>M-<2D>aEc <<3C>h{<7B>v<EFBFBD>8YY<59><59>)E<><45>]<5D><><08>.<2E>q<EFBFBD>i<EFBFBD>B<EFBFBD>@<40> $<24>,<2C><02><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><1A><>HA<48><10><>t_m[<5B>o<12>?\<5C><>йk<D0B9><6B>|y<><79>;Q<51><EFBFBD>t<EFBFBD>sc۶|7l<37>'<27><>7<EFBFBD><37><EFBFBD><EFBFBD>:<3A><><EFBFBD><EFBFBD>YS<59>F90e<30>T֭Y<D6AD><59>T<04><11>
j
 <14>A+j<>s&xj<78>z<EFBFBD> \:ܱS+<2B><><EFBFBD><EFBFBD>88H<38><48><EFBFBD><EFBFBD>~<7E><>'K<><4B><EFBFBD>m<EFBFBD><6D>h<EFBFBD>i"+<2B><><EFBFBD><EFBFBD>$<24><>c<EFBFBD><63>F<EFBFBD>.k<>j<EFBFBD><6A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Oh<4F><68>z<EFBFBD><7A>|<7C><03>v<EFBFBD>$<24><>I<>t<EFBFBD><74>ICb<43><62>>G<>k<EFBFBD>~<7E>2<EFBFBD>Z<04><><EFBFBD><EFBFBD><EFBFBD>!x<><78>M<EFBFBD><1F><>ykv'l<>d<EFBFBD><64><EFBFBD><EFBFBD>]<5D><16><>(f<>0<EFBFBD><30>-<2D><>9e4y[
7v<<3C><>8
<EFBFBD>jya΍Xv<EFBFBD>e<EFBFBD><EFBFBD><11><><EFBFBD>J<06><>j<> <0B>Y^+e<>r<EFBFBD><72>
r8<EFBFBD><EFBFBD>E<>s<EFBFBD>Nj <0B><>q<EFBFBD>g3eV4<56><34>Һ<><D2BA><EFBFBD>b<EFBFBD><62><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!<21>-L<><4C><1D><><EFBFBD><13><><EFBFBD>WxPW_<57><5F>9<EFBFBD><39>/PUU<55><55><EFBFBD><EFBFBD>kNJ<01><>B&<26>o<18><><EFBFBD>8<EFBFBD>_<16><>#<23>#<23>4<EFBFBD><34>ڎ-YW<59>
<EFBFBD>j<EFBFBD>o<EFBFBD>md<<3C><> }<7D><>b<EFBFBD><50><C68F>߼<EFBFBD>m<EFBFBD><6D><0F>0!7<15><>6[<5B>mEM<><4D><EFBFBD><EFBFBD><EFBFBD><17><>u<EFBFBD><75>.<2E><><EFBFBD>_<EFBFBD><5F><EFBFBD><EFBFBD><EFBFBD><EFBFBD>e<EFBFBD><65><EFBFBD><EFBFBD>ܹ<EFBFBD><DCB9>!}<7D>/;Hmq<6D><71>1<EFBFBD>0 <0C><><EFBFBD>I<EFBFBD><17>֘R<><14>$ݲql<71><6C><EFBFBD>Vzd<7A><64>A]uϨ<75><CFA8>%<25><>N<EFBFBD>[<5B>h<EFBFBD><68><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԏ<EFBFBD>nؘ^ <09>Ѳ;W@<40><><EFBFBD>E<EFBFBD><45><EFBFBD>ȹ<EFBFBD><C8B9>C<EFBFBD>p<EFBFBD>:<3A><>D@DŽ8<0F><><EFBFBD>q<07>8<EFBFBD>[<5B>><3E>2Ci<43>2ٸq<D9B8><1F><>G<><47><03>:e*「<>`q<>"@vL<76>:<3A> <0C><>#<23>R<EFBFBD>oi/<2F><><EFBFBD><EFBFBD><EFBFBD>w?<3F>w<EFBFBD>aS2B<32><1E><><EFBFBD>j(<28><><EFBFBD> <0B>&<1E><>r<18><><15><><EFBFBD><EFBFBD>(<28><><04><><EFBFBD><EFBFBD>޳<EFBFBD><DEB3>Ǐ<EFBFBD><C78F><EFBFBD><EFBFBD><EFBFBD>e<EFBFBD>81<38>ݺ<>I<EFBFBD><1A><1B>R~:<3A><>N<EFBFBD><4E>Z<19><>O<EFBFBD>^<5E>rMK<4D>O<>{<7B><><EFBFBD><EFBFBD> PSS<53>?^<5E>W<EFBFBD>1C<18>f3h<0E> <06><><05>Co 
<EFBFBD>ѽ[f0<66><30><EFBFBD>/cؖ<>vG<05><>yV<00>r<EFBFBD>X,F{{{<7B>V<EFBFBD>rl<><6C><EFBFBD><EFBFBD>;.ˈ4<CB88>P<EFBFBD>f<EFBFBD><66>8<EFBFBD><17>8<EFBFBD><17>vӽ6n<36><48><CEA8><EFBFBD>@<40><><06>{Tz<7F><7A><EFBFBD> b<04><}<7D>u<EFBFBD><75>O<EFBFBD><4F><EFBFBD><EFBFBD><EFBFBD><04>"<22><>b}<7D><>y<EFBFBD>|ן<><C7B2><EFBFBD><EFBFBD>,<2C>X\<13><>W<EFBFBD>G<EFBFBD><47><EFBFBD><EFBFBD>'<0F>.<2E>t<1F> e+<2B>?<3F>4-<2D>m<EFBFBD><6D><>|?o<>>e;<3B><>7k-<2D><><EFBFBD><EFBFBD><EFBFBD>:<3A><><EFBFBD>|<7C><><EFBFBD>#+<2B><><1D><>Y=<3D><><EFBFBD><EFBFBD>!++<2B><><EFBFBD>b<><62>Z_PPQ<50>O_<4F>O^<5E><>#<23>vw^<5E>z:<3A><>ѕV=<3D><1B>O<EFBFBD>0<EFBFBD><30><EFBFBD><EFBFBD><13>pb<17><><EFBFBD><15><>/xȷ<78>q<EFBFBD><71><EFBFBD><EFBFBD><> <1E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>x<EFBFBD><04><><EFBFBD>W<EFBFBD><57><EFBFBD>Ǯ<EFBFBD><C7AE>߈<EFBFBD><DF88>Kt<4B><74><EFBFBD>n<EFBFBD><17>n<EFBFBD><6E><EFBFBD>'0y<30>d6o<36>L<EFBFBD>)BS[O<>"oMcǍc<C78D>6<EFBFBD>8r<38>(<28><>[<Ӕ=F<><46><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\<5C>;<3B>d<EFBFBD>8m<18>^<5E><><03>> <20><>;v<> <09><><EFBFBD>>=dmi<6D><69><EFBFBD><18>]A<>[<5B><><EFBFBD>Z<EFBFBD><11><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>]<5D><><EFBFBD><EFBFBD>VRz<52><7A>ߐ<EFBFBD><DF90><EFBFBD><EFBFBD><EFBFBD>J<EFBFBD><4A><EFBFBD><EFBFBD> p9A2<1C><>a<EFBFBD><61><EFBFBD><08><>VJ<56>Fц<><D186><EFBFBD>Ά2 S<><EFBFBD>R<EFBFBD>F<EFBFBD>"xD<78>H<EFBFBD>P<0E><>FRH <09><>^.<2E><>N<EFBFBD>'<27><><EFBFBD>mc>z<>%̾<>qr<04><>;<1F>/<2F><>O<EFBFBD><4F>n<>gb<67><6F><D881><EFBFBD>՗sٽ<D9BD>g<EFBFBD><67><EFBFBD>'<27><>g[<5B>u<EFBFBD>Q %bq<62><71><EFBFBD><EFBFBD>;i"J<><4A>]; vOm<4F>k<>+
<EFBFBD><><C7B6>؋ƽ5\~<7E>~5_G <0B><><EFBFBD><EFBFBD>,<2C>]<5D><><EFBFBD>رц6<D186>h Dz <09><05>&U,;+<2B><>knG<01><><EFBFBD><EFBFBD>7x`<60><><EFBFBD><EFBFBD><EFBFBD>`<60>0<02><>F<EFBFBD><46><EFBFBD>J<EFBFBD>U<EFBFBD><55><EFBFBD>E<EFBFBD>K<EFBFBD><4B><EFBFBD>Г<>(IK<49>[<5B>" <<3C><12>g<EFBFBD><1B>G~<7E>t<EFBFBD><74>M<EFBFBD><00><><EFBFBD>_ <0C>k<EFBFBD>tl!*]%*Y<><59><EFBFBD>|+f!s?<3F><>]<5D><><EFBFBD><EFBFBD>ޟ^#<23><><EFBFBD>f<EFBFBD><66><EFBFBD>·<EFBFBD><CE87><EFBFBD>N<EFBFBD>
n_<6E><5F>O}<7D>7<EFBFBD><37><EFBFBD>y<EFBFBD>@<40><> 7<>D<EFBFBD>&K6o<><6F>=<3D>u8W)<29>TkjeH<65><48><EFBFBD><EFBFBD><EFBFBD><EFBFBD>v+naE<61>Zk<5A>l<EFBFBD><6C><EFBFBD><EFBFBD><EFBFBD>^X<>r
<EFBFBD><EFBFBD>D<EFBFBD>[;q<<3C><>?<3F><>g<EFBFBD><67><EFBFBD><13>e<EFBFBD><65>'<27><>=L $<24>"<22> ѳg<D1B3>揄6<EFAA8D>wB<77><42><EFBFBD>P7<50>l<EFBFBD><6C>|_<>K'P<>X<EFBFBD>{<7B>P<EFBFBD><50><EFBFBD><1C>zd<7A>;J <0B><><EFBFBD><EFBFBD><02>o<EFBFBD><6F><EFBFBD>EH!<21>BS<42>!<21>}<7D>+<2B>oZ<6F>i<EFBFBD><18>pW<70><57><EFBFBD>}Ot)<29>:
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>%<25><>g<EFBFBD><67><61><DD8B>ɯ<1E>c<EFBFBD>X<EFBFBD><11>x<EFBFBD>.&L<>Ȭ<EFBFBD><C8AC>b<EFBFBD>}O<>,<2C><><EFBFBD><EFBFBD>O?<3F><>v<>d${$<24><>M;<3B>=z <20>><3E><>IS<49>`L<><4C><EFBFBD>W<><57>|<7C><>C<EFBFBD><43><EFBFBD><EFBFBD><EFBFBD>r<EFBFBD><72>5<EFBFBD>e<EFBFBD><65><EFBFBD>H <0B><>Þ<EFBFBD><C39E>i<EFBFBD>_<EFBFBD>x1GaEb<45><62>6ҫwo<77><6F><EFBFBD>B "-#LFv**`<60>,<2C><><11>gt<67>1C<31><43>öR<C3B6><52><EFBFBD><EFBFBD>}<7D>20i<30>.M<18><>~<04><><EFBFBD><13><><07>B<>' '<27><><08><><1D><>i<EFBFBD>u<EFBFBD><75>(<14>/ <14><>ө <09>}<7D>,<2C><><EFBFBD>s<EFBFBD><73>0<04><><EFBFBD><EFBFBD><EFBFBD>D}<03>6[!<21><>k<EFBFBD>Q`$XBj<42><6A>l@96V<<3C>|+ni<02>]<5D>C<EFBFBD><43>O8<4F>ܵ<EFBFBD><DCB5>5<EFBFBD><35><EFBFBD><EFBFBD>ա<EFBFBD>g?ZOZfz2}<7D>i<EFBFBD>Fʔ<03>e<07><1A><>ٯ<1D><><EFBFBD>:<3A><1A><>饡C<E9A5A1><43>}<7D>=<3D>
nc<6E><63><EFBFBD>Zk<5A>q,<2C>ɧ<1C>R<0E>k<EFBFBD>i<EFBFBD>F<EFBFBD><46>ٝxLOT<<16><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:<3A><><EFBFBD><10>D<EFBFBD><0E>@<40>6i\<5C>tvV<16>
<EFBFBD><EFBFBD>*h3QHI}]!<21><1F>L(<28><><EFBFBD>1<EFBFBD>-<2D>W<EFBFBD><57>9<EFBFBD>D<EFBFBD> <09><EFBFBD><EA898B><EFBFBD>R<>nmB.<2E>0ܿ-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><1F>%<25><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>u<EFBFBD><75><EFBFBD>q<EFBFBD><01>mYo<59><6F><EFBFBD><EFBFBD>j<EFBFBD>B<>_<EFBFBD>%<25>@TAԁ<41>I7b<37>. $<24><>?<3F><>kw1<77><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>r5<7F>,I<><49><EFBFBD>` <09>[<5B>Fb<46>$<24>`<60><><EFBFBD>1<><31>?*<>iH<69><48>f <20><>a<EFBFBD><61><EFBFBD>KK<4B>Q<EFBFBD>"<1E>1<EFBFBD><31>)<29>tӮDڹ<44><08>љ?.<2E>u,<2C><><EFBFBD> <0C><><EFBFBD><02>kk<6B><6B>3<EFBFBD>w)<29><>g<EFBFBD><67>T<EFBFBD><54>n<EFBFBD>:j}B".<07>?d<>;<3B>z<EFBFBD>W<EFBFBD><57>O<EFBFBD><4F><EFBFBD><EFBFBD>C<06><><EFBFBD>Ґ<EFBFBD><01><>@4E&In<49>]<5D>A <09><>4 a<><61><EFBFBD><EFBFBD> x<>^<5E>3<EFBFBD><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD>o<08> {<7B>w<EFBFBD>|<7C>PXN<58><4E>ŷ<12><><EFBFBD>GA<47>1G<31><47>r<EFBFBD>o<1D>X <0C>(L/<2F>3w<33>.<2E>n<EFBFBD><6E><EFBFBD>-<2D><><EFBFBD><EFBFBD>ϣ<EFBFBD><CFA3>ȕ<EFBFBD>p<EFBFBD> <0B><>?j<><6A><EFBFBD>&<26><><EFBFBD>\<5C>m <0B><><~<7E>e,ܰ<>o<EFBFBD><6F><EFBFBD>\:q(w<><EFBFBD><7F>"<22>Kx<78><EEBFAF><07>a<EFBFBD>Q#()*ı<1D><><EFBFBD>
<EFBFBD>j5Q؎<EFBFBD><EFBFBD>9P<EFBFBD><EFBFBD><EFBFBD><EFBFBD>B<EFBFBD>.<2E>Jo<18><> r0<><30>,ACC<43>G<EFBFBD><47><EFBFBD><EFBFBD>8<EFBFBD>F<EFBFBD><46><EFBFBD><EFBFBD><EFBFBD>6<EFBFBD><36>p9<70><39>0<EFBFBD><30>/i<><69>A<EFBFBD><41>_<EFBFBD><5F>mo<6D>ˎ<EFBFBD><10>"+<12>bBO<42><4F><EFBFBD><7F><EFBFBD>i<EFBFBD><69><05>Jh<><68>?<3F>Yqk<71>-<2D><>?<3F><><EFBFBD>]<5D>_#<23>k<EFBFBD><6B>R4<><34><EFBFBD>nd<> `<60><>c<EFBFBD><63> <20><><EFBFBD>vG@<40>
Κ<EFBFBD>d;Kߓ<4B><DF93>ڢ
<14>;<3B>V<16><><EFBFBD><EFBFBD><EFBFBD><1E>3<EFBFBD><33>-n<>1<1D><><EFBFBD>
<EFBFBD>i<EFBFBD><EFBFBD><EFBFBD>?f<><66>۹r<DBB9>(L3<4C> <0B>n<EFBFBD><6E>-<x#<23><>2l<32><08>m<11><><02><>и<EFBFBD>P<>?i<18><>"8<><38><EFBFBD>~o<>|6i[<5B><>hQjdv<64><76>!MM<4D> v.<2E>}<7D><>x<EFBFBD><78>nE<6E><45>Ħ<EFBFBD>B<EFBFBD><42>=B<>E<EFBFBD><45>XkD#<23>_aH<61><48>B<01>P<EFBFBD><50>r<EFBFBD><72>syQq<51>V<EFBFBD><<3C>CA( <09><><EFBFBD> <0C><1D>d<EFBFBD><64><EFBFBD>*b@<40>+<2B><>W<EFBFBD><57>Z<EFBFBD>R$D<>w\"Ț<>T
<01>,<2C><><EFBFBD><03><>4lW<6C><57><1D>6-LC<4C>E<EFBFBD><45><02>{<7B>8<EFBFBD>1<EFBFBD>l-х<><D185><EFBFBD>bI<62><12>rF<72>OP<19>$<24>z
O쮩<EFBFBD>g?L<><04>) <0C><>><3E>E<EFBFBD><45>pw<70>HX<48><58><11>Q<EFBFBD><51><EFBFBD>ٟ<EFBFBD><D99F><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͪm<CDAA><6D>u<EFBFBD><75>g<EFBFBD><67><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD>{<7B>$<24>ċ<EFBFBD><C48B><EFBFBD><EFBFBD><EFBFBD><J<>X<EFBFBD><58>=<3D>RG<52>@@<40>=u҉<75><D289><EFBFBD><EFBFBD><EFBFBD><EFBFBD>R<EFBFBD><52><EFBFBD>in<69><6E>(<28><>lC@zV&퍭(<28>ǐ<EFBFBD>F`<60><04>A<EFBFBD><41>4D<7F>_<>rl<><6C><EFBFBD><EFBFBD>ƶ<EFBFBD><11>~<7E><>zUJF<00><>{<1E>8<EFBFBD>Ff<04>f<EFBFBD>!<21>b<EFBFBD><02><><EFBFBD>&,<2C><><EFBFBD><EFBFBD>HxEB{\sGA<47><41>4,K<><4B>8jL<6A><4C>QI?<3F>TZ49<34>r<EFBFBD>$<24>S<EFBFBD> w<>n?<3F>Nj<00>UQSR<53><52><EFBFBD>ii<69><69><EFBFBD><EFBFBD>.cц] u<>y<EFBFBD>,<00><><EFBFBD><EFBFBD>2<EFBFBD><32>Q<EFBFBD><51> <0C>l;n3t<33>P<EFBFBD>x<EFBFBD><78>>=<3D><><EFBFBD>_<>xYé<59>.<2E><><EFBFBD><EFBFBD>&=<3D><06>i<EFBFBD>ւf<12>$ <09><><EFBFBD><EFBFBD>Y#/-D(=<3D>@Z<>@Z<>@8<>4 <0C><><EFBFBD><04>!<21>2<EFBFBD> <09><05>k<EFBFBD><6B><06><><EFBFBD>aJ<61><4A><EFBFBD><EFA5AE><EFBFBD>n<EFBFBD><04><>s<EFBFBD><73>4L3H]]=<01>$`<60>nk'-Mp<4D><70>aN:3̉<33><CC89><EFBFBD><EFBFBD><EFBFBD><EFBFBD><18>9<EFBFBD><39>)!<21><><EFBFBD><EFBFBD>!E<><45>'<27>;<08>e<07>𑵼$@<40>-j<><6A>í<EFBFBD><C3AD>ۄ4<DB84>OJ<4F>0 <20>Us0<73><30>D<EFBFBD><1C>.a<>B\0`bfj, <><17>w<EFBFBD>8i<38><69><EFBFBD><EFBFBD><EFBFBD><EFBFBD>9G<39>zM<7A>8<19>b忖c<E5BF96>R<>[?<3F><0E>N<1C><>{<7B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>{m)(<28>r4h<08><45><C5A4>n<>ɱ<EFBFBD><C9B1><EFBFBD>bj<62>Wmis}z<><7A>0<EFBFBD>><3E> .<2E>}<7D><><EFBFBD><EFBFBD>}<7D><><EFBFBD><EFBFBD><EFBFBD> #``<60><>0p F<>tW<74>d<EFBFBD><64><EFBFBD><EFBFBD><EFBFBD>4"<10>?<06><>H<EFBFBD><48><EFBFBD><01><>(<28>FM<><14>7<EFBFBD>"M<>S<EFBFBD><53>jk<6A><6B><EFBFBD>NGѴi
<EFBFBD>a*<2A><12><><EFBFBD>9cz<63> a<>?Z9<5A><39>p<EFBFBD>#<23><><EFBFBD>F(<28>h<EFBFBD><1B><><04>&
S<EFBFBD>ϒ<EFBFBD><EFBFBD><0F>x<EFBFBD>$<24>y#<23><>"<22>nq<6E><71>G<EFBFBD>i<18>Ftg<04><>7R?<3F><><EFBFBD><00><>8<EFBFBD>{}<7D>Ѳ<EFBFBD><D1B2><EFBFBD>2O<32><4F><EFBFBD>ĩ<EFBFBD><C4A9><EFBFBD><EFBFBD>V<EFBFBD>7<EFBFBD><02><19><17>ԖT<D496>A<><41>m<EFBFBD>Q,<2C>s <0B>.}<7D>/<2F><>ڥS<DAA5>?| <0B>k <0B>u<EFBFBD>h<EFBFBD>x<EFBFBD>e<EFBFBD>uE<75>ql<71><6C>{I$F<><46><EFBFBD><EFBFBD>=<3D><><EFBFBD><07><><EFBFBD><04>^c<><63><EFBFBD><EFBFBD>H0<05><><EFBFBD><EFBFBD>׶<1D>Z<EFBFBD>Pz<50><7A>H+fZ@#SH<53><48><1C>4$<24>E^<5E><12><><19>N\gI<>`<60><>a!<08><>QVZ<56>
<EFBFBD>T<EFBFBD><EFBFBD><EFBFBD><EFBFBD><18>CU~ <09>9<EFBFBD>Z6<5A><36><EFBFBD>f<EFBFBD><66>{H<<3C><> &N<>@J<><4A>G<EFBFBD><47>hj<68><6A><EFBFBD>k<EFBFBD><6B><EFBFBD>w\<5C><><14><><EFBFBD>.]S<>)o8x<7F>O<EFBFBD><4F><EFBFBD>$<24><><EFBFBD>q<EFBFBD>G<EFBFBD><11>A
Ȝ<EFBFBD><EFBFBD><EFBFBD>]<5D>L<EFBFBD><4C><EFBFBD>8q<07>Q<01>6<EFBFBD><36>P<EFBFBD><04>UZ7P@<40>3nG<6E>+<2B><><02>}<7D>NV<4E><19><>Gp<47><70><EFBFBD>!<21><>[<5B>=pAr<41> <><7F><EFBFBD> <0B><>’<EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>a<EFBFBD><EFBFBD><EFBFBD>w<EFBFBD><>;,<2C>{<1B>?<3F><><EFBFBD><73>5 <0B>R<EFBFBD><52>ڇ<15><01><03>SQQ<51><50><08>T]<5D><13>aȀ<><C880><EFBFBD>I<EFBFBD>Z/sW&<26>P=<3D><>&gP_<0E>T<EFBFBD><54>ԕW<D495><57><14>Э_MIB<><42>xұH)1CA<43><41>E0"QX\<5C><><19><><EFBFBD>_<EFBFBD>;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><68><DF98>l<EFBFBD>f<EFBFBD><66><18><><EFBFBD>.<2E>n<>1<17>%W<>oo<6F>V<><05>"<22><><EFBFBD>tt<><08><>T<EFBFBD>Q<14><>#<23><><EFBFBD>(<28>wF<77>y<EFBFBD>8<EFBFBD>E#ㄎ SӠ<53>0<EFBFBD> <20>mQ ='<07><>@о=<3D><>@<40>m64z<1C>,]<5D>b.^<5E><><EFBFBD><EFBFBD>͢9?sY]b<>Ϻ<EFBFBD><CFBA><EFBFBD>"X<>˟y<CB9F><><7F><EFBFBD><EFBFBD>5<EFBFBD><15>\q<><08>|V<><56>W\<5C>u<EFBFBD><75><<3C><><EFBFBD><EFBFBD>Ekv<6B>Ȱ<EFBFBD> 7a<02><1B><>R\<5C><><EFBFBD><EFBFBD><EFBFBD>i5JA<4A>~<7E><08>i<07>D<08><>DZZ<5A>]b<><62><1B><>y8<17>#Bs<12>4I<34><49>I<EFBFBD>><3E><>1<><31><EFBFBD>[PJ<50>3<EFBFBD>/<2F>4<EFBFBD>Q<EFBFBD>}v,{|'ҁ<>5<>(<02>
E0D
4MM<4D>4!<21><>

View File

@@ -0,0 +1,239 @@
<!doctype html>
<html lang="en-us">
<head>
<meta charset="utf-8">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>raylib HTML5 GAME</title>
<meta name="title" content="raylib HTML5 GAME">
<meta name="description" content="New HTML5 videogame, developed using raylib videogames library">
<meta name="keywords" content="raylib, games, html5, programming, C, C++, library, learn, videogames">
<meta name="viewport" content="width=device-width">
<!-- Facebook metatags for sharing -->
<meta property="og:title" content="raylib HTML5 GAME">
<meta property="og:image:type" content="image/png">
<meta property="og:image" content="http://www.raylib.com/img/raylib_logo.png">
<meta property="og:image" content="http://www.raylib.com/img/raylib_logo.png">
<meta property="og:url" content="http://www.raylib.com/games">
<meta property="og:site_name" content="raylib.com">
<meta property="og:description" content="New hmtl5 videogame, developed using raylib videogames library">
<meta name="twitter:card" content="summary">
<meta name="twitter:site" content="@emegemegames">
<meta name="twitter:title" content="raylib HTML5 GAME">
<meta name="twitter:description" content="New HTML5 videogame, developed using raylib videogames library">
<meta name="twitter:image" content="http://www.raylib.com/img/raylib_logo.png">
<meta name="twitter:url" content="http://www.raylib.com/img/raylib_logo.png">
<!--<link rel="stylesheet" href="./Koala Seasons by emegeme_files/main.css">-->
<link rel="shortcut icon" href="http://www.raylib.com/favicon.ico">
<style>
body {
font-family: arial;
margin: 0;
padding: none;
}
#header_part {
width: 100%;
height: 80px;
background-color: #888888;
}
#logo {
width:64px;
height:64px;
float:left;
position:relative;
margin:10px;
background-image:url(http://www.raylib.com/img/raylib_logo64x64.png);
}
.emscripten { padding-right: 0; margin-left: auto; margin-right: auto; display: block; }
div.emscripten { text-align: center; }
div.emscripten_border { border: 1px solid black; }
/* the canvas *must not* have any border or padding, or mouse coords will be wrong */
canvas.emscripten { border: 0px none; }
#emscripten_logo {
display: inline-block;
margin: 0;
}
.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 0.8s linear infinite;
border-left: 5px solid black;
border-right: 5px solid black;
border-bottom: 5px solid black;
border-top: 5px solid red;
border-radius: 100%;
background-color: rgb(245, 245, 245);
}
@-webkit-keyframes rotation {
from {-webkit-transform: rotate(0deg);}
to {-webkit-transform: rotate(360deg);}
}
@-moz-keyframes rotation {
from {-moz-transform: rotate(0deg);}
to {-moz-transform: rotate(360deg);}
}
@-o-keyframes rotation {
from {-o-transform: rotate(0deg);}
to {-o-transform: rotate(360deg);}
}
@keyframes rotation {
from {transform: rotate(0deg);}
to {transform: rotate(360deg);}
}
#status {
display: inline-block;
vertical-align: top;
margin-top: 30px;
margin-left: 20px;
font-weight: bold;
color: rgb(40, 40, 40);
}
#progress {
height: 20px;
width: 30px;
}
#controls {
display: inline-block;
float: right;
vertical-align: top;
margin-top: 30px;
margin-right: 20px;
}
#output {
width: 100%;
height: 140px;
margin: 0 auto;
margin-top: 10px;
display: block;
background-color: black;
color: rgb(37, 174, 38);
font-family: 'Lucida Console', Monaco, monospace;
outline: none;
}
</style>
</head>
<body>
<div id="header_part">
<a id="logo" href="http://www.raylib.com"></a>
<div class="spinner" id='spinner'></div>
<div class="emscripten" id="status">Downloading...</div>
<span id='controls'>
<span><input type="button" value="Fullscreen" onclick="Module.requestFullScreen(false, false)"></span>
</span>
<div class="emscripten">
<progress value="0" max="100" id="progress" hidden=1></progress>
</div>
</div>
<div class="emscripten_border">
<canvas class="emscripten" id="canvas" oncontextmenu="event.preventDefault()"></canvas>
</div>
<textarea id="output" rows="8"></textarea>
<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) {
if (arguments.length > 1) 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) {
if (arguments.length > 1) 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() {
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 http://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="models_ray_picking.js"></script>
</body>
</html>

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 201 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 MiB

View File

@@ -0,0 +1,456 @@
# Blender v2.78 (sub 0) OBJ File: 'lowpoly-tower.blend'
# www.blender.org
o Grid
v -4.000000 0.000000 4.000000
v -2.327363 0.000000 4.654725
v 0.000000 0.000000 4.654725
v 2.327363 0.000000 4.654725
v 4.000000 0.000000 4.000000
v -4.654725 0.955085 2.327363
v -2.000000 0.815050 2.000000
v 0.000000 0.476341 2.423448
v 2.000000 0.476341 2.000000
v 4.654725 0.000000 2.327363
v -4.654725 1.649076 0.000000
v -2.423448 1.092402 0.000000
v 2.423448 0.198579 0.000000
v 4.654725 0.000000 0.000000
v -4.654725 1.649076 -2.327363
v -2.000000 1.092402 -2.000000
v 0.000000 0.476341 -2.423448
v 2.000000 -0.012791 -2.000000
v 4.654725 0.000000 -2.612731
v -4.000000 0.955085 -4.000000
v -2.327363 0.955085 -4.654725
v 0.000000 0.955085 -4.654725
v 2.327363 0.000000 -4.654725
v 4.000000 0.000000 -4.000000
v 2.423448 0.682825 0.000000
v 2.000000 0.565423 -2.000000
v -4.654725 -0.020560 2.327363
v -4.654725 0.000000 0.000000
v -4.654725 0.000000 -2.327363
v -4.000000 0.000000 -4.000000
v -2.327363 0.000000 -4.654725
v 0.000000 -0.020560 -4.654725
v 0.000000 0.709880 -1.230535
v -0.000000 7.395413 0.000000
v 0.962071 0.709880 -0.767226
v -0.533909 0.709880 1.108674
v -1.199683 0.709880 0.273820
v -0.962071 0.709880 -0.767226
v 1.506076 0.859071 1.325337
v 1.199683 0.709880 0.273820
v 0.533909 0.709880 1.108674
v 0.000000 1.875340 -1.177842
v -0.000000 2.293973 -0.649884
v -0.000000 4.365648 -0.627970
v 0.000000 6.167194 -0.942957
v 0.000000 6.232434 -1.708677
v 1.335898 6.232434 -1.065343
v 0.737233 6.167195 -0.587924
v 0.490966 4.365648 -0.391533
v 0.508100 2.293973 -0.405196
v 0.920874 1.875340 -0.734372
v -0.741367 6.232434 1.539465
v -0.409133 6.167195 0.849574
v -0.272466 4.365648 0.565781
v -0.281974 2.293973 0.585526
v -0.511047 1.875340 1.061199
v -1.665837 6.232434 0.380217
v -0.919314 6.167195 0.209828
v -0.612225 4.365648 0.139736
v -0.633590 2.293973 0.144613
v -1.148311 1.875340 0.262095
v -1.335898 6.232434 -1.065343
v -0.737233 6.167195 -0.587924
v -0.490967 4.365648 -0.391533
v -0.508100 2.293973 -0.405196
v -0.920874 1.875340 -0.734372
v 1.665837 6.232434 0.380216
v 0.919315 6.167195 0.209828
v 0.612225 4.365648 0.139736
v 0.633590 2.293973 0.144613
v 1.148311 1.875340 0.262095
v 0.741367 6.232434 1.539465
v 0.409133 6.167195 0.849575
v 0.272466 4.365648 0.565781
v 0.281974 2.293973 0.585526
v 0.511046 1.875340 1.061199
v 0.000000 5.012550 -0.969733
v 0.758168 5.012550 -0.604618
v -0.420751 5.012550 0.873699
v -0.945419 5.012550 0.215786
v -0.758168 5.012550 -0.604618
v 0.945419 5.012550 0.215786
v 0.420751 5.012550 0.873699
vt 0.0523 0.5444
vt 0.1817 0.4284
vt 0.1641 0.5859
vt 0.0177 0.4451
vt 0.1526 0.3090
vt 0.0189 0.1737
vt 0.0188 0.3088
vt 0.0561 0.0762
vt 0.1757 0.1924
vt 0.3024 0.4534
vt 0.3071 0.5902
vt 0.3413 0.2459
vt 0.2906 0.1614
vt 0.4116 0.1801
vt 0.2834 0.3774
vt 0.1526 0.0362
vt 0.2917 0.1622
vt 0.4446 0.5865
vt 0.4443 0.2989
vt 0.3711 0.3021
vt 0.4396 0.0275
vt 0.4094 0.1829
vt 0.4219 0.4255
vt 0.5474 0.5381
vt 0.5811 0.4376
vt 0.5715 0.1505
vt 0.5811 0.2997
vt 0.5272 0.0533
vt 0.2208 0.2194
vt 0.3456 0.3610
vt 0.2878 0.0321
vt 0.2321 0.3392
vt 0.4432 0.0177
vt 0.7347 0.7934
vt 0.7382 0.7595
vt 0.8982 0.7768
vt 0.6169 0.7595
vt 0.6139 0.7879
vt 0.4951 0.7634
vt 0.1551 0.6832
vt 0.2925 0.6268
vt 0.2925 0.6832
vt 0.7795 0.6832
vt 0.6421 0.6268
vt 0.7795 0.6255
vt 0.5046 0.7241
vt 0.6421 0.7241
vt 0.3986 0.6268
vt 0.3986 0.6832
vt 0.5046 0.6268
vt 0.0177 0.6268
vt 0.1551 0.6255
vt 0.8856 0.6268
vt 0.1899 0.9579
vt 0.1194 0.8696
vt 0.2324 0.8696
vt 0.1899 0.7813
vt 0.0943 0.7595
vt 0.0177 0.8206
vt 0.0177 0.9186
vt 0.0943 0.9797
vt 0.2793 0.2349
vt 0.2304 0.2758
vt 0.6597 0.0177
vt 0.6954 0.0993
vt 0.6367 0.0768
vt 0.7558 0.0777
vt 0.7238 0.0440
vt 0.8840 0.1330
vt 0.7385 0.1141
vt 0.9157 0.0886
vt 0.9781 0.1232
vt 0.9224 0.1276
vt 0.2677 0.8141
vt 0.3463 0.8037
vt 0.3086 0.8339
vt 0.6387 0.3550
vt 0.7130 0.3801
vt 0.6596 0.4053
vt 0.7245 0.3245
vt 0.6919 0.3383
vt 0.8655 0.3566
vt 0.7351 0.3577
vt 0.9770 0.3365
vt 0.9078 0.3751
vt 0.9174 0.3282
vt 0.2677 0.9018
vt 0.3086 0.8821
vt 0.6803 0.2948
vt 0.6251 0.3035
vt 0.7194 0.2854
vt 0.8764 0.2832
vt 0.9221 0.2861
vt 0.3363 0.9565
vt 0.3464 0.9122
vt 0.6751 0.2482
vt 0.6178 0.2499
vt 0.7179 0.2431
vt 0.9823 0.2484
vt 0.9247 0.2452
vt 0.3935 0.9014
vt 0.6755 0.1996
vt 0.6164 0.1941
vt 0.7201 0.1992
vt 0.8793 0.2446
vt 0.9823 0.2060
vt 0.9257 0.2051
vt 0.4598 0.8580
vt 0.4144 0.8579
vt 0.6819 0.1498
vt 0.6222 0.1361
vt 0.7266 0.1555
vt 0.8831 0.1684
vt 0.9252 0.1659
vt 0.4218 0.7790
vt 0.3934 0.8145
vt 0.3363 0.7595
vt 0.8815 0.2060
vt 0.8720 0.3208
vt 0.8825 0.1012
vt 0.9735 0.0816
vt 0.9718 0.3817
vt 0.9807 0.2918
vt 0.4218 0.9370
vt 0.9810 0.1644
vn 0.1035 0.8806 0.4623
vn 0.0964 0.9481 0.3030
vn 0.0000 0.9780 0.2088
vn 0.0659 0.9835 0.1683
vn 0.2325 0.9320 0.2779
vn 0.0553 0.9960 -0.0702
vn 0.2827 0.9564 0.0728
vn 0.1873 0.9776 -0.0961
vn 0.2421 0.9703 0.0000
vn 0.0921 0.9772 -0.1913
vn -0.0277 0.9947 -0.0993
vn 0.2308 0.9274 -0.2944
vn 0.2771 0.9572 -0.0837
vn 0.3724 0.9074 0.1947
vn 0.0777 0.9770 -0.1985
vn -0.1094 0.9539 0.2794
vn 0.0364 0.9844 0.1721
vn 0.1683 0.9835 0.0659
vn 0.0674 0.9901 0.1230
vn 0.4338 0.8823 0.1829
vn 0.2845 0.9565 0.0649
vn 0.0886 0.9961 0.0000
vn 0.2000 0.9789 0.0424
vn 0.1417 0.9830 0.1171
vn 0.3021 0.9524 0.0412
vn -0.0193 0.9986 -0.0493
vn 0.0000 0.9777 0.2098
vn 0.0005 0.9781 -0.2083
vn 0.1879 0.9782 -0.0887
vn 0.2249 0.0000 0.9744
vn 0.9783 0.0000 -0.2071
vn 0.9783 0.0000 0.2071
vn 0.0000 0.0000 -1.0000
vn -1.0000 0.0000 0.0000
vn -0.3645 0.0000 -0.9312
vn -0.9312 0.0000 -0.3645
vn -0.9312 0.0000 0.3645
vn 0.2615 0.7979 -0.5431
vn 0.5877 0.7979 -0.1341
vn 0.4713 0.7979 0.3758
vn -0.0000 0.7979 0.6028
vn -0.4713 0.7979 0.3758
vn -0.5877 0.7979 -0.1341
vn -0.2615 0.7979 -0.5431
vn -0.1285 0.9864 -0.1025
vn 0.0929 0.8937 0.4389
vn -0.4335 0.0407 -0.9002
vn -0.2867 0.7507 -0.5952
vn -0.4339 0.0095 -0.9009
vn -0.4338 0.0209 -0.9008
vn -0.0408 -0.9956 -0.0848
vn -0.9741 0.0407 -0.2223
vn -0.6441 0.7507 -0.1470
vn -0.9749 0.0095 -0.2225
vn -0.9747 0.0209 -0.2225
vn -0.0918 -0.9956 -0.0209
vn -0.7812 0.0407 0.6230
vn -0.5165 0.7507 0.4119
vn -0.7818 0.0095 0.6235
vn -0.7817 0.0209 0.6234
vn -0.0736 -0.9956 0.0587
vn -0.0000 0.0407 0.9992
vn 0.0000 0.7507 0.6607
vn 0.0000 0.0095 1.0000
vn -0.0000 0.0209 0.9998
vn -0.0000 -0.9956 0.0941
vn 0.7812 0.0407 0.6230
vn 0.5165 0.7507 0.4119
vn 0.7818 0.0095 0.6235
vn 0.7817 0.0209 0.6234
vn 0.0736 -0.9956 0.0587
vn 0.9741 0.0407 -0.2223
vn 0.6441 0.7507 -0.1470
vn 0.9749 0.0095 -0.2225
vn 0.9747 0.0209 -0.2225
vn 0.0918 -0.9956 -0.0209
vn 0.4335 0.0407 -0.9002
vn 0.2867 0.7507 -0.5952
vn 0.4339 0.0095 -0.9009
vn 0.4338 0.0209 -0.9008
vn 0.0408 -0.9956 -0.0848
vn 0.3918 -0.4298 -0.8135
vn 0.8803 -0.4298 -0.2009
vn 0.7059 -0.4298 0.5630
vn -0.0000 -0.4298 0.9029
vn -0.7059 -0.4298 0.5630
vn -0.8803 -0.4298 -0.2009
vn -0.3918 -0.4298 -0.8135
vn 0.0210 0.9998 -0.0048
vn 0.0482 0.9981 -0.0385
vn -0.0166 0.9914 -0.1301
vn -0.0090 0.9904 -0.1379
vn 0.2820 0.9576 0.0597
vn -0.0000 0.9846 0.1749
vn -0.0921 0.9772 -0.1913
vn -0.1734 0.9794 0.1036
s off
f 1/1/1 7/2/1 6/3/1
f 2/4/2 8/5/2 7/2/2
f 4/6/3 8/5/3 3/7/3
f 5/8/4 9/9/4 4/6/4
f 6/3/5 12/10/5 11/11/5
f 35/12/6 25/13/6 26/14/6
f 7/2/7 37/15/7 12/10/7
f 10/16/8 13/17/8 9/9/8
f 12/10/9 15/18/9 11/11/9
f 35/12/10 17/19/10 33/20/10
f 13/17/11 19/21/11 18/22/11
f 16/23/12 20/24/12 15/18/12
f 17/19/13 21/25/13 16/23/13
f 17/19/14 23/26/14 22/27/14
f 26/14/15 24/28/15 23/26/15
f 1/1/16 2/4/16 7/2/16
f 2/4/3 3/7/3 8/5/3
f 4/6/17 9/9/17 8/5/17
f 5/8/18 10/16/18 9/9/18
f 6/3/19 7/2/19 12/10/19
f 25/13/20 39/29/20 9/9/20
f 38/30/21 12/10/21 37/15/21
f 10/16/22 14/31/22 13/17/22
f 12/10/23 16/23/23 15/18/23
f 8/5/24 36/32/24 7/2/24
f 38/30/25 17/19/25 16/23/25
f 13/17/22 14/31/22 19/21/22
f 16/23/26 21/25/26 20/24/26
f 17/19/27 22/27/27 21/25/27
f 17/19/28 26/14/28 23/26/28
f 26/14/29 19/33/29 24/28/29
f 26/34/30 18/35/30 19/36/30
f 26/34/31 13/37/31 18/35/31
f 25/38/32 9/39/32 13/37/32
f 22/40/33 31/41/33 21/42/33
f 6/43/34 28/44/34 27/45/34
f 15/46/34 28/44/34 11/47/34
f 21/42/35 30/48/35 20/49/35
f 20/49/36 29/50/36 15/46/36
f 22/40/33 23/51/33 32/52/33
f 6/43/37 27/45/37 1/53/37
f 46/54/38 34/55/38 47/56/38
f 47/56/39 34/55/39 67/57/39
f 67/57/40 34/55/40 72/58/40
f 72/58/41 34/55/41 52/59/41
f 52/59/42 34/55/42 57/60/42
f 57/60/43 34/55/43 62/61/43
f 62/61/44 34/55/44 46/54/44
f 40/62/45 41/63/45 39/29/45
f 39/29/46 8/5/46 9/9/46
f 38/64/47 42/65/47 33/66/47
f 65/67/48 42/65/48 66/68/48
f 65/67/49 44/69/49 43/70/49
f 81/71/50 45/72/50 77/73/50
f 62/74/51 45/75/51 63/76/51
f 37/77/52 66/78/52 38/79/52
f 60/80/53 66/78/53 61/81/53
f 60/80/54 64/82/54 65/83/54
f 58/84/55 81/85/55 80/86/55
f 57/87/56 63/76/56 58/88/56
f 56/89/57 37/77/57 36/90/57
f 55/91/58 61/81/58 56/89/58
f 54/92/59 60/80/59 55/91/59
f 79/93/60 58/84/60 80/86/60
f 52/94/61 58/88/61 53/95/61
f 76/96/62 36/90/62 41/97/62
f 75/98/63 56/89/63 76/96/63
f 75/98/64 54/92/64 55/91/64
f 73/99/65 79/93/65 83/100/65
f 73/101/66 52/94/66 53/95/66
f 71/102/67 41/97/67 40/103/67
f 70/104/68 76/96/68 71/102/68
f 70/104/69 74/105/69 75/98/69
f 68/106/70 83/100/70 82/107/70
f 67/108/71 73/101/71 68/109/71
f 51/110/72 40/103/72 35/111/72
f 50/112/73 71/102/73 51/110/73
f 49/113/74 70/104/74 50/112/74
f 78/114/75 68/106/75 82/107/75
f 47/115/76 68/109/76 48/116/76
f 42/65/77 35/111/77 33/66/77
f 43/70/78 51/110/78 42/65/78
f 44/69/79 50/112/79 43/70/79
f 45/72/80 78/114/80 77/73/80
f 46/117/81 48/116/81 45/75/81
f 44/69/82 78/114/82 49/113/82
f 49/113/83 82/107/83 69/118/83
f 82/107/84 74/105/84 69/118/84
f 83/100/85 54/92/85 74/105/85
f 79/93/86 59/119/86 54/92/86
f 80/86/87 64/82/87 59/119/87
f 64/120/88 77/73/88 44/69/88
f 35/12/89 40/62/89 25/13/89
f 7/2/90 36/32/90 37/15/90
f 35/12/91 26/14/91 17/19/91
f 25/13/92 40/62/92 39/29/92
f 38/30/93 16/23/93 12/10/93
f 8/5/94 41/63/94 36/32/94
f 38/30/95 33/20/95 17/19/95
f 26/34/31 25/38/31 13/37/31
f 22/40/33 32/52/33 31/41/33
f 6/43/34 11/47/34 28/44/34
f 15/46/34 29/50/34 28/44/34
f 21/42/35 31/41/35 30/48/35
f 20/49/36 30/48/36 29/50/36
f 39/29/96 41/63/96 8/5/96
f 38/64/47 66/68/47 42/65/47
f 65/67/48 43/70/48 42/65/48
f 65/67/49 64/120/49 44/69/49
f 81/71/50 63/121/50 45/72/50
f 62/74/51 46/117/51 45/75/51
f 37/77/52 61/81/52 66/78/52
f 60/80/53 65/83/53 66/78/53
f 60/80/54 59/119/54 64/82/54
f 58/84/55 63/122/55 81/85/55
f 57/87/56 62/74/56 63/76/56
f 56/89/57 61/81/57 37/77/57
f 55/91/58 60/80/58 61/81/58
f 54/92/59 59/119/59 60/80/59
f 79/93/60 53/123/60 58/84/60
f 52/94/61 57/87/61 58/88/61
f 76/96/62 56/89/62 36/90/62
f 75/98/63 55/91/63 56/89/63
f 75/98/64 74/105/64 54/92/64
f 73/99/65 53/123/65 79/93/65
f 73/101/66 72/124/66 52/94/66
f 71/102/67 76/96/67 41/97/67
f 70/104/68 75/98/68 76/96/68
f 70/104/69 69/118/69 74/105/69
f 68/106/70 73/99/70 83/100/70
f 67/108/71 72/124/71 73/101/71
f 51/110/72 71/102/72 40/103/72
f 50/112/73 70/104/73 71/102/73
f 49/113/74 69/118/74 70/104/74
f 78/114/75 48/125/75 68/106/75
f 47/115/76 67/108/76 68/109/76
f 42/65/77 51/110/77 35/111/77
f 43/70/78 50/112/78 51/110/78
f 44/69/79 49/113/79 50/112/79
f 45/72/80 48/125/80 78/114/80
f 46/117/81 47/115/81 48/116/81
f 44/69/82 77/73/82 78/114/82
f 49/113/83 78/114/83 82/107/83
f 82/107/84 83/100/84 74/105/84
f 83/100/85 79/93/85 54/92/85
f 79/93/86 80/86/86 59/119/86
f 80/86/87 81/85/87 64/82/87
f 64/120/88 81/71/88 77/73/88

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB