Last active
July 16, 2019 16:31
-
-
Save beiller/01355d2f11c40d1ab12e8af1695dadf6 to your computer and use it in GitHub Desktop.
Bill Hamilton 2019
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!DOCTYPE html> | |
<html> | |
<head> | |
<meta charset="utf-8"> | |
<meta name="viewport" content="width=device-width, initial-scale=1.0"> | |
<title>Bill Hamilton 2019</title> | |
<style> | |
@font-face{font-family:KaTeX_AMS;src:url(/static/fonts/KaTeX_AMS-Regular.e78e28b.woff2) format("woff2"),url(/static/fonts/KaTeX_AMS-Regular.7f06b4e.woff) format("woff"),url(/static/fonts/KaTeX_AMS-Regular.aaf4eee.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Caligraphic;src:url(/static/fonts/KaTeX_Caligraphic-Bold.4ec58be.woff2) format("woff2"),url(/static/fonts/KaTeX_Caligraphic-Bold.1e802ca.woff) format("woff"),url(/static/fonts/KaTeX_Caligraphic-Bold.021dd4d.ttf) format("truetype");font-weight:700;font-style:normal}@font-face{font-family:KaTeX_Caligraphic;src:url(/static/fonts/KaTeX_Caligraphic-Regular.7edb53b.woff2) format("woff2"),url(/static/fonts/KaTeX_Caligraphic-Regular.d3b46c3.woff) format("woff"),url(/static/fonts/KaTeX_Caligraphic-Regular.d49f2d5.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Fraktur;src:url(/static/fonts/KaTeX_Fraktur-Bold.d5b59ec.woff2) format("woff2"),url(/static/fonts/KaTeX_Fraktur-Bold.c4c8cab.woff) format("woff"),url(/static/fonts/KaTeX_Fraktur-Bold.a31e7cb.ttf) format("truetype");font-weight:700;font-style:normal}@font-face{font-family:KaTeX_Fraktur;src:url(/static/fonts/KaTeX_Fraktur-Regular.32a5339.woff2) format("woff2"),url(/static/fonts/KaTeX_Fraktur-Regular.b7d9c46.woff) format("woff"),url(/static/fonts/KaTeX_Fraktur-Regular.a48dad4.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Main;src:url(/static/fonts/KaTeX_Main-Bold.8e1e01c.woff2) format("woff2"),url(/static/fonts/KaTeX_Main-Bold.22086eb.woff) format("woff"),url(/static/fonts/KaTeX_Main-Bold.9ceff51.ttf) format("truetype");font-weight:700;font-style:normal}@font-face{font-family:KaTeX_Main;src:url(/static/fonts/KaTeX_Main-BoldItalic.284a17f.woff2) format("woff2"),url(/static/fonts/KaTeX_Main-BoldItalic.4c57dbc.woff) format("woff"),url(/static/fonts/KaTeX_Main-BoldItalic.e8b44b9.ttf) format("truetype");font-weight:700;font-style:italic}@font-face{font-family:KaTeX_Main;src:url(/static/fonts/KaTeX_Main-Italic.e533d5a.woff2) format("woff2"),url(/static/fonts/KaTeX_Main-Italic.99be0e1.woff) format("woff"),url(/static/fonts/KaTeX_Main-Italic.29c8639.ttf) format("truetype");font-weight:400;font-style:italic}@font-face{font-family:KaTeX_Main;src:url(/static/fonts/KaTeX_Main-Regular.5c734d7.woff2) format("woff2"),url(/static/fonts/KaTeX_Main-Regular.b741441.woff) format("woff"),url(/static/fonts/KaTeX_Main-Regular.5c94aef.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Math;src:url(/static/fonts/KaTeX_Math-BoldItalic.d747bd1.woff2) format("woff2"),url(/static/fonts/KaTeX_Math-BoldItalic.b13731e.woff) format("woff"),url(/static/fonts/KaTeX_Math-BoldItalic.9a2834a.ttf) format("truetype");font-weight:700;font-style:italic}@font-face{font-family:KaTeX_Math;src:url(/static/fonts/KaTeX_Math-Italic.4ad08b8.woff2) format("woff2"),url(/static/fonts/KaTeX_Math-Italic.f030390.woff) format("woff"),url(/static/fonts/KaTeX_Math-Italic.291e76b.ttf) format("truetype");font-weight:400;font-style:italic}@font-face{font-family:KaTeX_SansSerif;src:url(/static/fonts/KaTeX_SansSerif-Bold.6e0830b.woff2) format("woff2"),url(/static/fonts/KaTeX_SansSerif-Bold.3fb4195.woff) format("woff"),url(/static/fonts/KaTeX_SansSerif-Bold.7dc027c.ttf) format("truetype");font-weight:700;font-style:normal}@font-face{font-family:KaTeX_SansSerif;src:url(/static/fonts/KaTeX_SansSerif-Italic.fba01c9.woff2) format("woff2"),url(/static/fonts/KaTeX_SansSerif-Italic.727a9b0.woff) format("woff"),url(/static/fonts/KaTeX_SansSerif-Italic.4059868.ttf) format("truetype");font-weight:400;font-style:italic}@font-face{font-family:KaTeX_SansSerif;src:url(/static/fonts/KaTeX_SansSerif-Regular.d929cd6.woff2) format("woff2"),url(/static/fonts/KaTeX_SansSerif-Regular.2555754.woff) format("woff"),url(/static/fonts/KaTeX_SansSerif-Regular.5c58d16.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Script;src:url(/static/fonts/KaTeX_Script-Regular.755e249.woff2) format("woff2"),url(/static/fonts/KaTeX_Script-Regular.d524c9a.woff) format("woff"),url(/static/fonts/KaTeX_Script-Regular.d12ea9e.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size1;src:url(/static/fonts/KaTeX_Size1-Regular.048c39c.woff2) format("woff2"),url(/static/fonts/KaTeX_Size1-Regular.08b5f00.woff) format("woff"),url(/static/fonts/KaTeX_Size1-Regular.7342d45.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size2;src:url(/static/fonts/KaTeX_Size2-Regular.81d6b8d.woff2) format("woff2"),url(/static/fonts/KaTeX_Size2-Regular.af24b0e.woff) format("woff"),url(/static/fonts/KaTeX_Size2-Regular.eb130dc.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size3;src:url(/static/fonts/KaTeX_Size3-Regular.b311ca0.woff2) format("woff2"),url(/static/fonts/KaTeX_Size3-Regular.0d89264.woff) format("woff"),url(/static/fonts/KaTeX_Size3-Regular.7e02a40.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size4;src:url(/static/fonts/KaTeX_Size4-Regular.6a3255d.woff2) format("woff2"),url(/static/fonts/KaTeX_Size4-Regular.68895bb.woff) format("woff"),url(/static/fonts/KaTeX_Size4-Regular.ad76725.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Typewriter;src:url(/static/fonts/KaTeX_Typewriter-Regular.6cc31ea.woff2) format("woff2"),url(/static/fonts/KaTeX_Typewriter-Regular.3fe216d.woff) format("woff"),url(/static/fonts/KaTeX_Typewriter-Regular.2570235.ttf) format("truetype");font-weight:400;font-style:normal}.katex{font:normal 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;text-indent:0;text-rendering:auto}.katex *{-ms-high-contrast-adjust:none!important}.katex .katex-version:after{content:"0.10.2"}.katex .katex-mathml{position:absolute;clip:rect(1px,1px,1px,1px);padding:0;border:0;height:1px;width:1px;overflow:hidden}.katex .katex-html>.newline{display:block}.katex .base{position:relative;white-space:nowrap;width:min-content}.katex .base,.katex .strut{display:inline-block}.katex .textbf{font-weight:700}.katex .textit{font-style:italic}.katex .textrm{font-family:KaTeX_Main}.katex .textsf{font-family:KaTeX_SansSerif}.katex .texttt{font-family:KaTeX_Typewriter}.katex .mathdefault{font-family:KaTeX_Math;font-style:italic}.katex .mathit{font-family:KaTeX_Main;font-style:italic}.katex .mathrm{font-style:normal}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .boldsymbol{font-family:KaTeX_Math;font-weight:700;font-style:italic}.katex .amsrm,.katex .mathbb,.katex .textbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak,.katex .textfrak{font-family:KaTeX_Fraktur}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr,.katex .textscr{font-family:KaTeX_Script}.katex .mathsf,.katex .textsf{font-family:KaTeX_SansSerif}.katex .mathboldsf,.katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:700}.katex .mathitsf,.katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .vlist-t{display:inline-table;table-layout:fixed}.katex .vlist-r{display:table-row}.katex .vlist{display:table-cell;vertical-align:bottom;position:relative}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist>span>.pstrut{overflow:hidden;width:0}.katex .vlist-t2{margin-right:-2px}.katex .vlist-s{display:table-cell;vertical-align:bottom;font-size:1px;width:2px;min-width:2px}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{display:inline-block;width:100%;border-bottom-style:solid}.katex .hdashline,.katex .hline,.katex .mfrac .frac-line,.katex .overline .overline-line,.katex .rule,.katex .underline .underline-line{min-height:1px}.katex .mspace{display:inline-block}.katex .clap,.katex .llap,.katex .rlap{width:0;position:relative}.katex .clap>.inner,.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .clap>.fix,.katex .llap>.fix,.katex .rlap>.fix{display:inline-block}.katex .llap>.inner{right:0}.katex .clap>.inner,.katex .rlap>.inner{left:0}.katex .clap>.inner>span{margin-left:-50%;margin-right:50%}.katex .rule{display:inline-block;border:0 solid;position:relative}.katex .hline,.katex .overline .overline-line,.katex .underline .underline-line{display:inline-block;width:100%;border-bottom-style:solid}.katex .hdashline{display:inline-block;width:100%;border-bottom-style:dashed}.katex .sqrt>.root{margin-left:.27777778em;margin-right:-.55555556em}.katex .fontsize-ensurer,.katex .sizing{display:inline-block}.katex .fontsize-ensurer.reset-size1.size1,.katex .sizing.reset-size1.size1{font-size:1em}.katex .fontsize-ensurer.reset-size1.size2,.katex .sizing.reset-size1.size2{font-size:1.2em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.4em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:3.456em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.148em}.katex .fontsize-ensurer.reset-size1.size11,.katex .sizing.reset-size1.size11{font-size:4.976em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:.83333333em}.katex .fontsize-ensurer.reset-size2.size2,.katex .sizing.reset-size2.size2{font-size:1em}.katex .fontsize-ensurer.reset-size2.size3,.katex .sizing.reset-size2.size3{font-size:1.16666667em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.5em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.66666667em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.4em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.88em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.45666667em}.katex .fontsize-ensurer.reset-size2.size11,.katex .sizing.reset-size2.size11{font-size:4.14666667em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:.71428571em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:.85714286em}.katex .fontsize-ensurer.reset-size3.size3,.katex .sizing.reset-size3.size3{font-size:1em}.katex .fontsize-ensurer.reset-size3.size4,.katex .sizing.reset-size3.size4{font-size:1.14285714em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.28571429em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.42857143em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.71428571em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.05714286em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.46857143em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:2.96285714em}.katex .fontsize-ensurer.reset-size3.size11,.katex .sizing.reset-size3.size11{font-size:3.55428571em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:.75em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:.875em}.katex .fontsize-ensurer.reset-size4.size4,.katex .sizing.reset-size4.size4{font-size:1em}.katex .fontsize-ensurer.reset-size4.size5,.katex .sizing.reset-size4.size5{font-size:1.125em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.25em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.5em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.8em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.16em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.5925em}.katex .fontsize-ensurer.reset-size4.size11,.katex .sizing.reset-size4.size11{font-size:3.11em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:.55555556em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:.66666667em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:.77777778em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:.88888889em}.katex .fontsize-ensurer.reset-size5.size5,.katex .sizing.reset-size5.size5{font-size:1em}.katex .fontsize-ensurer.reset-size5.size6,.katex .sizing.reset-size5.size6{font-size:1.11111111em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.6em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:1.92em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.30444444em}.katex .fontsize-ensurer.reset-size5.size11,.katex .sizing.reset-size5.size11{font-size:2.76444444em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:.6em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:.7em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:.8em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:.9em}.katex .fontsize-ensurer.reset-size6.size6,.katex .sizing.reset-size6.size6{font-size:1em}.katex .fontsize-ensurer.reset-size6.size7,.katex .sizing.reset-size6.size7{font-size:1.2em}.katex .fontsize-ensurer.reset-size6.size8,.katex .sizing.reset-size6.size8{font-size:1.44em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.728em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.074em}.katex .fontsize-ensurer.reset-size6.size11,.katex .sizing.reset-size6.size11{font-size:2.488em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:.41666667em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:.5em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:.58333333em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:.66666667em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:.75em}.katex .fontsize-ensurer.reset-size7.size6,.katex .sizing.reset-size7.size6{font-size:.83333333em}.katex .fontsize-ensurer.reset-size7.size7,.katex .sizing.reset-size7.size7{font-size:1em}.katex .fontsize-ensurer.reset-size7.size8,.katex .sizing.reset-size7.size8{font-size:1.2em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.44em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.72833333em}.katex .fontsize-ensurer.reset-size7.size11,.katex .sizing.reset-size7.size11{font-size:2.07333333em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:.34722222em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:.41666667em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:.48611111em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:.55555556em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:.625em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:.69444444em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:.83333333em}.katex .fontsize-ensurer.reset-size8.size8,.katex .sizing.reset-size8.size8{font-size:1em}.katex .fontsize-ensurer.reset-size8.size9,.katex .sizing.reset-size8.size9{font-size:1.2em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.44027778em}.katex .fontsize-ensurer.reset-size8.size11,.katex .sizing.reset-size8.size11{font-size:1.72777778em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:.28935185em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:.34722222em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:.40509259em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:.46296296em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:.52083333em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:.5787037em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:.69444444em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:.83333333em}.katex .fontsize-ensurer.reset-size9.size9,.katex .sizing.reset-size9.size9{font-size:1em}.katex .fontsize-ensurer.reset-size9.size10,.katex .sizing.reset-size9.size10{font-size:1.20023148em}.katex .fontsize-ensurer.reset-size9.size11,.katex .sizing.reset-size9.size11{font-size:1.43981481em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:.24108004em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:.28929605em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:.33751205em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:.38572806em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:.43394407em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:.48216008em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:.57859209em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:.69431051em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:.83317261em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{font-size:1em}.katex .fontsize-ensurer.reset-size10.size11,.katex .sizing.reset-size10.size11{font-size:1.19961427em}.katex .fontsize-ensurer.reset-size11.size1,.katex .sizing.reset-size11.size1{font-size:.20096463em}.katex .fontsize-ensurer.reset-size11.size2,.katex .sizing.reset-size11.size2{font-size:.24115756em}.katex .fontsize-ensurer.reset-size11.size3,.katex .sizing.reset-size11.size3{font-size:.28135048em}.katex .fontsize-ensurer.reset-size11.size4,.katex .sizing.reset-size11.size4{font-size:.32154341em}.katex .fontsize-ensurer.reset-size11.size5,.katex .sizing.reset-size11.size5{font-size:.36173633em}.katex .fontsize-ensurer.reset-size11.size6,.katex .sizing.reset-size11.size6{font-size:.40192926em}.katex .fontsize-ensurer.reset-size11.size7,.katex .sizing.reset-size11.size7{font-size:.48231511em}.katex .fontsize-ensurer.reset-size11.size8,.katex .sizing.reset-size11.size8{font-size:.57877814em}.katex .fontsize-ensurer.reset-size11.size9,.katex .sizing.reset-size11.size9{font-size:.69453376em}.katex .fontsize-ensurer.reset-size11.size10,.katex .sizing.reset-size11.size10{font-size:.83360129em}.katex .fontsize-ensurer.reset-size11.size11,.katex .sizing.reset-size11.size11{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}.katex .nulldelimiter{display:inline-block;width:.12em}.katex .delimcenter,.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .accent>.vlist-t,.katex .op-limits>.vlist-t{text-align:center}.katex .accent .accent-body{position:relative}.katex .accent .accent-body:not(.accent-full){width:0}.katex .overlay{display:block}.katex .mtable .vertical-separator{display:inline-block;margin:0 -.025em;border-right:.05em solid;min-width:1px}.katex .mtable .vs-dashed{border-right:.05em dashed}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist-t{text-align:center}.katex .mtable .col-align-l>.vlist-t{text-align:left}.katex .mtable .col-align-r>.vlist-t{text-align:right}.katex .svg-align{text-align:left}.katex svg{display:block;position:absolute;width:100%;height:inherit;fill:currentColor;stroke:currentColor;fill-rule:nonzero;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1}.katex svg path{stroke:none}.katex img{border-style:none;min-width:0;min-height:0;max-width:none;max-height:none}.katex .stretchy{width:100%;display:block;position:relative;overflow:hidden}.katex .stretchy:after,.katex .stretchy:before{content:""}.katex .hide-tail{width:100%;position:relative;overflow:hidden}.katex .halfarrow-left{position:absolute;left:0;width:50.2%;overflow:hidden}.katex .halfarrow-right{position:absolute;right:0;width:50.2%;overflow:hidden}.katex .brace-left{position:absolute;left:0;width:25.1%;overflow:hidden}.katex .brace-center{position:absolute;left:25%;width:50%;overflow:hidden}.katex .brace-right{position:absolute;right:0;width:25.1%;overflow:hidden}.katex .x-arrow-pad{padding:0 .5em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox,.katex .fcolorbox{box-sizing:border-box;border:.04em solid}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap{margin-left:-.2em;margin-right:-.2em}.katex .sout{border-bottom-style:solid;border-bottom-width:.08em}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:block;text-align:center;white-space:nowrap}.katex-display>.katex>.katex-html{display:block;position:relative}.katex-display>.katex>.katex-html>.tag{position:absolute;right:0}.katex-display.leqno>.katex>.katex-html>.tag{left:0;right:auto}.katex-display.fleqn>.katex{text-align:left}@font-face{font-family:Lato;font-style:normal;font-weight:400;src:url(/static/fonts/lato-normal.27bd77b.woff) format("woff")}@font-face{font-family:Lato;font-style:italic;font-weight:400;src:url(/static/fonts/lato-normal-italic.f28f2d6.woff) format("woff")}@font-face{font-family:Lato;font-style:normal;font-weight:600;src:url(/static/fonts/lato-black.f80bda6.woff) format("woff")}@font-face{font-family:Lato;font-style:italic;font-weight:600;src:url(/static/fonts/lato-black-italic.798eafd.woff) format("woff")}@font-face{font-family:Roboto Mono;font-style:normal;font-weight:400;src:url(/static/fonts/RobotoMono-Regular.0b6a547.woff) format("woff")}@font-face{font-family:Roboto Mono;font-style:normal;font-weight:600;src:url(/static/fonts/RobotoMono-Bold.819f3b2.woff) format("woff")}.prism *,.token.pre.gfm *{font-weight:inherit!important}.prism .token.cdata,.prism .token.comment,.prism .token.doctype,.prism .token.prolog,.token.pre.gfm .token.cdata,.token.pre.gfm .token.comment,.token.pre.gfm .token.doctype,.token.pre.gfm .token.prolog{color:#708090}.prism .token.punctuation,.token.pre.gfm .token.punctuation{color:#999}.prism .namespace,.token.pre.gfm .namespace{opacity:.7}.prism .token.boolean,.prism .token.constant,.prism .token.deleted,.prism .token.number,.prism .token.property,.prism .token.symbol,.prism .token.tag,.token.pre.gfm .token.boolean,.token.pre.gfm .token.constant,.token.pre.gfm .token.deleted,.token.pre.gfm .token.number,.token.pre.gfm .token.property,.token.pre.gfm .token.symbol,.token.pre.gfm .token.tag{color:#905}.prism .token.attr-name,.prism .token.builtin,.prism .token.char,.prism .token.inserted,.prism .token.selector,.prism .token.string,.token.pre.gfm .token.attr-name,.token.pre.gfm .token.builtin,.token.pre.gfm .token.char,.token.pre.gfm .token.inserted,.token.pre.gfm .token.selector,.token.pre.gfm .token.string{color:#690}.prism .language-css .token.string,.prism .style .token.string,.prism .token.entity,.prism .token.operator,.prism .token.url,.token.pre.gfm .language-css .token.string,.token.pre.gfm .style .token.string,.token.pre.gfm .token.entity,.token.pre.gfm .token.operator,.token.pre.gfm .token.url{color:#a67f59}.prism .token.atrule,.prism .token.attr-value,.prism .token.keyword,.token.pre.gfm .token.atrule,.token.pre.gfm .token.attr-value,.token.pre.gfm .token.keyword{color:#07a}.prism .token.function,.token.pre.gfm .token.function{color:#dd4a68}.prism .token.important,.prism .token.regex,.prism .token.variable,.token.pre.gfm .token.important,.token.pre.gfm .token.regex,.token.pre.gfm .token.variable{color:#e90}.prism .token.bold,.prism .token.important,.token.pre.gfm .token.bold,.token.pre.gfm .token.important{font-weight:500}.prism .token.italic,.token.pre.gfm .token.italic{font-style:italic}.mermaid{font-size:16px}.mermaid svg{color:rgba(0,0,0,.75);width:100%;max-width:100%}.app--dark .mermaid svg{color:hsla(0,0%,100%,.75)}.mermaid svg *{font-family:Lato,Helvetica Neue,Helvetica,sans-serif}.mermaid .mermaid .label{color:#333}.mermaid .node circle,.mermaid .node ellipse,.mermaid .node polygon,.mermaid .node rect{fill:#eee;stroke:#999;stroke-width:1px}.mermaid .node.clickable{cursor:pointer}.mermaid .arrowheadPath{fill:#333}.mermaid .edgePath .path{stroke:#666;stroke-width:1.5px}.mermaid .edgeLabel{background-color:#fff}.mermaid .cluster rect{fill:#eaf2fb!important;stroke:#26a!important;stroke-width:1px!important}.mermaid .cluster text{fill:#333}.mermaid div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:trebuchet ms,verdana,arial;font-size:12px;background:#eaf2fb;border:1px solid #26a;border-radius:2px;pointer-events:none;z-index:100}.mermaid .actor{stroke:#999;fill:#eee}.mermaid text.actor{fill:#333;stroke:none}.mermaid .actor-line{stroke:#666}.mermaid .messageLine0{marker-end:"url(#arrowhead)"}.mermaid .messageLine0,.mermaid .messageLine1{stroke-width:1.5;stroke-dasharray:"2 2";stroke:#333}.mermaid #arrowhead{fill:#333}.mermaid #crosshead path{fill:#333!important;stroke:#333!important}.mermaid .messageText{fill:#333;stroke:none}.mermaid .labelBox{stroke:#999;fill:#eee}.mermaid .labelText,.mermaid .loopText{fill:#fff;stroke:none}.mermaid .loopLine{stroke-width:2;stroke-dasharray:"2 2";marker-end:"url(#arrowhead)";stroke:#999}.mermaid .note{stroke:#770;fill:#ffa}.mermaid .noteText{fill:#000;stroke:none;font-family:trebuchet ms,verdana,arial;font-size:14px}.mermaid .section{stroke:none;opacity:.2}.mermaid .section0,.mermaid .section2{fill:#80b3e6}.mermaid .section1,.mermaid .section3{fill:#fff;opacity:.2}.mermaid .sectionTitle0,.mermaid .sectionTitle1,.mermaid .sectionTitle2,.mermaid .sectionTitle3{fill:#333}.mermaid .sectionTitle{text-anchor:start;font-size:11px}.mermaid .grid .tick{stroke:#e6e6e6;opacity:.3;shape-rendering:crispEdges}.mermaid .grid path{stroke-width:0}.mermaid .today{fill:none;stroke:#d42;stroke-width:2px}.mermaid .task{stroke-width:2}.mermaid .taskText{text-anchor:middle;font-size:11px}.mermaid .taskTextOutsideRight{fill:#333;text-anchor:start;font-size:11px}.mermaid .taskTextOutsideLeft{fill:#333;text-anchor:end;font-size:11px}.mermaid .taskText0,.mermaid .taskText1,.mermaid .taskText2,.mermaid .taskText3{fill:#fff}.mermaid .task0,.mermaid .task1,.mermaid .task2,.mermaid .task3{fill:#26a;stroke:#1a4d80}.mermaid .taskTextOutside0,.mermaid .taskTextOutside1,.mermaid .taskTextOutside2,.mermaid .taskTextOutside3{fill:#333}.mermaid .active0,.mermaid .active1,.mermaid .active2,.mermaid .active3{fill:#eee;stroke:#1a4d80}.mermaid .activeText0,.mermaid .activeText1,.mermaid .activeText2,.mermaid .activeText3{fill:#333!important}.mermaid .done0,.mermaid .done1,.mermaid .done2,.mermaid .done3{stroke:#666;fill:#bbb;stroke-width:2}.mermaid .doneText0,.mermaid .doneText1,.mermaid .doneText2,.mermaid .doneText3{fill:#333!important}.mermaid .crit0,.mermaid .crit1,.mermaid .crit2,.mermaid .crit3{stroke:#b1361b;fill:#d42;stroke-width:2}.mermaid .activeCrit0,.mermaid .activeCrit1,.mermaid .activeCrit2,.mermaid .activeCrit3{stroke:#b1361b;fill:#eee;stroke-width:2}.mermaid .doneCrit0,.mermaid .doneCrit1,.mermaid .doneCrit2,.mermaid .doneCrit3{stroke:#b1361b;fill:#bbb;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}.mermaid .activeCritText0,.mermaid .activeCritText1,.mermaid .activeCritText2,.mermaid .activeCritText3,.mermaid .doneCritText0,.mermaid .doneCritText1,.mermaid .doneCritText2,.mermaid .doneCritText3{fill:#333!important}.mermaid .titleText{text-anchor:middle;font-size:18px;fill:#333}.mermaid g.classGroup text{fill:#999;stroke:none;font-family:trebuchet ms,verdana,arial;font-size:10px}.mermaid g.classGroup rect{fill:#eee;stroke:#999}.mermaid g.classGroup line{stroke:#999;stroke-width:1}.mermaid .classLabel .box{stroke:none;stroke-width:0;fill:#eee;opacity:.5}.mermaid .classLabel .label{fill:#999;font-size:10px}.mermaid .relation{stroke:#999;stroke-width:1;fill:none}.mermaid #compositionEnd,.mermaid #compositionStart{fill:#999;stroke:#999;stroke-width:1}.mermaid #aggregationEnd,.mermaid #aggregationStart{fill:#eee;stroke:#999;stroke-width:1}.mermaid #dependencyEnd,.mermaid #dependencyStart,.mermaid #extensionEnd,.mermaid #extensionStart{fill:#999;stroke:#999;stroke-width:1}.mermaid .branch-label,.mermaid .commit-id,.mermaid .commit-msg{fill:#d3d3d3;color:#d3d3d3}.app--dark .mermaid .label{color:#323d47}.app--dark .mermaid .node circle,.app--dark .mermaid .node ellipse,.app--dark .mermaid .node polygon,.app--dark .mermaid .node rect{fill:#bdd5ea;stroke:purple;stroke-width:1px}.app--dark .mermaid .node.clickable{cursor:pointer}.app--dark .mermaid .arrowheadPath{fill:#d3d3d3}.app--dark .mermaid .edgePath .path{stroke:#d3d3d3;stroke-width:1.5px}.app--dark .mermaid .edgeLabel{background-color:#e8e8e8}.app--dark .mermaid .cluster rect{fill:#6d6d65!important;stroke:hsla(0,0%,100%,.25)!important;stroke-width:1px!important}.app--dark .mermaid .cluster text{fill:#f9fffe}.app--dark .mermaid div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:trebuchet ms,verdana,arial;font-size:12px;background:#6d6d65;border:1px solid hsla(0,0%,100%,.25);border-radius:2px;pointer-events:none;z-index:100}.app--dark .mermaid .actor{stroke:#81b1db;fill:#bdd5ea}.app--dark .mermaid text.actor{fill:#000;stroke:none}.app--dark .mermaid .actor-line{stroke:#d3d3d3}.app--dark .mermaid .messageLine0{marker-end:"url(#arrowhead)"}.app--dark .mermaid .messageLine0,.app--dark .mermaid .messageLine1{stroke-width:1.5;stroke-dasharray:"2 2";stroke:#d3d3d3}.app--dark .mermaid #arrowhead{fill:#d3d3d3}.app--dark .mermaid #crosshead path{fill:#d3d3d3!important;stroke:#d3d3d3!important}.app--dark .mermaid .messageText{fill:#d3d3d3;stroke:none}.app--dark .mermaid .labelBox{stroke:#81b1db;fill:#bdd5ea}.app--dark .mermaid .labelText,.app--dark .mermaid .loopText{fill:#d3d3d3;stroke:none}.app--dark .mermaid .loopLine{stroke-width:2;stroke-dasharray:"2 2";marker-end:"url(#arrowhead)";stroke:#81b1db}.app--dark .mermaid .note{stroke:hsla(0,0%,100%,.25);fill:#fff5ad}.app--dark .mermaid .noteText{fill:#000;stroke:none;font-family:trebuchet ms,verdana,arial;font-size:14px}.app--dark .mermaid .section{stroke:none;opacity:.2}.app--dark .mermaid .section0{fill:hsla(0,0%,100%,.3)}.app--dark .mermaid .section2{fill:#eae8b9}.app--dark .mermaid .section1,.app--dark .mermaid .section3{fill:#fff;opacity:.2}.app--dark .mermaid .sectionTitle0,.app--dark .mermaid .sectionTitle1,.app--dark .mermaid .sectionTitle2,.app--dark .mermaid .sectionTitle3{fill:#f9fffe}.app--dark .mermaid .sectionTitle{text-anchor:start;font-size:11px}.app--dark .mermaid .grid .tick{stroke:#d3d3d3;opacity:.3;shape-rendering:crispEdges}.app--dark .mermaid .grid path{stroke-width:0}.app--dark .mermaid .today{fill:none;stroke:#db5757;stroke-width:2px}.app--dark .mermaid .task{stroke-width:2}.app--dark .mermaid .taskText{text-anchor:middle;font-size:11px}.app--dark .mermaid .taskTextOutsideRight{fill:#323d47;text-anchor:start;font-size:11px}.app--dark .mermaid .taskTextOutsideLeft{fill:#323d47;text-anchor:end;font-size:11px}.app--dark .mermaid .taskText0,.app--dark .mermaid .taskText1,.app--dark .mermaid .taskText2,.app--dark .mermaid .taskText3{fill:#323d47}.app--dark .mermaid .task0,.app--dark .mermaid .task1,.app--dark .mermaid .task2,.app--dark .mermaid .task3{fill:#bdd5ea;stroke:hsla(0,0%,100%,.5)}.app--dark .mermaid .taskTextOutside0,.app--dark .mermaid .taskTextOutside1,.app--dark .mermaid .taskTextOutside2,.app--dark .mermaid .taskTextOutside3{fill:#d3d3d3}.app--dark .mermaid .active0,.app--dark .mermaid .active1,.app--dark .mermaid .active2,.app--dark .mermaid .active3{fill:#81b1db;stroke:hsla(0,0%,100%,.5)}.app--dark .mermaid .activeText0,.app--dark .mermaid .activeText1,.app--dark .mermaid .activeText2,.app--dark .mermaid .activeText3{fill:#323d47!important}.app--dark .mermaid .done0,.app--dark .mermaid .done1,.app--dark .mermaid .done2,.app--dark .mermaid .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}.app--dark .mermaid .doneText0,.app--dark .mermaid .doneText1,.app--dark .mermaid .doneText2,.app--dark .mermaid .doneText3{fill:#323d47!important}.app--dark .mermaid .crit0,.app--dark .mermaid .crit1,.app--dark .mermaid .crit2,.app--dark .mermaid .crit3{stroke:#e83737;fill:#e83737;stroke-width:2}.app--dark .mermaid .activeCrit0,.app--dark .mermaid .activeCrit1,.app--dark .mermaid .activeCrit2,.app--dark .mermaid .activeCrit3{stroke:#e83737;fill:#81b1db;stroke-width:2}.app--dark .mermaid .doneCrit0,.app--dark .mermaid .doneCrit1,.app--dark .mermaid .doneCrit2,.app--dark .mermaid .doneCrit3{stroke:#e83737;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}.app--dark .mermaid .activeCritText0,.app--dark .mermaid .activeCritText1,.app--dark .mermaid .activeCritText2,.app--dark .mermaid .activeCritText3,.app--dark .mermaid .doneCritText0,.app--dark .mermaid .doneCritText1,.app--dark .mermaid .doneCritText2,.app--dark .mermaid .doneCritText3{fill:#323d47!important}.app--dark .mermaid .titleText{text-anchor:middle;font-size:18px;fill:#323d47}.app--dark .mermaid g.classGroup text{fill:purple;stroke:none;font-family:trebuchet ms,verdana,arial;font-size:10px}.app--dark .mermaid g.classGroup rect{fill:#bdd5ea;stroke:purple}.app--dark .mermaid g.classGroup line{stroke:purple;stroke-width:1}.app--dark .mermaid .classLabel .box{stroke:none;stroke-width:0;fill:#bdd5ea;opacity:.5}.app--dark .mermaid .classLabel .label{fill:purple;font-size:10px}.app--dark .mermaid .relation{stroke:purple;stroke-width:1;fill:none}.app--dark .mermaid #compositionEnd,.app--dark .mermaid #compositionStart{fill:purple;stroke:purple;stroke-width:1}.app--dark .mermaid #aggregationEnd,.app--dark .mermaid #aggregationStart{fill:#bdd5ea;stroke:purple;stroke-width:1}.app--dark .mermaid #dependencyEnd,.app--dark .mermaid #dependencyStart,.app--dark .mermaid #extensionEnd,.app--dark .mermaid #extensionStart{fill:purple;stroke:purple;stroke-width:1}.app--dark .mermaid .branch-label,.app--dark .mermaid .commit-id,.app--dark .mermaid .commit-msg{fill:#d3d3d3;color:#d3d3d3}/*! normalize-scss | MIT/GPLv2 License | bit.ly/normalize-scss */html{line-height:1.15;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,footer,header,nav,section{display:block}h1{font-size:2em;margin:.67em 0}figcaption,figure{display:block}figure{margin:1em 40px}hr{box-sizing:content-box;height:0;overflow:visible}main{display:block}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent;-webkit-text-decoration-skip:objects}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:inherit;font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}dfn{font-style:italic}mark{background-color:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}audio,video{display:inline-block}audio:not([controls]){display:none;height:0}img{border-style:none}svg:not(:root){overflow:hidden}button,input,optgroup,select,textarea{font-family:sans-serif;font-size:100%;line-height:1.15;margin:0}button{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}input{overflow:visible}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;display:table;max-width:100%;padding:0;color:inherit;white-space:normal}progress{display:inline-block;vertical-align:baseline}textarea{overflow:auto}details{display:block}summary{display:list-item}menu{display:block}canvas{display:inline-block}[hidden],template{display:none}body,html{color:rgba(0,0,0,.75);font-size:16px;font-family:Lato,Helvetica Neue,Helvetica,sans-serif;font-variant-ligatures:common-ligatures;line-height:1.67;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.app--dark .layout__panel--editor,.app--dark .layout__panel--preview{color:hsla(0,0%,100%,.75)}blockquote,dl,ol,p,pre,ul{margin:1.2em 0}h1,h2,h3,h4,h5,h6{margin:1.8em 0;line-height:1.33}h1:after,h2:after{content:"";display:block;position:relative;top:.33em;border-bottom:1px solid hsla(0,0%,50%,.33)}ol ol,ol ul,ul ol,ul ul{margin:0}dt{font-weight:700}a{color:#0c93e4;text-decoration:underline;text-decoration-skip:ink}a:focus,a:hover{text-decoration:none}code,pre,samp{font-family:Roboto Mono,Lucida Sans Typewriter,Lucida Console,monaco,Courrier,monospace;font-size:.85em}code *,pre *,samp *{font-size:inherit}blockquote{color:rgba(0,0,0,.5);padding-left:1.5em;border-left:5px solid rgba(0,0,0,.1)}.app--dark .layout__panel--editor blockquote,.app--dark .layout__panel--preview blockquote{color:hsla(0,0%,100%,.4);border-left-color:hsla(0,0%,100%,.1)}code{background-color:rgba(0,0,0,.05);border-radius:3px;padding:2px 4px}hr{border:0;border-top:1px solid hsla(0,0%,50%,.33);margin:2em 0}pre>code{background-color:rgba(0,0,0,.05);display:block;padding:.5em;-webkit-text-size-adjust:none;overflow-x:auto;white-space:pre}.toc ul{list-style-type:none;padding-left:20px}table{background-color:transparent;border-collapse:collapse;border-spacing:0}td,th{border-right:1px solid #dcdcdc;padding:8px 12px}td:last-child,th:last-child{border-right:0}td{border-top:1px solid #dcdcdc}mark{background-color:#f8f840}kbd{font-family:Lato,Helvetica Neue,Helvetica,sans-serif;background-color:#fff;border:1px solid rgba(63,63,63,.25);border-radius:3px;box-shadow:0 1px 0 rgba(63,63,63,.25);color:#333;display:inline-block;font-size:.8em;margin:0 .1em;padding:.1em .6em;white-space:nowrap}abbr[title]{border-bottom:1px dotted #777;cursor:help}img{max-width:100%}.task-list-item{list-style-type:none}.task-list-item-checkbox{margin:0 .2em 0 -1.3em}.footnote{font-size:.8em;position:relative;top:-.25em;vertical-align:top}.page-break-after{page-break-after:always}.abc-notation-block{overflow-x:auto!important}.stackedit__html{margin-bottom:180px;margin-left:auto;margin-right:auto;padding-left:30px;padding-right:30px;max-width:750px}.stackedit__toc ul{padding:0}.stackedit__toc ul a{margin:.5rem 0;padding:.5rem 1rem}.stackedit__toc ul ul{color:#888;font-size:.9em}.stackedit__toc ul ul a{margin:0;padding:.1rem 1rem}.stackedit__toc li{display:block}.stackedit__toc a{display:block;color:inherit;text-decoration:none}.stackedit__toc a:active,.stackedit__toc a:focus,.stackedit__toc a:hover{background-color:rgba(0,0,0,.075);border-radius:3px}.stackedit__left{position:fixed;display:none;width:250px;height:100%;top:0;left:0;overflow-x:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:none}@media (min-width:1060px){.stackedit__left{display:block}}.stackedit__right{position:absolute;right:0;top:0;left:0}@media (min-width:1060px){.stackedit__right{left:250px}}.stackedit--pdf blockquote{border-left-color:#ececec}.stackedit--pdf .stackedit__html{padding-left:0;padding-right:0;max-width:none} | |
</style> | |
</head> | |
<body class="stackedit"> | |
<div class="stackedit__html"><h1 id="bill-hamilton">Bill Hamilton</h1> | |
<h5 id="contact">Contact</h5> | |
<p><a href="mailto:beiller@gmail.com">beiller@gmail.com</a><br> | |
647.389.1872<br> | |
<a href="https://www.linkedin.com/in/bill-hamilton-42b53325/">https://www.linkedin.com/in/bill-hamilton-42b53325/</a></p> | |
<h2 id="summary">SUMMARY</h2> | |
<h3 id="technical-leader-full-stack-engineer-ecommerce-focused">Technical Leader, Full Stack Engineer, Seasoned Developer</h3> | |
<p>20 years of experience. Cloud cost optimizer, machine learning master using Keras and SciPy, open source contributor, and passionate about technology.</p> | |
<h2 id="development">DEVELOPMENT</h2> | |
<ul> | |
<li>Procedural, Object Oriented, and Functional programming languages</li> | |
<li>Over 20 languages and counting (Top 5: <em>Python, JavaScript, Java, Go, C</em>)</li> | |
<li>Frameworks such as React, Angular, Keras, Django, Wordpress</li> | |
<li>PCI Compliance, CASL, Secure Code Review Certified</li> | |
</ul> | |
<h2 id="cloud-applications">CLOUD APPLICATIONS</h2> | |
<ul> | |
<li>Event driven architecture (Apache Kafka, RabbitMQ, Amazon SQS, S3, Azure Blob Storage)</li> | |
<li>Microservice APIs using REST based architecture</li> | |
<li>Cloud (Amazon IaaS, Google Cloud IaaS, Azure PaaS/IaaS, Heroku PaaS)</li> | |
<li>CI/CD with Jenkins, Git, Bitbucket Pipelines, and Selenium</li> | |
<li>Docker, Webhook based deployments, Kubernetes and Terraform orchestration</li> | |
</ul> | |
<h2 id="monolithic-applications">MONOLITHIC APPLICATIONS</h2> | |
<ul> | |
<li>Websphere Commerce, Sterling, MQ, AIX, Oracle, Spring</li> | |
</ul> | |
<h2 id="experience">EXPERIENCE</h2> | |
<h3 id="lcbo">LCBO</h3> | |
<h4 id="senior-application-developer">Senior Application Developer</h4> | |
<h5 id="march-2017---present">March 2017 - Present</h5> | |
<p>Development team lead at LCBO coordinating cloud APIs with beautiful customer focused interfaces, mentoring internal, external, on-shore and off-shore development teams.</p> | |
<ul> | |
<li>Leading e-commerce backend and frontend development team of 4 using Java/JSP and Javascript</li> | |
<li>Performing code reviews, mentoring development teams, approval of source code changes based on pull request workflows</li> | |
<li>Leading University of Waterloo co-op teams of 4 using React, Angular, and Ionic with node js backends and TypeScript to build lightweight B2B applications</li> | |
<li>Lead engineer for LCBO public APIs to query Inventory, B2C Order Placement and B2B Integrations with autoscaling back-ends requiring sub-second response times</li> | |
<li>Launched cutting edge projects like Foodora courier delivery (B2B Integrations)</li> | |
<li>Architect and implement cloud based continuous integration pipelines including automated security scans, unit tests, and smoke tests using selenium scripts running in Docker containers</li> | |
<li>Continuous Deploy of applications to cloud PaaS providers such as Microsoft Azure, Google Cloud Platform, and Amazon Web Services</li> | |
<li>Integration of cloud technologies with legacy infratructure (Migration to git, Containerization)</li> | |
</ul> | |
<h4 id="senior-programmer-analyst">Senior Programmer Analyst</h4> | |
<h5 id="march-2011---march-2017-6-years-1-month">March 2011 - March 2017 (6 years 1 month)</h5> | |
<ul> | |
<li>Lead Developr of of LCBO Mobile App (2016 Android / IOS)</li> | |
<li>Java, J2EE development</li> | |
<li>SQL Mastery in Oracle PL/SQL, Teradata, DB2, Postgres, MySQL</li> | |
<li>Informatica, Sales forcasting, Demand chain and supply chain applications, chemical lab software and equipment support</li> | |
<li>Mentoring team members</li> | |
<li>Mobile B2B applications for tracking products and inventory management</li> | |
</ul> | |
<h3 id="citydirect-dot-info">CityDirect dot info</h3> | |
<h4 id="senior-application-developer-1">Senior Application Developer</h4> | |
<h5 id="september-2007---march-2011-3-years-7-months">September 2007 - March 2011 (3 years 7 months)</h5> | |
<ul> | |
<li>Cloud based telephony systems, advanced CRM data engineering to enable marketing teams</li> | |
<li>MySQL and Postgres Distributed Data Architecture (replication, clustering)</li> | |
<li>Lead Application Developer using PHP and Python</li> | |
<li>Networks (advanced routing and load balancing)</li> | |
<li>Web crawling, CRM applications, user interface design and optimization, application development and life cycles</li> | |
<li>Writing great documentation</li> | |
</ul> | |
<h3 id="honda-of-america-mfg.-inc.">Honda of America Mfg., Inc.</h3> | |
<h4 id="operations-help-desk">Operations Help Desk</h4> | |
<h5 id="may-2005---september-2005-5-months">May 2005 - September 2005 (5 months)</h5> | |
<ul> | |
<li>Supporting AIX assembly line systems</li> | |
<li>Troubleshooting various PC problems remotely</li> | |
<li>Help desk operations</li> | |
</ul> | |
<h3 id="bell-canada">Bell Canada</h3> | |
<h4 id="sap-administrator">SAP Administrator</h4> | |
<h5 id="june-2004---september-2004-4-months">June 2004 - September 2004 (4 months)</h5> | |
<ul> | |
<li>SAP Data cleanup and administration</li> | |
</ul> | |
<h2 id="education">EDUCATION</h2> | |
<ul> | |
<li>Certificate in Project Management, University of Toronto, Toronto ON (2014)</li> | |
<li>Honours Bachelor of Computer Science, Laurentian University, Sudbury ON (2008)</li> | |
<li>Computer Programmer Diploma, Georgian College, Barrie ON (2005)</li> | |
</ul> | |
<h2 id="certifications">CERTIFICATIONS</h2> | |
<ul> | |
<li>ITIL Foundation (AXELOS March 2019)</li> | |
<li>Software Development Security (Cybrary Sep 2018)</li> | |
<li>Secure Coding (Cybrary Sep 2017)</li> | |
<li>Cisco Certified Network Associate, CompTIA A+, Informatica PowerCenter, Teradata Physical Database Design, First Aid</li> | |
</ul> | |
<h2 id="additional-projects">ADDITIONAL PROJECTS</h2> | |
<ul> | |
<li>Containerizing PyTorch machine learning facial reconstruction application <a href="https://github.com/beiller/3DDFA">https://github.com/beiller/3DDFA</a></li> | |
<li>Ammo.js - A WASM compiled port of Bullet physics library to Javascript contributor <a href="https://github.com/beiller/ammo.js">https://github.com/beiller/ammo.js</a></li> | |
<li>C++ port of liquibooks to Python, an order matching engine <a href="https://github.com/beiller/python-liquibook">https://github.com/beiller/python-liquibook</a></li> | |
<li>Sparechange dot io alternative monetization platform</li> | |
</ul> | |
</div> | |
</body> | |
</html> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment