From 32aae89b4d55aa7e5a7f029bf7b25c68cee10ce6 Mon Sep 17 00:00:00 2001 From: OpenIhu Date: Fri, 20 May 2022 17:56:51 +0800 Subject: [PATCH 01/87] =?UTF-8?q?=E9=A6=96=E9=A1=B5=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E6=99=BA=E7=AE=97=E7=BD=91=E7=BB=9C=E6=98=BE=E7=A4=BA=E6=A8=A1?= =?UTF-8?q?=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- custom/public/css/git.openi.css | 60 +- custom/public/rotation3D/img/baseLogo.png | Bin 0 -> 87956 bytes custom/public/rotation3D/img/baseLogo.svg | 1256 ++++++++++++++++++ custom/public/rotation3D/img/baseMap.png | Bin 0 -> 57685 bytes custom/public/rotation3D/img/brain.svg | 1 + custom/public/rotation3D/img/idc-green.png | Bin 0 -> 16862 bytes custom/public/rotation3D/img/idc-red.png | Bin 0 -> 16716 bytes custom/public/rotation3D/img/idc-yellow.png | Bin 0 -> 17232 bytes custom/public/rotation3D/jquery-3.5.0.min.js | 2 + custom/public/rotation3D/rotation3D.css | 108 ++ custom/public/rotation3D/rotation3D.js | 379 ++++++ custom/public/rotation3D/vue-2.6.10.min.js | 6 + templates/base/footer.tmpl | 42 +- templates/base/head_home.tmpl | 2 + templates/home.tmpl | 56 +- 15 files changed, 1903 insertions(+), 9 deletions(-) create mode 100644 custom/public/rotation3D/img/baseLogo.png create mode 100644 custom/public/rotation3D/img/baseLogo.svg create mode 100644 custom/public/rotation3D/img/baseMap.png create mode 100644 custom/public/rotation3D/img/brain.svg create mode 100644 custom/public/rotation3D/img/idc-green.png create mode 100644 custom/public/rotation3D/img/idc-red.png create mode 100644 custom/public/rotation3D/img/idc-yellow.png create mode 100644 custom/public/rotation3D/jquery-3.5.0.min.js create mode 100644 custom/public/rotation3D/rotation3D.css create mode 100644 custom/public/rotation3D/rotation3D.js create mode 100644 custom/public/rotation3D/vue-2.6.10.min.js diff --git a/custom/public/css/git.openi.css b/custom/public/css/git.openi.css index a4920eec0..10f68d625 100644 --- a/custom/public/css/git.openi.css +++ b/custom/public/css/git.openi.css @@ -144,7 +144,8 @@ #homenews{ position: relative; z-index: 9; - bottom: -6em; + bottom: -9em; + width: 540px; } #homenews > p{ color: #BBBBBB; @@ -154,7 +155,7 @@ border-radius: 2em; background-color: rgba(16, 16, 16, .9); position: relative; - padding-left: 2.3em !important; + padding-left: 1.5em !important; } .homeorg, .homepro, .homemodel, .i-env{ position: relative; @@ -163,7 +164,7 @@ .homenews::before{ content: ''; position: absolute; - left: 3em; + left: 2em; top: 0; bottom: 0; background-color: rgba(105, 192, 255, .4); @@ -185,7 +186,7 @@ padding: 0; } .newslist{ - height: 325px; + height: 285px; overflow: hidden; } @@ -376,4 +377,55 @@ @media only screen and (min-width: 1920px) { +} + +/* rotation3D */ +#app{ + position: absolute; + right: 0px; + width: 800px; + top: 30px; + z-index: 6; +} +.aiData{ + position: absolute; + padding: 10px; + right: 10px; + background-color: rgba(255, 255, 255, .4); + border: 1px solid #FFF; + text-align: right; + font-size: 0.9rem; +} +.aiData strong{ + font-size: 1.1rem; +} +.rotation3D-baseMap{ + position: absolute; left: 0; right: 0; top: 160px; margin: auto; + width: 800px; height: 516px; + background: url("../rotation3D/img/baseMap.png") no-repeat; + background-size: cover; +} +.rotation3D-baseMap::before{ + position: absolute; + margin: auto; z-index: 99; + left:50%; top: -150px; + transform:translate(-50%,0); + width: 342px; height: 470px; display: block; content: ''; + background: url("../rotation3D/img/baseLogo.svg"); + /*animation: 10s bounceUpDown infinite;*/ +} +.rotation3D-baseMap::after{ + position: absolute; + margin: auto; z-index: 100; + left:50%; top:0; + transform:translate(-50%,0); + width: 110px; height: 86px; display: block; content: ''; + background: url("../rotation3D/img/brain.svg"); + animation: 6s bounceUpDown infinite; + mix-blend-mode: color-dodge; +} +@keyframes bounceUpDown{ + 0% {transform: translate(-50%, 0px);} + 50% {transform: translate(-50%, -15px);} + 100% {transform: translate(-50%, 0px);} } \ No newline at end of file diff --git a/custom/public/rotation3D/img/baseLogo.png b/custom/public/rotation3D/img/baseLogo.png new file mode 100644 index 0000000000000000000000000000000000000000..b69a3b5fabdc84d68bedd096a1d344521b026f32 GIT binary patch literal 87956 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 z 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/custom/public/rotation3D/img/baseMap.png b/custom/public/rotation3D/img/baseMap.png new file mode 100644 index 0000000000000000000000000000000000000000..1eddefc2a30363d3f5be5f5075467fa9feeb4acd GIT binary patch literal 57685 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 \ No newline at end of file diff --git a/custom/public/rotation3D/img/idc-green.png b/custom/public/rotation3D/img/idc-green.png new file mode 100644 index 0000000000000000000000000000000000000000..2a8a12a787d2a290f549ce75d9b9d695135c0b08 GIT binary patch literal 16862 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 NjD(_im8fCR{{qqS6KVhe literal 0 HcmV?d00001 diff --git a/custom/public/rotation3D/img/idc-red.png b/custom/public/rotation3D/img/idc-red.png new file mode 100644 index 0000000000000000000000000000000000000000..7d906710933c65bfc1ae3cf59fe6e007d6706ccf GIT binary patch literal 16716 zcmb_^by!?alP=C+!6oP*!DVol!QDN$yE}sq?hxEvg9azK1qc#cf(8%4g4^Y{yWj5q zaliZ5oq6V*KIeJst?KIP(>*<16RoN&gMmtn3IhX!Atx)T{&p^U`*Z`4-i}!Br>@>k z?>(e+Jv5xHJiJZaEMdSF&SsWCIY(1#OLa?A3t!i7mO?Nv@HDoXx*obpiUQ`&j;yBt zU|4+|UEZW&V1z_{TujaFEj@r{me#gT!c=Eny;MM33t=i9ZY7YCi-e_(t*oD$rG}rf zrn#TJIll#!s0dKVN8pXX(bB^d=;P?%@4OW5D3W2&uU?6W@>I`#th^Daj>(2xY*daSU?~FPJRI{F5rK?sNU4M zSy&0EOG^KjvbQT?DjN?E7XdalZ*Ol_Z%$TcH)}R_etv#75CCIzoKBg{g?5v=F z>hv$5lG6Vh>gf32Xm<~F%m1FZ+2rf%u(?CECy)^b+V|EO{ikZ`j!^>B96 zbar<5mm5`WoIRY~ZJb?z92~6NKzbcpCktn9cZUBEP*M_*b8`1EbuzbOR!5wO7gO^OG)taOG-=d@kmJXa*In!^ML;)E9q?R>1gTX@h@46|B>bR zx3d2PgQLrvW=TsoTQ5rsX*Xv_;D6Lv!1mwTA};-J`Tk4R;@{f>`nR%dZ^p3w)3X1o zrT=y7Eqwkd{&(QMUHo_GTROePyW3k}hfI-wg@F<7k&^^#`mFvAK+dFD@ch$(FQ~YY z_k9Ac3jx+1g|c|e7nTxsfJ%1EPq~R@t?7g4iJo{<-^-JO-t^hGbW6El01gfuVu{TK zY!ehPk+Ooo?68rw@{NpX!+Ywhmhgh`&$qXrU~{u)MzNoOrjE|@b-`7EORVb@CHY0> z_oAUlAUQi=7ds3jf^d;}TD0I7!p^g6+_UwZJ6vIMGcqIbyAUPRZ&f1adsv}c6qv8e zT)Fax9%2z(BS+#WbEwO3i%3`|$}W2jP!oQMQv~rMQy6O`osXOycVxE#xoE%~Ys5Sq zTsb@{Lhe397ncPhZ?;L;B{CJV`bj#fNR+5cMsX8HaRbyevnNgDFHSJ0jgy&#Uhs7X zh!b$Wp$MT(W9&$81w*n?YI4_+(lpa@h~)xGxMlV?e`(||Z8tsnV?(MjU>{ZK1GCXX z;U5C(+)vznJ}E*mQ^Omsr)af3PnkWIXXW!I=v5MOWEA4awzF#5odMBbrPc0}MGhiP zC=o(9mD9E_&Gb#ZR+$n6e!g$II^GXqITFqvGLwk!C2pe{|9LcU zHBjX{n3Orc7Xe^J$l|IOTu9jsoEqLFG{!ks<;ZNvI<~o26Am(44U|WOylgb##wxUY zY8ye`*!45GHc%BV;GD(9$LzUGsbt4IJWK7&B`gHIP)zQ!XhSOOE#tI%UPSy>P z+=G86Z1eCgT;!S#BuM3N_{X)Vvp<&zP0ayBFbEMtDq>ou8LCSw(KRJZqc~NuLgeqL z+YM&);cxkT?gEEsDy#SN);k2e#g~%DbM8gl?XB9f5>0unq2Jb{aBs*@Y5fyC5=;b) zqfIzT5pqsYVX8wB;jyUhxZ>F{RuTywK2j2(XC-L_@ygOlJ}NA(y7RZUvt&@)Xf25L zI9j?Yjk@_qa+mh+W_yN?+(*7FJsK;|Yt8QtZc$bvGv4Ri0Qb2I)!|-k>w6wLn}HF4F<5Yg5o5S8^LT|V#Fi3L zaB3WsbOe&PlOY5Ml-^{GNTb*NtpR^_*gZWEaMi0LN!(r6>c*F&1nV46{AUkE$6~TK zuh9a26$Y#rtq}I<<}sH z8Nx~s0`W{}QWfLqArdHJ<&p`_Y)@d0Z|%Z}u!rX^J!D8cl&K<6!J@4b#@(J`u(esp z;|(|A<9ptk--rGyhfHyegYs(ARt_-4fG}qR^_7xxVX^t?0bihp-e7=j_rMV0vN_8ctY5?R-LI|BmRaC%M@uYf@D%LYp zQjl5b7`?5=9RFnP-aa4*eL#X)S$2QHyFOp4|+K z6NW@?S%l`?u#acZc1^48EYF^w#6M3`)Q13yL znISGIXN8BxULuYjeMkk2QH?|Y4pPdtU{FV=%}R!m6|04ztTLsP{Um!Rol*}&3Ojp^ zH^ZEPizSQzq;pnlpa^xDyt#hn&)6fI=1l6r%^pxfO_|v-<`?E!9F=3kGd$6YUcSKv~=j6O7tO1?0iXq;eXYA9LOkPjcB$0Tw|} z!!b}y$%o%1KVv}<)Xj9Kr9dghC|QB(E(vG=X;qdbok-4nx!P9H_jPDL9@oOaBvlh04#iNYK2SOe zR)T;AbWEj9Zx*2#SYRSfsHcijP)JOIB2peZg8?^fX#k>!?Fl9vZUs-QrFvpW*5pYd ze&RaEICR>%-5J0~E{jQcbe`JH&Rrp(RWklrqhcPN{B`TynRH5KHVU_CieWM=L)ng` z(K0wFfjWtA$=%n+oh9FdmWft9CI&$1SsSgHM@5v}7yWybhNL*C5-k`N$OwBFu#M)% zx@ry8l!iHuJAsS3Gs=E=7EsY#lS<4UB3yG@Ku@oE447#rR;vD*rObD&wQf19CQ=?P4bWoq06 zOkrho-$D@c6gufE|BASr+Nk0C1kh zfm6J~8GV)f`k^g|xt<8 z{eg&3{jN4jTPH(4>yf~k9B$ToMxyjDrFsQha8%H)lmx!nRVUp+Qg*?4mEhBJ`#J&p zQ7tR3TYo4Rs2^b-g*b~|Gvq);6h8{Yqd*YDA#Wc+4B5Z%N^iz!NY4D>r>)TB)gSkZ znvo;vGa}G~e>nd=u2oh-%|T7qt%Z#DUu)c5p1)h}1RQmH(V%!NdOVH4hwL1A34{?U zlLtlU1b^T;is=>&@TBS4ai=h79T+8d-Q_{aJSVNwy~Q_$Y%a%%8y~!)ZrZ$Re4e z5<}EhMfrHdn(fTh@u^jM5;o0PgYR2K6T7jL9p2;kP`0@2n{I<#m;E{?Wi1eJ&V!t- z>?lc1GYyX}wW=*?Mbbd^AqYV>ZL&;rDDFv0IK)K31@yi9YhMEy5`%fgVtKu!)KBSN z8cxl_&6mZo8Jj76qhFJf7WxTrQkr`J5d=b9lR1X6$i6bH`28Q*v1gtr(DtBwMaq~_ zP3amp?6G}3It%0{!0@q8gaj8570)7D`7cz}JcVBQgEsasauXNY67U3}B^V=Y6d+kn zOk-5)ORz5xJ-&?KWP@nWg2$3S*P?^mdhLx*=FFdcZ-gfxCI7QS{C(_c2i~Pbnj*SF zqE=)qDzR3C>5NQS1BP`Bcd{~i)(qwkU&XgBB0YaGsXco)aB5+8%9+eo{v{J2yUV`- z0AMkvV5c=mGQpG)<25pxve&S}MvLJMNXmdZ?i+XDJot1d?fu@-eTXxIhLuD!N5XXD zKvY)DF~Aiu0b(#abAP*Ot4SmuSeK2vT_7Q%Jn+Yv!-{-!B9w%_A8D28%UIyxX=2o} zeq*9gOmNut^A!8a5!52pPlWcLUpM3$Yf>e(i(SQt6UX4(HZ9P!cj}(6L_3PD+8rpB0z3$z@DKlPu4x_?k!romNbl`w6BkG^bzLqOn*p`9z1<&-(Yj-_%D zD+|H`>cVA&f8e+)kigfa7iWfK`N=Xy>Cdk{iKG z9PX*aYRK;f;L*aevC`n1VNGe~x*(mp&d?6p+YiF{K#DgK6?mCJE%~)E7jL8g6ol5T zKSYk;?AxPB2|p`6ju;l)B2L-!PBU0BiMhrGc59nZ`j+-Lt7-D{F7EHqPki1GS&kxd zj{HhIjB}!fMEa{;ArpGndKp#|p4mz$jJU>O;Q|JlhA<8`Dt6JA8O_XWPhXJ}c53}G zF|du9#3-Sdhm@)S3^$$Eub~Q>Ej^oBy|DySED_LxSa_q|B$Shw4w?mDgkH<=0~6Pt zw@@%dl>7!Imey0{CPFb7Q>F7HW?&vBxc!Hud?^(F!eAqus>u{=hsK~h=1qg-0XO&i zt`^QoTNx_Z!JT-5Vy#TpoV6x`yAd#>Nwb*Zjj)G}YTJrn z%z=mNNFjduur9U2_$13;5h+F=ZX{HlX<9U{3LQMahbZs26Fqo_L?n;vWx7h6c*r)i zgGHOz2%v44P2~h|A~c1&%J!E-F8Gxu$-xZro@TVUl{BMO8DCCxJvREbJy z&0eQ?!Rwegg=-)wr>Xk@^gGQMJ^)76avms&NSQ!1Hb^IY%tAnm6KbXz-eK0;o_qJ5 z?%b0BZLMpe1V`@BlIn&#7r(L-U=+Z6Av!mnf%ORt%=wewu0cWCBJqI-BrOF4Tz_6KTt zKcg&vF@2c$tx3o-T2`@@h>qU=@!>Jo&=k!EB{*;_Dy|$Ux%h*LgoI^J9RTzIkZjy? zKIhghKq+{jK43Qx_5vl?lh!(!5#_6Y;VyV$f))FFDrrhC5T#iqzK_{R_Z^gFcS$%$ zHq!$Mf4G@q-Sgq-Rahi4LzY1j8jC+ykE_R%QiBfR+h7KvJ~NjX9vQ9F<#pTv+#Q2@ zuZ}+o{{GwwpP*wVx&PyK=cRotlob}MDlUg{7wJzNxhhFxv57R*I-jnv`GCd92s>M5 z{oi^QFU-H~GQNz)wW%fL2)G~JMk+lp)9NGyn;fb--G)*3=39AMBM_VGam-q4*`g$! z1EH7Juw%NvkfF*s9e8_hdFsB==Cd zUwnl{+bM?Q)$ETjc#5}&U$}-SuYF&I%8K%p$P)HpBk#)mF+OZPJ@(X2wB3+rKf=By z-t7>+@wxuAH}R=ikt|&-sTvoIYif@Y9Wyo@UYPwwl@vL-P1HUEZnBI!%uRB9IaUyK z*z>d_eNxo}4oad`paPrO#8}%+s@P1HwG^?lRWUdvR-6jjt*?6y74nO~M-KPy9}V4v zA%5u)p!@;u%9`2%vqVlzNRVxuWTl>JbS|Eg2zD;7M0Idss@tw31G-Y9yfblOvC)1o z$s+`#G9gmF7s$U(;cUtVE1p!de6;FzUvb+d8!UMl(c%60`qjLmD^@p&09VO1h21{+ z^QpdI(rO2N1)=qf$H=}e|5*RhLeTH8&xUjtAHRGF{J;q7_(~tyV~UAN5XFang(WM6 z#6f|BKuEm@BBdqIfMHNDt~_t}M7X~IL!^t3&834#lx7*b(882awnT9G6z{n9d$iTj zji>fYykiAsg?EL)FjK|iz3~3EN54L@j!w|JVTJ)xTO|tL`%p7P)Ntn0{xXfo?Esj^ z8#oJ=ECsZc1Z4CvcmgI^`8=2+`hLpULPl5^U#$U@W(s-L2`Nttn#w9SuNAj|@8NV6 zi+^e6uTcH($Z}p+*6cCDH})nw%_6_5++EF~3DjwSA8PHIKJQ95*xjhS?fV{s6gv@w z`2#Eaqo*W1Hyvja-YZcHWI4~(wDu5f>z(Xg_KXhtSp*r@|o3k#%{+egK~ z_aW2P5F-XJ)xmOU!)&c;V6AzJDw?+@H0M-u7Al1aQq_-6Lb(b6+zgwM%)-HeW zSQDTdUp%I_mimXLfN#0XEPCw8bw0bztO$w8-_ytw+RIH0e2{GYt!9*^Ru?fg6ren`H#rNcLhw?g= zcl&^x((x4g&KpZ4uo`At?Q@`rXYtbFBkbd|G}|lC#=)|^i}Hk_6;8hwb~TD8Bmyu- z8v^o~WHgeHKzl@qw{QpVa|)AAx9^jxWr{64o272DB2MP_1C`62&psFD z&))XMh0fj5<`d!BJv{6HTE0?`t8Uo24ohgm0kOZo(di*6Wuisixg$G7_ z7r-`qWqJ~@YW6CjxLdwNZxl&CZp4#(u#yyOz8Lw&L5_Wd9V0GJZU#9%dPYvk<$}Y? zd>n58`sw`RT`!@laG!i|2{&4`((n*P|1J)wL;a!g|L z>TXpRnXUe!0zYre=jBaae1OVklHX|q(spx&B9iG61)d6f;;oaZZ6LO$_J`S8@S`HA zl}_xtO{$WWQu(e%H#svad8G~tWJnu(qy}jq=Ab4N^x#c=Yl_Gk>oZ5W<986Ugq{?3 z5I;E0F@5KK^K;v=3UNTAAcq8)dmR_uxy&mdVrE#xB9Ur;-liq+Yf@co(u(QC6eXuJ?_3{T`L9&v zrs|eKt)GNUI-dDuLRp)?Hal($zE)K8<+z(o665{}v@$8u1)vcrUrqw6Z#Nwt9#h@T`3qK8OSb2nnn&?OYzT=i-y1pWiTsj9V6BpExQjzH3yKyNCw2 z{jhIJZa4KL30>}=7NP4$UWrOvLI+3`sMZfawIBo4(?|U;QZKAud7}$$3(!Z7@{y-} zwKCue$T<_OUSlv{wU$~!d{1zx?g+MyZ(Z+k4YW0T>f)*kd$VCqR50};3vKi}>ROq<7y9p% zb$p``tFtk;5)roE=ll6p|ByS8DSyt`LWummP-rbeLM|BlWHc+U;u-Ik7h7(NO&#_q zgvFk`nc268>3R>3uzTzJjEJzyiG0;It$Pw$OmAF^D0cA>g^EF!D=Yci)(x3}y3Tnx zEQmd;Gd;JuTCA$`{9BO9?c)%SFr%P(JZBJmEHkS0!laO}D;cW_HBnIf#Bih#K#4QC z^0w1G1##oO)RB&q$}hZ=a&ge<9sH83s%X5^M9YT+WsaQDOQ zg^65G0=kO379S}c!`U|W}C9DbshPuBj0l?vF6x_w zJWMi-+?AVVzVK~nvF?{Pbc+!@M%&Lqe`itA7X2JioUXpMTVTg&GIn+#63wHYXqpQ3 z=gy0T_hG%q{Va0Qf+}w%e-7?^d2C9LpUeo4)4JZjyuyUex_~*dpa^z^9J2`094o2C zoH8qBYLDEYdfZ#kEm*093YRN|huUZl2yaGy}WGe?pIaN|Xck_V~Zza}d}4L^Zd z=RD`V76z>yeh{Uj_whjyi(IFtZ6VEzhPpqEW9v6~utOA|4xvfG~-}dp8n_2Ic<3ZB3nIEnr`uo^;Hx z=*wOLgerw%4i_Ithc0n{yuJ3t95@7_OEAAP$||iSvu^S|7Zjq;&wxGoOPX0<7`2j( zm3ps@kJ>Wn#!{quPww_hWx$dp)D;=v1x;o!^TPkl_$QQe$dW-v#@@_aeiA3l8~jro zknQipYz$3?z#6#LR9>Dgt&|O-LHAZbz$bQzNMEGs!%7=?{$0a+?>p&7vib)RgnyU zlYaJgA+^3kff%AC0;|<}oQ;c4!?C=W7=e269VI+=|L<VwS9)%6$Ob}Eva>a}IE z<<85Fds%e8mmH^$OCIbT15zkA>DR3TLXnx&^thWWQfpxf!a%ulSe-0k ziM(4GT2Vw&N|e+OV+jE1rL1npFbP*B^4gNvBr$C+tT=gH&}@`5pZS)#_>r4kW<8-5 zI2_zZGEF!Xz@{6&gOn3GZNb9z`N%$aS^`VGW}D%&2C!gd zJ0Op%?oQP}4==W(pwA{WTgRS|K~rM}d4O~dvh));=S^Hw;~~@RYwD$d>nTm=j0q!o zJ4{42f%;)RU0!*KFqaqj1jpJdOctKTf@ivxA2`E>pU(0-VoI}`5*>G$i>$wl*ru4Q z5$er@Cx*VL%~pLX#dBybkm;|uGA*<#lN+)b{uqj;VIMXvoy?y54P}nWSx12VRPHab zzrhqhx`ZWfX!AI%x>5;bWcY5~T{cX0sU?GS^eZYwAQ^E!@avPwFNUhAUyf-v=m~%i ztI5hdQwdyYY;bDe%~_eC*{f>Wqy8h0zEd|uYTBC*Vk8Ui+V%Fi2$e9Ad%v?SplBQ6 zaiQMjM2@(Ndq4>_%NELRQ$-Jvx6Hw1T;GZ9i4WP^xBvZ@TR(XgGi$9mP1ZsqS5(o?;sedrs&KBe4%MTZyWes6O z6(@lC<|>Sxjk-xqw{0= zf?K*B`o2I3H`0{VGxT{K9~6lJvI$iRf`in;Vm;U<{Epeo_&d@1(aXVAIKeC|GZ6t1 z!89G^CKX5>l=vfaC{P{`;zQ~IM?tP!_QjAk>^`mqPCOg?Mxp(Q0$~f5#U@V+>*o4; z_IFiK#Kd*ceZ>p(o|vyArRyBN&X!>(k+#ceq? ze$C)|B!I%^hdv{0RWe`;#m8PaLL=%az9 zJQ!rhu_Whh_Y+rYYp!3f=Nv)NoGj-P5Z|tAF>dK4?F@LYHh4d6WO&3lGlmbpT|XHa zp~B8>$8bE$!BNdLlzPZ;_)_w97oNJoWu~IE$TG+${d6sEkdd+)LCaKhK62k_E!)X& zxnza&k<^s3rAJ7e;noc{s~65X9A0`wE#SZ!GL{MwaaWZn!^0=;_Vf1^*&vd0 z&6QH=G<&qua%#^Xq@IxW+&BYl;BQ;VGTtHVE^x_smi6lPLsKWchW&^0TJXP#EG#!# z7(EB$>vg=ZHxR7Dl*pBXAIZA&*P3+9XkQ3{V0RT12dOEhHKaBI5G<)ajd%P(U} zDt%%oa|Wamfh>AUi@?00Y>wI(iV547S_Us{p{|>hjtMf-(ye;wo*o)H&@s%M(D!>R z%_VRp#6+++RA@pGv}sQA%h5og&63O{q4Qr77;y<9305^VELt)3TD-H}pYqUp71oQj z_wYsZckL%Gpvy!P_?DSc!ExM3;%0ta!vF-;u;`{?q4OQq?VfYoqZdZ`AyJx%;%E|{ z<`e}SL{n7oQkpy}l7mUy_Ce4D=x<(REx&TbnpaJ=m&bxgihv-aze-Hg82(CQwrzAm znNMH6H6!{CSosmG%5nE~5C9|pdoFss$oAuppC6Qe%=Z_86hg!v5LXJA-+gjtSQ2P#+h*d;c%0!aywrofGP+_qF(G9IaUFNE{^u!ok=h zICN+_3MJDS%Edzblr;(amkkYHKmS&}LW0P2Qa0K@hQ600wbkMvEv~LnmE50*zM~Ce zY$iPieHbL}rvE^a!jUinueU{^ZpX?sn~KYU{zDG;S=fCXt;3D5YS#&vYALlO{3UE* zmQuc9vLUe)2$d@d+fYEuA~xg&&&5YbY@GVQTCgbGDSKQRV5e7!La&@h4{`KFh{Bn1wrxPvV&y^GX{#= z%C^ADhzMJ&$=5$B6Vhl67+0rFHJ9ey9aNHrpK9pPA7ufW+}2i=>_VmqmwgUg3kcFm z&cX4p=^ma`@B|2%&}!%d!)C(GH&&S8%NRsK96V$-NwL?aJ0ZkuCWR`G^@u@B)c9px z3`lG7!cZxaN5*+DEC#HI;a%WDgH(BISYHNL4x=+ouP=bD7;Lcq&1vq5#g3&Qs|Yyh zIjF--PCvmIRjjSViNM)3X1K((E#)wir<}%gV)x~J?bUrQeJ+N1=C9bVJ^mET$G;^_ zsDFPhSAt<=_nV`7%*=}=MRJsB z?V7SxI~^-M;`hhKrC(Dro#P%bhz#;9k} zf8T*HZd5}IVG|YlqV^e$sU{`CP3@e~blA_5(*$ieyN68b_zF0%*bk0)0vBqOIi08$ zPuz7oJ@-l8m;J4UtdB|`KCaHJd$pB8jh83s)wSM*CPIGMT+QJb9T$y4PgtM1zAw2t zR}J|HLt}L-$<6l#TIHy?Zp*y5u{Y=PmFWBe5)ww z;-(zDFP0vbXoWun-z+A-O#+M zik&mRyjm)mpt~Oj$^zTDy%5j2`nG9bth%n>oM9C5OQ3{hk=Ech{!357^nt%=Xr-UtIE-a8^tPc4>R6nsaeS}&ewqHB-?2Kymv2Ihf}^lP8fhXE4YQg9`^T;J<<>I$e< z>XpZ1G_6boW?$!+6b(0L=s^Y1Sc;a%N#zSfQtTR8*M;J-q}f+k!9@bBNdoUQye$#Y zaI z_;aRUBEed;&GpJT&=tr@s}y!VJ|U{G;Hgutv2X3LCVZcwuvyf7o83H*&qSb|Iid~L zWmyu0C1zAEllxSygsV;wWvZ;5h8Fn^SV{#mOo*4afgVLPTH?|e1{y`v76FW_7 z;tR}xIROjw2Ku{m+@k4x%bOyi>(5hqIO{06#mMx|9HztSQ>p)qn9tr`!HJmrV^?-UL-!tBkHlCn1&^} zKUd_=P>W=(vyig{_IEdR86B`@6FnT%JiHq)k;G83DiY}m!ox@z3-uj;*s?~Uzc*uF z4&(>OA>Mkm#sb|r!`2b)Amaq5DI{3mNtWPETb7PP8t_)Z3V%x|p5b~P7P?|3!Upx$ znqK>_yXze{E;YSI#C#Sydkx<2o znzd>N=A~R6ZOJu5RgTieA0)86w)_bwugY+&=1kMsH9PNNAXqC_`~Zn9srL;J_VJ-0 zzx=@KO_c$ip3C^1be4K|Dbv>ov&-0=Hld$EePVa{Oim|~>0Ovgo1N}chGdAV!!)#B^<4UsZ%c`8RP`>q z!JJ6dSi;|*f7b|aJ)+@IXGuu!$vb_zF0Nub*ZT1gQR7LBvTZ|l(h<91XtlN^V`v60 z>+FD~0@7$oyr&sp7;{ymRcSC08C!2RcGd;?<5I7mJUhno+KR!;S(`(E)yWsI&*1gz z-$OZjoxI12Ag{E=l{6<}#m~VF>GV}j#rC(UK2%4}XyNMs66vKTgg8aA`E^XcuIRVD zGSQH3Y=mOMn}9w^VH4dUtWamln0O-#k?~h;mfQL=4{R`_h{3Hl}=pJ z7S+ATm^l4B(kgT6+p?}S^y^_Nt=1w-^24>*7M!qajViCptJ z(G?Crea|J&*&qK`@gu#N4gJ#aI)Ui|0)XRaSl;ua+6rR>LRNTn3<<31oo}+UwASgP zlOaKEE5RH=*N?Ny=hZ)8^5-8#4m@y3^!V&E#`Eyvebg-^+HebA7~}A~Sq88X$@c)= zy}(~XHwr*Bfpej5kRrQM3;}GB0WOT=8bj3u!o!uFYNHVbbd=>N{EI19z@Nwn>8+ew zVVK*EM=}z&o_N4W4ptm@PPv_cSJbZ_3=;jbJ2W(wkEl3EVMGxRPMr5t-5uUAml`y$ zOqkTe$ew>UJ*XMPxpH|$X1Vj6W9Dg;@KqSI&B`9~7g5DDq|K$A2}y&7)VFWH@fqLW zYTooi%ROjP!`g2CL0;#|ze+EIMgvcGL9E zn*TVl%Az}i5%hAAI8a}3mvym5(Z2snlkr;iXPn+=LR7@Z{nxwOf_>-Lr?%72A3riN zmHgpDRr;b|mNx<~|C@4v#7Ff(X0#&03Ev<&MoWtkUSY@lGb4pmNm1BZql=)+JqHI|$CM5we7AxrE^af=%q7E;(ahyal#glZ zhR!?CVjs`1Y)PaRi27%$d7JxBX$v?I%dE7*9@UZ;TuZ7o@%^mqgR1UW^~CsA$PfEG zdMg6&Qp$x;Ox=C)__%?9+W^8p9gl$|Y)MMHyIH*}539|hf+p`%nb=-QjmV!OEXKRP z&n%QJ83wg>{E5-HKqg@cW6z~7=aIETt}p0Iy$TRIpSN8~pxafq2*c&KZ#v@xsK!RP zit??*M`vg+-WM~Yl*BS-vxLZweLyg+Q)ND3puCM3AC|OiDV7{i0J^WXD|NPOL_<~2 z)C$v(EB4GEIP4(Djw&UGIY#gMH@*gZQo2ZfhH#p`Fs6Q6CuZD*&u_)$-+dcp6Q(*n zKJIuexh@$!_i(n{_M9m${`|><@!|V$hy$$x>3U(!J89C)~N;jJA7tx*84*0=_^IvvC{C4Y+3pt;pjdi8Ka>5XeM-H7me>{vmYE3Z>4VqXeHN870eVFAmXS^c(E#)Z z$^uu?gAom7;q*Fn&SmxjfsXcUrq4cy3_RmpXZMT)mt>2Y)WkB904c z*5$ocahZNyKIT?PBXRER6T1GgtG}8*X5{mOJ;PEHANGiWgZ`5?3F-8w?4dQRDB-si zJ&xIAH@zd0Qn@qU{gSrolDW?!Vbw7YqYj0oo|$;vzN2B)@x{AJvjO$ z&y#Ld|HAnP|PWXzuuU0fcz(?r*k#)@=)WH-G{PjB#S}kzkCDS)EBYdJVan zWU3P?v6Nz|&U4g(sm+gm7sS^%rplvp8BI_=huip@vB23`CH>kN3m#u}HiD`sC7^0M z02-sur0!)w6riR+AFD56>}ZDCUIor%!&4Xr4Dd>xOI=N+0Uc!A6(*M)UgcUq6TD~s zfInSlVC389G)3Cm_fIXNo9#!@=@qDXxL3GFUKhrxH9d8oS$qZaqgu}VH&<4`kx{aibXF_~3{8R=aE(EN2vs4ujKX3E!IBsGHSGAgCw_i@ruyje+ z1iPsDBgYYx(xb-e+p-X^mVl2Kx3jRIc*T_0@~0L0wj8ByULQ>6@F?bkimT?jPRIWI zeBAoe)w3J$iY&TUUL~3^dAp*+`*M5)@A`6p04Ul05&L@l#RC<;#nKpZ@u8yOMAW6H z(@e^FVyelqtC+B~>NqF+%u_0x)#1KW?4B=%M2+{b=uVDi_}e>C3Pj3~IJY)pPYFs{ z^r=FkNpf(#T7hDJD-(h&e~A=WTON&r=i87*emk084y~Vh+EKV(tAj86pSy>)+)?s? z&<{8xVOb7;Zr&`q-G}#`Iv@oom~rqE_S8{(&&SjQz(e9Yk~fZBkvg?r}A|Z(Gs(SxV}AcvdU3%oMX~Bw2;}$mLD0 z$S=cpC|U$9KhWkIR5(Rd<0-WG5)UlYYRDD)B;7kmJ6uA}rEE7G*F2A**44ocG4jg5 zF4j_lVA@BOYRf9}px?Ze9%oEWLG~44>Awmt2A+Q~)r*J-q#pQ8g*70IpuMWo+hO2) zPKPG^MHcmu+X+S6Txlw%1*x-YY3C>^BWvSwBT&ivf~)rCaPtC1FcTw@n4)SXPx8;#-`ID!<*UNsY!(-jp@mQ%VeODKflj9*vV zVoFNPcZba`c)AbI{O%VZd&BYZ&F3K?WofpnL_?rZ8iV{Z%$@LQdRf#QTU*B;R1Gi?~;E6-Dd`O@3^7=KCnSkvg>@p>x0F9&GLfa%Kx zMy6Grn@U{t_9iVRDwxMD?*fLao3C*-SbzTpJgAftTCKF$v#q<|N^A^bzJ}&RT+oN> z8A0v|PpluGzN2BK_xZdO6czJ8i$zYq;NB@wbkF;&ttB|D$g$zEj2*D(VPTodj2K`$ z-C(6yh^JyeGz*(fd4{@nU~s!0&v83f*o$e@bML-oHnv7Sx<) zO2gc6%kq6VqHC?K{ANA*_OzZIf<~8bm`7TDEF%TT$Z{B0?!K*`xjkTImFczE6xqlm z2~%||BGRequ^G*vpb4y%lUeEYzDTw2o@_Q6`Pt&$H@&LSB(>J3LYhIvhN~AvE%dsT6Rs#KVr$>rCbjsgRCKjv-2^)V2-v=zKnrrDbw{ zB^LI=f79Fp#!Y8EjQErA_sbx2qVNq3;%fGLKR14W&5~HP2?g#9lQVHkNJ#_IC{%GedT50?ptl; zdw5S6v_rvou-5=*>X94tM<%>jny2foX+qhWcikha(`|3(%~E#i`*@?$%Qf+B_N4c0 zWSppqw>KUGmmB%E8R{7C68hTCf-*(V`&0~+wDM&@8xQMfqJFQNI^@{*1b(eajte% zi6@VVN*jlbFBpG1Pr#4SbUgGCb(;m#gfC8mSFiUE5WX9B0Mkf^^=sga%;zAx{BC70$ZnLD=Gmj`2ZtHROXaeW2-}yXZP^L4q&(K(@(~u;x4| zzNh-HO6Sgdx2xmZ{LQ9fr>WY<^JR0D!93$vC)eo>*a`QaL2jhC6VoEMVU71bwdPpL z>{GtCXGmI`RcnT$dj3DJ3GJ7RgHTTNW_4YzNrMFY_?zd4=eKUI^f3^$lPw_ zTk}FTv!_S-kW4v)g-)m|%2q8XuJ6TC-97?zFwG5EJd>4jEGiapXX)Kbza^r}ZSNcgO{m<3Z9Zq&6Fnfk zMZ*3{B)RbV+YbZ-N5L19m~1?XStTMj%Ua`+qHZm|`&rHfmv_I{8wvk(-J0GWh`w@b z{dyA0mn7K0|{PAHbW+9`U8pvZV}6hF>04Wp^{k%YcjA6yNWK6-2w#nfx+F~-6aq#IKdr)1RpebaCdhL7VNS6?e6#f zc>DUC?&_{{fA`+1`@40js=K3AKg(jE5~BhD01SCKsW0zk!TZ^PjQD=VBAU2)FNoZv zb==e)E!;d!T+9LDW{#%jKzVx;OY<-0CT8Bw!{$N&0Nf{Q4IMWfWhDWKqdlw1f5@e=M;A*rc7A?-HV_9J2M5c$1dFS;gPVyLi-Rlm ze`}C3cZIlEJGogqIspGeqlu}byPGi8yQ}}F4fam|qt?OozxwID$Jo3~oY>e|LI2UF z{}xnM{{I)XxBnk$SGOk+Y!w4^vJ8k}l>ZZjLS* zj*fQ!-HobNj&6>wR*p_U4h~jsAicJ=gPEhJE5m;Rl$8bK9bDZ^93bZMQo>a4Dp;+p z%>*PtAPz}R4oOKVDIRuqX-Nr5UVbSMh=&&>&Be>hFZ176DMyIAy}5(ie`C%5FIMV* z#r_8w?48~%OPRY^dzhQaxH#Ga|Fg{k*8jUN;{U6@|H7L6@4iU9AMD!E*J|O2W>z>^qp+??9$)x@jMfL@*tb9yFc~r>}tO~Up@iQE}D_{ELM2~ zYN1ltQmOzHnor|$DS}$s4;N2e-4&&6rR}AbGDSMw8Y;JLWi>TECof(1Xo1d@@Ub#n zcYCUZl34M`VN+3Jgk&LBrzZt-zQL{{C&ugE)dNN9br*x1o%=>O@bNz*o7pf!MskqD zo;*$oD%|oyRJV-aL#<8)u~?sXL3QB%u&KpJpvEu78cR3S!uncq!g#AwNi0Te92p2j zsA}|>GuItAa?@{8S;)qB2%TxK)v2v3=>T$3{p7gwJ2-0gsz9Wl5>tZaBkk0p%ItsE zg~@Y$Fwav>bCy;jjF-!h+DWqLeJ>zyfGwEeuo4IQ*!F|*1&vO~C*Ef3p+7ZB@WpV` zq!eDz<9VsdskLSQjEcii@WRd_56mRlw}j%S>*D7&GRYN0Dmm$6FRj7s`CK!Bsb(dU zWs}??^dS=i5ELfNAj0okcuAUG>yM{H=vRH6c3Za-j|JBvU4%PNEOKP$-p8C+L5R#T zGISOph+*I^j7kV949Gih22h2leK0S>SO^`!TfHR=QFRu!i^7ZPCE^)GB>30?j|RyttmBbpS2PN8wvb``w;h20A`H!z>q(bm)2RmTcUjkZ?shC8LHqw-e)8p_)!c1F1pii zQa}S78+}CuSx(Hj@%-0}#({>&b#n3*f#tDRvcOq`o5Wht+wYg|XCy7?>(4nWx$A_% zmq7NRNEW^h?r&Dczr%QjoQWE85%=-OYmQ+7Fya7-8kj6x!>zW#Uo|c@HUJ3&R}_ij zUeeKML@OO!5$KAk0kky%Cgic-WXz@A(gD!@8_&h{OA#b+OoK3qK~! z9fTi1`lVNDhO6tRr?o8Aya2`J{Pv;}Tz!EzK*CH&n|OvfKj5gb1ePjY6c=&M5RaXL2GwRZ8h zJ(p8l?fw>{)wpY~pqoO}0m(S+C<%G$M~eJyU3jE>Kjetq>0%oIT7$zuvn%%5Jb;07 zVGzmS>Sh&T(=Zdu3DttZpZ!E)^A)?;ksjuEsC;n}g0QJLfV!aqwxSX@}MC0h5( zk&Dw#7AO=HJ{sE^c3{2B$Xhg)xqRRoe zaA7GMsOl;6Rn&=YUL;Uw9(v(3lZt@Oc(ll2s2ntd4p=`(i{g+45`S<88I_UO*Iya{ zKxGb#oHJY>(J+nOloEG#J#WvJr$xCqRAa=v09g=eN9!|^eU`)DH0b*w#*y>|Vw@G4 zD%1Gvg|dO82;vO7s=?v5RxwwOa4<(`xPP%>f~V=w%OQ#K=2fWYo3?U6hj7!{g>DhG zV(Im}A;Wissts?Qe?yWsFcY_`gG@^L z`Gtx1>)o`75qJ*%{j)WB$Uo2a|v7`rNJjL6x#%Jfl35f zt58TUe9ZLn_Nwww54+RwC)hH0=FN-b3pzQJlYTz~SS%=Vl^kHt?CabgN32hB@M&?O z{F*=TvHx~N#w@wx;j;9X)bue#VQeECN|o4A)HiiijR(W55oUjDmH$9jW=+X;Ny~kH zg&fvMtz=;zq*?SHVPml50Ob`_V9J?fIcVfmLHC5~sDM~L?urPpPK|HLL^&mk~ES*`;NyvRCf6rl3 z0P&9rN-zPh>J)%l5M5WdUbE)-Qc#JUeTx}6<*0n8STVgnB2qTHpunV*9mgl%O;~yG zg%6>COl1&Y9s#dh4)F8#VJ-cUT^Qw@f(LO1M8`1G|GAjK3L*weXwut3k`j?owGKZ1 zAgoCS;u6{*a^Nvy5x7wHImLe%J8*#q`q9~|mkoTa?3~LxxcHE6s+&KU0nG_RSqUZU zXPai9#-M08k|b}SG{AA_4||e~+8?Q`F=%sJnyw9EOZVSRPkc^{C*i>-&VYc$O(o`B zM}w_0iJa+~3t?`KXoFCZe}iC>I{F0^5-g8t8@<0$vQ%)0vADsK;k2PI(Lc1nC>5K~ zM|5G1RflM)gV1t>G>8EtW+K`t0F9vrnq~{j1pCRwXdzYZx)SrAW-K@yyyO@4kXyomEntF#@=WK+I?zhmSp!Gb3?;o! z&d7AxRozk$ygpkNMwR492-N9ZIwO(Fl7yi#SA4J?UaTYYB8TuNgEBk$wo+@(4{`%+ zc$s+<9gAKMl7&HV+fU)}QVLVQtRi5Pz{KVtJ*zK%^li~%8et|1AmRw>X`vlL06}Ew z&no;KYg3tUu~-ulTn2cF$S6!s7xeK4#N7OU>k0MAEHA$nGgt&R`O#*R5VqmNk-w6{ z{*g|>h&@m8fw@b$*8Ro?2u-OyLY9sW8@3xjv1FH`Hba&vIs63hFDOjeRK@aRtf%Cl ztPZzO*o&nl7GwC!mt{x!MP@#?2w(iEZv`&v(cOT-D2nN}S|l@XAyh6z9(Atb_F6#)$)i;Wj>OWvSA zNX`!~Ql+gnw&>ci8L)~I@uIsGbN{rCLHaWTs26i zk@X)<#aU-e8{pBx=waBR7EBhUZYqm4!+XSaaUO-V#{QgW=_Om8y1#@ylWBj;c_GpOaRyQj>#%cG2xg*XucvMp% z;953aOh87&W&#Ri)39Q*Py%rkF~BH{eCEdGJE4_^8TW^IK83rx-Pb1s0&E=eBoRvK zIALj8k0YVJXermKplk$vWifzdGBs^EaReZ0mVrbTS(d&zN^1kPe% zl7bP1?Un0=Pgcn`(BNkI5J9n zE1F!{&9yTqG+>ndM$%hbm!%&+RLj4?=Kw_*=|Z+BTCKpy(0x?Yc0QT}8m-OUV8=+u zp*Cm;md6A{3!vczg~`JVk6=!PLJAj%8bvT2f%95JX?GN9pCjM8Bmd z6w4vfNygur*T=sMAS_)Hntx|kX$i*G3cY%MR&Ot6sEI$xT7&Iw0L`#0anRk2;dnE> zJjV>1$igeW0EA=5wK-SnEM6`Fvom_URnnU?<}cafpV~v@o2OLZJyLDQl725FVH+~H zLTv$_^3o`Y#r$=(br)p{X8t;%JMMRy#sa0q{#)GPV?8@6A`kJ#(n_s)Aj)hhj)4j) zm@??{Kph+Y9F7_#;MXy1fr)~0at&dXcYXr4k`1%HTd{sT4ZHf${tsod&Wbl4DG$ae zlah~T`-P_KOWdvP59fy&+?#^_i{6nYWM9VUovduI@Ih4Pp$Ga-Th>`UFJ^6d(@+r@ z<$(jcT5O!cH#A3HXbM+JPX;#51P@NduIyIGemtZf>!d=+#;Vsl0pN>@ofo2`N!k;W zy@BlN8#6y;&MI>EV`4|yF#6Vh!ZgQNdJJ?36rYf?#D3$@|H+T0_r+BpCVI;dF5La4 z9d+fI+>942MiJH%HRchGUG5YC|FZyu2{?ql`Uqh0h#Gpj`Y6WtIUZSwy14nie&%m$nMuZHU|CPZ&t3%+(g{&{ypg<&JZ-EDBp7V_43nQK zP{~()W#0eL{2k4KdSu^o$d_OuJ`nf~l;#|Gr%96GxOTjzgupm%iDuUNa!FnO6?iAN zID?BKiY?GidLS_Sr89QAbn-+wcd@0t)#og2YVI*41!>-$hU5#Ls25yM2ytDWj1oOM zo)Tx(k)snedXt%~b1z&Hit`w+F>&zT+}gZax&7lk3z@lnCr4-qd`TTOK}&93zF_n>l&M}l*<-)3%YU{c z5xFNM3?Uozc4ILa0{2RWQ5md4W|9DkhQbAhxH~p^$Hiv)E(bgO1kL`i5j*XvFc}p; z6sz@B!=$GX!6VA(2xUswB|4ki_|`BLlGeOzb$1lld}H;?}jn*2iqNQ!Me*K_?UxsvAD(dGWx zPSzP81}9k6#CM^CS@>!Y=kt-!Hm$OX!3PDg6=5o!jigc3v}_|yH3cUvW)u;dZ|Y{O zq4Av5=2LtWmI5PlYFj4!aC9~>fASPkL<+zBP|MuF(_dd{1bY|oS@sQ{^{F_lF1J+h zHo5Lt3$t~l|0&e{b(g@ujy8i}E2C%VvmL01tuo#zKNpu`#;BEq##@U+FcHyMWOo1# z-isj(_0aL6ZnTcMEQ&@&F#q9lH|Ux9lu5|EG#}DojKTUhw!7?eENyLp0_rjnF4@h& zP`aU$sgJI#%hs=OyN$&8u7~Rnm7C}BOm5vK5=J*Y>~F_816PY==|yx+UOdffBKI%$ zu9)3_1%&4VLJP};=elJP=GB|T0l{ufSXO;Rq4pFYaCI`u;8A1U_Y{kRo_}K3DCT>{ zAQsB~0_xrpZZ=c1f zz74zimUEz=ICJMEt!8}Axqgo`?Kb%gzzbfacsEk}XGN2M2}7#JJZ~8eq2Xk$zeS93 zIOi*&ct*<}DbOerWk`jyi_?M8PAz?K-@~dW>^7tDT;=E4mwf`s72{U-lPur+Pp;ks z>kkiul36I0SevUBFkrzGbNpl6KASj* z{uR{K4Y@qoZ`zsU0u{Z<(3vd!?tI8P1HsRU$MeeYsqvPsr)yE+ErCZkk(kcOu`7ym z5t8w%E#XMK5d|gfc$ALB#KqquD)B+j!R2*NHC?y&tHRAE-z<2~bG+9$ zBYBXGTkp}~x2E-Ki}wxr*p^(+F)G%ZKTg<29+ohk1YbP#17P6WKV~)_<#*qfO)&$2k}Ea3{5%C194hp zEb{^ClgSHff0}kCMR*`M5b<~ijJq0H$dPBrY#q+4G-^12N0l@P0D>jOGk zbjQ4qCi3u1IoZR*=K{wkKq9bJyv@TZQNZsyf`v+q_;eI z{FbPLmoH3=J!LjN$1!)|1V&Q=_i>gteYOs3_5UdHVziHgT5bLX^m$JRS#9GKrS|9ih+Uig!Lg(8{xak@U_F}2 z*f3D;UzoqYKV9GPWTunI7Oux3PJdJvO3%H(Oq0mb%-qddmPRX{NP%k5RkQphUZmgU zLyzfk>s#r+S3^K^&jqAlXs*i?z$Z;YASJZRhDZPxtjZutH~Wd1VNu0DF*mX;pvcK1 z^;$4MsP1(>GNI$}TpN=J3-tM~A$Rnj=F}rLi z)$!TcTV+1t^zhBx0K>|TSmC5($Nx?TMnt|R3q;|aUxk-uPb|$&dU5y9-O=Ar13pBmW3ydl_fJ3Uitoh7u+AE?ZT>pt9*4#iC z6FB;`ul#ZQs~Te*gpcT@*t-F97Vch=uEls-#=(2B&1b7HCysE0_jJJ6Ld989UC6`U%<*nMsL59MScoPn4o`Ar~t}akxKtHA_mFy@YcYj>?c@L&v~!E9!aB`aj3y_7XFgBc6cd6sXLQmxi0DNBDh}8(4(!r;xyS45 z+oAPadiG&L&xAihG>Ky(srvt=pDet^6#Mgr8bCV0;qJXmV-%c?f~ z#KN|(geaEVXN@tZS7F;=ScDsfJJZ_?L*zhoen)9cG~9a#j_@D{v4Tzw4wpNKd zJ<1}NNkwhvt+;N<34y*{Jun+#)bVCudJ4%c8g`U?Jn&H(b{b@ zR)v9IXyF?rpVT04RwGJZhGcMv@{cl10D0>$06XhLOTC0q4@*}&!rySut_J&T+!9$z z#=g9tv=I{pC2?Jgad36Nm{;*=MGo(+U@8=GOVIT#%!R=(S z;6R54av^fwI1a5G>Y79;%jUs;SxekCg8;vrOW~u4i%~rqa2NBa4!0v~;AJp~^fh{D zhZ%7hL76KATlr3^dzW61%N&WlsGvh#Gx&=vk;+45^yH!ZVB2TY!X5uj-Yzuo>gmEu z^gdC;KX*{QLt*+*)T22F3icAQwQp%7!dc5en5OfIyd13`?Up3 zAFPN-6T+X1PUeM$&1cd3P`oo{TVq7TCqMidt>B9X0rjw%#pkP|3}qF>1IqoSZpH+wIqQ5Px z3%MEraU1&@Ag`t#UA87dOph|Fbt@S;-(aJueo3(^f| zqN7HaA`hB#z9fl-AB>LCgOm3ENPmnIjJILp?9QEenu!t#O#Qg)9xlpFD7~f5E@HA@-!R$=6dJJJcV&2x^Ga+lYixAqHC! z(?(}}Dc7Oy2#sk=$5$pYL&1Qy`lD{pmE0LI3uSzI<>B0i1Cy))F6SdIm|zbFdrtM5 z)mttpjbZzU_pHUks2#6Q2Z(!7<7?Vs{eM-X`Oac(jOT~g)H4^DWUasUqjWsE=0f; zioVo5V6aeLP^QkTFA%=>_@ra70+84@toWR1P&b>v@%hXpvv6x*9fvFflc-KSgGRk> z(W*wQH#EJxYW`LgrAa1`tP1E>g3%>I*&{$DqlVKHMP5f8gnclQS7(odd+VHEmIwoM zh%m=-(yzA$&QGwV=Y(f^b*5_J=(YTPIS$tqGXY)>UL#~BgxxH2=h2{x6gB<%S#AXT zg#NV=MZ%6-$on5IJ*{_a8G|W0^`Ou=JWwxSQ$Lj`?0k#ivSv}ygg<-WXU>=gPw-BP zwN;ik297Yh7T+x>7El};dwO13>n7Xa&Cw1ugzJsqZG{)YvZXH4{i;?jT6dDlZJdSOnWz?W! za~|8ZmYCwJk8~&@ijc8>bpROCX*SPlwgEXJIQTg_uO*OC)w~B5+9lSr(PbHlhMs8csD-PxIUZ^sP%$MjD1MTv+3}J(8Hz>?-mofeC-% zR`kc+oSOMaUmD+6=-xUV*3-%?|CPulT(MI*?0} z%7qHk`ius$o>s+m&USH3^qUIe>NRr)9 z@gI%L+|8PCE0)WLKb@zUN^{?sIF3r-3rPj-{$`2t^fhen4xrsHo?<*nZ#V}A20Ak1 zzja5L_({#!_>LE%@;wA%eMV>f7?sU(dJN7gOxm&v*itS5^Lq}%NBJV>} zx+ATX%tYS_$oD}Y1oK1bmvz>3sNX~>oCFulM)2Mn0B~<5ejWTuJg*; zMpr7DY$03%YhR5HAoPR|HAVfuG0qG$Tf=*q=$MgqKWAtNJP$d zNm}rti)ikR{c#72R9Ahya?KRN58z|QPOSGDqc1%j491_Wh>cm;>}xl9@!T|i#p=<{ z_*S>lbts5<$r6fp*O<#Me#Or-YG#L84J2g8pWl2YT@mw6Fq4nKmkFdFp2q{?i<2xe{jv!=q;$6 zs@pD*l`>5>u`BP?Dv=7KJ=w@?8uRs$7rj(9wO6S%XzFj8Xe6(q%p2APRsKjUtbebC z1c==bk^{V(zS80Cc-6j4g#o^bJlteKCopaJ;GVBk){u(%qEuSDugZxBPV<8N9J zxF^6_5^@IU`k~wSY>S(A(Rcj@h!e!LaupI1>X>S%>MM1VRt;GEWYJ&l#e^Wk0^(?f z)7g{7;dcQBQS7e})YS@oh5w8bRCy z(g};wAHA(p0sypkS5kXDKgaDIi&AFowlO?ct`AEVz_9%F)N3?q}*c0TuDOi zkYn#EWD5)nrT(+ghj0Q@uh*tUA-@J@(Hu#Y>nH4q(|Z6!5XOGSui6jKW6P8Bc7fF* z8{X5^7SMDqlg89< zuij&_a}#77qOgAGU?bv%ZgA3dCRKW33!ZzJH*_5GA$imZ2$jK)qW_aa{iKvd_F!c2 zXZEmdm}|{SU^gcM4QQ*oE4Vf6O3yswm2~4MR}jLxJV-3uA?N~-A?W$75Ue*KVi<`5 z*BYDAcq_GJm*&b!^}~)1N4cwyu!jo?pAwl8AxLI(YoOSPM#?V)q2)omr#SfbYktBv zhH-oPMXWO0Q-0R?lmV!=3gO>mVA=8bn5tu|S%O${T8{=bA$KPVkA3;PlK-nMRUy)TQKIBeQoQDdC6k_d#%#~cNK-0e zunOHqEq?Q#*=FFw_I~OJ!yiZTuvjYqzGdNx+a-RJ*2I`9&~@!E9vad}1FFVsg*75O zbuE1f0nXSLUkUL>MJF(rHw4W`0=z;Wg<#Z9CH+okd?ffe zB~cHm%LO?lsc(Y0!&>D)$5mU;pOsT1x75@2INDQTu(E#4MmBo$AT1`NeNU}H$ydqP zhZj{^Z~tuRj0MAbDkI*y`(bko5m}5YPx=z?I}XkDl9`ZJ`kdTRiP#abI(6m8hxFfm zMT>#kC~vR+NYruO30Lo~xovM`O9#_&FZW)1e_ z!!m(#K6*P&AE7F4ies>}*qcnIc#5O|><4>70jOYDR-3}v=PXr|4WYD_o7ZL?$-D1L z%|Cipn@d0L5_~qtt!G5)i4<{ZeYF0_cH0B##iRH~(xGxP7p-wxso#7maJ~p3P(Heu zMZcIFQ-v2r8$Z{;ZBqQk@nOvng~<}P_*atDxUOy3AnD(uON)jcC-S+n)*g>IcYyCn zPpZxVFKoiIoJ@%>dx@p`x0ccU5dL*xfsvTvE7Rzbm32uubPig3u*=GHG())V?@s!q zT^#kB8C)jouBZEr$A4Etxi9ICHQqiq0hqmb>3+pH*%y-`J8$XL)zSUjOp^&@u1XhN zMOndxGOkuhUgCN6^JD0@FW%|+=;O0UkTdm+?46itrdYmc8sGpmvJG7gF~x`IKDj3)REQa!sx`5x?G z){5!W4tYLu|Ji9Kl|ytN2h*#*-bC*t z8lM{8)HjaZ=XJ!1#F}8U$2Y9$>Ba#y)TKbncd1Kwm>m+s0qzo7KLp@rP+#+m%#Z&e z$`Y2g_r{`>OJ-|9;QN)_=i$&;T)-1>0L0_gpkqF{HBDURILpuIs#iHI4D+ZKo)sqe z@D$Dd%V2TFSbT{&PR-2J&8A~#GZo&^__&7l^A6)x*U3rJwLiua3Fh6e^UI>o9x4_} zCFs4QY%f``d96a3pzbe>{B(xT1vuXl{r)PsZ}rwN&hQyx&5ztBgd)bOJAW+Jn+fAW zG)+pmJ&5}-Cy^Q)E)9s0MUPX8%O4KauL~IUNaKQhl8Z`~z@sOk2!r00)5D46h20k# zM+@Nsu<%&5+GeY=f&=L}+Los^S_Qv>&`{%)rV17QUalQ5RhXB+^iuD;)w?O(b((SL z-u1j-Hm*3llq0YXd4LCNp)>c@x=&S&3u0c6#m0^>u1`eD+FkJb6}Ls&dD!i{(b zSM_vaI_+|EqDkOaRX!jg-Ba%Jo-Qh>mu?a<>(lj#VMfV_(4E|e{%D9=l_RsUsWfQR znalv8!b}Z0tSDS4-26`}#6E8vffF}=AQ<5$<2HDbO7(i6u=_;;s}S|vL0LV?n-Oje z!Om|4U(uWwn9b_|->X;44Qs;x6E5vASvFv_>+NMFHWW^B>8s{H-y!$FI*&EiC0)2J zJf>HVOd`&%!^MfxbTW2hgPVFzNNG+0F2nL5mB~L~l{PmgG;SL&zKaBaEy;}$XtfqY z7(UC)x@8Y}L0O-dNDADm`%#lhrZpD@b>#`FkP@r&)0(HREK>V!V#z^yFcX|&k*snw zLR+kgEs54)`2l21W$~GRj007H_aZbgyjd5e7vN=rSoNaU2t>~--FO>nJoVjpa&}&8 z^9(Dz41{5SJZn11z1V;NpD)dMTVO}m5K0^emJXOLDLVhT*$;2ImgZ~R1Ci<2r=Y|y z(sqxy+`WSCqxFPr8!Y6(hd$pn;=zCGKu~p%m!!FoH5QtQyAZ1FDjnV;b~j0&uZk=Q zo~o*&)1mL>wteK}q_qlX3My_EZwKED>>vx86O2+>4+@?<{GMTxSd@Dleul#;8yw7_ zE`rr}1QV~0*MIswah|EUuP?4K)`$0Iu8(g`4ligYmgv2<+OK^$Lu|%=6M=7yOh4zF zcT=HUWLWb!G)>BGF99FZzrNCZ`8{6u{!@Ws&!5@)wx{6t7t4RCs0$K#(Z$?CyD)i- zFbQ$l;WtlU>!&crA|E%h_FivOS%VN`O`Nk5ugB*o2Fwj*9plUItFv_Reb3Eb zP9_;#$}#w`1qRdrMVj`iLCEH0Wx#+B3l=$d%XbAd0K?UDJJfZ)o~ z!P|4=>5*js#P1o0LYN_0PG}tj(YgqiC~)iR_P<|v)bDauv3~h?^zEC8Cusz2iGFcT z7+lP$_!b5q{R=fDMY094Ms=WqF)estt6mG|{X67wZGO(+8t1eqTObgGqyDI0vExOU zt1DC*O137L=>9{!LG%Z-dGs8uZt*-BedW?f^n`-Eh|gG=cLzy*b0=A6 zQ_ueji4_(W^L_~AhL5DSi}NZ48*GlPLv9{1cN;C0ZRmd+$&M%JxC}jJ(()@>0nK)Y zRGzykrcY>!IIr>VGf?oEF6UoMV62QsSb6}Os7VmHz0ulN%Cl%d6g5e_l)LUqZk=BO zIHn|)bwza9iw|MjgJ>|ctL3seo|hs+ z)yxi>&#j+0@{ZGQ)5EniWexw#%QI#)X4P&Lh*LP3=reJrkDKj6wF5R^je~r;#zSsi ziwKN;wp}@6aEt!%)v9)-9N?9-pbU0mgO`rM3EewjuLO^XwW$z+jDs0@$ zK5;7cZ22*2@1zfY)CR-5<#85U|bu9xDxws6+9Q9$ecJkRICprXa= z=%$#e&!eSPRcV`*zpEZ@!-?adTgPpCE8(8{EM> zKnH(93CFP2DL&nXE==|eKN698o&Hqp8-Bp5gF1(()L$%Os;c+39^{?w_m8^GKNd2h z^u;n}vzQblDFS*83UsE_L(VbMV%5x>3d4F8mG*y{eD`vuGiCpBVUn+jSh@#!=CJcS z{!AzScf2YNJd_|ZR^s*ksV@;{VBWA<7cu>gaBg!^_EoX5q^zYh2VVO?ea@b?k$c2l za^=M4*;zRey|p-!3*%NMjG4rW1qvTOi%tjXs4O7tSVLb#66zQR;^8uxnKp~#!2_7i z;3(g04LxL8KaL&5Hsle;>O+M_w&$-Ve^JI3hUo!7l11KQ9jQW12xeat^sw5D8*;f^v-2QJ3tvVwdmON=E?mruncMwWZ?47)t3w@^Sa0`nhmb@5I$}jE-I*21X8rCA} zQ}s4;wx=6ip6yM?#oGL>2%;kgH*daYZ3iu9-(VwrAOn%F`^cA)U8XB{?sS2ha?WQ> z2gI`PX-W+esNuEVcqgIbVIAD7O|W|{?+50;zdRBXu#r>1g+6-vBaPrWv;^%y0!H#r zXs2~M$_>B(pC}8x-%qAg=zK<^n+6EImu7OQ*w-r}w%qO1I-$c!6;BEEh}e~N`gLD? z5jQ1W9@Z{id%Et|CMS3SG1=7m2#itk}Owha;1b`)%v=rzlAt;PO=#CsQfzr zcQcNe?KAtcS#}9cTVTH-u7VLLERTpVV*>}tbV>0-4O)buwNjuJ&~ONK?E#OL#sw+C zQ*dKE&iHw)_m@0o!5qX?A$SQ#Z-izRYPKOPKFHe6i|A*d)}L}?A?{4azR}U!AmBEk#t3}tc#S}V9OMM{ z{>0;spszDsLR(8}BNs%Rq^57i{E#jQpc;625QWEQ&o%<+CA4tr=;o~iGrv1`y1cADci zg_XvoRqZX{>f8HtlW(Tp!Ivy-2mIXdq4Z)|iWIl0U|jz(+I4)CRn&huCaWSx@dHd% za`cA)zJ}jm9__p6wy(oiIv(+pr88GCuNY?eu=LAfpEMfTcsej4YPOmqp9_X}rGAxh zU(OAd27MQ`^T3n{Y@$6?&FHapNU5P_>LDDMh?VKHCWKsNzHGZ zHCls*eS(X=AGzXqLG4!=daPC$&Gi;HzE#x8Ux$7ib9#-|BohO(QyfgF5g1}Z3bhQ> zC4Kqm4XK52g0LjH%8cq?G?-K(G=^)C?XtJwo>aKpEn3LDFFJEh?^e#;1MhB((Pn1z zVE3PvzdOFXJ_ zDt|JHoOTl*r9&JU5?fVW%SYR$!!J!C^AkarfG65_;69CjO(KLn7-${^^owLllxxt4 zF%q$$H@N5}-JsBt-}Kw}Eb~pJRE#l?H8`vx-W5^2&IVjZTY52D2qg{gJ9ytzzv;Bo zO+E%7^>PrhJ#S+>+u+pIKJ}E##-7x)|Ka>!MO$f!M~aA1QR<>LuyliV<`Su0~*a?p375xtf8yiBFyw{5KW&+$+=op zxeUEZM)Nb$ZC<}6sfG8^z``PCz$MPfH*KQ>rvkrj9r}Qq_?7@(rklyrmiKAb06{`X#tNg=*j3Cn02CmI)cXgHO<==-@B^93@#y15!tR}jV% z-woXSgGu;}&S(6l<5zekzVuNO!<^mN?T!_iAqTA7a+qFXMt;Q8U-BbD1MnGraw-YNZX|o^>#jeMq3xP zmyQSb8&p*BWM+J*qOrk}%D6V&OH)Y~coD)T#Y`XAx;0~b-{@L&jhmZG-PnuCb2s^+ zRR1%N(d#)?A4}2>m%3_#0&*lePhGNIPei8grcLg>>wMQo@%)pIgF`@z8Q(D?_O*Fo z!>^%^cj62Nt`}_J1~mrT6;zdp2Am=6<57sDe7&9#hC!BrPtEw$F*7eP1(hvf+EsM% zIib}TarS|5&CIdnWgui$?cppeo=4|+s^>sTd^YWBF-0z!JXR7f8cA2y(?<8ZQJ-En zPaK7|PRCt+dV=fF2XEd;Jwse(0r`9Hs|35VW7~;6GBTE#1a5p(nwai-fg`b5+=eS7 zSaM0BN?r$(H5Qh!{*Mh6LEi48ma1DJja=XdnM>7Cx*&F>Q(c@er3Q0-0eR`VeRPPQ z&f4=#-m}4~>pdH(rn+$-;l}X-#oN8VJ1eHnduD_m1O^zW1s=jZFQ2f&OAA{rZ{!wb+SIoI^HF%uqv1RhCOxs zJ(q_r)A6N$$qem!`p>T^nc=$4_AAiy))(>nt;j$or9Lm%KIYoa*A;^M+eblqF&)Gm z??A+uWuUbGarscpiRdHcP6p(|_vREMdOha67Bg|NC^CLe`qk5IdqNmFXXOZSQm?%D z0s{S#={jEwBCV1cLURsPGCG(tft_6f)3}e7mK6upgQ@zMbw1j^o&yn0(wayXt6SDB z-_FYqT8TK%NB6ETt9yUOVqr8yp}@5B4Q zxL*cSY*~c7Q;WWKJ9d>BaM%F(^JIaVxod_}%w*lH0oS%NGV!~pC{#RBIPqGwBHRMkZ>(^OnA(% zf6aEz*c+zHLn!w3yy~Hc#^ps=P~@( z-4_h)0v<*hORLM+J5q-6cl*;Y&I@>TN9jZ&6+Fq;i@AvMrX2enei^?Uqky}fVlwN; zki&I_oS&F#U)t)r^YSEN!^}asH^%h`*3zhWO*^dJ`^Ps;wpvD@_w+2`MgvQAPgN!d zL%CMPc+_#i2n}*K=ETwYQj!r|-~NPl!$7Z+_S(+V>{t`$m@&Jqmy6beU5q|3ywlM8 zz%LD#yKYH3-N1#o`|h9O?D~4HHIt2*%wLi<)x8#kUWm3umERZ$w6-=ig74-z)|zSq z24}3f-uG>HJ(0U}X?i2{Jj|sV`|n=CT^W!zytn_CG(nKuh2mvSoiAr_C)4iLmaY5xvI6dr zl=K=%inJ4mC|&IjBh`P9z}KMt>qtHQdud*m-*Wdi39dS@evu!{H~`<5<%qUm*S;(c^e&g-J`*a|QGoKfKJ7*AlN zGw#rS3v*J%)pl=vxfw~!=Czj= z=59Q%r_1xpUHjMf6uaVi+F&sBh_vGIdRv?xDB=SmKS2&liE9*nAnHCAbdH6rjMnOU zCpWw74RjPWx+eyvn}1s@N_ofk|uDOki?2>oxc)5&U`ncTol39t<+>bJU|9{Mor&cs<^PUfvn*C+6jvF&Q z^f^#*YDHbomht+d|-+~?FItY&K$z5Pu>`Q4uzKHo_8Pj)?*yffzCYyCZ6 z4rsT(D(rFC!G4VW{0`4=fzr38Uw)bL>C@@+opUQL1?GHw^z+J{mZ?{3YngdO^r|0q zK3{7dS0Byz;jhSHo%8!E?jLjh`@>b?&f2=6UMx>i!+AZeOHq#w_5bELEMYaZ$0ujpa~=i$V{dqlpqwkSVc*W07E^ zfs`P}V&om{KovlRF9ckGDnJU`6+kM03awZ`d)z@=-Kk}ibKReMMmC1i6Q^~?1%7V> PopIsm>gTe~DWM4f%}q(5 literal 0 HcmV?d00001 diff --git a/custom/public/rotation3D/jquery-3.5.0.min.js b/custom/public/rotation3D/jquery-3.5.0.min.js new file mode 100644 index 000000000..9fd22ca70 --- /dev/null +++ b/custom/public/rotation3D/jquery-3.5.0.min.js @@ -0,0 +1,2 @@ +/*! jQuery v3.5.0 | (c) JS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.5.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function D(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||j,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,j=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function qe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function Le(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function He(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Oe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):("number"==typeof f.top&&(f.top+="px"),"number"==typeof f.left&&(f.left+="px"),c.css(f))}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=$e(y.pixelPosition,function(e,t){if(t)return t=Be(e,n),Me.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0 span{ + position: absolute; + font-size: 12px; + color: #000; + transform: rotate(180deg)scale(0.80); +} + +/*颜色*/ +.rotation3D__line.blue { color: #07b2f9; } +.rotation3D__line.green { color: #b4b3ca; } +.rotation3D__line.yellow { color: #ffd500; } + +.rotation3D__line.blue svg path { stroke: #07b2f9; } +.rotation3D__line.green svg path { stroke: #b4b3ca; } +.rotation3D__line.yellow svg path { stroke: #ffd500; } \ No newline at end of file diff --git a/custom/public/rotation3D/rotation3D.js b/custom/public/rotation3D/rotation3D.js new file mode 100644 index 000000000..da37ee43b --- /dev/null +++ b/custom/public/rotation3D/rotation3D.js @@ -0,0 +1,379 @@ +var cancelFrame = window.cancelAnimationFrame || window.cancelRequestAnimationFrame; +var requestFrame = window.requestAnimationFrame; +var time = !window.performance || !window.performance.now ? + function () {return +new Date()}: + function () {return performance.now()}; + +/** + * 计算两点距离 + * @param points + * @returns {number} + * distance([{x:0,y:0},{x:1,y:1}]); + */ +var distance = function(points) { + var p1=points[0]; + var p2=points[1]; + var a = p2.x-p1.x; + var b = p2.y-p1.y; + return Math.sqrt(a*a+b*b); +}; + +/** + * 圆公式 + * @param rotation 弧度 + * 计算公式: + * Math.PI; //圆周率 + * Math.sin(); //正弦 x -左 +右 + * Math.cos; //余弦 y -下 +上 + */ +var circleMath = { + /** + * 根据弧度计算角度 + * @param rotation 弧度 + * rotation, farScale, xs, xr, ys, yr, itemWidth + */ + // parseRotate: function (rotation) { + // return (180 / Math.PI * rotation) - 180; + // }, + parseRotate: function (rotation, self) { + var sin = Math.sin(rotation), cos = Math.cos(rotation); + var sin_cos = sin*cos; //得出偏移正负值,从0°向左依次 +-+- + var angle = (180 / Math.PI * rotation) - 180; + var lastAngle = angle; + + // console.log('rotation',rotation) + // console.log('sin',sin) + // console.log('cos',cos) + // console.log('sin*cos',sin*cos); + // console.log('统一偏移角度',self.yr * (sin_cos/Math.PI)) + + lastAngle = angle + (self.yr * (sin_cos/(Math.PI+1))); + + return lastAngle; + }, + /** + * 计算scale,x,y + * scale 最小尺寸 + ((1 - 最小尺寸) * (sin正弦 + 1) * 0.5) + * x x起点 + (尺寸 * cos余弦 * x半径) - 元素宽度一半 + * y y起点 + (尺寸 * sin正弦 * x半径) - 元素宽度一半 + * farScale, xs, xr, ys, yr, itemWidth + */ + parseSXY: function (rotation, self) { + var farScale=self.farScale; + var itemWidth=self.itemWidth; + var xs=self.xs; var xr=self.xr; var ys=self.ys; var yr=self.yr; + var sin = Math.sin(rotation), cos = Math.cos(rotation); + var scale = farScale + ((1 - farScale) * (sin + 1) * 0.5); //单个尺寸 + + // 按设置尺寸 + // var x = xs + (scale * cos * xr) - (itemWidth * 0.5); + // var y = ys + (scale * sin * yr) - (itemWidth * 0.5); + // 不使用压缩 + // var x = xs + (cos * xs) - (itemWidth * 0.5); + // var y = ys + (sin * ys) - (itemWidth * 0.5); + // 使用压缩 + var x = xs + (cos * xr) - (itemWidth * 0.5); + var y = ys + (sin * yr) - (itemWidth * 0.5); + var distanceNumber = distance([ + {x:self.$rotation.width()/2 - self.$item.width()/2, y:self.$rotation.height()/2 - self.$item.height()/2}, + {x:x,y:y}] + ); + + // console.log({x:self.$rotation.width()/2, y:self.$rotation.height()/2}) + // console.log('x,y',x,y) + // console.log('两点距离',distanceNumber) + + return { + x: x, + y: y, + scale: scale, + distanceNumber: distanceNumber, + } + }, +} +/** + * 3D旋转 + * @param id + */ +var Rotation3D = window.Rotation3D = function (_opts) { + var self=this; + this.$rotation = $(_opts.id) + this.$lineList = this.$rotation.find('.lineList') + this.$item = this.$rotation.find('.rotation3D__item') + this.$line = this.$rotation.find('.rotation3D__line') + this.itemWidth = this.$item.width(); + this.itemHeight = this.$item.height(); + this.length = this.$item.length; + // 圆计算 + this.rotation = Math.PI / 2; //圆周率/2 + this.destRotation = this.rotation; + + var xr = this.$rotation.width() * 0.5; + var yr = this.$rotation.height() * 0.5; + var xRadius = _opts.xRadius || 0; + var yRadius = _opts.yRadius || 0; + + var opts = Object.assign({ + farScale: 1, // 最小尺寸 + xs: xr, // x起点 + ys: yr, // y起点 + xr: xr - xRadius, // x半径-压缩 + yr: yr - yRadius, // y半径-压缩 + // 播放 + autoPlay:false, + autoPlayDelay:3000, + currenIndex:-1, + fps:30, + speed:4, + },_opts) + Object.assign(this, opts) + + // 遍历子元素 + this.$item.each(function (index) { + $(this).click(function () { + $(this).addClass('active').siblings().removeClass('active') + self.goTo(index) + }) + }) + // 当前控件进入离开 + this.$rotation.mouseenter(function () { + clearInterval(self.autoPlayTimer) + }) + this.$rotation.mouseleave(function () { + self.onAutoPlay() + }) + + this.onAutoPlay() + this.onDrag() + this.render() + +} +/** + * item样式 + * x x起点 + (尺寸 * 余弦 * x压缩) - 元素宽度一半 + * y y起点 + (尺寸 * 正弦 * y压缩) - 元素宽度一半 + */ +Rotation3D.prototype.itemStyle = function($item, index, rotation) { + // console.log(rotation) + var parseSXY = circleMath.parseSXY(rotation, this); + var scale = parseSXY.scale; + var x = parseSXY.x; + var y = parseSXY.y; + var $line = this.$lineList.find('.rotation3D__line').eq(index); + + //设置当前子菜单的位置(left,top) = (x,y) + $item.find('.scale').css({ + 'transform': `scale(${scale})`, + // 'top': `${this.itemWidth * (1-scale) }`, + }) + $item.css({ + position: 'absolute', + display: 'inline-block', + // opacity: scale, + 'z-index': parseInt(scale * 100), + 'transform-origin': '0px 0px', + // 'transform': `translate(${x}px, ${y}px) scale(${scale})`, + 'transform': `translate(${x}px, ${y}px)`, + }); + + /** + * 线样式 + */ + $line.css({ + height:parseSXY.distanceNumber, + }) + $line.find('svg').css({ + height:parseSXY.distanceNumber, + }) + $line.find('.dot1').css({ + 'offset-path':`path("M0 ${parseSXY.distanceNumber}, 0 0")`, + }) + $line.find('#path1').attr({ + 'd':`M0 ${parseSXY.distanceNumber}, 0 0`, + }) + + $line.find('.dot2').css({ + 'offset-path':`path("M0 ${parseSXY.distanceNumber/2}, 0 0")`, + }) + $line.find('#path2').attr({ + 'd':`M0 ${parseSXY.distanceNumber}, 0 0`, + }) + + $line.find('.dot3').css({ + 'offset-path':`path("M20 ${parseSXY.distanceNumber} S 0 ${parseSXY.distanceNumber/2}, 20 0")`, + }) + $line.find('#path3').attr({ + 'd':`M20 ${parseSXY.distanceNumber} S 0 ${parseSXY.distanceNumber/2}, 20 0`, + }) + + $line.find('.dot4').css({ + 'offset-path':`path("M20 0 S 40 ${parseSXY.distanceNumber/2}, 20 ${parseSXY.distanceNumber}")`, + }) + $line.find('#path4').attr({ + 'd':`M20 0 S 40 ${parseSXY.distanceNumber/2}, 20 ${parseSXY.distanceNumber}`, + }) + +} +/** + * line样式 + */ +Rotation3D.prototype.lineStyle = function($line, index, rotation) { + var rotate = circleMath.parseRotate(rotation, this) + // console.log(rotate) + + $line.css({ + transform: 'rotate(' + rotate + 'deg)', + }) + this.$lineList.css({ + // transform: `rotateX(${this.yRadius / 3}deg)`, + }) +} + +/** + * 旋转至index + */ +Rotation3D.prototype.goTo = function (index) { + var self = this; + this.currenIndex = index; + console.log('currenIndex', index); + /** + * 1.计算floatIndex,用于控死amdiff + */ + var itemsRotated = this.length * ((Math.PI / 2) - this.rotation) / (2 * Math.PI); + var floatIndex = itemsRotated % this.length; + if (floatIndex < 0) { floatIndex = floatIndex + this.length; } + + /** + * 2.计算diff,判断方向正反 + */ + var diff = index - (floatIndex % this.length); + if (2 * Math.abs(diff) > this.length) { + diff -= (diff > 0) ? this.length : -this.length; + } + // 停止任何正在进行的旋转 + this.destRotation += (2 * Math.PI / this.length) * -diff; + this.scheduleNextFrame(); + +} +/** + * 定时器渐近旋转 + */ +Rotation3D.prototype.scheduleNextFrame = function () { + var self = this + this.lastTime = time(); + // 暂停 + var pause = function () { + cancelFrame ? cancelFrame(this.timer) : clearTimeout(self.timer); + self.timer = 0; + } + // 渐进播放 + var playFrame = function () { + var rem = self.destRotation - self.rotation; + var now = time(), dt = (now - self.lastTime) * 0.002; + self.lastTime = now; + // console.log('rem',rem) + + if (Math.abs(rem) < 0.003) { + self.rotation = self.destRotation; + pause(); + } else { + // 渐近地接近目的地 + self.rotation = self.destRotation - rem / (1 + (self.speed * dt)); + self.scheduleNextFrame(); + } + self.render(); + } + + this.timer = cancelFrame ? + requestFrame(playFrame) : + setTimeout(playFrame, 1000 / this.fps); +} +/** + * 更新 + */ +Rotation3D.prototype.render = function () { + var self=this; + + // 图形间隔:弧度 + var spacing = 2 * Math.PI / this.$item.length; + var itemRotation = this.rotation; + var lineRotation = this.rotation + (Math.PI/2); + + this.$item.each(function (index) { + self.itemStyle($(this), index, itemRotation) + itemRotation += spacing; + }) + this.$line.each(function (index) { + self.lineStyle($(this), index, lineRotation) + lineRotation += spacing; + }) +} +/** + * 自动播放 + */ +Rotation3D.prototype.onAutoPlay = function () { + var self = this; + + if (this.autoPlay) { + this.autoPlayTimer = setInterval(function () { + if (self.currenIndex < 0) { + self.currenIndex = self.length - 1 + } + self.goTo(self.currenIndex); + self.currenIndex--; //倒叙 + }, this.autoPlayDelay) + } +} +/** + * 拖拽 + */ +Rotation3D.prototype.onDrag = function () { + var self = this; + var startX, startY, moveX, moveY, endX, endY; + + // 拖拽:三个事件-按下 移动 抬起 + //按下 + this.$rotation.mousedown(function (e) { + startX = e.pageX; startY = e.pageY; + + // 移动 + $(document).mousemove(function (e) { + // console.log('移动'); + endX = e.pageX; endY = e.pageY; + moveX = endX - startX; moveY = endY - startY; + // console.log('x,y',moveX,moveY); + }) + // 抬起 + $(document).mouseup(function (e) { + endX = e.pageX; endY = e.pageY; + moveX = endX - startX; moveY = endY - startY; + + // 每40旋转一步 + var moveIndex = parseInt(Math.abs(moveX) / 50) + console.log('moveIndex',moveIndex) + if (moveIndex > 0) { + // console.log(moveX<0 ? '向左' : '向右') + if (moveX < 0) { //向左 + self.currenIndex = self.currenIndex - moveIndex + play(moveIndex) + } else { //向右 + self.currenIndex = self.currenIndex + moveIndex + play(moveIndex) + } + } + + // 解绑 + $(document).unbind("mousemove"); + $(document).unbind("mouseup"); + }) + + }) + + function play() { + if (self.currenIndex == 0) { + self.currenIndex = self.length - 1 + } + self.goTo(self.currenIndex % self.length); + } + +} \ No newline at end of file diff --git a/custom/public/rotation3D/vue-2.6.10.min.js b/custom/public/rotation3D/vue-2.6.10.min.js new file mode 100644 index 000000000..087ee42cd --- /dev/null +++ b/custom/public/rotation3D/vue-2.6.10.min.js @@ -0,0 +1,6 @@ +/*! + * Vue.js v2.6.10 + * (c) 2014-2019 Evan You + * Released under the MIT License. + */ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).Vue=t()}(this,function(){"use strict";var e=Object.freeze({});function t(e){return null==e}function n(e){return null!=e}function r(e){return!0===e}function i(e){return"string"==typeof e||"number"==typeof e||"symbol"==typeof e||"boolean"==typeof e}function o(e){return null!==e&&"object"==typeof e}var a=Object.prototype.toString;function s(e){return"[object Object]"===a.call(e)}function c(e){var t=parseFloat(String(e));return t>=0&&Math.floor(t)===t&&isFinite(e)}function u(e){return n(e)&&"function"==typeof e.then&&"function"==typeof e.catch}function l(e){return null==e?"":Array.isArray(e)||s(e)&&e.toString===a?JSON.stringify(e,null,2):String(e)}function f(e){var t=parseFloat(e);return isNaN(t)?e:t}function p(e,t){for(var n=Object.create(null),r=e.split(","),i=0;i-1)return e.splice(n,1)}}var m=Object.prototype.hasOwnProperty;function y(e,t){return m.call(e,t)}function g(e){var t=Object.create(null);return function(n){return t[n]||(t[n]=e(n))}}var _=/-(\w)/g,b=g(function(e){return e.replace(_,function(e,t){return t?t.toUpperCase():""})}),$=g(function(e){return e.charAt(0).toUpperCase()+e.slice(1)}),w=/\B([A-Z])/g,C=g(function(e){return e.replace(w,"-$1").toLowerCase()});var x=Function.prototype.bind?function(e,t){return e.bind(t)}:function(e,t){function n(n){var r=arguments.length;return r?r>1?e.apply(t,arguments):e.call(t,n):e.call(t)}return n._length=e.length,n};function k(e,t){t=t||0;for(var n=e.length-t,r=new Array(n);n--;)r[n]=e[n+t];return r}function A(e,t){for(var n in t)e[n]=t[n];return e}function O(e){for(var t={},n=0;n0,Z=J&&J.indexOf("edge/")>0,G=(J&&J.indexOf("android"),J&&/iphone|ipad|ipod|ios/.test(J)||"ios"===K),X=(J&&/chrome\/\d+/.test(J),J&&/phantomjs/.test(J),J&&J.match(/firefox\/(\d+)/)),Y={}.watch,Q=!1;if(z)try{var ee={};Object.defineProperty(ee,"passive",{get:function(){Q=!0}}),window.addEventListener("test-passive",null,ee)}catch(e){}var te=function(){return void 0===B&&(B=!z&&!V&&"undefined"!=typeof global&&(global.process&&"server"===global.process.env.VUE_ENV)),B},ne=z&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__;function re(e){return"function"==typeof e&&/native code/.test(e.toString())}var ie,oe="undefined"!=typeof Symbol&&re(Symbol)&&"undefined"!=typeof Reflect&&re(Reflect.ownKeys);ie="undefined"!=typeof Set&&re(Set)?Set:function(){function e(){this.set=Object.create(null)}return e.prototype.has=function(e){return!0===this.set[e]},e.prototype.add=function(e){this.set[e]=!0},e.prototype.clear=function(){this.set=Object.create(null)},e}();var ae=S,se=0,ce=function(){this.id=se++,this.subs=[]};ce.prototype.addSub=function(e){this.subs.push(e)},ce.prototype.removeSub=function(e){h(this.subs,e)},ce.prototype.depend=function(){ce.target&&ce.target.addDep(this)},ce.prototype.notify=function(){for(var e=this.subs.slice(),t=0,n=e.length;t-1)if(o&&!y(i,"default"))a=!1;else if(""===a||a===C(e)){var c=Pe(String,i.type);(c<0||s0&&(st((u=e(u,(a||"")+"_"+c))[0])&&st(f)&&(s[l]=he(f.text+u[0].text),u.shift()),s.push.apply(s,u)):i(u)?st(f)?s[l]=he(f.text+u):""!==u&&s.push(he(u)):st(u)&&st(f)?s[l]=he(f.text+u.text):(r(o._isVList)&&n(u.tag)&&t(u.key)&&n(a)&&(u.key="__vlist"+a+"_"+c+"__"),s.push(u)));return s}(e):void 0}function st(e){return n(e)&&n(e.text)&&!1===e.isComment}function ct(e,t){if(e){for(var n=Object.create(null),r=oe?Reflect.ownKeys(e):Object.keys(e),i=0;i0,a=t?!!t.$stable:!o,s=t&&t.$key;if(t){if(t._normalized)return t._normalized;if(a&&r&&r!==e&&s===r.$key&&!o&&!r.$hasNormal)return r;for(var c in i={},t)t[c]&&"$"!==c[0]&&(i[c]=pt(n,c,t[c]))}else i={};for(var u in n)u in i||(i[u]=dt(n,u));return t&&Object.isExtensible(t)&&(t._normalized=i),R(i,"$stable",a),R(i,"$key",s),R(i,"$hasNormal",o),i}function pt(e,t,n){var r=function(){var e=arguments.length?n.apply(null,arguments):n({});return(e=e&&"object"==typeof e&&!Array.isArray(e)?[e]:at(e))&&(0===e.length||1===e.length&&e[0].isComment)?void 0:e};return n.proxy&&Object.defineProperty(e,t,{get:r,enumerable:!0,configurable:!0}),r}function dt(e,t){return function(){return e[t]}}function vt(e,t){var r,i,a,s,c;if(Array.isArray(e)||"string"==typeof e)for(r=new Array(e.length),i=0,a=e.length;idocument.createEvent("Event").timeStamp&&(sn=function(){return cn.now()})}function un(){var e,t;for(an=sn(),rn=!0,Qt.sort(function(e,t){return e.id-t.id}),on=0;onon&&Qt[n].id>e.id;)n--;Qt.splice(n+1,0,e)}else Qt.push(e);nn||(nn=!0,Ye(un))}}(this)},fn.prototype.run=function(){if(this.active){var e=this.get();if(e!==this.value||o(e)||this.deep){var t=this.value;if(this.value=e,this.user)try{this.cb.call(this.vm,e,t)}catch(e){Re(e,this.vm,'callback for watcher "'+this.expression+'"')}else this.cb.call(this.vm,e,t)}}},fn.prototype.evaluate=function(){this.value=this.get(),this.dirty=!1},fn.prototype.depend=function(){for(var e=this.deps.length;e--;)this.deps[e].depend()},fn.prototype.teardown=function(){if(this.active){this.vm._isBeingDestroyed||h(this.vm._watchers,this);for(var e=this.deps.length;e--;)this.deps[e].removeSub(this);this.active=!1}};var pn={enumerable:!0,configurable:!0,get:S,set:S};function dn(e,t,n){pn.get=function(){return this[t][n]},pn.set=function(e){this[t][n]=e},Object.defineProperty(e,n,pn)}function vn(e){e._watchers=[];var t=e.$options;t.props&&function(e,t){var n=e.$options.propsData||{},r=e._props={},i=e.$options._propKeys=[];e.$parent&&$e(!1);var o=function(o){i.push(o);var a=Me(o,t,n,e);xe(r,o,a),o in e||dn(e,"_props",o)};for(var a in t)o(a);$e(!0)}(e,t.props),t.methods&&function(e,t){e.$options.props;for(var n in t)e[n]="function"!=typeof t[n]?S:x(t[n],e)}(e,t.methods),t.data?function(e){var t=e.$options.data;s(t=e._data="function"==typeof t?function(e,t){le();try{return e.call(t,t)}catch(e){return Re(e,t,"data()"),{}}finally{fe()}}(t,e):t||{})||(t={});var n=Object.keys(t),r=e.$options.props,i=(e.$options.methods,n.length);for(;i--;){var o=n[i];r&&y(r,o)||(a=void 0,36!==(a=(o+"").charCodeAt(0))&&95!==a&&dn(e,"_data",o))}var a;Ce(t,!0)}(e):Ce(e._data={},!0),t.computed&&function(e,t){var n=e._computedWatchers=Object.create(null),r=te();for(var i in t){var o=t[i],a="function"==typeof o?o:o.get;r||(n[i]=new fn(e,a||S,S,hn)),i in e||mn(e,i,o)}}(e,t.computed),t.watch&&t.watch!==Y&&function(e,t){for(var n in t){var r=t[n];if(Array.isArray(r))for(var i=0;i-1:"string"==typeof e?e.split(",").indexOf(t)>-1:(n=e,"[object RegExp]"===a.call(n)&&e.test(t));var n}function An(e,t){var n=e.cache,r=e.keys,i=e._vnode;for(var o in n){var a=n[o];if(a){var s=xn(a.componentOptions);s&&!t(s)&&On(n,o,r,i)}}}function On(e,t,n,r){var i=e[t];!i||r&&i.tag===r.tag||i.componentInstance.$destroy(),e[t]=null,h(n,t)}!function(t){t.prototype._init=function(t){var n=this;n._uid=bn++,n._isVue=!0,t&&t._isComponent?function(e,t){var n=e.$options=Object.create(e.constructor.options),r=t._parentVnode;n.parent=t.parent,n._parentVnode=r;var i=r.componentOptions;n.propsData=i.propsData,n._parentListeners=i.listeners,n._renderChildren=i.children,n._componentTag=i.tag,t.render&&(n.render=t.render,n.staticRenderFns=t.staticRenderFns)}(n,t):n.$options=De($n(n.constructor),t||{},n),n._renderProxy=n,n._self=n,function(e){var t=e.$options,n=t.parent;if(n&&!t.abstract){for(;n.$options.abstract&&n.$parent;)n=n.$parent;n.$children.push(e)}e.$parent=n,e.$root=n?n.$root:e,e.$children=[],e.$refs={},e._watcher=null,e._inactive=null,e._directInactive=!1,e._isMounted=!1,e._isDestroyed=!1,e._isBeingDestroyed=!1}(n),function(e){e._events=Object.create(null),e._hasHookEvent=!1;var t=e.$options._parentListeners;t&&qt(e,t)}(n),function(t){t._vnode=null,t._staticTrees=null;var n=t.$options,r=t.$vnode=n._parentVnode,i=r&&r.context;t.$slots=ut(n._renderChildren,i),t.$scopedSlots=e,t._c=function(e,n,r,i){return Pt(t,e,n,r,i,!1)},t.$createElement=function(e,n,r,i){return Pt(t,e,n,r,i,!0)};var o=r&&r.data;xe(t,"$attrs",o&&o.attrs||e,null,!0),xe(t,"$listeners",n._parentListeners||e,null,!0)}(n),Yt(n,"beforeCreate"),function(e){var t=ct(e.$options.inject,e);t&&($e(!1),Object.keys(t).forEach(function(n){xe(e,n,t[n])}),$e(!0))}(n),vn(n),function(e){var t=e.$options.provide;t&&(e._provided="function"==typeof t?t.call(e):t)}(n),Yt(n,"created"),n.$options.el&&n.$mount(n.$options.el)}}(wn),function(e){var t={get:function(){return this._data}},n={get:function(){return this._props}};Object.defineProperty(e.prototype,"$data",t),Object.defineProperty(e.prototype,"$props",n),e.prototype.$set=ke,e.prototype.$delete=Ae,e.prototype.$watch=function(e,t,n){if(s(t))return _n(this,e,t,n);(n=n||{}).user=!0;var r=new fn(this,e,t,n);if(n.immediate)try{t.call(this,r.value)}catch(e){Re(e,this,'callback for immediate watcher "'+r.expression+'"')}return function(){r.teardown()}}}(wn),function(e){var t=/^hook:/;e.prototype.$on=function(e,n){var r=this;if(Array.isArray(e))for(var i=0,o=e.length;i1?k(t):t;for(var n=k(arguments,1),r='event handler for "'+e+'"',i=0,o=t.length;iparseInt(this.max)&&On(a,s[0],s,this._vnode)),t.data.keepAlive=!0}return t||e&&e[0]}}};!function(e){var t={get:function(){return F}};Object.defineProperty(e,"config",t),e.util={warn:ae,extend:A,mergeOptions:De,defineReactive:xe},e.set=ke,e.delete=Ae,e.nextTick=Ye,e.observable=function(e){return Ce(e),e},e.options=Object.create(null),M.forEach(function(t){e.options[t+"s"]=Object.create(null)}),e.options._base=e,A(e.options.components,Tn),function(e){e.use=function(e){var t=this._installedPlugins||(this._installedPlugins=[]);if(t.indexOf(e)>-1)return this;var n=k(arguments,1);return n.unshift(this),"function"==typeof e.install?e.install.apply(e,n):"function"==typeof e&&e.apply(null,n),t.push(e),this}}(e),function(e){e.mixin=function(e){return this.options=De(this.options,e),this}}(e),Cn(e),function(e){M.forEach(function(t){e[t]=function(e,n){return n?("component"===t&&s(n)&&(n.name=n.name||e,n=this.options._base.extend(n)),"directive"===t&&"function"==typeof n&&(n={bind:n,update:n}),this.options[t+"s"][e]=n,n):this.options[t+"s"][e]}})}(e)}(wn),Object.defineProperty(wn.prototype,"$isServer",{get:te}),Object.defineProperty(wn.prototype,"$ssrContext",{get:function(){return this.$vnode&&this.$vnode.ssrContext}}),Object.defineProperty(wn,"FunctionalRenderContext",{value:Tt}),wn.version="2.6.10";var En=p("style,class"),Nn=p("input,textarea,option,select,progress"),jn=function(e,t,n){return"value"===n&&Nn(e)&&"button"!==t||"selected"===n&&"option"===e||"checked"===n&&"input"===e||"muted"===n&&"video"===e},Dn=p("contenteditable,draggable,spellcheck"),Ln=p("events,caret,typing,plaintext-only"),Mn=function(e,t){return Hn(t)||"false"===t?"false":"contenteditable"===e&&Ln(t)?t:"true"},In=p("allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,translate,truespeed,typemustmatch,visible"),Fn="http://www.w3.org/1999/xlink",Pn=function(e){return":"===e.charAt(5)&&"xlink"===e.slice(0,5)},Rn=function(e){return Pn(e)?e.slice(6,e.length):""},Hn=function(e){return null==e||!1===e};function Bn(e){for(var t=e.data,r=e,i=e;n(i.componentInstance);)(i=i.componentInstance._vnode)&&i.data&&(t=Un(i.data,t));for(;n(r=r.parent);)r&&r.data&&(t=Un(t,r.data));return function(e,t){if(n(e)||n(t))return zn(e,Vn(t));return""}(t.staticClass,t.class)}function Un(e,t){return{staticClass:zn(e.staticClass,t.staticClass),class:n(e.class)?[e.class,t.class]:t.class}}function zn(e,t){return e?t?e+" "+t:e:t||""}function Vn(e){return Array.isArray(e)?function(e){for(var t,r="",i=0,o=e.length;i-1?hr(e,t,n):In(t)?Hn(n)?e.removeAttribute(t):(n="allowfullscreen"===t&&"EMBED"===e.tagName?"true":t,e.setAttribute(t,n)):Dn(t)?e.setAttribute(t,Mn(t,n)):Pn(t)?Hn(n)?e.removeAttributeNS(Fn,Rn(t)):e.setAttributeNS(Fn,t,n):hr(e,t,n)}function hr(e,t,n){if(Hn(n))e.removeAttribute(t);else{if(q&&!W&&"TEXTAREA"===e.tagName&&"placeholder"===t&&""!==n&&!e.__ieph){var r=function(t){t.stopImmediatePropagation(),e.removeEventListener("input",r)};e.addEventListener("input",r),e.__ieph=!0}e.setAttribute(t,n)}}var mr={create:dr,update:dr};function yr(e,r){var i=r.elm,o=r.data,a=e.data;if(!(t(o.staticClass)&&t(o.class)&&(t(a)||t(a.staticClass)&&t(a.class)))){var s=Bn(r),c=i._transitionClasses;n(c)&&(s=zn(s,Vn(c))),s!==i._prevClass&&(i.setAttribute("class",s),i._prevClass=s)}}var gr,_r,br,$r,wr,Cr,xr={create:yr,update:yr},kr=/[\w).+\-_$\]]/;function Ar(e){var t,n,r,i,o,a=!1,s=!1,c=!1,u=!1,l=0,f=0,p=0,d=0;for(r=0;r=0&&" "===(h=e.charAt(v));v--);h&&kr.test(h)||(u=!0)}}else void 0===i?(d=r+1,i=e.slice(0,r).trim()):m();function m(){(o||(o=[])).push(e.slice(d,r).trim()),d=r+1}if(void 0===i?i=e.slice(0,r).trim():0!==d&&m(),o)for(r=0;r-1?{exp:e.slice(0,$r),key:'"'+e.slice($r+1)+'"'}:{exp:e,key:null};_r=e,$r=wr=Cr=0;for(;!zr();)Vr(br=Ur())?Jr(br):91===br&&Kr(br);return{exp:e.slice(0,wr),key:e.slice(wr+1,Cr)}}(e);return null===n.key?e+"="+t:"$set("+n.exp+", "+n.key+", "+t+")"}function Ur(){return _r.charCodeAt(++$r)}function zr(){return $r>=gr}function Vr(e){return 34===e||39===e}function Kr(e){var t=1;for(wr=$r;!zr();)if(Vr(e=Ur()))Jr(e);else if(91===e&&t++,93===e&&t--,0===t){Cr=$r;break}}function Jr(e){for(var t=e;!zr()&&(e=Ur())!==t;);}var qr,Wr="__r",Zr="__c";function Gr(e,t,n){var r=qr;return function i(){null!==t.apply(null,arguments)&&Qr(e,i,n,r)}}var Xr=Ve&&!(X&&Number(X[1])<=53);function Yr(e,t,n,r){if(Xr){var i=an,o=t;t=o._wrapper=function(e){if(e.target===e.currentTarget||e.timeStamp>=i||e.timeStamp<=0||e.target.ownerDocument!==document)return o.apply(this,arguments)}}qr.addEventListener(e,t,Q?{capture:n,passive:r}:n)}function Qr(e,t,n,r){(r||qr).removeEventListener(e,t._wrapper||t,n)}function ei(e,r){if(!t(e.data.on)||!t(r.data.on)){var i=r.data.on||{},o=e.data.on||{};qr=r.elm,function(e){if(n(e[Wr])){var t=q?"change":"input";e[t]=[].concat(e[Wr],e[t]||[]),delete e[Wr]}n(e[Zr])&&(e.change=[].concat(e[Zr],e.change||[]),delete e[Zr])}(i),rt(i,o,Yr,Qr,Gr,r.context),qr=void 0}}var ti,ni={create:ei,update:ei};function ri(e,r){if(!t(e.data.domProps)||!t(r.data.domProps)){var i,o,a=r.elm,s=e.data.domProps||{},c=r.data.domProps||{};for(i in n(c.__ob__)&&(c=r.data.domProps=A({},c)),s)i in c||(a[i]="");for(i in c){if(o=c[i],"textContent"===i||"innerHTML"===i){if(r.children&&(r.children.length=0),o===s[i])continue;1===a.childNodes.length&&a.removeChild(a.childNodes[0])}if("value"===i&&"PROGRESS"!==a.tagName){a._value=o;var u=t(o)?"":String(o);ii(a,u)&&(a.value=u)}else if("innerHTML"===i&&qn(a.tagName)&&t(a.innerHTML)){(ti=ti||document.createElement("div")).innerHTML=""+o+"";for(var l=ti.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;l.firstChild;)a.appendChild(l.firstChild)}else if(o!==s[i])try{a[i]=o}catch(e){}}}}function ii(e,t){return!e.composing&&("OPTION"===e.tagName||function(e,t){var n=!0;try{n=document.activeElement!==e}catch(e){}return n&&e.value!==t}(e,t)||function(e,t){var r=e.value,i=e._vModifiers;if(n(i)){if(i.number)return f(r)!==f(t);if(i.trim)return r.trim()!==t.trim()}return r!==t}(e,t))}var oi={create:ri,update:ri},ai=g(function(e){var t={},n=/:(.+)/;return e.split(/;(?![^(]*\))/g).forEach(function(e){if(e){var r=e.split(n);r.length>1&&(t[r[0].trim()]=r[1].trim())}}),t});function si(e){var t=ci(e.style);return e.staticStyle?A(e.staticStyle,t):t}function ci(e){return Array.isArray(e)?O(e):"string"==typeof e?ai(e):e}var ui,li=/^--/,fi=/\s*!important$/,pi=function(e,t,n){if(li.test(t))e.style.setProperty(t,n);else if(fi.test(n))e.style.setProperty(C(t),n.replace(fi,""),"important");else{var r=vi(t);if(Array.isArray(n))for(var i=0,o=n.length;i-1?t.split(yi).forEach(function(t){return e.classList.add(t)}):e.classList.add(t);else{var n=" "+(e.getAttribute("class")||"")+" ";n.indexOf(" "+t+" ")<0&&e.setAttribute("class",(n+t).trim())}}function _i(e,t){if(t&&(t=t.trim()))if(e.classList)t.indexOf(" ")>-1?t.split(yi).forEach(function(t){return e.classList.remove(t)}):e.classList.remove(t),e.classList.length||e.removeAttribute("class");else{for(var n=" "+(e.getAttribute("class")||"")+" ",r=" "+t+" ";n.indexOf(r)>=0;)n=n.replace(r," ");(n=n.trim())?e.setAttribute("class",n):e.removeAttribute("class")}}function bi(e){if(e){if("object"==typeof e){var t={};return!1!==e.css&&A(t,$i(e.name||"v")),A(t,e),t}return"string"==typeof e?$i(e):void 0}}var $i=g(function(e){return{enterClass:e+"-enter",enterToClass:e+"-enter-to",enterActiveClass:e+"-enter-active",leaveClass:e+"-leave",leaveToClass:e+"-leave-to",leaveActiveClass:e+"-leave-active"}}),wi=z&&!W,Ci="transition",xi="animation",ki="transition",Ai="transitionend",Oi="animation",Si="animationend";wi&&(void 0===window.ontransitionend&&void 0!==window.onwebkittransitionend&&(ki="WebkitTransition",Ai="webkitTransitionEnd"),void 0===window.onanimationend&&void 0!==window.onwebkitanimationend&&(Oi="WebkitAnimation",Si="webkitAnimationEnd"));var Ti=z?window.requestAnimationFrame?window.requestAnimationFrame.bind(window):setTimeout:function(e){return e()};function Ei(e){Ti(function(){Ti(e)})}function Ni(e,t){var n=e._transitionClasses||(e._transitionClasses=[]);n.indexOf(t)<0&&(n.push(t),gi(e,t))}function ji(e,t){e._transitionClasses&&h(e._transitionClasses,t),_i(e,t)}function Di(e,t,n){var r=Mi(e,t),i=r.type,o=r.timeout,a=r.propCount;if(!i)return n();var s=i===Ci?Ai:Si,c=0,u=function(){e.removeEventListener(s,l),n()},l=function(t){t.target===e&&++c>=a&&u()};setTimeout(function(){c0&&(n=Ci,l=a,f=o.length):t===xi?u>0&&(n=xi,l=u,f=c.length):f=(n=(l=Math.max(a,u))>0?a>u?Ci:xi:null)?n===Ci?o.length:c.length:0,{type:n,timeout:l,propCount:f,hasTransform:n===Ci&&Li.test(r[ki+"Property"])}}function Ii(e,t){for(;e.length1}function Ui(e,t){!0!==t.data.show&&Pi(t)}var zi=function(e){var o,a,s={},c=e.modules,u=e.nodeOps;for(o=0;ov?_(e,t(i[y+1])?null:i[y+1].elm,i,d,y,o):d>y&&$(0,r,p,v)}(p,h,y,o,l):n(y)?(n(e.text)&&u.setTextContent(p,""),_(p,null,y,0,y.length-1,o)):n(h)?$(0,h,0,h.length-1):n(e.text)&&u.setTextContent(p,""):e.text!==i.text&&u.setTextContent(p,i.text),n(v)&&n(d=v.hook)&&n(d=d.postpatch)&&d(e,i)}}}function k(e,t,i){if(r(i)&&n(e.parent))e.parent.data.pendingInsert=t;else for(var o=0;o-1,a.selected!==o&&(a.selected=o);else if(N(Wi(a),r))return void(e.selectedIndex!==s&&(e.selectedIndex=s));i||(e.selectedIndex=-1)}}function qi(e,t){return t.every(function(t){return!N(t,e)})}function Wi(e){return"_value"in e?e._value:e.value}function Zi(e){e.target.composing=!0}function Gi(e){e.target.composing&&(e.target.composing=!1,Xi(e.target,"input"))}function Xi(e,t){var n=document.createEvent("HTMLEvents");n.initEvent(t,!0,!0),e.dispatchEvent(n)}function Yi(e){return!e.componentInstance||e.data&&e.data.transition?e:Yi(e.componentInstance._vnode)}var Qi={model:Vi,show:{bind:function(e,t,n){var r=t.value,i=(n=Yi(n)).data&&n.data.transition,o=e.__vOriginalDisplay="none"===e.style.display?"":e.style.display;r&&i?(n.data.show=!0,Pi(n,function(){e.style.display=o})):e.style.display=r?o:"none"},update:function(e,t,n){var r=t.value;!r!=!t.oldValue&&((n=Yi(n)).data&&n.data.transition?(n.data.show=!0,r?Pi(n,function(){e.style.display=e.__vOriginalDisplay}):Ri(n,function(){e.style.display="none"})):e.style.display=r?e.__vOriginalDisplay:"none")},unbind:function(e,t,n,r,i){i||(e.style.display=e.__vOriginalDisplay)}}},eo={name:String,appear:Boolean,css:Boolean,mode:String,type:String,enterClass:String,leaveClass:String,enterToClass:String,leaveToClass:String,enterActiveClass:String,leaveActiveClass:String,appearClass:String,appearActiveClass:String,appearToClass:String,duration:[Number,String,Object]};function to(e){var t=e&&e.componentOptions;return t&&t.Ctor.options.abstract?to(zt(t.children)):e}function no(e){var t={},n=e.$options;for(var r in n.propsData)t[r]=e[r];var i=n._parentListeners;for(var o in i)t[b(o)]=i[o];return t}function ro(e,t){if(/\d-keep-alive$/.test(t.tag))return e("keep-alive",{props:t.componentOptions.propsData})}var io=function(e){return e.tag||Ut(e)},oo=function(e){return"show"===e.name},ao={name:"transition",props:eo,abstract:!0,render:function(e){var t=this,n=this.$slots.default;if(n&&(n=n.filter(io)).length){var r=this.mode,o=n[0];if(function(e){for(;e=e.parent;)if(e.data.transition)return!0}(this.$vnode))return o;var a=to(o);if(!a)return o;if(this._leaving)return ro(e,o);var s="__transition-"+this._uid+"-";a.key=null==a.key?a.isComment?s+"comment":s+a.tag:i(a.key)?0===String(a.key).indexOf(s)?a.key:s+a.key:a.key;var c=(a.data||(a.data={})).transition=no(this),u=this._vnode,l=to(u);if(a.data.directives&&a.data.directives.some(oo)&&(a.data.show=!0),l&&l.data&&!function(e,t){return t.key===e.key&&t.tag===e.tag}(a,l)&&!Ut(l)&&(!l.componentInstance||!l.componentInstance._vnode.isComment)){var f=l.data.transition=A({},c);if("out-in"===r)return this._leaving=!0,it(f,"afterLeave",function(){t._leaving=!1,t.$forceUpdate()}),ro(e,o);if("in-out"===r){if(Ut(a))return u;var p,d=function(){p()};it(c,"afterEnter",d),it(c,"enterCancelled",d),it(f,"delayLeave",function(e){p=e})}}return o}}},so=A({tag:String,moveClass:String},eo);function co(e){e.elm._moveCb&&e.elm._moveCb(),e.elm._enterCb&&e.elm._enterCb()}function uo(e){e.data.newPos=e.elm.getBoundingClientRect()}function lo(e){var t=e.data.pos,n=e.data.newPos,r=t.left-n.left,i=t.top-n.top;if(r||i){e.data.moved=!0;var o=e.elm.style;o.transform=o.WebkitTransform="translate("+r+"px,"+i+"px)",o.transitionDuration="0s"}}delete so.mode;var fo={Transition:ao,TransitionGroup:{props:so,beforeMount:function(){var e=this,t=this._update;this._update=function(n,r){var i=Zt(e);e.__patch__(e._vnode,e.kept,!1,!0),e._vnode=e.kept,i(),t.call(e,n,r)}},render:function(e){for(var t=this.tag||this.$vnode.data.tag||"span",n=Object.create(null),r=this.prevChildren=this.children,i=this.$slots.default||[],o=this.children=[],a=no(this),s=0;s-1?Gn[e]=t.constructor===window.HTMLUnknownElement||t.constructor===window.HTMLElement:Gn[e]=/HTMLUnknownElement/.test(t.toString())},A(wn.options.directives,Qi),A(wn.options.components,fo),wn.prototype.__patch__=z?zi:S,wn.prototype.$mount=function(e,t){return function(e,t,n){var r;return e.$el=t,e.$options.render||(e.$options.render=ve),Yt(e,"beforeMount"),r=function(){e._update(e._render(),n)},new fn(e,r,S,{before:function(){e._isMounted&&!e._isDestroyed&&Yt(e,"beforeUpdate")}},!0),n=!1,null==e.$vnode&&(e._isMounted=!0,Yt(e,"mounted")),e}(this,e=e&&z?Yn(e):void 0,t)},z&&setTimeout(function(){F.devtools&&ne&&ne.emit("init",wn)},0);var po=/\{\{((?:.|\r?\n)+?)\}\}/g,vo=/[-.*+?^${}()|[\]\/\\]/g,ho=g(function(e){var t=e[0].replace(vo,"\\$&"),n=e[1].replace(vo,"\\$&");return new RegExp(t+"((?:.|\\n)+?)"+n,"g")});var mo={staticKeys:["staticClass"],transformNode:function(e,t){t.warn;var n=Fr(e,"class");n&&(e.staticClass=JSON.stringify(n));var r=Ir(e,"class",!1);r&&(e.classBinding=r)},genData:function(e){var t="";return e.staticClass&&(t+="staticClass:"+e.staticClass+","),e.classBinding&&(t+="class:"+e.classBinding+","),t}};var yo,go={staticKeys:["staticStyle"],transformNode:function(e,t){t.warn;var n=Fr(e,"style");n&&(e.staticStyle=JSON.stringify(ai(n)));var r=Ir(e,"style",!1);r&&(e.styleBinding=r)},genData:function(e){var t="";return e.staticStyle&&(t+="staticStyle:"+e.staticStyle+","),e.styleBinding&&(t+="style:("+e.styleBinding+"),"),t}},_o=function(e){return(yo=yo||document.createElement("div")).innerHTML=e,yo.textContent},bo=p("area,base,br,col,embed,frame,hr,img,input,isindex,keygen,link,meta,param,source,track,wbr"),$o=p("colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr,source"),wo=p("address,article,aside,base,blockquote,body,caption,col,colgroup,dd,details,dialog,div,dl,dt,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,head,header,hgroup,hr,html,legend,li,menuitem,meta,optgroup,option,param,rp,rt,source,style,summary,tbody,td,tfoot,th,thead,title,tr,track"),Co=/^\s*([^\s"'<>\/=]+)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/,xo=/^\s*((?:v-[\w-]+:|@|:|#)\[[^=]+\][^\s"'<>\/=]*)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/,ko="[a-zA-Z_][\\-\\.0-9_a-zA-Z"+P.source+"]*",Ao="((?:"+ko+"\\:)?"+ko+")",Oo=new RegExp("^<"+Ao),So=/^\s*(\/?)>/,To=new RegExp("^<\\/"+Ao+"[^>]*>"),Eo=/^]+>/i,No=/^",""":'"',"&":"&"," ":"\n"," ":"\t","'":"'"},Io=/&(?:lt|gt|quot|amp|#39);/g,Fo=/&(?:lt|gt|quot|amp|#39|#10|#9);/g,Po=p("pre,textarea",!0),Ro=function(e,t){return e&&Po(e)&&"\n"===t[0]};function Ho(e,t){var n=t?Fo:Io;return e.replace(n,function(e){return Mo[e]})}var Bo,Uo,zo,Vo,Ko,Jo,qo,Wo,Zo=/^@|^v-on:/,Go=/^v-|^@|^:/,Xo=/([\s\S]*?)\s+(?:in|of)\s+([\s\S]*)/,Yo=/,([^,\}\]]*)(?:,([^,\}\]]*))?$/,Qo=/^\(|\)$/g,ea=/^\[.*\]$/,ta=/:(.*)$/,na=/^:|^\.|^v-bind:/,ra=/\.[^.\]]+(?=[^\]]*$)/g,ia=/^v-slot(:|$)|^#/,oa=/[\r\n]/,aa=/\s+/g,sa=g(_o),ca="_empty_";function ua(e,t,n){return{type:1,tag:e,attrsList:t,attrsMap:ma(t),rawAttrsMap:{},parent:n,children:[]}}function la(e,t){Bo=t.warn||Sr,Jo=t.isPreTag||T,qo=t.mustUseProp||T,Wo=t.getTagNamespace||T;t.isReservedTag;zo=Tr(t.modules,"transformNode"),Vo=Tr(t.modules,"preTransformNode"),Ko=Tr(t.modules,"postTransformNode"),Uo=t.delimiters;var n,r,i=[],o=!1!==t.preserveWhitespace,a=t.whitespace,s=!1,c=!1;function u(e){if(l(e),s||e.processed||(e=fa(e,t)),i.length||e===n||n.if&&(e.elseif||e.else)&&da(n,{exp:e.elseif,block:e}),r&&!e.forbidden)if(e.elseif||e.else)a=e,(u=function(e){var t=e.length;for(;t--;){if(1===e[t].type)return e[t];e.pop()}}(r.children))&&u.if&&da(u,{exp:a.elseif,block:a});else{if(e.slotScope){var o=e.slotTarget||'"default"';(r.scopedSlots||(r.scopedSlots={}))[o]=e}r.children.push(e),e.parent=r}var a,u;e.children=e.children.filter(function(e){return!e.slotScope}),l(e),e.pre&&(s=!1),Jo(e.tag)&&(c=!1);for(var f=0;f]*>)","i")),p=e.replace(f,function(e,n,r){return u=r.length,Do(l)||"noscript"===l||(n=n.replace(//g,"$1").replace(//g,"$1")),Ro(l,n)&&(n=n.slice(1)),t.chars&&t.chars(n),""});c+=e.length-p.length,e=p,A(l,c-u,c)}else{var d=e.indexOf("<");if(0===d){if(No.test(e)){var v=e.indexOf("--\x3e");if(v>=0){t.shouldKeepComment&&t.comment(e.substring(4,v),c,c+v+3),C(v+3);continue}}if(jo.test(e)){var h=e.indexOf("]>");if(h>=0){C(h+2);continue}}var m=e.match(Eo);if(m){C(m[0].length);continue}var y=e.match(To);if(y){var g=c;C(y[0].length),A(y[1],g,c);continue}var _=x();if(_){k(_),Ro(_.tagName,e)&&C(1);continue}}var b=void 0,$=void 0,w=void 0;if(d>=0){for($=e.slice(d);!(To.test($)||Oo.test($)||No.test($)||jo.test($)||(w=$.indexOf("<",1))<0);)d+=w,$=e.slice(d);b=e.substring(0,d)}d<0&&(b=e),b&&C(b.length),t.chars&&b&&t.chars(b,c-b.length,c)}if(e===n){t.chars&&t.chars(e);break}}function C(t){c+=t,e=e.substring(t)}function x(){var t=e.match(Oo);if(t){var n,r,i={tagName:t[1],attrs:[],start:c};for(C(t[0].length);!(n=e.match(So))&&(r=e.match(xo)||e.match(Co));)r.start=c,C(r[0].length),r.end=c,i.attrs.push(r);if(n)return i.unarySlash=n[1],C(n[0].length),i.end=c,i}}function k(e){var n=e.tagName,c=e.unarySlash;o&&("p"===r&&wo(n)&&A(r),s(n)&&r===n&&A(n));for(var u=a(n)||!!c,l=e.attrs.length,f=new Array(l),p=0;p=0&&i[a].lowerCasedTag!==s;a--);else a=0;if(a>=0){for(var u=i.length-1;u>=a;u--)t.end&&t.end(i[u].tag,n,o);i.length=a,r=a&&i[a-1].tag}else"br"===s?t.start&&t.start(e,[],!0,n,o):"p"===s&&(t.start&&t.start(e,[],!1,n,o),t.end&&t.end(e,n,o))}A()}(e,{warn:Bo,expectHTML:t.expectHTML,isUnaryTag:t.isUnaryTag,canBeLeftOpenTag:t.canBeLeftOpenTag,shouldDecodeNewlines:t.shouldDecodeNewlines,shouldDecodeNewlinesForHref:t.shouldDecodeNewlinesForHref,shouldKeepComment:t.comments,outputSourceRange:t.outputSourceRange,start:function(e,o,a,l,f){var p=r&&r.ns||Wo(e);q&&"svg"===p&&(o=function(e){for(var t=[],n=0;nc&&(s.push(o=e.slice(c,i)),a.push(JSON.stringify(o)));var u=Ar(r[1].trim());a.push("_s("+u+")"),s.push({"@binding":u}),c=i+r[0].length}return c-1"+("true"===o?":("+t+")":":_q("+t+","+o+")")),Mr(e,"change","var $$a="+t+",$$el=$event.target,$$c=$$el.checked?("+o+"):("+a+");if(Array.isArray($$a)){var $$v="+(r?"_n("+i+")":i)+",$$i=_i($$a,$$v);if($$el.checked){$$i<0&&("+Br(t,"$$a.concat([$$v])")+")}else{$$i>-1&&("+Br(t,"$$a.slice(0,$$i).concat($$a.slice($$i+1))")+")}}else{"+Br(t,"$$c")+"}",null,!0)}(e,r,i);else if("input"===o&&"radio"===a)!function(e,t,n){var r=n&&n.number,i=Ir(e,"value")||"null";Er(e,"checked","_q("+t+","+(i=r?"_n("+i+")":i)+")"),Mr(e,"change",Br(t,i),null,!0)}(e,r,i);else if("input"===o||"textarea"===o)!function(e,t,n){var r=e.attrsMap.type,i=n||{},o=i.lazy,a=i.number,s=i.trim,c=!o&&"range"!==r,u=o?"change":"range"===r?Wr:"input",l="$event.target.value";s&&(l="$event.target.value.trim()"),a&&(l="_n("+l+")");var f=Br(t,l);c&&(f="if($event.target.composing)return;"+f),Er(e,"value","("+t+")"),Mr(e,u,f,null,!0),(s||a)&&Mr(e,"blur","$forceUpdate()")}(e,r,i);else if(!F.isReservedTag(o))return Hr(e,r,i),!1;return!0},text:function(e,t){t.value&&Er(e,"textContent","_s("+t.value+")",t)},html:function(e,t){t.value&&Er(e,"innerHTML","_s("+t.value+")",t)}},isPreTag:function(e){return"pre"===e},isUnaryTag:bo,mustUseProp:jn,canBeLeftOpenTag:$o,isReservedTag:Wn,getTagNamespace:Zn,staticKeys:function(e){return e.reduce(function(e,t){return e.concat(t.staticKeys||[])},[]).join(",")}(ba)},xa=g(function(e){return p("type,tag,attrsList,attrsMap,plain,parent,children,attrs,start,end,rawAttrsMap"+(e?","+e:""))});function ka(e,t){e&&($a=xa(t.staticKeys||""),wa=t.isReservedTag||T,function e(t){t.static=function(e){if(2===e.type)return!1;if(3===e.type)return!0;return!(!e.pre&&(e.hasBindings||e.if||e.for||d(e.tag)||!wa(e.tag)||function(e){for(;e.parent;){if("template"!==(e=e.parent).tag)return!1;if(e.for)return!0}return!1}(e)||!Object.keys(e).every($a)))}(t);if(1===t.type){if(!wa(t.tag)&&"slot"!==t.tag&&null==t.attrsMap["inline-template"])return;for(var n=0,r=t.children.length;n|^function\s*(?:[\w$]+)?\s*\(/,Oa=/\([^)]*?\);*$/,Sa=/^[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*|\['[^']*?']|\["[^"]*?"]|\[\d+]|\[[A-Za-z_$][\w$]*])*$/,Ta={esc:27,tab:9,enter:13,space:32,up:38,left:37,right:39,down:40,delete:[8,46]},Ea={esc:["Esc","Escape"],tab:"Tab",enter:"Enter",space:[" ","Spacebar"],up:["Up","ArrowUp"],left:["Left","ArrowLeft"],right:["Right","ArrowRight"],down:["Down","ArrowDown"],delete:["Backspace","Delete","Del"]},Na=function(e){return"if("+e+")return null;"},ja={stop:"$event.stopPropagation();",prevent:"$event.preventDefault();",self:Na("$event.target !== $event.currentTarget"),ctrl:Na("!$event.ctrlKey"),shift:Na("!$event.shiftKey"),alt:Na("!$event.altKey"),meta:Na("!$event.metaKey"),left:Na("'button' in $event && $event.button !== 0"),middle:Na("'button' in $event && $event.button !== 1"),right:Na("'button' in $event && $event.button !== 2")};function Da(e,t){var n=t?"nativeOn:":"on:",r="",i="";for(var o in e){var a=La(e[o]);e[o]&&e[o].dynamic?i+=o+","+a+",":r+='"'+o+'":'+a+","}return r="{"+r.slice(0,-1)+"}",i?n+"_d("+r+",["+i.slice(0,-1)+"])":n+r}function La(e){if(!e)return"function(){}";if(Array.isArray(e))return"["+e.map(function(e){return La(e)}).join(",")+"]";var t=Sa.test(e.value),n=Aa.test(e.value),r=Sa.test(e.value.replace(Oa,""));if(e.modifiers){var i="",o="",a=[];for(var s in e.modifiers)if(ja[s])o+=ja[s],Ta[s]&&a.push(s);else if("exact"===s){var c=e.modifiers;o+=Na(["ctrl","shift","alt","meta"].filter(function(e){return!c[e]}).map(function(e){return"$event."+e+"Key"}).join("||"))}else a.push(s);return a.length&&(i+=function(e){return"if(!$event.type.indexOf('key')&&"+e.map(Ma).join("&&")+")return null;"}(a)),o&&(i+=o),"function($event){"+i+(t?"return "+e.value+"($event)":n?"return ("+e.value+")($event)":r?"return "+e.value:e.value)+"}"}return t||n?e.value:"function($event){"+(r?"return "+e.value:e.value)+"}"}function Ma(e){var t=parseInt(e,10);if(t)return"$event.keyCode!=="+t;var n=Ta[e],r=Ea[e];return"_k($event.keyCode,"+JSON.stringify(e)+","+JSON.stringify(n)+",$event.key,"+JSON.stringify(r)+")"}var Ia={on:function(e,t){e.wrapListeners=function(e){return"_g("+e+","+t.value+")"}},bind:function(e,t){e.wrapData=function(n){return"_b("+n+",'"+e.tag+"',"+t.value+","+(t.modifiers&&t.modifiers.prop?"true":"false")+(t.modifiers&&t.modifiers.sync?",true":"")+")"}},cloak:S},Fa=function(e){this.options=e,this.warn=e.warn||Sr,this.transforms=Tr(e.modules,"transformCode"),this.dataGenFns=Tr(e.modules,"genData"),this.directives=A(A({},Ia),e.directives);var t=e.isReservedTag||T;this.maybeComponent=function(e){return!!e.component||!t(e.tag)},this.onceId=0,this.staticRenderFns=[],this.pre=!1};function Pa(e,t){var n=new Fa(t);return{render:"with(this){return "+(e?Ra(e,n):'_c("div")')+"}",staticRenderFns:n.staticRenderFns}}function Ra(e,t){if(e.parent&&(e.pre=e.pre||e.parent.pre),e.staticRoot&&!e.staticProcessed)return Ha(e,t);if(e.once&&!e.onceProcessed)return Ba(e,t);if(e.for&&!e.forProcessed)return za(e,t);if(e.if&&!e.ifProcessed)return Ua(e,t);if("template"!==e.tag||e.slotTarget||t.pre){if("slot"===e.tag)return function(e,t){var n=e.slotName||'"default"',r=qa(e,t),i="_t("+n+(r?","+r:""),o=e.attrs||e.dynamicAttrs?Ga((e.attrs||[]).concat(e.dynamicAttrs||[]).map(function(e){return{name:b(e.name),value:e.value,dynamic:e.dynamic}})):null,a=e.attrsMap["v-bind"];!o&&!a||r||(i+=",null");o&&(i+=","+o);a&&(i+=(o?"":",null")+","+a);return i+")"}(e,t);var n;if(e.component)n=function(e,t,n){var r=t.inlineTemplate?null:qa(t,n,!0);return"_c("+e+","+Va(t,n)+(r?","+r:"")+")"}(e.component,e,t);else{var r;(!e.plain||e.pre&&t.maybeComponent(e))&&(r=Va(e,t));var i=e.inlineTemplate?null:qa(e,t,!0);n="_c('"+e.tag+"'"+(r?","+r:"")+(i?","+i:"")+")"}for(var o=0;o>>0}(a):"")+")"}(e,e.scopedSlots,t)+","),e.model&&(n+="model:{value:"+e.model.value+",callback:"+e.model.callback+",expression:"+e.model.expression+"},"),e.inlineTemplate){var o=function(e,t){var n=e.children[0];if(n&&1===n.type){var r=Pa(n,t.options);return"inlineTemplate:{render:function(){"+r.render+"},staticRenderFns:["+r.staticRenderFns.map(function(e){return"function(){"+e+"}"}).join(",")+"]}"}}(e,t);o&&(n+=o+",")}return n=n.replace(/,$/,"")+"}",e.dynamicAttrs&&(n="_b("+n+',"'+e.tag+'",'+Ga(e.dynamicAttrs)+")"),e.wrapData&&(n=e.wrapData(n)),e.wrapListeners&&(n=e.wrapListeners(n)),n}function Ka(e){return 1===e.type&&("slot"===e.tag||e.children.some(Ka))}function Ja(e,t){var n=e.attrsMap["slot-scope"];if(e.if&&!e.ifProcessed&&!n)return Ua(e,t,Ja,"null");if(e.for&&!e.forProcessed)return za(e,t,Ja);var r=e.slotScope===ca?"":String(e.slotScope),i="function("+r+"){return "+("template"===e.tag?e.if&&n?"("+e.if+")?"+(qa(e,t)||"undefined")+":undefined":qa(e,t)||"undefined":Ra(e,t))+"}",o=r?"":",proxy:true";return"{key:"+(e.slotTarget||'"default"')+",fn:"+i+o+"}"}function qa(e,t,n,r,i){var o=e.children;if(o.length){var a=o[0];if(1===o.length&&a.for&&"template"!==a.tag&&"slot"!==a.tag){var s=n?t.maybeComponent(a)?",1":",0":"";return""+(r||Ra)(a,t)+s}var c=n?function(e,t){for(var n=0,r=0;r':'
',ts.innerHTML.indexOf(" ")>0}var os=!!z&&is(!1),as=!!z&&is(!0),ss=g(function(e){var t=Yn(e);return t&&t.innerHTML}),cs=wn.prototype.$mount;return wn.prototype.$mount=function(e,t){if((e=e&&Yn(e))===document.body||e===document.documentElement)return this;var n=this.$options;if(!n.render){var r=n.template;if(r)if("string"==typeof r)"#"===r.charAt(0)&&(r=ss(r));else{if(!r.nodeType)return this;r=r.innerHTML}else e&&(r=function(e){if(e.outerHTML)return e.outerHTML;var t=document.createElement("div");return t.appendChild(e.cloneNode(!0)),t.innerHTML}(e));if(r){var i=rs(r,{outputSourceRange:!1,shouldDecodeNewlines:os,shouldDecodeNewlinesForHref:as,delimiters:n.delimiters,comments:n.comments},this),o=i.render,a=i.staticRenderFns;n.render=o,n.staticRenderFns=a}}return cs.call(this,e,t)},wn.compile=rs,wn}); \ No newline at end of file diff --git a/templates/base/footer.tmpl b/templates/base/footer.tmpl index 732f61ea5..a0f5754d5 100644 --- a/templates/base/footer.tmpl +++ b/templates/base/footer.tmpl @@ -36,12 +36,48 @@ {{end}} {{if .RequireTribute}} -{{end}} -{{if .PageIsHome}} - {{end}} {{template "custom/footer" .}} +{{if .PageIsHome}} + + + + + + +{{end}} diff --git a/templates/base/head_home.tmpl b/templates/base/head_home.tmpl index 25d7a92ec..2def358f8 100644 --- a/templates/base/head_home.tmpl +++ b/templates/base/head_home.tmpl @@ -192,6 +192,8 @@ var _hmt = _hmt || []; + + {{template "custom/body_outer_pre" .}} diff --git a/templates/home.tmpl b/templates/home.tmpl index 5edd65ceb..9e8e6acf4 100755 --- a/templates/home.tmpl +++ b/templates/home.tmpl @@ -1,7 +1,59 @@ {{template "base/head_home" .}}
-
+
+ +
+

完成AI任务
1716

+

运行AI任务
120

+

等待AI任务
80

+
+ +
+ +
+ + +
+
+
+
+
+ +

{{item.name}}

+
+
+
+
+
+
+
+ + + + +
+
调试任务 #31412022050816002
+
+
+ + + +
+
+
+ + + + +
+
+
+
+
+
+
+

{{.page_title}}
@@ -16,7 +68,7 @@ {{.page_use}} {{end}}
-
+

* {{.page_only_dynamic}}

From b38e1b048cc447f17741613d897dc101097b8987 Mon Sep 17 00:00:00 2001 From: OpenIhu Date: Mon, 23 May 2022 11:46:22 +0800 Subject: [PATCH 02/87] =?UTF-8?q?=E9=9A=90=E8=97=8F=E4=B8=AD=E5=BF=83?= =?UTF-8?q?=E5=90=8D=E7=A7=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- templates/home.tmpl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/home.tmpl b/templates/home.tmpl index 9e8e6acf4..401cf02e3 100755 --- a/templates/home.tmpl +++ b/templates/home.tmpl @@ -20,7 +20,7 @@
-

{{item.name}}

+
From 37b139ffb1140edae546a96d64104eb374707999 Mon Sep 17 00:00:00 2001 From: OpenIhu Date: Mon, 23 May 2022 11:52:14 +0800 Subject: [PATCH 03/87] =?UTF-8?q?=E8=B0=83=E6=95=B4=E9=A6=96=E9=A1=B5?= =?UTF-8?q?=E5=BC=80=E6=BA=90=E5=8A=A8=E6=80=81=E5=AE=BD=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- templates/home.tmpl | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/templates/home.tmpl b/templates/home.tmpl index 401cf02e3..cf27a682e 100755 --- a/templates/home.tmpl +++ b/templates/home.tmpl @@ -69,15 +69,11 @@ {{end}}

-
+

* {{.page_only_dynamic}}

-
-
-
-
- -
-
+
+
+
From dfba0588313d81f2a9d4c9206e3878571231077a Mon Sep 17 00:00:00 2001 From: OpenIhu Date: Mon, 23 May 2022 11:56:49 +0800 Subject: [PATCH 04/87] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dhomenews?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- templates/home.tmpl | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/templates/home.tmpl b/templates/home.tmpl index cf27a682e..2d2fcf3e2 100755 --- a/templates/home.tmpl +++ b/templates/home.tmpl @@ -71,9 +71,11 @@

* {{.page_only_dynamic}}

-
-
- +
+
+
+ +
From 5cde254ce07f3210a0c825be77faea3733b7b9a8 Mon Sep 17 00:00:00 2001 From: OpenIhu Date: Mon, 23 May 2022 12:02:14 +0800 Subject: [PATCH 05/87] =?UTF-8?q?=E8=B0=83=E6=95=B4h1=E6=96=87=E5=AD=97?= =?UTF-8?q?=E5=AE=BD=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- templates/home.tmpl | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/templates/home.tmpl b/templates/home.tmpl index 2d2fcf3e2..5a602dab7 100755 --- a/templates/home.tmpl +++ b/templates/home.tmpl @@ -54,19 +54,23 @@
-

- {{.page_title}} -
- {{.page_small_title}} +
+
+

+ {{.page_title}} +
+ {{.page_small_title}} +
+

+

{{.page_description}}

+ + {{if .IsSigned}} + {{.page_use}} + {{else}} + {{.page_use}} + {{end}}
-

-

{{.page_description}}

- - {{if .IsSigned}} - {{.page_use}} - {{else}} - {{.page_use}} - {{end}} +
From 3f319dc9f1bf2e0b6755c9bdbfad60130116c9e1 Mon Sep 17 00:00:00 2001 From: OpenIhu Date: Mon, 23 May 2022 15:18:01 +0800 Subject: [PATCH 06/87] =?UTF-8?q?=E8=B0=83=E6=95=B4=E9=A6=96=E9=A1=B5?= =?UTF-8?q?=E5=8A=A8=E6=80=81=E6=A0=B7=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- custom/public/css/git.openi.css | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/custom/public/css/git.openi.css b/custom/public/css/git.openi.css index 10f68d625..d50b7e2cd 100644 --- a/custom/public/css/git.openi.css +++ b/custom/public/css/git.openi.css @@ -152,10 +152,10 @@ margin-left: 2.3em; } .homenews{ - border-radius: 2em; + border-radius: 1.2em; background-color: rgba(16, 16, 16, .9); position: relative; - padding-left: 1.5em !important; + padding-left: 1.3em !important; } .homeorg, .homepro, .homemodel, .i-env{ position: relative; @@ -186,7 +186,7 @@ padding: 0; } .newslist{ - height: 285px; + height: 260px; overflow: hidden; } From ff1a056905eabb30d30c450330857905bc2371fd Mon Sep 17 00:00:00 2001 From: OpenIhu Date: Mon, 23 May 2022 15:58:43 +0800 Subject: [PATCH 07/87] =?UTF-8?q?=E8=B0=83=E6=95=B4=E9=A6=96=E9=A1=B5?= =?UTF-8?q?=E5=8A=A8=E6=80=81=E4=B8=BA9=E6=9D=A1=E4=B8=80=E5=B1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- custom/public/css/git.openi.css | 8 ++++---- public/home/home.js | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/custom/public/css/git.openi.css b/custom/public/css/git.openi.css index d50b7e2cd..7d05d503b 100644 --- a/custom/public/css/git.openi.css +++ b/custom/public/css/git.openi.css @@ -66,7 +66,7 @@ background: #DFE9F0; padding-top: 0; border: none; - margin-bottom: 11em; + margin-bottom: 13em; } .ui.secondary.hometop.segment #navbar{ z-index: 10; @@ -155,7 +155,7 @@ border-radius: 1.2em; background-color: rgba(16, 16, 16, .9); position: relative; - padding-left: 1.3em !important; + padding: 1.0em 1.0em 1.0em 1.3em; } .homeorg, .homepro, .homemodel, .i-env{ position: relative; @@ -169,7 +169,7 @@ bottom: 0; background-color: rgba(105, 192, 255, .4); width: 2px; -} +} .homenews .time-since{ padding-left: 1em; color: #888888; @@ -186,7 +186,7 @@ padding: 0; } .newslist{ - height: 260px; + height: 300px; overflow: hidden; } diff --git a/public/home/home.js b/public/home/home.js index 3b2a34f06..1f11b9a4f 100755 --- a/public/home/home.js +++ b/public/home/home.js @@ -9,7 +9,7 @@ if(isEmpty(token)){ var swiperNewMessage = new Swiper(".newslist", { direction: "vertical", - slidesPerView: 10, + slidesPerView: 9, loop: true, autoplay: { delay: 2500, From 23b519585b67e543e8d497d159e35a1183b80b01 Mon Sep 17 00:00:00 2001 From: OpenIhu Date: Tue, 24 May 2022 14:42:19 +0800 Subject: [PATCH 08/87] =?UTF-8?q?=E6=81=A2=E5=A4=8D=E6=99=BA=E7=AE=97?= =?UTF-8?q?=E7=BD=91=E7=BB=9C=E5=88=86=E4=B8=AD=E5=BF=83=E5=90=8D=E7=A7=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- custom/public/rotation3D/rotation3D.css | 30 +++++++++++++++++++++++++ templates/home.tmpl | 2 +- 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/custom/public/rotation3D/rotation3D.css b/custom/public/rotation3D/rotation3D.css index 7f93f1025..d29ee5cb7 100644 --- a/custom/public/rotation3D/rotation3D.css +++ b/custom/public/rotation3D/rotation3D.css @@ -29,6 +29,36 @@ .rotation3D__item .cont{ position: relative; z-index: 2; } .rotation3D__item .cont .iconfont { font-size: 28px; margin-top: 30px; margin-bottom: 96px; display: block; } .rotation3D__item .cont p{ color: #101010; } +.itemList .rotation3D__item .cont p::after{ + content: ''; + position: absolute; + left: 0; + right: 0; +} +.itemList .rotation3D__item:nth-child(1) .cont p::after{ + content: "云脑一号"; +} +.itemList .rotation3D__item:nth-child(2) .cont p::after{ + content: "云脑二号"; +} +.itemList .rotation3D__item:nth-child(3) .cont p::after{ + content: "北大分中心"; +} +.itemList .rotation3D__item:nth-child(4) .cont p::after{ + content: "合肥分中心"; +} +.itemList .rotation3D__item:nth-child(5) .cont p::after{ + content: "武汉AI中心"; +} +.itemList .rotation3D__item:nth-child(6) .cont p::after{ + content: "西安AI中心"; +} +.itemList .rotation3D__item:nth-child(7) .cont p::after{ + content: "中原AI中心"; +} +.itemList .rotation3D__item:nth-child(8) .cont p::after{ + content: "成都AI中心"; +} .rotation3D__item.blue{ color: #01e9fc; } .rotation3D__item.green{ color: #b4b3ca; } diff --git a/templates/home.tmpl b/templates/home.tmpl index 5a602dab7..aa7a21ccc 100755 --- a/templates/home.tmpl +++ b/templates/home.tmpl @@ -20,7 +20,7 @@
- +

From 27630014b9eb586a172f05936e2594950613d8a6 Mon Sep 17 00:00:00 2001 From: zouap Date: Tue, 24 May 2022 16:37:15 +0800 Subject: [PATCH 09/87] =?UTF-8?q?=E9=A6=96=E9=A1=B5=E6=94=B9=E7=89=88?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zouap --- public/home/home.js | 89 ++++++++++++++++++++++++++-------------- routers/home.go | 79 ++++++++++++++++++++++++----------- routers/routes/routes.go | 7 ++-- templates/home.tmpl | 6 +-- 4 files changed, 122 insertions(+), 59 deletions(-) diff --git a/public/home/home.js b/public/home/home.js index 1f11b9a4f..9a4847e73 100755 --- a/public/home/home.js +++ b/public/home/home.js @@ -117,6 +117,7 @@ socket.onmessage = function (e) { continue; } } + refresh3DInfo(record); var recordPrefix = getMsg(record); if(record.OpType == "6" || record.OpType == "10" || record.OpType == "12" || record.OpType == "13"){ html += recordPrefix + actionName; @@ -200,6 +201,22 @@ function getTaskLink(record){ return re; } +function refresh3DInfo(record){ + if(record.OpType == "25" || record.OpType == "29" || record.OpType == "31"){ + //cloudbrain one + var lines = $('.rotation3D__line blue'); + console.log("cloudbrain one line length=" + lines.length); + lines[0].find("span").text(record.RefName); + + }else if(record.OpType == "26" || record.OpType == "27" || record.OpType == "28"){ + //cloudbrain two + var lines = $('.rotation3D__line blue'); + console.log("cloudbrain two line length=" + lines.length); + lines[1].find("span").text(record.RefName); + } + +} + function getMsg(record){ var html =""; html += "
"; @@ -418,48 +435,60 @@ queryRecommendData(); function queryRecommendData(){ $.ajax({ type:"GET", - url:"/recommend/org", + url:"/recommend/home", headers: { authorization:token, }, dataType:"json", async:false, success:function(json){ - displayOrg(json); + displayOrg(json.org); + displayRepo(json.repo); + displayActivity(json.image); + displayCloudBrain(json.cloudbrain) }, error:function(response) { } }); - $.ajax({ - type:"GET", - url:"/recommend/repo", - headers: { - authorization:token, - }, - dataType:"json", - async:false, - success:function(json){ - displayRepo(json); - }, - error:function(response) { - } - }); + // $.ajax({ + // type:"GET", + // url:"/recommend/repo", + // headers: { + // authorization:token, + // }, + // dataType:"json", + // async:false, + // success:function(json){ + // displayRepo(json); + // }, + // error:function(response) { + // } + // }); + + // $.ajax({ + // type:"GET", + // url:"/recommend/imageinfo", + // headers: { + // authorization:token, + // }, + // dataType:"json", + // async:false, + // success:function(json){ + // displayActivity(json); + // }, + // error:function(response) { + // } + // }); +} - $.ajax({ - type:"GET", - url:"/recommend/imageinfo", - headers: { - authorization:token, - }, - dataType:"json", - async:false, - success:function(json){ - displayActivity(json); - }, - error:function(response) { - } - }); +function displayCloudBrain(json){ + var completed_task = document.getElementById("completed_task"); + completed_task.text(json.completed_task); + var running_task = document.getElementById("running_task"); + running_task.text(json.running_task); + var wait_task = document.getElementById("wait_task"); + wait_task.text(json.wait_task); } function displayActivity(json){ diff --git a/routers/home.go b/routers/home.go index e37cacb01..09fe97dc6 100755 --- a/routers/home.go +++ b/routers/home.go @@ -471,7 +471,7 @@ func ExploreOrganizations(ctx *context.Context) { return } - recommendOrgs, err := GetRecommendOrg() + recommendOrgs, err := getRecommendOrg() if err != nil { log.Error("GetRecommendOrgInfos failed:%v", err.Error(), ctx.Data["MsgID"]) ctx.ServerError("GetRecommendOrgInfos", err) @@ -606,31 +606,31 @@ func ExploreImages(ctx *context.Context) { } func ExploreDataAnalysisUserTrend(ctx *context.Context) { - ctx.Data["url_params"]="UserTrend" + ctx.Data["url_params"] = "UserTrend" ctx.HTML(200, tplExploreExploreDataAnalysis) } func ExploreDataAnalysisUserAnalysis(ctx *context.Context) { - ctx.Data["url_params"]="UserAnalysis" + ctx.Data["url_params"] = "UserAnalysis" ctx.HTML(200, tplExploreExploreDataAnalysis) } func ExploreDataAnalysisProTrend(ctx *context.Context) { - ctx.Data["url_params"]="ProTrend" + ctx.Data["url_params"] = "ProTrend" ctx.HTML(200, tplExploreExploreDataAnalysis) } func ExploreDataAnalysisProAnalysis(ctx *context.Context) { - ctx.Data["url_params"]="ProAnalysis" + ctx.Data["url_params"] = "ProAnalysis" ctx.HTML(200, tplExploreExploreDataAnalysis) } func ExploreDataAnalysisOverview(ctx *context.Context) { - ctx.Data["url_params"]="Overview" + ctx.Data["url_params"] = "Overview" ctx.HTML(200, tplExploreExploreDataAnalysis) } func ExploreDataAnalysisBrainAnalysis(ctx *context.Context) { - ctx.Data["url_params"]="BrainAnalysis" + ctx.Data["url_params"] = "BrainAnalysis" ctx.HTML(200, tplExploreExploreDataAnalysis) } func ExploreDataAnalysis(ctx *context.Context) { - ctx.Data["url_params"]="" + ctx.Data["url_params"] = "" ctx.HTML(200, tplExploreExploreDataAnalysis) } @@ -640,7 +640,7 @@ func NotFound(ctx *context.Context) { ctx.NotFound("home.NotFound", nil) } -func GetRecommendOrg() ([]map[string]interface{}, error) { +func getRecommendOrg() ([]map[string]interface{}, error) { url := setting.RecommentRepoAddr + "organizations" result, err := repository.RecommendFromPromote(url) @@ -668,7 +668,7 @@ func GetRecommendOrg() ([]map[string]interface{}, error) { } return resultOrg, nil } -func GetImageInfo() ([]map[string]interface{}, error) { +func getImageInfo() ([]map[string]interface{}, error) { url := setting.RecommentRepoAddr + "picture_info" result, err := repository.RecommendFromPromote(url) @@ -731,14 +731,14 @@ func GetRankUser(index string) ([]map[string]interface{}, error) { return resultOrg, nil } -func GetImageInfoFromPromote(ctx *context.Context) { - imageInfo, err := GetImageInfo() - if err != nil { - ctx.ServerError("500", err) - return - } - ctx.JSON(200, imageInfo) -} +// func GetImageInfoFromPromote(ctx *context.Context) { +// imageInfo, err := GetImageInfo() +// if err != nil { +// ctx.ServerError("500", err) +// return +// } +// ctx.JSON(200, imageInfo) +// } func GetUserRankFromPromote(ctx *context.Context) { index := ctx.Params("index") @@ -750,15 +750,48 @@ func GetUserRankFromPromote(ctx *context.Context) { ctx.JSON(200, resultUserRank) } -func RecommendOrgFromPromote(ctx *context.Context) { - resultOrg, err := GetRecommendOrg() +func RecommendHomeInfo(ctx *context.Context) { + resultOrg, err := getRecommendOrg() if err != nil { - ctx.ServerError("500", err) - return + log.Info("error." + err.Error()) } - ctx.JSON(200, resultOrg) + resultRepo, err := repository.GetRecommendRepoFromPromote("projects") + if err != nil { + log.Info("error." + err.Error()) + } + resultImage, err := getImageInfo() + if err != nil { + log.Info("error." + err.Error()) + } + resultCloudBrain, err := getCloudbrainNums() + if err != nil { + log.Info("error." + err.Error()) + } + mapInterface := make(map[string]interface{}) + mapInterface["org"] = resultOrg + mapInterface["repo"] = resultRepo + mapInterface["image"] = resultImage + mapInterface["cloudbrain"] = resultCloudBrain + ctx.JSON(http.StatusOK, mapInterface) } +func getCloudbrainNums() (map[string]string, error) { + result := make(map[string]string) + result["completed_task"] = "1800" + result["running_task"] = "20" + result["wait_task"] = "30" + return result, nil +} + +// func RecommendOrgFromPromote(ctx *context.Context) { +// resultOrg, err := GetRecommendOrg() +// if err != nil { +// ctx.ServerError("500", err) +// return +// } +// ctx.JSON(200, resultOrg) +// } + func RecommendRepoFromPromote(ctx *context.Context) { result, err := repository.GetRecommendRepoFromPromote("projects") if err != nil { diff --git a/routers/routes/routes.go b/routers/routes/routes.go index 4c3f5f472..12d0e1cf8 100755 --- a/routers/routes/routes.go +++ b/routers/routes/routes.go @@ -323,10 +323,11 @@ func RegisterRoutes(m *macaron.Macaron) { m.Get("/dashboard", routers.Dashboard) go routers.SocketManager.Run() m.Get("/action/notification", routers.ActionNotification) - m.Get("/recommend/org", routers.RecommendOrgFromPromote) - m.Get("/recommend/repo", routers.RecommendRepoFromPromote) + m.Get("/recommend/home", routers.RecommendHomeInfo) + //m.Get("/recommend/org", routers.RecommendOrgFromPromote) + //m.Get("/recommend/repo", routers.RecommendRepoFromPromote) m.Get("/recommend/userrank/:index", routers.GetUserRankFromPromote) - m.Get("/recommend/imageinfo", routers.GetImageInfoFromPromote) + //m.Get("/recommend/imageinfo", routers.GetImageInfoFromPromote) m.Post("/all/search/", routers.Search) m.Get("/all/search/", routers.EmptySearch) m.Get("/all/dosearch/", routers.SearchApi) diff --git a/templates/home.tmpl b/templates/home.tmpl index aa7a21ccc..ccf734081 100755 --- a/templates/home.tmpl +++ b/templates/home.tmpl @@ -4,9 +4,9 @@
-

完成AI任务
1716

-

运行AI任务
120

-

等待AI任务
80

+

完成AI任务
1716

+

运行AI任务
120

+

等待AI任务
80

From 616d002d2f69971ae3f0c721c9d5b67fd412a38a Mon Sep 17 00:00:00 2001 From: zouap Date: Tue, 24 May 2022 16:47:40 +0800 Subject: [PATCH 10/87] =?UTF-8?q?=E9=A6=96=E9=A1=B5=E6=94=B9=E7=89=88?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zouap --- public/home/home.js | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/public/home/home.js b/public/home/home.js index 9a4847e73..89aad85e0 100755 --- a/public/home/home.js +++ b/public/home/home.js @@ -483,12 +483,9 @@ function queryRecommendData(){ } function displayCloudBrain(json){ - var completed_task = document.getElementById("completed_task"); - completed_task.text(json.completed_task); - var running_task = document.getElementById("running_task"); - running_task.text(json.running_task); - var wait_task = document.getElementById("wait_task"); - wait_task.text(json.wait_task); + $('#completed_task').text(json.completed_task); + $('#running_task').text(json.running_task); + $('#wait_task').text(json.wait_task); } function displayActivity(json){ From 656b5e89c73292e2746aecfe1920dfebacca52d3 Mon Sep 17 00:00:00 2001 From: zouap Date: Tue, 24 May 2022 16:51:20 +0800 Subject: [PATCH 11/87] =?UTF-8?q?=E9=A6=96=E9=A1=B5=E6=94=B9=E7=89=88?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zouap --- public/home/home.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/public/home/home.js b/public/home/home.js index 89aad85e0..bf0da85d6 100755 --- a/public/home/home.js +++ b/public/home/home.js @@ -204,13 +204,13 @@ function getTaskLink(record){ function refresh3DInfo(record){ if(record.OpType == "25" || record.OpType == "29" || record.OpType == "31"){ //cloudbrain one - var lines = $('.rotation3D__line blue'); + var lines = $('.rotation3D__line'); console.log("cloudbrain one line length=" + lines.length); lines[0].find("span").text(record.RefName); }else if(record.OpType == "26" || record.OpType == "27" || record.OpType == "28"){ //cloudbrain two - var lines = $('.rotation3D__line blue'); + var lines = $('.rotation3D__line'); console.log("cloudbrain two line length=" + lines.length); lines[1].find("span").text(record.RefName); } From c50ee706b3e982b7a716753e6925687e9fe0ed2e Mon Sep 17 00:00:00 2001 From: zouap Date: Tue, 24 May 2022 16:55:49 +0800 Subject: [PATCH 12/87] =?UTF-8?q?=E9=A6=96=E9=A1=B5=E6=94=B9=E7=89=88?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zouap --- public/home/home.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/public/home/home.js b/public/home/home.js index bf0da85d6..2d27c76f5 100755 --- a/public/home/home.js +++ b/public/home/home.js @@ -205,14 +205,15 @@ function refresh3DInfo(record){ if(record.OpType == "25" || record.OpType == "29" || record.OpType == "31"){ //cloudbrain one var lines = $('.rotation3D__line'); - console.log("cloudbrain one line length=" + lines.length); + var spans = $('.rotation3D__line').find("span") + console.log("cloudbrain one line length=" + lines.length + " spans=" + spans.length); lines[0].find("span").text(record.RefName); }else if(record.OpType == "26" || record.OpType == "27" || record.OpType == "28"){ //cloudbrain two var lines = $('.rotation3D__line'); console.log("cloudbrain two line length=" + lines.length); - lines[1].find("span").text(record.RefName); + //lines[1].find("span").text(record.RefName); } } From 4330c46658792218327cab63138878fc02870770 Mon Sep 17 00:00:00 2001 From: zouap Date: Tue, 24 May 2022 16:58:05 +0800 Subject: [PATCH 13/87] =?UTF-8?q?=E9=A6=96=E9=A1=B5=E6=94=B9=E7=89=88?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zouap --- public/home/home.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/public/home/home.js b/public/home/home.js index 2d27c76f5..bca9ddb1e 100755 --- a/public/home/home.js +++ b/public/home/home.js @@ -205,14 +205,14 @@ function refresh3DInfo(record){ if(record.OpType == "25" || record.OpType == "29" || record.OpType == "31"){ //cloudbrain one var lines = $('.rotation3D__line'); - var spans = $('.rotation3D__line').find("span") - console.log("cloudbrain one line length=" + lines.length + " spans=" + spans.length); - lines[0].find("span").text(record.RefName); - + $('.rotation3D__line').find("span").eq(0).text(record.RefName) + console.log("cloudbrain one line length=" + lines.length); + //lines[0].find("span").text(record.RefName); }else if(record.OpType == "26" || record.OpType == "27" || record.OpType == "28"){ //cloudbrain two var lines = $('.rotation3D__line'); console.log("cloudbrain two line length=" + lines.length); + $('.rotation3D__line').find("span").eq(1).text(record.RefName) //lines[1].find("span").text(record.RefName); } From 6216bcc30772b1d1be183ab985cbb27f29c02f56 Mon Sep 17 00:00:00 2001 From: zouap Date: Tue, 24 May 2022 17:03:29 +0800 Subject: [PATCH 14/87] =?UTF-8?q?=E9=A6=96=E9=A1=B5=E6=94=B9=E7=89=88?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zouap --- public/home/home.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/public/home/home.js b/public/home/home.js index bca9ddb1e..6bba5134a 100755 --- a/public/home/home.js +++ b/public/home/home.js @@ -205,14 +205,16 @@ function refresh3DInfo(record){ if(record.OpType == "25" || record.OpType == "29" || record.OpType == "31"){ //cloudbrain one var lines = $('.rotation3D__line'); - $('.rotation3D__line').find("span").eq(0).text(record.RefName) + var span = $('.rotation3D__line').find("span")[0]; + console.log(span); + //$('.rotation3D__line').find("span").eq(0).text(record.RefName) console.log("cloudbrain one line length=" + lines.length); //lines[0].find("span").text(record.RefName); }else if(record.OpType == "26" || record.OpType == "27" || record.OpType == "28"){ //cloudbrain two var lines = $('.rotation3D__line'); console.log("cloudbrain two line length=" + lines.length); - $('.rotation3D__line').find("span").eq(1).text(record.RefName) + //$('.rotation3D__line').find("span").eq(1).text(record.RefName) //lines[1].find("span").text(record.RefName); } From 460bff4614bde11e9acda192c2f9a98d2472dca5 Mon Sep 17 00:00:00 2001 From: zouap Date: Tue, 24 May 2022 17:07:32 +0800 Subject: [PATCH 15/87] =?UTF-8?q?=E9=A6=96=E9=A1=B5=E6=94=B9=E7=89=88?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zouap --- public/home/home.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/public/home/home.js b/public/home/home.js index 6bba5134a..33c7edc47 100755 --- a/public/home/home.js +++ b/public/home/home.js @@ -207,6 +207,7 @@ function refresh3DInfo(record){ var lines = $('.rotation3D__line'); var span = $('.rotation3D__line').find("span")[0]; console.log(span); + span.innerText =record.RefName; //$('.rotation3D__line').find("span").eq(0).text(record.RefName) console.log("cloudbrain one line length=" + lines.length); //lines[0].find("span").text(record.RefName); @@ -214,6 +215,9 @@ function refresh3DInfo(record){ //cloudbrain two var lines = $('.rotation3D__line'); console.log("cloudbrain two line length=" + lines.length); + var span = $('.rotation3D__line').find("span")[1]; + console.log(span); + span.innerText =record.RefName; //$('.rotation3D__line').find("span").eq(1).text(record.RefName) //lines[1].find("span").text(record.RefName); } From bcc84cb4f5b91505165fae9256517c56722bed22 Mon Sep 17 00:00:00 2001 From: liuzx Date: Wed, 25 May 2022 16:26:02 +0800 Subject: [PATCH 16/87] add jobstatus analysis --- models/cloudbrain_static.go | 30 +++++++++++ routers/api/v1/api.go | 3 ++ routers/api/v1/repo/cloudbrain_dashboard.go | 58 +++++++++++++++++++++ 3 files changed, 91 insertions(+) create mode 100644 models/cloudbrain_static.go diff --git a/models/cloudbrain_static.go b/models/cloudbrain_static.go new file mode 100644 index 000000000..de3575632 --- /dev/null +++ b/models/cloudbrain_static.go @@ -0,0 +1,30 @@ +package models + +func GetJobWaitingCount() (int64, error) { + countSql := "SELECT count(*) FROM " + "public.cloudbrain where status ='" + string(JobWaiting) + "'" + return x.SQL(countSql).Count() +} +func GetJobStoppedCount() (int64, error) { + countSql := "SELECT count(*) FROM " + "public.cloudbrain where status ='" + string(JobStopped) + "'" + return x.SQL(countSql).Count() +} +func GetJobCompletedCount() (int64, error) { + countSql := "SELECT count(*) FROM " + "public.cloudbrain where status ='" + string(ModelArtsTrainJobCompleted) + "'" + return x.SQL(countSql).Count() +} +func GetJobFailedCount() (int64, error) { + countSql := "SELECT count(*) FROM " + "public.cloudbrain where status ='" + string(JobFailed) + "'" + return x.SQL(countSql).Count() +} +func GetJobRunningCount() (int64, error) { + countSql := "SELECT count(*) FROM " + "public.cloudbrain where status ='" + string(JobRunning) + "'" + return x.SQL(countSql).Count() +} +func GetJobKilledCount() (int64, error) { + countSql := "SELECT count(*) FROM " + "public.cloudbrain where status ='" + string(ModelArtsTrainJobKilled) + "'" + return x.SQL(countSql).Count() +} +func GetJobInitCount() (int64, error) { + countSql := "SELECT count(*) FROM " + "public.cloudbrain where status ='" + string(ModelArtsTrainJobInit) + "'" + return x.SQL(countSql).Count() +} diff --git a/routers/api/v1/api.go b/routers/api/v1/api.go index 9a05aa8ae..17122b09d 100755 --- a/routers/api/v1/api.go +++ b/routers/api/v1/api.go @@ -573,6 +573,9 @@ func RegisterRoutes(m *macaron.Macaron) { //cloudbrain board m.Group("/cloudbrainboard", func() { m.Get("/downloadAll", repo.DownloadCloudBrainBoard) + m.Group("/cloudbrain", func() { + m.Get("/status_analysis", repo.GetCloudbrainsStatusAnalysis) + }) }, operationReq) // Users m.Group("/users", func() { diff --git a/routers/api/v1/repo/cloudbrain_dashboard.go b/routers/api/v1/repo/cloudbrain_dashboard.go index 2090a2cf2..47a64b5aa 100644 --- a/routers/api/v1/repo/cloudbrain_dashboard.go +++ b/routers/api/v1/repo/cloudbrain_dashboard.go @@ -11,6 +11,16 @@ import ( "github.com/360EntSecGroup-Skylar/excelize/v2" ) +type CloudbrainsStatusAnalysis struct { + JobWaitingCount int64 `json:"jobWaitingCount"` + JobRunningCount int64 `json:"jobRunningCount"` + JobStoppedCount int64 `json:"jobStoppedCount"` + JobCompletedCount int64 `json:"jobCompletedCount"` + JobFailedCount int64 `json:"jobFailedCount"` + JobKilledCount int64 `json:"jobKilledCount"` + JobInitCount int64 `json:"jobInitCount"` +} + func DownloadCloudBrainBoard(ctx *context.Context) { page := 1 @@ -133,3 +143,51 @@ func getBrainWaitTime(rs *models.CloudbrainInfo) string { return models.ConvertDurationToStr(int64(waitTime)) } } +func GetCloudbrainsStatusAnalysis(ctx *context.Context) { + jobWaitingCount, err := models.GetJobWaitingCount() + if err != nil { + log.Error("Can not query jobWaitingCount.", err) + return + } + jobRunningCount, err := models.GetJobRunningCount() + if err != nil { + log.Error("Can not query jobRunningCount.", err) + return + } + jobStoppedCount, err := models.GetJobStoppedCount() + if err != nil { + log.Error("Can not query jobStoppedCount.", err) + return + } + jobCompletedCount, err := models.GetJobCompletedCount() + if err != nil { + log.Error("Can not query jobCompletedCount.", err) + return + } + jobFailedCount, err := models.GetJobFailedCount() + if err != nil { + log.Error("Can not query jobFailedCount.", err) + return + } + jobKilledCount, err := models.GetJobKilledCount() + if err != nil { + log.Error("Can not query jobKilledCount.", err) + return + } + jobInitCount, err := models.GetJobInitCount() + if err != nil { + log.Error("Can not query jobInitCount.", err) + return + } + + cloudbrainsStatusAnalysis := CloudbrainsStatusAnalysis{ + JobWaitingCount: jobWaitingCount, + JobRunningCount: jobRunningCount, + JobStoppedCount: jobStoppedCount, + JobCompletedCount: jobCompletedCount, + JobFailedCount: jobFailedCount, + JobKilledCount: jobKilledCount, + JobInitCount: jobInitCount, + } + ctx.JSON(http.StatusOK, cloudbrainsStatusAnalysis) +} From deba9009e6d33753d3d6aa1afd799986799e95a7 Mon Sep 17 00:00:00 2001 From: liuzx Date: Wed, 25 May 2022 18:06:47 +0800 Subject: [PATCH 17/87] update --- models/cloudbrain_static.go | 46 ++++++++----------- routers/api/v1/repo/cloudbrain_dashboard.go | 50 ++------------------- 2 files changed, 23 insertions(+), 73 deletions(-) diff --git a/models/cloudbrain_static.go b/models/cloudbrain_static.go index de3575632..31f66d4fc 100644 --- a/models/cloudbrain_static.go +++ b/models/cloudbrain_static.go @@ -1,30 +1,22 @@ package models -func GetJobWaitingCount() (int64, error) { - countSql := "SELECT count(*) FROM " + "public.cloudbrain where status ='" + string(JobWaiting) + "'" - return x.SQL(countSql).Count() -} -func GetJobStoppedCount() (int64, error) { - countSql := "SELECT count(*) FROM " + "public.cloudbrain where status ='" + string(JobStopped) + "'" - return x.SQL(countSql).Count() -} -func GetJobCompletedCount() (int64, error) { - countSql := "SELECT count(*) FROM " + "public.cloudbrain where status ='" + string(ModelArtsTrainJobCompleted) + "'" - return x.SQL(countSql).Count() -} -func GetJobFailedCount() (int64, error) { - countSql := "SELECT count(*) FROM " + "public.cloudbrain where status ='" + string(JobFailed) + "'" - return x.SQL(countSql).Count() -} -func GetJobRunningCount() (int64, error) { - countSql := "SELECT count(*) FROM " + "public.cloudbrain where status ='" + string(JobRunning) + "'" - return x.SQL(countSql).Count() -} -func GetJobKilledCount() (int64, error) { - countSql := "SELECT count(*) FROM " + "public.cloudbrain where status ='" + string(ModelArtsTrainJobKilled) + "'" - return x.SQL(countSql).Count() -} -func GetJobInitCount() (int64, error) { - countSql := "SELECT count(*) FROM " + "public.cloudbrain where status ='" + string(ModelArtsTrainJobInit) + "'" - return x.SQL(countSql).Count() +import "code.gitea.io/gitea/modules/log" + +func GetAllStatusCloudBrain() map[string]int { + sess := x.NewSession() + defer sess.Close() + cloudbrains := make([]*CloudbrainInfo, 0) + if err := sess.Table(&Cloudbrain{}).Unscoped(). + Find(&cloudbrains); err != nil { + log.Info("find error.") + } + cloudBrainStatusResult := make(map[string]int) + for _, cloudbrain := range cloudbrains { + if _, ok := cloudBrainStatusResult[cloudbrain.Status]; !ok { + cloudBrainStatusResult[cloudbrain.Status] = 1 + } else { + cloudBrainStatusResult[cloudbrain.Status] += 1 + } + } + return cloudBrainStatusResult } diff --git a/routers/api/v1/repo/cloudbrain_dashboard.go b/routers/api/v1/repo/cloudbrain_dashboard.go index 47a64b5aa..0710a21e4 100644 --- a/routers/api/v1/repo/cloudbrain_dashboard.go +++ b/routers/api/v1/repo/cloudbrain_dashboard.go @@ -144,50 +144,8 @@ func getBrainWaitTime(rs *models.CloudbrainInfo) string { } } func GetCloudbrainsStatusAnalysis(ctx *context.Context) { - jobWaitingCount, err := models.GetJobWaitingCount() - if err != nil { - log.Error("Can not query jobWaitingCount.", err) - return - } - jobRunningCount, err := models.GetJobRunningCount() - if err != nil { - log.Error("Can not query jobRunningCount.", err) - return - } - jobStoppedCount, err := models.GetJobStoppedCount() - if err != nil { - log.Error("Can not query jobStoppedCount.", err) - return - } - jobCompletedCount, err := models.GetJobCompletedCount() - if err != nil { - log.Error("Can not query jobCompletedCount.", err) - return - } - jobFailedCount, err := models.GetJobFailedCount() - if err != nil { - log.Error("Can not query jobFailedCount.", err) - return - } - jobKilledCount, err := models.GetJobKilledCount() - if err != nil { - log.Error("Can not query jobKilledCount.", err) - return - } - jobInitCount, err := models.GetJobInitCount() - if err != nil { - log.Error("Can not query jobInitCount.", err) - return - } - - cloudbrainsStatusAnalysis := CloudbrainsStatusAnalysis{ - JobWaitingCount: jobWaitingCount, - JobRunningCount: jobRunningCount, - JobStoppedCount: jobStoppedCount, - JobCompletedCount: jobCompletedCount, - JobFailedCount: jobFailedCount, - JobKilledCount: jobKilledCount, - JobInitCount: jobInitCount, - } - ctx.JSON(http.StatusOK, cloudbrainsStatusAnalysis) + cloudBrainStatusResult := models.GetAllStatusCloudBrain() + ctx.JSON(http.StatusOK, map[string]interface{}{ + "cloudBrainStatusResult": cloudBrainStatusResult, + }) } From 09879828aade23f7ca85735e572e85e781d3476b Mon Sep 17 00:00:00 2001 From: zouap Date: Thu, 26 May 2022 08:56:36 +0800 Subject: [PATCH 18/87] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zouap --- routers/home.go | 19 ++++++++++++++----- templates/explore/repo_right.tmpl | 2 +- templates/user/dashboard/repolist.tmpl | 4 ++-- 3 files changed, 17 insertions(+), 8 deletions(-) diff --git a/routers/home.go b/routers/home.go index 09fe97dc6..2f37357e4 100755 --- a/routers/home.go +++ b/routers/home.go @@ -259,7 +259,11 @@ func ExploreRepos(ctx *context.Context) { ctx.Data["PageIsExplore"] = true ctx.Data["PageIsExploreRepositories"] = true ctx.Data["IsRepoIndexerEnabled"] = setting.Indexer.RepoIndexerEnabled - + pictureInfo, err := getImageInfo("dashboard-picture") + if err == nil && len(pictureInfo) > 0 { + ctx.Data["image_url"] = pictureInfo[0]["url"] + ctx.Data["image_link"] = pictureInfo[0]["image_link"] + } var ownerID int64 if ctx.User != nil && !ctx.User.IsAdmin { ownerID = ctx.User.ID @@ -434,7 +438,11 @@ func ExploreUsers(ctx *context.Context) { ctx.Data["PageIsExplore"] = true ctx.Data["PageIsExploreUsers"] = true ctx.Data["IsRepoIndexerEnabled"] = setting.Indexer.RepoIndexerEnabled - + pictureInfo, err := getImageInfo("explore-user-picture") + if err == nil && len(pictureInfo) > 0 { + ctx.Data["image_url"] = pictureInfo[0]["url"] + ctx.Data["image_link"] = pictureInfo[0]["image_link"] + } RenderUserSearch(ctx, &models.SearchUserOptions{ Actor: ctx.User, Type: models.UserTypeIndividual, @@ -668,8 +676,9 @@ func getRecommendOrg() ([]map[string]interface{}, error) { } return resultOrg, nil } -func getImageInfo() ([]map[string]interface{}, error) { - url := setting.RecommentRepoAddr + "picture_info" + +func getImageInfo(filename string) ([]map[string]interface{}, error) { + url := setting.RecommentRepoAddr + filename result, err := repository.RecommendFromPromote(url) if err != nil { @@ -759,7 +768,7 @@ func RecommendHomeInfo(ctx *context.Context) { if err != nil { log.Info("error." + err.Error()) } - resultImage, err := getImageInfo() + resultImage, err := getImageInfo("picture_info") if err != nil { log.Info("error." + err.Error()) } diff --git a/templates/explore/repo_right.tmpl b/templates/explore/repo_right.tmpl index 5e05e797b..d4eebbe6d 100644 --- a/templates/explore/repo_right.tmpl +++ b/templates/explore/repo_right.tmpl @@ -1,4 +1,4 @@ - +