Skip to content

Instantly share code, notes, and snippets.

@scriptease
Created July 31, 2026 17:37
Show Gist options
  • Select an option

  • Save scriptease/510b8e4ccea631b01a04a4192fca5d43 to your computer and use it in GitHub Desktop.

Select an option

Save scriptease/510b8e4ccea631b01a04a4192fca5d43 to your computer and use it in GitHub Desktop.
Cartoon underwater reef
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
<title>Underwater</title>
<style>
html, body { margin: 0; height: 100%; overflow: hidden; background: #27455c; }
canvas { display: block; touch-action: none; }
#reset {
position: fixed; top: 14px; right: 14px; z-index: 10;
padding: 9px 18px; border: none; border-radius: 999px;
font: 600 14px/1 -apple-system, "Segoe UI", sans-serif; letter-spacing: .02em;
color: #eaf4f9; background: rgba(255,255,255,.16); backdrop-filter: blur(6px);
cursor: pointer; transition: background .15s, transform .1s;
}
#reset:hover { background: rgba(255,255,255,.28); }
#reset:active { transform: scale(.95); }
</style>
</head>
<body>
<canvas id="scene"></canvas>
<button id="reset" title="Regenerate the scene with a new seed">&#8635; New reef</button>
<img id="shark-img" alt="" style="display:none" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA4MTYgODE2IiB3aWR0aD0iODE2IiBoZWlnaHQ9IjgxNiI+IDxwYXRoIGZpbGw9IiM2MDdmOTEiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDUzMSwxMTMpIiBkPSJNMCAwIEMxLjY4IDAuMjkgMy4zNCAwLjYyIDUgMSBDNC4yNSA3LjUzIDQuMjUgNy41MyAzLjAyIDkuODUgQzEuNzEgMTIuNjEgMS40MSAxNS4xNiAxIDE4LjE5IEMwLjQ5IDIxLjk1IC0wLjEyIDI1LjU5IC0wLjk5IDI5LjI4IEMtNy4xNCA1Ni4zOSAtNi44NiA5Mi4zMyAwLjI4IDExOS4xNyBDMS4zIDEyMy4xOSAxLjg4IDEyNy4yNSAyLjQ3IDEzMS4zNCBDMy4wMiAxMzQuMDkgMy45NSAxMzYuNDEgNSAxMzkgQzUuNTMgMTQxLjQ5IDUuOTQgMTQzLjk5IDYuMzQgMTQ2LjUgQzcuMTcgMTQ5LjY0IDcuOSAxNTEuNDggMTAgMTU0IEMxMi43NyAxNTQuNzYgMTUuNTEgMTU0LjY2IDE4LjM3IDE1NC42MiBDMTkuMjIgMTU0LjYyIDIwLjA4IDE1NC42MyAyMC45NiAxNTQuNjMgQzIzLjc5IDE1NC42NCAyNi42MSAxNTQuNjIgMjkuNDUgMTU0LjU5IEMzMS40MSAxNTQuNTkgMzMuMzggMTU0LjU5IDM1LjM1IDE1NC41OSBDMzkuNDkgMTU0LjU5IDQzLjYyIDE1NC41NyA0Ny43NiAxNTQuNTQgQzUzLjA0IDE1NC41IDU4LjMyIDE1NC41IDYzLjYgMTU0LjUxIEM2Ny42OCAxNTQuNTEgNzEuNzUgMTU0LjUgNzUuODIgMTU0LjQ4IEM3Ny43NyAxNTQuNDcgNzkuNzEgMTU0LjQ3IDgxLjY2IDE1NC40NyBDODQuMzkgMTU0LjQ3IDg3LjEyIDE1NC40NSA4OS44NiAxNTQuNDIgQzkwLjY1IDE1NC40MiA5MS40NSAxNTQuNDMgOTIuMjcgMTU0LjQzIEMxMDMuNSAxNTQuMjYgMTEyLjU2IDE0OC45OCAxMjEuODggMTQzLjE5IEMxMjkuOCAxMzguMyAxMzcuODIgMTMzLjU4IDE0NS44OCAxMjguOTEgQzE1Mi43OSAxMjQuODkgMTU5LjY1IDEyMC44MiAxNjYuNDEgMTE2LjU1IEMxNjkgMTE1IDE2OSAxMTUgMTcyLjEyIDExMy40NSBDMTc0LjQ1IDExMi4yOCAxNzYuMzQgMTExLjE0IDE3OC4zOCAxMDkuNTYgQzE4MC43NiAxMDcuODEgMTgzLjA4IDEwNi4zOSAxODUuNzUgMTA1LjEyIEMxOTIuMDMgMTAyLjExIDE5Ny44NSA5OC4yMyAyMDMuNTMgOTQuMjEgQzIwNC4zIDkzLjY3IDIwNS4wOCA5My4xMiAyMDUuODggOTIuNTYgQzIwNi41NSA5Mi4wNyAyMDcuMjMgOTEuNTggMjA3LjkzIDkxLjA3IEMyMTAuNDQgODkuNzggMjEyLjIyIDg5LjggMjE1IDkwIEMyMTEuNzcgMTAxLjc5IDIwNS45NCAxMTMuMTkgMTk5LjQ4IDEyMy41MiBDMTk3Ljc1IDEyNi40MiAxOTYuMjQgMTI5LjQxIDE5NC43NSAxMzIuNDQgQzE4OC43MyAxNDQuNjYgMTgyLjQ5IDE1Ni43OCAxNzUuNDcgMTY4LjQ2IEMxNzQuNSAxNzAuMTQgMTczLjU4IDE3MS44NiAxNzIuNzMgMTczLjYxIEMxNzEuMjUgMTc2LjYyIDE2OS41NiAxNzkuNTEgMTY3Ljg2IDE4Mi40MSBDMTY2Ljk4IDE4My45MiAxNjYuMSAxODUuNDQgMTY1LjIyIDE4Ni45NSBDMTY0LjYxIDE4Ny45OSAxNjQgMTg5LjAyIDE2My4zOSAxOTAuMDUgQzE2Mi40OSAxOTEuNTYgMTYxLjYyIDE5My4wOCAxNjAuNzQgMTk0LjU5IEMxNjAuMjEgMTk1LjQ5IDE1OS42OSAxOTYuMzggMTU5LjE1IDE5Ny4zIEMxNTcuODIgMjAwLjQzIDE1Ny43MSAyMDIuNjQgMTU4IDIwNiBDMTU5LjExIDIwOC4wNiAxNTkuMTEgMjA4LjA2IDE2MC43NSAyMTAgQzE2MS4zOSAyMTAuNzcgMTYyLjAyIDIxMS41MyAxNjIuNjggMjEyLjMyIEMxNjMuNDUgMjEzLjIxIDE2NC4yMyAyMTQuMTEgMTY1IDIxNSBDMTY1Ljk0IDIxNi4xIDE2Ni44OCAyMTcuMiAxNjcuODIgMjE4LjMgQzE2OS44OCAyMjAuNzIgMTcxLjk2IDIyMy4xMyAxNzQuMDMgMjI1LjU0IEMxNzcuMjYgMjI5LjI5IDE4MC40IDIzMy4xMSAxODMuNTIgMjM2Ljk1IEMxODYuMDggMjQwLjEgMTg4LjY3IDI0My4yMyAxOTEuMjYgMjQ2LjM3IEMxOTYuNjEgMjUyLjg0IDIwMS45MSAyNTkuMzIgMjA3IDI2NiBDMjA4LjU4IDI2OC4wNiAyMTAuMTcgMjcwLjEzIDIxMS43NSAyNzIuMTkgQzIxMi4xNyAyNzIuNzQgMjEyLjYgMjczLjI5IDIxMy4wMyAyNzMuODYgQzIxNi4xMyAyNzcuODggMjE5LjI0IDI4MS44OCAyMjIuMzggMjg1Ljg4IEMyMjIuODIgMjg2LjQ1IDIyMy4yNyAyODcuMDIgMjIzLjczIDI4Ny42MSBDMjI2LjIyIDI5MC43OCAyMjguNzUgMjkzLjkxIDIzMS4zMyAyOTcuMDEgQzIzMS44OCAyOTcuNjcgMjMyLjQzIDI5OC4zNCAyMzIuOTkgMjk5LjAzIEMyMzQuMDUgMzAwLjMxIDIzNS4xMiAzMDEuNTkgMjM2LjIgMzAyLjg1IEMyMzkuMjggMzA2LjU4IDI0MC42OSAzMDkuMTQgMjQxIDMxNCBDMjM0LjQ5IDMxMi40MiAyMjguNjggMzA5Ljk3IDIyMi43NSAzMDYuOTEgQzIxNy43NyAzMDQuMzQgMjEyLjY5IDMwMi4wMSAyMDcuNTYgMjk5Ljc1IEMyMDYuODIgMjk5LjQyIDIwNi4wNyAyOTkuMDkgMjA1LjMgMjk4Ljc1IEMyMDMuMjEgMjk3LjgzIDIwMS4xIDI5Ni45MSAxOTkgMjk2IEMxOTguNDIgMjk1Ljc1IDE5Ny44NCAyOTUuNDkgMTk3LjI0IDI5NS4yMyBDMTkyLjQxIDI5My4xNCAxODcuNTIgMjkxLjE5IDE4Mi42MiAyODkuMjUgQzE1OC4wNSAyNzkuNDUgMTU4LjA1IDI3OS40NSAxNDYuNjMgMjc0LjIgQzE0My42NCAyNzIuODQgMTQwLjY0IDI3MS40OSAxMzcuNjIgMjcwLjE5IEMxMzYuNjcgMjY5Ljc3IDEzNS43MSAyNjkuMzUgMTM0LjczIDI2OC45MiBDMTMxLjk0IDI2Ny45OCAxMjkuOTEgMjY3Ljc0IDEyNyAyNjggQzEyNS4xNyAyNjkuODMgMTI1LjY4IDI3Mi45MSAxMjUuNTcgMjc1LjQgQzEyNS41IDI3Ni43NyAxMjUuNDMgMjc4LjEzIDEyNS4zNSAyNzkuNSBDMTI1LjMyIDI4MC4yMiAxMjUuMjggMjgwLjk1IDEyNS4yNCAyODEuNjkgQzEyNC4xNiAzMDIuNDIgMTIyLjA0IDMyMi44NiAxMTguNDQgMzQzLjMxIEMxMTguMzMgMzQzLjkyIDExOC4yMyAzNDQuNTIgMTE4LjEyIDM0NS4xNSBDMTE3LjE0IDM1MC42NyAxMTYuMTggMzU1LjgxIDExNCAzNjEgQzExMy43MiAzNjIuMjYgMTEzLjQ3IDM2My41NCAxMTMuMjUgMzY0LjgxIEMxMTEuODUgMzcxLjQyIDEwOS4yNyAzNzcuNjQgMTA2LjgxIDM4My45MiBDMTA2LjAzIDM4NS45MiAxMDUuMjYgMzg3LjkzIDEwNC40OCAzODkuOTUgQzEwMy45OSAzOTEuMjEgMTAzLjUgMzkyLjQ4IDEwMyAzOTMuNzUgQzEwMi44OSAzOTQuMDMgMTAyLjg5IDM5NC4wMyAxMDIuMzYgMzk1LjQyIEMxMDIuMTQgMzk1Ljk4IDEwMS45MSAzOTYuNTQgMTAxLjY5IDM5Ny4xMSBDMTAxLjQ1IDM5Ny43MiAxMDEuMjEgMzk4LjMzIDEwMC45NiAzOTguOTYgQzEwMCA0MDEgMTAwIDQwMSA5OC41IDQwMy4yNyBDOTIuNTUgNDEyLjg5IDkzLjI5IDQyMi43OSA5My40MSA0MzMuODIgQzkzLjYgNDU1LjM3IDkyLjIgNDc1Ljg5IDg4IDQ5NyBDODcuOCA0OTguMDMgODcuNjEgNDk5LjA2IDg3LjQxIDUwMC4xMiBDODQuNjYgNTE0LjU5IDg0LjY2IDUxNC41OSA4MiA1MjEgQzgxLjY3IDUyMi4zNSA4MS4zOCA1MjMuNyA4MS4xMiA1MjUuMDYgQzc4LjMyIDUzOC4xMSA3Mi44MiA1NTAuNiA2OCA1NjMgQzY3LjgzIDU2My40NSA2Ny44MyA1NjMuNDUgNjYuOTYgNTY1LjcxIEM2Ni42MSA1NjYuNTkgNjYuMjcgNTY3LjQ2IDY1LjkyIDU2OC4zNiBDNjUuNjIgNTY5LjE0IDY1LjMyIDU2OS45MiA2NSA1NzAuNzMgQzYzLjM5IDU3NC4zOSA2MS4yNSA1NzcuNyA1OSA1ODEgQzU3LjU2IDU4MC4zNSA1Ny41NiA1ODAuMzUgNTYgNTc5IEM1NS40IDU3Ni41NSA1NS40IDU3Ni41NSA1NS4wOSA1NzMuNDYgQzU0Ljk3IDU3Mi4zMyA1NC44NCA1NzEuMiA1NC43MiA1NzAuMDQgQzU0LjYxIDU2OC44MiA1NC40OSA1NjcuNiA1NC4zOCA1NjYuMzggQzU0LjI1IDU2NS4xNCA1NC4xMiA1NjMuOSA1My45OSA1NjIuNjYgQzUzLjI2IDU1NS41MiA1Mi43NSA1NDguNCA1Mi40MSA1NDEuMjMgQzUyLjEyIDUzNi4wOCA1MS4wMiA1MzEuMyA0OS43NSA1MjYuMzEgQzQ4Ljk0IDUyMi43MiA0OC41MSA1MTkuMjEgNDguMTIgNTE1LjU2IEM0Ny4zNyA1MDguNjUgNDYuMDIgNTAxLjkxIDQ0LjUgNDk1LjEyIEM0NC4yOSA0OTQuMTYgNDQuMDcgNDkzLjE5IDQzLjg1IDQ5Mi4xOSBDNDMuNjQgNDkxLjI4IDQzLjQzIDQ5MC4zOCA0My4yMiA0ODkuNDUgQzQzLjEzIDQ4OS4wNCA0My4xMyA0ODkuMDQgNDIuNjUgNDg2Ljk5IEM0MiA0ODUgNDIgNDg1IDQwIDQ4MyBDMzQuNDcgNDgyLjg3IDMxLjg4IDQ4NS41NiAyNy45NiA0ODkuMjEgQzIxLjYyIDQ5NSAyMS42MiA0OTUgMTggNDk1IEMxOCA0OTUuNjYgMTggNDk2LjMyIDE4IDQ5NyBDMTUuOTYgNDk4LjMgMTMuOTQgNDk5LjQ4IDExLjgxIDUwMC42MiBDNC4xOCA1MDQuODQgNC4xOCA1MDQuODQgMC45OCA1MDYuOTIgQy01Ljk3IDUxMS40MyAtMTMuMTYgNTE1LjE2IC0yMC42MiA1MTguNzUgQy0yMS41OCA1MTkuMjEgLTIyLjUzIDUxOS42NyAtMjMuNTIgNTIwLjE0IEMtMjkuMTUgNTIyLjgxIC0zNC44IDUyNS4xMSAtNDAuNyA1MjcuMTEgQy00Mi43NCA1MjcuOSAtNDQuMiA1MjguOCAtNDYgNTMwIEMtNDcuNzEgNTMwLjUzIC00Ny43MSA1MzAuNTMgLTQ5LjU5IDUzMC45NSBDLTU0LjMxIDUzMi4wNSAtNTguOTIgNTMzLjQ1IC02My41NiA1MzQuODggQy03MiA1MzcuNDMgLTgwLjQ1IDUzOS44NCAtODkgNTQyIEMtODkuNjkgNTQyLjE4IC05MC4zOCA1NDIuMzYgLTkxLjEgNTQyLjU0IEMtOTkuMTkgNTQ0LjYxIC0xMDYuOTYgNTQ2LjMxIC0xMTUuMzMgNTQ2Ljc5IEMtMTE3Ljg4IDU0Ni45OSAtMTIwLjIgNTQ3LjQyIC0xMjIuNjkgNTQ4IEMtMTI4LjAxIDU0OS4xNyAtMTMzLjMzIDU0OS4zOSAtMTM4Ljc2IDU0OS41NyBDLTEzOS40NSA1NDkuNiAtMTQwLjE0IDU0OS42MyAtMTQwLjg1IDU0OS42NiBDLTE0MS40NiA1NDkuNjcgLTE0Mi4wNiA1NDkuNjkgLTE0Mi42OSA1NDkuNzEgQy0xNDQuNzkgNTQ5Ljk3IC0xNDYuNjEgNTUwLjQ0IC0xNDguNjQgNTUxIEMtMTUzLjQyIDU1Mi4yNCAtMTU4LjAyIDU1Mi4yOSAtMTYyLjk0IDU1Mi4yNyBDLTE2My40IDU1Mi4yNyAtMTYzLjQgNTUyLjI3IC0xNjUuNzUgNTUyLjI3IEMtMTY3LjcgNTUyLjI3IC0xNjkuNjQgNTUyLjI3IC0xNzEuNTkgNTUyLjI2IEMtMTc0LjU2IDU1Mi4yNSAtMTc3LjUyIDU1Mi4yNiAtMTgwLjQ5IDU1Mi4yNyBDLTE4Mi4zOSA1NTIuMjcgLTE4NC4yOSA1NTIuMjcgLTE4Ni4xOSA1NTIuMjcgQy0xODcuMDcgNTUyLjI3IC0xODcuOTUgNTUyLjI3IC0xODguODYgNTUyLjI4IEMtMTkzLjk4IDU1Mi4yNCAtMTk4LjEyIDU1MS41NiAtMjAzIDU1MCBDLTIwNS4xNyA1NDkuNzEgLTIwNS4xNyA1NDkuNzEgLTIwNi45NyA1NDkuNjYgQy0yMDcuNjQgNTQ5LjYzIC0yMDguMzIgNTQ5LjYgLTIwOS4wMSA1NDkuNTcgQy0yMTAuMzggNTQ5LjUyIC0yMTEuNzUgNTQ5LjQ4IC0yMTMuMTMgNTQ5LjQzIEMtMjE3LjQ0IDU0OS4yNCAtMjIwLjg5IDU0OC40NSAtMjI1IDU0NyBDLTIyNi42NCA1NDYuODIgLTIyOC4yOSA1NDYuNjkgLTIyOS45NCA1NDYuNjIgQy0yNDEuMTIgNTQ1Ljc1IC0yNTEuODIgNTQxLjgzIC0yNjIuMzggNTM4LjIyIEMtMjY1Ljc3IDUzNy4wNiAtMjY5LjE5IDUzNi4wMiAtMjcyLjYyIDUzNSBDLTI5Mi43NSA1MjguODEgLTMxMi42OCA1MTkuNjEgLTMzMC45NCA1MDkuMTIgQy0zMzEuNTQgNTA4Ljc4IC0zMzIuMTQgNTA4LjQ0IC0zMzIuNzYgNTA4LjA4IEMtMzM3LjAxIDUwNS42MyAtMzQxLjEyIDUwMy4wMSAtMzQ1LjE4IDUwMC4yNCBDLTM0Ny40IDQ5OC43MyAtMzQ5LjY4IDQ5Ny4zNSAtMzUyIDQ5NiBDLTM1Mi40MSA0OTUuNzIgLTM1Mi40MSA0OTUuNzIgLTM1NC41IDQ5NC4zMSBDLTM1Ny4yOSA0OTIuODUgLTM1OC45IDQ5Mi44OSAtMzYyIDQ5MyBDLTM2OC44IDUxMS45NSAtMzY3LjI4IDUzMy42IC0zNjcuMTQgNTUzLjQ3IEMtMzY3LjEyIDU1Ni43IC0zNjcuMTEgNTU5Ljk0IC0zNjcuMSA1NjMuMTcgQy0zNjcuMDggNTY5LjQ1IC0zNjcuMDQgNTc1LjcyIC0zNjcgNTgyIEMtMzcwLjgxIDU4Mi4xNCAtMzcwLjgxIDU4Mi4xNCAtMzcyLjU0IDU4MC44OCBDLTM4NC4yNiA1NjcuMzkgLTM5NC4yMyA1NDkuNTUgLTQwMS4xMSA1MzMuMDcgQy00MDIuNDkgNTI5Ljg1IC00MDQuMTMgNTI2Ljc2IC00MDUuNzUgNTIzLjY1IEMtNDA3LjM5IDUyMC4xNyAtNDA4LjY5IDUxNi42MSAtNDEwIDUxMyBDLTQxMC4zMSA1MTIuMTYgLTQxMC42MiA1MTEuMzIgLTQxMC45NCA1MTAuNDYgQy00MTEuOTcgNTA3LjY4IC00MTIuOTggNTA0LjkgLTQxNCA1MDIuMTIgQy00MTQuMzQgNTAxLjIgLTQxNC42OSA1MDAuMjcgLTQxNS4wNCA0OTkuMzEgQy00MTcgNDkzLjkzIC00MTguOCA0ODguNTQgLTQyMC4zOCA0ODMuMDQgQy00MjEgNDgxIC00MjEgNDgxIC00MjIuMDYgNDc4LjUgQy00MjMuMjUgNDc1LjMzIC00MjMuODEgNDcyLjE3IC00MjQuNDQgNDY4Ljg1IEMtNDI1LjAzIDQ2NS44NiAtNDI1LjczIDQ2Mi45IC00MjYuNDQgNDU5Ljk0IEMtNDI3LjYzIDQ1NC43OSAtNDI4LjY5IDQ0OS42NCAtNDI5LjYyIDQ0NC40NCBDLTQyOS43NiA0NDMuNzEgLTQyOS44OSA0NDIuOTkgLTQzMC4wMiA0NDIuMjQgQy00MzAuNzYgNDM4IC00MzEuMTUgNDMzLjg4IC00MzEuMzEgNDI5LjU2IEMtNDMxLjc1IDQyMy4yMiAtNDM0LjM1IDQxOS4wOSAtNDM4IDQxNCBDLTQzOC41MSA0MTMuMjggLTQzOS4wMSA0MTIuNTYgLTQzOS41MyA0MTEuODIgQy00NDAuNjUgNDEwLjI0IC00NDEuNzcgNDA4LjY1IC00NDIuODkgNDA3LjA2IEMtNDU2LjIyIDM4Ny44OCAtNDY2LjgxIDM2Ny44NSAtNDc1IDM0NiBDLTQ3NS40MyAzNDQuODggLTQ3NS44NSAzNDMuNzcgLTQ3Ni4yOCAzNDIuNjUgQy00NzguNDUgMzM2Ljg0IC00ODAuMzUgMzMwLjk4IC00ODIgMzI1IEMtNDgyLjMxIDMyMy45IC00ODIuNjIgMzIyLjggLTQ4Mi45MyAzMjEuNjYgQy00ODguMjggMzAxLjg1IC00OTAuOTIgMjgxLjQ2IC00OTIgMjYxIEMtNDkyLjA1IDI2MC4xMiAtNDkyLjEgMjU5LjIzIC00OTIuMTYgMjU4LjMyIEMtNDkyLjkyIDI0My40NyAtNDkxLjM0IDIyOC44NyAtNDg5LjY5IDIxNC4xMiBDLTQ4OS41OCAyMTMuMTYgLTQ4OS40NyAyMTIuMTkgLTQ4OS4zNiAyMTEuMTkgQy00ODkuMDUgMjA4LjM4IC00ODguNzIgMjA1LjU3IC00ODguMzkgMjAyLjc2IEMtNDg4LjI5IDIwMS45MiAtNDg4LjIgMjAxLjA5IC00ODguMSAyMDAuMjMgQy00ODcuNDYgMTk1LjA0IC00ODYuMyAxOTAuMjYgLTQ4NC42NiAxODUuMyBDLTQ4My45OCAxODIuOTUgLTQ4My42OSAxODAuNzUgLTQ4My41IDE3OC4zMSBDLTQ4My4xOSAxNzQuNjkgLTQ4Mi4zMyAxNzEuOTYgLTQ4MC43NSAxNjguNyBDLTQ3OS45NSAxNjYuODggLTQ3OS41MSAxNjUuMTIgLTQ3OS4wNiAxNjMuMTkgQy00NzggMTYwIC00NzggMTYwIC00NzYuMzQgMTU4LjgyIEMtNDczLjM4IDE1Ny43OCAtNDcwLjY0IDE1Ny43IC00NjcuNTUgMTU3LjY5IEMtNDY2LjkgMTU3LjY4IC00NjYuMjYgMTU3LjY3IC00NjUuNTkgMTU3LjY2IEMtNDYzLjQzIDE1Ny42MyAtNDYxLjI2IDE1Ny42MiAtNDU5LjEgMTU3LjYxIEMtNDU3LjU1IDE1Ny41OSAtNDU1Ljk5IDE1Ny41NyAtNDU0LjQ0IDE1Ny41NSBDLTQ1MS4xIDE1Ny41MSAtNDQ3Ljc1IDE1Ny40OCAtNDQ0LjQgMTU3LjQ1IEMtNDM5LjA5IDE1Ny40IC00MzMuNzggMTU3LjM0IC00MjguNDcgMTU3LjI4IEMtNDIwLjA0IDE1Ny4xOSAtNDExLjYyIDE1Ny4xIC00MDMuMTkgMTU3LjAyIEMtMzg4LjE3IDE1Ni44OCAtMzczLjE1IDE1Ni43MiAtMzU4LjEzIDE1Ni41NSBDLTM1Mi44NyAxNTYuNDkgLTM0Ny42MSAxNTYuNDQgLTM0Mi4zNSAxNTYuMzkgQy0zMTMuMDUgMTU2LjExIC0zMTMuMDUgMTU2LjExIC0zMDAuNTUgMTU1LjY2IEMtMjk5Ljc0IDE1NS42NCAtMjk4Ljk0IDE1NS42MiAtMjk4LjEgMTU1LjYgQy0yOTEuNjMgMTU1LjMgLTI4Ny4zNSAxNTMuMTggLTI4Mi4xNCAxNDkuMzIgQy0yODEuNDUgMTQ4LjgxIC0yODAuNzUgMTQ4LjMgLTI4MC4wNCAxNDcuNzcgQy0yNzkuNjcgMTQ3LjUgLTI3OS42NyAxNDcuNSAtMjc3LjgxIDE0Ni4xMiBDLTI3MC4zNSAxNDAuNjYgLTI2Mi43OSAxMzUuMzggLTI1NS4xMSAxMzAuMjMgQy0yNTQuMzUgMTI5LjcyIC0yNTMuNiAxMjkuMjEgLTI1Mi44MiAxMjguNjggQy0yNTIuNDggMTI4LjQ2IC0yNTIuNDggMTI4LjQ2IC0yNTAuOCAxMjcuMzMgQy0yNDkuMDIgMTI2LjAxIC0yNDcuNTUgMTI0LjU4IC0yNDYgMTIzIEMtMjQ0LjY3IDEyMi4yMSAtMjQzLjMxIDEyMS40NiAtMjQxLjk0IDEyMC43NSBDLTIzOC41NCAxMTguOTIgLTIzNS4zOSAxMTYuOTQgLTIzMi4yNSAxMTQuNjkgQy0yMjcuMzYgMTExLjIgLTIyMi4zMiAxMDguMDYgLTIxNy4xOSAxMDQuOTUgQy0yMTQuNDUgMTAzLjI4IC0yMTEuNzUgMTAxLjU2IC0yMDkuMDYgOTkuODEgQy0yMDAuNzUgOTQuNDkgLTE5Mi4xOCA4OS41OCAtMTgzLjY3IDg0LjU4IEMtMTgxLjA5IDgzLjA1IC0xNzguNTMgODEuNTEgLTE3NS45NyA3OS45NiBDLTE3MC45MSA3Ni45MSAtMTY1Ljc1IDc0LjA2IC0xNjAuNTYgNzEuMjUgQy0xNTkuNjEgNzAuNzMgLTE1OC42NSA3MC4yMSAtMTU3LjY3IDY5LjY4IEMtMTU0Ljc4IDY4LjEyIC0xNTEuODkgNjYuNTYgLTE0OSA2NSBDLTE0OC4xNyA2NC41NSAtMTQ3LjMzIDY0LjEgLTE0Ni40OCA2My42NCBDLTEzNS43IDU3Ljg0IC0xMjQuNzggNTIuNDQgLTExMy43MSA0Ny4yMyBDLTExMC4xNSA0NS41NSAtMTA2LjYzIDQzLjgxIC0xMDMuMTIgNDIgQy05Ni4zOCAzOC41OCAtODkuNCAzNS42NSAtODIuNDUgMzIuNjkgQy03Ny44NiAzMC43MyAtNzMuMzUgMjguNyAtNjguOTEgMjYuNDIgQy02NC4wOSAyMy45NyAtNTkuMTYgMjIuMSAtNTQuMDYgMjAuMzEgQy01Mi40MSAxOS43MyAtNTAuNzUgMTkuMTQgLTQ5LjEgMTguNTUgQy00OC4zOCAxOC4zIC00Ny42NiAxOC4wNSAtNDYuOTMgMTcuNzkgQy00NS4wOCAxNy4wMyAtNDMuNjMgMTYuMTQgLTQyIDE1IEMtNDAuODEgMTQuNTQgLTM5LjYgMTQuMTMgLTM4LjM4IDEzLjc1IEMtMzMuODQgMTIuMjkgLTI5LjM2IDEwLjcyIC0yNC44OCA5LjEyIEMtMTguNDcgNi44NSAtMTIuMDMgNC42NSAtNS41NiAyLjU2IEMtMS4xMSAxLjExIC0xLjExIDEuMTEgMCAwIFogIi8+IDxwYXRoIGZpbGw9IiM5NGIxYzEiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDUyOCwxMTcpIiBkPSJNMCAwIEMwLjY2IDAuMTcgMC42NiAwLjE3IDQgMSBDNCA1LjI5IDQgOS41OCA0IDE0IEMzLjUgMTQuMTYgMy41IDE0LjE2IDEgMTUgQy0wLjczIDE4LjQ2IDAuMDUgMjIuNjggMC4yMSAyNi41IEMwLjMyIDMxLjYgMC4zMiAzMS42IC0xLjQ1IDMzLjc5IEMtMS43IDMzLjk5IC0xLjcgMzMuOTkgLTMgMzUgQy00LjAzIDM4LjA4IC00LjE0IDQwLjI2IC00LjE4IDQzLjQ5IEMtNC4xOSA0NC42MiAtNC4yIDQ1Ljc0IC00LjIyIDQ2LjkgQy00LjIyIDQ4LjEzIC00LjIzIDQ5LjM2IC00LjI0IDUwLjU5IEMtNC4yNCA1MS4yMiAtNC4yNSA1MS44NCAtNC4yNSA1Mi40OCBDLTQuMjcgNTUuNzkgLTQuMjkgNTkuMSAtNC4zIDYyLjQgQy00LjMxIDY1Ljc5IC00LjM0IDY5LjE4IC00LjM4IDcyLjU3IEMtNC40MSA3NS4xOSAtNC40MSA3Ny44MiAtNC40MiA4MC40NSBDLTQuNDIgODEuNjkgLTQuNDMgODIuOTQgLTQuNDUgODQuMTkgQy00LjU2IDkxLjcgLTMuODUgOTcuNzUgLTAuOSAxMDQuNjkgQzAuNCAxMDguMDMgMC40IDExMC42MiAwLjI1IDExNC4xOSBDMC4yMSAxMTUuMjkgMC4xOCAxMTYuNCAwLjE0IDExNy41NCBDMC4wOSAxMTguMzUgMC4wNSAxMTkuMTYgMCAxMjAgQzEuMzIgMTIwLjMzIDIuNjQgMTIwLjY2IDQgMTIxIEMzLjk5IDEyMS40OCAzLjk5IDEyMS40OCAzLjkzIDEyMy44OSBDMy45MSAxMjUuMTUgMy44OSAxMjYuNDIgMy44OCAxMjcuNjkgQzMuODYgMTI4LjMxIDMuODQgMTI4Ljk0IDMuODIgMTI5LjU4IEMzLjc4IDEzMy41MSA0LjIgMTM2LjQxIDYgMTQwIEM2LjMzIDE0MC4zMyA2LjY2IDE0MC42NiA3IDE0MSBDNy4wNyAxNDIuNjkgNy4wOCAxNDQuMzggNy4wNiAxNDYuMDYgQzcuMDUgMTQ2Ljk4IDcuMDQgMTQ3LjkgNy4wNCAxNDguODUgQzcuMDMgMTQ5LjIgNy4wMyAxNDkuMiA3IDE1MSBDLTIwLjc5IDE1MS4xNyAtNDguNTggMTUxLjM0IC03Ni4zOCAxNTEuNSBDLTc3LjQgMTUxLjUxIC03OC40MiAxNTEuNTEgLTc5LjQ4IDE1MS41MiBDLTEzMi4wNyAxNTEuODIgLTE4NC42NiAxNTIuMSAtMjM3LjI1IDE1Mi4wNiBDLTIzNy44MSAxNTIuMDYgLTIzNy44MSAxNTIuMDYgLTI0MC42MiAxNTIuMDYgQy0yNTMuNDIgMTUyLjA1IC0yNjYuMjEgMTUyLjAzIC0yNzkgMTUyIEMtMjc5LjEzIDE1MC4xIC0yNzkuMTMgMTUwLjEgLTI3OSAxNDggQy0yNzYuOTIgMTQ2LjQgLTI3Ni45MiAxNDYuNCAtMjc0LjE5IDE0NC45NCBDLTI3MC45OCAxNDMuMTkgLTI2OC41NiAxNDEuNTkgLTI2NiAxMzkgQy0yNjUuMzQgMTM5IC0yNjQuNjggMTM5IC0yNjQgMTM5IEMtMjYzLjczIDEzOC40IC0yNjMuNDYgMTM3LjggLTI2My4xOSAxMzcuMTkgQy0yNjEuMjYgMTMzLjY0IC0yNTguMTggMTMyLjQ0IC0yNTQuNSAxMzEuMDYgQy0yNTAuOTkgMTI5LjU3IC0yNDguMjUgMTI3LjM3IC0yNDUuNjggMTI0LjU1IEMtMjQzLjU0IDEyMi41OCAtMjQxLjI3IDEyMS40NSAtMjM4LjY5IDEyMC4xMiBDLTIzNC44MiAxMTguMDcgLTIzMS41NiAxMTYgLTIyOC4zMiAxMTMuMDggQy0yMjYuMTQgMTExLjI5IC0yMjMuNTEgMTEwLjI2IC0yMjEgMTA5IEMtMjE5Ljc2IDEwOC4wOCAtMjE4LjUzIDEwNy4xNCAtMjE3LjMxIDEwNi4xOSBDLTIxNC4yMiAxMDMuNzkgLTIxMS4wOSAxMDEuODkgLTIwNy42MiAxMDAuMDYgQy0xOTMuNyA5Mi42OCAtMTkzLjcgOTIuNjggLTE5MC45NiA4OC4zNSBDLTE4OS42MiA4Ni40NiAtMTg4LjQ5IDg2LjQ1IC0xODYuMjUgODYuMDYgQy0xODIuODkgODUuMzIgLTE4MC41MiA4NC4yNyAtMTc3LjcxIDgyLjIyIEMtMTc1LjQ2IDgwLjYxIC0xNzMuMTEgNzkuMTkgLTE3MC43NSA3Ny43NSBDLTE2OS45IDc3LjIzIC0xNjkuMDUgNzYuNzEgLTE2OC4xNyA3Ni4xNyBDLTE2NiA3NSAtMTY2IDc1IC0xNjQgNzUgQy0xNjMuODQgNzQuMzQgLTE2My44NCA3NC4zNCAtMTYzIDcxIEMtMTYyLjIgNzEuMTIgLTE2MS4zOSA3MS4yNSAtMTYwLjU2IDcxLjM4IEMtMTU2LjMxIDcxLjQxIC0xNTMuNTggNjguOTIgLTE1MC4yNSA2Ni41MyBDLTE0OC4xOSA2NS4xMyAtMTQ2LjMgNjQuMTYgLTE0NCA2My4yNSBDLTE0MSA2MiAtMTQxIDYyIC0xNDAgNjAgQy0xMzkuMiA1OS44OCAtMTM4LjM5IDU5Ljc1IC0xMzcuNTYgNTkuNjIgQy0xMzYuNzIgNTkuNDIgLTEzNS44NyA1OS4yMSAtMTM1IDU5IEMtMTM0Ljg3IDU4LjY3IC0xMzQuODcgNTguNjcgLTEzNC4xOSA1NyBDLTEzMy44IDU2LjM0IC0xMzMuNCA1NS42OCAtMTMzIDU1IEMtMTMxLjQyIDU0LjY5IC0xMzEuNDIgNTQuNjkgLTEyOS40NCA1NC41NiBDLTEyNC45NSA1NC4yMyAtMTIxLjk5IDUyLjU2IC0xMTguMTggNTAuMjcgQy0xMTYuMTYgNDkuMDkgLTExNC4xNyA0OC4xOCAtMTEyIDQ3LjMxIEMtMTA5IDQ2IC0xMDkgNDYgLTEwOCA0NCBDLTEwNi4zMyA0My4zMyAtMTA0LjY3IDQyLjY3IC0xMDMgNDIgQy0xMDIuNjcgNDEuMzQgLTEwMi4zNCA0MC42OCAtMTAyIDQwIEMtMTAwLjEgMzkuNTggLTEwMC4xIDM5LjU4IC05Ny42MiAzOS4yNSBDLTkyLjI3IDM4LjMgLTg4LjE5IDM2LjE5IC04My41NCAzMy40NCBDLTgxIDMyIC04MSAzMiAtNzguMjMgMzAuOTEgQy03NiAzMCAtNzYgMzAgLTc1LjEyIDI4LjQ0IEMtNzQgMjcgLTc0IDI3IC03Mi4zNiAyNi42NiBDLTcxLjczIDI2LjU4IC03MS4wOSAyNi41MSAtNzAuNDQgMjYuNDQgQy02OS44NyAyNi4zNyAtNjkuODcgMjYuMzcgLTY3IDI2IEMtNjYuNjcgMjUuMzQgLTY2LjM0IDI0LjY4IC02NiAyNCBDLTYzLjgyIDIzLjQ0IC02My44MiAyMy40NCAtNjEuMTIgMjMgQy01Ny44MiAyMi40NiAtNTUuNzMgMjEuOSAtNTMgMjAgQy01MC45MyAxOS40MiAtNDguODUgMTguOTkgLTQ2Ljc0IDE4LjU2IEMtNDYuMTcgMTguMzggLTQ1LjU5IDE4LjE5IC00NSAxOCBDLTQ0LjY3IDE3LjM0IC00NC4zNCAxNi42OCAtNDQgMTYgQy00Mi4yMiAxNS40MSAtNDAuNDMgMTUuMDUgLTM4LjU5IDE0LjY2IEMtMzguMDcgMTQuNDQgLTM3LjU0IDE0LjIyIC0zNyAxNCBDLTM2LjY3IDEzLjAxIC0zNi4zNCAxMi4wMiAtMzYgMTEgQy0zMy45NyAxMC41NiAtMzMuOTcgMTAuNTYgLTMxLjUgMTAuNDQgQy0yOS4wMyAxMC4zMSAtMjkuMDMgMTAuMzEgLTI3IDEwIEMtMjYuNjcgOS4zNCAtMjYuMzQgOC42OCAtMjYgOCBDLTIzLjg2IDcuNTcgLTIxLjc5IDcuMjUgLTE5LjYyIDcgQy0xMi45NCA2LjIxIC0xMi45NCA2LjIxIC0xMCA0IEMtOC40NyAzLjQ0IC02LjkzIDIuOTIgLTUuMzggMi40NCBDLTEuMSAxLjEgLTEuMSAxLjEgMCAwIFogIi8+IDxwYXRoIGZpbGw9IiM5NGIxYzEiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIzOSwyNjkpIiBkPSJNMCAwIEMtMC4zMyAwLjY2IC0wLjY2IDEuMzIgLTEgMiBDLTIuOTEgMi4zMiAtMi45MSAyLjMyIC01LjUgMi40MSBDLTYuNSAyLjQ1IC03LjQ5IDIuNDkgLTguNTEgMi41MyBDLTkuNjMgMi41NiAtMTAuNzUgMi41OSAtMTEuODkgMi42MiBDLTEyLjQ4IDIuNjQgLTEzLjA2IDIuNjYgLTEzLjY2IDIuNjggQy0zMS43MiAzLjI1IC00OS44IDMuMTEgLTY3Ljg3IDMuMDcgQy03Mi42MyAzLjA2IC03Ny40IDMuMDUgLTgyLjE3IDMuMDUgQy05MS40NSAzLjA0IC0xMDAuNzIgMy4wMiAtMTEwIDMgQy0xMTAgMi4zNCAtMTEwIDEuNjggLTExMCAxIEMtOTguNzYgMC44NyAtODcuNTIgMC43NCAtNzYuMjggMC42MSBDLTcxLjA1IDAuNTUgLTY1LjgzIDAuNDkgLTYwLjYxIDAuNDMgQy01NS41NSAwLjM3IC01MC40OSAwLjMxIC00NS40NCAwLjI1IEMtNDMuNTMgMC4yMyAtNDEuNjEgMC4yMSAtMzkuNyAwLjE5IEMtMjYuNDcgMC4wMyAtMTMuMjQgLTAuMDMgMCAwIFogIi8+IDxwYXRoIGZpbGw9IiM5NGIxYzEiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDY4LDI4NSkiIGQ9Ik0wIDAgQzIuMTkgMC4zMSAyLjE5IDAuMzEgNCAxIEM0LjIgNS45NyAzLjU5IDkuMjMgMiAxNCBDMS40MyAxNi41NyAwLjk5IDE5LjE1IDAuNTYgMjEuNzUgQzAuNSAyMi4xMSAwLjUgMjIuMTEgMC4xOCAyMy45NSBDLTAuNTEgMjcuOTcgLTEuMTYgMzEuOTkgLTEuNzkgMzYuMDEgQy0xLjg1IDM2LjQxIC0xLjg1IDM2LjQxIC0yLjE4IDM4LjQ3IEMtMi40MyA0MC4wNSAtMi42NyA0MS42MiAtMi45MSA0My4yIEMtMi45NyA0My41NiAtMi45NyA0My41NiAtMy4yNSA0NS4zNyBDLTMuMzUgNDYgLTMuNDUgNDYuNjMgLTMuNTUgNDcuMjggQy00LjA2IDQ5LjIzIC00LjY2IDUwLjQ5IC02IDUyIEMtMTAuNDMgNTEuNTcgLTEwLjQzIDUxLjU3IC0xMiA1MCBDLTEyLjk0IDM1LjIzIC0xMS42NyAxMy4yNCAtMS41MiAxLjI1IEMtMS4wMiAwLjgzIC0wLjUyIDAuNDIgMCAwIFogIi8+IDxwYXRoIGZpbGw9IiM5NGIxYzEiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE4OS41NjI1LDI4NS43NSkiIGQ9Ik0wIDAgQzEuMTIgLTAuMDIgMi4yMyAtMC4wNCAzLjM4IC0wLjA2IEMxNC4zMiAtMC4xMSAyNC4wMSAxLjk1IDMzLjY5IDcuMDYgQzM0LjM3IDcuNDIgMzUuMDYgNy43NyAzNS43NiA4LjEzIEM0MC43MiAxMC43NSA0NS4xOCAxMy41OSA0OS40NCAxNy4yNSBDNTAuMTkgMTcuODIgNTAuOTQgMTguNCA1MS43MSAxOC45OSBDNjUuNjIgMzAuMjggNzQuNzcgNDYuODggNzcuMTIgNjQuNTMgQzc5LjU1IDg5LjYgNzQuNDcgMTA5Ljc2IDU4LjQ0IDEyOS4yNSBDNTEuNjIgMTM2Ljk1IDQzLjI5IDE0Mi4xNyAzNC40NCAxNDcuMjUgQzMzLjY1IDE0Ny43NyAzMi44NiAxNDguMyAzMi4wNSAxNDguODQgQzE3LjE1IDE1Ni45IC01LjA3IDE1Ni41NiAtMjEgMTUyLjE1IEMtNDEuNzQgMTQ1LjcxIC01Ny45OCAxMzIgLTY4LjM4IDExMy4wNiBDLTc2Ljk4IDk2LjQzIC04MC4yMiA3Ni4xNCAtNzUuMDYgNTcuODEgQy03MS4zOSA0Ny4wNiAtNjYuMjMgMzUuNzMgLTU4LjU2IDI3LjI1IEMtNTguMzggMjcuMDQgLTU4LjM4IDI3LjA0IC01Ny40NCAyNS45OSBDLTUwLjY1IDE4LjQ1IC00My4zNyAxMy4yIC0zNC41NiA4LjI1IEMtMzMuNzMgNy43MyAtMzIuOTEgNy4yIC0zMi4wNSA2LjY2IEMtMjkuMjkgNS4wOSAtMjYuNTkgNC4xMSAtMjMuNTYgMy4xMiBDLTIyLjU1IDIuNzkgLTIxLjU0IDIuNDYgLTIwLjUgMi4xMiBDLTEzLjYzIDAuMDkgLTcuMTMgMC4wMyAwIDAgWiBNLTAuNTYgMjkuMjUgQy0wLjU2IDI5LjU4IC0wLjU2IDI5LjkxIC0wLjU2IDMwLjI1IEM0LjcyIDMwLjI1IDEwIDMwLjI1IDE1LjQ0IDMwLjI1IEMxNS40NCAyOS45MiAxNS40NCAyOS41OSAxNS40NCAyOS4yNSBDMTAuMTYgMjkuMjUgNC44OCAyOS4yNSAtMC41NiAyOS4yNSBaIE02LjQ0IDQ0LjI1IEM3LjQ0IDQ2LjI1IDcuNDQgNDYuMjUgNy40NCA0Ni4yNSBaIE01LjQ0IDQ2LjI1IEM2LjQ0IDQ4LjI1IDYuNDQgNDguMjUgNi40NCA0OC4yNSBaIE00LjQ0IDQ4LjI1IEM0LjQ0IDUwLjIzIDQuNDQgNTIuMjEgNC40NCA1NC4yNSBDNC43NyA1NC4yNSA1LjEgNTQuMjUgNS40NCA1NC4yNSBDNS40NCA1Mi4yNyA1LjQ0IDUwLjI5IDUuNDQgNDguMjUgQzUuMTEgNDguMjUgNC43OCA0OC4yNSA0LjQ0IDQ4LjI1IFogTTM2LjQ0IDQ4LjI1IEMzNy40NCA1MC4yNSAzNy40NCA1MC4yNSAzNy40NCA1MC4yNSBaIE00Ni40NCA0OC4yNSBDNDcuNDQgNTAuMjUgNDcuNDQgNTAuMjUgNDcuNDQgNTAuMjUgWiBNNDcuNDQgNTAuMjUgQzQ4LjQ0IDUyLjI1IDQ4LjQ0IDUyLjI1IDQ4LjQ0IDUyLjI1IFogTS0zNC41NiA1Mi4yNSBDLTMzLjU2IDU0LjI1IC0zMy41NiA1NC4yNSAtMzMuNTYgNTQuMjUgWiBNMzkuNDQgNTIuMjUgQzQwLjQ0IDU0LjI1IDQwLjQ0IDU0LjI1IDQwLjQ0IDU0LjI1IFogTTQ4LjQ0IDUyLjI1IEM0OS40NCA1NC4yNSA0OS40NCA1NC4yNSA0OS40NCA1NC4yNSBaIE00MC40NCA1NC4yNSBDNDEuNDQgNTYuMjUgNDEuNDQgNTYuMjUgNDEuNDQgNTYuMjUgWiBNLTM1LjU2IDU1LjI1IEMtMzQuNTYgNTcuMjUgLTM0LjU2IDU3LjI1IC0zNC41NiA1Ny4yNSBaIE01LjQ0IDU1LjI1IEM2LjQ0IDU3LjI1IDYuNDQgNTcuMjUgNi40NCA1Ny4yNSBaIE01MC40NCA1NS4yNSBDNTEuNDQgNTguMjUgNTEuNDQgNTguMjUgNTEuNDQgNTguMjUgWiBNLTM2LjU2IDU3LjI1IEMtMzUuNTYgNTkuMjUgLTM1LjU2IDU5LjI1IC0zNS41NiA1OS4yNSBaIE00MS40NCA1Ny4yNSBDNDIuNDQgNTkuMjUgNDIuNDQgNTkuMjUgNDIuNDQgNTkuMjUgWiBNNi40NCA1OC4yNSBDNy40NCA2MC4yNSA3LjQ0IDYwLjI1IDcuNDQgNjAuMjUgWiBNNTEuNDQgNTguMjUgQzUyLjQ0IDYxLjI1IDUyLjQ0IDYxLjI1IDUyLjQ0IDYxLjI1IFogTS0zNy41NiA1OS4yNSBDLTM2LjU2IDYxLjI1IC0zNi41NiA2MS4yNSAtMzYuNTYgNjEuMjUgWiBNNDIuNDQgNjAuMjUgQzQyLjQ0IDYyLjIzIDQyLjQ0IDY0LjIxIDQyLjQ0IDY2LjI1IEM0Mi43NyA2Ni4yNSA0My4xIDY2LjI1IDQzLjQ0IDY2LjI1IEM0My40NCA2NC4yNyA0My40NCA2Mi4yOSA0My40NCA2MC4yNSBDNDMuMTEgNjAuMjUgNDIuNzggNjAuMjUgNDIuNDQgNjAuMjUgWiBNOC40NCA2MS4yNSBDOS40NCA2My4yNSA5LjQ0IDYzLjI1IDkuNDQgNjMuMjUgWiBNNTIuNDQgNjEuMjUgQzUzLjQ0IDYzLjI1IDUzLjQ0IDYzLjI1IDUzLjQ0IDYzLjI1IFogTS0zOC41NiA2Mi4yNSBDLTM3LjU2IDY0LjI1IC0zNy41NiA2NC4yNSAtMzcuNTYgNjQuMjUgWiBNNTMuNDQgNjMuMjUgQzU0LjQ0IDY2LjI1IDU0LjQ0IDY2LjI1IDU0LjQ0IDY2LjI1IFogTS0zOS41NiA2NS4yNSBDLTM5LjU2IDY3LjU2IC0zOS41NiA2OS44NyAtMzkuNTYgNzIuMjUgQy0zOS4yMyA3Mi4yNSAtMzguOSA3Mi4yNSAtMzguNTYgNzIuMjUgQy0zOC41NiA2OS45NCAtMzguNTYgNjcuNjMgLTM4LjU2IDY1LjI1IEMtMzguODkgNjUuMjUgLTM5LjIyIDY1LjI1IC0zOS41NiA2NS4yNSBaIE00MS40NCA2Ni4yNSBDNDIuNDQgNjguMjUgNDIuNDQgNjguMjUgNDIuNDQgNjguMjUgWiBNNTQuNDQgNjcuMjUgQzU0LjQ0IDc0LjE4IDU0LjQ0IDgxLjExIDU0LjQ0IDg4LjI1IEM1NC43NyA4OC4yNSA1NS4xIDg4LjI1IDU1LjQ0IDg4LjI1IEM1NS40NCA4MS4zMiA1NS40NCA3NC4zOSA1NS40NCA2Ny4yNSBDNTUuMTEgNjcuMjUgNTQuNzggNjcuMjUgNTQuNDQgNjcuMjUgWiBNLTQwLjU2IDcyLjI1IEMtNDAuNTYgNzQuODkgLTQwLjU2IDc3LjUzIC00MC41NiA4MC4yNSBDLTQwLjIzIDgwLjI1IC0zOS45IDgwLjI1IC0zOS41NiA4MC4yNSBDLTM5LjU2IDc3LjYxIC0zOS41NiA3NC45NyAtMzkuNTYgNzIuMjUgQy0zOS44OSA3Mi4yNSAtNDAuMjIgNzIuMjUgLTQwLjU2IDcyLjI1IFogTTIyLjQ0IDczLjI1IEMyNi40NCA3NC4yNSAyNi40NCA3NC4yNSAyNi40NCA3NC4yNSBaIE0tMzkuNTYgODAuMjUgQy0zOS41NiA4My4yMiAtMzkuNTYgODYuMTkgLTM5LjU2IDg5LjI1IEMtMzkuMjMgODkuMjUgLTM4LjkgODkuMjUgLTM4LjU2IDg5LjI1IEMtMzguNTYgODYuMjggLTM4LjU2IDgzLjMxIC0zOC41NiA4MC4yNSBDLTM4Ljg5IDgwLjI1IC0zOS4yMiA4MC4yNSAtMzkuNTYgODAuMjUgWiBNNTMuNDQgODguMjUgQzU0LjQ0IDkxLjI1IDU0LjQ0IDkxLjI1IDU0LjQ0IDkxLjI1IFogTS0zOC41NiA5MC4yNSBDLTM3LjU2IDkzLjI1IC0zNy41NiA5My4yNSAtMzcuNTYgOTMuMjUgWiBNNTIuNDQgOTEuMjUgQzUzLjQ0IDkzLjI1IDUzLjQ0IDkzLjI1IDUzLjQ0IDkzLjI1IFogTS0zNy41NiA5My4yNSBDLTM2LjU2IDk1LjI1IC0zNi41NiA5NS4yNSAtMzYuNTYgOTUuMjUgWiBNNTEuNDQgOTQuMjUgQzUyLjQ0IDk2LjI1IDUyLjQ0IDk2LjI1IDUyLjQ0IDk2LjI1IFogTS0zNi41NiA5NS4yNSBDLTM1LjU2IDk3LjI1IC0zNS41NiA5Ny4yNSAtMzUuNTYgOTcuMjUgWiBNLTM1LjU2IDk3LjI1IEMtMzQuNTYgOTkuMjUgLTM0LjU2IDk5LjI1IC0zNC41NiA5OS4yNSBaIE01MC40NCA5Ny4yNSBDNTEuNDQgOTkuMjUgNTEuNDQgOTkuMjUgNTEuNDQgOTkuMjUgWiBNNDkuNDQgOTkuMjUgQzUwLjQ0IDEwMS4yNSA1MC40NCAxMDEuMjUgNTAuNDQgMTAxLjI1IFogTS0zNC41NiAxMDAuMjUgQy0zMy41NiAxMDIuMjUgLTMzLjU2IDEwMi4yNSAtMzMuNTYgMTAyLjI1IFogTS0zMy41NiAxMDIuMjUgQy0zMi41NiAxMDQuMjUgLTMyLjU2IDEwNC4yNSAtMzIuNTYgMTA0LjI1IFogTTQ3LjQ0IDEwMi4yNSBDNDguNDQgMTA0LjI1IDQ4LjQ0IDEwNC4yNSA0OC40NCAxMDQuMjUgWiBNLTI4LjU2IDEwOC4yNSBDLTI4LjIzIDEwOS4yNCAtMjcuOSAxMTAuMjMgLTI3LjU2IDExMS4yNSBDLTI2LjkgMTEwLjkyIC0yNi4yNCAxMTAuNTkgLTI1LjU2IDExMC4yNSBDLTI2LjU1IDEwOS41OSAtMjcuNTQgMTA4LjkzIC0yOC41NiAxMDguMjUgWiBNLTIuNTYgMTI0LjI1IEMxLjQ0IDEyNS4yNSAxLjQ0IDEyNS4yNSAxLjQ0IDEyNS4yNSBaIE0xMi40NCAxMjQuMjUgQzEyLjQ0IDEyNC41OCAxMi40NCAxMjQuOTEgMTIuNDQgMTI1LjI1IEMxNC4wOSAxMjUuMjUgMTUuNzQgMTI1LjI1IDE3LjQ0IDEyNS4yNSBDMTcuNDQgMTI0LjkyIDE3LjQ0IDEyNC41OSAxNy40NCAxMjQuMjUgQzE1Ljc5IDEyNC4yNSAxNC4xNCAxMjQuMjUgMTIuNDQgMTI0LjI1IFogIi8+IDxwYXRoIGZpbGw9IiM5NGIxYzEiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDM5MSwyOTYpIiBkPSJNMCAwIEMwLjk5IDAuNTIgMS45OSAxLjA1IDMuMDEgMS41OSBDMTkuODMgMTEuMjMgMzEuMjggMjguNjQgMzYuNjcgNDYuOTEgQzQwLjcxIDYzLjA5IDM5Ljc2IDgxLjc3IDMzIDk3IEMzMi41OSA5OC4wMyAzMi4xOCA5OS4wNyAzMS43NSAxMDAuMTMgQzI0LjM0IDExNi45OSA4LjAyIDEzMi4yNSAtOC45OSAxMzkuMjQgQy0yOC4xNyAxNDYuNjkgLTUwLjIyIDE0Ni41NCAtNjkuMTkgMTM4LjY4IEMtNzguMzkgMTM0LjM4IC04Ny4xNyAxMjguNTcgLTk0IDEyMSBDLTk0LjY2IDEyMC4zNSAtOTUuMzMgMTE5LjcgLTk2LjAxIDExOS4wNCBDLTExMC4yOSAxMDQuNDYgLTExNi4zMyA4NC40IC0xMTYuMzggNjQuMzggQy0xMTYuMDcgNDUuNTUgLTEwNy45NyAyNi44MiAtOTQuNjUgMTMuNTQgQy05My43NyAxMi42OSAtOTIuODggMTEuODUgLTkyIDExIEMtOTEuMzMgMTAuMzQgLTkwLjY2IDkuNjcgLTg5Ljk4IDguOTkgQy02NS4yNyAtMTQuMiAtMjguNzQgLTE1Ljk3IDAgMCBaIE0tNTQgMTkgQy01NCAxOS4zMyAtNTQgMTkuNjYgLTU0IDIwIEMtNDguNzIgMjAgLTQzLjQ0IDIwIC0zOCAyMCBDLTM4IDE5LjY3IC0zOCAxOS4zNCAtMzggMTkgQy00My4yOCAxOSAtNDguNTYgMTkgLTU0IDE5IFogTS00NiAzMyBDLTQ1IDM1IC00NSAzNSAtNDUgMzUgWiBNLTQ3IDM1IEMtNDYgMzcgLTQ2IDM3IC00NiAzNyBaIE0tOSAzNiBDLTggMzggLTggMzggLTggMzggWiBNLTg1IDM4IEMtODQgNDAgLTg0IDQwIC04NCA0MCBaIE0tNDggNDAgQy00NyA0NCAtNDcgNDQgLTQ3IDQ0IFogTS02IDQwIEMtNSA0MiAtNSA0MiAtNSA0MiBaIE0tODcgNDEgQy04NiA0MyAtODYgNDMgLTg2IDQzIFogTS04OCA0MyBDLTg3IDQ1IC04NyA0NSAtODcgNDUgWiBNLTQgNDMgQy0zIDQ1IC0zIDQ1IC0zIDQ1IFogTS04OSA0NSBDLTg4IDQ3IC04OCA0NyAtODggNDcgWiBNLTEyIDQ1IEMtMTEgNDggLTExIDQ4IC0xMSA0OCBaIE0tMyA0NSBDLTIgNDcgLTIgNDcgLTIgNDcgWiBNLTQ3IDQ2IEMtNDYgNDkgLTQ2IDQ5IC00NiA0OSBaIE0tOTEgNDggQy05MCA1MCAtOTAgNTAgLTkwIDUwIFogTS00NiA0OSBDLTQ1IDUxIC00NSA1MSAtNDUgNTEgWiBNLTEgNDkgQzAgNTEgMCA1MSAwIDUxIFogTS05MiA1MSBDLTkxIDU1IC05MSA1NSAtOTEgNTUgWiBNLTExIDUxIEMtMTAgNTQgLTEwIDU0IC0xMCA1NCBaIE0wIDUxIEMxIDUzIDEgNTMgMSA1MyBaIE0tOTMgNTYgQy05MiA1OCAtOTIgNTggLTkyIDU4IFogTS0xMiA1NiBDLTExIDU5IC0xMSA1OSAtMTEgNTkgWiBNMSA1NyBDMSA1OC45OCAxIDYwLjk2IDEgNjMgQzEuMzMgNjMgMS42NiA2MyAyIDYzIEMyIDYxLjAyIDIgNTkuMDQgMiA1NyBDMS42NyA1NyAxLjM0IDU3IDEgNTcgWiBNLTk0IDU4IEMtOTMgNjIgLTkzIDYyIC05MyA2MiBaIE0yIDY1IEMzIDY4IDMgNjggMyA2OCBaIE0tOTQgNzEgQy05NCA3Mi42NSAtOTQgNzQuMyAtOTQgNzYgQy05My42NyA3NiAtOTMuMzQgNzYgLTkzIDc2IEMtOTMgNzQuMzUgLTkzIDcyLjcgLTkzIDcxIEMtOTMuMzMgNzEgLTkzLjY2IDcxIC05NCA3MSBaIE0xIDcxIEMxIDcyLjk4IDEgNzQuOTYgMSA3NyBDMS4zMyA3NyAxLjY2IDc3IDIgNzcgQzIgNzUuMDIgMiA3My4wNCAyIDcxIEMxLjY3IDcxIDEuMzQgNzEgMSA3MSBaIE0tOTMgNzYgQy05MiA3OSAtOTIgNzkgLTkyIDc5IFogTS05MiA3OSBDLTkxIDgyIC05MSA4MiAtOTEgODIgWiBNMCA4MCBDMSA4MyAxIDgzIDEgODMgWiBNLTEgODMgQzAgODUgMCA4NSAwIDg1IFogTS05MSA4NCBDLTkwIDg2IC05MCA4NiAtOTAgODYgWiBNLTkwIDg2IEMtODkgODggLTg5IDg4IC04OSA4OCBaIE0tNCA4OSBDLTMgOTEgLTMgOTEgLTMgOTEgWiBNLTYgOTIgQy01IDk0IC01IDk0IC01IDk0IFogTS04NiA5MyBDLTg1IDk1IC04NSA5NSAtODUgOTUgWiBNLTggOTUgQy03IDk3IC03IDk3IC03IDk3IFogTS01NiAxMTQgQy01NiAxMTQuMzMgLTU2IDExNC42NiAtNTYgMTE1IEMtNTMuNjkgMTE1IC01MS4zOCAxMTUgLTQ5IDExNSBDLTQ5IDExNC42NyAtNDkgMTE0LjM0IC00OSAxMTQgQy01MS4zMSAxMTQgLTUzLjYyIDExNCAtNTYgMTE0IFogTS00MSAxMTQgQy00MSAxMTQuMzMgLTQxIDExNC42NiAtNDEgMTE1IEMtMzkuMDIgMTE1IC0zNy4wNCAxMTUgLTM1IDExNSBDLTM1IDExNC42NyAtMzUgMTE0LjM0IC0zNSAxMTQgQy0zNi45OCAxMTQgLTM4Ljk2IDExNCAtNDEgMTE0IFogIi8+IDxwYXRoIGZpbGw9IiM5NGIxYzEiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDI2Ny41MjQ0MTQwNjI1LDQ1OS44Njk2Mjg5MDYyNSkiIGQ9Ik0wIDAgQzMuNzMgMC4wMSA3LjQ1IDAgMTEuMTggLTAgQzMyLjM2IC0wLjAzIDUzLjQ5IDAuMjYgNzQuNiAyLjEzIEM3NS42IDIuMjEgNzYuNiAyLjMgNzcuNjMgMi4zOCBDODEuOTkgMi43NSA4Ni4xOCAzLjI2IDkwLjQ4IDQuMTMgQzkyLjczIDQuMyA5NC45NyA0LjQ1IDk3LjIzIDQuNTcgQzEwMS45NyA0Ljg2IDEwNi40NSA1LjQ1IDExMS4wNyA2LjYxIEMxMTQuMDIgNy4yNSAxMTYuOTggNy41OSAxMTkuOTggNy45NCBDMTMwLjIyIDkuMiAxNDAuMjkgMTEuNCAxNTAuMzkgMTMuNDkgQzE1My4yOSAxNC4wOSAxNTYuMTkgMTQuNjggMTU5LjEgMTUuMjcgQzE2MC43OSAxNS42MiAxNjIuNDcgMTUuOTcgMTY0LjE2IDE2LjMyIEMxNjQuOTIgMTYuNDcgMTY1LjY4IDE2LjYzIDE2Ni40NiAxNi43OSBDMTcwLjU4IDE3LjY1IDE3NC40OSAxOC43NSAxNzguNDggMjAuMTMgQzE3OS44NCAyMC40NyAxODEuMjIgMjAuNzggMTgyLjYgMjEuMDcgQzE4Ni4zNCAyMS44NyAxOTAuMDcgMjIuNzMgMTkzLjc5IDIzLjYzIEMxOTQuNzcgMjMuODcgMTk1Ljc2IDI0LjEgMTk2Ljc4IDI0LjM1IEMxOTkuMjMgMjUuMDYgMjAxLjIxIDI1Ljk4IDIwMy40OCAyNy4xMyBDMjA0LjggMjcuNDcgMjA2LjEzIDI3Ljc2IDIwNy40OCAyOC4wMSBDMjE1LjU3IDI5LjcxIDIyMy4zOCAzMi40NCAyMzAuODYgMzUuOTQgQzIzMyAzNi45MSAyMzUuMTQgMzcuODEgMjM3LjMxIDM4LjY5IEMyNDUuMTIgNDEuOSAyNTEuNTYgNDQuOTIgMjU3LjQ4IDUxLjEzIEMyNTguMTQgNTEuNzcgMjU4LjgxIDUyLjQgMjU5LjUgNTMuMDYgQzI2My4wOCA1Ni40OCAyNjMuMDggNTYuNDggMjY0LjQ4IDU4LjEzIEMyNjQuNDggNTguNzkgMjY0LjQ4IDU5LjQ1IDI2NC40OCA2MC4xMyBDMjY1LjQ3IDYwLjQ2IDI2Ni40NiA2MC43OSAyNjcuNDggNjEuMTMgQzI3Ny42NyA3MS41NSAyODUuMzQgODYuMDUgMjkxLjQ4IDk5LjEzIEMyOTIuMzcgMTAwLjg4IDI5My4yNiAxMDIuNjMgMjk0LjE2IDEwNC4zOCBDMjk2LjQ5IDEwOS4wNiAyOTguMzIgMTEzLjc4IDMwMC4wMiAxMTguNzEgQzMwMC42NSAxMjAuNTIgMzAxLjI4IDEyMi4zMiAzMDEuOTEgMTI0LjEzIEMzMDIuMDIgMTI0LjQ0IDMwMi4wMiAxMjQuNDQgMzAyLjU2IDEyNS45OCBDMzAzLjc0IDEyOS4zMiAzMDUuMDYgMTMyLjQgMzA2Ljc5IDEzNS41MSBDMzA4Ljg3IDEzOS4zNyAzMDguODkgMTQyLjgyIDMwOC40OCAxNDcuMTMgQzMwOC4xNSAxNDcuMTMgMzA3LjgyIDE0Ny4xMyAzMDcuNDggMTQ3LjEzIEMzMDcuMzUgMTQ2LjUgMzA3LjIzIDE0NS44OCAzMDcuMTEgMTQ1LjIzIEMzMDYuOTQgMTQ0LjQxIDMwNi43NyAxNDMuNiAzMDYuNiAxNDIuNzYgQzMwNi40NCAxNDEuOTQgMzA2LjI4IDE0MS4xMyAzMDYuMTEgMTQwLjI5IEMzMDUuNDggMTM4LjEzIDMwNS40OCAxMzguMTMgMzAzLjQ4IDEzNi4xMyBDMjk3Ljk1IDEzNiAyOTUuMzYgMTM4LjY5IDI5MS40NCAxNDIuMzQgQzI4NS4wOSAxNDguMTMgMjg1LjA5IDE0OC4xMyAyODEuNDggMTQ4LjEzIEMyODEuNDggMTQ4Ljc5IDI4MS40OCAxNDkuNDUgMjgxLjQ4IDE1MC4xMyBDMjc5LjQ0IDE1MS40MyAyNzcuNDEgMTUyLjYxIDI3NS4yOSAxNTMuNzYgQzI2Ny42NSAxNTcuOTggMjY3LjY1IDE1Ny45OCAyNjQuNDYgMTYwLjA1IEMyNTcuNTEgMTY0LjU2IDI1MC4zMiAxNjguMjkgMjQyLjg1IDE3MS44OCBDMjQxLjkgMTcyLjM0IDI0MC45NCAxNzIuOCAyMzkuOTYgMTczLjI3IEMyMzQuMzMgMTc1Ljk0IDIyOC42NyAxNzguMjQgMjIyLjc3IDE4MC4yNCBDMjIwLjczIDE4MS4wMyAyMTkuMjcgMTgxLjkzIDIxNy40OCAxODMuMTMgQzIxNS43NyAxODMuNjYgMjE1Ljc3IDE4My42NiAyMTMuODkgMTg0LjA4IEMyMDkuMTYgMTg1LjE4IDIwNC41NSAxODYuNTggMTk5LjkxIDE4OC4wMSBDMTkxLjQ3IDE5MC41NiAxODMuMDIgMTkyLjk3IDE3NC40OCAxOTUuMTMgQzE3My43OCAxOTUuMzEgMTczLjA5IDE5NS40OSAxNzIuMzggMTk1LjY3IEMxNjQuMjkgMTk3Ljc0IDE1Ni41MSAxOTkuNDQgMTQ4LjE1IDE5OS45MiBDMTQ1LjYgMjAwLjEyIDE0My4yNyAyMDAuNTUgMTQwLjc5IDIwMS4xMyBDMTM1LjQ2IDIwMi4zIDEzMC4xNSAyMDIuNTIgMTI0LjcyIDIwMi43IEMxMjQuMDMgMjAyLjczIDEyMy4zMyAyMDIuNzYgMTIyLjYyIDIwMi43OSBDMTIyLjAyIDIwMi44MSAxMjEuNDEgMjAyLjgyIDEyMC43OSAyMDIuODQgQzExOC42OSAyMDMuMSAxMTYuODcgMjAzLjU3IDExNC44NCAyMDQuMTQgQzExMC4wNSAyMDUuMzcgMTA1LjQ1IDIwNS40MiAxMDAuNTMgMjA1LjQgQzEwMC4wNyAyMDUuNCAxMDAuMDcgMjA1LjQgOTcuNzMgMjA1LjQgQzk1Ljc4IDIwNS40IDkzLjgzIDIwNS40IDkxLjg5IDIwNS4zOSBDODguOTIgMjA1LjM4IDg1Ljk1IDIwNS4zOSA4Mi45OSAyMDUuNCBDODEuMDggMjA1LjQgNzkuMTggMjA1LjQgNzcuMjggMjA1LjQgQzc2LjQgMjA1LjQgNzUuNTMgMjA1LjQgNzQuNjIgMjA1LjQxIEM2OS40OSAyMDUuMzcgNjUuMzUgMjA0LjY5IDYwLjQ4IDIwMy4xMyBDNTguMzEgMjAyLjg0IDU4LjMxIDIwMi44NCA1Ni41IDIwMi43OSBDNTUuODMgMjAyLjc2IDU1LjE2IDIwMi43MyA1NC40NyAyMDIuNyBDNTMuMDkgMjAyLjY1IDUxLjcyIDIwMi42MSA1MC4zNSAyMDIuNTYgQzQ2LjAzIDIwMi4zNyA0Mi41OCAyMDEuNTggMzguNDggMjAwLjEzIEMzNi44NCAxOTkuOTUgMzUuMTkgMTk5LjgyIDMzLjU0IDE5OS43NiBDMjIuMzUgMTk4Ljg4IDExLjY1IDE5NC45NiAxLjEgMTkxLjM1IEMtMi4yOSAxOTAuMTkgLTUuNzEgMTg5LjE1IC05LjE1IDE4OC4xMyBDLTI5LjI4IDE4MS45NCAtNDkuMiAxNzIuNzQgLTY3LjQ2IDE2Mi4yNiBDLTY4LjA2IDE2MS45MSAtNjguNjcgMTYxLjU3IC02OS4yOSAxNjEuMjEgQy03My41NCAxNTguNzYgLTc3LjY1IDE1Ni4xNCAtODEuNyAxNTMuMzcgQy04My45MiAxNTEuODYgLTg2LjIgMTUwLjQ4IC04OC41MiAxNDkuMTMgQy04OS4zMyAxNDguNTcgLTkwLjEzIDE0OC4wMiAtOTAuOTYgMTQ3LjQ0IEMtOTQuMDEgMTQ1Ljg4IC05Ni4xNCAxNDUuODkgLTk5LjUyIDE0Ni4xMyBDLTk5LjczIDE0NS4yNCAtOTkuOTMgMTQ0LjM1IC0xMDAuMTQgMTQzLjQ0IEMtMTAxLjUxIDEzOS4zNyAtMTA0LjIzIDEzNy41OCAtMTA3LjY1IDEzNS4xOSBDLTEwOC44NCAxMzQuMzIgLTExMC4wMyAxMzMuNDUgLTExMS4yMSAxMzIuNTggQy0xMTEuNzkgMTMyLjE2IC0xMTIuMzYgMTMxLjc0IC0xMTIuOTUgMTMxLjMxIEMtMTE1LjYyIDEyOS4zMSAtMTE4LjA2IDEyNy4xIC0xMjAuNTMgMTI0Ljg3IEMtMTIyLjggMTIyLjg5IC0xMjUuMTYgMTIxLjA1IC0xMjcuNTIgMTE5LjE5IEMtMTMyLjU5IDExNS4xNCAtMTM3LjE5IDExMC42NSAtMTQxLjc3IDEwNi4wNyBDLTE0Mi40NCAxMDUuNDEgLTE0My4xIDEwNC43NSAtMTQzLjc4IDEwNC4wNyBDLTE0OS4xOSA5OC41OSAtMTU0LjQxIDkyLjk1IC0xNTkuMDkgODYuODIgQy0xNjAuOTUgODQuNSAtMTYxLjY1IDg0LjA4IC0xNjQuNTkgODIuODggQy0xNjcuOTMgODAuODkgLTE2OC4wNiA4MC4zMyAtMTY5LjI3IDc2LjgyIEMtMTcwLjkyIDcyLjE1IC0xNzMuMSA2OC42MiAtMTc2LjAyIDY0LjY5IEMtMTg0Ljk4IDUyLjU4IC0xOTMuMjcgMzkuODcgLTE5OS41MiAyNi4xMyBDLTE5OC42NyAyNi4xOCAtMTk3LjgyIDI2LjIyIC0xOTYuOTUgMjYuMjcgQy0xOTMuMjIgMjYuMTIgLTE5MC4yMiAyNS4xNyAtMTg2Ljc3IDIzLjg4IEMtMTc2LjgxIDIwLjM2IC0xNjYuNTcgMTguMzEgLTE1Ni4yMiAxNi4yOSBDLTE1NS41NSAxNi4xNSAtMTU0Ljg3IDE2LjAyIC0xNTQuMTcgMTUuODggQy0xNTIuOTEgMTUuNjQgLTE1MS42NSAxNS40IC0xNTAuMzggMTUuMTcgQy0xNDcuODIgMTQuNjggLTE0NS41IDE0LjEyIC0xNDMuMDkgMTMuMTEgQy0xMzkuNjkgMTEuODEgLTEzNi4zOCAxMS41IC0xMzIuNzcgMTEuMTMgQy0xMjcuNjkgMTAuNiAtMTIyLjgxIDkuNzkgLTExNy44MyA4LjYzIEMtMTEzLjkyIDcuNzggLTEwOS45OCA3LjIxIC0xMDYuMDIgNi42MyBDLTEwNS4xNSA2LjUgLTEwNC4yOCA2LjM3IC0xMDMuMzggNi4yNCBDLTkwLjkxIDQuNDQgLTc4LjQ2IDMuMDcgLTY1LjkgMi4wNyBDLTY0LjkyIDEuOTkgLTYzLjk0IDEuOTEgLTYyLjkzIDEuODMgQy01OS40NiAxLjU2IC01NS45OSAxLjM0IC01Mi41MiAxLjEzIEMtNTEuNzcgMS4wOSAtNTEuMDEgMS4wNCAtNTAuMjQgMC45OSBDLTMzLjQ5IDAuMDQgLTE2Ljc3IC0wLjAzIDAgMCBaIE0tMTQ4LjUyIDMxLjEzIEMtMTQ5LjYxIDMyLjQ2IC0xNDkuNjEgMzIuNDYgLTE1MC41MiAzNC4xMyBDLTE0OS4zMSAzNi40IC0xNDguMTEgMzguMTQgLTE0Ni41MiA0MC4xMyBDLTE0Ni4wNyA0MC43MyAtMTQ1LjYyIDQxLjMzIC0xNDUuMTUgNDEuOTUgQy0xNDAuMjUgNDguMDEgLTEzNC4yMSA1Mi41IC0xMjcuOTUgNTcuMDcgQy0xMjYuNjkgNTguMDEgLTEyNS40NyA1OC45OSAtMTI0LjI1IDU5Ljk5IEMtMTIzLjY4IDYwLjM2IC0xMjMuMTEgNjAuNzQgLTEyMi41MiA2MS4xMyBDLTEyMS44NiA2MC44IC0xMjEuMiA2MC40NyAtMTIwLjUyIDYwLjEzIEMtMTIzLjA3IDU4LjA5IC0xMjUuNjEgNTYuMDYgLTEyOC4xNyA1NC4wNSBDLTE0MS4yOSA0My42MSAtMTQxLjI5IDQzLjYxIC0xNDQuNTIgMzcuMTMgQy0xMzkuMTYgMzkuODIgLTEzNC4zMyA0Mi45MiAtMTI5LjU5IDQ2LjU3IEMtMTE1LjgzIDU3LjEzIC0xMTUuODMgNTcuMTMgLTExMC41MiA1Ny4xMyBDLTExMy43NCA1NC40OCAtMTE2Ljk1IDUyLjE3IC0xMjAuNTIgNTAuMDEgQy0xMjcuNyA0NS41IC0xMzQuNCA0MC4zNSAtMTQwLjk0IDM0Ljk3IEMtMTQzLjQ0IDMyLjkxIC0xNDUuMjcgMzEuNjEgLTE0OC41MiAzMS4xMyBaIE0xNjAuNTQgMzUuNTcgQzE1NC42NSA0MS4xOCAxNDguMjggNDUuNjkgMTQxLjQ4IDUwLjEzIEMxNDAuODMgNTAuNTUgMTQwLjE5IDUwLjk3IDEzOS41MyA1MS40IEMxMzUuNTMgNTQgMTMxLjUxIDU2LjU3IDEyNy40OCA1OS4xMyBDMTI4LjE0IDU5LjQ2IDEyOC44IDU5Ljc5IDEyOS40OCA2MC4xMyBDMTMxLjEyIDU5LjQyIDEzMS4xMiA1OS40MiAxMzMuMDggNTguMjQgQzEzMy40NSA1OC4wMiAxMzMuNDUgNTguMDIgMTM1LjI5IDU2LjkyIEMxMzYuMDcgNTYuNDMgMTM2Ljg2IDU1Ljk0IDEzNy42NiA1NS40NCBDMTM4LjQ2IDU0Ljk1IDEzOS4yNiA1NC40NiAxNDAuMDkgNTMuOTUgQzE0Ni45NiA0OS42NCAxNTMuMjMgNDQuNzcgMTU5LjQ0IDM5LjU2IEMxNjEuNjYgMzcuNzIgMTYzLjc4IDM2LjI1IDE2Ni40OCAzNS4xMyBDMTYyLjg5IDQxLjIgMTU4Ljk4IDQ1Ljc5IDE1My42IDUwLjMzIEMxNTEuMDcgNTIuNDcgMTQ4Ljc4IDU0Ljc1IDE0Ni40OCA1Ny4xMyBDMTUxLjMxIDU1LjYzIDE1NC4zMSA1Mi45MSAxNTcuOTEgNDkuNTEgQzE1OC4yIDQ5LjI0IDE1OC4yIDQ5LjI0IDE1OS42NSA0Ny44OCBDMTY4LjY0IDM5LjI5IDE2OC42NCAzOS4yOSAxNzAuNDggMzUuMTMgQzE3MC4xMSAzMi45MSAxNzAuMTEgMzIuOTEgMTY5LjQ4IDMxLjEzIEMxNjUuMjIgMzAuNDMgMTYzLjM0IDMyLjc2IDE2MC41NCAzNS41NyBaIE0xNDQuNDggNTcuMTMgQzE0Mi44NSA1OS4xMyAxNDIuODUgNTkuMTMgMTQxLjQ4IDYxLjEzIEMxNDUuMzUgNTkuMzggMTQ1LjM1IDU5LjM4IDE0Ni40OCA1Ny4xMyBDMTQ1LjgyIDU3LjEzIDE0NS4xNiA1Ny4xMyAxNDQuNDggNTcuMTMgWiBNLTEyMC41MiA2MS4xMyBDLTExNy4xNSA2NC45NSAtMTEzLjQgNjcuMSAtMTA4Ljk2IDY5LjQ0IEMtMTA4LjI5IDY5LjgxIC0xMDcuNjIgNzAuMTkgLTEwNi45MiA3MC41NyBDLTEwNi4yOCA3MC45MiAtMTA1LjYzIDcxLjI2IC0xMDQuOTYgNzEuNjIgQy0xMDQuMzcgNzEuOTMgLTEwMy43OCA3Mi4yNSAtMTAzLjE4IDcyLjU3IEMtMTAxLjUyIDczLjEzIC0xMDEuNTIgNzMuMTMgLTk4LjUyIDcyLjEzIEMtOTguNzQgNzIuMDIgLTk4Ljc0IDcyLjAyIC05OS44MiA3MS40NCBDLTEwMS43OSA3MC40IC0xMDMuNzUgNjkuMzYgLTEwNS43MSA2OC4zMiBDLTEwNi4zOSA2Ny45NiAtMTA3LjA2IDY3LjYxIC0xMDcuNzUgNjcuMjQgQy0xMTAuNjggNjUuNjggLTExMy41NiA2NC4xMSAtMTE2LjM5IDYyLjM3IEMtMTE4LjUyIDYxLjEzIC0xMTguNTIgNjEuMTMgLTEyMC41MiA2MS4xMyBaIE0tOTEuNTIgNjguMTMgQy05MC4yNyA2OS4xOSAtOTAuMjcgNjkuMTkgLTg4LjUyIDcwLjEzIEMtODYuMzQgNjkuNzYgLTg2LjM0IDY5Ljc2IC04NC41MiA2OS4xMyBDLTg2LjgzIDY4LjggLTg5LjE0IDY4LjQ3IC05MS41MiA2OC4xMyBaIE0xMDIuNDggNzAuMTMgQzEwMi40OCA3MC40NiAxMDIuNDggNzAuNzkgMTAyLjQ4IDcxLjEzIEMxMDQuNDYgNzEuMTMgMTA2LjQ0IDcxLjEzIDEwOC40OCA3MS4xMyBDMTA4LjQ4IDcwLjggMTA4LjQ4IDcwLjQ3IDEwOC40OCA3MC4xMyBDMTA2LjUgNzAuMTMgMTA0LjUyIDcwLjEzIDEwMi40OCA3MC4xMyBaIE0xMzUuODMgNjMuMjYgQzEyNS4wOSA2OS43OSAxMTQuMzggNzUgMTAyLjU5IDc5LjM1IEMxMDAuODIgODAgOTkuMDYgODAuNjggOTcuMyA4MS4zNyBDODYuNDEgODUuNTUgNzQuOTkgODguMzcgNjMuNDggOTAuMTMgQzYyLjcyIDkwLjI1IDYxLjk2IDkwLjM2IDYxLjE5IDkwLjQ5IEM1OC41MSA5MC45IDU1Ljg0IDkxLjMgNTMuMTYgOTEuNjkgQzUyLjMyIDkxLjgyIDUxLjQ4IDkxLjk1IDUwLjYxIDkyLjA4IEMzNy41NCA5My45NiAyNC40NyA5NC4zNyAxMS4yOSA5NC4zOCBDMTAuNTEgOTQuMzggOS43MiA5NC4zOCA4LjkyIDk0LjM4IEMtMjQuNzUgOTQuMzQgLTYwLjkzIDg5LjQ5IC05MS42OCA3NC45NCBDLTkzLjkyIDczLjk2IC05Ni4xIDczLjQ0IC05OC41MiA3My4xMyBDLTk0LjQ3IDc2Ljc3IC05MC40MSA3OC42NiAtODUuMzQgODAuNTcgQy04NC45NCA4MC43MiAtODQuOTQgODAuNzIgLTgyLjk1IDgxLjQ4IEMtNjkuODMgODYuMzYgLTU2LjMxIDg5LjczIC00Mi41MiA5Mi4xMyBDLTQyLjA2IDkyLjIxIC00Mi4wNiA5Mi4yMSAtMzkuNzEgOTIuNjMgQy0yNi42NyA5NC45MSAtMTMuNzggOTYuOSAtMC41MiA5Ny4xMyBDMC4zMiA5Ny4xNSAxLjE3IDk3LjE2IDIuMDQgOTcuMTggQzE3LjYyIDk3LjQgMzMuMzYgOTcuNSA0OC43MyA5NC42IEM1Mi40NyA5My45NiA1Ni4yMSA5My43IDYwIDkzLjQ3IEM2Mi43NSA5My4wOSA2NC45MSA5Mi4xNiA2Ny40OCA5MS4xMyBDNjkuNDEgOTAuODEgNzEuMzQgOTAuNTQgNzMuMjkgOTAuMzIgQzgwLjY5IDg5LjI2IDg3LjU1IDg3LjExIDk0LjYyIDg0Ljc0IEM5Ni4yNiA4NC4yIDk3LjkxIDgzLjcgOTkuNTYgODMuMiBDMTExLjcgNzkuNDYgMTIzLjA5IDczLjc0IDEzMy45OCA2Ny4yNiBDMTM0LjYyIDY2Ljg3IDEzNS4yNiA2Ni40OSAxMzUuOTIgNjYuMSBDMTQwLjM1IDYzLjM5IDE0MC4zNSA2My4zOSAxNDEuNDggNjEuMTMgQzEzOC45NSA2MS4xMyAxMzcuOTcgNjEuOTIgMTM1LjgzIDYzLjI2IFogTS03Mi41MiA3NS4xMyBDLTY4LjUyIDc2LjEzIC02OC41MiA3Ni4xMyAtNjguNTIgNzYuMTMgWiBNLTY2LjUyIDc2LjEzIEMtNjQuMTUgNzcuOTggLTYyLjMyIDc4LjQ2IC01OS4zNCA3OC43NiBDLTU4LjYyIDc4LjgzIC01Ny45MSA3OC45IC01Ny4xNyA3OC45OCBDLTU2LjYzIDc5LjAzIC01Ni4wOCA3OS4wOCAtNTUuNTIgNzkuMTMgQy01Ny45IDc3LjI4IC01OS43MyA3Ni44IC02Mi43MSA3Ni41MSBDLTYzLjQzIDc2LjQzIC02NC4xNCA3Ni4zNiAtNjQuODggNzYuMjggQy02NS40MiA3Ni4yMyAtNjUuOTcgNzYuMTggLTY2LjUyIDc2LjEzIFogTTczLjQ4IDgwLjEzIEM3NS4yOSA3OS45NyA3NS4yOSA3OS45NyA4NC40OCA3OS4xMyBDODQuNDggNzguOCA4NC40OCA3OC40NyA4NC40OCA3OC4xMyBDODMuMDIgNzguMDggODEuNTYgNzguMDQgODAuMSA3OC4wMSBDNzkuNjkgNzcuOTkgNzkuNjkgNzcuOTkgNzcuNjQgNzcuOTQgQzc1LjQ4IDc4LjEzIDc1LjQ4IDc4LjEzIDczLjQ4IDgwLjEzIFogTTY3LjQ4IDgxLjEzIEM3MS40OCA4Mi4xMyA3MS40OCA4Mi4xMyA3MS40OCA4Mi4xMyBaIE0tMzkuNzEgODEuNjMgQy00MC4xNiA4MS42OCAtNDAuMTYgODEuNjggLTQyLjQ0IDgxLjkxIEMtNDMuMTMgODEuOTggLTQzLjgyIDgyLjA2IC00NC41MiA4Mi4xMyBDLTQ0LjUyIDgyLjQ2IC00NC41MiA4Mi43OSAtNDQuNTIgODMuMTMgQy00My41OSA4My4xOSAtNDIuNjcgODMuMjUgLTQxLjcxIDgzLjMxIEMtMjkuNTEgODQuMTMgLTI5LjUxIDg0LjEzIC0yMy41MiA4NS4xMyBDLTI0LjEgODQuODQgLTI0LjY4IDg0LjU1IC0yNS4yNyA4NC4yNiBDLTI2LjcyIDgzLjUzIC0yOC4xNiA4Mi43OCAtMjkuNTkgODIuMDEgQy0zMi44NyA4MC41MiAtMzYuMjEgODEuMjcgLTM5LjcxIDgxLjYzIFogTTYwLjQ4IDgyLjEzIEM2MC40OCA4Mi40NiA2MC40OCA4Mi43OSA2MC40OCA4My4xMyBDNjIuNzkgODMuMTMgNjUuMSA4My4xMyA2Ny40OCA4My4xMyBDNjcuNDggODIuOCA2Ny40OCA4Mi40NyA2Ny40OCA4Mi4xMyBDNjUuMTcgODIuMTMgNjIuODYgODIuMTMgNjAuNDggODIuMTMgWiBNNDQuNDggODUuMTMgQzQ5LjQzIDg0LjggNTQuMzggODQuNDcgNTkuNDggODQuMTMgQzU5LjQ4IDgzLjggNTkuNDggODMuNDcgNTkuNDggODMuMTMgQzU3LjU0IDgzLjA4IDU1LjYgODMuMDQgNTMuNjYgODMuMDEgQzUyLjU4IDgyLjk4IDUxLjUxIDgyLjk2IDUwLjM5IDgyLjk0IEM0Ny40OCA4My4xMyA0Ny40OCA4My4xMyA0NC40OCA4NS4xMyBaIE0tMTAuOTggODQuMzUgQy0xMi4yNCA4NC40NCAtMTMuNTEgODQuNTQgLTE0Ljc3IDg0LjYzIEMtMTUuNDIgODQuNjggLTE2LjA3IDg0LjczIC0xNi43NCA4NC43NyBDLTE4LjM0IDg0Ljg5IC0xOS45MyA4NS4wMSAtMjEuNTIgODUuMTMgQy0yMS41MiA4NS40NiAtMjEuNTIgODUuNzkgLTIxLjUyIDg2LjEzIEMtMTQuNTkgODYuMTMgLTcuNjYgODYuMTMgLTAuNTIgODYuMTMgQy00LjQ5IDgzLjQ5IC02LjMgODQuMDUgLTEwLjk4IDg0LjM1IFogTTMxLjQ4IDg1LjEzIEMzMS40OCA4NS40NiAzMS40OCA4NS43OSAzMS40OCA4Ni4xMyBDMzUuNzcgODYuMTMgNDAuMDYgODYuMTMgNDQuNDggODYuMTMgQzQ0LjQ4IDg1LjggNDQuNDggODUuNDcgNDQuNDggODUuMTMgQzQwLjE5IDg1LjEzIDM1LjkgODUuMTMgMzEuNDggODUuMTMgWiBNMTguNDggODUuMTMgQzE3IDg1LjI4IDE1LjUxIDg1LjM4IDE0LjAzIDg1LjQ1IEMxMy42IDg1LjQ3IDEzLjYgODUuNDcgMTEuNDYgODUuNTcgQzExLjAyIDg1LjU5IDExLjAyIDg1LjU5IDguNzkgODUuNjkgQzguMzQgODUuNzEgOC4zNCA4NS43MSA2LjA4IDg1LjgyIEMzLjg4IDg1LjkzIDEuNjggODYuMDMgLTAuNTIgODYuMTMgQy0wLjUyIDg2LjQ2IC0wLjUyIDg2Ljc5IC0wLjUyIDg3LjEzIEMyLjYyIDg3LjE2IDUuNzcgODcuMTggOC45MSA4Ny4xOSBDOS4zNSA4Ny4yIDkuMzUgODcuMiAxMS41OCA4Ny4yMiBDMTcuMjggODcuMjQgMjIuODIgODYuOSAyOC40OCA4Ni4xMyBDMjguNDggODUuOCAyOC40OCA4NS40NyAyOC40OCA4NS4xMyBDMjcuMzggODQuOTQgMjYuMjkgODQuNzYgMjUuMTYgODQuNTcgQzI0LjU1IDg0LjQ2IDIzLjkzIDg0LjM2IDIzLjMgODQuMjUgQzIxLjQ4IDg0LjEzIDIxLjQ4IDg0LjEzIDE4LjQ4IDg1LjEzIFogIi8+IDxwYXRoIGZpbGw9IiM5NGIxYzEiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEwNSw1NDgpIiBkPSJNMCAwIEMzLjQ5IDEuMTYgMy45OCAyLjAyIDYuMDggNC45NCBDMTAuMiAxMC40MSAxNC44OSAxNS4yIDE5Ljc1IDIwIEMyMC4xOSAyMC40NCAyMC42MyAyMC44OCAyMS4wOSAyMS4zMyBDMjcuNDMgMjcuNjQgMzMuOTMgMzMuNTEgNDEgMzkgQzQyLjQgNDAuMjIgNDMuOCA0MS40NSA0NS4xOSA0Mi42OSBDNDguNDQgNDUuNTcgNTEuODIgNDguMTkgNTUuMzQgNTAuNzQgQzU3IDUyIDU3IDUyIDU5IDU0IEM1OS4zIDU3LjM3IDU4Ljk5IDYwLjc1IDU4LjgxIDY0LjEyIEM1OC43OCA2NS4wNSA1OC43NSA2NS45OCA1OC43MiA2Ni45MyBDNTguNjkgNjcuMzkgNTguNjkgNjcuMzkgNTguNTggNjkuNyBDNTguNTQgNzAuNTIgNTguNSA3MS4zNSA1OC40NiA3Mi4yIEM1OC4wNSA3NC42OCA1Ny40NyA3Ni4yOSA1Ni40OCA3OC41NiBDNTQuMzIgODQuMDggNTQuNjYgODkuNTcgNTQuNzggOTUuNDIgQzU0Ljc5IDk2LjYxIDU0LjggOTcuNzkgNTQuOCA5OC45OCBDNTQuODMgMTAyLjA4IDU0Ljg3IDEwNS4xOSA1NC45MSAxMDguMjkgQzU0Ljk4IDExMy4yNyA1NS4wNCAxMTguMjQgNTUuMDcgMTIzLjIyIEM1NS4wOSAxMjQuOTUgNTUuMTIgMTI2LjY4IDU1LjE1IDEyOC40MSBDNTUuMTYgMTI5LjQ2IDU1LjE3IDEzMC41MiA1NS4xOCAxMzEuNiBDNTUuMTkgMTMyLjUzIDU1LjIxIDEzMy40NSA1NS4yMiAxMzQuNCBDNTQuOTggMTM3LjI2IDU0LjE5IDEzOS40IDUzIDE0MiBDNTIuMzQgMTQyIDUxLjY4IDE0MiA1MSAxNDIgQzUwLjczIDE0MC45NyA1MC40NiAxMzkuOTQgNTAuMTkgMTM4Ljg4IEM0OC4zNCAxMzIuNDggNDUuMzYgMTI2Ljg4IDQwLjI1IDEyMi41IEMzOC40NyAxMjAuMzYgMzguNzggMTE4LjY5IDM5IDExNiBDMzguMDEgMTE1LjY3IDM3LjAyIDExNS4zNCAzNiAxMTUgQzM1LjEyIDExMy40IDM1LjEyIDExMy40IDM0LjQ0IDExMS4zOCBDMzQuMTkgMTEwLjY2IDMzLjk0IDEwOS45NCAzMy42OCAxMDkuMjEgQzMzLjA1IDEwNy4xNyAzMi41MiAxMDUuMTMgMzIgMTAzLjA2IEMzMS42NyAxMDIuMDUgMzEuMzQgMTAxLjA0IDMxIDEwMCBDMzAuNSA5OS44NCAzMC41IDk5Ljg0IDI4IDk5IEMyNy4zIDk3LjAxIDI2LjYzIDk1LjAxIDI2IDkzIEMyNS4zNCA5Mi42NyAyNC42OCA5Mi4zNCAyNCA5MiBDMjMuMzcgODkuOTYgMjIuOTggODcuOTEgMjIuNTYgODUuODEgQzIyLjM4IDg1LjIxIDIyLjE5IDg0LjYyIDIyIDg0IEMyMS4zNCA4My42NyAyMC42OCA4My4zNCAyMCA4MyBDMTkuNDQgODAuODIgMTkuNDQgODAuODIgMTkgNzguMTIgQzE4LjQ2IDc0LjgyIDE3LjkgNzIuNzIgMTYgNzAgQzE1LjQyIDY3Ljk2IDE1IDY1LjkyIDE0LjU2IDYzLjg0IEMxNCA2MiAxNCA2MiAxMiA2MCBDMTEuNTkgNTguMDUgMTEuNTkgNTguMDUgMTEuMzggNTUuODggQzExLjMgNTUuMTUgMTEuMjMgNTQuNDMgMTEuMTUgNTMuNjggQzExLjEgNTMuMTMgMTEuMDUgNTIuNTcgMTEgNTIgQzkuNjggNTIgOC4zNiA1MiA3IDUyIEM3IDQ3LjA1IDcgNDIuMSA3IDM3IEM2LjAxIDM2LjY3IDUuMDIgMzYuMzQgNCAzNiBDMy45OSAzNS41MiAzLjk3IDM1LjAzIDMuOTYgMzQuNTMgQzMuODggMzIuMzEgMy43OCAzMC4wOSAzLjY5IDI3Ljg4IEMzLjY2IDI3LjExIDMuNjQgMjYuMzUgMy42MiAyNS41NyBDMy4zOCAyMC41OSAyLjI5IDE3LjQ5IDAgMTMgQy0wLjI5IDkuNTcgLTAuMjkgOS41NyAtMC4xOSA2LjEyIEMtMC4xNyA1LjU1IC0wLjE3IDUuNTUgLTAuMTEgMi42MyBDLTAuMDcgMS43NiAtMC4wNCAwLjkgMCAwIFogIi8+IDxwYXRoIGZpbGw9IiM0ZTY3NzUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDUyOCwxMTcpIiBkPSJNMCAwIEMwLjY2IDAuMTcgMC42NiAwLjE3IDQgMSBDNCA1LjI5IDQgOS41OCA0IDE0IEMzLjUgMTQuMTYgMy41IDE0LjE2IDEgMTUgQy0wLjczIDE4LjQ2IDAuMDUgMjIuNjggMC4yMSAyNi41IEMwLjMyIDMxLjYgMC4zMiAzMS42IC0xLjQ1IDMzLjc5IEMtMS43IDMzLjk5IC0xLjcgMzMuOTkgLTMgMzUgQy00LjAzIDM4LjA4IC00LjE0IDQwLjI2IC00LjE4IDQzLjQ5IEMtNC4xOSA0NC42MiAtNC4yIDQ1Ljc0IC00LjIyIDQ2LjkgQy00LjIyIDQ4LjEzIC00LjIzIDQ5LjM2IC00LjI0IDUwLjU5IEMtNC4yNCA1MS4yMiAtNC4yNSA1MS44NCAtNC4yNSA1Mi40OCBDLTQuMjcgNTUuNzkgLTQuMjkgNTkuMSAtNC4zIDYyLjQgQy00LjMxIDY1Ljc5IC00LjM0IDY5LjE4IC00LjM4IDcyLjU3IEMtNC40MSA3NS4xOSAtNC40MSA3Ny44MiAtNC40MiA4MC40NSBDLTQuNDIgODEuNjkgLTQuNDMgODIuOTQgLTQuNDUgODQuMTkgQy00LjU2IDkxLjcgLTMuODUgOTcuNzUgLTAuOSAxMDQuNjkgQzAuNCAxMDguMDMgMC40IDExMC42MiAwLjI1IDExNC4xOSBDMC4yMSAxMTUuMjkgMC4xOCAxMTYuNCAwLjE0IDExNy41NCBDMC4wOSAxMTguMzUgMC4wNSAxMTkuMTYgMCAxMjAgQzEuMzIgMTIwLjMzIDIuNjQgMTIwLjY2IDQgMTIxIEMzLjk5IDEyMS40OCAzLjk5IDEyMS40OCAzLjkzIDEyMy44OSBDMy45MSAxMjUuMTUgMy44OSAxMjYuNDIgMy44OCAxMjcuNjkgQzMuODYgMTI4LjMxIDMuODQgMTI4Ljk0IDMuODIgMTI5LjU4IEMzLjc4IDEzMy41MSA0LjIgMTM2LjQxIDYgMTQwIEM2LjMzIDE0MC4zMyA2LjY2IDE0MC42NiA3IDE0MSBDNy4wNyAxNDIuNjkgNy4wOCAxNDQuMzggNy4wNiAxNDYuMDYgQzcuMDUgMTQ2Ljk4IDcuMDQgMTQ3LjkgNy4wNCAxNDguODUgQzcuMDMgMTQ5LjIgNy4wMyAxNDkuMiA3IDE1MSBDLTIwLjc5IDE1MS4xNyAtNDguNTggMTUxLjM0IC03Ni4zOCAxNTEuNSBDLTc3LjQgMTUxLjUxIC03OC40MiAxNTEuNTEgLTc5LjQ4IDE1MS41MiBDLTEzMi4wNyAxNTEuODIgLTE4NC42NiAxNTIuMSAtMjM3LjI1IDE1Mi4wNiBDLTIzNy44MSAxNTIuMDYgLTIzNy44MSAxNTIuMDYgLTI0MC42MiAxNTIuMDYgQy0yNTMuNDIgMTUyLjA1IC0yNjYuMjEgMTUyLjAzIC0yNzkgMTUyIEMtMjc5LjEzIDE1MC4xIC0yNzkuMTMgMTUwLjEgLTI3OSAxNDggQy0yNzYuOTIgMTQ2LjQgLTI3Ni45MiAxNDYuNCAtMjc0LjE5IDE0NC45NCBDLTI3MC45OCAxNDMuMTkgLTI2OC41NiAxNDEuNTkgLTI2NiAxMzkgQy0yNjUuMzQgMTM5IC0yNjQuNjggMTM5IC0yNjQgMTM5IEMtMjYzLjczIDEzOC40IC0yNjMuNDYgMTM3LjggLTI2My4xOSAxMzcuMTkgQy0yNjEuMjYgMTMzLjY0IC0yNTguMTggMTMyLjQ0IC0yNTQuNSAxMzEuMDYgQy0yNTAuOTkgMTI5LjU3IC0yNDguMjUgMTI3LjM3IC0yNDUuNjggMTI0LjU1IEMtMjQzLjU0IDEyMi41OCAtMjQxLjI3IDEyMS40NSAtMjM4LjY5IDEyMC4xMiBDLTIzNC44MiAxMTguMDcgLTIzMS41NiAxMTYgLTIyOC4zMiAxMTMuMDggQy0yMjYuMTQgMTExLjI5IC0yMjMuNTEgMTEwLjI2IC0yMjEgMTA5IEMtMjE5Ljc2IDEwOC4wOCAtMjE4LjUzIDEwNy4xNCAtMjE3LjMxIDEwNi4xOSBDLTIxNC4yMiAxMDMuNzkgLTIxMS4wOSAxMDEuODkgLTIwNy42MiAxMDAuMDYgQy0xOTMuNyA5Mi42OCAtMTkzLjcgOTIuNjggLTE5MC45NiA4OC4zNSBDLTE4OS42MiA4Ni40NiAtMTg4LjQ5IDg2LjQ1IC0xODYuMjUgODYuMDYgQy0xODIuODkgODUuMzIgLTE4MC41MiA4NC4yNyAtMTc3LjcxIDgyLjIyIEMtMTc1LjQ2IDgwLjYxIC0xNzMuMTEgNzkuMTkgLTE3MC43NSA3Ny43NSBDLTE2OS45IDc3LjIzIC0xNjkuMDUgNzYuNzEgLTE2OC4xNyA3Ni4xNyBDLTE2NiA3NSAtMTY2IDc1IC0xNjQgNzUgQy0xNjMuODQgNzQuMzQgLTE2My44NCA3NC4zNCAtMTYzIDcxIEMtMTYyLjIgNzEuMTIgLTE2MS4zOSA3MS4yNSAtMTYwLjU2IDcxLjM4IEMtMTU2LjMxIDcxLjQxIC0xNTMuNTggNjguOTIgLTE1MC4yNSA2Ni41MyBDLTE0OC4xOSA2NS4xMyAtMTQ2LjMgNjQuMTYgLTE0NCA2My4yNSBDLTE0MSA2MiAtMTQxIDYyIC0xNDAgNjAgQy0xMzkuMiA1OS44OCAtMTM4LjM5IDU5Ljc1IC0xMzcuNTYgNTkuNjIgQy0xMzYuNzIgNTkuNDIgLTEzNS44NyA1OS4yMSAtMTM1IDU5IEMtMTM0Ljg3IDU4LjY3IC0xMzQuODcgNTguNjcgLTEzNC4xOSA1NyBDLTEzMy44IDU2LjM0IC0xMzMuNCA1NS42OCAtMTMzIDU1IEMtMTMxLjQyIDU0LjY5IC0xMzEuNDIgNTQuNjkgLTEyOS40NCA1NC41NiBDLTEyNC45NSA1NC4yMyAtMTIxLjk5IDUyLjU2IC0xMTguMTggNTAuMjcgQy0xMTYuMTYgNDkuMDkgLTExNC4xNyA0OC4xOCAtMTEyIDQ3LjMxIEMtMTA5IDQ2IC0xMDkgNDYgLTEwOCA0NCBDLTEwNi4zMyA0My4zMyAtMTA0LjY3IDQyLjY3IC0xMDMgNDIgQy0xMDIuNjcgNDEuMzQgLTEwMi4zNCA0MC42OCAtMTAyIDQwIEMtMTAwLjEgMzkuNTggLTEwMC4xIDM5LjU4IC05Ny42MiAzOS4yNSBDLTkyLjI3IDM4LjMgLTg4LjE5IDM2LjE5IC04My41NCAzMy40NCBDLTgxIDMyIC04MSAzMiAtNzguMjMgMzAuOTEgQy03NiAzMCAtNzYgMzAgLTc1LjEyIDI4LjQ0IEMtNzQgMjcgLTc0IDI3IC03Mi4zNiAyNi42NiBDLTcxLjczIDI2LjU4IC03MS4wOSAyNi41MSAtNzAuNDQgMjYuNDQgQy02OS44NyAyNi4zNyAtNjkuODcgMjYuMzcgLTY3IDI2IEMtNjYuNjcgMjUuMzQgLTY2LjM0IDI0LjY4IC02NiAyNCBDLTYzLjgyIDIzLjQ0IC02My44MiAyMy40NCAtNjEuMTIgMjMgQy01Ny44MiAyMi40NiAtNTUuNzMgMjEuOSAtNTMgMjAgQy01MC45MyAxOS40MiAtNDguODUgMTguOTkgLTQ2Ljc0IDE4LjU2IEMtNDYuMTcgMTguMzggLTQ1LjU5IDE4LjE5IC00NSAxOCBDLTQ0LjY3IDE3LjM0IC00NC4zNCAxNi42OCAtNDQgMTYgQy00Mi4yMiAxNS40MSAtNDAuNDMgMTUuMDUgLTM4LjU5IDE0LjY2IEMtMzguMDcgMTQuNDQgLTM3LjU0IDE0LjIyIC0zNyAxNCBDLTM2LjY3IDEzLjAxIC0zNi4zNCAxMi4wMiAtMzYgMTEgQy0zMy45NyAxMC41NiAtMzMuOTcgMTAuNTYgLTMxLjUgMTAuNDQgQy0yOS4wMyAxMC4zMSAtMjkuMDMgMTAuMzEgLTI3IDEwIEMtMjYuNjcgOS4zNCAtMjYuMzQgOC42OCAtMjYgOCBDLTIzLjg2IDcuNTcgLTIxLjc5IDcuMjUgLTE5LjYyIDcgQy0xMi45NCA2LjIxIC0xMi45NCA2LjIxIC0xMCA0IEMtOC40NyAzLjQ0IC02LjkzIDIuOTIgLTUuMzggMi40NCBDLTEuMSAxLjEgLTEuMSAxLjEgMCAwIFogIi8+IDxwYXRoIGZpbGw9IiM0ZTY3NzUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDY4LDI4NSkiIGQ9Ik0wIDAgQzIuMTkgMC4zMSAyLjE5IDAuMzEgNCAxIEM0LjIgNS45NyAzLjU5IDkuMjMgMiAxNCBDMS40MyAxNi41NyAwLjk5IDE5LjE1IDAuNTYgMjEuNzUgQzAuNSAyMi4xMSAwLjUgMjIuMTEgMC4xOCAyMy45NSBDLTAuNTEgMjcuOTcgLTEuMTYgMzEuOTkgLTEuNzkgMzYuMDEgQy0xLjg1IDM2LjQxIC0xLjg1IDM2LjQxIC0yLjE4IDM4LjQ3IEMtMi40MyA0MC4wNSAtMi42NyA0MS42MiAtMi45MSA0My4yIEMtMi45NyA0My41NiAtMi45NyA0My41NiAtMy4yNSA0NS4zNyBDLTMuMzUgNDYgLTMuNDUgNDYuNjMgLTMuNTUgNDcuMjggQy00LjA2IDQ5LjIzIC00LjY2IDUwLjQ5IC02IDUyIEMtMTAuNDMgNTEuNTcgLTEwLjQzIDUxLjU3IC0xMiA1MCBDLTEyLjk0IDM1LjIzIC0xMS42NyAxMy4yNCAtMS41MiAxLjI1IEMtMS4wMiAwLjgzIC0wLjUyIDAuNDIgMCAwIFogIi8+IDxwYXRoIGZpbGw9IiM0ZTY3NzUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIzNS40NTcwMzEyNSwzMDQuMDM1MTU2MjUpIiBkPSJNMCAwIEMwLjg0IDAuNjUgMS42OCAxLjMgMi41NCAxLjk2IEMzLjM4IDIuNiA0LjIzIDMuMjQgNS4wOSAzLjkgQzE3Ljk5IDE0Ljc4IDI2LjQ4IDMxLjE1IDI4LjM2IDQ3LjgyIEMyOS4yMiA1OC4wNCAyOS41NSA2OS4wOSAyNi41NCA3OC45NiBDMjYuMyA3OS44MSAyNi4wNSA4MC42NSAyNS44IDgxLjUxIEMyMC43MiA5Ny4wOCAxMS4zNSAxMTAuOTMgLTIuNDYgMTE5Ljk2IEMtMy4yMiAxMjAuNDcgLTMuOTggMTIwLjk3IC00Ljc2IDEyMS40OCBDLTIxLjY1IDEzMi4xMiAtNDEuMTcgMTM1Ljg5IC02MC43NyAxMzEuNzEgQy04MC4yNCAxMjcuMTIgLTk2LjMyIDExNy4yNSAtMTA3LjM5IDEwMC4zNCBDLTEwOC40MyA5OC41NiAtMTA5LjQ2IDk2Ljc3IC0xMTAuNDYgOTQuOTYgQy0xMTAuOTIgOTQuMjEgLTExMS4zNyA5My40NiAtMTExLjg1IDkyLjY5IEMtMTIxLjQ0IDc1Ljc4IC0xMjEuNCA1NS4yMiAtMTE2LjQ2IDM2Ljk2IEMtMTE2LjI1IDM2LjE2IC0xMTYuMDUgMzUuMzUgLTExNS44NCAzNC41MiBDLTExMC41MiAxNi4xMyAtOTUgMC43NCAtNzguNTggLTguMzUgQy01Mi4zOSAtMjAuMzQgLTIyLjc5IC0xNyAwIDAgWiBNLTQ0LjQxIDkuMjEgQy01OC4zMSAxMC44MiAtNjkuOSAxNy40MiAtNzguNTYgMjguMzYgQy04Ny43NiA0MC45NSAtODkuOTQgNTQuMDUgLTg3Ljg5IDY5LjM0IEMtODUuMTQgODIuNjggLTc1Ljk3IDk0LjUxIC02NS4wOCAxMDIuNCBDLTUzLjE4IDEwOS41MSAtMzkuMTMgMTExLjM0IC0yNS41MSAxMDguNTcgQy0yMS44OCAxMDcuNTIgLTE4LjcxIDEwNS44NyAtMTUuNDYgMTAzLjk2IEMtMTQuNDkgMTAzLjQzIC0xMy41MyAxMDIuOSAtMTIuNTQgMTAyLjM2IEMtNi4zNiA5OC43MiAtMS43NiA5NC42OCAyLjU0IDg4Ljk2IEMzLjI0IDg4LjA4IDMuOTUgODcuMTkgNC42NyA4Ni4yOCBDMTIuMjMgNzMuODggMTMuNzEgNjAuMzQgMTAuODggNDYuMTQgQzguMjYgMzYuNTIgMi45MiAyOC42IC00LjQ2IDIxLjk2IEMtNC45NiAyMS40OSAtNS40NSAyMS4wMSAtNS45NyAyMC41MSBDLTE1LjIyIDExLjk3IC0yNi43MyA4LjMyIC0zOS4yOCA4Ljc5IEMtNDAuOTkgOC45MyAtNDIuNyA5LjA3IC00NC40MSA5LjIxIFogIi8+IDxwYXRoIGZpbGw9IiM0ZTY3NzUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDQwMS4xMDU0Njg3NSwzMDYuNTg5ODQzNzUpIiBkPSJNMCAwIEMxNS4xNyAxMi4zOCAyMy44OSAzMS4xNSAyNi4xMiA1MC4zNCBDMjcuNzYgNjkuOSAyMC45NiA4OS41MyA4LjQ2IDEwNC40NyBDNC4wOSAxMDkuNDYgLTAuNTcgMTEzLjc0IC02LjExIDExNy40MSBDLTYuODggMTE3LjkzIC03LjY2IDExOC40NSAtOC40NiAxMTguOTggQy0yNi4xNSAxMzAuMTcgLTQ2LjM3IDEzMy4yMyAtNjYuNzQgMTI4LjgxIEMtODUuMDEgMTI0LjQzIC0xMDAuOTMgMTEyLjkgLTExMS4zOCA5Ny4zIEMtMTIxLjc1IDc5Ljk4IC0xMjYuMzQgNjAuOTMgLTEyMS44NyA0MC45MSBDLTExNi40MiAxOS4xNCAtMTAzLjM2IDIuNjUgLTg0LjQ4IC05LjI4IEMtNTcuNDEgLTI1LjI5IC0yMy43MSAtMTcuOTEgMCAwIFogTS02Mi4wNiA2LjY1IEMtNzYuMDUgOC4yOCAtODYuNiAxNC42NyAtOTUuNyAyNS4yNiBDLTk4Ljc1IDI5LjMzIC0xMDEuMDUgMzMuNzcgLTEwMy4xMSAzOC40MSBDLTEwMy4yNiAzOC43MiAtMTAzLjI2IDM4LjcyIC0xMDQuMDIgNDAuMjkgQy0xMDguMzggNTAuNzEgLTEwNy40OCA2NC4xOCAtMTAzLjQ0IDc0LjU2IEMtOTcuNTkgODguMDIgLTg2Ljc1IDk4LjY2IC03My4xOCAxMDQuMTkgQy02Ny4zNSAxMDYuMzUgLTYyLjA1IDEwNi45NSAtNTUuODYgMTA2LjkxIEMtNTUuNCAxMDYuOTEgLTU1LjQgMTA2LjkxIC01My4wNyAxMDYuOSBDLTM3Ljc4IDEwNi41MSAtMjcuNTUgOTkuMzUgLTE3LjA4IDg4LjY1IEMtMTQuOTggODYuMjcgLTEzLjM3IDgzLjk1IC0xMS45NiA4MS4xMSBDLTExLjExIDc5LjQxIC0xMS4xMSA3OS40MSAtOS42MSA3Ny4xOSBDLTcuNzQgNzMuNzMgLTcuMDQgNzAuNTEgLTYuMzYgNjYuNjYgQy02LjIzIDY1Ljk1IC02LjEgNjUuMjMgLTUuOTcgNjQuNSBDLTUuMDkgNTkuMjEgLTUuMDMgNTQuNjggLTYuMTEgNDkuNDEgQy02LjIgNDguNTYgLTYuMjkgNDcuNzIgLTYuMzggNDYuODUgQy03LjM5IDM4Ljg4IC0xMC43MiAzMi45NSAtMTUuMTEgMjYuNDEgQy0xNS41IDI1LjgxIC0xNS44OSAyNS4yMiAtMTYuMjkgMjQuNiBDLTIyLjgyIDE1Ljc4IC0zNC41MSA5LjEgLTQ1LjExIDcuMTYgQy01MC45NCA2LjM0IC01Ni4yMSA2LjE3IC02Mi4wNiA2LjY1IFogIi8+IDxwYXRoIGZpbGw9IiM0ZTY3NzUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIxOC4yNzM0Mzc1LDMxOS4zODI4MTI1KSIgZD0iTTAgMCBDMTAuMTUgNi4wMiAxOC4xNCAxMy42NyAyMi43MyAyNC42MiBDMjIuOTggMjUuMTYgMjMuMjMgMjUuNzEgMjMuNDkgMjYuMjggQzI1LjkxIDMxLjk2IDI2LjI3IDM3LjE3IDI2LjIzIDQzLjMgQzI2LjIyIDQ0LjI3IDI2LjIyIDQ1LjI0IDI2LjIxIDQ2LjI0IEMyNS45IDU4Ljk0IDIxLjY1IDY4LjYzIDEyLjY2IDc3LjcgQzIuNzIgODcgLTguMDEgOTEuNDUgLTIxLjcxIDkyLjA1IEMtMzIuOTcgOTEuNjYgLTQyLjcxIDg3LjkyIC01MS4yNyA4MC42MiBDLTUyLjE0IDc5LjkgLTUzLjAxIDc5LjE4IC01My45IDc4LjQzIEMtNjIuNyA3MC42OCAtNjcuMDkgNjEuNDMgLTY4LjEzIDQ5Ljc3IEMtNjguOTkgMzUuMzUgLTY2LjU0IDIyLjM5IC01Ni43NCAxMS4yNyBDLTQyLjA2IC00LjA4IC0xOS42NyAtOS4xOCAwIDAgWiBNLTIyLjI3IDEwLjYyIEMtMjQuNjQgMTQuMzcgLTI0LjQyIDE3LjA1IC0yMy44IDIxLjMyIEMtMjIuMjQgMjguMDggLTE3LjYyIDMzLjM1IC0xMi4yNyAzNy42MiBDLTcuOSA0MC4yNSAtNC4yNSA0MS4xMSAwLjc5IDQxLjA1IEMxLjM5IDQxLjA3IDEuOTkgNDEuMDkgMi42IDQxLjEyIEM1LjkzIDQxLjExIDcuNzEgNDAuNjMgMTAuNTQgMzguODQgQzEzLjIxIDM2LjEzIDE0LjY2IDM0LjMyIDE0LjgxIDMwLjQ3IEMxMy44OCAyMi44MiAxMS41IDE3LjcgNS43MyAxMi42MiBDNC45NCAxMS45MiA0LjE2IDExLjIxIDMuMzUgMTAuNDkgQy0xLjg2IDYuNzcgLTYuNTggNC45NyAtMTMuMDYgNS4yIEMtMTYuODQgNS45MSAtMTkuNjUgNy44NSAtMjIuMjcgMTAuNjIgWiAiLz4gPHBhdGggZmlsbD0iIzRlNjc3NSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMzY3Ljk0ODQ4NjMyODEyNSwzMjAuNjY0Nzk0OTIxODc1KSIgZD0iTTAgMCBDMS43MiAxLjA2IDMuMzkgMi4xNyA1LjA1IDMuMzQgQzUuODggMy45MSA2LjcgNC40OCA3LjU2IDUuMDcgQzE0Ljk2IDEwLjk2IDIyLjU0IDIxLjA0IDI0LjQ5IDMwLjQ3IEMyNC43NCAzMi42OCAyNC44NiAzNC44NiAyNC45MyAzNy4wOSBDMjQuOTYgMzcuODcgMjQuOTkgMzguNjYgMjUuMDIgMzkuNDcgQzI1LjM4IDUzLjU2IDIxLjk2IDYzLjg2IDEyLjc0IDc0LjY1IEMzLjQgODQuNDkgLTcuODYgODkuNiAtMjEuMzkgOTAuNTkgQy0zNi40NiA5MC4yNyAtNDcuOTggODUuMDYgLTU4LjUyIDc0LjMgQy02Ni44MiA2NS4yOSAtNzAuNjkgNTQuMDUgLTcxLjM5IDQxLjkgQy03MC43NyAyOC44MSAtNjQuODQgMTYuNTQgLTU1Ljg1IDcuMTUgQy01My42NSA1LjMgLTUxLjQxIDMuODMgLTQ4Ljk1IDIuMzQgQy00OC4wMSAxLjY5IC00Ny4wOCAxLjA0IC00Ni4xMSAwLjM3IEMtMzIuNjUgLTguMjMgLTEzLjcyIC03Ljc2IDAgMCBaIE0tMjIuOTUgOC4zNCBDLTI1LjMyIDEzLjYgLTI1LjY4IDE4Ljc4IC0yMy45NSAyNC4zNCBDLTE5Ljg2IDMxLjU5IC0xNC4yNSAzNS42OSAtNi45NSAzOS4zNCBDNC42IDQwLjM2IDQuNiA0MC4zNiA5LjA1IDM4LjUgQzExLjU1IDM2LjI4IDEyLjQxIDMzLjYzIDEyLjk5IDMwLjQ2IEMxMy40NyAyMi40NiAxMC4yMyAxNy4yNCA1LjA1IDExLjM0IEMwIDYuNTUgLTUuMDcgNC4yIC0xMi4wMSAzLjkgQy0xNi45MyA0LjA4IC0xOS40MSA0Ljg4IC0yMi45NSA4LjM0IFogIi8+IDxwYXRoIGZpbGw9IiM0ZTY3NzUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIxOC41MzUxNTYyNSwzMzAuNTYyNSkiIGQ9Ik0wIDAgQzUuMzcgNC4wNiAxMC42NSA4LjY3IDExLjg0IDE1LjYyIEMxMS45NSAxOS4zNCAxMi4wMyAyMi40OCA5LjY1IDI1LjUgQzYuMjggMjguMjQgMi40OSAyOC4xMyAtMS42OSAyNy45MSBDLTkuNDQgMjYuNjIgLTE0LjcgMjIuMTggLTE5LjIyIDE1LjkxIEMtMjEuMzQgMTEuOTIgLTIxLjk4IDcuOTMgLTIxLjU0IDMuNDQgQy0yMC40MiAwLjQ4IC0xOS40MiAtMS4wOSAtMTYuNTQgLTIuNDQgQy0xMC43MyAtNC42IC01LjE1IC0zLjE3IDAgMCBaICIvPiA8cGF0aCBmaWxsPSIjNGU2Nzc1IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzNjYuMzA0Njg3NSwzMzAuMDYyNSkiIGQ9Ik0wIDAgQzUuMzkgMi45OCA5LjY2IDcuMDMgMTEuNyAxMi45NCBDMTIuMzggMTcgMTIuNTkgMjAuODMgMTAuOTUgMjQuNjkgQzkuMDYgMjcuMTIgNy4yOCAyNy44MSA0LjMgMjguNDggQy0zLjc2IDI5LjEgLTkuMjMgMjYuMDEgLTE1LjMgMjAuOTQgQy0xOS40OSAxNi43MyAtMjEuMiAxMi44NiAtMjEuMyA2Ljk0IEMtMjAuNTcgMy40NCAtMTkuOTggMS41NyAtMTcuMzcgLTAuODggQy0xMS41MyAtNC4yNCAtNS43OSAtMi43IDAgMCBaICIvPiA8cGF0aCBmaWxsPSIjNGU2Nzc1IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg0MzQsNDk1KSIgZD0iTTAgMCBDLTUuNjIgMTUuODIgLTI1LjA3IDI2LjM0IC0zOSAzNCBDLTM5LjYzIDM0LjM1IC00MC4yNSAzNC42OSAtNDAuOSAzNS4wNSBDLTU5Ljc0IDQ1LjM0IC04MS43MyA1Mi45IC0xMDMgNTYgQy0xMDQuNjIgNTYuMjUgLTEwNi4yMyA1Ni41IC0xMDcuODUgNTYuNzUgQy0xMDkuNjcgNTcuMDIgLTExMS40OSA1Ny4yOSAtMTEzLjMxIDU3LjU2IEMtMTE0LjE1IDU3LjY5IC0xMTUgNTcuODIgLTExNS44NiA1Ny45NSBDLTEyOC45MyA1OS44MyAtMTQyIDYwLjI0IC0xNTUuMTkgNjAuMjUgQy0xNTUuOTcgNjAuMjUgLTE1Ni43NSA2MC4yNSAtMTU3LjU2IDYwLjI1IEMtMTkxLjk3IDYwLjIxIC0yMjguNjUgNTUgLTI2MCA0MCBDLTI2MC42NiAzOS42OSAtMjYxLjMyIDM5LjM3IC0yNjIgMzkuMDUgQy0yNzcuMjIgMzEuNzEgLTI5MC43NyAyMy42NiAtMzAzLjQ0IDEyLjM4IEMtMzAzLjk2IDExLjkyIC0zMDQuNDggMTEuNDYgLTMwNS4wMiAxMSBDLTMwOC4wNCA4LjI0IC0zMDkuNzkgNi4wMyAtMzExIDIgQy0zMDYuNzQgMi41NyAtMzAzLjkgNS4wNiAtMzAwLjU2IDcuNTYgQy0yOTUuMzQgMTEuMzkgLTI5MC4wNCAxNC45MSAtMjg0LjQ4IDE4LjIzIEMtMjgxLjQ1IDIwLjA2IC0yNzguNjMgMjEuOTggLTI3NS44OCAyNC4xOSBDLTI2OC4wMyAzMC4yIC0yNTguNDkgMzIuOTcgLTI0OS4xOSAzNS45NSBDLTI0OC40NSAzNi4xOCAtMjQ3LjcxIDM2LjQyIC0yNDYuOTQgMzYuNjcgQy0yNDYuMjggMzYuODggLTI0NS42MiAzNy4wOSAtMjQ0LjkzIDM3LjMgQy0yNDMgMzggLTI0MyAzOCAtMjQxLjA1IDM5LjAxIEMtMjM4LjggNDAuMSAtMjM2LjcgNDAuNjYgLTIzNC4yNiA0MS4yMiBDLTIzMy4zNiA0MS40MyAtMjMyLjQ2IDQxLjY0IC0yMzEuNTMgNDEuODYgQy0yMzAuNTkgNDIuMDcgLTIyOS42NSA0Mi4yOCAtMjI4LjY5IDQyLjUgQy0yMjYuODQgNDIuOTMgLTIyNC45OSA0My4zNSAtMjIzLjE0IDQzLjc4IEMtMjIyLjI1IDQzLjk5IC0yMjEuMzcgNDQuMTkgLTIyMC40NiA0NC40IEMtMjE4LjM2IDQ0LjkxIC0yMTYuMzIgNDUuNDkgLTIxNC4yNiA0Ni4xMiBDLTIxMC44MSA0Ny4wNSAtMjA3LjY5IDQ3LjM0IC0yMDQuMTIgNDcuNSBDLTIwMC4xNCA0Ny42OCAtMTk2LjU1IDQ4LjA2IC0xOTIuNjcgNDguOTkgQy0xODcuODQgNTAuMTIgLTE4My4xMyA1MC40NSAtMTc4LjE5IDUwLjYyIEMtMTc3LjI4IDUwLjY2IC0xNzYuMzYgNTAuNyAtMTc1LjQyIDUwLjc0IEMtMTUyLjcgNTEuNTkgLTEyOS40OCA1MS43MSAtMTA3IDQ4IEMtMTA1Ljg4IDQ3LjgzIC0xMDQuNzYgNDcuNjcgLTEwMy42MSA0Ny41IEMtOTguNzQgNDYuNzUgLTk0LjU3IDQ1LjgzIC05MCA0NCBDLTg4LjI4IDQzLjY0IC04Ni41NSA0My4zMyAtODQuODEgNDMuMDYgQy03OC40OSA0MS45NyAtNzEuOTcgNDAuODEgLTY2LjQ0IDM3LjQ0IEMtNjQuMDUgMzYuMDMgLTYyLjczIDM1LjcgLTYwLjA2IDM1LjI1IEMtNTAuODkgMzMuNDEgLTQyLjE4IDI4LjA5IC0zNC41OSAyMi43OCBDLTMyLjQ2IDIxLjMyIC0zMC4zMSAxOS45MSAtMjguMTMgMTguNTMgQy0yMC40NiAxMy42NiAtMTMuMDEgOC43MSAtNS45MyAzIEMtMi4xOSAwIC0yLjE5IDAgMCAwIFogIi8+IDxwYXRoIGZpbGw9IiM0ZTY3NzUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE3NS42MjUsNTA2LjY4NzUpIiBkPSJNMCAwIEMwLjM5IDAuMDUgMC4zOSAwLjA1IDIuMzggMC4zMSBDMy40NCAyLjQzIDMuNTYgMy42NyAzLjY5IDYuMDEgQzMuNzMgNi43MiAzLjc4IDcuNDQgMy44MiA4LjE4IEMzLjg2IDguOTIgMy45IDkuNjcgMy45NCAxMC40NCBDMy45OCAxMS4xOSA0LjAyIDExLjk1IDQuMDcgMTIuNzIgQzQuMTcgMTQuNTkgNC4yOCAxNi40NSA0LjM4IDE4LjMxIEMwLjQ1IDE5Ljg2IC0xLjkzIDE4LjY4IC01LjY5IDE3LjA2IEMtNi43MyAxNi42MiAtNy43NyAxNi4xOSAtOC44NSAxNS43MyBDLTExLjM0IDE0LjQ2IC0xMi45MiAxMy41MSAtMTQuNjIgMTEuMzEgQy0xNC42MiAxMC42NSAtMTQuNjIgOS45OSAtMTQuNjIgOS4zMSBDLTEyLjc2IDcuOTEgLTEyLjc2IDcuOTEgLTEwLjMxIDYuMzggQy01LjkxIDMuNiAtNS45MSAzLjYgLTQgMS42NCBDLTIuNjIgMC4zMSAtMi42MiAwLjMxIDAgMCBaICIvPiA8cGF0aCBmaWxsPSIjNGU2Nzc1IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzNzUsNTExKSIgZD0iTTAgMCBDNS4zOSAwLjMxIDcuOTMgMS4yNiAxMiA1IEMxMi4zIDUuMTYgMTIuMyA1LjE2IDEzLjgxIDYgQzE1IDcgMTUgNyAxNS41IDguODUgQzE1LjMzIDkuNTYgMTUuMTcgMTAuMjcgMTUgMTEgQzEyLjcxIDEyLjM5IDEwLjcxIDEzLjM5IDguMjUgMTQuMzggQzcuNjIgMTQuNjYgNi45OCAxNC45NCA2LjMzIDE1LjI0IEMxLjYyIDE3LjIxIDEuNjIgMTcuMjEgLTEuNDUgMTYuMTYgQy0xLjk2IDE1Ljc4IC0yLjQ3IDE1LjQgLTMgMTUgQy0yLjY5IDEyLjY5IC0yLjM4IDEwLjM3IC0yLjA2IDguMDYgQy0xLjk4IDcuNCAtMS44OSA2Ljc0IC0xLjggNi4wNiBDLTEuMTEgMS4xMSAtMS4xMSAxLjExIDAgMCBaICIvPiA8cGF0aCBmaWxsPSIjNGU2Nzc1IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyMDMsNTE3KSIgZD0iTTAgMCBDMC4zNCAyLjA4IDAuNjcgNC4xNyAxIDYuMjUgQzEuMSA2Ljg0IDEuMTkgNy40MiAxLjI5IDguMDMgQzEuNzYgMTEuMDUgMi4xMiAxMy45NCAyIDE3IEMtNC45IDE3LjUxIC05Ljc1IDE1Ljg3IC0xNiAxMyBDLTE1LjY0IDkuMzUgLTEzLjk2IDcuNzQgLTExLjIgNS40NSBDLTEwLjcgNS4wNSAtMTAuMiA0LjY2IC05LjY5IDQuMjUgQy05LjQ0IDQuMDQgLTkuNDQgNC4wNCAtOC4yMSAzIEMtNS40NSAwLjc3IC0zLjYxIC0wLjU4IDAgMCBaICIvPiA8cGF0aCBmaWxsPSIjNGU2Nzc1IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzNTEsNTE5KSIgZD0iTTAgMCBDNC42IDAuMTggNy4xNSAyLjUgMTAuMzEgNS41NiBDMTAuNzcgNS45OSAxMS4yMiA2LjQxIDExLjY5IDYuODUgQzEyLjggNy44OSAxMy45IDguOTQgMTUgMTAgQzExLjQ3IDE0LjMzIDguNzIgMTUuNzEgMy4yOCAxNi44NCBDMC42OCAxNy4wMiAtMS40OCAxNi42MSAtNCAxNiBDLTMuNzIgMTMuNzEgLTMuNDMgMTEuNDIgLTMuMTIgOS4xMiBDLTMuMDUgOC40NyAtMi45NyA3LjgyIC0yLjg5IDcuMTUgQy0yLjIzIDIuMjMgLTIuMjMgMi4yMyAwIDAgWiAiLz4gPHBhdGggZmlsbD0iIzRlNjc3NSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjI0LjY2MDE1NjI1LDUyMy45MDIzNDM3NSkiIGQ9Ik0wIDAgQzMuNjYgMS43MiA0LjIgNC4xOSA1LjYyIDcuOCBDNi40MiAxMC4zNiA2Ljc2IDEyLjQ0IDYuMzQgMTUuMSBDNS4zNCAxNi4xIDUuMzQgMTYuMSAyLjM0IDE2LjM1IEMtMi4yMiAxNi4yOSAtNi41NCAxNS4wMiAtMTAuNjYgMTMuMSBDLTEwLjk5IDEyLjQ0IC0xMS4zMiAxMS43OCAtMTEuNjYgMTEuMSBDLTEwLjM2IDkuMDcgLTkuMDUgNy4yNyAtNy41NCA1LjQxIEMtNy4xNCA0Ljg5IC02Ljc1IDQuMzYgLTYuMzUgMy44MiBDLTQuMzEgMS4yOSAtMy4zMyAwLjEyIDAgMCBaICIvPiA8cGF0aCBmaWxsPSIjNGU2Nzc1IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzMjUsNTI0KSIgZD0iTTAgMCBDMy45OCAwLjI0IDYuMDEgMS41MiA4LjY5IDQuNDUgQzkuMDggNC45IDkuNDcgNS4zNSA5Ljg4IDUuODEgQzEwLjI5IDYuMjUgMTAuNzEgNi42OSAxMS4xMyA3LjE0IEMxMi45NiA5LjE5IDEzLjk5IDEwLjQ2IDE0LjA1IDEzLjI1IEMxMyAxNSAxMyAxNSAxMC45MyAxNS44MyBDOC4yOSAxNi4yNSA1LjY1IDE2LjY3IDMgMTcgQzIuMzYgMTcuMDkgMS43MyAxNy4xNyAxLjA3IDE3LjI2IEMtMC41IDE3LjM4IC0wLjUgMTcuMzggLTMgMTcgQy00LjI3IDE1LjM2IC00LjI3IDE1LjM2IC01IDEzIEMtNC4zNiAxMC4wMiAtNC4zNiAxMC4wMiAtMy4xOSA2LjgxIEMtMi44MSA1Ljc1IC0yLjQzIDQuNjggLTIuMDQgMy41OCBDLTEgMSAtMSAxIDAgMCBaICIvPiA8cGF0aCBmaWxsPSIjNGU2Nzc1IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyNDksNTI3KSIgZD0iTTAgMCBDMy4zNCAwLjk0IDQuNzEgMS41MyA2LjU4IDQuNTMgQzYuNzkgNS4wMiA2Ljc5IDUuMDIgNy44MSA3LjUgQzguMjMgOC40OCA4LjY1IDkuNDYgOS4wOCAxMC40NyBDMTAgMTMgMTAgMTMgMTAgMTUgQzcuMTEgMTYuNDUgNC4yMyAxNi4xOCAxLjA2IDE2LjE5IEMwLjQzIDE2LjIgLTAuMiAxNi4yMSAtMC44NiAxNi4yMiBDLTYuNiAxNi4yNCAtNi42IDE2LjI0IC05IDE0IEMtNy42NSAxMC4xNiAtNS45MiA3LjM1IC0zLjM4IDQuMTkgQy0zLjA2IDMuNzkgLTMuMDYgMy43OSAtMS40NiAxLjc5IEMtMC45OCAxLjIgLTAuNSAwLjYxIDAgMCBaICIvPiA8cGF0aCBmaWxsPSIjNGU2Nzc1IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzMDAsNTI4KSIgZD0iTTAgMCBDMy4zNyAwLjIgNC42OSAwLjY4IDcuMDUgMy4xNCBDNy42NiA0LjAyIDguMjYgNC45MSA4Ljg4IDUuODEgQzkuNDkgNi42OSAxMC4xMSA3LjU2IDEwLjc0IDguNDYgQzEyIDExIDEyIDExIDExIDE1IEM1LjM5IDE1IC0wLjIyIDE1IC02IDE1IEMtNS4yNCAxMS4yMiAtNC41NSA4LjY1IC0zIDUuMjUgQy0yLjgyIDQuODYgLTIuODIgNC44NiAtMS45NCAyLjg5IEMtMSAxIC0xIDEgMCAwIFogIi8+IDxwYXRoIGZpbGw9IiM0ZTY3NzUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDI3Ni45MTQwNjI1LDUyOS4xMzY3MTg3NSkiIGQ9Ik0wIDAgQzIuOTYgMS4yMiAzLjgzIDIuOTYgNS40NiA1LjY4IEM2IDYuNTUgNi41NSA3LjQyIDcuMTEgOC4zMiBDOC4wOSAxMC44NiA4LjA5IDEwLjg2IDcuNjkgMTMuMTcgQzYuMDkgMTQuODYgNi4wOSAxNC44NiAyLjkgMTUuMjkgQzEuNjMgMTUuMjcgMC4zNiAxNS4yMyAtMC45MSAxNS4xOCBDLTEuNTYgMTUuMTcgLTIuMiAxNS4xNiAtMi44NiAxNS4xNSBDLTcuNTcgMTUuMDMgLTcuNTcgMTUuMDMgLTkuOTEgMTMuODYgQy05LjUyIDguNDQgLTcuNTEgNC45MyAtMy45MSAwLjg2IEMtMS45MSAtMC4xNCAtMS45MSAtMC4xNCAwIDAgWiAiLz4gPHBhdGggZmlsbD0iIzRlNjc3NSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTA1LDU0OCkiIGQ9Ik0wIDAgQzMuNDkgMS4xNiAzLjk4IDIuMDIgNi4wOCA0Ljk0IEMxMC4yIDEwLjQxIDE0Ljg5IDE1LjIgMTkuNzUgMjAgQzIwLjE5IDIwLjQ0IDIwLjYzIDIwLjg4IDIxLjA5IDIxLjMzIEMyNy40MyAyNy42NCAzMy45MyAzMy41MSA0MSAzOSBDNDIuNCA0MC4yMiA0My44IDQxLjQ1IDQ1LjE5IDQyLjY5IEM0OC40NCA0NS41NyA1MS44MiA0OC4xOSA1NS4zNCA1MC43NCBDNTcgNTIgNTcgNTIgNTkgNTQgQzU5LjMgNTcuMzcgNTguOTkgNjAuNzUgNTguODEgNjQuMTIgQzU4Ljc4IDY1LjA1IDU4Ljc1IDY1Ljk4IDU4LjcyIDY2LjkzIEM1OC42OSA2Ny4zOSA1OC42OSA2Ny4zOSA1OC41OCA2OS43IEM1OC41NCA3MC41MiA1OC41IDcxLjM1IDU4LjQ2IDcyLjIgQzU4LjA1IDc0LjY4IDU3LjQ3IDc2LjI5IDU2LjQ4IDc4LjU2IEM1NC4zMiA4NC4wOCA1NC42NiA4OS41NyA1NC43OCA5NS40MiBDNTQuNzkgOTYuNjEgNTQuOCA5Ny43OSA1NC44IDk4Ljk4IEM1NC44MyAxMDIuMDggNTQuODcgMTA1LjE5IDU0LjkxIDEwOC4yOSBDNTQuOTggMTEzLjI3IDU1LjA0IDExOC4yNCA1NS4wNyAxMjMuMjIgQzU1LjA5IDEyNC45NSA1NS4xMiAxMjYuNjggNTUuMTUgMTI4LjQxIEM1NS4xNiAxMjkuNDYgNTUuMTcgMTMwLjUyIDU1LjE4IDEzMS42IEM1NS4xOSAxMzIuNTMgNTUuMjEgMTMzLjQ1IDU1LjIyIDEzNC40IEM1NC45OCAxMzcuMjYgNTQuMTkgMTM5LjQgNTMgMTQyIEM1Mi4zNCAxNDIgNTEuNjggMTQyIDUxIDE0MiBDNTAuNzMgMTQwLjk3IDUwLjQ2IDEzOS45NCA1MC4xOSAxMzguODggQzQ4LjM0IDEzMi40OCA0NS4zNiAxMjYuODggNDAuMjUgMTIyLjUgQzM4LjQ3IDEyMC4zNiAzOC43OCAxMTguNjkgMzkgMTE2IEMzOC4wMSAxMTUuNjcgMzcuMDIgMTE1LjM0IDM2IDExNSBDMzUuMTIgMTEzLjQgMzUuMTIgMTEzLjQgMzQuNDQgMTExLjM4IEMzNC4xOSAxMTAuNjYgMzMuOTQgMTA5Ljk0IDMzLjY4IDEwOS4yMSBDMzMuMDUgMTA3LjE3IDMyLjUyIDEwNS4xMyAzMiAxMDMuMDYgQzMxLjY3IDEwMi4wNSAzMS4zNCAxMDEuMDQgMzEgMTAwIEMzMC41IDk5Ljg0IDMwLjUgOTkuODQgMjggOTkgQzI3LjMgOTcuMDEgMjYuNjMgOTUuMDEgMjYgOTMgQzI1LjM0IDkyLjY3IDI0LjY4IDkyLjM0IDI0IDkyIEMyMy4zNyA4OS45NiAyMi45OCA4Ny45MSAyMi41NiA4NS44MSBDMjIuMzggODUuMjEgMjIuMTkgODQuNjIgMjIgODQgQzIxLjM0IDgzLjY3IDIwLjY4IDgzLjM0IDIwIDgzIEMxOS40NCA4MC44MiAxOS40NCA4MC44MiAxOSA3OC4xMiBDMTguNDYgNzQuODIgMTcuOSA3Mi43MiAxNiA3MCBDMTUuNDIgNjcuOTYgMTUgNjUuOTIgMTQuNTYgNjMuODQgQzE0IDYyIDE0IDYyIDEyIDYwIEMxMS41OSA1OC4wNSAxMS41OSA1OC4wNSAxMS4zOCA1NS44OCBDMTEuMyA1NS4xNSAxMS4yMyA1NC40MyAxMS4xNSA1My42OCBDMTEuMSA1My4xMyAxMS4wNSA1Mi41NyAxMSA1MiBDOS42OCA1MiA4LjM2IDUyIDcgNTIgQzcgNDcuMDUgNyA0Mi4xIDcgMzcgQzYuMDEgMzYuNjcgNS4wMiAzNi4zNCA0IDM2IEMzLjk5IDM1LjUyIDMuOTcgMzUuMDMgMy45NiAzNC41MyBDMy44OCAzMi4zMSAzLjc4IDMwLjA5IDMuNjkgMjcuODggQzMuNjYgMjcuMTEgMy42NCAyNi4zNSAzLjYyIDI1LjU3IEMzLjM4IDIwLjU5IDIuMjkgMTcuNDkgMCAxMyBDLTAuMjkgOS41NyAtMC4yOSA5LjU3IC0wLjE5IDYuMTIgQy0wLjE3IDUuNTUgLTAuMTcgNS41NSAtMC4xMSAyLjYzIEMtMC4wNyAxLjc2IC0wLjA0IDAuOSAwIDAgWiAiLz4gPHBhdGggZmlsbD0iI2ZmZmZmZiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjM1LjQ1NzAzMTI1LDMwNC4wMzUxNTYyNSkiIGQ9Ik0wIDAgQzAuODQgMC42NSAxLjY4IDEuMyAyLjU0IDEuOTYgQzMuMzggMi42IDQuMjMgMy4yNCA1LjA5IDMuOSBDMTcuOTkgMTQuNzggMjYuNDggMzEuMTUgMjguMzYgNDcuODIgQzI5LjIyIDU4LjA0IDI5LjU1IDY5LjA5IDI2LjU0IDc4Ljk2IEMyNi4zIDc5LjgxIDI2LjA1IDgwLjY1IDI1LjggODEuNTEgQzIwLjcyIDk3LjA4IDExLjM1IDExMC45MyAtMi40NiAxMTkuOTYgQy0zLjIyIDEyMC40NyAtMy45OCAxMjAuOTcgLTQuNzYgMTIxLjQ4IEMtMjEuNjUgMTMyLjEyIC00MS4xNyAxMzUuODkgLTYwLjc3IDEzMS43MSBDLTgwLjI0IDEyNy4xMiAtOTYuMzIgMTE3LjI1IC0xMDcuMzkgMTAwLjM0IEMtMTA4LjQzIDk4LjU2IC0xMDkuNDYgOTYuNzcgLTExMC40NiA5NC45NiBDLTExMC45MiA5NC4yMSAtMTExLjM3IDkzLjQ2IC0xMTEuODUgOTIuNjkgQy0xMjEuNDQgNzUuNzggLTEyMS40IDU1LjIyIC0xMTYuNDYgMzYuOTYgQy0xMTYuMjUgMzYuMTYgLTExNi4wNSAzNS4zNSAtMTE1Ljg0IDM0LjUyIEMtMTEwLjUyIDE2LjEzIC05NSAwLjc0IC03OC41OCAtOC4zNSBDLTUyLjM5IC0yMC4zNCAtMjIuNzkgLTE3IDAgMCBaIE0tNDQuNDEgOS4yMSBDLTU4LjMxIDEwLjgyIC02OS45IDE3LjQyIC03OC41NiAyOC4zNiBDLTg3Ljc2IDQwLjk1IC04OS45NCA1NC4wNSAtODcuODkgNjkuMzQgQy04NS4xNCA4Mi42OCAtNzUuOTcgOTQuNTEgLTY1LjA4IDEwMi40IEMtNTMuMTggMTA5LjUxIC0zOS4xMyAxMTEuMzQgLTI1LjUxIDEwOC41NyBDLTIxLjg4IDEwNy41MiAtMTguNzEgMTA1Ljg3IC0xNS40NiAxMDMuOTYgQy0xNC40OSAxMDMuNDMgLTEzLjUzIDEwMi45IC0xMi41NCAxMDIuMzYgQy02LjM2IDk4LjcyIC0xLjc2IDk0LjY4IDIuNTQgODguOTYgQzMuMjQgODguMDggMy45NSA4Ny4xOSA0LjY3IDg2LjI4IEMxMi4yMyA3My44OCAxMy43MSA2MC4zNCAxMC44OCA0Ni4xNCBDOC4yNiAzNi41MiAyLjkyIDI4LjYgLTQuNDYgMjEuOTYgQy00Ljk2IDIxLjQ5IC01LjQ1IDIxLjAxIC01Ljk3IDIwLjUxIEMtMTUuMjIgMTEuOTcgLTI2LjczIDguMzIgLTM5LjI4IDguNzkgQy00MC45OSA4LjkzIC00Mi43IDkuMDcgLTQ0LjQxIDkuMjEgWiAiLz4gPHBhdGggZmlsbD0iI2ZmZmZmZiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNDAxLjEwNTQ2ODc1LDMwNi41ODk4NDM3NSkiIGQ9Ik0wIDAgQzE1LjE3IDEyLjM4IDIzLjg5IDMxLjE1IDI2LjEyIDUwLjM0IEMyNy43NiA2OS45IDIwLjk2IDg5LjUzIDguNDYgMTA0LjQ3IEM0LjA5IDEwOS40NiAtMC41NyAxMTMuNzQgLTYuMTEgMTE3LjQxIEMtNi44OCAxMTcuOTMgLTcuNjYgMTE4LjQ1IC04LjQ2IDExOC45OCBDLTI2LjE1IDEzMC4xNyAtNDYuMzcgMTMzLjIzIC02Ni43NCAxMjguODEgQy04NS4wMSAxMjQuNDMgLTEwMC45MyAxMTIuOSAtMTExLjM4IDk3LjMgQy0xMjEuNzUgNzkuOTggLTEyNi4zNCA2MC45MyAtMTIxLjg3IDQwLjkxIEMtMTE2LjQyIDE5LjE0IC0xMDMuMzYgMi42NSAtODQuNDggLTkuMjggQy01Ny40MSAtMjUuMjkgLTIzLjcxIC0xNy45MSAwIDAgWiBNLTYyLjA2IDYuNjUgQy03Ni4wNSA4LjI4IC04Ni42IDE0LjY3IC05NS43IDI1LjI2IEMtOTguNzUgMjkuMzMgLTEwMS4wNSAzMy43NyAtMTAzLjExIDM4LjQxIEMtMTAzLjI2IDM4LjcyIC0xMDMuMjYgMzguNzIgLTEwNC4wMiA0MC4yOSBDLTEwOC4zOCA1MC43MSAtMTA3LjQ4IDY0LjE4IC0xMDMuNDQgNzQuNTYgQy05Ny41OSA4OC4wMiAtODYuNzUgOTguNjYgLTczLjE4IDEwNC4xOSBDLTY3LjM1IDEwNi4zNSAtNjIuMDUgMTA2Ljk1IC01NS44NiAxMDYuOTEgQy01NS40IDEwNi45MSAtNTUuNCAxMDYuOTEgLTUzLjA3IDEwNi45IEMtMzcuNzggMTA2LjUxIC0yNy41NSA5OS4zNSAtMTcuMDggODguNjUgQy0xNC45OCA4Ni4yNyAtMTMuMzcgODMuOTUgLTExLjk2IDgxLjExIEMtMTEuMTEgNzkuNDEgLTExLjExIDc5LjQxIC05LjYxIDc3LjE5IEMtNy43NCA3My43MyAtNy4wNCA3MC41MSAtNi4zNiA2Ni42NiBDLTYuMjMgNjUuOTUgLTYuMSA2NS4yMyAtNS45NyA2NC41IEMtNS4wOSA1OS4yMSAtNS4wMyA1NC42OCAtNi4xMSA0OS40MSBDLTYuMiA0OC41NiAtNi4yOSA0Ny43MiAtNi4zOCA0Ni44NSBDLTcuMzkgMzguODggLTEwLjcyIDMyLjk1IC0xNS4xMSAyNi40MSBDLTE1LjUgMjUuODEgLTE1Ljg5IDI1LjIyIC0xNi4yOSAyNC42IEMtMjIuODIgMTUuNzggLTM0LjUxIDkuMSAtNDUuMTEgNy4xNiBDLTUwLjk0IDYuMzQgLTU2LjIxIDYuMTcgLTYyLjA2IDYuNjUgWiAiLz4gPHBhdGggZmlsbD0iI2ZmZmZmZiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjIyLjkyNDU2MDU0Njg3NSwzMjQuMjU2MTAzNTE1NjI1KSIgZD0iTTAgMCBDOC4yOSA2LjIyIDEzLjEzIDEyIDE3LjA4IDIxLjc0IEMxNy40IDIyLjQ0IDE3LjcyIDIzLjE0IDE4LjA2IDIzLjg2IEMyMi4xOSAzMy44NCAyMS40MyA0NS45NCAxNy40NSA1NS44MSBDMTIuMjQgNjcuNzYgMy4zNyA3Ny43OCAtOC45MiA4Mi43NCBDLTIwLjU1IDg1LjggLTM1LjY2IDg2Ljg4IC00Ni41NCA4MC44NSBDLTUwLjI2IDc4LjQ1IC01My41OSA3NS42NSAtNTYuOTIgNzIuNzQgQy01Ny43IDcyLjExIC01OC40OCA3MS40OCAtNTkuMjggNzAuODMgQy02Ni4zMyA2NC42MSAtNzAuMiA1NS4xMyAtNzAuODcgNDUuNzYgQy03MC44OCA0NS40MyAtNzAuODggNDUuNDMgLTcwLjkyIDQzLjc0IEMtNzAuOTYgNDIuODkgLTcxIDQyLjA0IC03MS4wNCA0MS4xNyBDLTcxLjM2IDI4LjQ0IC02OC42OCAxNy4wNSAtNTkuODMgNy41OCBDLTQzLjU4IC04LjEgLTE5LjQ0IC0xMy44NSAwIDAgWiBNLTI5LjYyIDYuNzIgQy0zMS43NyAxMC4wNSAtMzEuNjQgMTIuOTEgLTMwLjkyIDE2Ljc0IEMtMjcuODggMjQuMzMgLTIyLjQ2IDMyLjIxIC0xNS4wNCAzNi4wMyBDLTguNjcgMzguMTkgLTEuMDEgMzguNjEgNS40NSAzNi42IEM4LjQ2IDM1LjAyIDkuODIgMzIuODMgMTEuMDggMjkuNzQgQzEzLjA3IDIzLjI3IDExLjEyIDE4LjYzIDguMDggMTIuNzQgQzQuNjIgNi44NCAtMS4wNCAzLjkyIC02LjkyIDAuNzQgQy03LjYgMC4zNyAtOC4yNyAtMC4wMSAtOC45NyAtMC40IEMtMTcuNDQgLTQuMTIgLTI0LjEyIDAuMzIgLTI5LjYyIDYuNzIgWiAiLz4gPHBhdGggZmlsbD0iI2ZmZmZmZiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMzY5LjkyNTc4MTI1LDMyMy42OTE0MDYyNSkiIGQ9Ik0wIDAgQzkuNjkgNi40MiAxNy41NCAxNi4xNCAyMS4wNyAyNy4zMSBDMjEuNiAzMC45OCAyMS42NCAzNC41NSAyMS41NyAzOC4yNSBDMjEuNTggMzguNzEgMjEuNTggMzguNzEgMjEuNjIgNDEuMDUgQzIxLjU2IDUxLjk4IDE3LjA1IDYxLjc5IDkuNzYgNjkuODcgQzguODcgNzAuNjkgNy45OCA3MS41IDcuMDcgNzIuMzEgQzYuNDggNzIuODggNS44OCA3My40NCA1LjI2IDc0LjAzIEMtNC40NiA4Mi45OSAtMTQuOCA4NS44MiAtMjcuOTMgODUuMzEgQy00Mi4xIDg0LjI5IC01MC43IDc5IC02MC4zNiA2OC44NyBDLTY4LjEgNTkuNTkgLTcxLjU0IDQ4LjgyIC03MS4xNyAzNi43NSBDLTcwLjIyIDI3LjI4IC02Ny45MSAxOS43NCAtNjEuOTMgMTIuMzEgQy02MS40MSAxMS42MiAtNjAuOSAxMC45MyAtNjAuMzcgMTAuMjMgQy01NS43OSA0LjQ4IC01MC4zMiAwLjg0IC00My45MyAtMi42OSBDLTQzLjE3IC0zLjEzIC00Mi40MSAtMy41NyAtNDEuNjMgLTQuMDIgQy0yOC4xNSAtMTAuNjQgLTEyLjM2IC03LjE1IDAgMCBaIE0tMjYuOTMgNS4zMSBDLTI4LjAzIDguMjUgLTI4LjA5IDExLjEyIC0yOC4xMSAxNC4yNSBDLTI4LjEzIDE1LjA4IC0yOC4xNCAxNS45MSAtMjguMTYgMTYuNzcgQy0yNy41NSAyMy40OCAtMjMuNDEgMjguNTUgLTE4LjkzIDMzLjMxIEMtMTIuNzIgMzguMjEgLTQuMzcgMzguOTMgMy4yOSAzOC4wNSBDNi4xNyAzNy4zOCA3Ljg5IDM2LjQ5IDkuOTUgMzQuMzcgQzEyLjYxIDI5LjQ5IDEyLjY0IDI0LjczIDEyLjA3IDE5LjMxIEM5LjkzIDEyLjA4IDQuODcgNi41OCAtMS41MSAyLjc2IEMtMTEuMDYgLTIgLTE5LjIzIC0zLjI1IC0yNi45MyA1LjMxIFogIi8+IDxwYXRoIGZpbGw9IiNmZmZmZmYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIxOC41MzUxNTYyNSwzMzAuNTYyNSkiIGQ9Ik0wIDAgQzUuMzcgNC4wNiAxMC42NSA4LjY3IDExLjg0IDE1LjYyIEMxMS45NSAxOS4zNCAxMi4wMyAyMi40OCA5LjY1IDI1LjUgQzYuMjggMjguMjQgMi40OSAyOC4xMyAtMS42OSAyNy45MSBDLTkuNDQgMjYuNjIgLTE0LjcgMjIuMTggLTE5LjIyIDE1LjkxIEMtMjEuMzQgMTEuOTIgLTIxLjk4IDcuOTMgLTIxLjU0IDMuNDQgQy0yMC40MiAwLjQ4IC0xOS40MiAtMS4wOSAtMTYuNTQgLTIuNDQgQy0xMC43MyAtNC42IC01LjE1IC0zLjE3IDAgMCBaICIvPiA8cGF0aCBmaWxsPSIjZmZmZmZmIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzNjYuMzA0Njg3NSwzMzAuMDYyNSkiIGQ9Ik0wIDAgQzUuMzkgMi45OCA5LjY2IDcuMDMgMTEuNyAxMi45NCBDMTIuMzggMTcgMTIuNTkgMjAuODMgMTAuOTUgMjQuNjkgQzkuMDYgMjcuMTIgNy4yOCAyNy44MSA0LjMgMjguNDggQy0zLjc2IDI5LjEgLTkuMjMgMjYuMDEgLTE1LjMgMjAuOTQgQy0xOS40OSAxNi43MyAtMjEuMiAxMi44NiAtMjEuMyA2Ljk0IEMtMjAuNTcgMy40NCAtMTkuOTggMS41NyAtMTcuMzcgLTAuODggQy0xMS41MyAtNC4yNCAtNS43OSAtMi43IDAgMCBaICIvPiA8cGF0aCBmaWxsPSIjZmZmZmZmIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNzUuNjI1LDUwNi42ODc1KSIgZD0iTTAgMCBDMC4zOSAwLjA1IDAuMzkgMC4wNSAyLjM4IDAuMzEgQzMuNDQgMi40MyAzLjU2IDMuNjcgMy42OSA2LjAxIEMzLjczIDYuNzIgMy43OCA3LjQ0IDMuODIgOC4xOCBDMy44NiA4LjkyIDMuOSA5LjY3IDMuOTQgMTAuNDQgQzMuOTggMTEuMTkgNC4wMiAxMS45NSA0LjA3IDEyLjcyIEM0LjE3IDE0LjU5IDQuMjggMTYuNDUgNC4zOCAxOC4zMSBDMC40NSAxOS44NiAtMS45MyAxOC42OCAtNS42OSAxNy4wNiBDLTYuNzMgMTYuNjIgLTcuNzcgMTYuMTkgLTguODUgMTUuNzMgQy0xMS4zNCAxNC40NiAtMTIuOTIgMTMuNTEgLTE0LjYyIDExLjMxIEMtMTQuNjIgMTAuNjUgLTE0LjYyIDkuOTkgLTE0LjYyIDkuMzEgQy0xMi43NiA3LjkxIC0xMi43NiA3LjkxIC0xMC4zMSA2LjM4IEMtNS45MSAzLjYgLTUuOTEgMy42IC00IDEuNjQgQy0yLjYyIDAuMzEgLTIuNjIgMC4zMSAwIDAgWiAiLz4gPHBhdGggZmlsbD0iI2ZmZmZmZiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMzc1LDUxMSkiIGQ9Ik0wIDAgQzUuMzkgMC4zMSA3LjkzIDEuMjYgMTIgNSBDMTIuMyA1LjE2IDEyLjMgNS4xNiAxMy44MSA2IEMxNSA3IDE1IDcgMTUuNSA4Ljg1IEMxNS4zMyA5LjU2IDE1LjE3IDEwLjI3IDE1IDExIEMxMi43MSAxMi4zOSAxMC43MSAxMy4zOSA4LjI1IDE0LjM4IEM3LjYyIDE0LjY2IDYuOTggMTQuOTQgNi4zMyAxNS4yNCBDMS42MiAxNy4yMSAxLjYyIDE3LjIxIC0xLjQ1IDE2LjE2IEMtMS45NiAxNS43OCAtMi40NyAxNS40IC0zIDE1IEMtMi42OSAxMi42OSAtMi4zOCAxMC4zNyAtMi4wNiA4LjA2IEMtMS45OCA3LjQgLTEuODkgNi43NCAtMS44IDYuMDYgQy0xLjExIDEuMTEgLTEuMTEgMS4xMSAwIDAgWiAiLz4gPHBhdGggZmlsbD0iI2ZmZmZmZiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjAzLDUxNykiIGQ9Ik0wIDAgQzAuMzQgMi4wOCAwLjY3IDQuMTcgMSA2LjI1IEMxLjEgNi44NCAxLjE5IDcuNDIgMS4yOSA4LjAzIEMxLjc2IDExLjA1IDIuMTIgMTMuOTQgMiAxNyBDLTQuOSAxNy41MSAtOS43NSAxNS44NyAtMTYgMTMgQy0xNS42NCA5LjM1IC0xMy45NiA3Ljc0IC0xMS4yIDUuNDUgQy0xMC43IDUuMDUgLTEwLjIgNC42NiAtOS42OSA0LjI1IEMtOS40NCA0LjA0IC05LjQ0IDQuMDQgLTguMjEgMyBDLTUuNDUgMC43NyAtMy42MSAtMC41OCAwIDAgWiAiLz4gPHBhdGggZmlsbD0iI2ZmZmZmZiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMzUxLDUxOSkiIGQ9Ik0wIDAgQzQuNiAwLjE4IDcuMTUgMi41IDEwLjMxIDUuNTYgQzEwLjc3IDUuOTkgMTEuMjIgNi40MSAxMS42OSA2Ljg1IEMxMi44IDcuODkgMTMuOSA4Ljk0IDE1IDEwIEMxMS40NyAxNC4zMyA4LjcyIDE1LjcxIDMuMjggMTYuODQgQzAuNjggMTcuMDIgLTEuNDggMTYuNjEgLTQgMTYgQy0zLjcyIDEzLjcxIC0zLjQzIDExLjQyIC0zLjEyIDkuMTIgQy0zLjA1IDguNDcgLTIuOTcgNy44MiAtMi44OSA3LjE1IEMtMi4yMyAyLjIzIC0yLjIzIDIuMjMgMCAwIFogIi8+IDxwYXRoIGZpbGw9IiNmZmZmZmYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIyNC42NjAxNTYyNSw1MjMuOTAyMzQzNzUpIiBkPSJNMCAwIEMzLjY2IDEuNzIgNC4yIDQuMTkgNS42MiA3LjggQzYuNDIgMTAuMzYgNi43NiAxMi40NCA2LjM0IDE1LjEgQzUuMzQgMTYuMSA1LjM0IDE2LjEgMi4zNCAxNi4zNSBDLTIuMjIgMTYuMjkgLTYuNTQgMTUuMDIgLTEwLjY2IDEzLjEgQy0xMC45OSAxMi40NCAtMTEuMzIgMTEuNzggLTExLjY2IDExLjEgQy0xMC4zNiA5LjA3IC05LjA1IDcuMjcgLTcuNTQgNS40MSBDLTcuMTQgNC44OSAtNi43NSA0LjM2IC02LjM1IDMuODIgQy00LjMxIDEuMjkgLTMuMzMgMC4xMiAwIDAgWiAiLz4gPHBhdGggZmlsbD0iI2ZmZmZmZiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMzI1LDUyNCkiIGQ9Ik0wIDAgQzMuOTggMC4yNCA2LjAxIDEuNTIgOC42OSA0LjQ1IEM5LjA4IDQuOSA5LjQ3IDUuMzUgOS44OCA1LjgxIEMxMC4yOSA2LjI1IDEwLjcxIDYuNjkgMTEuMTMgNy4xNCBDMTIuOTYgOS4xOSAxMy45OSAxMC40NiAxNC4wNSAxMy4yNSBDMTMgMTUgMTMgMTUgMTAuOTMgMTUuODMgQzguMjkgMTYuMjUgNS42NSAxNi42NyAzIDE3IEMyLjM2IDE3LjA5IDEuNzMgMTcuMTcgMS4wNyAxNy4yNiBDLTAuNSAxNy4zOCAtMC41IDE3LjM4IC0zIDE3IEMtNC4yNyAxNS4zNiAtNC4yNyAxNS4zNiAtNSAxMyBDLTQuMzYgMTAuMDIgLTQuMzYgMTAuMDIgLTMuMTkgNi44MSBDLTIuODEgNS43NSAtMi40MyA0LjY4IC0yLjA0IDMuNTggQy0xIDEgLTEgMSAwIDAgWiAiLz4gPHBhdGggZmlsbD0iI2ZmZmZmZiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjQ5LDUyNykiIGQ9Ik0wIDAgQzMuMzQgMC45NCA0LjcxIDEuNTMgNi41OCA0LjUzIEM2Ljc5IDUuMDIgNi43OSA1LjAyIDcuODEgNy41IEM4LjIzIDguNDggOC42NSA5LjQ2IDkuMDggMTAuNDcgQzEwIDEzIDEwIDEzIDEwIDE1IEM3LjExIDE2LjQ1IDQuMjMgMTYuMTggMS4wNiAxNi4xOSBDMC40MyAxNi4yIC0wLjIgMTYuMjEgLTAuODYgMTYuMjIgQy02LjYgMTYuMjQgLTYuNiAxNi4yNCAtOSAxNCBDLTcuNjUgMTAuMTYgLTUuOTIgNy4zNSAtMy4zOCA0LjE5IEMtMy4wNiAzLjc5IC0zLjA2IDMuNzkgLTEuNDYgMS43OSBDLTAuOTggMS4yIC0wLjUgMC42MSAwIDAgWiAiLz4gPHBhdGggZmlsbD0iI2ZmZmZmZiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTY4LDUyOCkiIGQ9Ik0wIDAgQzEuMDEgMC4yOSAyLjAxIDAuNTggMy4wNSAwLjg4IEM1LjU3IDEuNiA4LjExIDIuMzEgMTAuNjQgMyBDMTEuODQgMy4zMyAxMy4wNSAzLjY3IDE0LjI1IDQgQzE0Ljg2IDQuMTYgMTUuNDcgNC4zMyAxNi4xIDQuNSBDMjAuNjkgNS43OCAyMC42OSA1Ljc4IDIyLjQxIDYuOTkgQzI0LjQgOC4yNSAyNi4yIDguNjYgMjguNSA5LjE4IEMyOS4zOCA5LjM5IDMwLjI2IDkuNTkgMzEuMTcgOS44IEMzMi4xMSAxMC4wMSAzMy4wNCAxMC4yMiAzNCAxMC40NCBDMzkuNzUgMTEuNzYgNDUuNDcgMTMuMDggNTEuMTIgMTQuNzUgQzU1LjQyIDE1Ljk2IDU5LjU2IDE2LjQ2IDY0IDE2LjY5IEM2Ni42NSAxNi45NiA2OS4wOSAxNy40MyA3MS42OSAxNy45OSBDNzYuOTUgMTkuMDcgODIuMDggMTkuNDQgODcuNDQgMTkuNjIgQzg4LjQgMTkuNjYgODkuMzYgMTkuNyA5MC4zNCAxOS43NCBDOTkuNTcgMjAuMDcgMTA4Ljc3IDIwLjE2IDExOCAyMCBDMTE5IDE5Ljk5IDExOS45OSAxOS45NyAxMjEuMDIgMTkuOTYgQzEzNC4xMiAxOS43NyAxNDYuOTIgMTkgMTU5Ljg4IDE3LjA2IEMxNjEuMDIgMTYuODkgMTYyLjE2IDE2LjcyIDE2My4zMyAxNi41NSBDMTY4LjE5IDE1Ljc4IDE3Mi40NSAxNC45IDE3NyAxMyBDMTc5LjUyIDEyLjQ0IDE4Mi4wNSAxMiAxODQuNiAxMS41NiBDMTg3IDExIDE4OC44MSAxMC4xMSAxOTEgOSBDMTkzLjMxIDguNDMgMTk1LjYzIDggMTk3Ljk4IDcuNTYgQzIwMCA3IDIwMCA3IDIwMiA1IEMyMDQuMzggNC41OSAyMDQuMzggNC41OSAyMDcuMTIgNC4zOCBDMjA4LjA0IDQuMyAyMDguOTUgNC4yMyAyMDkuODggNC4xNSBDMjEwLjIzIDQuMTIgMjEwLjIzIDQuMTIgMjEyIDQgQzIwOC41MyA4LjI1IDIwNC44MSA5LjM5IDE5OS43NSAxMC45NCBDMTk4Ljk0IDExLjE5IDE5OC4xMyAxMS40NSAxOTcuMyAxMS43MSBDMTk1LjY0IDEyLjIzIDE5My45OCAxMi43NSAxOTIuMzIgMTMuMjYgQzE5MC4zMiAxMy45IDE4OC4zNSAxNC41OSAxODYuMzggMTUuMzIgQzE2NC42MiAyMy4yIDEzOS45NCAyNC44IDExNyAyNSBDMTE1LjYyIDI1LjAzIDExNC4yNCAyNS4wNSAxMTIuODYgMjUuMDggQzEwOS4yNCAyNS4xNCAxMDUuNjIgMjUuMDkgMTAyIDI1IEMxMDEuMjIgMjQuOTggMTAwLjQ1IDI0Ljk2IDk5LjY0IDI0Ljk1IEM4Ny42NiAyNC42MyA3Ni4wNiAyMy41MiA2NC4yNyAyMS40IEM2Mi4wMyAyMS4wMSA1OS44IDIwLjY1IDU3LjU2IDIwLjMxIEM0OS4zMyAxOS4wMiA0MS42NyAxNy4xMSAzMy44MiAxNC4zMiBDMzAuNDQgMTMuMTIgMjcuMDIgMTIuMTMgMjMuNTYgMTEuMTcgQzE3LjMzIDkuNDMgMTEuMzMgNy41IDUuNDQgNC44MSBDNS4xNiA0LjY5IDUuMTYgNC42OSAzLjc2IDQuMDUgQzIuMjUgMy4zMyAyLjI1IDMuMzMgMCAyIEMwIDEuMzQgMCAwLjY4IDAgMCBaICIvPiA8cGF0aCBmaWxsPSIjZmZmZmZmIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzMDAsNTI4KSIgZD0iTTAgMCBDMy4zNyAwLjIgNC42OSAwLjY4IDcuMDUgMy4xNCBDNy42NiA0LjAyIDguMjYgNC45MSA4Ljg4IDUuODEgQzkuNDkgNi42OSAxMC4xMSA3LjU2IDEwLjc0IDguNDYgQzEyIDExIDEyIDExIDExIDE1IEM1LjM5IDE1IC0wLjIyIDE1IC02IDE1IEMtNS4yNCAxMS4yMiAtNC41NSA4LjY1IC0zIDUuMjUgQy0yLjgyIDQuODYgLTIuODIgNC44NiAtMS45NCAyLjg5IEMtMSAxIC0xIDEgMCAwIFogIi8+IDxwYXRoIGZpbGw9IiNmZmZmZmYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDI3Ni45MTQwNjI1LDUyOS4xMzY3MTg3NSkiIGQ9Ik0wIDAgQzIuOTYgMS4yMiAzLjgzIDIuOTYgNS40NiA1LjY4IEM2IDYuNTUgNi41NSA3LjQyIDcuMTEgOC4zMiBDOC4wOSAxMC44NiA4LjA5IDEwLjg2IDcuNjkgMTMuMTcgQzYuMDkgMTQuODYgNi4wOSAxNC44NiAyLjkgMTUuMjkgQzEuNjMgMTUuMjcgMC4zNiAxNS4yMyAtMC45MSAxNS4xOCBDLTEuNTYgMTUuMTcgLTIuMiAxNS4xNiAtMi44NiAxNS4xNSBDLTcuNTcgMTUuMDMgLTcuNTcgMTUuMDMgLTkuOTEgMTMuODYgQy05LjUyIDguNDQgLTcuNTEgNC45MyAtMy45MSAwLjg2IEMtMS45MSAtMC4xNCAtMS45MSAtMC4xNCAwIDAgWiAiLz4gPHBhdGggZmlsbD0iIzAwMDAwMCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjIyLjkyNDU2MDU0Njg3NSwzMjQuMjU2MTAzNTE1NjI1KSIgZD0iTTAgMCBDOC4yOSA2LjIyIDEzLjEzIDEyIDE3LjA4IDIxLjc0IEMxNy40IDIyLjQ0IDE3LjcyIDIzLjE0IDE4LjA2IDIzLjg2IEMyMi4xOSAzMy44NCAyMS40MyA0NS45NCAxNy40NSA1NS44MSBDMTIuMjQgNjcuNzYgMy4zNyA3Ny43OCAtOC45MiA4Mi43NCBDLTIwLjU1IDg1LjggLTM1LjY2IDg2Ljg4IC00Ni41NCA4MC44NSBDLTUwLjI2IDc4LjQ1IC01My41OSA3NS42NSAtNTYuOTIgNzIuNzQgQy01Ny43IDcyLjExIC01OC40OCA3MS40OCAtNTkuMjggNzAuODMgQy02Ni4zMyA2NC42MSAtNzAuMiA1NS4xMyAtNzAuODcgNDUuNzYgQy03MC44OCA0NS40MyAtNzAuODggNDUuNDMgLTcwLjkyIDQzLjc0IEMtNzAuOTYgNDIuODkgLTcxIDQyLjA0IC03MS4wNCA0MS4xNyBDLTcxLjM2IDI4LjQ0IC02OC42OCAxNy4wNSAtNTkuODMgNy41OCBDLTQzLjU4IC04LjEgLTE5LjQ0IC0xMy44NSAwIDAgWiBNLTI5LjYyIDYuNzIgQy0zMS43NyAxMC4wNSAtMzEuNjQgMTIuOTEgLTMwLjkyIDE2Ljc0IEMtMjcuODggMjQuMzMgLTIyLjQ2IDMyLjIxIC0xNS4wNCAzNi4wMyBDLTguNjcgMzguMTkgLTEuMDEgMzguNjEgNS40NSAzNi42IEM4LjQ2IDM1LjAyIDkuODIgMzIuODMgMTEuMDggMjkuNzQgQzEzLjA3IDIzLjI3IDExLjEyIDE4LjYzIDguMDggMTIuNzQgQzQuNjIgNi44NCAtMS4wNCAzLjkyIC02LjkyIDAuNzQgQy03LjYgMC4zNyAtOC4yNyAtMC4wMSAtOC45NyAtMC40IEMtMTcuNDQgLTQuMTIgLTI0LjEyIDAuMzIgLTI5LjYyIDYuNzIgWiAiLz4gPHBhdGggZmlsbD0iIzAwMDAwMCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMzY5LjkyNTc4MTI1LDMyMy42OTE0MDYyNSkiIGQ9Ik0wIDAgQzkuNjkgNi40MiAxNy41NCAxNi4xNCAyMS4wNyAyNy4zMSBDMjEuNiAzMC45OCAyMS42NCAzNC41NSAyMS41NyAzOC4yNSBDMjEuNTggMzguNzEgMjEuNTggMzguNzEgMjEuNjIgNDEuMDUgQzIxLjU2IDUxLjk4IDE3LjA1IDYxLjc5IDkuNzYgNjkuODcgQzguODcgNzAuNjkgNy45OCA3MS41IDcuMDcgNzIuMzEgQzYuNDggNzIuODggNS44OCA3My40NCA1LjI2IDc0LjAzIEMtNC40NiA4Mi45OSAtMTQuOCA4NS44MiAtMjcuOTMgODUuMzEgQy00Mi4xIDg0LjI5IC01MC43IDc5IC02MC4zNiA2OC44NyBDLTY4LjEgNTkuNTkgLTcxLjU0IDQ4LjgyIC03MS4xNyAzNi43NSBDLTcwLjIyIDI3LjI4IC02Ny45MSAxOS43NCAtNjEuOTMgMTIuMzEgQy02MS40MSAxMS42MiAtNjAuOSAxMC45MyAtNjAuMzcgMTAuMjMgQy01NS43OSA0LjQ4IC01MC4zMiAwLjg0IC00My45MyAtMi42OSBDLTQzLjE3IC0zLjEzIC00Mi40MSAtMy41NyAtNDEuNjMgLTQuMDIgQy0yOC4xNSAtMTAuNjQgLTEyLjM2IC03LjE1IDAgMCBaIE0tMjYuOTMgNS4zMSBDLTI4LjAzIDguMjUgLTI4LjA5IDExLjEyIC0yOC4xMSAxNC4yNSBDLTI4LjEzIDE1LjA4IC0yOC4xNCAxNS45MSAtMjguMTYgMTYuNzcgQy0yNy41NSAyMy40OCAtMjMuNDEgMjguNTUgLTE4LjkzIDMzLjMxIEMtMTIuNzIgMzguMjEgLTQuMzcgMzguOTMgMy4yOSAzOC4wNSBDNi4xNyAzNy4zOCA3Ljg5IDM2LjQ5IDkuOTUgMzQuMzcgQzEyLjYxIDI5LjQ5IDEyLjY0IDI0LjczIDEyLjA3IDE5LjMxIEM5LjkzIDEyLjA4IDQuODcgNi41OCAtMS41MSAyLjc2IEMtMTEuMDYgLTIgLTE5LjIzIC0zLjI1IC0yNi45MyA1LjMxIFogIi8+IDxwYXRoIGZpbGw9IiMwMDAwMDAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE2OCw1MjgpIiBkPSJNMCAwIEMxLjAxIDAuMjkgMi4wMSAwLjU4IDMuMDUgMC44OCBDNS41NyAxLjYgOC4xMSAyLjMxIDEwLjY0IDMgQzExLjg0IDMuMzMgMTMuMDUgMy42NyAxNC4yNSA0IEMxNC44NiA0LjE2IDE1LjQ3IDQuMzMgMTYuMSA0LjUgQzIwLjY5IDUuNzggMjAuNjkgNS43OCAyMi40MSA2Ljk5IEMyNC40IDguMjUgMjYuMiA4LjY2IDI4LjUgOS4xOCBDMjkuMzggOS4zOSAzMC4yNiA5LjU5IDMxLjE3IDkuOCBDMzIuMTEgMTAuMDEgMzMuMDQgMTAuMjIgMzQgMTAuNDQgQzM5Ljc1IDExLjc2IDQ1LjQ3IDEzLjA4IDUxLjEyIDE0Ljc1IEM1NS40MiAxNS45NiA1OS41NiAxNi40NiA2NCAxNi42OSBDNjYuNjUgMTYuOTYgNjkuMDkgMTcuNDMgNzEuNjkgMTcuOTkgQzc2Ljk1IDE5LjA3IDgyLjA4IDE5LjQ0IDg3LjQ0IDE5LjYyIEM4OC40IDE5LjY2IDg5LjM2IDE5LjcgOTAuMzQgMTkuNzQgQzk5LjU3IDIwLjA3IDEwOC43NyAyMC4xNiAxMTggMjAgQzExOSAxOS45OSAxMTkuOTkgMTkuOTcgMTIxLjAyIDE5Ljk2IEMxMzQuMTIgMTkuNzcgMTQ2LjkyIDE5IDE1OS44OCAxNy4wNiBDMTYxLjAyIDE2Ljg5IDE2Mi4xNiAxNi43MiAxNjMuMzMgMTYuNTUgQzE2OC4xOSAxNS43OCAxNzIuNDUgMTQuOSAxNzcgMTMgQzE3OS41MiAxMi40NCAxODIuMDUgMTIgMTg0LjYgMTEuNTYgQzE4NyAxMSAxODguODEgMTAuMTEgMTkxIDkgQzE5My4zMSA4LjQzIDE5NS42MyA4IDE5Ny45OCA3LjU2IEMyMDAgNyAyMDAgNyAyMDIgNSBDMjA0LjM4IDQuNTkgMjA0LjM4IDQuNTkgMjA3LjEyIDQuMzggQzIwOC4wNCA0LjMgMjA4Ljk1IDQuMjMgMjA5Ljg4IDQuMTUgQzIxMC4yMyA0LjEyIDIxMC4yMyA0LjEyIDIxMiA0IEMyMDguNTMgOC4yNSAyMDQuODEgOS4zOSAxOTkuNzUgMTAuOTQgQzE5OC45NCAxMS4xOSAxOTguMTMgMTEuNDUgMTk3LjMgMTEuNzEgQzE5NS42NCAxMi4yMyAxOTMuOTggMTIuNzUgMTkyLjMyIDEzLjI2IEMxOTAuMzIgMTMuOSAxODguMzUgMTQuNTkgMTg2LjM4IDE1LjMyIEMxNjQuNjIgMjMuMiAxMzkuOTQgMjQuOCAxMTcgMjUgQzExNS42MiAyNS4wMyAxMTQuMjQgMjUuMDUgMTEyLjg2IDI1LjA4IEMxMDkuMjQgMjUuMTQgMTA1LjYyIDI1LjA5IDEwMiAyNSBDMTAxLjIyIDI0Ljk4IDEwMC40NSAyNC45NiA5OS42NCAyNC45NSBDODcuNjYgMjQuNjMgNzYuMDYgMjMuNTIgNjQuMjcgMjEuNCBDNjIuMDMgMjEuMDEgNTkuOCAyMC42NSA1Ny41NiAyMC4zMSBDNDkuMzMgMTkuMDIgNDEuNjcgMTcuMTEgMzMuODIgMTQuMzIgQzMwLjQ0IDEzLjEyIDI3LjAyIDEyLjEzIDIzLjU2IDExLjE3IEMxNy4zMyA5LjQzIDExLjMzIDcuNSA1LjQ0IDQuODEgQzUuMTYgNC42OSA1LjE2IDQuNjkgMy43NiA0LjA1IEMyLjI1IDMuMzMgMi4yNSAzLjMzIDAgMiBDMCAxLjM0IDAgMC42OCAwIDAgWiAiLz4gPC9zdmc+">
<script>
// WATER layer — background (gradient, god rays, sand, caustics) + overlay (surface waves, bubbles)
(function () {
'use strict';
// ---- seeded RNG (mulberry32) ----
function mulberry32(seed) {
var a = seed >>> 0;
return function () {
a |= 0; a = (a + 0x6D2B79F5) | 0;
var t = Math.imul(a ^ (a >>> 15), 1 | a);
t = (t + Math.imul(t ^ (t >>> 7), 61 | t)) ^ t;
return ((t ^ (t >>> 14)) >>> 0) / 4294967296;
};
}
var W = 0, H = 0;
// precomputed geometry
var duneXs = []; // x coords of dune curve
var duneYs = []; // y coords of dune curve
var rays = []; // god rays {x, w, slant, phase, speed, alpha}
var ripples = []; // sand ripple marks {x, y, w, h}
var pebbles = []; // {x, y, r, squash}
var cells = []; // caustic cells {cx, cy, r, phx, phy, f1, f2}
var bubbles = []; // {x0, y0, r, speed, wobble, phase}
var waterGrad = null;
var DUNE_STEPS = 64;
function build(w, h) {
W = w; H = h;
var rnd = mulberry32((window.SCENE_SEED >>> 0) || 1337);
// water gradient (rebuilt per size; ctx-independent gradients need a ctx,
// so we build it lazily in drawBackground on first use per size)
waterGrad = null;
// ---- dune curve around y = 0.78h ----
duneXs.length = 0; duneYs.length = 0;
var p1 = rnd() * Math.PI * 2, p2 = rnd() * Math.PI * 2, p3 = rnd() * Math.PI * 2;
for (var i = 0; i <= DUNE_STEPS; i++) {
var x = (i / DUNE_STEPS) * w;
var u = i / DUNE_STEPS;
var y = 0.78 * h
+ Math.sin(u * Math.PI * 2 * 1.3 + p1) * 0.014 * h
+ Math.sin(u * Math.PI * 2 * 2.7 + p2) * 0.008 * h
+ Math.sin(u * Math.PI * 2 * 4.1 + p3) * 0.004 * h;
duneXs.push(x); duneYs.push(y);
}
// ---- god rays ----
rays.length = 0;
var nRays = 4;
for (var r = 0; r < nRays; r++) {
rays.push({
x: (0.1 + 0.8 * (r / (nRays - 1)) + (rnd() - 0.5) * 0.08) * w,
w: (0.05 + rnd() * 0.06) * w,
slant: (0.10 + rnd() * 0.16) * w, // consistent slant direction
phase: rnd() * Math.PI * 2,
speed: 0.15 + rnd() * 0.12,
alpha: 0.05 + rnd() * 0.03
});
}
// ---- sand ripples (thin lens shapes) ----
ripples.length = 0;
for (var k = 0; k < 14; k++) {
var rx = rnd() * w;
var ry = (0.82 + rnd() * 0.15) * h;
ripples.push({ x: rx, y: ry, w: (0.03 + rnd() * 0.05) * w, h: 2 + rnd() * 3 });
}
// ---- pebbles ----
pebbles.length = 0;
for (var pb = 0; pb < 7; pb++) {
pebbles.push({
x: rnd() * w,
y: (0.84 + rnd() * 0.13) * h,
r: 3 + rnd() * 5,
squash: 0.55 + rnd() * 0.2
});
}
// ---- caustic cell grid over the sand band ----
cells.length = 0;
var cols = Math.max(8, Math.round(w / 130));
var rows = 3;
var sandTop = 0.78 * h, sandH = h - sandTop;
for (var cy = 0; cy < rows; cy++) {
for (var cx = 0; cx < cols; cx++) {
cells.push({
cx: ((cx + 0.5) / cols + (rnd() - 0.5) * 0.06) * w,
cy: sandTop + ((cy + 0.5) / rows + (rnd() - 0.5) * 0.2) * sandH,
r: (0.35 + rnd() * 0.35) * (w / cols) * 0.55,
phx: rnd() * Math.PI * 2,
phy: rnd() * Math.PI * 2,
f1: 0.7 + rnd() * 0.5, // slow component ~ period 5-9s
f2: 1.6 + rnd() * 0.8
});
}
}
// ---- bubbles ----
bubbles.length = 0;
for (var b = 0; b < 8; b++) {
bubbles.push({
x0: rnd() * w,
off: rnd() * h, // vertical phase offset
r: 1.5 + rnd() * 2.5,
speed: 14 + rnd() * 18, // px/s upward
wobble: 4 + rnd() * 8,
phase: rnd() * Math.PI * 2
});
}
}
function drawBackground(ctx, t) {
// ---- water gradient, full frame ----
if (!waterGrad) {
waterGrad = ctx.createLinearGradient(0, 0, 0, H);
waterGrad.addColorStop(0, '#4a7d99');
waterGrad.addColorStop(1, '#27455c');
}
ctx.fillStyle = waterGrad;
ctx.fillRect(0, 0, W, H);
// ---- god rays: slanted quads with vertical fade ----
var rayBottom = 0.85 * H;
for (var i = 0; i < rays.length; i++) {
var ray = rays[i];
var sway = Math.sin(t * ray.speed + ray.phase) * 0.03 * W;
var pulse = 0.75 + 0.25 * Math.sin(t * ray.speed * 1.7 + ray.phase * 2);
var topX = ray.x + sway;
var botX = topX + ray.slant;
var g = ctx.createLinearGradient(0, 0, 0, rayBottom);
g.addColorStop(0, 'rgba(255,246,220,' + (ray.alpha * pulse).toFixed(3) + ')');
g.addColorStop(1, 'rgba(255,246,220,0)');
ctx.fillStyle = g;
ctx.beginPath();
ctx.moveTo(topX - ray.w * 0.5, 0);
ctx.lineTo(topX + ray.w * 0.5, 0);
ctx.lineTo(botX + ray.w * 0.9, rayBottom);
ctx.lineTo(botX - ray.w * 0.9, rayBottom);
ctx.closePath();
ctx.fill();
}
// ---- sand floor ----
ctx.fillStyle = '#e6d69f';
ctx.beginPath();
ctx.moveTo(0, H);
ctx.lineTo(duneXs[0], duneYs[0]);
for (var d = 1; d <= DUNE_STEPS; d++) ctx.lineTo(duneXs[d], duneYs[d]);
ctx.lineTo(W, H);
ctx.closePath();
ctx.fill();
// ripple marks (thin lenses)
ctx.fillStyle = '#c9b878';
for (var k = 0; k < ripples.length; k++) {
var rp = ripples[k];
ctx.beginPath();
ctx.ellipse(rp.x, rp.y, rp.w * 0.5, rp.h * 0.5, 0, 0, Math.PI * 2);
ctx.fill();
}
// pebbles (shadow tone)
for (var pb = 0; pb < pebbles.length; pb++) {
var p = pebbles[pb];
ctx.beginPath();
ctx.ellipse(p.x, p.y, p.r, p.r * p.squash, 0, 0, Math.PI * 2);
ctx.fill();
}
// ---- caustics: clipped to sand region ----
ctx.save();
ctx.beginPath();
ctx.moveTo(0, H);
ctx.lineTo(duneXs[0], duneYs[0]);
for (var d2 = 1; d2 <= DUNE_STEPS; d2++) ctx.lineTo(duneXs[d2], duneYs[d2]);
ctx.lineTo(W, H);
ctx.closePath();
ctx.clip();
ctx.fillStyle = 'rgba(255,250,225,0.10)';
for (var c = 0; c < cells.length; c++) {
var cell = cells[c];
var dx = Math.sin(t * cell.f1 + cell.phx) * 18
+ Math.sin(t * cell.f2 * 0.5 + cell.cx * 0.01) * 9;
var dy = Math.sin(t * cell.f1 * 0.8 + cell.phy) * 6
+ Math.sin(t * cell.f2 * 0.4 + cell.cx * 0.007 + 1.7) * 4;
var stretch = 1 + 0.25 * Math.sin(t * cell.f1 * 0.6 + cell.phx + cell.phy);
ctx.beginPath();
ctx.ellipse(cell.cx + dx, cell.cy + dy, cell.r * stretch, cell.r * 0.45, 0, 0, Math.PI * 2);
ctx.fill();
}
ctx.restore();
}
function drawOverlay(ctx, t) {
// ---- surface wave band, top ~6% ----
var bandH = 0.06 * H;
drawWave(ctx, t, bandH * 0.55, bandH * 0.28, 0.9, 22, 'rgba(111,163,189,0.30)');
drawWave(ctx, t, bandH * 0.85, bandH * 0.22, -0.6, 34, 'rgba(130,180,205,0.25)');
// ---- bubbles ----
ctx.fillStyle = 'rgba(220,240,250,0.28)';
for (var b = 0; b < bubbles.length; b++) {
var bb = bubbles[b];
var travel = H + 40;
var y = travel - ((bb.off + t * bb.speed) % travel) - 20;
var x = bb.x0 + Math.sin(t * 0.8 + bb.phase + y * 0.01) * bb.wobble;
ctx.beginPath();
ctx.arc(x, y, bb.r, 0, Math.PI * 2);
ctx.fill();
}
}
// one drifting sine silhouette filled to the top edge
function drawWave(ctx, t, baseY, amp, speed, wavelenDiv, fill) {
var steps = 32;
ctx.fillStyle = fill;
ctx.beginPath();
ctx.moveTo(0, 0);
for (var i = 0; i <= steps; i++) {
var x = (i / steps) * W;
var y = baseY
+ Math.sin(x / wavelenDiv * 0.35 + t * speed) * amp
+ Math.sin(x / wavelenDiv * 0.17 - t * speed * 0.6) * amp * 0.5;
ctx.lineTo(x, y);
}
ctx.lineTo(W, 0);
ctx.closePath();
ctx.fill();
}
window.WaterLayer = {
init: function (w, h) { build(w, h); },
resize: function (w, h) { build(w, h); },
drawBackground: drawBackground,
drawOverlay: drawOverlay
};
})();
/* CoralLayer — procedural reef layer for the underwater scene.
Defines window.CoralLayer = { init, resize, drawBack, drawFront, shelters }. */
(function () {
'use strict';
var SEED = 20260731;
var WATER = '#2f5068';
var SHADOW = '#1d2f3d';
var W = 0, H = 0, U = 1; // U = size unit, H/900
var rng = null;
var shelters = []; // stable array reference, mutated in place
var backClusters = [];
var frontClusters = [];
/* ---------- seeded RNG ---------- */
function mulberry32(a) {
return function () {
a |= 0; a = (a + 0x6D2B79F5) | 0;
var t = Math.imul(a ^ (a >>> 15), 1 | a);
t = (t + Math.imul(t ^ (t >>> 7), 61 | t)) ^ t;
return ((t ^ (t >>> 14)) >>> 0) / 4294967296;
};
}
function rr(lo, hi) { return lo + rng() * (hi - lo); }
function ri(lo, hi) { return lo + Math.floor(rng() * (hi - lo + 1)); }
function pick(arr) { return arr[Math.floor(rng() * arr.length)]; }
/* ---------- colors ---------- */
function hexRgb(c) {
var n = parseInt(c.slice(1), 16);
return [(n >> 16) & 255, (n >> 8) & 255, n & 255];
}
function mixHex(a, b, f) {
var A = hexRgb(a), B = hexRgb(b);
return 'rgb(' + Math.round(A[0] + (B[0] - A[0]) * f) + ',' +
Math.round(A[1] + (B[1] - A[1]) * f) + ',' +
Math.round(A[2] + (B[2] - A[2]) * f) + ')';
}
function toneFront(c) { return mixHex(c, c, 0); } // identity
function toneBack(c) { return mixHex(c, WATER, 0.45); } // silhouette-flatten
function darkOf(c, tone) { // darker flat cel tone of a base hex, then toned
var A = hexRgb(c), B = hexRgb(SHADOW), f = 0.38;
var d = '#' + [0, 1, 2].map(function (i) {
var v = Math.round(A[i] + (B[i] - A[i]) * f);
return (v < 16 ? '0' : '') + v.toString(16);
}).join('');
return tone(d);
}
/* ---------- geometry helpers ---------- */
// Tapered rounded limb (capsule) appended to a Path2D.
function capsule(path, x1, y1, x2, y2, w1, w2) {
var a = Math.atan2(y2 - y1, x2 - x1);
var s = Math.sin(a), c = Math.cos(a);
path.moveTo(x1 - s * w1, y1 + c * w1);
path.lineTo(x2 - s * w2, y2 + c * w2);
path.arc(x2, y2, w2, a + Math.PI / 2, a - Math.PI / 2, true);
path.lineTo(x1 + s * w1, y1 - c * w1);
path.arc(x1, y1, w1, a - Math.PI / 2, a + Math.PI / 2, true);
}
/* ---------- coral generators (local coords, base at 0,0, up = -y) ---------- */
function genBranching(s, tone) {
var body = new Path2D();
function limb(x, y, ang, len, wid, depth) {
var x2 = x + Math.cos(ang) * len, y2 = y + Math.sin(ang) * len;
capsule(body, x, y, x2, y2, wid, wid * 0.55);
if (depth > 0) {
var n = 2 + (rng() < 0.3 ? 1 : 0);
for (var i = 0; i < n; i++) {
limb(x2, y2, ang + rr(-0.75, 0.75), len * rr(0.62, 0.8), wid * 0.62, depth - 1);
}
}
}
limb(0, 0, -Math.PI / 2 + rr(-0.15, 0.15), s * 0.38, s * 0.085, ri(3, 4) - 1);
var base = pick(['#e2725b', '#c95d63']);
return {
kind: 'branch', body: body,
colBody: tone(base), colShade: darkOf(base, tone),
off: [s * 0.05, s * 0.03],
swayAmp: 0.035, swayFreq: rr(0.9, 1.6), swayPhase: rr(0, 6.28), alpha: 1
};
}
function genTubes(s, tone) {
var body = new Path2D();
var openings = [];
var n = ri(3, 6);
for (var i = 0; i < n; i++) {
var x = (i - (n - 1) / 2) * s * 0.24 + rr(-s * 0.04, s * 0.04);
var h = s * rr(0.45, 1.0);
var w = s * rr(0.09, 0.14);
var lean = rr(-s * 0.08, s * 0.08);
capsule(body, x, 0, x + lean, -h, w, w * 0.85);
openings.push({ x: x + lean, y: -h, rx: w * 0.6, ry: w * 0.32 });
}
var base = pick(['#f0a35e', '#9b6b9e']);
return {
kind: 'tube', body: body, openings: openings,
colBody: tone(base), colShade: darkOf(base, tone),
colDetail: darkOf(base, tone),
off: [s * 0.05, 0],
swayAmp: 0, swayFreq: 1, swayPhase: 0, alpha: 1
};
}
function genDome(s, tone) {
var r = s * 0.5, ry = r * 0.78;
var body = new Path2D();
body.ellipse(0, 0, r, ry, 0, Math.PI, Math.PI * 2);
body.closePath();
var grooves = new Path2D();
var rings = ri(3, 4);
for (var k = 1; k <= rings; k++) {
var f = k / (rings + 0.6);
var wig = rr(4, 7), ph = rr(0, 6.28);
var first = true;
for (var j = 0; j <= 14; j++) {
var ang = Math.PI + 0.28 + (j / 14) * (Math.PI - 0.56);
var rad = r * f * (1 + Math.sin(ang * wig + ph) * 0.06);
var px = Math.cos(ang) * rad, py = Math.sin(ang) * rad * 0.78;
if (first) { grooves.moveTo(px, py); first = false; }
else grooves.lineTo(px, py);
}
}
var base = pick(['#c95d63', '#e8c547']);
return {
kind: 'dome', body: body, grooves: grooves, grooveW: r * 0.055,
colBody: tone(base), colShade: darkOf(base, tone),
colDetail: darkOf(base, tone),
off: [r * 0.09, 0],
swayAmp: 0, swayFreq: 1, swayPhase: 0, alpha: 1
};
}
function genFan(s, tone) {
var R = s * 0.55, half = rr(0.6, 0.8), lobes = ri(5, 7);
var body = new Path2D();
body.moveTo(0, 0);
var N = 26;
for (var i = 0; i <= N; i++) {
var f = i / N;
var ang = -Math.PI / 2 + (f - 0.5) * 2 * half;
var rad = R * (0.9 + 0.1 * Math.cos(f * lobes * Math.PI * 2));
body.lineTo(Math.cos(ang) * rad, Math.sin(ang) * rad);
}
body.closePath();
var ribs = new Path2D();
var nr = ri(5, 7);
for (var k = 0; k < nr; k++) {
var ra = -Math.PI / 2 + (k / (nr - 1) - 0.5) * 2 * half * 0.9;
ribs.moveTo(Math.cos(ra) * R * 0.1, Math.sin(ra) * R * 0.1);
ribs.lineTo(Math.cos(ra) * R * 0.82, Math.sin(ra) * R * 0.82);
}
return {
kind: 'fan', body: body, ribs: ribs, ribW: Math.max(1, s * 0.018),
colBody: tone('#9b6b9e'), colShade: darkOf('#9b6b9e', tone),
colDetail: darkOf('#9b6b9e', tone),
off: [s * 0.04, s * 0.02],
swayAmp: 0.03, swayFreq: rr(0.9, 1.4), swayPhase: rr(0, 6.28), alpha: 0.78
};
}
function genAnemone(s, tone) {
var body = new Path2D();
body.ellipse(0, -s * 0.2, s * 0.42, s * 0.24, 0, 0, Math.PI * 2);
var tents = [];
var n = ri(8, 14);
for (var i = 0; i < n; i++) {
var f = n > 1 ? i / (n - 1) : 0.5;
var L = s * rr(0.3, 0.5), w = s * rr(0.05, 0.075);
var p = new Path2D();
p.moveTo(-w, 0);
p.quadraticCurveTo(-w, -L, 0, -L - w);
p.quadraticCurveTo(w, -L, w, 0);
p.closePath();
tents.push({
path: p,
rx: (f - 0.5) * s * 0.6, ry: -s * 0.3,
ang: (f - 0.5) * 1.25,
amp: rr(0.06, 0.12), freq: rr(0.9, 2.0), phase: rr(0, 6.28)
});
}
var base = pick(['#f0a35e', '#e2725b']);
return {
kind: 'anemone', body: body, tents: tents,
colBody: darkOf(base, tone), colShade: darkOf(base, tone), // blob = dark tone
colTent: tone(base),
off: [s * 0.05, 0],
swayAmp: 0, swayFreq: 1, swayPhase: 0, alpha: 1
};
}
function genKelp(s, tone, dark) {
var segs = 9;
return {
kind: 'kelp',
h: s, w: s * rr(0.035, 0.055),
segs: segs,
px: new Float64Array(segs + 1), py: new Float64Array(segs + 1),
amp: s * rr(0.08, 0.14), freq: rr(0.9, 2.0), phase: rr(0, 6.28),
colBody: tone(dark ? '#5e8a4f' : '#7fb069'),
swayAmp: 0, alpha: 1
};
}
/* ---------- per-frame drawing ---------- */
function drawKelpBlade(ctx, it, t) {
var n = it.segs, i, p, hw;
for (i = 0; i <= n; i++) {
p = i / n;
it.px[i] = Math.sin(t * it.freq + it.phase - p * 2.4) * it.amp * p * p;
it.py[i] = -p * it.h;
}
ctx.fillStyle = it.colBody;
ctx.beginPath();
ctx.moveTo(it.x + it.px[0] - it.w, it.y);
for (i = 1; i <= n; i++) {
hw = it.w * (1 - (i / n) * 0.88);
ctx.lineTo(it.x + it.px[i] - hw, it.y + it.py[i]);
}
for (i = n; i >= 0; i--) {
hw = it.w * (1 - (i / n) * 0.88);
ctx.lineTo(it.x + it.px[i] + hw, it.y + it.py[i]);
}
ctx.closePath();
ctx.fill();
}
function drawItem(ctx, it, t) {
if (it.kind === 'kelp') { drawKelpBlade(ctx, it, t); return; }
ctx.save();
ctx.translate(it.x, it.y);
if (it.swayAmp) ctx.rotate(Math.sin(t * it.swayFreq + it.swayPhase) * it.swayAmp);
if (it.alpha !== 1) ctx.globalAlpha = it.alpha;
if (it.kind === 'anemone') {
var k, tn;
for (k = 0; k < it.tents.length; k++) {
tn = it.tents[k];
ctx.save();
ctx.translate(tn.rx, tn.ry);
ctx.rotate(tn.ang + Math.sin(t * tn.freq + tn.phase) * tn.amp);
ctx.fillStyle = it.colTent;
ctx.fill(tn.path);
ctx.restore();
}
ctx.fillStyle = it.colBody;
ctx.fill(it.body);
ctx.restore();
return;
}
// 2-tone cel: dark tone offset to one side, base fill on top
ctx.translate(it.off[0], it.off[1]);
ctx.fillStyle = it.colShade;
ctx.fill(it.body);
ctx.translate(-it.off[0], -it.off[1]);
ctx.fillStyle = it.colBody;
ctx.fill(it.body);
if (it.kind === 'tube') {
ctx.fillStyle = it.colDetail;
for (var o = 0; o < it.openings.length; o++) {
var op = it.openings[o];
ctx.beginPath();
ctx.ellipse(op.x, op.y, op.rx, op.ry, 0, 0, Math.PI * 2);
ctx.fill();
}
} else if (it.kind === 'dome') {
ctx.strokeStyle = it.colDetail;
ctx.lineWidth = it.grooveW;
ctx.lineCap = 'round';
ctx.lineJoin = 'round';
ctx.stroke(it.grooves);
} else if (it.kind === 'fan') {
ctx.strokeStyle = it.colDetail;
ctx.lineWidth = it.ribW;
ctx.lineCap = 'round';
ctx.stroke(it.ribs);
}
ctx.restore();
}
/* ---------- cluster composition ---------- */
function genCluster(cx, baseY, spread, scale, tone, dense) {
var items = [];
var maxTop = 0;
function at(it, dx, dy, topGuess) {
it.x = cx + dx;
it.y = baseY + dy;
items.push(it);
if (topGuess > maxTop) maxTop = topGuess;
}
var u = U * scale;
// kelp behind
var nk = dense ? ri(3, 4) : ri(2, 3);
for (var i = 0; i < nk; i++) {
var kh = u * rr(160, 250);
at(genKelp(kh, tone, rng() < 0.5), rr(-spread, spread), rr(-4, 6) * U, kh);
}
// big dome
var d = genDome(u * rr(130, 175), tone);
at(d, rr(-spread * 0.5, spread * 0.5), rr(0, 6) * U, u * 75);
// tubes
at(genTubes(u * rr(85, 115), tone), rr(-spread, -spread * 0.3), rr(-2, 6) * U, u * 110);
// branching (1-2)
var nb = ri(1, 2);
for (i = 0; i < nb; i++) {
var bs = u * rr(150, 210);
at(genBranching(bs, tone), rr(spread * 0.15, spread), rr(-2, 6) * U, bs * 0.95);
}
// fan
at(genFan(u * rr(120, 160), tone), rr(-spread * 0.9, spread * 0.9), rr(0, 5) * U, u * 85);
// anemone (foreground clusters mostly)
if (!dense || rng() < 0.4) {
at(genAnemone(u * rr(80, 110), tone), rr(-spread * 0.8, spread * 0.8), rr(0, 4) * U, u * 60);
}
return { items: items, x: cx, y: baseY, halfW: spread * 1.15, height: maxTop };
}
function genLoner(x, baseY, tone) {
var u = U;
var roll = rng(), it;
if (roll < 0.4) it = genKelp(u * rr(110, 180), tone, rng() < 0.5);
else if (roll < 0.7) it = genAnemone(u * rr(60, 85), tone);
else it = genTubes(u * rr(55, 80), tone);
it.x = x; it.y = baseY;
return { items: [it], x: x, y: baseY, halfW: u * 45, height: u * 90 };
}
/* ---------- build the whole reef ---------- */
function regenerate() {
rng = mulberry32(((window.SCENE_SEED >>> 0) ^ 0xC0A1) >>> 0 || SEED);
backClusters = [];
frontClusters = [];
shelters.length = 0;
// background reef: 2-3 large clusters on the sand horizon
var nBack = ri(2, 3);
for (var i = 0; i < nBack; i++) {
var bx = W * (0.15 + (i + rr(0.1, 0.4)) / nBack * 0.75);
var by = H * rr(0.78, 0.85);
var c = genCluster(bx, by, W * rr(0.07, 0.1), rr(1.15, 1.4), toneBack, true);
backClusters.push(c);
shelters.push({ x: c.x, y: c.y - c.height * 0.35, r: c.halfW });
}
// foreground: two clusters near the left/right thirds
var fxs = [W * rr(0.18, 0.26), W * rr(0.74, 0.82)];
for (i = 0; i < fxs.length; i++) {
var fy = H * rr(0.9, 0.99);
var fc = genCluster(fxs[i], fy, W * rr(0.06, 0.085), rr(1.0, 1.2), toneFront, false);
frontClusters.push(fc);
shelters.push({ x: fc.x, y: fc.y - fc.height * 0.35, r: fc.halfW });
}
// small loners, keeping center-bottom open
var nLone = ri(2, 3);
for (i = 0; i < nLone; i++) {
var lx = rng() < 0.5 ? W * rr(0.02, 0.12) : W * rr(0.55, 0.96);
if (lx > W * 0.4 && lx < W * 0.62) lx = W * rr(0.88, 0.97);
frontClusters.push(genLoner(lx, H * rr(0.88, 0.98), toneFront));
}
}
/* ---------- public API ---------- */
window.CoralLayer = {
shelters: shelters,
init: function (w, h) {
W = w; H = h; U = h / 900;
regenerate();
},
resize: function (w, h) {
W = w; H = h; U = h / 900;
regenerate();
},
drawBack: function (ctx, t) {
for (var i = 0; i < backClusters.length; i++) {
var items = backClusters[i].items;
for (var j = 0; j < items.length; j++) drawItem(ctx, items[j], t);
}
},
drawFront: function (ctx, t) {
for (var i = 0; i < frontClusters.length; i++) {
var items = frontClusters[i].items;
for (var j = 0; j < items.length; j++) drawItem(ctx, items[j], t);
}
}
};
})();
// FishLayer — flat cartoon fish with steering behaviors, coral visits, pointer avoidance.
window.FishLayer = (function () {
'use strict';
// ---------- seeded RNG ----------
function mulberry32(a) {
return function () {
a |= 0; a = (a + 0x6D2B79F5) | 0;
var t = Math.imul(a ^ (a >>> 15), 1 | a);
t = (t + Math.imul(t ^ (t >>> 7), 61 | t)) ^ t;
return ((t ^ (t >>> 14)) >>> 0) / 4294967296;
};
}
var rng = mulberry32(0xF15C);
// ---------- palette / species ----------
// back (darker top), belly (lighter), fin (dark tone)
var SPECIES = [
{ name: 'bluegray', back: '#2e8fd8', belly: '#9ed6f7', fin: '#1c5f96', stripe: null },
{ name: 'clownfish', back: '#f0a35e', belly: '#f7c99a', fin: '#b5713a', stripe: '#f5ead9' },
{ name: 'yellowtang',back: '#e8c547', belly: '#f2dd8d', fin: '#a8882a', stripe: null },
{ name: 'redsnapper',back: '#c95d63', belly: '#e09aa0', fin: '#8e3d43', stripe: null }
];
// ---------- state ----------
var W = 0, H = 0;
var shelters = [];
var fish = [];
var schoolCx = 0, schoolCy = 0, schoolVx = 0, schoolVy = 0, schoolN = 0;
var TAU = Math.PI * 2;
var FLEE_R = 140;
// fish states
var CRUISE = 0, TRAVEL = 1, LINGER = 2, LEAVE = 3;
function clamp(v, a, b) { return v < a ? a : (v > b ? b : v); }
function makeFish(sp, len, isSchool) {
var speedBase = 34 + (60 - len) * 1.1; // small = quicker
return {
sp: sp,
len: len,
bodyRatio: 0.42 + rng() * 0.14,
tailSize: 0.75 + rng() * 0.4,
school: isSchool,
x: 0, y: 0,
vx: 0, vy: 0,
face: 1,
maxSpeed: speedBase * (0.85 + rng() * 0.3),
maxAccel: 90 + (60 - len) * 2.2,
cruise: speedBase * 0.55,
// wander seeds
s1: rng() * TAU, s2: rng() * TAU, s3: rng() * TAU,
w1: 0.22 + rng() * 0.18, w2: 0.5 + rng() * 0.4,
wagPhase: rng() * TAU,
bobPhase: rng() * TAU,
// shelter state machine
state: CRUISE,
timer: 4 + rng() * 11, // until next visit attempt
tgtX: 0, tgtY: 0, tgtR: 0,
// flee
burst: 0,
lazy: clamp(1.25 - len / 60, 0.35, 1) // big fish react more lazily
};
}
function scatter(f) {
f.x = rng() * W;
f.y = (0.15 + rng() * 0.7) * H;
var a = rng() * TAU;
f.vx = Math.cos(a) * f.cruise;
f.vy = Math.sin(a) * f.cruise * 0.3;
f.face = f.vx >= 0 ? 1 : -1;
}
// ---------- shark ----------
// Rendered from window.SHARK_IMG (SVG, artwork faces LEFT). Cruises across the
// scene; fish inside its forward gaze cone flee.
var shark = null;
var SHARK_GAZE_R = 320, SHARK_CONE_COS = 0.75; // ~41° half-angle
function makeShark() {
return { x: 0, y: 0, vx: 0, baseY: 0, face: 1, len: 230, bob: rng() * TAU, state: 'away', timer: 3 + rng() * 4 };
}
function updateShark(dt, t) {
if (!shark) return;
if (shark.state === 'away') {
shark.timer -= dt;
if (shark.timer <= 0) {
shark.face = rng() < 0.5 ? 1 : -1;
shark.x = shark.face === 1 ? -shark.len : W + shark.len;
shark.baseY = (0.2 + rng() * 0.4) * H;
shark.vx = shark.face * (50 + rng() * 25);
shark.bob = rng() * TAU;
shark.state = 'cross';
}
return;
}
shark.x += shark.vx * dt;
shark.y = shark.baseY + Math.sin(t * 0.5 + shark.bob) * 18;
if ((shark.face === 1 && shark.x > W + shark.len) ||
(shark.face === -1 && shark.x < -shark.len)) {
shark.state = 'away';
shark.timer = 5 + rng() * 7;
}
}
function drawShark(ctx, t) {
if (!shark || shark.state !== 'cross') return;
var img = window.SHARK_IMG;
if (!img || !img.complete || !img.naturalWidth) return;
ctx.save();
ctx.translate(shark.x, shark.y);
ctx.rotate(Math.cos(t * 0.5 + shark.bob) * 0.04);
ctx.scale(-shark.face, 1); // artwork faces left; flip when swimming right
ctx.drawImage(img, -shark.len / 2, -shark.len / 2, shark.len, shark.len);
ctx.restore();
}
function buildFish() {
fish.length = 0;
// 2 big slow blue-grays
for (var i = 0; i < 2; i++) fish.push(makeFish(SPECIES[0], 52 + rng() * 8, false));
// 5 mid blue-grays
for (i = 0; i < 5; i++) fish.push(makeFish(SPECIES[0], 30 + rng() * 12, false));
// 2 clownfish
for (i = 0; i < 2; i++) fish.push(makeFish(SPECIES[1], 26 + rng() * 8, false));
// 2 red snappers
for (i = 0; i < 2; i++) fish.push(makeFish(SPECIES[3], 34 + rng() * 10, false));
// school of 6 tiny yellow tangs
for (i = 0; i < 6; i++) fish.push(makeFish(SPECIES[2], 18 + rng() * 6, true));
for (i = 0; i < fish.length; i++) scatter(fish[i]);
}
// ---------- behavior ----------
function pickShelter(f) {
if (shelters.length === 0) return false;
var s = shelters[(rng() * shelters.length) | 0];
if (!s) return false;
f.tgtX = s.x; f.tgtY = clamp(s.y, 0.15 * H, 0.88 * H); f.tgtR = s.r;
return true;
}
function pickOpenWater(f) {
f.tgtX = W * (0.15 + rng() * 0.7);
f.tgtY = H * (0.2 + rng() * 0.45);
f.tgtR = 40;
}
function update(dt, t, pointer) {
if (dt <= 0) return;
var n = fish.length, i, j, f;
updateShark(dt, t);
var sharkHunting = shark && shark.state === 'cross';
// gaze origin: shark's snout, a bit ahead of center
var gazeX = sharkHunting ? shark.x + shark.face * shark.len * 0.25 : 0;
var gazeY = sharkHunting ? shark.y : 0;
// school centroid + mean velocity (for flocking)
schoolCx = 0; schoolCy = 0; schoolVx = 0; schoolVy = 0; schoolN = 0;
for (i = 0; i < n; i++) {
f = fish[i];
if (f.school) { schoolCx += f.x; schoolCy += f.y; schoolVx += f.vx; schoolVy += f.vy; schoolN++; }
}
if (schoolN > 0) { schoolCx /= schoolN; schoolCy /= schoolN; schoolVx /= schoolN; schoolVy /= schoolN; }
var yMin = 0.15 * H, yMax = 0.88 * H, xMargin = 70;
for (i = 0; i < n; i++) {
f = fish[i];
var ax = 0, ay = 0;
var speed = Math.sqrt(f.vx * f.vx + f.vy * f.vy);
// --- wander: smooth sine-noise heading drift ---
var wa = Math.sin(t * f.w1 + f.s1) + 0.6 * Math.sin(t * f.w2 + f.s2);
var ang = wa * 0.85 + Math.sin(t * 0.13 + f.s3) * 1.6;
var dvx = Math.cos(ang) * f.cruise;
var dvy = Math.sin(ang) * f.cruise * 0.35;
ax += (dvx - f.vx) * 0.8;
ay += (dvy - f.vy) * 0.8;
// --- shelter visit state machine ---
f.timer -= dt;
if (f.state === CRUISE) {
if (f.timer <= 0) {
if (pickShelter(f)) { f.state = TRAVEL; f.timer = 20; }
else f.timer = 6 + rng() * 9;
}
} else if (f.state === TRAVEL) {
var tx = f.tgtX - f.x, ty = f.tgtY - f.y;
var td = Math.sqrt(tx * tx + ty * ty) || 1;
ax += (tx / td * f.maxSpeed - f.vx) * 1.4;
ay += (ty / td * f.maxSpeed - f.vy) * 1.4;
if (td < f.tgtR * 0.6 || f.timer <= 0) { f.state = LINGER; f.timer = 2 + rng() * 3; }
} else if (f.state === LINGER) {
// slow drift around shelter center
var lx = f.tgtX - f.x, ly = f.tgtY - f.y;
ax += lx * 0.5 - f.vx * 1.5;
ay += ly * 0.5 - f.vy * 1.5;
if (f.timer <= 0) { pickOpenWater(f); f.state = LEAVE; f.timer = 8; }
} else { // LEAVE
var ox = f.tgtX - f.x, oy = f.tgtY - f.y;
var od = Math.sqrt(ox * ox + oy * oy) || 1;
ax += (ox / od * f.cruise - f.vx) * 1.0;
ay += (oy / od * f.cruise - f.vy) * 1.0;
if (od < 50 || f.timer <= 0) { f.state = CRUISE; f.timer = 6 + rng() * 9; }
}
// --- soft screen bounds ---
if (f.x < xMargin) ax += (xMargin - f.x) * 1.6;
else if (f.x > W - xMargin) ax -= (f.x - (W - xMargin)) * 1.6;
if (f.y < yMin) ay += (yMin - f.y) * 2.2;
else if (f.y > yMax) ay -= (f.y - yMax) * 2.2;
// --- mild separation ---
for (j = 0; j < n; j++) {
if (j === i) continue;
var g = fish[j];
var sx = f.x - g.x, sy = f.y - g.y;
var sr = (f.len + g.len) * 0.55;
var d2 = sx * sx + sy * sy;
if (d2 < sr * sr && d2 > 0.01) {
var d = Math.sqrt(d2);
var push = (1 - d / sr) * 60;
ax += sx / d * push;
ay += sy / d * push;
}
}
// --- school flocking (cohesion + alignment, loose) ---
if (f.school && schoolN > 1) {
ax += (schoolCx - f.x) * 0.25 + (schoolVx - f.vx) * 0.5;
ay += (schoolCy - f.y) * 0.25 + (schoolVy - f.vy) * 0.5;
}
// --- pointer flee ---
if (pointer && pointer.active) {
var px = f.x - pointer.x, py = f.y - pointer.y;
var pd2 = px * px + py * py;
if (pd2 < FLEE_R * FLEE_R) {
var pd = Math.sqrt(pd2) || 1;
var prox = 1 - pd / FLEE_R; // 0..1, stronger closer
var force = (prox * prox * 900 + 150) * f.lazy;
ax += px / pd * force;
ay += py / pd * force;
f.burst = Math.max(f.burst, Math.min(1, prox * 1.6) * f.lazy);
// startled fish abort coral visits
if (f.state !== CRUISE) { f.state = CRUISE; f.timer = 6 + rng() * 9; }
}
}
// --- shark gaze flee: fish in front of a hunting shark dart away ---
if (sharkHunting) {
var kx = f.x - gazeX, ky = f.y - gazeY;
var kd2 = kx * kx + ky * ky;
if (kd2 < SHARK_GAZE_R * SHARK_GAZE_R && kd2 > 1) {
var kd = Math.sqrt(kd2);
// inside the forward cone of the shark's gaze?
if ((kx * shark.face) / kd > SHARK_CONE_COS) {
var kprox = 1 - kd / SHARK_GAZE_R;
// no laziness here — everyone fears the shark
ax += kx / kd * (kprox * kprox * 1100 + 250);
ay += ky / kd * (kprox * kprox * 1100 + 250);
f.burst = Math.max(f.burst, Math.min(1, kprox * 1.8));
if (f.state !== CRUISE) { f.state = CRUISE; f.timer = 6 + rng() * 9; }
}
}
}
// burst decays over ~1s
if (f.burst > 0) f.burst = Math.max(0, f.burst - dt);
// --- integrate with caps ---
var mAcc = f.maxAccel * (1 + 2.5 * f.burst);
var aMag = Math.sqrt(ax * ax + ay * ay);
if (aMag > mAcc) { var as = mAcc / aMag; ax *= as; ay *= as; }
f.vx += ax * dt;
f.vy += ay * dt;
var mSpd = f.maxSpeed * (1 + 1.7 * f.burst);
if (f.state === LINGER && f.burst === 0) mSpd = f.maxSpeed * 0.25;
var v = Math.sqrt(f.vx * f.vx + f.vy * f.vy);
if (v > mSpd) { var vs = mSpd / v; f.vx *= vs; f.vy *= vs; v = mSpd; }
f.x += f.vx * dt;
f.y += f.vy * dt;
// facing (hysteresis so it doesn't flip-flop)
if (f.vx > 4) f.face = 1;
else if (f.vx < -4) f.face = -1;
// tail wag phase: speed-proportional frequency, dt-scaled
f.wagPhase += dt * (2.5 + v * 0.16 + f.burst * 6);
}
}
// ---------- rendering ----------
function drawFish(ctx, f, t) {
var L = f.len;
var hw = L * 0.5;
var bh = L * f.bodyRatio; // body height
var hh = bh * 0.5;
var bob = Math.sin(t * 1.4 + f.bobPhase) * L * 0.035;
var tilt = clamp(Math.atan2(f.vy, Math.abs(f.vx) + 1) * 0.6, -0.35, 0.35);
var wag = Math.sin(f.wagPhase) * (0.28 + f.burst * 0.2);
ctx.save();
ctx.translate(f.x, f.y + bob);
ctx.scale(f.face, 1);
ctx.rotate(tilt);
// tail (caudal fin) — flexes around the body's rear attachment point
var tX = -hw * 0.82;
ctx.save();
ctx.translate(tX, 0);
ctx.rotate(wag * 0.55);
var ts = f.tailSize;
ctx.fillStyle = f.sp.fin;
ctx.beginPath();
ctx.moveTo(hw * 0.12, 0);
ctx.lineTo(-hw * 0.52 * ts, -hh * 0.95 * ts);
ctx.quadraticCurveTo(-hw * 0.3 * ts, 0, -hw * 0.52 * ts, hh * 0.95 * ts);
ctx.closePath();
ctx.fill();
ctx.restore();
// dorsal fin (under body so the joint is hidden)
ctx.fillStyle = f.sp.fin;
ctx.beginPath();
ctx.moveTo(hw * 0.05, -hh * 0.5);
ctx.lineTo(-hw * 0.28, -hh - L * 0.16);
ctx.quadraticCurveTo(-hw * 0.45, -hh * 0.7, -hw * 0.55, -hh * 0.3);
ctx.closePath();
ctx.fill();
// body: rounded chunky ellipse, 2-tone cel shade via clip
ctx.save();
ctx.beginPath();
ctx.ellipse(0, 0, hw, hh, 0, 0, TAU);
ctx.clip();
ctx.fillStyle = f.sp.back; // darker back
ctx.fillRect(-hw, -hh, L, bh);
ctx.fillStyle = f.sp.belly; // lighter belly
ctx.beginPath();
ctx.ellipse(hw * 0.08, hh * 0.62, hw * 0.98, hh * 0.85, 0, 0, TAU);
ctx.fill();
if (f.sp.stripe) { // clownfish band
ctx.fillStyle = f.sp.stripe;
ctx.fillRect(-hw * 0.05, -hh, hw * 0.22, bh);
ctx.fillRect(hw * 0.5, -hh, hw * 0.18, bh);
}
ctx.restore();
// pectoral fin, wags gently
ctx.save();
ctx.translate(hw * 0.02, hh * 0.25);
ctx.rotate(0.5 + wag * 0.3);
ctx.fillStyle = f.sp.fin;
ctx.beginPath();
ctx.moveTo(0, 0);
ctx.lineTo(-L * 0.22, L * 0.09);
ctx.quadraticCurveTo(-L * 0.14, -L * 0.02, 0, -L * 0.05);
ctx.closePath();
ctx.fill();
ctx.restore();
// eye: big white circle, large pupil, tiny highlight
var ex = hw * 0.52, ey = -hh * 0.22, er = L * 0.115;
ctx.fillStyle = '#ffffff';
ctx.beginPath();
ctx.arc(ex, ey, er, 0, TAU);
ctx.fill();
ctx.fillStyle = '#1c2730';
ctx.beginPath();
ctx.arc(ex + er * 0.18, ey, er * 0.58, 0, TAU);
ctx.fill();
ctx.fillStyle = '#ffffff';
ctx.beginPath();
ctx.arc(ex + er * 0.02, ey - er * 0.28, er * 0.18, 0, TAU);
ctx.fill();
// friendly upturned smile
ctx.strokeStyle = '#1c2730';
ctx.lineWidth = Math.max(1.2, L * 0.04);
ctx.lineCap = 'round';
ctx.beginPath();
ctx.arc(hw * 0.62, hh * 0.05, L * 0.13, Math.PI * 0.2, Math.PI * 0.75);
ctx.stroke();
ctx.restore();
}
function draw(ctx, t) {
for (var i = 0; i < fish.length; i++) drawFish(ctx, fish[i], t);
drawShark(ctx, t);
}
// ---------- lifecycle ----------
function init(w, h, sh) {
W = w; H = h;
shelters = sh || [];
rng = mulberry32(((window.SCENE_SEED >>> 0) ^ 0xF15C) >>> 0 || 0xF15C);
buildFish();
shark = makeShark();
}
function resize(w, h, sh) {
W = w; H = h;
shelters = sh || [];
if (shark && shark.state === 'cross') shark.baseY = clamp(shark.baseY, 0.2 * H, 0.6 * H);
for (var i = 0; i < fish.length; i++) {
var f = fish[i];
f.x = clamp(f.x, 10, W - 10);
f.y = clamp(f.y, 0.15 * H, 0.88 * H);
if (f.state === TRAVEL || f.state === LEAVE || f.state === LINGER) {
// old targets may be off-screen / stale after regen
f.state = CRUISE;
f.timer = 3 + rng() * 8;
}
}
}
return { init: init, resize: resize, update: update, draw: draw };
})();
// Main harness — composes WaterLayer, CoralLayer, FishLayer per CONTRACT.md
(() => {
window.SHARK_IMG = document.getElementById('shark-img');
const canvas = document.getElementById('scene');
const ctx = canvas.getContext('2d');
let W = 0, H = 0;
const pointer = { x: -9999, y: -9999, active: false };
function size() {
const dpr = Math.min(window.devicePixelRatio || 1, 2);
W = window.innerWidth; H = window.innerHeight;
canvas.width = W * dpr; canvas.height = H * dpr;
canvas.style.width = W + 'px'; canvas.style.height = H + 'px';
ctx.setTransform(dpr, 0, 0, dpr, 0, 0);
}
const SEED_KEY = 'underwater-scene-seed';
let stored = null;
try { stored = localStorage.getItem(SEED_KEY); } catch (e) {}
window.SCENE_SEED = stored !== null ? (Number(stored) >>> 0) : newSeed();
function newSeed() {
const s = (Math.random() * 0xffffffff) >>> 0;
try { localStorage.setItem(SEED_KEY, String(s)); } catch (e) {}
return s;
}
function buildScene() {
WaterLayer.init(W, H);
CoralLayer.init(W, H);
FishLayer.init(W, H, CoralLayer.shelters);
}
size();
buildScene();
document.getElementById('reset').addEventListener('click', () => {
window.SCENE_SEED = newSeed();
buildScene();
});
window.addEventListener('resize', () => {
size();
WaterLayer.resize(W, H);
CoralLayer.resize(W, H);
FishLayer.resize(W, H, CoralLayer.shelters);
});
const setPtr = (x, y, active) => { pointer.x = x; pointer.y = y; pointer.active = active; };
window.addEventListener('pointermove', e => setPtr(e.clientX, e.clientY, true));
window.addEventListener('pointerdown', e => setPtr(e.clientX, e.clientY, true));
window.addEventListener('pointerup', () => { pointer.active = false; });
window.addEventListener('pointerleave', () => setPtr(-9999, -9999, false));
window.addEventListener('touchmove', e => {
const t = e.touches[0]; if (t) setPtr(t.clientX, t.clientY, true);
}, { passive: true });
window.addEventListener('touchend', () => setPtr(-9999, -9999, false));
let last = performance.now();
function frame(now) {
const t = now / 1000;
const dt = Math.min((now - last) / 1000, 0.05);
last = now;
WaterLayer.drawBackground(ctx, t);
CoralLayer.drawBack(ctx, t);
FishLayer.update(dt, t, pointer);
FishLayer.draw(ctx, t);
CoralLayer.drawFront(ctx, t);
WaterLayer.drawOverlay(ctx, t);
requestAnimationFrame(frame);
}
requestAnimationFrame(frame);
})();
</script>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment