svg.escobar.life

A simple SVG markup editor for the web

Commit
39976cb03299777209afb3cdd5260495528f53bd
Parent
3ac2d82e63e316d1bee13e79dd540f61920ef9d5
Author
Pablo Emilio Escobar Gaviria <pablo-escobar@riseup.net>
Date

Worked on porting the app to my personal website

Diffstat

11 files changed, 1004 insertions, 949 deletions

Status File Name N° Changes Insertions Deletions
Modified .gitignore 4 1 3
Modified Makefile 3 2 1
Modified assets/error.svg 153 151 2
Deleted assets/github.svg 4 0 4
Deleted assets/logo.svg 4 0 4
Deleted build 12 0 12
Modified index.html 13 2 11
Modified script.min.js 1422 690 732
Modified src/Editor.elm 13 8 5
Modified src/View.elm 174 103 71
Modified styles.css 151 47 104
diff --git a/.gitignore b/.gitignore
@@ -1,4 +1,2 @@
 elm-stuff
-build/output
-src/assets
-output
+*.min.js
diff --git a/Makefile b/Makefile
@@ -1,4 +1,5 @@
 .PHONY: build
 
 build:
-	elm make --output=script.min.js src/Main.elm
+	elm make --optimize --output=script.js src/Main.elm
+	mv script.js script.min.js
diff --git a/assets/error.svg b/assets/error.svg
@@ -1,4 +1,153 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg viewBox="0 0 50 40" xmlns="http://www.w3.org/2000/svg" stroke-linejoin="round" stroke-miterlimit="2">
-    <path d="M11.981 18.312l-2.854-4.41-2.783 4.41H0l5.967-8.326L.212 1.802h6.25L9.27 5.953l2.736-4.15h5.99l-5.73 7.97 6.084 8.539h-6.368zm7.123 0h11.792v2.83H19.104zm24.528 0l-2.854-4.41-2.783 4.41h-6.344l5.967-8.326-5.755-8.184h6.25l2.807 4.151 2.736-4.15h5.99l-5.73 7.97L50 18.313h-6.368zM1.507 27.26c-.286 0-.568-.035-.835-.1A2.246 2.246 0 0 1 0 26.903l.376-.85c.163.094.35.173.553.228.203.059.4.089.588.089a.952.952 0 0 0 .346-.045c.07-.034.104-.079.104-.143 0-.074-.045-.129-.134-.163a3.593 3.593 0 0 0-.45-.119 4.192 4.192 0 0 1-.666-.183 1.132 1.132 0 0 1-.465-.316c-.133-.143-.198-.34-.198-.593 0-.217.06-.415.183-.593.124-.178.307-.316.549-.42.242-.104.533-.153.88-.153.237 0 .469.025.701.074.227.054.43.128.603.227l-.35.845c-.342-.173-.663-.257-.965-.257-.301 0-.45.074-.45.218 0 .069.045.118.134.153.09.035.237.074.44.114.262.049.484.103.667.168.183.064.341.173.475.316.128.143.197.34.197.593 0 .217-.06.415-.183.588a1.22 1.22 0 0 1-.543.42 2.247 2.247 0 0 1-.885.158zm3.771 0c-.37 0-.707-.08-1.003-.233a1.734 1.734 0 0 1-.949-1.576c0-.346.084-.658.252-.935.168-.271.4-.489.697-.642a2.16 2.16 0 0 1 1.003-.232c.37 0 .706.079 1.003.232.296.153.529.37.697.642.168.277.252.589.252.934a1.734 1.734 0 0 1-.95 1.577 2.16 2.16 0 0 1-1.002.232zm0-.945a.704.704 0 0 0 .39-.108.724.724 0 0 0 .282-.302.95.95 0 0 0 .104-.455.984.984 0 0 0-.104-.46.741.741 0 0 0-.282-.296.704.704 0 0 0-.39-.108.733.733 0 0 0-.396.108.765.765 0 0 0-.276.297.984.984 0 0 0-.104.46.95.95 0 0 0 .104.454.746.746 0 0 0 .672.41zm5.465.865l-.01-1.576-.75 1.265h-.515l-.75-1.211v1.522H7.654v-3.46h.958l1.127 1.844 1.097-1.843h.959l.01 3.46h-1.063zm4.502-.88v.88H12.37v-3.46h2.812v.88h-1.665v.406h1.462v.84h-1.462v.454h1.73zm1.201-1.675h-1.013v-.904h3.192v.904h-1.013v2.555h-1.166v-2.555zm5.89-.905v3.46H21.17v-1.275h-1.077v1.275h-1.166v-3.46h1.166v1.226h1.077v-1.225h1.166zm.564 0h1.166v3.46H22.9zm5.14 0v3.46h-.96l-1.314-1.571v1.571h-1.137v-3.46h.96l1.314 1.572v-1.571h1.136zm2.85 1.637h1.013v1.462c-.202.144-.44.252-.711.326a3.004 3.004 0 0 1-.796.114c-.37 0-.702-.079-.993-.232a1.74 1.74 0 0 1-.939-1.576c0-.351.084-.663.252-.94.163-.271.395-.489.697-.642a2.163 2.163 0 0 1 1.008-.227c.34 0 .642.054.914.168.267.113.49.281.667.499l-.746.657c-.217-.252-.474-.38-.776-.38-.257 0-.46.079-.613.232-.153.153-.227.366-.227.632 0 .262.074.47.227.628.149.158.346.237.598.237.149 0 .292-.03.425-.084v-.874zm8.624-1.637l-1.107 3.46h-1.25l-.559-1.848-.588 1.848h-1.25l-1.107-3.46h1.2l.604 1.968.637-1.967h1.072l.603 1.991.638-1.991h1.107zm3.133 2.58v.88H39.77v-3.46h2.811v.88h-1.665v.406h1.463v.84h-1.463v.454h1.73zm3.859-2.58v3.46h-.959l-1.314-1.571v1.571h-1.137v-3.46h.959l1.315 1.572v-1.571h1.136zm1.314.905h-1.012v-.904H50v.904h-1.013v2.555H47.82v-2.555zM13.673 29.944l-4.197 8.07H6.56l-.462-4.255-2.213 4.254H.968L0 29.943h2.686l.519 4.6 2.398-4.6h2.501l.462 4.67 2.432-4.67h2.675zm7.574 2.651c0 .715-.185 1.337-.565 1.868-.38.541-.922.933-1.614 1.199l1.349 2.351h-2.825l-1.141-2.029h-.669l-.403 2.03h-2.72l1.613-8.07h3.62c1.06 0 1.89.23 2.479.691.587.473.876 1.119.876 1.96zm-2.756.265c0-.542-.334-.818-1.014-.818h-.91l-.381 1.89h1.118c.38 0 .669-.092.876-.288.208-.184.311-.45.311-.784zm7.298 5.338c-.819 0-1.545-.15-2.156-.461a3.337 3.337 0 0 1-1.43-1.268c-.334-.542-.507-1.176-.507-1.88 0-.933.22-1.775.657-2.513a4.456 4.456 0 0 1 1.81-1.706c.773-.403 1.637-.61 2.617-.61.819 0 1.545.149 2.168.449a3.584 3.584 0 0 1 1.43 1.28c.333.541.495 1.175.495 1.878 0 .934-.22 1.776-.646 2.502a4.48 4.48 0 0 1-1.81 1.718c-.772.403-1.648.61-2.628.61zm.23-2.202c.427 0 .807-.115 1.13-.334.311-.22.554-.52.726-.9.173-.38.254-.784.254-1.233 0-.473-.138-.853-.415-1.141-.288-.289-.669-.427-1.164-.427-.427 0-.807.115-1.119.334a2.107 2.107 0 0 0-.737.9c-.173.38-.254.783-.254 1.233 0 .473.138.853.427 1.141.276.289.657.427 1.152.427zm14.572-6.052l-1.614 8.07h-2.236l-2.317-3.759-.75 3.758h-2.651l1.614-8.07h2.236l2.317 3.759.75-3.758h2.651zm5.891 3.816h2.363l-.691 3.481a4.725 4.725 0 0 1-1.476.703 6.11 6.11 0 0 1-1.798.254c-.819 0-1.545-.15-2.168-.461-.634-.3-1.118-.727-1.452-1.268-.346-.542-.52-1.176-.52-1.88 0-.933.22-1.775.658-2.501a4.623 4.623 0 0 1 1.833-1.718c.784-.403 1.683-.61 2.698-.61 1.671 0 2.893.53 3.666 1.578l-1.949 1.51c-.253-.322-.53-.553-.818-.68-.288-.138-.634-.207-1.026-.207-.473 0-.876.104-1.222.311a2.016 2.016 0 0 0-.807.865 2.75 2.75 0 0 0-.288 1.28c0 .472.161.864.472 1.14.312.29.75.439 1.303.439.277 0 .542-.035.795-.115l.427-2.122z" fill="#2d2b55"/>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   viewBox="0 0 50.078438 43.02877"
+   stroke-linejoin="round"
+   stroke-miterlimit="2"
+   version="1.1"
+   id="svg4"
+   sodipodi:docname="error.svg"
+   width="50.078438"
+   height="43.02877"
+   inkscape:version="1.0.1 (1.0.1+r75)">
+  <metadata
+     id="metadata10">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs8" />
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1366"
+     inkscape:window-height="701"
+     id="namedview6"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:zoom="8.0963726"
+     inkscape:cx="19.522419"
+     inkscape:cy="22.326488"
+     inkscape:window-x="0"
+     inkscape:window-y="30"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="svg4" />
+  <g
+     aria-label="X_X"
+     transform="scale(0.95624308,1.0457592)"
+     id="text837"
+     style="font-style:normal;font-weight:normal;font-size:29.5209px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#0d1928;fill-opacity:1;stroke:none;stroke-width:0.738022">
+    <path
+       d="M 10.945698,10.037106 16.643232,2.0599365e-7 H 12.569347 L 10.591447,3.4834665 8.761151,7.0554955 H 8.5545047 L 6.7537298,3.4834665 4.8643921,2.0599365e-7 H 0.46577792 L 6.1337909,9.9780647 0.08200621,20.605589 H 4.1558905 l 2.3026303,-4.103405 1.8598167,-3.60155 h 0.2361672 l 1.8007753,3.60155 2.243588,4.103405 h 4.369093 z"
+       style="font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;font-family:'IBM Plex Mono';-inkscape-font-specification:'IBM Plex Mono Semi-Bold';stroke-width:0.738022;fill:#0d1928;fill-opacity:1"
+       id="path863" />
+    <path
+       d="M 33.31101,26.066956 V 22.908219 H 19.140977 v 3.158737 z"
+       style="font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;font-family:'IBM Plex Mono';-inkscape-font-specification:'IBM Plex Mono Semi-Bold';stroke-width:0.738022;fill:#0d1928;fill-opacity:1"
+       id="path865" />
+    <path
+       d="M 46.347717,10.037106 52.045251,2.0599365e-7 H 47.971367 L 45.993466,3.4834665 44.163171,7.0554955 H 43.956524 L 42.155749,3.4834665 40.266412,2.0599365e-7 H 35.867797 L 41.53581,9.9780647 35.484026,20.605589 h 4.073884 l 2.30263,-4.103405 1.859817,-3.60155 h 0.236167 l 1.800775,3.60155 2.243589,4.103405 h 4.369093 z"
+       style="font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;font-family:'IBM Plex Mono';-inkscape-font-specification:'IBM Plex Mono Semi-Bold';stroke-width:0.738022;fill:#0d1928;fill-opacity:1"
+       id="path867" />
+  </g>
+  <g
+     aria-label="Something went
+wrong"
+     id="text841"
+     style="font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;font-size:6.03215px;line-height:1.25;font-family:'IBM Plex Mono';-inkscape-font-specification:'IBM Plex Mono Semi-Bold';letter-spacing:0px;word-spacing:0px;fill:#0d1928;fill-opacity:1;stroke:none;stroke-width:0.150803">
+    <path
+       d="m 1.6286804,34.282152 c 1.0194334,0 1.568359,-0.548925 1.568359,-1.333105 0,-0.627343 -0.3558969,-1.043562 -1.0797548,-1.176269 l -0.440347,-0.07842 c -0.4644755,-0.07842 -0.6394078,-0.235254 -0.6394078,-0.554958 0,-0.373993 0.2352538,-0.567022 0.687665,-0.567022 0.4222505,0 0.7359223,0.1689 0.9591119,0.434315 L 3.1487822,30.512059 C 2.859239,30.15013 2.376667,29.92694 1.7191627,29.92694 c -0.91688678,0 -1.47787671,0.446379 -1.47787671,1.248655 0,0.585119 0.30160749,1.055626 1.07975481,1.188334 l 0.4463791,0.07239 c 0.4584434,0.07239 0.6333757,0.235254 0.6333757,0.567022 0,0.404154 -0.2654146,0.633376 -0.7479866,0.633376 -0.4162183,0 -0.78417943,-0.1689 -1.09785122,-0.530829 l -0.47653984,0.494636 c 0.31970394,0.410186 0.83243668,0.681633 1.55026246,0.681633 z"
+       style="font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;font-family:'IBM Plex Mono';-inkscape-font-specification:'IBM Plex Mono Semi-Bold';stroke-width:0.150803;fill:#0d1928;fill-opacity:1"
+       id="path870" />
+    <path
+       d="m 5.2938712,34.282152 c 0.9410154,0 1.5201018,-0.627343 1.5201018,-1.62868 0,-1.001337 -0.5790864,-1.628681 -1.5201018,-1.628681 -0.9410153,0 -1.5201017,0.627344 -1.5201017,1.628681 0,1.001337 0.5790864,1.62868 1.5201017,1.62868 z m 0,-0.59115 c -0.4403469,0 -0.7178258,-0.277479 -0.7178258,-0.796244 v -0.482572 c 0,-0.518765 0.2774789,-0.796244 0.7178258,-0.796244 0.440347,0 0.7178258,0.277479 0.7178258,0.796244 v 0.482572 c 0,0.518765 -0.2774788,0.796244 -0.7178258,0.796244 z"
+       style="font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;font-family:'IBM Plex Mono';-inkscape-font-specification:'IBM Plex Mono Semi-Bold';stroke-width:0.150803;fill:#0d1928;fill-opacity:1"
+       id="path872" />
+    <path
+       d="m 7.9637573,34.209766 v -2.237927 c 0,-0.247318 0.1387394,-0.367961 0.3317682,-0.367961 0.199061,0 0.2955754,0.126675 0.2955754,0.488604 v 2.117284 h 0.6394078 v -2.237927 c 0,-0.247318 0.1387395,-0.367961 0.3257361,-0.367961 0.199061,0 0.3016075,0.126675 0.3016075,0.488604 v 2.117284 H 10.491228 V 32.002 c 0,-0.639408 -0.193029,-0.977209 -0.64544,-0.977209 -0.3800254,0 -0.5609899,0.235254 -0.6695686,0.518765 h -0.030161 c -0.054289,-0.325736 -0.241286,-0.518765 -0.5549578,-0.518765 -0.3317683,0 -0.4946363,0.22319 -0.5911507,0.500669 H 7.9637573 V 31.097177 H 7.3243494 v 3.112589 z"
+       style="font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;font-family:'IBM Plex Mono';-inkscape-font-specification:'IBM Plex Mono Semi-Bold';stroke-width:0.150803;fill:#0d1928;fill-opacity:1"
+       id="path874" />
+    <path
+       d="m 12.600124,34.282152 c 0.657504,0 1.085787,-0.271447 1.308976,-0.597183 l -0.440346,-0.440347 c -0.186997,0.259383 -0.464476,0.428283 -0.844501,0.428283 -0.506701,0 -0.802276,-0.30764 -0.802276,-0.754019 v -0.07842 h 2.183638 v -0.25335 c 0,-0.941015 -0.567022,-1.562327 -1.465813,-1.562327 -0.910854,0 -1.489941,0.627344 -1.489941,1.634713 0,0.995305 0.554958,1.622648 1.550263,1.622648 z m -0.05429,-2.690339 c 0.42225,0 0.687665,0.289544 0.687665,0.735923 v 0.05429 H 11.821977 V 32.3398 c 0,-0.446379 0.289543,-0.747987 0.723858,-0.747987 z"
+       style="font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;font-family:'IBM Plex Mono';-inkscape-font-specification:'IBM Plex Mono Semi-Bold';stroke-width:0.150803;fill:#0d1928;fill-opacity:1"
+       id="path876" />
+    <path
+       d="m 17.526034,34.209766 v -0.609247 h -1.266751 v -1.894095 h 1.266751 v -0.609247 h -1.266751 v -1.097851 h -0.717826 v 0.754019 c 0,0.259382 -0.09651,0.343832 -0.343833,0.343832 h -0.615279 v 0.609247 h 0.904823 v 1.658841 c 0,0.494637 0.277479,0.844501 0.868629,0.844501 z"
+       style="font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;font-family:'IBM Plex Mono';-inkscape-font-specification:'IBM Plex Mono Semi-Bold';stroke-width:0.150803;fill:#0d1928;fill-opacity:1"
+       id="path878" />
+    <path
+       d="m 18.404371,34.209766 h 0.772115 v -2.081091 c 0,-0.331769 0.301608,-0.494637 0.61528,-0.494637 0.386057,0 0.585118,0.229222 0.585118,0.675601 v 1.900127 h 0.772115 v -2.008705 c 0,-0.754019 -0.42225,-1.17627 -1.031497,-1.17627 -0.506701,0 -0.772115,0.283511 -0.910855,0.621312 h -0.03016 v -1.900127 h -0.772115 z"
+       style="font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;font-family:'IBM Plex Mono';-inkscape-font-specification:'IBM Plex Mono Semi-Bold';stroke-width:0.150803;fill:#0d1928;fill-opacity:1"
+       id="path880" />
+    <path
+       d="m 23.571567,30.614605 c 0.361929,0 0.494637,-0.174932 0.494637,-0.39209 v -0.144771 c 0,-0.217158 -0.132708,-0.39209 -0.494637,-0.39209 -0.361929,0 -0.494636,0.174932 -0.494636,0.39209 v 0.144771 c 0,0.217158 0.132707,0.39209 0.494636,0.39209 z m -1.411523,3.595161 h 2.750661 v -0.609247 h -0.95308 v -2.503342 h -1.797581 v 0.609247 h 1.025466 v 1.894095 h -1.025466 z"
+       style="font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;font-family:'IBM Plex Mono';-inkscape-font-specification:'IBM Plex Mono Semi-Bold';stroke-width:0.150803;fill:#0d1928;fill-opacity:1"
+       id="path882" />
+    <path
+       d="m 26.410354,34.209766 v -2.081091 c 0,-0.331769 0.301607,-0.494637 0.615279,-0.494637 0.386058,0 0.585119,0.229222 0.585119,0.675601 v 1.900127 h 0.772115 v -2.008705 c 0,-0.754019 -0.422251,-1.17627 -1.031498,-1.17627 -0.5067,0 -0.772115,0.283511 -0.910854,0.621312 h -0.03016 v -0.548926 h -0.772115 v 3.112589 z"
+       style="font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;font-family:'IBM Plex Mono';-inkscape-font-specification:'IBM Plex Mono Semi-Bold';stroke-width:0.150803;fill:#0d1928;fill-opacity:1"
+       id="path884" />
+    <path
+       d="m 32.27728,34.535502 c 0,-0.518764 -0.343833,-0.880693 -1.20643,-0.880693 h -0.705762 c -0.259382,0 -0.470508,-0.0181 -0.470508,-0.211126 0,-0.144771 0.126676,-0.229221 0.241286,-0.271446 0.13874,0.03619 0.289544,0.04826 0.44638,0.04826 0.790211,0 1.315008,-0.404154 1.315008,-1.097851 0,-0.404154 -0.174932,-0.705762 -0.47654,-0.886726 V 31.13337 h 0.735923 v -0.579086 h -0.56099 c -0.283511,0 -0.446379,0.180964 -0.446379,0.42225 v 0.132707 c -0.162868,-0.05429 -0.355897,-0.08445 -0.567022,-0.08445 -0.790212,0 -1.308977,0.410186 -1.308977,1.097852 0,0.452411 0.22319,0.784179 0.591151,0.959111 v 0.03016 c -0.331768,0.07842 -0.56099,0.211125 -0.56099,0.518765 0,0.25335 0.150804,0.39209 0.39209,0.470508 v 0.04826 c -0.361929,0.09048 -0.573055,0.259382 -0.573055,0.603215 0,0.446379 0.349865,0.735922 1.477877,0.735922 1.140076,0 1.676938,-0.301607 1.676938,-0.95308 z m -0.723858,0.05429 c 0,0.247318 -0.229222,0.380025 -0.681633,0.380025 H 30.37112 c -0.428282,0 -0.597183,-0.162868 -0.597183,-0.380025 0,-0.132707 0.06032,-0.235254 0.180965,-0.301608 h 1.073723 c 0.398122,0 0.524797,0.114611 0.524797,0.301608 z m -0.971176,-1.875999 c -0.386058,0 -0.567023,-0.211125 -0.567023,-0.512732 v -0.156836 c 0,-0.301608 0.180965,-0.512733 0.567023,-0.512733 0.392089,0 0.573054,0.211125 0.573054,0.512733 v 0.156836 c 0,0.301607 -0.180965,0.512732 -0.573054,0.512732 z"
+       style="font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;font-family:'IBM Plex Mono';-inkscape-font-specification:'IBM Plex Mono Semi-Bold';stroke-width:0.150803;fill:#0d1928;fill-opacity:1"
+       id="path886" />
+    <path
+       d="m 36.519199,34.209766 h 0.934983 l 0.367961,-2.286184 h 0.05429 l 0.361929,2.286184 h 0.934983 l 0.398122,-3.112589 h -0.615279 l -0.271447,2.569696 h -0.05429 l -0.416219,-2.569696 h -0.705761 l -0.422251,2.569696 h -0.05429 l -0.265415,-2.569696 h -0.64544 z"
+       style="font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;font-family:'IBM Plex Mono';-inkscape-font-specification:'IBM Plex Mono Semi-Bold';stroke-width:0.150803;fill:#0d1928;fill-opacity:1"
+       id="path888" />
+    <path
+       d="m 41.535594,34.282152 c 0.657504,0 1.085787,-0.271447 1.308976,-0.597183 l -0.440347,-0.440347 c -0.186996,0.259383 -0.464475,0.428283 -0.844501,0.428283 -0.5067,0 -0.802276,-0.30764 -0.802276,-0.754019 v -0.07842 h 2.183638 v -0.25335 c 0,-0.941015 -0.567022,-1.562327 -1.465812,-1.562327 -0.910855,0 -1.489941,0.627344 -1.489941,1.634713 0,0.995305 0.554958,1.622648 1.550263,1.622648 z m -0.05429,-2.690339 c 0.422251,0 0.687665,0.289544 0.687665,0.735923 v 0.05429 H 40.757446 V 32.3398 c 0,-0.446379 0.289543,-0.747987 0.723858,-0.747987 z"
+       style="font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;font-family:'IBM Plex Mono';-inkscape-font-specification:'IBM Plex Mono Semi-Bold';stroke-width:0.150803;fill:#0d1928;fill-opacity:1"
+       id="path890" />
+    <path
+       d="m 44.495021,34.209766 v -2.081091 c 0,-0.331769 0.301608,-0.494637 0.615279,-0.494637 0.386058,0 0.585119,0.229222 0.585119,0.675601 v 1.900127 h 0.772115 v -2.008705 c 0,-0.754019 -0.42225,-1.17627 -1.031497,-1.17627 -0.506701,0 -0.772116,0.283511 -0.910855,0.621312 h -0.03016 v -0.548926 h -0.772115 v 3.112589 z"
+       style="font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;font-family:'IBM Plex Mono';-inkscape-font-specification:'IBM Plex Mono Semi-Bold';stroke-width:0.150803;fill:#0d1928;fill-opacity:1"
+       id="path892" />
+    <path
+       d="m 50.078438,34.209766 v -0.609247 h -1.266752 v -1.894095 h 1.266752 V 31.097177 H 48.811686 V 29.999326 H 48.09386 v 0.754019 c 0,0.259382 -0.09651,0.343832 -0.343832,0.343832 h -0.615279 v 0.609247 h 0.904822 v 1.658841 c 0,0.494637 0.277479,0.844501 0.86863,0.844501 z"
+       style="font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;font-family:'IBM Plex Mono';-inkscape-font-specification:'IBM Plex Mono Semi-Bold';stroke-width:0.150803;fill:#0d1928;fill-opacity:1"
+       id="path894" />
+    <path
+       d="m 0.56702208,41.816307 c 0.36192899,0 0.60924712,-0.229221 0.76608302,-0.651472 h 0.036193 c -0.024129,0.39209 0.1508037,0.651472 0.5549578,0.651472 0.3317682,0 0.6575043,-0.1689 0.8987903,-0.488604 0.3197039,-0.416218 0.5127327,-1.073723 0.5127327,-1.791548 0,-0.39209 -0.078418,-0.717826 -0.1930288,-0.941016 l -0.5489256,0.162868 c 0.078418,0.193029 0.120643,0.494637 0.120643,0.778148 0,0.850533 -0.3076396,1.676937 -0.6514722,1.676937 -0.1508037,0 -0.2050931,-0.102546 -0.2050931,-0.25335 0,-0.06635 0.012064,-0.199061 0.030161,-0.289543 L 2.2258633,38.637364 H 1.6286804 l -0.3197039,1.900128 c -0.024129,0.144771 -0.066354,0.319703 -0.1387394,0.42225 -0.096514,0.144772 -0.19906099,0.241286 -0.33176828,0.241286 -0.15080375,0 -0.21715739,-0.09048 -0.21715739,-0.25335 0,-0.08445 0.0180965,-0.229222 0.0361929,-0.319704 l 0.33176824,-1.99061 H 0.38605758 L 0.0482572,40.652102 C 0.01809645,40.833067 0,41.062289 0,41.176899 c 0,0.386058 0.17493234,0.639408 0.56702208,0.639408 z"
+       style="font-style:italic;font-variant:normal;font-weight:600;font-stretch:normal;font-family:'IBM Plex Mono';-inkscape-font-specification:'IBM Plex Mono Semi-Bold Italic';stroke-width:0.150803;fill:#0d1928;fill-opacity:1"
+       id="path896" />
+    <path
+       d="m 5.1852925,41.749954 0.2473182,-1.489941 c 0.042225,-0.253351 0.1990609,-0.482572 0.2774789,-0.579087 0.1568359,-0.193029 0.3498646,-0.283511 0.687665,-0.283511 h 0.5489257 l 0.1266751,-0.760051 h -0.283511 c -0.6092472,0 -0.9591118,0.343833 -1.20643,0.910855 H 5.5472215 L 5.7040574,38.637364 H 4.1839557 L 4.0814091,39.240579 H 4.84146 l -0.4162183,2.509375 z"
+       style="font-style:italic;font-variant:normal;font-weight:600;font-stretch:normal;font-family:'IBM Plex Mono';-inkscape-font-specification:'IBM Plex Mono Semi-Bold Italic';stroke-width:0.150803;fill:#0d1928;fill-opacity:1"
+       id="path898" />
+    <path
+       d="m 8.6996796,41.822339 c 1.007369,0 1.7251944,-0.735922 1.7251944,-1.924255 0,-0.808308 -0.4765394,-1.333105 -1.3029439,-1.333105 -1.0073691,0 -1.7251949,0.735922 -1.7251949,1.924255 0,0.808308 0.4765398,1.333105 1.3029444,1.333105 z m 0.054289,-0.585118 c -0.3679611,0 -0.5971828,-0.199061 -0.5971828,-0.609247 0,-0.07239 0.012064,-0.174933 0.030161,-0.271447 l 0.072386,-0.428283 c 0.08445,-0.494636 0.361929,-0.778147 0.8083081,-0.778147 0.3679611,0 0.5971828,0.199061 0.5971828,0.609247 0,0.07239 -0.012064,0.174933 -0.030161,0.271447 l -0.072386,0.428283 c -0.08445,0.494636 -0.361929,0.778147 -0.8083081,0.778147 z"
+       style="font-style:italic;font-variant:normal;font-weight:600;font-stretch:normal;font-family:'IBM Plex Mono';-inkscape-font-specification:'IBM Plex Mono Semi-Bold Italic';stroke-width:0.150803;fill:#0d1928;fill-opacity:1"
+       id="path900" />
+    <path
+       d="m 11.689269,41.749954 0.271447,-1.640745 c 0.04826,-0.289543 0.22319,-0.536861 0.30764,-0.64544 0.150803,-0.186997 0.313672,-0.301608 0.542893,-0.301608 0.295576,0 0.404154,0.211126 0.404154,0.434315 0,0.126675 -0.02413,0.265415 -0.04223,0.373993 l -0.295575,1.779485 h 0.760051 l 0.283511,-1.707099 c 0.04223,-0.247318 0.06032,-0.42225 0.06032,-0.579086 0,-0.506701 -0.265414,-0.89879 -0.844501,-0.89879 -0.500668,0 -0.790211,0.313671 -1.019433,0.808308 h -0.03016 l 0.120643,-0.735923 h -0.760051 l -0.518765,3.11259 z"
+       style="font-style:italic;font-variant:normal;font-weight:600;font-stretch:normal;font-family:'IBM Plex Mono';-inkscape-font-specification:'IBM Plex Mono Semi-Bold Italic';stroke-width:0.150803;fill:#0d1928;fill-opacity:1"
+       id="path902" />
+    <path
+       d="m 15.6621,43.028769 c 0.880694,0 1.453748,-0.446379 1.622648,-1.441683 l 0.488604,-2.949722 h -0.76005 l -0.09652,0.567022 h -0.03016 c -0.09651,-0.410186 -0.361929,-0.639407 -0.850533,-0.639407 -0.934983,0 -1.423587,0.904822 -1.423587,1.942352 0,0.711793 0.283511,1.200398 0.941015,1.200398 0.542894,0 0.826405,-0.325737 1.055627,-0.814341 h 0.03016 l -0.102546,0.609247 c -0.126675,0.741955 -0.410186,0.922919 -0.886726,0.922919 -0.30764,0 -0.56099,-0.09651 -0.741955,-0.319704 l -0.464475,0.47654 c 0.289543,0.337801 0.663536,0.446379 1.218494,0.446379 z m 0.211125,-1.930288 c -0.3378,0 -0.482572,-0.229221 -0.482572,-0.560989 0,-0.114611 0.01206,-0.211126 0.02413,-0.289544 l 0.04826,-0.277479 c 0.08445,-0.476539 0.3378,-0.802275 0.826405,-0.802275 0.416218,0 0.603215,0.217157 0.548925,0.548925 l -0.07842,0.458444 c -0.04826,0.307639 -0.205093,0.5067 -0.307639,0.627343 -0.168901,0.193029 -0.349865,0.295575 -0.579087,0.295575 z"
+       style="font-style:italic;font-variant:normal;font-weight:600;font-stretch:normal;font-family:'IBM Plex Mono';-inkscape-font-specification:'IBM Plex Mono Semi-Bold Italic';stroke-width:0.150803;fill:#0d1928;fill-opacity:1"
+       id="path904" />
+  </g>
 </svg>
diff --git a/assets/github.svg b/assets/github.svg
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg viewBox="0 0 50 50" xmlns="http://www.w3.org/2000/svg">
-    <path d="M24.998 0C11.193 0 0 11.476 0 25.633c0 11.325 7.163 20.932 17.097 24.323 1.25.235 1.707-.557 1.707-1.237 0-.607-.022-2.22-.034-4.358-6.954 1.548-8.421-3.437-8.421-3.437-1.138-2.96-2.777-3.748-2.777-3.748-2.27-1.591.172-1.56.172-1.56 2.51.183 3.83 2.642 3.83 2.642 2.23 3.917 5.851 2.785 7.276 2.13.227-1.656.871-2.786 1.586-3.426-5.55-.647-11.387-2.847-11.387-12.67 0-2.797.974-5.085 2.574-6.877-.258-.649-1.116-3.254.244-6.784 0 0 2.1-.69 6.875 2.628 1.994-.568 4.133-.853 6.259-.862 2.122.009 4.262.294 6.258.862 4.773-3.317 6.868-2.628 6.868-2.628 1.365 3.53.507 6.135.249 6.784 1.602 1.792 2.57 4.08 2.57 6.878 0 9.847-5.845 12.014-11.415 12.648.898.792 1.698 2.356 1.698 4.748 0 3.425-.031 6.19-.031 7.03 0 .686.45 1.484 1.719 1.234C42.844 46.556 50 36.955 50 25.633 50 11.476 38.806 0 24.998 0" fill="#eef"/>
-</svg>
diff --git a/assets/logo.svg b/assets/logo.svg
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg xmlns="http://www.w3.org/2000/svg" fill="#eeeeff" viewBox="0 0 100 18">
-    <path d="M8.68 13.473H7.16L6.24 18H.05L3.72 0h8.23c2.41 0 4.29.522 5.63 1.557 1.33 1.035 2 2.493 2 4.356.153 2.9925-1.847 5.7555-4.95 6.84l3.01 5.166L29.28 0h6.08l4.35 18h-6.16l-.6-3.141h-7L24.12 18H11.27l-2.6-4.527h.01zM50.93 18H44.3L42.1 0h6.1l1.19 10.26L54.84 0h5.69l1.04 10.413L67.11 0h6.08l-9.54 18H57l-1.04-9.486L50.93 18zm23.57 0c-.8 0-1.58-.09-2.34-.27-.663-.1368-1.296-.3744-1.87-.702l1.05-2.34c.959.5391 2.06.8406 3.19.873.45 0 .77-.045.97-.126.19-.09.29-.216.29-.387 0-.198-.13-.36-.38-.45-.406-.1395-.824-.2484-1.25-.324-.636-.1233-1.261-.2889-1.87-.495-.5-.18-.93-.468-1.3-.873-.39-.468-.585-1.0449-.55-1.629 0-.594.17-1.143.5-1.629.35-.486.86-.873 1.54-1.152.67-.279 1.5-.423 2.46-.423.67 0 1.32.072 1.96.216.64.135 1.2.342 1.7.612l-.99 2.322c-.818-.4392-1.748-.684-2.7-.711-.83 0-1.25.207-1.25.603 0 .18.12.333.37.423.25.09.66.198 1.23.306.74.135 1.36.288 1.87.468.5.18.94.468 1.32.864.37.396.56.936.56 1.62.019 1.2132-.793 2.3202-2.04 2.781-.779.3015-1.622.4464-2.47.423zm22.39-5.22h2.83v4.014c-.57.387-1.23.684-1.99.9-.75.198-1.5.306-2.22.306-.972.0144-1.931-.2034-2.78-.63-.814-.414-1.483-1.0251-1.93-1.764-.475-.7866-.716-1.6704-.7-2.565 0-.963.24-1.818.7-2.574.451-.7425 1.127-1.3545 1.95-1.764.83-.414 1.78-.63 2.83-.63.95 0 1.8.162 2.55.468.75.315 1.37.765 1.87 1.368l-2.09 1.8c-.6-.693-1.33-1.044-2.17-1.044-.72 0-1.29.216-1.71.63-.452.4878-.681 1.1124-.64 1.746 0 .711.21 1.287.63 1.719.42.432.98.648 1.68.648.42 0 .81-.072 1.19-.225V12.78zm-10.67 5.004h-3.2L78.91 8.28h3.51l2.31 5.553L87.1 8.28h3.2l-4.09 9.495.01.009zm-54.14-7.29l-.89-4.608-2.7 4.608h3.6-.01zM11.01 4.68H8.94l-.87 4.221h2.55c.85 0 1.52-.216 1.99-.63.47-.423.7-1.008.7-1.764 0-1.215-.76-1.827-2.3-1.827z"/>
-</svg>
diff --git a/build b/build
@@ -1,12 +0,0 @@
-#!/bin/bash
-
-echo "Compiling source files..."
-elm make src/Main.elm --optimize --output=./script.js
-
-echo "Compressing compiled ouput..."
-minify ./script.js --mangle -o ./script.min.js
-
-rm ./script.js
-
-echo "All done!"
-
diff --git a/index.html b/index.html
@@ -7,18 +7,9 @@
 
   <link rel="icon" 
         type="image/svg+xml" 
-        sizes="32x32 16x16 180x180" 
-        href="assets/icons/favicon-opaque.svg">
+        sizes="16x16 24x24 32x32 48x48 64x64 128x128 256x256 512x512" 
+        href="https://pablo.escobar.life/images/icons/favicon.svg">
 
-  <link rel="apple-touch-icon" 
-        type="image/svg+xml" 
-        sizes="32x32 16x16 180x180" 
-        href="assets/icons/favicon-opaque.svg">
-
-  <link rel="mask-icon" 
-        href="assets/icons/favicon-transparent.svg" 
-        color="#b362ff">
- 
   <link rel="manifest" href="app.webmanifest">
   <script src="script.min.js"></script>
 </head>
diff --git a/script.min.js b/script.min.js
@@ -77,14 +77,14 @@ function A9(fun, a, b, c, d, e, f, g, h, i) {
   return fun.a === 9 ? fun.f(a, b, c, d, e, f, g, h, i) : fun(a)(b)(c)(d)(e)(f)(g)(h)(i);
 }
 
-console.warn('Compiled in DEV mode. Follow the advice at https://elm-lang.org/0.19.1/optimize for better performance and smaller assets.');
 
 
-var _List_Nil_UNUSED = { $: 0 };
-var _List_Nil = { $: '[]' };
 
-function _List_Cons_UNUSED(hd, tl) { return { $: 1, a: hd, b: tl }; }
-function _List_Cons(hd, tl) { return { $: '::', a: hd, b: tl }; }
+var _List_Nil = { $: 0 };
+var _List_Nil_UNUSED = { $: '[]' };
+
+function _List_Cons(hd, tl) { return { $: 1, a: hd, b: tl }; }
+function _List_Cons_UNUSED(hd, tl) { return { $: '::', a: hd, b: tl }; }
 
 
 var _List_cons = F2(_List_Cons);
@@ -315,12 +315,12 @@ var _JsArray_appendN = F3(function(n, dest, source)
 
 // LOG
 
-var _Debug_log_UNUSED = F2(function(tag, value)
+var _Debug_log = F2(function(tag, value)
 {
 	return value;
 });
 
-var _Debug_log = F2(function(tag, value)
+var _Debug_log_UNUSED = F2(function(tag, value)
 {
 	console.log(tag + ': ' + _Debug_toString(value));
 	return value;
@@ -346,12 +346,12 @@ function _Debug_todoCase(moduleName, region, value)
 
 // TO STRING
 
-function _Debug_toString_UNUSED(value)
+function _Debug_toString(value)
 {
 	return '<internals>';
 }
 
-function _Debug_toString(value)
+function _Debug_toString_UNUSED(value)
 {
 	return _Debug_toAnsiString(false, value);
 }
@@ -536,13 +536,13 @@ function _Debug_toHexDigit(n)
 // CRASH
 
 
-function _Debug_crash_UNUSED(identifier)
+function _Debug_crash(identifier)
 {
 	throw new Error('https://github.com/elm/core/blob/1.0.0/hints/' + identifier + '.md');
 }
 
 
-function _Debug_crash(identifier, fact1, fact2, fact3, fact4)
+function _Debug_crash_UNUSED(identifier, fact1, fact2, fact3, fact4)
 {
 	switch(identifier)
 	{
@@ -600,11 +600,11 @@ function _Debug_crash(identifier, fact1, fact2, fact3, fact4)
 
 function _Debug_regionToString(region)
 {
-	if (region.start.line === region.end.line)
+	if (region.X.aw === region.ah.aw)
 	{
-		return 'on line ' + region.start.line;
+		return 'on line ' + region.X.aw;
 	}
-	return 'on lines ' + region.start.line + ' through ' + region.end.line;
+	return 'on lines ' + region.X.aw + ' through ' + region.ah.aw;
 }
 
 
@@ -642,7 +642,7 @@ function _Utils_eqHelp(x, y, depth, stack)
 		return false;
 	}
 
-	/**/
+	/**_UNUSED/
 	if (x.$ === 'Set_elm_builtin')
 	{
 		x = $elm$core$Set$toList(x);
@@ -655,7 +655,7 @@ function _Utils_eqHelp(x, y, depth, stack)
 	}
 	//*/
 
-	/**_UNUSED/
+	/**/
 	if (x.$ < 0)
 	{
 		x = $elm$core$Dict$toList(x);
@@ -690,7 +690,7 @@ function _Utils_cmp(x, y, ord)
 		return x === y ? /*EQ*/ 0 : x < y ? /*LT*/ -1 : /*GT*/ 1;
 	}
 
-	/**/
+	/**_UNUSED/
 	if (x instanceof String)
 	{
 		var a = x.valueOf();
@@ -699,10 +699,10 @@ function _Utils_cmp(x, y, ord)
 	}
 	//*/
 
-	/**_UNUSED/
+	/**/
 	if (typeof x.$ === 'undefined')
 	//*/
-	/**/
+	/**_UNUSED/
 	if (x.$[0] === '#')
 	//*/
 	{
@@ -732,17 +732,17 @@ var _Utils_compare = F2(function(x, y)
 
 // COMMON VALUES
 
-var _Utils_Tuple0_UNUSED = 0;
-var _Utils_Tuple0 = { $: '#0' };
+var _Utils_Tuple0 = 0;
+var _Utils_Tuple0_UNUSED = { $: '#0' };
 
-function _Utils_Tuple2_UNUSED(a, b) { return { a: a, b: b }; }
-function _Utils_Tuple2(a, b) { return { $: '#2', a: a, b: b }; }
+function _Utils_Tuple2(a, b) { return { a: a, b: b }; }
+function _Utils_Tuple2_UNUSED(a, b) { return { $: '#2', a: a, b: b }; }
 
-function _Utils_Tuple3_UNUSED(a, b, c) { return { a: a, b: b, c: c }; }
-function _Utils_Tuple3(a, b, c) { return { $: '#3', a: a, b: b, c: c }; }
+function _Utils_Tuple3(a, b, c) { return { a: a, b: b, c: c }; }
+function _Utils_Tuple3_UNUSED(a, b, c) { return { $: '#3', a: a, b: b, c: c }; }
 
-function _Utils_chr_UNUSED(c) { return c; }
-function _Utils_chr(c) { return new String(c); }
+function _Utils_chr(c) { return c; }
+function _Utils_chr_UNUSED(c) { return new String(c); }
 
 
 // RECORDS
@@ -1212,7 +1212,7 @@ function _Char_toLocaleLower(char)
 
 
 
-/**/
+/**_UNUSED/
 function _Json_errorToString(error)
 {
 	return $elm$json$Json$Decode$errorToString(error);
@@ -1616,11 +1616,11 @@ var _Json_encode = F2(function(indentLevel, value)
 	return JSON.stringify(_Json_unwrap(value), null, indentLevel) + '';
 });
 
-function _Json_wrap(value) { return { $: 0, a: value }; }
-function _Json_unwrap(value) { return value.a; }
+function _Json_wrap_UNUSED(value) { return { $: 0, a: value }; }
+function _Json_unwrap_UNUSED(value) { return value.a; }
 
-function _Json_wrap_UNUSED(value) { return value; }
-function _Json_unwrap_UNUSED(value) { return value; }
+function _Json_wrap(value) { return value; }
+function _Json_unwrap(value) { return value; }
 
 function _Json_emptyArray() { return []; }
 function _Json_emptyObject() { return {}; }
@@ -1857,9 +1857,9 @@ var _Platform_worker = F4(function(impl, flagDecoder, debugMetadata, args)
 	return _Platform_initialize(
 		flagDecoder,
 		args,
-		impl.init,
-		impl.update,
-		impl.subscriptions,
+		impl.bj,
+		impl.bK,
+		impl.bG,
 		function() { return function() {} }
 	);
 });
@@ -1872,7 +1872,7 @@ var _Platform_worker = F4(function(impl, flagDecoder, debugMetadata, args)
 function _Platform_initialize(flagDecoder, args, init, update, subscriptions, stepperBuilder)
 {
 	var result = A2(_Json_run, flagDecoder, _Json_wrap(args ? args['flags'] : undefined));
-	$elm$core$Result$isOk(result) || _Debug_crash(2 /**/, _Json_errorToString(result.a) /**/);
+	$elm$core$Result$isOk(result) || _Debug_crash(2 /**_UNUSED/, _Json_errorToString(result.a) /**/);
 	var managers = {};
 	result = init(result.a);
 	var model = result.a;
@@ -2271,7 +2271,7 @@ function _Platform_setupIncomingPort(name, sendToApp)
 //
 
 
-function _Platform_export_UNUSED(exports)
+function _Platform_export(exports)
 {
 	scope['Elm']
 		? _Platform_mergeExportsProd(scope['Elm'], exports)
@@ -2292,7 +2292,7 @@ function _Platform_mergeExportsProd(obj, exports)
 }
 
 
-function _Platform_export(exports)
+function _Platform_export_UNUSED(exports)
 {
 	scope['Elm']
 		? _Platform_mergeExportsDebug('Elm', scope['Elm'], exports)
@@ -2332,10 +2332,10 @@ var _VirtualDom_init = F4(function(virtualNode, flagDecoder, debugMetadata, args
 {
 	// NOTE: this function needs _Platform_export available to work
 
-	/**_UNUSED/
+	/**/
 	var node = args['node'];
 	//*/
-	/**/
+	/**_UNUSED/
 	var node = args && args['node'] ? args['node'] : _Debug_crash(0);
 	//*/
 
@@ -2590,24 +2590,24 @@ function _VirtualDom_noInnerHtmlOrFormAction(key)
 	return key == 'innerHTML' || key == 'formAction' ? 'data-' + key : key;
 }
 
-function _VirtualDom_noJavaScriptUri_UNUSED(value)
+function _VirtualDom_noJavaScriptUri(value)
 {
 	return /^javascript:/i.test(value.replace(/\s/g,'')) ? '' : value;
 }
 
-function _VirtualDom_noJavaScriptUri(value)
+function _VirtualDom_noJavaScriptUri_UNUSED(value)
 {
 	return /^javascript:/i.test(value.replace(/\s/g,''))
 		? 'javascript:alert("This is an XSS vector. Please use ports or web components instead.")'
 		: value;
 }
 
-function _VirtualDom_noJavaScriptOrHtmlUri_UNUSED(value)
+function _VirtualDom_noJavaScriptOrHtmlUri(value)
 {
 	return /^\s*(javascript:|data:text\/html)/i.test(value) ? '' : value;
 }
 
-function _VirtualDom_noJavaScriptOrHtmlUri(value)
+function _VirtualDom_noJavaScriptOrHtmlUri_UNUSED(value)
 {
 	return /^\s*(javascript:|data:text\/html)/i.test(value)
 		? 'javascript:alert("This is an XSS vector. Please use ports or web components instead.")'
@@ -2659,9 +2659,9 @@ var _VirtualDom_mapEventTuple = F2(function(func, tuple)
 var _VirtualDom_mapEventRecord = F2(function(func, record)
 {
 	return {
-		message: func(record.message),
-		stopPropagation: record.stopPropagation,
-		preventDefault: record.preventDefault
+		p: func(record.p),
+		Y: record.Y,
+		V: record.V
 	}
 });
 
@@ -2929,11 +2929,11 @@ function _VirtualDom_makeCallback(eventNode, initialHandler)
 		// 3 = Custom
 
 		var value = result.a;
-		var message = !tag ? value : tag < 3 ? value.a : value.message;
-		var stopPropagation = tag == 1 ? value.b : tag == 3 && value.stopPropagation;
+		var message = !tag ? value : tag < 3 ? value.a : value.p;
+		var stopPropagation = tag == 1 ? value.b : tag == 3 && value.Y;
 		var currentEventNode = (
 			stopPropagation && event.stopPropagation(),
-			(tag == 2 ? value.b : tag == 3 && value.preventDefault) && event.preventDefault(),
+			(tag == 2 ? value.b : tag == 3 && value.V) && event.preventDefault(),
 			eventNode
 		);
 		var tagger;
@@ -3883,15 +3883,15 @@ var _Browser_element = _Debugger_element || F4(function(impl, flagDecoder, debug
 	return _Platform_initialize(
 		flagDecoder,
 		args,
-		impl.init,
-		impl.update,
-		impl.subscriptions,
+		impl.bj,
+		impl.bK,
+		impl.bG,
 		function(sendToApp, initialModel) {
-			var view = impl.view;
-			/**_UNUSED/
+			var view = impl.bN;
+			/**/
 			var domNode = args['node'];
 			//*/
-			/**/
+			/**_UNUSED/
 			var domNode = args && args['node'] ? args['node'] : _Debug_crash(0);
 			//*/
 			var currNode = _VirtualDom_virtualize(domNode);
@@ -3919,12 +3919,12 @@ var _Browser_document = _Debugger_document || F4(function(impl, flagDecoder, deb
 	return _Platform_initialize(
 		flagDecoder,
 		args,
-		impl.init,
-		impl.update,
-		impl.subscriptions,
+		impl.bj,
+		impl.bK,
+		impl.bG,
 		function(sendToApp, initialModel) {
-			var divertHrefToApp = impl.setup && impl.setup(sendToApp)
-			var view = impl.view;
+			var divertHrefToApp = impl.W && impl.W(sendToApp)
+			var view = impl.bN;
 			var title = _VirtualDom_doc.title;
 			var bodyNode = _VirtualDom_doc.body;
 			var currNode = _VirtualDom_virtualize(bodyNode);
@@ -3932,12 +3932,12 @@ var _Browser_document = _Debugger_document || F4(function(impl, flagDecoder, deb
 			{
 				_VirtualDom_divertHrefToApp = divertHrefToApp;
 				var doc = view(model);
-				var nextNode = _VirtualDom_node('body')(_List_Nil)(doc.body);
+				var nextNode = _VirtualDom_node('body')(_List_Nil)(doc.a3);
 				var patches = _VirtualDom_diff(currNode, nextNode);
 				bodyNode = _VirtualDom_applyPatches(bodyNode, currNode, patches, sendToApp);
 				currNode = nextNode;
 				_VirtualDom_divertHrefToApp = 0;
-				(title !== doc.title) && (_VirtualDom_doc.title = title = doc.title);
+				(title !== doc.bJ) && (_VirtualDom_doc.title = title = doc.bJ);
 			});
 		}
 	);
@@ -3993,12 +3993,12 @@ function _Browser_makeAnimator(model, draw)
 
 function _Browser_application(impl)
 {
-	var onUrlChange = impl.onUrlChange;
-	var onUrlRequest = impl.onUrlRequest;
+	var onUrlChange = impl.bp;
+	var onUrlRequest = impl.bq;
 	var key = function() { key.a(onUrlChange(_Browser_getUrl())); };
 
 	return _Browser_document({
-		setup: function(sendToApp)
+		W: function(sendToApp)
 		{
 			key.a = sendToApp;
 			_Browser_window.addEventListener('popstate', key);
@@ -4014,9 +4014,9 @@ function _Browser_application(impl)
 					var next = $elm$url$Url$fromString(href).a;
 					sendToApp(onUrlRequest(
 						(next
-							&& curr.protocol === next.protocol
-							&& curr.host === next.host
-							&& curr.port_.a === next.port_.a
+							&& curr.aG === next.aG
+							&& curr.ao === next.ao
+							&& curr.aC.a === next.aC.a
 						)
 							? $elm$browser$Browser$Internal(next)
 							: $elm$browser$Browser$External(href)
@@ -4024,13 +4024,13 @@ function _Browser_application(impl)
 				}
 			});
 		},
-		init: function(flags)
+		bj: function(flags)
 		{
-			return A3(impl.init, flags, _Browser_getUrl(), key);
+			return A3(impl.bj, flags, _Browser_getUrl(), key);
 		},
-		view: impl.view,
-		update: impl.update,
-		subscriptions: impl.subscriptions
+		bN: impl.bN,
+		bK: impl.bK,
+		bG: impl.bG
 	});
 }
 
@@ -4096,17 +4096,17 @@ var _Browser_decodeEvent = F2(function(decoder, event)
 function _Browser_visibilityInfo()
 {
 	return (typeof _VirtualDom_doc.hidden !== 'undefined')
-		? { hidden: 'hidden', change: 'visibilitychange' }
+		? { bf: 'hidden', a4: 'visibilitychange' }
 		:
 	(typeof _VirtualDom_doc.mozHidden !== 'undefined')
-		? { hidden: 'mozHidden', change: 'mozvisibilitychange' }
+		? { bf: 'mozHidden', a4: 'mozvisibilitychange' }
 		:
 	(typeof _VirtualDom_doc.msHidden !== 'undefined')
-		? { hidden: 'msHidden', change: 'msvisibilitychange' }
+		? { bf: 'msHidden', a4: 'msvisibilitychange' }
 		:
 	(typeof _VirtualDom_doc.webkitHidden !== 'undefined')
-		? { hidden: 'webkitHidden', change: 'webkitvisibilitychange' }
-		: { hidden: 'hidden', change: 'visibilitychange' };
+		? { bf: 'webkitHidden', a4: 'webkitvisibilitychange' }
+		: { bf: 'hidden', a4: 'visibilitychange' };
 }
 
 
@@ -4187,12 +4187,12 @@ var _Browser_call = F2(function(functionName, id)
 function _Browser_getViewport()
 {
 	return {
-		scene: _Browser_getScene(),
-		viewport: {
-			x: _Browser_window.pageXOffset,
-			y: _Browser_window.pageYOffset,
-			width: _Browser_doc.documentElement.clientWidth,
-			height: _Browser_doc.documentElement.clientHeight
+		aO: _Browser_getScene(),
+		aZ: {
+			O: _Browser_window.pageXOffset,
+			P: _Browser_window.pageYOffset,
+			F: _Browser_doc.documentElement.clientWidth,
+			y: _Browser_doc.documentElement.clientHeight
 		}
 	};
 }
@@ -4202,8 +4202,8 @@ function _Browser_getScene()
 	var body = _Browser_doc.body;
 	var elem = _Browser_doc.documentElement;
 	return {
-		width: Math.max(body.scrollWidth, body.offsetWidth, elem.scrollWidth, elem.offsetWidth, elem.clientWidth),
-		height: Math.max(body.scrollHeight, body.offsetHeight, elem.scrollHeight, elem.offsetHeight, elem.clientHeight)
+		F: Math.max(body.scrollWidth, body.offsetWidth, elem.scrollWidth, elem.offsetWidth, elem.clientWidth),
+		y: Math.max(body.scrollHeight, body.offsetHeight, elem.scrollHeight, elem.offsetHeight, elem.clientHeight)
 	};
 }
 
@@ -4226,15 +4226,15 @@ function _Browser_getViewportOf(id)
 	return _Browser_withNode(id, function(node)
 	{
 		return {
-			scene: {
-				width: node.scrollWidth,
-				height: node.scrollHeight
+			aO: {
+				F: node.scrollWidth,
+				y: node.scrollHeight
 			},
-			viewport: {
-				x: node.scrollLeft,
-				y: node.scrollTop,
-				width: node.clientWidth,
-				height: node.clientHeight
+			aZ: {
+				O: node.scrollLeft,
+				P: node.scrollTop,
+				F: node.clientWidth,
+				y: node.clientHeight
 			}
 		};
 	});
@@ -4264,18 +4264,18 @@ function _Browser_getElement(id)
 		var x = _Browser_window.pageXOffset;
 		var y = _Browser_window.pageYOffset;
 		return {
-			scene: _Browser_getScene(),
-			viewport: {
-				x: x,
-				y: y,
-				width: _Browser_doc.documentElement.clientWidth,
-				height: _Browser_doc.documentElement.clientHeight
+			aO: _Browser_getScene(),
+			aZ: {
+				O: x,
+				P: y,
+				F: _Browser_doc.documentElement.clientWidth,
+				y: _Browser_doc.documentElement.clientHeight
 			},
-			element: {
-				x: x + rect.left,
-				y: y + rect.top,
-				width: rect.width,
-				height: rect.height
+			bb: {
+				O: x + rect.left,
+				P: y + rect.top,
+				F: rect.width,
+				y: rect.height
 			}
 		};
 	});
@@ -4319,8 +4319,8 @@ var _Regex_never = /.^/;
 var _Regex_fromStringWith = F2(function(options, string)
 {
 	var flags = 'g';
-	if (options.multiline) { flags += 'm'; }
-	if (options.caseInsensitive) { flags += 'i'; }
+	if (options.ay) { flags += 'm'; }
+	if (options.aa) { flags += 'i'; }
 
 	try
 	{
@@ -4421,25 +4421,25 @@ var _Http_toTask = F3(function(router, toTask, request)
 	return _Scheduler_binding(function(callback)
 	{
 		function done(response) {
-			callback(toTask(request.expect.a(response)));
+			callback(toTask(request.bc.a(response)));
 		}
 
 		var xhr = new XMLHttpRequest();
 		xhr.addEventListener('error', function() { done($elm$http$Http$NetworkError_); });
 		xhr.addEventListener('timeout', function() { done($elm$http$Http$Timeout_); });
-		xhr.addEventListener('load', function() { done(_Http_toResponse(request.expect.b, xhr)); });
-		$elm$core$Maybe$isJust(request.tracker) && _Http_track(router, xhr, request.tracker.a);
+		xhr.addEventListener('load', function() { done(_Http_toResponse(request.bc.b, xhr)); });
+		$elm$core$Maybe$isJust(request.aX) && _Http_track(router, xhr, request.aX.a);
 
 		try {
-			xhr.open(request.method, request.url, true);
+			xhr.open(request.bm, request.bM, true);
 		} catch (e) {
-			return done($elm$http$Http$BadUrl_(request.url));
+			return done($elm$http$Http$BadUrl_(request.bM));
 		}
 
 		_Http_configureRequest(xhr, request);
 
-		request.body.a && xhr.setRequestHeader('Content-Type', request.body.a);
-		xhr.send(request.body.b);
+		request.a3.a && xhr.setRequestHeader('Content-Type', request.a3.a);
+		xhr.send(request.a3.b);
 
 		return function() { xhr.c = true; xhr.abort(); };
 	});
@@ -4450,13 +4450,13 @@ var _Http_toTask = F3(function(router, toTask, request)
 
 function _Http_configureRequest(xhr, request)
 {
-	for (var headers = request.headers; headers.b; headers = headers.b) // WHILE_CONS
+	for (var headers = request.am; headers.b; headers = headers.b) // WHILE_CONS
 	{
 		xhr.setRequestHeader(headers.a.a, headers.a.b);
 	}
-	xhr.timeout = request.timeout.a || 0;
-	xhr.responseType = request.expect.d;
-	xhr.withCredentials = request.allowCookiesFromOtherDomains;
+	xhr.timeout = request.bI.a || 0;
+	xhr.responseType = request.bc.d;
+	xhr.withCredentials = request.a1;
 }
 
 
@@ -4477,10 +4477,10 @@ function _Http_toResponse(toBody, xhr)
 function _Http_toMetadata(xhr)
 {
 	return {
-		url: xhr.responseURL,
-		statusCode: xhr.status,
-		statusText: xhr.statusText,
-		headers: _Http_parseHeaders(xhr.getAllResponseHeaders())
+		bM: xhr.responseURL,
+		bx: xhr.status,
+		by: xhr.statusText,
+		am: _Http_parseHeaders(xhr.getAllResponseHeaders())
 	};
 }
 
@@ -4575,15 +4575,15 @@ function _Http_track(router, xhr, tracker)
 	xhr.upload.addEventListener('progress', function(event) {
 		if (xhr.c) { return; }
 		_Scheduler_rawSpawn(A2($elm$core$Platform$sendToSelf, router, _Utils_Tuple2(tracker, $elm$http$Http$Sending({
-			sent: event.loaded,
-			size: event.total
+			bw: event.loaded,
+			aQ: event.total
 		}))));
 	});
 	xhr.addEventListener('progress', function(event) {
 		if (xhr.c) { return; }
 		_Scheduler_rawSpawn(A2($elm$core$Platform$sendToSelf, router, _Utils_Tuple2(tracker, $elm$http$Http$Receiving({
-			received: event.loaded,
-			size: event.lengthComputable ? $elm$core$Maybe$Just(event.total) : $elm$core$Maybe$Nothing
+			bs: event.loaded,
+			aQ: event.lengthComputable ? $elm$core$Maybe$Just(event.total) : $elm$core$Maybe$Nothing
 		}))));
 	});
 }
@@ -4894,8 +4894,8 @@ var _Parser_findSubString = F5(function(smallString, offset, row, col, bigString
 
 	return _Utils_Tuple3(newOffset, row, col);
 });
-var $elm$core$Basics$EQ = {$: 'EQ'};
-var $elm$core$Basics$LT = {$: 'LT'};
+var $elm$core$Basics$EQ = 1;
+var $elm$core$Basics$LT = 0;
 var $elm$core$List$cons = _List_cons;
 var $elm$core$Elm$JsArray$foldr = _JsArray_foldr;
 var $elm$core$Array$foldr = F3(
@@ -4904,7 +4904,7 @@ var $elm$core$Array$foldr = F3(
 		var tail = _v0.d;
 		var helper = F2(
 			function (node, acc) {
-				if (node.$ === 'SubTree') {
+				if (!node.$) {
 					var subTree = node.a;
 					return A3($elm$core$Elm$JsArray$foldr, helper, acc, subTree);
 				} else {
@@ -4925,7 +4925,7 @@ var $elm$core$Dict$foldr = F3(
 	function (func, acc, t) {
 		foldr:
 		while (true) {
-			if (t.$ === 'RBEmpty_elm_builtin') {
+			if (t.$ === -2) {
 				return acc;
 			} else {
 				var key = t.b;
@@ -4970,37 +4970,37 @@ var $elm$core$Dict$keys = function (dict) {
 		dict);
 };
 var $elm$core$Set$toList = function (_v0) {
-	var dict = _v0.a;
+	var dict = _v0;
 	return $elm$core$Dict$keys(dict);
 };
-var $elm$core$Basics$GT = {$: 'GT'};
+var $elm$core$Basics$GT = 2;
 var $elm$core$Result$Err = function (a) {
-	return {$: 'Err', a: a};
+	return {$: 1, a: a};
 };
 var $elm$json$Json$Decode$Failure = F2(
 	function (a, b) {
-		return {$: 'Failure', a: a, b: b};
+		return {$: 3, a: a, b: b};
 	});
 var $elm$json$Json$Decode$Field = F2(
 	function (a, b) {
-		return {$: 'Field', a: a, b: b};
+		return {$: 0, a: a, b: b};
 	});
 var $elm$json$Json$Decode$Index = F2(
 	function (a, b) {
-		return {$: 'Index', a: a, b: b};
+		return {$: 1, a: a, b: b};
 	});
 var $elm$core$Result$Ok = function (a) {
-	return {$: 'Ok', a: a};
+	return {$: 0, a: a};
 };
 var $elm$json$Json$Decode$OneOf = function (a) {
-	return {$: 'OneOf', a: a};
+	return {$: 2, a: a};
 };
-var $elm$core$Basics$False = {$: 'False'};
+var $elm$core$Basics$False = 1;
 var $elm$core$Basics$add = _Basics_add;
 var $elm$core$Maybe$Just = function (a) {
-	return {$: 'Just', a: a};
+	return {$: 0, a: a};
 };
-var $elm$core$Maybe$Nothing = {$: 'Nothing'};
+var $elm$core$Maybe$Nothing = {$: 1};
 var $elm$core$String$all = _String_all;
 var $elm$core$Basics$and = _Basics_and;
 var $elm$core$Basics$append = _Utils_append;
@@ -5125,12 +5125,12 @@ var $elm$json$Json$Decode$errorToStringHelp = F2(
 		errorToStringHelp:
 		while (true) {
 			switch (error.$) {
-				case 'Field':
+				case 0:
 					var f = error.a;
 					var err = error.b;
 					var isSimple = function () {
 						var _v1 = $elm$core$String$uncons(f);
-						if (_v1.$ === 'Nothing') {
+						if (_v1.$ === 1) {
 							return false;
 						} else {
 							var _v2 = _v1.a;
@@ -5145,7 +5145,7 @@ var $elm$json$Json$Decode$errorToStringHelp = F2(
 					error = $temp$error;
 					context = $temp$context;
 					continue errorToStringHelp;
-				case 'Index':
+				case 1:
 					var i = error.a;
 					var err = error.b;
 					var indexName = '[' + ($elm$core$String$fromInt(i) + ']');
@@ -5154,7 +5154,7 @@ var $elm$json$Json$Decode$errorToStringHelp = F2(
 					error = $temp$error;
 					context = $temp$context;
 					continue errorToStringHelp;
-				case 'OneOf':
+				case 2:
 					var errors = error.a;
 					if (!errors.b) {
 						return 'Ran into a Json.Decode.oneOf with no possibilities' + function () {
@@ -5218,7 +5218,7 @@ var $elm$json$Json$Decode$errorToStringHelp = F2(
 var $elm$core$Array$branchFactor = 32;
 var $elm$core$Array$Array_elm_builtin = F4(
 	function (a, b, c, d) {
-		return {$: 'Array_elm_builtin', a: a, b: b, c: c, d: d};
+		return {$: 0, a: a, b: b, c: c, d: d};
 	});
 var $elm$core$Elm$JsArray$empty = _JsArray_empty;
 var $elm$core$Basics$ceiling = _Basics_ceiling;
@@ -5233,7 +5233,7 @@ var $elm$core$Array$shiftStep = $elm$core$Basics$ceiling(
 var $elm$core$Array$empty = A4($elm$core$Array$Array_elm_builtin, 0, $elm$core$Array$shiftStep, $elm$core$Elm$JsArray$empty, $elm$core$Elm$JsArray$empty);
 var $elm$core$Elm$JsArray$initialize = _JsArray_initialize;
 var $elm$core$Array$Leaf = function (a) {
-	return {$: 'Leaf', a: a};
+	return {$: 1, a: a};
 };
 var $elm$core$Basics$apL = F2(
 	function (f, x) {
@@ -5253,7 +5253,7 @@ var $elm$core$Basics$max = F2(
 	});
 var $elm$core$Basics$mul = _Basics_mul;
 var $elm$core$Array$SubTree = function (a) {
-	return {$: 'SubTree', a: a};
+	return {$: 0, a: a};
 };
 var $elm$core$Elm$JsArray$initializeFromList = _JsArray_initializeFromList;
 var $elm$core$Array$compressNodes = F2(
@@ -5300,25 +5300,25 @@ var $elm$core$Array$treeFromBuilder = F2(
 	});
 var $elm$core$Array$builderToArray = F2(
 	function (reverseNodeList, builder) {
-		if (!builder.nodeListSize) {
+		if (!builder.e) {
 			return A4(
 				$elm$core$Array$Array_elm_builtin,
-				$elm$core$Elm$JsArray$length(builder.tail),
+				$elm$core$Elm$JsArray$length(builder.g),
 				$elm$core$Array$shiftStep,
 				$elm$core$Elm$JsArray$empty,
-				builder.tail);
+				builder.g);
 		} else {
-			var treeLen = builder.nodeListSize * $elm$core$Array$branchFactor;
+			var treeLen = builder.e * $elm$core$Array$branchFactor;
 			var depth = $elm$core$Basics$floor(
 				A2($elm$core$Basics$logBase, $elm$core$Array$branchFactor, treeLen - 1));
-			var correctNodeList = reverseNodeList ? $elm$core$List$reverse(builder.nodeList) : builder.nodeList;
-			var tree = A2($elm$core$Array$treeFromBuilder, correctNodeList, builder.nodeListSize);
+			var correctNodeList = reverseNodeList ? $elm$core$List$reverse(builder.h) : builder.h;
+			var tree = A2($elm$core$Array$treeFromBuilder, correctNodeList, builder.e);
 			return A4(
 				$elm$core$Array$Array_elm_builtin,
-				$elm$core$Elm$JsArray$length(builder.tail) + treeLen,
+				$elm$core$Elm$JsArray$length(builder.g) + treeLen,
 				A2($elm$core$Basics$max, 5, depth * $elm$core$Array$shiftStep),
 				tree,
-				builder.tail);
+				builder.g);
 		}
 	});
 var $elm$core$Basics$idiv = _Basics_idiv;
@@ -5331,7 +5331,7 @@ var $elm$core$Array$initializeHelp = F5(
 				return A2(
 					$elm$core$Array$builderToArray,
 					false,
-					{nodeList: nodeList, nodeListSize: (len / $elm$core$Array$branchFactor) | 0, tail: tail});
+					{h: nodeList, e: (len / $elm$core$Array$branchFactor) | 0, g: tail});
 			} else {
 				var leaf = $elm$core$Array$Leaf(
 					A3($elm$core$Elm$JsArray$initialize, $elm$core$Array$branchFactor, fromIndex, fn));
@@ -5361,9 +5361,9 @@ var $elm$core$Array$initialize = F2(
 			return A5($elm$core$Array$initializeHelp, fn, initialFromIndex, len, _List_Nil, tail);
 		}
 	});
-var $elm$core$Basics$True = {$: 'True'};
+var $elm$core$Basics$True = 0;
 var $elm$core$Result$isOk = function (result) {
-	if (result.$ === 'Ok') {
+	if (!result.$) {
 		return true;
 	} else {
 		return false;
@@ -5374,33 +5374,31 @@ var $elm$json$Json$Decode$map2 = _Json_map2;
 var $elm$json$Json$Decode$succeed = _Json_succeed;
 var $elm$virtual_dom$VirtualDom$toHandlerInt = function (handler) {
 	switch (handler.$) {
-		case 'Normal':
+		case 0:
 			return 0;
-		case 'MayStopPropagation':
+		case 1:
 			return 1;
-		case 'MayPreventDefault':
+		case 2:
 			return 2;
 		default:
 			return 3;
 	}
 };
 var $elm$browser$Browser$External = function (a) {
-	return {$: 'External', a: a};
+	return {$: 1, a: a};
 };
 var $elm$browser$Browser$Internal = function (a) {
-	return {$: 'Internal', a: a};
+	return {$: 0, a: a};
 };
 var $elm$core$Basics$identity = function (x) {
 	return x;
 };
-var $elm$browser$Browser$Dom$NotFound = function (a) {
-	return {$: 'NotFound', a: a};
-};
-var $elm$url$Url$Http = {$: 'Http'};
-var $elm$url$Url$Https = {$: 'Https'};
+var $elm$browser$Browser$Dom$NotFound = $elm$core$Basics$identity;
+var $elm$url$Url$Http = 0;
+var $elm$url$Url$Https = 1;
 var $elm$url$Url$Url = F6(
 	function (protocol, host, port_, path, query, fragment) {
-		return {fragment: fragment, host: host, path: path, port_: port_, protocol: protocol, query: query};
+		return {al: fragment, ao: host, aA: path, aC: port_, aG: protocol, aH: query};
 	});
 var $elm$core$String$contains = _String_contains;
 var $elm$core$String$length = _String_length;
@@ -5436,7 +5434,7 @@ var $elm$url$Url$chompBeforePath = F5(
 					var i = _v0.a;
 					var _v1 = $elm$core$String$toInt(
 						A2($elm$core$String$dropLeft, i + 1, str));
-					if (_v1.$ === 'Nothing') {
+					if (_v1.$ === 1) {
 						return $elm$core$Maybe$Nothing;
 					} else {
 						var port_ = _v1;
@@ -5519,26 +5517,24 @@ var $elm$core$String$startsWith = _String_startsWith;
 var $elm$url$Url$fromString = function (str) {
 	return A2($elm$core$String$startsWith, 'http://', str) ? A2(
 		$elm$url$Url$chompAfterProtocol,
-		$elm$url$Url$Http,
+		0,
 		A2($elm$core$String$dropLeft, 7, str)) : (A2($elm$core$String$startsWith, 'https://', str) ? A2(
 		$elm$url$Url$chompAfterProtocol,
-		$elm$url$Url$Https,
+		1,
 		A2($elm$core$String$dropLeft, 8, str)) : $elm$core$Maybe$Nothing);
 };
 var $elm$core$Basics$never = function (_v0) {
 	never:
 	while (true) {
-		var nvr = _v0.a;
+		var nvr = _v0;
 		var $temp$_v0 = nvr;
 		_v0 = $temp$_v0;
 		continue never;
 	}
 };
-var $elm$core$Task$Perform = function (a) {
-	return {$: 'Perform', a: a};
-};
+var $elm$core$Task$Perform = $elm$core$Basics$identity;
 var $elm$core$Task$succeed = _Scheduler_succeed;
-var $elm$core$Task$init = $elm$core$Task$succeed(_Utils_Tuple0);
+var $elm$core$Task$init = $elm$core$Task$succeed(0);
 var $elm$core$List$foldrHelper = F4(
 	function (fn, acc, ctr, ls) {
 		if (!ls.b) {
@@ -5644,7 +5640,7 @@ var $elm$core$Task$sequence = function (tasks) {
 var $elm$core$Platform$sendToApp = _Platform_sendToApp;
 var $elm$core$Task$spawnCmd = F2(
 	function (router, _v0) {
-		var task = _v0.a;
+		var task = _v0;
 		return _Scheduler_spawn(
 			A2(
 				$elm$core$Task$andThen,
@@ -5656,7 +5652,7 @@ var $elm$core$Task$onEffects = F3(
 		return A2(
 			$elm$core$Task$map,
 			function (_v0) {
-				return _Utils_Tuple0;
+				return 0;
 			},
 			$elm$core$Task$sequence(
 				A2(
@@ -5666,42 +5662,40 @@ var $elm$core$Task$onEffects = F3(
 	});
 var $elm$core$Task$onSelfMsg = F3(
 	function (_v0, _v1, _v2) {
-		return $elm$core$Task$succeed(_Utils_Tuple0);
+		return $elm$core$Task$succeed(0);
 	});
 var $elm$core$Task$cmdMap = F2(
 	function (tagger, _v0) {
-		var task = _v0.a;
-		return $elm$core$Task$Perform(
-			A2($elm$core$Task$map, tagger, task));
+		var task = _v0;
+		return A2($elm$core$Task$map, tagger, task);
 	});
 _Platform_effectManagers['Task'] = _Platform_createManager($elm$core$Task$init, $elm$core$Task$onEffects, $elm$core$Task$onSelfMsg, $elm$core$Task$cmdMap);
 var $elm$core$Task$command = _Platform_leaf('Task');
 var $elm$core$Task$perform = F2(
 	function (toMessage, task) {
 		return $elm$core$Task$command(
-			$elm$core$Task$Perform(
-				A2($elm$core$Task$map, toMessage, task)));
+			A2($elm$core$Task$map, toMessage, task));
 	});
 var $elm$browser$Browser$document = _Browser_document;
-var $author$project$Types$Light = {$: 'Light'};
-var $author$project$Types$Loading = {$: 'Loading'};
-var $author$project$Types$Valid = {$: 'Valid'};
+var $author$project$Types$Light = 0;
+var $author$project$Types$Loading = 0;
+var $author$project$Types$Valid = 0;
 var $author$project$Main$emptySvg = '<svg> . . . </svg>';
 var $elm$regex$Regex$Match = F4(
 	function (match, index, number, submatches) {
-		return {index: index, match: match, number: number, submatches: submatches};
+		return {bi: index, bl: match, bo: number, aU: submatches};
 	});
 var $elm$regex$Regex$fromStringWith = _Regex_fromStringWith;
 var $elm$regex$Regex$fromString = function (string) {
 	return A2(
 		$elm$regex$Regex$fromStringWith,
-		{caseInsensitive: false, multiline: false},
+		{aa: false, ay: false},
 		string);
 };
 var $elm$regex$Regex$never = _Regex_never;
 var $elm$core$Maybe$withDefault = F2(
 	function (_default, maybe) {
-		if (maybe.$ === 'Just') {
+		if (!maybe.$) {
 			var value = maybe.a;
 			return value;
 		} else {
@@ -5709,43 +5703,43 @@ var $elm$core$Maybe$withDefault = F2(
 		}
 	});
 var $author$project$Main$init = {
-	editorScroll: _Utils_Tuple2(0, 0),
-	fileName: 'example.svg',
-	image: $author$project$Main$emptySvg,
-	load: $author$project$Types$Loading,
-	mode: $author$project$Types$Light,
-	status: $author$project$Types$Valid,
-	uriEncoder: A2(
+	ba: _Utils_Tuple2(0, 0),
+	Q: 'example.svg',
+	N: $author$project$Main$emptySvg,
+	R: 0,
+	T: 0,
+	aT: 0,
+	bL: A2(
 		$elm$core$Maybe$withDefault,
 		$elm$regex$Regex$never,
 		$elm$regex$Regex$fromString('!|#|\\$|%|&|\'|\\(|\\)|\\*|\\+|,|\\/|:|;|=|\\?|@|\\[|\\]'))
 };
 var $author$project$Types$Load = function (a) {
-	return {$: 'Load', a: a};
+	return {$: 1, a: a};
 };
 var $elm$http$Http$BadStatus_ = F2(
 	function (a, b) {
-		return {$: 'BadStatus_', a: a, b: b};
+		return {$: 3, a: a, b: b};
 	});
 var $elm$http$Http$BadUrl_ = function (a) {
-	return {$: 'BadUrl_', a: a};
+	return {$: 0, a: a};
 };
 var $elm$http$Http$GoodStatus_ = F2(
 	function (a, b) {
-		return {$: 'GoodStatus_', a: a, b: b};
+		return {$: 4, a: a, b: b};
 	});
-var $elm$http$Http$NetworkError_ = {$: 'NetworkError_'};
+var $elm$http$Http$NetworkError_ = {$: 2};
 var $elm$http$Http$Receiving = function (a) {
-	return {$: 'Receiving', a: a};
+	return {$: 1, a: a};
 };
 var $elm$http$Http$Sending = function (a) {
-	return {$: 'Sending', a: a};
+	return {$: 0, a: a};
 };
-var $elm$http$Http$Timeout_ = {$: 'Timeout_'};
-var $elm$core$Dict$RBEmpty_elm_builtin = {$: 'RBEmpty_elm_builtin'};
+var $elm$http$Http$Timeout_ = {$: 1};
+var $elm$core$Dict$RBEmpty_elm_builtin = {$: -2};
 var $elm$core$Dict$empty = $elm$core$Dict$RBEmpty_elm_builtin;
 var $elm$core$Maybe$isJust = function (maybe) {
-	if (maybe.$ === 'Just') {
+	if (!maybe.$) {
 		return true;
 	} else {
 		return false;
@@ -5757,7 +5751,7 @@ var $elm$core$Dict$get = F2(
 	function (targetKey, dict) {
 		get:
 		while (true) {
-			if (dict.$ === 'RBEmpty_elm_builtin') {
+			if (dict.$ === -2) {
 				return $elm$core$Maybe$Nothing;
 			} else {
 				var key = dict.b;
@@ -5765,14 +5759,14 @@ var $elm$core$Dict$get = F2(
 				var left = dict.d;
 				var right = dict.e;
 				var _v1 = A2($elm$core$Basics$compare, targetKey, key);
-				switch (_v1.$) {
-					case 'LT':
+				switch (_v1) {
+					case 0:
 						var $temp$targetKey = targetKey,
 							$temp$dict = left;
 						targetKey = $temp$targetKey;
 						dict = $temp$dict;
 						continue get;
-					case 'EQ':
+					case 1:
 						return $elm$core$Maybe$Just(value);
 					default:
 						var $temp$targetKey = targetKey,
@@ -5784,21 +5778,21 @@ var $elm$core$Dict$get = F2(
 			}
 		}
 	});
-var $elm$core$Dict$Black = {$: 'Black'};
+var $elm$core$Dict$Black = 1;
 var $elm$core$Dict$RBNode_elm_builtin = F5(
 	function (a, b, c, d, e) {
-		return {$: 'RBNode_elm_builtin', a: a, b: b, c: c, d: d, e: e};
+		return {$: -1, a: a, b: b, c: c, d: d, e: e};
 	});
-var $elm$core$Dict$Red = {$: 'Red'};
+var $elm$core$Dict$Red = 0;
 var $elm$core$Dict$balance = F5(
 	function (color, key, value, left, right) {
-		if ((right.$ === 'RBNode_elm_builtin') && (right.a.$ === 'Red')) {
+		if ((right.$ === -1) && (!right.a)) {
 			var _v1 = right.a;
 			var rK = right.b;
 			var rV = right.c;
 			var rLeft = right.d;
 			var rRight = right.e;
-			if ((left.$ === 'RBNode_elm_builtin') && (left.a.$ === 'Red')) {
+			if ((left.$ === -1) && (!left.a)) {
 				var _v3 = left.a;
 				var lK = left.b;
 				var lV = left.c;
@@ -5806,22 +5800,22 @@ var $elm$core$Dict$balance = F5(
 				var lRight = left.e;
 				return A5(
 					$elm$core$Dict$RBNode_elm_builtin,
-					$elm$core$Dict$Red,
+					0,
 					key,
 					value,
-					A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, lK, lV, lLeft, lRight),
-					A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, rK, rV, rLeft, rRight));
+					A5($elm$core$Dict$RBNode_elm_builtin, 1, lK, lV, lLeft, lRight),
+					A5($elm$core$Dict$RBNode_elm_builtin, 1, rK, rV, rLeft, rRight));
 			} else {
 				return A5(
 					$elm$core$Dict$RBNode_elm_builtin,
 					color,
 					rK,
 					rV,
-					A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, key, value, left, rLeft),
+					A5($elm$core$Dict$RBNode_elm_builtin, 0, key, value, left, rLeft),
 					rRight);
 			}
 		} else {
-			if ((((left.$ === 'RBNode_elm_builtin') && (left.a.$ === 'Red')) && (left.d.$ === 'RBNode_elm_builtin')) && (left.d.a.$ === 'Red')) {
+			if ((((left.$ === -1) && (!left.a)) && (left.d.$ === -1)) && (!left.d.a)) {
 				var _v5 = left.a;
 				var lK = left.b;
 				var lV = left.c;
@@ -5834,11 +5828,11 @@ var $elm$core$Dict$balance = F5(
 				var lRight = left.e;
 				return A5(
 					$elm$core$Dict$RBNode_elm_builtin,
-					$elm$core$Dict$Red,
+					0,
 					lK,
 					lV,
-					A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, llK, llV, llLeft, llRight),
-					A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, key, value, lRight, right));
+					A5($elm$core$Dict$RBNode_elm_builtin, 1, llK, llV, llLeft, llRight),
+					A5($elm$core$Dict$RBNode_elm_builtin, 1, key, value, lRight, right));
 			} else {
 				return A5($elm$core$Dict$RBNode_elm_builtin, color, key, value, left, right);
 			}
@@ -5846,8 +5840,8 @@ var $elm$core$Dict$balance = F5(
 	});
 var $elm$core$Dict$insertHelp = F3(
 	function (key, value, dict) {
-		if (dict.$ === 'RBEmpty_elm_builtin') {
-			return A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, key, value, $elm$core$Dict$RBEmpty_elm_builtin, $elm$core$Dict$RBEmpty_elm_builtin);
+		if (dict.$ === -2) {
+			return A5($elm$core$Dict$RBNode_elm_builtin, 0, key, value, $elm$core$Dict$RBEmpty_elm_builtin, $elm$core$Dict$RBEmpty_elm_builtin);
 		} else {
 			var nColor = dict.a;
 			var nKey = dict.b;
@@ -5855,8 +5849,8 @@ var $elm$core$Dict$insertHelp = F3(
 			var nLeft = dict.d;
 			var nRight = dict.e;
 			var _v1 = A2($elm$core$Basics$compare, key, nKey);
-			switch (_v1.$) {
-				case 'LT':
+			switch (_v1) {
+				case 0:
 					return A5(
 						$elm$core$Dict$balance,
 						nColor,
@@ -5864,7 +5858,7 @@ var $elm$core$Dict$insertHelp = F3(
 						nValue,
 						A3($elm$core$Dict$insertHelp, key, value, nLeft),
 						nRight);
-				case 'EQ':
+				case 1:
 					return A5($elm$core$Dict$RBNode_elm_builtin, nColor, nKey, value, nLeft, nRight);
 				default:
 					return A5(
@@ -5880,13 +5874,13 @@ var $elm$core$Dict$insertHelp = F3(
 var $elm$core$Dict$insert = F3(
 	function (key, value, dict) {
 		var _v0 = A3($elm$core$Dict$insertHelp, key, value, dict);
-		if ((_v0.$ === 'RBNode_elm_builtin') && (_v0.a.$ === 'Red')) {
+		if ((_v0.$ === -1) && (!_v0.a)) {
 			var _v1 = _v0.a;
 			var k = _v0.b;
 			var v = _v0.c;
 			var l = _v0.d;
 			var r = _v0.e;
-			return A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, k, v, l, r);
+			return A5($elm$core$Dict$RBNode_elm_builtin, 1, k, v, l, r);
 		} else {
 			var x = _v0;
 			return x;
@@ -5895,7 +5889,7 @@ var $elm$core$Dict$insert = F3(
 var $elm$core$Dict$getMin = function (dict) {
 	getMin:
 	while (true) {
-		if ((dict.$ === 'RBNode_elm_builtin') && (dict.d.$ === 'RBNode_elm_builtin')) {
+		if ((dict.$ === -1) && (dict.d.$ === -1)) {
 			var left = dict.d;
 			var $temp$dict = left;
 			dict = $temp$dict;
@@ -5906,8 +5900,8 @@ var $elm$core$Dict$getMin = function (dict) {
 	}
 };
 var $elm$core$Dict$moveRedLeft = function (dict) {
-	if (((dict.$ === 'RBNode_elm_builtin') && (dict.d.$ === 'RBNode_elm_builtin')) && (dict.e.$ === 'RBNode_elm_builtin')) {
-		if ((dict.e.d.$ === 'RBNode_elm_builtin') && (dict.e.d.a.$ === 'Red')) {
+	if (((dict.$ === -1) && (dict.d.$ === -1)) && (dict.e.$ === -1)) {
+		if ((dict.e.d.$ === -1) && (!dict.e.d.a)) {
 			var clr = dict.a;
 			var k = dict.b;
 			var v = dict.c;
@@ -5930,17 +5924,17 @@ var $elm$core$Dict$moveRedLeft = function (dict) {
 			var rRight = _v2.e;
 			return A5(
 				$elm$core$Dict$RBNode_elm_builtin,
-				$elm$core$Dict$Red,
+				0,
 				rlK,
 				rlV,
 				A5(
 					$elm$core$Dict$RBNode_elm_builtin,
-					$elm$core$Dict$Black,
+					1,
 					k,
 					v,
-					A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, lK, lV, lLeft, lRight),
+					A5($elm$core$Dict$RBNode_elm_builtin, 0, lK, lV, lLeft, lRight),
 					rlL),
-				A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, rK, rV, rlR, rRight));
+				A5($elm$core$Dict$RBNode_elm_builtin, 1, rK, rV, rlR, rRight));
 		} else {
 			var clr = dict.a;
 			var k = dict.b;
@@ -5957,22 +5951,22 @@ var $elm$core$Dict$moveRedLeft = function (dict) {
 			var rV = _v5.c;
 			var rLeft = _v5.d;
 			var rRight = _v5.e;
-			if (clr.$ === 'Black') {
+			if (clr === 1) {
 				return A5(
 					$elm$core$Dict$RBNode_elm_builtin,
-					$elm$core$Dict$Black,
+					1,
 					k,
 					v,
-					A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, lK, lV, lLeft, lRight),
-					A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, rK, rV, rLeft, rRight));
+					A5($elm$core$Dict$RBNode_elm_builtin, 0, lK, lV, lLeft, lRight),
+					A5($elm$core$Dict$RBNode_elm_builtin, 0, rK, rV, rLeft, rRight));
 			} else {
 				return A5(
 					$elm$core$Dict$RBNode_elm_builtin,
-					$elm$core$Dict$Black,
+					1,
 					k,
 					v,
-					A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, lK, lV, lLeft, lRight),
-					A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, rK, rV, rLeft, rRight));
+					A5($elm$core$Dict$RBNode_elm_builtin, 0, lK, lV, lLeft, lRight),
+					A5($elm$core$Dict$RBNode_elm_builtin, 0, rK, rV, rLeft, rRight));
 			}
 		}
 	} else {
@@ -5980,8 +5974,8 @@ var $elm$core$Dict$moveRedLeft = function (dict) {
 	}
 };
 var $elm$core$Dict$moveRedRight = function (dict) {
-	if (((dict.$ === 'RBNode_elm_builtin') && (dict.d.$ === 'RBNode_elm_builtin')) && (dict.e.$ === 'RBNode_elm_builtin')) {
-		if ((dict.d.d.$ === 'RBNode_elm_builtin') && (dict.d.d.a.$ === 'Red')) {
+	if (((dict.$ === -1) && (dict.d.$ === -1)) && (dict.e.$ === -1)) {
+		if ((dict.d.d.$ === -1) && (!dict.d.d.a)) {
 			var clr = dict.a;
 			var k = dict.b;
 			var v = dict.c;
@@ -6004,17 +5998,17 @@ var $elm$core$Dict$moveRedRight = function (dict) {
 			var rRight = _v4.e;
 			return A5(
 				$elm$core$Dict$RBNode_elm_builtin,
-				$elm$core$Dict$Red,
+				0,
 				lK,
 				lV,
-				A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, llK, llV, llLeft, llRight),
+				A5($elm$core$Dict$RBNode_elm_builtin, 1, llK, llV, llLeft, llRight),
 				A5(
 					$elm$core$Dict$RBNode_elm_builtin,
-					$elm$core$Dict$Black,
+					1,
 					k,
 					v,
 					lRight,
-					A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, rK, rV, rLeft, rRight)));
+					A5($elm$core$Dict$RBNode_elm_builtin, 0, rK, rV, rLeft, rRight)));
 		} else {
 			var clr = dict.a;
 			var k = dict.b;
@@ -6031,22 +6025,22 @@ var $elm$core$Dict$moveRedRight = function (dict) {
 			var rV = _v6.c;
 			var rLeft = _v6.d;
 			var rRight = _v6.e;
-			if (clr.$ === 'Black') {
+			if (clr === 1) {
 				return A5(
 					$elm$core$Dict$RBNode_elm_builtin,
-					$elm$core$Dict$Black,
+					1,
 					k,
 					v,
-					A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, lK, lV, lLeft, lRight),
-					A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, rK, rV, rLeft, rRight));
+					A5($elm$core$Dict$RBNode_elm_builtin, 0, lK, lV, lLeft, lRight),
+					A5($elm$core$Dict$RBNode_elm_builtin, 0, rK, rV, rLeft, rRight));
 			} else {
 				return A5(
 					$elm$core$Dict$RBNode_elm_builtin,
-					$elm$core$Dict$Black,
+					1,
 					k,
 					v,
-					A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, lK, lV, lLeft, lRight),
-					A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, rK, rV, rLeft, rRight));
+					A5($elm$core$Dict$RBNode_elm_builtin, 0, lK, lV, lLeft, lRight),
+					A5($elm$core$Dict$RBNode_elm_builtin, 0, rK, rV, rLeft, rRight));
 			}
 		}
 	} else {
@@ -6055,7 +6049,7 @@ var $elm$core$Dict$moveRedRight = function (dict) {
 };
 var $elm$core$Dict$removeHelpPrepEQGT = F7(
 	function (targetKey, dict, color, key, value, left, right) {
-		if ((left.$ === 'RBNode_elm_builtin') && (left.a.$ === 'Red')) {
+		if ((left.$ === -1) && (!left.a)) {
 			var _v1 = left.a;
 			var lK = left.b;
 			var lV = left.c;
@@ -6067,13 +6061,13 @@ var $elm$core$Dict$removeHelpPrepEQGT = F7(
 				lK,
 				lV,
 				lLeft,
-				A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, key, value, lRight, right));
+				A5($elm$core$Dict$RBNode_elm_builtin, 0, key, value, lRight, right));
 		} else {
 			_v2$2:
 			while (true) {
-				if ((right.$ === 'RBNode_elm_builtin') && (right.a.$ === 'Black')) {
-					if (right.d.$ === 'RBNode_elm_builtin') {
-						if (right.d.a.$ === 'Black') {
+				if ((right.$ === -1) && (right.a === 1)) {
+					if (right.d.$ === -1) {
+						if (right.d.a === 1) {
 							var _v3 = right.a;
 							var _v4 = right.d;
 							var _v5 = _v4.a;
@@ -6094,7 +6088,7 @@ var $elm$core$Dict$removeHelpPrepEQGT = F7(
 		}
 	});
 var $elm$core$Dict$removeMin = function (dict) {
-	if ((dict.$ === 'RBNode_elm_builtin') && (dict.d.$ === 'RBNode_elm_builtin')) {
+	if ((dict.$ === -1) && (dict.d.$ === -1)) {
 		var color = dict.a;
 		var key = dict.b;
 		var value = dict.c;
@@ -6102,8 +6096,8 @@ var $elm$core$Dict$removeMin = function (dict) {
 		var lColor = left.a;
 		var lLeft = left.d;
 		var right = dict.e;
-		if (lColor.$ === 'Black') {
-			if ((lLeft.$ === 'RBNode_elm_builtin') && (lLeft.a.$ === 'Red')) {
+		if (lColor === 1) {
+			if ((lLeft.$ === -1) && (!lLeft.a)) {
 				var _v3 = lLeft.a;
 				return A5(
 					$elm$core$Dict$RBNode_elm_builtin,
@@ -6114,7 +6108,7 @@ var $elm$core$Dict$removeMin = function (dict) {
 					right);
 			} else {
 				var _v4 = $elm$core$Dict$moveRedLeft(dict);
-				if (_v4.$ === 'RBNode_elm_builtin') {
+				if (_v4.$ === -1) {
 					var nColor = _v4.a;
 					var nKey = _v4.b;
 					var nValue = _v4.c;
@@ -6146,7 +6140,7 @@ var $elm$core$Dict$removeMin = function (dict) {
 };
 var $elm$core$Dict$removeHelp = F2(
 	function (targetKey, dict) {
-		if (dict.$ === 'RBEmpty_elm_builtin') {
+		if (dict.$ === -2) {
 			return $elm$core$Dict$RBEmpty_elm_builtin;
 		} else {
 			var color = dict.a;
@@ -6155,10 +6149,10 @@ var $elm$core$Dict$removeHelp = F2(
 			var left = dict.d;
 			var right = dict.e;
 			if (_Utils_cmp(targetKey, key) < 0) {
-				if ((left.$ === 'RBNode_elm_builtin') && (left.a.$ === 'Black')) {
+				if ((left.$ === -1) && (left.a === 1)) {
 					var _v4 = left.a;
 					var lLeft = left.d;
-					if ((lLeft.$ === 'RBNode_elm_builtin') && (lLeft.a.$ === 'Red')) {
+					if ((lLeft.$ === -1) && (!lLeft.a)) {
 						var _v6 = lLeft.a;
 						return A5(
 							$elm$core$Dict$RBNode_elm_builtin,
@@ -6169,7 +6163,7 @@ var $elm$core$Dict$removeHelp = F2(
 							right);
 					} else {
 						var _v7 = $elm$core$Dict$moveRedLeft(dict);
-						if (_v7.$ === 'RBNode_elm_builtin') {
+						if (_v7.$ === -1) {
 							var nColor = _v7.a;
 							var nKey = _v7.b;
 							var nValue = _v7.c;
@@ -6205,7 +6199,7 @@ var $elm$core$Dict$removeHelp = F2(
 	});
 var $elm$core$Dict$removeHelpEQGT = F2(
 	function (targetKey, dict) {
-		if (dict.$ === 'RBNode_elm_builtin') {
+		if (dict.$ === -1) {
 			var color = dict.a;
 			var key = dict.b;
 			var value = dict.c;
@@ -6213,7 +6207,7 @@ var $elm$core$Dict$removeHelpEQGT = F2(
 			var right = dict.e;
 			if (_Utils_eq(targetKey, key)) {
 				var _v1 = $elm$core$Dict$getMin(right);
-				if (_v1.$ === 'RBNode_elm_builtin') {
+				if (_v1.$ === -1) {
 					var minKey = _v1.b;
 					var minValue = _v1.c;
 					return A5(
@@ -6242,13 +6236,13 @@ var $elm$core$Dict$removeHelpEQGT = F2(
 var $elm$core$Dict$remove = F2(
 	function (key, dict) {
 		var _v0 = A2($elm$core$Dict$removeHelp, key, dict);
-		if ((_v0.$ === 'RBNode_elm_builtin') && (_v0.a.$ === 'Red')) {
+		if ((_v0.$ === -1) && (!_v0.a)) {
 			var _v1 = _v0.a;
 			var k = _v0.b;
 			var v = _v0.c;
 			var l = _v0.d;
 			var r = _v0.e;
-			return A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, k, v, l, r);
+			return A5($elm$core$Dict$RBNode_elm_builtin, 1, k, v, l, r);
 		} else {
 			var x = _v0;
 			return x;
@@ -6258,7 +6252,7 @@ var $elm$core$Dict$update = F3(
 	function (targetKey, alter, dictionary) {
 		var _v0 = alter(
 			A2($elm$core$Dict$get, targetKey, dictionary));
-		if (_v0.$ === 'Just') {
+		if (!_v0.$) {
 			var value = _v0.a;
 			return A3($elm$core$Dict$insert, targetKey, value, dictionary);
 		} else {
@@ -6279,19 +6273,19 @@ var $elm$http$Http$expectStringResponse = F2(
 			A2($elm$core$Basics$composeR, toResult, toMsg));
 	});
 var $elm$http$Http$BadBody = function (a) {
-	return {$: 'BadBody', a: a};
+	return {$: 4, a: a};
 };
 var $elm$http$Http$BadStatus = function (a) {
-	return {$: 'BadStatus', a: a};
+	return {$: 3, a: a};
 };
 var $elm$http$Http$BadUrl = function (a) {
-	return {$: 'BadUrl', a: a};
+	return {$: 0, a: a};
 };
-var $elm$http$Http$NetworkError = {$: 'NetworkError'};
-var $elm$http$Http$Timeout = {$: 'Timeout'};
+var $elm$http$Http$NetworkError = {$: 2};
+var $elm$http$Http$Timeout = {$: 1};
 var $elm$core$Result$mapError = F2(
 	function (f, result) {
-		if (result.$ === 'Ok') {
+		if (!result.$) {
 			var v = result.a;
 			return $elm$core$Result$Ok(v);
 		} else {
@@ -6303,18 +6297,18 @@ var $elm$core$Result$mapError = F2(
 var $elm$http$Http$resolve = F2(
 	function (toResult, response) {
 		switch (response.$) {
-			case 'BadUrl_':
+			case 0:
 				var url = response.a;
 				return $elm$core$Result$Err(
 					$elm$http$Http$BadUrl(url));
-			case 'Timeout_':
+			case 1:
 				return $elm$core$Result$Err($elm$http$Http$Timeout);
-			case 'NetworkError_':
+			case 2:
 				return $elm$core$Result$Err($elm$http$Http$NetworkError);
-			case 'BadStatus_':
+			case 3:
 				var metadata = response.a;
 				return $elm$core$Result$Err(
-					$elm$http$Http$BadStatus(metadata.statusCode));
+					$elm$http$Http$BadStatus(metadata.bx));
 			default:
 				var body = response.b;
 				return A2(
@@ -6331,11 +6325,11 @@ var $elm$http$Http$expectString = function (toMsg) {
 };
 var $elm$http$Http$emptyBody = _Http_emptyBody;
 var $elm$http$Http$Request = function (a) {
-	return {$: 'Request', a: a};
+	return {$: 1, a: a};
 };
 var $elm$http$Http$State = F2(
 	function (reqs, subs) {
-		return {reqs: reqs, subs: subs};
+		return {aJ: reqs, aV: subs};
 	});
 var $elm$http$Http$init = $elm$core$Task$succeed(
 	A2($elm$http$Http$State, $elm$core$Dict$empty, _List_Nil));
@@ -6350,10 +6344,10 @@ var $elm$http$Http$updateReqs = F3(
 			} else {
 				var cmd = cmds.a;
 				var otherCmds = cmds.b;
-				if (cmd.$ === 'Cancel') {
+				if (!cmd.$) {
 					var tracker = cmd.a;
 					var _v2 = A2($elm$core$Dict$get, tracker, reqs);
-					if (_v2.$ === 'Nothing') {
+					if (_v2.$ === 1) {
 						var $temp$router = router,
 							$temp$cmds = otherCmds,
 							$temp$reqs = reqs;
@@ -6379,8 +6373,8 @@ var $elm$http$Http$updateReqs = F3(
 					return A2(
 						$elm$core$Task$andThen,
 						function (pid) {
-							var _v4 = req.tracker;
-							if (_v4.$ === 'Nothing') {
+							var _v4 = req.aX;
+							if (_v4.$ === 1) {
 								return A3($elm$http$Http$updateReqs, router, otherCmds, reqs);
 							} else {
 								var tracker = _v4.a;
@@ -6409,12 +6403,12 @@ var $elm$http$Http$onEffects = F4(
 				return $elm$core$Task$succeed(
 					A2($elm$http$Http$State, reqs, subs));
 			},
-			A3($elm$http$Http$updateReqs, router, cmds, state.reqs));
+			A3($elm$http$Http$updateReqs, router, cmds, state.aJ));
 	});
 var $elm$core$List$maybeCons = F3(
 	function (f, mx, xs) {
 		var _v0 = f(mx);
-		if (_v0.$ === 'Just') {
+		if (!_v0.$) {
 			var x = _v0.a;
 			return A2($elm$core$List$cons, x, xs);
 		} else {
@@ -6452,34 +6446,34 @@ var $elm$http$Http$onSelfMsg = F3(
 				A2(
 					$elm$core$List$filterMap,
 					A3($elm$http$Http$maybeSend, router, tracker, progress),
-					state.subs)));
+					state.aV)));
 	});
 var $elm$http$Http$Cancel = function (a) {
-	return {$: 'Cancel', a: a};
+	return {$: 0, a: a};
 };
 var $elm$http$Http$cmdMap = F2(
 	function (func, cmd) {
-		if (cmd.$ === 'Cancel') {
+		if (!cmd.$) {
 			var tracker = cmd.a;
 			return $elm$http$Http$Cancel(tracker);
 		} else {
 			var r = cmd.a;
 			return $elm$http$Http$Request(
 				{
-					allowCookiesFromOtherDomains: r.allowCookiesFromOtherDomains,
-					body: r.body,
-					expect: A2(_Http_mapExpect, func, r.expect),
-					headers: r.headers,
-					method: r.method,
-					timeout: r.timeout,
-					tracker: r.tracker,
-					url: r.url
+					a1: r.a1,
+					a3: r.a3,
+					bc: A2(_Http_mapExpect, func, r.bc),
+					am: r.am,
+					bm: r.bm,
+					bI: r.bI,
+					aX: r.aX,
+					bM: r.bM
 				});
 		}
 	});
 var $elm$http$Http$MySub = F2(
 	function (a, b) {
-		return {$: 'MySub', a: a, b: b};
+		return {$: 0, a: a, b: b};
 	});
 var $elm$http$Http$subMap = F2(
 	function (func, _v0) {
@@ -6496,39 +6490,37 @@ var $elm$http$Http$subscription = _Platform_leaf('Http');
 var $elm$http$Http$request = function (r) {
 	return $elm$http$Http$command(
 		$elm$http$Http$Request(
-			{allowCookiesFromOtherDomains: false, body: r.body, expect: r.expect, headers: r.headers, method: r.method, timeout: r.timeout, tracker: r.tracker, url: r.url}));
+			{a1: false, a3: r.a3, bc: r.bc, am: r.am, bm: r.bm, bI: r.bI, aX: r.aX, bM: r.bM}));
 };
 var $elm$http$Http$get = function (r) {
 	return $elm$http$Http$request(
-		{body: $elm$http$Http$emptyBody, expect: r.expect, headers: _List_Nil, method: 'GET', timeout: $elm$core$Maybe$Nothing, tracker: $elm$core$Maybe$Nothing, url: r.url});
+		{a3: $elm$http$Http$emptyBody, bc: r.bc, am: _List_Nil, bm: 'GET', bI: $elm$core$Maybe$Nothing, aX: $elm$core$Maybe$Nothing, bM: r.bM});
 };
 var $author$project$Main$loadContent = $elm$http$Http$get(
 	{
-		expect: $elm$http$Http$expectString($author$project$Types$Load),
-		url: 'assets/example.svg'
+		bc: $elm$http$Http$expectString($author$project$Types$Load),
+		bM: 'assets/example.svg'
 	});
 var $elm$core$Platform$Sub$batch = _Platform_batch;
 var $elm$core$Platform$Sub$none = $elm$core$Platform$Sub$batch(_List_Nil);
-var $author$project$Types$Loaded = {$: 'Loaded'};
+var $author$project$Types$Loaded = 1;
 var $author$project$Main$load = F2(
 	function (model, res) {
-		if (res.$ === 'Ok') {
+		if (!res.$) {
 			var svg = res.a;
 			return _Utils_update(
 				model,
-				{image: svg, load: $author$project$Types$Loaded});
+				{N: svg, R: 1});
 		} else {
 			return _Utils_update(
 				model,
-				{load: $author$project$Types$Loaded});
+				{R: 1});
 		}
 	});
 var $elm$core$Platform$Cmd$batch = _Platform_batch;
 var $elm$core$Platform$Cmd$none = $elm$core$Platform$Cmd$batch(_List_Nil);
-var $elm$time$Time$Posix = function (a) {
-	return {$: 'Posix', a: a};
-};
-var $elm$time$Time$millisToPosix = $elm$time$Time$Posix;
+var $elm$time$Time$Posix = $elm$core$Basics$identity;
+var $elm$time$Time$millisToPosix = $elm$core$Basics$identity;
 var $elm$file$File$Download$string = F3(
 	function (name, mime, content) {
 		return A2(
@@ -6536,22 +6528,22 @@ var $elm$file$File$Download$string = F3(
 			$elm$core$Basics$never,
 			A3(_File_download, name, mime, content));
 	});
-var $author$project$Types$Dark = {$: 'Dark'};
+var $author$project$Types$Dark = 1;
 var $author$project$Main$toggle = function (mode) {
-	if (mode.$ === 'Light') {
-		return $author$project$Types$Dark;
+	if (!mode) {
+		return 1;
 	} else {
-		return $author$project$Types$Light;
+		return 0;
 	}
 };
 var $author$project$Types$Selected = function (a) {
-	return {$: 'Selected', a: a};
+	return {$: 1, a: a};
 };
 var $author$project$Types$Update = function (a) {
-	return {$: 'Update', a: a};
+	return {$: 0, a: a};
 };
 var $author$project$Types$Upload = function (a) {
-	return {$: 'Upload', a: a};
+	return {$: 5, a: a};
 };
 var $elm$file$File$Select$file = F2(
 	function (mimes, toMsg) {
@@ -6564,7 +6556,7 @@ var $elm$file$File$name = _File_name;
 var $elm$file$File$toString = _File_toString;
 var $author$project$Main$upload = F2(
 	function (model, upl) {
-		if (upl.$ === 'Requested') {
+		if (!upl.$) {
 			return _Utils_Tuple2(
 				model,
 				A2(
@@ -6581,7 +6573,7 @@ var $author$project$Main$upload = F2(
 				_Utils_update(
 					model,
 					{
-						fileName: $elm$file$File$name(file)
+						Q: $elm$file$File$name(file)
 					}),
 				A2(
 					$elm$core$Task$perform,
@@ -6592,38 +6584,38 @@ var $author$project$Main$upload = F2(
 var $author$project$Main$update = F2(
 	function (msg, model) {
 		switch (msg.$) {
-			case 'Update':
+			case 0:
 				var image = msg.a;
 				return _Utils_Tuple2(
 					_Utils_update(
 						model,
-						{image: image}),
+						{N: image}),
 					$elm$core$Platform$Cmd$none);
-			case 'Load':
+			case 1:
 				var res = msg.a;
 				return _Utils_Tuple2(
 					A2($author$project$Main$load, model, res),
 					$elm$core$Platform$Cmd$none);
-			case 'Validation':
+			case 2:
 				var val = msg.a;
 				return _Utils_Tuple2(
 					_Utils_update(
 						model,
-						{status: val}),
+						{aT: val}),
 					$elm$core$Platform$Cmd$none);
-			case 'ToggleDarkMode':
+			case 3:
 				return _Utils_Tuple2(
 					_Utils_update(
 						model,
 						{
-							mode: $author$project$Main$toggle(model.mode)
+							T: $author$project$Main$toggle(model.T)
 						}),
 					$elm$core$Platform$Cmd$none);
-			case 'Download':
+			case 4:
 				return _Utils_Tuple2(
 					model,
-					A3($elm$file$File$Download$string, model.fileName, 'image/svg+xml', model.image));
-			case 'Upload':
+					A3($elm$file$File$Download$string, model.Q, 'image/svg+xml', model.N));
+			case 5:
 				var upl = msg.a;
 				return A2($author$project$Main$upload, model, upl);
 			default:
@@ -6631,10 +6623,19 @@ var $author$project$Main$update = F2(
 				return _Utils_Tuple2(
 					_Utils_update(
 						model,
-						{editorScroll: scroll}),
+						{ba: scroll}),
 					$elm$core$Platform$Cmd$none);
 		}
 	});
+var $elm$virtual_dom$VirtualDom$attribute = F2(
+	function (key, value) {
+		return A2(
+			_VirtualDom_attribute,
+			_VirtualDom_noOnOrFormAction(key),
+			_VirtualDom_noJavaScriptOrHtmlUri(value));
+	});
+var $elm$html$Html$Attributes$attribute = $elm$virtual_dom$VirtualDom$attribute;
+var $author$project$View$aria_role = $elm$html$Html$Attributes$attribute('aria-role');
 var $elm$json$Json$Encode$string = _Json_wrap;
 var $elm$html$Html$Attributes$stringProperty = F2(
 	function (key, string) {
@@ -6644,12 +6645,12 @@ var $elm$html$Html$Attributes$stringProperty = F2(
 			$elm$json$Json$Encode$string(string));
 	});
 var $elm$html$Html$Attributes$class = $elm$html$Html$Attributes$stringProperty('className');
-var $author$project$Types$Download = {$: 'Download'};
-var $author$project$Types$Requested = {$: 'Requested'};
-var $author$project$Types$ToggleDarkMode = {$: 'ToggleDarkMode'};
+var $author$project$Types$Download = {$: 4};
+var $author$project$Types$Requested = {$: 0};
+var $author$project$Types$ToggleDarkMode = {$: 3};
 var $elm$html$Html$Attributes$alt = $elm$html$Html$Attributes$stringProperty('alt');
 var $author$project$View$darkMode = function (mode) {
-	if (mode.$ === 'Light') {
+	if (!mode) {
 		return false;
 	} else {
 		return true;
@@ -6693,12 +6694,12 @@ var $author$project$View$errorIcon = A2(
 			$elm$html$Html$Attributes$alt('Something Went Wrong')
 		]),
 	_List_Nil);
-var $author$project$Types$Invalid = {$: 'Invalid'};
+var $author$project$Types$Invalid = 1;
 var $author$project$Types$Validation = function (a) {
-	return {$: 'Validation', a: a};
+	return {$: 2, a: a};
 };
 var $elm$virtual_dom$VirtualDom$Normal = function (a) {
-	return {$: 'Normal', a: a};
+	return {$: 0, a: a};
 };
 var $elm$virtual_dom$VirtualDom$on = _VirtualDom_on;
 var $elm$html$Html$Events$on = F2(
@@ -6721,16 +6722,16 @@ var $author$project$View$onLoad = function (f) {
 		$elm$json$Json$Decode$succeed(f));
 };
 var $author$project$View$valid = function (status) {
-	if (status.$ === 'Valid') {
+	if (!status) {
 		return true;
 	} else {
 		return false;
 	}
 };
 var $author$project$View$loaded = function (model) {
-	return $author$project$View$valid(model.status) ? $author$project$View$onError(
-		$author$project$Types$Validation($author$project$Types$Invalid)) : $author$project$View$onLoad(
-		$author$project$Types$Validation($author$project$Types$Valid));
+	return $author$project$View$valid(model.aT) ? $author$project$View$onError(
+		$author$project$Types$Validation(1)) : $author$project$View$onLoad(
+		$author$project$Types$Validation(0));
 };
 var $elm$html$Html$Events$onClick = function (msg) {
 	return A2(
@@ -6747,7 +6748,7 @@ var $author$project$View$uploadIcon = A2(
 		]),
 	_List_Nil);
 var $author$project$View$percentEscape = function (m) {
-	var _v0 = m.match;
+	var _v0 = m.bl;
 	switch (_v0) {
 		case '!':
 			return '%21';
@@ -6794,17 +6795,23 @@ var $author$project$View$percentEscape = function (m) {
 };
 var $elm$regex$Regex$replace = _Regex_replaceAtMost(_Regex_infinity);
 var $author$project$View$uri = function (model) {
-	return 'data:image/svg+xml;utf8,' + A3($elm$regex$Regex$replace, model.uriEncoder, $author$project$View$percentEscape, model.image);
+	return 'data:image/svg+xml;utf8,' + A3($elm$regex$Regex$replace, model.bL, $author$project$View$percentEscape, model.N);
 };
 var $author$project$View$display = function (model) {
 	return A2(
 		$elm$html$Html$div,
-		_List_fromArray(
-			[
-				$elm$html$Html$Attributes$id('display'),
-				$elm$html$Html$Attributes$class(
-				$author$project$View$darkMode(model.mode) ? 'dark' : 'light')
-			]),
+		_Utils_ap(
+			_List_fromArray(
+				[
+					$elm$html$Html$Attributes$id('display'),
+					$author$project$View$aria_role('region'),
+					$elm$html$Html$Attributes$class(
+					$author$project$View$darkMode(model.T) ? 'dark' : 'light')
+				]),
+			$author$project$View$valid(model.aT) ? _List_Nil : _List_fromArray(
+				[
+					$author$project$View$aria_role('alert')
+				])),
 		_List_fromArray(
 			[
 				A2(
@@ -6824,7 +6831,7 @@ var $author$project$View$display = function (model) {
 				_List_fromArray(
 					[
 						$elm$html$Html$Events$onClick($author$project$Types$Download),
-						$elm$html$Html$Attributes$alt('Download')
+						$elm$html$Html$Attributes$alt('Download File')
 					]),
 				_List_fromArray(
 					[$author$project$View$downloadIcon])),
@@ -6834,7 +6841,7 @@ var $author$project$View$display = function (model) {
 					[
 						$elm$html$Html$Events$onClick(
 						$author$project$Types$Upload($author$project$Types$Requested)),
-						$elm$html$Html$Attributes$alt('Upload')
+						$elm$html$Html$Attributes$alt('Upload File')
 					]),
 				_List_fromArray(
 					[$author$project$View$uploadIcon])),
@@ -6847,14 +6854,15 @@ var $author$project$View$display = function (model) {
 					]),
 				_List_fromArray(
 					[
-						$author$project$View$bulbIcon(model.mode)
+						$author$project$View$bulbIcon(model.T)
 					]))
 			]));
 };
+var $author$project$Editor$aria_role = $elm$html$Html$Attributes$attribute('aria-role');
 var $elm$html$Html$code = _VirtualDom_node('code');
 var $elm$core$Result$map = F2(
 	function (func, ra) {
-		if (ra.$ === 'Ok') {
+		if (!ra.$) {
 			var a = ra.a;
 			return $elm$core$Result$Ok(
 				func(a));
@@ -6867,17 +6875,9 @@ var $author$project$Editor$placeholder = '<svg ...> ... </svg>';
 var $elm$html$Html$pre = _VirtualDom_node('pre');
 var $elm$virtual_dom$VirtualDom$text = _VirtualDom_text;
 var $elm$html$Html$text = $elm$virtual_dom$VirtualDom$text;
-var $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Line$Add = {$: 'Add'};
-var $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Line$Del = {$: 'Del'};
-var $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Line$Normal = {$: 'Normal'};
-var $elm$virtual_dom$VirtualDom$attribute = F2(
-	function (key, value) {
-		return A2(
-			_VirtualDom_attribute,
-			_VirtualDom_noOnOrFormAction(key),
-			_VirtualDom_noJavaScriptOrHtmlUri(value));
-	});
-var $elm$html$Html$Attributes$attribute = $elm$virtual_dom$VirtualDom$attribute;
+var $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Line$Add = 1;
+var $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Line$Del = 2;
+var $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Line$Normal = 0;
 var $elm$core$List$filter = F2(
 	function (isGood, list) {
 		return A3(
@@ -6903,26 +6903,26 @@ var $elm$html$Html$Attributes$classList = function (classes) {
 				$elm$core$Tuple$first,
 				A2($elm$core$List$filter, $elm$core$Tuple$second, classes))));
 };
-var $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Style$Default = {$: 'Default'};
+var $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Style$Default = 0;
 var $elm$core$Basics$neq = _Utils_notEqual;
 var $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$View$requiredStyleToString = function (required) {
 	return 'elmsh' + function () {
-		switch (required.$) {
-			case 'Default':
+		switch (required) {
+			case 0:
 				return '0';
-			case 'Comment':
+			case 1:
 				return '-comm';
-			case 'Style1':
+			case 2:
 				return '1';
-			case 'Style2':
+			case 3:
 				return '2';
-			case 'Style3':
+			case 4:
 				return '3';
-			case 'Style4':
+			case 5:
 				return '4';
-			case 'Style5':
+			case 6:
 				return '5';
-			case 'Style6':
+			case 7:
 				return '6';
 			default:
 				return '7';
@@ -6931,10 +6931,10 @@ var $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$View$requiredStyleToStri
 };
 var $elm$html$Html$span = _VirtualDom_node('span');
 var $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$View$fragmentView = function (_v0) {
-	var text = _v0.text;
-	var requiredStyle = _v0.requiredStyle;
-	var additionalClass = _v0.additionalClass;
-	return (_Utils_eq(requiredStyle, $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Style$Default) && $elm$core$String$isEmpty(additionalClass)) ? $elm$html$Html$text(text) : A2(
+	var text = _v0.bH;
+	var requiredStyle = _v0.bt;
+	var additionalClass = _v0.a0;
+	return ((!requiredStyle) && $elm$core$String$isEmpty(additionalClass)) ? $elm$html$Html$text(text) : A2(
 		$elm$html$Html$span,
 		_List_fromArray(
 			[
@@ -6943,7 +6943,7 @@ var $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$View$fragmentView = func
 					[
 						_Utils_Tuple2(
 						$pablohirafuji$elm_syntax_highlight$SyntaxHighlight$View$requiredStyleToString(requiredStyle),
-						!_Utils_eq(requiredStyle, $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Style$Default)),
+						!(!requiredStyle)),
 						_Utils_Tuple2('elmsh-' + additionalClass, additionalClass !== '')
 					]))
 			]),
@@ -6954,8 +6954,8 @@ var $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$View$fragmentView = func
 };
 var $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$View$lineView = F3(
 	function (start, index, _v0) {
-		var fragments = _v0.fragments;
-		var highlight = _v0.highlight;
+		var fragments = _v0.be;
+		var highlight = _v0.bg;
 		return A2(
 			$elm$html$Html$div,
 			_List_fromArray(
@@ -6968,17 +6968,17 @@ var $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$View$lineView = F3(
 							'elmsh-hl',
 							_Utils_eq(
 								highlight,
-								$elm$core$Maybe$Just($pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Line$Normal))),
+								$elm$core$Maybe$Just(0))),
 							_Utils_Tuple2(
 							'elmsh-add',
 							_Utils_eq(
 								highlight,
-								$elm$core$Maybe$Just($pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Line$Add))),
+								$elm$core$Maybe$Just(1))),
 							_Utils_Tuple2(
 							'elmsh-del',
 							_Utils_eq(
 								highlight,
-								$elm$core$Maybe$Just($pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Line$Del)))
+								$elm$core$Maybe$Just(2)))
 						])),
 					A2(
 					$elm$html$Html$Attributes$attribute,
@@ -7013,8 +7013,8 @@ var $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$View$toInlineHtml = func
 			A2(
 				$elm$core$List$map,
 				function (_v0) {
-					var highlight = _v0.highlight;
-					var fragments = _v0.fragments;
+					var highlight = _v0.bg;
+					var fragments = _v0.be;
 					return _Utils_eq(highlight, $elm$core$Maybe$Nothing) ? A2($elm$core$List$map, $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$View$fragmentView, fragments) : _List_fromArray(
 						[
 							A2(
@@ -7028,17 +7028,17 @@ var $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$View$toInlineHtml = func
 											'elmsh-hl',
 											_Utils_eq(
 												highlight,
-												$elm$core$Maybe$Just($pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Line$Normal))),
+												$elm$core$Maybe$Just(0))),
 											_Utils_Tuple2(
 											'elmsh-add',
 											_Utils_eq(
 												highlight,
-												$elm$core$Maybe$Just($pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Line$Add))),
+												$elm$core$Maybe$Just(1))),
 											_Utils_Tuple2(
 											'elmsh-del',
 											_Utils_eq(
 												highlight,
-												$elm$core$Maybe$Just($pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Line$Del)))
+												$elm$core$Maybe$Just(2)))
 										]))
 								]),
 							A2($elm$core$List$map, $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$View$fragmentView, fragments))
@@ -7048,7 +7048,7 @@ var $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$View$toInlineHtml = func
 };
 var $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$View$toBlockHtml = F2(
 	function (maybeStart, lines) {
-		if (maybeStart.$ === 'Nothing') {
+		if (maybeStart.$ === 1) {
 			return A2(
 				$elm$html$Html$pre,
 				_List_fromArray(
@@ -7079,36 +7079,34 @@ var $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$View$toBlockHtml = F2(
 	});
 var $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$toBlockHtml = F2(
 	function (maybeStart, _v0) {
-		var lines = _v0.a;
+		var lines = _v0;
 		return A2($pablohirafuji$elm_syntax_highlight$SyntaxHighlight$View$toBlockHtml, maybeStart, lines);
 	});
 var $elm$core$Result$withDefault = F2(
 	function (def, result) {
-		if (result.$ === 'Ok') {
+		if (!result.$) {
 			var a = result.a;
 			return a;
 		} else {
 			return def;
 		}
 	});
-var $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$HCode = function (a) {
-	return {$: 'HCode', a: a};
-};
+var $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$HCode = $elm$core$Basics$identity;
 var $elm$parser$Parser$DeadEnd = F3(
 	function (row, col, problem) {
-		return {col: col, problem: problem, row: row};
+		return {ac: col, aD: problem, aN: row};
 	});
 var $elm$parser$Parser$problemToDeadEnd = function (p) {
-	return A3($elm$parser$Parser$DeadEnd, p.row, p.col, p.problem);
+	return A3($elm$parser$Parser$DeadEnd, p.aN, p.ac, p.aD);
 };
 var $elm$parser$Parser$Advanced$bagToList = F2(
 	function (bag, list) {
 		bagToList:
 		while (true) {
 			switch (bag.$) {
-				case 'Empty':
+				case 0:
 					return list;
-				case 'AddRight':
+				case 1:
 					var bag1 = bag.a;
 					var x = bag.b;
 					var $temp$bag = bag1,
@@ -7129,10 +7127,10 @@ var $elm$parser$Parser$Advanced$bagToList = F2(
 	});
 var $elm$parser$Parser$Advanced$run = F2(
 	function (_v0, src) {
-		var parse = _v0.a;
+		var parse = _v0;
 		var _v1 = parse(
-			{col: 1, context: _List_Nil, indent: 1, offset: 0, row: 1, src: src});
-		if (_v1.$ === 'Good') {
+			{ac: 1, c: _List_Nil, d: 1, b: 0, aN: 1, a: src});
+		if (!_v1.$) {
 			var value = _v1.b;
 			return $elm$core$Result$Ok(value);
 		} else {
@@ -7144,7 +7142,7 @@ var $elm$parser$Parser$Advanced$run = F2(
 var $elm$parser$Parser$run = F2(
 	function (parser, source) {
 		var _v0 = A2($elm$parser$Parser$Advanced$run, parser, source);
-		if (_v0.$ === 'Ok') {
+		if (!_v0.$) {
 			var a = _v0.a;
 			return $elm$core$Result$Ok(a);
 		} else {
@@ -7153,41 +7151,41 @@ var $elm$parser$Parser$run = F2(
 				A2($elm$core$List$map, $elm$parser$Parser$problemToDeadEnd, problems));
 		}
 	});
-var $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Style$Style2 = {$: 'Style2'};
-var $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Style$Style3 = {$: 'Style3'};
-var $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Style$Style5 = {$: 'Style5'};
+var $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Style$Style2 = 3;
+var $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Style$Style3 = 4;
+var $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Style$Style5 = 6;
 var $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Xml$syntaxToStyle = function (syntax) {
-	switch (syntax.$) {
-		case 'Tag':
-			return _Utils_Tuple2($pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Style$Style3, 'xml-t');
-		case 'Attribute':
-			return _Utils_Tuple2($pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Style$Style5, 'xml-a');
+	switch (syntax) {
+		case 0:
+			return _Utils_Tuple2(4, 'xml-t');
+		case 1:
+			return _Utils_Tuple2(6, 'xml-a');
 		default:
-			return _Utils_Tuple2($pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Style$Style2, 'xlm-av');
+			return _Utils_Tuple2(3, 'xlm-av');
 	}
 };
 var $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Line$Helpers$newLine = function (fragments) {
-	return {fragments: fragments, highlight: $elm$core$Maybe$Nothing};
+	return {be: fragments, bg: $elm$core$Maybe$Nothing};
 };
-var $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Type$LineBreak = {$: 'LineBreak'};
-var $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Style$Comment = {$: 'Comment'};
+var $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Type$LineBreak = {$: 2};
+var $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Style$Comment = 1;
 var $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Line$Helpers$toFragment = F2(
 	function (toStyle, _v0) {
 		var syntax = _v0.a;
 		var text = _v0.b;
 		switch (syntax.$) {
-			case 'Normal':
-				return {additionalClass: '', requiredStyle: $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Style$Default, text: text};
-			case 'Comment':
-				return {additionalClass: '', requiredStyle: $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Style$Comment, text: text};
-			case 'LineBreak':
-				return {additionalClass: '', requiredStyle: $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Style$Default, text: text};
+			case 0:
+				return {a0: '', bt: 0, bH: text};
+			case 1:
+				return {a0: '', bt: 1, bH: text};
+			case 2:
+				return {a0: '', bt: 0, bH: text};
 			default:
 				var c = syntax.a;
 				var _v2 = toStyle(c);
 				var requiredStyle = _v2.a;
 				var additionalClass = _v2.b;
-				return {additionalClass: additionalClass, requiredStyle: requiredStyle, text: text};
+				return {a0: additionalClass, bt: requiredStyle, bH: text};
 		}
 	});
 var $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Line$Helpers$toLinesHelp = F3(
@@ -7225,7 +7223,7 @@ var $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Line$Helpers$toLinesHelp
 							_Utils_update(
 								headFrag,
 								{
-									text: _Utils_ap(text, headFrag.text)
+									bH: _Utils_ap(text, headFrag.bH)
 								}),
 							tailFrags),
 						maybeLastSyntax);
@@ -7271,29 +7269,27 @@ var $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Line$Helpers$toLines = F
 				_Utils_Tuple3(_List_Nil, _List_Nil, $elm$core$Maybe$Nothing),
 				revTokens));
 	});
-var $elm$parser$Parser$Advanced$Parser = function (a) {
-	return {$: 'Parser', a: a};
-};
+var $elm$parser$Parser$Advanced$Parser = $elm$core$Basics$identity;
 var $elm$parser$Parser$Advanced$Bad = F2(
 	function (a, b) {
-		return {$: 'Bad', a: a, b: b};
+		return {$: 1, a: a, b: b};
 	});
 var $elm$parser$Parser$Advanced$Good = F3(
 	function (a, b, c) {
-		return {$: 'Good', a: a, b: b, c: c};
+		return {$: 0, a: a, b: b, c: c};
 	});
 var $elm$parser$Parser$Advanced$loopHelp = F4(
 	function (p, state, callback, s0) {
 		loopHelp:
 		while (true) {
 			var _v0 = callback(state);
-			var parse = _v0.a;
+			var parse = _v0;
 			var _v1 = parse(s0);
-			if (_v1.$ === 'Good') {
+			if (!_v1.$) {
 				var p1 = _v1.a;
 				var step = _v1.b;
 				var s1 = _v1.c;
-				if (step.$ === 'Loop') {
+				if (!step.$) {
 					var newState = step.a;
 					var $temp$p = p || p1,
 						$temp$state = newState,
@@ -7317,42 +7313,40 @@ var $elm$parser$Parser$Advanced$loopHelp = F4(
 	});
 var $elm$parser$Parser$Advanced$loop = F2(
 	function (state, callback) {
-		return $elm$parser$Parser$Advanced$Parser(
-			function (s) {
-				return A4($elm$parser$Parser$Advanced$loopHelp, false, state, callback, s);
-			});
+		return function (s) {
+			return A4($elm$parser$Parser$Advanced$loopHelp, false, state, callback, s);
+		};
 	});
 var $elm$parser$Parser$Advanced$map = F2(
 	function (func, _v0) {
-		var parse = _v0.a;
-		return $elm$parser$Parser$Advanced$Parser(
-			function (s0) {
-				var _v1 = parse(s0);
-				if (_v1.$ === 'Good') {
-					var p = _v1.a;
-					var a = _v1.b;
-					var s1 = _v1.c;
-					return A3(
-						$elm$parser$Parser$Advanced$Good,
-						p,
-						func(a),
-						s1);
-				} else {
-					var p = _v1.a;
-					var x = _v1.b;
-					return A2($elm$parser$Parser$Advanced$Bad, p, x);
-				}
-			});
+		var parse = _v0;
+		return function (s0) {
+			var _v1 = parse(s0);
+			if (!_v1.$) {
+				var p = _v1.a;
+				var a = _v1.b;
+				var s1 = _v1.c;
+				return A3(
+					$elm$parser$Parser$Advanced$Good,
+					p,
+					func(a),
+					s1);
+			} else {
+				var p = _v1.a;
+				var x = _v1.b;
+				return A2($elm$parser$Parser$Advanced$Bad, p, x);
+			}
+		};
 	});
 var $elm$parser$Parser$map = $elm$parser$Parser$Advanced$map;
 var $elm$parser$Parser$Advanced$Done = function (a) {
-	return {$: 'Done', a: a};
+	return {$: 1, a: a};
 };
 var $elm$parser$Parser$Advanced$Loop = function (a) {
-	return {$: 'Loop', a: a};
+	return {$: 0, a: a};
 };
 var $elm$parser$Parser$toAdvancedStep = function (step) {
-	if (step.$ === 'Loop') {
+	if (!step.$) {
 		var s = step.a;
 		return $elm$parser$Parser$Advanced$Loop(s);
 	} else {
@@ -7373,28 +7367,28 @@ var $elm$parser$Parser$loop = F2(
 			});
 	});
 var $elm$parser$Parser$Done = function (a) {
-	return {$: 'Done', a: a};
+	return {$: 1, a: a};
 };
 var $elm$parser$Parser$Loop = function (a) {
-	return {$: 'Loop', a: a};
+	return {$: 0, a: a};
 };
-var $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Type$Normal = {$: 'Normal'};
-var $elm$parser$Parser$UnexpectedChar = {$: 'UnexpectedChar'};
+var $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Type$Normal = {$: 0};
+var $elm$parser$Parser$UnexpectedChar = {$: 11};
 var $elm$parser$Parser$Advanced$AddRight = F2(
 	function (a, b) {
-		return {$: 'AddRight', a: a, b: b};
+		return {$: 1, a: a, b: b};
 	});
 var $elm$parser$Parser$Advanced$DeadEnd = F4(
 	function (row, col, problem, contextStack) {
-		return {col: col, contextStack: contextStack, problem: problem, row: row};
+		return {ac: col, a6: contextStack, aD: problem, aN: row};
 	});
-var $elm$parser$Parser$Advanced$Empty = {$: 'Empty'};
+var $elm$parser$Parser$Advanced$Empty = {$: 0};
 var $elm$parser$Parser$Advanced$fromState = F2(
 	function (s, x) {
 		return A2(
 			$elm$parser$Parser$Advanced$AddRight,
 			$elm$parser$Parser$Advanced$Empty,
-			A4($elm$parser$Parser$Advanced$DeadEnd, s.row, s.col, x, s.context));
+			A4($elm$parser$Parser$Advanced$DeadEnd, s.aN, s.ac, x, s.c));
 	});
 var $elm$parser$Parser$Advanced$isSubChar = _Parser_isSubChar;
 var $elm$core$Basics$negate = function (n) {
@@ -7402,22 +7396,21 @@ var $elm$core$Basics$negate = function (n) {
 };
 var $elm$parser$Parser$Advanced$chompIf = F2(
 	function (isGood, expecting) {
-		return $elm$parser$Parser$Advanced$Parser(
-			function (s) {
-				var newOffset = A3($elm$parser$Parser$Advanced$isSubChar, isGood, s.offset, s.src);
-				return _Utils_eq(newOffset, -1) ? A2(
-					$elm$parser$Parser$Advanced$Bad,
-					false,
-					A2($elm$parser$Parser$Advanced$fromState, s, expecting)) : (_Utils_eq(newOffset, -2) ? A3(
-					$elm$parser$Parser$Advanced$Good,
-					true,
-					_Utils_Tuple0,
-					{col: 1, context: s.context, indent: s.indent, offset: s.offset + 1, row: s.row + 1, src: s.src}) : A3(
-					$elm$parser$Parser$Advanced$Good,
-					true,
-					_Utils_Tuple0,
-					{col: s.col + 1, context: s.context, indent: s.indent, offset: newOffset, row: s.row, src: s.src}));
-			});
+		return function (s) {
+			var newOffset = A3($elm$parser$Parser$Advanced$isSubChar, isGood, s.b, s.a);
+			return _Utils_eq(newOffset, -1) ? A2(
+				$elm$parser$Parser$Advanced$Bad,
+				false,
+				A2($elm$parser$Parser$Advanced$fromState, s, expecting)) : (_Utils_eq(newOffset, -2) ? A3(
+				$elm$parser$Parser$Advanced$Good,
+				true,
+				0,
+				{ac: 1, c: s.c, d: s.d, b: s.b + 1, aN: s.aN + 1, a: s.a}) : A3(
+				$elm$parser$Parser$Advanced$Good,
+				true,
+				0,
+				{ac: s.ac + 1, c: s.c, d: s.d, b: newOffset, aN: s.aN, a: s.a}));
+		};
 	});
 var $elm$parser$Parser$chompIf = function (isGood) {
 	return A2($elm$parser$Parser$Advanced$chompIf, isGood, $elm$parser$Parser$UnexpectedChar);
@@ -7426,13 +7419,13 @@ var $elm$parser$Parser$Advanced$chompWhileHelp = F5(
 	function (isGood, offset, row, col, s0) {
 		chompWhileHelp:
 		while (true) {
-			var newOffset = A3($elm$parser$Parser$Advanced$isSubChar, isGood, offset, s0.src);
+			var newOffset = A3($elm$parser$Parser$Advanced$isSubChar, isGood, offset, s0.a);
 			if (_Utils_eq(newOffset, -1)) {
 				return A3(
 					$elm$parser$Parser$Advanced$Good,
-					_Utils_cmp(s0.offset, offset) < 0,
-					_Utils_Tuple0,
-					{col: col, context: s0.context, indent: s0.indent, offset: offset, row: row, src: s0.src});
+					_Utils_cmp(s0.b, offset) < 0,
+					0,
+					{ac: col, c: s0.c, d: s0.d, b: offset, aN: row, a: s0.a});
 			} else {
 				if (_Utils_eq(newOffset, -2)) {
 					var $temp$isGood = isGood,
@@ -7463,10 +7456,9 @@ var $elm$parser$Parser$Advanced$chompWhileHelp = F5(
 		}
 	});
 var $elm$parser$Parser$Advanced$chompWhile = function (isGood) {
-	return $elm$parser$Parser$Advanced$Parser(
-		function (s) {
-			return A5($elm$parser$Parser$Advanced$chompWhileHelp, isGood, s.offset, s.row, s.col, s);
-		});
+	return function (s) {
+		return A5($elm$parser$Parser$Advanced$chompWhileHelp, isGood, s.b, s.aN, s.ac, s);
+	};
 };
 var $elm$parser$Parser$chompWhile = $elm$parser$Parser$Advanced$chompWhile;
 var $elm$core$Basics$always = F2(
@@ -7475,36 +7467,35 @@ var $elm$core$Basics$always = F2(
 	});
 var $elm$parser$Parser$Advanced$map2 = F3(
 	function (func, _v0, _v1) {
-		var parseA = _v0.a;
-		var parseB = _v1.a;
-		return $elm$parser$Parser$Advanced$Parser(
-			function (s0) {
-				var _v2 = parseA(s0);
-				if (_v2.$ === 'Bad') {
-					var p = _v2.a;
-					var x = _v2.b;
-					return A2($elm$parser$Parser$Advanced$Bad, p, x);
+		var parseA = _v0;
+		var parseB = _v1;
+		return function (s0) {
+			var _v2 = parseA(s0);
+			if (_v2.$ === 1) {
+				var p = _v2.a;
+				var x = _v2.b;
+				return A2($elm$parser$Parser$Advanced$Bad, p, x);
+			} else {
+				var p1 = _v2.a;
+				var a = _v2.b;
+				var s1 = _v2.c;
+				var _v3 = parseB(s1);
+				if (_v3.$ === 1) {
+					var p2 = _v3.a;
+					var x = _v3.b;
+					return A2($elm$parser$Parser$Advanced$Bad, p1 || p2, x);
 				} else {
-					var p1 = _v2.a;
-					var a = _v2.b;
-					var s1 = _v2.c;
-					var _v3 = parseB(s1);
-					if (_v3.$ === 'Bad') {
-						var p2 = _v3.a;
-						var x = _v3.b;
-						return A2($elm$parser$Parser$Advanced$Bad, p1 || p2, x);
-					} else {
-						var p2 = _v3.a;
-						var b = _v3.b;
-						var s2 = _v3.c;
-						return A3(
-							$elm$parser$Parser$Advanced$Good,
-							p1 || p2,
-							A2(func, a, b),
-							s2);
-					}
+					var p2 = _v3.a;
+					var b = _v3.b;
+					var s2 = _v3.c;
+					return A3(
+						$elm$parser$Parser$Advanced$Good,
+						p1 || p2,
+						A2(func, a, b),
+						s2);
 				}
-			});
+			}
+		};
 	});
 var $elm$parser$Parser$Advanced$ignorer = F2(
 	function (keepParser, ignoreParser) {
@@ -7512,10 +7503,9 @@ var $elm$parser$Parser$Advanced$ignorer = F2(
 	});
 var $elm$parser$Parser$ignorer = $elm$parser$Parser$Advanced$ignorer;
 var $elm$parser$Parser$Advanced$succeed = function (a) {
-	return $elm$parser$Parser$Advanced$Parser(
-		function (s) {
-			return A3($elm$parser$Parser$Advanced$Good, false, a, s);
-		});
+	return function (s) {
+		return A3($elm$parser$Parser$Advanced$Good, false, a, s);
+	};
 };
 var $elm$parser$Parser$succeed = $elm$parser$Parser$Advanced$succeed;
 var $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Helpers$chompIfThenWhile = function (isNotRelevant) {
@@ -7523,40 +7513,39 @@ var $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Helpers$chompIf
 		$elm$parser$Parser$ignorer,
 		A2(
 			$elm$parser$Parser$ignorer,
-			$elm$parser$Parser$succeed(_Utils_Tuple0),
+			$elm$parser$Parser$succeed(0),
 			$elm$parser$Parser$chompIf(isNotRelevant)),
 		$elm$parser$Parser$chompWhile(isNotRelevant));
 };
-var $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Type$Comment = {$: 'Comment'};
+var $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Type$Comment = {$: 1};
 var $elm$parser$Parser$Advanced$andThen = F2(
 	function (callback, _v0) {
-		var parseA = _v0.a;
-		return $elm$parser$Parser$Advanced$Parser(
-			function (s0) {
-				var _v1 = parseA(s0);
-				if (_v1.$ === 'Bad') {
-					var p = _v1.a;
-					var x = _v1.b;
-					return A2($elm$parser$Parser$Advanced$Bad, p, x);
+		var parseA = _v0;
+		return function (s0) {
+			var _v1 = parseA(s0);
+			if (_v1.$ === 1) {
+				var p = _v1.a;
+				var x = _v1.b;
+				return A2($elm$parser$Parser$Advanced$Bad, p, x);
+			} else {
+				var p1 = _v1.a;
+				var a = _v1.b;
+				var s1 = _v1.c;
+				var _v2 = callback(a);
+				var parseB = _v2;
+				var _v3 = parseB(s1);
+				if (_v3.$ === 1) {
+					var p2 = _v3.a;
+					var x = _v3.b;
+					return A2($elm$parser$Parser$Advanced$Bad, p1 || p2, x);
 				} else {
-					var p1 = _v1.a;
-					var a = _v1.b;
-					var s1 = _v1.c;
-					var _v2 = callback(a);
-					var parseB = _v2.a;
-					var _v3 = parseB(s1);
-					if (_v3.$ === 'Bad') {
-						var p2 = _v3.a;
-						var x = _v3.b;
-						return A2($elm$parser$Parser$Advanced$Bad, p1 || p2, x);
-					} else {
-						var p2 = _v3.a;
-						var b = _v3.b;
-						var s2 = _v3.c;
-						return A3($elm$parser$Parser$Advanced$Good, p1 || p2, b, s2);
-					}
+					var p2 = _v3.a;
+					var b = _v3.b;
+					var s2 = _v3.c;
+					return A3($elm$parser$Parser$Advanced$Good, p1 || p2, b, s2);
 				}
-			});
+			}
+		};
 	});
 var $elm$parser$Parser$andThen = $elm$parser$Parser$Advanced$andThen;
 var $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Helpers$addThen = F3(
@@ -7579,43 +7568,41 @@ var $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Helpers$consThe
 			},
 			pn);
 	});
-var $elm$parser$Parser$ExpectingEnd = {$: 'ExpectingEnd'};
+var $elm$parser$Parser$ExpectingEnd = {$: 10};
 var $elm$parser$Parser$Advanced$end = function (x) {
-	return $elm$parser$Parser$Advanced$Parser(
-		function (s) {
-			return _Utils_eq(
-				$elm$core$String$length(s.src),
-				s.offset) ? A3($elm$parser$Parser$Advanced$Good, false, _Utils_Tuple0, s) : A2(
-				$elm$parser$Parser$Advanced$Bad,
-				false,
-				A2($elm$parser$Parser$Advanced$fromState, s, x));
-		});
+	return function (s) {
+		return _Utils_eq(
+			$elm$core$String$length(s.a),
+			s.b) ? A3($elm$parser$Parser$Advanced$Good, false, 0, s) : A2(
+			$elm$parser$Parser$Advanced$Bad,
+			false,
+			A2($elm$parser$Parser$Advanced$fromState, s, x));
+	};
 };
 var $elm$parser$Parser$end = $elm$parser$Parser$Advanced$end($elm$parser$Parser$ExpectingEnd);
 var $elm$parser$Parser$Advanced$mapChompedString = F2(
 	function (func, _v0) {
-		var parse = _v0.a;
-		return $elm$parser$Parser$Advanced$Parser(
-			function (s0) {
-				var _v1 = parse(s0);
-				if (_v1.$ === 'Bad') {
-					var p = _v1.a;
-					var x = _v1.b;
-					return A2($elm$parser$Parser$Advanced$Bad, p, x);
-				} else {
-					var p = _v1.a;
-					var a = _v1.b;
-					var s1 = _v1.c;
-					return A3(
-						$elm$parser$Parser$Advanced$Good,
-						p,
-						A2(
-							func,
-							A3($elm$core$String$slice, s0.offset, s1.offset, s0.src),
-							a),
-						s1);
-				}
-			});
+		var parse = _v0;
+		return function (s0) {
+			var _v1 = parse(s0);
+			if (_v1.$ === 1) {
+				var p = _v1.a;
+				var x = _v1.b;
+				return A2($elm$parser$Parser$Advanced$Bad, p, x);
+			} else {
+				var p = _v1.a;
+				var a = _v1.b;
+				var s1 = _v1.c;
+				return A3(
+					$elm$parser$Parser$Advanced$Good,
+					p,
+					A2(
+						func,
+						A3($elm$core$String$slice, s0.b, s1.b, s0.a),
+						a),
+					s1);
+			}
+		};
 	});
 var $elm$parser$Parser$Advanced$getChompedString = function (parser) {
 	return A2($elm$parser$Parser$Advanced$mapChompedString, $elm$core$Basics$always, parser);
@@ -7623,7 +7610,7 @@ var $elm$parser$Parser$Advanced$getChompedString = function (parser) {
 var $elm$parser$Parser$getChompedString = $elm$parser$Parser$Advanced$getChompedString;
 var $elm$parser$Parser$Advanced$Append = F2(
 	function (a, b) {
-		return {$: 'Append', a: a, b: b};
+		return {$: 2, a: a, b: b};
 	});
 var $elm$parser$Parser$Advanced$oneOfHelp = F3(
 	function (s0, bag, parsers) {
@@ -7632,10 +7619,10 @@ var $elm$parser$Parser$Advanced$oneOfHelp = F3(
 			if (!parsers.b) {
 				return A2($elm$parser$Parser$Advanced$Bad, false, bag);
 			} else {
-				var parse = parsers.a.a;
+				var parse = parsers.a;
 				var remainingParsers = parsers.b;
 				var _v1 = parse(s0);
-				if (_v1.$ === 'Good') {
+				if (!_v1.$) {
 					var step = _v1;
 					return step;
 				} else {
@@ -7658,18 +7645,17 @@ var $elm$parser$Parser$Advanced$oneOfHelp = F3(
 		}
 	});
 var $elm$parser$Parser$Advanced$oneOf = function (parsers) {
-	return $elm$parser$Parser$Advanced$Parser(
-		function (s) {
-			return A3($elm$parser$Parser$Advanced$oneOfHelp, s, $elm$parser$Parser$Advanced$Empty, parsers);
-		});
+	return function (s) {
+		return A3($elm$parser$Parser$Advanced$oneOfHelp, s, $elm$parser$Parser$Advanced$Empty, parsers);
+	};
 };
 var $elm$parser$Parser$oneOf = $elm$parser$Parser$Advanced$oneOf;
 var $elm$parser$Parser$ExpectingSymbol = function (a) {
-	return {$: 'ExpectingSymbol', a: a};
+	return {$: 8, a: a};
 };
 var $elm$parser$Parser$Advanced$Token = F2(
 	function (a, b) {
-		return {$: 'Token', a: a, b: b};
+		return {$: 0, a: a, b: b};
 	});
 var $elm$parser$Parser$Advanced$isSubString = _Parser_isSubString;
 var $elm$core$Basics$not = _Basics_not;
@@ -7677,21 +7663,20 @@ var $elm$parser$Parser$Advanced$token = function (_v0) {
 	var str = _v0.a;
 	var expecting = _v0.b;
 	var progress = !$elm$core$String$isEmpty(str);
-	return $elm$parser$Parser$Advanced$Parser(
-		function (s) {
-			var _v1 = A5($elm$parser$Parser$Advanced$isSubString, str, s.offset, s.row, s.col, s.src);
-			var newOffset = _v1.a;
-			var newRow = _v1.b;
-			var newCol = _v1.c;
-			return _Utils_eq(newOffset, -1) ? A2(
-				$elm$parser$Parser$Advanced$Bad,
-				false,
-				A2($elm$parser$Parser$Advanced$fromState, s, expecting)) : A3(
-				$elm$parser$Parser$Advanced$Good,
-				progress,
-				_Utils_Tuple0,
-				{col: newCol, context: s.context, indent: s.indent, offset: newOffset, row: newRow, src: s.src});
-		});
+	return function (s) {
+		var _v1 = A5($elm$parser$Parser$Advanced$isSubString, str, s.b, s.aN, s.ac, s.a);
+		var newOffset = _v1.a;
+		var newRow = _v1.b;
+		var newCol = _v1.c;
+		return _Utils_eq(newOffset, -1) ? A2(
+			$elm$parser$Parser$Advanced$Bad,
+			false,
+			A2($elm$parser$Parser$Advanced$fromState, s, expecting)) : A3(
+			$elm$parser$Parser$Advanced$Good,
+			progress,
+			0,
+			{ac: newCol, c: s.c, d: s.d, b: newOffset, aN: newRow, a: s.a});
+	};
 };
 var $elm$parser$Parser$Advanced$symbol = $elm$parser$Parser$Advanced$token;
 var $elm$parser$Parser$symbol = function (str) {
@@ -7710,10 +7695,10 @@ var $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Helpers$thenCho
 	});
 var $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Helpers$delimitedUnnestable = F2(
 	function (options, revAList) {
-		var defaultMap = options.defaultMap;
-		var isNotRelevant = options.isNotRelevant;
-		var end = options.end;
-		var innerParsers = options.innerParsers;
+		var defaultMap = options.ag;
+		var isNotRelevant = options.at;
+		var end = options.ah;
+		var innerParsers = options.aq;
 		return $elm$parser$Parser$oneOf(
 			_List_fromArray(
 				[
@@ -7751,11 +7736,11 @@ var $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Helpers$delimit
 	});
 var $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Helpers$delimitedNestable = F3(
 	function (nestLevel, options, revAList) {
-		var defaultMap = options.defaultMap;
-		var isNotRelevant = options.isNotRelevant;
-		var start = options.start;
-		var end = options.end;
-		var innerParsers = options.innerParsers;
+		var defaultMap = options.ag;
+		var isNotRelevant = options.at;
+		var start = options.X;
+		var end = options.ah;
+		var innerParsers = options.aq;
 		return $elm$parser$Parser$oneOf(
 			_List_fromArray(
 				[
@@ -7809,16 +7794,15 @@ var $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Helpers$delimit
 				]));
 	});
 var $elm$parser$Parser$Problem = function (a) {
-	return {$: 'Problem', a: a};
+	return {$: 12, a: a};
 };
 var $elm$parser$Parser$Advanced$problem = function (x) {
-	return $elm$parser$Parser$Advanced$Parser(
-		function (s) {
-			return A2(
-				$elm$parser$Parser$Advanced$Bad,
-				false,
-				A2($elm$parser$Parser$Advanced$fromState, s, x));
-		});
+	return function (s) {
+		return A2(
+			$elm$parser$Parser$Advanced$Bad,
+			false,
+			A2($elm$parser$Parser$Advanced$fromState, s, x));
+	};
 };
 var $elm$parser$Parser$problem = function (msg) {
 	return $elm$parser$Parser$Advanced$problem(
@@ -7826,17 +7810,17 @@ var $elm$parser$Parser$problem = function (msg) {
 };
 var $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Helpers$delimitedHelp = F2(
 	function (options, revAList) {
-		var start = options.start;
-		var end = options.end;
-		var isNotRelevant = options.isNotRelevant;
+		var start = options.X;
+		var end = options.ah;
+		var isNotRelevant = options.at;
 		var _v0 = _Utils_Tuple2(
-			$elm$core$String$uncons(options.start),
-			$elm$core$String$uncons(options.end));
-		if (_v0.a.$ === 'Nothing') {
+			$elm$core$String$uncons(options.X),
+			$elm$core$String$uncons(options.ah));
+		if (_v0.a.$ === 1) {
 			var _v1 = _v0.a;
 			return $elm$parser$Parser$problem('Trying to parse a delimited helper, but the start token cannot be an empty string!');
 		} else {
-			if (_v0.b.$ === 'Nothing') {
+			if (_v0.b.$ === 1) {
 				var _v2 = _v0.b;
 				return $elm$parser$Parser$problem('Trying to parse a delimited helper, but the end token cannot be an empty string!');
 			} else {
@@ -7844,13 +7828,13 @@ var $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Helpers$delimit
 				var startChar = _v3.a;
 				var _v4 = _v0.b.a;
 				var endChar = _v4.a;
-				return options.isNestable ? A3(
+				return options.as ? A3(
 					$pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Helpers$delimitedNestable,
 					1,
 					_Utils_update(
 						options,
 						{
-							isNotRelevant: function (c) {
+							at: function (c) {
 								return isNotRelevant(c) && ((!_Utils_eq(c, startChar)) && (!_Utils_eq(c, endChar)));
 							}
 						}),
@@ -7859,7 +7843,7 @@ var $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Helpers$delimit
 					_Utils_update(
 						options,
 						{
-							isNotRelevant: function (c) {
+							at: function (c) {
 								return isNotRelevant(c) && (!_Utils_eq(c, endChar));
 							}
 						}),
@@ -7868,9 +7852,9 @@ var $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Helpers$delimit
 		}
 	});
 var $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Helpers$delimited = function (options) {
-	var start = options.start;
-	var isNotRelevant = options.isNotRelevant;
-	var defaultMap = options.defaultMap;
+	var start = options.X;
+	var isNotRelevant = options.at;
+	var defaultMap = options.ag;
 	return A2(
 		$elm$parser$Parser$andThen,
 		function (n) {
@@ -7886,9 +7870,9 @@ var $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Helpers$delimit
 				defaultMap(start)),
 			$elm$parser$Parser$symbol(start)));
 };
-var $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Xml$AttributeValue = {$: 'AttributeValue'};
+var $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Xml$AttributeValue = 2;
 var $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Type$C = function (a) {
-	return {$: 'C', a: a};
+	return {$: 3, a: a};
 };
 var $elm$core$Basics$composeL = F3(
 	function (g, f, x) {
@@ -7896,9 +7880,7 @@ var $elm$core$Basics$composeL = F3(
 			f(x));
 	});
 var $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Helpers$isLineBreak = function (c) {
-	return _Utils_eq(
-		c,
-		_Utils_chr('\n'));
+	return c === '\n';
 };
 var $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Xml$lineBreak = A2(
 	$elm$parser$Parser$map,
@@ -7908,63 +7890,51 @@ var $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Xml$lineBreak =
 	$elm$parser$Parser$symbol('\n'));
 var $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Xml$lineBreakList = A2($elm$parser$Parser$map, $elm$core$List$singleton, $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Xml$lineBreak);
 var $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Xml$doubleQuoteDelimiter = {
-	defaultMap: function (b) {
+	ag: function (b) {
 		return _Utils_Tuple2(
-			$pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Type$C($pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Xml$AttributeValue),
+			$pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Type$C(2),
 			b);
 	},
-	end: '\"',
-	innerParsers: _List_fromArray(
+	ah: '\"',
+	aq: _List_fromArray(
 		[$pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Xml$lineBreakList]),
-	isNestable: false,
-	isNotRelevant: A2($elm$core$Basics$composeL, $elm$core$Basics$not, $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Helpers$isLineBreak),
-	start: '\"'
+	as: false,
+	at: A2($elm$core$Basics$composeL, $elm$core$Basics$not, $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Helpers$isLineBreak),
+	X: '\"'
 };
 var $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Xml$comment = $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Helpers$delimited(
 	_Utils_update(
 		$pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Xml$doubleQuoteDelimiter,
 		{
-			defaultMap: function (b) {
+			ag: function (b) {
 				return _Utils_Tuple2($pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Type$Comment, b);
 			},
-			end: '-->',
-			start: '<!--'
+			ah: '-->',
+			X: '<!--'
 		}));
 var $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Xml$openTagParser = A2(
 	$elm$parser$Parser$ignorer,
 	A2(
 		$elm$parser$Parser$ignorer,
-		$elm$parser$Parser$succeed(_Utils_Tuple0),
+		$elm$parser$Parser$succeed(0),
 		$elm$parser$Parser$chompIf(
 			function (c) {
-				return _Utils_eq(
-					c,
-					_Utils_chr('<'));
+				return c === '<';
 			})),
 	$elm$parser$Parser$oneOf(
 		_List_fromArray(
 			[
 				$elm$parser$Parser$chompIf(
 				function (c) {
-					return _Utils_eq(
-						c,
-						_Utils_chr('/')) || (_Utils_eq(
-						c,
-						_Utils_chr('!')) || _Utils_eq(
-						c,
-						_Utils_chr('?')));
+					return (c === '/') || ((c === '!') || (c === '?'));
 				}),
-				$elm$parser$Parser$succeed(_Utils_Tuple0)
+				$elm$parser$Parser$succeed(0)
 			])));
-var $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Xml$Tag = {$: 'Tag'};
-var $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Xml$Attribute = {$: 'Attribute'};
+var $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Xml$Tag = 0;
+var $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Xml$Attribute = 1;
 var $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Xml$doubleQuote = $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Helpers$delimited($pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Xml$doubleQuoteDelimiter);
 var $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Helpers$isSpace = function (c) {
-	return _Utils_eq(
-		c,
-		_Utils_chr(' ')) || _Utils_eq(
-		c,
-		_Utils_chr('\t'));
+	return (c === ' ') || (c === '\t');
 };
 var $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Helpers$isWhitespace = function (c) {
 	return $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Helpers$isSpace(c) || $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Helpers$isLineBreak(c);
@@ -7972,7 +7942,7 @@ var $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Helpers$isWhite
 var $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Xml$quote = $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Helpers$delimited(
 	_Utils_update(
 		$pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Xml$doubleQuoteDelimiter,
-		{end: '\'', start: '\''}));
+		{ah: '\'', X: '\''}));
 var $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Xml$attributeValue = $elm$parser$Parser$oneOf(
 	_List_fromArray(
 		[
@@ -7984,16 +7954,14 @@ var $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Xml$attributeVa
 				return _List_fromArray(
 					[
 						_Utils_Tuple2(
-						$pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Type$C($pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Xml$AttributeValue),
+						$pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Type$C(2),
 						b)
 					]);
 			},
 			$elm$parser$Parser$getChompedString(
 				$pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Helpers$chompIfThenWhile(
 					function (c) {
-						return (!$pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Helpers$isWhitespace(c)) && (!_Utils_eq(
-							c,
-							_Utils_chr('>')));
+						return (!$pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Helpers$isWhitespace(c)) && (c !== '>');
 					})))
 		]));
 var $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Xml$whitespace = $elm$parser$Parser$oneOf(
@@ -8039,14 +8007,10 @@ var $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Xml$isStartTagC
 	return $elm$core$Char$isUpper(c) || ($elm$core$Char$isLower(c) || $elm$core$Char$isDigit(c));
 };
 var $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Xml$isTagChar = function (c) {
-	return $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Xml$isStartTagChar(c) || _Utils_eq(
-		c,
-		_Utils_chr('-'));
+	return $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Xml$isStartTagChar(c) || (c === '-');
 };
 var $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Xml$isAttributeChar = function (c) {
-	return $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Xml$isTagChar(c) || _Utils_eq(
-		c,
-		_Utils_chr('_'));
+	return $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Xml$isTagChar(c) || (c === '_');
 };
 var $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Xml$attributeLoop = function (revTokens) {
 	return $elm$parser$Parser$oneOf(
@@ -8063,7 +8027,7 @@ var $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Xml$attributeLo
 						$elm$parser$Parser$map,
 						function (b) {
 							return _Utils_Tuple2(
-								$pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Type$C($pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Xml$Attribute),
+								$pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Type$C(1),
 								b);
 						},
 						$elm$parser$Parser$getChompedString(
@@ -8087,9 +8051,7 @@ var $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Xml$attributeLo
 				$elm$parser$Parser$getChompedString(
 					$pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Helpers$chompIfThenWhile(
 						function (c) {
-							return (!$pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Helpers$isWhitespace(c)) && (!_Utils_eq(
-								c,
-								_Utils_chr('>')));
+							return (!$pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Helpers$isWhitespace(c)) && (c !== '>');
 						}))),
 				$elm$parser$Parser$succeed(
 				$elm$parser$Parser$Done(revTokens))
@@ -8111,7 +8073,7 @@ var $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Xml$tag = funct
 					$elm$parser$Parser$map,
 					function (b) {
 						return _Utils_Tuple2(
-							$pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Type$C($pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Xml$Tag),
+							$pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Type$C(0),
 							b);
 					},
 					$elm$parser$Parser$getChompedString(
@@ -8166,9 +8128,7 @@ var $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Xml$mainLoop = 
 				$elm$parser$Parser$getChompedString(
 					$pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Helpers$chompIfThenWhile(
 						function (c) {
-							return (!_Utils_eq(
-								c,
-								_Utils_chr('<'))) && (!$pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Helpers$isLineBreak(c));
+							return (c !== '<') && (!$pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Helpers$isLineBreak(c));
 						}))),
 				A2(
 				$elm$parser$Parser$map,
@@ -8187,7 +8147,7 @@ var $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Xml$toLines = A
 var $pablohirafuji$elm_syntax_highlight$SyntaxHighlight$xml = A2(
 	$elm$core$Basics$composeR,
 	$pablohirafuji$elm_syntax_highlight$SyntaxHighlight$Language$Xml$toLines,
-	$elm$core$Result$map($pablohirafuji$elm_syntax_highlight$SyntaxHighlight$HCode));
+	$elm$core$Result$map($elm$core$Basics$identity));
 var $author$project$Editor$codeDisplay = function (model) {
 	return A2(
 		$elm$core$Result$withDefault,
@@ -8201,23 +8161,23 @@ var $author$project$Editor$codeDisplay = function (model) {
 					_List_Nil,
 					_List_fromArray(
 						[
-							$elm$html$Html$text(model.image)
+							$elm$html$Html$text(model.N)
 						]))
 				])),
 		A2(
 			$elm$core$Result$map,
 			$pablohirafuji$elm_syntax_highlight$SyntaxHighlight$toBlockHtml($elm$core$Maybe$Nothing),
 			$pablohirafuji$elm_syntax_highlight$SyntaxHighlight$xml(
-				(model.image === '') ? $author$project$Editor$placeholder : model.image)));
+				(model.N === '') ? $author$project$Editor$placeholder : model.N)));
 };
 var $author$project$Types$Scroll = function (a) {
-	return {$: 'Scroll', a: a};
+	return {$: 6, a: a};
 };
 var $elm$html$Html$Events$alwaysStop = function (x) {
 	return _Utils_Tuple2(x, true);
 };
 var $elm$virtual_dom$VirtualDom$MayStopPropagation = function (a) {
-	return {$: 'MayStopPropagation', a: a};
+	return {$: 1, a: a};
 };
 var $elm$html$Html$Events$stopPropagationOn = F2(
 	function (event, decoder) {
@@ -8288,7 +8248,7 @@ var $author$project$Editor$textarea = function (model) {
 		$elm$html$Html$textarea,
 		_List_fromArray(
 			[
-				$elm$html$Html$Attributes$value(model.image),
+				$elm$html$Html$Attributes$value(model.N),
 				$elm$html$Html$Events$onInput($author$project$Types$Update),
 				$author$project$Editor$onScroll($author$project$Types$Scroll),
 				$elm$html$Html$Attributes$spellcheck(false),
@@ -8314,7 +8274,8 @@ var $author$project$Editor$editor = function (model) {
 		_List_fromArray(
 			[
 				$elm$html$Html$Attributes$id('editor'),
-				$elm$html$Html$Attributes$alt('Text Editor')
+				$elm$html$Html$Attributes$alt('Text Editor'),
+				$author$project$Editor$aria_role('region')
 			]),
 		_List_fromArray(
 			[
@@ -8322,7 +8283,7 @@ var $author$project$Editor$editor = function (model) {
 				$elm$html$Html$div,
 				_List_fromArray(
 					[
-						$author$project$Editor$translate(model.editorScroll)
+						$author$project$Editor$translate(model.ba)
 					]),
 				_List_fromArray(
 					[
@@ -8332,32 +8293,29 @@ var $author$project$Editor$editor = function (model) {
 			]));
 };
 var $elm$html$Html$h1 = _VirtualDom_node('h1');
-var $elm$html$Html$header = _VirtualDom_node('header');
 var $elm$virtual_dom$VirtualDom$lazy = _VirtualDom_lazy;
 var $elm$html$Html$Lazy$lazy = $elm$virtual_dom$VirtualDom$lazy;
 var $author$project$View$container = function (model) {
 	return A2(
 		$elm$html$Html$div,
-		_List_fromArray(
-			[
-				$elm$html$Html$Attributes$id('container'),
-				$elm$html$Html$Attributes$class(
-				$author$project$View$valid(model.status) ? 'valid' : 'error')
-			]),
+		_Utils_ap(
+			_List_fromArray(
+				[
+					$elm$html$Html$Attributes$id('container'),
+					$author$project$View$aria_role('application')
+				]),
+			$author$project$View$valid(model.aT) ? _List_Nil : _List_fromArray(
+				[
+					$elm$html$Html$Attributes$class('error')
+				])),
 		_List_fromArray(
 			[
 				A2(
-				$elm$html$Html$header,
+				$elm$html$Html$h1,
 				_List_Nil,
 				_List_fromArray(
 					[
-						A2(
-						$elm$html$Html$h1,
-						_List_Nil,
-						_List_fromArray(
-							[
-								$elm$html$Html$text('SGV Editor')
-							]))
+						$elm$html$Html$text('SGV Editor')
 					])),
 				$author$project$View$display(model),
 				A2($elm$html$Html$Lazy$lazy, $author$project$Editor$editor, model)
@@ -8365,9 +8323,9 @@ var $author$project$View$container = function (model) {
 };
 var $author$project$View$view = function (model) {
 	return {
-		body: function () {
-			var _v0 = model.load;
-			if (_v0.$ === 'Loading') {
+		a3: function () {
+			var _v0 = model.R;
+			if (!_v0) {
 				return _List_Nil;
 			} else {
 				return _List_fromArray(
@@ -8376,19 +8334,19 @@ var $author$project$View$view = function (model) {
 					]);
 			}
 		}(),
-		title: 'SVG Editor'
+		bJ: 'SVG Editor'
 	};
 };
 var $author$project$Main$main = $elm$browser$Browser$document(
 	{
-		init: function (_v0) {
+		bj: function (_v0) {
 			return _Utils_Tuple2($author$project$Main$init, $author$project$Main$loadContent);
 		},
-		subscriptions: function (_v1) {
+		bG: function (_v1) {
 			return $elm$core$Platform$Sub$none;
 		},
-		update: $author$project$Main$update,
-		view: $author$project$View$view
+		bK: $author$project$Main$update,
+		bN: $author$project$View$view
 	});
 _Platform_export({'Main':{'init':$author$project$Main$main(
-	$elm$json$Json$Decode$succeed(_Utils_Tuple0))(0)}});}(this));-
\ No newline at end of file
+	$elm$json$Json$Decode$succeed(0))(0)}});}(this));+
\ No newline at end of file
diff --git a/src/Editor.elm b/src/Editor.elm
@@ -2,15 +2,16 @@ module Editor exposing (editor)
 
 import Types exposing (..)
 import Html exposing (Html, Attribute, div, pre, code, text, textarea)
-import Html.Attributes exposing (id, value, style, spellcheck, alt)
+import Html.Attributes exposing (id, value, style, spellcheck, alt, attribute)
 import Html.Events exposing (onInput, on)
 import Json.Decode
 import SyntaxHighlight exposing (xml, toBlockHtml)
 
 editor : Model -> Html Msg
 editor model =
-    div [ id "editor", alt "Text Editor" ]
-        [ div [ translate model.editorScroll ]
+    div [ id "editor", alt "Text Editor" , aria_role "region" ]
+        [ div 
+            [ translate model.editorScroll ]
             [ codeDisplay model ]
         , textarea model
         ]
@@ -54,4 +55,7 @@ placeholder =
     "<svg ...> ... </svg>"
 
 show : Int -> String
-show = String.fromInt-
\ No newline at end of file
+show = String.fromInt
+
+aria_role : String -> Attribute msg
+aria_role = attribute "aria-role"
diff --git a/src/View.elm b/src/View.elm
@@ -3,9 +3,27 @@ module View exposing (view)
 import Types exposing (..)
 import Editor exposing (editor)
 
-import Html exposing (Html, Attribute, div, img, button, a, span, text, h1, header)
+import Html exposing ( Html
+                     , Attribute
+                     , div
+                     , img
+                     , button
+                     , a
+                     , span
+                     , text
+                     , h1
+                     , header
+                     )
 import Html.Events exposing (onClick, on)
-import Html.Attributes exposing (id, class, src, href, target, rel, alt)
+import Html.Attributes exposing ( id
+                                , class
+                                , src
+                                , href
+                                , target
+                                , rel
+                                , alt
+                                , attribute
+                                )
 import Html.Lazy exposing (lazy)
 import Browser exposing (Document)
 import Json.Decode
@@ -14,101 +32,115 @@ import Regex exposing (Regex, Match, replace)
 
 view : Model -> Document Msg
 view model =
-    { title = "SVG Editor"
-    , body =
-        case model.load of
-            Loading -> []
+  { title = "SVG Editor"
+  , body =
+    case model.load of
+      Loading -> []
 
-            Loaded  -> [ lazy container model ]
-    }
+      Loaded  -> [ lazy container model ]
+  }
 
 container : Model -> Html Msg
 container model =
-    div [ id "container", class (if valid model.status then "valid" else "error") ]
-        [ header [] [ h1 [] [ text "SGV Editor" ] ]
-        , display model
-        , lazy editor model
-        ]
+  div 
+    (
+      [ id "container", aria_role "application" ]
+      ++ 
+      (if valid model.status then [] else [class "error"])
+    )
+    [ h1 [] [ text "SGV Editor" ]
+    , display model
+    , lazy editor model
+    ]
 
 display : Model -> Html Msg
 display model =
-    div [ id "display"
-        , class (if darkMode model.mode then "dark" else "light") 
-        ]
-        [ img 
-          [ id "image", src (uri model), loaded model, alt "Picture Display" ] 
-          []
-        , errorIcon
-        , button [ onClick Download, alt "Download File" ] [ downloadIcon ]
-        , button 
-            [ onClick (Upload Requested), alt "Upload File" ] 
-            [ uploadIcon ]
-        , button 
-            [ onClick ToggleDarkMode, alt "Toggle Dark Mode" ] 
-            [ bulbIcon model.mode ]
-        ]
+  div 
+    (
+      [ id "display"
+      , aria_role "region"
+      , class (if darkMode model.mode then "dark" else "light") 
+      ] 
+      ++ 
+      -- Alert users when the image is invalid
+      (if valid model.status then [] else [aria_role "alert"])
+    )
+    [ img 
+      [ id "image", src (uri model), loaded model, alt "Picture Display" ] 
+      []
+    , errorIcon
+    , button [ onClick Download, alt "Download File" ] [ downloadIcon ]
+    , button 
+        [ onClick (Upload Requested), alt "Upload File" ] 
+        [ uploadIcon ]
+    , button 
+        [ onClick ToggleDarkMode, alt "Toggle Dark Mode" ] 
+        [ bulbIcon model.mode ]
+    ]
 
 uri : Model -> String
 uri model =
-    "data:image/svg+xml;utf8," ++ (replace model.uriEncoder percentEscape model.image)
+  "data:image/svg+xml;utf8," 
+  ++ (replace model.uriEncoder percentEscape model.image)
+
+aria_role : String -> Attribute msg
+aria_role = attribute "aria-role"
 
 percentEscape : Match -> String
 percentEscape m =
-    case m.match of
-        "!" -> "%21"
-        "#" -> "%23"
-        "$" -> "%24"
-        "%" -> "%25"
-        "&" -> "%26"
-        "'" -> "%27"
-        "(" -> "%28"
-        ")" -> "%29"
-        "*" -> "%2A"
-        "+" -> "%2B"
-        "," -> "%2C"
-        "/" -> "%2F"
-        ":" -> "%3A"
-        ";" -> "%3B"
-        "=" -> "%3D"
-        "?" -> "%3F"
-        "@" -> "%40"
-        "[" -> "%5B"
-        "]" -> "%5D"
-        str -> str
+  case m.match of
+    "!" -> "%21"
+    "#" -> "%23"
+    "$" -> "%24"
+    "%" -> "%25"
+    "&" -> "%26"
+    "'" -> "%27"
+    "(" -> "%28"
+    ")" -> "%29"
+    "*" -> "%2A"
+    "+" -> "%2B"
+    "," -> "%2C"
+    "/" -> "%2F"
+    ":" -> "%3A"
+    ";" -> "%3B"
+    "=" -> "%3D"
+    "?" -> "%3F"
+    "@" -> "%40"
+    "[" -> "%5B"
+    "]" -> "%5D"
+    str -> str
 
 onError : msg -> Attribute msg
 onError f = 
-    on "error" (Json.Decode.succeed f)
+  on "error" (Json.Decode.succeed f)
 
 onLoad : msg -> Attribute msg
 onLoad f = 
-    on "load" (Json.Decode.succeed f)
+  on "load" (Json.Decode.succeed f)
 
 loaded : Model -> Attribute Msg
 loaded model =
-    if valid model.status then onError (Validation Invalid) else onLoad (Validation Valid)
+  if valid model.status 
+    then onError (Validation Invalid) 
+    else onLoad (Validation Valid)
 
 link : List (Attribute Msg) -> List (Html Msg) -> Html Msg
 link attrs content =
-    a ([ target "_blank", rel "noopener noreferrer" ] ++ attrs)
-        content
+  a ([ target "_blank", rel "noopener noreferrer" ] ++ attrs) content
 
 valid : Status -> Bool
 valid status =
-    case status of
-        Valid   -> True
+  case status of
+    Valid   -> True
 
-        Invalid -> False
+    Invalid -> False
 
 darkMode : Mode -> Bool
 darkMode mode =
-    case mode of
-        Light -> False
+  case mode of
+    Light -> False
 
-        Dark  -> True
-        
-logo : Html Msg
-logo = img [ src "assets/logo.svg", alt "RawSvg" ] []
+    Dark  -> True
 
 downloadIcon : Html Msg
 downloadIcon = img [ src "assets/download.svg", alt "Download" ] []
@@ -118,12 +150,12 @@ uploadIcon = img [ src "assets/upload.svg", alt "Upload" ] []
 
 bulbIcon : Mode -> Html Msg
 bulbIcon mode =
-    img [ src (if darkMode mode then "assets/bulb-on.svg" else "assets/bulb-off.svg")
-        , alt "Toggle Dark Mode"
-        ] []
+  img [ src (if darkMode mode then "assets/bulb-on.svg" else "assets/bulb-off.svg")
+      , alt "Toggle Dark Mode"
+      ] []
 
 errorIcon : Html Msg
-errorIcon = img [ id "error", src "assets/error.svg", alt "Something Went Wrong" ] []
-
-githubIcon : Html Msg
-githubIcon = img [ src "assets/github.svg", alt "Github Repository" ] []
+errorIcon = 
+  img 
+    [ id "error", src "assets/error.svg", alt "Something Went Wrong" ] 
+    []
diff --git a/styles.css b/styles.css
@@ -9,173 +9,116 @@
     user-select: none;
     scrollbar-width: none;
 
-    transition: background-color .5s ease, color .5s ease;
-
-    --background: #0d1928;
     --selection: #A599E940;
-    --foreground: #dfdfdf;
     --dark: #000011;
 
     --tag: #9EFFFF;
-    --prop: #FAD000;
+    --attribute: var(--accent);
     --string: #A5FF90;
     --comm: #B362FF;
 }
 
-@media (pointer: fine) {
-    :root {
-        --large: 10vmax;
-        --small: 2.5vmax;
-        --tiny: 1vmax;
-    }
-}
-
-@media (pointer: coarse) {
-    :root {
-        --large: 15vmax;
-        --small: 3vmax;
-        --tiny: 2vmax;
-    }
-}
-
-:root::-webkit-scrollbar {
-    width: 0px; /*Chrome + Safari + Opera*/
-}
-
 *:focus {
     outline: none;
 }
 
 body {
-    width: 100vw;
     height: 100vh;
     min-height: 25vw;
 
-    margin: 0;
     padding: 0;
 }
 
-a { text-decoration: none; }
-
-body > div#container {
+#container {
     display: grid;
 
-    width: calc(100vw - 2 * var(--small));
-    min-height: calc(100vh - 2 * var(--small));
-
-    grid-gap: calc(1.5 * var(--tiny));
-    padding: var(--small);
+    grid-gap: 1em;
+    grid-template-rows: 1.8em 30vh auto;
+    grid-template-areas: "title" 
+                         "display" 
+                         "text";
 
-    background: var(--background);
+    height: calc(100% - 2em);
+    padding: 1em;
 }
 
 @media (orientation: landscape) {
-    body > div#container {
-        grid-template-rows: calc(4 * var(--tiny)) auto;
+    #container {
+        grid-template-rows: 1.8em auto;
         grid-template-columns: 1fr 2fr;
         grid-template-areas: "display title"
                              "display text";
     }
 }
 
-@media (orientation: portrait) {
-    body > div#container {
-        grid-template-rows: calc(4 * var(--tiny)) 30vh auto;
-        grid-template-areas: "title" "display" "text";
-
-        height: calc(100vh - 2 * var(--small));
-    }
-}
-
-body > div#container > div#title {
-    grid-area: title;
-
-    align-items: center;
-    vertical-align: middle;
-    overflow: hidden;
-}
-
-header * {
-    overflow: hidden;
-    white-space: nowrap;
-}
-
-header h1 {
-  width: max-content;
-}
-
-body > div#container > header > a#site-link {
-    float: right;
-}
-
-body > div#container > div#display > img#error, body > div#container > div#display > img {
+#container #display img {
     grid-area: image;
 
     max-width: 100% !important;
-    max-height: calc(100% - 8 * var(--tiny)) !important;
+    max-height: 100% !important;
 
     justify-self: center;
     align-self: center;
 }
 
-body > div#container, body > div#container > * {
+@media (orientation: portrait) {
+  #container #display img#image {
+    max-height: calc(30vh - 4.8em) !important;
+  }
+}
+
+#container, #container * {
     transition: background-color .25s ease, fill .25s ease;
 }
 
-body > div#container > div#display {
+#container #display {
     display: grid;
     grid-area: display;
 
-    grid-template-rows: calc(100% - 6 * var(--tiny)) calc(4 * var(--tiny));
-    grid-template-columns: calc(4 * var(--tiny)) calc(4 * var(--tiny)) calc(4 * var(--tiny)) auto;
+    grid-template-rows: auto 2em;
+    grid-template-columns: repeat(3, 2em) auto;
     grid-template-areas: "image  image  image  image"
                          "button button button .";
+    grid-gap: 1em;
 
-    grid-gap: calc(2 * var(--tiny));
-    padding: calc(2 * var(--tiny));
-
+    padding: 1em;
     background: var(--foreground);
-
-    box-shadow: 0 0 calc(.25 * var(--small)) .5vmax #00000015;
 }
 
-body > div#container > div#display.dark {
+#container #display.dark {
     background: var(--dark);
 }
 
-body > div#container > div#display > button {
+#container #display button {
     grid-area: auto;
 
     background: var(--background);
     border: none;
-    border-radius: calc(2 * var(--tiny));
 
-    padding: 0;
-    
     cursor: pointer;
 }
 
-body > div#container > div#display > button > img {
+#container #display button img {
     width: 100% !important;
     height: 100% !important;
 }
 
-body > div#container > div#display > img#error {
-    width: calc(100% - 2 * var(--tiny));
-    height: calc(100% - 2 * var(--tiny));
+#container #display img#error {
+    width: calc(100% - 2em);
+    height: calc(100% - 2em);
 
-    margin: var(--tiny);
+    margin: 1em;
 }
 
-body > div#container > div#display > img#error, div#container.error > div#display > img#image {
+#container #display img#error, #container.error #display img#image {
     display: none;
 }
 
-body > div#container.error > div#display > img#error {
+#container.error #display #error {
     display: block;
 }
 
-body > div#container > div#editor {
+#container #editor {
     grid-area: text;
     position: relative;
 
@@ -186,17 +129,16 @@ body > div#container > div#editor {
     line-height: 1em;
 }
 
-body > div#container > div#editor > * {
+#container #editor > * {
     position: absolute;
     will-change: transform;
 }
 
-body > div#container > div#editor > *, body > div#container > div#editor > * > * {
-    margin: 0 !important;
-    font-size: 1rem !important;
+#container #editor * {
+  margin: 0;
 }
 
-body > div#container > div#editor > textarea {
+#container #editor textarea {
     z-index: 1;
 
     resize: none;
@@ -216,30 +158,31 @@ body > div#container > div#editor > textarea {
     scrollbar-color: var(--foreground) transparent;
     scrollbar-width: thin;
 
-    line-height: 1.25;
+    font-size: 15pt;
+    line-height: 1.15em;
 }
 
-body > div#container > div#editor > textarea::-webkit-scrollbar {
+#container #editor textarea::-webkit-scrollbar {
     width: 2pt;
     height: 2pt;
 }
 
-body > div#container > div#editor > textarea::-webkit-scrollbar-track {
+#container #editor textarea::-webkit-scrollbar-track {
     background: transparent;
     outline: none;
 }
 
-body > div#container > div#editor > textarea::-webkit-scrollbar-thumb {
+#container #editor textarea::-webkit-scrollbar-thumb {
     background: var(--foreground);
     outline: none;
 }
 
-body > div#container > div#editor > textarea::selection {
+#container #editor textarea::selection {
     background: var(--selection);
     color: transparent;
 }
 
-body > div#container > div#editor > textarea::-moz-selection {
+#container #editor textarea::-moz-selection {
     background: var(--selection);
 }
 
@@ -251,4 +194,4 @@ body > div#container > div#editor > textarea::-moz-selection {
 .elmsh , .elmsh7 { color: var(--foreground); }
 .elmsh1, .elmsh2, .elmsh6 { color: var(--string); }
 .elmsh3, .elmsh4 { color: var(--tag); }
-.elmsh5 { color: var(--prop); }
+.elmsh5 { color: var(--attribute); }