From ddb02f454a37d4fea68c0de5df50ba14d195f968 Mon Sep 17 00:00:00 2001 From: Raid Ateir Date: Tue, 16 Jan 2024 05:14:23 +0100 Subject: [PATCH] update formatting resolve errors update dev hasura uri and loosen filters for active validators fix apollo error and console issues with accounts update compare BN test remove account sorting fix lint update filters; remove parachain validators from nominations; update BN comparison add missig filters update icons, remove console statements and commented out code --- CHANGELOG.md | 2 +- package.json | 1 + public/favicons/android-chrome-192x192.png | Bin 7736 -> 10121 bytes public/favicons/android-chrome-512x512.png | Bin 24341 -> 19035 bytes public/favicons/apple-touch-icon.png | Bin 7238 -> 9146 bytes public/favicons/favicon-16x16.png | Bin 680 -> 580 bytes public/favicons/favicon-32x32.png | Bin 1166 -> 1262 bytes public/favicons/favicon.ico | Bin 15086 -> 15406 bytes src/config/help.ts | 113 ++++---------- src/config/networks.ts | 10 +- src/consts.ts | 5 + src/contexts/CereStats/index.tsx | 2 +- src/contexts/Network/defaults.ts | 4 +- src/contexts/Network/index.tsx | 22 ++- src/contexts/Network/types.ts | 4 +- src/contexts/Validators/index.tsx | 19 ++- .../Form/Utils/getEligibleControllers.tsx | 8 +- src/library/GenerateNominations/index.tsx | 9 -- .../GenerateNominations/useFetchMethods.tsx | 41 +++-- src/library/Graphs/PayoutBar.tsx | 2 +- src/library/Graphs/PayoutLine.tsx | 2 +- src/library/Tips/index.tsx | 100 ------------ src/locale/cn/help.json | 10 +- src/locale/cn/tips.json | 2 +- src/locale/en/help.json | 16 +- src/locale/en/tips.json | 2 +- src/modals/JoinPool/Forms.tsx | 133 ---------------- src/modals/ValidatorMetrics/index.tsx | 2 +- yarn.lock | 146 +++++++++++++++++- 29 files changed, 264 insertions(+), 391 deletions(-) delete mode 100644 src/library/Tips/index.tsx delete mode 100644 src/modals/JoinPool/Forms.tsx diff --git a/CHANGELOG.md b/CHANGELOG.md index b3d9d439c3..85106ca70a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -116,7 +116,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Refactored testnet inclusion condition in build-and-deploy job - Updated branches for Stage and Prod - Updated information about Inflation -- Fixed HTML page formatting, ChangeNominations, and CERE_URL +- Fixed HTML page formatting, ChangeNominations, and CereUrl - Updated README.md, prod.yaml, Favicons, units, and URI Prefix - Adjusted constants and networks for Cere - Updated default Network and active networks fields diff --git a/package.json b/package.json index fd6fbeed0b..1475fb8d5a 100644 --- a/package.json +++ b/package.json @@ -28,6 +28,7 @@ "date-fns": "^2.29.3", "downshift": "^6.1.7", "framer-motion": "^7.6.7", + "graphql": "^16.6.0", "i18next": "^22.0.6", "i18next-browser-languagedetector": "^7.0.1", "lodash.throttle": "^4.1.1", diff --git a/public/favicons/android-chrome-192x192.png b/public/favicons/android-chrome-192x192.png index c6b3cb673acb5bae2f2a9a481a2374edef95beb1..73a0d4781d9c3faa95bc56f2a4f68dfb5980719f 100644 GIT binary patch literal 10121 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 LYJuwHZQlPsf~oWU diff --git a/public/favicons/android-chrome-512x512.png b/public/favicons/android-chrome-512x512.png index 6aa07a0158592d4e88d0936ca57d97f505524b3a..d62ff7a78d67b415e954b643b0aeab8b49a015a3 100644 GIT binary patch literal 19035 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 literal 24341 zcmd3Ng;$hM*!B{_f|MZLQqtX}AYCHe(p^$Zqbwj&y0mn6_tGsPAlNV1qy)TqVUf??50_;4LZ$i~+oyL8fnj7j)a# zYOg_{nz*NT=1+jnbe4+m)IcCVW)LU@3IaVg3E2jLym&yM-S;4nSPBS4>Xr`IlmH%J zSg0tx0U;m%vfGQ|fp0K9mDJ=g|2&~2=AvDjvID*{X;gaiS{t%>uwt8HqUXi4?z2XI zzRULWN0_PVQTwIoBp3@FHHAW1F`8+?Qy7dQ6T$dOM)5QZngl9Li{0rLYM-Bsc4`^g z)f#&U+85Uk;hkLmFxFnTDslOXQ6s?iXKIUWRo&&HBMUuLzV(L+N8@<89E0{qHEIOn z^MxbM-l7@pYEVV@>4l@gZ3B89+3T`AQ7&g> z>r;Qy77Lq2!c9}X%Yvu$#!=cnAbP09q)j3llRd94Yv@f)GhS@Bh|o*42R5c>`Z+lJ zocFg9woK+J11{F0w>qlomFXSDfXbD|Z8D%3IrSg*hhDV}__%8qid z*moE=Y3nx4IeZhe6%sq#ypXJ!7Ibq=E?w9s+D(OKkTi>HR^kOC)#e#|6W6?(ygp4C zjAlQ{$^+AhK!~J=EUoJ{bH%|iI>iHRwTEP~WMbby z(1|CV^+V>cmDAi&zpb5z)#j&_RnNB@c4IwWX)EU-;!bn|@YYmM`(E(#in4YY~jP%hnDcY%OhA~tL456L3>f(o*ajRQ!`=Di5z@ z$P|IG+&&MV1yRtOVP0xu+_%0=yy2}_GpZXN`^1gNy9$_v^9=EC*0j<=WeEZOVVXy& z@!2OZ@cZ;JxJz#-Nn_mmjlSeZ%NmF{*JxyN+wZ?TejV`gq*po9)I6-g8dDyO5PpM7(BqooM&X^?K90QphuE6XZ4yn7Zpx%zGV9c7WTwD&30Pa~bGppeG zvAPQ|6G^!eH;l7;^qI2enwA?TN2Pe<1d-OTZclJuguTgFw7cyrwH~sisq%cbYD+p>mhV%qjm@RVH3J0bV**Z}aNgA{`TZf&HZS6X3FB z4$1RY^5NF`(p^sz(R?>trKyU0e2&>pF{|U42HNWnn`O3Bo3X-k1kK~EF!F?dw1I<5 z%Wor&Tlaf95i|8c!{sL;-$igr6hS?27Y%RDxs^{X-LPFWeN@fgTW#rY=vhfYcW^Zs z$->_kK)?0ff)yRqyz`P2~p>xTS;-zm6YSth~|9sy>jS-w2J50vRS zp8qII#4C9wY}|!}n6Fz62#qj$s{sw+gkhyIl_cum_Zx`h9H#WVy_Qm^_%>Gg+kpcX z!h`+-1&rp}!>s?QXhXZEo%?J+s7)Y|GgRvvI`lOuAhMnH@i@C8cb`)3u=LridU~p_ z$rrp&=8smw(7hcB<~03e%T@=XKU09_V!t;XyAb=qB?7~w)bv<7|$)Shhn8R}Qyh+N5o zPL4#2PO>}M3=+gbDya^KGtxPnhv#w1d8)U6HMgF3+D3ItPrLG(euc<0#W*#z971G7 z>}t>nFnXXr+58(g?mgOGvpzh{VdWa+S3*{K;zVzSOa$Pn)83PO_$C&Djxjx@0MmNNYDe#x z3L= zKHZR&*HE`?K=i3)!<`4x9v)E|;VSXZ1bEM}UfDsFSjwWi4iZ_X2*QW>mbtDQ43h~Q zh##Mn7g&3jK$Nk2_mT`up9`-{JU?k7`)-9>Y2-sdfA-^CscaYT1ymFefLWA6VVe34 zSn`9_EwKy(kc__n<|(fP#_+Rh_@M0ujsb$(4koDo?!RAt=p%e(7Y$4(zWliYG8{3} z^93FXHdki^rcVM$jZ?)aW*m<3D8G^pup*x6-^D}>0HG!@MB^Tc(_7ZF`v2Qk_Ba9J zO)zN98vuQeKK^DXabD-Yan!e5C7|;E{m$E1^S`f%BUSQ-1qI}Qp?G1Q7o`k50n1@I|Amd1^0~32OEz)UQi-^+!ROvU>0z z)xP#iBA6Pkd~KAeUh_ap@t?O@e-WS$G#o{Rc3&z5&Aa{q63*uoA6xsUFOv@Xlo01^?mhsOx@y?OYRMl`3#&FON#AkD;$kwBUmVJ{XWKN@yo@7Ww9qV-PoBrImp2XDTmRDxY>TLw zP(*N45*EHYeyDi@#@C0!dSRjD38E|6?s{&U@r>Vp4%Pn}4); z-Jyy*!JGsCq@r#+dRjkBhYY6<;x6PR&-Wd3v#xO{sE&lvAa6O2rery-GHweltgFge z6l9t$ksXkES7G4mpDShqs+{48M9;=&c9K!g&vPS{cM|QXs}ot^odRSyRZG1-2!klx(d{SZ?dYDgxJYN4av`FMIpLtP;q@O9E?3T*B+DzKzj}1pGPKgq`~W!Em9xv!!76>w9f+{por8W~{V^)}j?k zWcUf(5*uM?43+LDt#gu<#eYb3tIZE#&k#B@E$WC-(}UQG#RAL}0Ro@vGIEE#!LIOx_T-IP3})0R2Z74xiN>JKU!UVjvGsG3T1+G-`15o?C7 z^Aq*uyu%ckuA)TpPBX>@{ocX{l?~$@FMsRCBNwm1>5nVJlU-?qWWRA2+ZI-`s^AAq?_LxmC&CReNnv8yAaLwC-nzr@9V+MU=zNtY2$r zZQSs?Zj02;^SZ+N=v6dV-HUVl(2*15F^2KiA+@z%({H|ks6HK-+I1!x77iXKi#!{g zq1MAsk1Jy8sGlp}6Dyjn1tf?H-^5Z6Wi+kU6=w3S-6yeI4J-rJ#b%O&#`Zh|KOWQEa$)Xz#|!V%r`1J~2Iu)dJpxH9 zBj#S>Cg)naZHF1$;Xjacs^X@TTULfO5*q|%)Uw;tmmJHrl`{o1YYA4otWzRceDD3X zQMA9@KuL@+ILwwE^B>2X+vDYX`L&wm1TS2pzv)^@c9Xw`Q&BYd^_O^L{~dHM)q48D zD3>;TqT(xR2VBInKF(3>nf&S&mD$@5N~!=F7R)4xbRQ$a;c?DzY-8!{mSv`20*TzSQ_ zr`9$TQon2gZqJji13h#`=Yi<

M}4gRz=Jjnz_n3W_9=mlr}#{YVOGx?hTp!4ATitbR~M*?l*_G<50g~r&h zZ;m&C@mJxlA@3U6ogqjW*&TlW!7@4%0mgA5jkg#i^VU9Y<>NqlsT>VUrpf z4!Kb)m_{VdCx|lDeW2&W0G3XkBqMlsnl;*-<8-{GBS?z78vx-5|P+&%>wS z+XNctGRZ{m#=EUZq*)@-rnluwyh!`CxdHda+CpkE{xD(dYip%NUYuZt&hZHr5GKw; zm9Cf{?!RXp_w{=A)&I;52PhY5uHI6Az31+CKCxB)wOK9-N9x%J|riQuw$aIh4v6!uyGr?fw8JK;)X1kjJU)< z=Ie45TSx13?HSs@lSj`~LMc zwW#A!RrPc+`zf8?t4n@cJED+hR(KlL$H=F=SC>5*7ef)7r*O2Lu#0Ybe$s`zUd#5= z2qWhpAGQ&+xUN9AbovJz+|LGggjoZaL}shDziazT2WSjus10VtjQ4Mk!Zew%iWRvt zt9}1gUtp09Glg6T96F>&67|;yR~g4ftS_5qv87G9&?8Xr>Y)Xi$Zv)*Yzs7=Eqdm(X@aP;i^ZvEKgjqBkA_3fBw z+f7bA!##AC8ETC+r@A4r5!J<3ReMG+je?h_LdtrLiejyfx}ux+dsiZ3-5NnwmmO*P z=Jy1v>A}g)ra5fX6IpT^Ic1G`+b?Ta68@{I~jMsI()W&vSHPDy_om>Uq;mUM%k4? z(k1TcMZ0=pw{*jgCX&$LD$ahT{0sxXP2DsbAso$GQGsBIts&`{uUQpNmqq~C@U$;E zK`39=jMu-K*-7_-q>OhN)#okjQySY+W70IWrR;%T=IMBEa^gp18;5J}s0_^+{&eP+ zaa0@|rf1k{DzP)f=s>3pXNTvmK+F#bb_NKVKf?aqF>NaK8nF860x2VNht0( zkr{z*_aY$gHrRJeFRVsLiULqrhg7r{ zbX#8AOL$5$iHfMRa!9+C1# zBguO;hZumE{NaA5gn_ZxH3m`@kz>QP6S7(jyPcz+LcQ=&dRPi1X{}72p&pq?IkU)5 zP~+CZcxX_5QB9-JV5ZQ7yzEWrdtdM&`_~5!-NHe`;Yz3{F88qKook0p;(>SKDSD^g zPEn^3>sTvl@=M2y_=Di4M7>qbFNOQEG-pNm%q{aJHlxaS?H>x2iU)6pSYTWxPQ%{- zZw-SHa5j9XLcAH%`i^50;2@?+a2vm@8wP5?#@vgTRSdQiKqbuhCCj~q4JG&Q^2 zG9<7WS(h#yB@DZf_;NPVSI8Q5IZHhnfNO=yV=&t#&p)oC?*8;#j4c_(MsMXK2jie= z2Hj}AnLn^|JnQGPzF?Uy3M1l|b{um3USC4dm(-1>=PO~JSI+cLzwNE>Db~4|;n^U5 zj#(0GR?FL}t$AZ5{1-pHu&7_6C4&;IM|K+_VRj!Eo;$u-3nRF(E~r&uoOY#FA30US ztjTwIPZ**i>FjblB9>mLtq@_OpF3>{CGc}Cuw$NKZ0a6~519WwGZ={v{ip;g9EQzV zv?(s2QGU0q`JjbOf3~VzbG9H5H#F(NF3*hd5{v9J`uj=N4-2Q43Xsy*>5k+sQT>Fk z!1ur@`d{>V6(Rnn-p}t8RVP?oOzJQlL&K(?5{uH7NcsK*EAV}-e!9@Y8-TybDNoBUB^Cn1_@JQMDN5w`h{ z(FPy9pY`a$Q?#EII{+3_a?2naQw82FA7I`=iDJj{6{P~+0h%i^6V^LVkk z@?-c4Tc|S`N*^$X1OOo74ftsv4bYon(ngg+v(kVr3ovYz05i&ug4QFxHqcy&c&3|T zVIK})t6HN`5YG3s^_EmQTng{BXG17cFYpKRc4JwnYTF|-yfB~jpt=)Z%u>G*v5He! zu3}nR{EG29MiE3evGF0Ta+tRd9{&?gbA2t-&a!#i0a_vuVff>ykZ z_0CYU2LRXkwou*f0hkFQ`RfIHRtpd0P|okJT$ceG)lmaPN7+*FVbqmj11n;m@3doE zjZnt5!QbVm*V=24@Q?MgOwku>)mT0whM3FVok%(5-mJapK;E7$x>bt8JVYOvMs*3CGFcI+H2Ql?&Z5BK;Y74PGt? z&l2`ri?jdPm@DWD4&*ImQmMOg2Vls`W{r&puLRT!UyS$YczUt7CdR$vlyFDvzuzh@ zeE`Mvd~&PT8=HyAVo`rWg)wqsRi3{6kM9+=TnIiPXK+OS)|C=~epSD^e^ZZ6LvlF~ zcyq6In*>r_d^zNpplYks89XsTM9Rdx0nR3H;HCF-!--0S5c(QOx1wDzp)}9SCo-yB z_O9GqOof@Y(v9fJU7LaLljlD^1pq+LpZAJB3@ybPDky*h{D;*&u^vrbG;-~% z2q5WogV60H-AvOo|HXRMTI!A-T)GbeI(<=t%L;|x>rbQL#Pi;r5bAv2@8x^d`30o$ zRty=2a5rUgt;$7t3vMX>x=`taiPO8ud)rVs7bothK@=4 zv%xUn4SZLBIm@X`%kLD|4+gSgj3qEahW~0wjk36rhT149p2}H}zn`x^{>)Kf(P+Dt zt#|m@=;HWZ7O8XPY2l}<17M!$99+&Hi%#q}LPf0(zy3BVpdm){mPARZR)PVW!{>ZZ zM9q_|h|P3^$F@}N=e8&RhHV9K;(8VF$4-s)Rw{RY5x$}z4Max#()%Gzw1SkeODPW! z3M@EOl$l$}@_fU62yZt;ZO)tg`4T72Ab>+f>t3vc4eI7*Xjm%{7H9rg575i_+N{P+ zf&%{zQl0<2Ktcm8xNqjmapmeGC7kU)3kJv3uG)K)^<|N^qJ;lslX#zMuyTks5lS91 zOLn-LJVJQ0lTIRiG`FKk50#yIXI~QZ(F3rh=StuOg=pjS5aQvk6gIZ{ih}msljeF4y zfJGxHqQ%=+h`N&do^|)y2p%TZEUC0!6q=}jYRNgoj8&2Nd2#9no+pZN-!-8Ga9jBf zblM8>*a@#o<;hZNll`mZ1E!TUHZ5Xvh|^#MNm}EW0pJ=k%_NrU!tauHq{;)ldykt% zuWweC!&ef~-pbgKk(LXQBVvz!8vk}P;h_6t%)O|YS?Tv>0r%Z;@=xHEl*WIN&xB%g;yzWe^)uqs_?cUl_8VRN?LH$90=an0M=d;k0_D|VMdf!_V=wh z15XLzdzJ<_x=B>jQ%HK8e9NjsvP0hW@g3SgjRIPE!#4)hY$k{q zntcbXBEmwb$3RxeEgzU%-dz%7nYa_LDy_~1eE`$rG+)^I(ym5Q10X4U1IoyK;2CVI zfc1*2iowfX^2PL_)>QzItqI_q48bT_<>IgjVqv<9gEKX_CYl>gZ1JrFH1?otsajlN z?JGg}@aJdwl91MSe~B=bzL6aPtpI>BF44;@W}+sJc}!^@U>8_o(R=<9tKy(++!{wP z0Kv?Fs~?rT&4>yvCdnlT*oIntO|jW8d&nHwZUT1D5|lpk35hA(E#3&S$`cMUlRDeUrzNf3o@{OMuoA2Yqzi~_b({amjyIboFvE2 zqkE|Xre65c#8@cwW-Ayhdl1qAa_vt7EJMBUs)5nVO~9>4>yo{u@-vPK|bL= ztU5aY4Qc2@ki)R&r5`+Jk6Nv}41-2@hDCp71k;w*!A8wH_2H=)rIrfu`3|CrW%4o$H+8RcgkBj!1eA)q`-e$*)n84$m(bRp$KByA-W0%^ozFuj-^X=n`~QsZ;JIw zMyErf{E(dhZ$aY(-(XQ1I0J*9E;dhD`(nHHY5cckYbeO{@H9o9v=N3xe>=_c*8WI# z<3i!O?0D;=mA*|tX6RT4aT4(gf1YN(x@C6E)0If!we@k98z+3^W zhs*N^XGE0&$qx7;uvyfN@jT|4d(HAni3(Lfu@O-|N-VZbMJz)mRmV4(2q9($ie*&w ziTtN+gD2{ZD9jv{w?+7v1wBiKhGwcT-YUTB31mX4_EfPrcT|+q)=Pm3{p%e&Qq!V9 z(1zv*o&XZp5^WvT`v`){A$?YG`8y?$lnHPQ$c~2nX~&qbMi#0!njBIID_Yv3P89vf!sm1808|Oi+F?H!m1wEH8+wfh@G` z8|(O8^AZP_)TCv=h{Xi|{@n6(qT?FCi{>2Q@kpSP_l<{HQg`aoy(5IlF>f+SWJJ(Q zmKV7-+O!404z)Ye-JuW`tXCvz4Bs8_)w7a1W?>bN`KO1T%p)nuN%;mtz4s6(<;>ZY zCNYI@SX*af{rtzBddUT=i0hVy^5E}fnAdP9AwT*6=t{GEtL0W?iX~ z?V9JnIpEC#@!Nx5gN^xh=0)Dc*VONesG;7|_frvO9`r(pWF4ntFukXoJRD4U5(Ur0 z>a9SA1a%X8AczI z^sio=bQSvhPNqf45UyvO3~AXtOKhtiVOtiv($ERDL6Kga3*|Oa*Jqda%qaujWInV1 zIbfGpJLGUgrMe0TvjDJd!+a+_1`^;J)wiOnvtnWdW*gZ|9`5lNjq7f4J}ZMNZh68acx95@H7|D=1? zKIe9cIcpee{xtyUZREnMdQiPYg)(+w9)^AJU~mriKze1t)(5>n(^M>=+M7aB9Q8w7 zZ0Ej;AH*~?LrI>YTd$VkhLTl2IJ8;%MH-H|XX2P*;CJW@p zon8ucpu1NQlAvuKlpi)s6)RWDD|(hc0x`x1laihjBLNB=`6U&nK~f{zWvRvt_0-o} zzKeSYtv?c87iN|{%#dO}$@cQYGCrtOL{WSY&td&z7Kb{{&=9#mn>K*54L{Typ?T$5 zgdb|6kE*D+MvP1Ehw#X^{Tj^UsPveddyX2W2@M{eWrhL!9b54I^S?fuG4QV-D<#2? z<8%IM;bVUl$NQcbeAu7)%MB%vv7|m^Vq<{ap-IRxqO5qU&lDI|#}b9?D;t!$30=$u zT8HtxJxeE4r*c3s z4I%^1iBb=($p8DY6|HbL)()h`D3$JYblmjIMQ%28>e_|NQBtEAv4K-+a^>Gf(VE-t z3O1jQZc_M+mB!UO)U0jq)L45skMTpHPFJrK`Pb7PE1L@En~Lrw*H+5<@vX@xQiSLJ z7Yu27sQGNi;K7TmkMVucC*5$Iqr&f8{D&*Q8qnXX|53TJqvamWhJ!TJPK|1$fk5k# z;W_kFatxmIqs+`z@n4KsM#4H54}=dKP~QgCTp)hJCyF47)&&hmL>EJ}>hFjF$2X@Z z_n^4Y8=6G+X0cay87 zkLt&=unuC!%~5N~2E^Y*L}taEXTNIO;|F10@s4$k(FDc4{(2&JXYl8z=ws%%65Ps6 zxqRDB99&qRRJ9vhW~0YyxjpVLsD1g{WT{hC`)IK9Yfuo$yuDjEq@@t_+Os-3r<|RVeAC|(A)y% zhiMNGXFx%@oPTi@fDArrq+wQBV=ie4hon}z#ZG)5#Ad~P%b%Ejl8q7 zRtu1o?r^1b?iN3eOWcWkrV`^Tx567n(DOE>eyF^hDQ2_eV6IwH)ur2vvu+>lc7JaH zj{JDjSje~Yd`PiWRhqD>*X!oI-QOc+ij_jY7NCW*nK1R*9~K4;*!X>BY*^jd={zD8qjXvD&$OyJYfF8O3%WHcHd?iP z<`6hvBEPNz2j&j8wd-!{$qvVX@e6T2j0Xal;u&c2ONEK(a%~&bOsGHWrizx@%Rs!< zq=rgkr>4BN#-rEM@T%IC2X}OzzP0u4@BA@Z2$?ObUS!`K+f1fr-mK4w$N+&1IAdwU zDvE>8(OcA|N`T0(_#Mam6z5UId;GD1HR~PrNQbsKt%uH%ivesR^`4j3i+|`L6o-YG zZ|F9a17uUbU%%NXQpz--b-bg8@(?I9YGc3XZOScmF=Y+ax*su1rmmyj6i zqg*jpa)JJSEdOV%GHllBFwe^MvQMo2=PH}^7i8;|fRyabVR@TJeFP_&ETE=Y-6Fe0 zTqyfcQ%_)GWqng0!cV%YTP1!28m%fr}=Izi@p z)y=)Gyk$;nt>Co*y<@LQ{5YOkj|c+=;or$bKt2;^PG>V#vA}lniSZtn)YBP+h_(*G0W9=KOIWu<`b*y~SPZv{iKNln7QcXnGKnoDp>&^*8_iCS)vr~j0Z6Fh07VAquJGVt7HTB6c%5fp zn53VmGTTVVZkz!cWpm_eO?dd#s^mXtEK)af5^I0V%?NlV()pi-Ld&;k|Fi$LwM)fAWO)&c+WKwiBQ=HhhLP6! zy4T3jy7?HB`Hva%@uRBUDS9*ad4LFZUn@*Y`7HW6V7RbmQnH?~h z*B&kb_SDBDTJu!^pNq|M1pkCOJ^6a;bA1skMi}B`Z;a{|sdixrEoc^{`Fy)>BZ8er z9TcTJwA{Gie}&x<{!iieNS#$+Xs|h87Q7XqwCG}0$BF?pca~-HrassGZO7@zmm)h>|G@8`q<0e!|YY`HiepL4+|uWD`&1lf}Po{FRnd+z+!$3tWEW@ z+sSMctS)bsrK$p^DrQMk4K2R90>Q9)qP6~r<6j*2UnLsoZJx-0&FP#Pp4n@{T;KQ+ z(8MmW30iv1M{y&Zuk2vn2Yg%Mg5%(60AN}~XK0bw>3o}dSmn5mR3neS5_v!~qcHy~ z5F2Sl2PL4ePE)h7;lt#SVdNNE2J3%swzHye;fFyylfv<>q^3BrHr7Ae|%n_Z{BQn42D^3+Pz3}q8iz^>&M_glv3pAz3*xOO&+cS5*z;3s6w!g? z#KP>HQ1EQ|S#Vf{{e?EN`-VJIy7auW?!)1n$Ye75`yOT`b%Ps*Hk!TL)2Z|EehBGx zMdFTGw7wHZ5@3)V_F=T&FF5%JH+BGWlKzUj*8+)z{~{cpvvDOw@8XW~LIS9xER-8? zRzz%8D9iofDNXo;UqyfKV>6CDH7mb_AdpE(#wubBT$<#Qpa>2%+B~Da)5^B*iq@1w~qeL)T8?Ai-xM873 zn^>u?ao-!p3?y&mC4c5Fx&~31I-BD>Bw$aoY;>mHsGOd@t0n{vq3?}NemDKbf=Fjt zJU*uWQ02fY=@j{xT08ht9QrjJ;Q>S`jyvLJ; zIe-0+%ifX1g3UtDPJA7zyEU z&>hTl?R%xSmCz9;aiulJIbTeru}oyr*>&*nkk=w`<7--lO8Zu8xCND4tu#x+XkUc8 zO1uzQxBGQg-xpQbQ71!qAE;D-O`iFfU5Wb8JHbEEl^yPLwxAEbE5va}Q~l(OQHg>T z!6Sw~CI^ED%5wxV`udFvc4;Gw72=Gmd8$5x>&T@{eft%u%l9(*WmvEL9sJ2N!}4xE z*keqY9CP~{U&bls5eWgnBCwdMwes)(P}YjmExbFTFT4v*#)bGLkvboo>i>$O2x;AT zec#N6c6b9}-?>&YB=JI_hlahMv{7TRsDSE!nf{)1huB8EPwl-$Khrmwi;-&y{d zWn5Cmpq2rnnU}@?g8epn8H#M*i?vrQ??PiA`D3FiHknwG!sz@KqhdnRN816_MW@8c zLm2?t9uJd0qnMPET*I4Q8uiLvE|*y!{VF&xwS_m3cz8(e>$QcfV7W4^@RbFusXQ{U z2`Y80F?P_m=$cz+sK*K5^e&4r!n-d~=56vyId+zHc0gqCBXx+%pTdYVA#y>$ju?v; z|CSASgx_V}Ssow7=rnsIne0!;t`_H^XT$1$6A#l7`~9uF!aVh2A1ZJUdIipT9kjzF zZ`I;-?k{<00GvS&xs(j~92@h5cLoT%QeY=xt8i)4eohs4*+9N z)(hcotLnn?Fv`z=r0-9`ZC^b5tURCM&P7>M|AkvF@U|+cP-aX!ZJjTgj0M_d7{{3D*H|VO!A2xt7(GoizqE&3K>A# z-N5~fb~cEFP^7`Sm~oZ0_fS5=pL>i9E|l`_n#bl2f~J{jl3$<2tCs>0T@O&}u46PR z^pb8PbOa3gQ7ow*9o23gTFM_CG~OKFjdU1%bZF|#_5m#!kg5AhN+j2O}@ z!s_~Ev0LQQ)KgX~&^W_9rAhR7{-{07nniFd0~HvO<}I;hY!Lu>np_(T^i5C%eP4ea zsbzRttI|3_D+VP9n$k_PN`eV*m;<;K#}tC(&X)BhTG^r_01ed{7Xk!KdwE0ueKr`cqO{HIbg3Lx&Kt8k72swK03hlNjvC>w2hayU=4)JzsZLvrCDn)qiGOT1Y!0+DDNV1Ug;DfeP#fpGt~RJ z`q=3=%@%SQk+)nL-xSv6EOvvx?pwf-SY03d`Mqa>MzSAVC9J1|elhVtK|}x{mt8_h z`yT&$Mg^Yt=J+j7c6$;bR#!H8f1M3SiwTRrf-JZ<-+DHDX`R;>F=aB*ehk?;+Ql_1g2vXw$+HfTmk}+w0MoviYIlYblLzU6b2DUaXYuDWnCm^-S3dM|=kFx(c$M~lVn)TaUPENKAUeTkcs!fD+)UF9b ztLd2ZBS_zSt^9(@Hfo5Yq*SRt?csLBe10mOpUFiAmHMWO=G^wHH%Ph1ESbu{=ZtvwbpXWV}1Gl+XU?B^B{0PYWqijqJz)j zx?(0^E`y;=$rJz&g~pa^#oilJ07}7Wy08t1JWY*zvEJQit?hWz8=HDbIVz4q=9Azyh1Uq;?~impuLq_yF~-dzdX`tZglu(issPy#TLzv;D(RLb6U` z%m>e0B(Y?p4Tog|U?l>zoVcw2DJF3}=lmGajYfFs8aah3OD065uIqBS(*b!4s5#c; zV-%1i@rXj8^>PvZ&tw_OdmPNCz z_B)9l@IrakV?8aEOk+E>ZEkwj#XDg|?;;|Ey%RuGo1R+M_#2ly@A)n4V7F{KJ@ioe ziJ+TK@k29!SHf;{+|Folv_;*nDf|V52q<8EOBPUeLK?~RiXHC|KDIPwgBfRZZSMZ#SQ+%fBsNRaIyoIE%V0d!>Y@9AmSib!w4COTar zR^fpNfW;HS|A6mUXB5jEMJ>QNS%$UWCjTKd+^qm*RbIO=nWVN>8+!= zmO?B2$STr4bAAMBm)LcuYRAU_By19Y5<@bhN_ukyR9U0N0}n@BBlA8+44qtsvWhOE zMew|5cA7l=d!lb#1VE&7`&~^4h^^P1%}V;3q}dKOS@@tOsmf+Xl>opx;~d#b1g?+8 zWg%Er{OT$hK`m{KtN;xLlAi7K)Uzh$u^ue~?)2PUPQL8@`KbSyIg-@&`k4ZgOJL7r zm)IU@R=QUT&D4iVD|1vmy7R~CALYh)_ty--9oftY!Mdx-`ftk>Ij!tRwcR@&l!P7O zBaU#99O1*v7BvnuD31utlk(SukxhZ&e=8sN69`{i-@LnRsOkoO-w0F-^wf2ee2jG=K^v%aFH$5OeGu zwR~3p;R%=I{Zv2t`_Zxn%+DUxt!sMBXVWnr2G~60{UP)MlPLV2K7(riiAL;q?6z_) z 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 diff --git a/public/favicons/apple-touch-icon.png b/public/favicons/apple-touch-icon.png index af04946776a82d65d19d96d94f1ccec667e2071b..830b5c98ab9d1551c4043e370da6255cf3967238 100644 GIT binary patch literal 9146 zcmV;rBSqYaP)PyA07*naRCr$PT?cp-#r8jQLqbpPB@_uos-mJ4=>k%frXVOv5h+hpAhduWHS|t^ z0MdLYPZ6YdA4s=Rq^nc|h=Bx>dlQI2Fn9jnZ=RQbf+@RucW-t#d%iCpB{Q=#XMQ_- z=2S)+6X!gy)9Eb27z?&>UWwam)fwkca-y<~vBI45LPQjx@ieUAeZzrd#+Zw9ew`6r z<&2$UZuc=aV`n+%aSn&$CS&ZbmQ!I`49+=cNls_w6vo;TQ4KdyMMhMbhze-&JZntd zbKnjqx=KWs80X(}#&+24_EU^8uJ+7T1$0zYRG#4A;F{d+9?LmzOhh)dCv1&p3J$nA z(ZO6qV{W-zhs%~Ndrz%ZsRHQ4=;*=^a_4UEXR~!=jMe9y=T>Wi);Q+n0AnnfbN-{7 z^OXS)9&9X7tXPbdF|)QvApgoQa8v!QAbRCuSu_Kx`2+2jja&i@4tfuukz)arQ z;cy&C{nRvoz7rEu?5}_TfcaUUPR)9l#Q`N8;QUwHy?YGgRI~Fvjk?Ie*C`OAA0F2GHel?PWwS`g} %1C$pOaL z?!cg+=7>=gfOa~aRT$AROS9o6XRYqp#Q}FN&Z`zEROqw-v@1S-I57s-P>U=M7?J~w zXmpUnF_9r}hRf+(%@}*dkSnn!ZE@g#o^zW5?ebn1Z#_x1jeYlY0VoPKr)+#EFnI=6K8Ct#S@DIM&|(Iyff5wGl=scMqf;} z&!2O0a}E{g!=JxZqGD?J|NHmv(_er6MY(h5rd+vl5o7-|1El^Fe^33B?dvkq1Q?si z5}eM>oXENm%G|hn_wG?lOpN%6i;ELKx8mZ+86QsxiHVe$m`Hc-+#$3}PEMu=50FbG zE&2QVQ$Rof<;|Oy3KS?n`SRr>hr>a3yPbjy6{5n03sZ1#Fcm3Mgo+g_CfZn(F$WmY z7Ups~PY_WRi&0r~;O5PnbolUL`ti^qx^UqFCEveK$qydTgXCoTD+TE!)FnSZKLY6S zgHyd!$&yt4`RA!l?b`JC=b5=qmDO$8BRjpc;p08eAfV+6{;*>vs&Q6uW7`uTJ`o0x2`2QFL zVE6CePx}uX5CD#ijTN%5UJ0i(M3j(_5UO6S8Z~RyO#D5EQZfLodX8SBF%vSb)9Ivr z`}Wc5ufC#$gao54;o*F7*{oBi4!!l}n^dx7Ng;Q8E}e#5l#GezXh1{raP;U=+Oua5 z{dDY@xY(J6aB^3wREcWUszuG4H4~T0oIp7i(2$L1&7MtX&YTe{H8T@V>DN1Spw68; zoBkr1qW}&0_}sa3v~Bx#Azs|Qt7*9p-Mu5FN|mBEty@#mX3fZ9x9e_xYD_4{02&v& z<;$1T&Rx3ZLc#>tZ>Y0;uZ6m|Ksw|Fp3e*n8# z)22cUfmXz3Ge??lQv({8yiY&-j1C?=NVjj_HVqinTnNDY#_O-stFOMQ=CIi|mMH-Z zS^4IzTNFNaESz*=&7Xh%Nr|^_Q+!+;xe^kD zi5&kAe-F=(uP&@F)T>7W2M(k{g-|xqxMVs&L&Vs%YZop1M@#+YdSy!$ZOZGP1hMn4Q`ezSB_e>Y)K6oGQPd*ntvhw zN5pBS20?6S-@ZN7t6P^Id+aeG1M7_-ra(lwcI_H%+Ps;*|NeU+hpRylsqiIw|NZw3 z1!}_s8k&qrlP1y0Q>VP%M|^H!BF5+Tl{Re*=YM?h;zc2D9Y1k`Zr#eXa)TsZL6m}p zv3vLK!f)FMWN1Lc(g!dfI(*n`w@x_GzuB>)kd5J3Z&bn;>dKWXw0GY=+PrzQ2r}@7 za8keg(o58*Pan#YCyzHn`J}I50gXtI5hF%;eKO_|0g)JUTvRy?QJNEhSnVo1!&yr_wLepGQ6P z=JC>{Y54HrRIy^k90z6(!=SH*?t1#PY4rQGYl`?-xpHNiHg&2lFNuZ$H1w-u#*U>U zM~=we1jx%UjEosGCP#=EQWykN`ou|-6wB2uUVfPd3>ct0b)F#r4N+t1(xtR^-8x0; zIXK?*@893h>NqJNmD>hUJGfjQIeJuf)DA9*Q0295)k^MTHEnMQKqG~~*zj;g{ux!C zdyb}0pKe+$hPUX5j*g~}MvM^FM!EFLE3eSN0R!ZA)3m+r0Sy%$z&(&MX1l({S~EKG1Dg1QVQ`_#Ga^5o7<1p@Hr2K-LDq{bT+YXLW&;hGS z@cS4!YLslBkK6$P!eL3T5iYs~G&X$Rym_>J#|~Nhh=hkj!oujq7kyX%2x8HRlP5*G zF!)ixF$m!GCaN4dau|K!S5o}3$LP7|o}>Ep>x(ar8v1j%4Zu55ZbVGOh7E-n2R`eO zbPH%CL&RkTr=3*7Mz?9xhWdwwY9927C~`!T;IqAB#|}-SV?67}r@m&58q~f+2dY@1 zf}*TQkd;^b=RfrM=buYu>%(^Vf-L&@V_j>DbPMQ+hzQ!cZJR8nSE*8kCQY2EsqZqJ zqTt=Pd-rZSed?5m3G_7q*k#L>rMh+Mh%XV6HA*?PaT+5Z$<%4nWCsKQ%wtB67GDZI zlP&=b*%`5Iax#4e1_sj9sZ;66C!WxZ-;jkTPnjZ;)yUNfXfY{(7~X<##D~vvR{5h5 z)iXFOOk`A*LwF9{1-f+UBI(7EGq&1obq8nw1vl@n|NCEAYlRos2k*bH`sE3ez(sET z`t`JC?OKt*T#p1JA>U4-+Mhw!CC@bFh( zeI@%62#w3!xpNJp%hw&C*R5Meixw}IC2n+j>n-ZltC#AZLs-#9j2tQZ6D{>c)UsW} z1`UKmK2j|F^wUp5RFaz}7$VHD4?h&a!A2q70U9zMQg_KATv+<{=_4*kYNoUTpeIb6 zNaxR=mopvRv@H=5A{_FOoDyFex%AdsZ_zv5y6MgVDYJFx3eYe@^yt}BF5g9a=tYMP z9ZC)A*H`tVhKprbSeU7DM@wNad|+^wF&gOx(2(;+jT$9XVoC`$MqpV)5<)dkYG^mG zxrnBgYlu*~mh9{Yxj8&MoXV6blbzF0^laS#8lS{>d-wMG;sxv4@L|J5Sq3!;)<3*( z7cO2@G%U0ZP%XmJhdJURi~qxm>~y(=kp}f#^g!UBQ6qYE18DdBlN1Ef%)iM)4Z%hD4SD~gj2J{k~`s=U4EPM2)pR(eAroRWM zXU>=*9DLLy)GCC3^|9l}|1m65hIMG)Ueq>$Q;|1i)}W7v*&pK0*I$24d-m?t9N4vL z)}+y+N9)#4L&`qt3ec%1j0~a(=EMo5RBmn6suhLy>!n4+GY-06 zI1i~QyQk&{z7EKB{lgDG5MC;!JjnCps@jE@5OQ;qCQVe;5UI^` zDdXuD(4NTy*!bkmi;PtC$%WkdpA{>FPqCQ@caG^ZX3(iqr(_wS9_0aKdgQNzkFyy_ z_kaeI0cxa9DGz7l%ssi$b{m@z&N zhEOtBDSZq9XwO1$8cmomf#PNONTV-K=gE^M(UVU;DTOD7YJ-;@^7Z@$3xp^lN4AC= z>Vo<6MgD8Ekf8t#rlSt`?1%{2Sv6q-hU33k3DGgDSFfgxn>I-*kc2b@{rdK$mMvSF ziY0~vG)^ESX+)kjIr>>#5E0m^wr*NaXuzcrq8WmUVW`QBkRlg}VvLrdKP!G44$xT8 zz5DlR)~s2g-iRE6EIoMeV8h?!vs&|s6DMf=gb5jX*TL{JKQhuZa&u~a7!uG}0IX;z zLnbHbAiVPC&7G^eToPFURLSoVRWozeEKz?YHKA-9?i0xGXGStCps^VT4jiCy@w3l96S{b_r$sY7pkW>l?cZN={tj5izWDs}9G4;t8W64gOw@Sk)EdL^fQA|m zE}ig3lS&BJLJdNT%*O%40~%X`s;WbV4wbw+aQ;U^8jH-w0aE}PdGOxo*in*&3|okZ zk@f4=<%mzP`5>G5icA4$Eb+q+KNOK9Qfb}VwWjmHle%^@w=)f(;a<9F(HTDL<$tx>Zf$>EJD0FAtJUAlIa>~V*TMjJP5$T5~eB&ON4d9x@h z0iSR)li>jk=cHxJmeH!!t0nIf{DLRQ2n>)sunrp{q6g|sl$>kVwk^H)-g~A?=a8E1 zh6gkIpWvYNQz0ljYh zdRnw-k>u<_sK~l@%^FijZD7+8@PImxkJd;pkUu{yUc6Wo7BV9l8qmnj3Aa&%8A+w; z)vMFgDN{^+LBdxHxl4{5Ig&10kfVCa6Amrnh%4D8B>Dc z1;2Rdk|>>l!t_}Y!m&Dc?o4lY?P@B`hamxt;*t2I$}Lk?uWnr$J9ez8HqZlHxXvP< zHdL5W3HJ$P9c}yStETy484A!ig&-Fq*|^jwZ_nmp^Oh}LDoRC|g`l!T%C7|r7SInr z{-|hKNIZk=qm?UHR@7f_oeTx&EnBvTB;#^VX2{D(u7cVjY7p{)pvHD~5|YPk-@cu8 z?%Jg&#c=AmLj;3f9%VF)PKE$9Vg?s3TqtsI$SG*=*_`6Vi;MJEY9wkzG0qt?W>BY2 zov2o=TG_Jy-|XHkj7bnLM2(*!OMwXXjDJDoUwoOXTljVzxP zso=zVp#6b)+{pPmbPH(I?pv{91?}6nPgX+4M>nu_>(-)h5M*d?2rt+C`SWSZ)~#v2 z60p9Z;ugv>H*L~{@HJ42P*(;;f&gM@E}(Y@xV0jj&Lckhh+Z(TpSZ37jT0CpClGzI zX6;(pvht%Fjn63R6?&Wg3iCpU*POX?Gc8`^pDP!k!~;%l{E2L*sPO`zK<36vmHI1z zadEkYOpenZbqa6azAZ9_qO2YAjiBO|FA2^|5wmBD`Fs0C^X0rf&(Z~;v9aebT%c`R zw~F$^NbjXYyhzQ!puj+yG-;C97;owFl`AxI#0a_(6C-&j0K;LoQ(#b#Ftg{&o0kG| z=cYWla}%@K#5e#kz>MtsNq6p0LSmvQI;y1Nm*j~_Xb3;?@UdeJnLk<=fX1Z{88UGS zszCtIoQMcf$<sIke_x5B)fgqGx zXsAMMLWlr!=gp&UzWGKE81wlYx^(Fx3W{d8ic-$Pbpz<@H*Qe3Zrv2A83f}C0uE>*G?DSdPUXiRqC zph2>dm#1D}`Eun%i3(f<)u8Xb`%Y8`Fd~?7nS;(91vOEvAo2EXnl^Q+qWbA@GldS{ zD4uz`0`zy^e@|n^jFFAU+O=v?-@biC?G&|c=HLJD1I?TW|*@NWhq9E8YNpDibLY1=FJUJ22NLi24GORX~&KolCe{&R4JM} zXO7pp=8PT)l^QD8Zr-v*I7aDB1i`%l33D1XZcNWT`)sB!Hs-z&_ku->WXsdI7~+D6 zi=v)McYsDF{^`@F6I6LpsYj02>y|GP$H20O{2zyp z9HG;vPSM$O=X_=ef$J;QSfxr8s#UY5;=Cd_EJlwRLr0Gul?`f``QdI_zI=J9+vC%A zx&t&$jU`K$64K+!A$Yz)mWHX>7le62uEq~EBKr>s zh0h3NWpDjb@Jz&Eq9k5iTwGRDNb`Hh({MM1n5Rdhi|zmo?%`7SuXo>-T-geJa7y>< z*NLty=={9uxOp4<4ieJWSvKC*}_A1nQB)@1$gj z5>&2SIdRET)7k0KwL+7FkTfO!B2Ak%rGWzm`0N0Yx=*?UG$xM|8Yi_JIS>9D2%LT9 znP;S~U(Qets%|tZH!UvI(5XwMGaX~*24|j7~x#de4P3DXW1)2 z*cM9URjgQ1c3&+z=oZjeEOfx{yz>sl{at)r4g+#RLK!*y$gC~IAVkCec<7L#A)7U8 zMnl5Fba8;_8qnY_j2ROqPNbxyB-zYv)v~2XP6*?JMd@<@zUN4#_U(7yDPj?H;PCY* zQ>Kif{%Uv9J)m)VM9!a2+qP|!bwLE9aN$Cwt5G9Iiej4eZ@IyVqW$nl)=8hgV|7iBaTP06pjoqK={g0k;Q$RrBLxeI1|n?adeLRZLx^a@hYvRdUkrId zdzcTI8Wye-Cr^6)IZb_WL|QKt)`9;q(jw?pD}sw2fQv-u8#ZhZ0me#_S!M)gxDGUL z){F)X8l+nuJUVwn0~(8oiHV_4KKX=p@7d$+L7k?5?tlP#yi6J4!db0aHQ`hrs1xH1 zf*%eaJ}gdRfLV=9Q;#wadgkuky9;+*_+T4_3=e1zqY)Z~o4it$URE216kd=cagl`e z5o$kV?8J{&ayP^XkIN}8crb<_A2f2`X-T+OK*Xq8rHYo1(PV7X0Q&B|d-U~=9rWd@ zRjSI5>2V!?%W%R+fG*rsA%7PxQiKXQ9OBXx7#Jvgo84F`$;~_V(K%z(CIYH9@C>K}`c_tR3J?l9C>t#`wzM$CnZ2h?;q?cW-LhvZd~< ze{y!kRDkv@92cceKmAmAkfAiNMHzDdvU0VmRfU@_9QBP(rUbO-v_=(G7#5_IIWzi3 zDw#j@?mc_-5O)J3UHmdzt7!r4Su{S~h!97NT?p9P*8L>C1{wIRenBnE?43Dn8`V z@Yc5>E9UCu_fRpmYuAq6>DEmbVNzQ1CC35U!%U?0LfSD@*TU)TOO1k-8|oPwS_>G3 z>eQ)2FVw52YGzhn%wOppJKBu^h^Pbe9dINA&gU^!wGT!bKJ8Kh)IL3&DU>p+W_rZbQX_5`SAOb9x>U##k&) z=+i`Gj>_d4A`TgxP#_+;qAy*#Byxtp+YOHMTBO#6m;m4+5Wznnfb!_%4RSi24Q-6=gXY$qoShnIPCVVL}Z=P*||g3v*mK&fYarAxop|8_tF3w z|A>o=>+NT=%}3QPxuaU`Ee>P@2OhXN4=q%v&|=TCAD+cT|j$eX-2fy(s;<_t<~Pg9B>n3&Fyx3njCOxPH4}BT=DTA z6JxzCQ2Tg`tj9^^Knf@N*x_)5KH4E&Kqn+5RN!v+HX<^9<`JnZvf3Gm1LujcR(8An zk|aQ*kt;6l4YJvm6OnOJPa0`Uthp-XKoYs#J?z23YtkDa-4hxO!^6XEg9Z)i!`<## zR?MMN-dp`t=0GyD*}@_sA{K^+hr49~8jYi)qx0pXf#dcX^X2Jo^iB{U}_HK-^bj6I+eI)@J9TF20gWV}9Q;DdX zB~x1f^brS=iD-q*&+ntaz`$Elo+%m79+^6S{`@_;+YMk_+7Brlw%RD=KoYarh9@N@ z{W~+6`O(2;0otSe7#JGbfo!&kL{y%Ltk`;`TW0l3j{^`ZE|S|lYEES2x{S0LiZ6v3 zb&QRTt>EwPKY$VSu`G%fGF9S$n>b&>{QPDG1qEGHGN$Yk`q78DT&^a>`5YpuWO?Z+ z*#fH%5utALMb6m!4u?bdH7g~r0gVUWiHRwe?C;+Wsy&;{R-1F4)d0_fC}MBWdl(^-Tu7HqTGDsj%MGtQsnM5P&H#X0A8ORuf=wr1OS z$&9gh&iO4y6vY`k#~3^2cDv7V&f^>o$4$oAT`gz#e>G3G`)6Mwe*gdg07*qoM6N<$ Ef*5;wrvLx| literal 7238 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 diff --git a/public/favicons/favicon-16x16.png b/public/favicons/favicon-16x16.png index 6eaf58b637dd1d300a51a241d655fa9161125c0b..1a7034f64c47470e7f89d4194d00d6a320905f03 100644 GIT binary patch delta 566 zcmV-60?GZT1;hl98Gi-<001BJ|6u?C00DDSM?wIu&K&6g00I6y~R?b8&3O zW)XziL%hMe!6@Ffi=={IIfszLOG*2UAJ6;y-uL;QmrzRY=zp4a2;ey()|MlDIXy)z7Q^eky_*5T z?k+;1(9-3vXJ=?Oo6vO~5Bz>4Qz?9?)$ll(L^hMLHt~C}hf=A8;?52diG=CDjS-A| z7@@k}#fpiYP6uy~j<8rP5DW(4bUHB{4k61jGMNnWo13P5SVq|>?)7>Y$TH^hIqq{D zB9Vx7lrOdER3wD_-!cJJvRr3fKLn-!w$8u_>+uMG08{kxQ5e`JTmS$707*qoM6N<$ Ef{TO$tN;K2 literal 680 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstU$g(vPY0F z14ES>14Ba#1H&(%P{RubhEf9thF1v;3|2E37{m+a>zS|?@4%%U6N zs`ym(2T%`VlDE5y=Be$iDnJfedff|6tghKf0lKk;xBhG}S=@;`mX^Jx$Rvog0{ zGPkg@u=ivUW?==F29v`n%*vZX6i(l`a^lFDBQi(WPd9ih@X}*=B`#R<$;oso&L_t(oN5xlbNSkLA ze!fKOT{APRTC|F2>oyby-j(X0YrE=xbhQ4Mu8MR@nY7het+?U^tq#0V4QdO5%yvbS z7@7T}e^jte+0^ZL}uiycp?*Up@t$=SPx{_kVonJUQoi&xOOTm^2z& zy|eReP9*vsz~=yL%x6dRZ2+J)0j+wyUgqoT`=0D_^r6*iy~HBXO8{RSkuxDP<2y#< zH&Ur|n$u`Bwx38O!~dgmGq`aVy*`A~>2z5fP$>lYIL=K*V>YMP>HY%n<#9MTfX%-N z0FmK9gfp2;P=Bk{7#tkL_*JGiGOJhv=v%1P2Gh^UN98 z+Sp)oa}zT&GZ=gQ8Uq6Z?3pA!J|3BwnXnRzd4X62Kz|`Guc$yzPY*bb!*|!NAvrl2 zj*gDJ2G`fu@$C6?w6(RtXfz`B!UYr*6tMUA6N>;83I*zAGFVwzF(Wb2(Sjj0EA;mE zqPV1lJ?7-(;PRzQhXb&@yo?`i-elptd*==k5)$?d(AghdT^Ji3#lqquL?RKqy}c0~ z9gVNz;(uUmZH-6ei~oAFy~E1aF3@vOC#<(@>Z*CQo06>Dp2 z`~D+x7!?@_xkABmUtLp!&n(;uUI0p^lCj=kFd#HE6lJBQdwJ~b>jRxrSiQWxvGd^r z#?@+cc6MTMad8jWkGF0iF)`6%+AMNla&i(`*?-wA4Y|3w`1;~Si^d3SV^b4UDiuOP zLhz`pjF)_7LxR_k*xb=Cf0!f`fy@QTm4J_}ayii|PCm1na01BlNEiEnV zzLPOoeLd{$?LoaEFE0=84F=ZvK9x$bv9SU5n>VZvP(8OiVz(vcl#8pR;EX5fK4@e}AUe-QCR^88xBO(o){m%nN|X z^m9%QMn^~CpmB|IPeLily?-B0PELpCz{hXUKcSM`E|+6$KV|P9!>+ z#RSOaXenJeq18-Bs~P3uM3+-DTWCp@NF=v8;CR<_qp?-8x+>##*Yke>ovt$J4SMe4 P00000NkvXXu0mjf6{Jq! literal 1166 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvVtU&J%W50 z7^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+081EXeuPlzi}!83-c#|&jp z8LFN#)I4OUc+ZgkjG_7&L(OxBDxlOT0*1i<|NoP7^rr&@E3qWVFBnKe0e|Aomw#SK zE&txZx{-z3ue(Af^GAm7qQ&eSMfd&|ep@K|Or1$3dCIB{?f>2zn>|*3VcNynDR}&t z+Jhrvs`p*CgfoU&?!IDfA$;|@>xZ_K)$5m(b1h5Q5$Vu<6=(xvlDE4{lJ-tnV01CC zmw5WRvOi;$7S)qAyvw;CC_Ty3#WBRCF^C1VGz0aqqb_6lrbe2qAt)QSaTWi6B zChlMV|F`U2?X=PL%<|oLcB|-DDn2>RF!x@9$;@v&Rk98tY%_F!D{Zdrj$~$xI65DV~{ zD50ClXu>Ge8)j^C8m|5+dA_x&&1(8~ghFx3**h?11Vl2ohYqEsNo zU}Ruqq-$WRYh)f`WN2k#W@TilZD3$!V35oxW{IL9H$NpatrE8ep_p~8Kn>wlArU1( ziRB6fMfqu&IjIUIl?AB^nFS@u3=9=>9)IHDC=AokIOTu(jOWuJ24-b$y<~1-Wnu5h zBFw@HE)6D!Q<#-EhbWxBaplC3Ge=~Ou%B-5Sm33{@Jd{;RG<|Mp00i_>zopr E0Pw5bF#rGn diff --git a/public/favicons/favicon.ico b/public/favicons/favicon.ico index 83ccfcbd1952f40d0fc743866f78153ea2541371..71226002b4a206084499d20a0df30501687b1a74 100644 GIT binary patch literal 15406 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 Gf&T&ZvS`!* literal 15086 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 diff --git a/src/config/help.ts b/src/config/help.ts index 7d7f4f3848..60bbcf8a6a 100644 --- a/src/config/help.ts +++ b/src/config/help.ts @@ -1,97 +1,40 @@ // Copyright 2022 @paritytech/polkadot-staking-dashboard authors & contributors // SPDX-License-Identifier: Apache-2.0 -import { HelpContentRaw } from 'contexts/Help/types'; +// ToDo: update +import { HelpItems } from 'contexts/Help/types'; -export const HELP_CONFIG: HelpContentRaw = [ +export const HELP_CONFIG: HelpItems = [ { key: 'overview', definitions: [ - { - title: 'Dashboard Tips', - description: [ - 'Staking dashboard will present you tips to help you along each step of staking on Polkadot.', - 'Tips can be turned off or re-enabled from dashboard settings, that can be accessed via the cog icon in the bottom left corner of the side menu.', - ], - }, - { - title: 'Supply Staked', - description: [ - 'The current cumulative supply of {NETWORK_UNIT} being staked globally.', - 'The percentage of staked {NETWORK_UNIT} is relative to the total supply of {NETWORK_UNIT}.', - ], - }, - { - title: 'Total Nominators', - description: [ - 'Accounts who are staking in the network, regardless of whether they are active or inactive in the current session.', - 'In order to stake {NETWORK_UNIT}, you must be a nominator.', - ], - }, - { - title: 'Active Nominators', - description: [ - 'Nominators who are active in the current session.', - 'Being an active nominator does not guarantee rewards, as your nominees may be oversubscribed.', - ], - }, - { - title: 'Your Balance', - description: [ - 'Your balance represents the total {NETWORK_UNIT} you have available in addition to your total staked amount, that includes the amount you have bonded in a Pool.', - 'Unlike your staked balance, your bonded pool balance is held and locked in the pool itself.', - ], - }, - { - title: 'Reserve Balance', - description: [ - 'In {NETWORK_NAME}, you must have a balance above a certain amount for your account to exist on-chain. This amount is called your "existential deposit".', - 'Staking dashboard ensures that this amount of {NETWORK_UNIT} is never touched.', - ], - }, - { - title: 'Network Stats', - description: [ - 'Real time network statistics that may affect your staking positions.', - 'Keep up to date on the state of the network from your overview.', - ], - }, - { - title: 'Inflation', - description: [ - 'CERE is inflationary; there is no maximum number of CERE.', - 'Inflation is designed to be in the range of 0.01% to 5% annually, with validator rewards being a function of the amount staked and the remainder going to treasury.', - ], - }, - { - title: 'Historical Rewards Rate', - description: [ - 'An estimated annual yield based on the {NETWORK_NAME} reward distribution model.', - ], - }, - { - title: 'Ideal Staked', - description: [ - 'The percentage of staked total supply in ideal network conditions.', - ], - }, + 'Dashboard Tips', + 'Total Nominators', + 'Active Nominators', + 'Your Balance', + 'Reserve Balance', + 'Network Stats', + 'Inflation', + 'Historical Rewards Rate', + 'Ideal Staked', + 'Supply Staked', ], external: [ - { - title: 'How to Connect Your Accounts', - url: 'https://support.polkadot.network/support/solutions/articles/65000182121-how-to-use-the-staking-dashboard-connecting-your-account', - website: 'polkadot.network', - }, - { - title: 'How to Use the Staking Dashboard: Overview', - url: 'https://support.polkadot.network/support/solutions/articles/65000182104-how-to-use-the-staking-dashboard-overview', - website: 'polkadot.network', - }, - { - title: 'Staking your DOT', - url: 'https://support.polkadot.network/support/solutions/articles/65000182104-how-to-use-the-staking-dashboard-overview', - website: 'polkadot.network', - }, + [ + 'connect_your_accounts', + 'https://support.polkadot.network/support/solutions/articles/65000182121-how-to-use-the-staking-dashboard-connecting-your-account', + 'polkadot.network', + ], + [ + 'how_to_use', + 'https://support.polkadot.network/support/solutions/articles/65000182104-how-to-use-the-staking-dashboard-overview', + 'polkadot.network', + ], + [ + 'stake_cere', + 'https://support.polkadot.network/support/solutions/articles/65000182104-how-to-use-the-staking-dashboard-overview', + 'polkadot.network', + ], ], }, { diff --git a/src/config/networks.ts b/src/config/networks.ts index a2b82c0dcb..cf8dfd3c8e 100644 --- a/src/config/networks.ts +++ b/src/config/networks.ts @@ -1,9 +1,9 @@ // SPDX-License-Identifier: Apache-2.0 -import { Networks } from 'types'; import { WellKnownChain } from '@polkadot/rpc-provider/substrate-connect'; import { DefaultParams } from 'consts'; -import { ReactComponent as CereLogoSvg } from 'img/cere_logo.svg'; import { ReactComponent as CereIconSvg } from 'img/cere_icon.svg'; +import { ReactComponent as CereLogoSvg } from 'img/cere_logo.svg'; +import { Networks } from 'types'; const cereMainnet = { name: 'Cere', @@ -63,7 +63,7 @@ const cereTestnet = { rpc: 'wss://archive.testnet.cere.network/ws', lightClient: WellKnownChain.polkadot, }, - cereStatsEndpoint: 'wss://hasura.stats.dev.cere.network/v1/graphql', + cereStatsEndpoint: 'wss://stats-hasura.network-dev.aws.cere.io/v1/graphql', }; const cereDevnet = { @@ -73,7 +73,7 @@ const cereDevnet = { rpc: 'wss://archive.devnet.cere.network/ws', lightClient: WellKnownChain.polkadot, }, - cereStatsEndpoint: 'wss://hasura.stats.dev.cere.network/v1/graphql', + cereStatsEndpoint: 'wss://stats-hasura.network-dev.aws.cere.io/v1/graphql', }; const cereQAnet = { @@ -83,7 +83,7 @@ const cereQAnet = { rpc: 'wss://archive.qanet.cere.network/ws', lightClient: WellKnownChain.polkadot, }, - cereStatsEndpoint: 'wss://hasura.stats.dev.cere.network/v1/graphql', + cereStatsEndpoint: 'wss://stats-hasura.network-dev.aws.cere.io/v1/graphql', }; // Determine if the testnet should be included based on the REACT_APP_INCLUDE_TESTNET environment variable diff --git a/src/consts.ts b/src/consts.ts index 7442c48da1..4c12839d3e 100644 --- a/src/consts.ts +++ b/src/consts.ts @@ -94,3 +94,8 @@ export const DefaultParams = { maxInflation: 0.05, minInflation: 0.0001, }; + +/* + * locale + */ +export const DefaultLocale = 'en'; diff --git a/src/contexts/CereStats/index.tsx b/src/contexts/CereStats/index.tsx index af7a0dc290..28072eec43 100644 --- a/src/contexts/CereStats/index.tsx +++ b/src/contexts/CereStats/index.tsx @@ -122,7 +122,7 @@ const usePayouts = ( data: { _like: $activeAccount } } ) { - blockNumber + block_number data timestamp } diff --git a/src/contexts/Network/defaults.ts b/src/contexts/Network/defaults.ts index 0637e03c8d..0fc2bbf64a 100644 --- a/src/contexts/Network/defaults.ts +++ b/src/contexts/Network/defaults.ts @@ -10,8 +10,8 @@ export const metrics: NetworkMetrics = { start: 0, }, totalIssuance: new BN(0), - auctionCounter: new BN(0), - earliestStoredSession: new BN(0), + // auctionCounter: new BN(0), + // earliestStoredSession: new BN(0), }; export const defaultNetworkContext: NetworkMetricsContextInterface = { diff --git a/src/contexts/Network/index.tsx b/src/contexts/Network/index.tsx index 8a61b8ef3d..8a4530893d 100644 --- a/src/contexts/Network/index.tsx +++ b/src/contexts/Network/index.tsx @@ -1,7 +1,6 @@ // Copyright 2022 @paritytech/polkadot-staking-dashboard authors & contributors // SPDX-License-Identifier: Apache-2.0 -import { BN } from 'bn.js'; import React, { useEffect, useState } from 'react'; import { AnyApi } from 'types'; import { useApi } from '../Api'; @@ -53,15 +52,12 @@ export const NetworkMetricsProvider = ({ [ api.query.staking.activeEra, api.query.balances.totalIssuance, - api.query.auctions.auctionCounter, - api.query.paraSessionInfo.earliestStoredSession, + // api.query.auctions.auctionCounter, + // api.query.paraSessionInfo.earliestStoredSession, ], - ([ - activeEra, - _totalIssuance, - _auctionCounter, - _earliestStoredSession, - ]: AnyApi) => { + ([activeEra, _totalIssuance]: // _auctionCounter, + // _earliestStoredSession, + AnyApi) => { // determine activeEra: toString used as alternative to `toHuman`, that puts commas in numbers let _activeEra = activeEra .unwrapOrDefault({ @@ -76,8 +72,8 @@ export const NetworkMetricsProvider = ({ const _metrics = { activeEra: _activeEra, totalIssuance: _totalIssuance.toBn(), - auctionCounter: new BN(_auctionCounter.toString()), - earliestStoredSession: new BN(_earliestStoredSession.toString()), + // auctionCounter: new BN(_auctionCounter.toString()), + // earliestStoredSession: new BN(_earliestStoredSession.toString()), }; setMetrics(_metrics); } @@ -92,8 +88,8 @@ export const NetworkMetricsProvider = ({ metrics: { activeEra: metrics.activeEra, totalIssuance: metrics.totalIssuance, - auctionCounter: metrics.auctionCounter, - earliestStoredSession: metrics.earliestStoredSession, + // auctionCounter: metrics.auctionCounter, + // earliestStoredSession: metrics.earliestStoredSession, }, }} > diff --git a/src/contexts/Network/types.ts b/src/contexts/Network/types.ts index 28b98aecab..58b28da6b4 100644 --- a/src/contexts/Network/types.ts +++ b/src/contexts/Network/types.ts @@ -13,6 +13,6 @@ export interface NetworkMetrics { start: number; }; totalIssuance: BN; - auctionCounter: BN; - earliestStoredSession: BN; + // auctionCounter: BN; + // earliestStoredSession: BN; } diff --git a/src/contexts/Validators/index.tsx b/src/contexts/Validators/index.tsx index 7f7b25fa0e..79aa19d519 100644 --- a/src/contexts/Validators/index.tsx +++ b/src/contexts/Validators/index.tsx @@ -49,7 +49,7 @@ export const ValidatorsProvider = ({ const { poolNominations } = useActivePools(); const { units } = network; const { maxNominatorRewardedPerValidator } = consts; - const { activeEra, earliestStoredSession } = metrics; + const { activeEra } = metrics; // stores the total validator entries const [validators, setValidators] = useState>([]); @@ -138,10 +138,10 @@ export const ValidatorsProvider = ({ // fetch parachain session validators when earliestStoredSession ready useEffect(() => { - if (isReady && earliestStoredSession.gt(new BN(0))) { + if (isReady) { subscribeParachainValidators(api); } - }, [isReady, earliestStoredSession]); + }, [isReady]); // pre-populating validator meta batches. Needed for generating nominations useEffect(() => { @@ -161,6 +161,8 @@ export const ValidatorsProvider = ({ if (!activeAccount) { return; } + + console.log(`Active account: ${activeAccount}`); // get raw targets list const targets = getAccountNominations(activeAccount); @@ -168,6 +170,8 @@ export const ValidatorsProvider = ({ const targetsFormatted = targets.map((item: any) => { return { address: item }; }); + console.log(`Fetching validators from nominated list:`); + console.log(targetsFormatted); // fetch preferences const nominationsWithPrefs = await fetchValidatorPrefs(targetsFormatted); @@ -188,11 +192,14 @@ export const ValidatorsProvider = ({ const fetchPoolNominatedList = async () => { // get raw nominations list let n = poolNominations.targets; + console.log(`Raw nominations list:`); + console.log(n); // format to list format n = n.map((item: string) => { return { address: item }; }); // fetch preferences + console.log(`Fetching validators from pool nominated list: ${n}`); const nominationsWithPrefs = await fetchValidatorPrefs(n); if (nominationsWithPrefs) { setPoolNominated(nominationsWithPrefs); @@ -218,6 +225,8 @@ export const ValidatorsProvider = ({ const _favorites = [...favorites].map((item: string) => { return { address: item }; }); + console.log(`Favourite validators:`); + console.log(_favorites); // // fetch preferences const favoritesWithPrefs = await fetchValidatorPrefs(_favorites); if (favoritesWithPrefs) { @@ -305,8 +314,8 @@ export const ValidatorsProvider = ({ */ const subscribeParachainValidators = async (_api: AnyApi) => { if (isReady) { - const unsub = await _api.query.paraSessionInfo.accountKeys( - earliestStoredSession.toString(), + const unsub = await _api.query.session.validators( + // earliestStoredSession.toString(), (_validators: AnyApi) => { setSessionParachainValidators({ ...sessionParachainValidators, diff --git a/src/library/Form/Utils/getEligibleControllers.tsx b/src/library/Form/Utils/getEligibleControllers.tsx index 382f67ee26..0e32c6cdee 100644 --- a/src/library/Form/Utils/getEligibleControllers.tsx +++ b/src/library/Form/Utils/getEligibleControllers.tsx @@ -60,7 +60,13 @@ export const getEligibleControllers = (): Array => { _accountsAsInput = _accountsAsInput.sort((a: InputItem, b: InputItem) => { const aFree = a?.balance?.free ?? new BN(0); const bFree = b?.balance?.free ?? new BN(0); - return bFree.sub(aFree).toNumber(); + + if (bFree.lt(aFree)) { + return -1; + // eslint-disable-next-line no-else-return + } else { + return bFree.sub(aFree).toNumber(); + } }); return _accountsAsInput; diff --git a/src/library/GenerateNominations/index.tsx b/src/library/GenerateNominations/index.tsx index 8c2759bf27..8b9d20e3aa 100644 --- a/src/library/GenerateNominations/index.tsx +++ b/src/library/GenerateNominations/index.tsx @@ -258,15 +258,6 @@ export const GenerateNominations = (props: GenerateNominationsInnerProps) => { onSelected: true, isDisabled: () => false, }, - { - title: 'Parachain Validator', - onClick: () => addNominationByType('Parachain Validator'), - onSelected: false, - icon: faPlus, - isDisabled: () => - disabledMaxNominations() || - !availableToNominate(nominations).parachainValidators.length, - }, { title: 'Active Validator', onClick: () => addNominationByType('Active Validator'), diff --git a/src/library/GenerateNominations/useFetchMethods.tsx b/src/library/GenerateNominations/useFetchMethods.tsx index bfbb686733..58e2f35e3c 100644 --- a/src/library/GenerateNominations/useFetchMethods.tsx +++ b/src/library/GenerateNominations/useFetchMethods.tsx @@ -7,7 +7,8 @@ import { useValidatorFilters } from 'library/Hooks/useValidatorFilters'; import { shuffle } from 'Utils'; export const useFetchMehods = () => { - const { validators, sessionParachain } = useValidators(); + const includeTestnet = process.env.REACT_APP_INCLUDE_TESTNET !== 'false'; + const { validators } = useValidators(); const { applyFilter, applyOrder } = useValidatorFilters(); let { favoritesList } = useValidators(); if (favoritesList === null) { @@ -71,7 +72,11 @@ export const useFetchMehods = () => { // filter validators to find active candidates _nominations = applyFilter( ['active'], - ['all_commission', 'blocked_nominations', 'missing_identity'], + [ + 'all_commission', + 'blocked_nominations', + includeTestnet ? '' : 'missing_identity', + ], _nominations, rawBatchKey ); @@ -98,7 +103,7 @@ export const useFetchMehods = () => { [ 'all_commission', 'blocked_nominations', - 'missing_identity', + includeTestnet ? '' : 'missing_identity', 'in_session', ], _nominationsWaiting, @@ -108,7 +113,11 @@ export const useFetchMehods = () => { // filter validators to find active candidates _nominationsActive = applyFilter( ['active'], - ['all_commission', 'blocked_nominations', 'missing_identity'], + [ + 'all_commission', + 'blocked_nominations', + includeTestnet ? '' : 'missing_identity', + ], _nominationsActive, rawBatchKey ); @@ -118,10 +127,9 @@ export const useFetchMehods = () => { _nominationsWaiting = shuffle(_nominationsWaiting).slice(0, 4); } // choose shuffled subset of active - if (_nominationsWaiting.length) { + if (_nominationsActive.length) { _nominationsActive = shuffle(_nominationsActive).slice(0, 12); } - return shuffle(_nominationsWaiting.concat(_nominationsActive)); }; @@ -144,18 +152,25 @@ export const useFetchMehods = () => { const _activeValidators = applyFilter( ['active'], - ['all_commission', 'blocked_nominations', 'missing_identity'], + [ + 'all_commission', + 'blocked_nominations', + includeTestnet ? '' : 'missing_identity', + ], _nominations, rawBatchKey - ) - .filter( - (n: any) => !nominations.find((o: any) => o.address === n.address) - ) - .filter((n: any) => !sessionParachain?.includes(n.address) || false); + ).filter( + (n: any) => !nominations.find((o: any) => o.address === n.address) + ); + // .filter((n: any) => !sessionParachain?.includes(n.address) || false); const _randomValidator = applyFilter( null, - ['all_commission', 'blocked_nominations', 'missing_identity'], + [ + 'all_commission', + 'blocked_nominations', + includeTestnet ? '' : 'missing_identity', + ], _nominations, rawBatchKey ).filter( diff --git a/src/library/Graphs/PayoutBar.tsx b/src/library/Graphs/PayoutBar.tsx index 43ef9d3e1b..27f2f520e2 100644 --- a/src/library/Graphs/PayoutBar.tsx +++ b/src/library/Graphs/PayoutBar.tsx @@ -13,9 +13,9 @@ import { Tooltip, } from 'chart.js'; import { useApi } from 'contexts/Api'; +import { useCereStats } from 'contexts/CereStats'; import { usePoolMemberships } from 'contexts/Pools/PoolMemberships'; import { useStaking } from 'contexts/Staking'; -import { useCereStats } from 'contexts/CereStats'; import { useTheme } from 'contexts/Themes'; import { useUi } from 'contexts/UI'; import { format, fromUnixTime } from 'date-fns'; diff --git a/src/library/Graphs/PayoutLine.tsx b/src/library/Graphs/PayoutLine.tsx index 8ef2b89d7e..38a0140d70 100644 --- a/src/library/Graphs/PayoutLine.tsx +++ b/src/library/Graphs/PayoutLine.tsx @@ -12,9 +12,9 @@ import { Tooltip, } from 'chart.js'; import { useApi } from 'contexts/Api'; +import { useCereStats } from 'contexts/CereStats'; import { usePoolMemberships } from 'contexts/Pools/PoolMemberships'; import { useStaking } from 'contexts/Staking'; -import { useCereStats } from 'contexts/CereStats'; import { useTheme } from 'contexts/Themes'; import { useUi } from 'contexts/UI'; import { Line } from 'react-chartjs-2'; diff --git a/src/library/Tips/index.tsx b/src/library/Tips/index.tsx deleted file mode 100644 index f6fda85f3e..0000000000 --- a/src/library/Tips/index.tsx +++ /dev/null @@ -1,100 +0,0 @@ -// Copyright 2022 @paritytech/polkadot-staking-dashboard authors & contributors -// SPDX-License-Identifier: Apache-2.0 - -import { TIPS_CONFIG } from 'config/tips'; -import { useTips } from 'contexts/Tips'; -import { useAnimation } from 'framer-motion'; -import useFillVariables from 'library/Hooks/useFillVariables'; -import { useEffect } from 'react'; -import { AnyJson } from 'types'; -import { Dismiss } from './Items/Dismiss'; -import { Tip } from './Items/Tip'; - -import { ContentWrapper, HeightWrapper, Wrapper } from './Wrappers'; - -export const Tips = () => { - const { setStatus, status, tip, closeTip, dismissOpen } = useTips(); - const { fillVariables } = useFillVariables(); - const controls = useAnimation(); - - const onFadeIn = async () => { - await controls.start('visible'); - }; - - const onFadeOut = async () => { - await controls.start('hidden'); - setStatus(0); - }; - - const variants = { - hidden: { - opacity: 0, - }, - visible: { - opacity: 1, - }, - }; - - useEffect(() => { - // help has been opened - fade in - if (status === 1) { - onFadeIn(); - } - // an external component triggered closure - fade out - if (status === 2) { - onFadeOut(); - } - }, [status]); - - // render early if help not open - if (status === 0) { - return <>; - } - - // get active tip - let activeTip: AnyJson = tip - ? TIPS_CONFIG.find((d: any) => d.id === tip) - : null; - - // fill placeholder variables - activeTip = activeTip - ? fillVariables(activeTip, ['title', 'subtitle', 'description']) - : null; - - return ( - -

- - ); -}; diff --git a/src/locale/cn/help.json b/src/locale/cn/help.json index 656ff95417..bed0c25e80 100644 --- a/src/locale/cn/help.json +++ b/src/locale/cn/help.json @@ -73,7 +73,7 @@ "当前的抵押状态.", "当这些提名人中没有一个是在当前活跃验证人群内(被选择用于验证网络的验证人群体)时,这组提名将处于非活跃状态.", "当您的被提名人中至少有一人是活跃时,此提名状态将显示为活跃提名-但这仍然不能保证奖励.", - "每个活跃验证人的前{MAX_NOMINATOR_REWARDED_PER_VALIDATOR}提名人可获得{NETWORK_NAME}奖励。因此,如果被提名人活跃且超额认购,您必须是{MAX_NOMINATOR_REWARDED_PER_VALIDATOR}最高质押提名人里的一员才能获得奖励.", + "每个活跃验证人的前{FallbackNominatorRewardedPerValidator}提名人可获得{NETWORK_NAME}奖励。因此,如果被提名人活跃且超额认购,您必须是{FallbackNominatorRewardedPerValidator}最高质押提名人里的一员才能获得奖励.", "如果一位活跃的被提名人没有超额认购,您将获得奖励." ] ], @@ -109,7 +109,7 @@ "在一个Era中为保持活跃提名的所需的{NETWORK_UNIT}数量. ", "适用于提名人和提名池. 对于提名池情况来说, 在加入池时重要的是池的总质押金额不能低于该值.", "高于这个标准能保证可以一直在这个Era的活跃提名人名单中. 但这数额不保证能得到奖励,因为您的活跃提名人有超额认选的可能.", - "在{NETWORK_NAME},只有前{MAX_NOMINATOR_REWARDED_PER_VALIDATOR}名提名人才能获得每个验证人的奖励. 确保您的活跃度质押金额高于此阈值将增加获得奖励的机会.", + "在{NETWORK_NAME},只有前{FallbackNominatorRewardedPerValidator}名提名人才能获得每个验证人的奖励. 确保您的活跃度质押金额高于此阈值将增加获得奖励的机会.", "可以从页面中追踪这些指标, 并在必要时执行抵押操作如增加{NETWORK_UNIT}或更改提名或加入其它提名池." ] ], @@ -130,7 +130,7 @@ "nominations": [ "提名", [ - "提名指选择验证人. 在{NETWORK_NAME}里最高提名数为 {MAX_NOMINATIONS}.", + "提名指选择验证人. 在{NETWORK_NAME}里最高提名数为 {FallbackMaxNominations}.", "对于提名池,提名池所有者和池提名人负责代表所有的池成员提名验证人.", "一旦提名一交, 质押金额会自动分配给当前Era活跃的提名人.", "只要本人提名中至少有一个提名在当前session中活跃执行验证,您的资金就会与该验证人绑定从而获得奖励." @@ -264,7 +264,7 @@ "over_subscribed": [ "超额认选", [ - "只有每个验证人的前{MAX_NOMINATOR_REWARDED_PER_VALIDATOR}名提名人才能在{NETWORK_NAME}获得奖励. 当超过该数时,该验证人将被视为超额认选." + "只有每个验证人的前{FallbackNominatorRewardedPerValidator}名提名人才能在{NETWORK_NAME}获得奖励. 当超过该数时,该验证人将被视为超额认选." ] ], "blocked_nominations": [ @@ -299,7 +299,7 @@ "externals": { "connect_your_accounts": "如何连接您的帐户", "how_to_use": "如何使用Staking Dashboard:概述", - "stake_dot": "抵押您的DOT", + "stake_cere": "抵押您的DOT", "change_destination": "更改奖励钱包地址", "bond_more": "质押更多代币到现有的抵押", "unbonding_tokens": "解除您的质押", diff --git a/src/locale/cn/tips.json b/src/locale/cn/tips.json index 9e5c938319..b74ba28e34 100644 --- a/src/locale/cn/tips.json +++ b/src/locale/cn/tips.json @@ -45,7 +45,7 @@ [ "有多种方式抵押 {NETWORK_NAME}.", "要么成为提名人,要么成为提名池成员.", - "直接提名要求您质押{NETWORK_UNIT}并选择要提名的验证人,并提名最多{MAX_NOMINATIONS} 个验证人。要作为提名人获得奖励,你目前至少需要有{MIN_ACTIVE_BOND} {NETWORK_UNIT}.", + "直接提名要求您质押{NETWORK_UNIT}并选择要提名的验证人,并提名最多{FallbackMaxNominations} 个验证人。要作为提名人获得奖励,你目前至少需要有{MIN_ACTIVE_BOND} {NETWORK_UNIT}.", "加入提名池要便宜得多,需要最低存款 {MIN_POOL_JOIN_BOND} {NETWORK_UNIT}. 提名验证人是代表您完成的,您只需从提名池中领取奖励.", "创建提名池至少需要{MIN_POOL_CREATE_BOND} {NETWORK_UNIT}." ] diff --git a/src/locale/en/help.json b/src/locale/en/help.json index 055aeba75c..6377656757 100644 --- a/src/locale/en/help.json +++ b/src/locale/en/help.json @@ -12,7 +12,7 @@ "dashboard_tips": [ "Dashboard Tips", [ - "Staking dashboard will present you tips to help you along each step of staking on Polkadot.", + "Staking dashboard will present you tips to help you along each step of staking on Cere Network.", "Tips can be turned off or re-enabled from dashboard settings, that can be accessed via the cog icon in the bottom left corner of the side menu." ] ], @@ -81,7 +81,7 @@ "The status of your nominations at a glance.", "A set of nominations will be inactive when none of those nominees are participating in the current validator set (the set of validators currently elected to validate the network).", "When at least one of your nominees are active, this nomination status will display as actively nominating - but this still does not guarantee rewards.", - "The top {MAX_NOMINATOR_REWARDED_PER_VALIDATOR} nominators of each active validator receive rewards on {NETWORK_NAME}. So if a nominee is active and over-subscribed, you must be a part of the {MAX_NOMINATOR_REWARDED_PER_VALIDATOR} highest bonded nominators to receive rewards.", + "The top {FallbackNominatorRewardedPerValidator} nominators of each active validator receive rewards on {NETWORK_NAME}. So if a nominee is active and over-subscribed, you must be a part of the {FallbackNominatorRewardedPerValidator} highest bonded nominators to receive rewards.", "If an active nominee is not over-subscribed, you will receive rewards." ] ], @@ -117,7 +117,7 @@ "The amount of {NETWORK_UNIT} needed to be actively nominating in an era. ", "This value applies to nominators and for pools. In the pool's case, it is important to join a pool with a total bond amount of at least this value.", "Being above this metric simply guarantees that you will be present in the active nominator set for the era. This amount still does not guarantee rewards, as your active nominations may still be over-subscribed.", - "Only the top {MAX_NOMINATOR_REWARDED_PER_VALIDATOR} nominators are rewarded per validator in {NETWORK_NAME}. Ensuring your active bond is above this threshold will increase your chances of rewards.", + "Only the top {FallbackNominatorRewardedPerValidator} nominators are rewarded per validator in {NETWORK_NAME}. Ensuring your active bond is above this threshold will increase your chances of rewards.", "You can keep track of these metrics from the dashboard and amend your staking position if necessary, whether increasing your bonded {NETWORK_UNIT}, changing your nominations, or joining another pool." ] ], @@ -138,7 +138,7 @@ "nominations": [ "Nominations", [ - "Nominations are the validators a staker chooses to nominate. You can nominate up to {MAX_NOMINATIONS} validators on {NETWORK_NAME}.", + "Nominations are the validators a staker chooses to nominate. You can nominate up to {FallbackMaxNominations} validators on {NETWORK_NAME}.", "For nomination pools, the pool owner and pool nominator are in charge of nominating validators on behalf of all the pool members.", "Once nominations have been submitted, bonded funds are automatically distributed to nominees that are active in the curernt era.", "As long as at least one of your nominations is actively validating in a session, your funds will be backing that validator." @@ -234,14 +234,14 @@ "Era", [ "At the end of each era, validators are rewarded {NETWORK_UNIT} based on how many era points they accumulated in that era. This {NETWORK_UNIT} reward is then distributed amongst the nominators of the validator via a payout.", - "1 era is currently 24 hours in Polkadot." + "1 era is currently 24 hours in Cere Network." ] ], "epoch": [ "Epoch", [ "An epoch is another name for a session in {NETWORK_NAME}. A different set of validators are selected to validate blocks at the beginning of every epoch.", - "1 epoch is currently 4 hours in Polkadot." + "1 epoch is currently 4 hours in Cere Network." ] ], "era_points": [ @@ -277,7 +277,7 @@ "over_subscribed": [ "Over Subscribed", [ - "Only the top {MAX_NOMINATOR_REWARDED_PER_VALIDATOR} nominators for each validator are rewarded in {NETWORK_NAME}. When this number is surpassed, this validator is considered over subscribed." + "Only the top {FallbackNominatorRewardedPerValidator} nominators for each validator are rewarded in {NETWORK_NAME}. When this number is surpassed, this validator is considered over subscribed." ] ], "blocked_nominations": [ @@ -314,7 +314,7 @@ "externals": { "connect_your_accounts": "How to Connect Your Accounts", "how_to_use": "How to Use the Staking Dashboard: Overview", - "stake_dot": "Staking your DOT", + "stake_cere": "Staking your CERE", "change_destination": "Changing Your Reward Destination", "bond_more": "Bond More Tokens to Your Existing Stake", "unbonding_tokens": "Unbonding Your Tokens", diff --git a/src/locale/en/tips.json b/src/locale/en/tips.json index 89bce67560..ea8973b666 100644 --- a/src/locale/en/tips.json +++ b/src/locale/en/tips.json @@ -45,7 +45,7 @@ [ "There are multiple ways to stake on {NETWORK_NAME}.", "You can either become a nominator or become a member of a pool.", - "Directly nominating requires you to bond {NETWORK_UNIT} and choose validators you wish to back, and to nominate up to {MAX_NOMINATIONS} of them. To earn rewards as a nominator, you currently need to bond at least {MIN_ACTIVE_BOND} {NETWORK_UNIT}.", + "Directly nominating requires you to bond {NETWORK_UNIT} and choose validators you wish to back, and to nominate up to {FallbackMaxNominations} of them. To earn rewards as a nominator, you currently need to bond at least {MIN_ACTIVE_BOND} {NETWORK_UNIT}.", "Joining a pool is much cheaper, requiring a minimum deposit of {MIN_POOL_JOIN_BOND} {NETWORK_UNIT}. Nominating validators is done on your behalf, and you simply claim rewards from the pool.", "Creating a pool is also possible, requiring a minimum of {MIN_POOL_CREATE_BOND} {NETWORK_UNIT}." ] diff --git a/src/modals/JoinPool/Forms.tsx b/src/modals/JoinPool/Forms.tsx deleted file mode 100644 index 2e54d67aed..0000000000 --- a/src/modals/JoinPool/Forms.tsx +++ /dev/null @@ -1,133 +0,0 @@ -// Copyright 2022 @paritytech/polkadot-staking-dashboard authors & contributors -// SPDX-License-Identifier: Apache-2.0 - -import { IconProp } from '@fortawesome/fontawesome-svg-core'; -import { faArrowAltCircleUp } from '@fortawesome/free-regular-svg-icons'; -import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; -import { useApi } from 'contexts/Api'; -import { useConnect } from 'contexts/Connect'; -import { useModal } from 'contexts/Modal'; -import { usePoolMembers } from 'contexts/Pools/PoolMembers'; -import { useTransferOptions } from 'contexts/TransferOptions'; -import { useTxFees } from 'contexts/TxFees'; -import { useUi } from 'contexts/UI'; -import { defaultPoolSetup } from 'contexts/UI/defaults'; -import { SetupType } from 'contexts/UI/types'; -import { EstimatedTxFee } from 'library/EstimatedTxFee'; -import { BondFeedback } from 'library/Form/Bond/BondFeedback'; -import { useSubmitExtrinsic } from 'library/Hooks/useSubmitExtrinsic'; -import { useEffect, useState } from 'react'; -import { planckBnToUnit, unitToPlanckBn } from 'Utils'; -import { FooterWrapper, NotesWrapper } from '../Wrappers'; -import { ContentWrapper } from './Wrapper'; - -export const Forms = () => { - const { api, network } = useApi(); - const { units } = network; - const { setStatus: setModalStatus, config, setResize } = useModal(); - const { id: poolId, setActiveTab } = config; - const { activeAccount, accountHasSigner } = useConnect(); - const { queryPoolMember, addToPoolMembers } = usePoolMembers(); - const { setActiveAccountSetup } = useUi(); - const { txFeesValid } = useTxFees(); - const { getTransferOptions } = useTransferOptions(); - const { freeBalance } = getTransferOptions(activeAccount); - - // local bond value - const [bond, setBond] = useState({ - bond: planckBnToUnit(freeBalance, units), - }); - - // bond valid - const [bondValid, setBondValid] = useState(true); - - // modal resize on form update - useEffect(() => { - setResize(); - }, [bond]); - - // tx to submit - const tx = () => { - let _tx = null; - if (!bondValid || !api) { - return _tx; - } - - // remove decimal errors - const bondToSubmit = unitToPlanckBn(bond.bond, units); - _tx = api.tx.nominationPools.join(bondToSubmit, poolId); - - return _tx; - }; - - const { submitTx, submitting } = useSubmitExtrinsic({ - tx: tx(), - from: activeAccount, - shouldSubmit: bondValid, - callbackSubmit: () => { - setModalStatus(2); - setActiveTab(0); - }, - callbackInBlock: async () => { - // query and add account to poolMembers list - const member = await queryPoolMember(activeAccount); - addToPoolMembers(member); - - // reset localStorage setup progress - setActiveAccountSetup(SetupType.Pool, defaultPoolSetup); - }, - }); - - const warnings = []; - if (!accountHasSigner(activeAccount)) { - warnings.push('Your account is read only, and cannot sign transactions.'); - } - - return ( - -
- <> - - - - - -
- -
- -
-
-
- ); -}; - -export default Forms; diff --git a/src/modals/ValidatorMetrics/index.tsx b/src/modals/ValidatorMetrics/index.tsx index 6a94f6d308..ec29b97162 100644 --- a/src/modals/ValidatorMetrics/index.tsx +++ b/src/modals/ValidatorMetrics/index.tsx @@ -3,10 +3,10 @@ import { BN } from 'bn.js'; import { useApi } from 'contexts/Api'; +import { useCereStats } from 'contexts/CereStats'; import { useModal } from 'contexts/Modal'; import { useNetworkMetrics } from 'contexts/Network'; import { useStaking } from 'contexts/Staking'; -import { useCereStats } from 'contexts/CereStats'; import { EraPoints as EraPointsGraph } from 'library/Graphs/EraPoints'; import { formatSize, useSize } from 'library/Graphs/Utils'; import { GraphWrapper } from 'library/Graphs/Wrappers'; diff --git a/yarn.lock b/yarn.lock index fac9b30c3d..6e1bf20d4f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -24,6 +24,24 @@ jsonpointer "^5.0.0" leven "^3.1.0" +"@apollo/client@^3.7.14": + version "3.8.9" + resolved "https://registry.yarnpkg.com/@apollo/client/-/client-3.8.9.tgz#0e4ac133eb04c63e618138c1ebf273d9f110a4d0" + integrity sha512-IcQDFEEPc9+PEQsxhxQvsoQ04BRarOzi/Ila5PcniRSDeKJWgY22dnp6+V1i1fWXRDVd1ybdvze4sFESDVQUCQ== + dependencies: + "@graphql-typed-document-node/core" "^3.1.1" + "@wry/equality" "^0.5.6" + "@wry/trie" "^0.5.0" + graphql-tag "^2.12.6" + hoist-non-react-statics "^3.3.2" + optimism "^0.18.0" + prop-types "^15.7.2" + response-iterator "^0.2.6" + symbol-observable "^4.0.0" + ts-invariant "^0.10.3" + tslib "^2.3.0" + zen-observable-ts "^1.2.5" + "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.18.6", "@babel/code-frame@^7.8.3": version "7.18.6" resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a" @@ -1279,6 +1297,11 @@ dependencies: prop-types "^15.8.1" +"@graphql-typed-document-node/core@^3.1.1": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@graphql-typed-document-node/core/-/core-3.2.0.tgz#5f3d96ec6b2354ad6d8a28bf216a1d97b5426861" + integrity sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ== + "@humanwhocodes/config-array@^0.11.6": version "0.11.7" resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.7.tgz#38aec044c6c828f6ed51d5d7ae3d9b9faf6dbb0f" @@ -3073,6 +3096,41 @@ "@webassemblyjs/ast" "1.11.1" "@xtuc/long" "4.2.2" +"@wry/caches@^1.0.0": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@wry/caches/-/caches-1.0.1.tgz#8641fd3b6e09230b86ce8b93558d44cf1ece7e52" + integrity sha512-bXuaUNLVVkD20wcGBWRyo7j9N3TxePEWFZj2Y+r9OoUzfqmavM84+mFykRicNsBqatba5JLay1t48wxaXaWnlA== + dependencies: + tslib "^2.3.0" + +"@wry/context@^0.7.0": + version "0.7.4" + resolved "https://registry.yarnpkg.com/@wry/context/-/context-0.7.4.tgz#e32d750fa075955c4ab2cfb8c48095e1d42d5990" + integrity sha512-jmT7Sb4ZQWI5iyu3lobQxICu2nC/vbUhP0vIdd6tHC9PTfenmRmuIFqktc6GH9cgi+ZHnsLWPvfSvc4DrYmKiQ== + dependencies: + tslib "^2.3.0" + +"@wry/equality@^0.5.6": + version "0.5.7" + resolved "https://registry.yarnpkg.com/@wry/equality/-/equality-0.5.7.tgz#72ec1a73760943d439d56b7b1e9985aec5d497bb" + integrity sha512-BRFORjsTuQv5gxcXsuDXx6oGRhuVsEGwZy6LOzRRfgu+eSfxbhUQ9L9YtSEIuIjY/o7g3iWFjrc5eSY1GXP2Dw== + dependencies: + tslib "^2.3.0" + +"@wry/trie@^0.4.3": + version "0.4.3" + resolved "https://registry.yarnpkg.com/@wry/trie/-/trie-0.4.3.tgz#077d52c22365871bf3ffcbab8e95cb8bc5689af4" + integrity sha512-I6bHwH0fSf6RqQcnnXLJKhkSXG45MFral3GxPaY4uAl0LYDZM+YDVDAiU9bYwjTuysy1S0IeecWtmq1SZA3M1w== + dependencies: + tslib "^2.3.0" + +"@wry/trie@^0.5.0": + version "0.5.0" + resolved "https://registry.yarnpkg.com/@wry/trie/-/trie-0.5.0.tgz#11e783f3a53f6e4cd1d42d2d1323f5bc3fa99c94" + integrity sha512-FNoYzHawTMk/6KMQoEG5O4PuioX19UbwdQKF44yw0nLfOypfQdjtfZzo/UIJWAJ23sNIFbD1Ug9lbaDGMwbqQA== + dependencies: + tslib "^2.3.0" + "@xtuc/ieee754@^1.2.0": version "1.2.0" resolved "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" @@ -3577,6 +3635,11 @@ babel-runtime@^6.26.0: core-js "^2.4.0" regenerator-runtime "^0.11.0" +backo2@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947" + integrity sha512-zj6Z6M7Eq+PBZ7PQxl5NT665MvJdAkzp0f60nAJ+sLaSCBPMwVak5ZegFbgVCzFcCJTKFoMizvM5Ld7+JrRJHA== + balanced-match@^1.0.0: version "1.0.2" resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" @@ -5224,6 +5287,11 @@ ethereum-blockies-base64@^1.0.2: dependencies: pnglib "0.0.1" +eventemitter3@^3.1.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7" + integrity sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q== + eventemitter3@^4.0.0, eventemitter3@^4.0.7: version "4.0.7" resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" @@ -5811,6 +5879,18 @@ grapheme-splitter@^1.0.4: resolved "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e" integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== +graphql-tag@^2.12.6: + version "2.12.6" + resolved "https://registry.yarnpkg.com/graphql-tag/-/graphql-tag-2.12.6.tgz#d441a569c1d2537ef10ca3d1633b48725329b5f1" + integrity sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg== + dependencies: + tslib "^2.1.0" + +graphql@^16.6.0: + version "16.8.1" + resolved "https://registry.yarnpkg.com/graphql/-/graphql-16.8.1.tgz#1930a965bef1170603702acdb68aedd3f3cf6f07" + integrity sha512-59LZHPdGZVh695Ud9lRzPBVTtlX9ZCV150Er2W43ro37wVof0ctenSaskPPjN7lVTIN8mSZt8PHUNKZuNQUuxw== + gzip-size@^6.0.0: version "6.0.0" resolved "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz#065367fd50c239c0671cbcbad5be3e2eeb10e462" @@ -5879,9 +5959,9 @@ hey-listen@^1.0.8: resolved "https://registry.npmjs.org/hey-listen/-/hey-listen-1.0.8.tgz#8e59561ff724908de1aa924ed6ecc84a56a9aa68" integrity sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q== -hoist-non-react-statics@^3.0.0, hoist-non-react-statics@^3.3.0: +hoist-non-react-statics@^3.0.0, hoist-non-react-statics@^3.3.0, hoist-non-react-statics@^3.3.2: version "3.3.2" - resolved "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" + resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== dependencies: react-is "^16.7.0" @@ -6437,6 +6517,11 @@ istanbul-reports@^3.1.3: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" +iterall@^1.2.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/iterall/-/iterall-1.3.0.tgz#afcb08492e2915cbd8a0884eb93a8c94d0d72fea" + integrity sha512-QZ9qOMdF+QLHxy1QIpUHUU1D5pS2CG2P69LF6L6CPjPYA/XMOmKV3PZpawHoAjHNyB0swdVTRxdYT4tbBbxqwg== + jake@^10.8.5: version "10.8.5" resolved "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz#f2183d2c59382cb274226034543b9c03b8164c46" @@ -7702,6 +7787,16 @@ open@^8.0.9, open@^8.4.0: is-docker "^2.1.1" is-wsl "^2.2.0" +optimism@^0.18.0: + version "0.18.0" + resolved "https://registry.yarnpkg.com/optimism/-/optimism-0.18.0.tgz#e7bb38b24715f3fdad8a9a7fc18e999144bbfa63" + integrity sha512-tGn8+REwLRNFnb9WmcY5IfpOqeX2kpaYJ1s6Ae3mn12AeydLkR3j+jSCmVQFoXqU8D41PAJ1RG1rCRNWmNZVmQ== + dependencies: + "@wry/caches" "^1.0.0" + "@wry/context" "^0.7.0" + "@wry/trie" "^0.4.3" + tslib "^2.3.0" + optionator@^0.8.1: version "0.8.3" resolved "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" @@ -9091,6 +9186,11 @@ resolve@^2.0.0-next.3: path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" +response-iterator@^0.2.6: + version "0.2.6" + resolved "https://registry.yarnpkg.com/response-iterator/-/response-iterator-0.2.6.tgz#249005fb14d2e4eeb478a3f735a28fd8b4c9f3da" + integrity sha512-pVzEEzrsg23Sh053rmDUvLSkGXluZio0qu8VT6ukrYuvtjVfCbDZH9d6PGXb8HZfzdNZt8feXv/jvUzlhRgLnw== + retry@^0.13.1: version "0.13.1" resolved "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" @@ -9678,6 +9778,17 @@ stylehacks@^5.1.1: browserslist "^4.21.4" postcss-selector-parser "^6.0.4" +subscriptions-transport-ws@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/subscriptions-transport-ws/-/subscriptions-transport-ws-0.11.0.tgz#baf88f050cba51d52afe781de5e81b3c31f89883" + integrity sha512-8D4C6DIH5tGiAIpp5I0wD/xRlNiZAPGHygzCe7VzyzUoxHtawzjNAY9SUTXU05/EY2NMY9/9GF0ycizkXr1CWQ== + dependencies: + backo2 "^1.0.2" + eventemitter3 "^3.1.0" + iterall "^1.2.1" + symbol-observable "^1.0.4" + ws "^5.2.0 || ^6.0.0 || ^7.0.0" + supports-color@^5.3.0, supports-color@^5.5.0: version "5.5.0" resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" @@ -9749,6 +9860,16 @@ svgo@^2.7.0: picocolors "^1.0.0" stable "^0.1.8" +symbol-observable@^1.0.4: + version "1.2.0" + resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" + integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== + +symbol-observable@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-4.0.0.tgz#5b425f192279e87f2f9b937ac8540d1984b39205" + integrity sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ== + symbol-tree@^3.2.4: version "3.2.4" resolved "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" @@ -9940,6 +10061,13 @@ tryer@^1.0.1: resolved "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz#f2c85406800b9b0f74c9f7465b81eaad241252f8" integrity sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA== +ts-invariant@^0.10.3: + version "0.10.3" + resolved "https://registry.yarnpkg.com/ts-invariant/-/ts-invariant-0.10.3.tgz#3e048ff96e91459ffca01304dbc7f61c1f642f6c" + integrity sha512-uivwYcQaxAucv1CzRp2n/QdYPo4ILf9VXgH19zEIjFx2EJufV16P0JtJVpYHy89DItG6Kwj2oIUjrcK5au+4tQ== + dependencies: + tslib "^2.1.0" + tsconfig-paths@^3.14.1: version "3.14.1" resolved "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz#ba0734599e8ea36c862798e920bcf163277b137a" @@ -10670,7 +10798,7 @@ write-file-atomic@^3.0.0: signal-exit "^3.0.2" typedarray-to-buffer "^3.1.5" -ws@^7.4.6: +"ws@^5.2.0 || ^6.0.0 || ^7.0.0", ws@^7.4.6: version "7.5.9" resolved "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== @@ -10742,3 +10870,15 @@ yocto-queue@^0.1.0: version "0.1.0" resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== + +zen-observable-ts@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/zen-observable-ts/-/zen-observable-ts-1.2.5.tgz#6c6d9ea3d3a842812c6e9519209365a122ba8b58" + integrity sha512-QZWQekv6iB72Naeake9hS1KxHlotfRpe+WGNbNx5/ta+R3DNjVO2bswf63gXlWDcs+EMd7XY8HfVQyP1X6T4Zg== + dependencies: + zen-observable "0.8.15" + +zen-observable@0.8.15: + version "0.8.15" + resolved "https://registry.yarnpkg.com/zen-observable/-/zen-observable-0.8.15.tgz#96415c512d8e3ffd920afd3889604e30b9eaac15" + integrity sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ==