From 231c4992321cc84c5748216d989f92dddc0a0ed4 Mon Sep 17 00:00:00 2001 From: lentryd Date: Wed, 23 Aug 2023 05:12:26 +0000 Subject: [PATCH] update content --- 404.html | 1 + css/614.03fab845.css | 1 + css/801.e38130a9.css | 1 + css/985.f2e8cb0c.css | 1 + css/app.d282c66f.css | 1 + favicon.ico | Bin 0 -> 15406 bytes img/icons/android-chrome-192x192.png | Bin 0 -> 6905 bytes img/icons/android-chrome-512x512.png | Bin 0 -> 23152 bytes img/icons/apple-touch-icon.png | Bin 0 -> 6400 bytes img/icons/favicon-16x16.png | Bin 0 -> 489 bytes img/icons/favicon-32x32.png | Bin 0 -> 966 bytes img/icons/favicon.ico | Bin 0 -> 15406 bytes index.html | 1 + js/364.1b61b8d2.js | 1 + js/614.b5f28f4d.js | 1 + js/801.0a50fa6b.js | 1 + js/985.7c1c1e2e.js | 1 + js/app.85bbbd14.js | 1 + js/chunk-vendors.10f91261.js | 7 +++++++ manifest.json | 1 + robots.txt | 2 ++ service-worker.js | 1 + workbox-94d8ddb9.js | 1 + 23 files changed, 23 insertions(+) create mode 100644 404.html create mode 100644 css/614.03fab845.css create mode 100644 css/801.e38130a9.css create mode 100644 css/985.f2e8cb0c.css create mode 100644 css/app.d282c66f.css create mode 100644 favicon.ico create mode 100644 img/icons/android-chrome-192x192.png create mode 100644 img/icons/android-chrome-512x512.png create mode 100644 img/icons/apple-touch-icon.png create mode 100644 img/icons/favicon-16x16.png create mode 100644 img/icons/favicon-32x32.png create mode 100644 img/icons/favicon.ico create mode 100644 index.html create mode 100644 js/364.1b61b8d2.js create mode 100644 js/614.b5f28f4d.js create mode 100644 js/801.0a50fa6b.js create mode 100644 js/985.7c1c1e2e.js create mode 100644 js/app.85bbbd14.js create mode 100644 js/chunk-vendors.10f91261.js create mode 100644 manifest.json create mode 100644 robots.txt create mode 100644 service-worker.js create mode 100644 workbox-94d8ddb9.js diff --git a/404.html b/404.html new file mode 100644 index 0000000..79ebd6b --- /dev/null +++ b/404.html @@ -0,0 +1 @@ +NetSchoolApi
\ No newline at end of file diff --git a/css/614.03fab845.css b/css/614.03fab845.css new file mode 100644 index 0000000..90afd83 --- /dev/null +++ b/css/614.03fab845.css @@ -0,0 +1 @@ +.skeleton-container{display:flex;gap:.625rem;flex-direction:column}.skeleton{opacity:.7;animation:skeleton-loading 1s linear infinite alternate}@keyframes skeleton-loading{0%{background-color:hsl(var(--repo-card-skeleton-background),70%)}to{background-color:hsl(var(--repo-card-skeleton-background),95%)}}.skeleton-img{width:40px;height:40px;border-radius:50%}.skeleton-label{width:60px;height:16px;border-radius:5px}.skeleton-header{width:120px;height:20px;border-radius:5px}.skeleton-text{width:100%;height:16px;margin-bottom:8px;border-radius:5px}.skeleton-text:last-child{width:90%;margin-bottom:0}.skeleton-badge{width:60px;height:16px;border-radius:5px}.repo-owner{width:-moz-fit-content;width:fit-content;display:flex;gap:.375rem;align-items:center;flex-direction:row}.repo-owner-avatar{width:1.873rem;height:1.873rem;border-radius:50%}.repo-owner-username{color:var(--repo-card-color);font-size:1rem;font-style:normal;font-weight:300;text-decoration-line:underline}@media screen and (min-width:64em){.repo-owner{gap:.625rem}.repo-owner-avatar{width:2.5rem;height:2.5rem}.repo-owner-username{font-size:1.25rem}}@media screen and (max-width:64em){.repo-owner{gap:.375rem}.repo-owner-avatar{width:1.873rem;height:1.873rem}.repo-owner-username{font-size:1rem}}.repo-name{display:block;font-size:1.5rem;font-style:normal;font-weight:700}@media screen and (min-width:64em){.repo-name{font-size:1.75rem}}@media screen and (max-width:64em){.repo-name{font-size:1.5rem}}.repo-description{display:block;font-style:normal;font-weight:300}@media screen and (min-width:64em){.repo-description{font-size:1.25rem}}@media screen and (max-width:64em){.repo-description{font-size:1rem}}.repo-homepage{width:-moz-fit-content;width:fit-content;display:flex;gap:.375rem;align-items:center;flex-direction:row;color:var(--repo-card-color);font-size:.875rem;font-style:normal;font-weight:700;text-decoration-line:underline}@media screen and (min-width:64em){.repo-homepage{gap:.625rem;font-size:1rem}}@media screen and (max-width:64em){.repo-homepage{gap:.375rem;font-size:.875rem}}.repo-stats{gap:1rem;flex-wrap:wrap}.repo-stats,.repo-stats-badge{display:flex;flex-direction:row}.repo-stats-badge{gap:.375rem;align-items:center;font-size:.875rem;font-style:normal;font-weight:300;color:var(--repo-card-icon-color)}.repo-stats-badge span{font-weight:700;color:var(--repo-card-color)}@media screen and (min-width:64em){.repo-stats{gap:1.25rem}.repo-stats-badge{gap:.625rem;font-size:1rem}}@media screen and (max-width:64em){.repo-stats{gap:1rem}.repo-stats-badge{gap:.375rem;font-size:.875rem}}.body-container,.error-container{display:flex;gap:.625rem;flex-direction:column}.error-header{font-size:1.5rem;font-weight:700}.error-header,.error-text{display:block;font-style:normal}.error-text{font-size:1rem;font-weight:300}@media screen and (min-width:64em){.error-container{gap:.625rem}.error-header{font-size:1.75rem}.error-text{font-size:1.25rem}}@media screen and (max-width:64em){.error-container{gap:.375rem}.error-header{font-size:1.5rem}.error-text{font-size:1rem}}.repo-page{display:flex;flex-direction:row;align-items:center;justify-content:center;text-decoration:none;font-style:normal;color:var(--repo-card-btn-color);background:var(--repo-card-btn-background);border:.0625rem solid var(--repo-card-btn-border);border-radius:.375rem}.repo-page .repo-icon{fill:var(--repo-card-btn-color)}@media screen and (min-width:64em){.repo-page{gap:.625rem;padding:.625rem 0;font-size:1rem}}@media screen and (max-width:64em){.repo-page{gap:.375rem;padding:.375rem 0;font-size:.875rem}}.repo-icon{fill:var(--repo-card-icon-color)}@media screen and (min-width:64em){.repo-icon{width:1rem;height:1rem}}@media screen and (max-width:64em){.repo-icon{width:.875rem;height:.875rem}}.repo-card{display:flex;gap:.625rem;flex-direction:column;color:var(--repo-card-color);background:var(--repo-card-background);border-bottom:.09375rem solid var(--divider-background)}@media screen and (min-width:64em){.repo-card{padding:4rem calc(50vw - 26em)}}@media screen and (min-width:42em) and (max-width:64em){.repo-card{padding:3rem 4rem}}@media screen and (max-width:42em){.repo-card{padding:2rem 1rem}}.btn{cursor:pointer;gap:.375rem;font-size:1rem;font-style:normal;font-weight:400;padding:.625rem 0;flex-direction:row}.btn,.btn-icon{display:flex;align-items:center}.btn-icon{padding:.5rem;justify-content:center;border-radius:.375rem}.btn-icon svg{width:1rem;height:1rem}@media screen and (min-width:64em){.btn{gap:.625rem;font-size:1.25rem;padding:.875rem 0}.btn-icon{padding:.75rem}.btn-icon svg{width:1.25rem;height:1.25rem}}@media screen and (max-width:64em){.btn{gap:.375rem;font-size:1rem;padding:.625rem 0}.btn-icon{padding:.5rem}.btn-icon svg{width:1rem;height:1rem}}.readme-info{margin:1rem 0;gap:.375rem;display:flex;align-items:center;flex-direction:row;color:var(--readme-color);font-size:.875rem;font-style:normal;font-weight:400}.readme-icon{fill:var(--readme-icon-color);width:.875rem;height:.875rem}@media screen and (min-width:64em){.readme-info{gap:.625rem;font-size:1rem}.readme-icon{width:1rem;height:1rem}}@media screen and (max-width:64em){.readme-info{gap:.375rem;font-size:.875rem}.readme-icon{width:.875rem;height:.875rem}}.btns-container{margin:1rem 0;display:flex;flex-direction:column} \ No newline at end of file diff --git a/css/801.e38130a9.css b/css/801.e38130a9.css new file mode 100644 index 0000000..f141cff --- /dev/null +++ b/css/801.e38130a9.css @@ -0,0 +1 @@ +.blob-header{width:100%;height:3rem;background:var(--blob-header-background);border-bottom:1px solid var(--divider-background);top:0;z-index:9999;position:sticky;padding:.5rem;display:flex;flex-direction:row;justify-content:space-between}.blob-header-icon{width:1rem;height:1rem;fill:var(--blob-header-icon-color)}.blob-header-back,.blob-header-edit{cursor:pointer;display:flex;gap:.625rem;align-items:center;flex-direction:row}.blob-header-name{font-size:1rem;font-weight:700}@media screen and (min-width:64em){.blob-header{height:3.5rem;padding:1rem}.blob-header-icon{width:1.25rem;height:1.25rem}.blob-header-back,.blob-header-edit{gap:.875rem}.blob-header-name{font-size:1.25rem}} \ No newline at end of file diff --git a/css/985.f2e8cb0c.css b/css/985.f2e8cb0c.css new file mode 100644 index 0000000..8e786e6 --- /dev/null +++ b/css/985.f2e8cb0c.css @@ -0,0 +1 @@ +.btn{cursor:pointer;gap:.375rem;font-size:1rem;font-style:normal;font-weight:400;padding:.625rem 0;flex-direction:row}.btn,.btn-icon{display:flex;align-items:center}.btn-icon{padding:.5rem;justify-content:center;border-radius:.375rem}.btn-icon svg{width:1rem;height:1rem}@media screen and (min-width:64em){.btn{gap:.625rem;font-size:1.25rem;padding:.875rem 0}.btn-icon{padding:.75rem}.btn-icon svg{width:1.25rem;height:1.25rem}}@media screen and (max-width:64em){.btn{gap:.375rem;font-size:1rem;padding:.625rem 0}.btn-icon{padding:.5rem}.btn-icon svg{width:1rem;height:1rem}}.readme-info{margin:1rem 0;gap:.375rem;display:flex;align-items:center;flex-direction:row;color:var(--readme-color);font-size:.875rem;font-style:normal;font-weight:400}.readme-icon{fill:var(--readme-icon-color);width:.875rem;height:.875rem}@media screen and (min-width:64em){.readme-info{gap:.625rem;font-size:1rem}.readme-icon{width:1rem;height:1rem}}@media screen and (max-width:64em){.readme-info{gap:.375rem;font-size:.875rem}.readme-icon{width:.875rem;height:.875rem}} \ No newline at end of file diff --git a/css/app.d282c66f.css b/css/app.d282c66f.css new file mode 100644 index 0000000..d2ee1de --- /dev/null +++ b/css/app.d282c66f.css @@ -0,0 +1 @@ +@import url(https://fonts.googleapis.com/css2?family=Roboto:wght@100;300;400;500;700&display=swap);.fade-enter-active,.fade-leave-active{transition:opacity .25s ease}.fade-enter-from,.fade-leave-to{opacity:0}@media (prefers-color-scheme:light){:root{--app-color:#0c0c0c;--app-background:#fff;--link-color:#0366d6;--blockquote-color:#6c6f7e;--blockquote-border:#e2e3e7;--table-border:#e3e4e8;--table-even-background:#f7f7f9;--code-color:#6b6e7d;--code-background:#f7f7f9;--pre-color:#303439;--pre-background:#f7f7f9;--divider-background:#d6d7d9;--repo-card-color:#0a0a0a;--repo-card-background:#fbfbfc;--repo-card-skeleton-background:240,12%;--repo-card-icon-color:#9194a1;--repo-card-btn-color:#41434e;--repo-card-btn-border:#cacbce;--repo-card-btn-background:#fff;--repo-btn-box:#eff0f5;--repo-btn-fill:#525560;--readme-color:#525560;--readme-icon-color:#525560;--blob-header-color:#050505;--blob-header-background:#fbfbfc;--blob-header-icon-color:#050505}}@media (prefers-color-scheme:dark){:root{--app-color:#fbfbfc;--app-background:#17181c;--link-color:#2e8fff;--blockquote-color:#9093a0;--blockquote-border:#41434e;--table-border:#41434e;--table-even-background:#24252a;--code-color:#9194a1;--code-background:#24252a;--pre-color:#fbfbfc;--pre-background:#24252a;--divider-background:#323337;--repo-card-color:#fff;--repo-card-background:#0b0b0d;--repo-card-skeleton-background:230,8%;--repo-card-icon-color:#6c6f7e;--repo-card-btn-color:#bfc1c9;--repo-card-btn-border:#232326;--repo-card-btn-background:#17181c;--repo-btn-box:#383a42;--repo-btn-fill:#bfc1c9;--readme-color:#a9abb6;--readme-icon-color:#6c6f7e;--blob-header-color:#fefefe;--blob-header-background:#17181c;--blob-header-icon-color:#fefefe}}::-webkit-scrollbar{width:.2rem;height:.2rem}::-webkit-scrollbar-track{box-shadow:none}::-webkit-scrollbar-thumb{background-color:#b2b2b2}html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}*{box-sizing:border-box}body{padding:0;margin:0;font-family:Roboto,sans-serif;font-size:16px;line-height:1.5;color:var(--app-color);background-color:var(--app-background)}a{color:var(--link-color);cursor:pointer;text-decoration:underline}.main-content{word-wrap:break-word;padding-top:0!important}@media screen and (min-width:64em){.main-content{max-width:64rem;padding:2rem 6rem;margin:0 auto;font-size:1.1rem}}@media screen and (min-width:42em) and (max-width:64em){.main-content{padding:2rem 4rem;font-size:1.1rem}}@media screen and (max-width:42em){.main-content{padding:2rem 1rem;font-size:1rem}}.main-content kbd{background-color:#fafbfc;border:1px solid #c6cbd1;border-bottom-color:#959da5;border-radius:3px;box-shadow:inset 0 -1px 0 #959da5;color:#444d56;display:inline-block;font-size:11px;line-height:10px;padding:3px 5px;vertical-align:middle}.main-content img{max-width:100%}.main-content h1,.main-content h2,.main-content h3,.main-content h4,.main-content h5,.main-content h6{margin-top:2rem;margin-bottom:1rem;font-weight:400}.main-content p{margin-bottom:1em}.main-content code{padding:2px 4px;font-family:Consolas,Liberation Mono,Menlo,monospace;font-size:.9rem;color:var(--code-color);background-color:var(--code-background);border-radius:.3rem}.main-content pre{padding:.8rem;margin-top:0;margin-bottom:1rem;font:1rem Consolas,Liberation Mono,Menlo,monospace;color:var(--pre-color);word-wrap:normal;background-color:var(--pre-background);border-radius:.3rem}.main-content pre>code{padding:0;margin:0;color:var(--pre-color);font-size:.9rem;word-break:normal;white-space:pre;background:transparent;border:0}.main-content .highlight{margin-bottom:1rem}.main-content .highlight pre{margin-bottom:0;word-break:normal}.main-content .highlight pre,.main-content pre{padding:.8rem;overflow:auto;font-size:.9rem;line-height:1.45;border-radius:.3rem;-webkit-overflow-scrolling:touch}.main-content pre code,.main-content pre tt{display:inline;max-width:none;padding:0;margin:0;overflow:initial;line-height:inherit;word-wrap:normal;background-color:transparent;border:0}.main-content pre code:after,.main-content pre code:before,.main-content pre tt:after,.main-content pre tt:before{content:normal}.main-content ol,.main-content ul{margin-top:0}.main-content blockquote{padding:0 1rem;margin-left:0;color:var(--blockquote-color);border-left:.2rem solid var(--blockquote-border)}.main-content blockquote>:first-child{margin-top:0}.main-content blockquote>:last-child{margin-bottom:0}.main-content table{display:block;width:100%;margin-bottom:1rem;overflow:auto;word-break:normal;word-break:keep-all;-webkit-overflow-scrolling:touch}.main-content table th{font-weight:700}.main-content table td,.main-content table th{padding:.5rem 1rem;border:1px solid var(--table-border)}.main-content table tr:nth-child(2n){background-color:var(--table-even-background)}.main-content dl{padding:0}.main-content dl dt{padding:0;margin-top:1rem;font-size:1rem;font-weight:700}.main-content dl dd{padding:0;margin-bottom:1rem}.main-content hr{height:.0936rem;padding:0;margin:1rem 0;background-color:var(--divider-background);border:0}.main-content-code{word-wrap:break-word}@media screen and (min-width:64em){.main-content-code{font-size:1.1rem}}@media screen and (min-width:42em) and (max-width:64em){.main-content-code{font-size:1.1rem}}@media screen and (max-width:42em){.main-content-code{font-size:1rem}}.blob-wrapper{overflow-x:auto;overflow-y:hidden;padding:.5rem 0;background-color:var(--pre-background)}.blob-num{line-height:20px;padding-left:10px;padding-right:10px;width:1%;min-width:50px;color:#8b949e;font-size:12px;text-align:right;white-space:nowrap;vertical-align:top;-webkit-user-select:none;-moz-user-select:none;user-select:none}.blob-num:before{content:attr(data-line-number)}.blob-code{position:relative;overflow:visible;line-height:20px;padding-left:10px;padding-right:10px;word-wrap:normal;white-space:pre;font:14px Consolas,Liberation Mono,Menlo,monospace;vertical-align:top}@media (prefers-color-scheme:light){pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#24292e;background:#fff}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#d73a49}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#6f42c1}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-property,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id,.hljs-variable{color:#005cc5}.hljs-meta .hljs-string,.hljs-regexp,.hljs-string{color:#032f62}.hljs-built_in,.hljs-symbol{color:#e36209}.hljs-code,.hljs-comment,.hljs-formula{color:#6a737d}.hljs-name,.hljs-quote,.hljs-selector-pseudo,.hljs-selector-tag{color:#22863a}.hljs-subst{color:#24292e}.hljs-section{color:#005cc5;font-weight:700}.hljs-bullet{color:#735c0f}.hljs-emphasis{color:#24292e;font-style:italic}.hljs-strong{color:#24292e;font-weight:700}.hljs-addition{color:#22863a;background-color:#f0fff4}.hljs-deletion{color:#b31d28;background-color:#ffeef0}}@media (prefers-color-scheme:dark){pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#c9d1d9;background:#0d1117}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#ff7b72}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#d2a8ff}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-property,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id,.hljs-variable{color:#79c0ff}.hljs-meta .hljs-string,.hljs-regexp,.hljs-string{color:#a5d6ff}.hljs-built_in,.hljs-symbol{color:#ffa657}.hljs-code,.hljs-comment,.hljs-formula{color:#8b949e}.hljs-name,.hljs-quote,.hljs-selector-pseudo,.hljs-selector-tag{color:#7ee787}.hljs-subst{color:#c9d1d9}.hljs-section{color:#1f6feb;font-weight:700}.hljs-bullet{color:#f2cc60}.hljs-emphasis{color:#c9d1d9;font-style:italic}.hljs-strong{color:#c9d1d9;font-weight:700}.hljs-addition{color:#aff5b4;background-color:#033a16}.hljs-deletion{color:#ffdcd7;background-color:#67060c}} \ No newline at end of file diff --git a/favicon.ico b/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..091172caec482f54505056aa4d187aaf19b9a451 GIT binary patch literal 15406 zcmeHOXJ{2m6y6lYoZMB4Q7spyml0V?hxMqLLpfVg=i?8@nip z9kHO0UkOn}G1wBj*s*I&L_Kf5_06)`%!U| zy^Vgm%EN~bDJm+e3O;CDzkb~gRqvZKXO4lJnwm-|{97hXnq-Ur`SWLrjg2+N=j7zj z&Ye4r_XZ6b5Pn-3Y}&NR7~8B_Gb$@9(+lcchBa%}2+@E3{7D@Vz0F}92t zX3m^RPo6vxcY4&iYu7F*r3DKX(8rG-rTt!X?Af!2UcGuHEMv!xC7hLh!H*w5sBz=Q z#(BkbdX@Tv2M_#WPv_2^tHRGJ!^)K_ed9lP@L)&&fk1#TPhJD`TV!OUBY(`ti4!Nh zW=}I_%uwPD{{8#+_muyK4y~FS;C^LYXHM^!FE0RVscqY~LjKVA z$;rvWKI~I3bkXtS$A$Fq{adzdq0O5&OZzu&+!*o{q@|?^>Bq&z>9!N}T}(`ja7eZ_! z9d5iod-hD~Bk10}yD`qLa^S!LijR+{R;^l9DlJ;HAjsteJ$m#YjJ4u}rsQs1$p*4p zt7hMiOb)yI@1sYLtZ3X0wYG=r9hYft16P^{p9SFG9m&@8{~F*YVJ=$jZ&vL5B&=Iw zzex-$Ft7_)DPyIk0%U`XkTu36`#bS#PU_;=HteXAFp)Y1u2p;8vLw%`}TD$KklC{ zW75hpxfzJqkvZRk&#%+7PMtcmdi83d&(972P{u;fAhv1F6>*Z=+~2QXKSJ!Zx&UWT zVq&7}wZp#wdZ;@0G2$4iu{SQW^_iZYUMsRUWtR@Z;l77j8g~o?BUE<1;fe z!@7?@efp&PtYz}JZATn1oVNVQlP3vrHYYi8r#9!v$;Km|w0`~iu>1zF6{k#@;;1vR zuMr#Bv15nQ9v?JlP+0DCi0|R-l+7h?@7%dFA+CUecrb65J)uj@Ik0~1XXIhXWZ>W=jII4=C&B(|IDX#1E&B(KY?aJkpJ)1XgP8Tm;G{_;=i#FMK-VVQno4jL# zfnsIDh7FD~K$bpz`slU{C(G?iE~njd)~s0^&C@65zDt)bj`HI!B=RjBK7815&*Qrg zs};oKLjD%yV>fBi#8H0iTb#{SKwGCyogDFD2W{QD)zf`|J3jW7$~_bMQU=?%Z+Da* zzX9^!;j8uvknfE!G8mKV}?J9eF2LuU_>^d_A{O#K+tQ{fOKm(c0mH zU>{GLHcd&FVw@L%ecQBYQ^z^OeFA<^CqUkjIp^Oz2j)6-X{a$K_`B_LC(Qid4_Ao? zVO@9Y*3EG~Kzq@mMIr5Drb!-frW%>wybz?IQOJMPuUzrs4O0bvaC z*s)`JtOsWabh@bEe_Ht8i(T%wj4$*Ha6v;v8*S)AoFgwUPez946IAI(tWYH$ggfTT vmoKZ}J2e1DC0+m-Z1OF6E<|n4A3zR7tM=ad`aI literal 0 HcmV?d00001 diff --git a/img/icons/android-chrome-192x192.png b/img/icons/android-chrome-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..e392cf0256950d85d5d07a62091c73f68c44d66e GIT binary patch literal 6905 zcmXY0byyVN*WX=s1r`M)MM1htx?yQny1S9?Mruhxkd~5`bZJ2v7Nr$XKsuG~kgj*W zzvum9=04BddFGzEbI$q1#A>K1K7v1mgFv81NF_NfV8r});5-1%TJz4>zyS8rQj`Hz zk5F!bKu&v%h;O`BleE zkjf04$_zw7Ow6kdhH*k6!N@&^#A*+><;d9$^L?NFeRo`MdhcA6>8JA zyZt+i8VOJ`Wl_FlB^8$ICM{+}-Asht1{nDvQ1dmeoDw9CAs5xpvOvj(2Fa&9Pn%$n zAwJhWB2q$Hq!+u!%2}Chho-S0>YD64>(JwKHzDJ4nvi*1_vGhU$M_;JB`=>vs$Rou zkpSGZWJF?G9DfODj?77co|}z3?1|Dc7DuieT^)_)&DjBGEGCS=v)AJEmPEcb9?7J?6trLQLVp zp3qjf(K6rnQ-|6Q3rtNoqG!&l@6P7jS})f>_)J^AaX4S_^ZSd>cXzeJJ)Fg-$lZBS zbal3eKAkikz41;NEWW!rQLk#8G98NbcBKKwk)3ZeiU!HC@%R_#%-85x%ny z%sxAl!!B$jUx^m||2{Gexm?Q@bjkL2n*5}zoXV`Oht{)+jwI*qx~UiS-lS0zTr96L zZkl|RVOm|{ht{o5M??w-FVcPeI)Q>K2oYNA^VRiD+mziA;!Xg00} zw||_4-e2c4sb&}FNd#_Zn1@u1e1zYbl7RSDQk1z^FWgA4uno*q+Gu5?h506UC(T2H z7ecQ0M9-$JopyV*t>LI;5nQg0e_D3Ji^&psQu ze%X0YW|w@)VDG)gsmbymPC8(NFd(U96sdgD7DMlY$MME04f*`6Tw2!BOZ&52-2J~K zoqura%-Z`Hc1MMctA@SLAQ1ahAH*bN`{Rin-0;EO@swGhYTzz-N7#?SAQpH0uJZ=eAs2;f0v_iel`k(MzTccqnY+D)&$+f$N#0%j z&2IiTs{vB*IOsUvp3qh&&9FuT6+o4v-uj^ZG3+r|dLY+t(Qqk5xxAmrU3j^W?j;oz zA_C6boH7rsI@_E3(1}+oJY51!`5J@$+#kW5=U=o{DC9h?F)Ddo=|2Mv!;qj56U*HZ z0^XY%<7FW70Y&Oy9jD4V1;QQewWXfF3M4*P|F(2P6bicr@Jjs-7F`LTYc6;yV8Z=) z3ODN0|r$BTq13sAu??&x1wXb+Kq^pwHj5)FK&benOi>5!`)d+^LT>16)+wi`i;8mzsX zYjm=kefS3-Q__LSiVZL}_RMMZ-P`ue;fN^b2KUoEZiXC2i(V{8$WNB*)*j8MsAfk- za5=31$Qrq0UircHWzJPB14QoqI%pY=fjst*xZ3>K`^$wC>fqXbq=5d$F2MDp@iBe5 zS3Ta3mnr|kqj6yu`)vo_tI3MhDJhf_4xRh4m`b9dOBkpPuQZ33Iarp8>`5a$&8E%;>c1#n{GAr|+4o0yIrNy%;| zNe81-zK*L)E&N-{@P~6hW`FN%OM;3DKK-r#yGS1IbElI5=YZh`#Ew(S{_=Qjd#WZM zkHe5Fs5==Y+YMJ?1;u*&OjgMi{rxsbkD{NeZTF9-{+AisXWG^`Hz%XN+XK8ZtY485 z(qhgC8+OL$8HIxpqv9v=Cpdpih>Crl8bOD zWyLvz&!@Xb;hpp2qz~GlA2iO+aLvj*$UH1B=oo2N zZ3qhM8Oas<@a1+T{Het229}^Es23dNj+30qU^kN&C4}>*v_Kt91g}8X2Dw>{FZs^7 ztp89r%SOUzq+%>^dvx@q>%`s6-fl!dOX-;COF!!Fw(eAq+{`$ltA0HCRScnFG@w75 z_fr3SDNQnvGUU10ifcR75KUILFD(7&!dv#wjW$yGBL6XWQMbH3_aEs}lSYoWU zht}cU*Mkxmwt{cPtH0P(*g;wE0EB2a^Iw6XkG;r$vTBz?c_oY1ZFG%b#clr>YfaP~ zjleitOWxzE35?U*#`qa5X6OaqxhjQoT6ykTC*udFiyFK}Z*S7yXE?wtY6+RBUT+pw zcSq=AY#z>;s`4PcE~EA%SB20tzq2;~v6kgn9Up&4`49l3QBH&M-wfzU3sFF<1$^M{ ze>BQ&hJ}_4NMo0;yT#G^qrM07CvXgWya$pnqJsraqHNs;=NYX;@nfa#h2S`HZr?m=t_;1fVRdUsVW}#5emJJ2 zM)iZBt&^!otjrOF*o!vIP#Qnw_jpo^cAE8!jjDP6PZo^2)NS$pLYr8+AiCi5pe%ue zPOUQaIzgB8;V|3gK~xG+F9DX!M-Ydk+)JolrRTyoH(Y8ddA=x+Eo^vi`L+QL$V0flMOqm!jE233r1>zr!W4I z2kzGO{}}pk)Qw6fSiYi^3JH>YuA5}He8oVzioqh_7&yVZ{HehPGAufu_eyj!vTW2t z38KBbD_!~1>@XJ=GiS_($t)6Eqn5HPq#)W<90i+9XH7JXEx6ECmpiIQauuMR9E#8j%+@+N&Z3mNkV}HF1t((=w}%rZR4yyD(A_C8vA!@IT?yo3-7=t_~tHW z;2+Oq<4sbO9%3~w{+SS0#^r6M#vX~Q>VMSP1Jje{DfVxq!+dq z+Doe6Jn=7^4#JYgL01UEc?0Fga}na>oJbJc-@M@Yyf(Ca73n|aIV8k91GHRIYX(r% z?2Wh(FC29#`;@C%GmeHgUYVrHk|~45?H-_$qElsSDT@2dnYr(M_KZw223SB}ORjN( zVU>_-Z7pG5UFDUlNX2|iiY@}1fc{kSde_<~=KWLsViM3v*gqU}kO;%OU$n{ddB=#A z(4EPu;dLP%Te@+E&M1LHUA_HeEfCS)%~T(N_RB0-zbzRDu$hzAKXoNGjD z`!c;5YvF#a;$y^|=DMzWlT0aa3@b)Hb^RAvvYBw=o;vNNJh`b&>t+;JTC-#ewj6G< z4u}jVUyOuJ?^m^{n7(Y>!P0ADLK|W0zIcsvaa-g20X9(bgkF_V*1K{~ic2 zbmiw2r}E&U7+~^WEY^dE?!8ajUvWZ8g#;yoiu9zH@y6fiRcgxFkfM6SmB^Pwds@k) z(^+bB&M+kz-?=lES?I>#DD~U{w#RyjL&_jOW>@w3{ATHoF-q(pytCy9g4Ua-zyu0K z9>xu^(3D>#1)V^+G{662)e|CTB`B7Z8$QkAIv8LFr82%yNRIvey;dGZGxM%kC}pWA z-hc(fsb{Ek>>}=&3fdYemiP;M%WG8#I^1^8qW`n49=1D|rJ`$+PtqwzRi^?JB#;$ci|Av=0wm{+F>@CF^5j>E5bmS#2KiBwa}tPJ{Q0k4X=yI7_B6u_B> zX{_3mGii#pxCk%E0&WAd2cnV$be+%fU!2lzqA}Gp?co<}_%ZJxwFPOETIm<(OQHRi z!R!)>5Oa;^eXu%h5PY2{VlnWbqq)*!dDm^YFb_7c4Xs2M9n#bQjq+Nt~2G{i-LlMIMVTV5B5kmU~tI0h=nLB@? zr`bSww>`w_<<|WPb)y7D!ubkQ9&(kWs4p+)VT(a0!@|`aANc0w0I`CsG|AtJqjG{R z^9BJ*u(_T5PRw=rSUH-5e7Tu!5{@Yv%@+6$>jT6}+w>mzihR5wq7&{Rze|d`Dc~|~ zwg1x-TQ`f^-$uXya-7s=!?ZWPDu|BFn zAOO&uxfK6?>zmIQSBSqWH|uyka^^N&Ynhk#WWV1ZrerL|^=OZmdapEG(VBY1j1VEZIqIkW-RPvB!Awkg zIGHaM+W8_v{4N!xkMi`z;`;TUz8ra{sg$^UEN1_cCgXHl(+C1QbQi~7d$!4~CJK){ zI%L$j@weVSf5chOH+Fe>L-dW{m-tM*^3t+xFoS>i8c*CdxJI zI0JrsnO=l`Ldet(XmSv(Lq(25O4V{d6%`dZ2hyg8p2Ib|>zPxL0#1`EZXKt3_Cnaw z9ZgFiV#m2=pIQ-S;CiL~-OrU=i^ru3YqR} z&Zc=QpL>`jR}IK89q75y9+thj`lf4EpyzAK7{7L(vC1bQRo(T)8Fw2KBRJ%xEYwuj0bpCU++&%FG#{Sa=a2wZx3dry3Y?( z3+B^@*b!tR3m*Mc39`f|b^}SYEl2^3dUBsC_bLgKdfx7b2>n_hXX>5x{KHuox-$~g z7eraM)km*G0ZBx;lA(A>bO@|#m*YK#{F;#vdJE_m!LG#hkzDq-OWG(3O-xmPv<1|!J_WV7{@`H zA@egP4H)`*uW89~r>e;}e|gC~^tSP`<8a<<^u43s>$}U1omrlS$+ZCq)EULk`#U~l=)$t8<;@lazGZU=yJPx*qF3S&T)p7r^3xzz% z)JHv(>33y{LM>Xd{xm3ZTj~UJXuC?acyDR#wHCNPV>zk z;Px`lYa~uBAaH3_3P}nS%Cg^$I{|Ir`<^ta~oGKy~lDQOm-?2(OF=^zQ9X6)b z_(1-p=!-RrCi?8X|Md|z4{ZCH`VzqIvh^hBHim-9N`)vKI?-OW!ZcUIjS*?-yQ4jGa<0e-%uf*{;H@HcbjYk!!#_IY$^)ho` zT-bTpg{CdAQm-T8+{)B)|6T3W)bL6QN>+M6d&O^X2?5O(D^CTIcr*l%%b^@Ic1k3z zj-}Qev^@MLM@ZE32iFH(U4LJ25_Iy{-{_veEj)zuEmc-;ys!tL;zm7K;_bL3gAyPg zJQA)fic?y4iFwEp)ZdJol`90le6WBvy;T z#GeSkYCxB%uPoH*X5O**2qq2XnsMjsop@Zd>7#Hed85PGM%#|2i8*nX0q?7e3d!K^q~v50Xn=moG(W4z5atN2g;=NkvxgHDOfS?06T)P zO)#+wiBBlaB^*~@SYEDFtfIlRbyNdwheQT36W(kCXi3IplIg?r=qbNDgW;U>XVuBk zzP0}?HC8L_w>4Hm5-4BFT6a`oKj%=EDv|Ns>nNie0>yvy9)U5!2}9mrANi2RvY4y^HM{~nAZRI(I2Av>c25mSqD#q1erks zl0Z4HLEmg&33<5*nzTMKdLo1a*LkGTq%`g2Dd~rUQvj0WWQ%aIMOkAnp zO>teU+}A8A{NB=^HvF`l3(+J;r#W`pUI{r|cVpj@L`uG@y@H&p*V2dernD-*mP}T1ClXHk0LxZkN=)}g z7Z2~nFD3RU7Yq><%mw7j(eV`S67!ZyGp7y;rc|dlWONbh7#`lmb-zRjNu-dJp`gf1u-yd=t`b3hf3jt%GiV}8XM$$EyrLdWQin2jVz*LC2$ z$#7JHKwH+yv3+yVpNp1;KY@Z;3~;x}+mwu7I_jCoCXJsv+5fq-`@;?v6zNgoW9%^4 z-M(R)TOaku9bxFVk}o&irJdE)Vn@D-Eu3E+-{Qm&kj3$c! literal 0 HcmV?d00001 diff --git a/img/icons/android-chrome-512x512.png b/img/icons/android-chrome-512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..16f7849831bac7d1dc7d0dd0fb7d12a27ec639e3 GIT binary patch literal 23152 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 literal 0 HcmV?d00001 diff --git a/img/icons/apple-touch-icon.png b/img/icons/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..0fba7eaa633013b606a14c19933375fb268f7dd1 GIT binary patch literal 6400 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 literal 0 HcmV?d00001 diff --git a/img/icons/favicon-16x16.png b/img/icons/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..b97f08ff71f8a8390cb3553914ce2b801156d368 GIT binary patch literal 489 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 vmoKZ}J2e1DC0+m-Z1OF6E<|n4A3zR7tM=ad`aI literal 0 HcmV?d00001 diff --git a/index.html b/index.html new file mode 100644 index 0000000..79ebd6b --- /dev/null +++ b/index.html @@ -0,0 +1 @@ +NetSchoolApi
\ No newline at end of file diff --git a/js/364.1b61b8d2.js b/js/364.1b61b8d2.js new file mode 100644 index 0000000..4ae5a36 --- /dev/null +++ b/js/364.1b61b8d2.js @@ -0,0 +1 @@ +"use strict";(self["webpackChunkvdocs"]=self["webpackChunkvdocs"]||[]).push([[364],{5364:function(e,n,r){r.r(n),r.d(n,{default:function(){return o}});var t=r(6252);const u=["src"];function a(e,n,r,a,c,i){return(0,t.wg)(),(0,t.iD)("div",null,[(0,t._)("img",{src:e.image},null,8,u)])}var c=(0,t.aZ)({name:"ImageViewer",computed:{image(){return this.$route.meta.image}}}),i=r(3744);const s=(0,i.Z)(c,[["render",a]]);var o=s}}]); \ No newline at end of file diff --git a/js/614.b5f28f4d.js b/js/614.b5f28f4d.js new file mode 100644 index 0000000..6f34aa3 --- /dev/null +++ b/js/614.b5f28f4d.js @@ -0,0 +1 @@ +(self["webpackChunkvdocs"]=self["webpackChunkvdocs"]||[]).push([[614],{5108:function(e,t,r){"use strict";r.d(t,{Z:function(){return v}});var n=r(6252),o=r(3577);const s={key:0},a={key:1,class:"readme-info"},i=(0,n._)("svg",{class:"readme-icon",version:"1.1",viewBox:"0 0 24 24"},[(0,n._)("g",null,[(0,n._)("path",{d:"m12 1a11 11 0 1 0 11 11 11.013 11.013 0 0 0 -11-11zm0 20a9 9 0 1 1 9-9 9.011 9.011 0 0 1 -9 9z"}),(0,n._)("path",{d:"m12 9a1 1 0 0 0 -1 1v7a1 1 0 0 0 2 0v-7a1 1 0 0 0 -1-1z"}),(0,n._)("circle",{cx:"12",cy:"7",r:"1"})])],-1);function l(e,t,r,l,c,d){return(0,n.wg)(),(0,n.iD)(n.HY,null,[e.component&&!e.withoutDivider?((0,n.wg)(),(0,n.iD)("hr",s)):(0,n.kq)("",!0),e.component?((0,n.wg)(),(0,n.iD)("div",a,[i,(0,n.Uk)(" "+(0,o.zw)(e.path),1)])):(0,n.kq)("",!0),e.component?((0,n.wg)(),(0,n.j4)((0,n.LL)(e.component),{key:2})):(0,n.kq)("",!0)],64)}const c=r(3029).keys().map((e=>e.replace(/^\./,"")));var d=(0,n.aZ)({props:{dir:{type:String,default:"/"},withoutDivider:{type:Boolean,default:!1}},computed:{path(){let e=this.dir.replace(/^\//g,"");return e&&!e.endsWith("/")&&(e+="/"),e+="README.md",e},component(){let e=this.dir;return e.startsWith("/")||(e="/"+e),e.endsWith("/")||(e+="/"),e+="README.vue",c.includes(e)?(0,n.RC)((()=>r(1455)("./pages"+e))):void 0}}}),p=r(3744);const u=(0,p.Z)(d,[["render",l]]);var v=u},8921:function(e,t,r){"use strict";r.d(t,{Z:function(){return h}});var n=r(6252),o=r(3577);const s=["onClick"],a=["fill"],i=(0,n._)("g",{"clip-path":"url(#clip0_328:288)"},[(0,n._)("path",{d:"M12.2262 14.0006H1.94621C1.7171 14.0006 1.53125 13.8148 1.53125 13.5856V0.415681C1.53125 0.186463 1.7171 0.000610352 1.94621 0.000610352H9.36545C9.59467 0.000610352 9.78041 0.186463 9.78041 0.415681C9.78041 0.644899 9.59467 0.830644 9.36545 0.830644H2.36128V13.1706H11.8112V3.27642C11.8112 3.0472 11.997 2.86135 12.2262 2.86135C12.4554 2.86135 12.6413 3.0472 12.6413 3.27642V13.5856C12.6413 13.8148 12.4554 14.0006 12.2262 14.0006Z"}),(0,n._)("path",{d:"M12.2262 3.69075H9.36545C9.13623 3.69075 8.95038 3.5049 8.95038 3.27579V0.415056C8.95038 0.247149 9.05153 0.0957966 9.20662 0.0316029C9.36171 -0.0326976 9.54019 0.00287059 9.65897 0.121538L12.5196 2.98227C12.6384 3.10105 12.6738 3.27953 12.6096 3.43462C12.5454 3.58971 12.3941 3.69075 12.2262 3.69075ZM9.78041 2.86072H11.2242L9.78041 1.41695V2.86072Z"}),(0,n._)("path",{d:"M5.35359 8.10579C5.24614 8.10579 5.1388 8.06434 5.05751 7.98167L3.86465 6.76776C3.70593 6.60626 3.70593 6.34746 3.86465 6.18596L5.05751 4.97205C5.21816 4.80863 5.48091 4.80628 5.64444 4.96703C5.80797 5.12768 5.81021 5.39043 5.64957 5.55385L4.74253 6.47681L5.64957 7.39977C5.81021 7.56329 5.80797 7.82605 5.64444 7.98669C5.56369 8.06616 5.45859 8.10579 5.35359 8.10579Z"}),(0,n._)("path",{d:"M8.73911 8.10581C8.63412 8.10581 8.52912 8.06618 8.44826 7.98671C8.28484 7.82607 8.28249 7.56332 8.44314 7.3999L9.35018 6.47694L8.44314 5.55399C8.28249 5.39046 8.28484 5.1277 8.44826 4.96706C8.61179 4.80642 8.87455 4.80877 9.03519 4.97219L10.2281 6.18599C10.3868 6.34749 10.3868 6.6064 10.2281 6.76779L9.03519 7.98169C8.95391 8.06437 8.84656 8.10581 8.73911 8.10581Z"}),(0,n._)("path",{d:"M6.43902 8.10578C6.36863 8.10578 6.29728 8.08784 6.23191 8.05013C6.03345 7.93552 5.96541 7.68174 6.08002 7.48318L7.29383 5.3807C7.40844 5.18224 7.66233 5.1141 7.86079 5.22881C8.05925 5.34342 8.12729 5.59721 8.01268 5.79577L6.79887 7.89825C6.72196 8.03133 6.58247 8.10578 6.43902 8.10578Z"}),(0,n._)("path",{d:"M9.62968 10.0435H4.463C4.23378 10.0435 4.04803 9.85765 4.04803 9.62843C4.04803 9.39922 4.23378 9.21347 4.463 9.21347H9.62968C9.8589 9.21347 10.0446 9.39922 10.0446 9.62843C10.0446 9.85765 9.8589 10.0435 9.62968 10.0435Z"}),(0,n._)("path",{d:"M9.62968 11.7866H4.463C4.23378 11.7866 4.04803 11.6007 4.04803 11.3716C4.04803 11.1424 4.23378 10.9565 4.463 10.9565H9.62968C9.8589 10.9565 10.0446 11.1424 10.0446 11.3716C10.0446 11.6007 9.8589 11.7866 9.62968 11.7866Z"})],-1),l=(0,n._)("defs",null,[(0,n._)("clipPath",{id:"clip0_328:288"},[(0,n._)("rect",{width:"14",height:"14"})])],-1),c=[i,l];function d(e,t,r,i,l,d){const p=(0,n.up)("router-link");return(0,n.wg)(),(0,n.j4)(p,{to:r.to,custom:""},{default:(0,n.w5)((({navigate:t})=>[(0,n._)("div",{class:"btn",onClick:t},[(0,n._)("div",{class:"btn-icon",style:(0,o.j5)(`background: ${r.boxColor}`)},[(0,n.WI)(e.$slots,"default",{fill:r.fillColor},(()=>[((0,n.wg)(),(0,n.iD)("svg",{fill:r.fillColor,viewBox:"0 0 14 14",xmlns:"http://www.w3.org/2000/svg"},c,8,a))]))],4),(0,n.Uk)(" "+(0,o.zw)(r.text),1)],8,s)])),_:3},8,["to"])}var p={props:{to:{type:String,required:!0},text:{type:String,required:!0},boxColor:{type:String,default:"var(--repo-btn-box)"},fillColor:{type:String,default:"var(--repo-btn-fill)"}}},u=r(3744);const v=(0,u.Z)(p,[["render",d]]);var h=v},6614:function(e,t,r){"use strict";r.r(t),r.d(t,{default:function(){return Pe}});var n=r(6252);const o={class:"main-content"},s={class:"btns-container"};function a(e,t,r,a,i,l){const c=(0,n.up)("RepoCard"),d=(0,n.up)("Btn"),p=(0,n.up)("Readme");return(0,n.wg)(),(0,n.iD)(n.HY,null,[(0,n.Wm)(c),(0,n._)("div",o,[(0,n._)("div",s,[(0,n.Wm)(d,{to:"/blob/",text:"Browse code"})]),(0,n.Wm)(p)])],64)}var i=r(9963),l=r(3577);const c={class:"repo-card"};function d(e,t,r,o,s,a){const d=(0,n.up)("Skeleton"),p=(0,n.up)("Body"),u=(0,n.up)("Error"),v=(0,n.up)("Page");return(0,n.wg)(),(0,n.iD)("div",c,[(0,n.Wm)(i.uT,{name:"fade",mode:"out-in"},{default:(0,n.w5)((()=>[e.loading?((0,n.wg)(),(0,n.j4)(d,{key:0})):e.error?((0,n.wg)(),(0,n.j4)(u,{key:2})):((0,n.wg)(),(0,n.j4)(p,(0,l.vs)((0,n.dG)({key:1},e.data)),null,16))])),_:1}),(0,n.Wm)(v)])}const p={class:"skeleton-container"},u=(0,n.uE)('
',4),v=[u];function h(e,t){return(0,n.wg)(),(0,n.iD)("div",p,v)}var m=r(3744);const f={},_=(0,m.Z)(f,[["render",h]]);var g=_;const C={class:"body-container"};function k(e,t,r,o,s,a){const i=(0,n.up)("User"),l=(0,n.up)("Name"),c=(0,n.up)("Description"),d=(0,n.up)("Homepage"),p=(0,n.up)("Stats");return(0,n.wg)(),(0,n.iD)("div",C,[(0,n.Wm)(i,{src:r.avatar,username:r.username},null,8,["src","username"]),(0,n.Wm)(l,{name:r.repository},null,8,["name"]),(0,n.Wm)(c,{description:r.description},null,8,["description"]),(0,n.Wm)(d,{href:r.homepage},null,8,["href"]),(0,n.Wm)(p,{stars:r.stars,forks:r.forks},null,8,["stars","forks"])])}const w=["href"],y=["src"],E=["textContent"];function b(e,t,r,o,s,a){return(0,n.wg)(),(0,n.iD)("a",{href:e.href,class:"repo-owner"},[(0,n._)("img",{class:"repo-owner-avatar",src:e.src},null,8,y),(0,n._)("span",{class:"repo-owner-username",textContent:(0,l.zw)(e.username)},null,8,E)],8,w)}var P=(0,n.aZ)({props:{src:{type:String,required:!0},username:{type:String,required:!0}},computed:{href(){const{username:e}=this;return`https://github.com/${e}`}}});const Z=(0,m.Z)(P,[["render",b]]);var x=Z;const H=["textContent"];function A(e,t,r,o,s,a){return(0,n.wg)(),(0,n.iD)("span",{class:"repo-name",textContent:(0,l.zw)(r.name)},null,8,H)}var S={props:{name:{type:String,required:!0}}};const D=(0,m.Z)(S,[["render",A]]);var L=D;const U=["textContent"];function N(e,t,r,o,s,a){return(0,n.wg)(),(0,n.iD)("span",{class:"repo-description",textContent:(0,l.zw)(r.description)},null,8,U)}var z={props:{description:{type:String,required:!0}}};const R=(0,m.Z)(z,[["render",N]]);var V=R;const M=["href"],O=(0,n._)("svg",{viewBox:"0 0 16 16",version:"1.1",class:"repo-icon"},[(0,n._)("path",{"fill-rule":"evenodd",d:"M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"})],-1);function W(e,t,r,o,s,a){return e.href?((0,n.wg)(),(0,n.iD)("a",{key:0,href:e.href,class:"repo-homepage"},[O,(0,n.Uk)(" "+(0,l.zw)(e.label),1)],8,M)):(0,n.kq)("",!0)}var B=(0,n.aZ)({props:{href:{type:String}},computed:{label(){if(!this.href)return"";const{hostname:e,pathname:t}=new URL(this.href);return e+t}}});const G=(0,m.Z)(B,[["render",W]]);var q=G;const j={class:"repo-stats"},$={class:"repo-stats-badge"},T=(0,n._)("svg",{viewBox:"0 0 16 16",version:"1.1",class:"repo-icon"},[(0,n._)("path",{"fill-rule":"evenodd",d:"M8 .25a.75.75 0 01.673.418l1.882 3.815 4.21.612a.75.75 0 01.416 1.279l-3.046 2.97.719 4.192a.75.75 0 01-1.088.791L8 12.347l-3.766 1.98a.75.75 0 01-1.088-.79l.72-4.194L.818 6.374a.75.75 0 01.416-1.28l4.21-.611L7.327.668A.75.75 0 018 .25zm0 2.445L6.615 5.5a.75.75 0 01-.564.41l-3.097.45 2.24 2.184a.75.75 0 01.216.664l-.528 3.084 2.769-1.456a.75.75 0 01.698 0l2.77 1.456-.53-3.084a.75.75 0 01.216-.664l2.24-2.183-3.096-.45a.75.75 0 01-.564-.41L8 2.694v.001z"})],-1),F=["textContent"],Y={class:"repo-stats-badge"},I=(0,n._)("svg",{viewBox:"0 0 16 16",version:"1.1",class:"repo-icon"},[(0,n._)("path",{"fill-rule":"evenodd",d:"M5 3.25a.75.75 0 11-1.5 0 .75.75 0 011.5 0zm0 2.122a2.25 2.25 0 10-1.5 0v.878A2.25 2.25 0 005.75 8.5h1.5v2.128a2.251 2.251 0 101.5 0V8.5h1.5a2.25 2.25 0 002.25-2.25v-.878a2.25 2.25 0 10-1.5 0v.878a.75.75 0 01-.75.75h-4.5A.75.75 0 015 6.25v-.878zm3.75 7.378a.75.75 0 11-1.5 0 .75.75 0 011.5 0zm3-8.75a.75.75 0 100-1.5.75.75 0 000 1.5z"})],-1),K=["textContent"];function Q(e,t,r,o,s,a){return(0,n.wg)(),(0,n.iD)("div",j,[(0,n._)("div",$,[T,(0,n._)("span",{textContent:(0,l.zw)(r.stars)},null,8,F),(0,n.Uk)(" stars ")]),(0,n._)("div",Y,[I,(0,n._)("span",{textContent:(0,l.zw)(r.forks)},null,8,K),(0,n.Uk)(" forks ")])])}var J={props:{stars:{type:Number,default:0},forks:{type:Number,default:0}}};const X=(0,m.Z)(J,[["render",Q]]);var ee=X,te={components:{User:x,Name:L,Description:V,Homepage:q,Stats:ee},props:{avatar:{type:String,required:!0},username:{type:String,required:!0},repository:{type:String,required:!0},description:{type:String,required:!0},homepage:{type:String},stars:{type:Number},forks:{type:Number}}};const re=(0,m.Z)(te,[["render",k]]);var ne=re;const oe={class:"error-container"},se=(0,n._)("span",{class:"error-header"},"Oops!",-1),ae=(0,n._)("span",{class:"error-text"},"Failed to load repository information. Try reloading the page or contact the developer.",-1),ie=[se,ae];function le(e,t){return(0,n.wg)(),(0,n.iD)("div",oe,ie)}const ce={},de=(0,m.Z)(ce,[["render",le]]);var pe=de;const ue=["href"],ve=(0,n._)("svg",{viewBox:"0 0 16 16",version:"1.1",class:"repo-icon"},[(0,n._)("path",{"fill-rule":"evenodd",d:"M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z"})],-1);function he(e,t,r,o,s,a){return(0,n.wg)(),(0,n.iD)("a",{href:e.href,class:"repo-page"},[ve,(0,n.Uk)(" Open on GitHub ")],8,ue)}var me=(0,n.aZ)({data:()=>({username:"",repository:""}),computed:{href(){const{username:e,repository:t}=this;return`https://github.com/${e}/${t}`}},beforeMount(){const{VUE_APP_GH_OWNER:e,VUE_APP_GH_REPO:t}={VUE_APP_GH_REPO:"NetSchoolApi",VUE_APP_G_TOKEN:"G-2HEF2QY5SL",VUE_APP_GH_BRANCH:"main",VUE_APP_GH_OWNER:"lentryd",NODE_ENV:"production",BASE_URL:"/NetSchoolApi/"};this.username=e,this.repository=t}});const fe=(0,m.Z)(me,[["render",he]]);var _e=fe,ge=(0,n.aZ)({components:{Skeleton:g,Body:ne,Error:pe,Page:_e},data:()=>({loading:!0,error:!1,data:{avatar:"",username:"",repository:"",description:"",homepage:"",stars:0,forks:0}}),methods:{loadInfo(){this.error=!1,this.loading=!0;const{VUE_APP_GH_OWNER:e,VUE_APP_GH_REPO:t}={VUE_APP_GH_REPO:"NetSchoolApi",VUE_APP_G_TOKEN:"G-2HEF2QY5SL",VUE_APP_GH_BRANCH:"main",VUE_APP_GH_OWNER:"lentryd",NODE_ENV:"production",BASE_URL:"/NetSchoolApi/"};fetch(`https://api.github.com/repos/${e}/${t}`).then((e=>e.json())).then((e=>{this.data.avatar=e.owner.avatar_url,this.data.username=e.owner.login,this.data.repository=e.name,this.data.description=e.description,this.data.homepage=e.homepage,this.data.stars=e.stargazers_count,this.data.forks=e.forks_count})).catch((e=>{this.error=!0,console.error(e)})).finally((()=>this.loading=!1))}},beforeMount(){this.loadInfo()}});const Ce=(0,m.Z)(ge,[["render",d]]);var ke=Ce,we=r(8921),ye=r(5108),Ee=(0,n.aZ)({components:{RepoCard:ke,Btn:we.Z,Readme:ye.Z}});const be=(0,m.Z)(Ee,[["render",a]]);var Pe=be},3029:function(e,t,r){var n={"./README.vue":2111};function o(e){var t=s(e);return r(t)}function s(e){if(!r.o(n,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return n[e]}o.keys=function(){return Object.keys(n)},o.resolve=s,e.exports=o,o.id=3029}}]); \ No newline at end of file diff --git a/js/801.0a50fa6b.js b/js/801.0a50fa6b.js new file mode 100644 index 0000000..be9924d --- /dev/null +++ b/js/801.0a50fa6b.js @@ -0,0 +1 @@ +"use strict";(self["webpackChunkvdocs"]=self["webpackChunkvdocs"]||[]).push([[801],{7801:function(t,g,o){o.r(g),o.d(g,{default:function(){return b}});var s=o(6252),w=o(3577);function e(t,g,o,e,n,l){const r=(0,s.up)("BlobHeader"),a=(0,s.up)("router-view");return(0,s.wg)(),(0,s.iD)(s.HY,null,[(0,s.Wm)(r),(0,s.Wm)(a,{class:(0,w.C_)(t.$route.meta.isMD?"main-content":"main-content-code")},null,8,["class"])],64)}var n=o(9963);const l={class:"blob-header"},r=(0,s.uE)('',1),a=["textContent"],i=(0,s._)("svg",{class:"blob-header-icon",viewBox:"0 0 16 16",version:"1.1"},[(0,s._)("path",{"fill-rule":"evenodd",d:"M11.013 1.427a1.75 1.75 0 012.474 0l1.086 1.086a1.75 1.75 0 010 2.474l-8.61 8.61c-.21.21-.47.364-.756.445l-3.251.93a.75.75 0 01-.927-.928l.929-3.25a1.75 1.75 0 01.445-.758l8.61-8.61zm1.414 1.06a.25.25 0 00-.354 0L10.811 3.75l1.439 1.44 1.263-1.263a.25.25 0 000-.354l-1.086-1.086zM11.189 6.25L9.75 4.81l-6.286 6.287a.25.25 0 00-.064.108l-.558 1.953 1.953-.558a.249.249 0 00.108-.064l6.286-6.286z"})],-1),c=[i];function h(t,g,o,e,i,h){return(0,s.wg)(),(0,s.iD)("div",l,[(0,s._)("div",{class:"blob-header-back",onClick:g[0]||(g[0]=(...g)=>t.goBack&&t.goBack(...g))},[r,(0,s._)("span",{class:"blob-header-name",textContent:(0,w.zw)(t.fileName)},null,8,a)]),(0,s.wy)((0,s._)("div",{class:"blob-header-edit",onClick:g[1]||(g[1]=(...g)=>t.goEdit&&t.goEdit(...g))},c,512),[[n.F8,t.isFile]])])}o(7658);var m=(0,s.aZ)({computed:{isFile(){return!this.$route.meta.isDir},fileName(){return this.$route.meta.name||"Files"}},methods:{goBack(){window?.history?.length>2?this.$router.back():this.$router.push("/")},goEdit(){const t=this.$route.fullPath.match(/blob\/(.*)/)?.[1]??"",{VUE_APP_GH_REPO:g,VUE_APP_GH_OWNER:o,VUE_APP_GH_BRANCH:s="main"}={VUE_APP_GH_REPO:"NetSchoolApi",VUE_APP_G_TOKEN:"G-2HEF2QY5SL",VUE_APP_GH_BRANCH:"main",VUE_APP_GH_OWNER:"lentryd",NODE_ENV:"production",BASE_URL:"/NetSchoolApi/"};location.href=`https://github.com/${o}/${g}/edit/${s}/${t}`}}}),v=o(3744);const p=(0,v.Z)(m,[["render",h]]);var u=p,d={components:{BlobHeader:u}};const _=(0,v.Z)(d,[["render",e]]);var b=_}}]); \ No newline at end of file diff --git a/js/985.7c1c1e2e.js b/js/985.7c1c1e2e.js new file mode 100644 index 0000000..c489332 --- /dev/null +++ b/js/985.7c1c1e2e.js @@ -0,0 +1 @@ +(self["webpackChunkvdocs"]=self["webpackChunkvdocs"]||[]).push([[985],{2985:function(t,e,r){"use strict";r.r(e),r.d(e,{default:function(){return g}});var n=r(6252);const o={class:"main-content"},i={class:"btns-container"},l={key:0,fill:"white",viewBox:"0 0 16 16",version:"1.1"},s=(0,n._)("path",{"fill-rule":"evenodd",d:"M1.75 1A1.75 1.75 0 000 2.75v10.5C0 14.216.784 15 1.75 15h12.5A1.75 1.75 0 0016 13.25v-8.5A1.75 1.75 0 0014.25 3h-6.5a.25.25 0 01-.2-.1l-.9-1.2c-.33-.44-.85-.7-1.4-.7h-3.5z"},null,-1),a=[s],c=["fill"],u=(0,n._)("path",{"fill-rule":"evenodd",d:"M3.75 1.5a.25.25 0 00-.25.25v11.5c0 .138.112.25.25.25h8.5a.25.25 0 00.25-.25V6H9.75A1.75 1.75 0 018 4.25V1.5H3.75zm5.75.56v2.19c0 .138.112.25.25.25h2.19L9.5 2.06zM2 1.75C2 .784 2.784 0 3.75 0h5.086c.464 0 .909.184 1.237.513l3.414 3.414c.329.328.513.773.513 1.237v8.086A1.75 1.75 0 0112.25 15h-8.5A1.75 1.75 0 012 13.25V1.75z"},null,-1),d=[u];function p(t,e,r,s,u,p){const C=(0,n.up)("Btn"),v=(0,n.up)("README");return(0,n.wg)(),(0,n.iD)("div",o,[(0,n._)("div",i,[((0,n.wg)(!0),(0,n.iD)(n.HY,null,(0,n.Ko)(t.files,((t,e)=>((0,n.wg)(),(0,n.j4)(C,{to:"/blob"+t.path,text:t.name,key:e,boxColor:t.isDir?"#2E8EFE":void 0},{default:(0,n.w5)((({fill:e})=>[t.isDir?((0,n.wg)(),(0,n.iD)("svg",l,a)):((0,n.wg)(),(0,n.iD)("svg",{key:1,fill:e,viewBox:"0 0 16 16",version:"1.1"},d,8,c))])),_:2},1032,["to","text","boxColor"])))),128))]),(0,n.Wm)(v,{dir:t.$route.path.replace("/blob/","")},null,8,["dir"])])}var C=r(8921),v=r(5108),f=(0,n.aZ)({props:{result:{type:Array,required:!0}},components:{Btn:C.Z,README:v.Z},computed:{files(){return this.result.sort().sort(((t,e)=>+!!e.isDir-+!!t.isDir))}}}),h=r(3744);const w=(0,h.Z)(f,[["render",p]]);var g=w},5108:function(t,e,r){"use strict";r.d(e,{Z:function(){return C}});var n=r(6252),o=r(3577);const i={key:0},l={key:1,class:"readme-info"},s=(0,n._)("svg",{class:"readme-icon",version:"1.1",viewBox:"0 0 24 24"},[(0,n._)("g",null,[(0,n._)("path",{d:"m12 1a11 11 0 1 0 11 11 11.013 11.013 0 0 0 -11-11zm0 20a9 9 0 1 1 9-9 9.011 9.011 0 0 1 -9 9z"}),(0,n._)("path",{d:"m12 9a1 1 0 0 0 -1 1v7a1 1 0 0 0 2 0v-7a1 1 0 0 0 -1-1z"}),(0,n._)("circle",{cx:"12",cy:"7",r:"1"})])],-1);function a(t,e,r,a,c,u){return(0,n.wg)(),(0,n.iD)(n.HY,null,[t.component&&!t.withoutDivider?((0,n.wg)(),(0,n.iD)("hr",i)):(0,n.kq)("",!0),t.component?((0,n.wg)(),(0,n.iD)("div",l,[s,(0,n.Uk)(" "+(0,o.zw)(t.path),1)])):(0,n.kq)("",!0),t.component?((0,n.wg)(),(0,n.j4)((0,n.LL)(t.component),{key:2})):(0,n.kq)("",!0)],64)}const c=r(3029).keys().map((t=>t.replace(/^\./,"")));var u=(0,n.aZ)({props:{dir:{type:String,default:"/"},withoutDivider:{type:Boolean,default:!1}},computed:{path(){let t=this.dir.replace(/^\//g,"");return t&&!t.endsWith("/")&&(t+="/"),t+="README.md",t},component(){let t=this.dir;return t.startsWith("/")||(t="/"+t),t.endsWith("/")||(t+="/"),t+="README.vue",c.includes(t)?(0,n.RC)((()=>r(1455)("./pages"+t))):void 0}}}),d=r(3744);const p=(0,d.Z)(u,[["render",a]]);var C=p},8921:function(t,e,r){"use strict";r.d(e,{Z:function(){return v}});var n=r(6252),o=r(3577);const i=["onClick"],l=["fill"],s=(0,n._)("g",{"clip-path":"url(#clip0_328:288)"},[(0,n._)("path",{d:"M12.2262 14.0006H1.94621C1.7171 14.0006 1.53125 13.8148 1.53125 13.5856V0.415681C1.53125 0.186463 1.7171 0.000610352 1.94621 0.000610352H9.36545C9.59467 0.000610352 9.78041 0.186463 9.78041 0.415681C9.78041 0.644899 9.59467 0.830644 9.36545 0.830644H2.36128V13.1706H11.8112V3.27642C11.8112 3.0472 11.997 2.86135 12.2262 2.86135C12.4554 2.86135 12.6413 3.0472 12.6413 3.27642V13.5856C12.6413 13.8148 12.4554 14.0006 12.2262 14.0006Z"}),(0,n._)("path",{d:"M12.2262 3.69075H9.36545C9.13623 3.69075 8.95038 3.5049 8.95038 3.27579V0.415056C8.95038 0.247149 9.05153 0.0957966 9.20662 0.0316029C9.36171 -0.0326976 9.54019 0.00287059 9.65897 0.121538L12.5196 2.98227C12.6384 3.10105 12.6738 3.27953 12.6096 3.43462C12.5454 3.58971 12.3941 3.69075 12.2262 3.69075ZM9.78041 2.86072H11.2242L9.78041 1.41695V2.86072Z"}),(0,n._)("path",{d:"M5.35359 8.10579C5.24614 8.10579 5.1388 8.06434 5.05751 7.98167L3.86465 6.76776C3.70593 6.60626 3.70593 6.34746 3.86465 6.18596L5.05751 4.97205C5.21816 4.80863 5.48091 4.80628 5.64444 4.96703C5.80797 5.12768 5.81021 5.39043 5.64957 5.55385L4.74253 6.47681L5.64957 7.39977C5.81021 7.56329 5.80797 7.82605 5.64444 7.98669C5.56369 8.06616 5.45859 8.10579 5.35359 8.10579Z"}),(0,n._)("path",{d:"M8.73911 8.10581C8.63412 8.10581 8.52912 8.06618 8.44826 7.98671C8.28484 7.82607 8.28249 7.56332 8.44314 7.3999L9.35018 6.47694L8.44314 5.55399C8.28249 5.39046 8.28484 5.1277 8.44826 4.96706C8.61179 4.80642 8.87455 4.80877 9.03519 4.97219L10.2281 6.18599C10.3868 6.34749 10.3868 6.6064 10.2281 6.76779L9.03519 7.98169C8.95391 8.06437 8.84656 8.10581 8.73911 8.10581Z"}),(0,n._)("path",{d:"M6.43902 8.10578C6.36863 8.10578 6.29728 8.08784 6.23191 8.05013C6.03345 7.93552 5.96541 7.68174 6.08002 7.48318L7.29383 5.3807C7.40844 5.18224 7.66233 5.1141 7.86079 5.22881C8.05925 5.34342 8.12729 5.59721 8.01268 5.79577L6.79887 7.89825C6.72196 8.03133 6.58247 8.10578 6.43902 8.10578Z"}),(0,n._)("path",{d:"M9.62968 10.0435H4.463C4.23378 10.0435 4.04803 9.85765 4.04803 9.62843C4.04803 9.39922 4.23378 9.21347 4.463 9.21347H9.62968C9.8589 9.21347 10.0446 9.39922 10.0446 9.62843C10.0446 9.85765 9.8589 10.0435 9.62968 10.0435Z"}),(0,n._)("path",{d:"M9.62968 11.7866H4.463C4.23378 11.7866 4.04803 11.6007 4.04803 11.3716C4.04803 11.1424 4.23378 10.9565 4.463 10.9565H9.62968C9.8589 10.9565 10.0446 11.1424 10.0446 11.3716C10.0446 11.6007 9.8589 11.7866 9.62968 11.7866Z"})],-1),a=(0,n._)("defs",null,[(0,n._)("clipPath",{id:"clip0_328:288"},[(0,n._)("rect",{width:"14",height:"14"})])],-1),c=[s,a];function u(t,e,r,s,a,u){const d=(0,n.up)("router-link");return(0,n.wg)(),(0,n.j4)(d,{to:r.to,custom:""},{default:(0,n.w5)((({navigate:e})=>[(0,n._)("div",{class:"btn",onClick:e},[(0,n._)("div",{class:"btn-icon",style:(0,o.j5)(`background: ${r.boxColor}`)},[(0,n.WI)(t.$slots,"default",{fill:r.fillColor},(()=>[((0,n.wg)(),(0,n.iD)("svg",{fill:r.fillColor,viewBox:"0 0 14 14",xmlns:"http://www.w3.org/2000/svg"},c,8,l))]))],4),(0,n.Uk)(" "+(0,o.zw)(r.text),1)],8,i)])),_:3},8,["to"])}var d={props:{to:{type:String,required:!0},text:{type:String,required:!0},boxColor:{type:String,default:"var(--repo-btn-box)"},fillColor:{type:String,default:"var(--repo-btn-fill)"}}},p=r(3744);const C=(0,p.Z)(d,[["render",u]]);var v=C},3029:function(t,e,r){var n={"./README.vue":2111};function o(t){var e=i(t);return r(e)}function i(t){if(!r.o(n,t)){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}return n[t]}o.keys=function(){return Object.keys(n)},o.resolve=i,t.exports=o,o.id=3029}}]); \ No newline at end of file diff --git a/js/app.85bbbd14.js b/js/app.85bbbd14.js new file mode 100644 index 0000000..ead43f2 --- /dev/null +++ b/js/app.85bbbd14.js @@ -0,0 +1 @@ +(function(){var s={9542:function(s,a,n){"use strict";var l=n(9963),t=n(6252);function e(s,a,n,e,d,r){const i=(0,t.up)("router-view");return(0,t.wg)(),(0,t.j4)(i,null,{default:(0,t.w5)((({Component:a})=>[(0,t.Wm)(l.uT,{name:"fade",mode:"out-in"},{default:(0,t.w5)((()=>[((0,t.wg)(),(0,t.iD)("div",{key:s.$route.path},[((0,t.wg)(),(0,t.j4)((0,t.LL)(a)))]))])),_:2},1024)])),_:1})}n(7658);var d=(0,t.aZ)({methods:{setTheme(){document.querySelector("meta[name=theme-color]")?.setAttribute("content",getComputedStyle(document.body)?.getPropertyValue("--blob-header-background")?.trim())},navigation(s){const a=s.target;if("A"!==a.tagName)return!1;const n=decodeURI(a.getAttribute("href")??"#");if(/^(h|\/{2})/.test(n))return;s.preventDefault();let{hash:l,pathname:t}=new URL(n,"http://example.com"+this.$route.path.replace("/blob",""));t.startsWith("/blob")||(t="/blob"+t),this.$router.push({hash:decodeURI(l),path:decodeURI(t)})}},mounted(){this.setTheme(),window.addEventListener("click",this.navigation),window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",this.setTheme)}}),r=n(3744);const i=(0,r.Z)(d,[["render",e]]);var c=i,b=n(7398);const o=/(?!^)\..*$/,p=/\/(.*?)\//;function u(s,a="/"){return s.map((s=>{s=a+s.replace(/^\//,"");let l=s;const t=n(22)("./pages"+s)?.default?.name??"",e=t.match(o)?.[0]??"",d=!t&&!e;return d||(l=l.replace(o,e)),l=l.replaceAll("$1","."),d?{path:l,meta:{name:s.replace(/^.*[\\\/]/,""),isMD:!0,image:n(22)("./pages"+s)},component:()=>n.e(364).then(n.bind(n,5364))}:{path:l,meta:{name:t,isMD:".md"===e},component:()=>n(1455)("./pages"+s)}}))}function m(s,a="",l="/"){a&&(s=s.map((s=>s.replace(p,"/"))));const t=u(s.filter((s=>!p.test(s))),l);let e=s.filter((s=>p.test(s)));const d=[...t],r=t.map((({meta:s,path:a})=>({name:s?.name,path:a,isDir:!1})));while(e.length>0){let s=e[0].match(p)?.[1]??"";const a=e.filter((a=>a.startsWith("/"+s)));d.push(...m(a,s,l+s+"/")),e=e.filter((a=>!a.startsWith("/"+s))),s=s.replaceAll("$1","."),r.push({name:s,path:l.replaceAll("$1",".")+s+"/",isDir:!0})}return[...d,{path:l.replaceAll("$1","."),meta:{name:a.replaceAll("$1","."),isDir:!0},props:{result:r},component:()=>n.e(985).then(n.bind(n,2985))}]}function h(s){return m(s).map((s=>({...s,path:s.path.replace(/^\//,"")})))}var j=n(2201);const L=n(2051).keys().map((s=>s.replace(/^\./,""))),g=[{path:"/",name:"Home",component:()=>n.e(614).then(n.bind(n,6614))},{path:"/blob",component:()=>n.e(801).then(n.bind(n,7801)),children:h(L)}],C=(0,j.p7)({routes:g,history:(0,j.PO)("/NetSchoolApi/"),scrollBehavior({path:s,hash:a},{path:n},l){return new Promise((t=>{setTimeout((()=>{t(a||l?l?{...l,behavior:"smooth"}:{el:a,top:60,behavior:"smooth"}:{top:0,behavior:"smooth"})}),s==n?0:300)}))}});var y=C,f=n(5205);(0,f.z)("/NetSchoolApi/service-worker.js",{ready(){console.log("App is being served from cache by a service worker.\nFor more details, visit https://goo.gl/AFskqB")},registered(){console.log("Service worker has been registered.")},cached(){console.log("Content has been cached for offline use.")},updatefound(){console.log("New content is downloading.")},updated(){console.log("New content is available; please refresh."),location.reload()},offline(){console.log("No internet connection found. App is running in offline mode.")},error(s){console.error("Error during service worker registration:",s)}});const w=(0,l.ri)(c);w.use(y),w.use(b.ZP,{config:{id:"G-2HEF2QY5SL"}},y),w.mount("#app")},3690:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return c}});var l=n(6252);const t=["innerHTML"];function e(s,a,n,e,d,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var d={name:"FUNDING.yml",data:()=>({html:'
# These are supported funding model platforms
custom: ["https://pay.cloudtips.ru/p/55f818b7", "https://www.tinkoff.ru/rm/ivchenko.viktor6/ylUQO36949/"]
'})},r=n(3744);const i=(0,r.Z)(d,[["render",e]]);var c=i},2e3:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return b}});var l=n(6252);const t=(0,l.uE)("

name: Отчет об ошибке (Bug report) about: Создайте отчет, чтобы помочь нам исправить ошибку title: Bug labels: bug assignees: lentryd


Описание проблемы Кратко опишите, в чем заключается ошибка.

Ожидаемое поведение Четко укажите, какое поведение вы ожидали бы увидеть вместо ошибки.

Шаги для воспроизведения

  1. Шаг 1
  2. Шаг 2
  3. ...

Скриншоты/Логи Если есть возможность, приложите скриншоты или фрагменты логов, которые помогут нам разобраться в проблеме.

(пожалуйста, заполните следующую информацию):

  • Среда: [например, хостинг/операционная система]
  • Версия NodeJS [например: 16.14.2]
  • Версия библиотеки [например: 1.7.0]

Дополнительная информация Укажите любой другой контекст, который может быть полезен для понимания проблемы.

",11),e=[t];function d(s,a,n,t,d,r){return(0,l.wg)(),(0,l.iD)("div",null,e)}var r={name:"отчет-об-ошибке--bug-report-.md"},i=n(3744);const c=(0,i.Z)(r,[["render",d]]);var b=c},1749:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return c}});var l=n(6252);const t=["innerHTML"];function e(s,a,n,e,d,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var d={name:"codeql-analysis.yml",data:()=>({html:'
# For most projects, this workflow file will not need changing; you simply need
# to commit it to your repository.
#
# You may wish to alter this file to override the set of languages analyzed,
# or to provide custom queries or build logic.
#
# ******** NOTE ********
# We have attempted to detect the languages in your repository. Please check
# the `language` matrix defined below to confirm you have the correct set of
# supported CodeQL languages.
#
name: "CodeQL"
on:
push:
branches: [ main ]
pull_request:
# The branches below must be a subset of the branches above
branches: [ main ]
schedule:
- cron: '34 13 * * 6'
jobs:
analyze:
name: Analyze
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
language: [ 'javascript' ]
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ]
# Learn more:
# https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed
steps:
- name: Checkout repository
uses: actions/checkout@v2
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v1
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
# By default, queries listed here will override any specified in a config file.
# Prefix the list here with "+" to use these queries and those in the config file.
# queries: ./path/to/local/query, your-org/your-repo/queries@main
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
uses: github/codeql-action/autobuild@v1
# ℹ️ Command-line programs to run using the OS shell.
# 📚 https://git.io/JvXDl
# ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
# and modify them (or add more) to build your code if your project
# uses a compiled language
#- run: |
# make bootstrap
# make release
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v1
'})},r=n(3744);const i=(0,r.Z)(d,[["render",e]]);var c=i},6285:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return c}});var l=n(6252);const t=["innerHTML"];function e(s,a,n,e,d,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var d={name:"publish-release.yml",data:()=>({html:'
name: Автоматическая публикация релизов
on:
release:
types: [published]
jobs:
publish:
name: Публикация релиза
runs-on: ubuntu-latest
steps:
- name: Качаем репозиторий
uses: actions/checkout@v2.3.4
- name: Установка Node.js
uses: actions/setup-node@v2.4.1
with:
node-version: 16.13.0
- name: Установка зависимостей и компиляция
run: |
npm install
npm run build
- name: Публикация релиза
run: |
npm config set //registry.npmjs.org/:_authToken ${NPM_TOKEN}
npm publish --ignore-scripts
env:
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
'})},r=n(3744);const i=(0,r.Z)(d,[["render",e]]);var c=i},3284:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return c}});var l=n(6252);const t=["innerHTML"];function e(s,a,n,e,d,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var d={name:"vuepress-deploy.yml",data:()=>({html:'
name: Build Github Pages
on: [push]
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- name: Build-Vue
uses: lentryd/VDocs@1.0.0
with:
username: ${{ github.repository_owner }}
reponame: ${{ github.event.repository.name }}
branch: ${{ github.ref_name }}
token: ${{ secrets.GITHUB_TOKEN }} # Leave this line unchanged
gtag: G-2HEF2QY5SL
'})},r=n(3744);const i=(0,r.Z)(d,[["render",e]]);var c=i},3955:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return c}});var l=n(6252);const t=["innerHTML"];function e(s,a,n,e,d,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var d={name:".gitignore",data:()=>({html:'
.*
dist
test.js
!.npmignore
node_modules
'})},r=n(3744);const i=(0,r.Z)(d,[["render",e]]);var c=i},4957:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return c}});var l=n(6252);const t=["innerHTML"];function e(s,a,n,e,d,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var d={name:".npmignore",data:()=>({html:'
.*
src
docs
*.tgz
test.js
node_modules
tsconfig.json
CODE_OF_CONDUCT.md
'})},r=n(3744);const i=(0,r.Z)(d,[["render",e]]);var c=i},1105:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return b}});var l=n(6252);const t=(0,l.uE)('

Contributor Covenant Code of Conduct

Our Pledge

We as members, contributors, and leaders pledge to make participation in our community a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation.

We pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive, and healthy community.

Our Standards

Examples of behavior that contributes to a positive environment for our community include:

  • Demonstrating empathy and kindness toward other people
  • Being respectful of differing opinions, viewpoints, and experiences
  • Giving and gracefully accepting constructive feedback
  • Accepting responsibility and apologizing to those affected by our mistakes, and learning from the experience
  • Focusing on what is best not just for us as individuals, but for the overall community

Examples of unacceptable behavior include:

  • The use of sexualized language or imagery, and sexual attention or advances of any kind
  • Trolling, insulting or derogatory comments, and personal or political attacks
  • Public or private harassment
  • Publishing others' private information, such as a physical or email address, without their explicit permission
  • Other conduct which could reasonably be considered inappropriate in a professional setting

Enforcement Responsibilities

Community leaders are responsible for clarifying and enforcing our standards of acceptable behavior and will take appropriate and fair corrective action in response to any behavior that they deem inappropriate, threatening, offensive, or harmful.

Community leaders have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, and will communicate reasons for moderation decisions when appropriate.

Scope

This Code of Conduct applies within all community spaces, and also applies when an individual is officially representing the community in public spaces. Examples of representing our community include using an official e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event.

Enforcement

Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the community leaders responsible for enforcement at lentryd. All complaints will be reviewed and investigated promptly and fairly.

All community leaders are obligated to respect the privacy and security of the reporter of any incident.

Enforcement Guidelines

Community leaders will follow these Community Impact Guidelines in determining the consequences for any action they deem in violation of this Code of Conduct:

1. Correction

Community Impact: Use of inappropriate language or other behavior deemed unprofessional or unwelcome in the community.

Consequence: A private, written warning from community leaders, providing clarity around the nature of the violation and an explanation of why the behavior was inappropriate. A public apology may be requested.

2. Warning

Community Impact: A violation through a single incident or series of actions.

Consequence: A warning with consequences for continued behavior. No interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, for a specified period of time. This includes avoiding interactions in community spaces as well as external channels like social media. Violating these terms may lead to a temporary or permanent ban.

3. Temporary Ban

Community Impact: A serious violation of community standards, including sustained inappropriate behavior.

Consequence: A temporary ban from any sort of interaction or public communication with the community for a specified period of time. No public or private interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, is allowed during this period. Violating these terms may lead to a permanent ban.

4. Permanent Ban

Community Impact: Demonstrating a pattern of violation of community standards, including sustained inappropriate behavior, harassment of an individual, or aggression toward or disparagement of classes of individuals.

Consequence: A permanent ban from any sort of public interaction within the community.

Attribution

This Code of Conduct is adapted from the Contributor Covenant, version 2.0, available at https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.

Community Impact Guidelines were inspired by Mozilla's code of conduct enforcement ladder.

For answers to common questions about this code of conduct, see the FAQ at https://www.contributor-covenant.org/faq. Translations are available at https://www.contributor-covenant.org/translations.

',35),e=[t];function d(s,a,n,t,d,r){return(0,l.wg)(),(0,l.iD)("div",null,e)}var r={name:"CODE_OF_CONDUCT.md"},i=n(3744);const c=(0,i.Z)(r,[["render",d]]);var b=c},2664:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return c}});var l=n(6252);const t=["innerHTML"];function e(s,a,n,e,d,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var d={name:"LICENSE",data:()=>({html:'
MIT License
Copyright (c) 2023 lentryd
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
'})},r=n(3744);const i=(0,r.Z)(d,[["render",e]]);var c=i},2111:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return b}});var l=n(6252);const t=(0,l.uE)('

NetSchoolApi

Это враппер для продукта "Сетевой город. Образование", который позволяет получать информацию о пользователе, такую как дневник, расписание и многое другое.

Начало работы

Следующие инструкции помогут вам запустить проект на вашем локальном компьютере для разработки и тестирования.

Предварительные условия

Для установки и использования этой библиотеки вам понадобятся:

Установка

Вы можете установить библиотеку с помощью следующей команды:

npm i netschoolapi\n

Проверка установки

  1. Создайте файл test.js в корне проекта.
  2. Вставьте следующий код в файл test.js, заменив данные на ваши:
const NS = require("netschoolapi").default;\nconst user = new NS({\n  origin: "https://example.com/", // Origin вашего сайта\n  login: "Иванов", // Ваш логин\n  password: "******", // Ваш пароль\n  school: "МБОУ ....", // Название вашей школы (как на сайте)\n});\n\n(async function () {\n  const info = await user.info();\n  console.log(info);\n})();\n
  1. Запустите этот код в консоли с помощью следующей команды:
node test.js\n
  1. Если в консоли не выводится информация о пользователе, убедитесь, что у вас установлена подходящая версия NodeJS, либо создайте issue на GitHub.

Дополнительная информация о библиотеке

Зависимости

  • ws - Клиентская реализация WebSocket
  • node-fetch - Fetch API в Node.js
  • node-html-parser - Генерация упрощенного DOM-дерева с поддержкой запросов к элементам.

Управление версиями

Версии этой библиотеки управляются согласно SemVer. Список доступных версий можно найти в разделе теги.

Авторы

Также посмотрите список участников, которые внесли свой вклад в проект.

Лицензия

Этот проект распространяется под лицензией MIT. Подробную информацию смотрите в файле LICENSE.

',27),e=[t];function d(s,a,n,t,d,r){return(0,l.wg)(),(0,l.iD)("div",null,e)}var r={name:"README.md"},i=n(3744);const c=(0,i.Z)(r,[["render",d]]);var b=c},2696:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return b}});var l=n(6252);const t=(0,l.uE)('

Пример использования метода .assignment()

Зачем нужен?

Этот метод возвращает информацию об оценке. Именно благодаря этому методу можете узнать вес оценки и имя человека, который ее поставил.

Как использовать?

Для использования этого метода нужно передать id оценки (получить его можно при помощи метода .diary()). Если у вас есть доступ к нескольким ученикам, то также нужно передать id нужного ученика.

Автоматическая авторизация

import NS from "netschoolapi";\n\nconst user = new NS({\n  origin: "https://example.com",\n  login: "Иванов",\n  password: "123456",\n  school: "МБОУ ...", // Название школы (полностью) или её id\n});\n\n(async function () {\n  // Получаем id оценки\n  //....\n\n  // Получаем информацию\n  const result = await user.assignment({ id });\n  console.log(result);\n})();\n

Ручная авторизация

Не рекомендуется

import { Safe as NS } from "netschoolapi";\n\nconst user = new NS({\n  origin: "https://example.com",\n  login: "Иванов",\n  password: "123456",\n  school: "МБОУ ...", // Название школы (полностью) или её id\n});\n\n(async function () {\n  // Открываем сессию\n  await user.logIn();\n\n  // Получаем id оценки\n  //....\n\n  // Получаем информацию\n  const result = await user.assignment({ id });\n  console.log(result);\n\n  // Закрываем сессию\n  await user.logOut();\n})();\n
',11),e=[t];function d(s,a,n,t,d,r){return(0,l.wg)(),(0,l.iD)("div",null,e)}var r={name:"assignment.md"},i=n(3744);const c=(0,i.Z)(r,[["render",d]]);var b=c},2035:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return b}});var l=n(6252);const t=(0,l.uE)('

Пример использования метода .assignmentTypes()

Зачем нужен?

Этот метод возвращает массив со всеми типами заданий, которые могут встретиться в сетевом.

Как использовать?

Для использования этого метода не нужно передавать данные.

Автоматическая авторизация

import NS from "netschoolapi";\n\nconst user = new NS({\n  origin: "https://example.com",\n  login: "Иванов",\n  password: "123456",\n  school: "МБОУ ...", // Название школы (полностью) или её id\n});\n\n(async function () {\n  // Получаем информацию\n  const types = await user.assignmentTypes();\n  console.log(types.findById(3));\n})();\n

Ручная авторизация

Не рекомендуется

import { Safe as NS } from "netschoolapi";\n\nconst user = new NS({\n  origin: "https://example.com",\n  login: "Иванов",\n  password: "123456",\n  school: "МБОУ ...", // Название школы (полностью) или её id\n});\n\n(async function () {\n  // Открываем сессию\n  await user.logIn();\n\n  // Получаем информацию\n  const types = await user.assignmentTypes();\n  console.log(types.findById(3));\n\n  // Закрываем сессию\n  await user.logOut();\n})();\n
',11),e=[t];function d(s,a,n,t,d,r){return(0,l.wg)(),(0,l.iD)("div",null,e)}var r={name:"assignmentTypes.md"},i=n(3744);const c=(0,i.Z)(r,[["render",d]]);var b=c},8506:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return b}});var l=n(6252);const t=(0,l.uE)('

Пример использования методов .logIn() и .logOut()

Зачем нужен?

Эти методы необходимы для открытия/закрытия сессии. В основном они должен использоваться в классе Safe, так как по умолчанию эти методы применяются автоматически.

Как использовать?

Мы хотим получить дневник (как в базовом примере). Однако мы не доверяем автоматической авторизации и хотим все делать сами.

import { Safe as NS } from "netschoolapi";\n\nconst user = new NS({\n  origin: "https://example.com",\n  login: "Иванов",\n  password: "123456",\n  school: "МБОУ ...", // Название школы (полностью) или её id\n});\n\n(async function () {\n  // Открываем сессию\n  await user.logIn();\n\n  // Получаем дневник\n  const diary = await user.diary();\n  console.log(diary);\n\n  // Закрываем сессию\n  await user.logOut();\n})();\n

Пример серверного использования

Этот пример работает не только с классом Safe

Для безопасного хранения пользовательских данных рекомендуется сохранить хэш пароля (md5) в вашей базе данных. Библиотека может работать как с "чистым" паролем, так и с его хэшем.

import { Safe as NS } from "netschoolapi";\n\nconst user = new NS({\n  origin: "https://example.com",\n  login: "Иванов",\n  school: "МБОУ ...", // Название школы (полностью) или её id\n  password: {\n    hash: "e10adc3949ba59abbe56e057f20f883e", // MD5 хэш пароля\n    length: 6, // Длина оригинального пароля\n  },\n});\n\n(async function () {\n  // Открываем сессию\n  await user.logIn();\n\n  // Получаем дневник\n  const diary = await user.diary();\n  console.log(diary);\n\n  // Закрываем сессию\n  await user.logOut();\n})();\n
',11),e=[t];function d(s,a,n,t,d,r){return(0,l.wg)(),(0,l.iD)("div",null,e)}var r={name:"controlSession.md"},i=n(3744);const c=(0,i.Z)(r,[["render",d]]);var b=c},4349:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return b}});var l=n(6252);const t=(0,l.uE)('

Пример использования метода .diary()

Зачем нужен?

Этот метод возвращает дневник (предметы, оценки, дз и т.д.)

Как использовать?

Для использования этого метода нужно передать промежуток (начало и конец недели). Если у вас есть доступ к нескольким ученикам, то также нужно передать id нужного ученика.

Автоматическая авторизация

import NS from "netschoolapi";\n\nconst user = new NS({\n  origin: "https://example.com",\n  login: "Иванов",\n  password: "123456",\n  school: "МБОУ ...", // Название школы (полностью) или её id\n});\n\n(async function () {\n  // Получаем дневник\n  const diary = await user.diary();\n  console.log(diary.days[0].lessons[2]);\n})();\n

Ручная авторизация

Не рекомендуется

import { Safe as NS } from "netschoolapi";\n\nconst user = new NS({\n  origin: "https://example.com",\n  login: "Иванов",\n  password: "123456",\n  school: "МБОУ ...", // Название школы (полностью) или её id\n});\n\n(async function () {\n  // Открываем сессию\n  await user.logIn();\n\n  // Получаем дневник\n  const diary = await user.diary();\n  console.log(diary.days[0].lessons[2]);\n\n  // Закрываем сессию\n  await user.logOut();\n})();\n
',11),e=[t];function d(s,a,n,t,d,r){return(0,l.wg)(),(0,l.iD)("div",null,e)}var r={name:"diary.md"},i=n(3744);const c=(0,i.Z)(r,[["render",d]]);var b=c},5834:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return b}});var l=n(6252);const t=(0,l.uE)('

Пример использования метода .downloadFile()

Зачем нужен?

Этот метод позволяет получить файл из дневника

Как использовать?

Автоматическая авторизация

import fs from "fs";\nimport NS from "netschoolapi";\n\nconst user = new NS({\n  origin: "https://example.com",\n  login: "Иванов",\n  password: "123456",\n  school: "МБОУ ...", // Название школы (полностью) или её id\n});\n\n(async function () {\n  // Получаем файл\n  const buffer = await user.downloadFile({ id: 5863936, assignId: 354142125 });\n\n  // Сохраняем файл\n  fs.writeFileSync("./тест.docx", buffer);\n})();\n

Ручная авторизация

Не рекомендуется

import fs from "fs";\nimport { Safe as NS } from "netschoolapi";\n\nconst user = new NS({\n  origin: "https://example.com",\n  login: "Иванов",\n  password: "123456",\n  school: "МБОУ ...", // Название школы (полностью) или её id\n});\n\n(async function () {\n  // Открываем сессию\n  await user.logIn();\n\n  // Получаем файл\n  const buffer = await user.downloadFile({ id: 5863936, assignId: 354142125 });\n\n  // Сохраняем файл\n  fs.writeFileSync("./тест.docx", buffer);\n\n  // Закрываем сессию\n  await user.logOut();\n})();\n
',10),e=[t];function d(s,a,n,t,d,r){return(0,l.wg)(),(0,l.iD)("div",null,e)}var r={name:"downloadFile.md"},i=n(3744);const c=(0,i.Z)(r,[["render",d]]);var b=c},653:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return b}});var l=n(6252);const t=(0,l.uE)('

Пример использования метода .fetch()

Зачем нужен?

Этот метод позволяет самостоятельно делать запросы на сервер сетевого (куки и прочии данные будут добавлены)

Как использовать?

Этот метод не обновляет сессию, поэтому вам придется делать это самостоятельно

import NS from "netschoolapi";\n\nconst user = new NS({\n  origin: "https://example.com",\n  login: "Иванов",\n  password: "123456",\n  school: "МБОУ ...", // Название школы (полностью) или её id\n});\n\n(async function () {\n  // Получаем данные\n  const res = await user.fetch("/webapi/sysInfo");\n  console.log(await res.text());\n})();\n
',7),e=[t];function d(s,a,n,t,d,r){return(0,l.wg)(),(0,l.iD)("div",null,e)}var r={name:"fetch.md"},i=n(3744);const c=(0,i.Z)(r,[["render",d]]);var b=c},1887:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return b}});var l=n(6252);const t=(0,l.uE)('

Пример использования метода .grades()

Зачем нужен?

Этот метод возвращает отчет об успеваемости по выбранному предмету.

Как использовать?

Для использования этот метода необходимо передать id предмета (вся информация о доступных предметах есть в классе Context)

Автоматическая авторизация

import NS from "netschoolapi";\n\nconst user = new NS({\n  origin: "https://example.com",\n  login: "Иванов",\n  password: "123456",\n  school: "МБОУ ...", // Название школы (полностью) или её id\n});\n\n(async function () {\n  // Получаем отчет\n  const result = await user.grades({ subjectId: 7960494 });\n  console.log(result.assignments);\n})();\n

Ручная авторизация

Не рекомендуется

import { Safe as NS } from "netschoolapi";\n\nconst user = new NS({\n  origin: "https://example.com",\n  login: "Иванов",\n  password: "123456",\n  school: "МБОУ ...", // Название школы (полностью) или её id\n});\n\n(async function () {\n  // Открываем сессию\n  await user.logIn();\n\n  // Получаем отчет\n  const result = await user.grades({ subjectId: 7960494 });\n  console.log(result.assignments);\n\n  // Закрываем сессию\n  await user.logOut();\n})();\n
',11),e=[t];function d(s,a,n,t,d,r){return(0,l.wg)(),(0,l.iD)("div",null,e)}var r={name:"grades.md"},i=n(3744);const c=(0,i.Z)(r,[["render",d]]);var b=c},7948:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return b}});var l=n(6252);const t=(0,l.uE)('

Пример использования метода .info()

Зачем нужен?

Этот метод позволяет получить системную информацию о пользователе (например email, телефон и т.д.)

Как использовать?

Автоматическая авторизация

import NS from "netschoolapi";\n\nconst user = new NS({\n  origin: "https://example.com",\n  login: "Иванов",\n  password: "123456",\n  school: "МБОУ ...", // Название школы (полностью) или её id\n});\n\n(async function () {\n  // Получаем информацию\n  const result = await user.info();\n  console.log(result);\n})();\n

Ручная авторизация

Не рекомендуется

import { Safe as NS } from "netschoolapi";\n\nconst user = new NS({\n  origin: "https://example.com",\n  login: "Иванов",\n  password: "123456",\n  school: "МБОУ ...", // Название школы (полностью) или её id\n});\n\n(async function () {\n  // Открываем сессию\n  await user.logIn();\n\n  // Получаем информацию\n  const result = await user.info();\n  console.log(result);\n\n  // Закрываем сессию\n  await user.logOut();\n})();\n
',10),e=[t];function d(s,a,n,t,d,r){return(0,l.wg)(),(0,l.iD)("div",null,e)}var r={name:"info.md"},i=n(3744);const c=(0,i.Z)(r,[["render",d]]);var b=c},9584:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return b}});var l=n(6252);const t=(0,l.uE)('

Пример использования метода .journal()

Зачем нужен?

Этот метод возвращает отчет об успеваемости и посещаемости учащегося.

Как использовать?

Автоматическая авторизация

import NS from "netschoolapi";\n\nconst user = new NS({\n  origin: "https://example.com",\n  login: "Иванов",\n  password: "123456",\n  school: "МБОУ ...", // Название школы (полностью) или её id\n});\n\n(async function () {\n  // Получаем отчет\n  const result = await user.journal();\n  console.log(result.subjects);\n})();\n

Ручная авторизация

Не рекомендуется

import { Safe as NS } from "netschoolapi";\n\nconst user = new NS({\n  origin: "https://example.com",\n  login: "Иванов",\n  password: "123456",\n  school: "МБОУ ...", // Название школы (полностью) или её id\n});\n\n(async function () {\n  // Открываем сессию\n  await user.logIn();\n\n  // Получаем отчет\n  const result = await user.journal();\n  console.log(result.subjects);\n\n  // Закрываем сессию\n  await user.logOut();\n})();\n
',10),e=[t];function d(s,a,n,t,d,r){return(0,l.wg)(),(0,l.iD)("div",null,e)}var r={name:"journal.md"},i=n(3744);const c=(0,i.Z)(r,[["render",d]]);var b=c},5661:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return b}});var l=n(6252);const t=(0,l.uE)('

Пример использования метода .photo()

Зачем нужен?

Этот метод позволяет получить фото пользователя

Как использовать?

Автоматическая авторизация

import fs from "fs";\nimport NS from "netschoolapi";\n\nconst user = new NS({\n  origin: "https://example.com",\n  login: "Иванов",\n  password: "123456",\n  school: "МБОУ ...", // Название школы (полностью) или её id\n});\n\n(async function () {\n  // Получаем фото\n  const buffer = await user.photo();\n\n  // Сохраняем фото\n  fs.writeFileSync("./img.png", buffer);\n})();\n

Ручная авторизация

Не рекомендуется

import fs from "fs";\nimport { Safe as NS } from "netschoolapi";\n\nconst user = new NS({\n  origin: "https://example.com",\n  login: "Иванов",\n  password: "123456",\n  school: "МБОУ ...", // Название школы (полностью) или её id\n});\n\n(async function () {\n  // Открываем сессию\n  await user.logIn();\n\n  // Получаем фото\n  const buffer = await user.photo();\n\n  // Сохраняем фото\n  fs.writeFileSync("./img.png", buffer);\n\n  // Закрываем сессию\n  await user.logOut();\n})();\n
',10),e=[t];function d(s,a,n,t,d,r){return(0,l.wg)(),(0,l.iD)("div",null,e)}var r={name:"photo.md"},i=n(3744);const c=(0,i.Z)(r,[["render",d]]);var b=c},1721:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return b}});var l=n(6252);const t=(0,l.uE)('

Пример использования метода .reportFile()

Зачем нужен?

Этот метод возвращает отчеты

Как использовать?

Вообще этот метод создан для более удобной работа с другими методами, которые возвращают отчеты. Однако если вы можете сделать это напрямую.

Автоматическая авторизация

import NS from "netschoolapi";\n\nconst user = new NS({\n  origin: "https://example.com",\n  login: "Иванов",\n  password: "123456",\n  school: "МБОУ ...", // Название школы (полностью) или её id\n});\n\n(async function () {\n  // Получаем "Отчет об успеваемости и посещаемости ученика"\n  const result = await user.reportFile({\n    url: "reports/studenttotal/queue",\n    filters: [\n      {\n        filterId: "SID",\n        filterValue: "323259", // ID ученика\n      },\n      {\n        filterId: "PCLID",\n        filterValue: "3041290", // ID класса\n      },\n      {\n        filterId: "period",\n        filterValue: "2022-01-10T00:00:00 - 2022-05-24T00:00:00",\n      },\n    ],\n  });\n  console.log(result);\n})();\n

Ручная авторизация

Не рекомендуется

import { Safe as NS } from "netschoolapi";\n\nconst user = new NS({\n  origin: "https://example.com",\n  login: "Иванов",\n  password: "123456",\n  school: "МБОУ ...", // Название школы (полностью) или её id\n});\n\n(async function () {\n  // Открываем сессию\n  await user.logIn();\n\n  // Получаем "Отчет об успеваемости и посещаемости ученика"\n  const result = await user.reportFile({\n    url: "reports/studenttotal/queue",\n    filters: [\n      {\n        filterId: "SID",\n        filterValue: "323259", // ID ученика\n      },\n      {\n        filterId: "PCLID",\n        filterValue: "3041290", // ID класса\n      },\n      {\n        filterId: "period",\n        filterValue: "2022-01-10T00:00:00 - 2022-05-24T00:00:00",\n      },\n    ],\n  });\n  console.log(result);\n\n  // Закрываем сессию\n  await user.logOut();\n})();\n
',11),e=[t];function d(s,a,n,t,d,r){return(0,l.wg)(),(0,l.iD)("div",null,e)}var r={name:"reportfile.md"},i=n(3744);const c=(0,i.Z)(r,[["render",d]]);var b=c},2968:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return b}});var l=n(6252);const t=(0,l.uE)('

Пример использования метода .scheduleDay()

Зачем нужен?

Этот метод возвращает расписание на день

Как использовать?

Для использования этого метода нужно передать дату дня. Если у вас есть доступ к нескольким ученикам, то также нужно передать id нужного ученика.

Автоматическая авторизация

import NS from "netschoolapi";\n\nconst user = new NS({\n  origin: "https://example.com",\n  login: "Иванов",\n  password: "123456",\n  school: "МБОУ ...", // Название школы (полностью) или её id\n});\n\n(async function () {\n  // Получаем расписание\n  const schedule = await user.scheduleDay({ date: new Date() });\n  console.log(schedule);\n})();\n

Ручная авторизация

Не рекомендуется

import { Safe as NS } from "netschoolapi";\n\nconst user = new NS({\n  origin: "https://example.com",\n  login: "Иванов",\n  password: "123456",\n  school: "МБОУ ...", // Название школы (полностью) или её id\n});\n\n(async function () {\n  // Открываем сессию\n  await user.logIn();\n\n  // Получаем расписание\n  const schedule = await user.scheduleDay({ date: new Date() });\n  console.log(schedule);\n\n  // Закрываем сессию\n  await user.logOut();\n})();\n
',11),e=[t];function d(s,a,n,t,d,r){return(0,l.wg)(),(0,l.iD)("div",null,e)}var r={name:"scheduleDay.md"},i=n(3744);const c=(0,i.Z)(r,[["render",d]]);var b=c},9525:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return b}});var l=n(6252);const t=(0,l.uE)('

Пример использования метода .scheduleWeek()

Зачем нужен?

Этот метод возвращает расписание на неделю

Как использовать?

Для использования этого метода нужно передать дату дня. Если у вас есть доступ к нескольким ученикам, то также нужно передать id нужного ученика.

Важно: Если ты посмотрел возвращаемые классы, то ты мог заметить, что названия уроков и классы хранятся в массивах. Сделано это из-за таких моментов.

Расписание в сетевом:

День№ урока11б
Вт1История [108]
2Англ.яз./2 гр. [209], Англ.яз./1 гр. [108]
3Матем. [108]
4Матем. [108]
5Биол. [108]
6Физика [108]
7Экономика [108]
8-
9-
10-

Проанализированный результат:

[\n  {\n    "names": ["История"],\n    "number": 1,\n    "classesName": ["108"]\n  },\n  {\n    "names": ["Англ.яз./2 гр.", "Англ.яз./1 гр."],\n    "number": 2,\n    "classesName": ["209", "108"]\n  },\n  {\n    "names": ["Матем."],\n    "number": 3,\n    "classesName": ["108"]\n  },\n  {\n    "names": ["Матем."],\n    "number": 4,\n    "classesName": ["108"]\n  },\n  {\n    "names": ["Биол."],\n    "number": 5,\n    "classesName": ["108"]\n  },\n  {\n    "names": ["Физика"],\n    "number": 6,\n    "classesName": ["108"]\n  },\n  {\n    "names": ["Экономика"],\n    "number": 7,\n    "classesName": ["108"]\n  }\n]\n

Автоматическая авторизация

import NS from "netschoolapi";\n\nconst user = new NS({\n  origin: "https://example.com",\n  login: "Иванов",\n  password: "123456",\n  school: "МБОУ ...", // Название школы (полностью) или её id\n});\n\n(async function () {\n  // Получаем расписание\n  const schedule = await user.scheduleWeek();\n  console.log(schedule);\n})();\n

Ручная авторизация

Не рекомендуется

import { Safe as NS } from "netschoolapi";\n\nconst user = new NS({\n  origin: "https://example.com",\n  login: "Иванов",\n  password: "123456",\n  school: "МБОУ ...", // Название школы (полностью) или её id\n});\n\n(async function () {\n  // Открываем сессию\n  await user.logIn();\n\n  // Получаем расписание\n  const schedule = await user.scheduleWeek();\n  console.log(schedule);\n\n  // Закрываем сессию\n  await user.logOut();\n})();\n
',16),e=[t];function d(s,a,n,t,d,r){return(0,l.wg)(),(0,l.iD)("div",null,e)}var r={name:"scheduleweek.md"},i=n(3744);const c=(0,i.Z)(r,[["render",d]]);var b=c},9346:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return b}});var l=n(6252);const t=(0,l.uE)('

Пример использования метода .sessionValid()

Зачем нужен?

Этот метод проверяет валидность сессии через API "Сетевой город. Образование". В основном он должен использоваться в классе Safe, так как по умолчанию этот метод обновляет сессию.

Как использовать?

Представьте, что мы пишем бота, который позволяет вам взаимодействовать с сетевым. Однако мы решили сами следить за сессией, и нам нужно как-то ее проверить.

import { Safe as NS } from "netschoolapi";\n\nconst user = new NS({\n  origin: "https://example.com",\n  login: "Иванов",\n  password: "123456",\n  school: "МБОУ ...", // Название школы (полностью) или её id\n});\n\n(async function () {\n  // Проверяем сессию\n  const valid = await user.sessionValid();\n\n  if (valid) console.log("Сессия открыта");\n  else console.log("Сессия уже недействительна");\n})();\n
',7),e=[t];function d(s,a,n,t,d,r){return(0,l.wg)(),(0,l.iD)("div",null,e)}var r={name:"sessionValid.md"},i=n(3744);const c=(0,i.Z)(r,[["render",d]]);var b=c},9629:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return b}});var l=n(6252);const t=(0,l.uE)('

Методы

Управление сессией

По умолчанию эти методы применяются автоматически. Они доступны при импорте класса Safe.


.logIn()

Не принимает аргументы

Возвращает объект класса Session

Пример использования


.logOut()

Не принимает аргументы

Возвращает void при успешном выходе или ошибку

Пример использования


.sessionValid()

Не принимает аргументы

Возвращает true если сессия активна

Пример использования

Пользователь


.info()

Не принимает аргументы

Возвращает объект класса Info

Пример использования


.photo()

Принимает объект данных:

  • studentId?: number - ID учащегося, можно не указывать.

Возвращает Buffer

Пример использования

Дневник


.diary()

Период дневника может составлять более 7 дней, главное, чтобы он не выходил за рамки учебного года.

Принимает объект данных:

  • studentId?: number - ID учащегося, можно не указывать.
  • start: Date - Дата, с которой начинается дневник
  • end: Date - Последний день в дневнике

Возвращает объект класса Diary

Пример использования


.assignment()

Принимает объект данных:

  • studentId?: number - ID учащегося, можно не указывать.
  • id: number - ID задания

Возвращает объект класса AssignmentInfo

Пример использования


.downloadFile()

Принимает объект данных:

  • studentId?: number - ID учащегося, можно не указывать.
  • assignId: number - ID задания, с которым связан файл
  • id: number - ID файла

Возвращает файл в виде Buffer

Пример использования


.assignmentTypes()

Не принимает аргументы

Возвращает объект класса AssignmentTypes

Пример использования

Расписание


.scheduleDay()

Принимает объект данных:

  • classId?: number - ID класса, можно не указывать
  • date?: Date - Дата дня, на который нужно получить расписание.

Возвращает объект класса ScheduleDay

Пример использования


.scheduleWeek()

Принимает объект данных:

  • classId?: number - ID класса, можно не указывать
  • date?: Date - Дата дня, на который нужно получить расписание.

Возвращает объект класса ScheduleWeek

Пример использования

Отчеты


.reportFile()

Принимает объект данных:

  • url: string - Ссылка на таскер (например для "Отчет об успеваемости и посещаемости ученика" это reports/studenttotal/queue )
  • filters: { filterId: string, filterValue: string }[] - Массив с фильтрами (форма, которая находится на странице запроса)
  • yearId?: number - ID года, за который требуется отчет
  • timeout?: number - Время в миллисекундах, через которое запрос будет закрыт (по умолчания 60000, при значении -1 запрос не будет закрываться)

Возвращает html с результатом запроса

Пример использования


.grades()

Принимает объект данных:

  • ​subjectId​: ​number​ - ID предмета
  • start​?: ​Date​ - начало периода
  • end​?: ​Date​ - окончание периода
  • ​classId​?: ​number​ - ID класса
  • studentId​?: ​number​ - ID учащегося

Возвращает объект класса Grades

Пример использования


.journal()

Принимает объект данных:

  • start​?: ​Date​ - начало периода
  • end​?: ​Date​ - окончание периода
  • ​classId​?: ​number​ - ID класса
  • studentId​?: ​number​ - ID учащегося

Возвращает объект класса Journal

Пример использования

Дополнительно


.fetch()

Принимает данные:

  • url: string - Ссылка на ресурс
  • init?: InitRequest - Объект InitRequest

Возвращает объект класса Response

Пример использования

',95),e=[t];function d(s,a,n,t,d,r){return(0,l.wg)(),(0,l.iD)("div",null,e)}var r={name:"guide.md"},i=n(3744);const c=(0,i.Z)(r,[["render",d]]);var b=c},6677:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return b}});var l=n(6252);const t=(0,l.uE)('

Классы | NetSchoolApi

Дополнительные данные


InitRequest

Интерфейс опциональных значений запроса

Объект класса содержит:

  • .params: object - объект параметров запроса (?a=12&b=24)
  • Другие значения см. тут

Context

Данные, которые могут быть полезны при работе с "Сетевым Городом"

Объект класса содержит:

  • .user: object - данные пользователя
    • .id: number - id пользователя
    • .name: string - имя пользователя в системе
    • .classes: array - массив доступных классов
      • .id: number - id класса
      • .name: string - название класса
    • .students: array - массив доступных учащихся
      • .id: number - id учащегося
      • .name: string - имя учащегося в системе
  • .year: object - данные выбранного года
    • .id: number - id года
    • .gId: number - последнии две цифры года
    • .name: string - название года ('2021/2022')
    • .start: Date - дата начала года
    • .end: Date - дата окончания года
  • .server: object - данные сервера
    • .id: string - id сервера
    • .version: string - версия сервера
    • .timeFormat: string - формат времени
    • .dateFormat: string - формат даты
  • .school: object - данные школы
    • .id: number - id школы
    • .name: string - название школы
    • .fullName: string - полное название школы
  • .subjects: array - массив доступных предметов
    • .id: number - id предмета
    • .name: string - название предмета
  • .checkDate(date: Date): boolean - является ли дата частью года
  • .classExists(id: number): boolean - существует ли id класса
  • .defaultClass(): number - id первого класса
  • .studentExists(id: number): boolean - существует ли id учащегося
  • .defaultStudent(): number - id первого учащегося
  • .subjectExists(id: number): boolean - существует ли id предмета

Session

Класс необходим для удобного хранения данных сеанса/пользователя.

Объект класса содержит:

  • .userId: number - ID пользователя (не путать с id учащегося)
  • .yearId: number - ID учебного года
  • .schoolId: number - ID школы
  • .studentsId: number[] - массив с id учащихся, к которым у пользователя есть доступ (для учащихся они совпадают сuserId)
  • .expiryDate: number - время окончания сессии (указано в Unix Time)
  • .accessToken: string - токен доступа, отправляется в заголовках, как at
  • .globalYearId: number - ID года (чаще всего это последние 2 цифры года)
  • .isValid(): boolean - возвращает true, если сессия все еще активна
  • .isExpired(): boolean - возвращает "true", если сессия больше не активна

Info

Класс необходим для удобной работы с данными пользователя.

Объект класса содержит:

  • .email: string - почта пользователя
  • .phone: string - телефон пользователя
  • .lastName: string - фамилия пользователя
  • .firstName: string - имя пользователя
  • .middleName: string - отчество пользователя
  • .birthDate: Date - день рождения пользователя
  • .existsPhoto: boolean - возвращает true если фото установлено
  • .toJSON(): object - возвращает объект класса (нужно для нормальной работы JSON.stringify())

Дневник


Diary

Класс необходим для удобной работы с дневником.

Объект класса содержит:

  • .days: Day[] - массив объектов Day
  • .termName: string - название учебного периода (например: 2 полугодие)
  • .className: string - название класса (например: 10б)
  • .start: Date - дата, с которой начинается дневник
  • .end: Date - дата последнего дня в дневнике
  • .slice(): Day[] - возвращает массив объектов Day. Принимает объект данных:
    • start: Date - дата, с которой дневник должен быть обрезан
    • end: Date - дата, до которой дневник должен быть обрезан
  • .currentLesson(): Lesson - возвращает объект Lesson. Принимает дату с учетом времени
  • .toJSON(): object - возвращает объект класса (нужно для нормальной работы JSON.stringify())

Day

Класс необходим для удобной работы с днями в дневнике.

Объект класса содержит:

  • .date: Date - дата этого дня
  • .lessons: Lesson[] - массив объектов Lesson
  • .toJSON(): object - возвращает объект класса (нужно для нормальной работы JSON.stringify())

Lesson

Класс необходим для удобной работы с уроками в дневнике.

Объект класса содержит:

  • .id: number - ID занятия
  • .start: Date - дата начала урока
  • .end: Date - дата окончания урока
  • .subject: string - название предмета
  • .assignments: Assignment[] - массив объектов Assignment
  • .toJSON(): object - возвращает объект класса (нужно для нормальной работы JSON.stringify())

Assignment

Класс необходим для удобной работы с заданиями для уроков в дневнике.

Объект класса содержит:

  • .id: number - ID задания
  • .dot: boolean - возвращает true, если урок просрочен (точка в дневнике)
  • .date: Date - дата сдачи задания
  • .text: string - текст задания
  • .mark: number | null - оценка за задание, если таковая имеется
  • .answer?: object - объект ответа на задание
    • .date: Date - дата ответа
    • .text: string - текст ответа
    • .attachments: Attachment[] - массив объектов Attachment
  • .typeId: number - ID типа задания
  • .comment: string | null - комментарий учителя, если таковой имеется
  • .lessonId: number - ID занятия
  • .attachments: Attachment[] - массив объектов Attachment
  • .toJSON(): object - возвращает объект класса (нужно для нормальной работы JSON.stringify())

Attachment

Класс необходим для удобной работы c файлами, которые прикреплены к заданиям.

Объект класса содержит:

  • .id: number - ID файла
  • .name: string - название файла
  • .date?: Date - дата загрузки файла (видно только у файлов ответа)
  • .description?: string - описание файла
  • .toJSON(): object - возвращает объект класса (нужно для нормальной работы JSON.stringify())

Задания


AssignmentInfo

Класс необходим для удобной работы с доп. информацией о задании.

Объект класса содержит:

  • .id: number - ID задания
  • .date: Date - дата сдачи задания
  • .text: string - текст задания
  • .weight: number - вес оценки
  • .subject: string - название предмета
  • .teacher: string - имя учителя
  • .isDeleted: boolean - хз, за что это отвечает (у меня всегда true)
  • .description: string - описание задания
  • .toJSON(): object - возвращает объект класса (нужно для нормальной работы JSON.stringify())

AssignmentType

Класс необходим для удобного хранения типов заданий.

Объект класса содержит:

  • .id: number - ID типа задания
  • .name: string - название типа задания
  • .abbr: string - короткое название типа задания
  • .order: number - какая-то странная вещь (если вы знаете, что это такое, то пишите)
  • .toJSON(): object - возвращает объект класса (нужно для нормальной работы JSON.stringify())

AssignmentTypes

Класс необходим для удобной работы с типами задания (AssignmentType).

Объект класса содержит:

  • .types: AssignmentType[] - массив объектов AssignmentType
  • .findById(): AssignmentType - возвращает объект класса AssignmentType. Принимает id типа задания в качестве аргумента
  • .findByName(): AssignmentType - возвращает объект класса AssignmentType. Принимает название типа задания в качестве аргумента
  • .findByAbbr(): AssignmentType - возвращает объект класса AssignmentType. Принимает аббревиатуру типа задания в качестве аргумента
  • .toJSON(): object - возвращает объект класса (нужно для нормальной работы JSON.stringify())

Расписание


ScheduleDay

Класс необходим для удобной работы с расписанием на день.

Объект класса содержит:

  • .raw: string - HTML код таблицы с расписанием
  • .date: Date - дата возвращаемого дня
  • .lines: ScheduleDayLine[] - массив объектов ScheduleDayLine.
  • .toJSON(): object - возвращает объект класса (нужно для нормальной работы JSON.stringify())

ScheduleDayLine

Класс необходим для удобной работы с "линиями" расписания.

Объект класса содержит:

  • .name: string - название предмета/мероприятия
  • .className?: string - название кабинета
  • .start: Date - время начала предмета/мероприятия.
  • .end: Date - время окончания предмета/мероприятия.
  • .toJSON(): object - возвращает объект класса (нужно для нормальной работы JSON.stringify())

ScheduleWeek

Класс необходим для удобной работы с расписанием на неделю.

Объект класса содержит:

  • .raw: string - HTML код таблицы с расписанием
  • .date: Date - дата требуемого дня
  • .parsed: ScheduleWeekLine[] - массив объектов ScheduleWeekLine.
  • .toJSON(): object - возвращает объект класса (нужно для нормальной работы JSON.stringify())

ScheduleWeekLine

Класс необходим для удобной работы с "линиями" расписания.

Объект класса содержит:

  • .date: Date - дата дня.
  • .lessons: object[] - массив предметов
  • .lessons.names: string[] - названия предметов
  • .lessons.number: number - порядковый номер предмета
  • .lessons.classesName: string[] - названия кабинетов
  • .toJSON(): object - возвращает объект класса (нужно для нормальной работы JSON.stringify())

Отчеты


Grades

Класс необходим для удобной работы с отчетом успеваемости (по предмету)

Объект класса содержит:

  • .raw: string - HTML код отчета
  • .range: object - период отчета
    • .start: Date - начало отчета
    • .end: Date - окончание отчета
  • .teacher​: ​string​ - имя учителя, ведущего урок
  • .averageMark​: ​number​ - средняя оценка
  • .assignments: array - массив оценок
    • .type: AssignmentType - объект класса AssignmentType
    • .theme: string - тема урока (например: 'Чтение произведений 20-го века')
    • .date: Date - дата урока
    • .issueDate: Date - дата выставления оценки
    • .mark: number - полученная оценка
  • .toJSON(): object - возвращает объект класса (нужно для нормальной работы JSON.stringify())

Journal

Класс необходим для удобной работы с отчетом успеваемости и посещаемости

Объект класса содержит:

  • .raw: string - HTML код отчета
  • .range: object - период отчета
    • .start: Date - начало отчета
    • .end: Date - окончание отчета
  • .subjects: array - массив предметов
    • .id: number - ID предмета в системе
    • .name: string - название предмета в системе
    • .marks: array - массив оценок
      • .mark: number - оценка
      • .date: number - дата оценки
    • .missedList: array - массив пропусков
      • .type: string - аббревиатура пропуска (например: УП, ОТ и т.д.)
      • .date: number - дата пропуска
    • .middleMark: number - средняя оценка
  • .toJSON(): object - возвращает объект класса (нужно для нормальной работы JSON.stringify())
',97),e=[t];function d(s,a,n,t,d,r){return(0,l.wg)(),(0,l.iD)("div",null,e)}var r={name:"reference.md"},i=n(3744);const c=(0,i.Z)(r,[["render",d]]);var b=c},453:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return c}});var l=n(6252);const t=["innerHTML"];function e(s,a,n,e,d,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var d={name:"package.json",data:()=>({html:'
{
"name": "netschoolapi",
"main": "dist/index.js",
"types": "dist/index.d.ts",
"version": "1.8.0",
"description": "Полностью асинхронный API враппер для "Сетевой Город. Образование" написанный на Node.js",
"scripts": {
"build": "tsc && tsc-alias",
"test": "npm run build && node test"
},
"homepage": "https://lentryd.su/NetSchoolApi/",
"repository": {
"type": "git",
"url": "https://github.com/lentryd/NetSchoolApi.git"
},
"author": "lentryd",
"license": "MIT",
"dependencies": {
"node-fetch": "^2.6.9",
"node-html-parser": "^6.1.5",
"ws": "^8.13.0"
},
"devDependencies": {
"@types/node": "^18.15.10",
"@types/node-fetch": "^2.6.2",
"@types/ws": "^8.5.4",
"tsc-alias": "^1.8.4",
"typescript": "^5.0.2"
}
}
'})},r=n(3744);const i=(0,r.Z)(d,[["render",e]]);var c=i},6189:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return c}});var l=n(6252);const t=["innerHTML"];function e(s,a,n,e,d,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var d={name:"NetSchoolApi-safe.ts",data:()=>({html:'
import Client, { InitRequest } from "@classes/Client";
import Session from "@classes/Session";
import Context from "@classes/Context";
import logIn from "@methods/logIn";
import logOut from "@methods/logOut";
import context from "@methods/context";
import sessionValid from "@methods/sessionValid";
import info from "@methods/info";
import photo from "@methods/photo";
import diary from "@methods/diary";
import assignment from "@methods/assignment";
import downloadFile from "@methods/downloadFile";
import assignmentTypes from "@methods/assignmentTypes";
import scheduleDay from "@methods/scheduleDay";
import scheduleWeek from "@methods/scheduleWeek";
import reportFile from "@methods/reportFile";
import grades from "@methods/grades";
import journal from "@methods/journal";
import fetch from "@methods/fetch";
import { Credentials as PhotoCredentials } from "@methods/photo";
import { Credentials as DiaryCredentials } from "@methods/diary";
import { Credentials as AssignmentCredentials } from "@methods/assignment";
import { Credentials as DownloadFileCredentials } from "@methods/downloadFile";
import { Credentials as ScheduleDayCredentials } from "@methods/scheduleDay";
import { Credentials as ScheduleWeekCredentials } from "@methods/scheduleWeek";
import { Credentials as ReportFileCredentials } from "@methods/reportFile";
import { Credentials as GradesCredentials } from "@methods/grades";
import { Credentials as JournalCredentials } from "@methods/journal";
export type PasswordType =
| string
| {
hash: string;
length: number;
};
export interface Credentials {
login: string;
origin: string;
school: number | string;
password: PasswordType;
}
export default class NetSchoolApiSafe {
public context: null | Context = null;
protected session: null | Session = null;
protected client: Client;
protected credentials: Credentials;
/**
* Создание пользователя
* @param credentials Данные пользователя
*/
constructor(credentials: Credentials) {
this.credentials = credentials;
this.client = new Client(credentials.origin);
this.client.path.set("webapi");
this.client.headers.set("at", () =>
this.session?.isValid() ? this.session.accessToken : undefined
);
}
// ⭐️ Пусть будет
/** Произвольные запросы к сетевому */
fetch(url: string, init?: InitRequest) {
return fetch.call(this, url, init);
}
// ⭐️ Сессия
/** Открытие сессии в "Сетевой город. Образование" */
async logIn() {
await logIn.call(this);
if (!this.context) this.context = await context.call(this);
return this.session;
}
/** Закрытие сессии в "Сетевой город. Образование" */
async logOut() {
await logOut.call(this);
return (this.session = null);
}
/** Проверка сессии через API "Сетевой город. Образование"*/
sessionValid() {
return sessionValid.call(this);
}
// ⭐️ Пользователь
/** Информация пользователя */
info() {
return info.call(this);
}
/** Фото пользователя */
photo(credentials?: PhotoCredentials) {
return photo.call(this, credentials);
}
// ⭐️ Дневник
/** Дневник пользователя*/
diary(credentials?: DiaryCredentials) {
return diary.call(this, credentials);
}
/** Информация о задание */
assignment(credentials: AssignmentCredentials) {
return assignment.call(this, credentials);
}
/** Скачивание файла */
downloadFile(credentials: DownloadFileCredentials) {
return downloadFile.call(this, credentials);
}
/** Типы заданий */
assignmentTypes() {
return assignmentTypes.call(this);
}
// ⭐️ Расписание
/** Расписание на день */
scheduleDay(credentials?: ScheduleDayCredentials) {
return scheduleDay.call(this, credentials);
}
/** Расписание на неделю */
scheduleWeek(credentials?: ScheduleWeekCredentials) {
return scheduleWeek.call(this, credentials);
}
// ⭐️ Отчеты
reportFile(credentials: ReportFileCredentials) {
return reportFile.call(this, credentials);
}
/** Отчет об успеваемости (по предмету) */
grades(credentials: GradesCredentials) {
return grades.call(this, credentials);
}
/** Отчет об успеваемости (полный) */
journal(credentials: JournalCredentials) {
return journal.call(this, credentials);
}
}
'})},r=n(3744);const i=(0,r.Z)(d,[["render",e]]);var c=i},7949:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return c}});var l=n(6252);const t=["innerHTML"];function e(s,a,n,e,d,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var d={name:"NetSchoolApi.ts",data:()=>({html:'
import NS, { Credentials } from "@NS";
import Session from "@classes/Session";
let activeClasses = 0;
const errors: string[] = [];
export default class NetSchoolApi extends NS {
/** Уведомления */
private console = {
info(title: string, ...optionalParams: any[]) {
console.info(" INFO ", title);
if (!!optionalParams) console.info(...optionalParams);
},
done(title: string, ...optionalParams: any[]) {
console.info(" DONE ", title);
if (!!optionalParams) console.info(...optionalParams);
},
error(title: string, ...optionalParams: any[]) {
console.error(" ERROR ", title);
if (!!optionalParams) console.error(...optionalParams);
},
};
/** Начался ли процесс закрытия */
private startClosing = false;
constructor(credentials: Credentials) {
super(credentials);
activeClasses++;
this.console.info(`Класс пользователя ${this.credentials.login} создан`);
// Если нажали Ctrl + C, то закрываем сессию
process.addListener("SIGINT", this.closeProcess.bind(this));
// Прежде чем завершить процесс, мы закрываем сессию
process.addListener("beforeExit", this.closeProcess.bind(this));
// Если произошла ошибка, мы закрываем сессию
process.addListener("uncaughtException", (err) => {
if (!errors.includes(err.name)) {
this.console.error("Ошибка в коде привела к закрытию программы", err);
errors.push(err.name);
}
this.closeProcess.bind(this);
});
}
/** Открытие сессии (только если она закрыта) */
async logIn(): Promise<Session> {
const valid = await super.sessionValid();
if (valid) return this.session as any;
else return super.logIn() as any;
}
/** Закрытие сессии (только если она открыта) */
async logOut() {
const valid = await super.sessionValid();
if (valid) return super.logOut();
else return null;
}
/** Повторное открытие сессии (всегда возвращает `true`) */
async sessionValid(): Promise<true> {
if (!(await super.sessionValid())) await super.logIn();
return true;
}
/** Экстренное закрытие сессии */
private async closeProcess() {
if (this.startClosing) return;
this.startClosing = true;
// Закрываем сессию
await this.logOut()
.then(() =>
this.console.done(`Сеанс ${this.credentials.login} успешно закрыт`)
)
.catch((err) =>
this.console.error(
`Ошибка закрытия сессии ${this.credentials.login}`,
err
)
);
// Уменьшаем счетчик
activeClasses--;
// Если счетчик пуст, то закрываем процесс
if (activeClasses === 0) process.exit(0);
}
}
'})},r=n(3744);const i=(0,r.Z)(d,[["render",e]]);var c=i},3871:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return c}});var l=n(6252);const t=["innerHTML"];function e(s,a,n,e,d,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var d={name:"Assignment.ts",data:()=>({html:'
import Attachment, {
AttachmentObject,
AnswerFilesObject,
} from "@classes/Attachment";
type Mark = {
assignmentId: number;
studentId: number;
mark: number;
dutyMark: boolean;
};
type TextAnswer = {
answer: string;
answerDate: Date;
};
export interface AssignmentObject {
id: number;
typeId: number;
dueDate: string;
mark?: Mark;
markComment?: {
id: number;
name: string;
teacher: string;
wasRead: boolean;
editTime: string;
};
textAnswer?: TextAnswer;
attachments: AttachmentObject[];
answerFiles: AnswerFilesObject[];
assignmentName: string;
classMeetingId: number;
}
export default class Assignment {
id: number;
dot: boolean;
text: string;
mark?: number;
typeId: number;
comment?: string;
lessonId: number;
attachments: Attachment[];
private _date: string;
private _answer?: TextAnswer;
private _answerAtt: Attachment[];
constructor(assignment: AssignmentObject) {
this.id = assignment.id;
this.dot = assignment.mark?.dutyMark ?? false;
this.text = assignment.assignmentName;
this.mark = assignment.mark?.mark;
this.typeId = assignment.typeId;
this.comment = assignment.markComment?.name;
this.lessonId = assignment.classMeetingId;
this.attachments = assignment.attachments.map((a) => new Attachment(a));
this._date = assignment.dueDate;
this._answer = assignment.textAnswer;
this._answerAtt = assignment.answerFiles.map((a) => new Attachment(a));
}
get date() {
return new Date(this._date);
}
get answer() {
if (!this._answer) return undefined;
return {
date: new Date(this._answer.answerDate),
text: this._answer.answer,
attachments: this._answerAtt,
};
}
toJSON() {
const answer = !this._answer
? undefined
: {
date: this._answer.answerDate,
text: this._answer.answer,
attachments: this._answerAtt.map((a) => a.toJSON()),
};
return {
id: this.id,
dot: this.dot,
text: this.text,
mark: this.mark,
answer,
typeId: this.typeId,
lessonId: this.lessonId,
attachments: this.attachments.map((a) => a.toJSON()),
};
}
}
'})},r=n(3744);const i=(0,r.Z)(d,[["render",e]]);var c=i},7355:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return c}});var l=n(6252);const t=["innerHTML"];function e(s,a,n,e,d,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var d={name:"AssignmentInfo.ts",data:()=>({html:'
interface Teacher {
id: number;
name: string;
}
interface SubjectGroup {
id: number;
name: string;
}
export interface AssignmentInfoObject {
id: number;
date: string;
weight: number;
teacher: Teacher;
teachers?: Teacher[];
isDeleted: boolean;
description: string;
subjectGroup: SubjectGroup;
assignmentName: string;
}
export default class {
id: number;
text: string;
weight: number;
subject: string;
teacher: string;
isDeleted: boolean;
description: string;
private _date: string;
constructor(assignment: AssignmentInfoObject) {
this.id = assignment.id;
this.text = assignment.assignmentName;
this.weight = assignment.weight;
this.subject = assignment.subjectGroup.name;
this.teacher = assignment.teachers
? assignment.teachers[0].name
: assignment.teacher.name;
this.isDeleted = assignment.isDeleted;
this.description = assignment.description;
this._date = assignment.date;
}
get date() {
return new Date(this._date);
}
toJSON() {
return {
id: this.id,
text: this.text,
date: this._date,
weight: this.weight,
subject: this.subject,
teacher: this.teacher,
isDeleted: this.isDeleted,
description: this.description,
};
}
}
'})},r=n(3744);const i=(0,r.Z)(d,[["render",e]]);var c=i},3067:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return c}});var l=n(6252);const t=["innerHTML"];function e(s,a,n,e,d,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var d={name:"AssignmentType.ts",data:()=>({html:'
export interface TypesObject {
id: number;
name: string;
abbr: string;
order: number;
}
export default class AssignmentType {
id: number;
name: string;
abbr: string;
order: number;
constructor(type: TypesObject) {
this.id = type.id;
this.name = type.name;
this.abbr = type.abbr;
this.order = type.order;
}
toJSON() {
return {
id: this.id,
name: this.name,
abbr: this.abbr,
order: this.order,
};
}
}
'})},r=n(3744);const i=(0,r.Z)(d,[["render",e]]);var c=i},2646:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return c}});var l=n(6252);const t=["innerHTML"];function e(s,a,n,e,d,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var d={name:"AssignmentTypes.ts",data:()=>({html:'
import AssignmentType, { TypesObject } from "./AssignmentType";
export default class AssignmentTypes {
types: AssignmentType[];
constructor(types: TypesObject[]) {
this.types = types.map((t) => new AssignmentType(t));
}
findById(id: number) {
return this.types.find((t) => t.id === id) ?? null;
}
findByName(name: string) {
return this.types.find((t) => t.name === name) ?? null;
}
findByAbbr(abbr: string) {
return this.types.find((t) => t.abbr === abbr) ?? null;
}
toJSON() {
return this.types.map((t) => t.toJSON());
}
}
'})},r=n(3744);const i=(0,r.Z)(d,[["render",e]]);var c=i},1774:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return c}});var l=n(6252);const t=["innerHTML"];function e(s,a,n,e,d,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var d={name:"Attachment.ts",data:()=>({html:'
export type AttachmentObject = {
id: number;
name?: string;
description?: string;
originalFileName: string;
};
export type AnswerFilesObject = {
studentId: number;
attachment: {
id: number;
aFile: any;
saved: number;
userId: any;
fileName: string;
description?: string;
};
attachmentDate: string;
};
export type AttachmentRaw = AttachmentObject | AnswerFilesObject;
export default class Attachment {
id: number;
name: string;
description?: string;
private _date?: string;
constructor(raw: AttachmentRaw) {
this.id = "attachment" in raw ? raw.attachment.id : raw.id;
this.name =
"attachment" in raw ? raw.attachment.fileName : raw.originalFileName;
this._date = "attachment" in raw ? raw.attachmentDate : undefined;
this.description =
"attachment" in raw ? raw.attachment.description : raw.description;
}
get date() {
if (!this._date) return undefined;
return new Date(this._date);
}
toJSON() {
return {
id: this.id,
name: this.name,
date: this._date,
description: this.description,
};
}
}
'})},r=n(3744);const i=(0,r.Z)(d,[["render",e]]);var c=i},9318:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return c}});var l=n(6252);const t=["innerHTML"];function e(s,a,n,e,d,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var d={name:"index.ts",data:()=>({html:'
import WS, { ClientOptions } from "ws";
import fetch, { Response, RequestInit } from "node-fetch";
// Работа с куки
import decodeCookie from "./methods/cookie/decode";
import encodeCookie from "./methods/cookie/encode";
// Работа с заголовками
import getHeaders from "./methods/headers/get";
import setHeaders from "./methods/headers/set";
import delHeaders from "./methods/headers/del";
// Работа с ссылками
import joinURL from "./methods/url/join";
import isAbsolute from "./methods/url/isAbsolute";
import encodeQuery from "./methods/url/encodeQuery";
export type DecodeCookie = { [key: string]: string };
export type ExtraHeaders = { key: string; value: string | Function }[];
export type ExtraHeadersRaw = { [key: string]: string };
export interface InitWS extends ClientOptions {
params?: { [key: string]: any };
}
export interface InitRequest extends RequestInit {
params?: { [key: string]: any };
}
export default class Client {
static formData(
body: { [key: string]: any },
init?: InitRequest
): InitRequest {
const data = [];
for (let key in body) data.push(key + "=" + body[key]);
return {
...init,
body: encodeURI(data.join("&")),
headers: {
...init?.headers,
"Content-Type": "application/x-www-form-urlencoded",
},
};
}
private origin: string;
constructor(origin: string) {
if (!isAbsolute(origin)) throw new Error("origin must be an absolute path");
this.origin = new URL(origin).origin;
this.headers.set("Origin", this.origin);
this.headers.set("Referer", this.origin);
this.headers.set("Cookie", () => this.cookie.get());
}
private _cookie: DecodeCookie = {};
private cookie = {
get: () => {
return encodeCookie(this._cookie);
},
set: (cookie?: string[]) => {
for (let { key, val } of decodeCookie(cookie) ?? [])
this._cookie[key] = val;
return this.cookie.get();
},
};
private _headers: ExtraHeaders = [];
public headers = {
get: () => {
return getHeaders(this._headers);
},
set: (key: string, value: string | Function) => {
this._headers = setHeaders(this._headers, key, value);
return this.headers.get();
},
del: (key: string) => {
this._headers = delHeaders(this._headers, key);
return this.headers.get();
},
};
private _path = "/";
public path = {
get: () => {
return this._path;
},
set: (path: string) => {
if (isAbsolute(path)) throw new Error("path must be relative to origin");
this._path = path;
return this.path.get();
},
};
public join(...paths: string[]) {
return joinURL(this.origin, this.path.get(), ...paths);
}
private async isSecurityWarning(res: Response) {
return (
res.headers.get("content-type")?.includes?.("text/html") &&
+(res.headers.get("content-length") ?? "") < 1000 &&
!res.headers.has("filename") &&
(await res.clone().text()).includes("/asp/SecurityWarning.asp")
);
}
public ws(url: string, init?: InitWS) {
if (!isAbsolute(url)) url = this.join(url);
if (init?.params) url += encodeQuery(init.params);
return new WS(url.replace("http", "ws"), {
...init,
headers: {
...init?.headers,
...this.headers.get(),
},
});
}
public async request(url: string, init?: InitRequest): Promise<Response> {
if (!isAbsolute(url)) url = this.join(url);
if (init?.params) url += encodeQuery(init.params);
const res = await fetch(url, {
...init,
headers: {
...this.headers.get(),
...init?.headers,
},
});
if (!res.ok) {
throw new Error(
"Fetch failed.\n\t- url: " + url + "\n\t- status: " + res.status
);
}
if (await this.isSecurityWarning(res)) {
await this.post(
"../asp/SecurityWarning.asp",
Client.formData({
at: this.headers.get().at,
WarnType: 2,
})
);
return this.request(url, init);
}
this.cookie.set(res.headers.raw()?.["set-cookie"]);
return res;
}
public get(url: string, init?: Omit<InitRequest, "method">) {
return this.request(url, { ...init, method: "get" });
}
public post(url: string, init?: Omit<InitRequest, "method">) {
return this.request(url, { ...init, method: "post" });
}
}
'})},r=n(3744);const i=(0,r.Z)(d,[["render",e]]);var c=i},152:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return c}});var l=n(6252);const t=["innerHTML"];function e(s,a,n,e,d,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var d={name:"decode.ts",data:()=>({html:'
/**
* Преобразование строки в объект
* @param cookie Значение заголовка `set-cookie`
*/
export default function (cookie?: string[]) {
return cookie
?.map((cookie) => cookie.substring(0, cookie.indexOf(";")))
.map((cookie) => {
const i = cookie.indexOf("=");
const key = cookie.substring(0, i);
const val = cookie.substring(i + 1);
return { key, val };
});
}
'})},r=n(3744);const i=(0,r.Z)(d,[["render",e]]);var c=i},2263:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return c}});var l=n(6252);const t=["innerHTML"];function e(s,a,n,e,d,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var d={name:"encode.ts",data:()=>({html:'
/**
* Преобразование объекта в строку
* @param cookie Объект с куки файлами
*/
export default function (cookie: { [key: string]: string }) {
const cookies = [];
for (let name in cookie) cookies.push(name + "=" + cookie[name]);
return cookies.join("; ");
}
'})},r=n(3744);const i=(0,r.Z)(d,[["render",e]]);var c=i},9504:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return c}});var l=n(6252);const t=["innerHTML"];function e(s,a,n,e,d,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var d={name:"del.ts",data:()=>({html:'
import { ExtraHeaders } from "../../";
export default function (headers: ExtraHeaders, key: string) {
const index = headers.findIndex((h) => h.key === key);
if (index !== -1) headers.splice(index, 1);
return headers;
}
'})},r=n(3744);const i=(0,r.Z)(d,[["render",e]]);var c=i},247:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return c}});var l=n(6252);const t=["innerHTML"];function e(s,a,n,e,d,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var d={name:"get.ts",data:()=>({html:'
import { ExtraHeaders, ExtraHeadersRaw } from "../../";
export default function (headers: ExtraHeaders) {
let data: ExtraHeadersRaw = {};
for (let { key, value } of headers) {
const result = typeof value === "function" ? value() : value;
if (!result) continue;
else data[key] = result;
}
return data;
}
'})},r=n(3744);const i=(0,r.Z)(d,[["render",e]]);var c=i},6425:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return c}});var l=n(6252);const t=["innerHTML"];function e(s,a,n,e,d,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var d={name:"set.ts",data:()=>({html:'
import { ExtraHeaders } from "../../";
export default function (
headers: ExtraHeaders,
key: string,
value: string | Function
) {
const index = headers.findIndex((h) => h.key === key);
if (index !== -1) headers[index] = { key, value };
else headers.push({ key, value });
return headers;
}
'})},r=n(3744);const i=(0,r.Z)(d,[["render",e]]);var c=i},3559:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return c}});var l=n(6252);const t=["innerHTML"];function e(s,a,n,e,d,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var d={name:"encodeQuery.ts",data:()=>({html:'
export default function (params: { [key: string]: any }) {
let query = "";
for (let key in params) {
query += !!query ? "&" : "?";
query += key + "=" + encodeURIComponent(params[key]);
}
return query;
}
'})},r=n(3744);const i=(0,r.Z)(d,[["render",e]]);var c=i},3908:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return c}});var l=n(6252);const t=["innerHTML"];function e(s,a,n,e,d,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var d={name:"isAbsolute.ts",data:()=>({html:'
const absoluteRegex = new RegExp("^(?:[a-z]+:)?//", "i");
/**
* Является ли ссылка абсолютной
* @param path Путь к ресурсу
*/
export default function (path: string) {
return absoluteRegex.test(path);
}
'})},r=n(3744);const i=(0,r.Z)(d,[["render",e]]);var c=i},8121:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return c}});var l=n(6252);const t=["innerHTML"];function e(s,a,n,e,d,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var d={name:"join.ts",data:()=>({html:'
import { posix } from "path";
/**
*
* @param origin Ссылка на сайт, например http://example.com
* @param paths Путь до требуемого ресурса
*/
export default function (origin: string, ...paths: string[]) {
return new URL(posix.join(...paths), origin).href;
}
'})},r=n(3744);const i=(0,r.Z)(d,[["render",e]]);var c=i},9506:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return c}});var l=n(6252);const t=["innerHTML"];function e(s,a,n,e,d,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var d={name:"Context.ts",data:()=>({html:'
interface User {
id: number;
name: string;
classes: { id: number; name: string }[];
students: { id: number; name: string }[];
}
interface Year {
id: number;
gId: number;
name: string;
start: Date;
end: Date;
}
interface Server {
id: string;
timeFormat: string;
dateFormat: string;
}
interface Subject {
id: number;
name: string;
}
interface School {
id: number;
name: string;
fullName: string;
}
interface Credentials {
user: User;
year: Year;
server: Server;
school: School;
subjects: Subject[];
}
export default class Context {
readonly user: User;
readonly year: Year;
readonly server: Server;
readonly school: School;
readonly subjects: Subject[];
constructor(credentials: Credentials) {
this.user = credentials.user;
this.year = credentials.year;
this.server = credentials.server;
this.school = credentials.school;
this.subjects = credentials.subjects;
}
/** Проверяет является ли число частью года */
checkDate(date: Date) {
const { start, end } = this.year;
return +start <= +date && +date <= +end;
}
/** Существует ли класс */
classExists(id: number) {
return !!this.user.classes.find((c) => c.id == id);
}
/** ID первого класса */
defaultClass() {
return this.user.classes[0]?.id ?? -1;
}
/** Существует ли ученик */
studentExists(id: number) {
return !!this.user.students.find((s) => s.id == id);
}
/** ID первого ученика */
defaultStudent() {
return this.user.students[0]?.id ?? -1;
}
/** Существует ли предмет */
subjectExists(id: number) {
return !!this.subjects.find((s) => s.id == id);
}
}
'})},r=n(3744);const i=(0,r.Z)(d,[["render",e]]);var c=i},9310:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return c}});var l=n(6252);const t=["innerHTML"];function e(s,a,n,e,d,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var d={name:"Day.ts",data:()=>({html:'
import Lesson, { LessonObject } from "./Lesson";
export interface DayObject {
date: string;
lessons: LessonObject[];
}
export default class Day {
lessons: Lesson[];
private _date: string;
constructor(day: DayObject) {
this._date = day.date;
this.lessons = day.lessons.map((l) => new Lesson(l));
}
get date() {
return new Date(this._date);
}
toJSON() {
return {
date: this._date,
lessons: this.lessons.map((l) => l.toJSON()),
};
}
}
'})},r=n(3744);const i=(0,r.Z)(d,[["render",e]]);var c=i},3403:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return c}});var l=n(6252);const t=["innerHTML"];function e(s,a,n,e,d,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var d={name:"Diary.ts",data:()=>({html:'
import Day, { DayObject } from "./Day";
import Lesson from "./Lesson";
export interface DiaryObject {
weekEnd: string;
termName: string;
weekDays?: DayObject[];
weekStart: string;
className: string;
}
export default class Diary {
days: Day[];
termName: string;
className: string;
private _end: string;
private _start: string;
constructor(diary: DiaryObject) {
this.days = diary.weekDays?.map((d) => new Day(d)) ?? [];
this.termName = diary.termName;
this.className = diary.className;
this._end = diary.weekEnd;
this._start = diary.weekStart;
}
get start() {
return new Date(this._start);
}
get end() {
return new Date(this._end);
}
slice({ start, end }: { start: Date; end: Date }) {
return this.days.filter(({ date }) => date >= start && date < end);
}
currentLesson(date: Date) {
const lessons: Lesson[] = [];
this.days.forEach((d) => lessons.push(...d.lessons));
return (
lessons.find(
({ start: startDate, end: endDate }) => date >= startDate && date < endDate
) ?? null
);
}
toJSON() {
return {
days: this.days.map((d) => d.toJSON()),
endDate: this._end,
startDate: this._start,
};
}
}
'})},r=n(3744);const i=(0,r.Z)(d,[["render",e]]);var c=i},2252:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return c}});var l=n(6252);const t=["innerHTML"];function e(s,a,n,e,d,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var d={name:"Grades.ts",data:()=>({html:'
import { str2date, date2JSON } from "@/utils/dateNum";
import { query, table } from "@/utils/parseHtml";
import AssignmentTypes from "./AssignmentTypes";
interface Credentials {
types: AssignmentTypes;
htmlText: string;
}
export default class Grades {
raw: string;
range: { start: Date; end: Date };
teacher: string;
averageMark: number;
private _types: AssignmentTypes;
constructor(credentials: Credentials) {
this.raw = credentials.htmlText;
this._types = credentials.types;
const [start = "", end = ""] =
query(
this.raw,
"table td:nth-child(2) > span:nth-child(3)"
)?.structuredText.match(/((d{1,2}.){2}d{2})/g) ?? [];
this.range = { start: str2date(start), end: str2date(end) };
this.teacher =
query(
this.raw,
"table td:nth-child(2) > span:nth-child(9)"
)?.childNodes[1].text.trim() ?? "";
this.averageMark = +(
query(this.raw, ".table-print tr.totals td:nth-child(3)")
?.structuredText.replace(",", ".")
.replace?.(/^D+(?=d)/, "") ?? ""
);
}
get assignments() {
const trs = table({ html: this.raw, query: ".table-print" });
trs.pop();
return trs.map((tr) => {
const [typeTd, themeTd, dateTd, issueDateTd, markTd] =
tr.querySelectorAll("td") ?? [];
return {
type: this._types.findByName(typeTd?.structuredText),
theme: themeTd?.structuredText,
date: str2date(dateTd?.structuredText),
issueDate: str2date(issueDateTd?.structuredText),
mark: +markTd?.structuredText,
};
});
}
toJSON() {
return {
raw: this.raw,
range: {
start: date2JSON(this.range.start),
end: date2JSON(this.range.end),
},
teacher: this.teacher,
assignments: this.assignments.map((a) => ({
...a,
date: date2JSON(a.date),
issueDate: date2JSON(a.issueDate),
})),
};
}
}
'})},r=n(3744);const i=(0,r.Z)(d,[["render",e]]);var c=i},8401:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return c}});var l=n(6252);const t=["innerHTML"];function e(s,a,n,e,d,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var d={name:"Info.ts",data:()=>({html:'
export interface InfoObject {
firstName: string;
lastName: string;
middleName: string;
birthDate: string;
mobilePhone: string;
email: string;
existsPhoto: boolean;
}
export default class Info {
email: string;
phone: string;
lastName: string;
firstName: string;
middleName: string;
existsPhoto: boolean;
private _birthDate: string;
constructor(info: InfoObject) {
this.email = info.email;
this.phone = info.mobilePhone;
this.lastName = info.lastName;
this.firstName = info.firstName;
this.middleName = info.middleName;
this.existsPhoto = info.existsPhoto;
this._birthDate = info.birthDate;
}
get birthDate() {
return new Date(this._birthDate);
}
toJSON() {
return {
email: this.email,
phone: this.phone,
lastName: this.lastName,
firstName: this.firstName,
birthDate: this._birthDate,
middleName: this.middleName,
existsPhoto: this.existsPhoto,
};
}
}
'})},r=n(3744);const i=(0,r.Z)(d,[["render",e]]);var c=i},3795:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return c}});var l=n(6252);const t=["innerHTML"];function e(s,a,n,e,d,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var d={name:"Journal.ts",data:()=>({html:'
import { str2date, date2JSON } from "@utils/dateNum";
import { query, table } from "@utils/parseHtml";
import { HTMLElement } from "node-html-parser";
import Context from "@classes/Context";
interface Credentials {
htmlText: string;
subjects: Context["subjects"];
}
const MONTHS = {
Сентябрь: "08",
Октябрь: "09",
Ноябрь: "10",
Декабрь: "11",
Январь: "12",
Февраль: "13",
Март: "14",
Апрель: "15",
Май: "16",
Июнь: "17",
Июль: "18",
Август: "19",
};
function parseDates(
yearStart: Date,
monthsTr: HTMLElement,
daysTr: HTMLElement
) {
const days = daysTr.querySelectorAll("th").map((th) => +th.structuredText);
const months = monthsTr.querySelectorAll("[colspan]").map((th) => ({
length: +(th.getAttribute("colspan") ?? ""),
number: +MONTHS[th.structuredText as keyof typeof MONTHS],
}));
const result: Date[] = [];
months.forEach(({ number, length }) => {
const resultLength = result.length;
for (let i = resultLength; i < resultLength + length; i++) {
const date = new Date(yearStart);
date.setDate(days[i]);
date.setMonth(number);
result.push(date);
}
});
return result;
}
export default class Journal {
raw: string;
range: { start: Date; end: Date };
private _subjects: Credentials["subjects"];
constructor(credentials: Credentials) {
this.raw = credentials.htmlText;
this._subjects = credentials.subjects;
const [start = "", end = ""] =
query(
this.raw,
"table td:nth-child(2) > span:nth-child(5)"
)?.structuredText.match(/((d{1,2}.){2}d{2})/g) ?? [];
this.range = { start: str2date(start), end: str2date(end) };
}
get subjects() {
const trs = table({
html: this.raw,
query: ".table-print",
removeHeaders: false,
});
const dates = parseDates(this.range.start, trs[0], trs[1]);
trs.splice(0, 2);
return trs.map((tr) => {
const [nameTd, markTd] = tr.querySelectorAll("[class]");
const name = nameTd.rawText.trim();
const middleMark = +markTd.rawText.replace(",", ".");
const marks: { mark: number; date: Date }[] = [];
const missedList: { type: string; date: Date }[] = [];
tr.querySelectorAll(":not([class])").forEach((td, i) => {
const date = dates[i];
const content = td.rawText.trim();
if (!content) return;
content
.match(/d/g)
?.forEach((str) => marks.push({ mark: +str, date }));
content
.match(/[А-Яа-я]+/g)
?.forEach((type) => missedList.push({ type, date }));
});
return {
id: this._subjects.find(({ name: n }) => n == name)?.id || NaN,
name,
marks,
missedList,
middleMark,
};
});
}
toJSON() {
return {
raw: this.raw,
range: {
start: date2JSON(this.range.start),
end: date2JSON(this.range.end),
},
subjects: this.subjects.map((s) => ({
...s,
marks: s.marks.map((m) => ({
...m,
date: date2JSON(m.date),
})),
missedList: s.missedList.map((m) => ({
...m,
date: date2JSON(m.date),
})),
})),
};
}
}
'})},r=n(3744);const i=(0,r.Z)(d,[["render",e]]);var c=i},9429:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return c}});var l=n(6252);const t=["innerHTML"];function e(s,a,n,e,d,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var d={name:"Lesson.ts",data:()=>({html:'
import Assignment, { AssignmentObject } from "./Assignment";
export interface LessonObject {
day: string;
room: string;
number: number;
endTime: string;
startTime: string;
subjectName: string;
assignments: undefined | AssignmentObject[];
classmeetingId: number;
}
export default class Lesson {
id: number;
subject: string;
assignments: Assignment[];
private _endDate: string;
private _startDate: string;
constructor(lesson: LessonObject) {
this.id = lesson.classmeetingId;
this.subject = lesson.subjectName;
this._endDate = lesson.day.replace("00:00", lesson.endTime);
this._startDate = lesson.day.replace("00:00", lesson.startTime);
this.assignments = lesson.assignments?.map((a) => new Assignment(a)) ?? [];
}
get end() {
return new Date(this._endDate);
}
get start() {
return new Date(this._startDate);
}
toJSON() {
return {
id: this.id,
subject: this.subject,
endDate: this._endDate,
startDate: this._startDate,
assignments: this.assignments.map((a) => a.toJSON()),
};
}
}
'})},r=n(3744);const i=(0,r.Z)(d,[["render",e]]);var c=i},2210:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return c}});var l=n(6252);const t=["innerHTML"];function e(s,a,n,e,d,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var d={name:"ScheduleDay.ts",data:()=>({html:'
import { outerHTML, table } from "@/utils/parseHtml";
import { num2str } from "@/utils/dateNum";
import ScheduleDayLine from "./ScheduleDayLine";
interface Credentials {
date: string;
htmlText: string;
}
function timeFormat(date: string, strDate: string) {
if (strDate.includes(" ")) {
const [date1, time] = strDate.split(" ");
const [day, month] = date1.split(".");
return date
.replace(/-d{2}-/, "-" + num2str(month) + "-")
.replace(/-d{2}T/, "-" + num2str(day) + "T")
.replace(/T.+/, "T" + time);
} else {
return date.replace(/T.+/, "T" + strDate);
}
}
export default class ScheduleDay {
raw: string;
private _date: string;
constructor(credentials: Credentials) {
this.raw = outerHTML({ html: credentials.htmlText, query: ".table" });
this._date = credentials.date;
}
get date() {
return new Date(this._date);
}
get lines(): ScheduleDayLine[] {
return table({ html: this.raw }).map((tr) => {
const [timeTd, nameTd] = tr?.querySelectorAll?.("td") ?? [];
let [start, end] = timeTd?.structuredText.split(" - ");
const startDate = timeFormat(this._date, start);
const endDate = timeFormat(this._date, end);
let name = nameTd?.structuredText;
const className = name.match(/[(.+)]/)?.[1];
if (className) name = name.replace(/ [(.+)]/, "");
return new ScheduleDayLine({ name, endDate, startDate, className });
});
}
toJSON() {
return {
raw: this.raw,
date: this._date,
lines: this.lines.map((line) => line.toJSON()),
};
}
}
'})},r=n(3744);const i=(0,r.Z)(d,[["render",e]]);var c=i},4474:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return c}});var l=n(6252);const t=["innerHTML"];function e(s,a,n,e,d,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var d={name:"ScheduleDayLine.ts",data:()=>({html:'
interface Credentials {
name: string;
className?: string;
startDate: string;
endDate: string;
}
export default class ScheduleDayLine {
name: string;
className?: string;
private _startDate: string;
private _endDate: string;
constructor(credentials: Credentials) {
this.name = credentials.name;
this.className = credentials.className;
this._startDate = credentials.startDate;
this._endDate = credentials.endDate;
}
get start() {
return new Date(this._startDate);
}
get end() {
return new Date(this._endDate);
}
toJSON() {
return {
name: this.name,
className: this.className,
startDate: this._startDate,
endDate: this._endDate,
};
}
}
'})},r=n(3744);const i=(0,r.Z)(d,[["render",e]]);var c=i},3455:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return c}});var l=n(6252);const t=["innerHTML"];function e(s,a,n,e,d,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var d={name:"ScheduleWeek.ts",data:()=>({html:'
import { date2JSON } from "@/utils/dateNum";
import { outerHTML, table } from "@/utils/parseHtml";
import ScheduleWeekLine from "./ScheduleWeekLine";
const DATE_REGEX = /Расписание.+?с (d{1,2}.d{1,2}.d{1,2})/;
interface Credentials {
htmlText: string;
}
export default class ScheduleWeek {
raw: string;
private _date: string;
constructor(credentials: Credentials) {
let date = credentials.htmlText.match(DATE_REGEX)?.[1] ?? "08.04.04";
this.raw = outerHTML({ html: credentials.htmlText, query: ".table" });
this._date = date2JSON(date);
}
get date() {
return new Date(this._date);
}
get parsed(): ScheduleWeekLine[] {
return table({ html: this.raw }).map((tr, i) => {
const [numberTd, nameTd] = tr?.querySelectorAll?.("td") ?? [];
const date = this.date;
date.setDate(date.getDate() + i);
const numbers = numberTd?.childNodes
?.filter((n) => n.nodeType == 3)
?.map((n) => parseInt(n.text));
const names = nameTd?.childNodes
?.filter((n) => n.nodeType == 3)
?.map((n) => n.text);
const lessons: ScheduleWeekLine["lessons"] = [];
for (let i = 0; i < names.length; i++) {
const name = names[i];
if (name == "-") continue;
lessons.push({
names: name.replace(/ [.+?]/g, "").split(", "),
number: numbers[i],
classesName: name
.match(/[(d+?)]/g)
?.map((n) => n.replace(/[|]/g, "")),
});
}
return new ScheduleWeekLine({
date: date2JSON(date),
lessons,
});
});
}
toJSON() {
return {
raw: this.raw,
date: this._date,
parsed: this.parsed.map((i) => i.toJSON()),
};
}
}
'})},r=n(3744);const i=(0,r.Z)(d,[["render",e]]);var c=i},6534:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return c}});var l=n(6252);const t=["innerHTML"];function e(s,a,n,e,d,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var d={name:"ScheduleWeekLine.ts",data:()=>({html:'
interface Credentials {
date: string;
lessons: {
names: string[];
number: number;
classesName?: string[];
}[];
}
export default class ScheduleWeekLine {
lessons: Credentials["lessons"];
private _date: string;
constructor(credentials: Credentials) {
this._date = credentials.date;
this.lessons = credentials.lessons;
}
get date() {
return new Date(this._date);
}
toJSON() {
return {
date: this._date,
lessons: this.lessons,
};
}
}
'})},r=n(3744);const i=(0,r.Z)(d,[["render",e]]);var c=i},630:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return c}});var l=n(6252);const t=["innerHTML"];function e(s,a,n,e,d,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var d={name:"Session.ts",data:()=>({html:'
interface Credentials {
ver: string;
expiryDate: number;
accessToken: string;
}
export default class Session {
ver: string;
expiryDate: number;
accessToken: string;
constructor(credentials: Credentials) {
this.ver = credentials.ver;
this.expiryDate = credentials.expiryDate;
this.accessToken = credentials.accessToken;
}
isValid() {
return this.expiryDate - Date.now() > 0;
}
isExpired() {
return !this.isValid();
}
}
'})},r=n(3744);const i=(0,r.Z)(d,[["render",e]]);var c=i},8528:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return c}});var l=n(6252);const t=["innerHTML"];function e(s,a,n,e,d,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var d={name:"index.ts",data:()=>({html:'
import NetSchoolApi from "@/NetSchoolApi";
import NetSchoolApiSafe from "@/NetSchoolApi-safe";
export default NetSchoolApi;
export const Safe = NetSchoolApiSafe;
'})},r=n(3744);const i=(0,r.Z)(d,[["render",e]]);var c=i},4009:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return c}});var l=n(6252);const t=["innerHTML"];function e(s,a,n,e,d,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var d={name:"assignment.ts",data:()=>({html:'
import NS from "@NS";
import { sessionValid, studentIdValid } from "@utils/checks";
import AssignmentInfo from "@classes/AssignmentInfo";
export interface Credentials {
studentId?: number;
id: number;
}
export default async function (this: NS, credentials: Credentials) {
const { client } = await sessionValid.call(this);
let { id, studentId } = credentials;
studentId = studentIdValid.call(this, credentials.studentId);
return client
.get(`student/diary/assigns/${id}`, { params: { studentId } })
.then((res) => res.json() as any)
.then((data) => new AssignmentInfo(data));
}
'})},r=n(3744);const i=(0,r.Z)(d,[["render",e]]);var c=i},716:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return c}});var l=n(6252);const t=["innerHTML"];function e(s,a,n,e,d,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var d={name:"assignmentTypes.ts",data:()=>({html:'
import NS from "@NS";
import { sessionValid } from "@utils/checks";
import AssignmentTypes from "@classes/AssignmentTypes";
export default async function (this: NS) {
await sessionValid.call(this);
return this.client
.get("grade/assignment/types", { params: { all: false } })
.then((res) => res.json() as any)
.then((data) => new AssignmentTypes(data));
}
'})},r=n(3744);const i=(0,r.Z)(d,[["render",e]]);var c=i},9948:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return c}});var l=n(6252);const t=["innerHTML"];function e(s,a,n,e,d,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var d={name:"index.ts",data:()=>({html:'
import NS from "@NS";
import Context from "@classes/Context";
import sysInfo from "./methods/sysInfo";
import context from "./methods/context";
import schoolInfo from "./methods/schoolInfo";
import studentGrades from "./methods/studentGrades";
export default async function (this: NS) {
const { client } = this;
const [
{ server },
{ year, user, server: server1, schoolId },
{ user: user1, subjects },
] = await Promise.all([
sysInfo(client),
context(client),
studentGrades(client),
]);
return new Context({
year,
user: { ...user, ...user1 },
server: { ...server, ...server1 },
school: { ...(await schoolInfo(client, schoolId)), id: schoolId },
subjects,
});
}
'})},r=n(3744);const i=(0,r.Z)(d,[["render",e]]);var c=i},9455:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return c}});var l=n(6252);const t=["innerHTML"];function e(s,a,n,e,d,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var d={name:"context.ts",data:()=>({html:'
import Client from "@classes/Client";
interface GlobalYear {
id: number;
name: string;
endDate: Date;
startDate: Date;
}
interface SchoolYear {
id: number;
name: string;
closed: string;
endDate: Date;
schoolId: number;
startDate: Date;
globalYear: GlobalYear;
}
interface User {
id: number;
name: string;
}
interface Organization {
id: number;
name: string;
}
interface ContextObject {
at: string;
user: User;
emId?: any;
roles: string[];
rights: string[];
userId: number;
version: string;
schoolId: number;
funcType: string;
dateFormat: string;
timeFormat: string;
schoolyear: SchoolYear;
productName: string;
versionDate?: any;
schoolYearId: number;
globalYearId: number;
userLanguage: string;
organization: Organization;
organizationName: string;
}
export default async function (client: Client) {
const data: ContextObject = await client
.get("context")
.then((res) => res.json() as any);
return {
year: {
id: data.schoolyear.id,
gId: data.schoolyear.globalYear.id,
name: data.schoolyear.name,
start: new Date(data.schoolyear.startDate),
end: new Date(data.schoolyear.endDate),
},
user: { id: data.user.id, name: data.user.name },
server: { dateFormat: data.dateFormat, timeFormat: data.timeFormat },
schoolId: data.schoolId,
};
}
'})},r=n(3744);const i=(0,r.Z)(d,[["render",e]]);var c=i},8290:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return c}});var l=n(6252);const t=["innerHTML"];function e(s,a,n,e,d,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var d={name:"schoolInfo.ts",data:()=>({html:'
import Client from "@classes/Client";
interface LocationType {
id: number;
key: string;
name: string;
}
interface LocationInfo {
locationType: LocationType;
inProvinceCenter: boolean;
isProvinceSchoolInCity: boolean;
}
interface CommonInfo {
legalFormName: string;
legalFormName83: string;
typeName: string;
showFormName: boolean;
formName: string;
schoolName: string;
fullSchoolName: string;
schoolNumber: string;
foundingDate: Date;
independ: string;
additionalName: string;
mainSchool: string;
founders: string[];
ownEducManagements: string[];
status: string;
smallOrganization: string;
locationInfo: LocationInfo;
about: string;
emId?: any;
}
interface ManagementInfo {
director: string;
principalUVR: string;
principalAHC: string;
principalIT: string;
collegiateManagement: string;
}
interface ContactInfo {
stateProvinceName: string;
cityName: string;
districtName?: any;
postAddress: string;
phones: string;
fax: string;
email: string;
web: string;
addressesAdditionalBuildings: string;
juridicalAddress: string;
}
interface OtherInfo {
inn: string;
kpp: string;
ogrn: string;
okpo: string;
okato: string;
okogu: string;
okopf: string;
okfs: string;
okved: string;
specialization: string;
maxOccupancy: string;
maxOccupancyOnShift: string;
numberShifts: string;
referenceToCharter: string;
presenceOfPool: string;
barrierFreeEnvironment: string;
videoSurveillance: string;
linkToScanCopyLicenseEducation?: any;
socialPartnerShip: string;
timetable: string;
conditionsEducation: string;
projectTypeForSchool?: any;
}
interface BankDetails {
bankScore: string;
corrScore: string;
personalAccount: string;
bik: string;
note: string;
bankName: string;
bankKpp: string;
}
interface FoodPayDetails {
foodPayOrgName: string;
foodPayInn: string;
foodPayKpp: string;
foodPayBankName: string;
foodPayBankScore: string;
foodPayBankCorrScore: string;
foodPayBankBik: string;
foodPayBankKpp: string;
}
interface InternetConnectionInfo {
computersCount: string;
contentFilteringName: string;
internetSpeedUnderContract: string;
internetSpeedInFact: string;
internetProviderName: string;
internetAccessTechnology: string;
}
export interface CardObject {
commonInfo: CommonInfo;
managementInfo: ManagementInfo;
contactInfo: ContactInfo;
otherInfo: OtherInfo;
bankDetails: BankDetails;
foodPayDetails: FoodPayDetails;
internetConnectionInfo: InternetConnectionInfo;
}
export default async function (client: Client, id: number) {
const { commonInfo }: CardObject = await client
.get(`schools/${id}/card`)
.then((res) => res.json() as any);
return { name: commonInfo.schoolName, fullName: commonInfo.fullSchoolName };
}
'})},r=n(3744);const i=(0,r.Z)(d,[["render",e]]);var c=i},2586:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return c}});var l=n(6252);const t=["innerHTML"];function e(s,a,n,e,d,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var d={name:"studentGrades.ts",data:()=>({html:'
import Client from "@classes/Client";
interface RelatedObject {
type: string;
ref: string;
}
interface Dependency {
relatedObject: RelatedObject;
relatedValue?: any;
condition: string;
}
interface Filter {
id: string;
title: string;
order: number;
filterType: string;
optionalFlag: boolean;
hideSingleOption: boolean;
hasSureCheckedFlag: boolean;
hideTitleFlag: boolean;
existStateProvider: boolean;
emptyText: string;
dependencies: Dependency[];
}
interface FilterPanel {
filters: Filter[];
}
interface Report {
id: string;
name: string;
group: string;
level: string;
order: number;
filterPanel: FilterPanel;
presentTypes: any[];
}
interface Item {
title: string;
value: string;
}
interface Range {
start: Date;
end: Date;
}
interface DefaultRange {
start: Date;
end: Date;
}
interface FilterSource {
items: Item[];
defaultValue: string;
filterId: string;
nullText?: any;
minValue?: Date;
maxValue?: Date;
range: Range;
defaultRange: DefaultRange;
}
interface StudentGradesObject {
report: Report;
filterSources: FilterSource[];
}
export default async function (client: Client) {
const { filterSources: data }: StudentGradesObject = await client
.get("reports/studentGrades")
.then((res) => res.json() as any);
const classes =
data
.find((f) => f.filterId == "PCLID_IUP")
?.items.map((c) => ({ id: parseInt(c.value), name: c.title })) ?? [];
const subjects =
data
.find((f) => f.filterId == "SGID")
?.items.map((s) => ({ id: parseInt(s.value), name: s.title })) ?? [];
const students =
data
.find((f) => f.filterId == "SID")
?.items.map((s) => ({
id: parseInt(s.value),
name: s.title,
})) ?? [];
return {
user: {
classes,
students,
},
subjects,
};
}
'})},r=n(3744);const i=(0,r.Z)(d,[["render",e]]);var c=i},2382:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return c}});var l=n(6252);const t=["innerHTML"];function e(s,a,n,e,d,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var d={name:"sysInfo.ts",data:()=>({html:'
import Client from "@classes/Client";
export default async function (client: Client) {
const text = await client.get("sysInfo").then((res) => res.text());
const id = text.match(/Id: (.+)/)?.[1] ?? "";
const version = text.match(/Версия системы: (.+)/)?.[1] ?? "";
return { server: { id, version } };
}
'})},r=n(3744);const i=(0,r.Z)(d,[["render",e]]);var c=i},6115:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return c}});var l=n(6252);const t=["innerHTML"];function e(s,a,n,e,d,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var d={name:"diary.ts",data:()=>({html:'
import NS from "@NS";
import Diary, { DiaryObject } from "@classes/Diary";
import { sessionValid, dateValid, studentIdValid } from "@utils/checks";
import { AttachmentObject, AnswerFilesObject } from "@/classes/Attachment";
type AttachmentRaw = {
assignmentId: number;
attachments: AttachmentObject[];
answerFiles: AnswerFilesObject[];
};
export interface Credentials {
studentId?: number;
start?: Date;
end?: Date;
}
export default async function (this: NS, credentials: Credentials = {}) {
const { client, context } = await sessionValid.call(this);
let { studentId, start, end } = credentials;
studentId = studentIdValid.call(this, studentId);
if (start && end) dateValid.call(this, start, end);
else {
const { weekStart } = await client
.get("student/diary/init")
.then((res) => res.json() as any);
start = new Date(weekStart);
end = new Date(weekStart);
end.setDate(end.getDate() + 7);
}
const diaryRaw = await client
.get("student/diary", {
params: {
yearId: context.year.id,
studentId,
weekEnd: end.toJSON().replace(/T.+/, ""),
weekStart: start.toJSON().replace(/T.+/, ""),
},
})
.then((res) => res.json() as unknown as DiaryObject);
const assignments: number[] = [];
diaryRaw.weekDays?.forEach((day) => {
day.lessons.forEach((lesson) => {
lesson.assignments?.forEach((assignment) => {
assignments.push(assignment.id);
});
});
});
const attachmentsRaw = await client
.post("student/diary/get-attachments", {
params: { studentId },
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({
assignId: assignments,
}),
})
.then((res) => res.json() as unknown as AttachmentRaw[]);
const diaryObject = diaryRaw;
if (diaryObject.weekDays)
diaryObject.weekDays = diaryObject.weekDays.map((day) => ({
...day,
lessons: day.lessons.map((lesson) => ({
...lesson,
assignments: lesson.assignments?.map((assignment) => {
const item = attachmentsRaw.find(
({ assignmentId }) => assignment.id === assignmentId
);
return {
...assignment,
attachments: item?.attachments ?? [],
answerFiles: item?.answerFiles ?? [],
};
}),
})),
}));
return new Diary(diaryObject);
}
'})},r=n(3744);const i=(0,r.Z)(d,[["render",e]]);var c=i},803:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return c}});var l=n(6252);const t=["innerHTML"];function e(s,a,n,e,d,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var d={name:"downloadFile.ts",data:()=>({html:'
import NS from "@NS";
import { sessionValid, studentIdValid } from "@utils/checks";
export interface Credentials {
studentId?: number;
assignId: number;
id: number;
}
export default async function (this: NS, credentials: Credentials) {
const { client } = await sessionValid.call(this);
let { id, assignId, studentId } = credentials;
studentId = studentIdValid.call(this, studentId);
const response = await client
.post("student/diary/get-attachments", {
params: { studentId },
headers: {
Referer: client.join("../angular/school/studentdiary/"),
"Content-Type": "application/json",
},
body: JSON.stringify({
assignId: [assignId],
}),
})
.then((res) => res.text());
if (!response.includes(id.toString()))
throw new Error(`Нет файла ${id} для задания ${assignId}`);
return client.get(`attachments/${id}`).then((res) => res.buffer());
}
'})},r=n(3744);const i=(0,r.Z)(d,[["render",e]]);var c=i},969:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return c}});var l=n(6252);const t=["innerHTML"];function e(s,a,n,e,d,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var d={name:"fetch.ts",data:()=>({html:'
import NS from "@NS";
import { InitRequest } from "@classes/Client";
import { sessionValid } from "@utils/checks";
export default async function (this: NS, url: string, init?: InitRequest) {
const { client } = await sessionValid.call(this);
return client.request("../" + url, init);
}
'})},r=n(3744);const i=(0,r.Z)(d,[["render",e]]);var c=i},7953:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return c}});var l=n(6252);const t=["innerHTML"];function e(s,a,n,e,d,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var d={name:"grades.ts",data:()=>({html:'
import NS from "@NS";
import Grades from "@classes/Grades";
import { date2JSON } from "@utils/dateNum";
import {
sessionValid,
dateValid,
classIdValid,
studentIdValid,
} from "@utils/checks";
export interface Credentials {
subjectId: number;
start?: Date;
end?: Date;
classId?: number;
studentId?: number;
}
export default async function grades(this: NS, credentials: Credentials) {
const { context } = await sessionValid.call(this);
let { subjectId, start, end, classId, studentId } = credentials;
if (!context.subjectExists(subjectId))
throw new Error(`Предмета ${subjectId} не существует`);
classId = classIdValid.call(this, classId);
studentId = studentIdValid.call(this, studentId);
if (!start) start = context.year.start;
if (!end) end = context.year.end;
dateValid.call(this, start, end);
const [types, htmlText] = await Promise.all([
this.assignmentTypes(),
this.reportFile({
url: "reports/studentgrades/queue",
filters: [
{
filterId: "SID",
filterValue: studentId,
},
{
filterId: "PCLID_IUP",
filterValue: classId + "_0",
},
{
filterId: "SGID",
filterValue: subjectId,
},
{
filterId: "period",
filterValue: date2JSON(start) + " - " + date2JSON(end),
},
],
}),
]);
return new Grades({ types, htmlText });
}
'})},r=n(3744);const i=(0,r.Z)(d,[["render",e]]);var c=i},5045:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return c}});var l=n(6252);const t=["innerHTML"];function e(s,a,n,e,d,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var d={name:"info.ts",data:()=>({html:'
import NS from "@NS";
import Info from "@classes/Info";
import { sessionValid } from "@utils/checks";
export default async function (this: NS) {
const { client } = await sessionValid.call(this);
return client
.get("mysettings")
.then((res) => res.json())
.then((data) => new Info(data));
}
'})},r=n(3744);const i=(0,r.Z)(d,[["render",e]]);var c=i},8046:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return c}});var l=n(6252);const t=["innerHTML"];function e(s,a,n,e,d,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var d={name:"journal.ts",data:()=>({html:'
import NS from "@NS";
import Journal from "@classes/Journal";
import { date2JSON } from "@utils/dateNum";
import {
classIdValid,
dateValid,
sessionValid,
studentIdValid,
} from "@utils/checks";
export interface Credentials {
start?: Date;
end?: Date;
classId?: number;
studentId?: number;
}
export default async function journal(this: NS, credentials: Credentials = {}) {
const { context } = await sessionValid.call(this);
let { start, end, classId, studentId } = credentials;
classId = classIdValid.call(this, classId);
studentId = studentIdValid.call(this, studentId);
if (!start) start = context.year.start;
if (!end) end = context.year.end;
dateValid.call(this, start, end);
const htmlText = await this.reportFile({
url: "reports/studenttotal/queue",
filters: [
{
filterId: "SID",
filterValue: studentId,
},
{
filterId: "PCLID",
filterValue: classId,
},
{
filterId: "period",
filterValue: date2JSON(start) + " - " + date2JSON(end),
},
],
});
return new Journal({ htmlText, subjects: context.subjects });
}
'})},r=n(3744);const i=(0,r.Z)(d,[["render",e]]);var c=i},3538:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return c}});var l=n(6252);const t=["innerHTML"];function e(s,a,n,e,d,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var d={name:"index.ts",data:()=>({html:'
import NS from "@NS";
import Session from "@classes/Session";
import signIn from "./methods/signIn";
export default async function (this: NS) {
const { client, credentials } = this;
const { at: accessToken, ver, timeOut } = await signIn(client, credentials);
this.session = new Session({
ver,
accessToken,
expiryDate: Date.now() + timeOut,
});
}
'})},r=n(3744);const i=(0,r.Z)(d,[["render",e]]);var c=i},4388:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return c}});var l=n(6252);const t=["innerHTML"];function e(s,a,n,e,d,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var d={name:"authData.ts",data:()=>({html:'
import Client from "@classes/Client";
export interface AuthData {
lt: string;
ver: string;
salt: string;
}
export default async function (client: Client) {
const data: AuthData = await client
.post("/auth/getData")
.then((res) => res.json() as any)
.catch(() => ({}));
if (!data.lt || !data.ver || !data.salt) {
throw new Error("Сетевой не вернул данные для авторизации.");
} else {
return data;
}
}
'})},r=n(3744);const i=(0,r.Z)(d,[["render",e]]);var c=i},7986:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return c}});var l=n(6252);const t=["innerHTML"];function e(s,a,n,e,d,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var d={name:"passwordHash.ts",data:()=>({html:'
import { createHash } from "crypto";
import { PasswordType } from "@NS";
function md5(str: string): string {
return createHash("md5").update(str).digest("hex");
}
export default function (salt: string, password: PasswordType) {
const hash = typeof password === "string" ? md5(password) : password.hash;
const pw2 = md5(salt + hash);
const pw = pw2.substring(0, password.length);
return { pw, pw2 };
}
'})},r=n(3744);const i=(0,r.Z)(d,[["render",e]]);var c=i},2419:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return c}});var l=n(6252);const t=["innerHTML"];function e(s,a,n,e,d,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var d={name:"schoolInfo.ts",data:()=>({html:'
import Client from "@classes/Client";
interface SchoolSearchData {
id: number;
inn: string;
ogrn: string;
name: string;
cityId: number;
address: null;
shortName: string;
provinceId: number;
}
declare module SchoolPreLoginData {
export interface Country {
id: number;
name: string;
}
export interface State {
id: number;
name: string;
}
export interface Province {
kladr: string;
id: number;
name: string;
}
export interface City {
atoTypeName: string;
id: number;
name: string;
}
export interface Func {
id: number;
name: string;
}
export interface School {
id: number;
name: string;
}
export interface RootObject {
countries: Country[];
cid: number;
states: State[];
sid: number;
provinces: Province[];
pid: number;
cities: City[];
cn: number;
funcs: Func[];
sft: number;
schools: School[];
scid: number;
hlevels?: any;
ems?: any;
}
}
export interface SchoolInfo {
cid: number;
sid: number;
pid: number;
cn: number;
sft: number;
scid: number;
}
export default async function (client: Client, school: string | number) {
const data = await Promise.all([
client
.get("schools/search")
.then((res) => res.json() as Promise<SchoolSearchData[]>),
client
.get("prepareloginform")
.then((res) => res.json() as Promise<SchoolPreLoginData.RootObject>),
]).catch((e) => {
console.error(e);
throw new Error("Не удалось получить список школ");
});
if (typeof school === "string") school = school.toLowerCase().trim();
const result = data[0].find(({ id, name, shortName }) =>
typeof school !== "string"
? id == school
: name.toLowerCase().trim() == school ||
shortName.toLowerCase().trim() == school
);
if (!result) throw new Error("Не удалось найти школу");
if (typeof school === "string") {
console.info(
" INFO ",
`ID школы: ${result.id}. Советуем в будущем использовать ID школы вместо названия.`
);
}
return {
cid: data[1].cid,
sid: data[1].sid,
pid: result.provinceId,
cn: result.cityId,
sft: 2,
scid: result.id,
};
}
'})},r=n(3744);const i=(0,r.Z)(d,[["render",e]]);var c=i},5987:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return c}});var l=n(6252);const t=["innerHTML"];function e(s,a,n,e,d,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var d={name:"signIn.ts",data:()=>({html:'
import { Credentials } from "@NS";
import Client from "@classes/Client";
import authData from "./authData";
import schoolInfo from "./schoolInfo";
import passwordHash from "./passwordHash";
interface SignInObject {
at: string;
timeOut: number;
}
export interface SignIn {
at: string;
ver: string;
timeOut: number;
}
export default async function (
client: Client,
credentials: Credentials
): Promise<SignIn> {
const { login: un, password, school: schoolCr } = credentials;
// Сохранение куки
await client.get("logindata");
const [{ lt, ver, salt }, school] = await Promise.all([
authData(client),
schoolInfo(client, schoolCr),
]);
const { at, timeOut }: SignInObject = await client
.post(
"/login",
Client.formData({
un,
lt,
ver,
loginType: 1,
...school,
...passwordHash(salt, password),
})
)
.then((res) => res.json() as any)
.catch(() => {
throw new Error("Не удалось войти. Проверьте введение данные.");
});
return { at, ver, timeOut };
}
'})},r=n(3744);const i=(0,r.Z)(d,[["render",e]]);var c=i},1695:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return c}});var l=n(6252);const t=["innerHTML"];function e(s,a,n,e,d,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var d={name:"index.ts",data:()=>({html:'
import NS from "@NS";
import signOut from "./signOut";
export default async function (this: NS) {
const { client, session } = this;
if (session) await signOut(client, session);
this.session = null;
}
'})},r=n(3744);const i=(0,r.Z)(d,[["render",e]]);var c=i},682:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return c}});var l=n(6252);const t=["innerHTML"];function e(s,a,n,e,d,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var d={name:"signOut.ts",data:()=>({html:'
import Session from "@classes/Session";
import Client from "@classes/Client";
export default function (client: Client, session: Session) {
const { accessToken: at, ver } = session;
return client.post("../asp/logout.asp", Client.formData({ at, ver }));
}
'})},r=n(3744);const i=(0,r.Z)(d,[["render",e]]);var c=i},7385:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return c}});var l=n(6252);const t=["innerHTML"];function e(s,a,n,e,d,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var d={name:"photo.ts",data:()=>({html:'
import NS from "@NS";
import Client from "@classes/Client";
import { sessionValid, studentIdValid } from "@utils/checks";
export interface Credentials {
studentId?: number;
}
export default async function (this: NS, credentials: Credentials = {}) {
const { client, session } = await sessionValid.call(this);
const { accessToken: at, ver } = session;
const userId = studentIdValid.call(this, credentials.studentId);
// Просто получаем куки
await client.post(
"../asp/MySettings/MySettings.asp",
Client.formData({ at, ver }, { params: { at } })
);
return client
.get("users/photo", { params: { at, ver, userId } })
.then((res) => res.buffer());
}
'})},r=n(3744);const i=(0,r.Z)(d,[["render",e]]);var c=i},6611:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return c}});var l=n(6252);const t=["innerHTML"];function e(s,a,n,e,d,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var d={name:"reportFile.ts",data:()=>({html:'
import NS from "@NS";
import WS from "ws";
import Client from "@classes/Client";
import { sessionValid } from "@utils/checks";
type Filter = {
filterId: string;
filterValue: string | number;
};
type Query = {
_: string;
at: string;
transport: "webSockets";
clientProtocol: number;
connectionData: string;
connectionToken?: string;
};
interface NegotiateObject {
Url: string;
ConnectionId: string;
TryWebSockets: boolean;
ProtocolVersion: string;
ConnectionToken: string;
KeepAliveTimeout: number;
DisconnectTimeout: number;
ConnectionTimeout: number;
TransportConnectTimeout: number;
}
export interface Credentials {
url: string;
filters: Filter[];
yearId?: number;
timeout?: number;
}
export default async function reportFile(
this: NS,
credentials: Credentials
): Promise<string> {
const { url, filters, yearId, timeout = 6e4 } = credentials;
const { client, session, context } = await sessionValid.call(this);
const query: Query = {
_: session.ver,
at: session.accessToken,
transport: "webSockets",
clientProtocol: 1.5,
connectionData: '[{"name":"queuehub"}]',
};
const params = [
{ name: "DATEFORMAT", value: context.server.dateFormat },
{ name: "SCHOOLYEARID", value: yearId ? yearId : context.year.id },
{ name: "SERVERTIMEZONE", value: 3 },
{ name: "FULLSCHOOLNAME", value: context.school.fullName },
];
const { ConnectionToken } = (await client
.get("signalr/negotiate", { params: query })
.then((res) => res.json())) as NegotiateObject;
query.connectionToken = ConnectionToken;
const ws = client.ws("signalr/connect", { params: query });
return new Promise((resolve, reject) => {
let timeoutId = 0 as unknown as NodeJS.Timeout;
ws.once("open", () => {
client.get("signalr/start", { params: query });
client
.post(url, {
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ params, selectedData: filters }),
})
.then((res) => res.json())
.then(({ taskId }) => {
if (timeout > 0)
timeoutId = setTimeout(() => ws.close(4010), timeout);
ws.send(
JSON.stringify({
I: 0,
H: "queuehub",
M: "StartTask",
A: [taskId],
})
);
})
.catch(() => ws.close(4001));
});
ws.on("message", async (msg: string) => {
let data: any;
try {
data = JSON.parse(msg);
} catch (e) {
return;
}
switch (data?.M?.[0]?.M) {
case "complete":
ws.close(4000);
const res = await client.get("files/" + data.M[0].A[0].Data);
resolve(await res.text());
break;
case "error":
ws.close(4003, data.M[0].A[0].Details);
break;
}
});
ws.once("error", (err) => ws.close(4002, err.message));
ws.once("close", async (code, message) => {
clearTimeout(timeoutId);
await client.post("signalr/abort", { params: query });
switch (code) {
case 1000:
case 4000:
break;
case 4001:
reject(new Error("Error during initialization"));
break;
case 4002:
reject(new Error("Error in socket.\nError: " + message));
break;
case 4003:
reject(new Error("Error in task.\nError: " + message));
break;
case 4010:
reject(new Error("Response time expired"));
break;
default:
reject(new Error("Unknown error.\nError: " + message));
}
});
});
}
'})},r=n(3744);const i=(0,r.Z)(d,[["render",e]]);var c=i},7254:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return c}});var l=n(6252);const t=["innerHTML"];function e(s,a,n,e,d,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var d={name:"scheduleDay.ts",data:()=>({html:'
import NS from "@NS";
import Client from "@classes/Client";
import ScheduleDay from "@classes/ScheduleDay";
import { date2str } from "@utils/dateNum";
import { sessionValid, dateValid, classIdValid } from "@utils/checks";
export interface Credentials {
date?: Date;
classId?: number;
}
export default async function (this: NS, credentials: Credentials = {}) {
const { client, session } = await sessionValid.call(this);
const { accessToken: at, ver } = session;
let { date, classId } = credentials;
if (!date) date = new Date();
else dateValid.call(this, date);
const htmlText = await client
.post(
"../asp/Calendar/DayViewS.asp",
Client.formData({
at,
ver,
date: date2str(date),
PCLID_IUP: classIdValid.call(this, classId) + "_0",
LoginType: 0,
})
)
.then((res) => res.text());
return new ScheduleDay({
date: date.toJSON().replace(/T.+/, "T00:00"),
htmlText,
});
}
'})},r=n(3744);const i=(0,r.Z)(d,[["render",e]]);var c=i},1513:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return c}});var l=n(6252);const t=["innerHTML"];function e(s,a,n,e,d,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var d={name:"scheduleWeek.ts",data:()=>({html:'
import NS from "@NS";
import Client from "@classes/Client";
import ScheduleWeek from "@classes/ScheduleWeek";
import { date2str } from "@utils/dateNum";
import { sessionValid, dateValid, classIdValid } from "@utils/checks";
export interface Credentials {
date?: Date;
classId?: number;
}
export default async function (this: NS, credentials: Credentials = {}) {
const { client, session } = await sessionValid.call(this);
const { accessToken: at, ver } = session;
let { date, classId } = credentials;
if (!date) date = new Date();
else dateValid.call(this, date);
const htmlText = await client
.post(
"../asp/Calendar/WeekViewTimeS.asp",
Client.formData({
at,
ver,
date: date2str(date),
PCLID_IUP: classIdValid.call(this, classId) + "_0",
LoginType: 0,
})
)
.then((res) => res.text());
return new ScheduleWeek({
htmlText,
});
}
'})},r=n(3744);const i=(0,r.Z)(d,[["render",e]]);var c=i},2331:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return c}});var l=n(6252);const t=["innerHTML"];function e(s,a,n,e,d,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var d={name:"sessionValid.ts",data:()=>({html:'
import NS from "@NS";
export default async function (this: NS) {
const { client, session } = this;
if (!session) return false;
const { accessToken: token } = session;
return client
.get("context/expired", { params: { token } })
.then((res) => res.json())
.then((b) => (typeof b == "boolean" ? !b : false));
}
'})},r=n(3744);const i=(0,r.Z)(d,[["render",e]]);var c=i},5662:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return c}});var l=n(6252);const t=["innerHTML"];function e(s,a,n,e,d,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var d={name:"checks.ts",data:()=>({html:'
/**
* Этот файл содержит функции, необходимые для проверки данных.
* Они часто очень просты, но они слишком распространены в методах.
*/
import NS from "@NS";
/**
* Проверяет валидность сессии.
*/
export async function sessionValid(this: NS) {
if (!(await this.sessionValid()) || !this.session || !this.context)
throw new Error("Сначала надо открыть сессию.");
return { ...this } as NS & {
session: NonNullable<NS["session"]>;
context: NonNullable<NS["context"]>;
};
}
/**
* Проверяет валидность дат
*/
export function dateValid(this: NS, ...dates: Date[]) {
for (let date of dates)
if (!this.context?.checkDate(date))
throw new Error("Дата выходит за рамки учебного года");
return dates;
}
/**
* Проверяет id пользователя или возвращает дефолтное
*/
export function studentIdValid(this: NS, id?: number) {
const context = this.context as NonNullable<NS["context"]>;
if (!id) id = context.defaultStudent();
if (context.studentExists(id)) return id;
else throw new Error(`Нет пользователя c id: ${id}`);
}
/**
* Проверяет id класса или возвращает дефолтное
*/
export function classIdValid(this: NS, id?: number) {
const context = this.context as NonNullable<NS["context"]>;
if (!id) id = context.defaultClass();
if (context.classExists(id)) return id;
else throw new Error(`Нет класса c id: ${id}`);
}
'})},r=n(3744);const i=(0,r.Z)(d,[["render",e]]);var c=i},2746:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return c}});var l=n(6252);const t=["innerHTML"];function e(s,a,n,e,d,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var d={name:"dateNum.ts",data:()=>({html:'
/**
* Переводит число `1` в строку "01"
*/
export function num2str(num: string | number) {
if (typeof num == "string") num = parseInt(num);
if (num < 10) return "0" + num;
else return num.toString();
}
/**
* Переводит объект `Date` в строку формата "dd.mm.yy"
*/
export function date2str(date: Date) {
const day = date.getDate();
const month = date.getMonth() + 1;
const year = date.getFullYear() % 100;
return day + "." + month + "." + year;
}
/**
* Переводит строку формата "dd.mm.yy" в объект `Date`
*/
export function str2date(str: string) {
if (!/(d{1,2}.){2}d{2}/.test(str))
throw new Error("Invalid date string: " + str);
const [day, month, year] = (str.match(/d+/g) as string[]).map((s) =>
parseInt(s)
);
const date = new Date();
date.setHours(0, 0, 0, 0);
date.setDate(day);
date.setMonth(month - 1);
date.setFullYear(~~(date.getFullYear() / 100) * 100 + year);
return date;
}
/**
* Переводит строку формата "dd.mm.yy" в строку формата "yyyy-mm-ddT00:00"
*/
export function date2JSON(str: string): string;
/**
* Переводит объект `Date` в строку формата "yyyy-mm-ddT00:00"
*/
export function date2JSON(date: Date): string;
export function date2JSON(arg: string | Date): string {
const date = typeof arg === "string" ? str2date(arg) : arg;
const day = date.getDate();
const year = date.getFullYear();
const month = date.getMonth() + 1;
return `${year}-${num2str(month)}-${num2str(day)}T00:00`;
}
'})},r=n(3744);const i=(0,r.Z)(d,[["render",e]]);var c=i},5725:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return c}});var l=n(6252);const t=["innerHTML"];function e(s,a,n,e,d,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var d={name:"parseHtml.ts",data:()=>({html:'
import { parse as p, Options } from "node-html-parser";
function parse(data: string, options?: Partial<Options>) {
return p(data.replace(/&nbsp;/g, " "), options);
}
export function outerHTML(args: { html: string; query: string }) {
const { html, query } = args;
return parse(html).querySelector(query)?.outerHTML ?? html;
}
export function query(html: string, query: string) {
return parse(html).querySelector(query);
}
export function table(args: {
html: string;
query?: string;
removeHeaders?: boolean;
}) {
const { html, query = ".table", removeHeaders = true } = args;
const trs = parse(html).querySelector(query)?.querySelectorAll?.("tr") ?? [];
if (removeHeaders) trs.shift();
return trs;
}
'})},r=n(3744);const i=(0,r.Z)(d,[["render",e]]);var c=i},4731:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return c}});var l=n(6252);const t=["innerHTML"];function e(s,a,n,e,d,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var d={name:"tsconfig.json",data:()=>({html:'
{
"compilerOptions": {
"module": "commonjs",
"target": "es6",
"strict": true,
"pretty": true,
"baseUrl": "./",
"outDir": "dist",
"rootDir": "src",
"sourceMap": true,
"declaration": true,
"esModuleInterop": true,
"strictNullChecks": true,
"moduleResolution": "node",
"paths": {
"@/*": [
"src/*"
],
"@NS": [
"src/NetSchoolApi-safe.ts"
],
"@utils/*": [
"src/utils/*"
],
"@classes/*": [
"src/classes/*"
],
"@methods/*": [
"src/methods/*"
]
}
},
"lib": [
"es2015"
]
}
'})},r=n(3744);const i=(0,r.Z)(d,[["render",e]]);var c=i},2051:function(s,a,n){var l={"./$1github/FUNDING.vue":3690,"./$1github/ISSUE_TEMPLATE/отчет-об-ошибке--bug-report-.vue":2e3,"./$1github/workflows/codeql-analysis.vue":1749,"./$1github/workflows/publish-release.vue":6285,"./$1github/workflows/vuepress-deploy.vue":3284,"./$1gitignore.vue":3955,"./$1npmignore.vue":4957,"./CODE_OF_CONDUCT.vue":1105,"./LICENSE.vue":2664,"./README.vue":2111,"./docs/examples/assignment.vue":2696,"./docs/examples/assignmentTypes.vue":2035,"./docs/examples/controlSession.vue":8506,"./docs/examples/diary.vue":4349,"./docs/examples/downloadFile.vue":5834,"./docs/examples/fetch.vue":653,"./docs/examples/grades.vue":1887,"./docs/examples/info.vue":7948,"./docs/examples/journal.vue":9584,"./docs/examples/photo.vue":5661,"./docs/examples/reportfile.vue":1721,"./docs/examples/scheduleDay.vue":2968,"./docs/examples/scheduleweek.vue":9525,"./docs/examples/sessionValid.vue":9346,"./docs/guide.vue":9629,"./docs/reference.vue":6677,"./package.vue":453,"./src/NetSchoolApi-safe.vue":6189,"./src/NetSchoolApi.vue":7949,"./src/classes/Assignment.vue":3871,"./src/classes/AssignmentInfo.vue":7355,"./src/classes/AssignmentType.vue":3067,"./src/classes/AssignmentTypes.vue":2646,"./src/classes/Attachment.vue":1774,"./src/classes/Client/index.vue":9318,"./src/classes/Client/methods/cookie/decode.vue":152,"./src/classes/Client/methods/cookie/encode.vue":2263,"./src/classes/Client/methods/headers/del.vue":9504,"./src/classes/Client/methods/headers/get.vue":247,"./src/classes/Client/methods/headers/set.vue":6425,"./src/classes/Client/methods/url/encodeQuery.vue":3559,"./src/classes/Client/methods/url/isAbsolute.vue":3908,"./src/classes/Client/methods/url/join.vue":8121,"./src/classes/Context.vue":9506,"./src/classes/Day.vue":9310,"./src/classes/Diary.vue":3403,"./src/classes/Grades.vue":2252,"./src/classes/Info.vue":8401,"./src/classes/Journal.vue":3795,"./src/classes/Lesson.vue":9429,"./src/classes/ScheduleDay.vue":2210,"./src/classes/ScheduleDayLine.vue":4474,"./src/classes/ScheduleWeek.vue":3455,"./src/classes/ScheduleWeekLine.vue":6534,"./src/classes/Session.vue":630,"./src/index.vue":8528,"./src/methods/assignment.vue":4009,"./src/methods/assignmentTypes.vue":716,"./src/methods/context/index.vue":9948,"./src/methods/context/methods/context.vue":9455,"./src/methods/context/methods/schoolInfo.vue":8290,"./src/methods/context/methods/studentGrades.vue":2586,"./src/methods/context/methods/sysInfo.vue":2382,"./src/methods/diary.vue":6115,"./src/methods/downloadFile.vue":803,"./src/methods/fetch.vue":969,"./src/methods/grades.vue":7953,"./src/methods/info.vue":5045,"./src/methods/journal.vue":8046,"./src/methods/logIn/index.vue":3538,"./src/methods/logIn/methods/authData.vue":4388,"./src/methods/logIn/methods/passwordHash.vue":7986,"./src/methods/logIn/methods/schoolInfo.vue":2419,"./src/methods/logIn/methods/signIn.vue":5987,"./src/methods/logOut/index.vue":1695,"./src/methods/logOut/signOut.vue":682,"./src/methods/photo.vue":7385,"./src/methods/reportFile.vue":6611,"./src/methods/scheduleDay.vue":7254,"./src/methods/scheduleWeek.vue":1513,"./src/methods/sessionValid.vue":2331,"./src/utils/checks.vue":5662,"./src/utils/dateNum.vue":2746,"./src/utils/parseHtml.vue":5725,"./tsconfig.vue":4731};function t(s){var a=e(s);return n(a)}function e(s){if(!n.o(l,s)){var a=new Error("Cannot find module '"+s+"'");throw a.code="MODULE_NOT_FOUND",a}return l[s]}t.keys=function(){return Object.keys(l)},t.resolve=e,s.exports=t,t.id=2051},1455:function(s,a,n){var l={"./pages/$1github/FUNDING":3690,"./pages/$1github/FUNDING.vue":3690,"./pages/$1github/ISSUE_TEMPLATE/отчет-об-ошибке--bug-report-":2e3,"./pages/$1github/ISSUE_TEMPLATE/отчет-об-ошибке--bug-report-.vue":2e3,"./pages/$1github/workflows/codeql-analysis":1749,"./pages/$1github/workflows/codeql-analysis.vue":1749,"./pages/$1github/workflows/publish-release":6285,"./pages/$1github/workflows/publish-release.vue":6285,"./pages/$1github/workflows/vuepress-deploy":3284,"./pages/$1github/workflows/vuepress-deploy.vue":3284,"./pages/$1gitignore":3955,"./pages/$1gitignore.vue":3955,"./pages/$1npmignore":4957,"./pages/$1npmignore.vue":4957,"./pages/CODE_OF_CONDUCT":1105,"./pages/CODE_OF_CONDUCT.vue":1105,"./pages/LICENSE":2664,"./pages/LICENSE.vue":2664,"./pages/README":2111,"./pages/README.vue":2111,"./pages/docs/examples/assignment":2696,"./pages/docs/examples/assignment.vue":2696,"./pages/docs/examples/assignmentTypes":2035,"./pages/docs/examples/assignmentTypes.vue":2035,"./pages/docs/examples/controlSession":8506,"./pages/docs/examples/controlSession.vue":8506,"./pages/docs/examples/diary":4349,"./pages/docs/examples/diary.vue":4349,"./pages/docs/examples/downloadFile":5834,"./pages/docs/examples/downloadFile.vue":5834,"./pages/docs/examples/fetch":653,"./pages/docs/examples/fetch.vue":653,"./pages/docs/examples/grades":1887,"./pages/docs/examples/grades.vue":1887,"./pages/docs/examples/info":7948,"./pages/docs/examples/info.vue":7948,"./pages/docs/examples/journal":9584,"./pages/docs/examples/journal.vue":9584,"./pages/docs/examples/photo":5661,"./pages/docs/examples/photo.vue":5661,"./pages/docs/examples/reportfile":1721,"./pages/docs/examples/reportfile.vue":1721,"./pages/docs/examples/scheduleDay":2968,"./pages/docs/examples/scheduleDay.vue":2968,"./pages/docs/examples/scheduleweek":9525,"./pages/docs/examples/scheduleweek.vue":9525,"./pages/docs/examples/sessionValid":9346,"./pages/docs/examples/sessionValid.vue":9346,"./pages/docs/guide":9629,"./pages/docs/guide.vue":9629,"./pages/docs/reference":6677,"./pages/docs/reference.vue":6677,"./pages/package":453,"./pages/package.vue":453,"./pages/src":8528,"./pages/src/":8528,"./pages/src/NetSchoolApi":7949,"./pages/src/NetSchoolApi-safe":6189,"./pages/src/NetSchoolApi-safe.vue":6189,"./pages/src/NetSchoolApi.vue":7949,"./pages/src/classes/Assignment":3871,"./pages/src/classes/Assignment.vue":3871,"./pages/src/classes/AssignmentInfo":7355,"./pages/src/classes/AssignmentInfo.vue":7355,"./pages/src/classes/AssignmentType":3067,"./pages/src/classes/AssignmentType.vue":3067,"./pages/src/classes/AssignmentTypes":2646,"./pages/src/classes/AssignmentTypes.vue":2646,"./pages/src/classes/Attachment":1774,"./pages/src/classes/Attachment.vue":1774,"./pages/src/classes/Client":9318,"./pages/src/classes/Client/":9318,"./pages/src/classes/Client/index":9318,"./pages/src/classes/Client/index.vue":9318,"./pages/src/classes/Client/methods/cookie/decode":152,"./pages/src/classes/Client/methods/cookie/decode.vue":152,"./pages/src/classes/Client/methods/cookie/encode":2263,"./pages/src/classes/Client/methods/cookie/encode.vue":2263,"./pages/src/classes/Client/methods/headers/del":9504,"./pages/src/classes/Client/methods/headers/del.vue":9504,"./pages/src/classes/Client/methods/headers/get":247,"./pages/src/classes/Client/methods/headers/get.vue":247,"./pages/src/classes/Client/methods/headers/set":6425,"./pages/src/classes/Client/methods/headers/set.vue":6425,"./pages/src/classes/Client/methods/url/encodeQuery":3559,"./pages/src/classes/Client/methods/url/encodeQuery.vue":3559,"./pages/src/classes/Client/methods/url/isAbsolute":3908,"./pages/src/classes/Client/methods/url/isAbsolute.vue":3908,"./pages/src/classes/Client/methods/url/join":8121,"./pages/src/classes/Client/methods/url/join.vue":8121,"./pages/src/classes/Context":9506,"./pages/src/classes/Context.vue":9506,"./pages/src/classes/Day":9310,"./pages/src/classes/Day.vue":9310,"./pages/src/classes/Diary":3403,"./pages/src/classes/Diary.vue":3403,"./pages/src/classes/Grades":2252,"./pages/src/classes/Grades.vue":2252,"./pages/src/classes/Info":8401,"./pages/src/classes/Info.vue":8401,"./pages/src/classes/Journal":3795,"./pages/src/classes/Journal.vue":3795,"./pages/src/classes/Lesson":9429,"./pages/src/classes/Lesson.vue":9429,"./pages/src/classes/ScheduleDay":2210,"./pages/src/classes/ScheduleDay.vue":2210,"./pages/src/classes/ScheduleDayLine":4474,"./pages/src/classes/ScheduleDayLine.vue":4474,"./pages/src/classes/ScheduleWeek":3455,"./pages/src/classes/ScheduleWeek.vue":3455,"./pages/src/classes/ScheduleWeekLine":6534,"./pages/src/classes/ScheduleWeekLine.vue":6534,"./pages/src/classes/Session":630,"./pages/src/classes/Session.vue":630,"./pages/src/index":8528,"./pages/src/index.vue":8528,"./pages/src/methods/assignment":4009,"./pages/src/methods/assignment.vue":4009,"./pages/src/methods/assignmentTypes":716,"./pages/src/methods/assignmentTypes.vue":716,"./pages/src/methods/context":9948,"./pages/src/methods/context/":9948,"./pages/src/methods/context/index":9948,"./pages/src/methods/context/index.vue":9948,"./pages/src/methods/context/methods/context":9455,"./pages/src/methods/context/methods/context.vue":9455,"./pages/src/methods/context/methods/schoolInfo":8290,"./pages/src/methods/context/methods/schoolInfo.vue":8290,"./pages/src/methods/context/methods/studentGrades":2586,"./pages/src/methods/context/methods/studentGrades.vue":2586,"./pages/src/methods/context/methods/sysInfo":2382,"./pages/src/methods/context/methods/sysInfo.vue":2382,"./pages/src/methods/diary":6115,"./pages/src/methods/diary.vue":6115,"./pages/src/methods/downloadFile":803,"./pages/src/methods/downloadFile.vue":803,"./pages/src/methods/fetch":969,"./pages/src/methods/fetch.vue":969,"./pages/src/methods/grades":7953,"./pages/src/methods/grades.vue":7953,"./pages/src/methods/info":5045,"./pages/src/methods/info.vue":5045,"./pages/src/methods/journal":8046,"./pages/src/methods/journal.vue":8046,"./pages/src/methods/logIn":3538,"./pages/src/methods/logIn/":3538,"./pages/src/methods/logIn/index":3538,"./pages/src/methods/logIn/index.vue":3538,"./pages/src/methods/logIn/methods/authData":4388,"./pages/src/methods/logIn/methods/authData.vue":4388,"./pages/src/methods/logIn/methods/passwordHash":7986,"./pages/src/methods/logIn/methods/passwordHash.vue":7986,"./pages/src/methods/logIn/methods/schoolInfo":2419,"./pages/src/methods/logIn/methods/schoolInfo.vue":2419,"./pages/src/methods/logIn/methods/signIn":5987,"./pages/src/methods/logIn/methods/signIn.vue":5987,"./pages/src/methods/logOut":1695,"./pages/src/methods/logOut/":1695,"./pages/src/methods/logOut/index":1695,"./pages/src/methods/logOut/index.vue":1695,"./pages/src/methods/logOut/signOut":682,"./pages/src/methods/logOut/signOut.vue":682,"./pages/src/methods/photo":7385,"./pages/src/methods/photo.vue":7385,"./pages/src/methods/reportFile":6611,"./pages/src/methods/reportFile.vue":6611,"./pages/src/methods/scheduleDay":7254,"./pages/src/methods/scheduleDay.vue":7254,"./pages/src/methods/scheduleWeek":1513,"./pages/src/methods/scheduleWeek.vue":1513,"./pages/src/methods/sessionValid":2331,"./pages/src/methods/sessionValid.vue":2331,"./pages/src/utils/checks":5662,"./pages/src/utils/checks.vue":5662,"./pages/src/utils/dateNum":2746,"./pages/src/utils/dateNum.vue":2746,"./pages/src/utils/parseHtml":5725,"./pages/src/utils/parseHtml.vue":5725,"./pages/tsconfig":4731,"./pages/tsconfig.vue":4731};function t(s){return Promise.resolve().then((function(){if(!n.o(l,s)){var a=new Error("Cannot find module '"+s+"'");throw a.code="MODULE_NOT_FOUND",a}var t=l[s];return n(t)}))}t.keys=function(){return Object.keys(l)},t.id=1455,s.exports=t},22:function(s,a,n){var l={"./pages/$1github/FUNDING":3690,"./pages/$1github/FUNDING.vue":3690,"./pages/$1github/ISSUE_TEMPLATE/отчет-об-ошибке--bug-report-":2e3,"./pages/$1github/ISSUE_TEMPLATE/отчет-об-ошибке--bug-report-.vue":2e3,"./pages/$1github/workflows/codeql-analysis":1749,"./pages/$1github/workflows/codeql-analysis.vue":1749,"./pages/$1github/workflows/publish-release":6285,"./pages/$1github/workflows/publish-release.vue":6285,"./pages/$1github/workflows/vuepress-deploy":3284,"./pages/$1github/workflows/vuepress-deploy.vue":3284,"./pages/$1gitignore":3955,"./pages/$1gitignore.vue":3955,"./pages/$1npmignore":4957,"./pages/$1npmignore.vue":4957,"./pages/CODE_OF_CONDUCT":1105,"./pages/CODE_OF_CONDUCT.vue":1105,"./pages/LICENSE":2664,"./pages/LICENSE.vue":2664,"./pages/README":2111,"./pages/README.vue":2111,"./pages/docs/examples/assignment":2696,"./pages/docs/examples/assignment.vue":2696,"./pages/docs/examples/assignmentTypes":2035,"./pages/docs/examples/assignmentTypes.vue":2035,"./pages/docs/examples/controlSession":8506,"./pages/docs/examples/controlSession.vue":8506,"./pages/docs/examples/diary":4349,"./pages/docs/examples/diary.vue":4349,"./pages/docs/examples/downloadFile":5834,"./pages/docs/examples/downloadFile.vue":5834,"./pages/docs/examples/fetch":653,"./pages/docs/examples/fetch.vue":653,"./pages/docs/examples/grades":1887,"./pages/docs/examples/grades.vue":1887,"./pages/docs/examples/info":7948,"./pages/docs/examples/info.vue":7948,"./pages/docs/examples/journal":9584,"./pages/docs/examples/journal.vue":9584,"./pages/docs/examples/photo":5661,"./pages/docs/examples/photo.vue":5661,"./pages/docs/examples/reportfile":1721,"./pages/docs/examples/reportfile.vue":1721,"./pages/docs/examples/scheduleDay":2968,"./pages/docs/examples/scheduleDay.vue":2968,"./pages/docs/examples/scheduleweek":9525,"./pages/docs/examples/scheduleweek.vue":9525,"./pages/docs/examples/sessionValid":9346,"./pages/docs/examples/sessionValid.vue":9346,"./pages/docs/guide":9629,"./pages/docs/guide.vue":9629,"./pages/docs/reference":6677,"./pages/docs/reference.vue":6677,"./pages/package":453,"./pages/package.vue":453,"./pages/src":8528,"./pages/src/":8528,"./pages/src/NetSchoolApi":7949,"./pages/src/NetSchoolApi-safe":6189,"./pages/src/NetSchoolApi-safe.vue":6189,"./pages/src/NetSchoolApi.vue":7949,"./pages/src/classes/Assignment":3871,"./pages/src/classes/Assignment.vue":3871,"./pages/src/classes/AssignmentInfo":7355,"./pages/src/classes/AssignmentInfo.vue":7355,"./pages/src/classes/AssignmentType":3067,"./pages/src/classes/AssignmentType.vue":3067,"./pages/src/classes/AssignmentTypes":2646,"./pages/src/classes/AssignmentTypes.vue":2646,"./pages/src/classes/Attachment":1774,"./pages/src/classes/Attachment.vue":1774,"./pages/src/classes/Client":9318,"./pages/src/classes/Client/":9318,"./pages/src/classes/Client/index":9318,"./pages/src/classes/Client/index.vue":9318,"./pages/src/classes/Client/methods/cookie/decode":152,"./pages/src/classes/Client/methods/cookie/decode.vue":152,"./pages/src/classes/Client/methods/cookie/encode":2263,"./pages/src/classes/Client/methods/cookie/encode.vue":2263,"./pages/src/classes/Client/methods/headers/del":9504,"./pages/src/classes/Client/methods/headers/del.vue":9504,"./pages/src/classes/Client/methods/headers/get":247,"./pages/src/classes/Client/methods/headers/get.vue":247,"./pages/src/classes/Client/methods/headers/set":6425,"./pages/src/classes/Client/methods/headers/set.vue":6425,"./pages/src/classes/Client/methods/url/encodeQuery":3559,"./pages/src/classes/Client/methods/url/encodeQuery.vue":3559,"./pages/src/classes/Client/methods/url/isAbsolute":3908,"./pages/src/classes/Client/methods/url/isAbsolute.vue":3908,"./pages/src/classes/Client/methods/url/join":8121,"./pages/src/classes/Client/methods/url/join.vue":8121,"./pages/src/classes/Context":9506,"./pages/src/classes/Context.vue":9506,"./pages/src/classes/Day":9310,"./pages/src/classes/Day.vue":9310,"./pages/src/classes/Diary":3403,"./pages/src/classes/Diary.vue":3403,"./pages/src/classes/Grades":2252,"./pages/src/classes/Grades.vue":2252,"./pages/src/classes/Info":8401,"./pages/src/classes/Info.vue":8401,"./pages/src/classes/Journal":3795,"./pages/src/classes/Journal.vue":3795,"./pages/src/classes/Lesson":9429,"./pages/src/classes/Lesson.vue":9429,"./pages/src/classes/ScheduleDay":2210,"./pages/src/classes/ScheduleDay.vue":2210,"./pages/src/classes/ScheduleDayLine":4474,"./pages/src/classes/ScheduleDayLine.vue":4474,"./pages/src/classes/ScheduleWeek":3455,"./pages/src/classes/ScheduleWeek.vue":3455,"./pages/src/classes/ScheduleWeekLine":6534,"./pages/src/classes/ScheduleWeekLine.vue":6534,"./pages/src/classes/Session":630,"./pages/src/classes/Session.vue":630,"./pages/src/index":8528,"./pages/src/index.vue":8528,"./pages/src/methods/assignment":4009,"./pages/src/methods/assignment.vue":4009,"./pages/src/methods/assignmentTypes":716,"./pages/src/methods/assignmentTypes.vue":716,"./pages/src/methods/context":9948,"./pages/src/methods/context/":9948,"./pages/src/methods/context/index":9948,"./pages/src/methods/context/index.vue":9948,"./pages/src/methods/context/methods/context":9455,"./pages/src/methods/context/methods/context.vue":9455,"./pages/src/methods/context/methods/schoolInfo":8290,"./pages/src/methods/context/methods/schoolInfo.vue":8290,"./pages/src/methods/context/methods/studentGrades":2586,"./pages/src/methods/context/methods/studentGrades.vue":2586,"./pages/src/methods/context/methods/sysInfo":2382,"./pages/src/methods/context/methods/sysInfo.vue":2382,"./pages/src/methods/diary":6115,"./pages/src/methods/diary.vue":6115,"./pages/src/methods/downloadFile":803,"./pages/src/methods/downloadFile.vue":803,"./pages/src/methods/fetch":969,"./pages/src/methods/fetch.vue":969,"./pages/src/methods/grades":7953,"./pages/src/methods/grades.vue":7953,"./pages/src/methods/info":5045,"./pages/src/methods/info.vue":5045,"./pages/src/methods/journal":8046,"./pages/src/methods/journal.vue":8046,"./pages/src/methods/logIn":3538,"./pages/src/methods/logIn/":3538,"./pages/src/methods/logIn/index":3538,"./pages/src/methods/logIn/index.vue":3538,"./pages/src/methods/logIn/methods/authData":4388,"./pages/src/methods/logIn/methods/authData.vue":4388,"./pages/src/methods/logIn/methods/passwordHash":7986,"./pages/src/methods/logIn/methods/passwordHash.vue":7986,"./pages/src/methods/logIn/methods/schoolInfo":2419,"./pages/src/methods/logIn/methods/schoolInfo.vue":2419,"./pages/src/methods/logIn/methods/signIn":5987,"./pages/src/methods/logIn/methods/signIn.vue":5987,"./pages/src/methods/logOut":1695,"./pages/src/methods/logOut/":1695,"./pages/src/methods/logOut/index":1695,"./pages/src/methods/logOut/index.vue":1695,"./pages/src/methods/logOut/signOut":682,"./pages/src/methods/logOut/signOut.vue":682,"./pages/src/methods/photo":7385,"./pages/src/methods/photo.vue":7385,"./pages/src/methods/reportFile":6611,"./pages/src/methods/reportFile.vue":6611,"./pages/src/methods/scheduleDay":7254,"./pages/src/methods/scheduleDay.vue":7254,"./pages/src/methods/scheduleWeek":1513,"./pages/src/methods/scheduleWeek.vue":1513,"./pages/src/methods/sessionValid":2331,"./pages/src/methods/sessionValid.vue":2331,"./pages/src/utils/checks":5662,"./pages/src/utils/checks.vue":5662,"./pages/src/utils/dateNum":2746,"./pages/src/utils/dateNum.vue":2746,"./pages/src/utils/parseHtml":5725,"./pages/src/utils/parseHtml.vue":5725,"./pages/tsconfig":4731,"./pages/tsconfig.vue":4731};function t(s){var a=e(s);return n(a)}function e(s){if(!n.o(l,s)){var a=new Error("Cannot find module '"+s+"'");throw a.code="MODULE_NOT_FOUND",a}return l[s]}t.keys=function(){return Object.keys(l)},t.resolve=e,s.exports=t,t.id=22}},a={};function n(l){var t=a[l];if(void 0!==t)return t.exports;var e=a[l]={exports:{}};return s[l](e,e.exports,n),e.exports}n.m=s,function(){var s=[];n.O=function(a,l,t,e){if(!l){var d=1/0;for(b=0;b=e)&&Object.keys(n.O).every((function(s){return n.O[s](l[i])}))?l.splice(i--,1):(r=!1,e0&&s[b-1][2]>e;b--)s[b]=s[b-1];s[b]=[l,t,e]}}(),function(){n.d=function(s,a){for(var l in a)n.o(a,l)&&!n.o(s,l)&&Object.defineProperty(s,l,{enumerable:!0,get:a[l]})}}(),function(){n.f={},n.e=function(s){return Promise.all(Object.keys(n.f).reduce((function(a,l){return n.f[l](s,a),a}),[]))}}(),function(){n.u=function(s){return"js/"+s+"."+{364:"1b61b8d2",614:"b5f28f4d",801:"0a50fa6b",985:"7c1c1e2e"}[s]+".js"}}(),function(){n.miniCssF=function(s){return"css/"+s+"."+{614:"03fab845",801:"e38130a9",985:"f2e8cb0c"}[s]+".css"}}(),function(){n.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(s){if("object"===typeof window)return window}}()}(),function(){n.o=function(s,a){return Object.prototype.hasOwnProperty.call(s,a)}}(),function(){var s={},a="vdocs:";n.l=function(l,t,e,d){if(s[l])s[l].push(t);else{var r,i;if(void 0!==e)for(var c=document.getElementsByTagName("script"),b=0;b{const t=new Set(e);return t.w=0,t.n=0,t},l=e=>(e.w&h)>0,u=e=>(e.n&h)>0,a=({deps:e})=>{if(e.length)for(let t=0;t{const{deps:t}=e;if(t.length){let n=0;for(let r=0;r{("length"===n||n>=e)&&u.push(t)}))}else switch(void 0!==n&&u.push(l.get(n)),t){case"add":(0,r.kJ)(e)?(0,r.S0)(n)&&u.push(l.get("length")):(u.push(l.get(m)),(0,r._N)(e)&&u.push(l.get(y)));break;case"delete":(0,r.kJ)(e)||(u.push(l.get(m)),(0,r._N)(e)&&u.push(l.get(y)));break;case"set":(0,r._N)(e)&&u.push(l.get(m));break}if(1===u.length)u[0]&&j(u[0]);else{const e=[];for(const t of u)t&&e.push(...t);j(s(e))}}function j(e,t){const n=(0,r.kJ)(e)?e:[...e];for(const r of n)r.computed&&P(r,t);for(const r of n)r.computed||P(r,t)}function P(e,t){(e!==g||e.allowRecurse)&&(e.scheduler?e.scheduler():e.run())}const R=(0,r.fY)("__proto__,__v_isRef,__isVue"),T=new Set(Object.getOwnPropertyNames(Symbol).filter((e=>"arguments"!==e&&"caller"!==e)).map((e=>Symbol[e])).filter(r.yk)),A=$(),F=$(!1,!0),I=$(!0),L=M();function M(){const e={};return["includes","indexOf","lastIndexOf"].forEach((t=>{e[t]=function(...e){const n=je(this);for(let t=0,o=this.length;t{e[t]=function(...e){x();const n=je(this)[t].apply(this,e);return S(),n}})),e}function $(e=!1,t=!1){return function(n,o,i){if("__v_isReactive"===o)return!e;if("__v_isReadonly"===o)return e;if("__v_isShallow"===o)return t;if("__v_raw"===o&&i===(e?t?me:ge:t?ve:he).get(n))return n;const c=(0,r.kJ)(n);if(!e&&c&&(0,r.RI)(L,o))return Reflect.get(L,o,i);const s=Reflect.get(n,o,i);return((0,r.yk)(o)?T.has(o):R(o))?s:(e||O(n,"get",o),t?s:Ie(s)?c&&(0,r.S0)(o)?s:s.value:(0,r.Kn)(s)?e?ke(s):_e(s):s)}}const N=D(),U=D(!0);function D(e=!1){return function(t,n,o,i){let c=t[n];if(Oe(c)&&Ie(c)&&!Ie(o))return!1;if(!e&&(Ce(o)||Oe(o)||(c=je(c),o=je(o)),!(0,r.kJ)(t)&&Ie(c)&&!Ie(o)))return c.value=o,!0;const s=(0,r.kJ)(t)&&(0,r.S0)(n)?Number(n)e,K=e=>Reflect.getPrototypeOf(e);function z(e,t,n=!1,r=!1){e=e["__v_raw"];const o=je(e),i=je(t);n||(t!==i&&O(o,"get",t),O(o,"get",i));const{has:c}=K(o),s=r?G:n?Te:Re;return c.call(o,t)?s(e.get(t)):c.call(o,i)?s(e.get(i)):void(e!==o&&e.get(t))}function X(e,t=!1){const n=this["__v_raw"],r=je(n),o=je(e);return t||(e!==o&&O(r,"has",e),O(r,"has",o)),e===o?n.has(e):n.has(e)||n.has(o)}function Z(e,t=!1){return e=e["__v_raw"],!t&&O(je(e),"iterate",m),Reflect.get(e,"size",e)}function Y(e){e=je(e);const t=je(this),n=K(t),r=n.has.call(t,e);return r||(t.add(e),E(t,"add",e,e)),this}function Q(e,t){t=je(t);const n=je(this),{has:o,get:i}=K(n);let c=o.call(n,e);c||(e=je(e),c=o.call(n,e));const s=i.call(n,e);return n.set(e,t),c?(0,r.aU)(t,s)&&E(n,"set",e,t,s):E(n,"add",e,t),this}function ee(e){const t=je(this),{has:n,get:r}=K(t);let o=n.call(t,e);o||(e=je(e),o=n.call(t,e));const i=r?r.call(t,e):void 0,c=t.delete(e);return o&&E(t,"delete",e,void 0,i),c}function te(){const e=je(this),t=0!==e.size,n=void 0,r=e.clear();return t&&E(e,"clear",void 0,void 0,n),r}function ne(e,t){return function(n,r){const o=this,i=o["__v_raw"],c=je(i),s=t?G:e?Te:Re;return!e&&O(c,"iterate",m),i.forEach(((e,t)=>n.call(r,s(e),s(t),o)))}}function re(e,t,n){return function(...o){const i=this["__v_raw"],c=je(i),s=(0,r._N)(c),l="entries"===e||e===Symbol.iterator&&s,u="keys"===e&&s,a=i[e](...o),f=n?G:t?Te:Re;return!t&&O(c,"iterate",u?y:m),{next(){const{value:e,done:t}=a.next();return t?{value:e,done:t}:{value:l?[f(e[0]),f(e[1])]:f(e),done:t}},[Symbol.iterator](){return this}}}}function oe(e){return function(...t){return"delete"!==e&&this}}function ie(){const e={get(e){return z(this,e)},get size(){return Z(this)},has:X,add:Y,set:Q,delete:ee,clear:te,forEach:ne(!1,!1)},t={get(e){return z(this,e,!1,!0)},get size(){return Z(this)},has:X,add:Y,set:Q,delete:ee,clear:te,forEach:ne(!1,!0)},n={get(e){return z(this,e,!0)},get size(){return Z(this,!0)},has(e){return X.call(this,e,!0)},add:oe("add"),set:oe("set"),delete:oe("delete"),clear:oe("clear"),forEach:ne(!0,!1)},r={get(e){return z(this,e,!0,!0)},get size(){return Z(this,!0)},has(e){return X.call(this,e,!0)},add:oe("add"),set:oe("set"),delete:oe("delete"),clear:oe("clear"),forEach:ne(!0,!0)},o=["keys","values","entries",Symbol.iterator];return o.forEach((o=>{e[o]=re(o,!1,!1),n[o]=re(o,!0,!1),t[o]=re(o,!1,!0),r[o]=re(o,!0,!0)})),[e,n,t,r]}const[ce,se,le,ue]=ie();function ae(e,t){const n=t?e?ue:le:e?se:ce;return(t,o,i)=>"__v_isReactive"===o?!e:"__v_isReadonly"===o?e:"__v_raw"===o?t:Reflect.get((0,r.RI)(n,o)&&o in t?n:t,o,i)}const fe={get:ae(!1,!1)},pe={get:ae(!1,!0)},de={get:ae(!0,!1)};const he=new WeakMap,ve=new WeakMap,ge=new WeakMap,me=new WeakMap;function ye(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function be(e){return e["__v_skip"]||!Object.isExtensible(e)?0:ye((0,r.W7)(e))}function _e(e){return Oe(e)?e:xe(e,!1,q,fe,he)}function we(e){return xe(e,!1,V,pe,ve)}function ke(e){return xe(e,!0,W,de,ge)}function xe(e,t,n,o,i){if(!(0,r.Kn)(e))return e;if(e["__v_raw"]&&(!t||!e["__v_isReactive"]))return e;const c=i.get(e);if(c)return c;const s=be(e);if(0===s)return e;const l=new Proxy(e,2===s?o:n);return i.set(e,l),l}function Se(e){return Oe(e)?Se(e["__v_raw"]):!(!e||!e["__v_isReactive"])}function Oe(e){return!(!e||!e["__v_isReadonly"])}function Ce(e){return!(!e||!e["__v_isShallow"])}function Ee(e){return Se(e)||Oe(e)}function je(e){const t=e&&e["__v_raw"];return t?je(t):e}function Pe(e){return(0,r.Nj)(e,"__v_skip",!0),e}const Re=e=>(0,r.Kn)(e)?_e(e):e,Te=e=>(0,r.Kn)(e)?ke(e):e;function Ae(e){w&&g&&(e=je(e),C(e.dep||(e.dep=s())))}function Fe(e,t){e=je(e),e.dep&&j(e.dep)}function Ie(e){return!(!e||!0!==e.__v_isRef)}function Le(e){return $e(e,!1)}function Me(e){return $e(e,!0)}function $e(e,t){return Ie(e)?e:new Ne(e,t)}class Ne{constructor(e,t){this.__v_isShallow=t,this.dep=void 0,this.__v_isRef=!0,this._rawValue=t?e:je(e),this._value=t?e:Re(e)}get value(){return Ae(this),this._value}set value(e){const t=this.__v_isShallow||Ce(e)||Oe(e);e=t?e:je(e),(0,r.aU)(e,this._rawValue)&&(this._rawValue=e,this._value=t?e:Re(e),Fe(this,e))}}function Ue(e){return Ie(e)?e.value:e}const De={get:(e,t,n)=>Ue(Reflect.get(e,t,n)),set:(e,t,n,r)=>{const o=e[t];return Ie(o)&&!Ie(n)?(o.value=n,!0):Reflect.set(e,t,n,r)}};function Je(e){return Se(e)?e:new Proxy(e,De)}var Be;class He{constructor(e,t,n,r){this._setter=t,this.dep=void 0,this.__v_isRef=!0,this[Be]=!1,this._dirty=!0,this.effect=new b(e,(()=>{this._dirty||(this._dirty=!0,Fe(this))})),this.effect.computed=this,this.effect.active=this._cacheable=!r,this["__v_isReadonly"]=n}get value(){const e=je(this);return Ae(e),!e._dirty&&e._cacheable||(e._dirty=!1,e._value=e.effect.run()),e._value}set value(e){this._setter(e)}}function qe(e,t,n=!1){let o,i;const c=(0,r.mf)(e);c?(o=e,i=r.dG):(o=e.get,i=e.set);const s=new He(o,i,c||!i,n);return s}Be="__v_isReadonly"},6252:function(e,t,n){"use strict";n.d(t,{$d:function(){return c},FN:function(){return mn},Fl:function(){return Fn},HY:function(){return Lt},JJ:function(){return q},Ko:function(){return De},LL:function(){return $e},P$:function(){return te},Q6:function(){return se},RC:function(){return ae},U2:function(){return re},Uk:function(){return on},Us:function(){return Pt},WI:function(){return Je},Wm:function(){return en},Y3:function(){return y},Y8:function(){return Y},YP:function(){return G},_:function(){return Qt},aZ:function(){return le},dG:function(){return fn},f3:function(){return W},h:function(){return In},iD:function(){return Vt},ic:function(){return Oe},j4:function(){return Gt},kq:function(){return sn},nK:function(){return ce},uE:function(){return cn},up:function(){return Le},w5:function(){return L},wg:function(){return Jt},wy:function(){return Ae}});var r=n(2262),o=n(3577);function i(e,t,n,r){let o;try{o=r?e(...r):e()}catch(i){s(i,t,n)}return o}function c(e,t,n,r){if((0,o.mf)(e)){const c=i(e,t,n,r);return c&&(0,o.tI)(c)&&c.catch((e=>{s(e,t,n)})),c}const l=[];for(let o=0;o>>1,o=C(f[r]);op&&f.splice(t,1)}function x(e){(0,o.kJ)(e)?d.push(...e):h&&h.includes(e,e.allowRecurse?v+1:v)||d.push(e),w()}function S(e,t=(u?p+1:0)){for(0;tC(e)-C(t))),v=0;vnull==e.id?1/0:e.id,E=(e,t)=>{const n=C(e)-C(t);if(0===n){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function j(e){a=!1,u=!0,f.sort(E);o.dG;try{for(p=0;p(0,o.HD)(e)?e.trim():e))),t&&(i=n.map(o.He))}let u;let a=r[u=(0,o.hR)(t)]||r[u=(0,o.hR)((0,o._A)(t))];!a&&s&&(a=r[u=(0,o.hR)((0,o.rs)(t))]),a&&c(a,e,6,i);const f=r[u+"Once"];if(f){if(e.emitted){if(e.emitted[u])return}else e.emitted={};e.emitted[u]=!0,c(f,e,6,i)}}function R(e,t,n=!1){const r=t.emitsCache,i=r.get(e);if(void 0!==i)return i;const c=e.emits;let s={},l=!1;if(!(0,o.mf)(e)){const r=e=>{const n=R(e,t,!0);n&&(l=!0,(0,o.l7)(s,n))};!n&&t.mixins.length&&t.mixins.forEach(r),e.extends&&r(e.extends),e.mixins&&e.mixins.forEach(r)}return c||l?((0,o.kJ)(c)?c.forEach((e=>s[e]=null)):(0,o.l7)(s,c),(0,o.Kn)(e)&&r.set(e,s),s):((0,o.Kn)(e)&&r.set(e,null),null)}function T(e,t){return!(!e||!(0,o.F7)(t))&&(t=t.slice(2).replace(/Once$/,""),(0,o.RI)(e,t[0].toLowerCase()+t.slice(1))||(0,o.RI)(e,(0,o.rs)(t))||(0,o.RI)(e,t))}let A=null,F=null;function I(e){const t=A;return A=e,F=e&&e.type.__scopeId||null,t}function L(e,t=A,n){if(!t)return e;if(e._n)return e;const r=(...n)=>{r._d&&qt(-1);const o=I(t);let i;try{i=e(...n)}finally{I(o),r._d&&qt(1)}return i};return r._n=!0,r._c=!0,r._d=!0,r}function M(e){const{type:t,vnode:n,proxy:r,withProxy:i,props:c,propsOptions:[l],slots:u,attrs:a,emit:f,render:p,renderCache:d,data:h,setupState:v,ctx:g,inheritAttrs:m}=e;let y,b;const _=I(e);try{if(4&n.shapeFlag){const e=i||r;y=ln(p.call(e,e,d,c,v,h,g)),b=a}else{const e=t;0,y=ln(e.length>1?e(c,{attrs:a,slots:u,emit:f}):e(c,null)),b=t.props?a:$(a)}}catch(k){Ut.length=0,s(k,e,1),y=en($t)}let w=y;if(b&&!1!==m){const e=Object.keys(b),{shapeFlag:t}=w;e.length&&7&t&&(l&&e.some(o.tR)&&(b=N(b,l)),w=rn(w,b))}return n.dirs&&(w=rn(w),w.dirs=w.dirs?w.dirs.concat(n.dirs):n.dirs),n.transition&&(w.transition=n.transition),y=w,I(_),y}const $=e=>{let t;for(const n in e)("class"===n||"style"===n||(0,o.F7)(n))&&((t||(t={}))[n]=e[n]);return t},N=(e,t)=>{const n={};for(const r in e)(0,o.tR)(r)&&r.slice(9)in t||(n[r]=e[r]);return n};function U(e,t,n){const{props:r,children:o,component:i}=e,{props:c,children:s,patchFlag:l}=t,u=i.emitsOptions;if(t.dirs||t.transition)return!0;if(!(n&&l>=0))return!(!o&&!s||s&&s.$stable)||r!==c&&(r?!c||D(r,c,u):!!c);if(1024&l)return!0;if(16&l)return r?D(r,c,u):!!c;if(8&l){const e=t.dynamicProps;for(let t=0;te.__isSuspense;function H(e,t){t&&t.pendingBranch?(0,o.kJ)(e)?t.effects.push(...e):t.effects.push(e):x(e)}function q(e,t){if(gn){let n=gn.provides;const r=gn.parent&&gn.parent.provides;r===n&&(n=gn.provides=Object.create(r)),n[e]=t}else 0}function W(e,t,n=!1){const r=gn||A;if(r){const i=null==r.parent?r.vnode.appContext&&r.vnode.appContext.provides:r.parent.provides;if(i&&e in i)return i[e];if(arguments.length>1)return n&&(0,o.mf)(t)?t.call(r.proxy):t}else 0}const V={};function G(e,t,n){return K(e,t,n)}function K(e,t,{immediate:n,deep:s,flush:l,onTrack:u,onTrigger:a}=o.kT){const f=gn;let p,d,h=!1,v=!1;if((0,r.dq)(e)?(p=()=>e.value,h=(0,r.yT)(e)):(0,r.PG)(e)?(p=()=>e,s=!0):(0,o.kJ)(e)?(v=!0,h=e.some((e=>(0,r.PG)(e)||(0,r.yT)(e))),p=()=>e.map((e=>(0,r.dq)(e)?e.value:(0,r.PG)(e)?Z(e):(0,o.mf)(e)?i(e,f,2):void 0))):p=(0,o.mf)(e)?t?()=>i(e,f,2):()=>{if(!f||!f.isUnmounted)return d&&d(),c(e,f,3,[m])}:o.dG,t&&s){const e=p;p=()=>Z(e())}let g,m=e=>{d=k.onStop=()=>{i(e,f,4)}};if(xn){if(m=o.dG,t?n&&c(t,f,3,[p(),v?[]:void 0,m]):p(),"sync"!==l)return o.dG;{const e=Mn();g=e.__watcherHandles||(e.__watcherHandles=[])}}let y=v?new Array(e.length).fill(V):V;const b=()=>{if(k.active)if(t){const e=k.run();(s||h||(v?e.some(((e,t)=>(0,o.aU)(e,y[t]))):(0,o.aU)(e,y)))&&(d&&d(),c(t,f,3,[e,y===V?void 0:v&&y[0]===V?[]:y,m]),y=e)}else k.run()};let w;b.allowRecurse=!!t,"sync"===l?w=b:"post"===l?w=()=>jt(b,f&&f.suspense):(b.pre=!0,f&&(b.id=f.uid),w=()=>_(b));const k=new r.qq(p,w);t?n?b():y=k.run():"post"===l?jt(k.run.bind(k),f&&f.suspense):k.run();const x=()=>{k.stop(),f&&f.scope&&(0,o.Od)(f.scope.effects,k)};return g&&g.push(x),x}function z(e,t,n){const r=this.proxy,i=(0,o.HD)(e)?e.includes(".")?X(r,e):()=>r[e]:e.bind(r,r);let c;(0,o.mf)(t)?c=t:(c=t.handler,n=t);const s=gn;yn(this);const l=K(i,c.bind(r),n);return s?yn(s):bn(),l}function X(e,t){const n=t.split(".");return()=>{let t=e;for(let e=0;e{Z(e,t)}));else if((0,o.PO)(e))for(const n in e)Z(e[n],t);return e}function Y(){const e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return xe((()=>{e.isMounted=!0})),Ce((()=>{e.isUnmounting=!0})),e}const Q=[Function,Array],ee={name:"BaseTransition",props:{mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Q,onEnter:Q,onAfterEnter:Q,onEnterCancelled:Q,onBeforeLeave:Q,onLeave:Q,onAfterLeave:Q,onLeaveCancelled:Q,onBeforeAppear:Q,onAppear:Q,onAfterAppear:Q,onAppearCancelled:Q},setup(e,{slots:t}){const n=mn(),o=Y();let i;return()=>{const c=t.default&&se(t.default(),!0);if(!c||!c.length)return;let s=c[0];if(c.length>1){let e=!1;for(const t of c)if(t.type!==$t){0,s=t,e=!0;break}}const l=(0,r.IU)(e),{mode:u}=l;if(o.isLeaving)return oe(s);const a=ie(s);if(!a)return oe(s);const f=re(a,l,o,n);ce(a,f);const p=n.subTree,d=p&&ie(p);let h=!1;const{getTransitionKey:v}=a.type;if(v){const e=v();void 0===i?i=e:e!==i&&(i=e,h=!0)}if(d&&d.type!==$t&&(!zt(a,d)||h)){const e=re(d,l,o,n);if(ce(d,e),"out-in"===u)return o.isLeaving=!0,e.afterLeave=()=>{o.isLeaving=!1,!1!==n.update.active&&n.update()},oe(s);"in-out"===u&&a.type!==$t&&(e.delayLeave=(e,t,n)=>{const r=ne(o,d);r[String(d.key)]=d,e._leaveCb=()=>{t(),e._leaveCb=void 0,delete f.delayedLeave},f.delayedLeave=n})}return s}}},te=ee;function ne(e,t){const{leavingVNodes:n}=e;let r=n.get(t.type);return r||(r=Object.create(null),n.set(t.type,r)),r}function re(e,t,n,r){const{appear:i,mode:s,persisted:l=!1,onBeforeEnter:u,onEnter:a,onAfterEnter:f,onEnterCancelled:p,onBeforeLeave:d,onLeave:h,onAfterLeave:v,onLeaveCancelled:g,onBeforeAppear:m,onAppear:y,onAfterAppear:b,onAppearCancelled:_}=t,w=String(e.key),k=ne(n,e),x=(e,t)=>{e&&c(e,r,9,t)},S=(e,t)=>{const n=t[1];x(e,t),(0,o.kJ)(e)?e.every((e=>e.length<=1))&&n():e.length<=1&&n()},O={mode:s,persisted:l,beforeEnter(t){let r=u;if(!n.isMounted){if(!i)return;r=m||u}t._leaveCb&&t._leaveCb(!0);const o=k[w];o&&zt(e,o)&&o.el._leaveCb&&o.el._leaveCb(),x(r,[t])},enter(e){let t=a,r=f,o=p;if(!n.isMounted){if(!i)return;t=y||a,r=b||f,o=_||p}let c=!1;const s=e._enterCb=t=>{c||(c=!0,x(t?o:r,[e]),O.delayedLeave&&O.delayedLeave(),e._enterCb=void 0)};t?S(t,[e,s]):s()},leave(t,r){const o=String(e.key);if(t._enterCb&&t._enterCb(!0),n.isUnmounting)return r();x(d,[t]);let i=!1;const c=t._leaveCb=n=>{i||(i=!0,r(),x(n?g:v,[t]),t._leaveCb=void 0,k[o]===e&&delete k[o])};k[o]=e,h?S(h,[t,c]):c()},clone(e){return re(e,t,n,r)}};return O}function oe(e){if(pe(e))return e=rn(e),e.children=null,e}function ie(e){return pe(e)?e.children?e.children[0]:void 0:e}function ce(e,t){6&e.shapeFlag&&e.component?ce(e.component.subTree,t):128&e.shapeFlag?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function se(e,t=!1,n){let r=[],o=0;for(let i=0;i1)for(let i=0;i!!e.type.__asyncLoader;function ae(e){(0,o.mf)(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:i,delay:c=200,timeout:l,suspensible:u=!0,onError:a}=e;let f,p=null,d=0;const h=()=>(d++,p=null,v()),v=()=>{let e;return p||(e=p=t().catch((e=>{if(e=e instanceof Error?e:new Error(String(e)),a)return new Promise(((t,n)=>{const r=()=>t(h()),o=()=>n(e);a(e,r,o,d+1)}));throw e})).then((t=>e!==p&&p?p:(t&&(t.__esModule||"Module"===t[Symbol.toStringTag])&&(t=t.default),f=t,t))))};return le({name:"AsyncComponentWrapper",__asyncLoader:v,get __asyncResolved(){return f},setup(){const e=gn;if(f)return()=>fe(f,e);const t=t=>{p=null,s(t,e,13,!i)};if(u&&e.suspense||xn)return v().then((t=>()=>fe(t,e))).catch((e=>(t(e),()=>i?en(i,{error:e}):null)));const o=(0,r.iH)(!1),a=(0,r.iH)(),d=(0,r.iH)(!!c);return c&&setTimeout((()=>{d.value=!1}),c),null!=l&&setTimeout((()=>{if(!o.value&&!a.value){const e=new Error(`Async component timed out after ${l}ms.`);t(e),a.value=e}}),l),v().then((()=>{o.value=!0,e.parent&&pe(e.parent.vnode)&&_(e.parent.update)})).catch((e=>{t(e),a.value=e})),()=>o.value&&f?fe(f,e):a.value&&i?en(i,{error:a.value}):n&&!d.value?en(n):void 0}})}function fe(e,t){const{ref:n,props:r,children:o,ce:i}=t.vnode,c=en(e,r,o);return c.ref=n,c.ce=i,delete t.vnode.ce,c}const pe=e=>e.type.__isKeepAlive;RegExp,RegExp;function de(e,t){return(0,o.kJ)(e)?e.some((e=>de(e,t))):(0,o.HD)(e)?e.split(",").includes(t):!!e.test&&e.test(t)}function he(e,t){ge(e,"a",t)}function ve(e,t){ge(e,"da",t)}function ge(e,t,n=gn){const r=e.__wdc||(e.__wdc=()=>{let t=n;while(t){if(t.isDeactivated)return;t=t.parent}return e()});if(_e(t,r,n),n){let e=n.parent;while(e&&e.parent)pe(e.parent.vnode)&&me(r,t,n,e),e=e.parent}}function me(e,t,n,r){const i=_e(t,e,r,!0);Ee((()=>{(0,o.Od)(r[t],i)}),n)}function ye(e){e.shapeFlag&=-257,e.shapeFlag&=-513}function be(e){return 128&e.shapeFlag?e.ssContent:e}function _e(e,t,n=gn,o=!1){if(n){const i=n[e]||(n[e]=[]),s=t.__weh||(t.__weh=(...o)=>{if(n.isUnmounted)return;(0,r.Jd)(),yn(n);const i=c(t,n,e,o);return bn(),(0,r.lk)(),i});return o?i.unshift(s):i.push(s),s}}const we=e=>(t,n=gn)=>(!xn||"sp"===e)&&_e(e,((...e)=>t(...e)),n),ke=we("bm"),xe=we("m"),Se=we("bu"),Oe=we("u"),Ce=we("bum"),Ee=we("um"),je=we("sp"),Pe=we("rtg"),Re=we("rtc");function Te(e,t=gn){_e("ec",e,t)}function Ae(e,t){const n=A;if(null===n)return e;const r=Rn(n)||n.proxy,i=e.dirs||(e.dirs=[]);for(let c=0;ct(e,n,void 0,c&&c[n])));else{const n=Object.keys(e);i=new Array(n.length);for(let r=0,o=n.length;r!Kt(e)||e.type!==$t&&!(e.type===Lt&&!Be(e.children))))?e:null}const He=e=>e?_n(e)?Rn(e)||e.proxy:He(e.parent):null,qe=(0,o.l7)(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>He(e.parent),$root:e=>He(e.root),$emit:e=>e.emit,$options:e=>Ye(e),$forceUpdate:e=>e.f||(e.f=()=>_(e.update)),$nextTick:e=>e.n||(e.n=y.bind(e.proxy)),$watch:e=>z.bind(e)}),We=(e,t)=>e!==o.kT&&!e.__isScriptSetup&&(0,o.RI)(e,t),Ve={get({_:e},t){const{ctx:n,setupState:i,data:c,props:s,accessCache:l,type:u,appContext:a}=e;let f;if("$"!==t[0]){const r=l[t];if(void 0!==r)switch(r){case 1:return i[t];case 2:return c[t];case 4:return n[t];case 3:return s[t]}else{if(We(i,t))return l[t]=1,i[t];if(c!==o.kT&&(0,o.RI)(c,t))return l[t]=2,c[t];if((f=e.propsOptions[0])&&(0,o.RI)(f,t))return l[t]=3,s[t];if(n!==o.kT&&(0,o.RI)(n,t))return l[t]=4,n[t];Ge&&(l[t]=0)}}const p=qe[t];let d,h;return p?("$attrs"===t&&(0,r.j)(e,"get",t),p(e)):(d=u.__cssModules)&&(d=d[t])?d:n!==o.kT&&(0,o.RI)(n,t)?(l[t]=4,n[t]):(h=a.config.globalProperties,(0,o.RI)(h,t)?h[t]:void 0)},set({_:e},t,n){const{data:r,setupState:i,ctx:c}=e;return We(i,t)?(i[t]=n,!0):r!==o.kT&&(0,o.RI)(r,t)?(r[t]=n,!0):!(0,o.RI)(e.props,t)&&(("$"!==t[0]||!(t.slice(1)in e))&&(c[t]=n,!0))},has({_:{data:e,setupState:t,accessCache:n,ctx:r,appContext:i,propsOptions:c}},s){let l;return!!n[s]||e!==o.kT&&(0,o.RI)(e,s)||We(t,s)||(l=c[0])&&(0,o.RI)(l,s)||(0,o.RI)(r,s)||(0,o.RI)(qe,s)||(0,o.RI)(i.config.globalProperties,s)},defineProperty(e,t,n){return null!=n.get?e._.accessCache[t]=0:(0,o.RI)(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};let Ge=!0;function Ke(e){const t=Ye(e),n=e.proxy,i=e.ctx;Ge=!1,t.beforeCreate&&Xe(t.beforeCreate,e,"bc");const{data:c,computed:s,methods:l,watch:u,provide:a,inject:f,created:p,beforeMount:d,mounted:h,beforeUpdate:v,updated:g,activated:m,deactivated:y,beforeDestroy:b,beforeUnmount:_,destroyed:w,unmounted:k,render:x,renderTracked:S,renderTriggered:O,errorCaptured:C,serverPrefetch:E,expose:j,inheritAttrs:P,components:R,directives:T,filters:A}=t,F=null;if(f&&ze(f,i,F,e.appContext.config.unwrapInjectedRef),l)for(const r in l){const e=l[r];(0,o.mf)(e)&&(i[r]=e.bind(n))}if(c){0;const t=c.call(n,n);0,(0,o.Kn)(t)&&(e.data=(0,r.qj)(t))}if(Ge=!0,s)for(const r in s){const e=s[r],t=(0,o.mf)(e)?e.bind(n,n):(0,o.mf)(e.get)?e.get.bind(n,n):o.dG;0;const c=!(0,o.mf)(e)&&(0,o.mf)(e.set)?e.set.bind(n):o.dG,l=Fn({get:t,set:c});Object.defineProperty(i,r,{enumerable:!0,configurable:!0,get:()=>l.value,set:e=>l.value=e})}if(u)for(const r in u)Ze(u[r],i,n,r);if(a){const e=(0,o.mf)(a)?a.call(n):a;Reflect.ownKeys(e).forEach((t=>{q(t,e[t])}))}function I(e,t){(0,o.kJ)(t)?t.forEach((t=>e(t.bind(n)))):t&&e(t.bind(n))}if(p&&Xe(p,e,"c"),I(ke,d),I(xe,h),I(Se,v),I(Oe,g),I(he,m),I(ve,y),I(Te,C),I(Re,S),I(Pe,O),I(Ce,_),I(Ee,k),I(je,E),(0,o.kJ)(j))if(j.length){const t=e.exposed||(e.exposed={});j.forEach((e=>{Object.defineProperty(t,e,{get:()=>n[e],set:t=>n[e]=t})}))}else e.exposed||(e.exposed={});x&&e.render===o.dG&&(e.render=x),null!=P&&(e.inheritAttrs=P),R&&(e.components=R),T&&(e.directives=T)}function ze(e,t,n=o.dG,i=!1){(0,o.kJ)(e)&&(e=rt(e));for(const c in e){const n=e[c];let s;s=(0,o.Kn)(n)?"default"in n?W(n.from||c,n.default,!0):W(n.from||c):W(n),(0,r.dq)(s)&&i?Object.defineProperty(t,c,{enumerable:!0,configurable:!0,get:()=>s.value,set:e=>s.value=e}):t[c]=s}}function Xe(e,t,n){c((0,o.kJ)(e)?e.map((e=>e.bind(t.proxy))):e.bind(t.proxy),t,n)}function Ze(e,t,n,r){const i=r.includes(".")?X(n,r):()=>n[r];if((0,o.HD)(e)){const n=t[e];(0,o.mf)(n)&&G(i,n)}else if((0,o.mf)(e))G(i,e.bind(n));else if((0,o.Kn)(e))if((0,o.kJ)(e))e.forEach((e=>Ze(e,t,n,r)));else{const r=(0,o.mf)(e.handler)?e.handler.bind(n):t[e.handler];(0,o.mf)(r)&&G(i,r,e)}else 0}function Ye(e){const t=e.type,{mixins:n,extends:r}=t,{mixins:i,optionsCache:c,config:{optionMergeStrategies:s}}=e.appContext,l=c.get(t);let u;return l?u=l:i.length||n||r?(u={},i.length&&i.forEach((e=>Qe(u,e,s,!0))),Qe(u,t,s)):u=t,(0,o.Kn)(t)&&c.set(t,u),u}function Qe(e,t,n,r=!1){const{mixins:o,extends:i}=t;i&&Qe(e,i,n,!0),o&&o.forEach((t=>Qe(e,t,n,!0)));for(const c in t)if(r&&"expose"===c);else{const r=et[c]||n&&n[c];e[c]=r?r(e[c],t[c]):t[c]}return e}const et={data:tt,props:it,emits:it,methods:it,computed:it,beforeCreate:ot,created:ot,beforeMount:ot,mounted:ot,beforeUpdate:ot,updated:ot,beforeDestroy:ot,beforeUnmount:ot,destroyed:ot,unmounted:ot,activated:ot,deactivated:ot,errorCaptured:ot,serverPrefetch:ot,components:it,directives:it,watch:ct,provide:tt,inject:nt};function tt(e,t){return t?e?function(){return(0,o.l7)((0,o.mf)(e)?e.call(this,this):e,(0,o.mf)(t)?t.call(this,this):t)}:t:e}function nt(e,t){return it(rt(e),rt(t))}function rt(e){if((0,o.kJ)(e)){const t={};for(let n=0;n0)||16&l){let r;ut(e,t,c,s)&&(f=!0);for(const i in u)t&&((0,o.RI)(t,i)||(r=(0,o.rs)(i))!==i&&(0,o.RI)(t,r))||(a?!n||void 0===n[i]&&void 0===n[r]||(c[i]=at(a,u,i,void 0,e,!0)):delete c[i]);if(s!==u)for(const e in s)t&&(0,o.RI)(t,e)||(delete s[e],f=!0)}else if(8&l){const n=e.vnode.dynamicProps;for(let r=0;r{u=!0;const[n,r]=ft(e,t,!0);(0,o.l7)(s,n),r&&l.push(...r)};!n&&t.mixins.length&&t.mixins.forEach(r),e.extends&&r(e.extends),e.mixins&&e.mixins.forEach(r)}if(!c&&!u)return(0,o.Kn)(e)&&r.set(e,o.Z6),o.Z6;if((0,o.kJ)(c))for(let f=0;f-1,r[1]=n<0||e-1||(0,o.RI)(r,"default"))&&l.push(t)}}}}const a=[s,l];return(0,o.Kn)(e)&&r.set(e,a),a}function pt(e){return"$"!==e[0]}function dt(e){const t=e&&e.toString().match(/^\s*function (\w+)/);return t?t[1]:null===e?"null":""}function ht(e,t){return dt(e)===dt(t)}function vt(e,t){return(0,o.kJ)(t)?t.findIndex((t=>ht(t,e))):(0,o.mf)(t)&&ht(t,e)?0:-1}const gt=e=>"_"===e[0]||"$stable"===e,mt=e=>(0,o.kJ)(e)?e.map(ln):[ln(e)],yt=(e,t,n)=>{if(t._n)return t;const r=L(((...e)=>mt(t(...e))),n);return r._c=!1,r},bt=(e,t,n)=>{const r=e._ctx;for(const i in e){if(gt(i))continue;const n=e[i];if((0,o.mf)(n))t[i]=yt(i,n,r);else if(null!=n){0;const e=mt(n);t[i]=()=>e}}},_t=(e,t)=>{const n=mt(t);e.slots.default=()=>n},wt=(e,t)=>{if(32&e.vnode.shapeFlag){const n=t._;n?(e.slots=(0,r.IU)(t),(0,o.Nj)(t,"_",n)):bt(t,e.slots={})}else e.slots={},t&&_t(e,t);(0,o.Nj)(e.slots,Xt,1)},kt=(e,t,n)=>{const{vnode:r,slots:i}=e;let c=!0,s=o.kT;if(32&r.shapeFlag){const e=t._;e?n&&1===e?c=!1:((0,o.l7)(i,t),n||1!==e||delete i._):(c=!t.$stable,bt(t,i)),s=t}else t&&(_t(e,t),s={default:1});if(c)for(const o in i)gt(o)||o in s||delete i[o]};function xt(){return{app:null,config:{isNativeTag:o.NO,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let St=0;function Ot(e,t){return function(n,r=null){(0,o.mf)(n)||(n=Object.assign({},n)),null==r||(0,o.Kn)(r)||(r=null);const i=xt(),c=new Set;let s=!1;const l=i.app={_uid:St++,_component:n,_props:r,_container:null,_context:i,_instance:null,version:$n,get config(){return i.config},set config(e){0},use(e,...t){return c.has(e)||(e&&(0,o.mf)(e.install)?(c.add(e),e.install(l,...t)):(0,o.mf)(e)&&(c.add(e),e(l,...t))),l},mixin(e){return i.mixins.includes(e)||i.mixins.push(e),l},component(e,t){return t?(i.components[e]=t,l):i.components[e]},directive(e,t){return t?(i.directives[e]=t,l):i.directives[e]},mount(o,c,u){if(!s){0;const a=en(n,r);return a.appContext=i,c&&t?t(a,o):e(a,o,u),s=!0,l._container=o,o.__vue_app__=l,Rn(a.component)||a.component.proxy}},unmount(){s&&(e(null,l._container),delete l._container.__vue_app__)},provide(e,t){return i.provides[e]=t,l}};return l}}function Ct(e,t,n,c,s=!1){if((0,o.kJ)(e))return void e.forEach(((e,r)=>Ct(e,t&&((0,o.kJ)(t)?t[r]:t),n,c,s)));if(ue(c)&&!s)return;const l=4&c.shapeFlag?Rn(c.component)||c.component.proxy:c.el,u=s?null:l,{i:a,r:f}=e;const p=t&&t.r,d=a.refs===o.kT?a.refs={}:a.refs,h=a.setupState;if(null!=p&&p!==f&&((0,o.HD)(p)?(d[p]=null,(0,o.RI)(h,p)&&(h[p]=null)):(0,r.dq)(p)&&(p.value=null)),(0,o.mf)(f))i(f,a,12,[u,d]);else{const t=(0,o.HD)(f),i=(0,r.dq)(f);if(t||i){const r=()=>{if(e.f){const n=t?(0,o.RI)(h,f)?h[f]:d[f]:f.value;s?(0,o.kJ)(n)&&(0,o.Od)(n,l):(0,o.kJ)(n)?n.includes(l)||n.push(l):t?(d[f]=[l],(0,o.RI)(h,f)&&(h[f]=d[f])):(f.value=[l],e.k&&(d[e.k]=f.value))}else t?(d[f]=u,(0,o.RI)(h,f)&&(h[f]=u)):i&&(f.value=u,e.k&&(d[e.k]=u))};u?(r.id=-1,jt(r,n)):r()}else 0}}function Et(){}const jt=H;function Pt(e){return Rt(e)}function Rt(e,t){Et();const n=(0,o.E9)();n.__VUE__=!0;const{insert:i,remove:c,patchProp:s,createElement:l,createText:u,createComment:a,setText:f,setElementText:p,parentNode:d,nextSibling:h,setScopeId:v=o.dG,insertStaticContent:g}=e,m=(e,t,n,r=null,o=null,i=null,c=!1,s=null,l=!!t.dynamicChildren)=>{if(e===t)return;e&&!zt(e,t)&&(r=Y(e),G(e,o,i,!0),e=null),-2===t.patchFlag&&(l=!1,t.dynamicChildren=null);const{type:u,ref:a,shapeFlag:f}=t;switch(u){case Mt:y(e,t,n,r);break;case $t:b(e,t,n,r);break;case Nt:null==e&&w(t,n,r,c);break;case Lt:I(e,t,n,r,o,i,c,s,l);break;default:1&f?E(e,t,n,r,o,i,c,s,l):6&f?L(e,t,n,r,o,i,c,s,l):(64&f||128&f)&&u.process(e,t,n,r,o,i,c,s,l,ee)}null!=a&&o&&Ct(a,e&&e.ref,i,t||e,!t)},y=(e,t,n,r)=>{if(null==e)i(t.el=u(t.children),n,r);else{const n=t.el=e.el;t.children!==e.children&&f(n,t.children)}},b=(e,t,n,r)=>{null==e?i(t.el=a(t.children||""),n,r):t.el=e.el},w=(e,t,n,r)=>{[e.el,e.anchor]=g(e.children,t,n,r,e.el,e.anchor)},x=({el:e,anchor:t},n,r)=>{let o;while(e&&e!==t)o=h(e),i(e,n,r),e=o;i(t,n,r)},C=({el:e,anchor:t})=>{let n;while(e&&e!==t)n=h(e),c(e),e=n;c(t)},E=(e,t,n,r,o,i,c,s,l)=>{c=c||"svg"===t.type,null==e?j(t,n,r,o,i,c,s,l):T(e,t,o,i,c,s,l)},j=(e,t,n,r,c,u,a,f)=>{let d,h;const{type:v,props:g,shapeFlag:m,transition:y,dirs:b}=e;if(d=e.el=l(e.type,u,g&&g.is,g),8&m?p(d,e.children):16&m&&R(e.children,d,null,r,c,u&&"foreignObject"!==v,a,f),b&&Fe(e,null,r,"created"),g){for(const t in g)"value"===t||(0,o.Gg)(t)||s(d,t,null,g[t],u,e.children,r,c,Z);"value"in g&&s(d,"value",null,g.value),(h=g.onVnodeBeforeMount)&&pn(h,r,e)}P(d,e,e.scopeId,a,r),b&&Fe(e,null,r,"beforeMount");const _=(!c||c&&!c.pendingBranch)&&y&&!y.persisted;_&&y.beforeEnter(d),i(d,t,n),((h=g&&g.onVnodeMounted)||_||b)&&jt((()=>{h&&pn(h,r,e),_&&y.enter(d),b&&Fe(e,null,r,"mounted")}),c)},P=(e,t,n,r,o)=>{if(n&&v(e,n),r)for(let i=0;i{for(let u=l;u{const u=t.el=e.el;let{patchFlag:a,dynamicChildren:f,dirs:d}=t;a|=16&e.patchFlag;const h=e.props||o.kT,v=t.props||o.kT;let g;n&&Tt(n,!1),(g=v.onVnodeBeforeUpdate)&&pn(g,n,t,e),d&&Fe(t,e,n,"beforeUpdate"),n&&Tt(n,!0);const m=i&&"foreignObject"!==t.type;if(f?A(e.dynamicChildren,f,u,n,r,m,c):l||H(e,t,u,null,n,r,m,c,!1),a>0){if(16&a)F(u,t,h,v,n,r,i);else if(2&a&&h.class!==v.class&&s(u,"class",null,v.class,i),4&a&&s(u,"style",h.style,v.style,i),8&a){const o=t.dynamicProps;for(let t=0;t{g&&pn(g,n,t,e),d&&Fe(t,e,n,"updated")}),r)},A=(e,t,n,r,o,i,c)=>{for(let s=0;s{if(n!==r){if(n!==o.kT)for(const u in n)(0,o.Gg)(u)||u in r||s(e,u,n[u],null,l,t.children,i,c,Z);for(const u in r){if((0,o.Gg)(u))continue;const a=r[u],f=n[u];a!==f&&"value"!==u&&s(e,u,f,a,l,t.children,i,c,Z)}"value"in r&&s(e,"value",n.value,r.value)}},I=(e,t,n,r,o,c,s,l,a)=>{const f=t.el=e?e.el:u(""),p=t.anchor=e?e.anchor:u("");let{patchFlag:d,dynamicChildren:h,slotScopeIds:v}=t;v&&(l=l?l.concat(v):v),null==e?(i(f,n,r),i(p,n,r),R(t.children,n,p,o,c,s,l,a)):d>0&&64&d&&h&&e.dynamicChildren?(A(e.dynamicChildren,h,n,o,c,s,l),(null!=t.key||o&&t===o.subTree)&&At(e,t,!0)):H(e,t,n,p,o,c,s,l,a)},L=(e,t,n,r,o,i,c,s,l)=>{t.slotScopeIds=s,null==e?512&t.shapeFlag?o.ctx.activate(t,n,r,c,l):$(t,n,r,o,i,c,l):N(e,t,l)},$=(e,t,n,r,o,i,c)=>{const s=e.component=vn(e,r,o);if(pe(e)&&(s.ctx.renderer=ee),Sn(s),s.asyncDep){if(o&&o.registerDep(s,D),!e.el){const e=s.subTree=en($t);b(null,e,t,n)}}else D(s,e,t,n,o,i,c)},N=(e,t,n)=>{const r=t.component=e.component;if(U(e,t,n)){if(r.asyncDep&&!r.asyncResolved)return void B(r,t,n);r.next=t,k(r.update),r.update()}else t.el=e.el,r.vnode=t},D=(e,t,n,i,c,s,l)=>{const u=()=>{if(e.isMounted){let t,{next:n,bu:r,u:i,parent:u,vnode:a}=e,f=n;0,Tt(e,!1),n?(n.el=a.el,B(e,n,l)):n=a,r&&(0,o.ir)(r),(t=n.props&&n.props.onVnodeBeforeUpdate)&&pn(t,u,n,a),Tt(e,!0);const p=M(e);0;const h=e.subTree;e.subTree=p,m(h,p,d(h.el),Y(h),e,c,s),n.el=p.el,null===f&&J(e,p.el),i&&jt(i,c),(t=n.props&&n.props.onVnodeUpdated)&&jt((()=>pn(t,u,n,a)),c)}else{let r;const{el:l,props:u}=t,{bm:a,m:f,parent:p}=e,d=ue(t);if(Tt(e,!1),a&&(0,o.ir)(a),!d&&(r=u&&u.onVnodeBeforeMount)&&pn(r,p,t),Tt(e,!0),l&&ne){const n=()=>{e.subTree=M(e),ne(l,e.subTree,e,c,null)};d?t.type.__asyncLoader().then((()=>!e.isUnmounted&&n())):n()}else{0;const r=e.subTree=M(e);0,m(null,r,n,i,e,c,s),t.el=r.el}if(f&&jt(f,c),!d&&(r=u&&u.onVnodeMounted)){const e=t;jt((()=>pn(r,p,e)),c)}(256&t.shapeFlag||p&&ue(p.vnode)&&256&p.vnode.shapeFlag)&&e.a&&jt(e.a,c),e.isMounted=!0,t=n=i=null}},a=e.effect=new r.qq(u,(()=>_(f)),e.scope),f=e.update=()=>a.run();f.id=e.uid,Tt(e,!0),f()},B=(e,t,n)=>{t.component=e;const o=e.vnode.props;e.vnode=t,e.next=null,lt(e,t.props,o,n),kt(e,t.children,n),(0,r.Jd)(),S(),(0,r.lk)()},H=(e,t,n,r,o,i,c,s,l=!1)=>{const u=e&&e.children,a=e?e.shapeFlag:0,f=t.children,{patchFlag:d,shapeFlag:h}=t;if(d>0){if(128&d)return void W(u,f,n,r,o,i,c,s,l);if(256&d)return void q(u,f,n,r,o,i,c,s,l)}8&h?(16&a&&Z(u,o,i),f!==u&&p(n,f)):16&a?16&h?W(u,f,n,r,o,i,c,s,l):Z(u,o,i,!0):(8&a&&p(n,""),16&h&&R(f,n,r,o,i,c,s,l))},q=(e,t,n,r,i,c,s,l,u)=>{e=e||o.Z6,t=t||o.Z6;const a=e.length,f=t.length,p=Math.min(a,f);let d;for(d=0;df?Z(e,i,c,!0,!1,p):R(t,n,r,i,c,s,l,u,p)},W=(e,t,n,r,i,c,s,l,u)=>{let a=0;const f=t.length;let p=e.length-1,d=f-1;while(a<=p&&a<=d){const r=e[a],o=t[a]=u?un(t[a]):ln(t[a]);if(!zt(r,o))break;m(r,o,n,null,i,c,s,l,u),a++}while(a<=p&&a<=d){const r=e[p],o=t[d]=u?un(t[d]):ln(t[d]);if(!zt(r,o))break;m(r,o,n,null,i,c,s,l,u),p--,d--}if(a>p){if(a<=d){const e=d+1,o=ed)while(a<=p)G(e[a],i,c,!0),a++;else{const h=a,v=a,g=new Map;for(a=v;a<=d;a++){const e=t[a]=u?un(t[a]):ln(t[a]);null!=e.key&&g.set(e.key,a)}let y,b=0;const _=d-v+1;let w=!1,k=0;const x=new Array(_);for(a=0;a<_;a++)x[a]=0;for(a=h;a<=p;a++){const r=e[a];if(b>=_){G(r,i,c,!0);continue}let o;if(null!=r.key)o=g.get(r.key);else for(y=v;y<=d;y++)if(0===x[y-v]&&zt(r,t[y])){o=y;break}void 0===o?G(r,i,c,!0):(x[o-v]=a+1,o>=k?k=o:w=!0,m(r,t[o],n,null,i,c,s,l,u),b++)}const S=w?Ft(x):o.Z6;for(y=S.length-1,a=_-1;a>=0;a--){const e=v+a,o=t[e],p=e+1{const{el:c,type:s,transition:l,children:u,shapeFlag:a}=e;if(6&a)return void V(e.component.subTree,t,n,r);if(128&a)return void e.suspense.move(t,n,r);if(64&a)return void s.move(e,t,n,ee);if(s===Lt){i(c,t,n);for(let e=0;el.enter(c)),o);else{const{leave:e,delayLeave:r,afterLeave:o}=l,s=()=>i(c,t,n),u=()=>{e(c,(()=>{s(),o&&o()}))};r?r(c,s,u):u()}else i(c,t,n)},G=(e,t,n,r=!1,o=!1)=>{const{type:i,props:c,ref:s,children:l,dynamicChildren:u,shapeFlag:a,patchFlag:f,dirs:p}=e;if(null!=s&&Ct(s,null,n,e,!0),256&a)return void t.ctx.deactivate(e);const d=1&a&&p,h=!ue(e);let v;if(h&&(v=c&&c.onVnodeBeforeUnmount)&&pn(v,t,e),6&a)X(e.component,n,r);else{if(128&a)return void e.suspense.unmount(n,r);d&&Fe(e,null,t,"beforeUnmount"),64&a?e.type.remove(e,t,n,o,ee,r):u&&(i!==Lt||f>0&&64&f)?Z(u,t,n,!1,!0):(i===Lt&&384&f||!o&&16&a)&&Z(l,t,n),r&&K(e)}(h&&(v=c&&c.onVnodeUnmounted)||d)&&jt((()=>{v&&pn(v,t,e),d&&Fe(e,null,t,"unmounted")}),n)},K=e=>{const{type:t,el:n,anchor:r,transition:o}=e;if(t===Lt)return void z(n,r);if(t===Nt)return void C(e);const i=()=>{c(n),o&&!o.persisted&&o.afterLeave&&o.afterLeave()};if(1&e.shapeFlag&&o&&!o.persisted){const{leave:t,delayLeave:r}=o,c=()=>t(n,i);r?r(e.el,i,c):c()}else i()},z=(e,t)=>{let n;while(e!==t)n=h(e),c(e),e=n;c(t)},X=(e,t,n)=>{const{bum:r,scope:i,update:c,subTree:s,um:l}=e;r&&(0,o.ir)(r),i.stop(),c&&(c.active=!1,G(s,e,t,n)),l&&jt(l,t),jt((()=>{e.isUnmounted=!0}),t),t&&t.pendingBranch&&!t.isUnmounted&&e.asyncDep&&!e.asyncResolved&&e.suspenseId===t.pendingId&&(t.deps--,0===t.deps&&t.resolve())},Z=(e,t,n,r=!1,o=!1,i=0)=>{for(let c=i;c6&e.shapeFlag?Y(e.component.subTree):128&e.shapeFlag?e.suspense.next():h(e.anchor||e.el),Q=(e,t,n)=>{null==e?t._vnode&&G(t._vnode,null,null,!0):m(t._vnode||null,e,t,null,null,null,n),S(),O(),t._vnode=e},ee={p:m,um:G,m:V,r:K,mt:$,mc:R,pc:H,pbc:A,n:Y,o:e};let te,ne;return t&&([te,ne]=t(ee)),{render:Q,hydrate:te,createApp:Ot(Q,te)}}function Tt({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function At(e,t,n=!1){const r=e.children,i=t.children;if((0,o.kJ)(r)&&(0,o.kJ)(i))for(let o=0;o>1,e[n[s]]0&&(t[r]=n[i-1]),n[i]=r)}}i=n.length,c=n[i-1];while(i-- >0)n[i]=c,c=t[c];return n}const It=e=>e.__isTeleport;const Lt=Symbol(void 0),Mt=Symbol(void 0),$t=Symbol(void 0),Nt=Symbol(void 0),Ut=[];let Dt=null;function Jt(e=!1){Ut.push(Dt=e?null:[])}function Bt(){Ut.pop(),Dt=Ut[Ut.length-1]||null}let Ht=1;function qt(e){Ht+=e}function Wt(e){return e.dynamicChildren=Ht>0?Dt||o.Z6:null,Bt(),Ht>0&&Dt&&Dt.push(e),e}function Vt(e,t,n,r,o,i){return Wt(Qt(e,t,n,r,o,i,!0))}function Gt(e,t,n,r,o){return Wt(en(e,t,n,r,o,!0))}function Kt(e){return!!e&&!0===e.__v_isVNode}function zt(e,t){return e.type===t.type&&e.key===t.key}const Xt="__vInternal",Zt=({key:e})=>null!=e?e:null,Yt=({ref:e,ref_key:t,ref_for:n})=>null!=e?(0,o.HD)(e)||(0,r.dq)(e)||(0,o.mf)(e)?{i:A,r:e,k:t,f:!!n}:e:null;function Qt(e,t=null,n=null,r=0,i=null,c=(e===Lt?0:1),s=!1,l=!1){const u={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Zt(t),ref:t&&Yt(t),scopeId:F,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:c,patchFlag:r,dynamicProps:i,dynamicChildren:null,appContext:null,ctx:A};return l?(an(u,n),128&c&&e.normalize(u)):n&&(u.shapeFlag|=(0,o.HD)(n)?8:16),Ht>0&&!s&&Dt&&(u.patchFlag>0||6&c)&&32!==u.patchFlag&&Dt.push(u),u}const en=tn;function tn(e,t=null,n=null,i=0,c=null,s=!1){if(e&&e!==Me||(e=$t),Kt(e)){const r=rn(e,t,!0);return n&&an(r,n),Ht>0&&!s&&Dt&&(6&r.shapeFlag?Dt[Dt.indexOf(e)]=r:Dt.push(r)),r.patchFlag|=-2,r}if(An(e)&&(e=e.__vccOpts),t){t=nn(t);let{class:e,style:n}=t;e&&!(0,o.HD)(e)&&(t.class=(0,o.C_)(e)),(0,o.Kn)(n)&&((0,r.X3)(n)&&!(0,o.kJ)(n)&&(n=(0,o.l7)({},n)),t.style=(0,o.j5)(n))}const l=(0,o.HD)(e)?1:B(e)?128:It(e)?64:(0,o.Kn)(e)?4:(0,o.mf)(e)?2:0;return Qt(e,t,n,i,c,l,s,!0)}function nn(e){return e?(0,r.X3)(e)||Xt in e?(0,o.l7)({},e):e:null}function rn(e,t,n=!1){const{props:r,ref:i,patchFlag:c,children:s}=e,l=t?fn(r||{},t):r,u={__v_isVNode:!0,__v_skip:!0,type:e.type,props:l,key:l&&Zt(l),ref:t&&t.ref?n&&i?(0,o.kJ)(i)?i.concat(Yt(t)):[i,Yt(t)]:Yt(t):i,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:s,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==Lt?-1===c?16:16|c:c,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&rn(e.ssContent),ssFallback:e.ssFallback&&rn(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx};return u}function on(e=" ",t=0){return en(Mt,null,e,t)}function cn(e,t){const n=en(Nt,null,e);return n.staticCount=t,n}function sn(e="",t=!1){return t?(Jt(),Gt($t,null,e)):en($t,null,e)}function ln(e){return null==e||"boolean"===typeof e?en($t):(0,o.kJ)(e)?en(Lt,null,e.slice()):"object"===typeof e?un(e):en(Mt,null,String(e))}function un(e){return null===e.el&&-1!==e.patchFlag||e.memo?e:rn(e)}function an(e,t){let n=0;const{shapeFlag:r}=e;if(null==t)t=null;else if((0,o.kJ)(t))n=16;else if("object"===typeof t){if(65&r){const n=t.default;return void(n&&(n._c&&(n._d=!1),an(e,n()),n._c&&(n._d=!0)))}{n=32;const r=t._;r||Xt in t?3===r&&A&&(1===A.slots._?t._=1:(t._=2,e.patchFlag|=1024)):t._ctx=A}}else(0,o.mf)(t)?(t={default:t,_ctx:A},n=32):(t=String(t),64&r?(n=16,t=[on(t)]):n=8);e.children=t,e.shapeFlag|=n}function fn(...e){const t={};for(let n=0;ngn||A,yn=e=>{gn=e,e.scope.on()},bn=()=>{gn&&gn.scope.off(),gn=null};function _n(e){return 4&e.vnode.shapeFlag}let wn,kn,xn=!1;function Sn(e,t=!1){xn=t;const{props:n,children:r}=e.vnode,o=_n(e);st(e,n,o,t),wt(e,r);const i=o?On(e,t):void 0;return xn=!1,i}function On(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=(0,r.Xl)(new Proxy(e.ctx,Ve));const{setup:c}=n;if(c){const n=e.setupContext=c.length>1?Pn(e):null;yn(e),(0,r.Jd)();const l=i(c,e,0,[e.props,n]);if((0,r.lk)(),bn(),(0,o.tI)(l)){if(l.then(bn,bn),t)return l.then((n=>{Cn(e,n,t)})).catch((t=>{s(t,e,0)}));e.asyncDep=l}else Cn(e,l,t)}else En(e,t)}function Cn(e,t,n){(0,o.mf)(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:(0,o.Kn)(t)&&(e.setupState=(0,r.WL)(t)),En(e,n)}function En(e,t,n){const i=e.type;if(!e.render){if(!t&&wn&&!i.render){const t=i.template||Ye(e).template;if(t){0;const{isCustomElement:n,compilerOptions:r}=e.appContext.config,{delimiters:c,compilerOptions:s}=i,l=(0,o.l7)((0,o.l7)({isCustomElement:n,delimiters:c},r),s);i.render=wn(t,l)}}e.render=i.render||o.dG,kn&&kn(e)}yn(e),(0,r.Jd)(),Ke(e),(0,r.lk)(),bn()}function jn(e){return new Proxy(e.attrs,{get(t,n){return(0,r.j)(e,"get","$attrs"),t[n]}})}function Pn(e){const t=t=>{e.exposed=t||{}};let n;return{get attrs(){return n||(n=jn(e))},slots:e.slots,emit:e.emit,expose:t}}function Rn(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy((0,r.WL)((0,r.Xl)(e.exposed)),{get(t,n){return n in t?t[n]:n in qe?qe[n](e):void 0},has(e,t){return t in e||t in qe}}))}function Tn(e,t=!0){return(0,o.mf)(e)?e.displayName||e.name:e.name||t&&e.__name}function An(e){return(0,o.mf)(e)&&"__vccOpts"in e}const Fn=(e,t)=>(0,r.Fl)(e,t,xn);function In(e,t,n){const r=arguments.length;return 2===r?(0,o.Kn)(t)&&!(0,o.kJ)(t)?Kt(t)?en(e,null,[t]):en(e,t):en(e,null,t):(r>3?n=Array.prototype.slice.call(arguments,2):3===r&&Kt(n)&&(n=[n]),en(e,t,n))}const Ln=Symbol(""),Mn=()=>{{const e=W(Ln);return e}};const $n="3.2.45"},9963:function(e,t,n){"use strict";n.d(t,{F8:function(){return X},ri:function(){return te},uT:function(){return I}});var r=n(3577),o=n(6252);n(2262);const i="http://www.w3.org/2000/svg",c="undefined"!==typeof document?document:null,s=c&&c.createElement("template"),l={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{const o=t?c.createElementNS(i,e):c.createElement(e,n?{is:n}:void 0);return"select"===e&&r&&null!=r.multiple&&o.setAttribute("multiple",r.multiple),o},createText:e=>c.createTextNode(e),createComment:e=>c.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>c.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,r,o,i){const c=n?n.previousSibling:t.lastChild;if(o&&(o===i||o.nextSibling)){while(1)if(t.insertBefore(o.cloneNode(!0),n),o===i||!(o=o.nextSibling))break}else{s.innerHTML=r?`${e}`:e;const o=s.content;if(r){const e=o.firstChild;while(e.firstChild)o.appendChild(e.firstChild);o.removeChild(e)}t.insertBefore(o,n)}return[c?c.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}};function u(e,t,n){const r=e._vtc;r&&(t=(t?[t,...r]:[...r]).join(" ")),null==t?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}function a(e,t,n){const o=e.style,i=(0,r.HD)(n);if(n&&!i){for(const e in n)p(o,e,n[e]);if(t&&!(0,r.HD)(t))for(const e in t)null==n[e]&&p(o,e,"")}else{const r=o.display;i?t!==n&&(o.cssText=n):t&&e.removeAttribute("style"),"_vod"in e&&(o.display=r)}}const f=/\s*!important$/;function p(e,t,n){if((0,r.kJ)(n))n.forEach((n=>p(e,t,n)));else if(null==n&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const o=v(e,t);f.test(n)?e.setProperty((0,r.rs)(o),n.replace(f,""),"important"):e[o]=n}}const d=["Webkit","Moz","ms"],h={};function v(e,t){const n=h[t];if(n)return n;let o=(0,r._A)(t);if("filter"!==o&&o in e)return h[t]=o;o=(0,r.kC)(o);for(let r=0;rS||(O.then((()=>S=0)),S=Date.now());function E(e,t){const n=e=>{if(e._vts){if(e._vts<=n.attached)return}else e._vts=Date.now();(0,o.$d)(j(e,n.value),t,5,[e])};return n.value=e,n.attached=C(),n}function j(e,t){if((0,r.kJ)(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map((e=>t=>!t._stopped&&e&&e(t)))}return t}const P=/^on[a-z]/,R=(e,t,n,o,i=!1,c,s,l,f)=>{"class"===t?u(e,o,i):"style"===t?a(e,n,o):(0,r.F7)(t)?(0,r.tR)(t)||w(e,t,n,o,s):("."===t[0]?(t=t.slice(1),1):"^"===t[0]?(t=t.slice(1),0):T(e,t,o,i))?y(e,t,o,c,s,l,f):("true-value"===t?e._trueValue=o:"false-value"===t&&(e._falseValue=o),m(e,t,o,i))};function T(e,t,n,o){return o?"innerHTML"===t||"textContent"===t||!!(t in e&&P.test(t)&&(0,r.mf)(n)):"spellcheck"!==t&&"draggable"!==t&&"translate"!==t&&("form"!==t&&(("list"!==t||"INPUT"!==e.tagName)&&(("type"!==t||"TEXTAREA"!==e.tagName)&&((!P.test(t)||!(0,r.HD)(n))&&t in e))))}"undefined"!==typeof HTMLElement&&HTMLElement;const A="transition",F="animation",I=(e,{slots:t})=>(0,o.h)(o.P$,N(e),t);I.displayName="Transition";const L={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},M=(I.props=(0,r.l7)({},o.P$.props,L),(e,t=[])=>{(0,r.kJ)(e)?e.forEach((e=>e(...t))):e&&e(...t)}),$=e=>!!e&&((0,r.kJ)(e)?e.some((e=>e.length>1)):e.length>1);function N(e){const t={};for(const r in e)r in L||(t[r]=e[r]);if(!1===e.css)return t;const{name:n="v",type:o,duration:i,enterFromClass:c=`${n}-enter-from`,enterActiveClass:s=`${n}-enter-active`,enterToClass:l=`${n}-enter-to`,appearFromClass:u=c,appearActiveClass:a=s,appearToClass:f=l,leaveFromClass:p=`${n}-leave-from`,leaveActiveClass:d=`${n}-leave-active`,leaveToClass:h=`${n}-leave-to`}=e,v=U(i),g=v&&v[0],m=v&&v[1],{onBeforeEnter:y,onEnter:b,onEnterCancelled:_,onLeave:w,onLeaveCancelled:k,onBeforeAppear:x=y,onAppear:S=b,onAppearCancelled:O=_}=t,C=(e,t,n)=>{B(e,t?f:l),B(e,t?a:s),n&&n()},E=(e,t)=>{e._isLeaving=!1,B(e,p),B(e,h),B(e,d),t&&t()},j=e=>(t,n)=>{const r=e?S:b,i=()=>C(t,e,n);M(r,[t,i]),H((()=>{B(t,e?u:c),J(t,e?f:l),$(r)||W(t,o,g,i)}))};return(0,r.l7)(t,{onBeforeEnter(e){M(y,[e]),J(e,c),J(e,s)},onBeforeAppear(e){M(x,[e]),J(e,u),J(e,a)},onEnter:j(!1),onAppear:j(!0),onLeave(e,t){e._isLeaving=!0;const n=()=>E(e,t);J(e,p),z(),J(e,d),H((()=>{e._isLeaving&&(B(e,p),J(e,h),$(w)||W(e,o,m,n))})),M(w,[e,n])},onEnterCancelled(e){C(e,!1),M(_,[e])},onAppearCancelled(e){C(e,!0),M(O,[e])},onLeaveCancelled(e){E(e),M(k,[e])}})}function U(e){if(null==e)return null;if((0,r.Kn)(e))return[D(e.enter),D(e.leave)];{const t=D(e);return[t,t]}}function D(e){const t=(0,r.He)(e);return t}function J(e,t){t.split(/\s+/).forEach((t=>t&&e.classList.add(t))),(e._vtc||(e._vtc=new Set)).add(t)}function B(e,t){t.split(/\s+/).forEach((t=>t&&e.classList.remove(t)));const{_vtc:n}=e;n&&(n.delete(t),n.size||(e._vtc=void 0))}function H(e){requestAnimationFrame((()=>{requestAnimationFrame(e)}))}let q=0;function W(e,t,n,r){const o=e._endId=++q,i=()=>{o===e._endId&&r()};if(n)return setTimeout(i,n);const{type:c,timeout:s,propCount:l}=V(e,t);if(!c)return r();const u=c+"end";let a=0;const f=()=>{e.removeEventListener(u,p),i()},p=t=>{t.target===e&&++a>=l&&f()};setTimeout((()=>{a(n[e]||"").split(", "),o=r(`${A}Delay`),i=r(`${A}Duration`),c=G(o,i),s=r(`${F}Delay`),l=r(`${F}Duration`),u=G(s,l);let a=null,f=0,p=0;t===A?c>0&&(a=A,f=c,p=i.length):t===F?u>0&&(a=F,f=u,p=l.length):(f=Math.max(c,u),a=f>0?c>u?A:F:null,p=a?a===A?i.length:l.length:0);const d=a===A&&/\b(transform|all)(,|$)/.test(r(`${A}Property`).toString());return{type:a,timeout:f,propCount:p,hasTransform:d}}function G(e,t){while(e.lengthK(t)+K(e[n]))))}function K(e){return 1e3*Number(e.slice(0,-1).replace(",","."))}function z(){return document.body.offsetHeight}new WeakMap,new WeakMap;const X={beforeMount(e,{value:t},{transition:n}){e._vod="none"===e.style.display?"":e.style.display,n&&t?n.beforeEnter(e):Z(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:r}){!t!==!n&&(r?t?(r.beforeEnter(e),Z(e,!0),r.enter(e)):r.leave(e,(()=>{Z(e,!1)})):Z(e,t))},beforeUnmount(e,{value:t}){Z(e,t)}};function Z(e,t){e.style.display=t?e._vod:"none"}const Y=(0,r.l7)({patchProp:R},l);let Q;function ee(){return Q||(Q=(0,o.Us)(Y))}const te=(...e)=>{const t=ee().createApp(...e);const{mount:n}=t;return t.mount=e=>{const o=ne(e);if(!o)return;const i=t._component;(0,r.mf)(i)||i.render||i.template||(i.template=o.innerHTML),o.innerHTML="";const c=n(o,!1,o instanceof SVGElement);return o instanceof Element&&(o.removeAttribute("v-cloak"),o.setAttribute("data-v-app","")),c},t};function ne(e){if((0,r.HD)(e)){const t=document.querySelector(e);return t}return e}},3577:function(e,t,n){"use strict";function r(e,t){const n=Object.create(null),r=e.split(",");for(let o=0;o!!n[e.toLowerCase()]:e=>!!n[e]}n.d(t,{C_:function(){return f},DM:function(){return I},E9:function(){return ie},F7:function(){return C},Gg:function(){return V},HD:function(){return $},He:function(){return re},Kn:function(){return U},NO:function(){return S},Nj:function(){return ne},Od:function(){return P},PO:function(){return q},Pq:function(){return h},RI:function(){return T},S0:function(){return W},W7:function(){return H},WV:function(){return m},Z6:function(){return k},_A:function(){return z},_N:function(){return F},aU:function(){return ee},dG:function(){return x},e1:function(){return i},fY:function(){return r},hR:function(){return Q},hq:function(){return y},ir:function(){return te},j5:function(){return c},kC:function(){return Y},kJ:function(){return A},kT:function(){return w},l7:function(){return j},mf:function(){return M},rs:function(){return Z},tI:function(){return D},tR:function(){return E},vs:function(){return p},yA:function(){return v},yk:function(){return N},zw:function(){return b}});const o="Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt",i=r(o);function c(e){if(A(e)){const t={};for(let n=0;n{if(e){const n=e.split(l);n.length>1&&(t[n[0].trim()]=n[1].trim())}})),t}function f(e){let t="";if($(e))t=e;else if(A(e))for(let n=0;nm(e,t)))}const b=e=>$(e)?e:null==e?"":A(e)||U(e)&&(e.toString===J||!M(e.toString))?JSON.stringify(e,_,2):String(e),_=(e,t)=>t&&t.__v_isRef?_(e,t.value):F(t)?{[`Map(${t.size})`]:[...t.entries()].reduce(((e,[t,n])=>(e[`${t} =>`]=n,e)),{})}:I(t)?{[`Set(${t.size})`]:[...t.values()]}:!U(t)||A(t)||q(t)?t:String(t),w={},k=[],x=()=>{},S=()=>!1,O=/^on[^a-z]/,C=e=>O.test(e),E=e=>e.startsWith("onUpdate:"),j=Object.assign,P=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},R=Object.prototype.hasOwnProperty,T=(e,t)=>R.call(e,t),A=Array.isArray,F=e=>"[object Map]"===B(e),I=e=>"[object Set]"===B(e),L=e=>"[object Date]"===B(e),M=e=>"function"===typeof e,$=e=>"string"===typeof e,N=e=>"symbol"===typeof e,U=e=>null!==e&&"object"===typeof e,D=e=>U(e)&&M(e.then)&&M(e.catch),J=Object.prototype.toString,B=e=>J.call(e),H=e=>B(e).slice(8,-1),q=e=>"[object Object]"===B(e),W=e=>$(e)&&"NaN"!==e&&"-"!==e[0]&&""+parseInt(e,10)===e,V=r(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),G=e=>{const t=Object.create(null);return n=>{const r=t[n];return r||(t[n]=e(n))}},K=/-(\w)/g,z=G((e=>e.replace(K,((e,t)=>t?t.toUpperCase():"")))),X=/\B([A-Z])/g,Z=G((e=>e.replace(X,"-$1").toLowerCase())),Y=G((e=>e.charAt(0).toUpperCase()+e.slice(1))),Q=G((e=>e?`on${Y(e)}`:"")),ee=(e,t)=>!Object.is(e,t),te=(e,t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})},re=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let oe;const ie=()=>oe||(oe="undefined"!==typeof globalThis?globalThis:"undefined"!==typeof self?self:"undefined"!==typeof window?window:"undefined"!==typeof n.g?n.g:{})},9662:function(e,t,n){var r=n(614),o=n(6330),i=TypeError;e.exports=function(e){if(r(e))return e;throw i(o(e)+" is not a function")}},9670:function(e,t,n){var r=n(111),o=String,i=TypeError;e.exports=function(e){if(r(e))return e;throw i(o(e)+" is not an object")}},1318:function(e,t,n){var r=n(5656),o=n(1400),i=n(6244),c=function(e){return function(t,n,c){var s,l=r(t),u=i(l),a=o(c,u);if(e&&n!=n){while(u>a)if(s=l[a++],s!=s)return!0}else for(;u>a;a++)if((e||a in l)&&l[a]===n)return e||a||0;return!e&&-1}};e.exports={includes:c(!0),indexOf:c(!1)}},3658:function(e,t,n){"use strict";var r=n(9781),o=n(3157),i=TypeError,c=Object.getOwnPropertyDescriptor,s=r&&!function(){if(void 0!==this)return!0;try{Object.defineProperty([],"length",{writable:!1}).length=1}catch(e){return e instanceof TypeError}}();e.exports=s?function(e,t){if(o(e)&&!c(e,"length").writable)throw i("Cannot set read only .length");return e.length=t}:function(e,t){return e.length=t}},4326:function(e,t,n){var r=n(1702),o=r({}.toString),i=r("".slice);e.exports=function(e){return i(o(e),8,-1)}},9920:function(e,t,n){var r=n(2597),o=n(3887),i=n(1236),c=n(3070);e.exports=function(e,t,n){for(var s=o(t),l=c.f,u=i.f,a=0;an)throw t("Maximum allowed index exceeded");return e}},8113:function(e,t,n){var r=n(5005);e.exports=r("navigator","userAgent")||""},7392:function(e,t,n){var r,o,i=n(7854),c=n(8113),s=i.process,l=i.Deno,u=s&&s.versions||l&&l.version,a=u&&u.v8;a&&(r=a.split("."),o=r[0]>0&&r[0]<4?1:+(r[0]+r[1])),!o&&c&&(r=c.match(/Edge\/(\d+)/),(!r||r[1]>=74)&&(r=c.match(/Chrome\/(\d+)/),r&&(o=+r[1]))),e.exports=o},748:function(e){e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},2109:function(e,t,n){var r=n(7854),o=n(1236).f,i=n(8880),c=n(8052),s=n(3072),l=n(9920),u=n(4705);e.exports=function(e,t){var n,a,f,p,d,h,v=e.target,g=e.global,m=e.stat;if(a=g?r:m?r[v]||s(v,{}):(r[v]||{}).prototype,a)for(f in t){if(d=t[f],e.dontCallGetSet?(h=o(a,f),p=h&&h.value):p=a[f],n=u(g?f:v+(m?".":"#")+f,e.forced),!n&&void 0!==p){if(typeof d==typeof p)continue;l(d,p)}(e.sham||p&&p.sham)&&i(d,"sham",!0),c(a,f,d,e)}}},7293:function(e){e.exports=function(e){try{return!!e()}catch(t){return!0}}},4374:function(e,t,n){var r=n(7293);e.exports=!r((function(){var e=function(){}.bind();return"function"!=typeof e||e.hasOwnProperty("prototype")}))},6916:function(e,t,n){var r=n(4374),o=Function.prototype.call;e.exports=r?o.bind(o):function(){return o.apply(o,arguments)}},6530:function(e,t,n){var r=n(9781),o=n(2597),i=Function.prototype,c=r&&Object.getOwnPropertyDescriptor,s=o(i,"name"),l=s&&"something"===function(){}.name,u=s&&(!r||r&&c(i,"name").configurable);e.exports={EXISTS:s,PROPER:l,CONFIGURABLE:u}},1702:function(e,t,n){var r=n(4374),o=Function.prototype,i=o.call,c=r&&o.bind.bind(i,i);e.exports=r?c:function(e){return function(){return i.apply(e,arguments)}}},5005:function(e,t,n){var r=n(7854),o=n(614),i=function(e){return o(e)?e:void 0};e.exports=function(e,t){return arguments.length<2?i(r[e]):r[e]&&r[e][t]}},8173:function(e,t,n){var r=n(9662),o=n(8554);e.exports=function(e,t){var n=e[t];return o(n)?void 0:r(n)}},7854:function(e,t,n){var r=function(e){return e&&e.Math==Math&&e};e.exports=r("object"==typeof globalThis&&globalThis)||r("object"==typeof window&&window)||r("object"==typeof self&&self)||r("object"==typeof n.g&&n.g)||function(){return this}()||Function("return this")()},2597:function(e,t,n){var r=n(1702),o=n(7908),i=r({}.hasOwnProperty);e.exports=Object.hasOwn||function(e,t){return i(o(e),t)}},3501:function(e){e.exports={}},4664:function(e,t,n){var r=n(9781),o=n(7293),i=n(317);e.exports=!r&&!o((function(){return 7!=Object.defineProperty(i("div"),"a",{get:function(){return 7}}).a}))},8361:function(e,t,n){var r=n(1702),o=n(7293),i=n(4326),c=Object,s=r("".split);e.exports=o((function(){return!c("z").propertyIsEnumerable(0)}))?function(e){return"String"==i(e)?s(e,""):c(e)}:c},2788:function(e,t,n){var r=n(1702),o=n(614),i=n(5465),c=r(Function.toString);o(i.inspectSource)||(i.inspectSource=function(e){return c(e)}),e.exports=i.inspectSource},9909:function(e,t,n){var r,o,i,c=n(4811),s=n(7854),l=n(111),u=n(8880),a=n(2597),f=n(5465),p=n(6200),d=n(3501),h="Object already initialized",v=s.TypeError,g=s.WeakMap,m=function(e){return i(e)?o(e):r(e,{})},y=function(e){return function(t){var n;if(!l(t)||(n=o(t)).type!==e)throw v("Incompatible receiver, "+e+" required");return n}};if(c||f.state){var b=f.state||(f.state=new g);b.get=b.get,b.has=b.has,b.set=b.set,r=function(e,t){if(b.has(e))throw v(h);return t.facade=e,b.set(e,t),t},o=function(e){return b.get(e)||{}},i=function(e){return b.has(e)}}else{var _=p("state");d[_]=!0,r=function(e,t){if(a(e,_))throw v(h);return t.facade=e,u(e,_,t),t},o=function(e){return a(e,_)?e[_]:{}},i=function(e){return a(e,_)}}e.exports={set:r,get:o,has:i,enforce:m,getterFor:y}},3157:function(e,t,n){var r=n(4326);e.exports=Array.isArray||function(e){return"Array"==r(e)}},614:function(e,t,n){var r=n(4154),o=r.all;e.exports=r.IS_HTMLDDA?function(e){return"function"==typeof e||e===o}:function(e){return"function"==typeof e}},4705:function(e,t,n){var r=n(7293),o=n(614),i=/#|\.prototype\./,c=function(e,t){var n=l[s(e)];return n==a||n!=u&&(o(t)?r(t):!!t)},s=c.normalize=function(e){return String(e).replace(i,".").toLowerCase()},l=c.data={},u=c.NATIVE="N",a=c.POLYFILL="P";e.exports=c},8554:function(e){e.exports=function(e){return null===e||void 0===e}},111:function(e,t,n){var r=n(614),o=n(4154),i=o.all;e.exports=o.IS_HTMLDDA?function(e){return"object"==typeof e?null!==e:r(e)||e===i}:function(e){return"object"==typeof e?null!==e:r(e)}},1913:function(e){e.exports=!1},2190:function(e,t,n){var r=n(5005),o=n(614),i=n(7976),c=n(3307),s=Object;e.exports=c?function(e){return"symbol"==typeof e}:function(e){var t=r("Symbol");return o(t)&&i(t.prototype,s(e))}},6244:function(e,t,n){var r=n(7466);e.exports=function(e){return r(e.length)}},6339:function(e,t,n){var r=n(7293),o=n(614),i=n(2597),c=n(9781),s=n(6530).CONFIGURABLE,l=n(2788),u=n(9909),a=u.enforce,f=u.get,p=Object.defineProperty,d=c&&!r((function(){return 8!==p((function(){}),"length",{value:8}).length})),h=String(String).split("String"),v=e.exports=function(e,t,n){"Symbol("===String(t).slice(0,7)&&(t="["+String(t).replace(/^Symbol\(([^)]*)\)/,"$1")+"]"),n&&n.getter&&(t="get "+t),n&&n.setter&&(t="set "+t),(!i(e,"name")||s&&e.name!==t)&&(c?p(e,"name",{value:t,configurable:!0}):e.name=t),d&&n&&i(n,"arity")&&e.length!==n.arity&&p(e,"length",{value:n.arity});try{n&&i(n,"constructor")&&n.constructor?c&&p(e,"prototype",{writable:!1}):e.prototype&&(e.prototype=void 0)}catch(o){}var r=a(e);return i(r,"source")||(r.source=h.join("string"==typeof t?t:"")),e};Function.prototype.toString=v((function(){return o(this)&&f(this).source||l(this)}),"toString")},4758:function(e){var t=Math.ceil,n=Math.floor;e.exports=Math.trunc||function(e){var r=+e;return(r>0?n:t)(r)}},3070:function(e,t,n){var r=n(9781),o=n(4664),i=n(3353),c=n(9670),s=n(4948),l=TypeError,u=Object.defineProperty,a=Object.getOwnPropertyDescriptor,f="enumerable",p="configurable",d="writable";t.f=r?i?function(e,t,n){if(c(e),t=s(t),c(n),"function"===typeof e&&"prototype"===t&&"value"in n&&d in n&&!n[d]){var r=a(e,t);r&&r[d]&&(e[t]=n.value,n={configurable:p in n?n[p]:r[p],enumerable:f in n?n[f]:r[f],writable:!1})}return u(e,t,n)}:u:function(e,t,n){if(c(e),t=s(t),c(n),o)try{return u(e,t,n)}catch(r){}if("get"in n||"set"in n)throw l("Accessors not supported");return"value"in n&&(e[t]=n.value),e}},1236:function(e,t,n){var r=n(9781),o=n(6916),i=n(5296),c=n(9114),s=n(5656),l=n(4948),u=n(2597),a=n(4664),f=Object.getOwnPropertyDescriptor;t.f=r?f:function(e,t){if(e=s(e),t=l(t),a)try{return f(e,t)}catch(n){}if(u(e,t))return c(!o(i.f,e,t),e[t])}},8006:function(e,t,n){var r=n(6324),o=n(748),i=o.concat("length","prototype");t.f=Object.getOwnPropertyNames||function(e){return r(e,i)}},5181:function(e,t){t.f=Object.getOwnPropertySymbols},7976:function(e,t,n){var r=n(1702);e.exports=r({}.isPrototypeOf)},6324:function(e,t,n){var r=n(1702),o=n(2597),i=n(5656),c=n(1318).indexOf,s=n(3501),l=r([].push);e.exports=function(e,t){var n,r=i(e),u=0,a=[];for(n in r)!o(s,n)&&o(r,n)&&l(a,n);while(t.length>u)o(r,n=t[u++])&&(~c(a,n)||l(a,n));return a}},5296:function(e,t){"use strict";var n={}.propertyIsEnumerable,r=Object.getOwnPropertyDescriptor,o=r&&!n.call({1:2},1);t.f=o?function(e){var t=r(this,e);return!!t&&t.enumerable}:n},2140:function(e,t,n){var r=n(6916),o=n(614),i=n(111),c=TypeError;e.exports=function(e,t){var n,s;if("string"===t&&o(n=e.toString)&&!i(s=r(n,e)))return s;if(o(n=e.valueOf)&&!i(s=r(n,e)))return s;if("string"!==t&&o(n=e.toString)&&!i(s=r(n,e)))return s;throw c("Can't convert object to primitive value")}},3887:function(e,t,n){var r=n(5005),o=n(1702),i=n(8006),c=n(5181),s=n(9670),l=o([].concat);e.exports=r("Reflect","ownKeys")||function(e){var t=i.f(s(e)),n=c.f;return n?l(t,n(e)):t}},4488:function(e,t,n){var r=n(8554),o=TypeError;e.exports=function(e){if(r(e))throw o("Can't call method on "+e);return e}},6200:function(e,t,n){var r=n(2309),o=n(9711),i=r("keys");e.exports=function(e){return i[e]||(i[e]=o(e))}},5465:function(e,t,n){var r=n(7854),o=n(3072),i="__core-js_shared__",c=r[i]||o(i,{});e.exports=c},2309:function(e,t,n){var r=n(1913),o=n(5465);(e.exports=function(e,t){return o[e]||(o[e]=void 0!==t?t:{})})("versions",[]).push({version:"3.26.1",mode:r?"pure":"global",copyright:"© 2014-2022 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.26.1/LICENSE",source:"https://github.com/zloirock/core-js"})},6293:function(e,t,n){var r=n(7392),o=n(7293);e.exports=!!Object.getOwnPropertySymbols&&!o((function(){var e=Symbol();return!String(e)||!(Object(e)instanceof Symbol)||!Symbol.sham&&r&&r<41}))},1400:function(e,t,n){var r=n(9303),o=Math.max,i=Math.min;e.exports=function(e,t){var n=r(e);return n<0?o(n+t,0):i(n,t)}},5656:function(e,t,n){var r=n(8361),o=n(4488);e.exports=function(e){return r(o(e))}},9303:function(e,t,n){var r=n(4758);e.exports=function(e){var t=+e;return t!==t||0===t?0:r(t)}},7466:function(e,t,n){var r=n(9303),o=Math.min;e.exports=function(e){return e>0?o(r(e),9007199254740991):0}},7908:function(e,t,n){var r=n(4488),o=Object;e.exports=function(e){return o(r(e))}},7593:function(e,t,n){var r=n(6916),o=n(111),i=n(2190),c=n(8173),s=n(2140),l=n(5112),u=TypeError,a=l("toPrimitive");e.exports=function(e,t){if(!o(e)||i(e))return e;var n,l=c(e,a);if(l){if(void 0===t&&(t="default"),n=r(l,e,t),!o(n)||i(n))return n;throw u("Can't convert object to primitive value")}return void 0===t&&(t="number"),s(e,t)}},4948:function(e,t,n){var r=n(7593),o=n(2190);e.exports=function(e){var t=r(e,"string");return o(t)?t:t+""}},6330:function(e){var t=String;e.exports=function(e){try{return t(e)}catch(n){return"Object"}}},9711:function(e,t,n){var r=n(1702),o=0,i=Math.random(),c=r(1..toString);e.exports=function(e){return"Symbol("+(void 0===e?"":e)+")_"+c(++o+i,36)}},3307:function(e,t,n){var r=n(6293);e.exports=r&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},3353:function(e,t,n){var r=n(9781),o=n(7293);e.exports=r&&o((function(){return 42!=Object.defineProperty((function(){}),"prototype",{value:42,writable:!1}).prototype}))},4811:function(e,t,n){var r=n(7854),o=n(614),i=r.WeakMap;e.exports=o(i)&&/native code/.test(String(i))},5112:function(e,t,n){var r=n(7854),o=n(2309),i=n(2597),c=n(9711),s=n(6293),l=n(3307),u=o("wks"),a=r.Symbol,f=a&&a["for"],p=l?a:a&&a.withoutSetter||c;e.exports=function(e){if(!i(u,e)||!s&&"string"!=typeof u[e]){var t="Symbol."+e;s&&i(a,e)?u[e]=a[e]:u[e]=l&&f?f(t):p(t)}return u[e]}},7658:function(e,t,n){"use strict";var r=n(2109),o=n(7908),i=n(6244),c=n(3658),s=n(7207),l=n(7293),u=l((function(){return 4294967297!==[].push.call({length:4294967296},1)})),a=!function(){try{Object.defineProperty([],"length",{writable:!1}).push()}catch(e){return e instanceof TypeError}}();r({target:"Array",proto:!0,arity:1,forced:u||a},{push:function(e){var t=o(this),n=i(t),r=arguments.length;s(n+r);for(var l=0;l0)n[r]=arguments[r+1];t&&t[e]&&t[e].apply(t,n)};"serviceWorker"in navigator&&r.then((function(){o()?(l(e,i,n),navigator.serviceWorker.ready.then((function(e){i("ready",e)})).catch((function(e){return c(i,e)}))):(s(e,i,n),navigator.serviceWorker.ready.then((function(e){i("ready",e)})).catch((function(e){return c(i,e)})))}))}function c(e,t){navigator.onLine||e("offline"),e("error",t)}function s(e,t,n){navigator.serviceWorker.register(e,n).then((function(e){t("registered",e),e.waiting?t("updated",e):e.onupdatefound=function(){t("updatefound",e);var n=e.installing;n.onstatechange=function(){"installed"===n.state&&(navigator.serviceWorker.controller?t("updated",e):t("cached",e))}}})).catch((function(e){return c(t,e)}))}function l(e,t,n){fetch(e).then((function(r){404===r.status?(t("error",new Error("Service worker not found at "+e)),u()):-1===r.headers.get("content-type").indexOf("javascript")?(t("error",new Error("Expected "+e+" to have javascript content-type, but received "+r.headers.get("content-type"))),u()):s(e,t,n)})).catch((function(e){return c(t,e)}))}function u(){"serviceWorker"in navigator&&navigator.serviceWorker.ready.then((function(e){e.unregister()})).catch((function(e){return c(emit,e)}))}"undefined"!==typeof window&&(r="undefined"!==typeof Promise?new Promise((function(e){return window.addEventListener("load",e)})):{then:function(e){return window.addEventListener("load",e)}})},7398:function(e,t,n){"use strict";var r=n(3577),o=n(6252);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function c(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function s(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:{};return new Promise((function(n,r){if("undefined"!==typeof document){var o=document.head||document.getElementsByTagName("head")[0],i=document.createElement("script");if(i.async=!0,i.src=e,i.defer=t.defer,t.preconnectOrigin){var c=document.createElement("link");c.href=t.preconnectOrigin,c.rel="preconnect",o.appendChild(c)}o.appendChild(i),i.onload=n,i.onerror=r}}))},u=function e(t){for(var n=arguments.length,o=new Array(n>1?n-1:0),c=1;c0&&void 0!==arguments[0]?arguments[0]:{};return f('Missing "appName" property inside the plugin options.',null==e.app_name),f('Missing "name" property in the route.',null==e.screen_name),e};function d(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=e.split("/"),r=t.split("/");return""===n[0]&&"/"===t[t.length-1]&&n.shift(),r.join("/")+n.join("/")}var h,v=function(){return{bootstrap:!0,onReady:null,onError:null,onBeforeTrack:null,onAfterTrack:null,pageTrackerTemplate:null,customResourceURL:"https://www.googletagmanager.com/gtag/js",customPreconnectOrigin:"https://www.googletagmanager.com",deferScriptLoad:!1,pageTrackerExcludedRoutes:[],pageTrackerEnabled:!0,enabled:!0,disableScriptLoad:!1,pageTrackerScreenviewEnabled:!1,appName:null,pageTrackerUseFullPath:!1,pageTrackerPrependBase:!0,pageTrackerSkipSamePath:!0,globalDataLayerName:"dataLayer",globalObjectName:"gtag",defaultGroupName:"default",includes:null,config:{id:null,params:{send_page_view:!1}}}},g={},m=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=v();g=u(t,e)},y=function(){return g},b=function(){var e,t=y(),n=t.globalObjectName;a()&&"undefined"!==typeof window[n]&&(e=window)[n].apply(e,arguments)},_=function(){for(var e=arguments.length,t=new Array(e),n=0;n0&&void 0!==arguments[0])||arguments[0],t=y(),n=t.config,r=t.includes;w(n.id,e),Array.isArray(r)&&r.forEach((function(t){return w(t.id,e)}))},x=function(){k(!0)},S=function(){k(!1)},O=function(e){h=e},C=function(){return h},E=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=y(),r=n.includes,o=n.defaultGroupName;null==t.send_to&&Array.isArray(r)&&r.length&&(t.send_to=r.map((function(e){return e.id})).concat(o)),b("event",e,t)},j=function(e){if(a()){var t;if("string"===typeof e)t={page_path:e};else if(e.path||e.fullPath){var n=y(),r=n.pageTrackerUseFullPath,o=n.pageTrackerPrependBase,i=C(),c=i&&i.options.base,l=r?e.fullPath:e.path;t=s(s({},e.name&&{page_title:e.name}),{},{page_path:o?d(l,c):l})}else t=e;null==t.page_location&&(t.page_location=window.location.href),null==t.send_page_view&&(t.send_page_view=!0),E("page_view",t)}},P=function(e){var t,n=y(),r=n.appName;e&&(t="string"===typeof e?{screen_name:e}:e,t.app_name=t.app_name||r,E("screen_view",t))},R=function(){for(var e=arguments.length,t=new Array(e),n=0;n0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=y(),o=n.appName,i=n.pageTrackerTemplate,c=n.pageTrackerScreenviewEnabled,s=n.pageTrackerSkipSamePath;if(!s||e.path!==t.path){var l=e;(0,r.mf)(i)?l=i(e,t):c&&(l=p({app_name:o,screen_name:e.name})),c?P(l):j(l)}},H=function(e){var t=y(),n=t.pageTrackerExcludedRoutes;return n.includes(e.path)||n.includes(e.name)},q=function(){var e=y(),t=e.onBeforeTrack,n=e.onAfterTrack,i=C();i.isReady().then((function(){(0,o.Y3)().then((function(){var e=i.currentRoute;J(),H(e.value)||B(e.value)})),i.afterEach((function(e,i){(0,o.Y3)().then((function(){H(e)||((0,r.mf)(t)&&t(e,i),B(e,i),(0,r.mf)(n)&&n(e,i))}))}))}))},W=function(){var e=y(),t=e.onReady,n=e.onError,r=e.globalObjectName,o=e.globalDataLayerName,i=e.config,c=e.customResourceURL,s=e.customPreconnectOrigin,u=e.deferScriptLoad,a=e.pageTrackerEnabled,f=e.disableScriptLoad,p=Boolean(a&&C());if(U(),p?q():J(),!f)return l("".concat(c,"?id=").concat(i.id,"&l=").concat(o),{preconnectOrigin:s,defer:u}).then((function(){t&&t(window[r])}))["catch"]((function(e){return n&&n(e),e}))},V=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2?arguments[2]:void 0;N(e),m(t),O(n),y().bootstrap&&W()};t["ZP"]=V},3744:function(e,t){"use strict";t.Z=(e,t)=>{const n=e.__vccOpts||e;for(const[r,o]of t)n[r]=o;return n}},2201:function(e,t,n){"use strict";n.d(t,{PO:function(){return U},p7:function(){return tt}});var r=n(6252),o=n(2262); +/*! + * vue-router v4.1.6 + * (c) 2022 Eduardo San Martin Morote + * @license MIT + */ +const i="undefined"!==typeof window;function c(e){return e.__esModule||"Module"===e[Symbol.toStringTag]}const s=Object.assign;function l(e,t){const n={};for(const r in t){const o=t[r];n[r]=a(o)?o.map(e):e(o)}return n}const u=()=>{},a=Array.isArray;const f=/\/$/,p=e=>e.replace(f,"");function d(e,t,n="/"){let r,o={},i="",c="";const s=t.indexOf("#");let l=t.indexOf("?");return s=0&&(l=-1),l>-1&&(r=t.slice(0,l),i=t.slice(l+1,s>-1?s:t.length),o=e(i)),s>-1&&(r=r||t.slice(0,s),c=t.slice(s,t.length)),r=w(null!=r?r:t,n),{fullPath:r+(i&&"?")+i+c,path:r,query:o,hash:c}}function h(e,t){const n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}function v(e,t){return t&&e.toLowerCase().startsWith(t.toLowerCase())?e.slice(t.length)||"/":e}function g(e,t,n){const r=t.matched.length-1,o=n.matched.length-1;return r>-1&&r===o&&m(t.matched[r],n.matched[o])&&y(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function m(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function y(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const n in e)if(!b(e[n],t[n]))return!1;return!0}function b(e,t){return a(e)?_(e,t):a(t)?_(t,e):e===t}function _(e,t){return a(t)?e.length===t.length&&e.every(((e,n)=>e===t[n])):1===e.length&&e[0]===t}function w(e,t){if(e.startsWith("/"))return e;if(!e)return t;const n=t.split("/"),r=e.split("/");let o,i,c=n.length-1;for(o=0;o1&&c--}return n.slice(0,c).join("/")+"/"+r.slice(o-(o===r.length?1:0)).join("/")}var k,x;(function(e){e["pop"]="pop",e["push"]="push"})(k||(k={})),function(e){e["back"]="back",e["forward"]="forward",e["unknown"]=""}(x||(x={}));function S(e){if(!e)if(i){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return"/"!==e[0]&&"#"!==e[0]&&(e="/"+e),p(e)}const O=/^[^#]+#/;function C(e,t){return e.replace(O,"#")+t}function E(e,t){const n=document.documentElement.getBoundingClientRect(),r=e.getBoundingClientRect();return{behavior:t.behavior,left:r.left-n.left-(t.left||0),top:r.top-n.top-(t.top||0)}}const j=()=>({left:window.pageXOffset,top:window.pageYOffset});function P(e){let t;if("el"in e){const n=e.el,r="string"===typeof n&&n.startsWith("#");0;const o="string"===typeof n?r?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!o)return;t=E(o,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(null!=t.left?t.left:window.pageXOffset,null!=t.top?t.top:window.pageYOffset)}function R(e,t){const n=history.state?history.state.position-t:-1;return n+e}const T=new Map;function A(e,t){T.set(e,t)}function F(e){const t=T.get(e);return T.delete(e),t}let I=()=>location.protocol+"//"+location.host;function L(e,t){const{pathname:n,search:r,hash:o}=t,i=e.indexOf("#");if(i>-1){let t=o.includes(e.slice(i))?e.slice(i).length:1,n=o.slice(t);return"/"!==n[0]&&(n="/"+n),v(n,"")}const c=v(n,e);return c+r+o}function M(e,t,n,r){let o=[],i=[],c=null;const l=({state:i})=>{const s=L(e,location),l=n.value,u=t.value;let a=0;if(i){if(n.value=s,t.value=i,c&&c===l)return void(c=null);a=u?i.position-u.position:0}else r(s);o.forEach((e=>{e(n.value,l,{delta:a,type:k.pop,direction:a?a>0?x.forward:x.back:x.unknown})}))};function u(){c=n.value}function a(e){o.push(e);const t=()=>{const t=o.indexOf(e);t>-1&&o.splice(t,1)};return i.push(t),t}function f(){const{history:e}=window;e.state&&e.replaceState(s({},e.state,{scroll:j()}),"")}function p(){for(const e of i)e();i=[],window.removeEventListener("popstate",l),window.removeEventListener("beforeunload",f)}return window.addEventListener("popstate",l),window.addEventListener("beforeunload",f),{pauseListeners:u,listen:a,destroy:p}}function $(e,t,n,r=!1,o=!1){return{back:e,current:t,forward:n,replaced:r,position:window.history.length,scroll:o?j():null}}function N(e){const{history:t,location:n}=window,r={value:L(e,n)},o={value:t.state};function i(r,i,c){const s=e.indexOf("#"),l=s>-1?(n.host&&document.querySelector("base")?e:e.slice(s))+r:I()+e+r;try{t[c?"replaceState":"pushState"](i,"",l),o.value=i}catch(u){console.error(u),n[c?"replace":"assign"](l)}}function c(e,n){const c=s({},t.state,$(o.value.back,e,o.value.forward,!0),n,{position:o.value.position});i(e,c,!0),r.value=e}function l(e,n){const c=s({},o.value,t.state,{forward:e,scroll:j()});i(c.current,c,!0);const l=s({},$(r.value,e,null),{position:c.position+1},n);i(e,l,!1),r.value=e}return o.value||i(r.value,{back:null,current:r.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0),{location:r,state:o,push:l,replace:c}}function U(e){e=S(e);const t=N(e),n=M(e,t.state,t.location,t.replace);function r(e,t=!0){t||n.pauseListeners(),history.go(e)}const o=s({location:"",base:e,go:r,createHref:C.bind(null,e)},t,n);return Object.defineProperty(o,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(o,"state",{enumerable:!0,get:()=>t.state.value}),o}function D(e){return"string"===typeof e||e&&"object"===typeof e}function J(e){return"string"===typeof e||"symbol"===typeof e}const B={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0},H=Symbol("");var q;(function(e){e[e["aborted"]=4]="aborted",e[e["cancelled"]=8]="cancelled",e[e["duplicated"]=16]="duplicated"})(q||(q={}));function W(e,t){return s(new Error,{type:e,[H]:!0},t)}function V(e,t){return e instanceof Error&&H in e&&(null==t||!!(e.type&t))}const G="[^/]+?",K={sensitive:!1,strict:!1,start:!0,end:!0},z=/[.+*?^${}()[\]/\\]/g;function X(e,t){const n=s({},K,t),r=[];let o=n.start?"^":"";const i=[];for(const s of e){const e=s.length?[]:[90];n.strict&&!s.length&&(o+="/");for(let t=0;tt.length?1===t.length&&80===t[0]?1:-1:0}function Y(e,t){let n=0;const r=e.score,o=t.score;while(n0&&t[t.length-1]<0}const ee={type:0,value:""},te=/[a-zA-Z0-9_]/;function ne(e){if(!e)return[[]];if("/"===e)return[[ee]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(e){throw new Error(`ERR (${n})/"${u}": ${e}`)}let n=0,r=n;const o=[];let i;function c(){i&&o.push(i),i=[]}let s,l=0,u="",a="";function f(){u&&(0===n?i.push({type:0,value:u}):1===n||2===n||3===n?(i.length>1&&("*"===s||"+"===s)&&t(`A repeatable param (${u}) must be alone in its segment. eg: '/:ids+.`),i.push({type:1,value:u,regexp:a,repeatable:"*"===s||"+"===s,optional:"*"===s||"?"===s})):t("Invalid state to consume buffer"),u="")}function p(){u+=s}while(l{c(h)}:u}function c(e){if(J(e)){const t=r.get(e);t&&(r.delete(e),n.splice(n.indexOf(t),1),t.children.forEach(c),t.alias.forEach(c))}else{const t=n.indexOf(e);t>-1&&(n.splice(t,1),e.record.name&&r.delete(e.record.name),e.children.forEach(c),e.alias.forEach(c))}}function l(){return n}function a(e){let t=0;while(t=0&&(e.record.path!==n[t].record.path||!fe(e,n[t])))t++;n.splice(t,0,e),e.record.name&&!le(e)&&r.set(e.record.name,e)}function f(e,t){let o,i,c,l={};if("name"in e&&e.name){if(o=r.get(e.name),!o)throw W(1,{location:e});0,c=o.record.name,l=s(ie(t.params,o.keys.filter((e=>!e.optional)).map((e=>e.name))),e.params&&ie(e.params,o.keys.map((e=>e.name)))),i=o.stringify(l)}else if("path"in e)i=e.path,o=n.find((e=>e.re.test(i))),o&&(l=o.parse(i),c=o.record.name);else{if(o=t.name?r.get(t.name):n.find((e=>e.re.test(t.path))),!o)throw W(1,{location:e,currentLocation:t});c=o.record.name,l=s({},t.params,e.params),i=o.stringify(l)}const u=[];let a=o;while(a)u.unshift(a.record),a=a.parent;return{name:c,path:i,params:l,matched:u,meta:ue(u)}}return t=ae({strict:!1,end:!0,sensitive:!1},t),e.forEach((e=>i(e))),{addRoute:i,resolve:f,removeRoute:c,getRoutes:l,getRecordMatcher:o}}function ie(e,t){const n={};for(const r of t)r in e&&(n[r]=e[r]);return n}function ce(e){return{path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:void 0,beforeEnter:e.beforeEnter,props:se(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}}}function se(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const r in e.components)t[r]="boolean"===typeof n?n:n[r];return t}function le(e){while(e){if(e.record.aliasOf)return!0;e=e.parent}return!1}function ue(e){return e.reduce(((e,t)=>s(e,t.meta)),{})}function ae(e,t){const n={};for(const r in e)n[r]=r in t?t[r]:e[r];return n}function fe(e,t){return t.children.some((t=>t===e||fe(e,t)))}const pe=/#/g,de=/&/g,he=/\//g,ve=/=/g,ge=/\?/g,me=/\+/g,ye=/%5B/g,be=/%5D/g,_e=/%5E/g,we=/%60/g,ke=/%7B/g,xe=/%7C/g,Se=/%7D/g,Oe=/%20/g;function Ce(e){return encodeURI(""+e).replace(xe,"|").replace(ye,"[").replace(be,"]")}function Ee(e){return Ce(e).replace(ke,"{").replace(Se,"}").replace(_e,"^")}function je(e){return Ce(e).replace(me,"%2B").replace(Oe,"+").replace(pe,"%23").replace(de,"%26").replace(we,"`").replace(ke,"{").replace(Se,"}").replace(_e,"^")}function Pe(e){return je(e).replace(ve,"%3D")}function Re(e){return Ce(e).replace(pe,"%23").replace(ge,"%3F")}function Te(e){return null==e?"":Re(e).replace(he,"%2F")}function Ae(e){try{return decodeURIComponent(""+e)}catch(t){}return""+e}function Fe(e){const t={};if(""===e||"?"===e)return t;const n="?"===e[0],r=(n?e.slice(1):e).split("&");for(let o=0;oe&&je(e))):[r&&je(r)];o.forEach((e=>{void 0!==e&&(t+=(t.length?"&":"")+n,null!=e&&(t+="="+e))}))}return t}function Le(e){const t={};for(const n in e){const r=e[n];void 0!==r&&(t[n]=a(r)?r.map((e=>null==e?null:""+e)):null==r?r:""+r)}return t}const Me=Symbol(""),$e=Symbol(""),Ne=Symbol(""),Ue=Symbol(""),De=Symbol("");function Je(){let e=[];function t(t){return e.push(t),()=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)}}function n(){e=[]}return{add:t,list:()=>e,reset:n}}function Be(e,t,n,r,o){const i=r&&(r.enterCallbacks[o]=r.enterCallbacks[o]||[]);return()=>new Promise(((c,s)=>{const l=e=>{!1===e?s(W(4,{from:n,to:t})):e instanceof Error?s(e):D(e)?s(W(2,{from:t,to:e})):(i&&r.enterCallbacks[o]===i&&"function"===typeof e&&i.push(e),c())},u=e.call(r&&r.instances[o],t,n,l);let a=Promise.resolve(u);e.length<3&&(a=a.then(l)),a.catch((e=>s(e)))}))}function He(e,t,n,r){const o=[];for(const i of e){0;for(const e in i.components){let s=i.components[e];if("beforeRouteEnter"===t||i.instances[e])if(qe(s)){const c=s.__vccOpts||s,l=c[t];l&&o.push(Be(l,n,r,i,e))}else{let l=s();0,o.push((()=>l.then((o=>{if(!o)return Promise.reject(new Error(`Couldn't resolve component "${e}" at "${i.path}"`));const s=c(o)?o.default:o;i.components[e]=s;const l=s.__vccOpts||s,u=l[t];return u&&Be(u,n,r,i,e)()}))))}}}return o}function qe(e){return"object"===typeof e||"displayName"in e||"props"in e||"__vccOpts"in e}function We(e){const t=(0,r.f3)(Ne),n=(0,r.f3)(Ue),i=(0,r.Fl)((()=>t.resolve((0,o.SU)(e.to)))),c=(0,r.Fl)((()=>{const{matched:e}=i.value,{length:t}=e,r=e[t-1],o=n.matched;if(!r||!o.length)return-1;const c=o.findIndex(m.bind(null,r));if(c>-1)return c;const s=Xe(e[t-2]);return t>1&&Xe(r)===s&&o[o.length-1].path!==s?o.findIndex(m.bind(null,e[t-2])):c})),s=(0,r.Fl)((()=>c.value>-1&&ze(n.params,i.value.params))),l=(0,r.Fl)((()=>c.value>-1&&c.value===n.matched.length-1&&y(n.params,i.value.params)));function a(n={}){return Ke(n)?t[(0,o.SU)(e.replace)?"replace":"push"]((0,o.SU)(e.to)).catch(u):Promise.resolve()}return{route:i,href:(0,r.Fl)((()=>i.value.href)),isActive:s,isExactActive:l,navigate:a}}const Ve=(0,r.aZ)({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"}},useLink:We,setup(e,{slots:t}){const n=(0,o.qj)(We(e)),{options:i}=(0,r.f3)(Ne),c=(0,r.Fl)((()=>({[Ze(e.activeClass,i.linkActiveClass,"router-link-active")]:n.isActive,[Ze(e.exactActiveClass,i.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive})));return()=>{const o=t.default&&t.default(n);return e.custom?o:(0,r.h)("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:c.value},o)}}}),Ge=Ve;function Ke(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&(void 0===e.button||0===e.button)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function ze(e,t){for(const n in t){const r=t[n],o=e[n];if("string"===typeof r){if(r!==o)return!1}else if(!a(o)||o.length!==r.length||r.some(((e,t)=>e!==o[t])))return!1}return!0}function Xe(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const Ze=(e,t,n)=>null!=e?e:null!=t?t:n,Ye=(0,r.aZ)({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const i=(0,r.f3)(De),c=(0,r.Fl)((()=>e.route||i.value)),l=(0,r.f3)($e,0),u=(0,r.Fl)((()=>{let e=(0,o.SU)(l);const{matched:t}=c.value;let n;while((n=t[e])&&!n.components)e++;return e})),a=(0,r.Fl)((()=>c.value.matched[u.value]));(0,r.JJ)($e,(0,r.Fl)((()=>u.value+1))),(0,r.JJ)(Me,a),(0,r.JJ)(De,c);const f=(0,o.iH)();return(0,r.YP)((()=>[f.value,a.value,e.name]),(([e,t,n],[r,o,i])=>{t&&(t.instances[n]=e,o&&o!==t&&e&&e===r&&(t.leaveGuards.size||(t.leaveGuards=o.leaveGuards),t.updateGuards.size||(t.updateGuards=o.updateGuards))),!e||!t||o&&m(t,o)&&r||(t.enterCallbacks[n]||[]).forEach((t=>t(e)))}),{flush:"post"}),()=>{const o=c.value,i=e.name,l=a.value,u=l&&l.components[i];if(!u)return Qe(n.default,{Component:u,route:o});const p=l.props[i],d=p?!0===p?o.params:"function"===typeof p?p(o):p:null,h=e=>{e.component.isUnmounted&&(l.instances[i]=null)},v=(0,r.h)(u,s({},d,t,{onVnodeUnmounted:h,ref:f}));return Qe(n.default,{Component:v,route:o})||v}}});function Qe(e,t){if(!e)return null;const n=e(t);return 1===n.length?n[0]:n}const et=Ye;function tt(e){const t=oe(e.routes,e),n=e.parseQuery||Fe,c=e.stringifyQuery||Ie,f=e.history;const p=Je(),v=Je(),m=Je(),y=(0,o.XI)(B);let b=B;i&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const _=l.bind(null,(e=>""+e)),w=l.bind(null,Te),x=l.bind(null,Ae);function S(e,n){let r,o;return J(e)?(r=t.getRecordMatcher(e),o=n):o=e,t.addRoute(o,r)}function O(e){const n=t.getRecordMatcher(e);n&&t.removeRoute(n)}function C(){return t.getRoutes().map((e=>e.record))}function E(e){return!!t.getRecordMatcher(e)}function T(e,r){if(r=s({},r||y.value),"string"===typeof e){const o=d(n,e,r.path),i=t.resolve({path:o.path},r),c=f.createHref(o.fullPath);return s(o,i,{params:x(i.params),hash:Ae(o.hash),redirectedFrom:void 0,href:c})}let o;if("path"in e)o=s({},e,{path:d(n,e.path,r.path).path});else{const t=s({},e.params);for(const e in t)null==t[e]&&delete t[e];o=s({},e,{params:w(e.params)}),r.params=w(r.params)}const i=t.resolve(o,r),l=e.hash||"";i.params=_(x(i.params));const u=h(c,s({},e,{hash:Ee(l),path:i.path})),a=f.createHref(u);return s({fullPath:u,hash:l,query:c===Ie?Le(e.query):e.query||{}},i,{redirectedFrom:void 0,href:a})}function I(e){return"string"===typeof e?d(n,e,y.value.path):s({},e)}function L(e,t){if(b!==e)return W(8,{from:t,to:e})}function M(e){return U(e)}function $(e){return M(s(I(e),{replace:!0}))}function N(e){const t=e.matched[e.matched.length-1];if(t&&t.redirect){const{redirect:n}=t;let r="function"===typeof n?n(e):n;return"string"===typeof r&&(r=r.includes("?")||r.includes("#")?r=I(r):{path:r},r.params={}),s({query:e.query,hash:e.hash,params:"path"in r?{}:e.params},r)}}function U(e,t){const n=b=T(e),r=y.value,o=e.state,i=e.force,l=!0===e.replace,u=N(n);if(u)return U(s(I(u),{state:"object"===typeof u?s({},o,u.state):o,force:i,replace:l}),t||n);const a=n;let f;return a.redirectedFrom=t,!i&&g(c,r,n)&&(f=W(16,{to:a,from:r}),ne(r,r,!0,!1)),(f?Promise.resolve(f):H(a,r)).catch((e=>V(e)?V(e,2)?e:te(e):Q(e,a,r))).then((e=>{if(e){if(V(e,2))return U(s({replace:l},I(e.to),{state:"object"===typeof e.to?s({},o,e.to.state):o,force:i}),t||a)}else e=G(a,r,!0,l,o);return q(a,r,e),e}))}function D(e,t){const n=L(e,t);return n?Promise.reject(n):Promise.resolve()}function H(e,t){let n;const[r,o,i]=rt(e,t);n=He(r.reverse(),"beforeRouteLeave",e,t);for(const s of r)s.leaveGuards.forEach((r=>{n.push(Be(r,e,t))}));const c=D.bind(null,e,t);return n.push(c),nt(n).then((()=>{n=[];for(const r of p.list())n.push(Be(r,e,t));return n.push(c),nt(n)})).then((()=>{n=He(o,"beforeRouteUpdate",e,t);for(const r of o)r.updateGuards.forEach((r=>{n.push(Be(r,e,t))}));return n.push(c),nt(n)})).then((()=>{n=[];for(const r of e.matched)if(r.beforeEnter&&!t.matched.includes(r))if(a(r.beforeEnter))for(const o of r.beforeEnter)n.push(Be(o,e,t));else n.push(Be(r.beforeEnter,e,t));return n.push(c),nt(n)})).then((()=>(e.matched.forEach((e=>e.enterCallbacks={})),n=He(i,"beforeRouteEnter",e,t),n.push(c),nt(n)))).then((()=>{n=[];for(const r of v.list())n.push(Be(r,e,t));return n.push(c),nt(n)})).catch((e=>V(e,8)?e:Promise.reject(e)))}function q(e,t,n){for(const r of m.list())r(e,t,n)}function G(e,t,n,r,o){const c=L(e,t);if(c)return c;const l=t===B,u=i?history.state:{};n&&(r||l?f.replace(e.fullPath,s({scroll:l&&u&&u.scroll},o)):f.push(e.fullPath,o)),y.value=e,ne(e,t,n,l),te()}let K;function z(){K||(K=f.listen(((e,t,n)=>{if(!se.listening)return;const r=T(e),o=N(r);if(o)return void U(s(o,{replace:!0}),r).catch(u);b=r;const c=y.value;i&&A(R(c.fullPath,n.delta),j()),H(r,c).catch((e=>V(e,12)?e:V(e,2)?(U(e.to,r).then((e=>{V(e,20)&&!n.delta&&n.type===k.pop&&f.go(-1,!1)})).catch(u),Promise.reject()):(n.delta&&f.go(-n.delta,!1),Q(e,r,c)))).then((e=>{e=e||G(r,c,!1),e&&(n.delta&&!V(e,8)?f.go(-n.delta,!1):n.type===k.pop&&V(e,20)&&f.go(-1,!1)),q(r,c,e)})).catch(u)})))}let X,Z=Je(),Y=Je();function Q(e,t,n){te(e);const r=Y.list();return r.length?r.forEach((r=>r(e,t,n))):console.error(e),Promise.reject(e)}function ee(){return X&&y.value!==B?Promise.resolve():new Promise(((e,t)=>{Z.add([e,t])}))}function te(e){return X||(X=!e,z(),Z.list().forEach((([t,n])=>e?n(e):t())),Z.reset()),e}function ne(t,n,o,c){const{scrollBehavior:s}=e;if(!i||!s)return Promise.resolve();const l=!o&&F(R(t.fullPath,0))||(c||!o)&&history.state&&history.state.scroll||null;return(0,r.Y3)().then((()=>s(t,n,l))).then((e=>e&&P(e))).catch((e=>Q(e,t,n)))}const re=e=>f.go(e);let ie;const ce=new Set,se={currentRoute:y,listening:!0,addRoute:S,removeRoute:O,hasRoute:E,getRoutes:C,resolve:T,options:e,push:M,replace:$,go:re,back:()=>re(-1),forward:()=>re(1),beforeEach:p.add,beforeResolve:v.add,afterEach:m.add,onError:Y.add,isReady:ee,install(e){const t=this;e.component("RouterLink",Ge),e.component("RouterView",et),e.config.globalProperties.$router=t,Object.defineProperty(e.config.globalProperties,"$route",{enumerable:!0,get:()=>(0,o.SU)(y)}),i&&!ie&&y.value===B&&(ie=!0,M(f.location).catch((e=>{0})));const n={};for(const o in B)n[o]=(0,r.Fl)((()=>y.value[o]));e.provide(Ne,t),e.provide(Ue,(0,o.qj)(n)),e.provide(De,y);const c=e.unmount;ce.add(e),e.unmount=function(){ce.delete(e),ce.size<1&&(b=B,K&&K(),K=null,y.value=B,ie=!1,X=!1),c()}}};return se}function nt(e){return e.reduce(((e,t)=>e.then((()=>t()))),Promise.resolve())}function rt(e,t){const n=[],r=[],o=[],i=Math.max(t.matched.length,e.matched.length);for(let c=0;cm(e,i)))?r.push(i):n.push(i));const s=e.matched[c];s&&(t.matched.find((e=>m(e,s)))||o.push(s))}return[n,r,o]}}}]); \ No newline at end of file diff --git a/manifest.json b/manifest.json new file mode 100644 index 0000000..98fd4e8 --- /dev/null +++ b/manifest.json @@ -0,0 +1 @@ +{"name":"NetSchoolApi","short_name":"NetSchoolApi","theme_color":"#17181C","icons":[{"src":"./img/icons/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"./img/icons/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"start_url":".","display":"standalone","background_color":"#17181C"} \ No newline at end of file diff --git a/robots.txt b/robots.txt new file mode 100644 index 0000000..eb05362 --- /dev/null +++ b/robots.txt @@ -0,0 +1,2 @@ +User-agent: * +Disallow: diff --git a/service-worker.js b/service-worker.js new file mode 100644 index 0000000..9b62466 --- /dev/null +++ b/service-worker.js @@ -0,0 +1 @@ +if(!self.define){let e,o={};const s=(s,i)=>(s=new URL(s+".js",i).href,o[s]||new Promise((o=>{if("document"in self){const e=document.createElement("script");e.src=s,e.onload=o,document.head.appendChild(e)}else e=s,importScripts(s),o()})).then((()=>{let e=o[s];if(!e)throw new Error(`Module ${s} didn’t register its module`);return e})));self.define=(i,l)=>{const c=e||("document"in self?document.currentScript.src:"")||location.href;if(o[c])return;let n={};const r=e=>s(e,c),t={module:{uri:c},exports:n,require:r};o[c]=Promise.all(i.map((e=>t[e]||r(e)))).then((e=>(l(...e),n)))}}define(["./workbox-94d8ddb9"],(function(e){"use strict";e.setCacheNameDetails({prefix:"vdocs"}),self.skipWaiting(),e.clientsClaim(),e.precacheAndRoute([{url:"/NetSchoolApi/css/614.03fab845.css",revision:null},{url:"/NetSchoolApi/css/801.e38130a9.css",revision:null},{url:"/NetSchoolApi/css/985.f2e8cb0c.css",revision:null},{url:"/NetSchoolApi/css/app.d282c66f.css",revision:null},{url:"/NetSchoolApi/index.html",revision:"c49d6ef1ae72e6d44eb97caaf5ebbe60"},{url:"/NetSchoolApi/js/364.1b61b8d2.js",revision:null},{url:"/NetSchoolApi/js/614.b5f28f4d.js",revision:null},{url:"/NetSchoolApi/js/801.0a50fa6b.js",revision:null},{url:"/NetSchoolApi/js/985.7c1c1e2e.js",revision:null},{url:"/NetSchoolApi/js/app.85bbbd14.js",revision:null},{url:"/NetSchoolApi/js/chunk-vendors.10f91261.js",revision:null},{url:"/NetSchoolApi/manifest.json",revision:"f79d7078c359ead577f932f6b7904128"},{url:"/NetSchoolApi/robots.txt",revision:"b6216d61c03e6ce0c9aea6ca7808f7ca"}],{}),e.registerRoute(new e.NavigationRoute(e.createHandlerBoundToURL("index.html"))),e.registerRoute(/^http.*github/,new e.NetworkFirst({cacheName:"api-cache",networkTimeoutSeconds:2,plugins:[]}),"GET")})); diff --git a/workbox-94d8ddb9.js b/workbox-94d8ddb9.js new file mode 100644 index 0000000..ee05c72 --- /dev/null +++ b/workbox-94d8ddb9.js @@ -0,0 +1 @@ +define(["exports"],(function(t){"use strict";try{self["workbox:core:6.5.3"]&&_()}catch(t){}const e=(t,...e)=>{let s=t;return e.length>0&&(s+=` :: ${JSON.stringify(e)}`),s};class s extends Error{constructor(t,s){super(e(t,s)),this.name=t,this.details=s}}try{self["workbox:routing:6.5.3"]&&_()}catch(t){}const n=t=>t&&"object"==typeof t?t:{handle:t};class i{constructor(t,e,s="GET"){this.handler=n(e),this.match=t,this.method=s}setCatchHandler(t){this.catchHandler=n(t)}}class r extends i{constructor(t,e,s){super((({url:e})=>{const s=t.exec(e.href);if(s&&(e.origin===location.origin||0===s.index))return s.slice(1)}),e,s)}}class o{constructor(){this.t=new Map,this.i=new Map}get routes(){return this.t}addFetchListener(){self.addEventListener("fetch",(t=>{const{request:e}=t,s=this.handleRequest({request:e,event:t});s&&t.respondWith(s)}))}addCacheListener(){self.addEventListener("message",(t=>{if(t.data&&"CACHE_URLS"===t.data.type){const{payload:e}=t.data,s=Promise.all(e.urlsToCache.map((e=>{"string"==typeof e&&(e=[e]);const s=new Request(...e);return this.handleRequest({request:s,event:t})})));t.waitUntil(s),t.ports&&t.ports[0]&&s.then((()=>t.ports[0].postMessage(!0)))}}))}handleRequest({request:t,event:e}){const s=new URL(t.url,location.href);if(!s.protocol.startsWith("http"))return;const n=s.origin===location.origin,{params:i,route:r}=this.findMatchingRoute({event:e,request:t,sameOrigin:n,url:s});let o=r&&r.handler;const a=t.method;if(!o&&this.i.has(a)&&(o=this.i.get(a)),!o)return;let c;try{c=o.handle({url:s,request:t,event:e,params:i})}catch(t){c=Promise.reject(t)}const h=r&&r.catchHandler;return c instanceof Promise&&(this.o||h)&&(c=c.catch((async n=>{if(h)try{return await h.handle({url:s,request:t,event:e,params:i})}catch(t){t instanceof Error&&(n=t)}if(this.o)return this.o.handle({url:s,request:t,event:e});throw n}))),c}findMatchingRoute({url:t,sameOrigin:e,request:s,event:n}){const i=this.t.get(s.method)||[];for(const r of i){let i;const o=r.match({url:t,sameOrigin:e,request:s,event:n});if(o)return i=o,(Array.isArray(i)&&0===i.length||o.constructor===Object&&0===Object.keys(o).length||"boolean"==typeof o)&&(i=void 0),{route:r,params:i}}return{}}setDefaultHandler(t,e="GET"){this.i.set(e,n(t))}setCatchHandler(t){this.o=n(t)}registerRoute(t){this.t.has(t.method)||this.t.set(t.method,[]),this.t.get(t.method).push(t)}unregisterRoute(t){if(!this.t.has(t.method))throw new s("unregister-route-but-not-found-with-method",{method:t.method});const e=this.t.get(t.method).indexOf(t);if(!(e>-1))throw new s("unregister-route-route-not-registered");this.t.get(t.method).splice(e,1)}}let a;const c=()=>(a||(a=new o,a.addFetchListener(),a.addCacheListener()),a);function h(t,e,n){let o;if("string"==typeof t){const s=new URL(t,location.href);o=new i((({url:t})=>t.href===s.href),e,n)}else if(t instanceof RegExp)o=new r(t,e,n);else if("function"==typeof t)o=new i(t,e,n);else{if(!(t instanceof i))throw new s("unsupported-route-type",{moduleName:"workbox-routing",funcName:"registerRoute",paramName:"capture"});o=t}return c().registerRoute(o),o}try{self["workbox:strategies:6.5.3"]&&_()}catch(t){}const u={cacheWillUpdate:async({response:t})=>200===t.status||0===t.status?t:null},l={googleAnalytics:"googleAnalytics",precache:"precache-v2",prefix:"workbox",runtime:"runtime",suffix:"undefined"!=typeof registration?registration.scope:""},f=t=>[l.prefix,t,l.suffix].filter((t=>t&&t.length>0)).join("-"),w=t=>{(t=>{for(const e of Object.keys(l))t(e)})((e=>{"string"==typeof t[e]&&(l[e]=t[e])}))},d=t=>t||f(l.precache),p=t=>t||f(l.runtime);function y(t,e){const s=new URL(t);for(const t of e)s.searchParams.delete(t);return s.href}class g{constructor(){this.promise=new Promise(((t,e)=>{this.resolve=t,this.reject=e}))}}const m=new Set;function R(t){return"string"==typeof t?new Request(t):t}class v{constructor(t,e){this.h={},Object.assign(this,e),this.event=e.event,this.u=t,this.l=new g,this.p=[],this.g=[...t.plugins],this.m=new Map;for(const t of this.g)this.m.set(t,{});this.event.waitUntil(this.l.promise)}async fetch(t){const{event:e}=this;let n=R(t);if("navigate"===n.mode&&e instanceof FetchEvent&&e.preloadResponse){const t=await e.preloadResponse;if(t)return t}const i=this.hasCallback("fetchDidFail")?n.clone():null;try{for(const t of this.iterateCallbacks("requestWillFetch"))n=await t({request:n.clone(),event:e})}catch(t){if(t instanceof Error)throw new s("plugin-error-request-will-fetch",{thrownErrorMessage:t.message})}const r=n.clone();try{let t;t=await fetch(n,"navigate"===n.mode?void 0:this.u.fetchOptions);for(const s of this.iterateCallbacks("fetchDidSucceed"))t=await s({event:e,request:r,response:t});return t}catch(t){throw i&&await this.runCallbacks("fetchDidFail",{error:t,event:e,originalRequest:i.clone(),request:r.clone()}),t}}async fetchAndCachePut(t){const e=await this.fetch(t),s=e.clone();return this.waitUntil(this.cachePut(t,s)),e}async cacheMatch(t){const e=R(t);let s;const{cacheName:n,matchOptions:i}=this.u,r=await this.getCacheKey(e,"read"),o=Object.assign(Object.assign({},i),{cacheName:n});s=await caches.match(r,o);for(const t of this.iterateCallbacks("cachedResponseWillBeUsed"))s=await t({cacheName:n,matchOptions:i,cachedResponse:s,request:r,event:this.event})||void 0;return s}async cachePut(t,e){const n=R(t);var i;await(i=0,new Promise((t=>setTimeout(t,i))));const r=await this.getCacheKey(n,"write");if(!e)throw new s("cache-put-with-no-response",{url:(o=r.url,new URL(String(o),location.href).href.replace(new RegExp(`^${location.origin}`),""))});var o;const a=await this.R(e);if(!a)return!1;const{cacheName:c,matchOptions:h}=this.u,u=await self.caches.open(c),l=this.hasCallback("cacheDidUpdate"),f=l?await async function(t,e,s,n){const i=y(e.url,s);if(e.url===i)return t.match(e,n);const r=Object.assign(Object.assign({},n),{ignoreSearch:!0}),o=await t.keys(e,r);for(const e of o)if(i===y(e.url,s))return t.match(e,n)}(u,r.clone(),["__WB_REVISION__"],h):null;try{await u.put(r,l?a.clone():a)}catch(t){if(t instanceof Error)throw"QuotaExceededError"===t.name&&await async function(){for(const t of m)await t()}(),t}for(const t of this.iterateCallbacks("cacheDidUpdate"))await t({cacheName:c,oldResponse:f,newResponse:a.clone(),request:r,event:this.event});return!0}async getCacheKey(t,e){const s=`${t.url} | ${e}`;if(!this.h[s]){let n=t;for(const t of this.iterateCallbacks("cacheKeyWillBeUsed"))n=R(await t({mode:e,request:n,event:this.event,params:this.params}));this.h[s]=n}return this.h[s]}hasCallback(t){for(const e of this.u.plugins)if(t in e)return!0;return!1}async runCallbacks(t,e){for(const s of this.iterateCallbacks(t))await s(e)}*iterateCallbacks(t){for(const e of this.u.plugins)if("function"==typeof e[t]){const s=this.m.get(e),n=n=>{const i=Object.assign(Object.assign({},n),{state:s});return e[t](i)};yield n}}waitUntil(t){return this.p.push(t),t}async doneWaiting(){let t;for(;t=this.p.shift();)await t}destroy(){this.l.resolve(null)}async R(t){let e=t,s=!1;for(const t of this.iterateCallbacks("cacheWillUpdate"))if(e=await t({request:this.request,response:e,event:this.event})||void 0,s=!0,!e)break;return s||e&&200!==e.status&&(e=void 0),e}}class q{constructor(t={}){this.cacheName=p(t.cacheName),this.plugins=t.plugins||[],this.fetchOptions=t.fetchOptions,this.matchOptions=t.matchOptions}handle(t){const[e]=this.handleAll(t);return e}handleAll(t){t instanceof FetchEvent&&(t={event:t,request:t.request});const e=t.event,s="string"==typeof t.request?new Request(t.request):t.request,n="params"in t?t.params:void 0,i=new v(this,{event:e,request:s,params:n}),r=this.v(i,s,e);return[r,this.q(r,i,s,e)]}async v(t,e,n){let i;await t.runCallbacks("handlerWillStart",{event:n,request:e});try{if(i=await this.U(e,t),!i||"error"===i.type)throw new s("no-response",{url:e.url})}catch(s){if(s instanceof Error)for(const r of t.iterateCallbacks("handlerDidError"))if(i=await r({error:s,event:n,request:e}),i)break;if(!i)throw s}for(const s of t.iterateCallbacks("handlerWillRespond"))i=await s({event:n,request:e,response:i});return i}async q(t,e,s,n){let i,r;try{i=await t}catch(r){}try{await e.runCallbacks("handlerDidRespond",{event:n,request:s,response:i}),await e.doneWaiting()}catch(t){t instanceof Error&&(r=t)}if(await e.runCallbacks("handlerDidComplete",{event:n,request:s,response:i,error:r}),e.destroy(),r)throw r}}function U(t,e){const s=e();return t.waitUntil(s),s}try{self["workbox:precaching:6.5.3"]&&_()}catch(t){}function b(t){if(!t)throw new s("add-to-cache-list-unexpected-type",{entry:t});if("string"==typeof t){const e=new URL(t,location.href);return{cacheKey:e.href,url:e.href}}const{revision:e,url:n}=t;if(!n)throw new s("add-to-cache-list-unexpected-type",{entry:t});if(!e){const t=new URL(n,location.href);return{cacheKey:t.href,url:t.href}}const i=new URL(n,location.href),r=new URL(n,location.href);return i.searchParams.set("__WB_REVISION__",e),{cacheKey:i.href,url:r.href}}class L{constructor(){this.updatedURLs=[],this.notUpdatedURLs=[],this.handlerWillStart=async({request:t,state:e})=>{e&&(e.originalRequest=t)},this.cachedResponseWillBeUsed=async({event:t,state:e,cachedResponse:s})=>{if("install"===t.type&&e&&e.originalRequest&&e.originalRequest instanceof Request){const t=e.originalRequest.url;s?this.notUpdatedURLs.push(t):this.updatedURLs.push(t)}return s}}}class E{constructor({precacheController:t}){this.cacheKeyWillBeUsed=async({request:t,params:e})=>{const s=(null==e?void 0:e.cacheKey)||this.L.getCacheKeyForURL(t.url);return s?new Request(s,{headers:t.headers}):t},this.L=t}}let C,O;async function x(t,e){let n=null;if(t.url){n=new URL(t.url).origin}if(n!==self.location.origin)throw new s("cross-origin-copy-response",{origin:n});const i=t.clone(),r={headers:new Headers(i.headers),status:i.status,statusText:i.statusText},o=e?e(r):r,a=function(){if(void 0===C){const t=new Response("");if("body"in t)try{new Response(t.body),C=!0}catch(t){C=!1}C=!1}return C}()?i.body:await i.blob();return new Response(a,o)}class N extends q{constructor(t={}){t.cacheName=d(t.cacheName),super(t),this._=!1!==t.fallbackToNetwork,this.plugins.push(N.copyRedirectedCacheableResponsesPlugin)}async U(t,e){const s=await e.cacheMatch(t);return s||(e.event&&"install"===e.event.type?await this.C(t,e):await this.O(t,e))}async O(t,e){let n;const i=e.params||{};if(!this._)throw new s("missing-precache-entry",{cacheName:this.cacheName,url:t.url});{const s=i.integrity,r=t.integrity,o=!r||r===s;n=await e.fetch(new Request(t,{integrity:"no-cors"!==t.mode?r||s:void 0})),s&&o&&"no-cors"!==t.mode&&(this.N(),await e.cachePut(t,n.clone()))}return n}async C(t,e){this.N();const n=await e.fetch(t);if(!await e.cachePut(t,n.clone()))throw new s("bad-precaching-response",{url:t.url,status:n.status});return n}N(){let t=null,e=0;for(const[s,n]of this.plugins.entries())n!==N.copyRedirectedCacheableResponsesPlugin&&(n===N.defaultPrecacheCacheabilityPlugin&&(t=s),n.cacheWillUpdate&&e++);0===e?this.plugins.push(N.defaultPrecacheCacheabilityPlugin):e>1&&null!==t&&this.plugins.splice(t,1)}}N.defaultPrecacheCacheabilityPlugin={cacheWillUpdate:async({response:t})=>!t||t.status>=400?null:t},N.copyRedirectedCacheableResponsesPlugin={cacheWillUpdate:async({response:t})=>t.redirected?await x(t):t};class P{constructor({cacheName:t,plugins:e=[],fallbackToNetwork:s=!0}={}){this.P=new Map,this.T=new Map,this.W=new Map,this.u=new N({cacheName:d(t),plugins:[...e,new E({precacheController:this})],fallbackToNetwork:s}),this.install=this.install.bind(this),this.activate=this.activate.bind(this)}get strategy(){return this.u}precache(t){this.addToCacheList(t),this.k||(self.addEventListener("install",this.install),self.addEventListener("activate",this.activate),this.k=!0)}addToCacheList(t){const e=[];for(const n of t){"string"==typeof n?e.push(n):n&&void 0===n.revision&&e.push(n.url);const{cacheKey:t,url:i}=b(n),r="string"!=typeof n&&n.revision?"reload":"default";if(this.P.has(i)&&this.P.get(i)!==t)throw new s("add-to-cache-list-conflicting-entries",{firstEntry:this.P.get(i),secondEntry:t});if("string"!=typeof n&&n.integrity){if(this.W.has(t)&&this.W.get(t)!==n.integrity)throw new s("add-to-cache-list-conflicting-integrities",{url:i});this.W.set(t,n.integrity)}if(this.P.set(i,t),this.T.set(i,r),e.length>0){const t=`Workbox is precaching URLs without revision info: ${e.join(", ")}\nThis is generally NOT safe. Learn more at https://bit.ly/wb-precache`;console.warn(t)}}}install(t){return U(t,(async()=>{const e=new L;this.strategy.plugins.push(e);for(const[e,s]of this.P){const n=this.W.get(s),i=this.T.get(e),r=new Request(e,{integrity:n,cache:i,credentials:"same-origin"});await Promise.all(this.strategy.handleAll({params:{cacheKey:s},request:r,event:t}))}const{updatedURLs:s,notUpdatedURLs:n}=e;return{updatedURLs:s,notUpdatedURLs:n}}))}activate(t){return U(t,(async()=>{const t=await self.caches.open(this.strategy.cacheName),e=await t.keys(),s=new Set(this.P.values()),n=[];for(const i of e)s.has(i.url)||(await t.delete(i),n.push(i.url));return{deletedURLs:n}}))}getURLsToCacheKeys(){return this.P}getCachedURLs(){return[...this.P.keys()]}getCacheKeyForURL(t){const e=new URL(t,location.href);return this.P.get(e.href)}getIntegrityForCacheKey(t){return this.W.get(t)}async matchPrecache(t){const e=t instanceof Request?t.url:t,s=this.getCacheKeyForURL(e);if(s){return(await self.caches.open(this.strategy.cacheName)).match(s)}}createHandlerBoundToURL(t){const e=this.getCacheKeyForURL(t);if(!e)throw new s("non-precached-url",{url:t});return s=>(s.request=new Request(t),s.params=Object.assign({cacheKey:e},s.params),this.strategy.handle(s))}}const T=()=>(O||(O=new P),O);class W extends i{constructor(t,e){super((({request:s})=>{const n=t.getURLsToCacheKeys();for(const i of function*(t,{ignoreURLParametersMatching:e=[/^utm_/,/^fbclid$/],directoryIndex:s="index.html",cleanURLs:n=!0,urlManipulation:i}={}){const r=new URL(t,location.href);r.hash="",yield r.href;const o=function(t,e=[]){for(const s of[...t.searchParams.keys()])e.some((t=>t.test(s)))&&t.searchParams.delete(s);return t}(r,e);if(yield o.href,s&&o.pathname.endsWith("/")){const t=new URL(o.href);t.pathname+=s,yield t.href}if(n){const t=new URL(o.href);t.pathname+=".html",yield t.href}if(i){const t=i({url:r});for(const e of t)yield e.href}}(s.url,e)){const e=n.get(i);if(e){return{cacheKey:e,integrity:t.getIntegrityForCacheKey(e)}}}}),t.strategy)}}t.NavigationRoute=class extends i{constructor(t,{allowlist:e=[/./],denylist:s=[]}={}){super((t=>this.j(t)),t),this.K=e,this.M=s}j({url:t,request:e}){if(e&&"navigate"!==e.mode)return!1;const s=t.pathname+t.search;for(const t of this.M)if(t.test(s))return!1;return!!this.K.some((t=>t.test(s)))}},t.NetworkFirst=class extends q{constructor(t={}){super(t),this.plugins.some((t=>"cacheWillUpdate"in t))||this.plugins.unshift(u),this.S=t.networkTimeoutSeconds||0}async U(t,e){const n=[],i=[];let r;if(this.S){const{id:s,promise:o}=this.D({request:t,logs:n,handler:e});r=s,i.push(o)}const o=this.I({timeoutId:r,request:t,logs:n,handler:e});i.push(o);const a=await e.waitUntil((async()=>await e.waitUntil(Promise.race(i))||await o)());if(!a)throw new s("no-response",{url:t.url});return a}D({request:t,logs:e,handler:s}){let n;return{promise:new Promise((e=>{n=setTimeout((async()=>{e(await s.cacheMatch(t))}),1e3*this.S)})),id:n}}async I({timeoutId:t,request:e,logs:s,handler:n}){let i,r;try{r=await n.fetchAndCachePut(e)}catch(t){t instanceof Error&&(i=t)}return t&&clearTimeout(t),!i&&r||(r=await n.cacheMatch(e)),r}},t.clientsClaim=function(){self.addEventListener("activate",(()=>self.clients.claim()))},t.createHandlerBoundToURL=function(t){return T().createHandlerBoundToURL(t)},t.precacheAndRoute=function(t,e){!function(t){T().precache(t)}(t),function(t){const e=T();h(new W(e,t))}(e)},t.registerRoute=h,t.setCacheNameDetails=function(t){w(t)}}));