<!-- SOLUV · part 6 -->
dex.html =====
<!doctype html>
<html lang="en"><head><meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,viewport-fit=cover">
<meta name="theme-color" content="#000000">
<link rel="icon" href="data:,"><title>Soluv: the shared world</title>
<link rel="modulepreload" href="/soluv/world/three.min.js"><link rel="modulepreload" href="/soluv/world/chat-wall.js">
<style>html,body{margin:0;height:100%;background:#000;overflow:hidden;overscroll-behavior:none}#soluv-world{position:fixed;inset:0}</style>
</head><body>
<!-- Playa: /soluv = the shared map of chat walls; /soluv/N = wall N; /soluv/room.html = the flat dense room. -->
<div id="soluv-world"></div>
<script type="module">
import { mountSoluvWorld } from "/soluv/world/world.js";
mountSoluvWorld(document.getElementById("soluv-world")).catch(e => {
  console.error("[soluv] world failed", e);
  const d = document.createElement("p"); d.style.cssText = "position:fixed;left:12px;right:12px;top:40%;color:#ff9a8f;font:17px sans-serif;text-align:center";
  d.innerHTML = "The world could not start: " + String(e && e.message || e).replace(/</g, "&lt;") + "<br><a style=\"color:#ffd98a;display:inline-block;min-height:48px;line-height:48px\" href=\"/soluv/room.html\">Open the flat room</a>";
  document.body.appendChild(d);
});
</script>
<script type="module" src="/soluv/world/soulprint-tower.js"></script>
</body></html>


===== FILE: public/soluv/8/index.html =====
<!doctype html>
<html lang="en"><head><meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,viewport-fit=cover">
<meta name="theme-color" content="#000000">
<link rel="icon" href="data:,"><title>Soluv: the shared world</title>
<link rel="modulepreload" href="/soluv/world/three.min.js"><link rel="modulepreload" href="/soluv/world/chat-wall.js">
<style>html,body{margin:0;height:100%;background:#000;overflow:hidden;overscroll-behavior:none}#soluv-world{position:fixed;inset:0}</style>
</head><body>
<!-- Playa: /soluv = the shared map of chat walls; /soluv/N = wall N; /soluv/room.html = the flat dense room. -->
<div id="soluv-world"></div>
<script type="module">
import { mountSoluvWorld } from "/soluv/world/world.js";
mountSoluvWorld(document.getElementById("soluv-world")).catch(e => {
  console.error("[soluv] world failed", e);
  const d = document.createElement("p"); d.style.cssText = "position:fixed;left:12px;right:12px;top:40%;color:#ff9a8f;font:17px sans-serif;text-align:center";
  d.innerHTML = "The world could not start: " + String(e && e.message || e).replace(/</g, "&lt;") + "<br><a style=\"color:#ffd98a;display:inline-block;min-height:48px;line-height:48px\" href=\"/soluv/room.html\">Open the flat room</a>";
  document.body.appendChild(d);
});
</script>
<script type="module" src="/soluv/world/soulprint-tower.js"></script>
</body></html>


===== FILE: public/soluv/9/index.html =====
<!doctype html>
<html lang="en"><head><meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,viewport-fit=cover">
<meta name="theme-color" content="#000000">
<link rel="icon" href="data:,"><title>Soluv: the shared world</title>
<link rel="modulepreload" href="/soluv/world/three.min.js"><link rel="modulepreload" href="/soluv/world/chat-wall.js">
<style>html,body{margin:0;height:100%;background:#000;overflow:hidden;overscroll-behavior:none}#soluv-world{position:fixed;inset:0}</style>
</head><body>
<!-- Playa: /soluv = the shared map of chat walls; /soluv/N = wall N; /soluv/room.html = the flat dense room. -->
<div id="soluv-world"></div>
<script type="module">
import { mountSoluvWorld } from "/soluv/world/world.js";
mountSoluvWorld(document.getElementById("soluv-world")).catch(e => {
  console.error("[soluv] world failed", e);
  const d = document.createElement("p"); d.style.cssText = "position:fixed;left:12px;right:12px;top:40%;color:#ff9a8f;font:17px sans-serif;text-align:center";
  d.innerHTML = "The world could not start: " + String(e && e.message || e).replace(/</g, "&lt;") + "<br><a style=\"color:#ffd98a;display:inline-block;min-height:48px;line-height:48px\" href=\"/soluv/room.html\">Open the flat room</a>";
  document.body.appendChild(d);
});
</script>
<script type="module" src="/soluv/world/soulprint-tower.js"></script>
</body></html>


===== FILE: public/soluv/fonts/OFL-RobotoCondensed.txt =====
Copyright 2011 The Roboto Project Authors (https://github.com/googlefonts/roboto-classic)

This Font Software is licensed under the SIL Open Font License, Version 1.1.
This license is copied below, and is also available with a FAQ at:
http://scripts.sil.org/OFL


-----------------------------------------------------------
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
-----------------------------------------------------------

PREAMBLE
The goals of the Open Font License (OFL) are to stimulate worldwide
development of collaborative font projects, t