/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */ html { line-height: 1.15; -webkit-text-size-adjust: 100% } body { margin: 0 } main { display: block } h1 { font-size: 2em; margin: .67em 0 } hr { box-sizing: content-box; height: 0; overflow: visible } pre { font-family: monospace,monospace; font-size: 1em } a { background-color: transparent } abbr[title] { border-bottom: none; text-decoration: underline; -webkit-text-decoration: underline dotted; text-decoration: underline dotted } b, strong { font-weight: bolder } code, kbd, samp { font-family: monospace,monospace; font-size: 1em } small { font-size: 80% } sub, sup { font-size: 75%; line-height: 0; position: relative; vertical-align: baseline } sub { bottom: -.25em } sup { top: -.5em } img { border-style: none } button, input, optgroup, select, textarea { font-family: inherit; font-size: 100%; line-height: 1.15; margin: 0 } button, input { overflow: visible } button, select { text-transform: none } [type=button], [type=reset], [type=submit], 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 } fieldset { padding: .35em .75em .625em } legend { box-sizing: border-box; color: inherit; display: table; max-width: 100%; padding: 0; white-space: normal } progress { vertical-align: baseline } textarea { overflow: auto } [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-decoration { -webkit-appearance: none } ::-webkit-file-upload-button { -webkit-appearance: button; font: inherit } details { display: block } summary { display: list-item } template { display: none } [hidden] { display: none } .flex { display: flex } .flex-auto { flex: 1 1 auto } .flex-inline { display: inline-flex } .flex-even { flex: 1 1 } .flex-wrap { flex-wrap: wrap } .justify-start { justify-content: flex-start } .justify-end { justify-content: flex-end } .justify-center { justify-content: center } .justify-between { justify-content: space-between } .align-center { align-items: center } .mx-auto { margin: 0 auto } .text-center { text-align: center } .hidden { display: none } .badge-placeholder { display: inline-block; min-width: 4rem } @font-face { font-family: "Liberation Sans"; src: url(fonts/LiberationSans-Bold.woff2) format("woff2"),url(fonts/LiberationSans-Bold.woff) format("woff"); font-weight: 700; font-style: normal; font-display: swap } @font-face { font-family: "Liberation Sans"; src: url(fonts/LiberationSans-BoldItalic.woff2) format("woff2"),url(fonts/LiberationSans-BoldItalic.woff) format("woff"); font-weight: 700; font-style: italic; font-display: swap } @font-face { font-family: "Liberation Sans"; src: url(fonts/LiberationSans-Italic.woff2) format("woff2"),url(fonts/LiberationSans-Italic.woff) format("woff"); font-weight: 400; font-style: italic; font-display: swap } @font-face { font-family: "Liberation Sans"; src: url(fonts/LiberationSans.woff2) format("woff2"),url(fonts/LiberationSans.woff) format("woff"); font-weight: 400; font-style: normal; font-display: swap } @font-face { font-family: "Liberation Mono"; src: url(fonts/LiberationMono.woff2) format("woff2"),url(fonts/LiberationMono.woff) format("woff"); font-weight: 400; font-style: normal; font-display: swap } @font-face { font-family: "Droid Sans"; src: url(fonts/DroidSans.woff2) format("woff2"),url(fonts/DroidSans.woff) format("woff"); font-weight: 400; font-style: normal; font-display: swap } @font-face { font-family: Metropolis; src: url(fonts/Metropolis.woff2) format("woff2"),url(fonts/Metropolis.woff) format("woff"); font-weight: 400; font-style: normal; font-display: swap } @font-face { font-family: GeekdocIcons; src: url(fonts/GeekdocIcons.woff2) format("woff2"),url(fonts/GeekdocIcons.woff) format("woff"); font-weight: 400; font-style: normal; font-display: swap } body { font-family: "Liberation Sans",sans-serif } .gdoc-error__title, code { font-family: "Liberation Mono",monospace } .gdoc-header { font-family: Metropolis,sans-serif } html { font-size: 16px; letter-spacing: .33px; scroll-behavior: smooth } body, html { min-width: 20rem; overflow-x: hidden } body { color: #343a40; background: #fff; font-weight: 400; text-rendering: optimizeLegibility; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; box-sizing: border-box } body * { box-sizing: inherit } h1, h2, h3, h4, h5, h6 { font-weight: 400; display: flex; align-items: center } h4, h5, h6 { font-size: 1rem!important } a { text-decoration: none; color: #0a539a } a:hover { text-decoration: underline } a:visited { color: #7749bf } img { vertical-align: middle } .fake-link:hover { background-image: linear-gradient(#0a539a,#0a539a); background-position: 0 100%; background-size: 100% 1px; background-repeat: no-repeat; text-decoration: none } .wrapper { display: flex; flex-direction: column; min-height: 100vh } .container { width: 100%; max-width: 80rem; margin: 0 auto; padding: 1rem } .icon { display: inline-block; width: 1em; height: 1em; top: .125em; stroke-width: 0; stroke: currentColor; fill: currentColor; position: relative } .gdoc-header { background: #4186c9; color: #fff; border-bottom: .3em solid #2f333e } .gdoc-header__link, .gdoc-header__link:visited { color: inherit } .gdoc-header__link:hover { text-decoration: none } .gdoc-header .icon { width: 2rem; height: 2rem } .gdoc-brand { font-size: 2rem } .gdoc-brand__img { margin-right: 1rem } .gdoc-nav { flex: 0 0 16rem; font-size: .875rem } .gdoc-nav nav { width: 16rem; padding: 1rem 2rem 1rem 0 } .gdoc-nav nav > ul > li > * { font-weight: 400 } .gdoc-nav nav > :first-child { margin-top: 0 } .gdoc-nav__control { display: none; margin: 0; padding: 0 } .gdoc-nav__control .icon.menu { display: inline-block } .gdoc-nav__control .icon.arrow-back { display: none } .gdoc-nav__list { padding-left: 1em; margin: 0; padding: 0; list-style: none; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none } .gdoc-nav__list ul { padding-left: 1rem } .gdoc-nav__list li { margin: .5rem 0 } .gdoc-nav__list .icon { margin-right: .25rem } .gdoc-nav__toggle { display: none } .gdoc-nav__toggle ~ label { cursor: pointer } .gdoc-nav__toggle ~ label .icon { font-size: .7rem } .gdoc-nav__toggle:not(:checked) ~ label .icon.keyborad_arrow_down, .gdoc-nav__toggle:not(:checked) ~ ul { display: none } .gdoc-nav__toggle:not(:checked) ~ label .icon.keyborad_arrow_left { display: block } .gdoc-nav__toggle:checked ~ label .icon.keyborad_arrow_down, .gdoc-nav__toggle:checked ~ ul { display: block } .gdoc-nav__toggle:checked ~ label .icon.keyborad_arrow_left { display: none } .gdoc-nav__entry { flex: 1; color: #343a40 } .gdoc-nav__entry.is-active, .gdoc-nav__entry:hover { text-decoration: underline; -webkit-text-decoration-style: dashed!important; text-decoration-style: dashed!important } .gdoc-nav__entry:visited { color: #343a40 } .gdoc-nav--main > ul > li > label, .gdoc-nav--main > ul > li > label > a, .gdoc-nav--main > ul > li > span, .gdoc-nav--main > ul > li > span > a { font-weight: 700 } .gdoc-nav--more { padding-top: .5rem } .gdoc-page { min-width: 20rem; flex-grow: 1; padding: 1rem 0 } .gdoc-page__footer, .gdoc-page__header { margin-bottom: 1.2rem } .gdoc-page__footer .icon, .gdoc-page__header .icon { color: #868e96 } .gdoc-page__footer a, .gdoc-page__footer a:visited, .gdoc-page__header a, .gdoc-page__header a:visited { color: #0a539a } .gdoc-page__header { background: #f8f9fa; padding: .5rem 1rem; border-radius: .15rem } .gdoc-page__footer { margin-top: 2rem } .gdoc-page__footer a:hover { text-decoration: none } .gdoc-page__nav:hover { background-image: linear-gradient(#0a539a,#0a539a); background-position: 0 100%; background-size: 100% 1px; background-repeat: no-repeat } .gdoc-page__nav--prev:before { font-family: GeekdocIcons; content: "\ea13" } .gdoc-page__nav--next:after { font-family: GeekdocIcons; content: "\ea02" } .gdoc-page__anchorwrap:hover .gdoc-page__anchor .icon { color: #adb5bd } .gdoc-page__anchor { min-width: 30px } .gdoc-page__anchor--left { position: absolute; margin-left: -25px; text-align: left } .gdoc-page__anchor--right { text-align: right } .gdoc-page__anchor .icon { width: 1.4rem; height: 1.4rem; color: transparent } .gdoc-post { word-wrap: break-word; border-top: 1px dashed #868e96; padding: 2rem 0; line-height: 1.5 } .gdoc-post:first-of-type { padding-top: 0 } .gdoc-post__header h1 { margin-top: 0 } .gdoc-post__header a, .gdoc-post__header a:visited { color: #343a40; text-decoration: none } .gdoc-post__header a:hover { background: 0 0; text-decoration: underline; color: #343a40 } .gdoc-post__date { margin: 1em 0 } .gdoc-post__date .icon { font-size: 1.2em } .gdoc-post:first-child { border-top: 0 } .gdoc-post:first-child h1 { margin-top: 0 } .gdoc-post__readmore { margin: 1.5rem 0 2rem 0 } .gdoc-post__readmore a:after { font-family: GeekdocIcons; content: "\ea02" } .gdoc-post__readmore a, .gdoc-post__readmore a:hover, .gdoc-post__readmore a:visited { color: #0a539a; text-decoration: none!important } .gdoc-footer { background: #2f333e; color: #fff } .gdoc-footer__item { margin-right: 1em; line-height: 2em } .gdoc-footer__link { color: #ffa31e } .gdoc-footer__link:visited { color: #ffa31e } .gdoc-search { position: relative } .gdoc-search .icon { position: absolute; top: .625em; left: .5rem; color: #868e96; width: 1rem; height: 1rem } .gdoc-search .has-hits { border-bottom: 1px dashed #868e96 } .gdoc-search::after { display: block; content: ""; clear: both } .gdoc-search__input { width: 100%; padding: .5rem; padding-left: 2rem; border: 1px solid #e9ecef; border-radius: .15rem; background: #f8f9fa; color: #343a40 } .gdoc-search__input:required + .gdoc-search__input__spinner { display: block } .gdoc-search__spinner { position: absolute; margin: .5rem; right: 0; top: 0; width: 1rem; height: 1rem; border: 1px solid transparent; border-top-color: #343a40; border-radius: 50%; -webkit-animation: spin 1s ease infinite; animation: spin 1s ease infinite } @-webkit-keyframes spin { 100% { transform: rotate(360deg) } } @keyframes spin { 100% { transform: rotate(360deg) } } .gdoc-search__list { padding-left: 1em; margin: 0; padding: .5rem 0; list-style: none } .gdoc-search__list ul { padding-left: 1rem } .gdoc-search__list li { margin: .25rem 0 } .gdoc-search__list .icon { margin-right: .25rem } .gdoc-error { padding: 6rem 1rem; margin: 0 auto; max-width: 45em } .gdoc-error .icon { width: 6rem; height: 6rem; color: #495057 } .gdoc-error__link, .gdoc-error__link:visited { color: #0a539a } .gdoc-error__message { padding-left: 4rem } .gdoc-error__line { padding: .5rem 0 } .gdoc-error__title { font-size: 4rem } .gdoc-error__code { font-weight: bolder } .gdoc-toc__level--1 ul ul, .gdoc-toc__level--2 ul ul ul, .gdoc-toc__level--3 ul ul ul ul, .gdoc-toc__level--4 ul ul ul ul ul, .gdoc-toc__level--5 ul ul ul ul ul ul, .gdoc-toc__level--6 ul ul ul ul ul ul ul { display: none } .gdoc-toc a, .gdoc-toc a:visited { color: #0a539a } .gdoc-nav nav, .gdoc-page, .markdown { transition: .2s ease-in-out; transition-property: transform,margin-left,opacity; will-change: transform,margin-left } .gdoc-markdown { line-height: 1.6em } .gdoc-markdown > :first-child { margin-top: 0 } .gdoc-markdown--nested :first-child { margin-top: 0 } .gdoc-markdown--nested > :last-child { margin-bottom: 0 } .gdoc-markdown h1, .gdoc-markdown h2, .gdoc-markdown h3, .gdoc-markdown h4, .gdoc-markdown h5, .gdoc-markdown h6 { font-weight: 600 } .gdoc-markdown h1 > code, .gdoc-markdown h2 > code, .gdoc-markdown h3 > code, .gdoc-markdown h4 > code, .gdoc-markdown h5 > code, .gdoc-markdown h6 > code { border-top: 3px solid #dee2e6; font-size: .75em!important } .gdoc-markdown h4 > code, .gdoc-markdown h5 > code, .gdoc-markdown h6 > code { font-size: .8rem!important } .gdoc-markdown b, .gdoc-markdown optgroup, .gdoc-markdown strong { font-weight: bolder } .gdoc-markdown a { text-decoration: none; border-bottom: 1px solid transparent; line-height: 1em } .gdoc-markdown a:hover { text-decoration: underline } .gdoc-markdown img { max-width: 100% } .gdoc-markdown blockquote { margin: 1rem 0; padding: .5rem 1rem .5rem .75rem; border-left: .25rem solid #e9ecef; border-radius: .15rem } .gdoc-markdown blockquote :first-child { margin-top: 0 } .gdoc-markdown blockquote :last-child { margin-bottom: 0 } .gdoc-markdown table { overflow: auto; display: block; border-spacing: 0; border-collapse: collapse; margin-top: 1rem; margin-bottom: 1rem } .gdoc-markdown table tr td, .gdoc-markdown table tr th { padding: .5rem 1rem; border: 1px solid #e9ecef } .gdoc-markdown table tr:nth-child(2n) { background: #f8f9fa } .gdoc-markdown hr { height: 1px; border: none; background: #e9ecef } .gdoc-markdown ol, .gdoc-markdown ul { padding-left: 2rem } .gdoc-markdown dl dt { font-weight: bolder; margin-top: 1rem } .gdoc-markdown dl dd { margin-left: 2rem } .gdoc-markdown pre { margin: 1rem 0 } .gdoc-markdown code { background-color: rgba(233,236,239,.5); font-size: .85em; line-height: 1.45; padding: .2em .4em } .gdoc-markdown > pre code { display: block; padding: 1rem; width: 100%; overflow: auto } .chroma { background-color: #fff; color: #555; margin: 1rem 0 } .chroma code { background-color: rgba(233,236,239,.5); display: block; line-height: 1.45; font-size: .85em; border-radius: .15rem } .chroma .lntable td:first-child code { border-radius: 0; border-top-left-radius: .15rem; border-bottom-left-radius: .15rem } .chroma .lntable td:nth-child(2) code { border-radius: 0; border-top-right-radius: .15rem; border-bottom-right-radius: .15rem; padding-left: .5em } .chroma .lntable td:nth-child(2) code .hl { width: auto; margin-left: -.5em; padding: 0 .5em } .highlight pre.chroma { margin: 0 } .highlight > pre.chroma code { padding: 1rem; width: 100%; overflow: auto } .chroma .err { color: #a61717; background-color: #e3d2d2 } .chroma .lntd { vertical-align: top; padding: 0; margin: 0; border: 0 } .chroma .lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; width: 100%; overflow: auto; display: block } .chroma .lntable td:first-child code { background-color: #e9ecef; border-right: 1px solid #dcdfe3; padding: .5em 0 } .chroma .lntable td code { padding: .5em 0 } .chroma .lntable td:nth-child(2) { width: 100%; margin-left: 2em } .chroma .hl { display: block; width: 100%; background-color: #ffc } .chroma .lnt { padding: 0 .8em } .chroma .ln { margin-right: .4em; padding: 0 .4em 0 .4em } .chroma .k { color: #000; font-weight: 700 } .chroma .kc { color: #000; font-weight: 700 } .chroma .kd { color: #000; font-weight: 700 } .chroma .kn { color: #000; font-weight: 700 } .chroma .kp { color: #000; font-weight: 700 } .chroma .kr { color: #000; font-weight: 700 } .chroma .kt { color: #458; font-weight: 700 } .chroma .na { color: teal } .chroma .nb { color: #0086b3 } .chroma .bp { color: #999 } .chroma .nc { color: #458; font-weight: 700 } .chroma .no { color: teal } .chroma .nd { color: #3c5d5d; font-weight: 700 } .chroma .ni { color: purple } .chroma .ne { color: #900; font-weight: 700 } .chroma .nf { color: #900; font-weight: 700 } .chroma .nl { color: #900; font-weight: 700 } .chroma .nn { color: #555 } .chroma .nt { color: navy } .chroma .nv { color: teal } .chroma .vc { color: teal } .chroma .vg { color: teal } .chroma .vi { color: teal } .chroma .s { color: #d14 } .chroma .sa { color: #d14 } .chroma .sb { color: #d14 } .chroma .sc { color: #d14 } .chroma .dl { color: #d14 } .chroma .sd { color: #d14 } .chroma .s2 { color: #d14 } .chroma .se { color: #d14 } .chroma .sh { color: #d14 } .chroma .si { color: #d14 } .chroma .sx { color: #d14 } .chroma .sr { color: #009926 } .chroma .s1 { color: #d14 } .chroma .ss { color: #990073 } .chroma .m { color: #099 } .chroma .mb { color: #099 } .chroma .mf { color: #099 } .chroma .mh { color: #099 } .chroma .mi { color: #099 } .chroma .il { color: #099 } .chroma .mo { color: #099 } .chroma .o { color: #000; font-weight: 700 } .chroma .ow { color: #000; font-weight: 700 } .chroma .c { color: #998; font-style: italic } .chroma .ch { color: #998; font-style: italic } .chroma .cm { color: #998; font-style: italic } .chroma .c1 { color: #998; font-style: italic } .chroma .cs { color: #999; font-weight: 700; font-style: italic } .chroma .cp { color: #999; font-weight: 700; font-style: italic } .chroma .cpf { color: #999; font-weight: 700; font-style: italic } .chroma .gd { color: #000; background-color: #fdd } .chroma .ge { color: #000; font-style: italic } .chroma .gr { color: #a00 } .chroma .gh { color: #999 } .chroma .gi { color: #000; background-color: #dfd } .chroma .go { color: #888 } .chroma .gp { color: #555 } .chroma .gs { font-weight: 700 } .chroma .gu { color: #aaa } .chroma .gt { color: #a00 } .chroma .gl { text-decoration: underline } .chroma .w { color: #bbb } .gdoc-expand { margin-top: 1rem; margin-bottom: 1rem; border: 1px solid #e9ecef; border-radius: .15rem; overflow: hidden } .gdoc-expand__head { background: #f8f9fa; padding: .5rem 1rem; cursor: pointer } .gdoc-expand__content { display: none; padding: 1rem } .gdoc-expand__control:checked + .gdoc-expand__content { display: block } .gdoc-expand .gdoc-page__anchor { display: none } .gdoc-tabs { margin-top: 1rem; margin-bottom: 1rem; border: 1px solid #e9ecef; border-radius: .15rem; overflow: hidden; display: flex; flex-wrap: wrap } .gdoc-tabs__label { display: inline-block; padding: .5rem 1rem; border-bottom: 1px transparent; cursor: pointer } .gdoc-tabs__content { order: 999; width: 100%; border-top: 1px solid #f8f9fa; padding: 1rem; display: none } .gdoc-tabs__control:checked + .gdoc-tabs__label { border-bottom: 1px solid #0a539a } .gdoc-tabs__control:checked + .gdoc-tabs__label + .gdoc-tabs__content { display: block } .gdoc-columns { margin-left: -1rem; margin-right: -1rem } .gdoc-columns__content { margin: 1rem 0; min-width: 13.2rem; padding: 0 1rem } .gdoc-columns .gdoc-page__anchor { display: none } .gdoc-button { display: inline-block; color: #495057; border: 1px solid #adb5bd; border-radius: .15rem; margin: .5rem 0; cursor: pointer } .gdoc-button__link { display: inline-block; color: inherit!important; text-decoration: none!important; padding: .25rem 1rem } .gdoc-button:hover { background: rgba(65,134,201,.9); border-color: #4186c9; color: #f8f9fa } .gdoc-hint.info { border-left-color: #6bf; background-color: rgba(102,187,255,.1) } .gdoc-hint.warning { border-left-color: #fd6; background-color: rgba(255,221,102,.1) } .gdoc-hint.danger { border-left-color: #f66; background-color: rgba(255,102,102,.1) } .gdoc-mermaid { font-family: "Liberation Sans",sans-serif }