:root{--solarized-base03:#002b36;--solarized-base02:#073642;--solarized-base01:#586e75;--solarized-base00:#657b83;--solarized-base0:#839496;--solarized-base1:#93a1a1;--solarized-base2:#eee8d5;--solarized-base3:#fdf6e3;--solarized-yellow:#b58900;--solarized-orange:#cb4b16;--solarized-red:#dc322f;--solarized-magenta:#d33682;--solarized-violet:#6c71c4;--solarized-blue:#268bd2;--solarized-cyan:#2aa198;--solarized-green:#859900}@media (prefers-color-scheme:dark){:root{--solarized-base03:#fdf6e3;--solarized-base02:#eee8d5;--solarized-base01:#93a1a1;--solarized-base00:#839496;--solarized-base0:#657b83;--solarized-base1:#586e75;--solarized-base2:#073642;--solarized-base3:#002b36}}pre,pre.numberSource{background:var(--solarized-base3);--color-code-highlight-bg:var(--solarized-base2)}pre code{color:var(--solarized-base00)}pre.numberSource>code.sourceCode>span>a:first-child::before{color:var(--solarized-base1)}code span.kw{color:var(--solarized-green);font-weight:normal;font-style:normal}code span.dt{color:var(--solarized-yellow);font-weight:normal;font-style:normal}code span.dv{color:var(--solarized-cyan);font-weight:normal;font-style:normal}code span.bn{color:var(--solarized-cyan);font-weight:normal;font-style:normal}code span.fl{color:var(--solarized-cyan);font-weight:normal;font-style:normal}code span.ch{color:var(--solarized-cyan);font-weight:normal;font-style:normal}code span.st{color:var(--solarized-cyan);font-weight:normal;font-style:normal}code span.co{color:var(--solarized-base1);font-weight:normal;font-style:italic}code span.ot{color:var(--solarized-blue);font-weight:normal;font-style:normal}code span.al{color:var(--solarized-red);font-weight:normal;font-style:normal}code span.fu{color:var(--solarized-blue);font-weight:normal;font-style:normal}code span.er{color:var(--solarized-red);font-weight:normal;font-style:normal}code span.wa{color:var(--solarized-orange);font-weight:normal;font-style:italic}code span.cn{color:var(--solarized-cyan);font-weight:normal;font-style:normal}code span.sc{color:var(--solarized-red);font-weight:normal;font-style:normal}code span.vs{color:var(--solarized-cyan);font-weight:normal;font-style:normal}code span.ss{color:var(--solarized-red);font-weight:normal;font-style:normal}code span.im{color:var(--solarized-base00);font-weight:normal;font-style:normal}code span.va{color:var(--solarized-blue);font-weight:normal;font-style:normal}code span.cf{color:var(--solarized-green);font-weight:normal;font-style:normal}code span.op{color:var(--solarized-green);font-weight:normal;font-style:normal}code span.bu{color:var(--solarized-base00);font-weight:normal;font-style:normal}code span.ex{color:var(--solarized-base00);font-weight:normal;font-style:normal}code span.pp{color:var(--solarized-orange);font-weight:normal;font-style:normal}code span.at{color:var(--solarized-base00);font-weight:normal;font-style:normal}code span.do{color:var(--solarized-base1);font-weight:normal;font-style:italic}code span.an{color:var(--solarized-base1);font-weight:normal;font-style:italic}code span.cv{color:var(--solarized-base1);font-weight:normal;font-style:italic}code span.in{color:var(--solarized-base1);font-weight:normal;font-style:italic}a.sourceLine::before{text-decoration:none}code.diff span.kw{color:var(--solarized-yellow);font-weight:normal;font-style:normal}code.diff span.dt{color:var(--solarized-blue);font-weight:normal;font-style:normal}code.diff span.st{color:var(--solarized-red);font-weight:normal;font-style:normal}code.diff span.va{color:var(--solarized-green);font-weight:normal;font-style:normal}:root{--color-tol-navy:#328;--color-tol-forest:#173;--color-tol-acqua:#4a9;--color-tol-sky:#8ce;--color-tol-sand:#dc7;--color-tol-rose:#c67;--color-tol-lilac:#a49;--color-tol-plum:#825;--color-tol-navy-bg: hsl(from var(--color-tol-navy) h calc(s * 0.5) calc(l * 1.75));--color-tol-forest-bg: hsl(from var(--color-tol-forest) h calc(s * 0.4) calc(l * 1.8));--color-tol-forest-lighter: hsl(from var(--color-tol-forest) h calc(s * 0.4) calc(l * 2.4));--color-tol-acqua-bg: hsl(from var(--color-tol-acqua) h calc(s * 0.5) calc(l * 1.75));--color-tol-sky-bg: hsl(from var(--color-tol-sky) h calc(s * 0.5) calc(l * 1.75));--color-tol-sand-bg: hsl(from var(--color-tol-sand) h calc(s * 0.5) calc(l * 1.25));--color-tol-rose-bg: hsl(from var(--color-tol-rose) h calc(s * 0.5) calc(l * 1.75));--color-tol-lilac-bg: hsl(from var(--color-tol-lilac) h calc(s * 0.5) calc(l * 1.75));--color-tol-plum-bg: hsl(from var(--color-tol-plum) h calc(s * 0.5) calc(l * 1.75));--color-tol-navy-bg-dark: hsl(from var(--color-tol-navy) h calc(s * 0.5) calc(l / 1.75));--color-tol-forest-bg-dark: hsl(from var(--color-tol-forest) h calc(s * 0.4) calc(l / 1.8));--color-tol-acqua-bg-dark: hsl(from var(--color-tol-acqua) h calc(s * 0.5) calc(l / 1.75));--color-tol-sky-bg-dark: hsl(from var(--color-tol-sky) h calc(s * 0.5) calc(l / 1.75));--color-tol-sand-bg-dark: hsl(from var(--color-tol-sand) h calc(s * 0.5) calc(l / 1.75));--color-tol-rose-bg-dark: hsl(from var(--color-tol-rose) h calc(s * 0.5) calc(l / 1.75));--color-tol-lilac-bg-dark: hsl(from var(--color-tol-lilac) h calc(s * 0.5) calc(l / 1.75));--color-tol-plum-bg-dark: hsl(from var(--color-tol-plum) h calc(s * 0.5) calc(l / 1.75));--background-color:#ebebeb;--background-image:url(/img/papery.png);--color-text:#1b2733;--color-text-secondary:#637282;--color-link:var(--color-tol-forest);--color-link-hover:var(--color-text);--color-link-bg-hover:var(--color-tol-forest-bg);--color-sidenote:#616970;--highlight-red:var(--color-tol-rose-bg);--highlight-yellow:var(--color-tol-sand-bg);--highlight-green:var(--color-tol-forest-bg);--highlight-blue:var(--color-tol-acqua-bg);--highlight-purple:var(--color-tol-plum-bg);--color-inline-code:var(--color-tol-lilac);--color-inline-code-bg:var(--color-tol-sand-bg);--color-border:#dfdfd0;--color-border-heavy:#ccccd4;--color-table-heading:#f3f3fb;--font-family-prose:system-ui , -apple-system , BlinkMacSystemFont , "Segoe UI" , Roboto , Oxygen , Ubuntu , Cantarell , "Open Sans" , "Helvetica Neue" , sans-serif;--font-family-heading:system-ui , -apple-system , BlinkMacSystemFont , "Segoe UI" , Roboto , Oxygen , Ubuntu , Cantarell , "Open Sans" , "Helvetica Neue" , sans-serif;--font-family-code:Menlo , monospace;--font-family-side-note-number:var(--font-family-prose);--line-height:26px;--font-size:17px;--inline-code-font-size:15px;--code-block-font-size:14px;--code-block-side-padding:8px;--line-numbers-font-size:12px;--tight-code-line-height:18px;--tight-code-padding-top:5px;--side-note-line-height:20px;--side-note-font-size:13px;--side-note-code-font-size:13px;--side-note-baseline-offset:4px;--side-note-sup-offset:-6px;--side-note-number-hang-left:-6px;--side-note-text-indent:-9px;--heading-font-weight:500;--title-font-size:42px;--title-code-font-size:40px;--title-line-height:48px;--title-margin-top:92px;--h1-font-size:32px;--h1-code-font-size:29px;--h1-line-height:36px;--h1-word-spacing:1px;--h1-margin-top:30px;--h1-margin-bottom:12px;--h2-font-size:22px;--h2-code-font-size:20px;--h2-line-height:28px;--h2-word-spacing:.5px;--h2-margin-top:18px;--h2-margin-bottom:6px;--ul-indent-size:23px;--ol-indent-size:19px;--ol-li-padding-left:4px;--hr-margin-top:18px;--hr-height:2pt;--hr-width:66%;--hr-margin-bottom:calc(var(--line-height) - var(--hr-margin-top) - var(--hr-height));--extra-wide-scale-factor:1.5;--figcaption-line-height:21px;--figcaption-font-size:14px;--figcaption-code-font-size:13px;--figcaption-gap:6px;--fig-border-color:#91a7be;--fig-border-size:1pt;--fig-border-style:var(--fig-border-size) solid var(--fig-border-color);--fig-background-color:var(--color-tol-sand-bg);--fig-background:var(--fig-background-color);--captioned-figure-gap:10px;--table-line-height:21px;--table-font-size:14px;--table-code-font-size:13px;--nav-toc-font-size:12px;--nav-toc-code-font-size:12px;--nav-toc-indent:15px;--nav-toc-baseline-offset:2px;--nav-toc-border-width:.25rem;--blockquote-border-width:.25rem;--blockquote-border-color:var(--color-text-secondary);--main-width:745px;--main-width-narrow:550px;--side-note-max-width:300px}@media (prefers-color-scheme:dark){:root{--background-color:#161313;--background-image:url(/img/staticy.png);--color-text:#f7f5f2;--color-text-secondary:#9d9b99;--color-sidenote:#b4b2af;--color-inline-code:#f7f5f2;--color-inline-code-bg:#242121;--color-border:#393635;--color-border-heavy:#524f4d;--color-table-heading:#242121;--color-link:var(--color-tol-forest-lighter);--highlight-red:var(--color-tol-rose-bg-dark);--highlight-yellow:var(--color-tol-sand-bg-dark);--highlight-green:var(--color-tol-forest-bg-dark);--highlight-blue:var(--color-tol-acqua-bg-dark);--highlight-purple:var(--color-tol-plum-bg-dark)}}*,*:after,*:before{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}html{-webkit-text-size-adjust:100%}body{font-family: var(--font-family-prose);color:var(--color-text);font-size:var(--font-size);line-height:var(--line-height);-webkit-font-variant-ligatures:no-common-ligatures;font-variant-ligatures:no-common-ligatures;hanging-punctuation:first;margin:0;padding:0;padding-top:var(--title-margin-top);width:100%;background:var(--background-color) var(--background-image) repeat fixed 0 0;background-color:var(--background-color)}@media print{body{background:initial}}.only-light-mode{display:inherit}.only-dark-mode{display:none}@media (prefers-color-scheme:dark){.only-light-mode{display:none}.only-dark-mode{display:inherit}}.sidenote,.marginnote{color:var(--color-sidenote);font-size:var(--side-note-font-size);line-height:var(--side-note-line-height);vertical-align:baseline;margin-top:var(--side-note-baseline-offset)}:is(.sidenote, .marginnote) figcaption {font-size:var(--side-note-font-size);line-height:var(--side-note-line-height)}.sidenote code,.marginnote code{color:var(--color-sidenote)}main > .sidenote-wrapper > :is(.marginnote, .sidenote) {margin-bottom:var(--side-note-line-height)}main{counter-reset:sidenote-counter-anchor sidenote-counter}.sidenote-number:after{counter-increment:sidenote-counter-anchor;content:counter(sidenote-counter-anchor)}.sidenote:before{counter-increment:sidenote-counter;content:counter(sidenote-counter)}.sidenote-number:after,.sidenote:before{position:relative}nav#TOC label,
label.margin-toggle:not(.sidenote-number),
.sidenote-number:after,
.sidenote:before,
.footnote-ref sup,
sup {font-size:var(--side-note-font-size);font-weight:700;font-family: var(--font-family-side-note-number);-webkit-font-feature-settings:"tnum" 1;font-feature-settings:"tnum" 1;vertical-align:baseline;position:relative;top:var(--side-note-sup-offset)}sup{font-weight:inherit}.sidenote:before{position:absolute;right: calc(100% + 0.5ch)}input.margin-toggle{display:none}label.margin-toggle:not(.sidenote-number) {display:none}label.sidenote-number{display:inline}@media screen and (max-width: calc(26px + 550px + 26px + 169px + 26px - 1px)) {
  .margin-toggle:checked + .sidenote,
  .margin-toggle:checked + .marginnote {
    margin-top: var(--side-note-line-height);
    vertical-align: baseline;
  }

  label.margin-toggle {
    color: var(--color-link);
  }

  label.margin-toggle:not(.sidenote-number) {
    display: inline;
  }

  label {
    cursor: pointer;
  }
}h1,h2{font-family: var(--font-family-heading);font-weight:var(--heading-font-weight)}h4,h5,h6{font-weight:normal}h1.title{margin-top:var(--line-height);margin-bottom:var(--line-height);font-size:var(--title-font-size);line-height:var(--title-line-height)}h1.title code{font-size:var(--title-code-font-size)}h1:not(.title) {font-size:var(--h1-font-size);line-height:var(--h1-line-height);word-spacing:var(--h1-word-spacing);margin-top:var(--h1-margin-top);margin-bottom:var(--h1-margin-bottom)}h1:not(.title) code {font-size:var(--h1-code-font-size)}h2{font-size:var(--h2-font-size);line-height:var(--h2-line-height);word-spacing:var(--h2-word-spacing);margin-top:var(--h2-margin-top);margin-bottom:var(--h2-margin-bottom)}h2 code{font-size:var(--h2-code-font-size)}h3{font-size:var(--font-size);line-height:var(--line-height);font-weight:bold}h1:not(.title) + :is(*:not(.sidenote-wrapper), p),
/* 1 */ h1:not(.title) + .sidenote-wrapper + :is(*:not(.sidenote-wrapper), p),
/* 2 */ h1:not(.title) + .sidenote-wrapper + .sidenote-wrapper + :is(*:not(.sidenote-wrapper), p),
/* 3 */ h1:not(.title) + .sidenote-wrapper + .sidenote-wrapper + .sidenote-wrapper + :is(*:not(.sidenote-wrapper), p),
/* 4 */ h1:not(.title) + .sidenote-wrapper + .sidenote-wrapper + .sidenote-wrapper + .sidenote-wrapper + :is(*:not(.sidenote-wrapper), p) {margin-top:var(--h1-margin-bottom)}h2 + :is(*:not(.sidenote-wrapper), p),
/* 1 */ h2 + .sidenote-wrapper + :is(*:not(.sidenote-wrapper), p),
/* 2 */ h2 + .sidenote-wrapper + .sidenote-wrapper + :is(*:not(.sidenote-wrapper), p),
/* 3 */ h2 + .sidenote-wrapper + .sidenote-wrapper + .sidenote-wrapper + :is(*:not(.sidenote-wrapper), p),
/* 4 */ h2 + .sidenote-wrapper + .sidenote-wrapper + .sidenote-wrapper + .sidenote-wrapper + :is(*:not(.sidenote-wrapper), p) {margin-top:var(--h2-margin-bottom)}h3 + :is(*:not(.sidenote-wrapper), p),
/* 1 */ h3 + .sidenote-wrapper + :is(*:not(.sidenote-wrapper), p),
/* 2 */ h3 + .sidenote-wrapper + .sidenote-wrapper + :is(*:not(.sidenote-wrapper), p),
/* 3 */ h3 + .sidenote-wrapper + .sidenote-wrapper + .sidenote-wrapper + :is(*:not(.sidenote-wrapper), p),
/* 4 */ h3 + .sidenote-wrapper + .sidenote-wrapper + .sidenote-wrapper + .sidenote-wrapper + :is(*:not(.sidenote-wrapper), p) {margin-top:0}p, main > ul, main > ol, .wide, :not(.wide) > div.sourceCode, main > pre, img, table, blockquote {margin-top:var(--line-height);margin-bottom:var(--line-height)}:is(.marginnote, .sidenote) :is(p, main > ul, main > ol, .wide, :not(.wide) > div.sourceCode, main > pre, img, table, blockquote) {margin-top:var(--side-note-font-size);margin-bottom:var(--side-note-font-size)}.sidenote-wrapper > :is(.marginnote, .sidenote) > :is(p, main > ul, main > ol, .wide, :not(.wide) > div.sourceCode, main > pre, img, table, blockquote):first-child {margin-top:0}.sidenote-wrapper > :is(.marginnote, .sidenote) > :is(p, main > ul, main > ol, .wide, :not(.wide) > div.sourceCode, main > pre, img, table, blockquote):last-child {margin-bottom:0}.wide > p:first-child,
.wide > table:first-child,
:is(p, figure) > img:first-child {margin-top:0}.wide > p:last-child,
:is(p, figure) > img:last-child {margin-bottom:0}ul:not(.task-list) {margin-left:var(--ul-indent-size)}ol{margin-left:var(--ol-indent-size)}ul.task-list{list-style:none;margin-left:var(--ul-indent-size)}ul.task-list>li{position:relative}ul.task-list>li>input[type="checkbox"]{position:absolute;left: calc(-1 * var(--ul-indent-size));height:var(--line-height)}ol>li{padding-left:var(--ol-li-padding-left)}ol{list-style-type:decimal}ol ol{list-style-type:lower-alpha}ol ol ol{list-style-type:lower-roman}ol ol ol ol{list-style-type:decimal}ol ol ol ol ol{list-style-type:lower-alpha}ol ol ol ol ol ol{list-style-type:lower-roman}ol ol ol ol ol ol ol{list-style-type:decimal}ol ol ol ol ol ol ol ol{list-style-type:lower-alpha}ol ol ol ol ol ol ol ol ol{list-style-type:lower-roman}ul{list-style-type:disc}ul ul{list-style-type:circle}ul ul ul{list-style-type:square}ul ul ul ul{list-style-type:disc}ul ul ul ul ul{list-style-type:circle}ul ul ul ul ul ul{list-style-type:square}ul ul ul ul ul ul ul{list-style-type:disc}ul ul ul ul ul ul ul ul{list-style-type:circle}ul ul ul ul ul ul ul ul ul{list-style-type:square}blockquote{border-left:var(--blockquote-border-width) solid var(--blockquote-border-color);padding-left:1.5rem;font-style:italic}blockquote>p{margin-top:0}blockquote em,blockquote i,blockquote .sidenote-wrapper{font-style:normal}hr{margin-top:var(--hr-margin-top);margin-bottom:var(--hr-margin-bottom);margin-left:auto;margin-right:auto;width:var(--hr-width);border-style:solid;color:var(--color-border-heavy);border-width:var(--hr-height) 0 0}a code,a:link code,a:visited code,a,a:link,a:visited{color:var(--color-link);text-decoration-line:underline;text-decoration-style:solid;text-decoration-skip-ink:auto;text-decoration-thickness:1.2pt}a:hover{text-decoration-style:dashed;color:var(--color-link-hover);background-color:var(--color-link-bg-hover)}span.mark,mark{color:inherit;padding:2px 0 1px}span.mark.red,mark.red{background-color:var(--highlight-red)}span.mark.yellow,mark.yellow{background-color:var(--highlight-yellow)}span.mark.green,mark.green{background-color:var(--highlight-green)}span.mark.blue,mark.blue{background-color:var(--highlight-blue)}span.mark.purple,mark.purple{background-color:var(--highlight-purple)}header .subtitle{font-size:var(--subtitle-font-size)!important;line-height:var(--subtitle-line-height)!important;font-style:italic;margin-top:0}header .subtitle code{font-size:var(--subtitle-code-font-size)}header blockquote.metadata{border-left:var(--blockquote-border-width) solid var(--color-tol-sand);background-color:var(--highlight-yellow)}.author,.date{margin-top:0;margin-bottom:0}.bottom-nav{margin-top: calc(4 * var(--line-height));margin-bottom: calc(4 * var(--line-height));display:grid;grid-template-columns:repeat(3,1fr);gap:1rem}.bottom-nav .up{align-self:center;display:flex;justify-content:center}.bottom-nav .up a:before{content:'↑ '}.bottom-nav .prev{align-self:start;display:flex;justify-content:start}.bottom-nav .prev a:before{content:'← '}.bottom-nav .next{align-self:end;display:flex;justify-content:end}.bottom-nav .next a:after{content:' →'}.copyright{text-align:center}span.smallcaps{font-variant:small-caps}span.underline{text-decoration:underline}.katex-display{background:var(--background-color);transform:translateZ(0)}@media print{.katex-display{background:initial}}code{font-family: var(--font-family-code);word-spacing:normal;color:var(--color-inline-code);background-color:var(--color-inline-code-bg);font-size:var(--inline-code-font-size);margin:0;padding:2px 0 1px;border:1px solid var(--color-border);border-radius:1px}.sidenote code,.marginnote code{font-size:var(--side-note-code-font-size)}pre code{color:inherit;background-color:inherit;font-size:var(--code-block-font-size);line-height:var(--line-height);margin:initial;padding:initial;border:initial;border-radius:initial}pre>code{position:relative;display:inline-block;min-width:100%;z-index:1;white-space:pre-wrap;padding:0 var(--code-block-side-padding)}.wide>pre,.wide>div.sourceCode{transform:translateZ(0)}.wide pre>code{white-space:pre}pre.numberSource code{counter-reset:source-line 0}pre>code.sourceCode>span{line-height:var(--line-height);display:inline-block;position:relative}dl{margin-left:1em;margin-right:1em}dl>dt{font-weight:bold}dl>dd{margin-left:2em;margin-bottom:1em}div.sourceCode{--line-numbers-width: calc(4 * var(--line-numbers-font-size));--line-numbers-negative-width: calc(-1 * var(--line-numbers-width));margin-left:var(--line-numbers-negative-width)}div.sourceCode>pre{margin-left:var(--line-numbers-width)}pre.numberSource>code.sourceCode>span{counter-increment:source-line;padding-left:var(--line-numbers-width);text-indent:var(--line-numbers-negative-width);margin-left:var(--line-numbers-negative-width)}pre.numberSource>code.sourceCode>span>a:first-child::before{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;content:counter(source-line);font-size:var(--line-numbers-font-size);text-decoration:none;position:relative;text-align:right;display:inline-block;padding: 0 calc(2 * var(--code-block-side-padding));width:var(--line-numbers-width)}pre>code.sourceCode>span>a:first-child:hover::before{text-decoration:underline}.tight-code pre,pre.tight-code{padding-top:var(--tight-code-padding-top)}pre.tight-code code,.tight-code pre code,.tight-code pre>code.sourceCode>span,pre.tight-code>code.sourceCode>span{line-height:var(--tight-code-line-height)}pre>code.sourceCode>span::after{position:absolute;background-color:var(--color-code-highlight-bg);z-index:-1;left: calc(-1 * var(--code-block-side-padding));right: calc(-1 * var(--code-block-side-padding));top:0;height:100%}pre.numberSource>code.sourceCode>span::after{left:calc(var(--line-numbers-width) - var(--code-block-side-padding))}pre.hl-1  > code.sourceCode > span:nth-of-type(1)::after  {content:""}pre.hl-2  > code.sourceCode > span:nth-of-type(2)::after  {content:""}pre.hl-3  > code.sourceCode > span:nth-of-type(3)::after  {content:""}pre.hl-4  > code.sourceCode > span:nth-of-type(4)::after  {content:""}pre.hl-5  > code.sourceCode > span:nth-of-type(5)::after  {content:""}pre.hl-6  > code.sourceCode > span:nth-of-type(6)::after  {content:""}pre.hl-7  > code.sourceCode > span:nth-of-type(7)::after  {content:""}pre.hl-8  > code.sourceCode > span:nth-of-type(8)::after  {content:""}pre.hl-9  > code.sourceCode > span:nth-of-type(9)::after  {content:""}pre.hl-10 > code.sourceCode > span:nth-of-type(10)::after {content:""}pre.hl-11 > code.sourceCode > span:nth-of-type(11)::after {content:""}pre.hl-12 > code.sourceCode > span:nth-of-type(12)::after {content:""}pre.hl-13 > code.sourceCode > span:nth-of-type(13)::after {content:""}pre.hl-14 > code.sourceCode > span:nth-of-type(14)::after {content:""}pre.hl-15 > code.sourceCode > span:nth-of-type(15)::after {content:""}pre.hl-16 > code.sourceCode > span:nth-of-type(16)::after {content:""}pre.hl-17 > code.sourceCode > span:nth-of-type(17)::after {content:""}pre.hl-18 > code.sourceCode > span:nth-of-type(18)::after {content:""}pre.hl-19 > code.sourceCode > span:nth-of-type(19)::after {content:""}pre.hl-20 > code.sourceCode > span:nth-of-type(20)::after {content:""}pre.hl-21 > code.sourceCode > span:nth-of-type(21)::after {content:""}pre.hl-22 > code.sourceCode > span:nth-of-type(22)::after {content:""}pre.hl-23 > code.sourceCode > span:nth-of-type(23)::after {content:""}pre.hl-24 > code.sourceCode > span:nth-of-type(24)::after {content:""}pre.hl-25 > code.sourceCode > span:nth-of-type(25)::after {content:""}pre.hl-26 > code.sourceCode > span:nth-of-type(26)::after {content:""}pre.hl-27 > code.sourceCode > span:nth-of-type(27)::after {content:""}pre.hl-28 > code.sourceCode > span:nth-of-type(28)::after {content:""}pre.hl-29 > code.sourceCode > span:nth-of-type(29)::after {content:""}pre.hl-30 > code.sourceCode > span:nth-of-type(30)::after {content:""}pre.hl-31 > code.sourceCode > span:nth-of-type(31)::after {content:""}pre.hl-32 > code.sourceCode > span:nth-of-type(32)::after {content:""}pre.hl-33 > code.sourceCode > span:nth-of-type(33)::after {content:""}pre.hl-34 > code.sourceCode > span:nth-of-type(34)::after {content:""}pre.hl-35 > code.sourceCode > span:nth-of-type(35)::after {content:""}pre.hl-36 > code.sourceCode > span:nth-of-type(36)::after {content:""}pre.hl-37 > code.sourceCode > span:nth-of-type(37)::after {content:""}pre.hl-38 > code.sourceCode > span:nth-of-type(38)::after {content:""}pre.hl-39 > code.sourceCode > span:nth-of-type(39)::after {content:""}pre.hl-40 > code.sourceCode > span:nth-of-type(40)::after {content:""}pre.hl-1  > code.sourceCode > span:nth-of-type(1)  {min-width:100%}pre.hl-2  > code.sourceCode > span:nth-of-type(2)  {min-width:100%}pre.hl-3  > code.sourceCode > span:nth-of-type(3)  {min-width:100%}pre.hl-4  > code.sourceCode > span:nth-of-type(4)  {min-width:100%}pre.hl-5  > code.sourceCode > span:nth-of-type(5)  {min-width:100%}pre.hl-6  > code.sourceCode > span:nth-of-type(6)  {min-width:100%}pre.hl-7  > code.sourceCode > span:nth-of-type(7)  {min-width:100%}pre.hl-8  > code.sourceCode > span:nth-of-type(8)  {min-width:100%}pre.hl-9  > code.sourceCode > span:nth-of-type(9)  {min-width:100%}pre.hl-10 > code.sourceCode > span:nth-of-type(10) {min-width:100%}pre.hl-11 > code.sourceCode > span:nth-of-type(11) {min-width:100%}pre.hl-12 > code.sourceCode > span:nth-of-type(12) {min-width:100%}pre.hl-13 > code.sourceCode > span:nth-of-type(13) {min-width:100%}pre.hl-14 > code.sourceCode > span:nth-of-type(14) {min-width:100%}pre.hl-15 > code.sourceCode > span:nth-of-type(15) {min-width:100%}pre.hl-16 > code.sourceCode > span:nth-of-type(16) {min-width:100%}pre.hl-17 > code.sourceCode > span:nth-of-type(17) {min-width:100%}pre.hl-18 > code.sourceCode > span:nth-of-type(18) {min-width:100%}pre.hl-19 > code.sourceCode > span:nth-of-type(19) {min-width:100%}pre.hl-20 > code.sourceCode > span:nth-of-type(20) {min-width:100%}pre.hl-21 > code.sourceCode > span:nth-of-type(21) {min-width:100%}pre.hl-22 > code.sourceCode > span:nth-of-type(22) {min-width:100%}pre.hl-23 > code.sourceCode > span:nth-of-type(23) {min-width:100%}pre.hl-24 > code.sourceCode > span:nth-of-type(24) {min-width:100%}pre.hl-25 > code.sourceCode > span:nth-of-type(25) {min-width:100%}pre.hl-26 > code.sourceCode > span:nth-of-type(26) {min-width:100%}pre.hl-27 > code.sourceCode > span:nth-of-type(27) {min-width:100%}pre.hl-28 > code.sourceCode > span:nth-of-type(28) {min-width:100%}pre.hl-29 > code.sourceCode > span:nth-of-type(29) {min-width:100%}pre.hl-30 > code.sourceCode > span:nth-of-type(30) {min-width:100%}pre.hl-31 > code.sourceCode > span:nth-of-type(31) {min-width:100%}pre.hl-32 > code.sourceCode > span:nth-of-type(32) {min-width:100%}pre.hl-33 > code.sourceCode > span:nth-of-type(33) {min-width:100%}pre.hl-34 > code.sourceCode > span:nth-of-type(34) {min-width:100%}pre.hl-35 > code.sourceCode > span:nth-of-type(35) {min-width:100%}pre.hl-36 > code.sourceCode > span:nth-of-type(36) {min-width:100%}pre.hl-37 > code.sourceCode > span:nth-of-type(37) {min-width:100%}pre.hl-38 > code.sourceCode > span:nth-of-type(38) {min-width:100%}pre.hl-39 > code.sourceCode > span:nth-of-type(39) {min-width:100%}pre.hl-40 > code.sourceCode > span:nth-of-type(40) {min-width:100%}pre.numberSource.hl-1  > code.sourceCode > span:nth-of-type(1)  {min-width: calc(100% + var(--line-numbers-width))}pre.numberSource.hl-2  > code.sourceCode > span:nth-of-type(2)  {min-width: calc(100% + var(--line-numbers-width))}pre.numberSource.hl-3  > code.sourceCode > span:nth-of-type(3)  {min-width: calc(100% + var(--line-numbers-width))}pre.numberSource.hl-4  > code.sourceCode > span:nth-of-type(4)  {min-width: calc(100% + var(--line-numbers-width))}pre.numberSource.hl-5  > code.sourceCode > span:nth-of-type(5)  {min-width: calc(100% + var(--line-numbers-width))}pre.numberSource.hl-6  > code.sourceCode > span:nth-of-type(6)  {min-width: calc(100% + var(--line-numbers-width))}pre.numberSource.hl-7  > code.sourceCode > span:nth-of-type(7)  {min-width: calc(100% + var(--line-numbers-width))}pre.numberSource.hl-8  > code.sourceCode > span:nth-of-type(8)  {min-width: calc(100% + var(--line-numbers-width))}pre.numberSource.hl-9  > code.sourceCode > span:nth-of-type(9)  {min-width: calc(100% + var(--line-numbers-width))}pre.numberSource.hl-10 > code.sourceCode > span:nth-of-type(10) {min-width: calc(100% + var(--line-numbers-width))}pre.numberSource.hl-11 > code.sourceCode > span:nth-of-type(11) {min-width: calc(100% + var(--line-numbers-width))}pre.numberSource.hl-12 > code.sourceCode > span:nth-of-type(12) {min-width: calc(100% + var(--line-numbers-width))}pre.numberSource.hl-13 > code.sourceCode > span:nth-of-type(13) {min-width: calc(100% + var(--line-numbers-width))}pre.numberSource.hl-14 > code.sourceCode > span:nth-of-type(14) {min-width: calc(100% + var(--line-numbers-width))}pre.numberSource.hl-15 > code.sourceCode > span:nth-of-type(15) {min-width: calc(100% + var(--line-numbers-width))}pre.numberSource.hl-16 > code.sourceCode > span:nth-of-type(16) {min-width: calc(100% + var(--line-numbers-width))}pre.numberSource.hl-17 > code.sourceCode > span:nth-of-type(17) {min-width: calc(100% + var(--line-numbers-width))}pre.numberSource.hl-18 > code.sourceCode > span:nth-of-type(18) {min-width: calc(100% + var(--line-numbers-width))}pre.numberSource.hl-19 > code.sourceCode > span:nth-of-type(19) {min-width: calc(100% + var(--line-numbers-width))}pre.numberSource.hl-20 > code.sourceCode > span:nth-of-type(20) {min-width: calc(100% + var(--line-numbers-width))}pre.numberSource.hl-21 > code.sourceCode > span:nth-of-type(21) {min-width: calc(100% + var(--line-numbers-width))}pre.numberSource.hl-22 > code.sourceCode > span:nth-of-type(22) {min-width: calc(100% + var(--line-numbers-width))}pre.numberSource.hl-23 > code.sourceCode > span:nth-of-type(23) {min-width: calc(100% + var(--line-numbers-width))}pre.numberSource.hl-24 > code.sourceCode > span:nth-of-type(24) {min-width: calc(100% + var(--line-numbers-width))}pre.numberSource.hl-25 > code.sourceCode > span:nth-of-type(25) {min-width: calc(100% + var(--line-numbers-width))}pre.numberSource.hl-26 > code.sourceCode > span:nth-of-type(26) {min-width: calc(100% + var(--line-numbers-width))}pre.numberSource.hl-27 > code.sourceCode > span:nth-of-type(27) {min-width: calc(100% + var(--line-numbers-width))}pre.numberSource.hl-28 > code.sourceCode > span:nth-of-type(28) {min-width: calc(100% + var(--line-numbers-width))}pre.numberSource.hl-29 > code.sourceCode > span:nth-of-type(29) {min-width: calc(100% + var(--line-numbers-width))}pre.numberSource.hl-30 > code.sourceCode > span:nth-of-type(30) {min-width: calc(100% + var(--line-numbers-width))}pre.numberSource.hl-31 > code.sourceCode > span:nth-of-type(31) {min-width: calc(100% + var(--line-numbers-width))}pre.numberSource.hl-32 > code.sourceCode > span:nth-of-type(32) {min-width: calc(100% + var(--line-numbers-width))}pre.numberSource.hl-33 > code.sourceCode > span:nth-of-type(33) {min-width: calc(100% + var(--line-numbers-width))}pre.numberSource.hl-34 > code.sourceCode > span:nth-of-type(34) {min-width: calc(100% + var(--line-numbers-width))}pre.numberSource.hl-35 > code.sourceCode > span:nth-of-type(35) {min-width: calc(100% + var(--line-numbers-width))}pre.numberSource.hl-36 > code.sourceCode > span:nth-of-type(36) {min-width: calc(100% + var(--line-numbers-width))}pre.numberSource.hl-37 > code.sourceCode > span:nth-of-type(37) {min-width: calc(100% + var(--line-numbers-width))}pre.numberSource.hl-38 > code.sourceCode > span:nth-of-type(38) {min-width: calc(100% + var(--line-numbers-width))}pre.numberSource.hl-39 > code.sourceCode > span:nth-of-type(39) {min-width: calc(100% + var(--line-numbers-width))}pre.numberSource.hl-40 > code.sourceCode > span:nth-of-type(40) {min-width: calc(100% + var(--line-numbers-width))}figure{margin-bottom:var(--captioned-figure-gap);box-sizing:border-box}figure+p,figure+.sidenote-wrapper+p,figure+.sidenote-wrapper+.sidenote-wrapper+p,figure+.sidenote-wrapper+.sidenote-wrapper+.sidenote-wrapper+p,figure+.sidenote-wrapper+.sidenote-wrapper+.sidenote-wrapper+.sidenote-wrapper+p{margin-top:var(--captioned-figure-gap)}figure > img, figure > pre, figure > div.sourceCode, figure:not(.wide) > div.sourceCode {margin-bottom:var(--figcaption-gap)}:is(.sidenote, .marginnote) :is(figure > img, figure > pre, figure > div.sourceCode, figure:not(.wide) > div.sourceCode) {margin-bottom:var(--figcaption-gap)}figure>img{box-sizing:border-box;border:var(--fig-border-style);background:var(--fig-background);position:relative;width: calc(100% - (2 * var(--fig-border-size)));height: calc(100% - (2 * var(--fig-border-size)));top:var(--fig-border-size);bottom:var(--fig-border-size);left:var(--fig-border-size);right:var(--fig-border-size)}img{width:100%;display:block}.wide img{transform:translateZ(0)}figcaption{font-size:var(--figcaption-font-size);line-height:var(--figcaption-line-height);font-style:italic;text-align:center;color:var(--color-text-secondary)}.left-align-caption figcaption{text-align:left}figcaption code{font-size:var(--figcaption-code-font-size)}table{-webkit-font-feature-settings:"tnum" 1;font-feature-settings:"tnum" 1;font-size:var(--table-font-size);line-height:var(--table-line-height);border-spacing:0;border-collapse:collapse;border:1px solid var(--color-border-heavy);width:100%;background-color:var(--background-color)}thead,tbody{vertical-align:top}td>*:first-child{margin-top:0}td>*:last-child{margin-bottom:0}@media print{table{background:initial}}table code{font-size:var(--table-code-font-size)}table pre code{font-size:inherit}.wide table{transform:translateZ(0)}table td,table th{border:1px solid var(--color-border-heavy);padding:5px 8px;min-width:100px}table th{background-color:var(--color-table-heading)}table>caption{caption-side:bottom;margin-top:var(--figcaption-gap);margin-bottom:calc(var(--captioned-figure-gap) - var(--line-height));font-size:var(--figcaption-font-size);line-height:var(--figcaption-line-height);font-style:italic;text-align:center;color:var(--color-text-secondary)}.left-align-caption table>caption{text-align:left}table>caption code{font-size:var(--figcaption-code-font-size)}.note table{font-size:inherit;line-height:inherit}.note table,.note td{border:none}.with-icon table td:first-child{width:.1%;min-width:0;white-space:nowrap}.note.red td{background:var(--highlight-red)}.note.yellow td{background:var(--highlight-yellow)}.note.green td{background:var(--highlight-green)}.note.blue td{background:var(--highlight-blue)}.note.purple td{background:var(--highlight-purple)}.before-toc{margin-bottom:var(--line-height)}nav#TOC{margin-bottom:var(--line-height);border-left:var(--nav-toc-border-width) solid var(--color-text-secondary);padding-left:1.5rem}nav#TOC input{display:none}nav#TOC label{color:var(--color-link);cursor:pointer}nav#TOC>ul{display:none}nav#TOC>input:checked+ul{display:block}nav#TOC a code,nav#TOC a:link code,nav#TOC a:visited code,nav#TOC a,nav#TOC a:link,nav#TOC a:visited{text-decoration-line:none!important}nav#TOC a:hover{color:var(--color-link)!important;text-decoration-line:underline!important;text-decoration-style:solid!important;text-decoration-skip-ink:auto!important;text-decoration-thickness:1pt!important}@media print{nav#TOC>input+ul{display:block}}@media screen and (min-width: calc(745px + 2 * (52px + 206px + 52px) - 1px)) {
  header {
    margin-bottom: var(--line-height);
  }

  .before-toc {
    margin-bottom: initial;
  }

  nav#TOC {
    /* Unset some styles for small screen width */
    margin-bottom: initial;
    border-left: initial;
    padding-left: initial;

    position: sticky;
    margin-top: calc(var(--nav-toc-baseline-offset));
    float: left;
    top: var(--line-height);

    font-size: var(--nav-toc-font-size);
    color: var(--color-text-secondary);

    margin-left: var(--line-height);

    max-width: calc((100vw - var(--main-width)) / 2 - 2 * var(--line-height));
    max-height: calc(100vh - 2 * var(--line-height));
    overflow-y: auto;
  }

  nav#TOC label {
    display: none;
  }

  nav#TOC ul {
    display: block;
    list-style: none;
    margin-left: var(--nav-toc-indent);
  }
  nav#TOC > ul {
    margin-left: 0;
  }

  nav#TOC li {
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
  }

  nav#TOC code {
    font-size: var(--nav-toc-code-font-size);
  }

  nav#TOC code,
  nav#TOC a,
  nav#TOD a:link,
  nav#TOD a:visited {
    color: var(--color-text-secondary);
  }

  nav#TOC a:hover,
  nav#TOC a:hover code {
    text-decoration: none;
    color: var(--color-link);
  }
}.sidenote,.marginnote{float:right;clear:right;position:relative;width:var(--computed-width);max-width:var(--side-note-max-width);margin-right: calc(-1 * min(var(--computed-width), var(--side-note-max-width)) - var(--margin-left))}@media screen and (min-width: calc(745px + 2 * (52px + 206px + 52px))) {
  header,
  main,
  footer {
    max-width: var(--main-width);
  }

  header,
  main,
  footer {
    margin-left: auto;
    margin-right: auto;
  }

  .sidenote,
  .marginnote {
    --margin-left: calc(2 * var(--line-height));
    --margin-right: var(--margin-left);
    --computed-width: calc((100vw - 100%) / 2 - var(--margin-right) - var(--margin-left));
  }

  .wide {
    width: 100%;
    overflow-x: auto;
  }

  .wide.extra-wide {
    margin-left: calc((1 - var(--extra-wide-scale-factor)) / 2 * 100%);
    width: calc(var(--extra-wide-scale-factor) * 100%);
  }

  .wide.full-width {
    margin-left: calc(var(--line-height) - ((100vw - var(--main-width)) / 2));
    width: calc(100vw - 2 * var(--line-height));
  }

  .wide.extra-wide figcaption,
  .wide.extra-wide table > caption {
    margin-left: calc(((var(--extra-wide-scale-factor) - 1) / 2) * var(--main-width));
    max-width: var(--main-width);
    margin-right: calc(100% - var(--main-width) - (((var(--extra-wide-scale-factor) - 1) / 2) * var(--main-width)));
  }

  .wide.full-width figcaption,
  .wide.full-width table > caption {
    margin-left: calc((100vw - var(--main-width)) / 2 - var(--line-height));
    max-width: var(--main-width);
    margin-right: calc(100% - var(--main-width) - ((100vw - var(--main-width)) / 2 - var(--line-height)));
  }
}@media screen and (min-width: calc(52px + 745px + 52px + 206px + 52px)) and (max-width: calc(745px + 2 * (52px + 206px + 52px) - 1px)) {
  header,
  nav#TOC,
  main,
  footer {
    margin-left: calc(2 * var(--line-height));
    max-width: var(--main-width);
    margin-right: auto;
  }

  .sidenote,
  .marginnote {
    --margin-left: calc(2 * var(--line-height));
    --margin-right: var(--margin-left);
    --computed-width: calc(100vw - var(--main-width) - calc(2 * var(--line-height)) - var(--margin-right) - var(--margin-left));
  }

  .wide {
    width: 100%;
    overflow-x: auto;
    overflow-y: hidden;
  }

  .wide.extra-wide {
    margin-left: calc(-1 * var(--line-height));
    width: calc(100vw - 2 * var(--line-height));
    max-width: calc(var(--extra-wide-scale-factor) * var(--main-width));
  }

  .wide.full-width {
    margin-left: calc(-1 * var(--line-height));
    width: calc(100vw - 2 * var(--line-height));
    max-width: calc(100vw - 2 * var(--line-height));
  }

  .wide.extra-wide .katex-display,
  .wide.full-width .katex-display {
    padding-left: var(--line-height);
    padding-right: var(--line-height);
  }

  .wide.extra-wide .katex-display,
  .wide.extra-wide .katex-display > .katex,
  .wide.full-width .katex-display,
  .wide.full-width .katex-display > .katex {
    text-align: left;
  }

  .wide.extra-wide figcaption,
  .wide.extra-wide table > caption,
  .wide.full-width figcaption,
  .wide.full-width table > caption {
    text-align: left;
    margin-left: var(--line-height);
    max-width: var(--main-width);
  }
}@media screen and (min-width: calc(26px + 550px + 26px + 169px + 26px)) and (max-width: calc(52px + 745px + 52px + 206px + 52px - 1px)) {
  header,
  nav#TOC,
  main,
  footer {
    margin-left: var(--line-height);
    max-width: calc(max(var(--main-width-narrow), 100vw - (3 * var(--line-height)) - var(--side-note-max-width)));
    margin-right: auto;
  }

  .sidenote,
  .marginnote {
    --margin-left: var(--line-height);
    --margin-right: var(--line-height);
    --computed-width: calc(100vw - var(--main-width-narrow) - var(--line-height) - var(--margin-right) - var(--margin-left));
  }

  .wide {
    width: var(--main-width);
  }
  .sidenote-wrapper .wide {
    width: 100%;
  }
  .wide {
    overflow-x: auto;
    overflow-y: hidden;
  }

  .wide .katex-display,
  .wide .katex-display > .katex {
    text-align: left;
  }

  .wide figcaption,
  .wide table > caption {
    text-align: left;
    max-width: var(--main-width-narrow);
  }

  .wide.extra-wide,
  .wide.full-width {
    width: calc(100vw - 2 * var(--line-height));
  }
}@media screen and (max-width: calc(26px + 550px + 26px + 169px + 26px - 1px)) {
  header,
  nav#TOC,
  main,
  footer {
    margin-left: var(--line-height);
    margin-right: var(--line-height);
  }

  .margin-toggle:not(:checked) + .marginnote {
    display: none;
  }
  .margin-toggle:not(:checked) + .sidenote {
    /* .sidenote is special because .sidenote:before tracks the counter,
     * and counters don't increment for display: none;
     * https://stackoverflow.com/a/36600119
     * */
    position: absolute;
    left: -9999px;
    max-height: 0px;
    overflow: hidden;
    opacity: 0;
  }

  .margin-toggle:checked + .sidenote,
  .margin-toggle:checked + .marginnote {
    display: block;
    float: left;
    clear: both;
    width: 100%;
    max-width: 100%;
  }

  .wide {
    width: 100%;
    overflow-x: auto;
    overflow-y: hidden;
  }

  .wide .katex-display,
  .wide .katex-display > .katex {
    text-align: left;
  }

  .wide figcaption,
  .wide table > caption {
    text-align: left;
    max-width: calc(100vw - 2 * var(--line-height));
  }
}@page {
  size: A4 portrait;
  margin: 2cm;
  margin-left: 3cm;
}@media print{:root{--line-height:18px;--font-size:12px;--inline-code-font-size:11px;--code-block-font-size:10px;--code-block-side-padding:6px;--line-numbers-font-size:8.5px;--tight-code-line-height:12.5px;--tight-code-padding-top:2px;--side-note-line-height:14px;--side-note-font-size:9px;--side-note-code-font-size:9px;--side-note-baseline-offset:3px;--side-note-sup-offset:-4px;--side-note-number-hang-left:-4px;--side-note-text-indent:-6.5px;--title-font-size:30px;--title-code-font-size:29px;--title-line-height:37px;--title-margin-top:71px;--subtitle-font-size:18px;--subtitle-code-font-size:16px;--subtitle-line-height:24px;--h1-font-size:22px;--h1-code-font-size:20px;--h1-line-height:28px;--h1-word-spacing:.5px;--h1-margin-top:18px;--h1-margin-bottom:6px;--h2-font-size:16.5px;--h2-code-font-size:15px;--h2-line-height:22px;--h2-word-spacing:0;--h2-margin-top:14px;--h2-margin-bottom:4.5px;--ul-indent-size:18px;--ol-indent-size:14px;--hr-margin-top:14px;--figcaption-line-height:16px;--figcaption-font-size:10px;--figcaption-code-font-size:9.5px;--figcaption-gap:4.5px;--captioned-figure-gap:7.5px;--table-line-height:16px;--table-font-size:10px;--table-code-font-size:9.5px;--nav-toc-font-size:8.5px;--nav-toc-code-font-size:8.5px}body{padding-top:0;padding-left:1cm}header,nav#TOC,main,footer{width:17cm;margin-right:auto}.sidenote,.marginnote{width:4.5cm;margin-right:-5cm}.wide{width:18cm;overflow-x:hidden;overflow-y:hidden}.wide .katex-display,.wide .katex-display>.katex{text-align:left}.wide figcaption,.wide table>caption{text-align:left;width:18cm}.wide pre>code{white-space:pre-wrap}.bottom-nav{display:none}}h1,h2,h3{page-break-after:avoid}table,figure,pre,img{page-break-inside:avoid}