This commit is contained in:
array-in-a-matrix 2023-03-18 01:01:31 -04:00
parent c5afbe3f95
commit cc4682d735
33 changed files with 3375 additions and 2833 deletions

1
.prettierrc.json Normal file
View file

@ -0,0 +1 @@
{}

View file

@ -1,22 +1,22 @@
<!DOCTYPE html>
<html lang="en-US">
<head>
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>403 Error</title>
<link rel="stylesheet" href="/style/style.css" />
<link rel="icon" type="image/gif" href="/res/site/icons/cat.gif">
</head>
<link rel="icon" type="image/gif" href="/res/site/icons/cat.gif" />
</head>
<body>
<body>
<header class="page-header" role="banner">
<h1 class="project-name">403 Error</h1>
<h2 class="project-tagline">You do not have access to this, stop snooping ÒwÓ.</h2>
<h2 class="project-tagline">
You do not have access to this, stop snooping ÒwÓ.
</h2>
<a href="/" class="btn">Home</a>
</header>
</body>
</body>
</html>

View file

@ -1,22 +1,20 @@
<!DOCTYPE html>
<html lang="en-US">
<head>
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>404 Error</title>
<link rel="stylesheet" href="/style/style.css" />
<link rel="icon" type="image/gif" href="/res/site/icons/cat.gif">
</head>
<link rel="icon" type="image/gif" href="/res/site/icons/cat.gif" />
</head>
<body>
<body>
<header class="page-header" role="banner">
<h1 class="project-name">404 Error</h1>
<h2 class="project-tagline">Requested page diverges.</h2>
<a href="/" class="btn">Home</a>
</header>
</body>
</body>
</html>

View file

@ -1,22 +1,20 @@
<!DOCTYPE html>
<html lang="en-US">
<head>
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>413 Error</title>
<link rel="stylesheet" href="/style/style.css" />
<link rel="icon" type="image/gif" href="/res/site/icons/cat.gif">
</head>
<link rel="icon" type="image/gif" href="/res/site/icons/cat.gif" />
</head>
<body>
<body>
<header class="page-header" role="banner">
<h1 class="project-name">413 Error</h1>
<h2 class="project-tagline">413 Payload Too Large.</h2>
<a href="/" class="btn">Home</a>
</header>
</body>
</body>
</html>

View file

@ -1,22 +1,22 @@
<!DOCTYPE html>
<html lang="en-US">
<head>
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>5XX Error</title>
<link rel="stylesheet" href="/style/style.css" />
<link rel="icon" type="image/gif" href="/res/site/icons/cat.gif">
</head>
<link rel="icon" type="image/gif" href="/res/site/icons/cat.gif" />
</head>
<body>
<body>
<header class="page-header" role="banner">
<h1 class="project-name">5XX Error</h1>
<h2 class="project-tagline">The server is currently on fire! Please check back later.</h2>
<h2 class="project-tagline">
The server is currently on fire! Please check back later.
</h2>
<a href="/" class="btn">Home</a>
</header>
</body>
</body>
</html>

View file

@ -1,21 +1,25 @@
<!DOCTYPE html>
<html lang="en-US">
<head>
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Array in a Matrix</title>
<link rel="stylesheet" type="text/css" href="./style/alt.style.css" />
<link rel="stylesheet" href="./res/site/fonts/DarkNewRoman/stylesheet.css" type="text/css" />
<link rel="icon" type="image/x-icon" href="./res/site/icons/favicon.ico">
</head>
<link
rel="stylesheet"
href="./res/site/fonts/DarkNewRoman/stylesheet.css"
type="text/css"
/>
<link rel="icon" type="image/x-icon" href="./res/site/icons/favicon.ico" />
</head>
<body>
<body>
<header class="page-header" role="banner">
<h1 class="project-name" style="font-family: DarkNewRoman;"> Array in a matriX
<h1 class="project-name" style="font-family: DarkNewRoman">
Array in a matriX
</h1>
<h2 class=" project-tagline">Welcome to the abyss.</h2>
<h2 class="project-tagline">Welcome to the abyss.</h2>
</header>
<div class="main-content">
<nav>
@ -35,10 +39,8 @@
</nav>
</div>
<footer class="site-footer">
Pages that use JavaScript are denoted by ⨳.
</footer>
</body>
</body>
</html>

View file

@ -1,16 +1,23 @@
<!DOCTYPE html>
<html lang="en-US">
<head>
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>About Me</title>
<link rel="stylesheet" href="../../style/style.css" />
<link rel="icon" type="image/x-icon" href="../../res/site/icons/favicon.ico">
<link href="//cdn.jsdelivr.net/npm/font-logos@1/assets/font-logos.css" rel="stylesheet"></head>
<link
rel="icon"
type="image/x-icon"
href="../../res/site/icons/favicon.ico"
/>
<link
href="//cdn.jsdelivr.net/npm/font-logos@1/assets/font-logos.css"
rel="stylesheet"
/>
</head>
<body>
<body>
<header class="page-header" role="banner">
<h1 class="project-name">About Me</h1>
<h2 class="project-tagline">The webmaster.</h2>
@ -19,15 +26,24 @@
</header>
<main id="content" class="main-content" role="main">
<h3>About Me</h3>
My name is Array. My hobbies include skateboarding, biking, surfing the web, play
video games (including emulation) and programming. I tinker a lot
with electronics and tend to jailbreak and homebrew them whenever possible. I use <a
href="https://archlinux.org/">Arch Linux btw <i class="fl-archlinux"></i></a>. I created <a href="https://git.arrayinamatrix.xyz/array-in-a-matrix/arrayinamatrix.xyz">this website</a> and constantly update it with new content (come back later!). I set up, configured, host, and operate this website, and all of its related services.
My name is Array. My hobbies include skateboarding, biking, surfing the
web, play video games (including emulation) and programming. I tinker a
lot with electronics and tend to jailbreak and homebrew them whenever
possible. I use
<a href="https://archlinux.org/"
>Arch Linux btw <i class="fl-archlinux"></i></a
>. I created
<a
href="https://git.arrayinamatrix.xyz/array-in-a-matrix/arrayinamatrix.xyz"
>this website</a
>
and constantly update it with new content (come back later!). I set up,
configured, host, and operate this website, and all of its related
services.
<br>
<br>
<br />
<br />
My website is split into a couple sections:
@ -47,7 +63,9 @@
</tr>
<tr>
<td><a href="https://bloginamatrix.xyz">Blog</a></td>
<td>My personal blog where I info dump and take forever to post.</td>
<td>
My personal blog where I info dump and take forever to post.
</td>
</tr>
<tr>
<td><a href="https://chatinamatrix.xyz">Chat</a></td>
@ -67,7 +85,10 @@
</tr>
<tr>
<td>Services</td>
<td>Applications that I host but not necessary coded (Most useful imo).</td>
<td>
Applications that I host but not necessary coded (Most useful
imo).
</td>
</tr>
<tr>
<td>Projects</td>
@ -75,21 +96,20 @@
</tr>
<tr>
<td>Webrings</td>
<td>Links to other people's websites which may or may not be similar.</td>
<td>
Links to other people's websites which may or may not be similar.
</td>
</tr>
</tbody>
</table>
<br>
<br>
<code>
You can view my desktop rice <a href="./rice/">here</a>.
</code>
<br />
<br />
<code> You can view my desktop rice <a href="./rice/">here</a>. </code>
<footer class="site-footer">
You have reached the end of the page. (ノ◕ヮ◕)ノ*:・゚✧
</footer>
</main>
</body>
</body>
</html>

View file

@ -1,16 +1,19 @@
<!DOCTYPE html>
<html lang="en-US">
<head>
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>About Me</title>
<link rel="stylesheet" href="../../../style/style.css" />
<link rel="icon" type="image/x-icon" href="../../../res/site/icons/favicon.ico">
</head>
<link
rel="icon"
type="image/x-icon"
href="../../../res/site/icons/favicon.ico"
/>
</head>
<body style="cursor: url(../../../res/site/icons/archlinux.png), auto;">
<body style="cursor: url(../../../res/site/icons/archlinux.png), auto">
<header class="page-header" role="banner">
<h1 class="project-name">Desktop Rice</h1>
<h2 class="project-tagline"></h2>
@ -20,32 +23,40 @@
</header>
<main id="content" class="main-content" role="main">
<h3><a href="https://jie-fang.github.io/blog/basics-of-ricing">What is Ricing?</a></h3>
Ricing is just customizing your operating system to look a certain way or follow a theme. You can see other
people's desktop rices <a href="https://libreddit.de/r/unixporn/">here</a>. My dotfiles are <a
href="https://git.arrayinamatrix.xyz/array-in-a-matrix/dotfiles">here</a>.
<h3>
<a href="https://jie-fang.github.io/blog/basics-of-ricing"
>What is Ricing?</a
>
</h3>
Ricing is just customizing your operating system to look a certain way or
follow a theme. You can see other people's desktop rices
<a href="https://libreddit.de/r/unixporn/">here</a>. My dotfiles are
<a href="https://git.arrayinamatrix.xyz/array-in-a-matrix/dotfiles"
>here</a
>.
<h4>My system looks like this:</h4>
<div class="zoom">
<a href="../../../res/site/images/KDE-rice.png"><img src="../../../res/site/images/KDE-rice.png"
alt="KDE desktop on Arch Linux."></a>
<a href="../../../res/site/images/KDE-rice.png"
><img
src="../../../res/site/images/KDE-rice.png"
alt="KDE desktop on Arch Linux."
/></a>
</div>
<h4>And looks like this:</h4>
<div class="zoom">
<a href="../../../res/site/images/SwayWM-rice.png"><img src="../../../res/site/images/SwayWM-rice.png"
alt="3 images of the Sway window manager (using pywal) on Arch Linux."></a>
<a href="../../../res/site/images/SwayWM-rice.png"
><img
src="../../../res/site/images/SwayWM-rice.png"
alt="3 images of the Sway window manager (using pywal) on Arch Linux."
/></a>
</div>
<code>
This is a two monitor setup.
</code>
<code> This is a two monitor setup. </code>
<footer class="site-footer">
You have reached the end of the page. (ノ◕ヮ◕)ノ*:・゚✧
</footer>
</main>
</body>
</body>
</html>

View file

@ -1,21 +1,26 @@
<!DOCTYPE html>
<html lang="en-US">
<head>
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Administration</title>
<link rel="stylesheet" type="text/css" href="../../../style/alt.style.css" />
<link rel="icon" type="image/x-icon" href="../../../res/site/icons/favicon.ico">
</head>
<link
rel="stylesheet"
type="text/css"
href="../../../style/alt.style.css"
/>
<link
rel="icon"
type="image/x-icon"
href="../../../res/site/icons/favicon.ico"
/>
</head>
<body>
<body>
<header class="page-header" role="banner">
<h1 class="project-name"> Administration
</h1>
<h2 class=" project-tagline">Server statistics and management tools.
</h2>
<h1 class="project-name">Administration</h1>
<h2 class="project-tagline">Server statistics and management tools.</h2>
</header>
<div class="main-content">
<nav>
@ -23,9 +28,10 @@
<a href="../" class="btn">Applications</a>
</nav>
<nav>
<a href="https://docker.arrayinamatrix.xyz/" class="btn">Docker<sup></sup></a>
<a href="https://docker.arrayinamatrix.xyz/" class="btn"
>Docker<sup></sup></a
>
</nav>
</div>
</body>
</body>
</html>

View file

@ -1,16 +1,19 @@
<!DOCTYPE html>
<html lang="en-US">
<head>
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Cbox</title>
<link rel="stylesheet" href="../../../style/style.css" />
<link rel="icon" type="image/x-icon" href="../../../res/site/icons/favicon.ico">
</head>
<link
rel="icon"
type="image/x-icon"
href="../../../res/site/icons/favicon.ico"
/>
</head>
<body>
<body>
<header class="page-header" role="banner">
<h1 class="project-name">Cbox</h1>
<h2 class="project-tagline">Anonymous real-time live chat app.</h2>
@ -21,15 +24,21 @@
</header>
<main id="content" class="main-content" role="main">
<iframe src="https://www3.cbox.ws/box/?boxid=3515749&boxtag=EAcksW" width="100%" height="450"
allowtransparency="yes" allow="autoplay" frameborder="0" marginheight="0" marginwidth="0"
scrolling="auto"></iframe>
<iframe
src="https://www3.cbox.ws/box/?boxid=3515749&boxtag=EAcksW"
width="100%"
height="450"
allowtransparency="yes"
allow="autoplay"
frameborder="0"
marginheight="0"
marginwidth="0"
scrolling="auto"
></iframe>
<footer class="site-footer">
You have reached the end of the page. (ノ◕ヮ◕)ノ*:・゚✧
</footer>
</main>
</body>
</body>
</html>

View file

@ -1,108 +1,126 @@
<!DOCTYPE html>
<html lang="en-US">
<head>
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Apps and Services</title>
<link rel="stylesheet" href="../../style/style.css" />
<link rel="icon" type="image/x-icon" href="../../res/site/icons/favicon.ico">
</head>
<link
rel="icon"
type="image/x-icon"
href="../../res/site/icons/favicon.ico"
/>
</head>
<body>
<body>
<header class="page-header" role="banner">
<h1 class="project-name">Applications and Services</h1>
<h2 class="project-tagline">Apps and services hosted on this domain. <br> (Written by actual developers.)
<h2 class="project-tagline">
Apps and services hosted on this domain. <br />
(Written by actual developers.)
</h2>
<a href="../../" class="btn">Home</a>
</header>
<main id="content" class="main-content" role="main">
<p><Strong>Note:</Strong> Chat and social applications have been moved to <a href="https://chatinamatrix.xyz">chatinamatrix.xyz</a>.</p>
<p>
<strong>Note:</strong> Chat and social applications have been moved to
<a href="https://chatinamatrix.xyz">chatinamatrix.xyz</a>.
</p>
<section id="matrix">
<h3><a href="./matrix/">Matrix homeserver</a></h3>
<code>
A decentralized End-to-End encrypted and federated chat server. Matrix web clients can be found <a href="https://chatinamatrix.xyz">here</a>.
A decentralized End-to-End encrypted and federated chat server. Matrix
web clients can be found <a href="https://chatinamatrix.xyz">here</a>.
</code>
</section>
<br>
<br />
<section id="cbox">
<h3><a href="./cbox/">Cbox<sup></sup></a></h3>
<h3>
<a href="./cbox/">Cbox<sup></sup></a>
</h3>
<code>
Anonymous real-time live chat app. Come leave a quick message!
</code>
</section>
<br>
<br />
<section id="gemini">
<h3><a href="gemini://arrayinamatrix.xyz/">Gemini capsule</a></h3>
<code>
This is my Gemini capsule, you can learn more about it <a
href="https://bloginamatrix.xyz/gemini-capsule/">here</a>. (Requires Gemini compatible browser.)
This is my Gemini capsule, you can learn more about it
<a href="https://bloginamatrix.xyz/gemini-capsule/">here</a>.
(Requires Gemini compatible browser.)
</code>
</section>
<br>
<br />
<section id="wiki">
<h3><a href="https://wiki.arrayinamatrix.xyz">Wiki archives<sup></sup></a></h3>
<h3>
<a href="https://wiki.arrayinamatrix.xyz"
>Wiki archives<sup></sup></a
>
</h3>
<code>
Wiki mirrors hosted using <a href="https://kiwix.org">Kiwix</a>. Come browse Wikipedia, the Arch wiki and more!
Wiki mirrors hosted using <a href="https://kiwix.org">Kiwix</a>. Come
browse Wikipedia, the Arch wiki and more!
</code>
</section>
<br>
<br />
<section id="tor">
<h3><a href="./tor/">Tor hidden services</a></h3>
<code>
List of all of my Tor hidden services. Use Tor to bypass censorship! (Requires Tor compatible browser.)
List of all of my Tor hidden services. Use Tor to bypass censorship!
(Requires Tor compatible browser.)
</code>
</section>
<br>
<br />
<section id="git">
<h3><a href="https://git.arrayinamatrix.xyz">Gitea<sup></sup></a></h3>
<h3>
<a href="https://git.arrayinamatrix.xyz">Gitea<sup></sup></a>
</h3>
<code>
Lightweight open sourced code hosting. (GitHub replacement!)
</code>
</section>
<br>
<br />
<section id="share">
<h3><a href="https://share.arrayinamatrix.xyz">Share<sup></sup></a></h3>
<h3>
<a href="https://share.arrayinamatrix.xyz">Share<sup></sup></a>
</h3>
<code>
Lightweight and minimal temporary file sharing. You can share files using the browser or directly from the terminal!
Lightweight and minimal temporary file sharing. You can share files
using the browser or directly from the terminal!
</code>
</section>
<br>
<hr>
<br>
<br />
<hr />
<br />
<section id="privacy">
<h3><a href="./privacy/">Privacy Policy</a></h3>
<code>
Privacy policy of this website and its related services.
</code>
<code> Privacy policy of this website and its related services. </code>
</section>
<br>
<br />
<section id="admin">
<h3><a href="./admin/">Administration tools</a></h3>
<code>
Server statistics and management tools.
</code>
<code> Server statistics and management tools. </code>
</section>
<!-- <section id="#">
@ -115,6 +133,5 @@
You have reached the end of the page. (ノ◕ヮ◕)ノ*:・゚✧
</footer>
</main>
</body>
</body>
</html>

View file

@ -1,18 +1,25 @@
<!DOCTYPE html>
<html lang="en-US">
<head>
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Privacy Policy</title>
<link rel="stylesheet" href="../../../style/style.css" />
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/fork-awesome@1.2.0/css/fork-awesome.min.css"
integrity="sha256-XoaMnoYC5TH6/+ihMEnospgm0J1PM/nioxbOUdnM8HY=" crossorigin="anonymous" />
<link rel="icon" type="image/x-icon" href="../../../res/site/icons/favicon.ico" />
</head>
<link
rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/fork-awesome@1.2.0/css/fork-awesome.min.css"
integrity="sha256-XoaMnoYC5TH6/+ihMEnospgm0J1PM/nioxbOUdnM8HY="
crossorigin="anonymous"
/>
<link
rel="icon"
type="image/x-icon"
href="../../../res/site/icons/favicon.ico"
/>
</head>
<body>
<body>
<header class="page-header" role="banner">
<h1 class="project-name">Privacy Policy</h1>
<h2 class="project-tagline">The Right to Privacy.</h2>
@ -23,36 +30,60 @@
<main id="content" class="main-content" role="main">
<h3>Privacy Policy</h3>
<section id="website">
<h3><a href="https://arrayinamatrix.xyz">arrayinamatrix.xyz</a> & <a
href="https://bloginamatrix.xyz">bloginamatrix.xyz</a></h3>
<h3>
<a href="https://arrayinamatrix.xyz">arrayinamatrix.xyz</a> &
<a href="https://bloginamatrix.xyz">bloginamatrix.xyz</a>
</h3>
<h5>last updated: 22/11/2022</h5>
<code>
We do not collect any personal data or any information that can be used to identify you. IP addresses are logged for a maximum of one day. If you want your IP address removed from the <a href="../../projects/ip-grabber/">IP Grabber</a>, just <a href="#contact"> contact us</a> and we will purge the list. We record server analytics and statistics such as generic system information (CPU, memory usage, etc.). Pages that require some client side JavaScript code are denoted by the smash product symbol "⨳", external websites are not included.
We do not collect any personal data or any information that can be
used to identify you. IP addresses are logged for a maximum of one
day. If you want your IP address removed from the
<a href="../../projects/ip-grabber/">IP Grabber</a>, just
<a href="#contact"> contact us</a> and we will purge the list. We
record server analytics and statistics such as generic system
information (CPU, memory usage, etc.). Pages that require some client
side JavaScript code are denoted by the smash product symbol "⨳",
external websites are not included.
</code>
</section>
<br>
<br>
<br />
<br />
<section id="matrix">
<h3><a href="https://chatinamatrix.xyz">chatinamatrix.xyz</a></h3>
<h5>last updated: 22/11/2022</h5>
<code>
Server analytics and statistics are only used to improve and monitor the health of the Dendrite server. We use Google's ReCAPTCHA to reduce automated spam bots. Access logs (include Matrix federation) are purged daily. We only require a password and username to register on our Dendrite chat server, all other data (email address, phone number, etc.) are optional. Messages deleted from this homeserver will not, and can not, guarantee their removal from federated homeservers. <strong>Anyone, including server admins, can see all unencrypted data!</strong>
<br>
<br>
Rules for our matrix homeserver can be found <a href="../../apps/matrix/#rules">here</a>.
Server analytics and statistics are only used to improve and monitor
the health of the Dendrite server. We use Google's ReCAPTCHA to reduce
automated spam bots. Access logs (include Matrix federation) are
purged daily. We only require a password and username to register on
our Dendrite chat server, all other data (email address, phone number,
etc.) are optional. Messages deleted from this homeserver will not,
and can not, guarantee their removal from federated homeservers.
<strong
>Anyone, including server admins, can see all unencrypted
data!</strong
>
<br />
<br />
Rules for our matrix homeserver can be found
<a href="../../apps/matrix/#rules">here</a>.
</code>
</section>
<br>
<br>
<br />
<br />
<section id="note">
<h3>Note:</h3>
<h5>last updated: 22/11/2022</h5>
<code>
We may update or change our privacy policy without warning. All of our services are provided on a <strong>As-Is</strong> basis without any warranties. We will <strong>NOT</strong> notify you of any changes to the privacy policy.
We may update or change our privacy policy without warning. All of our
services are provided on a <strong>As-Is</strong> basis without any
warranties. We will <strong>NOT</strong> notify you of any changes to
the privacy policy.
</code>
</section>
<br>
<br>
<br />
<br />
<section id="contact">
For additional information or support please email us at
<a href="mailto:tensor@arrayinamatrix.xyz">tensor@arrayinamatrix.xyz</a>
@ -62,6 +93,5 @@
You have reached the end of the page. (ノ◕ヮ◕)ノ*:・゚✧
</footer>
</main>
</body>
</body>
</html>

View file

@ -1,16 +1,19 @@
<!DOCTYPE html>
<html lang="en-US">
<head>
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Tor</title>
<link rel="stylesheet" href="../../../style/style.css" />
<link rel="icon" type="image/x-icon" href="../../../res/site/icons/favicon.ico">
</head>
<link
rel="icon"
type="image/x-icon"
href="../../../res/site/icons/favicon.ico"
/>
</head>
<body>
<body>
<header class="page-header" role="banner">
<h1 class="project-name">Tor Hidden Services</h1>
<h2 class="project-tagline">These are my dark/deep websites.</h2>
@ -20,58 +23,73 @@
<main id="content" class="main-content" role="main">
<section id="array">
<h3><a href="http://7o6hlu5tkjsi6z7thygpgqpc7pvb2qamjtaxkvceezcpj236stq25vqd.onion">arrayinamatrix.xyz</a>
<h3>
<a
href="http://7o6hlu5tkjsi6z7thygpgqpc7pvb2qamjtaxkvceezcpj236stq25vqd.onion"
>arrayinamatrix.xyz</a
>
</h3>
<code>
7o6hlu5tkjsi6z7thygpgqpc7pvb2qamjtaxkvceezcpj236stq25vqd.onion
</code>
</section>
<br>
<br />
<section id="git">
<h3>
<a href="http://srr5udc7cotv4qbwiwcbatj3yciq2doorz4llmgoie7nfnwsgxy2ivid.onion">git.arrayinamatrix.xyz</a>
<a
href="http://srr5udc7cotv4qbwiwcbatj3yciq2doorz4llmgoie7nfnwsgxy2ivid.onion"
>git.arrayinamatrix.xyz</a
>
</h3>
<code>
srr5udc7cotv4qbwiwcbatj3yciq2doorz4llmgoie7nfnwsgxy2ivid.onion
</code>
</section>
<br>
<br />
<section id="wiki">
<h3>
<a href="http://wqram5hvegtb7ib72y73paou2jkzn7iqqrb2tp5eadckbjm6ekrwucqd.onion">wiki.arrayinamatrix.xyz</a>
<a
href="http://wqram5hvegtb7ib72y73paou2jkzn7iqqrb2tp5eadckbjm6ekrwucqd.onion"
>wiki.arrayinamatrix.xyz</a
>
</h3>
<code>
wqram5hvegtb7ib72y73paou2jkzn7iqqrb2tp5eadckbjm6ekrwucqd.onion
</code>
</section>
<br>
<br />
<section id="blog">
<h3>
<a href="http://xyfrg77bbix6ksxs62rausbyvjluwqhh5o3defg5hz4uketxpfqcneyd.onion">bloginamatrix.xyz</a>
<a
href="http://xyfrg77bbix6ksxs62rausbyvjluwqhh5o3defg5hz4uketxpfqcneyd.onion"
>bloginamatrix.xyz</a
>
</h3>
<code>
xyfrg77bbix6ksxs62rausbyvjluwqhh5o3defg5hz4uketxpfqcneyd.onion
</code>
</section>
<br>
<br />
<section id="chat">
<h3>
<a href="http://rw3lqcaf4so66ecbpgreedaes7t2eyh2legwvjggtdnlw2fb2n3svfyd.onion">chatinamatrix.xyz</a>
<a
href="http://rw3lqcaf4so66ecbpgreedaes7t2eyh2legwvjggtdnlw2fb2n3svfyd.onion"
>chatinamatrix.xyz</a
>
</h3>
<code>
rw3lqcaf4so66ecbpgreedaes7t2eyh2legwvjggtdnlw2fb2n3svfyd.onion
</code>
</section>
<!-- <section id="#">
<h3><a href="#">Clickable title</a></h3>
<code>
@ -83,6 +101,5 @@
You have reached the end of the page. (ノ◕ヮ◕)ノ*:・゚✧
</footer>
</main>
</body>
</body>
</html>

View file

@ -1,21 +1,31 @@
<!DOCTYPE html>
<html lang="en-US">
<head>
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Banners</title>
<link rel="stylesheet" href="../../style/style.css" />
<link rel="icon" type="image/x-icon" href="../../res/site/icons/favicon.ico">
<link
rel="icon"
type="image/x-icon"
href="../../res/site/icons/favicon.ico"
/>
<script src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script>
<script id="MathJax-script" async="" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
</head>
<script
id="MathJax-script"
async=""
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"
></script>
</head>
<body>
<body>
<header class="page-header" role="banner">
<h1 class="project-name">Banners</h1>
<h2 class="project-tagline">Banners I've collected from surfing the web. <br> (Gotta catch 'em all!)</h2>
<h2 class="project-tagline">
Banners I've collected from surfing the web. <br />
(Gotta catch 'em all!)
</h2>
<a href="../../" class="btn">Home</a>
<a href="../webrings/" class="btn">Webrings<sup></sup></a>
@ -23,70 +33,191 @@
<main id="content" class="main-content" role="main">
<h3><a href="#banner">What is a Banner?</a></h3>
<section id="banner">An image or GIF that links to a site or represents a idea or belief ... anything!</section>
<section id="banner">
An image or GIF that links to a site or represents a idea or belief ...
anything!
</section>
<hr>
<hr />
<section id="banners">
<h3>Banners:</h3>
<div class="grid">
<a class="grid-item zoom" href="https://brave.com"><img src="../../res/site/banners/brave.png"></a>
<a class="grid-item zoom" href="https://getfirefox.com"><img src="../../res/site/banners/firefox_2.gif"></a>
<a class="grid-item zoom" href="https://jlehr.neocities.org"><img src="../../res/site/banners/jlehr.gif"></a>
<a class="grid-item zoom" href="https://neovim.io/"><img src="../../res/site/banners/vim.gif"></a>
<a class="grid-item zoom" href="https://sadgrl.online/"><img src="../../res/site/banners/nft.gif"></a>
<a class="grid-item zoom" href="https://thepiratebay.org/"><img src="../../res/site/banners/piracy.gif"></a>
<a class="grid-item zoom" href="https://tilde.club"><img src="../../res/site/banners/tildeclub.gif"></a>
<a class="grid-item zoom" href="https://ubuntu.com/"><img src="../../res/site/banners/ubuntu.gif"></a>
<a class="grid-item zoom" href="https://www.7-zip.org/"><img src="../../res/site/banners/7zip.gif"></a>
<a class="grid-item zoom" href="https://www.mozilla.org/en-CA/firefox/products/"><img src="../../res/site/banners/firefox.gif"></a>
<a class="grid-item zoom" href="https://yesterweb.org/no-to-web3/"><img src="../../res/site/banners/noweb3_1.gif"></a>
<a class="grid-item zoom" href="https://yesterweb.org/no-to-web3/"><img src="../../res/site/banners/noweb3_2.gif"></a>
<a class="grid-item zoom" href="https://yesterweb.org/no-to-web3/"><img src="../../res/site/banners/noweb3_3.gif"></a>
<img class="grid-item zoom" src="../../res/site/banners/1080p.gif">
<img class="grid-item zoom" src="../../res/site/banners/2000.gif">
<img class="grid-item zoom" src="../../res/site/banners/800x600.gif">
<img class="grid-item zoom" src="../../res/site/banners/amd_powered.gif">
<img class="grid-item zoom" src="../../res/site/banners/aniquake.gif">
<img class="grid-item zoom" src="../../res/site/banners/anybrowser.gif">
<img class="grid-item zoom" src="../../res/site/banners/bvwac.gif">
<img class="grid-item zoom" src="../../res/site/banners/evil.webp">
<img class="grid-item zoom" src="../../res/site/banners/firefox_badge.png">
<img class="grid-item zoom" src="../../res/site/banners/freencool.gif">
<img class="grid-item zoom" src="../../res/site/banners/free_palestine.gif">
<img class="grid-item zoom" src="../../res/site/banners/freespeech.gif">
<img class="grid-item zoom" src="../../res/site/banners/Get_IE_Button.gif">
<img class="grid-item zoom" src="../../res/site/banners/gnu-linux.gif">
<img class="grid-item zoom" src="../../res/site/banners/google.gif">
<img class="grid-item zoom" src="../../res/site/banners/graphicdesign.gif">
<img class="grid-item zoom" src="../../res/site/banners/handcode-frk.jpg">
<img class="grid-item zoom" src="../../res/site/banners/handcode.jpg">
<img class="grid-item zoom" src="../../res/site/banners/hi_color.gif">
<img class="grid-item zoom" src="../../res/site/banners/IDreamInHtml.gif">
<img class="grid-item zoom" src="../../res/site/banners/jail.gif">
<img class="grid-item zoom" src="../../res/site/banners/learn_html.gif">
<img class="grid-item zoom" src="../../res/site/banners/LocalNetwork.gif">
<img class="grid-item zoom" src="../../res/site/banners/madewithcss.png">
<img class="grid-item zoom" src="../../res/site/banners/mozilla.gif">
<img class="grid-item zoom" src="../../res/site/banners/neocities.gif">
<img class="grid-item zoom" src="../../res/site/banners/neocities-pink.gif">
<img class="grid-item zoom" src="../../res/site/banners/netscape.gif">
<img class="grid-item zoom" src="../../res/site/banners/nocookie.gif">
<img class="grid-item zoom" src="../../res/site/banners/noframes.gif">
<img class="grid-item zoom" src="../../res/site/banners/pacman.gif">
<img class="grid-item zoom" src="../../res/site/banners/pepsi.gif">
<img class="grid-item zoom" src="../../res/site/banners/right-to-repair.jpg">
<img class="grid-item zoom" src="../../res/site/banners/steam.gif">
<img class="grid-item zoom" src="../../res/site/banners/stop_ie.gif">
<img class="grid-item zoom" src="../../res/site/banners/thevoid.gif">
<img class="grid-item zoom" src="../../res/site/banners/trustme.gif">
<img class="grid-item zoom" src="../../res/site/banners/underconstruction.png">
<img class="grid-item zoom" src="../../res/site/banners/w3schools.gif">
<img class="grid-item zoom" src="../../res/site/banners/wiby.gif">
<img class="grid-item zoom" src="../../res/site/banners/win95.gif">
<img class="grid-item zoom" src="../../res/site/banners/win98.gif">
<img class="grid-item zoom" src="../../res/site/banners/winxp.gif">
<img class="grid-item zoom" src="../../res/site/banners/www.gif">
<a class="grid-item zoom" href="https://brave.com"
><img src="../../res/site/banners/brave.png"
/></a>
<a class="grid-item zoom" href="https://getfirefox.com"
><img src="../../res/site/banners/firefox_2.gif"
/></a>
<a class="grid-item zoom" href="https://jlehr.neocities.org"
><img src="../../res/site/banners/jlehr.gif"
/></a>
<a class="grid-item zoom" href="https://neovim.io/"
><img src="../../res/site/banners/vim.gif"
/></a>
<a class="grid-item zoom" href="https://sadgrl.online/"
><img src="../../res/site/banners/nft.gif"
/></a>
<a class="grid-item zoom" href="https://thepiratebay.org/"
><img src="../../res/site/banners/piracy.gif"
/></a>
<a class="grid-item zoom" href="https://tilde.club"
><img src="../../res/site/banners/tildeclub.gif"
/></a>
<a class="grid-item zoom" href="https://ubuntu.com/"
><img src="../../res/site/banners/ubuntu.gif"
/></a>
<a class="grid-item zoom" href="https://www.7-zip.org/"
><img src="../../res/site/banners/7zip.gif"
/></a>
<a
class="grid-item zoom"
href="https://www.mozilla.org/en-CA/firefox/products/"
><img src="../../res/site/banners/firefox.gif"
/></a>
<a class="grid-item zoom" href="https://yesterweb.org/no-to-web3/"
><img src="../../res/site/banners/noweb3_1.gif"
/></a>
<a class="grid-item zoom" href="https://yesterweb.org/no-to-web3/"
><img src="../../res/site/banners/noweb3_2.gif"
/></a>
<a class="grid-item zoom" href="https://yesterweb.org/no-to-web3/"
><img src="../../res/site/banners/noweb3_3.gif"
/></a>
<img class="grid-item zoom" src="../../res/site/banners/1080p.gif" />
<img class="grid-item zoom" src="../../res/site/banners/2000.gif" />
<img
class="grid-item zoom"
src="../../res/site/banners/800x600.gif"
/>
<img
class="grid-item zoom"
src="../../res/site/banners/amd_powered.gif"
/>
<img
class="grid-item zoom"
src="../../res/site/banners/aniquake.gif"
/>
<img
class="grid-item zoom"
src="../../res/site/banners/anybrowser.gif"
/>
<img class="grid-item zoom" src="../../res/site/banners/bvwac.gif" />
<img class="grid-item zoom" src="../../res/site/banners/evil.webp" />
<img
class="grid-item zoom"
src="../../res/site/banners/firefox_badge.png"
/>
<img
class="grid-item zoom"
src="../../res/site/banners/freencool.gif"
/>
<img
class="grid-item zoom"
src="../../res/site/banners/free_palestine.gif"
/>
<img
class="grid-item zoom"
src="../../res/site/banners/freespeech.gif"
/>
<img
class="grid-item zoom"
src="../../res/site/banners/Get_IE_Button.gif"
/>
<img
class="grid-item zoom"
src="../../res/site/banners/gnu-linux.gif"
/>
<img class="grid-item zoom" src="../../res/site/banners/google.gif" />
<img
class="grid-item zoom"
src="../../res/site/banners/graphicdesign.gif"
/>
<img
class="grid-item zoom"
src="../../res/site/banners/handcode-frk.jpg"
/>
<img
class="grid-item zoom"
src="../../res/site/banners/handcode.jpg"
/>
<img
class="grid-item zoom"
src="../../res/site/banners/hi_color.gif"
/>
<img
class="grid-item zoom"
src="../../res/site/banners/IDreamInHtml.gif"
/>
<img class="grid-item zoom" src="../../res/site/banners/jail.gif" />
<img
class="grid-item zoom"
src="../../res/site/banners/learn_html.gif"
/>
<img
class="grid-item zoom"
src="../../res/site/banners/LocalNetwork.gif"
/>
<img
class="grid-item zoom"
src="../../res/site/banners/madewithcss.png"
/>
<img
class="grid-item zoom"
src="../../res/site/banners/mozilla.gif"
/>
<img
class="grid-item zoom"
src="../../res/site/banners/neocities.gif"
/>
<img
class="grid-item zoom"
src="../../res/site/banners/neocities-pink.gif"
/>
<img
class="grid-item zoom"
src="../../res/site/banners/netscape.gif"
/>
<img
class="grid-item zoom"
src="../../res/site/banners/nocookie.gif"
/>
<img
class="grid-item zoom"
src="../../res/site/banners/noframes.gif"
/>
<img class="grid-item zoom" src="../../res/site/banners/pacman.gif" />
<img class="grid-item zoom" src="../../res/site/banners/pepsi.gif" />
<img
class="grid-item zoom"
src="../../res/site/banners/right-to-repair.jpg"
/>
<img class="grid-item zoom" src="../../res/site/banners/steam.gif" />
<img
class="grid-item zoom"
src="../../res/site/banners/stop_ie.gif"
/>
<img
class="grid-item zoom"
src="../../res/site/banners/thevoid.gif"
/>
<img
class="grid-item zoom"
src="../../res/site/banners/trustme.gif"
/>
<img
class="grid-item zoom"
src="../../res/site/banners/underconstruction.png"
/>
<img
class="grid-item zoom"
src="../../res/site/banners/w3schools.gif"
/>
<img class="grid-item zoom" src="../../res/site/banners/wiby.gif" />
<img class="grid-item zoom" src="../../res/site/banners/win95.gif" />
<img class="grid-item zoom" src="../../res/site/banners/win98.gif" />
<img class="grid-item zoom" src="../../res/site/banners/winxp.gif" />
<img class="grid-item zoom" src="../../res/site/banners/www.gif" />
<!-- <img class="grid-item zoom" src="../../res/site/banners/"> -->
<!-- <a class="grid-item zoom" href=""><img
@ -94,48 +225,60 @@
</div>
</section>
<br>
<br />
<section id="custom">
<h3>My banner:</h3>
You can use these banners to link back to my site:
<br>
<br />
<div class="center">
<a href="https://arrayinamatrix.xyz"><img src="../../res/site/banners/custom/white_88x31.png"></a>
<a href="https://arrayinamatrix.xyz"><img src="../../res/site/banners/custom/white_176x62.png"></a>
<a href="https://arrayinamatrix.xyz"><img src="../../res/site/banners/custom/white_264x93.png"></a>
<a href="https://arrayinamatrix.xyz"
><img src="../../res/site/banners/custom/white_88x31.png"
/></a>
<a href="https://arrayinamatrix.xyz"
><img src="../../res/site/banners/custom/white_176x62.png"
/></a>
<a href="https://arrayinamatrix.xyz"
><img src="../../res/site/banners/custom/white_264x93.png"
/></a>
</div>
<pre
class="highlight"><code>&lt;a href=&quot;https://arrayinamatrix.xyz&quot;&gt;&lt;img src=&quot;https://arrayinamatrix.xyz/res/site/banners/custom/white_88x31.png&quot;&gt;&lt;/a&gt;
class="highlight"
><code>&lt;a href=&quot;https://arrayinamatrix.xyz&quot;&gt;&lt;img src=&quot;https://arrayinamatrix.xyz/res/site/banners/custom/white_88x31.png&quot;&gt;&lt;/a&gt;
&lt;a href=&quot;https://arrayinamatrix.xyz&quot;&gt;&lt;img src=&quot;https://arrayinamatrix.xyz/res/site/banners/custom/white_176x62.png&quot;&gt;&lt;/a&gt;
&lt;a href=&quot;https://arrayinamatrix.xyz&quot;&gt;&lt;img src=&quot;https://arrayinamatrix.xyz/res/site/banners/custom/white_264x93.png&quot;&gt;&lt;/a&gt;</code></pre>
<br>
<br />
<div class="center">
<a href="https://arrayinamatrix.xyz"><img src="../../res/site/banners/custom/black_88x31.gif"></a>
<a href="https://arrayinamatrix.xyz"><img src="../../res/site/banners/custom/black_176x62.gif"></a>
<a href="https://arrayinamatrix.xyz"><img src="../../res/site/banners/custom/black_264x93.gif"></a>
<a href="https://arrayinamatrix.xyz"
><img src="../../res/site/banners/custom/black_88x31.gif"
/></a>
<a href="https://arrayinamatrix.xyz"
><img src="../../res/site/banners/custom/black_176x62.gif"
/></a>
<a href="https://arrayinamatrix.xyz"
><img src="../../res/site/banners/custom/black_264x93.gif"
/></a>
</div>
<pre
class="highlight"><code>&lt;a href=&quot;https://arrayinamatrix.xyz&quot;&gt;&lt;img src=&quot;https://arrayinamatrix.xyz/res/site/banners/custom/black_88x31.gif&quot;&gt;&lt;/a&gt;
class="highlight"
><code>&lt;a href=&quot;https://arrayinamatrix.xyz&quot;&gt;&lt;img src=&quot;https://arrayinamatrix.xyz/res/site/banners/custom/black_88x31.gif&quot;&gt;&lt;/a&gt;
&lt;a href=&quot;https://arrayinamatrix.xyz&quot;&gt;&lt;img src=&quot;https://arrayinamatrix.xyz/res/site/banners/custom/black_176x62.gif&quot;&gt;&lt;/a&gt;
&lt;a href=&quot;https://arrayinamatrix.xyz&quot;&gt;&lt;img src=&quot;https://arrayinamatrix.xyz/res/site/banners/custom/black_264x93.gif&quot;&gt;&lt;/a&gt;</code></pre>
<br>
<br />
Using <a href="https://www.mathjax.org/#gettingstarted">MathJax</a>:
<a href="https://arrayinamatrix.xyz/">
<div>
\begin{bmatrix}
\\
& Array & in & a & Matrix & \\
\\
\end{bmatrix}
\begin{bmatrix} \\ & Array & in & a & Matrix & \\ \\ \end{bmatrix}
</div>
</a>
<br>
<pre class="highlight"><code>&lt;script src=&quot;https://polyfill.io/v3/polyfill.min.js?features=es6&quot;&gt;&lt;/script&gt;
<br />
<pre
class="highlight"
><code>&lt;script src=&quot;https://polyfill.io/v3/polyfill.min.js?features=es6&quot;&gt;&lt;/script&gt;
&lt;script id=&quot;MathJax-script&quot; async=&quot;&quot; src=&quot;https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js&quot;&gt;&lt;/script&gt;
&lt;a href=&quot;https://arrayinamatrix.xyz/&quot;&gt;
&lt;div&gt;
@ -152,6 +295,5 @@
You have reached the end of the page. (ノ◕ヮ◕)ノ*:・゚✧
</footer>
</main>
</body>
</body>
</html>

View file

@ -1,13 +1,12 @@
function saveCanvas() {
saveCanvasButton.download = "image.png";
saveCanvasButton.href = canvas.toDataURL("image/png").replace("image/png", "image/octet-stream");
saveCanvasButton.href = canvas
.toDataURL("image/png")
.replace("image/png", "image/octet-stream");
}
function goFullScreen() {
if (canvas.requestFullScreen)
canvas.requestFullScreen();
else if (canvas.webkitRequestFullScreen)
canvas.webkitRequestFullScreen();
else if (canvas.mozRequestFullScreen)
canvas.mozRequestFullScreen();
if (canvas.requestFullScreen) canvas.requestFullScreen();
else if (canvas.webkitRequestFullScreen) canvas.webkitRequestFullScreen();
else if (canvas.mozRequestFullScreen) canvas.mozRequestFullScreen();
}

View file

@ -27,7 +27,7 @@
*/
var xaos = xaos || {};
xaos.zoom = (function() {
xaos.zoom = (function () {
"use strict";
const USE_XAOS = true; // Whether to use zooming or recalculate every frame
@ -36,7 +36,7 @@ xaos.zoom = (function() {
const RANGES = 2; // Number of ranges to use for sizing approximation data
const RANGE = 4; // Maximum distance to use for approximation
const MASK = 0x7; // Mask value for maximum potential source lines
const DSIZE = (RANGES + 1); // Shift value for target lines
const DSIZE = RANGES + 1; // Shift value for target lines
const FPMUL = 64; // Multiplication factor for fixed-point representation
const FPRANGE = FPMUL * RANGE; // Fixed point range of approximation
const MAX_PRICE = Number.MAX_VALUE; // Maximum price of uninitialized approximation
@ -102,7 +102,7 @@ xaos.zoom = (function() {
}
/** Swap new and old buffers */
CanvasImage.prototype.swapBuffers = function() {
CanvasImage.prototype.swapBuffers = function () {
var tmp = this.oldBuffer;
this.oldBuffer = this.newBuffer;
this.newBuffer = tmp;
@ -112,7 +112,7 @@ xaos.zoom = (function() {
};
/** Draw the current image */
CanvasImage.prototype.paint = function() {
CanvasImage.prototype.paint = function () {
this.context.putImageData(this.newImageData, 0, 0);
};
@ -124,7 +124,8 @@ xaos.zoom = (function() {
* @param initial - the initial value for each entry.
*/
function makeArray(size, initial) {
var i, data = [];
var i,
data = [];
for (i = 0; i < size; i++) {
if (typeof initial === "object") {
// prototype object
@ -169,14 +170,14 @@ xaos.zoom = (function() {
}
/** Swaps the old and new best prices in the this container. */
ZoomContext.prototype.swapBest = function() {
ZoomContext.prototype.swapBest = function () {
var tmpBest = this.oldBest;
this.oldBest = this.newBest;
this.newBest = tmpBest;
};
/** Convert fractal viewport from radius and center to x and y start to end ranges */
ZoomContext.prototype.convertArea = function() {
ZoomContext.prototype.convertArea = function () {
var radius = this.fractal.region.radius;
var center = this.fractal.region.center;
var aspect = this.image.width / this.image.height;
@ -184,12 +185,12 @@ xaos.zoom = (function() {
return {
begin: {
x: center.x - size / 2,
y: (center.y - size / 2) / aspect
y: (center.y - size / 2) / aspect,
},
end: {
x: center.x + size / 2,
y: (center.y + size / 2) / aspect
}
y: (center.y + size / 2) / aspect,
},
};
};
@ -201,14 +202,14 @@ xaos.zoom = (function() {
* @param isRow - whether this is a row or column
* @returns {number}
*/
ZoomContext.prototype.initialize = function(lines, begin, end, isRow) {
ZoomContext.prototype.initialize = function (lines, begin, end, isRow) {
var i;
var p;
var step = (end - begin) / lines.length;
var line = null;
for (i = 0, p = begin; i < lines.length; i++, p += step) {
line = lines[i]
line = lines[i];
line.recalculate = true;
line.dirty = true;
line.isRow = isRow;
@ -220,7 +221,7 @@ xaos.zoom = (function() {
line.symRef = -1;
}
return step;
}
};
/** Calculate price of approximating one line from another
*
@ -237,7 +238,7 @@ xaos.zoom = (function() {
* @param begin - beginning of floating point range
* @param end - end of floating point range
*/
ZoomContext.prototype.calcFixedpoint = function(lines, begin, end) {
ZoomContext.prototype.calcFixedpoint = function (lines, begin, end) {
var tofix = (lines.length * FPMUL) / (end - begin);
var i;
this.sourcePos[lines.length] = Number.MAX_VALUE;
@ -247,7 +248,7 @@ xaos.zoom = (function() {
this.sourcePos[i] = this.sourcePos[i + 1];
}
}
}
};
/** Choose the best approximation for lines based on previous frame
*
@ -257,7 +258,7 @@ xaos.zoom = (function() {
* @param newPosition - array of newPosition coordinates on the complex plane
* @returns {number}
*/
ZoomContext.prototype.approximate = function(lines, begin, end) {
ZoomContext.prototype.approximate = function (lines, begin, end) {
var previous = null; // pointer to previous approximation
var best = null; // pointer to best approximation
var line = null; // pointer to current line
@ -291,7 +292,7 @@ xaos.zoom = (function() {
maxPos = idealPos + FPRANGE;
// Find the previous approximation
if ((prevBegin !== prevEnd) && (source > prevBegin)) {
if (prevBegin !== prevEnd && source > prevBegin) {
// Previous line had approximations; use them
if (source < prevEnd) {
previous = this.oldBest[source - 1];
@ -369,7 +370,7 @@ xaos.zoom = (function() {
previous = this.calcPrices[dest - 1];
}
price = previous.price + NEW_PRICE;
if ((price < best.price) && (source > currBegin)) {
if (price < best.price && source > currBegin) {
best = this.movePrices[((source - 1) << DSIZE) + (dest & MASK)];
best.price = price;
best.index = -1;
@ -418,20 +419,19 @@ xaos.zoom = (function() {
while (sourcePos[source] < maxPos) {
this.newBest[source++] = best;
}
}
prevBegin = currBegin;
currBegin = prevEnd;
prevEnd = source;
}
if ((begin > lines[0].oldPosition) && (end < lines[size - 1].oldPosition)) {
if (begin > lines[0].oldPosition && end < lines[size - 1].oldPosition) {
flag = 1;
}
if ((sourcePos[0] > 0) && (sourcePos[size - 1] < (size * FPMUL))) {
if (sourcePos[0] > 0 && sourcePos[size - 1] < size * FPMUL) {
flag = 2;
}
for (dest = size - 1; dest >= 0; dest--) {
line = lines[dest]
line = lines[dest];
line.symTo = -1;
line.symRef = -1;
if (best.index < 0) {
@ -448,7 +448,7 @@ xaos.zoom = (function() {
}
newPositions(lines, begin, end, step, flag);
return step;
}
};
/** Choose new positions for lines based on calculated prices
*
@ -470,7 +470,7 @@ xaos.zoom = (function() {
if (begin1 > end1) {
begin1 = end1;
}
while (s < (size - 1)) {
while (s < size - 1) {
e = s + 1;
if (lines[e].recalculate) {
while (e < size) {
@ -489,10 +489,10 @@ xaos.zoom = (function() {
} else {
begin = lines[s].newPosition;
}
if ((e === size) && (begin > end)) {
if (e === size && begin > end) {
end = begin;
}
if ((e - s) === 2) {
if (e - s === 2) {
delta = (end - begin) * 0.5;
} else {
delta = (end - begin) / (e - s);
@ -502,14 +502,15 @@ xaos.zoom = (function() {
for (s++; s < e; s++) {
begin += delta;
lines[s].newPosition = begin;
lines[s].priority = 1 / (1 + (Math.abs((lines[s].oldPosition - begin)) * step));
lines[s].priority =
1 / (1 + Math.abs(lines[s].oldPosition - begin) * step);
}
break;
case 2:
for (s++; s < e; s++) {
begin += delta;
lines[s].newPosition = begin;
lines[s].priority = Math.abs((lines[s].oldPosition - begin)) * step;
lines[s].priority = Math.abs(lines[s].oldPosition - begin) * step;
}
break;
default:
@ -545,7 +546,7 @@ xaos.zoom = (function() {
var istart = 0;
var line = null;
var otherLine = null;
var symj = (2 * symi) - size;
var symj = 2 * symi - size;
symPosition *= 2;
if (symj < 0) {
symj = 0;
@ -557,17 +558,20 @@ xaos.zoom = (function() {
continue;
}
newPosition = line.newPosition;
line.symTo = (2 * symi) - i;
line.symTo = 2 * symi - i;
if (line.symTo > max) {
line.symTo = max;
}
j = ((line.symTo - istart) > RANGE) ? (-RANGE) : (-line.symTo + istart);
j = line.symTo - istart > RANGE ? -RANGE : -line.symTo + istart;
if (line.recalculate) {
while ((j < RANGE) && ((line.symTo + j) < (size - 1))) {
while (j < RANGE && line.symTo + j < size - 1) {
tmp = symPosition - lines[line.symTo + j].newPosition;
abs = Math.abs(tmp - newPosition);
if (abs < distance) {
if (((i === 0) || (tmp > lines[i - 1].newPosition)) && (tmp < lines[i + 1].newPosition)) {
if (
(i === 0 || tmp > lines[i - 1].newPosition) &&
tmp < lines[i + 1].newPosition
) {
distance = abs;
min = j;
}
@ -577,12 +581,15 @@ xaos.zoom = (function() {
j++;
}
} else {
while ((j < RANGE) && ((line.symTo + j) < (size - 1))) {
while (j < RANGE && line.symTo + j < size - 1) {
if (line.recalculate) {
tmp = symPosition - lines[line.symTo + j].newPosition;
abs = Math.abs(tmp - newPosition);
if (abs < distance) {
if (((i === 0) || (tmp > lines[i - 1].newPosition)) && (tmp < lines[i + 1].newPosition)) {
if (
(i === 0 || tmp > lines[i - 1].newPosition) &&
tmp < lines[i + 1].newPosition
) {
distance = abs;
min = j;
}
@ -595,13 +602,18 @@ xaos.zoom = (function() {
}
line.symTo += min;
otherLine = lines[line.symTo];
if ((min === RANGE) || (line.symTo <= symi) || (otherLine.symTo !== -1) || (otherLine.symRef !== -1)) {
if (
min === RANGE ||
line.symTo <= symi ||
otherLine.symTo !== -1 ||
otherLine.symRef !== -1
) {
line.symTo = -1;
continue;
}
if (!line.recalculate) {
line.symTo = -1;
if ((otherLine.symTo !== -1) || !otherLine.recalculate) {
if (otherLine.symTo !== -1 || !otherLine.recalculate) {
continue;
}
otherLine.symIndex = line.symIndex;
@ -653,7 +665,7 @@ xaos.zoom = (function() {
}
/** Apply previously calculated symmetry to image */
ZoomContext.prototype.doSymmetry = function() {
ZoomContext.prototype.doSymmetry = function () {
var from_offset = 0;
var to_offset = 0;
var i;
@ -661,7 +673,7 @@ xaos.zoom = (function() {
var buffer = this.image.newBuffer;
var bufferWidth = this.image.width;
for (i = 0; i < this.rows.length; i++) {
if ((this.rows[i].symTo >= 0) && (!this.rows[this.rows[i].symTo].dirty)) {
if (this.rows[i].symTo >= 0 && !this.rows[this.rows[i].symTo].dirty) {
from_offset = this.rows[i].symTo * bufferWidth;
arrayCopy(buffer, from_offset, buffer, to_offset, bufferWidth);
this.rows[i].dirty = false;
@ -669,7 +681,10 @@ xaos.zoom = (function() {
to_offset += bufferWidth;
}
for (i = 0; i < this.columns.length; i++) {
if ((this.columns[i].symTo >= 0) && (!this.columns[this.columns[i].symTo].dirty)) {
if (
this.columns[i].symTo >= 0 &&
!this.columns[this.columns[i].symTo].dirty
) {
to_offset = i;
from_offset = this.columns[i].symTo;
for (j = 0; j < this.rows.length; j++) {
@ -680,10 +695,10 @@ xaos.zoom = (function() {
this.columns[i].dirty = false;
}
}
}
};
/** Build an optimized move table based on relocation table */
ZoomContext.prototype.prepareMove = function() {
ZoomContext.prototype.prepareMove = function () {
var move = null;
var i = 0;
var j = 0;
@ -695,7 +710,10 @@ xaos.zoom = (function() {
move.length = 1;
move.from = this.columns[i].symIndex;
for (j = i + 1; j < this.columns.length; j++) {
if (this.columns[j].dirty || ((j - this.columns[j].symIndex) !== (move.to - move.from))) {
if (
this.columns[j].dirty ||
j - this.columns[j].symIndex !== move.to - move.from
) {
break;
}
move.length++;
@ -708,10 +726,10 @@ xaos.zoom = (function() {
}
move = this.moveTable[s];
move.length = 0;
}
};
/** Execute moves defined in move table */
ZoomContext.prototype.doMove = function() {
ZoomContext.prototype.doMove = function () {
var move = null;
var newOffset = 0;
var oldOffset = 0;
@ -737,16 +755,16 @@ xaos.zoom = (function() {
}
newOffset += bufferWidth;
}
}
};
/** Shortcut for prepare and execute move */
ZoomContext.prototype.movePixels = function() {
ZoomContext.prototype.movePixels = function () {
this.prepareMove();
this.doMove();
}
};
/** Prepare fill table based on relocation table */
ZoomContext.prototype.prepareFill = function() {
ZoomContext.prototype.prepareFill = function () {
var fill = null;
var i;
var j = 0;
@ -756,9 +774,18 @@ xaos.zoom = (function() {
for (i = 0; i < this.columns.length; i++) {
if (this.columns[i].dirty) {
j = i - 1;
for (k = i + 1; (k < this.columns.length) && this.columns[k].dirty; k++) {}
while ((i < this.columns.length) && this.columns[i].dirty) {
if ((k < this.columns.length) && ((j < i) || ((this.columns[i].newPosition - this.columns[j].newPosition) > (this.columns[k].newPosition - this.columns[i].newPosition)))) {
for (
k = i + 1;
k < this.columns.length && this.columns[k].dirty;
k++
) {}
while (i < this.columns.length && this.columns[i].dirty) {
if (
k < this.columns.length &&
(j < i ||
this.columns[i].newPosition - this.columns[j].newPosition >
this.columns[k].newPosition - this.columns[i].newPosition)
) {
j = k;
} else if (j < 0) {
break;
@ -780,10 +807,10 @@ xaos.zoom = (function() {
}
fill = this.fillTable[s];
fill.length = 0;
}
};
/** Apply fill table */
ZoomContext.prototype.doFill = function() {
ZoomContext.prototype.doFill = function () {
var fill = null;
var from_offset = 0;
var to_offset = 0;
@ -800,9 +827,14 @@ xaos.zoom = (function() {
for (i = 0; i < this.rows.length; i++) {
if (this.rows[i].dirty) {
j = i - 1;
for (k = i + 1; (k < this.rows.length) && this.rows[k].dirty; k++) {}
while ((i < this.rows.length) && this.rows[i].dirty) {
if ((k < this.rows.length) && ((j < i) || ((this.rows[i].newPosition - this.rows[j].newPosition) > (this.rows[k].newPosition - this.rows[i].newPosition)))) {
for (k = i + 1; k < this.rows.length && this.rows[k].dirty; k++) {}
while (i < this.rows.length && this.rows[i].dirty) {
if (
k < this.rows.length &&
(j < i ||
this.rows[i].newPosition - this.rows[j].newPosition >
this.rows[k].newPosition - this.rows[i].newPosition)
) {
j = k;
} else if (j < 0) {
break;
@ -841,19 +873,19 @@ xaos.zoom = (function() {
this.rows[i].dirty = true;
}
}
}
};
/** Shortcut to prepare and apply fill table */
ZoomContext.prototype.fill = function() {
ZoomContext.prototype.fill = function () {
this.prepareFill();
this.doFill();
}
};
/** Render line using solid guessing
*
* @param row
*/
ZoomContext.prototype.renderRow = function(row) {
ZoomContext.prototype.renderRow = function (row) {
var buffer = this.image.newBuffer;
var bufferWidth = this.image.width;
var newPosition = row.newPosition;
@ -880,27 +912,36 @@ xaos.zoom = (function() {
if (rend < 0) {
rend = 0;
}
for (i = r - 1; (i >= rend) && this.rows[i].dirty; i--) {}
for (i = r - 1; i >= rend && this.rows[i].dirty; i--) {}
distu = r - i;
rend = r + GUESS_RANGE;
if (rend >= this.rows.length) {
rend = this.rows.length - 1;
}
for (j = r + 1; (j < rend) && this.rows[j].dirty; j++) {}
for (j = r + 1; j < rend && this.rows[j].dirty; j++) {}
distd = j - r;
if (!USE_SOLIDGUESS || (i < 0) || (j >= this.rows.length) || this.rows[i].dirty || this.rows[j].dirty) {
if (
!USE_SOLIDGUESS ||
i < 0 ||
j >= this.rows.length ||
this.rows[i].dirty ||
this.rows[j].dirty
) {
for (k = 0, length = this.columns.length; k < length; k++) {
current = this.columns[k];
if (!this.columns[k].dirty) {
buffer[offset] = this.fractal.formula(current.newPosition, newPosition);
buffer[offset] = this.fractal.formula(
current.newPosition,
newPosition
);
}
offset++;
}
} else {
distr = 0;
distl = Number.MAX_VALUE / 2;
offsetu = offset - (distu * bufferWidth);
offsetd = offset + (distd * bufferWidth);
offsetu = offset - distu * bufferWidth;
offsetd = offset + distd * bufferWidth;
for (k = 0, length = this.columns.length; k < length; k++) {
current = this.columns[k];
if (!this.columns[k].dirty) {
@ -909,27 +950,40 @@ xaos.zoom = (function() {
if (rend >= this.columns.length) {
rend = this.columns.length - 1;
}
for (j = k + 1; (j < rend) && this.columns[j].dirty; j++) {
for (j = k + 1; j < rend && this.columns[j].dirty; j++) {
distr = j - k;
}
if (j >= rend) {
distr = Number.MAX_VALUE / 2;
}
}
if ((distr < (Number.MAX_VALUE / 4)) && (distl < (Number.MAX_VALUE / 4))) {
if (distr < Number.MAX_VALUE / 4 && distl < Number.MAX_VALUE / 4) {
offsetl = offset - distl;
offsetul = offsetu - distl;
offsetdl = offsetd - distl;
offsetur = offsetu + distr;
offsetdr = offsetd + distr;
n = buffer[offsetl];
if ((n == buffer[offsetu]) && (n == buffer[offsetd]) && (n == buffer[offsetul]) && (n == buffer[offsetur]) && (n == buffer[offsetdl]) && (n == buffer[offsetdr])) {
if (
n == buffer[offsetu] &&
n == buffer[offsetd] &&
n == buffer[offsetul] &&
n == buffer[offsetur] &&
n == buffer[offsetdl] &&
n == buffer[offsetdr]
) {
buffer[offset] = n;
} else {
buffer[offset] = this.fractal.formula(current.newPosition, newPosition);
buffer[offset] = this.fractal.formula(
current.newPosition,
newPosition
);
}
} else {
buffer[offset] = this.fractal.formula(current.newPosition, newPosition);
buffer[offset] = this.fractal.formula(
current.newPosition,
newPosition
);
}
distl = 0;
}
@ -942,13 +996,13 @@ xaos.zoom = (function() {
}
row.recalculate = false;
row.dirty = false;
}
};
/** Render column using solid guessing
*
* @param column
*/
ZoomContext.prototype.renderColumn = function(column) {
ZoomContext.prototype.renderColumn = function (column) {
var buffer = this.image.newBuffer;
var bufferWidth = this.image.width;
var newPosition = column.newPosition;
@ -977,19 +1031,28 @@ xaos.zoom = (function() {
if (rend < 0) {
rend = 0;
}
for (i = r - 1; (i >= rend) && this.columns[i].dirty; i--) {}
for (i = r - 1; i >= rend && this.columns[i].dirty; i--) {}
distl = r - i;
rend = r + GUESS_RANGE;
if (rend >= this.columns.length) {
rend = this.columns.length - 1;
}
for (j = r + 1; (j < rend) && this.columns[j].dirty; j++) {}
for (j = r + 1; j < rend && this.columns[j].dirty; j++) {}
distr = j - r;
if (!USE_SOLIDGUESS || (i < 0) || (j >= this.columns.length) || this.columns[i].dirty || this.columns[j].dirty) {
if (
!USE_SOLIDGUESS ||
i < 0 ||
j >= this.columns.length ||
this.columns[i].dirty ||
this.columns[j].dirty
) {
for (k = 0, length = this.rows.length; k < length; k++) {
current = this.rows[k];
if (!this.rows[k].dirty) {
buffer[offset] = this.fractal.formula(newPosition, current.newPosition);
buffer[offset] = this.fractal.formula(
newPosition,
current.newPosition
);
}
offset += bufferWidth;
}
@ -1006,14 +1069,14 @@ xaos.zoom = (function() {
if (rend >= this.rows.length) {
rend = this.rows.length - 1;
}
for (j = k + 1; (j < rend) && this.rows[j].dirty; j++) {
for (j = k + 1; j < rend && this.rows[j].dirty; j++) {
distd = j - k;
}
if (j >= rend) {
distd = Number.MAX_VALUE / 2;
}
}
if ((distd < (Number.MAX_VALUE / 4)) && (distu < (Number.MAX_VALUE / 4))) {
if (distd < Number.MAX_VALUE / 4 && distu < Number.MAX_VALUE / 4) {
sumu = distu * bufferWidth;
sumd = distd * bufferWidth;
offsetu = offset - sumu;
@ -1022,13 +1085,26 @@ xaos.zoom = (function() {
offsetld = offsetl + sumd;
offsetrd = offsetr + sumd;
n = buffer[offsetu];
if ((n == buffer[offsetl]) && (n == buffer[offsetr]) && (n == buffer[offsetlu]) && (n == buffer[offsetru]) && (n == buffer[offsetld]) && (n == buffer[offsetrd])) {
if (
n == buffer[offsetl] &&
n == buffer[offsetr] &&
n == buffer[offsetlu] &&
n == buffer[offsetru] &&
n == buffer[offsetld] &&
n == buffer[offsetrd]
) {
buffer[offset] = n;
} else {
buffer[offset] = this.fractal.formula(newPosition, current.newPosition);
buffer[offset] = this.fractal.formula(
newPosition,
current.newPosition
);
}
} else {
buffer[offset] = this.fractal.formula(newPosition, current.newPosition);
buffer[offset] = this.fractal.formula(
newPosition,
current.newPosition
);
}
distu = 0;
}
@ -1041,14 +1117,14 @@ xaos.zoom = (function() {
}
column.recalculate = false;
column.dirty = false;
}
};
/** Calculate whether we're taking too long to render the fractal to meet the idealPos FPS */
ZoomContext.prototype.tooSlow = function() {
ZoomContext.prototype.tooSlow = function () {
var newTime = new Date().getTime(),
minFPS = this.zooming ? this.minFPS : 10;
return 1000 / (newTime - this.startTime + this.fudgeFactor) < minFPS;
}
};
/** Prioritize calculation of lines between begin and end
*
@ -1060,7 +1136,9 @@ xaos.zoom = (function() {
var middle;
while (begin < end) {
middle = begin + ((end - begin) >> 1);
lines[middle].priority = (lines[end].newPosition - lines[middle].newPosition) * lines[middle].priority;
lines[middle].priority =
(lines[end].newPosition - lines[middle].newPosition) *
lines[middle].priority;
if (lines[middle].symRef !== -1) {
lines[middle].priority /= 2.0;
}
@ -1073,12 +1151,12 @@ xaos.zoom = (function() {
*
* @param lines - lines to enqueue for calculation
*/
ZoomContext.prototype.enqueueCalculations = function(lines) {
ZoomContext.prototype.enqueueCalculations = function (lines) {
var i;
var j = 0;
for (i = 0; i < lines.length; i++) {
if (lines[i].recalculate) {
for (j = i; (j < lines.length) && lines[j].recalculate; j++) {
for (j = i; j < lines.length && lines[j].recalculate; j++) {
this.queue[this.queueLength++] = lines[j];
}
if (j === lines.length) {
@ -1088,7 +1166,7 @@ xaos.zoom = (function() {
i = j;
}
}
}
};
/** Sort calculation queue according to priority (using quicksort)
*
@ -1115,8 +1193,7 @@ xaos.zoom = (function() {
i++;
j--;
}
}
while (j >= i);
} while (j >= i);
if (l < j) {
sortQueue(queue, l, j);
}
@ -1126,7 +1203,7 @@ xaos.zoom = (function() {
}
/** Process the relocation table */
ZoomContext.prototype.calculate = function() {
ZoomContext.prototype.calculate = function () {
var i, newTime;
this.incomplete = false;
this.queueLength = 0;
@ -1142,7 +1219,7 @@ xaos.zoom = (function() {
} else {
this.renderColumn(this.queue[i]);
}
if (!this.recalculate && this.tooSlow() && (i < this.queueLength)) {
if (!this.recalculate && this.tooSlow() && i < this.queueLength) {
this.incomplete = true;
this.fill();
break;
@ -1152,19 +1229,19 @@ xaos.zoom = (function() {
};
/** Update newPosition array with newly calculated positions */
ZoomContext.prototype.updatePosition = function() {
ZoomContext.prototype.updatePosition = function () {
var k;
var len;
for (k = 0,len = this.columns.length; k < len; k++) {
for (k = 0, len = this.columns.length; k < len; k++) {
this.columns[k].oldPosition = this.columns[k].newPosition;
}
for (k = 0,len = this.rows.length; k < len; k++) {
for (k = 0, len = this.rows.length; k < len; k++) {
this.rows[k].oldPosition = this.rows[k].newPosition;
}
};
/** Calculate FPS achieved and determine if fudge factor needs adjustment for next frame */
ZoomContext.prototype.updateFPS = function() {
ZoomContext.prototype.updateFPS = function () {
var fps = 1000 / (new Date().getTime() - this.startTime);
if (fps < this.minFPS) {
this.fudgeFactor++;
@ -1175,7 +1252,7 @@ xaos.zoom = (function() {
};
/** Overall fractal drawing workflow, calls other functions */
ZoomContext.prototype.drawFractal = function(recalculate) {
ZoomContext.prototype.drawFractal = function (recalculate) {
var area = this.convertArea();
var symx = this.fractal.symmetry && this.fractal.symmetry.x;
var symy = this.fractal.symmetry && this.fractal.symmetry.y;
@ -1189,16 +1266,37 @@ xaos.zoom = (function() {
stepx = this.approximate(this.columns, area.begin.x, area.end.x);
stepy = this.approximate(this.rows, area.begin.y, area.end.y);
}
if (USE_SYMMETRY && typeof symy === "number" && !(area.begin.y > symy || symy > area.end.y)) {
prepareSymmetry(this.rows, Math.floor((symy - area.begin.y) / stepy), symy, stepy);
if (
USE_SYMMETRY &&
typeof symy === "number" &&
!(area.begin.y > symy || symy > area.end.y)
) {
prepareSymmetry(
this.rows,
Math.floor((symy - area.begin.y) / stepy),
symy,
stepy
);
}
if (USE_SYMMETRY && typeof symx === "number" && !(area.begin.x > symx || symx > area.end.x)) {
prepareSymmetry(this.columns, Math.floor((symx - area.begin.x) / stepx), symx, stepx);
if (
USE_SYMMETRY &&
typeof symx === "number" &&
!(area.begin.x > symx || symx > area.end.x)
) {
prepareSymmetry(
this.columns,
Math.floor((symx - area.begin.x) / stepx),
symx,
stepx
);
}
this.image.swapBuffers();
this.movePixels();
this.calculate();
if (USE_SYMMETRY && typeof symx === "number" || typeof symy === "number") {
if (
(USE_SYMMETRY && typeof symx === "number") ||
typeof symy === "number"
) {
this.doSymmetry();
}
this.image.paint();
@ -1207,14 +1305,20 @@ xaos.zoom = (function() {
};
/** Adjust display region to zoom based on mouse buttons */
ZoomContext.prototype.updateRegion = function(mouse) {
ZoomContext.prototype.updateRegion = function (mouse) {
var MAXSTEP = 0.008 * 3;
var MUL = 0.3;
var area = this.convertArea();
var x = area.begin.x + mouse.x * ((area.end.x - area.begin.x) / this.image.width);
var y = area.begin.y + mouse.y * ((area.end.y - area.begin.y) / this.image.height);
var deltax = (mouse.oldx - mouse.x) * ((area.end.x - area.begin.x) / this.image.width);
var deltay = (mouse.oldy - mouse.y) * ((area.end.y - area.begin.y) / this.image.height);
var x =
area.begin.x + mouse.x * ((area.end.x - area.begin.x) / this.image.width);
var y =
area.begin.y +
mouse.y * ((area.end.y - area.begin.y) / this.image.height);
var deltax =
(mouse.oldx - mouse.x) * ((area.end.x - area.begin.x) / this.image.width);
var deltay =
(mouse.oldy - mouse.y) *
((area.end.y - area.begin.y) / this.image.height);
var step;
var mmul;
if (mouse.button[1] || (mouse.button[0] && mouse.button[2])) {
@ -1230,7 +1334,7 @@ xaos.zoom = (function() {
this.zooming = false;
return;
}
mmul = Math.pow((1 - step), MUL);
mmul = Math.pow(1 - step, MUL);
area.begin.x = x + (area.begin.x - x) * mmul;
area.end.x = x + (area.end.x - x) * mmul;
area.begin.y = y + (area.begin.y - y) * mmul;
@ -1238,12 +1342,14 @@ xaos.zoom = (function() {
this.fractal.region.radius.x = area.end.x - area.begin.x;
this.fractal.region.radius.y = area.end.y - area.begin.y;
this.fractal.region.center.x = (area.begin.x + area.end.x) / 2;
this.fractal.region.center.y = ((area.begin.y + area.end.y) / 2) * (this.image.width / this.image.height);
this.fractal.region.center.y =
((area.begin.y + area.end.y) / 2) *
(this.image.width / this.image.height);
this.zooming = true;
};
/** Attaches zoomer to specified canvas */
return function(canvas, fractal) {
return function (canvas, fractal) {
var image = new CanvasImage(canvas);
var zoomer = new ZoomContext(image, fractal);
var mouse = { x: 0, y: 0, button: [false, false, false] };
@ -1256,64 +1362,66 @@ xaos.zoom = (function() {
}
}
canvas.ontouchstart = function(e) {
if(e.touches.length < 3){
canvas.ontouchstart = function (e) {
if (e.touches.length < 3) {
var touch = e.touches[0];
(e.touches.length == 2)?mouse.button[2]=true:mouse.button[2]=false;
e.touches.length == 2
? (mouse.button[2] = true)
: (mouse.button[2] = false);
var mouseEvent = new MouseEvent("mousedown", {
clientX: touch.clientX,
clientY: touch.clientY
clientY: touch.clientY,
});
canvas.dispatchEvent(mouseEvent);
}
};
canvas.ontouchend = function(e) {
canvas.ontouchend = function (e) {
var mouseEvent = new MouseEvent("mouseup", {});
canvas.dispatchEvent(mouseEvent);
};
canvas.ontouchmove = function(e) {
canvas.ontouchmove = function (e) {
var touch = e.touches[0];
var mouseEvent = new MouseEvent("mousemove", {
clientX: touch.clientX,
clientY: touch.clientY
clientY: touch.clientY,
});
canvas.dispatchEvent(mouseEvent);
};
canvas.onmousedown = function(e) {
canvas.onmousedown = function (e) {
mouse.button[e.button] = true;
mouse.x = e.offsetX || (e.clientX - canvas.offsetLeft);
mouse.y = e.offsetY || (e.clientY - canvas.offsetTop);
mouse.oldx = e.offsetX || (e.clientX - canvas.offsetLeft);
mouse.oldy = e.offsetY || (e.clientY - canvas.offsetTop);
mouse.x = e.offsetX || e.clientX - canvas.offsetLeft;
mouse.y = e.offsetY || e.clientY - canvas.offsetTop;
mouse.oldx = e.offsetX || e.clientX - canvas.offsetLeft;
mouse.oldy = e.offsetY || e.clientY - canvas.offsetTop;
doZoom();
};
canvas.onmouseup = function(e) {
canvas.onmouseup = function (e) {
mouse.button[e.button] = false;
};
canvas.onmousemove = function(e) {
mouse.x = e.offsetX || (e.clientX - canvas.offsetLeft);
mouse.y = e.offsetY || (e.clientY - canvas.offsetTop);
canvas.onmousemove = function (e) {
mouse.x = e.offsetX || e.clientX - canvas.offsetLeft;
mouse.y = e.offsetY || e.clientY - canvas.offsetTop;
};
canvas.oncontextmenu = function() {
canvas.oncontextmenu = function () {
return false;
};
canvas.onmouseout = function() {
canvas.onmouseout = function () {
mouse.button = [false, false, false];
};
zoomer.drawFractal(true);
}
}());
};
})();
/** Create the default XaoS color palette */
xaos.defaultPalette = function() {
xaos.defaultPalette = function () {
var MAXENTRIES = 65536;
var segmentsize = 8;
var setsegments = Math.floor((MAXENTRIES + 3) / segmentsize);
@ -1349,7 +1457,7 @@ xaos.defaultPalette = function() {
[152, 97, 184],
[8, 3, 12],
[247, 92, 235],
[31, 32, 16]
[31, 32, 16],
];
var i, y;
var r, g, b;
@ -1360,11 +1468,11 @@ xaos.defaultPalette = function() {
r = segments[i % nsegments][0];
g = segments[i % nsegments][1];
b = segments[i % nsegments][2];
rs = (segments[(i + 1) % setsegments % nsegments][0] - r) / segmentsize;
gs = (segments[(i + 1) % setsegments % nsegments][1] - g) / segmentsize;
bs = (segments[(i + 1) % setsegments % nsegments][2] - b) / segmentsize;
rs = (segments[((i + 1) % setsegments) % nsegments][0] - r) / segmentsize;
gs = (segments[((i + 1) % setsegments) % nsegments][1] - g) / segmentsize;
bs = (segments[((i + 1) % setsegments) % nsegments][2] - b) / segmentsize;
for (y = 0; y < segmentsize; y++) {
palette.push(255<<24 | b << 16 | g << 8 | r);
palette.push((255 << 24) | (b << 16) | (g << 8) | r);
r += rs;
g += gs;
b += bs;
@ -1374,16 +1482,16 @@ xaos.defaultPalette = function() {
};
xaos.mandelbrot = {
symmetry: {x: null, y: 0 },
symmetry: { x: null, y: 0 },
region: {
center: { x: -0.75, y: 0.0 },
radius: { x: 2.5, y : 2.5 },
angle: 0
radius: { x: 2.5, y: 2.5 },
angle: 0,
},
z0: { x: 0, y: 0 },
maxiter: 512,
bailout: 4,
formula: function(cr, ci) {
formula: function (cr, ci) {
var maxiter = this.maxiter,
bailout = this.bailout,
zr = this.z0.x,
@ -1398,13 +1506,13 @@ xaos.mandelbrot = {
return this.palette[(maxiter - i) % this.palette.length];
}
zi = ci + (2 * zr * zi);
zi = ci + 2 * zr * zi;
zr = cr + zr2 - zi2;
}
return this.palette[0];
},
palette: xaos.defaultPalette()
palette: xaos.defaultPalette(),
};
xaos.zoom(document.getElementById("canvas"), xaos.mandelbrot);

View file

@ -1,53 +1,68 @@
<!DOCTYPE html>
<html lang="en-US">
<head>
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Games</title>
<link rel="stylesheet" href="../../style/style.css" />
<link rel="icon" type="image/x-icon" href="../../res/site/icons/favicon.ico">
</head>
<link
rel="icon"
type="image/x-icon"
href="../../res/site/icons/favicon.ico"
/>
</head>
<body>
<body>
<header class="page-header" role="banner">
<h1 class="project-name">Games</h1>
<h2 class="project-tagline">Games I programmed or implemented. <br> (Warning: They suck.)</h2>
<h2 class="project-tagline">
Games I programmed or implemented. <br />
(Warning: They suck.)
</h2>
<a href="../../" class="btn">Home</a>
</header>
<main id="content" class="main-content" role="main">
<section id="rps">
<h3><a href="./rps/">Rock Paper Scissors 🪨📄✂️<sup></sup></a></h3>
<h3>
<a href="./rps/">Rock Paper Scissors 🪨📄✂️<sup></sup></a>
</h3>
<code>
The first game I ever made! I wrote this when I first began learning Javascript, to be specific I wrote the logic
during that time. The game was only playable through the terminal, now its fairly portable and can be integrated
into anything.
The first game I ever made! I wrote this when I first began learning
Javascript, to be specific I wrote the logic during that time. The
game was only playable through the terminal, now its fairly portable
and can be integrated into anything.
</code>
</section>
<br>
<br />
<section id="es">
<h3><a href="./eternal-space/web">Eternal Space<sup></sup></a></h3>
<h3>
<a href="./eternal-space/web">Eternal Space<sup></sup></a>
</h3>
<code>
Currently only playable on a pc, I haven't tried figuring out how to scale down the game lol. I participated in
the Opera GX + GameMaker game jam and created this monstrosity. The game jam was alien themed, however I never got
that far. Before taking part in this game jam I have never programmed an actual game nor have been in a game jam.
I learned how to program in GameMaker Language (basically Javascript) during the event.
Currently only playable on a pc, I haven't tried figuring out how to
scale down the game lol. I participated in the Opera GX + GameMaker
game jam and created this monstrosity. The game jam was alien themed,
however I never got that far. Before taking part in this game jam I
have never programmed an actual game nor have been in a game jam. I
learned how to program in GameMaker Language (basically Javascript)
during the event.
</code>
</section>
<br>
<br />
<section id="fractal">
<h3><a href="./fractal/">Fractal<sup></sup></a></h3>
<h3>
<a href="./fractal/">Fractal<sup></sup></a>
</h3>
<code>
Interactive Javascript real-time fractal renderer using XaoS.js. Works best on a PC.
Interactive Javascript real-time fractal renderer using XaoS.js. Works
best on a PC.
</code>
</section>
@ -62,6 +77,5 @@
You have reached the end of the page. (ノ◕ヮ◕)ノ*:・゚✧
</footer>
</main>
</body>
</body>
</html>

View file

@ -1,16 +1,19 @@
<!DOCTYPE html>
<html lang="en-US">
<head>
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Rock Paper Scissors</title>
<link rel="stylesheet" href="../../../style/style.css" />
<link rel="icon" type="image/x-icon" href="../../../res/site/icons/favicon.ico">
</head>
<link
rel="icon"
type="image/x-icon"
href="../../../res/site/icons/favicon.ico"
/>
</head>
<body>
<body>
<header class="page-header" role="banner">
<h1 class="project-name">Rock Paper Scissors</h1>
<h2 class="project-tagline">Made using Javascript.</h2>
@ -44,6 +47,5 @@
You have reached the end of the page. (ノ◕ヮ◕)ノ*:・゚✧
</footer>
</main>
</body>
</body>
</html>

View file

@ -1,19 +1,24 @@
<!DOCTYPE html>
<html lang="en-US">
<head>
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>My Projects</title>
<link rel="stylesheet" href="../../style/style.css" />
<link rel="icon" type="image/x-icon" href="../../res/site/icons/favicon.ico">
</head>
<link
rel="icon"
type="image/x-icon"
href="../../res/site/icons/favicon.ico"
/>
</head>
<body>
<body>
<header class="page-header" role="banner">
<h1 class="project-name">My Projects</h1>
<h2 class="project-tagline">Programs and apps that I have coded and random ideas that I fabricated.</h2>
<h2 class="project-tagline">
Programs and apps that I have coded and random ideas that I fabricated.
</h2>
<a href="../../" class="btn">Home</a>
</header>
@ -30,27 +35,23 @@
<tbody>
<tr>
<td>Dark New Roman</td>
<td>A custom serif font based off of Times New Roman.</td>
<td>
A custom serif font based off of Times New Roman.
</td>
<td>
<a href="../../res/downloads/DarkNewRoman.ttf">Download font (truetype 28.9 KiB)</a>
<a href="../../res/downloads/DarkNewRoman.ttf"
>Download font (truetype 28.9 KiB)</a
>
</td>
</tr>
<tr>
<td>IP address gabber</td>
<td>
Grabs your IPv4 (Internet Protocol) Address.
</td>
<td>Grabs your IPv4 (Internet Protocol) Address.</td>
<td>
<a href="./ip-grabber/">ip-grabber<sup></sup></a>
</td>
</tr>
<tr>
<td>Number System Converter (web)</td>
<td>
Converts decimal numbers into other bases!
</td>
<td>Converts decimal numbers into other bases!</td>
<td>
<a href="./nsc-web/">nsc-web<sup></sup></a>
</td>
@ -58,8 +59,8 @@
</tbody>
</table>
<br>
<br>
<br />
<br />
<table>
<thead>
@ -72,29 +73,28 @@
<tbody>
<tr>
<td>Firefox black & red triangle theme</td>
<td>
A red and black theme for firefox tabs.
</td>
<td>A red and black theme for firefox tabs.</td>
<td>
<a
href="https://addons.mozilla.org/en-US/firefox/addon/black-red-triangle-theme">https://addons.mozilla.org/en-US/firefox/addon/black-red-triangle-theme/</a>
href="https://addons.mozilla.org/en-US/firefox/addon/black-red-triangle-theme"
>https://addons.mozilla.org/en-US/firefox/addon/black-red-triangle-theme/</a
>
</td>
</tr>
<tr>
<td>RGB Progress Bar</td>
<td>Makes progress bars cycle through different RGB colors.</td>
<td>
Makes progress bars cycle through different RGB colors.
</td>
<td>
<a
href="https://addons.mozilla.org/addon/rgb-progress-bar/">https://addons.mozilla.org/addon/rgb-progress-bar/</a>
<a href="https://addons.mozilla.org/addon/rgb-progress-bar/"
>https://addons.mozilla.org/addon/rgb-progress-bar/</a
>
</td>
</tr>
</tbody>
</table>
<br>
<br>
<br />
<br />
<table>
<thead>
@ -124,6 +124,5 @@
You have reached the end of the page. (ノ◕ヮ◕)ノ*:・゚✧
</footer>
</main>
</body>
</body>
</html>

View file

@ -1,21 +1,24 @@
<!DOCTYPE html>
<html lang="en-US">
<head>
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>IP Grabber</title>
<link rel="stylesheet" href="../../../style/style.css" />
<link rel="icon" type="image/x-icon" href="../../../res/site/icons/favicon.ico">
<link
rel="icon"
type="image/x-icon"
href="../../../res/site/icons/favicon.ico"
/>
<style>
.align-center {
text-align: center;
}
</style>
</head>
</head>
<body>
<body>
<header class="page-header" role="banner">
<h1 class="project-name">IP Grabber</h1>
<h2 class="project-tagline">Using Node.js.</h2>
@ -29,29 +32,41 @@
<h3>Grab an IP with the link below!</h3>
<p>
<a href="http://surprise.arrayinamatrix.xyz">Grabber Link</a>
<br>
If the link doesn't work, please use the public IPv4 of this website with port 3030 (i.e. #.#.#.#:3030). Also make sure the link is <code>http</code> and not <code>https</code>. For some reason, using the public ip works 100% of the time and the subdomain isn't reliable, I'll figure it out soon.
<br />
If the link doesn't work, please use the public IPv4 of this website
with port 3030 (i.e. #.#.#.#:3030). Also make sure the link is
<code>http</code> and not <code>https</code>. For some reason, using
the public ip works 100% of the time and the subdomain isn't reliable,
I'll figure it out soon.
</p>
</section>
<section id="logged">
<h3>Recently Logged:</h3>
<object data="../../../res/downloads/ip-addresses.log" type="text/plain">
<a href="../../../res/downloads/ip-addresses.log">Embed not showing? Download here.</a>
<object
data="../../../res/downloads/ip-addresses.log"
type="text/plain"
>
<a href="../../../res/downloads/ip-addresses.log"
>Embed not showing? Download here.</a
>
</object>
</section>
<section id="about">
<h3>Why?</h3>
<p>
I never created an app that uses both server-side and frontend code, so this is a learning experience.
I never created an app that uses both server-side and frontend code,
so this is a learning experience.
</p>
</section>
<p class="align-center">
<img src="../../../res/site/images/trollface.gif" alt="You mad bro?, Problem?" />
<img
src="../../../res/site/images/trollface.gif"
alt="You mad bro?, Problem?"
/>
</p>
<footer class="site-footer">
You have reached the end of the page. (ノ◕ヮ◕)ノ*:・゚✧
</footer>
</main>
</body>
</body>
</html>

View file

@ -1,22 +1,25 @@
<!DOCTYPE html>
<html lang="en-US">
<head>
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Number System Converter</title>
<link rel="stylesheet" href="../../../style/style.css" />
<link rel="icon" type="image/x-icon" href="../../../res/site/icons/favicon.ico">
<link
rel="icon"
type="image/x-icon"
href="../../../res/site/icons/favicon.ico"
/>
<script src="./script/script.js"></script>
<style>
input {
width: 40%;
}
</style>
</head>
</head>
<body>
<body>
<header class="page-header" role="banner">
<h1 class="project-name">Number System Converter</h1>
<h2 class="project-tagline">Web version.</h2>
@ -29,19 +32,47 @@
<section>
<h3>Enter a decimal number to convert and a base.</h3>
<form>
<label for="number">Number:</label><br>
<input name="number" id="number" type="text" step="1" onChange="numberSystemConverter();">
<br>
<label for="base">Base (Range 2-36):</label><br>
<input name="base" id="base" type="number" value="10" step="1" min="2" max="36"
onChange="numberSystemConverter();">
<br>
<label for="new-base">New base (Range 2-36):</label><br>
<input name="new-base" id="new-base" type="number" value="2" step="1" min="2" max="36"
onChange="numberSystemConverter();">
<br>
<label for="converted">Converted number:</label><br>
<input name="converted" id="converted" type="text" disabled="true" onChange="numberSystemConverter();">
<label for="number">Number:</label><br />
<input
name="number"
id="number"
type="text"
step="1"
onChange="numberSystemConverter();"
/>
<br />
<label for="base">Base (Range 2-36):</label><br />
<input
name="base"
id="base"
type="number"
value="10"
step="1"
min="2"
max="36"
onChange="numberSystemConverter();"
/>
<br />
<label for="new-base">New base (Range 2-36):</label><br />
<input
name="new-base"
id="new-base"
type="number"
value="2"
step="1"
min="2"
max="36"
onChange="numberSystemConverter();"
/>
<br />
<label for="converted">Converted number:</label><br />
<input
name="converted"
id="converted"
type="text"
disabled="true"
onChange="numberSystemConverter();"
/>
</form>
</section>
@ -49,6 +80,5 @@
You have reached the end of the page. (ノ◕ヮ◕)ノ*:・゚✧
</footer>
</main>
</body>
</body>
</html>

View file

@ -1,22 +1,19 @@
numberSystemConverter();
function numberSystemConverter() {
let num = document.getElementById('number').value;
let base = document.getElementById('base').value;
let new_base = document.getElementById('new-base').value;
let num = document.getElementById("number").value;
let base = document.getElementById("base").value;
let new_base = document.getElementById("new-base").value;
base = parseInt(base);
new_base = parseInt(new_base);
try {
let dec_num = parseInt(num, base);
let new_num = dec_num.toString(new_base);
document.getElementById('converted').value = new_num;
document.getElementById("converted").value = new_num;
console.log(`BASE ${base}: ${num} ==> BASE ${new_base}: ${new_num}`);
} catch (RangeError) {
console.log(`One or more bases is not in the range of 2 to 36.`);
}
};
}

View file

@ -1,43 +1,61 @@
<!DOCTYPE html>
<html lang="en-US">
<head>
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Socials</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/fork-awesome@1.2.0/css/fork-awesome.min.css"
integrity="sha256-XoaMnoYC5TH6/+ihMEnospgm0J1PM/nioxbOUdnM8HY=" crossorigin="anonymous">
<link
rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/fork-awesome@1.2.0/css/fork-awesome.min.css"
integrity="sha256-XoaMnoYC5TH6/+ihMEnospgm0J1PM/nioxbOUdnM8HY="
crossorigin="anonymous"
/>
<link rel="stylesheet" type="text/css" href="../../style/alt.style.css" />
<link rel="icon" type="image/x-icon" href="../../res/site/icons/favicon.ico">
</head>
<link
rel="icon"
type="image/x-icon"
href="../../res/site/icons/favicon.ico"
/>
</head>
<body>
<body>
<header class="page-header" role="banner">
<h1 class="project-name"> My Socials
</h1>
<h2 class=" project-tagline">You can contact me here. ∠( ᐛ 」∠)_</h2>
<h1 class="project-name">My Socials</h1>
<h2 class="project-tagline">You can contact me here. ∠( ᐛ 」∠)_</h2>
</header>
<div class="main-content">
<nav>
<a href="../../" class="btn">Home</a>
</nav>
<nav>
<a href="https://github.com/array-in-a-matrix" class="btn"><i class="fa fa-github"></i> GitHub</a>
<a href="https://git.arrayinamatrix.xyz/array-in-a-matrix" class="btn"><i class="fa fa-gitea"
aria-hidden="true"></i> Gitea</a>
<a href="https://gitlab.com/array.in.a.matrix" class="btn"><i class="fa fa-gitlab"></i> GitLab</a>
<a href="https://crowdin.com/profile/array.in.a.matrix" class="btn"><i class="fa fa-question-circle"></i>
Crowdin</a> <!-- temporary icon until a free icon for it is available in fork awesome -->
<a href="https://github.com/array-in-a-matrix" class="btn"
><i class="fa fa-github"></i> GitHub</a
>
<a href="https://git.arrayinamatrix.xyz/array-in-a-matrix" class="btn"
><i class="fa fa-gitea" aria-hidden="true"></i> Gitea</a
>
<a href="https://gitlab.com/array.in.a.matrix" class="btn"
><i class="fa fa-gitlab"></i> GitLab</a
>
<a href="https://crowdin.com/profile/array.in.a.matrix" class="btn"
><i class="fa fa-question-circle"></i> Crowdin</a
>
<!-- temporary icon until a free icon for it is available in fork awesome -->
</nav>
<nav>
<a href="../apps/matrix/" class="btn"><i class="fa fa-matrix-org"></i> Matrix</a>
<a href="https://www.instagram.com/array.in.a.matrix/" class="btn"><i class="fa fa-instagram"></i>
Instagram</a>
<a href="https://cadence.moe/blog/2020-06-06-why-you-shouldnt-trust-discord" class="btn"><i
class="fa fa-discord"></i> Discord</a>
<a href="../apps/matrix/" class="btn"
><i class="fa fa-matrix-org"></i> Matrix</a
>
<a href="https://www.instagram.com/array.in.a.matrix/" class="btn"
><i class="fa fa-instagram"></i> Instagram</a
>
<a
href="https://cadence.moe/blog/2020-06-06-why-you-shouldnt-trust-discord"
class="btn"
><i class="fa fa-discord"></i> Discord</a
>
</nav>
</div>
</body>
</body>
</html>

View file

@ -1,18 +1,25 @@
<!DOCTYPE html>
<html lang="en-US">
<head>
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Webrings</title>
<link rel="stylesheet" href="../../style/style.css" />
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/fork-awesome@1.2.0/css/fork-awesome.min.css"
integrity="sha256-XoaMnoYC5TH6/+ihMEnospgm0J1PM/nioxbOUdnM8HY=" crossorigin="anonymous">
<link rel="icon" type="image/x-icon" href="../../res/site/icons/favicon.ico">
</head>
<link
rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/fork-awesome@1.2.0/css/fork-awesome.min.css"
integrity="sha256-XoaMnoYC5TH6/+ihMEnospgm0J1PM/nioxbOUdnM8HY="
crossorigin="anonymous"
/>
<link
rel="icon"
type="image/x-icon"
href="../../res/site/icons/favicon.ico"
/>
</head>
<body>
<body>
<header class="page-header" role="banner">
<h1 class="project-name">Webrings</h1>
<h2 class="project-tagline">Links to webrings I am part of.</h2>
@ -22,83 +29,151 @@
</header>
<main id="content" class="main-content" role="main">
<h3><a href="https://wikiless.org/wiki/Webring?lang=en">What is a webring?</a></h3>
A webring is a collection of sites that chained to each other where if you follow a link from one site and keep
going up the ring you will eventually find the site you started from.
<h3>
<a href="https://wikiless.org/wiki/Webring?lang=en"
>What is a webring?</a
>
</h3>
A webring is a collection of sites that chained to each other where if you
follow a link from one site and keep going up the ring you will eventually
find the site you started from.
<br>
<hr>
<br>
<br />
<hr />
<br />
<div>
<div class="grid">
<section class="grid-item zoom" id="yesterweb">
<div class="yw-widget-full" data-yw-url="https://arrayinamatrix.xyz"></div>
<div
class="yw-widget-full"
data-yw-url="https://arrayinamatrix.xyz"
></div>
<script src="https://yesterweb.org/js/widget.js"></script>
</section>
<section class="grid-item zoom" id="retronaut" style="text-align: center;">
<section
class="grid-item zoom"
id="retronaut"
style="text-align: center"
>
Retronaut
<br>
<a href='https://webring.dinhe.net/prev/https://arrayinamatrix.xyz'>Previous</a>
<br />
<a href="https://webring.dinhe.net/prev/https://arrayinamatrix.xyz"
>Previous</a
>
<a href="https://webring.dinhe.net/random">Random</a>
<a href='https://webring.dinhe.net/next/https://arrayinamatrix.xyz'>Next</a>
<a href="https://webring.dinhe.net/next/https://arrayinamatrix.xyz"
>Next</a
>
</section>
<section class="grid-item zoom" id="hotline" style="text-align: center;">
<section
class="grid-item zoom"
id="hotline"
style="text-align: center"
>
Hotline
<br>
<a href='https://hotlinewebring.club/arrayinamatrix/previous'>Previous</a>
<a href='https://hotlinewebring.club/arrayinamatrix/next'>Next</a>
<br />
<a href="https://hotlinewebring.club/arrayinamatrix/previous"
>Previous</a
>
<a href="https://hotlinewebring.club/arrayinamatrix/next">Next</a>
</section>
<section class="grid-item zoom" id="tilde" style="text-align: center;">
<img src="http://tilde.club/~harper/webring.png" border="0" usemap="#notepad.map">
<section class="grid-item zoom" id="tilde" style="text-align: center">
<img
src="http://tilde.club/~harper/webring.png"
border="0"
usemap="#notepad.map"
/>
Click for the [
<a href="http://tilde.club/~harper/link.html?action=random" target="_top">Random page</a> ]
<br>
<a
href="http://tilde.club/~harper/link.html?action=random"
target="_top"
>Random page</a
>
]
<br />
Want to join the ring? Click here for
<a href="http://tilde.club/~harper/link.html?action=info" target="_top">info</a>.
<a
href="http://tilde.club/~harper/link.html?action=info"
target="_top"
>info</a
>.
<map name="notepad.map">
<area shape="rect" coords="0, 0, 60, 70" target="_top"
href="http://tilde.club/~harper/link.html?action=join">
<area shape="rect" coords="130, 0, 417, 75" target="_top"
href="http://tilde.club/~harper/link.html?action=random">
<area shape="rect" coords="465, 0, 549, 75" target="_top"
href="http://tilde.club/~harper/link.html?action=join">
<area
shape="rect"
coords="0, 0, 60, 70"
target="_top"
href="http://tilde.club/~harper/link.html?action=join"
/>
<area
shape="rect"
coords="130, 0, 417, 75"
target="_top"
href="http://tilde.club/~harper/link.html?action=random"
/>
<area
shape="rect"
coords="465, 0, 549, 75"
target="_top"
href="http://tilde.club/~harper/link.html?action=join"
/>
</map>
</section>
<section class="grid-item zoom" id="octoring">
<table>
<tbody>
<tr>
<td><a href="https://octo-ring.com/"><img
src="https://octo-ring.com/static/img/widget/top.png" width="99%"
alt="Octo Ring logo" align="top"></a><br><a
href="https://octo-ring.com/p/array-in-a-matrix/prev"><img
src="https://octo-ring.com/static/img/widget/prev.png" width="33%"
alt="previous" align="top" title="previous profile"></a><a
href="https://octo-ring.com/p/array-in-a-matrix/random"><img
src="https://octo-ring.com/static/img/widget/random.png" width="33%"
alt="random" align="top" title="random profile"></a><a
href="https://octo-ring.com/p/array-in-a-matrix/next"><img
src="https://octo-ring.com/static/img/widget/next.png" width="33%"
alt="next" align="top" title="next profile"></a><br><a
href="https://octo-ring.com/"><img
src="https://octo-ring.com/static/img/widget/bottom.png" width="99%"
alt="check out other GitHub profiles in the Octo Ring" align="top"></a></td>
<td>
<a href="https://octo-ring.com/"
><img
src="https://octo-ring.com/static/img/widget/top.png"
width="99%"
alt="Octo Ring logo"
align="top" /></a
><br /><a
href="https://octo-ring.com/p/array-in-a-matrix/prev"
><img
src="https://octo-ring.com/static/img/widget/prev.png"
width="33%"
alt="previous"
align="top"
title="previous profile" /></a
><a href="https://octo-ring.com/p/array-in-a-matrix/random"
><img
src="https://octo-ring.com/static/img/widget/random.png"
width="33%"
alt="random"
align="top"
title="random profile" /></a
><a href="https://octo-ring.com/p/array-in-a-matrix/next"
><img
src="https://octo-ring.com/static/img/widget/next.png"
width="33%"
alt="next"
align="top"
title="next profile" /></a
><br /><a href="https://octo-ring.com/"
><img
src="https://octo-ring.com/static/img/widget/bottom.png"
width="99%"
alt="check out other GitHub profiles in the Octo Ring"
align="top"
/></a>
</td>
</tr>
</tbody>
</table>
</section>
</div>
<br>
<br>
<br />
<br />
<div </div>
<div
</div>
<footer class="site-footer">
You have reached the end of the page. (ノ◕ヮ◕)ノ*:・゚✧
</footer>
</main>
</body>
</body>
</html>

5
package.json Normal file
View file

@ -0,0 +1,5 @@
{
"devDependencies": {
"prettier": "2.8.4"
}
}

17
pnpm-lock.yaml generated Normal file
View file

@ -0,0 +1,17 @@
lockfileVersion: 5.4
specifiers:
prettier: 2.8.4
devDependencies:
prettier: 2.8.4
packages:
/prettier/2.8.4:
resolution:
{
integrity: sha512-vIS4Rlc2FNh0BySk3Wkd6xmwxB0FpOndW5fisM5H8hsZSxU2VWVB5CWIkIjWvrHjIhxk2g3bfMKM87zNTrZddw==,
}
engines: { node: ">=10.13.0" }
hasBin: true
dev: true

View file

@ -1,20 +1,18 @@
<!DOCTYPE html>
<html lang="en-US">
<head>
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Array in a Matrix</title>
<link rel="stylesheet" type="text/css" href="./alt.style.css" />
<link rel="icon" type="image/x-icon" href="../res/site/icons/favicon.ico">
</head>
<link rel="icon" type="image/x-icon" href="../res/site/icons/favicon.ico" />
</head>
<body>
<body>
<header class="page-header" role="banner">
<h1 class="project-name"> Project Name
</h1>
<h2 class=" project-tagline">Project tagline</h2>
<h1 class="project-name">Project Name</h1>
<h2 class="project-tagline">Project tagline</h2>
</header>
<div class="main-content">
<nav>
@ -25,6 +23,5 @@
<a href="#" class="btn">navigation button</a>
</nav>
</div>
</body>
</body>
</html>

View file

@ -61,7 +61,8 @@ body {
font-family: Utopia, "Liberation Serif";
text-align: center;
/* img size is 50x50 */
background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAABbmlDQ1BpY2MAACiRdZE7SwNBFIW/RCWikRRaBLHYQsVCJSiIpcbCJkiICr6aZPMSNuuyu0HEVrCxCFiINr4K/4G2gq2CICiCiI1/wFcjYb2TBBJEZ5m9H2fmXGbOgD9m6AWnOQIF07UT01FtYXFJC7wSIEwnw/iSumNNxuMx/h1f9/hUvRtSvf7f9+doT2ccHXytwmO6ZbvCE8KxdddSvCPcpeeTaeEj4UFbDih8rfRUlV8U56r8odieS0yBX/XUcg2camA9bxeEB4R7C0ZRr51H3SSYMednpXbL7MEhwTRRNFIUWcXAZUiqKZn97YtUfDOsiUeXv8UGtjhy5MU7KGpRumakZkXPyGewoXL/naeTHR2pdg9GoeXZ8977ILAL5ZLnfR97XvkEmp7g0qz71ySn8U/RS3Wt9xBCW3B+VddSe3CxDeFHK2knK1KTTH82C29n0LEInbfQtlzNqrbO6QPMbcoT3cD+AfTL/tDKD92VZ/plHO89AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAuElEQVRoBe3awQ2CQABEUbUEbJEEi5ISpQVETuY38LPkk5gwp9mdx9H7srz2dX3fpul5G/XZts959H2e5/14G/Z3nv+QGPYC/+M/Rv2ceO4uwkXsnIgtwP5EuIidE7EF2J8IF7FzIrYA+xPhInZOxBZgfyJcxM6J2ALsT4SL2DkRW4D9iXAROydiC7A/ES5i50RsAfYnwkXsnIgtwP5EuIidE7EF2J8IF7FzIrYA+y8j8rvYJf6v9QVf2KG69fWg3gAAAABJRU5ErkJggg==") repeat 0 0;
background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAABbmlDQ1BpY2MAACiRdZE7SwNBFIW/RCWikRRaBLHYQsVCJSiIpcbCJkiICr6aZPMSNuuyu0HEVrCxCFiINr4K/4G2gq2CICiCiI1/wFcjYb2TBBJEZ5m9H2fmXGbOgD9m6AWnOQIF07UT01FtYXFJC7wSIEwnw/iSumNNxuMx/h1f9/hUvRtSvf7f9+doT2ccHXytwmO6ZbvCE8KxdddSvCPcpeeTaeEj4UFbDih8rfRUlV8U56r8odieS0yBX/XUcg2camA9bxeEB4R7C0ZRr51H3SSYMednpXbL7MEhwTRRNFIUWcXAZUiqKZn97YtUfDOsiUeXv8UGtjhy5MU7KGpRumakZkXPyGewoXL/naeTHR2pdg9GoeXZ8977ILAL5ZLnfR97XvkEmp7g0qz71ySn8U/RS3Wt9xBCW3B+VddSe3CxDeFHK2knK1KTTH82C29n0LEInbfQtlzNqrbO6QPMbcoT3cD+AfTL/tDKD92VZ/plHO89AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAuElEQVRoBe3awQ2CQABEUbUEbJEEi5ISpQVETuY38LPkk5gwp9mdx9H7srz2dX3fpul5G/XZts959H2e5/14G/Z3nv+QGPYC/+M/Rv2ceO4uwkXsnIgtwP5EuIidE7EF2J8IF7FzIrYA+xPhInZOxBZgfyJcxM6J2ALsT4SL2DkRW4D9iXAROydiC7A/ES5i50RsAfYnwkXsnIgtwP5EuIidE7EF2J8IF7FzIrYA+y8j8rvYJf6v9QVf2KG69fWg3gAAAABJRU5ErkJggg==")
repeat 0 0;
-webkit-animation: bg-scrolling-reverse 0.92s infinite;
/* Safari 4+ */
-moz-animation: bg-scrolling-reverse 0.92s infinite;
@ -88,8 +89,6 @@ body {
font-family: "Montserrat", sans-serif;
}
;
.project-name {
color: --primary;
font-family: Utopia, "Liberation Serif";
@ -162,7 +161,7 @@ a:hover {
border-color: rgba(255, 255, 255, 0.3);
}
.btn+.btn {
.btn + .btn {
margin-left: 1rem;
}
@ -187,7 +186,7 @@ a:hover {
font-size: 0.9rem;
}
.btn+.btn {
.btn + .btn {
margin-top: 1rem;
margin-left: 0;
}
@ -204,16 +203,16 @@ select,
textarea {
color: inherit;
font: inherit;
margin: 0
margin: 0;
}
button {
overflow: visible
overflow: visible;
}
button,
select {
text-transform: none
text-transform: none;
}
button,
@ -221,21 +220,20 @@ html input[type="button"],
input[type="reset"],
input[type="submit"] {
-webkit-appearance: button;
cursor: pointer
cursor: pointer;
}
button[disabled],
html input[disabled] {
cursor: default
cursor: default;
}
button::-moz-focus-inner,
input::-moz-focus-inner {
border: 0;
padding: 0
padding: 0;
}
.dropdown {
position: relative;
display: inline-block;
@ -259,23 +257,24 @@ input::-moz-focus-inner {
@media screen and (min-width: 64em) {
.project-tagline {
font-size: 1.25rem
font-size: 1.25rem;
}
}
@media screen and (min-width: 42em) and (max-width: 64em) {
.project-tagline {
font-size: 1.15rem
font-size: 1.15rem;
}
}
@media screen and (max-width: 42em) {
.project-tagline {
font-size: 1rem
font-size: 1rem;
}
}
footer, site-footer {
footer,
site-footer {
font-family: "Montserrat", sans-serif;
font-size: small;
display: block;
@ -283,19 +282,19 @@ footer, site-footer {
@media screen and (min-width: 64em) {
.site-footer {
font-size: 1rem
font-size: 1rem;
}
}
@media screen and (min-width: 42em) and (max-width: 64em) {
.site-footer {
font-size: 1rem
font-size: 1rem;
}
}
@media screen and (max-width: 42em) {
.site-footer {
font-size: 0.9rem
font-size: 0.9rem;
}
}
@ -304,13 +303,13 @@ sup {
font-size: 75%;
line-height: 0;
position: relative;
vertical-align: baseline
vertical-align: baseline;
}
sup {
top: -0.5em
top: -0.5em;
}
sub {
bottom: -0.25em
bottom: -0.25em;
}

View file

@ -1,16 +1,15 @@
<!DOCTYPE html>
<html lang="en-US">
<head>
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Dark Matrix</title>
<link rel="stylesheet" href="./style.css" />
<link rel="icon" type="image/x-icon" href="../res/site/icons/favicon.ico">
</head>
<link rel="icon" type="image/x-icon" href="../res/site/icons/favicon.ico" />
</head>
<body>
<body>
<header class="page-header" role="banner">
<h1 class="project-name">Dark Matrix Theme</h1>
<h2 class="project-tagline">Cayman redesigned.</h2>
@ -56,7 +55,9 @@
<div class="language-js highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code><span class="c1">// Javascript code with syntax highlighting.</span>
<pre
class="highlight"
><code><span class="c1">// Javascript code with syntax highlighting.</span>
<span class="kd">var</span> <span class="nx">fun</span> <span class="o">=</span> <span class="kd">function</span> <span class="nx">lang</span><span class="p">(</span><span class="nx">l</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">dateformat</span><span class="p">.</span><span class="nx">i18n</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="dl">'</span><span class="s1">./lang/</span><span class="dl">'</span> <span class="o">+</span> <span class="nx">l</span><span class="p">)</span>
<span class="k">return</span> <span class="kc">true</span><span class="p">;</span>
@ -67,7 +68,9 @@
<div class="language-ruby highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code><span class="c1"># Ruby code with syntax highlighting</span>
<pre
class="highlight"
><code><span class="c1"># Ruby code with syntax highlighting</span>
<span class="no">GitHubPages</span><span class="o">::</span><span class="no">Dependencies</span><span class="p">.</span><span class="nf">gems</span><span class="p">.</span><span class="nf">each</span> <span class="k">do</span> <span class="o">|</span><span class="n">gem</span><span class="p">,</span> <span class="n">version</span><span class="o">|</span>
<span class="n">s</span><span class="p">.</span><span class="nf">add_dependency</span><span class="p">(</span><span class="n">gem</span><span class="p">,</span> <span class="s2">"= </span><span class="si">#{</span><span class="n">version</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
<span class="k">end</span>
@ -193,13 +196,19 @@
<h3 id="small-image">Small image</h3>
<p>
<img src="https://github.githubassets.com/images/icons/emoji/octocat.png" alt="Octocat" />
<img
src="https://github.githubassets.com/images/icons/emoji/octocat.png"
alt="Octocat"
/>
</p>
<h3 id="large-image">Large image</h3>
<p>
<img src="https://guides.github.com/activities/hello-world/branching.png" alt="Branching" />
<img
src="https://guides.github.com/activities/hello-world/branching.png"
alt="Branching"
/>
</p>
<h3 id="definition-lists-can-be-used-with-html-syntax">
@ -219,7 +228,9 @@
<div class="language-plaintext highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>Long, single-line code blocks should not wrap. They should horizontally scroll if they are too long. This line should be long enough to demonstrate this.
<pre
class="highlight"
><code>Long, single-line code blocks should not wrap. They should horizontally scroll if they are too long. This line should be long enough to demonstrate this.
</code></pre>
</div>
</div>
@ -232,14 +243,18 @@
</div>
<footer class="site-footer">
<span class="site-footer-owner">Based off of <a href="https://github.com/pages-themes/cayman">cayman</a>
<span class="site-footer-owner"
>Based off of
<a href="https://github.com/pages-themes/cayman">cayman</a>
by
<a href="https://github.com/pages-themes">pages-themes</a>.</span>
<a href="https://github.com/pages-themes">pages-themes</a>.</span
>
<span class="site-footer-credits">This page was generated by
<a href="https://arrayinamatrix.xyz/">Array in a Matrix</a>.</span>
<span class="site-footer-credits"
>This page was generated by
<a href="https://arrayinamatrix.xyz/">Array in a Matrix</a>.</span
>
</footer>
</main>
</body>
</body>
</html>

View file

@ -4,11 +4,11 @@
html {
font-family: "Montserrat", sans-serif;
-ms-text-size-adjust: 100%;
-webkit-text-size-adjust: 100%
-webkit-text-size-adjust: 100%;
}
body {
margin: 0
margin: 0;
}
article,
@ -24,7 +24,7 @@ menu,
nav,
section,
summary {
display: block
display: block;
}
audio,
@ -32,53 +32,53 @@ canvas,
progress,
video {
display: inline-block;
vertical-align: baseline
vertical-align: baseline;
}
audio:not([controls]) {
display: none;
height: 0
height: 0;
}
[hidden],
template {
display: none
display: none;
}
a {
background-color: transparent
background-color: transparent;
}
a:active,
a:hover {
outline: 0
outline: 0;
}
abbr[title] {
border-bottom: 1px dotted
border-bottom: 1px dotted;
}
b,
strong {
font-weight: bold
font-weight: bold;
}
dfn {
font-style: italic
font-style: italic;
}
h1 {
font-size: 2em;
margin: 0.67em 0
margin: 0.67em 0;
}
mark {
background: #ff0;
color: #000
color: #000;
}
small {
font-size: 80%
font-size: 80%;
}
sub,
@ -86,36 +86,36 @@ sup {
font-size: 75%;
line-height: 0;
position: relative;
vertical-align: baseline
vertical-align: baseline;
}
sup {
top: -0.5em
top: -0.5em;
}
sub {
bottom: -0.25em
bottom: -0.25em;
}
img {
border: 0
border: 0;
}
svg:not(:root) {
overflow: hidden
overflow: hidden;
}
figure {
margin: 1em 40px
margin: 1em 40px;
}
hr {
box-sizing: content-box;
height: 0
height: 0;
}
pre {
overflow: auto
overflow: auto;
}
code,
@ -123,7 +123,7 @@ kbd,
pre,
samp {
font-family: monospace, monospace;
font-size: 1em
font-size: 1em;
}
button,
@ -133,16 +133,16 @@ select,
textarea {
color: inherit;
font: inherit;
margin: 0
margin: 0;
}
button {
overflow: visible
overflow: visible;
}
button,
select {
text-transform: none
text-transform: none;
}
button,
@ -150,76 +150,76 @@ html input[type="button"],
input[type="reset"],
input[type="submit"] {
-webkit-appearance: button;
cursor: pointer
cursor: pointer;
}
button[disabled],
html input[disabled] {
cursor: default
cursor: default;
}
button::-moz-focus-inner,
input::-moz-focus-inner {
border: 0;
padding: 0
padding: 0;
}
input {
line-height: normal
line-height: normal;
}
input[type="checkbox"],
input[type="radio"] {
box-sizing: border-box;
padding: 0
padding: 0;
}
input[type="number"]::-webkit-inner-spin-button,
input[type="number"]::-webkit-outer-spin-button {
height: auto
height: auto;
}
input[type="search"] {
-webkit-appearance: textfield;
box-sizing: content-box
box-sizing: content-box;
}
input[type="search"]::-webkit-search-cancel-button,
input[type="search"]::-webkit-search-decoration {
-webkit-appearance: none
-webkit-appearance: none;
}
fieldset {
border: 1px solid #c0c0c0;
margin: 0 2px;
padding: 0.35em 0.625em 0.75em
padding: 0.35em 0.625em 0.75em;
}
legend {
border: 0;
padding: 0
padding: 0;
}
textarea {
overflow: auto
overflow: auto;
}
optgroup {
font-weight: bold
font-weight: bold;
}
table {
border-collapse: collapse;
border-spacing: 0
border-spacing: 0;
}
td,
th {
padding: 0
padding: 0;
}
* {
box-sizing: border-box
box-sizing: border-box;
}
body {
@ -228,7 +228,7 @@ body {
font-family: "Montserrat", sans-serif;
font-size: 16px;
line-height: 1.5;
color: #606c71
color: #606c71;
}
#skip-to-content {
@ -236,7 +236,7 @@ body {
width: 1px;
position: absolute;
overflow: hidden;
top: -10px
top: -10px;
}
#skip-to-content:focus {
@ -246,16 +246,16 @@ body {
height: auto;
width: auto;
background: #e19447;
outline: thick solid #e19447
outline: thick solid #e19447;
}
a {
color: #1e6bb8;
text-decoration: none
text-decoration: none;
}
a:hover {
text-decoration: underline
text-decoration: underline;
}
.btn {
@ -267,30 +267,30 @@ a:hover {
border-style: solid;
border-width: 1px;
border-radius: 0.3rem;
transition: color 0.2s, background-color 0.2s, border-color 0.2s
transition: color 0.2s, background-color 0.2s, border-color 0.2s;
}
.btn:hover {
color: rgba(255, 255, 255, 0.8);
text-decoration: none;
background-color: rgba(255, 255, 255, 0.2);
border-color: rgba(255, 255, 255, 0.3)
border-color: rgba(255, 255, 255, 0.3);
}
.btn+.btn {
margin-left: 1rem
.btn + .btn {
margin-left: 1rem;
}
@media screen and (min-width: 64em) {
.btn {
padding: 0.75rem 1rem
padding: 0.75rem 1rem;
}
}
@media screen and (min-width: 42em) and (max-width: 64em) {
.btn {
padding: 0.6rem 0.9rem;
font-size: 0.9rem
font-size: 0.9rem;
}
}
@ -299,12 +299,12 @@ a:hover {
display: block;
width: 100%;
padding: 0.75rem;
font-size: 0.9rem
font-size: 0.9rem;
}
.btn+.btn {
.btn + .btn {
margin-top: 1rem;
margin-left: 0
margin-left: 0;
}
}
@ -362,7 +362,8 @@ a:hover {
}
body {
background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAABbmlDQ1BpY2MAACiRdZE7SwNBFIW/RCWikRRaBLHYQsVCJSiIpcbCJkiICr6aZPMSNuuyu0HEVrCxCFiINr4K/4G2gq2CICiCiI1/wFcjYb2TBBJEZ5m9H2fmXGbOgD9m6AWnOQIF07UT01FtYXFJC7wSIEwnw/iSumNNxuMx/h1f9/hUvRtSvf7f9+doT2ccHXytwmO6ZbvCE8KxdddSvCPcpeeTaeEj4UFbDih8rfRUlV8U56r8odieS0yBX/XUcg2camA9bxeEB4R7C0ZRr51H3SSYMednpXbL7MEhwTRRNFIUWcXAZUiqKZn97YtUfDOsiUeXv8UGtjhy5MU7KGpRumakZkXPyGewoXL/naeTHR2pdg9GoeXZ8977ILAL5ZLnfR97XvkEmp7g0qz71ySn8U/RS3Wt9xBCW3B+VddSe3CxDeFHK2knK1KTTH82C29n0LEInbfQtlzNqrbO6QPMbcoT3cD+AfTL/tDKD92VZ/plHO89AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAuElEQVRoBe3awQ2CQABEUbUEbJEEi5ISpQVETuY38LPkk5gwp9mdx9H7srz2dX3fpul5G/XZts959H2e5/14G/Z3nv+QGPYC/+M/Rv2ceO4uwkXsnIgtwP5EuIidE7EF2J8IF7FzIrYA+xPhInZOxBZgfyJcxM6J2ALsT4SL2DkRW4D9iXAROydiC7A/ES5i50RsAfYnwkXsnIgtwP5EuIidE7EF2J8IF7FzIrYA+y8j8rvYJf6v9QVf2KG69fWg3gAAAABJRU5ErkJggg==") repeat 0 0;
background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAABbmlDQ1BpY2MAACiRdZE7SwNBFIW/RCWikRRaBLHYQsVCJSiIpcbCJkiICr6aZPMSNuuyu0HEVrCxCFiINr4K/4G2gq2CICiCiI1/wFcjYb2TBBJEZ5m9H2fmXGbOgD9m6AWnOQIF07UT01FtYXFJC7wSIEwnw/iSumNNxuMx/h1f9/hUvRtSvf7f9+doT2ccHXytwmO6ZbvCE8KxdddSvCPcpeeTaeEj4UFbDih8rfRUlV8U56r8odieS0yBX/XUcg2camA9bxeEB4R7C0ZRr51H3SSYMednpXbL7MEhwTRRNFIUWcXAZUiqKZn97YtUfDOsiUeXv8UGtjhy5MU7KGpRumakZkXPyGewoXL/naeTHR2pdg9GoeXZ8977ILAL5ZLnfR97XvkEmp7g0qz71ySn8U/RS3Wt9xBCW3B+VddSe3CxDeFHK2knK1KTTH82C29n0LEInbfQtlzNqrbO6QPMbcoT3cD+AfTL/tDKD92VZ/plHO89AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAuElEQVRoBe3awQ2CQABEUbUEbJEEi5ISpQVETuY38LPkk5gwp9mdx9H7srz2dX3fpul5G/XZts959H2e5/14G/Z3nv+QGPYC/+M/Rv2ceO4uwkXsnIgtwP5EuIidE7EF2J8IF7FzIrYA+xPhInZOxBZgfyJcxM6J2ALsT4SL2DkRW4D9iXAROydiC7A/ES5i50RsAfYnwkXsnIgtwP5EuIidE7EF2J8IF7FzIrYA+y8j8rvYJf6v9QVf2KG69fWg3gAAAABJRU5ErkJggg==")
repeat 0 0;
-webkit-animation: bg-scrolling-reverse 0.92s infinite;
/* Safari 4+ */
-moz-animation: bg-scrolling-reverse 0.92s infinite;
@ -379,66 +380,66 @@ body {
@media screen and (min-width: 64em) {
.page-header {
padding: 5rem 6rem
padding: 5rem 6rem;
}
}
@media screen and (min-width: 42em) and (max-width: 64em) {
.page-header {
padding: 3rem 4rem
padding: 3rem 4rem;
}
}
@media screen and (max-width: 42em) {
.page-header {
padding: 2rem 1rem
padding: 2rem 1rem;
}
}
.project-name {
margin-top: 0;
margin-bottom: 0.1rem
margin-bottom: 0.1rem;
}
@media screen and (min-width: 64em) {
.project-name {
font-size: 3.25rem
font-size: 3.25rem;
}
}
@media screen and (min-width: 42em) and (max-width: 64em) {
.project-name {
font-size: 2.25rem
font-size: 2.25rem;
}
}
@media screen and (max-width: 42em) {
.project-name {
font-size: 1.75rem
font-size: 1.75rem;
}
}
.project-tagline {
margin-bottom: 2rem;
font-weight: normal;
opacity: 0.7
opacity: 0.7;
}
@media screen and (min-width: 64em) {
.project-tagline {
font-size: 1.25rem
font-size: 1.25rem;
}
}
@media screen and (min-width: 42em) and (max-width: 64em) {
.project-tagline {
font-size: 1.15rem
font-size: 1.15rem;
}
}
@media screen and (max-width: 42em) {
.project-tagline {
font-size: 1rem
font-size: 1rem;
}
}
@ -448,7 +449,7 @@ body {
}
.main-content :first-child {
margin-top: 0
margin-top: 0;
}
@media screen and (min-width: 64em) {
@ -456,21 +457,21 @@ body {
max-width: 64rem;
padding: 2rem 6rem;
margin: 0 auto;
font-size: 1.1rem
font-size: 1.1rem;
}
}
@media screen and (min-width: 42em) and (max-width: 64em) {
.main-content {
padding: 2rem 4rem;
font-size: 1.1rem
font-size: 1.1rem;
}
}
@media screen and (max-width: 42em) {
.main-content {
padding: 2rem 1rem;
font-size: 1rem
font-size: 1rem;
}
}
@ -485,11 +486,11 @@ body {
font-size: 11px;
line-height: 10px;
padding: 3px 5px;
vertical-align: middle
vertical-align: middle;
}
.main-content img {
max-width: 100%
max-width: 100%;
}
.main-content h1,
@ -505,7 +506,7 @@ body {
}
.main-content p {
margin-bottom: 1em
margin-bottom: 1em;
}
.main-content code {
@ -514,7 +515,7 @@ body {
font-size: 0.9rem;
color: #567482;
background-color: #f3f6fa;
border-radius: 0.3rem
border-radius: 0.3rem;
}
.main-content pre {
@ -526,10 +527,10 @@ body {
word-wrap: normal;
background-color: #f3f6fa;
border: solid 1px #dce6f0;
border-radius: 0.3rem
border-radius: 0.3rem;
}
.main-content pre>code {
.main-content pre > code {
padding: 0;
margin: 0;
font-size: 0.9rem;
@ -537,16 +538,16 @@ body {
word-break: normal;
white-space: pre;
background: transparent;
border: 0
border: 0;
}
.main-content .highlight {
margin-bottom: 1rem
margin-bottom: 1rem;
}
.main-content .highlight pre {
margin-bottom: 0;
word-break: normal
word-break: normal;
}
.main-content .highlight pre,
@ -556,7 +557,7 @@ body {
font-size: 0.9rem;
line-height: 1.45;
border-radius: 0.3rem;
-webkit-overflow-scrolling: touch
-webkit-overflow-scrolling: touch;
}
.main-content pre code,
@ -569,34 +570,34 @@ body {
line-height: inherit;
word-wrap: normal;
background-color: transparent;
border: 0
border: 0;
}
.main-content pre code:before,
.main-content pre code:after,
.main-content pre tt:before,
.main-content pre tt:after {
content: normal
content: normal;
}
.main-content ul,
.main-content ol {
margin-top: 0
margin-top: 0;
}
.main-content blockquote {
padding: 0 1rem;
margin-left: 0;
color: #819198;
border-left: 0.3rem solid #dce6f0
border-left: 0.3rem solid #dce6f0;
}
.main-content blockquote>:first-child {
margin-top: 0
.main-content blockquote > :first-child {
margin-top: 0;
}
.main-content blockquote>:last-child {
margin-bottom: 0
.main-content blockquote > :last-child {
margin-bottom: 0;
}
.main-content table {
@ -605,33 +606,33 @@ body {
overflow: auto;
word-break: normal;
word-break: keep-all;
-webkit-overflow-scrolling: touch
-webkit-overflow-scrolling: touch;
}
.main-content table th {
font-weight: bold
font-weight: bold;
}
.main-content table th,
.main-content table td {
padding: 0.5rem 1rem;
border: 1px solid #e9ebec
border: 1px solid #e9ebec;
}
.main-content dl {
padding: 0
padding: 0;
}
.main-content dl dt {
padding: 0;
margin-top: 1rem;
font-size: 1rem;
font-weight: bold
font-weight: bold;
}
.main-content dl dd {
padding: 0;
margin-bottom: 1rem
margin-bottom: 1rem;
}
.main-content hr {
@ -639,30 +640,30 @@ body {
padding: 0;
margin: 1rem 0;
background-color: #dce6f0;
border: 0
border: 0;
}
.site-footer {
padding-top: 2rem;
margin-top: 2rem;
border-top: solid 1px #eff0f1
border-top: solid 1px #eff0f1;
}
@media screen and (min-width: 64em) {
.site-footer {
font-size: 1rem
font-size: 1rem;
}
}
@media screen and (min-width: 42em) and (max-width: 64em) {
.site-footer {
font-size: 1rem
font-size: 1rem;
}
}
@media screen and (max-width: 42em) {
.site-footer {
font-size: 0.9rem
font-size: 0.9rem;
}
}
@ -700,7 +701,7 @@ section {
}
.zoom {
transition: transform .2s;
transition: transform 0.2s;
margin: 0 auto;
}
.zoom img {
@ -720,7 +721,7 @@ section {
}
main div {
box-sizing: unset
box-sizing: unset;
}
.center {
text-align: center;