From 61e71a562c32c25066bdc97a830e522ed68f50e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=98=99=E2=97=A6=20The=20Tablet=20=E2=9D=80=20GamerGirla?= =?UTF-8?q?ndCo=20=E2=97=A6=E2=9D=A7?= Date: Tue, 22 Oct 2024 18:33:44 -0400 Subject: [PATCH] initial commit --- .editorconfig | 10 + .gitattributes | 4 + .github/workflows/playwright.yml | 27 + .gitignore | 2 + .vscode/settings.json | 3 + .yarn/install-state.gz | Bin 0 -> 197404 bytes .yarnrc.yml | 2 + README.md | 2 + package.json | 39 + src/fixtures.ts | 10 + src/index.ts | 52 + src/tester.ts | 114 + src/util.ts | 65 + test-project/.editorconfig | 10 + test-project/.eslintignore | 3 + test-project/.eslintrc | 23 + test-project/.gitignore | 22 + test-project/.npmrc | 1 + test-project/README.md | 96 + test-project/esbuild.config.mjs | 49 + test-project/main.ts | 134 + test-project/manifest.json | 11 + test-project/package.json | 29 + test-project/playwright.config.ts | 80 + .../tests-examples/demo-todo-app.spec.ts | 437 +++ test-project/tests/example.spec.ts | 9 + test-project/tsconfig.json | 24 + test-project/version-bump.mjs | 14 + test-project/versions.json | 3 + tsconfig.json | 39 + typings/global.d.ts | 5 + .../test-framework-tester/.obsidian/app.json | 1 + .../.obsidian/appearance.json | 1 + .../.obsidian/core-plugins.json | 30 + .../.obsidian/graph.json | 22 + .../.obsidian/workspace.json | 185 ++ vault/test-framework-tester/Welcome.md | 5 + yarn.lock | 2510 +++++++++++++++++ 38 files changed, 4073 insertions(+) create mode 100644 .editorconfig create mode 100644 .gitattributes create mode 100644 .github/workflows/playwright.yml create mode 100644 .gitignore create mode 100644 .vscode/settings.json create mode 100644 .yarn/install-state.gz create mode 100644 .yarnrc.yml create mode 100644 README.md create mode 100644 package.json create mode 100644 src/fixtures.ts create mode 100644 src/index.ts create mode 100644 src/tester.ts create mode 100644 src/util.ts create mode 100644 test-project/.editorconfig create mode 100644 test-project/.eslintignore create mode 100644 test-project/.eslintrc create mode 100644 test-project/.gitignore create mode 100644 test-project/.npmrc create mode 100644 test-project/README.md create mode 100644 test-project/esbuild.config.mjs create mode 100644 test-project/main.ts create mode 100644 test-project/manifest.json create mode 100644 test-project/package.json create mode 100644 test-project/playwright.config.ts create mode 100644 test-project/tests-examples/demo-todo-app.spec.ts create mode 100644 test-project/tests/example.spec.ts create mode 100644 test-project/tsconfig.json create mode 100644 test-project/version-bump.mjs create mode 100644 test-project/versions.json create mode 100644 tsconfig.json create mode 100644 typings/global.d.ts create mode 100644 vault/test-framework-tester/.obsidian/app.json create mode 100644 vault/test-framework-tester/.obsidian/appearance.json create mode 100644 vault/test-framework-tester/.obsidian/core-plugins.json create mode 100644 vault/test-framework-tester/.obsidian/graph.json create mode 100644 vault/test-framework-tester/.obsidian/workspace.json create mode 100644 vault/test-framework-tester/Welcome.md create mode 100644 yarn.lock diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..39c930d --- /dev/null +++ b/.editorconfig @@ -0,0 +1,10 @@ +root = true + +[*] +end_of_line = lf +insert_final_newline = true + +[*.{js,json,yml,ts,tsx,jsx}] +charset = utf-8 +indent_style = tab +indent_size = 2 diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..af3ad12 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,4 @@ +/.yarn/** linguist-vendored +/.yarn/releases/* binary +/.yarn/plugins/**/* binary +/.pnp.* binary linguist-generated diff --git a/.github/workflows/playwright.yml b/.github/workflows/playwright.yml new file mode 100644 index 0000000..a94b641 --- /dev/null +++ b/.github/workflows/playwright.yml @@ -0,0 +1,27 @@ +name: Playwright Tests +on: + push: + branches: [ main, master ] + pull_request: + branches: [ main, master ] +jobs: + test: + timeout-minutes: 60 + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: lts/* + - name: Install dependencies + run: npm install -g yarn && yarn + - name: Install Playwright Browsers + run: yarn playwright install --with-deps + - name: Run Playwright tests + run: yarn playwright test + - uses: actions/upload-artifact@v4 + if: ${{ !cancelled() }} + with: + name: playwright-report + path: playwright-report/ + retention-days: 30 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..491fc35 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +node_modules +lib diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..adcf1ce --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "nuxt.isNuxtApp": false +} diff --git a/.yarn/install-state.gz b/.yarn/install-state.gz new file mode 100644 index 0000000000000000000000000000000000000000..5c1ac69ac44105db127b6f85fa7b68d4876670e7 GIT binary patch literal 197404 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

JQ6xOJ=Exj6J&CknVGmN5g{=u1^60?zH| z9&2Lui#?jx>|-;e$8PLI#)ig9%}{kckwTNpY=*fKSS0y_WWvCR({^|smr&F4%x%T2 zHZs2g5eF7`+b5WQmRcY;-Hsp=$XODT!k)zMW7BmzL87GfkkT&kyqtZkdj6*|a zQsX9!r=!!-iuZj({%8xK+Tr8SMH`U4{}SeSONMf=!I|ZmQZFf{Rcdi*t$`0vCsa&E z1;XipL*=)Ti$7#>7)I<6WJj4Yx%Z#PB>)~2`nbRtQ)Cs9nUpt(Q_c6YfxIy4L>j1* z1{%!KhepHZ8V1RiG_2eMonT9!)>}A( zNunucX3%$8;`J{EPYDaWybp`KYI_o-)c45Nxqz=Pf+2NlVE=$M64X$vh!7H%a; zw!+BX*}x5#L7Q)% z2@wJx5zH|hdTh*A?J|Ru$k?@H<0sv>l|*-;Pzs$xoO$e`v`@LevP$nPp76gGF{j(D z6#^4;^?u0vpy!cZQLl<|{G)k@gHhX}c4Qbt9Ur?k)fO>;<{k!T+K|!us7!!Vw*%N! z@-n-C5Zh!*V4mW+i`ur~&3Xox@cG~W&Wm4r|JB=fvH$($zqx)C@BiwJbIrl2=@hk8 z*Q_yS*r2tN|DzuT}`x-IX1Pmx6 z@Egv|J<~KV(Xz;-u6cbt=}uU|F3EGZ9J{SjiEdnASUNPJ+Mu|FCpd7(zWDBYfBR*m z7vFiaejG3U(p!7~dcR(8KKm-(fA#v!k3Ku^){o=2-@g0J7eDyot*@`%zWe&hpZbG* z@yqYx#JhOo@!|(u;QKF^$LB9!{F&d1ckf@nee>eG>1BGEUi|78>&=gTvVIi*EBX<^_%hz? zc;l}hZX1}-I@&CZm#1?$;^(sI4ADTSRVxMH&ZII^sGa7N@<=uV$hauCT%f-ZnvMd; z3}&rN2KPH9n_-;+nqh=b3&W$UjWzWwORxUpA5b0uv~qN~Ew~-NU~!}>)i~19kGwh$Ox_P|`hI+nX??w%r{ZCGdbb>~1VS4xT{lu&P zgsTY2usWfT>UqfZ%$|K!Hnkf|k~TDegzZu*mL~LCx@v^;ICh2PewKo1IzvmzF&9IY z_&9xS)0Amco{?uO>yS&!Tr<^;onQT@T*Y)URcAGF)Isui%v@Y5)neA-lU6SV5!9&< zI(zDIqLf@MuAkL!nX+g>1ZO=BD4lVd51`K0@cOjT{8aexwJ>Kh_7GfX=hc74RrE#V zYHXe7oW}4Yk;v7w6yiyTc;O*Bo%b#Lj4>mP%|z?&o!l<=2%i*@hGU>Dy~;+qrNI;& z1*9#Y`Pf?LO&KujET@r_u~+}#hxB-+*OAXyFyo2RY|m<^C*6AwibXm~JtB=#TuZB} z_kJoL_O8*@rA780sm)ZGDMTJVSBaX%z?ovzmAb4j*jbZZjVcl+!l?7rKm6h6zxv|O zei`xZZ+`gTeE!e9__H5AN&ilKwfN0H|M*XS^AG;Cy?*moKmX@`=hrTy_#AJHL@fiF zkLOhT@pdZ!3NT9?VUk!YM5?B@XtJncApKU%5(!tbus@7IsN{31U4@{6DR z==Gb&tMpTUh##)ff8nRAG;f#BzI^xg?}UH#!GfLt_$=6u?w+TlJ{A_F-BKyvx7XmO$mQv4w;X77CjMi^L z+#nY)4>3<3d)12}06*9Hi%QuyYc_QgYwMKm`Pl@;+F2J*xO_@v(^vlmSAjvPAzLjt zLyj6a?&7OZm>6Sc;vm?q2U?d#fnuf6?il-$VVHXF;L8SjHK-jXg#3sr&Q2-GG1>c4&#+mio= zt028yluWdC2EBthUCe#VK-Z8yDhWck+51j7HD;cpobEyMBC;Q;x{Iai7lSv?!d+M_ z5shYEkLV;(Qn-;NbH?rjWRPQzSO4gT_rA!8%Ubg~W*L(+drdb=GaG{&l;m$^WKu5} zDDICthg%teN=1_fRE6qiZ^duqj5i-kt~F>K8RlJzh3yET#hLk_rj=Ov)j$5>^Vp(& z{^x(*n>Y%l8vd!UD3e|rz~oi}fHe7FJnTYuv}_?!Qv4G{O%&*_GH@u$Cf?=Sw0y?*mo z_#fZ@>izq8_gnGq#jig6*2Awp|IWQFb?uyUq~WqsGz?WRrX4iYxj3-R6mmT>2}{vg z)|=gcl952M@c8snxAw7fuZE5V5i?r)gqEGrcYF$djPct;Z-3JNRc-PMw(ELyZ$9;> z_u;+yE8Lq8yRM(!oZtKUH~xTk=X0nb{I@^&{Fi=y&&Y>g@b~#&D z)3u&4643{y;g)-f;KMXT;($+-AmBfwy#W5znc5iu9rxDN7FkHy#M1 zU=$LbVUVadf%eLgg{jY+N{Qb3{iH^mSO4A5^I`aUhcW?=8=3RtaM$J_ho!)Z8tbIi zvuZ`}$4Q`SHxI%Lga^}1M}+JUu+ZU6$OuJSwQ;Usg&SqC5yexb6*W>C>CSqF=IMLP zM>qac?*bp~P`>|7`R4I$|I{DbNBfifvcD|fs?qT4Kln|L>o;arbgeb^wAF_uA7zYO z=c>`#<=6Svcf;TD1Td=J8G@l0#3=R04H!Sv_*_S1nU)XLHDYMT+ybp?2o?Hr@ow@{jGlIw_e9@f8tAJ zpMpA*5M!1~8#y8LsXdP^d*(H@LP{Eg)_-55K?vFlO$~2@)Hmt()|s{ySS<{aEb3O9 zZI2vn9zou5wF3BA_ilAzL2>`omzu@``-2U<6L!ur0BNI>+&nRK{vE(zg8#Vk4&{c! zaXIzmG|Rpm2;$=>utXXRQ=F9z4|Hl1Z!FF8<&WN;og;uCF)TA-4 z(MpLFaG7f zet+1%^3mP<_Qm(#e#z!$eet({=TE)(mp<|5_%y!#$3FkgxA({?tLoSc3ek%LbXIW_ zkG|7lh*?^dkqNS-N_&7J=gP1?Ly+)h1E>@yP1?0}sJmtCw=3yS9O%6E6dzo9gega^;CrgXW(8E_0aG=S+3_cSA0Zg z_e;LXqoa~ZwV!I4+0?Z~OV?NbqiJxEG`p#2-a34Ox zKfI4{dzr_}oaLua@h|`M_nuEd{_A(gHaV!hcg$T-_f%J}JvSA00lA_zkC|s@3Vn<_ z!F>{$`Pt!Au5%74Msg}^XSiB*u_rEzyS4=P^-%E0(9z8fQ>Gu4+Ml`~{^;HD z&)nBxZg&6XbwzEJ}dtYUJn?7t(Y;n)%D3*dhhIOtd#&kO4eWS{z*!9Rcq#<$ z2WnYM2A^Do(S#5(>1;d~TNzXi+e#frM+KPbC66{DhsKg~PA8VV&cWK3A;u8KfkisE zG>{AX7q`d#)F0eOH=MleFF$y#e)r+m&*z5wef78r=$E0^S83b}l#dY?NG=Mo`!qxr zU==*DL*?Bvkmux;bMKrdyi7(!%dOOp#$!u)8En@ooM)B5_Zr=yE9hm><$Pl7x*ty# zK6Ufx(QWywKY6oX`|Hmh_J5C8!YBUdK03CwmwA4xr}y=5JfBya? z&rAu>RZ1tXSXAV)kk6Z%8Q#_k-mJttl{QA-a&<4rF~oAVE;DsmLmX{z-CeXNw+&PX zDywC%Xd7v+=;I3GQ@2eX-E`mk@!KEAn@>~;p7ulgxP|<(%nujB?|uCn&+c}E>m6d$ z+^{puN=hDn8d0lST1##;P^9fuGdh)4C)NHL3Ff6SrRkx%^beRN0a%a*?N;{EzJejalL zvUSuHr^RgABUVM@;CoHb09|K|O|e4i=4gO-oBoEw9)c-}Z*?iKe-)ofh7; zzWO0#pF5M#YcPZjxCZ`w*nzds3=h?ADeDOtxu4E(KH%vN|6~c{hnChDj~h`>U6X!1 zO!G~-_oEu)6Mt-s{_r0LFcF0DSw@#7Vp1! z{pOqL;_rRA-o1~H-U3hkF@EALQ09k~sPBFK8-MV(0AkD9qOByll0n4pBRb7*B%*BU zifBS#i8}W542vYq!}0eL2w_{rUQLiYXx(hG@I2MCWvgk@3&#wMIc*&zRGV@yz-{fX z{+BylCV3&mD`R#z+XvpgZygWo9?mE>s*tkURxuugI84&DeT^Pa5@U%o7tYH*(;#-zl} zeGMv_JHfD9HLJp_T;`5Zy<@IkSZ{g(Zv^B7xR>B#Tzf7AUw-bQ!6f1->D52DS5b6B zFlB6K3QAa1c+p6kNemU|2VcFNRy5fF$2j|uo`CG-2o9M=y=IZN@@$yi6l;ff>9Zo- z-m{idc#Si(xrGQ^Yt=Y6zWRqhp!NT$NjpC|cMz5boyjY_Sfi90LZ0bmhiJ{UVl1MCLb`*Sy*EVc-M0+eHkCvCGzMM~P zF2DEn0`u{3hxN5JlAju_s`-Q!w`Z%p?s=}}plEMi%6I@K!U+Q`dITdPMu$wRkyyIh z!jKxo5I6hIx4e#`!YL7s7B@t5SBe)3AjZ0?nx28D@k*d^Amh-X)?HwwFFY@yl6tYKTR#yU9Z z3XKvQ&Qw(tM_t>fMS<%96|B}YC;Wu$TZ}?ZD%z~g9r%M&>=l-J1vrw7IzVMk40Y|J zFZ8J|=W*%lXFiv6=bECQ=xg$_co@B*kah4IpBV7TV&~j>?`$-7CpogEF|amQ%mCgB zxXyOn7uX$E={N;(`(fr1g}>^YsVt4_QiiF#O8@3-{7Vmml7IQ{{k^~Zs{ii)8oxU{ z`P6-tUz|42$KP?EFkssd_-*Z!(+@x{#+N`*mbtpE+(Yv+e4@m-wUx;M%^IoxW~Fx; z+)|45dWs(bQCHFdbh}PT*&5BqGZy+&;1t5NR-a*ifWf*Cey~TQbU*xhl--YK(oI42IcgLlkW0P;GT` zcy*{`eee*NUXVd)8z5$ZZokd)(NxyeLt)8GF1%k|X`R8AsF#g*8SN`?i zSnq%1ui>kd^v5N6TP#*T$tPL~JH;z6s_8f`+TMnQb48FA?PJ9D-n5mjwnB;+YKfd| zfRfNXjW|ZakT)2qD9840p61@8IcElFj%?cmZ4(8{$J?GKKKcBfN96B*vO)ROpW+|Y z3Hc9U9Ic0pVpih}JedQWF+kWg@hga4A<<=*E@{2PUz`DHea@RblLR^lO;*^ZHKJin zPVd+aZ3{b$UiUIXz76o7a=Z1_(`fB+SNy2~7{BNJ_rr%@{S0i=Q-7NOKdRI`j=4SY z<^0|^&i&_~{dm1uKZjR^+e=6CU$Yr!zR5`YeK>TFZ8*YcgoF>Y)Mqt*}Pdl@f>G92;@Pqs2?(?m#Qn7KO z|1*GN;%7`8ekgNrbo)>#K&0TZFP~i306<4!3Fb7PaT7otdQ&jHFCJ?}G^2_qucb)H zI5wjsRcmf_PUhy~)&E8r%8LzlBenNAbDg`SgFf-FsUa?i*eV6BhrOz7X6-cZrPy1= zT5ooOIAM5Mb)@MS6Bk5!m`E_*D~pXJ!?u}vseK~uGsiwuU;XdTp&0gfjPi*u=kXZj z4*SWEK6RwcQb=(ES059d_aP1Kk{csJMx=T5F^QO@T4b+X3#LGR=QKxn&uaBIJkm-VGQ9AQ(WDb&-h+kzK^tfH&N znahjD#6CNROr4djy^a;l+bqbBljP)k>S=D8JrOiXK(tq zm1~K-+pGWMBFXr^T-Ng1Hx?}2LNmFbRoQz<7HwsD7KHF;o?3IkqS3J?`l@>v?oTNe z*o;pcx_m}DhmfSAIGH@5go5CI@7c6&Uy^XDzxqd9McdAgKAnMzeeIjMZd6uz2<&(4 zL8l$3hJ-+dlHRIAlIE0r(=lG!PnK~LK82FX0-arsP~1ub$Y8cf6Y}VW>QYk`TV<_1 zUj5_ySxk#Fiv&!4-zKxIq0zk`WQUOo=OI@*T9B^7EHj!rxphi7fj9ER zwz13ces=S`Gtf-w8=($ez^o;;8-yGyzxqEfo(&VrOws1G@0pWD#tJ<**3}--J#|FR zeWk*oJMGN(+puXY^Z*)VDRRprRuyvgN~~u!Ez}8D{>yO;gHh8|r&vi#J*UX~)&KQ_ z&;Nx#sd@jguX!)2f`MDH3gv*EjOFgqC<0!FesoT##6V5{-k5|CmpNj(NuWm9jjmcId!c5@<&anM_Y`aYlrLm-%f_i?u1N_ z4i4mTynwu@PPB_iLOW62n|hOo+%KNVd9OOg)-q)@+=tfLgo&QLLeoKO+N73k%<&9| zq`;A+>2%hUC8xW}M~Td*9>4u`0R5|Y_c3Yhi9fiHYOLvHsW0aTHP)|x;}2eAl~vZJ z#Gf3nV|p$|qy9qm;^Dm60@dH$gb1!^?c!ad@6Jw2!1c zPy3mDA{km=_HQLa`Ss7?j<-@dD7zl8Zl!THKR)q}SC*Gka!PGZsTRiBqWKs*)tarf zoOsi0gmkN+vZ zF4q}5k3loiyhamwy!U_V%lYJj{cG=k^5vIr-+lG|Gk^QV+fVKLYvfr9tMuBZ8>Z?$ z+RE%3ck+$U?aay^7MMiIHGylsg-p!b+ooXWB*55n+h?b0+h9^fscXPE%uePHgZYl_ zfYEBNwQKkGm=xBgo$XQ2)RbyA?_iVINmprY#VKdEHUtlFPF;7|9qFUMlrG>pQz8&6 zp7>V~j8_&39yc`-hCF_`dcIqC0kw$X5tLc#{V|Q>sW0czV)T1|ofdJFK3cC$R7;Ga zDbFOuOK`NdqQ|v$skdOvNXpF}w4M8wlwda^n+^^&=ChCw9LF|c;U=)DXy{t**e7MK zWxZGHxp{Xk_=9cXcYa^n!bd;cqut!U`1Nk?pY(?S!9YI09#O%bx`Fo#-VuHD%6sZh z^N+BV{?tP^zo0WfpJ0qW^%&64XrYgYBFgOC>h3K%y7R+JsajgaX?v8myquHfOu6sL zDLqeguGU7>F}>&7Fm_L^t$NFAmAU)$*;BL_!)p^WWTF)IWGo+t6m(tZ)&KkZps@W@ zd)~~@k^vI7eq0UqB;36s?s{?`$HA6vY7Z-Cq{h{K@ac~@2mE`KB)evimDaV%8QRiJ ztyiD9)XcvNMLyNN)7D*~2AX)%k4#<9xSH~qkpILV+&|5T<|V!S{zf$Kzw$7mNiQVz zKQ7=H_Y1x=trKaX^c7=T_d55zGj)U@|*hf#y^Hz08zO#Gwaz@CrZPBR=)e!lN7gFP@*g@rT>wvv;vSvoDta=4W5M zi;wUMPyIQ50+F9Sq$_;);n&aSF8!upB5hY&Dfc>NJ>Hf{-`eLwEs#pNu*mpYLGGic zS(dGXJZ4F4vp0s=Fah1ny ziPt}R^9h#6Q-5fm@I`$)LazTT5%NC*f{f$)Zs+vpL#Y^KX zF=DL)b-m}3)?5K7x}JS|kh$w_+uQ%g-h1`hmL*qu5UDDfx}|QA6dTZ!zz02bCL^Ya z8BqcW{tLaG!kl5Uu9yyaGmBN=i@enG-h1!$hXm+ZrsciISSRg1Cs~Hc+Bew=0z@6N z^Q^n(TGK>~@r_!-)dy{FC*3mHS@`PQc8fmqG#bK)9=$!p+*_4&^RWHO2l-b1=>7Mf z=+Ezb*Pg*rwi_&EdmYv12or72V7nhSw3BjeqOPZ8=cYbsWm<~zc0kQty7eRJh@3w? zt}n02pZi4i!&dH1ea;0vgBCaF0?-^CjdYK_cbT7wd%tg=wtK73Zl|_a`OXiYo{aB( z)1EwR>m~|sy>5n_Pj2LQvAcWx-=86h&ddhx$)n1-F=VE-qh}wjf*W=rX@gErQUfsz zKOPJo@o3W8JLN<(v3=-?0*qKzfnR-m+FBHigMM2umdf>apG zl?7MCuEUFk`aaqFV_fvwwD%(K13CZ{{&3*XlqYq!c z{p4x8_g#BZdhTyF{zB>b<8S=wOV9TPaX$|=OSaPlilZ3<>9S+x)uLgvs3 zKwoKRHBiA~p3zz?;O##d%D?j0{r>N@H}z3k`TM{3H(%$DT?{>v8k-y!l$5 z`TFFC`_pf%n_pNT|H9AQ@coGbyto5354mUgzZi*l1@hhL2cTp!e z1E!5RMCKtLN)Gc20DRpRkegC!BHRjZRc`}6k~5)RLo0{T0*a0Nv`L$9%Wh)cl}mRR zyfh*RSv<99Mud_`Ol`f!5IaL*P?^3~b>uez_BL_wWM4_JI@;cd)kB6-c7|2cQd{Wg z`?Q_gJDuvDeV=)t6Sv#5=?`B%7lnQAoA!&@s6oGOtuB{gjKPDM4iq@kbCzsHm2nS} zt})icT)C2tQ=Y~}5~yTq@5k5DW@8-2(Yo3wLJyGa)SPEpAsaktmLuh=b)vRUgw6i& zUtLBupKRS_F9NAMM4kF!P9xIU&PIY}FB;yL*gV@uwANvQVF5xjk&wQkLs}i!r39$) z7YsIFp>#i+at6~rXrOa2vWQw~Kc(^TU*jqeIOn6f?SLnyt4%h6n>R&@hU7t#`G5j0 z8$v5BJM6y=zD2(G_~a^u8VWHoXh}T$)$d$b|2D=&0GNB~tO^^zkW1xmW_wti-thE*)TfBQ z#AzL5^-%_FK+-&YZ?3%!M-^E}mT%s*dDfzmgNmXe5vq}D1ND=U(W7ee@ZVlO<(>uF zBX4*p1`0q3am^{o06!Y5tl%XzvauI7YGZXP7epf;x7oGL)GXPpuzkbdpCm2Gr}Ajs zK^1kZJ`J&)t7gqB-g~wE@ZaGom@c7-hS0V^GiT{m>#HqRk~3yM^TdQue8>s2wW`g* zbr1$=K82t+IA^%Qy#6O^LGw|S^m6U;=QF;UtO;HVd`0sHQ)Vc{f(PZu1 z7y}k{oHWppXtf4RU$fyrNoxf(4}Dte#z>juzRGAB4@J5mU!K2ZWy>i0U%qoiY|@cAhlb1O zYFLUL67-sdIE7fN%N(1^Y$f79JKk9r$nv_U*$kT%Z~)OD;PT8M+4iI_5o+JHw%-BM#DG3Ngbu^Va6=!Kh% z)4H~7W{5d^_}{NJRgRp6oMb+*La@mRp{gpC22-=`aRw)r)U(*7sIN9pw7mN$1hW0Zl!wQ(UESBlajIlvw9N{S*zUV;%RIde zIApt3J^Y`Ks~HXwLk`KjT(SXSW=9;z2u`*sx!H;+_t>M2HmOhwv8gWNOy>&d?b%pp zhLDHC{4I0Wj4;}0uiz|LYo&llZStXSS6gm6%^Q5ICWBBqSD$ zj&gEaj%I|U>85~)WNRzZU9r?d@5qUhn&(D`&3d$@oYj}ChRGNaOK>>OskLDp3ATs- z`#azJTb?gcsC!!aOosJXgJFWnvunye&2nF5`{QG#sp{+$ywD`Z#BB5G{+X^myXunG zrOg3&(U#$R&V;L6R&66)pg`ww_^3p&Av^mP-*xZH`J_nkBIB)m=L&_jSkr7Y9S323l`CNiEyU0senbYqt~jw@Y|?CYOgzY|>B!GK zXI8u3T&zfYX>-xD+NP6=)U~~kl%8&u-fn6XC~>6s!Fw&INuv;9(ud6gR2zO$gu5XM zPFQ@7Myol^TFwoPvO}sO9<^d4OJp)uKI|>I5Rhy$QAIL@g#@aYYtiy-9W&|^J@~yZ z=lSI5&kyeRzyIv8+QhO0pujr3FcVViy4Iev^(mBVwcd9QR&RlQ$e8q)X-Yn3AF|g* z8hmqGoH2_60alRr?2VXnM;REB@Di7eWGifhI4G*wzLojUAk;m!v>4dDwmmy0l(bcn zqmfq*Y>Wihv2)tSmgK52W521ZPCuxOW#&5GriqS}y|E@}uFgGmP*)v7Q$}BMMl8g* zwbCasBzL}?XNUFIez4zv|Hp5{d(Vw$z&9P?an7*Dz3~`_v=m9xiqga5F@5hH1AAFz z^jS3V>`HbdzTyCtNlATzu>@t$#z~hJ_nd19Qe@AHrQ1lzu^9UDN!sidtbi1Yw)Y&< zbstJBcxeb271=|eD3V+U3h=@{t?S_4L9U?38&owNZgVN#)_axlZf%UnjXHQuB;)RC z*zKS?vb1f4PEDku-j3(JFX!3u{MO(8>iMyBL-gsyYgNl+X7KTbWH^rsld*~qmQB^O z^{Nz;IPH^-X9@dkkkQCm5FIe;3AE6D8yox9ovZfn<_IB(?3Nt1G4_nMZIhd^ym$2R z*C&bj8T*asmZdvwVFm4ma5rcl>yg=jmrs{QHdN>-koj|v5=hZzgZ>>mdKRZKa+e+i z2=d6?R}J6;;`qW2*aeD#5j3{Msfs2=@#$;%n-8p?818@n_Zod_xo_wn$Lh^MPKk!h zUw2cSiFW#;i16JLojeeM^bGU0Hx(?I-C z^o^D>q)y7z+x^kKFX!38{R@w!)bD@)eDK~MJx|M6vo#zv9bQJVL@oab9}pN#59FP|CESpk{?_UUB@&X~mOudlOqT4NxF}>)vo(TEpx*mYHhOb@;;;Jg!*J{3xdW2VeDj_9p`E$a;3}k z=+{nQPO-H{w?0?*M1G_4nZPWfIa)Su2lU>T^T~jI(&YG9F7V~=XX{&dtA)j$!)SC` zQtj*v*@!T$sh66h3-KE12$P1_7Oj888%`S$mH?j&L{P0`Nm61#b7ixFIEGcO?8j!*Kr9gLZl+pkEt zHYHn4X|hjDz8Ja6vSemgk-ge#(!ps$0iD{SkweRc24d45QL>DiZ4I%C@w z=qY8)t}7Eo2Jqdk{mz~Ops;gall;tf8emJCD$X7a|GqUkOlG~!;?Ap+q7^*bCDbhQ zN@^Teo+(w*90Mf0W_YKc8O?<~MVqJ4TK3hK?q&-~hDgXn<}SKt1LejTL#g|@+AF}H z>dqXejZNHyTN5^Pu$#425K;@uwF6$tI=GE}K!99Al!v;p^198Dz4ztZG$a4Sql=1! z5l$q2dJj4y($6`vxo5P-L)w-zXrmf;;;M9@j;$M1=-svLrL`HI$~v|5Ou$D*`1R5P zOw>migMw!yTk_1*k*CwzPaNl1Y5_BZZ@M4CS?{p6hM>r{3e@W1+Rw1Qa?A`Uc|}hW z0`dB&HeuQY&z7(+fm=MQDKsLr1REQnfs2fpXnUpMzty$1xyHDCFYkRhxA==MJG3N~ zb)*bJ9|ohzgaz4cV7+d8FHiwWRlv#;GvJAOy6yo`EC`gcrUqCSXiOBce#N)2PFlDk zgY>>H+CF?BExq<+PKRkF_zUF5@BQ}Aq&xVFfAIN&$?yK~og1t9cRto7V2^+EqrdP6 zkJHufe!TSD{P@>D`SC|DZ+`OG8*%f4#~Xa}&A;>s*XX9ObMtGz{qe8e>{q{pgY?<{ z=jIpw;>W-6WtaHkQ#m)=BFUBD#P_RP+;}qj1Kx6v za}ud{5zY1>tv+J8xgudrz_)82WNHz6&L!}=OJcup8f@|Gi#!l{Q4>kTg5>q)z^1fC zkb8YiBRB7T+dePc_}d;$sh?cx$ClJ9bMs3rsh|Av=M1UW2ObTn*dZ2w6X5x?>W8cK z$hOb)6VbH6>xOdfMtwmq+$&Y>iI`!uu)WjeQ@6FF3)JHrblIOqZX11;_MssC1v=!t zodmh1W<&SO`*Z*V6mYpg>q%|q-ie4mkxcN#A3SH7xc43X25a#R*5c0#*5bBud*{pf zi39xNhc92f{P4XG-uT1(@pI#hc5}^HtdRLh&3%dzT5|)sP`O19TWCoS8c^wVUTWKg z5ex&9jX9(!%s~3KsLdyRI`!>fHMW_F;}aWXf|1Q+A@m;ZtvdB(<9u)J($|96_w`A= zXglK4IQ86Q?tLy`!DKE>F{WLb;!h4v-7}k8Xt+;5*G3b5K}UN;gt5K=_&af^+iQUL z&LEVCZoGZALRN>41u#%_38jyR|L2mTO()3iH@9@ObAgV>3@1|*t^$y)*I5NWnm5u} z-Iy%as07w-EfZ6Q5_J0*DFko$u_e$(K{+&-8YCadY^MiwAYvOPmy~+=e_w~ZiLZwN z`I)H-yQWppRgKfM_2CPL{?mAky4Zek0#2jXkIl+UWll3XDlFVj;H)xW4dR9869!|Ez%F${B-i^sJE0bYWA_rU(Kx-djZy@h zLDD=Uc4y$%KAo(-a}DUDzwM8|^}WC08*kV*-mq`HVP79K`_E>{`f@b;Pc&=Yus5-3 zp8`X}=nIm?(LlOX<6LKxT7 z+Js6@gDe*Zb@b)Jt2=iuenL~fcV^yCJc?X5{*7nd&-cESzrYH`y+Z|Wk$L>5i(H?wJ2uyqkZk&js~4`y3AI6S`3;qq5a)~>I{y!gU+!w z8cg%r5#cn(^djnI11E8uoX%!irkZ8vo0IEb6DQYuZ>PW6-G8;a`)_}faroyxFCU-41x-mzp~*OWAez-CovXmJNJ>$3{_a=PM&Y@&3QY8`d4*+^5@oZER0Dc30o6;}y(=GX&>_h&(4ip!!2UhJ^p$gKiMjU?_nQ;VC1lqr6*N~T_AA0?`aT*m2sY=-c$G`k zNQVgWz4{rLrdFLnqlwxqH#G&LP)cvB4EI)|-AWEI54`c#kDoxZ?|s{z%xg?vq-KBn z<8OQgn8h(^uYp7b$;3&6#&O-$&ha5mz=X`&I1t7RSY`K$J$03zW?MWPO^#X6kDWlZ zG&W#OGk|VgT0@EhmaYv_i*|&Tqc*nBI{xr?ytpEj;F$3#U{KIrOmn(#1H}d*A1fHAcc{xDKBjT}Lm=NJb@GU3GcY;I=?5_U+`2abUx*wcV=6xp?j)&xnrkC6&pw zxH$}{2~vnaH;{ToU0riC)ntpF^6+=PxN0}OXkBHfZYH9u_(Dw)KtC8A=4imhZtEA# z47*LF+E+E3O_n0E!debRb#{rC!^SxYOg${k)luiaiYYlPmk_+WwgJWAhrb(FQJ^xx zQz8XFcQ~9P5$X*K%@jX7&M7QHHuVf%s&hJ(jSh3g3541EI(uzMDdrix5dl+RZl2!E znt{5CI6gxTpuS9{!v}PbD0eP$NgLaHtXVDBISCV_V0mamkY+Ba@Til{zT9|-=>)R` ze#jX>>nH64KQnT4QXc-k7q5W={CUG?x+UVQJjzB&s0XA99^00;h)uRbHeGqqvHJX4!NOFMl) zOuO`4$GT|hz~69-@~RT6HTjq<5X}zQZF5Z0;cSMg%_1F%Ivy2m#>a_#cZI$MC^|&% z97ycJH9vaWEx0qA_qJQ`;j6b_o+rM6JKwXXi};&7KA-CI?T^3l+OfHhQrL(y=Y{%e zM{Cd17fCc4-4C6G9knT#Ra+2Qm}yWzF&f0oa(X`tg6|4UBZ=f*LJepPFXZkJN+>gc z)xfDPP|v#(4!hn;&+ZLnyM5Z;-yi+G%R@XqMH+s4_e595t|_lHk{R_=V)o=NptH>p1BbxieXIIGjpIQ!(v zrGlN7$I*5MbsT@-$QhCfoLHZFAvHH3`f$UKu}+^|*6=1E-t4gG;Em~-X1f)(w=4)b zXNQOZdBS=YRuQLLv+}(Wi??Rw4`06f9Ixo5IA36%XqVvcFpkbqBb`p_Dm~_tW2Z<$u zX(LAg7K4m1NOeH&jV*H9k-9fb^S1ti=PiGf{$%TR=iBz=aicf;7xEY%zkcl=w`hWL zm9h$VvR%jL7)YW&)uDs|Id9DxT}EsH$Xo)Ayg-w0vIe^TN}KmKH^3OTL+H_<)tWBQ zRK)CgR3|V!L*{5pkKoYvL^XDAYU*>3+xzdm_xA1McJJHvb&dZVQ`|j)gF&X{;BJ)G zPz1Avn)vF2oRz!nQ3fzJN-PsX4Tm#BrU+tc+*AhuiV=&V*|9#52ob13=GnWpLj93@ z#y-m?d9-!Ace^(p_vUf?4j#7;_RDwAdw+EM#NGSOJ@dqUF_n>D&s4^Ht2w`>ve?_U z?Y%Xzzqqz-aa+qXTM}R?=BIJ*bFvSuKF<(a@L?3PT6-kpo1r-bK z(WXRiHO@MwjIz34ikFddg!t(?=9zPg!=@kW;UBz8`g)>E%BC^*rRkbW5x2@$7htwE z(T6dtW_+|3lwOOh5>k673Gzg$uMA!1%pSDO5HZ~=K%1E~opwl8)RA2@hQ{1y3);E2 zWSx6o&QE-7zkB`sjd%9D`>kh9e$=-_(~P!u_k>0X#m6%|G1ddpC2*QTZ8-Ww8@th{ zk*g`*w{#Fs6B&Tq6x05M;7+sq7^uyFp;bC5p%N92y-+Jcv89>kmo<^^-Io7GCGcmg z61X?#*}lQ`E3f>_Lr>9rO?}BtfGG>%%{U#Y0-6JDl40#5`O= zuraqwKGC6rV&7A`sX@F4l;K>U+;K`SgdgF+G;u(Rwl%F+FfLrZky-3PIsKeEBM}iJ z4UsplW4fJo^5GwT@x2${$l?Fo%i-@WSN^)Hr?D@jT$O7Z7DeJ{1~bbksD~=GMzjp( zh4nRrqKdpmY}K7@_uL|wt%#cB2%uJ}c3Tv_&>nXfuqJ}geCOsv+E#0+SBYVLGK_!I zgM0$IepsLWFMR}F|BUX}KS^fkcqI8I_-opW4p#Jp`y-#hW`d7A5Y z-~S*#{P4$b)O#Piv!6s0-uo8*!lDW9U7`6J6^x#t#ct_MV7XI06j~C-v9=R?sdJe{ z1B&^a!xKDkNBYoNYUc>IG0vK6_uT@aM%^X}1-Hxnvr{U?ZQ}43Xeie@#hrGSR(Trn z7p;$1f#{FF_0@y@dQjV|5#ELzeObyJiY7qCUMqpp5y&sv9*VFg^D)p*qDfkNU?Y^g zkmQv80J(||!qKsg0in7ttw}19D&|>NMq-)SK_-YiDJtGOukiW#NFmSeW@<~joj4c`*tC5!-4W1YoeK++|bT#|oK^e3# z-%3J%$Gc`{+I{7W-mY{otk0=RIQBgJBQO389(#^3YuNJjc2LR9InWKZbxtgw5H9wa zwWL=ro7nkSxa(%otEmqk5yvJCs9hTxzFS4<6prYtkYv+9tZ!Fv%IapSAWU;U(cIiS zj`3z{eDThH>!rW(>cbCSzWdgb2mj8u?(+}+cRubG(wqD_@y)M%@|{2Z!*5jw*Kw3` zBLyT#dn{#h@O+Wt+r3Xr?7W*H@h-|0wggY@JOtAWqL>?2Ke&acXd<|a_KLocW#PF ze(#CE@!ogs$%H@Nq%TbPk6-`kpZVn|Y$R`2(Ael8Xq>zREsC0`ZOB00P)t`NpVkFb zW!FyC`x*km!{t&yemCB1X&Iy0imO#tGaM&pzzY;fECtDXOtUF^{NW$_GkE5w>{!^o ziMh8DlG+Y}Mh`=5rN-XM6N!1F2a>KwR^)~%i`J}pVl02;a60VppgpfJ2Bho2V@ueK3~3%~%+bWpEZG~A;%HMO zAZgi45!&EGS*>^8MWUL#C|{OG?r}2G2=SIZXR$|W3Rc+=(|eUbwgw^+Xb6hSgw((BBxL@gt+HS6z}vH z_dcrTjL@Ep)$sQG%Wt;Fy4qK}E)cVq@a7A0bOoZJVG~t2v~0#YK9=O^iTq4Fa0pVa z4k5x$XLwi^dYWlIbvfs8?JFk5*vL1)3AIl632n>9CW&<+-&!+!BC5G_!tu@1@tc42 zgCD=~^3@xcMFxw*Gv|SO-@#{Ahkheg?O%;|(`%;?tAe&A02&oEL+v!H7DN-lY}I#6 zL1adqtvIVOxK9NGeGZ*uHMO5ZWZlO?091JGex|~1izp=+8T%B6Gj#T>J*?M>hkyL? z=&_DOHm6LuezNPJ$x6_XTBaCB1#|#w>9RH|hV2n2y|s3ngtoRF1KsJw*3yt8TTz=F zRZ5N?NE&M#VjIe6Ht7SjU9PnA@K3z>3g5!#pRjNH+b=(JW9>d=`^q8Rqcyw*O8W{G zy*Ayf(OT`<&t8S18t=ixaV9j7b1a-M*UDAR4?#JBO)F79m#K0zFw;&Tz_!=q)_^2* zGo)cRqT31l-p=*gSM;%I@W!76j=1+7e8#^pzOaFN{Q9-izoGvyg9QO*OsCAc6~TRd zkPZuR3Z~dTp<@trB!(r~RhW(;3)Pk8BjK1Ir^cLPqAJ-}fy#rlGXV>1GRi?p;(eSrM5l%X-~&)?|ibkPwBJm>fx`3NM*^%j7vRS?0q(a{(5N5LJqx z;NDZ$#%`^a_eGhI%2`dOlGxq{&w32>6)vcRPzUv+z8dsas&wfJtexKXG;h{-LqcdA z%QMwBPCz?``zrUgndIT0y{`o%`sAx!F%f>!FB35ES}^`Ph?lEC3+~I;kQRN^vV?dl z8R?Etqrmc4vCeq-=db4i^*CQg5G&9O-Q2Ya`OkhSGo#J!aPK3w6XCxLbO~I;($HQB z$^){W^&%LkcaPlxR5{=S3?W9Dm!#%OhA|nPP48C{crSVQ7aoQa>oEtnsU#8UjgSSXZA*ubpa3Ay zvV+4RYeuJse-T&Vm~+%%`RAyWbM|fHs*56a)t8@XJ7$Xs4Y9XX8VN7swi9g&$^<2P z>OlXobnv>WKCoCM2n{Ig`<`Pr(ltcS&W_>$!JQ-z|I#J2x^#xC_jy$`+|fxm)XyHm zs6dnu_Rfftx7PYhMBT11D&>ipu}z%<&4B4HTv^``_6v9z2(*`gehqQziC2e0vq4r{ zJiW)mzx?7+PEw0F4;cbWve5>9AvkS47c!Q>xhOm&Z5)%SYC3l9Gf6g zyJMpt2=c|wUUz^>6FKIPJ^N^@JE$TF%|Rdg;a|a3=xor_7Us$|14*(IpzJN_Lo-Qr z456&mC=3RiGzDuR`_gbg6<82$2S*tSeNeR%tkA2^7)bjz8*QUL0L2SFW99+1_?kiw z|LV1l*oDL7q$8EeT`~qLNxR1`Inc&~YVugASzX=h*v4F*8|RHqz4tAU9&pb7*N2@zIE$q!zw+nV$x_8xR?&C z2_NYpklZ3l6swy|Gy|H0!;%2y8eT&uo?Cqar!%%~HC2)o3gy^S7E+>j1}u`$4)Igkisn6~1WsAB=t390u!Or1}wIe2(S7_?vu zkRixT8AIoWe3XF7=~KX$qnHo>#`Sb+^zyZfu)VQF!x`)p^po)T`7EhO)L#lvkfqS0 z*rD9fZPw}y1Q4(~Xkf}8?bL+u`Uo_?(ctO2R_FtW4$00w^jJH?+Rlf6^8&Jz?SKWK;A*g2}Eh9D|bkpqYz39A?vh(DkCJV z+IK*`srZK&@n~PHpU}B0C^AP zwGpnpU|T+y4z)UOm`I0lo8ZQXlIoh+Qws;d{qXNz>xfCuSl-5%3ytN|up;7? zoJD=bBCwLOo!!E@KFPR;R-jr$cq>~n3bp_4VJkLeLfJc$&%%!91ZO88(hpG$Z`qmS zs4mTifA7Wj{_;?8E@@Bi^HfA5!m=eM8xtc;)X(@+2MkACXU{*9l0_AzhtXZpjxdHdm?{_lSF zFRl+V&#RyJU;N3ZfBL`t8=rpm?U(O<^rN3)lz!{!Cx4Dx_4wJBySJbDRy}_7?f2e$ z_pP7$5C5f`Prvi>{Z}&b?Vt1C{Qmp?bByuhXFquP%76HCjPc{AUv;A&{hVX`(?1=b zjnljN;m`J9eRjd`y`S&?ybtB8kKTRn)z9@;|LEnrz5SdI<>P06hKKSuZa(@`U-0+- z@=q$+epdGZJ?rByKCabDg4<$nTW*7nR`#$hSfJHpnN6->VrCoTs9@*SY2);0Ej9z# z!p#zUtqy*&orvtI;w}w-BS5ND6F_Kob?hMnMp z?WZ)pq|N@$d;W({+wAwgcfYVU`@Kb;Umwls)3)s0Wv9$OW1B~nFCV)u z+m~7!Llq|96^(MEbFEA~iFTsqSAC$JK&)gPEKVp?CNx6+sea?d)$xDSaPpUj!&IPW z0oR3~K*CVk!PIXXQ+O>L5z7-WF{f-w4R4AVi0nqKC$iO)I!daziAx;4YIxDXtTYOn zQ#4>LUsaXt=e!Mj!dBT4zoy&aT_uHUhsQRwf)`4h z2i2p%>(_S>EUqLz!0a5A0IgOT?>#3VFmP&G32H4uwE>z;s$iQr!s4L3DrADP4$a$S z7(7Ve>2DnSl~!OzhoJWtX(5!Rr#hjBFssI{hNA442)!c6zMFWj1#ir>D{mpr;UpkQ zHxL;e_}PKxz^ODie|h6O2L*g z1!}Tl);bXC#O;XQdw2A8-mEEV=L3%jrx&_Cz6JwmzbJ;p(E|~!Bibc5#X%$q;^GJ; z{2cI{+k(AzF+o3sQ7p1GbO6q$*-}-E$wl-*m4b4;? z+_(x>{p8(swni54qJfZu-5)V(-C%(mRD1-Z!=)YS(CC8%5{OCJxd7=zJ9|6Z6;89% zx$o|M^v(0?62V7pH^X`F%emPieaU*+AkP6iHh_?dM&RRd;vu0DWd@Ud(*!XeO|;f_ zSnJx19m-WSB}mw2v<`C!H17~yrFNOoFMbNV)<|^4KkB#~(G`XGF3S339KZblE!%vI zZOR~-Lk`L8WkLb6d#BZ7fNpM6ax>)FxyK%Dv`GbjicNJ9XF5Qpe>N7njZ?j-TvJBa&89l%a+SFCX3saZroH2!s#`b79d0wg6w+t zm~&1UVGBK-HTJPKD=0M{yUI}5?Ue>nooR3AYmB~?%D1p%&_+iR2Euz=2AadQMCWHC zIX`xazxbJ);&?!B5}B@l>dp6l<6}el=T@4V-}v>9f8*(Y?>nFS?2Q%u*S}~*@2z*C z*5OoO8cp|R5G)5|4K8TvR|Z4a2o?f#le&N;UuR9T?xX>6N-3J$HP5jDY>dp1^j=oI6r7br!Z%YlukYZf1K}oZiA(L7u9kL%g#DezZ}R z0Fcu>eQ&P4Eslw-B;;3iZJsb{$+7ID!q_FKHe{plknDJpo?jV$_0_xk{Z~JD@2Ly@ z&Ufz@R_(brBH-aa_@*@Q=d?8N8rUhmad&)$?vCdwJ%2iP$DJ)nUnfJ?t*ztUZmz#p z)~Bx{QRnG|a(AfC^L>eE4MJTxwfs6P!nWbl^3>si<2D0wE=V0A+O%5H5s8Payba}6 zPo1^eMOnnThNvL$Avv7ktb1r}?eOwef{I7N0t%YWmih1>zIYADH{XDGzH$)HSH4sM z2fEg1>Z69Q4e&+vL)A95)z@rGHyu=z0WY?}(ub^$x-AIQKx@JVp-1+S%lbDVSXNO!lVX13Ro{@V872alL(ssP+cWD_`vOh=@$1*l z+e9O3Og)_z=n@lRy9gp}wPi7Qvb_WpQ*|K&345Kz)C=iybYgWr8muG0z-W8!wctjO zG+)qJ2&4*&W4o`ct;>5!@B1Rd-e$AhJCgE=tL{hdzxQsw`{B#|_8VvWAHG-hWQTO; zJNS&Nj=%8aJ%0V#J$Y@MgRZB5aZ(Eo=QL>VC7f~4fEh!H0g3ccjII>5X=_@-cxm(S zWiz<^LTU?6B!VMu?Xj6VV2=Ok8dGlH1kr&Hd^WAEc{ymrsr2$>Bh^MGLf$b{Q*!N5TS3Ta7*s75uXEOwZ;6%k!A zlE*RgO@n&pS%`!{k*$e(3x+j?orkW$)@Hiq%mI3=X}8fgo+`bqRo*+|^fs#H{SV&r zH{O2liMRjWx9u6`(HDa=#_JiJ(GtDLqt(5wIocfAGWPCHZ6Jf!t%D3^=*_QlT*J0; z+hUX9c6_v346gG_-l7ZT==CA2(aKPg67-B|v(Fhr zd;r3}kAeE*&8zLWjd{EG<=l4K{RjKya|OXGYg5{3lC#%T6ajWMUkI-hSe+fKgwJAo zlqgMNn8y;`^9^VL+^y(EG>_a^3Ql=88Ejw;K={;ls~FTFf}B!0RU(`$Z#oPUN1w09Z>8fn$hB1IGe35fstGR^qn8zuuHd zC3}y);siom=A3(im5D>vCO^o|;AB6r8Sk;7kZ0mGPTr~*3y6e0jsO7y8>m<`cl7bC zHrMhRI>yN59psRq{Y=VmxUXA=Im7%4gKO6@E*OhW-Ag1Kwfe?&oiY}f2D@*|JiS5C za=O(mAobTUn_s}Dr#++l-nU;IDAH&V!ws9F-Ww;3;IukJs+Z9a{nAF4vtsp_dl{c` z1z$FSST}eNAe1J~aEGUntz#%-MJTm10_hV>gb5h)f^&>wo^9L$G#jCHcX@vP;}2~^)6$Ru%Oh3zFJZPL-2jcwIfgtQvYG#v|ARvtq(n*dWc zXN>@!%X-8ZVZ9Yvhm&Hh04OI!`YGP$;XnWGYarx%_%FWu6;9}%pRB(7>HmE5oloI% z8BIi+7%nVZBI4&FJOET>d)e%C07a2ym?g7xQ-o~L&w~osfjXFV5eO!&_t}xjmN@P- zY|Ui!m`IHuKn&~wphIunJas>Dk=*<4KP#iWRj%FnmOYu}=bPhA``j%5`1MzipK@p3 z+QWZ*@lXJoZ>W@YaSC_ru3Ze8h zktHs>om6Iu?UQRDH8oW_MCmz}Hr=+z=>6e8xwsbyjvg5b=4G&-b47W{h{3tVTCP^C zX)yZDHGFh5!~4R1qlUD>Xj|~5om567*g`-P;=|zLGaaean$U0+od3$@?7q6RJw`qJ zr`NqeczP*Jgl)6%Su)E|hQ zWm#*^sb?WP!>ks#TS&~j7L$r;0zeIT9MhP@*h-oNtXQ}wsX%J)bwS+h5U;+0q`EyN z-uZH#H!;1Pubw;j^Bw{^Qra<+5ohjA7ZGp31W+NTCSBq3q|&;gSuqFD>4ZPswDDYQ zJRQmOz{k**p4=Os8Wo79Coor=<7f;<>)2aKG9+T(T3*-z7uSyquEOfOsm_MyNp^fT8RP2p_X_6h&^* zq}kQb1O$D|>(*j;@5_1q?Yx%AXMz)v^{{lOE!~^CIW0e{8S+Ah$>1%ZMYdNfd=y-_sF&gKPg<8Eup*wZ?%f#ev8w&dg_3rS4nsf3&yH=_!L^7qY$s+Gf=|0c_X9waLMB(>OiZLfsQCe$Z2`z?XZe*1 z%_zZ6_zg|_s*Uh<10ItWHM@ObksF-HnnGP+PUoxzJ!BA@qsMu)n+=qC+2=t!s-3byUE`Woof~u6>7G3XsInTea7}IBl za;eWmk$+6iVX{C)JX6jo&8ghSLEY{wFrUYmV+k+9rVv$^vw|afR2$2%o&%7{;U*rZ zTVuEt8G=osLM({z?2QT2O}5oYZ-#P%5W%2s>9NT* zN%ugKD7iPPwGffr(3Tui2X(Nw5hvqB3$j<7FyNQqLW%V7Xu%9%8Q(TV?tMAW$JW03 z@W*d|^xR+`sD628ciIcI$<}DQ=5nDh7IbE@EhfO+D3@)Rd;neR>#P(()di-+c@(EG zm%gBT)hd~JWXu@=-5nmOdHl3+#1u2Qh8}eLUOLyrDl#QoWL*iVeWuUdFu~X__ymmQ+lL;X3WYCDA zbXKK)!DY`F0?a@+8nU*5r|G_I^8#gXZ{R?w7uklnHM2!iRdvu`+Uhc^gJqb71DTi? z7%sOf=bbO-`B(G9{NPo7@Z28P25f|rG(&9QB;5j8X0_S2p`y;}tCp<=fQGr9$w-Q@ zAlpuK!Flxpda}`gtCaU6eo~}Ih)(h&$D9vOIWx7%ne)`*xW#B-mfm9oSpPHD+*HZj zHesz=ZH!`^dSc6-vNnTkFh}QtejTAqNV(Gm0JZ>20UvU)wN2(-A-zz8w0$voQTOcW zRy<(ZJ}I}>?t5R(Z7J(Z&Yq=|ITRI}qabXBc(GWxjU2{MzvKWGwPtmwM5yzgI3>;2 z6=&t>VI%-Cl+80m3V>j}c2+hD$(hzdevExx*r&_ljbi&6*Mon#Q4Q|`6 zP(D&~^9oBtW4mCNjZ*kImOu(+8jE5rpj8uS4KMe=}74#k#_7Q*S^>R~Kyz6p9}S0qfy_Nx2gfl~ z;aJAyn#m0N09!%K4nNT@U zt0b84S~0mYs?);JPH@4fO`xg)q|$0*7J)s{!gSS4?!)1!MUb9%5#hdaIElcwb$uRn zbL!bgPUIswLh-28?UH%#%ekFpzvM_lkfe;c5_Kv-fCF6R|DU=yYqtAHuKgk;wWMxQ zy0Rr-`{~Awe()Qq%*vXw9dh_X`1#z(so3Zy0T>{Aus)UNd7kHap6B6HIMyFzi`?hn zS_%Q&=$CHd03i3SUAz93nQQ%4gtxOKAwuM~ZMV~^dhW;~kcV>(l%T8|zWb}Wb!zmJ z$d()}5DX=lm)69%1AjEz^#F}Pa=$N^xp+c=&R39SMYPtnv4{JLag@tf z#Q~MzthsO#TD>C{%e+S(P`$y^7``{52F0;_(6x+5*H_G9qc>DM=mFchat`XCXOccO zyideQo?P8&Erc?iNS2z{X)Xv=!2PQaSys`+JA#ZyA4G?EtqKNv?KEFg1FQR?dKQ;cDlAiC|$?6rUR+5d@idI ze&tGoUjXg7iV|PClHSGVfFi7+b;dPt#n{M7BjSA}F>HzsYtis5+zD{yQiZcCJMN*J zrni@#d%v99uj5+_5VRnspX(Z|X;X<13-X zS5g5Wq47_D9^W@*_)62Rt}{jpL_9+Jy^lHa)CWfCyB!~o z6c*24ynJMVxc8DhQdq1TPwRRYo>qJq4Nb^VRE(lRQd_U?5UC8UVz3ILxp(t5w<}DO zy#@l&WLE15T>*41B`!R*CwOe0fZ~Dk)}g;Bj1|2n*pEjbb--{xl87Guk#`w2{`H56 z?*RVk&%Xni!YF+k%r=S)A=Ne#*uF~>bG>pJeeX6}^^{nG%8a{C!`yaF%}%ADc{9~2 zv@W}4gBU*q0)DW=yYIzR29|;e^cE_nbXzo73kn0lvMt|d+Zch2n6_qwz|IZio}m}B z`k?@6mgJ<{k#Xq-LPh~HRfrx6F0$6XpFFe33=5}2P4lTGv)kL|n4{O)<7BtiWO<-7 z+)-1pV=0;(jC<932}cSC8_Z?B`j0}mW*$G0$qJFnUkychbUeT(;kUw?3q-8`ub z$uJx==fGSxIuH>ObP8&DeBWpZQea$wOCLit_pxS&TN#2elM(K_4npU}4iu%1>lnho zq0zBXeRb_~dP9Daw8Q6h>Or1+j!6(GgsDNm{_syfU4-NDc;I=3QAReB&DSPyfk0J;n%^f$?d-B( zs$t+X$2MrE6B_LpDZ-VT=Ipi?%u@Q)M3Idr=A=v7Reqn((@nH{bi^ zJT20Cvx%P?buG(L6h{heRa~d7rA}FrdgNq98*9Qge-Ld1$AfYUWTS}d5EdBR&Lop? zTUV9E8My`28d7zb2U+=mD7^K*v9t~!hTbPirk7p z?)-9YM_q6I7{`I3aobdq(bd|R9dNQhu{<4~k2m9Oh>R53^UZi|s0{*jfT;mRR2Ym; zZ!~uYfD4)rXkvME-c&jfbqznZPG0DVqTqm9|H~;=W9e?({AN|%}Dz)M30m_?q zcQZiwjc=m|pu)EalSHj?vJKmUpclyJ1b%^xbAnch`G9|>skhUT_JwBZ*7z84^WD{V znb*Sm#HFT)L>$LiZ|6YdEJXrI#lf5x7lm8h`wBdQig96u+8Kjfr#N%VvIB|2nH~O+ z9I>Ijx+1V31QI%M|4p^Y7YKA;LN6SemAxs{(&>H%^8Ye|sWx&^j+bT*g)Qh22J{Ed zUVmJ__~O&gUic&Sz?~QFN%jEWum?UsGM>6ysDSim*Ckh{W8~#Nqd7!z0#p{QNv)dN z-U)3+WpXlu>56pHQHR%x92hT?_J-j>7cd^GR3b!1)t=Vta!i~RueG; zaIa5x^ieiT^QQQ)XvFLU1K*fD0GzXpd<0M-7AE1B$cyxhEinA4L|+P8RU8vXn#NXe zWY%$#F#}ZFA$6=P=ID&mUEGV_{cc;*mSkwFsM>9> zJvl10Eohn{fk3>xc?XO#T;(k1YRPG+U}CsjMrUfhT4y*CBJD<{9_1yPge_`=c;AS6Dj_^&?#HIU(KxrxLktXBxYLr&vBO~rWps2_BKiU+!4q=kf z&-Qg3(mHsF+Bz_I^w!#zbB=Te);I|B8}FQhOGZ$huDJn-QuJ)W5S4E5R6-m2meTLd zh5B~O-FfN0v)2DW`uC9yCHny(l6a$29)3#B+Sxl*m`|#8Vo+P1FF)Mak?0`oMxzULh+B7Vis6{cC;%W3zlS#x3hriL-N^vq!TOSp0W)SAGUmk`I>0z& zU#A}a*^h9meYamf&&bm#7E_MBbOHdWXPFR9IG;TU#}6sG!%`qEOc@ zAW;B=3Oet=L76)vM)(EDaPbIuwkJTkBSr)b^{%!$vRwI`91}9;(UF9KK+x`o#u~ew zDUWovxX1dVKJ&d7?a_dj!6^F1<>I%$`oX&(tboB`Bu6`>R|vZ=I^Amr_mT}zlN=>z z`BRP$Apst_Lv73rhOy`@Dda%CIhq%OWZ8>8KrA2q6i z2%5q?=kN_taGe8>KI}+HxV*+v8fUK6RWMS#8Z-sK$&_m*vLuc|2z-3T!@qFlqyaY- z-3+qd@ZlqSpl_JidujOh%x1wIrplv7gd3)P7+DV-=G(_XG=i6Bo>PE>bcd+_6e#(K zQW(9-;xI>(Pv?*fyNp)156pYNoZD~gvrnJDc=Z${0bDQ*n+09Xff5JCielstPV^tR zBz#X^7gjaan1e^a_0-|15j|)$9O;6Gyy`5vFuE0pB-~kKts8;T0Z%yf?%l+vPLOc= zE$*^?Wj<<)2wf^25sHa#yJEaGRED2abY_m)5SkevN&tq7C;wP5M+2;}qC+*5u5cZm z0`G1ra@%47Aw-y1w*+lv)w%3`GdB9BPVM1e#I9P25O9J6H)L}^sJ1!RUaJ>SK!boB z2DW8Pb7|W5P|iKAPBA_@>)ml`73bk! z`UpXr@Al!gqacS*n4uONVd*^9SuMi*m_vZ;Lr45f&$f7W!kDiVvMft!Ymnk9z%!D(hdbfQx@liTTr8EauO|8-yX zcj`4H-ubn^%bw?}7tiuzd-eJ3x6itJui>L-9eu*d(ZTmnLHOPh;yET|ln7kelsBtSX=!6Jh(%$F_BDX>1 z7J~fJP5Th~&DOVF7%2punfD!Sf`NglJFK*PV1nY=fQ^-c73x&$^AgL9+Cz~XP2iG` zNM7*Pyk%4V-ZwVo?Uuav3cj~3`NvOf$@iZ#ggl42pzEf2*be~(l$|h(?x0)P@UCoo znN9R(n^iJmLihCAg7n?f%4btVofBNT1(;@&Y8idamUtqfWwY~uG-b#`5w_LmZO)K` z91X9GV*WJOa?+W#3nM;+Bdi$*fMbHIl*#9mLFB`c(M_A?m7Q`?So>Ur;Zbauc%YQx zg(P#W+{DT5c-ZcVm?CYx;iLcm+mOF_d`8}T1;4`$`HS!1goLJgPcW#(+z47Yw{}qr z3-~F}(1sy1=a67H>m`e5TfyaJaAHiiG|(C&)weu_3zrgM$Mx;h zHcdUZ#LuI%3plK^h^7W=ekkl>%RC#`L#T|_IwpY>1`jqDA{U>nI`WEoG;=FW?sjqq zTj!W-Fhj>k2hm2v5Yr7@K*3GM<#S->Rd3mlAEmwe`LpLwKeg|@gzs%f{#`F#|LL1I z{+&Lwnc%qwKFS)qVD4?>aN7YyBhYZGZ763Cjr0SJWq4pd8xgv+GtW}3UNc7Sz2}DH z(Aqr6uD7vHS3&&@)H?B~MC&7$fjIW)p-oELJWy?j)LvGmbymots{j*Z1pR8 zZFA4o2QWcv4@fjc8M-&5{Mk9DC}}SYMS2HHlIJ!p9cNos*3MSkX(8~Yb{dMwrYj)- z#w>b_x7{Is|GcX5*Ka9o?!AWZwXpf>oqwliB+^LB6`gKX(!D@Y>bv&Itpaz`)`Reg zki}!R-O-S3YHRR<-4Rn*Z?N0<$r~M3A8Z{|=Qc0QI(E%!$)hPiO_ij>6YWIH{aWI*_L+KJUsymGFCE+3eH zeYTW-7A|ZFy(S~rW+M$_oLt`Dc8~meQ$BT%yz>ga*L&o*x8!$mN-73c4G9kp)$l}D z7yu+-P0&C_#KAG3hCtO}*Kh-RXOSBO4#K;to36=v3@K1THS3KRHl3s&Y{#{8%R!xxyiebk zeR+o<48$kOT1Wg6F+|Ta&sfDUTp*<;ft2yx#YB zdO`vZU0LeYb|nk6SxGYXG<2IAj54tUNre;z>eM7GrN1b+i;bd zDay6bf40>dvN5s(V3XORx2eIB^N{o4tB--6Mh@uQA0b^Zd(*Sr8D>|IlePN=Mn(O( z!iQQ8e8##r{B;P<)Mb4P5W$%I8 zx7#>cIdB2*3@yzP2sk?NCHFrC@?%Ga6EoP3<7}QAIikZ`tDMr;X=kN7gHjn=Z&i*6 z3JO^w;|gO894h6646MlrPdt+#Y0QqtTa!_1Myr!+a$9Vx5jf+&K{aTayUq*jSG>` zfK#98NXpU43>WqBlL+#F{&rge_LdJ+-rGM7I)%i=hs&dPNjPyCt-G*+yOD2C#En%zr8GP{zOri} znEqJRWV5B7&2NRk#AOb;7 znwz1sva4wC-Y3;rjZ(MZ3b( z9f0Zz}c8~n3uzC41o@oBuc?G|-!sgApfA6iI#%_jGctaV`?dZPzg|aeZZ!o>B z%W~t^eJ8XkE7A)E!kC(-44gmU+~63BC@}D2^2SF2$JPM;H`>@!A!yK@Qwse>Q@zDJ zvTA`6gM`~tn`KsZ`{8@)(DSgBBq}4#$St}QG#*_z8gpmWG zpJN2L+M8vQYn|cq7Gne=jGB`5Zp&+kZ8Yn;o(foP6VXVCy(!WZ0ZWpzZBQ4`Uq+ge zB2O9g+*6|66}_Dx9zea?LJF7~AVM@(ZWtdIHY7PU>2Fj2e055`7NuX@ZpnME;CFUP zzIpfWdqb9R7V1TqSaPo*fyZdBzN`r{!s_hI$eF9JIt??1jl|u6s1Odxh5(6k77{=l z)48PG3rJ~{6_A~0XC(K`LJ+Ahvr4Mg^5`wpV_gYdc7TX&XCRnrDNpZwWks$s7!wY1 za}NX8j1nbvH)sx#<9-IG<{ai=xp+IHa}U60eL}ZZIU6(^eGjusyV)U#nEFOI{kL!b zJkcJ%_xgQj?VsDU8pFscPum`NCf zmA4L}gv^+$XzXfhF5XJ5-=2*HmpOVe zBx{@rtwj-dZ@qIBb?Ll%%{7xd5--Ji=t9quS4a8uM%1Z0>r10I!d zARUHYJ_TLoPT}5Z<*)dgj~>=9Ue@!s?8ker;Cp>ofAzkcFiz;QIPKs(8^Odo+RzTBE3AE6EWxeW*wa@Z zMk>b|sft$tH8;_~qa4uTE8NJbuBP7EAOzOiRFU6*{pIr)ub?@# z!GT4ghV1z}H$OM4 zv$btDT*}y`G0SQOKVe&>yN;}@BXaPR9KCV((lHLI#M{~$PiTPxM|Can6{?|(s^nlXtNn}OiZYujy=5-U(qmoKAL6gl*)xq z70yjFZ_w%BnDj-ma#7m{382<8_%NCy7%rCEX_*=A=!KeGc$KLujjBK!z@=}~spzHRIl|xGG z+H36D;0)PI7Wdr?ed*p-9z*JS8{840$VA3IPK)$@S|8OSTlqtzr;x0s3jxw#M{Ltkn~=eAlQYT{D zmN|>ceF!qFQ0e9=Ln7=xcvf#>p5vAc_51bui&s@2|J*+NX}x+haJlo^JxR`#8*=7f z`pA1KzQURz2L5CB%boJ}_!KXGFI=X?=WTr0ps|Rn&9zvk;oP7NX$# zSW1X6@5{aU1_lhr4sNcA`NhM({4V1wzS{ZGp?|L4u5l~xt;RmjCS)Si zMZTYB=|NAh%SNNPVb0aI2e_ph?UoX@P3g3Hb2kqIV`_Me*#|pt{yOO>=)JKA*WzA- zpwW3Wa)hc7_raPQ{`*4ToR;utiz^#Iut;X}l}mEi0_QN>ENv6kvSjNNg9e{y;2V-I zS4DVqB0sTb6pmx0VS4Et!Pzl5q08xbv-5v5>=B&!-YfR#AwNG^pK$-iL;kBDe0Zm9 zxoqQwSet>a@sXSrWou@;vAsMa zJuplGD|b?&NphQfdgtt;+w0@A*Y%4>*T;LW*^}2tzPUbrfN0SjQ+UC1x!`i9v%Se2 zq)P@bM2A#>TLfmwE-T2aC$AnpD%dvTQr?wtcdFSvD9(VquTKky@D)opW}6ot$=!9e zN{sS4Xy>;NQQOE4gErsUs|yTHT3H;YjU9WhIHz-4xP64hl?7Je_+!o5fnkRG9vve- zggc<{8H`gTmhFQhQ0EzK)>g_rr_L3027~uLZ}!@6Jw>s-_mVwkf6*uXlW&GQef5LC z`n?h4n6*YbzA0B{aIbXw88!CsZN?qxiPal|t)dHLqPwNhameb&JY)Bs3LPgD1}qd- zIYAp?ybjJU;2CYbsU|H_pzgH&3LY_TEL=d;vKKQWa%45gD9M48qH znZ6mQPDW$`0EUQB>iBqvo$Wl347Nc99BJ&wBN?aCY>Ty_@jPc8Hz6xE;c89~|0-Su zY<;n9^B5q`N7Dl&6GHZQ&lL?3viqztmYd*DVp!p0Bbb&a^+rsTP@J7vd(Nw(m9{1x z#0Dr@@j~$VqBT~F%Saj$OG}vM!@qW|g#-X+0PI4n;q$y1U=QrWGY_r;L?~~q^EA;J z2j3M>H3o_RVYn4rN=8GsXs$do5dlEEdH~>?8!m;Kc|!ZtGe=+Bo%{6p@UP=lNWttV zS9G8fOp)!lf))c<8YttkQ%@@-fy)MJqZ!enZ2abLV!E^7%iOaBa^>D?6b9psA*$SK zOh`)CUidy=RPlu|Ia#!L_%|+MRr7T~#4@5uqB&tMD^XWPKmdF})!A|+A)?w$fyW-H zy;Sy52%YBy&r5bY$pyvAW;>OmLE^u`w^|1}Ds9k+tN{sA^=wV!;op3h#Hz0jn?KBF zufO<{dj0vI__ODqeEzFQz9wrE`GrNF>VrflnL96$M)24z*4;e=f!^f;XH*`|23NHL zQwLWd;-<*(=z|Vtkd?8(?}e^+^bzf_?P?)*Af9Omja(78b^ZYJ!4lsF{P)MYqRgSo z@a)6*A}Wrys|~R2@|>pIn+Yb&V05m7cKTii|BJd*=rB}jVKAWi*|QBJ1ai4F*@z?` zeIbIqOWfW-fAb4_RNdcu#U5P==1oHDd`AhbeGjBxpDU;i=mhEB1}8$^&jL4ftqzb_ zu1%e%8uWa_liO6Sb~<@Ounfj|&V64oB%Q~A^ZBrhy$VYE)y)B3MWgTHp}^lX_QSu0 zZ{ws!Nl{RU<-XW_q>k*ZHm=!kn-;d~MA1mDHTPWBHuBY!YbS53D+wEbzt!A&wX?jR zHBJFYA)oc&{ z?nSHQiAy-c2SHue*7S9d;UcRVuQhzpmOYVY=yO`>p4tkhWK{_0e$pLt(6Xx|C&Wm_ ztAk-JjObfYSUQAMr(sD*d_psaQUAlgckK&&w)i-ebb^FDAvh^y%+Aq=ZO3Tftfq)- z!2oVA@LQLl)ewvrcZl|~U@l#&iM7mQ@UcwI0W33XI?wKeK`e&0%Cg6(*^(aq{rABY zXW@kHx$T+ ztDSOdasbb-jf^_Bs~b56&7FQbZn}3e;>~IN*X;G{dWGZa<9hY##iNt?-mCXyV}NfO z10P_qCcQBCz(a`}uU(}jDGv7&a(QZL9a@%-xrZAXkKhUeVmF&o%ox%Uaj+VAr%neU z>B$MzX_w9vJ$; zm3??#c}hr*U9g{+9>iskwMuOgeh^xm)|ySy>58VEwVa|vyN^V$RxXhR1s^+Y?;=Z%09l4>Jm)^n}`M zyNO)HLpeZ~G!$Wb*`}joO~3FBj?lx^&qfRH;9%cLF^N2C1E4b$Vru|V+A3g;hm|6Y zxl0_vwM8P95mzl*i~6G&wR;E4-Ui*gv@d@AGkdh#?!9Wiu6_0>Jx(C9v+b=%3=b_3 zwry-g6G1?=8vs$V9ps5UcFLZ%4XG_)cAH9r@Cs9xEyZiKaW1xK#U*ouO$Dyflh)&C zxOTv5bIWbe4I|pL^$REwlpB)kHnK9&&2(f=v?97PVpJFMHy93QXkKBH;9%YoL%gz@ zPxM#%&S?z1R?=sMCiK{I4X_lL*Yt42e87Pvb%UEU)AFxK2WL6X@C zcslaZ_eyDUZb6{;j!3! zou>x$c-i*=97B1zq3orVdWdAwX-MgUDuAZhaWwe{^m;mx!8bt5XoF);ffI5gJu;xB zLsrbhC`e9q?S0*n9_}4ablZfmSFh}sAAk8AAK}f8yZ6fdx*l=X1}#sTF>4{gQwF?V zdj^9eoQCeqNGk+4tt24-2c}1(#f~`-r~+in%NG|9A9_6KtkHI`7ox3+(ZVK#4H*)M zTZ1~Tx8keM>(!_A$X;^qMSHZ__>=yvj@O%Ce{h@4_sYVU!hqoDJr_)D z29_ITU~aY%DPmmIwt8W< z(^#O>P7+(liGor@kOFT^wnm%<`ND?x5=iK=x?ZZ?L#c;tz`NLOG_Dv>gQlSioz;A)3=XBM%x*bAn(=c+G$u`%Xa}DD0@E=@xgM0TH?lq`&I<_1&lp}oMI68}N z5H?9dNCkI6L+Ww>=yyyz?bB=ZDmcOv4C#iuFim%z4T&hU0WoX`!#Uuq*v1}Wb5H6c z`@?^DX^vv5m0!npBIlJqG(Bl~S*5#w9 z`O#ie5v`Mvimn?dtl}F=i7`An^rQ`%ricINqaXeDyH6Ey^u>@0v`(7^9z*X{&@4hA>4*RLJvevR3gZfg`NSQ_@mQD=<8aP% z7*6Hb#(>@(7i!4Suzfa?iXb9~oT(;4SBZgpu*+#MyH?+N8oXN3gUmP~0^0*`x3(*) zqDTJ7duPi&nkqhf_3=}}<9jdLlh-W1xn{i!K^u)X_=kBq#oh$ob=zGH0wXQ2?AiAk zKE^t;0;;tQ*s`E~lbUvV2apNu@KV5-I}4W>z_$C4Wt^C2o+XZ$LnOAGTFB4XHT>Z} zc@LXjY)D%vGeI@itp{L9^fya{j>o2R%78=BTu@QZ;Km)uRQMr{7xlv@4)dzs)Yl4` z+AcRa!Ll=*MqOMfG_r8M?Dj?sn6E{_Od)m-hI!ckg9;wCUH4FL-^J zzTl4h=nW?q(%)#?W&4ChZ+BT2bk-wYp|@%G)~j-iq;??e^DSTKv>Lt&e~5`o;5)&#M=oe+=FA zqmJF37x9TE3f(kOK1iY3lzli9;YtO@iKYsD^=Z`dM z_g=JLTNwv1DHHXsD!`*dmvmY?mC73-1`uO_rJ#|b;yj(x8jRU12(En^0$VnUgr#kw z4bSKljM-E7Ksa7^_%3Lb^-1<|D$QdPxINUmyd37cV4t7AEf=}LHZ$a2Y$7XKk#SI|0F)o zPk!YDbHtpYv$C8PhD$@DS~CtrVYYH48;Rm_8v$=tQ*sZ;J)j3sD1$-rn{b5>U!yDKHQ;VVX*19=2!^N}NBFLfOU%*TFQxp|jG2dlMtIU@}< z-9Z4F8Uilu2;cY{(UDCf#Et1uu*02QxVIfjJY7GxFXGWm?B474Xus(v^i7la_ul;a z9eBi%L4dGa1U?=S-86ZG2H>*`wAa0T_jP3i^gM|YCx(oZfvRsozCG+1h5>;%sArLpJ!~KYb6)nn7G=FQFOfO4ClRs)0LF4S-BR!P^{T zI>A<=iCe!-?S1z(mM8+|5{qJnD^wq`Kr5lf087BxUz|gyq6+S9`HG0aZmcWm_Kdx= zxAIoxa$bM@wrl0RSMIwJxqJZk{D=SSJ?#6=n@%%>p}BEbM8WDlc5jmVNC!XE)gwD5 z@hUd6;c?0~C2~yZhpzm?+H=!@st&`I)0jpJmdQ2-^QP*}6d^m_V5Ug$)Z%s`eF6ye z&21j>(hR=9Z#!Cpd}W4PVpA7j8rwUsy~hXwzDnjrqgo5I5?e;o;Iw5E#Ebzk2epJY zI5FS?H=5G(N}OU@p2zj}wEsIkx1ZL>r@n|EfBa*6`LZ5MyzabykJ%tMJ^J6~ch#gv z0IZ&c2;%Hvw0q2szKFwSH>#tFh0(*7Y$U9SyMKnz#tg-x6pulYWI#{B1Om))9;kqA z?!I}J`VmCQ<5=q%W8k~9lybI*{~S|cq;ny^BO20^!HL;>dH2>sBM~k$JGd%mZzF>7 z0r8A}rN}|vq$eSD=^Y&Z5~BwD?`B{@`?^?56w^-)(FOnhyUWEH$1Ll z&R#pK!E3?PTh1y>JKN%p`3u4u(il~f=tQV9aDaOyBeSIXKE7BZ$Sd3CiEI{-h6EI1 z;M0*X5AQg2?RGGeM)bsV^o+B)rvcis4tDRtb0heWGRBb-!4Ln{<$aI2q`A2I z$;KUyv~G+5zq+n%*KKQWg>v>FgmNrU;}&9%`mhNtIS)QeiwEXd3clT#aYPna^(TDu zLE%^+>;d^>4(WQI8T{~H<5e^p1Hd|H#!b1>7X|~SAnpQUI*uvpTG6mT9sP@LX#5vi z8oGK)$DnvKz`RXPAlh}NN0!*M4l&ZvnmkfUP(Z^zx+~?3^oRcjuL36z(aZ%i)t;@v zYSV-RvxdwZHDem#4(i4yG16mGrx}h`C35xV@rhyNL2Lw4>6SGEkTpYWjRSrSx6X3b zSVl*>V;WzOAwK-K9|RNOzq?cHV-8kFy5!0}Gw}OtB4OC@zV* zVzxflki)s*cie4Lpl8d5s&frH1rGxsTQn`-kmH!Hs*IQi1ON~J{k1!ZVF{OvNF1=L zP=M4-n>&yZESx(WumztdPPT3sBaYK*xmPKwQV<&ZjFUOxD|Mnh00rd^WfVX%(|~JW zocLsp&a-fhnh*cOMXvE}S82OpKdnm=3_^58!y6aKGI?ifqYzKWxtWTA&l8%6mSJP! z%n0A1SLLn9WZj`#eARNntw}kik5P@#b0gm;fe#OU_#g2qXpb|67FjsP|GkZE2({a} zy$$g_7_62ljhYQ4Z#SM>q-Rkn8ch+s2YD=J6zc%qUthE4zQsB`f`yqmo{P%j+I!kG zJeYfX_@6%d(ckm#^_yO+UxzMlkToaFXj7TS@~cs_bu^sB^LRp3#eL6kN?X=-wu!rS zY@laONkLgXIB1Erm56VY%V|l)as~AHywKT6XpTK1Gu)e?b#sIH!}H=*efsLfm(TO# z_%XoXkEERUUA`wY267|id^f@x+GgOWHeezmx@*@VRC&&bI=Q;KBK{asY{buU7m>bU zV5HV8Mg$bv3o58~8l-sRG=)qplc&aDc8I5U+q@0Bh0&uckJdu+;eWm^4gvPIIJc^E zMGy2Lyk*X?HJ2XRfDxe9%d@nJm4WJ6+WBy!IVvunI+g7$Au(JK{kIdPQ}fJbfcmn^ z64n+QxaHe*1Xgum%!obmaZtRHKf*X75 zXl=CI+qL6L(kRxbfpawH9OQc=AU4}3!gOmx4&P4ZC|^hDL2-w7w=T`KO(}+wilIs3wc| z&Z-`Pn-00!*k^&TNT;_TaFP$SKFrd`lxU$FMV3|ORBF2u=j<)d>1GfA>vb(UaNiGn z+gO5wS_ZtQyLL#q5;Sw|_yjWUNJAdA==1s|DFR5TretKCAb zSL*1OVhgF&B1!=W_qK=s?Jx1&`{5t{122F2=}%t&$xD0ny6n}bum3)J@x$*S+~JGA z^~2wN@e*ropZ$YB{Qj5EUw-!Gr=M2-tv~zCAN|IUe&a9bv9Ys5L=A=%42N;)Qq0YD zc?pfl)dUN)F$$+@XD{VECRdNs=5BjvLv=0`@MZS&!BWTP(JTRtAlu#!!6qFl8(?-h53t6x4c+T3~N9+&)|Fn_z`fAfRC`uDcrA{(xI9Lni^ zM_WB(xx=fiGXjLNH3;%Oa8DNXE4tmsDJ0#({xqc_{ca-!%(@ZC7u4fy=zXenOGY?| zuGZQ623f;wPib}@{`U`}ocTZA!!xsNE1ZbOk$FH$g3I1fG>LMV&+4tRObP}q88e!% z>Xr+td0m}74`=`bF!_ccU~KSo7&Vy9R?3>2n~93k0UH+{$P7xvCf$N|?hLSdO2qIF zfA;K=B=+9R_GGuY-E^D(%Id%mVAKD)h+G~MC>kPPU_20^(3a`e`U$gUQ*osVoYJ`_ z0*O+3UvZj;kF>S2%^Bsi1s;a9JYCKV9d)WXPlRjjAqj9^3Brbn0pS<0^ylsbtjaeC z6c3jZ?a#jV0nE*RO~&|7AVr*I4b2e=gP_dm8zXwLHlpuXZNzZszkAx5H3P9g=*TDn zO0vV}*w{`~gO|!ETLgysKG3PjHK-8nn!Bx3I*_Hrmgu9ye(~)Ow7>a4-~AIoLE3j? zp+=^geQfD-pc7W;q(T8>6f&8%sujbsk4cd9e`Y9aps zI-@uL{7L*uYt&C=;Y0*+hiJeE<&^{SvEFu`)#uhXQ6pF2*D;La6eVD4J{WV_6}aaNwj7xyVX|S+lhEf7kT+CUc`&fUc7oV2EX^h zJt27G8|C;137mAbzH$|tv2K=X?#B-+mr?=0DHZ#OaB_=-8Qa)EEw(+INNn|@b+$6{ zm$ryjbu4$rh=$(jfWKX`x8dERR8IKtq(jJxxV0_Z*>rjvXZHHVm#?Be{@h-E{F6s} z?%r$n#GY$6d+r?o&)-A1lkGrQAR>v*gb<)Sj%0NgM)SzgF^!8gI(m&(17s;S&WeuY z7(`^Z<||M~ES9}TI}3Q2h-eL1nZ8QlwF-fbv zqhr)RJ=#2-ts(z#GquXAE}e~h>6%Ht+OSk#$UnbKq?jsfq$FjwOX+1oUOid%!~c1W z_qn{FNz6TCqz6oGCNok+X|kdx))0Me(7Aww7rWt4!pfc6FWUBievk|BSwv@X(`z)3 zi_vM#1wjn0!m^9aH%gfy9?|pR|H7+4UTDby9bs1#V2y)o&m~ZBP;?!Oz13nF4KmBQ zhxEW41dtM}PAlDGoLca0$)cQPyk_Pe$9SV}XVp7cA_tY$L44kB0%eFi{NEpa01Tdo z|L6Kd5KmrUByNgz5^Udt)<*$Jwash8!GlM}TsE${(-k9rgS&iSH_J}$J30n4X@TKR zA~y46>QVuAy$}=4X^FtTZnK@X&zhYd{@;&&^n-UFC<>AD#?-fg_U8+RXy&=bTvp{ zDzDyRMhlE%;Uvk;NTQal88UI@M$iBTH@0S(?4>jIoYM%62V|MOg+pnvmfk7x0^pFgPc87jS*W3pZyV}xVNV4fL|N8J?G^7_2+mvMj!(|u) zCk)1kXpI41^WKJ$e?RjOqKzBnwAIM2X!Jd{!~(~dZw*}c)(+n6w?F>z7hk;mIPCvp z?>(C>Kd$w@HzFm=ge~a?$(Afp_saJja98SH-7M2}{VDwJRISy$nw%0afMv?sp?bjCRg&oNRIJ+un;~FIO?mtru+_TEE@q z0w%ui&OuE^Z1I8G8t~2`dsWe<(XWN1P`lb|=q@=TtJX&ILprFYXFM|H-&rtvyVN~< z`S!cp6JjXw$5fKxK%KcH21f1Ju`} z$<{pr2U^l`3gz$uQYnDrKO}Ne{5jKI?2?&c2L$!4lBa^8C_je@(0iKa#D`8hs zVI1st6K|26(Bn2R2X%TYL;|fjX|HBIq*XtFnl^)aV!=Mf_(#IIZQt_D?k%som65!B z_MPYP?%Vazvq%2adym|cTPodbsb9g<9Iixq3fR-Vw%YIx7q0mcnBsOnglrU`FCy2T zmN;JFp)D6gJSA}lTa>A7uhZLz(wezrMzq<Uw!^jkZTq!%}cE;UXRQBQAwCw3J%T{odGsEMmk3&=ADMPv|M&-Axp~JPA)Wh~p+KA_aBFZfCek_3 zv6(zB9D%Rd=Sb>1^;Cn&V-Df~jzDq0m5@Q3^4g}JT?A-yYrPIas^;i>qKbtZ-A1XF zC+`4cIcbgCGReJNxVH&_`65=mT_1fA&tE=)LcjOueK`q$I7oou&IaB#^5Al!D9eSn zQoh$}gIZLh1Z@)>cd3GXJNM`YKrWu|)^X!r<-rpkI8=RR+dgMI1r@|t<^$vvT`bDO zU~w5Fl@I^bn?Tvox&WLU%xlj$an|YJ>AUsTAWV#NAPku}22HWRcSQy?7R^og;9Q1V zt%)z5OE&kmb{B3}2W>jy6#C{XX15JUHDwzz&c>~D<=(Qy+iT3bFFt&Afqq0mx%0R^ zogA+}Dix*IA@P0_RCYL*ra>x*sxGX$d$oCF&W4ZIPNybG^YZxFl^9d4pV`eYP7SPS z2#(D93hD%O^l%Vv)2%UO%s!8GV-);3Y;}}Xq2tYV+ZO)H%HJNjdG0%GPj=|~O^2?( zhGq8N>b2hx)4f(P-D}^mh=FcaQtHtbOvl5mWFX5uV3~uC!4A-Pa}>AbwxD4nB3!^) zLkt7Pp@ny`2pf~xW4d=k`IB41Z^okrS@p;B zn$dV`kpcH16$* zzgd<3gim&@x6ivDJ`NSR_uxHQ^KCaZ-`4?9y7yt?XXR}3Ga~JO12C#7wvyZr;7*7< z(FROYO;Z%3flR)_$y}O29a|gxYL({FPja1fks(Q-<>05JK|ym~v0+?2tE0vUZBW~d zn5`H^^Re~t?J{z2sKp~F&nL^s2hTpJcb`3fbnUwL_&uqMv>RRIPhHIa3Ou^Mv66hn zSCXEiqE=hQ+)!RSWndFtvF3iRJsa|*b-0k$Jb}|f4R}jXfwnf}NT@k4ZA5-FMvDQL z>tMLAXZ1B_jwYOA6n4~FT8b2~bt`?iH-O}3g8ZhJFJC-+)R(#QkUdqip&z|NfBoYh z{Om6u5C8QWs8#mtZqtU#5~33vt7I#vIm=qutSzaNlml%P5ahrsi^j>vbAr4ReeqhT z((VzC7O#!fc#b{R$UU3{af!t%fkI_>|=4**#G)+cZE z*Pegy-k+*}#+CB^%b$P`e*Z;6c=r5HTkpU3L45C5Klzvc^lyFZ;|Jy2*Dw6acjM)E zzl}Jz^XYQ`A8V2E4}aw6-#{5f7#WinrO@i474*ZV$I|G4Q4}RdyN8xHyQ0NOjdxzoy! z@Qb5lMQ4BbZ{bPl#)CU2$Q&Kr{YcPE`OK+DbJs>GZY}L2*Qs)yE#S@?mnDXqwqBIV zBPC6^w3!&<9&_(RkhF8_HZpnwc{nroX6o%I#Xj@lzk368l(ZOg2juhBA*^#k2{O*u zN69xxcW0a_V_7ym2MnO}nkB8vQHkDmTE${xM#|6PP2qtZ+LQ=b6SC%W2`g$?iLk z7cx)4i9A}Y*5IMMFv$di9wDJPFvp1WEdu*9BwFqBpL#Z5kPy`6~ zT@U~Lg&2hy+rx$zU}mPwM||KiHPvxKvn~tYvw$?G!qm07(ktAPNW+avn|H01LyrOy z6#zgP?X4gzbZvdZ@fl+Xp5Q(<1cAL(KKu`F;0au_;U*m`W&%JB(-I*!XkO~^5=a+D z?(`r<)Iy6&K%v=NU%i*$GskfXf?%Prj8mw9$;Z0=DBz1e=jH%6YYJ96cg1!1v2y*+ z&bwPB@q5qKi}#<*fw=d;J?YXJH!hvm^6)A7@>;o~ZA6g~pB2k(TT56}w4XWg@hZ+j z$5>`{$|zbnHxo7|i%Sm;Y!e|qWu^2w4uYfR8r#-FS{noQj;raKi7?06SRek!S4>-D z#AQg#p3D>WgMXF(N>@ofv&_thf#H% zMs2!v)D$+V+F+RsUW+H}8J+rQKHDJXB|EUn@8*WYy3vp9;T+&C#v@hrz0s++*RJ*A z{g*G_e)&Os|B=q{-Xr%!dMJGgsrl;9uc3Aq3!X)66f}?7bc$x1TLN7(>?(+!nJYGO zO{EGo$`VC{5pjXoYZBJ4Xu#7Q%46@{bO@q3eNzLOL`+2Fuyx->4JqDc&G*Cqd~JQG zK}>Ku*Jke3V=Ii)#Fc~xhja?-?n7euhSX65VV&EtHe!40)#kjs*B(%>J5}q8dhyyd z-NL)!VO}vH+=eE4Y~|HtstGNdUXPZ5%tp3?Nopm^?YevR zp%SHAIwFK%v?MsEFhehb&VoV)zq-0HFXiq045l@e}NqFgQ(IF z+t_LynvC`EzkTDnaPT=X0K#$5!hJIu3v!Z#vDa@jPzP3tQ>UM`=RAC5cZ1!oP8%B) zfVMJY!O;xKEnu!I%_3*()(36K%4SXH>zhEfVY}q*5C8jDffM?(+YN2hsJq8f>;ME( zEn~x2I%_hp)+*^PST6?ys#PVcYt@fREmby~vV7|!GamFBsm;^}E>ZpcKCYZ;Notbi|x^>px zdgqS)Z6)_uuC8@UioJIX&?mK!uRs6bz4h+1k7xJS;yX_i;qN_kPn06%h88QYr3ioB zkb0M0P~Zk%i6*GTE11!<3SOT@E(0QCy^d_B(Ow)}Wwq{h(c~$jslA8#OOnZF+KcW*JiXCnNO3@ z!GvFu2tAX*P^&{TTSF_$VAZ94Sf_FFMo?%Q30X&;9?_9w0mMv;qr4X!PzrNMgJl%u zXok@Z^}g;nSkFkj-~RA_f8#6QQF-`(uCc%x>}&Zz1uO7n*1`S2r-75n7I~x;`t3^=QSAeTI+^KLigUKm5OM09X{4 z>#19tDhOndoSChK=;@~fcaI&=ek}rYkD$Dmz7PaD&mf6zsQ<{aE|%7Xk0Lx^RUVgR z$`O~U{(up>2a*h@Z-ZVXQg2Vj_jY{Uo{TfzjpwWO+fSCK?mc)}+ zyha^AwfXGYeH4-n<~SBRc0V(3I}%)lle0qF9BBV|Z)X{n-^pWp?B3vrL~PYO6@v;< zoDKY1wG&M|%SzhTjSjV>CGfZ-^+YfcFW>^(foVgAGq_o{#$LLo_D3n;FW!Im-47q7 zfZu!29%-rU9kEZjjX(auYcM3mI_=7J!Z&fr=4Ayp*_K-a8?DW}N*+VD(4^kinJ{|q zN#=Ptm35*JhL|Osf%-Z%Xj9{{Syz>&!*8B;a0;t)CY70P_w(@oUHNmktacbmI8)nL zz3ePAn=DIp_g+v!V4pYuC)-Y)ZGx7PXG%j!q=lMD@8&9=*K_PB>8eOK>1MgzSzt@z zV=_#D%p#ww?T0`2EnG^EuT`C}*-uFE9XU1I#nc(lWkf448&xzvXsL%u zugac-QYJgbFE*@cZFeWk!Qd`nsM1-HQr+iR9m}#ob9&rdBN^(pg*081+m* zX`zc4E230@M`7CdKV4u9pR}q`fy}$l@uBL5Fmms zZ`@B(2|-UePQp)=jeNt$HhoQ%p~psx&U@=3w=55oM-q2BXkuNKr?3Zb$}!~}oT#QV zJ^Y1lT_$h^8i9QV5>M7_6ur7k)aaCPW8|#la~cRNZonf%<{Xy8n)QQ|9tRqxU?|AJ zcH0>NthiPX1#@NVs3=e(+kHr)CEmH#@`u0Z8jComL5qtgL&g|^EH>@2yH>kABP+H8 zyT*eE5s6 zXT)$g*r5#0!WjF+v1(N9Vh=+t!zWR~>5j`k)pB0T8;*vZ=a94909OT-L6&sReqEee z=t8V1ALN_EONOk&B3{d!@D$D6$HQNOcYzOxh-Dfh_AY>lhX?cn+G%@6Z!q4B#C^TT zkk|nMj&Gi=J8S{j1G1&iNv%$5wA~_F5n4ZCmP0P}!&p9mk8MZURQ!-8J^ZD37wAZ< zw_$9&q0?ocd;|rbNYOn_smyf+Nt>G?e*stVI6~;=mXr+}PayCo86}o6)?v{jJy#zW zFJ%Hg*7sG#iqxIjF-O$q!(VoNBf5ANN``f!`H;Q2`VpBX?l3x0t^>;MKtz=Sf@j?s`3Tgn4pVoIAsXp7rkkjO$dZZ3JG(Jai-uNvMB5xwvt3U{KTvmq&?F4rRzGph zk%=751yaavfVSI7JnjRB-L=g-M<3^qCB!V4zlO+xg3~0G)wjj1^kEHJr(=L}hc_ z!)&1?zvjbV_39hRKx=+BxY0(;@`m37e170VZ#YFnWoZ!n(W8JYp3=ZvJ_ASm3~fGO z-!08VWE3xWY2mKi0X?T2p@PO@T&rp==%nUaqaOb1>q!lXeQ;Pp52epGNrRylV1v^o z&+I^JEYOMe8ROu^+m2Bc38WRERo+hr&C#q`^GRd1GS8Ik+(Kl)<7?nYN233_SaM#6 z_=msdt*?NZ`Qfj9>sx=|a~I@(->W5_e;O$ zvtOp$=X{Odee)WxRK#ECCH|zRU*e3O27P> zuk_xBFW>z_FZFvr>!rHkZGFyHx&5Yp^i}YdKIhB)fhS+)gZIB*FFsh^-mNe2mcIGq zYrS~(a{c-j`e;uN&`X{4(HD4?+d2H|RX+Mc@8nPU%-8q=Lwx&9egD~Wl~2B@m%qM# z!clqkGS5Qgi@eJ1CwlcNAAPa6@&il7=PdjG(jPUU<>SlrpSYjB{NAr3rsdTSK8|QP zrrmn)C~0!`wscYN+xIcFi=2>WsOX|)?B;<|-*EDb8X~brXW#))mz?lw8ZuFqIZni3 zB-yf0-O?ZkgaBsN7}|W=Zg552YLoAr?fHX#z_XVT>k|Un*VenwK78cuy7$mMDt?Wd z;@5Z`#V_pBySC}blN(&&)4g*>%d=G0T;S1d6mWSQS)8VN`O?l*!DZL`=&>gYQc41c zHrQ5Pr7$o==$G_)Dar%8r*w1~B%OrK)Jh-zy0U24gmtY+&S$yn)p47r__1) z>+vpzGTvK{Xt?=9-HC3eZ4hm7yg4Uz1eCBiR-(9(2!8>X-I0~yOS?feFd-ZbSVatd zbO&Hj-Meldv)eI44c|^{tx5AV1quG)Z@6w33FFSPDWxpE#w(_KN{`y(=q6mCjk>Jr zy@`*}c?CIdM|s58*l5*+Dl5WWMk|v+fdQqE<-MUZpxTQG_K2uOrcJY_xAX8fUf;;t z0iOWzX|BwGHDI8TGF+=MkU_^fmCADWxV{)8d5UagL?7e?S+Nx)+cr6VSCaoqBm}luOJ}J1tj*g zwLpsU4&oyk?Y_2CBVPqZ?V>~yGVYNOO~i+v9aOpzr@EUQGAvhm z(9;I`AL`d7B@2KaxQ*gA!|2{Fl$+`HwI`iP_a3vS;HPp6Kb5Z{{B-$%e_@VJYnC{p zWlhuR6obV+u276st#mXs zhbYexuCd+PquF+E(f6asj%VvL%m8;Dw+sUVHTt~ z0#tu1<-4=k`gSwDB4YkvJzC)IJ#0_NUOyevp>CR*Jn3M7j`;ShxuYdf5*I;q4MPt+)>S%ss%tc5ENyw?@ zis_r}$^`}3y0Q>Bmf_e^NEjVMtt|*MvoSk?l{jZttFu%6&|ZDW@GUDOuUzGhl*R!G zWMq5zTi$vDkg1R z6}%36QH*q0Tm_m!T5W48$|HjV#XJG?)l?CX4dH_H+}4mJ)T)8xw7qp1oR=HY@lU!A zu9yc}0h$eU59l8OzDQcYx=ULOs`XJ>4}a?$nDU4bB%W7CvJvu^v(^OC3%<44Aswn( z2~Es~ATqMrZZ0wp)hW(_RW@vzb#f#$Z0&>A7TL!UZ5o7$I5lY$(yKPL*^&jCyW1=J zz0Fg%2>+Mgt&Hd2d3(M8-h1)#7PW>_()G1o zA$02JoaM+!wY`X{GJ5Btbvi_ZO{OOqt?D+X%v=59y)ApUN1X3}_u1py+r7u^$r&#< zGyZk73(TR9*rJfl;6P|6y`wB|xpGN^jBDX4(nL2}B3y0RX>%^-1)*<1Det8aOpP?y zI*Mu$nX!7;fF$L#t%4BVrq)a;gRM^4!{7coXZ$byRt&-0ufEdX_RiHo`{7SM?xKx( z-LYwJPNis~t2fUAqLHcBfqP5NvM}HQ7B22P8}=^f=9?nA5QSyuIjq6KFwtPhKwP?D z3fgJ7L3M*g;0Tb#?r~CAr&|&Ey-60IK^Xb10EDl2zMnlxOuP30KJjqy4I`Xii^cNZ z?DmJh0 zSr7drxSLv&Qwy>!D8j7TgjAc11!Rmi=CSaHzw@ov&p8+pJk+;>Ek3Kd+Ej_ystwnl zI8C5}g#ry>qp`Y-b;jrzwK*%D&IssP!I~)+7c6uYJ}SNLL2@1&CGh z>;a1&=+o@oOGUeaX0{czUaXGm6{%i`J#}f8!Ti*Yj5p{ZEDcwH=am)9A_=Y^%AJ`(G2&qjga{+4ZP1LJpGsxLL|XJL4ssk zia4;~*-@*8DR3`0pSri%hLKcqwM8dr}zz7O)8TffiC5SmnVH zsG?Z$Y4~W(f$}{LNDDPO?FyPWgO1k~S%sf8^_X^u14d?P2Q|n#n{X29=CLdEH&nVdjpivf$RPR)46$#2`l07+I{US5o-`` z>tju7M3ZE1+&R_f*$IEya#vD-!~yQzlWzCyd)q;uo|`}al#k*u!Rfvu`Nk&ZFFrLf zyS?$LIkzlC0-wSeg`2X)q?S8nOJA4HcSlG~*s8~x!n6x5XsN^J3mRkg1?``Tg;C?!62>uomUy4}z3Z5w}jV*d6=rmx#+dGBF-W7G2IZl~o(U&5s9 zjn;B)pl{RZY}yyJ)pZ|wz z<~M)ko9{l$_3iKAf8V@RG8}@>GeSpClz{xB+hXFqNfS@c)ZhJMjH-{W zM0Xz0H#Sv&?`Ka{jK&+Ese&!4ciKA@77-B7CU^yGyZ3BEQHcoDk82JdBY~mxWe1J| zge;B<9}pDH#d;d>lpTzPgH&vtM^ITV?aM%OUYLlk=zy%*U2YLdcczg%JyU=2X&?0M zB)#`ozOhOA`yWrzZeQ+-+Qkc~f(aQL7=nF>c!y}y$0hn{18r6#5EgPHZ3i{XPMOFV zFr5Y_%kBxhWO4%x63Wo2487sd5g?KXZac+kbB^Iqu`FCnZ&%bi^J;#4f$7$1|7hdC z^I*QQiTceSH&MTo^>hs(I30b@f!tjch;ZhHWdx*2*TW8cE=*327TGACeZylN=jZ^g z&?=qRX-$Cg=zY={h|j=lADg(o&IKeJdMF|tu(kv@W#7sf?@cs%dY=BCABS>y)EKz) zh<<6S>IWEuFLzbdg(q1`TWQ;n`J9=Jz+m-VFiI=TCjt!h9t1RCnYZE1kbhFE&7Avzkfu)Lo0aEA`sbCP3kvPt3KWIl{@Q1@sKFBW;`)OviJnma^xv zs#w-epp#ahTX;Ei!+p{r^933dlwx&g167`GlCxL4MQq%ekM?;^sy_hIJSvyoc`U!Q zHT4>SFL$0scNRVZmxW7TvzxXUFbz1*1Z&z{eK@zhlzBID9PZ7+u|+3@UB{*lp#y)$ zP&>WAfJQn8>f8fzQLaD(o&q@jDSLN3xP93SD&3LRx_k1+BInc6~$T@l1kiURtMqZ_MVi5Qjb=6hHkZhKZt z>B$I@fymj-dn}YKXDF^i-6lP%q~4jY`1Bn8g(s0(k2d`~59OCunfmBUzDc2HBi#w= z`X&&R9`G1t9XZ5Pne$+WMI6Zz2}NTZ6Jz$-A-rF6wa_`+B65S?x5MHIkuIG*z_v={ zB^@Gd=~^3LBdTc5;}N^%-t^5Mf8)O;wmpV^-*+(IsHEij@Ly_s)X8@+#HvNZd5yk2 z_Ar`rPk4}_xhf1r7wUb$aX@FUrZddtm{5uq2d^n-MJHY7Xmo?dA6=8RWudV&tp&l! zQI6Zq?nv&wHE!LT$@=5ZqBj`8M*x^RkL4Tfk^bn^#0b3cnF-p{$Owyh)Q%f66?N&+ z)~d-I$$I);eNNaaqWU)O%d4+tlvN{XQPfe%O4Y7AtWWQ8tmBB-P8{kGzF~?SXo1JI z-}OM2&!e6FzMS44zq5ZDEqOaJ?>&@nY-0Y7n~C{l^zQe#a+qdsuq8%!(iVnH2q9sh z`iA+zMt8a^0|Lb3)Tz<7oI|eOq7j6P%A>0aHYSe>)SfUE$)^l`U;p?AuK{il zI%pdVtplIdXfun$2e3CE<3lp~K^5WbO?^Tmed)q^@FA=(GEuNjmCGqK+2MHg>ME0Y z2UN9<$y{a`XTk~tcB89xvWLI>a`dsC@Rnm4(pb3Wq-Cj014G*vN+119q~Z$nWS;ZL z<>%bhQmyUM*zEwais+N_#hznio;-5K)TxQJVoeZ=`euPeAN_cfTn~TGMf3(%F%UjY zna4~hf@I;F%vh><)}V2a8jsl+(x7I;G4sl_>VQ8mV!V>zlvg-!z>^`ZNs8<}!`ZS~ ztI_5>#Z=q8to8Fk9DUd&DUr(=WyQathHzDLA*IrE|0yvsZa%56I1K-9ZQYd2^9CT^I3kWA(5lH zT*!_LkZd>n!KoS$%|H$V5ZO*-ERPw8vWr(>6!0FI`olkPy^Eo=phaw=g~sv4qH$}| z9g%litZ66p(d@A6gU;ssYr}sGF-mKE24woQ!3>+FVk^40t@QAZTxkecbH+T5`Yo`{FmhX>HFC1k@`akg zZnB%tF|Op@U5AIn1opM-sD%~(T+Uj*NPg9}4SXn{qYsogq8WT)Zhd5w0vbhQEbkBh zDBeZSBMT+OHr2(~l8NL#O)%D4J9;_|_PNbsifAhbieyhZgBw;x(2u)OtU2P~on3t# zpm#ZsBWRSGtu>Ao9v#}FgfLIJE!_|Q*p)D}83d0?f*%rBnGl9{KDLa|y$iN{?yYvW zHTUxA*~gxOGIgrLc-9k#g4vmOsh$M%q)h;VMr_(;yC61+rgj;Nab*`UyDT35@r!TV zL>sD#;m6xv+2Hzt3b|hCr^f(rrH%{jIka}o0jfr+kBxKfU~o*17)lAb5O_#i$bf#k z@G*0uM0P4{%k?`G5sp;qt<%FlaqS~>)=J?5gscVxQQMXr4c$<{);R|Dsx_0oT*q1` zXJ9R_05DTYRRb)QI&ecrOB8msB!T?anMlxlc}nj>sZ8Oh}?M2MMfqu?X4jm^?>EFcrf zsQlrdeU4F<+0mQ%OL>>>trXHG!;SXx`W;J`({`GoIf4a9dr$n?V> zx%QFSwYIMdaEYpB3U)*cNjj--CmE+oGGs3h*1(4+g{KrwVIUHxcYtbU=-ShPV+-hYC{Koudidwx`qn$2J4xnu{MyI2reBR`AH994Cq8F7#Lxfm zH-Bh%`kcS}i%UUAM`@%!@>Q~==|NZCR`P_f;@4Wf#_nv+5vRi%L6qno2 z{6(IK+c*BP!s93Wo3F0>Pxu{w{@L-v@9BAc?~6^WAHL!DKd9$F>7;!5;q&)j{zQN4 zkF;yP@Q3|jIsFU2;UCmHKW8e=JAX8&*AMGf;CX%ghmT=i-LAc4DWZrE8#?!UB(>D6 z)A6%LxKp%!6eYISW!6}qG!VygX+h$h;D)0mv(m8?kyqEHV@Fqbb4}I1*mV*NGAMCeK={J zT1atD+^q$Wz>yr=JezbJ^Ni7ls~nxHeHy9)LI(YzuYE-r7q1+`?83I};Gg>~@+Yl&l^* z4x}H$d&Z{6aOTaOaF+=v_|GgNNrY%Q2V^h1hE|qEL4bN#r*ZP0=}9*<7c{>mi zmP#yq&XH#8q}14_wM?7|b3FV@SK&1PZfkp?lbMjN8PJrNrbpVqTwUiF3y^Sa#iAvQ ziZT8*2|4JPunoir+lEOZ(F5n>EO5IY^f70LiKxb;J$j$r7rLx-YxReJ`6@P=VWFB= zLSw%gl#Vq7@?Fi@*J>Nkc|xI#`@U?G)Ks#aLY+ALa96ZjYebtP49A?IglIkB$xAFY zm-v}32F@V>`N$JeiCeAIz2DAlOwqe9K79MtL;Lu6*DnLC1P2Q*Z3-DlIApJMkgPYR z?jv;s$GoG*(vV(J(N|wK_E^CQt!%_P9BA;`)tTOBG6bj6I2U;CNUE-E+5#%-lkwGt{dfX8p|L2>t|@&yKDFDux*10)?@V6aD5M2aC!pR5-Fp zkteO3ZJ?JGg776W6;^5eOkJSXr!;&3pmS3}e)HO`D?j`z*A5r0?J?ZP>M^-?`tFNk zqCP2fW;-!?f~u?oLU8HJqSu70)@?dCgW=(WQN|QKivdF3xzNSG0Hu^?BB5?;Y0?x& zI%91`a@x(zy7$}pOl0SI_rsUpePVhQ+9yLaHXuDjau!EmaW7Rk6w-AqvJ)~Km3oR$4tn4m(*(y4P47s+g3exR%*=1#Y`t|@sXS-(C za-`Pw?NhvPwMEdlC@+F$XYW>h^#EN~5{|&p6~mka7&OsF^R1ukjp%wTq&BCAghCgy zE=t?$9v&9+)AK;}XMr#kFbnVt5jHWMjR_26pN|colF8(tBiW__R}r$IJtuNAZEla-!L&nd-M!eR@Z)Z$S=3Q4rVwc&bK zwOv$m?)0_H7UgoJP{V5i6bdd^nFBYbaw=;Q#)BqkJy+o@IAQ*Kl!bWTw{tVEe$&gB zFP=RyrzZI4y+^}&SD;AX1qs4wG}~GZmxDoq001*Cu*gJquL`A>T)67-?44%@fPjP~ z@Yc|u?eVb}qT&jH5?s^UJO*i`;jARmo;Y8;svp6syWos$O;xBl{M&+tI3kS#dOt_3 zM@e%xq(wuHE1|m4!9VDcFJ8kB{`YL;5yM)Elu@X2@{BGm5D}A!l;ldUW&q4U7Dx~O z+I4y+%aHl0N+p03Y5$-u_L7Sb9!S( zI1r>1Y-4xkAgAV?(t3#OAo!jx&CSEV{?@mC*J}q91QM868kuG7L#Pvolwy5ih+sO1 zkqoI?DZHH)gYwe9t_2z0>bhE94i$^b@LUb(d+hqS0c(J0Vu(AWMl->qM5X+!-P&zZ z{kDPO(%^G|<;9yLAJZWHMwG-J)0r}-da zLp4j*jF67tunoTnJFO1iIwMz&wr+qTs};0^$WtpfE;L)lh-N4|<4Vg^9Hc|b5Qo8h zj$R6;hkxS@0E*qP>LTl7m$q!p95Hogv>HP$kxJn5y=XdO>DY9DV#ZC>q!6TjVfAwggV|oU}y?#i_C*NMBUcSHn;E(TF z+DOLY-SqA~i+>9zE=xABh8qil>PZn)B5m~o^mOEQIgq)w0<9O`S`>yT z#^7w(kfjScX0VKE=U5@D`Lc8#xfE9U6?bUWzC*yYxKvo9w<_zlc8^l5GM zooIuwgpHw_6^9fU(!JBf{l1j64fmA-T0MXm2`C|&w?Y{)?)5r!tMzszVLfgYp zN~cYIAjD_m`9vW2&0eU4~#1*rDI&4`>vLxfjvjq5T6^QgIdAH&3`cM(rz1HSoe z_qAITR>v`>nZkb71qRoSV-~P<0Nzy&Ov%-?Km2=deFe&V5C8rfxJh0NDP={#2r0TU z;fiaRIY8_c%TfH>>YSija;!o~39_S6^YAkn6_VjCE(>s+%+qJj@|3GEFeB{{5|vww zq4NM#2f%Xo6O4R@A&p-VlFca+FqX;uU@LEuyiVT*mUx^ba z*qKS9hZ@V^ddhPO3`)+GT=c+%chH*m@+XTu%eztxtGP9JsSa9 zvv4oOGhjz(b2NYvz@`hI48@}Ij%MJw&(_gUMd);5MLnU%z4aQmil;yB`!C|@=G48% z?MX`k-B=1x0F*xWMmgcF2i)lWa1C>4TfJZ&JX zEYAda&Rts;7MMVug2C_{AvGXQcyA@km~c!sJ(x1^a5qQ|7ZB56n_IO>3*=jtv-fNRoygk;)Hhyy z`26h;;zhjsZapTN-+Abs=y}Sgmef~&{^^(0ZlLJ}Z^nll!JAf(gExPngTY{gYZml0 z#lo4MEBaR3Bz0QuLdr{ag1khqXw|@Dw06NF7Gsqa4J3EMKtM#uvoW_l5mxu`pTCI` zt>uU)@mlb0A4oBHWFNJUTnwpJIyMt6p2te4MNdXHjf}&-asr*X%w`jWB&<9OB=EFU z5S8Q=F-?XW)Y%y;f(xX9p{|e6)VwyPXu$5c_E}@7vCeal)$0U+U&*{F+d!y@v~P2H9!I_s8qAB2v>v|sXfaaYEKkNbeqtf0cws@$ zQNf27R0$Bcu!8dmUv`5$RXVv&mv-zz+F`d_?Lfg(b1Rb+)mXNuuZREQ4NUt2?hNW_ z?G&(}CUkr=oo42Cgenc#-7jz_7?a9ZXEnUgfbw>TWb=YLi#xHC9yXcAV`!&Yd)u5P znP}fIY_FX?bOcoM`!>ny-Za}!xYs`bw0wMy{sAfLQ9!_*$L~#%hA-H4Jo{9}+MAE6 z;$EuTv?u^93?o%aUX7s-IwT3}cWmWDub{Mu${|9vmw^^POCd+i*?14wJts-Tc49)t zomUPy&O<3J273bvZ<&y{$FXYnh8lmyWPIyW0JTTTt2>Y38=H{7hza@XlYhCH6*x|M z_U%v~#$p`7CXd7-GnozNnU*?f11X8fQgVbLg2)Mhc2Js9+hale37&tM{QvB|*{`KZ zcHIZlWQ**ouB<8z^pjyEU;L8I9kGXqD8K*#1O78kBleCR%_M75-pr=?W^1q|61F7D zl4m{p!2=9W0z5q!k}VsyDT&lX+9E~DvIN_bY>^TLkuuhIv#K-Cy~$Ri>*l#l))SeT zU76>^{l19Ud$09dfzu)qq*L%Gz3rhui7Ym2Mspmt_R{nGMto_;^(!9AH(q!sZ%E-U zyn=W3NdC6l9?828NpCp(4E-b}Uo8dIasWgH-0rL-xI2~J#RZp*vc^tRS<0E98OMNi zoQx5@pcv!MRofxmg|`Y}C+^kYuPb#9vSJ8JG+3K&MEYJDcm9nY$bbIk9(m~%e2ov} z>&U18xqL*?N~Pj*42sZNNL$om2F5sQ&fGimA{gOZo zL(ML@7Rd@kfX;3+%bqc~wPed-8Mr5%Crno5LV4{aGG>P)gAaIbo)OUg3g0==f!26+!b^wk^6XYPU-mIs$ypo(QWu*1V5nrW5e3LZvZv!q5RMx@Ij%lSdXe1Q!wJb$?2=*d`!18d zSIh2g!qPRZIN>ycRTS+E?O+nONxeZM-gy_^>FS^b9FYnLyoiD%QC5I}L#mB~uGE|+ zE?27rZ$fCx1hNI|Y3D|iODE;L>VbTL%zlHlaN!la(+Bd!P~F$FLk{p;F^*`*G^1A@ zKtdr9rq6_*)2_DhL zieXodJ{8mDMmJpG7Y+gSJqp52dR24$(+Bbx}WJLq}DwgPl?$s#r<1FyMw zR~fok%z(m*b0hMlv$I}R(tJI8;$}&6*#*4QlIF#y@wEizdR@R$R+C*OCZPdrS3)nU zCS4X#48xUZ0mQi6U?^WM*2_k64Wir^s~q)TvptQ41`Ri(3TLfuMDR30LoLLkDHB}d zL=ki@yt{OW+N(;Mm-0+**cvXphId-hy!b?Z^8N3;6R9jI)`NCLK+*skget=6s8}au zEvB?fL^G;3$H0Kdpz9FSw z2!_ZZ5zx%2)TyQHHX1>>Gn=w|n2%aOIT#25Y*{^|q>N;xoKctrU}3FAmZu=Pg6fKO zK0>^7$l|YG*xV|!xbzCXw!-H12rU{1N;nCCGF1-f|o_I*(AW+5yxaLcPyEl;-(N`@(sfzy9I< zJk#sORQtkf_}UKdPrm=17dV0m2h*la;n* zhe8Ds##q}-5(EV2?W`jTXfV0!_DYiuDi*Z~i46qVZq54C8xQ4$<5z$EUGj*EyHVj> zcm-eEE_wa!?;OU|sf`BOygGy8n960!*u%)1PK4NYF-}@tbPLI>Z5~)O3`1}gTM33< zcxczY_n4?S6VMF@Py`Z~unPJfo2!i#8bre*rQeVQUpR^P*Khya(jLF``n|UH&+BN8 z>#jwi|DI)1ok*0z>s@9iQ$;p1EJn+{&up`5qdFtjjF#1qk6cTx?yV41Vs)X@EGZ+v zw`pZ@OG2xc25dDw2UA85A`+584(t*scYX5va((?Riyz~OzY5V8;YroEkHY!oU z%yf&R>x|Z2G57{G4fQ~&aH|!fnGFhsS*A5&XRYi z>ChJF6GIuXJ2IFsP=-zFd{%SmWbRiT)-S}Q-k4`!cm?nDuzvo%U*iMWRVVaQI(JZA zGM1CpjTUWI3`8b|1y&bzmI3gncLkyi*$q(WH;UaV;zSsMc)OQ6v~+5D@QX!9@z_n~ zsr{0^w#F? zat}m$-#TwuI<+pg#bLaOVlBonCUPP8S!JV5eQ zZ?9C0f6u46^EX_F7hbhIeMTI!-l9;8jsk|g?PeX0In@Oe ztYXl{aEsKo%j&ciFlsbsLy~;(?6pfeYgejx9ukGeK!O>tvc4iz=Y&D^+;w>AJdGPc z>K|S`z8$!I>4m$6%J*`zkA4=(K6h{!dr~R5kFkc=R??h|IvNLC0z)+GyU$tm$U&U7 zm##}qVFzj15i(3Gp~)Y8Rc}ZCWw!ylpHXe02P9_3EXD&5P_qPl52@eh)Ut1%2kz1f zcT1Gi%g`eGETBbqu)~$%i^c}C0HJUin^pmPh7v@BwuyP=&J^Sg2BNOpZs1_fM2?3| z?oCROgf6QTqun^_nhKtYFCEGOlEJDS$E6SOCTo)h1k3pjcj>I@PmbF!eE9JP@&4oI z&)s+Is~a2Kh1cztM1hx~+x!_px99NOqYB)$7RzPW?8gheZTCQMLLo@oWFx+_mC|K9 zw9m-gKFqkm{fJ#x)r6L5Cs5^3MQ`LUt`cG?Z8eyEP$z1IT5~}VbIzx}^v5~dk-l)1 zAABvJ+!i!FAnYgWscp(^k_A(}dGy)PrIRw?OjvbGA+J#Pcu7sC1w)lPRiup4Ml3;? zSxAE+0g)MsGz`rx5Xd6xWG!7#QI;`UUlTpNGbj`z3HY;zgsj8VI-`tPdNUV0u7O<2 zJ|1|yWo&8@)Rtg?v*zgdHldk=l4-|Y(!h>uhRmQHr45FW+d#LPW1DT`$))c$;j;CT zWO9VJo@@OsoDzTbc)YQ%9(@`>d)~&l@XFnqNy0DfAoSVL%Rdh&{*4q+dF%nd%W5~Otg)g~g;qzz_SoS1?S=l%=0If2CfpSVTd%b^s2Dc4L$147 zYrtICVr(u590v>lOAESSEnL<1;K*?Iss9yTb{d^<2=NpOOJ0>;Q?NBRpiuB2I53NzAF;WXXw3dz5ezsxg zBLs4jSjRw>hZesYM^kk+2cBzN9TWs2t8c(?qOGD4eauy>v~F{GYjWCpE&vf7rAt+EtknQ9H0brA^I;!a5fx}t-u zY`frswzYQLvz&;hmOZ6csZCpvhAaguEwJyR6A`*+!dzlV>_nGe;`Ebuk-^-Sb&Nc8 zz)7&Hs!TXG8Ji5rXsNTJ+kv?@ zO?JTnSPSqwjbrzwkvD{q7mjy7d*UBF`|$Dae3p;)hKrds8kLtMFsNjREp0?x#O}7g$yV_CYZnRsy66L++Qtz(lj^n#eq^hea?jJ%crV z&bA#+L+Eg8ABCEvBPVU^1oTXt6%A%r6t(?`1?`$=H&fsSMN(nS`Q^vk;C^4~I$NnE2HoAb2Gpg@Kfx z@I!9udy^`V?W8tGsvD~=H$<9l$r5W)gCZMv^Tae8G*ii$t)Jg7E*;2q_QZYfK3xITj zO$NsoE-m1r!%P=e*s89AXk-XyyU4c5%dD*KyCf0^qBaeUZW!Q2P55r;{OP-N9@W{? z_g2oUr}OIZ{P5P8uuCuAEhy@j3GDP)5ZLcPj$s@5BLs=PHS%Hj#@kHwAlNW11dL+` z!WB5@9&>_JQ(?7(v98z6EuvSHoq?M}#3~z|Zgjmj#4cqHFP$(lv1u+!SiF?^ZG6aH zdgX3BapTMNrC_@2U*EeYZV8(-Dm`fQW)XEar9c=!fpTEZq@vKX)TY`XbsYhv3c^CV zOYft!bZZD>Ni3~&tBFbAZV2-1ioTwJST}cVpo_v5B5iDm8#(8f4v9H`;*Jsc)zcq+ zKW|PHF1&KL%)skQjlk<)-@7M{m8mR}(#P%szZ7Q4OTfLuR8SM`)j6owK|Zu^ zpJTvXKvYY!6mxA$t*0>p;%C}WS(8Ni%-IQC;w*~Mk)f$P`U-PCPdWD@!VN*twJ~`A zKD6rLtV5>rYIVcFr>PT1=14SmiB317ZPSDIz!G5mw&PgvY1t+|Cj zigi{7e0c61wJUb4i8z(f`|dfqm!i%SU2Qr2*)P5Kou4^nFkMqd8`cd=UN2?Up;^{1w=!5T5m&Th7KQd2x+4Uk=Wk4(U{;IbCf z3*D^v`Rw?@*)`|QtKa!7pXH+u9>pNgumh9Eo ziG&B6V6#F$qc2zt>sIt~Rm?EzsEm0H7`;Wo37xT8kYd0yz>U^G_|ooJ!5zM{4ft`O zS`tnXLh)Q-CmZdc4&7i|UOLqNyo`GK(e-uq(e=dU{Gq$>;=LYS=V9^R6YoU#!9AAJ zOazRDB6}s3nyYV5!XPva2Qy{Mm38|f2K&843E{P+U`&8Ic~@<LY;bb59?CE{x=aVg zqUIX1Q>CV|W#43q^vPPeZ1bKT6)s*8rk263urh)TeLg__Ho970dgX4JlJVJ;j6a)6 zK^X*UE;kbD6BLMq>lOF2ZUdT0NTW1r6n9pqo;~5OnTA9e7#&uZ+FAEBke$+ZXPYf!Y#ES|t=bMo>bWEN(rIDm z$%R*Q=aWbNZ0~$>!~1#RrMu;xUta2BT>tvs-7+9Q@4I%~8R1GSedFC3QdeT;5;L;a zrHjFq)I`{iDA#>O_(bM8d4Lc#!dD~FyLk4NK zc+BeD3L{;WNpr$beE!H?SZ8$JMwnmy>XZEHe43B)$&-(6Jav~|y<3eebY^7vEVkQf zF|p@Y9bDNrcFNv1dZbj4oKUPGk+~Z%XtMyL1^OCtCh)c+pNnx*N5F`zR%Ib?B6p2t zQ_vM*nt5Q=F=6CxEP!#8iKdaB{yZ9agKe8q#cT>Tai}bC_cwzdt?cS+)!JiMpVStG zCTQ#+_?DW^9{6EfRKbkjai^;>O90IY^v9kVH7FKs9NSrkOYIg`X&A44`U`i^$Ri`_ zHb8(dO{+u4(c~nq9V4*p!(zdX=Lid!v7_QEAg-FKL^bkJ+7<*9yCImM4Io3>@YxxW zuRCk2os0T_tskhz+*()bCg+>}rEB-IH}HENUp@Np*#~}e$G`Nt-FWxf*;S|APbEYf z2!0u?-j?U^u!O9x&g}TYKCQGtn-GP$BuN!bv*Sq4IeRNQWcJl+ApJK9hf z0|rS+UDa^lG0oLbaPdvG3Z4q#&=!+`dfeO+a9ym3I#QBLujgN;iNvi30m_lRq(hEWV9XW z&s%^dVSs8=L0R03IChPVl+y|jXw44SZFK3l5i%gKNjzr}ba49yl8h>OocbDF1ob>hBk*2!sS+5t7kZ zBu9!mc+f~T*2$w2+a{>EIZi)w2iF|*c9pD8nzTeQd6SW)0b$OY;JT$D6$K*A+z?id zW?d5{T{mRdaLmcoN_gWYj!QjeaKT!o?;-|#OP^3LZh%{A18!mP08Qpx{(0g4!Ff;T z@dwYIeDLha58~6E=LTGOO1`U-d%K#kumGkpk)lx_x3V3xmz1WoyvwO zeGdh84K!&FYO#8nS=Hf*teR@lN*TRWS~!}Tw34kWDg|W5A_tdLcUMG*gUq=tW#)gg=5{b0uj`2 zcyTXWE}vhmA7kyFKDv7PEhx1GAbvbvNf9=u>cZ&q*dzHt0^WpT8mSxY~86LhA5HK4*NB`D2{}n zR#vwfL)@3f=+J>6YgNYtXR-?#e1%s@Qi2H@ey)QHNU8bLl*;o2a$-$-9?8Rs8C;qXoJ$~}^*?j*!1V&A99my?R z+R%b2#Y*;FX|UHG6te&wlUmy5U{Puco~&3OoqPy@Bn@+4c%GYiByM_8GLPAmqbRhVJM9BM;*S$VnZHXiAvniEIo3N*9n4 zi{3Gw!7Q;5`1Whz@Ti!#@?wi79Y3a3tS9UO0P0Yw$~`(J94(UYj+k; zL-(l+^dQm+cgdh`U^@eg+sCXUDiC~W%Cw7w5_pkyiKBHfRJcGVlLa=5(6y)T-3c)i z3k`H(SPRidq{1Ut>0Q@w4^9&)ryqN8@Z$h5PsTM7kv!32a?!mFv9U+s60E#p4&q(Y zRadiM2*Q!zJT@SmTcG&De}avX@qS^CNAmL8=#UhSGK!2Y1>rl)VWU=Vt>B{Rf`@=*M~W{bzsj2k=+FgY$hW^*Ud?hEF_u@s7Eudk2 zrSCq6h_yZ0h?ksS$Yxow4x#?umSB+{p)*=5kR^L{G^wc6vW~yA_W@l${K~5}sP~K^ zx5nq|(dWwASe9)?>!2M$v%JK#m%_~pf)RJo0j;WLoNrp+{gGciUXSOEOWCED?e=|( z`{-V~@2XBb2jjZwy`dkOo?bD}3?x1$6lo%bCexUuAhm=6*&1!HKFpg<#Dn`H-FS

tBEC`<8K+90jIi=Ul^Q>q^mU?}f+Y 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 = { + electronApp: [ + async ({ obsidian: {vault} }, run) => { + process.env.ELECTRON_DISABLE_SECURITY_WARNINGS = "true"; + const electronApp = await electron.launch({ + executablePath: getExe(), + args: [!!vault && `obsidian://open?vault=${encodeURI(vault)}`].filter(a => !!a) as string[], + }); + await run(electronApp); + await electronApp.close(); + }, + { auto: true }, + ], + page: [ + async ({ electronApp }, run) => { + const page = await electronApp.firstWindow(); + await run(page); + }, + { auto: true }, + ], + app: [async ({ page }, run) => { + const app = await page.evaluate("window.app"); + await run(app); + }, {auto: true}], + obsidian: [{}, {option: true}] +}; +// @ts-ignore some error about a string type now having `undefined` as part of it's union +export const test = base.extend(obsidianTestFixtures); diff --git a/src/tester.ts b/src/tester.ts new file mode 100644 index 0000000..f9c0a70 --- /dev/null +++ b/src/tester.ts @@ -0,0 +1,114 @@ +import { + _electron, + _electron as electron, + ElectronApplication, + Page, +} from "playwright"; +import {expect} from "vitest" +import { App, TFile, Vault } from "obsidian"; +import { execSync } from "child_process"; +import path from "path"; +import { EOL } from "os"; +type RawOptions = NonNullable[0]>; +export type TestOptions = Omit & { + vault: string; +}; +export class ObsidianTester { + #loadPromise: Promise; + + public electronApp: ElectronApplication | null = null; + public page: Page; + public app: App; + + constructor(options: Partial) { + const args = [...(options.args || [])]; + if (options.vault) + args.push(`obsidian://open?vault=${encodeURI(options.vault)}`); + this.#loadPromise = new Promise((res, rej) => { + electron + .launch({ + ...options, + args, + executablePath: ObsidianTester.getExe(), + }) + .then((v) => { + this.postInit(v).then(() => { + res(); + }); + }) + .catch((e) => rej(e)); + }); + } + public get vault(): Vault { + return this.app.vault + } + + public async doWithApp( + callback: (app: App) => Promise + ): Promise { + await this.#loadPromise; + return await callback(this.app); + } + + public async doWithVault( + callback: (vault: Vault) => Promise + ): Promise { + await this.#loadPromise; + return await callback(this.app.vault); + } + + public async assertFileEquals(path: string, expectedContent: string, cached: boolean = true) { + await this.#loadPromise; + const fileContent = await this.readFile(path, cached); + + expect(fileContent).toEqual(this.normalizeEOL(expectedContent)); + } + public async assertLineEquals(path: string, lineNumber: number, expectedContent: string, cached: boolean = true) { + await this.#loadPromise; + const fileContent = await this.readFile(path, cached); + + expect(fileContent.split("\n")[lineNumber]).toEqual(this.normalizeEOL(expectedContent)); + } + + public async assertLinesEqual(filePath: string, start: number, end: number, expected: string, cached: boolean = true) { + await this.#loadPromise; + const fileContent = await this.readFile(filePath, cached); + const lines = fileContent.split("\n").slice(start, end); + const expectedLines = this.normalizeEOL(expected).split("\n"); + expect(lines.every((l, i) => l == expectedLines[i])).toEqual(true); + } + + public getFile(file: string): TFile { + let f = this.app.vault.getFileByPath(file); + if(!f) { + throw new Error("File does not exist in vault."); + } + return f; + } + + normalizeEOL(str: string): string { + return str.split(/\r\n|\r|\n/).join("\n"); + } + + async readFile(path: string, cached: boolean = true): Promise { + await this.#loadPromise; + const file = this.getFile(path); + return this.normalizeEOL(await (cached ? this.app.vault.cachedRead(file) : this.app.vault.read(file))); + } + + private async postInit(electronApp: ElectronApplication) { + this.electronApp = electronApp; + this.page = await this.electronApp.firstWindow(); + this.app = await this.page.evaluate("window.app"); + } + + public static getExe(): string { + if (process.platform == "win32") { + return path.join(process.env.LOCALAPPDATA!, "Obsidian", "Obsidian.exe"); + } + if (process.platform == "darwin") { + throw new Error("use a non-toy operating system, dumbass"); + } + return execSync("command -v obsidian").toString(); + } +} diff --git a/src/util.ts b/src/util.ts new file mode 100644 index 0000000..b3dc3c4 --- /dev/null +++ b/src/util.ts @@ -0,0 +1,65 @@ +import { App, TFile } from "obsidian"; +import { PlaywrightTestArgs } from "playwright/test"; +import { expect } from "vitest"; +import { ObsidianTestFixtures } from "./fixtures"; +import { test } from "src"; + +// type TestArgs = Parameters[2]>[0]; + +export async function assertFileEquals( + app: App, + path: string, + expectedContent: string, + cached: boolean = true +) { + const fileContent = await readFile(app, path, cached); + + expect(fileContent).toEqual(normalizeEOL(expectedContent)); +} +export async function assertLineEquals( + app: App, + path: string, + lineNumber: number, + expectedContent: string, + cached: boolean = true +) { + const fileContent = await readFile(app, path, cached); + + expect(fileContent.split("\n")[lineNumber]).toEqual( + normalizeEOL(expectedContent) + ); +} + +export async function assertLinesEqual( + app: App, + filePath: string, + start: number, + end: number, + expected: string, + cached: boolean = true +) { + const fileContent = await readFile(app, filePath, cached); + const lines = fileContent.split("\n").slice(start, end); + const expectedLines = normalizeEOL(expected).split("\n"); + expect(lines.every((l, i) => l == expectedLines[i])).toEqual(true); +} + +export function getFile(app: App, file: string): TFile { + let f = app.vault.getFileByPath(file); + if (!f) { + throw new Error("File does not exist in vault."); + } + return f; +} + +function normalizeEOL(str: string): string { + return str.split(/\r\n|\r|\n/).join("\n"); +} + +async function readFile(app: App, path: string, cached: boolean = true): Promise { + const file = getFile(app, path); + return normalizeEOL( + await (cached ? app.vault.cachedRead(file) : app.vault.read(file)) + ); +} + diff --git a/test-project/.editorconfig b/test-project/.editorconfig new file mode 100644 index 0000000..84b8a66 --- /dev/null +++ b/test-project/.editorconfig @@ -0,0 +1,10 @@ +# top-most EditorConfig file +root = true + +[*] +charset = utf-8 +end_of_line = lf +insert_final_newline = true +indent_style = tab +indent_size = 4 +tab_width = 4 diff --git a/test-project/.eslintignore b/test-project/.eslintignore new file mode 100644 index 0000000..e019f3c --- /dev/null +++ b/test-project/.eslintignore @@ -0,0 +1,3 @@ +node_modules/ + +main.js diff --git a/test-project/.eslintrc b/test-project/.eslintrc new file mode 100644 index 0000000..0807290 --- /dev/null +++ b/test-project/.eslintrc @@ -0,0 +1,23 @@ +{ + "root": true, + "parser": "@typescript-eslint/parser", + "env": { "node": true }, + "plugins": [ + "@typescript-eslint" + ], + "extends": [ + "eslint:recommended", + "plugin:@typescript-eslint/eslint-recommended", + "plugin:@typescript-eslint/recommended" + ], + "parserOptions": { + "sourceType": "module" + }, + "rules": { + "no-unused-vars": "off", + "@typescript-eslint/no-unused-vars": ["error", { "args": "none" }], + "@typescript-eslint/ban-ts-comment": "off", + "no-prototype-builtins": "off", + "@typescript-eslint/no-empty-function": "off" + } + } \ No newline at end of file diff --git a/test-project/.gitignore b/test-project/.gitignore new file mode 100644 index 0000000..e09a007 --- /dev/null +++ b/test-project/.gitignore @@ -0,0 +1,22 @@ +# vscode +.vscode + +# Intellij +*.iml +.idea + +# npm +node_modules + +# Don't include the compiled main.js file in the repo. +# They should be uploaded to GitHub releases instead. +main.js + +# Exclude sourcemaps +*.map + +# obsidian +data.json + +# Exclude macOS Finder (System Explorer) View States +.DS_Store diff --git a/test-project/.npmrc b/test-project/.npmrc new file mode 100644 index 0000000..b973752 --- /dev/null +++ b/test-project/.npmrc @@ -0,0 +1 @@ +tag-version-prefix="" \ No newline at end of file diff --git a/test-project/README.md b/test-project/README.md new file mode 100644 index 0000000..578b2e2 --- /dev/null +++ b/test-project/README.md @@ -0,0 +1,96 @@ +# Obsidian Sample Plugin + +This is a sample plugin for Obsidian (https://obsidian.md). + +This project uses TypeScript to provide type checking and documentation. +The repo depends on the latest plugin API (obsidian.d.ts) in TypeScript Definition format, which contains TSDoc comments describing what it does. + +**Note:** The Obsidian API is still in early alpha and is subject to change at any time! + +This sample plugin demonstrates some of the basic functionality the plugin API can do. +- Adds a ribbon icon, which shows a Notice when clicked. +- Adds a command "Open Sample Modal" which opens a Modal. +- Adds a plugin setting tab to the settings page. +- Registers a global click event and output 'click' to the console. +- Registers a global interval which logs 'setInterval' to the console. + +## First time developing plugins? + +Quick starting guide for new plugin devs: + +- Check if [someone already developed a plugin for what you want](https://obsidian.md/plugins)! There might be an existing plugin similar enough that you can partner up with. +- Make a copy of this repo as a template with the "Use this template" button (login to GitHub if you don't see it). +- Clone your repo to a local development folder. For convenience, you can place this folder in your `.obsidian/plugins/your-plugin-name` folder. +- Install NodeJS, then run `npm i` in the command line under your repo folder. +- Run `npm run dev` to compile your plugin from `main.ts` to `main.js`. +- Make changes to `main.ts` (or create new `.ts` files). Those changes should be automatically compiled into `main.js`. +- Reload Obsidian to load the new version of your plugin. +- Enable plugin in settings window. +- For updates to the Obsidian API run `npm update` in the command line under your repo folder. + +## Releasing new releases + +- Update your `manifest.json` with your new version number, such as `1.0.1`, and the minimum Obsidian version required for your latest release. +- Update your `versions.json` file with `"new-plugin-version": "minimum-obsidian-version"` so older versions of Obsidian can download an older version of your plugin that's compatible. +- Create new GitHub release using your new version number as the "Tag version". Use the exact version number, don't include a prefix `v`. See here for an example: https://github.com/obsidianmd/obsidian-sample-plugin/releases +- Upload the files `manifest.json`, `main.js`, `styles.css` as binary attachments. Note: The manifest.json file must be in two places, first the root path of your repository and also in the release. +- Publish the release. + +> You can simplify the version bump process by running `npm version patch`, `npm version minor` or `npm version major` after updating `minAppVersion` manually in `manifest.json`. +> The command will bump version in `manifest.json` and `package.json`, and add the entry for the new version to `versions.json` + +## Adding your plugin to the community plugin list + +- Check the [plugin guidelines](https://docs.obsidian.md/Plugins/Releasing/Plugin+guidelines). +- Publish an initial version. +- Make sure you have a `README.md` file in the root of your repo. +- Make a pull request at https://github.com/obsidianmd/obsidian-releases to add your plugin. + +## How to use + +- Clone this repo. +- Make sure your NodeJS is at least v16 (`node --version`). +- `npm i` or `yarn` to install dependencies. +- `npm run dev` to start compilation in watch mode. + +## Manually installing the plugin + +- Copy over `main.js`, `styles.css`, `manifest.json` to your vault `VaultFolder/.obsidian/plugins/your-plugin-id/`. + +## Improve code quality with eslint (optional) +- [ESLint](https://eslint.org/) is a tool that analyzes your code to quickly find problems. You can run ESLint against your plugin to find common bugs and ways to improve your code. +- To use eslint with this project, make sure to install eslint from terminal: + - `npm install -g eslint` +- To use eslint to analyze this project use this command: + - `eslint main.ts` + - eslint will then create a report with suggestions for code improvement by file and line number. +- If your source code is in a folder, such as `src`, you can use eslint with this command to analyze all files in that folder: + - `eslint .\src\` + +## Funding URL + +You can include funding URLs where people who use your plugin can financially support it. + +The simple way is to set the `fundingUrl` field to your link in your `manifest.json` file: + +```json +{ + "fundingUrl": "https://buymeacoffee.com" +} +``` + +If you have multiple URLs, you can also do: + +```json +{ + "fundingUrl": { + "Buy Me a Coffee": "https://buymeacoffee.com", + "GitHub Sponsor": "https://github.com/sponsors", + "Patreon": "https://www.patreon.com/" + } +} +``` + +## API Documentation + +See https://github.com/obsidianmd/obsidian-api diff --git a/test-project/esbuild.config.mjs b/test-project/esbuild.config.mjs new file mode 100644 index 0000000..a5de8b8 --- /dev/null +++ b/test-project/esbuild.config.mjs @@ -0,0 +1,49 @@ +import esbuild from "esbuild"; +import process from "process"; +import builtins from "builtin-modules"; + +const banner = +`/* +THIS IS A GENERATED/BUNDLED FILE BY ESBUILD +if you want to view the source, please visit the github repository of this plugin +*/ +`; + +const prod = (process.argv[2] === "production"); + +const context = await esbuild.context({ + banner: { + js: banner, + }, + entryPoints: ["main.ts"], + bundle: true, + external: [ + "obsidian", + "electron", + "@codemirror/autocomplete", + "@codemirror/collab", + "@codemirror/commands", + "@codemirror/language", + "@codemirror/lint", + "@codemirror/search", + "@codemirror/state", + "@codemirror/view", + "@lezer/common", + "@lezer/highlight", + "@lezer/lr", + ...builtins], + format: "cjs", + target: "es2018", + logLevel: "info", + sourcemap: prod ? false : "inline", + treeShaking: true, + outfile: "main.js", + minify: prod, +}); + +if (prod) { + await context.rebuild(); + process.exit(0); +} else { + await context.watch(); +} diff --git a/test-project/main.ts b/test-project/main.ts new file mode 100644 index 0000000..f27ff6d --- /dev/null +++ b/test-project/main.ts @@ -0,0 +1,134 @@ +import { App, Editor, MarkdownView, Modal, Notice, Plugin, PluginSettingTab, Setting } from 'obsidian'; + +// Remember to rename these classes and interfaces! + +interface MyPluginSettings { + mySetting: string; +} + +const DEFAULT_SETTINGS: MyPluginSettings = { + mySetting: 'default' +} + +export default class MyPlugin extends Plugin { + settings: MyPluginSettings; + + async onload() { + await this.loadSettings(); + + // This creates an icon in the left ribbon. + const ribbonIconEl = this.addRibbonIcon('dice', 'Sample Plugin', (evt: MouseEvent) => { + // Called when the user clicks the icon. + new Notice('This is a notice!', 0); + }); + // Perform additional things with the ribbon + ribbonIconEl.addClass('my-plugin-ribbon-class'); + + // This adds a status bar item to the bottom of the app. Does not work on mobile apps. + const statusBarItemEl = this.addStatusBarItem(); + statusBarItemEl.setText('Status Bar Text'); + + // This adds a simple command that can be triggered anywhere + this.addCommand({ + id: 'open-sample-modal-simple', + name: 'Open sample modal (simple)', + callback: () => { + new SampleModal(this.app).open(); + } + }); + // This adds an editor command that can perform some operation on the current editor instance + this.addCommand({ + id: 'sample-editor-command', + name: 'Sample editor command', + editorCallback: (editor: Editor, view: MarkdownView) => { + console.log(editor.getSelection()); + editor.replaceSelection('Sample Editor Command'); + } + }); + // This adds a complex command that can check whether the current state of the app allows execution of the command + this.addCommand({ + id: 'open-sample-modal-complex', + name: 'Open sample modal (complex)', + checkCallback: (checking: boolean) => { + // Conditions to check + const markdownView = this.app.workspace.getActiveViewOfType(MarkdownView); + if (markdownView) { + // If checking is true, we're simply "checking" if the command can be run. + // If checking is false, then we want to actually perform the operation. + if (!checking) { + new SampleModal(this.app).open(); + } + + // This command will only show up in Command Palette when the check function returns true + return true; + } + } + }); + + // This adds a settings tab so the user can configure various aspects of the plugin + this.addSettingTab(new SampleSettingTab(this.app, this)); + + // If the plugin hooks up any global DOM events (on parts of the app that doesn't belong to this plugin) + // Using this function will automatically remove the event listener when this plugin is disabled. + this.registerDomEvent(document, 'click', (evt: MouseEvent) => { + console.log('click', evt); + }); + + // When registering intervals, this function will automatically clear the interval when the plugin is disabled. + this.registerInterval(window.setInterval(() => console.log('setInterval'), 5 * 60 * 1000)); + } + + onunload() { + + } + + async loadSettings() { + this.settings = Object.assign({}, DEFAULT_SETTINGS, await this.loadData()); + } + + async saveSettings() { + await this.saveData(this.settings); + } +} + +class SampleModal extends Modal { + constructor(app: App) { + super(app); + } + + onOpen() { + const {contentEl} = this; + contentEl.setText('Woah!'); + } + + onClose() { + const {contentEl} = this; + contentEl.empty(); + } +} + +class SampleSettingTab extends PluginSettingTab { + plugin: MyPlugin; + + constructor(app: App, plugin: MyPlugin) { + super(app, plugin); + this.plugin = plugin; + } + + display(): void { + const {containerEl} = this; + + containerEl.empty(); + + new Setting(containerEl) + .setName('Setting #1') + .setDesc('It\'s a secret') + .addText(text => text + .setPlaceholder('Enter your secret') + .setValue(this.plugin.settings.mySetting) + .onChange(async (value) => { + this.plugin.settings.mySetting = value; + await this.plugin.saveSettings(); + })); + } +} diff --git a/test-project/manifest.json b/test-project/manifest.json new file mode 100644 index 0000000..dfa940e --- /dev/null +++ b/test-project/manifest.json @@ -0,0 +1,11 @@ +{ + "id": "sample-plugin", + "name": "Sample Plugin", + "version": "1.0.0", + "minAppVersion": "0.15.0", + "description": "Demonstrates some of the capabilities of the Obsidian API.", + "author": "Obsidian", + "authorUrl": "https://obsidian.md", + "fundingUrl": "https://obsidian.md/pricing", + "isDesktopOnly": false +} diff --git a/test-project/package.json b/test-project/package.json new file mode 100644 index 0000000..3d7a2b4 --- /dev/null +++ b/test-project/package.json @@ -0,0 +1,29 @@ +{ + "name": "obsidian-sample-plugin", + "version": "1.0.0", + "private": true, + "description": "This is a sample plugin for Obsidian (https://obsidian.md)", + "main": "main.js", + "scripts": { + "dev": "node esbuild.config.mjs", + "build": "tsc -noEmit -skipLibCheck && node esbuild.config.mjs production", + "version": "node version-bump.mjs && git add manifest.json versions.json" + }, + "keywords": [], + "author": "", + "license": "MIT", + "dependencies": { + "obsidian-testing-framework": "workspace:^" + }, + "devDependencies": { + "@playwright/test": "^1.48.1", + "@types/node": "^16.11.6", + "@typescript-eslint/eslint-plugin": "5.29.0", + "@typescript-eslint/parser": "5.29.0", + "builtin-modules": "3.3.0", + "esbuild": "0.17.3", + "obsidian": "latest", + "tslib": "2.4.0", + "typescript": "4.7.4" + } +} diff --git a/test-project/playwright.config.ts b/test-project/playwright.config.ts new file mode 100644 index 0000000..7278860 --- /dev/null +++ b/test-project/playwright.config.ts @@ -0,0 +1,80 @@ +import { defineConfig, devices } from '@playwright/test'; + +/** + * Read environment variables from file. + * https://github.com/motdotla/dotenv + */ +// import dotenv from 'dotenv'; +// import path from 'path'; +// dotenv.config({ path: path.resolve(__dirname, '.env') }); + +/** + * See https://playwright.dev/docs/test-configuration. + */ +export default defineConfig({ + testDir: './tests', + + /* Run tests in files in parallel */ + fullyParallel: true, + /* Fail the build on CI if you accidentally left test.only in the source code. */ + forbidOnly: !!process.env.CI, + /* Retry on CI only */ + retries: process.env.CI ? 2 : 0, + /* Opt out of parallel tests on CI. */ + workers: process.env.CI ? 1 : undefined, + /* Reporter to use. See https://playwright.dev/docs/test-reporters */ + reporter: 'html', + /* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */ + use: { + /* Base URL to use in actions like `await page.goto('/')`. */ + // baseURL: 'http://127.0.0.1:3000', + + /* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */ + trace: 'on-first-retry', + }, + + /* Configure projects for major browsers */ + projects: [ + { + name: 'chromium', + use: { ...devices['Desktop Chrome'] }, + }, + + { + name: 'firefox', + use: { ...devices['Desktop Firefox'] }, + }, + + { + name: 'webkit', + use: { ...devices['Desktop Safari'] }, + }, + + /* Test against mobile viewports. */ + // { + // name: 'Mobile Chrome', + // use: { ...devices['Pixel 5'] }, + // }, + // { + // name: 'Mobile Safari', + // use: { ...devices['iPhone 12'] }, + // }, + + /* Test against branded browsers. */ + // { + // name: 'Microsoft Edge', + // use: { ...devices['Desktop Edge'], channel: 'msedge' }, + // }, + // { + // name: 'Google Chrome', + // use: { ...devices['Desktop Chrome'], channel: 'chrome' }, + // }, + ], + + /* Run your local dev server before starting the tests */ + // webServer: { + // command: 'npm run start', + // url: 'http://127.0.0.1:3000', + // reuseExistingServer: !process.env.CI, + // }, +}); diff --git a/test-project/tests-examples/demo-todo-app.spec.ts b/test-project/tests-examples/demo-todo-app.spec.ts new file mode 100644 index 0000000..8641cb5 --- /dev/null +++ b/test-project/tests-examples/demo-todo-app.spec.ts @@ -0,0 +1,437 @@ +import { test, expect, type Page } from '@playwright/test'; + +test.beforeEach(async ({ page }) => { + await page.goto('https://demo.playwright.dev/todomvc'); +}); + +const TODO_ITEMS = [ + 'buy some cheese', + 'feed the cat', + 'book a doctors appointment' +] as const; + +test.describe('New Todo', () => { + test('should allow me to add todo items', async ({ page }) => { + // create a new todo locator + const newTodo = page.getByPlaceholder('What needs to be done?'); + + // Create 1st todo. + await newTodo.fill(TODO_ITEMS[0]); + await newTodo.press('Enter'); + + // Make sure the list only has one todo item. + await expect(page.getByTestId('todo-title')).toHaveText([ + TODO_ITEMS[0] + ]); + + // Create 2nd todo. + await newTodo.fill(TODO_ITEMS[1]); + await newTodo.press('Enter'); + + // Make sure the list now has two todo items. + await expect(page.getByTestId('todo-title')).toHaveText([ + TODO_ITEMS[0], + TODO_ITEMS[1] + ]); + + await checkNumberOfTodosInLocalStorage(page, 2); + }); + + test('should clear text input field when an item is added', async ({ page }) => { + // create a new todo locator + const newTodo = page.getByPlaceholder('What needs to be done?'); + + // Create one todo item. + await newTodo.fill(TODO_ITEMS[0]); + await newTodo.press('Enter'); + + // Check that input is empty. + await expect(newTodo).toBeEmpty(); + await checkNumberOfTodosInLocalStorage(page, 1); + }); + + test('should append new items to the bottom of the list', async ({ page }) => { + // Create 3 items. + await createDefaultTodos(page); + + // create a todo count locator + const todoCount = page.getByTestId('todo-count') + + // Check test using different methods. + await expect(page.getByText('3 items left')).toBeVisible(); + await expect(todoCount).toHaveText('3 items left'); + await expect(todoCount).toContainText('3'); + await expect(todoCount).toHaveText(/3/); + + // Check all items in one call. + await expect(page.getByTestId('todo-title')).toHaveText(TODO_ITEMS); + await checkNumberOfTodosInLocalStorage(page, 3); + }); +}); + +test.describe('Mark all as completed', () => { + test.beforeEach(async ({ page }) => { + await createDefaultTodos(page); + await checkNumberOfTodosInLocalStorage(page, 3); + }); + + test.afterEach(async ({ page }) => { + await checkNumberOfTodosInLocalStorage(page, 3); + }); + + test('should allow me to mark all items as completed', async ({ page }) => { + // Complete all todos. + await page.getByLabel('Mark all as complete').check(); + + // Ensure all todos have 'completed' class. + await expect(page.getByTestId('todo-item')).toHaveClass(['completed', 'completed', 'completed']); + await checkNumberOfCompletedTodosInLocalStorage(page, 3); + }); + + test('should allow me to clear the complete state of all items', async ({ page }) => { + const toggleAll = page.getByLabel('Mark all as complete'); + // Check and then immediately uncheck. + await toggleAll.check(); + await toggleAll.uncheck(); + + // Should be no completed classes. + await expect(page.getByTestId('todo-item')).toHaveClass(['', '', '']); + }); + + test('complete all checkbox should update state when items are completed / cleared', async ({ page }) => { + const toggleAll = page.getByLabel('Mark all as complete'); + await toggleAll.check(); + await expect(toggleAll).toBeChecked(); + await checkNumberOfCompletedTodosInLocalStorage(page, 3); + + // Uncheck first todo. + const firstTodo = page.getByTestId('todo-item').nth(0); + await firstTodo.getByRole('checkbox').uncheck(); + + // Reuse toggleAll locator and make sure its not checked. + await expect(toggleAll).not.toBeChecked(); + + await firstTodo.getByRole('checkbox').check(); + await checkNumberOfCompletedTodosInLocalStorage(page, 3); + + // Assert the toggle all is checked again. + await expect(toggleAll).toBeChecked(); + }); +}); + +test.describe('Item', () => { + + test('should allow me to mark items as complete', async ({ page }) => { + // create a new todo locator + const newTodo = page.getByPlaceholder('What needs to be done?'); + + // Create two items. + for (const item of TODO_ITEMS.slice(0, 2)) { + await newTodo.fill(item); + await newTodo.press('Enter'); + } + + // Check first item. + const firstTodo = page.getByTestId('todo-item').nth(0); + await firstTodo.getByRole('checkbox').check(); + await expect(firstTodo).toHaveClass('completed'); + + // Check second item. + const secondTodo = page.getByTestId('todo-item').nth(1); + await expect(secondTodo).not.toHaveClass('completed'); + await secondTodo.getByRole('checkbox').check(); + + // Assert completed class. + await expect(firstTodo).toHaveClass('completed'); + await expect(secondTodo).toHaveClass('completed'); + }); + + test('should allow me to un-mark items as complete', async ({ page }) => { + // create a new todo locator + const newTodo = page.getByPlaceholder('What needs to be done?'); + + // Create two items. + for (const item of TODO_ITEMS.slice(0, 2)) { + await newTodo.fill(item); + await newTodo.press('Enter'); + } + + const firstTodo = page.getByTestId('todo-item').nth(0); + const secondTodo = page.getByTestId('todo-item').nth(1); + const firstTodoCheckbox = firstTodo.getByRole('checkbox'); + + await firstTodoCheckbox.check(); + await expect(firstTodo).toHaveClass('completed'); + await expect(secondTodo).not.toHaveClass('completed'); + await checkNumberOfCompletedTodosInLocalStorage(page, 1); + + await firstTodoCheckbox.uncheck(); + await expect(firstTodo).not.toHaveClass('completed'); + await expect(secondTodo).not.toHaveClass('completed'); + await checkNumberOfCompletedTodosInLocalStorage(page, 0); + }); + + test('should allow me to edit an item', async ({ page }) => { + await createDefaultTodos(page); + + const todoItems = page.getByTestId('todo-item'); + const secondTodo = todoItems.nth(1); + await secondTodo.dblclick(); + await expect(secondTodo.getByRole('textbox', { name: 'Edit' })).toHaveValue(TODO_ITEMS[1]); + await secondTodo.getByRole('textbox', { name: 'Edit' }).fill('buy some sausages'); + await secondTodo.getByRole('textbox', { name: 'Edit' }).press('Enter'); + + // Explicitly assert the new text value. + await expect(todoItems).toHaveText([ + TODO_ITEMS[0], + 'buy some sausages', + TODO_ITEMS[2] + ]); + await checkTodosInLocalStorage(page, 'buy some sausages'); + }); +}); + +test.describe('Editing', () => { + test.beforeEach(async ({ page }) => { + await createDefaultTodos(page); + await checkNumberOfTodosInLocalStorage(page, 3); + }); + + test('should hide other controls when editing', async ({ page }) => { + const todoItem = page.getByTestId('todo-item').nth(1); + await todoItem.dblclick(); + await expect(todoItem.getByRole('checkbox')).not.toBeVisible(); + await expect(todoItem.locator('label', { + hasText: TODO_ITEMS[1], + })).not.toBeVisible(); + await checkNumberOfTodosInLocalStorage(page, 3); + }); + + test('should save edits on blur', async ({ page }) => { + const todoItems = page.getByTestId('todo-item'); + await todoItems.nth(1).dblclick(); + await todoItems.nth(1).getByRole('textbox', { name: 'Edit' }).fill('buy some sausages'); + await todoItems.nth(1).getByRole('textbox', { name: 'Edit' }).dispatchEvent('blur'); + + await expect(todoItems).toHaveText([ + TODO_ITEMS[0], + 'buy some sausages', + TODO_ITEMS[2], + ]); + await checkTodosInLocalStorage(page, 'buy some sausages'); + }); + + test('should trim entered text', async ({ page }) => { + const todoItems = page.getByTestId('todo-item'); + await todoItems.nth(1).dblclick(); + await todoItems.nth(1).getByRole('textbox', { name: 'Edit' }).fill(' buy some sausages '); + await todoItems.nth(1).getByRole('textbox', { name: 'Edit' }).press('Enter'); + + await expect(todoItems).toHaveText([ + TODO_ITEMS[0], + 'buy some sausages', + TODO_ITEMS[2], + ]); + await checkTodosInLocalStorage(page, 'buy some sausages'); + }); + + test('should remove the item if an empty text string was entered', async ({ page }) => { + const todoItems = page.getByTestId('todo-item'); + await todoItems.nth(1).dblclick(); + await todoItems.nth(1).getByRole('textbox', { name: 'Edit' }).fill(''); + await todoItems.nth(1).getByRole('textbox', { name: 'Edit' }).press('Enter'); + + await expect(todoItems).toHaveText([ + TODO_ITEMS[0], + TODO_ITEMS[2], + ]); + }); + + test('should cancel edits on escape', async ({ page }) => { + const todoItems = page.getByTestId('todo-item'); + await todoItems.nth(1).dblclick(); + await todoItems.nth(1).getByRole('textbox', { name: 'Edit' }).fill('buy some sausages'); + await todoItems.nth(1).getByRole('textbox', { name: 'Edit' }).press('Escape'); + await expect(todoItems).toHaveText(TODO_ITEMS); + }); +}); + +test.describe('Counter', () => { + test('should display the current number of todo items', async ({ page }) => { + // create a new todo locator + const newTodo = page.getByPlaceholder('What needs to be done?'); + + // create a todo count locator + const todoCount = page.getByTestId('todo-count') + + await newTodo.fill(TODO_ITEMS[0]); + await newTodo.press('Enter'); + + await expect(todoCount).toContainText('1'); + + await newTodo.fill(TODO_ITEMS[1]); + await newTodo.press('Enter'); + await expect(todoCount).toContainText('2'); + + await checkNumberOfTodosInLocalStorage(page, 2); + }); +}); + +test.describe('Clear completed button', () => { + test.beforeEach(async ({ page }) => { + await createDefaultTodos(page); + }); + + test('should display the correct text', async ({ page }) => { + await page.locator('.todo-list li .toggle').first().check(); + await expect(page.getByRole('button', { name: 'Clear completed' })).toBeVisible(); + }); + + test('should remove completed items when clicked', async ({ page }) => { + const todoItems = page.getByTestId('todo-item'); + await todoItems.nth(1).getByRole('checkbox').check(); + await page.getByRole('button', { name: 'Clear completed' }).click(); + await expect(todoItems).toHaveCount(2); + await expect(todoItems).toHaveText([TODO_ITEMS[0], TODO_ITEMS[2]]); + }); + + test('should be hidden when there are no items that are completed', async ({ page }) => { + await page.locator('.todo-list li .toggle').first().check(); + await page.getByRole('button', { name: 'Clear completed' }).click(); + await expect(page.getByRole('button', { name: 'Clear completed' })).toBeHidden(); + }); +}); + +test.describe('Persistence', () => { + test('should persist its data', async ({ page }) => { + // create a new todo locator + const newTodo = page.getByPlaceholder('What needs to be done?'); + + for (const item of TODO_ITEMS.slice(0, 2)) { + await newTodo.fill(item); + await newTodo.press('Enter'); + } + + const todoItems = page.getByTestId('todo-item'); + const firstTodoCheck = todoItems.nth(0).getByRole('checkbox'); + await firstTodoCheck.check(); + await expect(todoItems).toHaveText([TODO_ITEMS[0], TODO_ITEMS[1]]); + await expect(firstTodoCheck).toBeChecked(); + await expect(todoItems).toHaveClass(['completed', '']); + + // Ensure there is 1 completed item. + await checkNumberOfCompletedTodosInLocalStorage(page, 1); + + // Now reload. + await page.reload(); + await expect(todoItems).toHaveText([TODO_ITEMS[0], TODO_ITEMS[1]]); + await expect(firstTodoCheck).toBeChecked(); + await expect(todoItems).toHaveClass(['completed', '']); + }); +}); + +test.describe('Routing', () => { + test.beforeEach(async ({ page }) => { + await createDefaultTodos(page); + // make sure the app had a chance to save updated todos in storage + // before navigating to a new view, otherwise the items can get lost :( + // in some frameworks like Durandal + await checkTodosInLocalStorage(page, TODO_ITEMS[0]); + }); + + test('should allow me to display active items', async ({ page }) => { + const todoItem = page.getByTestId('todo-item'); + await page.getByTestId('todo-item').nth(1).getByRole('checkbox').check(); + + await checkNumberOfCompletedTodosInLocalStorage(page, 1); + await page.getByRole('link', { name: 'Active' }).click(); + await expect(todoItem).toHaveCount(2); + await expect(todoItem).toHaveText([TODO_ITEMS[0], TODO_ITEMS[2]]); + }); + + test('should respect the back button', async ({ page }) => { + const todoItem = page.getByTestId('todo-item'); + await page.getByTestId('todo-item').nth(1).getByRole('checkbox').check(); + + await checkNumberOfCompletedTodosInLocalStorage(page, 1); + + await test.step('Showing all items', async () => { + await page.getByRole('link', { name: 'All' }).click(); + await expect(todoItem).toHaveCount(3); + }); + + await test.step('Showing active items', async () => { + await page.getByRole('link', { name: 'Active' }).click(); + }); + + await test.step('Showing completed items', async () => { + await page.getByRole('link', { name: 'Completed' }).click(); + }); + + await expect(todoItem).toHaveCount(1); + await page.goBack(); + await expect(todoItem).toHaveCount(2); + await page.goBack(); + await expect(todoItem).toHaveCount(3); + }); + + test('should allow me to display completed items', async ({ page }) => { + await page.getByTestId('todo-item').nth(1).getByRole('checkbox').check(); + await checkNumberOfCompletedTodosInLocalStorage(page, 1); + await page.getByRole('link', { name: 'Completed' }).click(); + await expect(page.getByTestId('todo-item')).toHaveCount(1); + }); + + test('should allow me to display all items', async ({ page }) => { + await page.getByTestId('todo-item').nth(1).getByRole('checkbox').check(); + await checkNumberOfCompletedTodosInLocalStorage(page, 1); + await page.getByRole('link', { name: 'Active' }).click(); + await page.getByRole('link', { name: 'Completed' }).click(); + await page.getByRole('link', { name: 'All' }).click(); + await expect(page.getByTestId('todo-item')).toHaveCount(3); + }); + + test('should highlight the currently applied filter', async ({ page }) => { + await expect(page.getByRole('link', { name: 'All' })).toHaveClass('selected'); + + //create locators for active and completed links + const activeLink = page.getByRole('link', { name: 'Active' }); + const completedLink = page.getByRole('link', { name: 'Completed' }); + await activeLink.click(); + + // Page change - active items. + await expect(activeLink).toHaveClass('selected'); + await completedLink.click(); + + // Page change - completed items. + await expect(completedLink).toHaveClass('selected'); + }); +}); + +async function createDefaultTodos(page: Page) { + // create a new todo locator + const newTodo = page.getByPlaceholder('What needs to be done?'); + + for (const item of TODO_ITEMS) { + await newTodo.fill(item); + await newTodo.press('Enter'); + } +} + +async function checkNumberOfTodosInLocalStorage(page: Page, expected: number) { + return await page.waitForFunction(e => { + return JSON.parse(localStorage['react-todos']).length === e; + }, expected); +} + +async function checkNumberOfCompletedTodosInLocalStorage(page: Page, expected: number) { + return await page.waitForFunction(e => { + return JSON.parse(localStorage['react-todos']).filter((todo: any) => todo.completed).length === e; + }, expected); +} + +async function checkTodosInLocalStorage(page: Page, title: string) { + return await page.waitForFunction(t => { + return JSON.parse(localStorage['react-todos']).map((todo: any) => todo.title).includes(t); + }, title); +} diff --git a/test-project/tests/example.spec.ts b/test-project/tests/example.spec.ts new file mode 100644 index 0000000..9576377 --- /dev/null +++ b/test-project/tests/example.spec.ts @@ -0,0 +1,9 @@ +import { expect } from '@playwright/test'; +import {test} from "obsidian-testing-framework" +test('something', async ({ page }) => { + expect(page).toHaveURL(/obsidian\.md/i); +}); +test("idk", async({app}) => { + let thing = app.metadataCache.getFirstLinkpathDest("Welcome", "."); + expect(thing?.basename).toEqual("Welcome"); +}) diff --git a/test-project/tsconfig.json b/test-project/tsconfig.json new file mode 100644 index 0000000..c44b729 --- /dev/null +++ b/test-project/tsconfig.json @@ -0,0 +1,24 @@ +{ + "compilerOptions": { + "baseUrl": ".", + "inlineSourceMap": true, + "inlineSources": true, + "module": "ESNext", + "target": "ES6", + "allowJs": true, + "noImplicitAny": true, + "moduleResolution": "node", + "importHelpers": true, + "isolatedModules": true, + "strictNullChecks": true, + "lib": [ + "DOM", + "ES5", + "ES6", + "ES7" + ] + }, + "include": [ + "**/*.ts" + ] +} diff --git a/test-project/version-bump.mjs b/test-project/version-bump.mjs new file mode 100644 index 0000000..d409fa0 --- /dev/null +++ b/test-project/version-bump.mjs @@ -0,0 +1,14 @@ +import { readFileSync, writeFileSync } from "fs"; + +const targetVersion = process.env.npm_package_version; + +// read minAppVersion from manifest.json and bump version to target version +let manifest = JSON.parse(readFileSync("manifest.json", "utf8")); +const { minAppVersion } = manifest; +manifest.version = targetVersion; +writeFileSync("manifest.json", JSON.stringify(manifest, null, "\t")); + +// update versions.json with target version and minAppVersion from manifest.json +let versions = JSON.parse(readFileSync("versions.json", "utf8")); +versions[targetVersion] = minAppVersion; +writeFileSync("versions.json", JSON.stringify(versions, null, "\t")); diff --git a/test-project/versions.json b/test-project/versions.json new file mode 100644 index 0000000..26382a1 --- /dev/null +++ b/test-project/versions.json @@ -0,0 +1,3 @@ +{ + "1.0.0": "0.15.0" +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..d1a5281 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,39 @@ +{ + "compilerOptions": { + "target": "ESNext", + "module": "ESNext", + "moduleResolution": "node", + "lib": [ + "es2015", + ], + "outDir": "lib", + "baseUrl": ".", + "strict": true, + "alwaysStrict": true, + "strictFunctionTypes": true, + "strictNullChecks": true, + "strictPropertyInitialization": false, + + "forceConsistentCasingInFileNames": true, + "noImplicitAny": true, + "noImplicitReturns": true, + "noImplicitThis": true, + "noFallthroughCasesInSwitch": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "downlevelIteration": true, + "declaration": true, + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "pretty": true, + "types": ["node"], + }, + "include": [ + "typings/**/*", + "src/**/*" + ], + "exclude": ["test-project/**/*"] +} diff --git a/typings/global.d.ts b/typings/global.d.ts new file mode 100644 index 0000000..a4c6377 --- /dev/null +++ b/typings/global.d.ts @@ -0,0 +1,5 @@ +import {App} from "obsidian"; +declare global { + // const app: App; +} +export {} diff --git a/vault/test-framework-tester/.obsidian/app.json b/vault/test-framework-tester/.obsidian/app.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/vault/test-framework-tester/.obsidian/app.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/vault/test-framework-tester/.obsidian/appearance.json b/vault/test-framework-tester/.obsidian/appearance.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/vault/test-framework-tester/.obsidian/appearance.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/vault/test-framework-tester/.obsidian/core-plugins.json b/vault/test-framework-tester/.obsidian/core-plugins.json new file mode 100644 index 0000000..436f43c --- /dev/null +++ b/vault/test-framework-tester/.obsidian/core-plugins.json @@ -0,0 +1,30 @@ +{ + "file-explorer": true, + "global-search": true, + "switcher": true, + "graph": true, + "backlink": true, + "canvas": true, + "outgoing-link": true, + "tag-pane": true, + "properties": false, + "page-preview": true, + "daily-notes": true, + "templates": true, + "note-composer": true, + "command-palette": true, + "slash-command": false, + "editor-status": true, + "bookmarks": true, + "markdown-importer": false, + "zk-prefixer": false, + "random-note": false, + "outline": true, + "word-count": true, + "slides": false, + "audio-recorder": false, + "workspaces": false, + "file-recovery": true, + "publish": false, + "sync": false +} \ No newline at end of file diff --git a/vault/test-framework-tester/.obsidian/graph.json b/vault/test-framework-tester/.obsidian/graph.json new file mode 100644 index 0000000..42a46ec --- /dev/null +++ b/vault/test-framework-tester/.obsidian/graph.json @@ -0,0 +1,22 @@ +{ + "collapse-filter": true, + "search": "", + "showTags": false, + "showAttachments": false, + "hideUnresolved": false, + "showOrphans": true, + "collapse-color-groups": true, + "colorGroups": [], + "collapse-display": true, + "showArrow": false, + "textFadeMultiplier": 0, + "nodeSizeMultiplier": 1, + "lineSizeMultiplier": 1, + "collapse-forces": true, + "centerStrength": 0.518713248970312, + "repelStrength": 10, + "linkStrength": 1, + "linkDistance": 250, + "scale": 1, + "close": true +} \ No newline at end of file diff --git a/vault/test-framework-tester/.obsidian/workspace.json b/vault/test-framework-tester/.obsidian/workspace.json new file mode 100644 index 0000000..261e437 --- /dev/null +++ b/vault/test-framework-tester/.obsidian/workspace.json @@ -0,0 +1,185 @@ +{ + "main": { + "id": "c2fe4c323d36fc5e", + "type": "split", + "children": [ + { + "id": "8298a75d0a6318ad", + "type": "tabs", + "children": [ + { + "id": "c166e51cf23ccba4", + "type": "leaf", + "state": { + "type": "markdown", + "state": { + "file": "Welcome.md", + "mode": "source", + "source": false + }, + "icon": "lucide-file", + "title": "Welcome" + } + } + ] + }, + { + "id": "ba8373549c03c775", + "type": "tabs", + "children": [ + { + "id": "95e0d337b44eab37", + "type": "leaf", + "state": { + "type": "graph", + "state": {}, + "icon": "lucide-git-fork", + "title": "Graph view" + } + } + ] + } + ], + "direction": "vertical" + }, + "left": { + "id": "15ee0403a7a614b4", + "type": "split", + "children": [ + { + "id": "f297c8bc39873aa8", + "type": "tabs", + "children": [ + { + "id": "cee48933474ae820", + "type": "leaf", + "state": { + "type": "file-explorer", + "state": { + "sortOrder": "alphabetical" + }, + "icon": "lucide-folder-closed", + "title": "Files" + } + }, + { + "id": "a5eb514f5fbe0a9d", + "type": "leaf", + "state": { + "type": "search", + "state": { + "query": "", + "matchingCase": false, + "explainSearch": false, + "collapseAll": false, + "extraContext": false, + "sortOrder": "alphabetical" + }, + "icon": "lucide-search", + "title": "Search" + } + }, + { + "id": "2ea1b4740307baf6", + "type": "leaf", + "state": { + "type": "bookmarks", + "state": {}, + "icon": "lucide-bookmark", + "title": "Bookmarks" + } + } + ] + } + ], + "direction": "horizontal", + "width": 300 + }, + "right": { + "id": "9da40e5b7fceeacd", + "type": "split", + "children": [ + { + "id": "2e127fb9abc8dd11", + "type": "tabs", + "children": [ + { + "id": "21b5909f77e5cae0", + "type": "leaf", + "state": { + "type": "backlink", + "state": { + "file": "Welcome.md", + "collapseAll": false, + "extraContext": false, + "sortOrder": "alphabetical", + "showSearch": false, + "searchQuery": "", + "backlinkCollapsed": false, + "unlinkedCollapsed": true + }, + "icon": "links-coming-in", + "title": "Backlinks for Welcome" + } + }, + { + "id": "bc9d35775b8807b0", + "type": "leaf", + "state": { + "type": "outgoing-link", + "state": { + "file": "Welcome.md", + "linksCollapsed": false, + "unlinkedCollapsed": true + }, + "icon": "links-going-out", + "title": "Outgoing links from Welcome" + } + }, + { + "id": "982543d44de11473", + "type": "leaf", + "state": { + "type": "tag", + "state": { + "sortOrder": "frequency", + "useHierarchy": true + }, + "icon": "lucide-tags", + "title": "Tags" + } + }, + { + "id": "52f3666280022d63", + "type": "leaf", + "state": { + "type": "outline", + "state": { + "file": "Welcome.md" + }, + "icon": "lucide-list", + "title": "Outline of Welcome" + } + } + ] + } + ], + "direction": "horizontal", + "width": 300, + "collapsed": true + }, + "left-ribbon": { + "hiddenItems": { + "switcher:Open quick switcher": false, + "graph:Open graph view": false, + "canvas:Create new canvas": false, + "daily-notes:Open today's daily note": false, + "templates:Insert template": false, + "command-palette:Open command palette": false + } + }, + "active": "c166e51cf23ccba4", + "lastOpenFiles": [ + "Welcome.md" + ] +} \ No newline at end of file diff --git a/vault/test-framework-tester/Welcome.md b/vault/test-framework-tester/Welcome.md new file mode 100644 index 0000000..f9bca28 --- /dev/null +++ b/vault/test-framework-tester/Welcome.md @@ -0,0 +1,5 @@ +This is your new *vault*. + +Make a note of something, [[create a link]], or try [the Importer](https://help.obsidian.md/Plugins/Importer)! + +When you're ready, delete this note and make the vault your own. \ No newline at end of file diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000..c183cd4 --- /dev/null +++ b/yarn.lock @@ -0,0 +1,2510 @@ +# This file is generated by running "yarn install" inside your project. +# Manual changes might be lost - proceed with caution! + +__metadata: + version: 8 + cacheKey: 10c0 + +"@esbuild/aix-ppc64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/aix-ppc64@npm:0.21.5" + conditions: os=aix & cpu=ppc64 + languageName: node + linkType: hard + +"@esbuild/android-arm64@npm:0.17.3": + version: 0.17.3 + resolution: "@esbuild/android-arm64@npm:0.17.3" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/android-arm64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/android-arm64@npm:0.21.5" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/android-arm@npm:0.17.3": + version: 0.17.3 + resolution: "@esbuild/android-arm@npm:0.17.3" + conditions: os=android & cpu=arm + languageName: node + linkType: hard + +"@esbuild/android-arm@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/android-arm@npm:0.21.5" + conditions: os=android & cpu=arm + languageName: node + linkType: hard + +"@esbuild/android-x64@npm:0.17.3": + version: 0.17.3 + resolution: "@esbuild/android-x64@npm:0.17.3" + conditions: os=android & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/android-x64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/android-x64@npm:0.21.5" + conditions: os=android & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/darwin-arm64@npm:0.17.3": + version: 0.17.3 + resolution: "@esbuild/darwin-arm64@npm:0.17.3" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/darwin-arm64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/darwin-arm64@npm:0.21.5" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/darwin-x64@npm:0.17.3": + version: 0.17.3 + resolution: "@esbuild/darwin-x64@npm:0.17.3" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/darwin-x64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/darwin-x64@npm:0.21.5" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/freebsd-arm64@npm:0.17.3": + version: 0.17.3 + resolution: "@esbuild/freebsd-arm64@npm:0.17.3" + conditions: os=freebsd & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/freebsd-arm64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/freebsd-arm64@npm:0.21.5" + conditions: os=freebsd & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/freebsd-x64@npm:0.17.3": + version: 0.17.3 + resolution: "@esbuild/freebsd-x64@npm:0.17.3" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/freebsd-x64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/freebsd-x64@npm:0.21.5" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/linux-arm64@npm:0.17.3": + version: 0.17.3 + resolution: "@esbuild/linux-arm64@npm:0.17.3" + conditions: os=linux & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/linux-arm64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/linux-arm64@npm:0.21.5" + conditions: os=linux & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/linux-arm@npm:0.17.3": + version: 0.17.3 + resolution: "@esbuild/linux-arm@npm:0.17.3" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@esbuild/linux-arm@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/linux-arm@npm:0.21.5" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@esbuild/linux-ia32@npm:0.17.3": + version: 0.17.3 + resolution: "@esbuild/linux-ia32@npm:0.17.3" + conditions: os=linux & cpu=ia32 + languageName: node + linkType: hard + +"@esbuild/linux-ia32@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/linux-ia32@npm:0.21.5" + conditions: os=linux & cpu=ia32 + languageName: node + linkType: hard + +"@esbuild/linux-loong64@npm:0.17.3": + version: 0.17.3 + resolution: "@esbuild/linux-loong64@npm:0.17.3" + conditions: os=linux & cpu=loong64 + languageName: node + linkType: hard + +"@esbuild/linux-loong64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/linux-loong64@npm:0.21.5" + conditions: os=linux & cpu=loong64 + languageName: node + linkType: hard + +"@esbuild/linux-mips64el@npm:0.17.3": + version: 0.17.3 + resolution: "@esbuild/linux-mips64el@npm:0.17.3" + conditions: os=linux & cpu=mips64el + languageName: node + linkType: hard + +"@esbuild/linux-mips64el@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/linux-mips64el@npm:0.21.5" + conditions: os=linux & cpu=mips64el + languageName: node + linkType: hard + +"@esbuild/linux-ppc64@npm:0.17.3": + version: 0.17.3 + resolution: "@esbuild/linux-ppc64@npm:0.17.3" + conditions: os=linux & cpu=ppc64 + languageName: node + linkType: hard + +"@esbuild/linux-ppc64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/linux-ppc64@npm:0.21.5" + conditions: os=linux & cpu=ppc64 + languageName: node + linkType: hard + +"@esbuild/linux-riscv64@npm:0.17.3": + version: 0.17.3 + resolution: "@esbuild/linux-riscv64@npm:0.17.3" + conditions: os=linux & cpu=riscv64 + languageName: node + linkType: hard + +"@esbuild/linux-riscv64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/linux-riscv64@npm:0.21.5" + conditions: os=linux & cpu=riscv64 + languageName: node + linkType: hard + +"@esbuild/linux-s390x@npm:0.17.3": + version: 0.17.3 + resolution: "@esbuild/linux-s390x@npm:0.17.3" + conditions: os=linux & cpu=s390x + languageName: node + linkType: hard + +"@esbuild/linux-s390x@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/linux-s390x@npm:0.21.5" + conditions: os=linux & cpu=s390x + languageName: node + linkType: hard + +"@esbuild/linux-x64@npm:0.17.3": + version: 0.17.3 + resolution: "@esbuild/linux-x64@npm:0.17.3" + conditions: os=linux & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/linux-x64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/linux-x64@npm:0.21.5" + conditions: os=linux & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/netbsd-x64@npm:0.17.3": + version: 0.17.3 + resolution: "@esbuild/netbsd-x64@npm:0.17.3" + conditions: os=netbsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/netbsd-x64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/netbsd-x64@npm:0.21.5" + conditions: os=netbsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/openbsd-x64@npm:0.17.3": + version: 0.17.3 + resolution: "@esbuild/openbsd-x64@npm:0.17.3" + conditions: os=openbsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/openbsd-x64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/openbsd-x64@npm:0.21.5" + conditions: os=openbsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/sunos-x64@npm:0.17.3": + version: 0.17.3 + resolution: "@esbuild/sunos-x64@npm:0.17.3" + conditions: os=sunos & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/sunos-x64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/sunos-x64@npm:0.21.5" + conditions: os=sunos & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/win32-arm64@npm:0.17.3": + version: 0.17.3 + resolution: "@esbuild/win32-arm64@npm:0.17.3" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/win32-arm64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/win32-arm64@npm:0.21.5" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/win32-ia32@npm:0.17.3": + version: 0.17.3 + resolution: "@esbuild/win32-ia32@npm:0.17.3" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@esbuild/win32-ia32@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/win32-ia32@npm:0.21.5" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@esbuild/win32-x64@npm:0.17.3": + version: 0.17.3 + resolution: "@esbuild/win32-x64@npm:0.17.3" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/win32-x64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/win32-x64@npm:0.21.5" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@isaacs/cliui@npm:^8.0.2": + version: 8.0.2 + resolution: "@isaacs/cliui@npm:8.0.2" + dependencies: + string-width: "npm:^5.1.2" + string-width-cjs: "npm:string-width@^4.2.0" + strip-ansi: "npm:^7.0.1" + strip-ansi-cjs: "npm:strip-ansi@^6.0.1" + wrap-ansi: "npm:^8.1.0" + wrap-ansi-cjs: "npm:wrap-ansi@^7.0.0" + checksum: 10c0/b1bf42535d49f11dc137f18d5e4e63a28c5569de438a221c369483731e9dac9fb797af554e8bf02b6192d1e5eba6e6402cf93900c3d0ac86391d00d04876789e + languageName: node + linkType: hard + +"@jridgewell/sourcemap-codec@npm:^1.5.0": + version: 1.5.0 + resolution: "@jridgewell/sourcemap-codec@npm:1.5.0" + checksum: 10c0/2eb864f276eb1096c3c11da3e9bb518f6d9fc0023c78344cdc037abadc725172c70314bdb360f2d4b7bffec7f5d657ce006816bc5d4ecb35e61b66132db00c18 + languageName: node + linkType: hard + +"@nodelib/fs.scandir@npm:2.1.5": + version: 2.1.5 + resolution: "@nodelib/fs.scandir@npm:2.1.5" + dependencies: + "@nodelib/fs.stat": "npm:2.0.5" + run-parallel: "npm:^1.1.9" + checksum: 10c0/732c3b6d1b1e967440e65f284bd06e5821fedf10a1bea9ed2bb75956ea1f30e08c44d3def9d6a230666574edbaf136f8cfd319c14fd1f87c66e6a44449afb2eb + languageName: node + linkType: hard + +"@nodelib/fs.stat@npm:2.0.5, @nodelib/fs.stat@npm:^2.0.2": + version: 2.0.5 + resolution: "@nodelib/fs.stat@npm:2.0.5" + checksum: 10c0/88dafe5e3e29a388b07264680dc996c17f4bda48d163a9d4f5c1112979f0ce8ec72aa7116122c350b4e7976bc5566dc3ddb579be1ceaacc727872eb4ed93926d + languageName: node + linkType: hard + +"@nodelib/fs.walk@npm:^1.2.3": + version: 1.2.8 + resolution: "@nodelib/fs.walk@npm:1.2.8" + dependencies: + "@nodelib/fs.scandir": "npm:2.1.5" + fastq: "npm:^1.6.0" + checksum: 10c0/db9de047c3bb9b51f9335a7bb46f4fcfb6829fb628318c12115fbaf7d369bfce71c15b103d1fc3b464812d936220ee9bc1c8f762d032c9f6be9acc99249095b1 + languageName: node + linkType: hard + +"@npmcli/agent@npm:^2.0.0": + version: 2.2.2 + resolution: "@npmcli/agent@npm:2.2.2" + dependencies: + agent-base: "npm:^7.1.0" + http-proxy-agent: "npm:^7.0.0" + https-proxy-agent: "npm:^7.0.1" + lru-cache: "npm:^10.0.1" + socks-proxy-agent: "npm:^8.0.3" + checksum: 10c0/325e0db7b287d4154ecd164c0815c08007abfb07653cc57bceded17bb7fd240998a3cbdbe87d700e30bef494885eccc725ab73b668020811d56623d145b524ae + languageName: node + linkType: hard + +"@npmcli/fs@npm:^3.1.0": + version: 3.1.1 + resolution: "@npmcli/fs@npm:3.1.1" + dependencies: + semver: "npm:^7.3.5" + checksum: 10c0/c37a5b4842bfdece3d14dfdb054f73fe15ed2d3da61b34ff76629fb5b1731647c49166fd2a8bf8b56fcfa51200382385ea8909a3cbecdad612310c114d3f6c99 + languageName: node + linkType: hard + +"@pkgjs/parseargs@npm:^0.11.0": + version: 0.11.0 + resolution: "@pkgjs/parseargs@npm:0.11.0" + checksum: 10c0/5bd7576bb1b38a47a7fc7b51ac9f38748e772beebc56200450c4a817d712232b8f1d3ef70532c80840243c657d491cf6a6be1e3a214cff907645819fdc34aadd + languageName: node + linkType: hard + +"@playwright/test@npm:^1.48.1": + version: 1.48.1 + resolution: "@playwright/test@npm:1.48.1" + dependencies: + playwright: "npm:1.48.1" + bin: + playwright: cli.js + checksum: 10c0/32cedc3b2d375cb8f4a830bc820d7726b0235be7a6202e1d6ee46e739b83666271c47c100c11311cf5a916468c18e6a4dc526accf9ef090786e7614c2633b2b8 + languageName: node + linkType: hard + +"@rollup/rollup-android-arm-eabi@npm:4.24.0": + version: 4.24.0 + resolution: "@rollup/rollup-android-arm-eabi@npm:4.24.0" + conditions: os=android & cpu=arm + languageName: node + linkType: hard + +"@rollup/rollup-android-arm64@npm:4.24.0": + version: 4.24.0 + resolution: "@rollup/rollup-android-arm64@npm:4.24.0" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + +"@rollup/rollup-darwin-arm64@npm:4.24.0": + version: 4.24.0 + resolution: "@rollup/rollup-darwin-arm64@npm:4.24.0" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@rollup/rollup-darwin-x64@npm:4.24.0": + version: 4.24.0 + resolution: "@rollup/rollup-darwin-x64@npm:4.24.0" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@rollup/rollup-linux-arm-gnueabihf@npm:4.24.0": + version: 4.24.0 + resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.24.0" + conditions: os=linux & cpu=arm & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-arm-musleabihf@npm:4.24.0": + version: 4.24.0 + resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.24.0" + conditions: os=linux & cpu=arm & libc=musl + languageName: node + linkType: hard + +"@rollup/rollup-linux-arm64-gnu@npm:4.24.0": + version: 4.24.0 + resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.24.0" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-arm64-musl@npm:4.24.0": + version: 4.24.0 + resolution: "@rollup/rollup-linux-arm64-musl@npm:4.24.0" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + +"@rollup/rollup-linux-powerpc64le-gnu@npm:4.24.0": + version: 4.24.0 + resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.24.0" + conditions: os=linux & cpu=ppc64 & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-riscv64-gnu@npm:4.24.0": + version: 4.24.0 + resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.24.0" + conditions: os=linux & cpu=riscv64 & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-s390x-gnu@npm:4.24.0": + version: 4.24.0 + resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.24.0" + conditions: os=linux & cpu=s390x & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-x64-gnu@npm:4.24.0": + version: 4.24.0 + resolution: "@rollup/rollup-linux-x64-gnu@npm:4.24.0" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-x64-musl@npm:4.24.0": + version: 4.24.0 + resolution: "@rollup/rollup-linux-x64-musl@npm:4.24.0" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"@rollup/rollup-win32-arm64-msvc@npm:4.24.0": + version: 4.24.0 + resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.24.0" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@rollup/rollup-win32-ia32-msvc@npm:4.24.0": + version: 4.24.0 + resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.24.0" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@rollup/rollup-win32-x64-msvc@npm:4.24.0": + version: 4.24.0 + resolution: "@rollup/rollup-win32-x64-msvc@npm:4.24.0" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@types/codemirror@npm:5.60.8": + version: 5.60.8 + resolution: "@types/codemirror@npm:5.60.8" + dependencies: + "@types/tern": "npm:*" + checksum: 10c0/cf72f1650f78902afadcdf4a1042f7f7cb7d1cc8d6c7135ac3d5e07e5314671c77d7f331001fd0a2dc9bf976b5ac0ce8f0c8922f4cafeb680ac20e68afa02c13 + languageName: node + linkType: hard + +"@types/estree@npm:*, @types/estree@npm:1.0.6, @types/estree@npm:^1.0.0": + version: 1.0.6 + resolution: "@types/estree@npm:1.0.6" + checksum: 10c0/cdfd751f6f9065442cd40957c07fd80361c962869aa853c1c2fd03e101af8b9389d8ff4955a43a6fcfa223dd387a089937f95be0f3eec21ca527039fd2d9859a + languageName: node + linkType: hard + +"@types/json-schema@npm:^7.0.9": + version: 7.0.15 + resolution: "@types/json-schema@npm:7.0.15" + checksum: 10c0/a996a745e6c5d60292f36731dd41341339d4eeed8180bb09226e5c8d23759067692b1d88e5d91d72ee83dfc00d3aca8e7bd43ea120516c17922cbcb7c3e252db + languageName: node + linkType: hard + +"@types/node@npm:^16.11.6": + version: 16.18.114 + resolution: "@types/node@npm:16.18.114" + checksum: 10c0/38391d08cd795857a664c8c26e0c722d386255e5d19770faec9a9b475c27b5502aee8ba5b159052c840a6bff715ac27e7329ba4df360e56cf0354137024f1f1d + languageName: node + linkType: hard + +"@types/node@npm:^22.7.8": + version: 22.7.8 + resolution: "@types/node@npm:22.7.8" + dependencies: + undici-types: "npm:~6.19.2" + checksum: 10c0/3d3b3a2ec5a57ca4fd37b34dce415620993ca5f87cea2c728ffe73aa31446dbfe19c53171c478447bd7d78011ef4845a46ab2f0dc38e699cc75b3d100a60c690 + languageName: node + linkType: hard + +"@types/tern@npm:*": + version: 0.23.9 + resolution: "@types/tern@npm:0.23.9" + dependencies: + "@types/estree": "npm:*" + checksum: 10c0/1d30ccfbb84362fe7a7edeea3ba5268f5a7a0965d504147c6b701092f0ea3f0833799ee753e2059a535ca06590f91dd2416e4bd94a6e8ad51eea127a0607c617 + languageName: node + linkType: hard + +"@typescript-eslint/eslint-plugin@npm:5.29.0": + version: 5.29.0 + resolution: "@typescript-eslint/eslint-plugin@npm:5.29.0" + dependencies: + "@typescript-eslint/scope-manager": "npm:5.29.0" + "@typescript-eslint/type-utils": "npm:5.29.0" + "@typescript-eslint/utils": "npm:5.29.0" + debug: "npm:^4.3.4" + functional-red-black-tree: "npm:^1.0.1" + ignore: "npm:^5.2.0" + regexpp: "npm:^3.2.0" + semver: "npm:^7.3.7" + tsutils: "npm:^3.21.0" + peerDependencies: + "@typescript-eslint/parser": ^5.0.0 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: 10c0/2de03a6659d2fe43588939c9cfc5bfe2bc5c3e7874eeefd563a650a53388488cd4e16bdc3061e7665770440ce2b02813df854074caeffac1547a79de9d629bf0 + languageName: node + linkType: hard + +"@typescript-eslint/parser@npm:5.29.0": + version: 5.29.0 + resolution: "@typescript-eslint/parser@npm:5.29.0" + dependencies: + "@typescript-eslint/scope-manager": "npm:5.29.0" + "@typescript-eslint/types": "npm:5.29.0" + "@typescript-eslint/typescript-estree": "npm:5.29.0" + debug: "npm:^4.3.4" + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: 10c0/dbdf8a719081c38db4ba64162a977c613b0c1fcb6aa38d003726e267c373f33270d3881799992af73f43782504f452d600dcb3eaca3b62a870b0fd3c9b905bca + languageName: node + linkType: hard + +"@typescript-eslint/scope-manager@npm:5.29.0": + version: 5.29.0 + resolution: "@typescript-eslint/scope-manager@npm:5.29.0" + dependencies: + "@typescript-eslint/types": "npm:5.29.0" + "@typescript-eslint/visitor-keys": "npm:5.29.0" + checksum: 10c0/6c8a566738101bc8ea51cd746836a947fee4d30fde015cbdcd7dbf51a1d77cc938a9804432e12041739a2349da847a6e1acd4d65f16902b39cbc0479a7afaf6b + languageName: node + linkType: hard + +"@typescript-eslint/type-utils@npm:5.29.0": + version: 5.29.0 + resolution: "@typescript-eslint/type-utils@npm:5.29.0" + dependencies: + "@typescript-eslint/utils": "npm:5.29.0" + debug: "npm:^4.3.4" + tsutils: "npm:^3.21.0" + peerDependencies: + eslint: "*" + peerDependenciesMeta: + typescript: + optional: true + checksum: 10c0/1b170a8b226014dc910def3e03ab1be11d48416158c9b7a3ffafc5d14a14d1427d1aa8f47346b67b8e89467ee2e800b56a807a3b66044c9b99798c41db1b7b0a + languageName: node + linkType: hard + +"@typescript-eslint/types@npm:5.29.0": + version: 5.29.0 + resolution: "@typescript-eslint/types@npm:5.29.0" + checksum: 10c0/8679d269716931562808be47fe2971ba9561012060a965d2a006317be502b92126281039778fc88ba7f25d44cc0cee8974f9b4e40062355e554959464f97bebe + languageName: node + linkType: hard + +"@typescript-eslint/typescript-estree@npm:5.29.0": + version: 5.29.0 + resolution: "@typescript-eslint/typescript-estree@npm:5.29.0" + dependencies: + "@typescript-eslint/types": "npm:5.29.0" + "@typescript-eslint/visitor-keys": "npm:5.29.0" + debug: "npm:^4.3.4" + globby: "npm:^11.1.0" + is-glob: "npm:^4.0.3" + semver: "npm:^7.3.7" + tsutils: "npm:^3.21.0" + peerDependenciesMeta: + typescript: + optional: true + checksum: 10c0/b52c1c292f5cdd63b0fc29680c6dfbff23d38a5b1e7731c4f54256c4131b56c38eee5188a119311fe673403b0c974f0aed71652da0371b2078ff213313fd3bf7 + languageName: node + linkType: hard + +"@typescript-eslint/utils@npm:5.29.0": + version: 5.29.0 + resolution: "@typescript-eslint/utils@npm:5.29.0" + dependencies: + "@types/json-schema": "npm:^7.0.9" + "@typescript-eslint/scope-manager": "npm:5.29.0" + "@typescript-eslint/types": "npm:5.29.0" + "@typescript-eslint/typescript-estree": "npm:5.29.0" + eslint-scope: "npm:^5.1.1" + eslint-utils: "npm:^3.0.0" + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + checksum: 10c0/64c4bc04bc1830add706f939ec16ef12a923820bdff579beb42f3cf190b3422eae779f91c48080efb194d10900e9da395b13a6d185a73cfb0d78a2d3a3253f0a + languageName: node + linkType: hard + +"@typescript-eslint/visitor-keys@npm:5.29.0": + version: 5.29.0 + resolution: "@typescript-eslint/visitor-keys@npm:5.29.0" + dependencies: + "@typescript-eslint/types": "npm:5.29.0" + eslint-visitor-keys: "npm:^3.3.0" + checksum: 10c0/c8a90ad941d6c69c474202c7fce5f6dfb3c5dfa67eb6dd78fe67d386a6bfc99075d62b1dd1bf753d5a820b1e798a80c28b6a93621dcfaa98f56981593abadc05 + languageName: node + linkType: hard + +"@vitest/expect@npm:2.1.3": + version: 2.1.3 + resolution: "@vitest/expect@npm:2.1.3" + dependencies: + "@vitest/spy": "npm:2.1.3" + "@vitest/utils": "npm:2.1.3" + chai: "npm:^5.1.1" + tinyrainbow: "npm:^1.2.0" + checksum: 10c0/0837adcbb938feebcc083664afc5c4d12e42f1f2442b6f1bedc6b5650a8ff2448b1f10713b45afb099c839fb5cf766c971736267fa9b0fe2ac87f3e2d7f782c2 + languageName: node + linkType: hard + +"@vitest/mocker@npm:2.1.3": + version: 2.1.3 + resolution: "@vitest/mocker@npm:2.1.3" + dependencies: + "@vitest/spy": "npm:2.1.3" + estree-walker: "npm:^3.0.3" + magic-string: "npm:^0.30.11" + peerDependencies: + "@vitest/spy": 2.1.3 + msw: ^2.3.5 + vite: ^5.0.0 + peerDependenciesMeta: + msw: + optional: true + vite: + optional: true + checksum: 10c0/03c80628d092244f21a0ba9041665fc75f987d0d11fab1ae0b7027ec21e503f65057e8c24b936602c5f852d83fbb183da13d05dba117c99785b41b3dafd105ce + languageName: node + linkType: hard + +"@vitest/pretty-format@npm:2.1.3, @vitest/pretty-format@npm:^2.1.3": + version: 2.1.3 + resolution: "@vitest/pretty-format@npm:2.1.3" + dependencies: + tinyrainbow: "npm:^1.2.0" + checksum: 10c0/5a6ee872a8adf5e2764f2b5b2276d8a2199be4ef14777ab693428caf359481851400af10b59721d4972289c955ffe7277954a662b04cfb10233824574c7074ba + languageName: node + linkType: hard + +"@vitest/runner@npm:2.1.3": + version: 2.1.3 + resolution: "@vitest/runner@npm:2.1.3" + dependencies: + "@vitest/utils": "npm:2.1.3" + pathe: "npm:^1.1.2" + checksum: 10c0/d5b077643265d10025e22fa64a0e54c3d4fddc23e05f9fcd143dbcc4080851b0df31985986e57890a974577a18d3af624758b6062801d7dd96f9b4f2eaf591f1 + languageName: node + linkType: hard + +"@vitest/snapshot@npm:2.1.3": + version: 2.1.3 + resolution: "@vitest/snapshot@npm:2.1.3" + dependencies: + "@vitest/pretty-format": "npm:2.1.3" + magic-string: "npm:^0.30.11" + pathe: "npm:^1.1.2" + checksum: 10c0/a3dcea6a5f7581b6a34dc3bf5f7bd42a05e2ccf6e1171d9f1b759688aebe650e6412564d066aeaa45e83ac549d453b6a3edcf774a8ac728c0c639f8dc919039f + languageName: node + linkType: hard + +"@vitest/spy@npm:2.1.3": + version: 2.1.3 + resolution: "@vitest/spy@npm:2.1.3" + dependencies: + tinyspy: "npm:^3.0.0" + checksum: 10c0/8d85a5c2848c5bd81892af989aebad65d0c7ae74094aa98ad4f35ecf80755259c7a748a8e7bf683b2906fac29a51fc0ffa82f8fc073b36dbd8a0418261fccdba + languageName: node + linkType: hard + +"@vitest/utils@npm:2.1.3": + version: 2.1.3 + resolution: "@vitest/utils@npm:2.1.3" + dependencies: + "@vitest/pretty-format": "npm:2.1.3" + loupe: "npm:^3.1.1" + tinyrainbow: "npm:^1.2.0" + checksum: 10c0/55a044e43b84c0f8f573d8578107f26440678b6f506c8d9fee88b7ef120d19efd27c9be77985c107113b0f3f3db298dcee57074e1c1c214bee7a097fd08a209b + languageName: node + linkType: hard + +"abbrev@npm:^2.0.0": + version: 2.0.0 + resolution: "abbrev@npm:2.0.0" + checksum: 10c0/f742a5a107473946f426c691c08daba61a1d15942616f300b5d32fd735be88fef5cba24201757b6c407fd564555fb48c751cfa33519b2605c8a7aadd22baf372 + languageName: node + linkType: hard + +"agent-base@npm:^7.0.2, agent-base@npm:^7.1.0, agent-base@npm:^7.1.1": + version: 7.1.1 + resolution: "agent-base@npm:7.1.1" + dependencies: + debug: "npm:^4.3.4" + checksum: 10c0/e59ce7bed9c63bf071a30cc471f2933862044c97fd9958967bfe22521d7a0f601ce4ed5a8c011799d0c726ca70312142ae193bbebb60f576b52be19d4a363b50 + languageName: node + linkType: hard + +"aggregate-error@npm:^3.0.0": + version: 3.1.0 + resolution: "aggregate-error@npm:3.1.0" + dependencies: + clean-stack: "npm:^2.0.0" + indent-string: "npm:^4.0.0" + checksum: 10c0/a42f67faa79e3e6687a4923050e7c9807db3848a037076f791d10e092677d65c1d2d863b7848560699f40fc0502c19f40963fb1cd1fb3d338a7423df8e45e039 + languageName: node + linkType: hard + +"ansi-regex@npm:^5.0.1": + version: 5.0.1 + resolution: "ansi-regex@npm:5.0.1" + checksum: 10c0/9a64bb8627b434ba9327b60c027742e5d17ac69277960d041898596271d992d4d52ba7267a63ca10232e29f6107fc8a835f6ce8d719b88c5f8493f8254813737 + languageName: node + linkType: hard + +"ansi-regex@npm:^6.0.1": + version: 6.1.0 + resolution: "ansi-regex@npm:6.1.0" + checksum: 10c0/a91daeddd54746338478eef88af3439a7edf30f8e23196e2d6ed182da9add559c601266dbef01c2efa46a958ad6f1f8b176799657616c702b5b02e799e7fd8dc + languageName: node + linkType: hard + +"ansi-styles@npm:^4.0.0": + version: 4.3.0 + resolution: "ansi-styles@npm:4.3.0" + dependencies: + color-convert: "npm:^2.0.1" + checksum: 10c0/895a23929da416f2bd3de7e9cb4eabd340949328ab85ddd6e484a637d8f6820d485f53933446f5291c3b760cbc488beb8e88573dd0f9c7daf83dccc8fe81b041 + languageName: node + linkType: hard + +"ansi-styles@npm:^6.1.0": + version: 6.2.1 + resolution: "ansi-styles@npm:6.2.1" + checksum: 10c0/5d1ec38c123984bcedd996eac680d548f31828bd679a66db2bdf11844634dde55fec3efa9c6bb1d89056a5e79c1ac540c4c784d592ea1d25028a92227d2f2d5c + languageName: node + linkType: hard + +"array-union@npm:^2.1.0": + version: 2.1.0 + resolution: "array-union@npm:2.1.0" + checksum: 10c0/429897e68110374f39b771ec47a7161fc6a8fc33e196857c0a396dc75df0b5f65e4d046674db764330b6bb66b39ef48dd7c53b6a2ee75cfb0681e0c1a7033962 + languageName: node + linkType: hard + +"assertion-error@npm:^2.0.1": + version: 2.0.1 + resolution: "assertion-error@npm:2.0.1" + checksum: 10c0/bbbcb117ac6480138f8c93cf7f535614282dea9dc828f540cdece85e3c665e8f78958b96afac52f29ff883c72638e6a87d469ecc9fe5bc902df03ed24a55dba8 + languageName: node + linkType: hard + +"balanced-match@npm:^1.0.0": + version: 1.0.2 + resolution: "balanced-match@npm:1.0.2" + checksum: 10c0/9308baf0a7e4838a82bbfd11e01b1cb0f0cf2893bc1676c27c2a8c0e70cbae1c59120c3268517a8ae7fb6376b4639ef81ca22582611dbee4ed28df945134aaee + languageName: node + linkType: hard + +"brace-expansion@npm:^2.0.1": + version: 2.0.1 + resolution: "brace-expansion@npm:2.0.1" + dependencies: + balanced-match: "npm:^1.0.0" + checksum: 10c0/b358f2fe060e2d7a87aa015979ecea07f3c37d4018f8d6deb5bd4c229ad3a0384fe6029bb76cd8be63c81e516ee52d1a0673edbe2023d53a5191732ae3c3e49f + languageName: node + linkType: hard + +"braces@npm:^3.0.3": + version: 3.0.3 + resolution: "braces@npm:3.0.3" + dependencies: + fill-range: "npm:^7.1.1" + checksum: 10c0/7c6dfd30c338d2997ba77500539227b9d1f85e388a5f43220865201e407e076783d0881f2d297b9f80951b4c957fcf0b51c1d2d24227631643c3f7c284b0aa04 + languageName: node + linkType: hard + +"builtin-modules@npm:3.3.0": + version: 3.3.0 + resolution: "builtin-modules@npm:3.3.0" + checksum: 10c0/2cb3448b4f7306dc853632a4fcddc95e8d4e4b9868c139400027b71938fc6806d4ff44007deffb362ac85724bd40c2c6452fb6a0aa4531650eeddb98d8e5ee8a + languageName: node + linkType: hard + +"cac@npm:^6.7.14": + version: 6.7.14 + resolution: "cac@npm:6.7.14" + checksum: 10c0/4ee06aaa7bab8981f0d54e5f5f9d4adcd64058e9697563ce336d8a3878ed018ee18ebe5359b2430eceae87e0758e62ea2019c3f52ae6e211b1bd2e133856cd10 + languageName: node + linkType: hard + +"cacache@npm:^18.0.0": + version: 18.0.4 + resolution: "cacache@npm:18.0.4" + dependencies: + "@npmcli/fs": "npm:^3.1.0" + fs-minipass: "npm:^3.0.0" + glob: "npm:^10.2.2" + lru-cache: "npm:^10.0.1" + minipass: "npm:^7.0.3" + minipass-collect: "npm:^2.0.1" + minipass-flush: "npm:^1.0.5" + minipass-pipeline: "npm:^1.2.4" + p-map: "npm:^4.0.0" + ssri: "npm:^10.0.0" + tar: "npm:^6.1.11" + unique-filename: "npm:^3.0.0" + checksum: 10c0/6c055bafed9de4f3dcc64ac3dc7dd24e863210902b7c470eb9ce55a806309b3efff78033e3d8b4f7dcc5d467f2db43c6a2857aaaf26f0094b8a351d44c42179f + languageName: node + linkType: hard + +"chai@npm:^5.1.1": + version: 5.1.1 + resolution: "chai@npm:5.1.1" + dependencies: + assertion-error: "npm:^2.0.1" + check-error: "npm:^2.1.1" + deep-eql: "npm:^5.0.1" + loupe: "npm:^3.1.0" + pathval: "npm:^2.0.0" + checksum: 10c0/e7f00e5881e3d5224f08fe63966ed6566bd9fdde175863c7c16dd5240416de9b34c4a0dd925f4fd64ad56256ca6507d32cf6131c49e1db65c62578eb31d4566c + languageName: node + linkType: hard + +"check-error@npm:^2.1.1": + version: 2.1.1 + resolution: "check-error@npm:2.1.1" + checksum: 10c0/979f13eccab306cf1785fa10941a590b4e7ea9916ea2a4f8c87f0316fc3eab07eabefb6e587424ef0f88cbcd3805791f172ea739863ca3d7ce2afc54641c7f0e + languageName: node + linkType: hard + +"chownr@npm:^2.0.0": + version: 2.0.0 + resolution: "chownr@npm:2.0.0" + checksum: 10c0/594754e1303672171cc04e50f6c398ae16128eb134a88f801bf5354fd96f205320f23536a045d9abd8b51024a149696e51231565891d4efdab8846021ecf88e6 + languageName: node + linkType: hard + +"clean-stack@npm:^2.0.0": + version: 2.2.0 + resolution: "clean-stack@npm:2.2.0" + checksum: 10c0/1f90262d5f6230a17e27d0c190b09d47ebe7efdd76a03b5a1127863f7b3c9aec4c3e6c8bb3a7bbf81d553d56a1fd35728f5a8ef4c63f867ac8d690109742a8c1 + languageName: node + linkType: hard + +"color-convert@npm:^2.0.1": + version: 2.0.1 + resolution: "color-convert@npm:2.0.1" + dependencies: + color-name: "npm:~1.1.4" + checksum: 10c0/37e1150172f2e311fe1b2df62c6293a342ee7380da7b9cfdba67ea539909afbd74da27033208d01d6d5cfc65ee7868a22e18d7e7648e004425441c0f8a15a7d7 + languageName: node + linkType: hard + +"color-name@npm:~1.1.4": + version: 1.1.4 + resolution: "color-name@npm:1.1.4" + checksum: 10c0/a1a3f914156960902f46f7f56bc62effc6c94e84b2cae157a526b1c1f74b677a47ec602bf68a61abfa2b42d15b7c5651c6dbe72a43af720bc588dff885b10f95 + languageName: node + linkType: hard + +"cross-spawn@npm:^7.0.0": + version: 7.0.3 + resolution: "cross-spawn@npm:7.0.3" + dependencies: + path-key: "npm:^3.1.0" + shebang-command: "npm:^2.0.0" + which: "npm:^2.0.1" + checksum: 10c0/5738c312387081c98d69c98e105b6327b069197f864a60593245d64c8089c8a0a744e16349281210d56835bb9274130d825a78b2ad6853ca13cfbeffc0c31750 + languageName: node + linkType: hard + +"debug@npm:4, debug@npm:^4.3.4, debug@npm:^4.3.6": + version: 4.3.7 + resolution: "debug@npm:4.3.7" + dependencies: + ms: "npm:^2.1.3" + peerDependenciesMeta: + supports-color: + optional: true + checksum: 10c0/1471db19c3b06d485a622d62f65947a19a23fbd0dd73f7fd3eafb697eec5360cde447fb075919987899b1a2096e85d35d4eb5a4de09a57600ac9cf7e6c8e768b + languageName: node + linkType: hard + +"deep-eql@npm:^5.0.1": + version: 5.0.2 + resolution: "deep-eql@npm:5.0.2" + checksum: 10c0/7102cf3b7bb719c6b9c0db2e19bf0aa9318d141581befe8c7ce8ccd39af9eaa4346e5e05adef7f9bd7015da0f13a3a25dcfe306ef79dc8668aedbecb658dd247 + languageName: node + linkType: hard + +"dir-glob@npm:^3.0.1": + version: 3.0.1 + resolution: "dir-glob@npm:3.0.1" + dependencies: + path-type: "npm:^4.0.0" + checksum: 10c0/dcac00920a4d503e38bb64001acb19df4efc14536ada475725e12f52c16777afdee4db827f55f13a908ee7efc0cb282e2e3dbaeeb98c0993dd93d1802d3bf00c + languageName: node + linkType: hard + +"eastasianwidth@npm:^0.2.0": + version: 0.2.0 + resolution: "eastasianwidth@npm:0.2.0" + checksum: 10c0/26f364ebcdb6395f95124fda411f63137a4bfb5d3a06453f7f23dfe52502905bd84e0488172e0f9ec295fdc45f05c23d5d91baf16bd26f0fe9acd777a188dc39 + languageName: node + linkType: hard + +"emoji-regex@npm:^8.0.0": + version: 8.0.0 + resolution: "emoji-regex@npm:8.0.0" + checksum: 10c0/b6053ad39951c4cf338f9092d7bfba448cdfd46fe6a2a034700b149ac9ffbc137e361cbd3c442297f86bed2e5f7576c1b54cc0a6bf8ef5106cc62f496af35010 + languageName: node + linkType: hard + +"emoji-regex@npm:^9.2.2": + version: 9.2.2 + resolution: "emoji-regex@npm:9.2.2" + checksum: 10c0/af014e759a72064cf66e6e694a7fc6b0ed3d8db680427b021a89727689671cefe9d04151b2cad51dbaf85d5ba790d061cd167f1cf32eb7b281f6368b3c181639 + languageName: node + linkType: hard + +"encoding@npm:^0.1.13": + version: 0.1.13 + resolution: "encoding@npm:0.1.13" + dependencies: + iconv-lite: "npm:^0.6.2" + checksum: 10c0/36d938712ff00fe1f4bac88b43bcffb5930c1efa57bbcdca9d67e1d9d6c57cfb1200fb01efe0f3109b2ce99b231f90779532814a81370a1bd3274a0f58585039 + languageName: node + linkType: hard + +"env-paths@npm:^2.2.0": + version: 2.2.1 + resolution: "env-paths@npm:2.2.1" + checksum: 10c0/285325677bf00e30845e330eec32894f5105529db97496ee3f598478e50f008c5352a41a30e5e72ec9de8a542b5a570b85699cd63bd2bc646dbcb9f311d83bc4 + languageName: node + linkType: hard + +"err-code@npm:^2.0.2": + version: 2.0.3 + resolution: "err-code@npm:2.0.3" + checksum: 10c0/b642f7b4dd4a376e954947550a3065a9ece6733ab8e51ad80db727aaae0817c2e99b02a97a3d6cecc648a97848305e728289cf312d09af395403a90c9d4d8a66 + languageName: node + linkType: hard + +"esbuild@npm:0.17.3": + version: 0.17.3 + resolution: "esbuild@npm:0.17.3" + dependencies: + "@esbuild/android-arm": "npm:0.17.3" + "@esbuild/android-arm64": "npm:0.17.3" + "@esbuild/android-x64": "npm:0.17.3" + "@esbuild/darwin-arm64": "npm:0.17.3" + "@esbuild/darwin-x64": "npm:0.17.3" + "@esbuild/freebsd-arm64": "npm:0.17.3" + "@esbuild/freebsd-x64": "npm:0.17.3" + "@esbuild/linux-arm": "npm:0.17.3" + "@esbuild/linux-arm64": "npm:0.17.3" + "@esbuild/linux-ia32": "npm:0.17.3" + "@esbuild/linux-loong64": "npm:0.17.3" + "@esbuild/linux-mips64el": "npm:0.17.3" + "@esbuild/linux-ppc64": "npm:0.17.3" + "@esbuild/linux-riscv64": "npm:0.17.3" + "@esbuild/linux-s390x": "npm:0.17.3" + "@esbuild/linux-x64": "npm:0.17.3" + "@esbuild/netbsd-x64": "npm:0.17.3" + "@esbuild/openbsd-x64": "npm:0.17.3" + "@esbuild/sunos-x64": "npm:0.17.3" + "@esbuild/win32-arm64": "npm:0.17.3" + "@esbuild/win32-ia32": "npm:0.17.3" + "@esbuild/win32-x64": "npm:0.17.3" + dependenciesMeta: + "@esbuild/android-arm": + optional: true + "@esbuild/android-arm64": + optional: true + "@esbuild/android-x64": + optional: true + "@esbuild/darwin-arm64": + optional: true + "@esbuild/darwin-x64": + optional: true + "@esbuild/freebsd-arm64": + optional: true + "@esbuild/freebsd-x64": + optional: true + "@esbuild/linux-arm": + optional: true + "@esbuild/linux-arm64": + optional: true + "@esbuild/linux-ia32": + optional: true + "@esbuild/linux-loong64": + optional: true + "@esbuild/linux-mips64el": + optional: true + "@esbuild/linux-ppc64": + optional: true + "@esbuild/linux-riscv64": + optional: true + "@esbuild/linux-s390x": + optional: true + "@esbuild/linux-x64": + optional: true + "@esbuild/netbsd-x64": + optional: true + "@esbuild/openbsd-x64": + optional: true + "@esbuild/sunos-x64": + optional: true + "@esbuild/win32-arm64": + optional: true + "@esbuild/win32-ia32": + optional: true + "@esbuild/win32-x64": + optional: true + bin: + esbuild: bin/esbuild + checksum: 10c0/0b17e66f68c6cc0665cc47fdc03d5189d27ba6aeca15513d777b09053c3ce2565417841f706db3c7ce34653d57f82d8168c10ffb569eb2dd7926aed8d628f8e2 + languageName: node + linkType: hard + +"esbuild@npm:^0.21.3": + version: 0.21.5 + resolution: "esbuild@npm:0.21.5" + dependencies: + "@esbuild/aix-ppc64": "npm:0.21.5" + "@esbuild/android-arm": "npm:0.21.5" + "@esbuild/android-arm64": "npm:0.21.5" + "@esbuild/android-x64": "npm:0.21.5" + "@esbuild/darwin-arm64": "npm:0.21.5" + "@esbuild/darwin-x64": "npm:0.21.5" + "@esbuild/freebsd-arm64": "npm:0.21.5" + "@esbuild/freebsd-x64": "npm:0.21.5" + "@esbuild/linux-arm": "npm:0.21.5" + "@esbuild/linux-arm64": "npm:0.21.5" + "@esbuild/linux-ia32": "npm:0.21.5" + "@esbuild/linux-loong64": "npm:0.21.5" + "@esbuild/linux-mips64el": "npm:0.21.5" + "@esbuild/linux-ppc64": "npm:0.21.5" + "@esbuild/linux-riscv64": "npm:0.21.5" + "@esbuild/linux-s390x": "npm:0.21.5" + "@esbuild/linux-x64": "npm:0.21.5" + "@esbuild/netbsd-x64": "npm:0.21.5" + "@esbuild/openbsd-x64": "npm:0.21.5" + "@esbuild/sunos-x64": "npm:0.21.5" + "@esbuild/win32-arm64": "npm:0.21.5" + "@esbuild/win32-ia32": "npm:0.21.5" + "@esbuild/win32-x64": "npm:0.21.5" + dependenciesMeta: + "@esbuild/aix-ppc64": + optional: true + "@esbuild/android-arm": + optional: true + "@esbuild/android-arm64": + optional: true + "@esbuild/android-x64": + optional: true + "@esbuild/darwin-arm64": + optional: true + "@esbuild/darwin-x64": + optional: true + "@esbuild/freebsd-arm64": + optional: true + "@esbuild/freebsd-x64": + optional: true + "@esbuild/linux-arm": + optional: true + "@esbuild/linux-arm64": + optional: true + "@esbuild/linux-ia32": + optional: true + "@esbuild/linux-loong64": + optional: true + "@esbuild/linux-mips64el": + optional: true + "@esbuild/linux-ppc64": + optional: true + "@esbuild/linux-riscv64": + optional: true + "@esbuild/linux-s390x": + optional: true + "@esbuild/linux-x64": + optional: true + "@esbuild/netbsd-x64": + optional: true + "@esbuild/openbsd-x64": + optional: true + "@esbuild/sunos-x64": + optional: true + "@esbuild/win32-arm64": + optional: true + "@esbuild/win32-ia32": + optional: true + "@esbuild/win32-x64": + optional: true + bin: + esbuild: bin/esbuild + checksum: 10c0/fa08508adf683c3f399e8a014a6382a6b65542213431e26206c0720e536b31c09b50798747c2a105a4bbba1d9767b8d3615a74c2f7bf1ddf6d836cd11eb672de + languageName: node + linkType: hard + +"eslint-scope@npm:^5.1.1": + version: 5.1.1 + resolution: "eslint-scope@npm:5.1.1" + dependencies: + esrecurse: "npm:^4.3.0" + estraverse: "npm:^4.1.1" + checksum: 10c0/d30ef9dc1c1cbdece34db1539a4933fe3f9b14e1ffb27ecc85987902ee663ad7c9473bbd49a9a03195a373741e62e2f807c4938992e019b511993d163450e70a + languageName: node + linkType: hard + +"eslint-utils@npm:^3.0.0": + version: 3.0.0 + resolution: "eslint-utils@npm:3.0.0" + dependencies: + eslint-visitor-keys: "npm:^2.0.0" + peerDependencies: + eslint: ">=5" + checksum: 10c0/45aa2b63667a8d9b474c98c28af908d0a592bed1a4568f3145cd49fb5d9510f545327ec95561625290313fe126e6d7bdfe3fdbdb6f432689fab6b9497d3bfb52 + languageName: node + linkType: hard + +"eslint-visitor-keys@npm:^2.0.0": + version: 2.1.0 + resolution: "eslint-visitor-keys@npm:2.1.0" + checksum: 10c0/9f0e3a2db751d84067d15977ac4b4472efd6b303e369e6ff241a99feac04da758f46d5add022c33d06b53596038dbae4b4aceb27c7e68b8dfc1055b35e495787 + languageName: node + linkType: hard + +"eslint-visitor-keys@npm:^3.3.0": + version: 3.4.3 + resolution: "eslint-visitor-keys@npm:3.4.3" + checksum: 10c0/92708e882c0a5ffd88c23c0b404ac1628cf20104a108c745f240a13c332a11aac54f49a22d5762efbffc18ecbc9a580d1b7ad034bf5f3cc3307e5cbff2ec9820 + languageName: node + linkType: hard + +"esrecurse@npm:^4.3.0": + version: 4.3.0 + resolution: "esrecurse@npm:4.3.0" + dependencies: + estraverse: "npm:^5.2.0" + checksum: 10c0/81a37116d1408ded88ada45b9fb16dbd26fba3aadc369ce50fcaf82a0bac12772ebd7b24cd7b91fc66786bf2c1ac7b5f196bc990a473efff972f5cb338877cf5 + languageName: node + linkType: hard + +"estraverse@npm:^4.1.1": + version: 4.3.0 + resolution: "estraverse@npm:4.3.0" + checksum: 10c0/9cb46463ef8a8a4905d3708a652d60122a0c20bb58dec7e0e12ab0e7235123d74214fc0141d743c381813e1b992767e2708194f6f6e0f9fd00c1b4e0887b8b6d + languageName: node + linkType: hard + +"estraverse@npm:^5.2.0": + version: 5.3.0 + resolution: "estraverse@npm:5.3.0" + checksum: 10c0/1ff9447b96263dec95d6d67431c5e0771eb9776427421260a3e2f0fdd5d6bd4f8e37a7338f5ad2880c9f143450c9b1e4fc2069060724570a49cf9cf0312bd107 + languageName: node + linkType: hard + +"estree-walker@npm:^3.0.3": + version: 3.0.3 + resolution: "estree-walker@npm:3.0.3" + dependencies: + "@types/estree": "npm:^1.0.0" + checksum: 10c0/c12e3c2b2642d2bcae7d5aa495c60fa2f299160946535763969a1c83fc74518ffa9c2cd3a8b69ac56aea547df6a8aac25f729a342992ef0bbac5f1c73e78995d + languageName: node + linkType: hard + +"exponential-backoff@npm:^3.1.1": + version: 3.1.1 + resolution: "exponential-backoff@npm:3.1.1" + checksum: 10c0/160456d2d647e6019640bd07111634d8c353038d9fa40176afb7cd49b0548bdae83b56d05e907c2cce2300b81cae35d800ef92fefb9d0208e190fa3b7d6bb579 + languageName: node + linkType: hard + +"fast-glob@npm:^3.2.9": + version: 3.3.2 + resolution: "fast-glob@npm:3.3.2" + dependencies: + "@nodelib/fs.stat": "npm:^2.0.2" + "@nodelib/fs.walk": "npm:^1.2.3" + glob-parent: "npm:^5.1.2" + merge2: "npm:^1.3.0" + micromatch: "npm:^4.0.4" + checksum: 10c0/42baad7b9cd40b63e42039132bde27ca2cb3a4950d0a0f9abe4639ea1aa9d3e3b40f98b1fe31cbc0cc17b664c9ea7447d911a152fa34ec5b72977b125a6fc845 + languageName: node + linkType: hard + +"fastq@npm:^1.6.0": + version: 1.17.1 + resolution: "fastq@npm:1.17.1" + dependencies: + reusify: "npm:^1.0.4" + checksum: 10c0/1095f16cea45fb3beff558bb3afa74ca7a9250f5a670b65db7ed585f92b4b48381445cd328b3d87323da81e43232b5d5978a8201bde84e0cd514310f1ea6da34 + languageName: node + linkType: hard + +"fill-range@npm:^7.1.1": + version: 7.1.1 + resolution: "fill-range@npm:7.1.1" + dependencies: + to-regex-range: "npm:^5.0.1" + checksum: 10c0/b75b691bbe065472f38824f694c2f7449d7f5004aa950426a2c28f0306c60db9b880c0b0e4ed819997ffb882d1da02cfcfc819bddc94d71627f5269682edf018 + languageName: node + linkType: hard + +"foreground-child@npm:^3.1.0": + version: 3.3.0 + resolution: "foreground-child@npm:3.3.0" + dependencies: + cross-spawn: "npm:^7.0.0" + signal-exit: "npm:^4.0.1" + checksum: 10c0/028f1d41000553fcfa6c4bb5c372963bf3d9bf0b1f25a87d1a6253014343fb69dfb1b42d9625d7cf44c8ba429940f3d0ff718b62105d4d4a4f6ef8ca0a53faa2 + languageName: node + linkType: hard + +"fs-minipass@npm:^2.0.0": + version: 2.1.0 + resolution: "fs-minipass@npm:2.1.0" + dependencies: + minipass: "npm:^3.0.0" + checksum: 10c0/703d16522b8282d7299337539c3ed6edddd1afe82435e4f5b76e34a79cd74e488a8a0e26a636afc2440e1a23b03878e2122e3a2cfe375a5cf63c37d92b86a004 + languageName: node + linkType: hard + +"fs-minipass@npm:^3.0.0": + version: 3.0.3 + resolution: "fs-minipass@npm:3.0.3" + dependencies: + minipass: "npm:^7.0.3" + checksum: 10c0/63e80da2ff9b621e2cb1596abcb9207f1cf82b968b116ccd7b959e3323144cce7fb141462200971c38bbf2ecca51695069db45265705bed09a7cd93ae5b89f94 + languageName: node + linkType: hard + +"fsevents@npm:2.3.2": + version: 2.3.2 + resolution: "fsevents@npm:2.3.2" + dependencies: + node-gyp: "npm:latest" + checksum: 10c0/be78a3efa3e181cda3cf7a4637cb527bcebb0bd0ea0440105a3bb45b86f9245b307dc10a2507e8f4498a7d4ec349d1910f4d73e4d4495b16103106e07eee735b + conditions: os=darwin + languageName: node + linkType: hard + +"fsevents@npm:~2.3.2, fsevents@npm:~2.3.3": + version: 2.3.3 + resolution: "fsevents@npm:2.3.3" + dependencies: + node-gyp: "npm:latest" + checksum: 10c0/a1f0c44595123ed717febbc478aa952e47adfc28e2092be66b8ab1635147254ca6cfe1df792a8997f22716d4cbafc73309899ff7bfac2ac3ad8cf2e4ecc3ec60 + conditions: os=darwin + languageName: node + linkType: hard + +"fsevents@patch:fsevents@npm%3A2.3.2#optional!builtin": + version: 2.3.2 + resolution: "fsevents@patch:fsevents@npm%3A2.3.2#optional!builtin::version=2.3.2&hash=df0bf1" + dependencies: + node-gyp: "npm:latest" + conditions: os=darwin + languageName: node + linkType: hard + +"fsevents@patch:fsevents@npm%3A~2.3.2#optional!builtin, fsevents@patch:fsevents@npm%3A~2.3.3#optional!builtin": + version: 2.3.3 + resolution: "fsevents@patch:fsevents@npm%3A2.3.3#optional!builtin::version=2.3.3&hash=df0bf1" + dependencies: + node-gyp: "npm:latest" + conditions: os=darwin + languageName: node + linkType: hard + +"functional-red-black-tree@npm:^1.0.1": + version: 1.0.1 + resolution: "functional-red-black-tree@npm:1.0.1" + checksum: 10c0/5959eed0375803d9924f47688479bb017e0c6816a0e5ac151e22ba6bfe1d12c41de2f339188885e0aa8eeea2072dad509d8e4448467e816bde0a2ca86a0670d3 + languageName: node + linkType: hard + +"glob-parent@npm:^5.1.2": + version: 5.1.2 + resolution: "glob-parent@npm:5.1.2" + dependencies: + is-glob: "npm:^4.0.1" + checksum: 10c0/cab87638e2112bee3f839ef5f6e0765057163d39c66be8ec1602f3823da4692297ad4e972de876ea17c44d652978638d2fd583c6713d0eb6591706825020c9ee + languageName: node + linkType: hard + +"glob@npm:^10.2.2, glob@npm:^10.3.10": + version: 10.4.5 + resolution: "glob@npm:10.4.5" + dependencies: + foreground-child: "npm:^3.1.0" + jackspeak: "npm:^3.1.2" + minimatch: "npm:^9.0.4" + minipass: "npm:^7.1.2" + package-json-from-dist: "npm:^1.0.0" + path-scurry: "npm:^1.11.1" + bin: + glob: dist/esm/bin.mjs + checksum: 10c0/19a9759ea77b8e3ca0a43c2f07ecddc2ad46216b786bb8f993c445aee80d345925a21e5280c7b7c6c59e860a0154b84e4b2b60321fea92cd3c56b4a7489f160e + languageName: node + linkType: hard + +"globby@npm:^11.1.0": + version: 11.1.0 + resolution: "globby@npm:11.1.0" + dependencies: + array-union: "npm:^2.1.0" + dir-glob: "npm:^3.0.1" + fast-glob: "npm:^3.2.9" + ignore: "npm:^5.2.0" + merge2: "npm:^1.4.1" + slash: "npm:^3.0.0" + checksum: 10c0/b39511b4afe4bd8a7aead3a27c4ade2b9968649abab0a6c28b1a90141b96ca68ca5db1302f7c7bd29eab66bf51e13916b8e0a3d0ac08f75e1e84a39b35691189 + languageName: node + linkType: hard + +"graceful-fs@npm:^4.2.6": + version: 4.2.11 + resolution: "graceful-fs@npm:4.2.11" + checksum: 10c0/386d011a553e02bc594ac2ca0bd6d9e4c22d7fa8cfbfc448a6d148c59ea881b092db9dbe3547ae4b88e55f1b01f7c4a2ecc53b310c042793e63aa44cf6c257f2 + languageName: node + linkType: hard + +"http-cache-semantics@npm:^4.1.1": + version: 4.1.1 + resolution: "http-cache-semantics@npm:4.1.1" + checksum: 10c0/ce1319b8a382eb3cbb4a37c19f6bfe14e5bb5be3d09079e885e8c513ab2d3cd9214902f8a31c9dc4e37022633ceabfc2d697405deeaf1b8f3552bb4ed996fdfc + languageName: node + linkType: hard + +"http-proxy-agent@npm:^7.0.0": + version: 7.0.2 + resolution: "http-proxy-agent@npm:7.0.2" + dependencies: + agent-base: "npm:^7.1.0" + debug: "npm:^4.3.4" + checksum: 10c0/4207b06a4580fb85dd6dff521f0abf6db517489e70863dca1a0291daa7f2d3d2d6015a57bd702af068ea5cf9f1f6ff72314f5f5b4228d299c0904135d2aef921 + languageName: node + linkType: hard + +"https-proxy-agent@npm:^7.0.1": + version: 7.0.5 + resolution: "https-proxy-agent@npm:7.0.5" + dependencies: + agent-base: "npm:^7.0.2" + debug: "npm:4" + checksum: 10c0/2490e3acec397abeb88807db52cac59102d5ed758feee6df6112ab3ccd8325e8a1ce8bce6f4b66e5470eca102d31e425ace904242e4fa28dbe0c59c4bafa7b2c + languageName: node + linkType: hard + +"iconv-lite@npm:^0.6.2": + version: 0.6.3 + resolution: "iconv-lite@npm:0.6.3" + dependencies: + safer-buffer: "npm:>= 2.1.2 < 3.0.0" + checksum: 10c0/98102bc66b33fcf5ac044099d1257ba0b7ad5e3ccd3221f34dd508ab4070edff183276221684e1e0555b145fce0850c9f7d2b60a9fcac50fbb4ea0d6e845a3b1 + languageName: node + linkType: hard + +"ignore@npm:^5.2.0": + version: 5.3.2 + resolution: "ignore@npm:5.3.2" + checksum: 10c0/f9f652c957983634ded1e7f02da3b559a0d4cc210fca3792cb67f1b153623c9c42efdc1c4121af171e295444459fc4a9201101fb041b1104a3c000bccb188337 + languageName: node + linkType: hard + +"imurmurhash@npm:^0.1.4": + version: 0.1.4 + resolution: "imurmurhash@npm:0.1.4" + checksum: 10c0/8b51313850dd33605c6c9d3fd9638b714f4c4c40250cff658209f30d40da60f78992fb2df5dabee4acf589a6a82bbc79ad5486550754bd9ec4e3fc0d4a57d6a6 + languageName: node + linkType: hard + +"indent-string@npm:^4.0.0": + version: 4.0.0 + resolution: "indent-string@npm:4.0.0" + checksum: 10c0/1e1904ddb0cb3d6cce7cd09e27a90184908b7a5d5c21b92e232c93579d314f0b83c246ffb035493d0504b1e9147ba2c9b21df0030f48673fba0496ecd698161f + languageName: node + linkType: hard + +"ip-address@npm:^9.0.5": + version: 9.0.5 + resolution: "ip-address@npm:9.0.5" + dependencies: + jsbn: "npm:1.1.0" + sprintf-js: "npm:^1.1.3" + checksum: 10c0/331cd07fafcb3b24100613e4b53e1a2b4feab11e671e655d46dc09ee233da5011284d09ca40c4ecbdfe1d0004f462958675c224a804259f2f78d2465a87824bc + languageName: node + linkType: hard + +"is-extglob@npm:^2.1.1": + version: 2.1.1 + resolution: "is-extglob@npm:2.1.1" + checksum: 10c0/5487da35691fbc339700bbb2730430b07777a3c21b9ebaecb3072512dfd7b4ba78ac2381a87e8d78d20ea08affb3f1971b4af629173a6bf435ff8a4c47747912 + languageName: node + linkType: hard + +"is-fullwidth-code-point@npm:^3.0.0": + version: 3.0.0 + resolution: "is-fullwidth-code-point@npm:3.0.0" + checksum: 10c0/bb11d825e049f38e04c06373a8d72782eee0205bda9d908cc550ccb3c59b99d750ff9537982e01733c1c94a58e35400661f57042158ff5e8f3e90cf936daf0fc + languageName: node + linkType: hard + +"is-glob@npm:^4.0.1, is-glob@npm:^4.0.3": + version: 4.0.3 + resolution: "is-glob@npm:4.0.3" + dependencies: + is-extglob: "npm:^2.1.1" + checksum: 10c0/17fb4014e22be3bbecea9b2e3a76e9e34ff645466be702f1693e8f1ee1adac84710d0be0bd9f967d6354036fd51ab7c2741d954d6e91dae6bb69714de92c197a + languageName: node + linkType: hard + +"is-lambda@npm:^1.0.1": + version: 1.0.1 + resolution: "is-lambda@npm:1.0.1" + checksum: 10c0/85fee098ae62ba6f1e24cf22678805473c7afd0fb3978a3aa260e354cb7bcb3a5806cf0a98403188465efedec41ab4348e8e4e79305d409601323855b3839d4d + languageName: node + linkType: hard + +"is-number@npm:^7.0.0": + version: 7.0.0 + resolution: "is-number@npm:7.0.0" + checksum: 10c0/b4686d0d3053146095ccd45346461bc8e53b80aeb7671cc52a4de02dbbf7dc0d1d2a986e2fe4ae206984b4d34ef37e8b795ebc4f4295c978373e6575e295d811 + languageName: node + linkType: hard + +"isexe@npm:^2.0.0": + version: 2.0.0 + resolution: "isexe@npm:2.0.0" + checksum: 10c0/228cfa503fadc2c31596ab06ed6aa82c9976eec2bfd83397e7eaf06d0ccf42cd1dfd6743bf9aeb01aebd4156d009994c5f76ea898d2832c1fe342da923ca457d + languageName: node + linkType: hard + +"isexe@npm:^3.1.1": + version: 3.1.1 + resolution: "isexe@npm:3.1.1" + checksum: 10c0/9ec257654093443eb0a528a9c8cbba9c0ca7616ccb40abd6dde7202734d96bb86e4ac0d764f0f8cd965856aacbff2f4ce23e730dc19dfb41e3b0d865ca6fdcc7 + languageName: node + linkType: hard + +"jackspeak@npm:^3.1.2": + version: 3.4.3 + resolution: "jackspeak@npm:3.4.3" + dependencies: + "@isaacs/cliui": "npm:^8.0.2" + "@pkgjs/parseargs": "npm:^0.11.0" + dependenciesMeta: + "@pkgjs/parseargs": + optional: true + checksum: 10c0/6acc10d139eaefdbe04d2f679e6191b3abf073f111edf10b1de5302c97ec93fffeb2fdd8681ed17f16268aa9dd4f8c588ed9d1d3bffbbfa6e8bf897cbb3149b9 + languageName: node + linkType: hard + +"jsbn@npm:1.1.0": + version: 1.1.0 + resolution: "jsbn@npm:1.1.0" + checksum: 10c0/4f907fb78d7b712e11dea8c165fe0921f81a657d3443dde75359ed52eb2b5d33ce6773d97985a089f09a65edd80b11cb75c767b57ba47391fee4c969f7215c96 + languageName: node + linkType: hard + +"loupe@npm:^3.1.0, loupe@npm:^3.1.1": + version: 3.1.2 + resolution: "loupe@npm:3.1.2" + checksum: 10c0/b13c02e3ddd6a9d5f8bf84133b3242de556512d824dddeea71cce2dbd6579c8f4d672381c4e742d45cf4423d0701765b4a6e5fbc24701def16bc2b40f8daa96a + languageName: node + linkType: hard + +"lru-cache@npm:^10.0.1, lru-cache@npm:^10.2.0": + version: 10.4.3 + resolution: "lru-cache@npm:10.4.3" + checksum: 10c0/ebd04fbca961e6c1d6c0af3799adcc966a1babe798f685bb84e6599266599cd95d94630b10262f5424539bc4640107e8a33aa28585374abf561d30d16f4b39fb + languageName: node + linkType: hard + +"magic-string@npm:^0.30.11": + version: 0.30.12 + resolution: "magic-string@npm:0.30.12" + dependencies: + "@jridgewell/sourcemap-codec": "npm:^1.5.0" + checksum: 10c0/469f457d18af37dfcca8617086ea8a65bcd8b60ba8a1182cb024ce43e470ace3c9d1cb6bee58d3b311768fb16bc27bd50bdeebcaa63dadd0fd46cac4d2e11d5f + languageName: node + linkType: hard + +"make-fetch-happen@npm:^13.0.0": + version: 13.0.1 + resolution: "make-fetch-happen@npm:13.0.1" + dependencies: + "@npmcli/agent": "npm:^2.0.0" + cacache: "npm:^18.0.0" + http-cache-semantics: "npm:^4.1.1" + is-lambda: "npm:^1.0.1" + minipass: "npm:^7.0.2" + minipass-fetch: "npm:^3.0.0" + minipass-flush: "npm:^1.0.5" + minipass-pipeline: "npm:^1.2.4" + negotiator: "npm:^0.6.3" + proc-log: "npm:^4.2.0" + promise-retry: "npm:^2.0.1" + ssri: "npm:^10.0.0" + checksum: 10c0/df5f4dbb6d98153b751bccf4dc4cc500de85a96a9331db9805596c46aa9f99d9555983954e6c1266d9f981ae37a9e4647f42b9a4bb5466f867f4012e582c9e7e + languageName: node + linkType: hard + +"merge2@npm:^1.3.0, merge2@npm:^1.4.1": + version: 1.4.1 + resolution: "merge2@npm:1.4.1" + checksum: 10c0/254a8a4605b58f450308fc474c82ac9a094848081bf4c06778200207820e5193726dc563a0d2c16468810516a5c97d9d3ea0ca6585d23c58ccfff2403e8dbbeb + languageName: node + linkType: hard + +"micromatch@npm:^4.0.4": + version: 4.0.8 + resolution: "micromatch@npm:4.0.8" + dependencies: + braces: "npm:^3.0.3" + picomatch: "npm:^2.3.1" + checksum: 10c0/166fa6eb926b9553f32ef81f5f531d27b4ce7da60e5baf8c021d043b27a388fb95e46a8038d5045877881e673f8134122b59624d5cecbd16eb50a42e7a6b5ca8 + languageName: node + linkType: hard + +"minimatch@npm:^9.0.4": + version: 9.0.5 + resolution: "minimatch@npm:9.0.5" + dependencies: + brace-expansion: "npm:^2.0.1" + checksum: 10c0/de96cf5e35bdf0eab3e2c853522f98ffbe9a36c37797778d2665231ec1f20a9447a7e567cb640901f89e4daaa95ae5d70c65a9e8aa2bb0019b6facbc3c0575ed + languageName: node + linkType: hard + +"minipass-collect@npm:^2.0.1": + version: 2.0.1 + resolution: "minipass-collect@npm:2.0.1" + dependencies: + minipass: "npm:^7.0.3" + checksum: 10c0/5167e73f62bb74cc5019594709c77e6a742051a647fe9499abf03c71dca75515b7959d67a764bdc4f8b361cf897fbf25e2d9869ee039203ed45240f48b9aa06e + languageName: node + linkType: hard + +"minipass-fetch@npm:^3.0.0": + version: 3.0.5 + resolution: "minipass-fetch@npm:3.0.5" + dependencies: + encoding: "npm:^0.1.13" + minipass: "npm:^7.0.3" + minipass-sized: "npm:^1.0.3" + minizlib: "npm:^2.1.2" + dependenciesMeta: + encoding: + optional: true + checksum: 10c0/9d702d57f556274286fdd97e406fc38a2f5c8d15e158b498d7393b1105974b21249289ec571fa2b51e038a4872bfc82710111cf75fae98c662f3d6f95e72152b + languageName: node + linkType: hard + +"minipass-flush@npm:^1.0.5": + version: 1.0.5 + resolution: "minipass-flush@npm:1.0.5" + dependencies: + minipass: "npm:^3.0.0" + checksum: 10c0/2a51b63feb799d2bb34669205eee7c0eaf9dce01883261a5b77410c9408aa447e478efd191b4de6fc1101e796ff5892f8443ef20d9544385819093dbb32d36bd + languageName: node + linkType: hard + +"minipass-pipeline@npm:^1.2.4": + version: 1.2.4 + resolution: "minipass-pipeline@npm:1.2.4" + dependencies: + minipass: "npm:^3.0.0" + checksum: 10c0/cbda57cea20b140b797505dc2cac71581a70b3247b84480c1fed5ca5ba46c25ecc25f68bfc9e6dcb1a6e9017dab5c7ada5eab73ad4f0a49d84e35093e0c643f2 + languageName: node + linkType: hard + +"minipass-sized@npm:^1.0.3": + version: 1.0.3 + resolution: "minipass-sized@npm:1.0.3" + dependencies: + minipass: "npm:^3.0.0" + checksum: 10c0/298f124753efdc745cfe0f2bdfdd81ba25b9f4e753ca4a2066eb17c821f25d48acea607dfc997633ee5bf7b6dfffb4eee4f2051eb168663f0b99fad2fa4829cb + languageName: node + linkType: hard + +"minipass@npm:^3.0.0": + version: 3.3.6 + resolution: "minipass@npm:3.3.6" + dependencies: + yallist: "npm:^4.0.0" + checksum: 10c0/a114746943afa1dbbca8249e706d1d38b85ed1298b530f5808ce51f8e9e941962e2a5ad2e00eae7dd21d8a4aae6586a66d4216d1a259385e9d0358f0c1eba16c + languageName: node + linkType: hard + +"minipass@npm:^5.0.0": + version: 5.0.0 + resolution: "minipass@npm:5.0.0" + checksum: 10c0/a91d8043f691796a8ac88df039da19933ef0f633e3d7f0d35dcd5373af49131cf2399bfc355f41515dc495e3990369c3858cd319e5c2722b4753c90bf3152462 + languageName: node + linkType: hard + +"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.0.2, minipass@npm:^7.0.3, minipass@npm:^7.1.2": + version: 7.1.2 + resolution: "minipass@npm:7.1.2" + checksum: 10c0/b0fd20bb9fb56e5fa9a8bfac539e8915ae07430a619e4b86ff71f5fc757ef3924b23b2c4230393af1eda647ed3d75739e4e0acb250a6b1eb277cf7f8fe449557 + languageName: node + linkType: hard + +"minizlib@npm:^2.1.1, minizlib@npm:^2.1.2": + version: 2.1.2 + resolution: "minizlib@npm:2.1.2" + dependencies: + minipass: "npm:^3.0.0" + yallist: "npm:^4.0.0" + checksum: 10c0/64fae024e1a7d0346a1102bb670085b17b7f95bf6cfdf5b128772ec8faf9ea211464ea4add406a3a6384a7d87a0cd1a96263692134323477b4fb43659a6cab78 + languageName: node + linkType: hard + +"mkdirp@npm:^1.0.3": + version: 1.0.4 + resolution: "mkdirp@npm:1.0.4" + bin: + mkdirp: bin/cmd.js + checksum: 10c0/46ea0f3ffa8bc6a5bc0c7081ffc3907777f0ed6516888d40a518c5111f8366d97d2678911ad1a6882bf592fa9de6c784fea32e1687bb94e1f4944170af48a5cf + languageName: node + linkType: hard + +"moment@npm:2.29.4": + version: 2.29.4 + resolution: "moment@npm:2.29.4" + checksum: 10c0/844c6f3ce42862ac9467c8ca4f5e48a00750078682cc5bda1bc0e50cc7ca88e2115a0f932d65a06e4a90e26cb78892be9b3ca3dd6546ca2c4d994cebb787fc2b + languageName: node + linkType: hard + +"ms@npm:^2.1.3": + version: 2.1.3 + resolution: "ms@npm:2.1.3" + checksum: 10c0/d924b57e7312b3b63ad21fc5b3dc0af5e78d61a1fc7cfb5457edaf26326bf62be5307cc87ffb6862ef1c2b33b0233cdb5d4f01c4c958cc0d660948b65a287a48 + languageName: node + linkType: hard + +"nanoid@npm:^3.3.7": + version: 3.3.7 + resolution: "nanoid@npm:3.3.7" + bin: + nanoid: bin/nanoid.cjs + checksum: 10c0/e3fb661aa083454f40500473bb69eedb85dc160e763150b9a2c567c7e9ff560ce028a9f833123b618a6ea742e311138b591910e795614a629029e86e180660f3 + languageName: node + linkType: hard + +"negotiator@npm:^0.6.3": + version: 0.6.4 + resolution: "negotiator@npm:0.6.4" + checksum: 10c0/3e677139c7fb7628a6f36335bf11a885a62c21d5390204590a1a214a5631fcbe5ea74ef6a610b60afe84b4d975cbe0566a23f20ee17c77c73e74b80032108dea + languageName: node + linkType: hard + +"node-gyp@npm:latest": + version: 10.2.0 + resolution: "node-gyp@npm:10.2.0" + dependencies: + env-paths: "npm:^2.2.0" + exponential-backoff: "npm:^3.1.1" + glob: "npm:^10.3.10" + graceful-fs: "npm:^4.2.6" + make-fetch-happen: "npm:^13.0.0" + nopt: "npm:^7.0.0" + proc-log: "npm:^4.1.0" + semver: "npm:^7.3.5" + tar: "npm:^6.2.1" + which: "npm:^4.0.0" + bin: + node-gyp: bin/node-gyp.js + checksum: 10c0/00630d67dbd09a45aee0a5d55c05e3916ca9e6d427ee4f7bc392d2d3dc5fad7449b21fc098dd38260a53d9dcc9c879b36704a1994235d4707e7271af7e9a835b + languageName: node + linkType: hard + +"nopt@npm:^7.0.0": + version: 7.2.1 + resolution: "nopt@npm:7.2.1" + dependencies: + abbrev: "npm:^2.0.0" + bin: + nopt: bin/nopt.js + checksum: 10c0/a069c7c736767121242037a22a788863accfa932ab285a1eb569eb8cd534b09d17206f68c37f096ae785647435e0c5a5a0a67b42ec743e481a455e5ae6a6df81 + languageName: node + linkType: hard + +"obsidian-sample-plugin@workspace:test-project": + version: 0.0.0-use.local + resolution: "obsidian-sample-plugin@workspace:test-project" + dependencies: + "@playwright/test": "npm:^1.48.1" + "@types/node": "npm:^16.11.6" + "@typescript-eslint/eslint-plugin": "npm:5.29.0" + "@typescript-eslint/parser": "npm:5.29.0" + builtin-modules: "npm:3.3.0" + esbuild: "npm:0.17.3" + obsidian: "npm:latest" + obsidian-testing-framework: "workspace:^" + tslib: "npm:2.4.0" + typescript: "npm:4.7.4" + languageName: unknown + linkType: soft + +"obsidian-testing-framework@workspace:., obsidian-testing-framework@workspace:^": + version: 0.0.0-use.local + resolution: "obsidian-testing-framework@workspace:." + dependencies: + "@playwright/test": "npm:^1.48.1" + "@types/node": "npm:^22.7.8" + obsidian: "npm:latest" + playwright: "npm:^1.48.1" + typescript: "npm:^5.6.3" + vitest: "npm:^2.1.3" + languageName: unknown + linkType: soft + +"obsidian@npm:latest": + version: 1.7.2 + resolution: "obsidian@npm:1.7.2" + dependencies: + "@types/codemirror": "npm:5.60.8" + moment: "npm:2.29.4" + peerDependencies: + "@codemirror/state": ^6.0.0 + "@codemirror/view": ^6.0.0 + checksum: 10c0/7ad1e97e0a21e5011640a8c02bdd74844ccf22d12c84ad8fcd653bc11cde47422e7dce38142d4659f8bca5f2043ce7f849e750765ac8052fed8770d37cbf39a6 + languageName: node + linkType: hard + +"p-map@npm:^4.0.0": + version: 4.0.0 + resolution: "p-map@npm:4.0.0" + dependencies: + aggregate-error: "npm:^3.0.0" + checksum: 10c0/592c05bd6262c466ce269ff172bb8de7c6975afca9b50c975135b974e9bdaafbfe80e61aaaf5be6d1200ba08b30ead04b88cfa7e25ff1e3b93ab28c9f62a2c75 + languageName: node + linkType: hard + +"package-json-from-dist@npm:^1.0.0": + version: 1.0.1 + resolution: "package-json-from-dist@npm:1.0.1" + checksum: 10c0/62ba2785eb655fec084a257af34dbe24292ab74516d6aecef97ef72d4897310bc6898f6c85b5cd22770eaa1ce60d55a0230e150fb6a966e3ecd6c511e23d164b + languageName: node + linkType: hard + +"path-key@npm:^3.1.0": + version: 3.1.1 + resolution: "path-key@npm:3.1.1" + checksum: 10c0/748c43efd5a569c039d7a00a03b58eecd1d75f3999f5a28303d75f521288df4823bc057d8784eb72358b2895a05f29a070bc9f1f17d28226cc4e62494cc58c4c + languageName: node + linkType: hard + +"path-scurry@npm:^1.11.1": + version: 1.11.1 + resolution: "path-scurry@npm:1.11.1" + dependencies: + lru-cache: "npm:^10.2.0" + minipass: "npm:^5.0.0 || ^6.0.2 || ^7.0.0" + checksum: 10c0/32a13711a2a505616ae1cc1b5076801e453e7aae6ac40ab55b388bb91b9d0547a52f5aaceff710ea400205f18691120d4431e520afbe4266b836fadede15872d + languageName: node + linkType: hard + +"path-type@npm:^4.0.0": + version: 4.0.0 + resolution: "path-type@npm:4.0.0" + checksum: 10c0/666f6973f332f27581371efaf303fd6c272cc43c2057b37aa99e3643158c7e4b2626549555d88626e99ea9e046f82f32e41bbde5f1508547e9a11b149b52387c + languageName: node + linkType: hard + +"pathe@npm:^1.1.2": + version: 1.1.2 + resolution: "pathe@npm:1.1.2" + checksum: 10c0/64ee0a4e587fb0f208d9777a6c56e4f9050039268faaaaecd50e959ef01bf847b7872785c36483fa5cdcdbdfdb31fef2ff222684d4fc21c330ab60395c681897 + languageName: node + linkType: hard + +"pathval@npm:^2.0.0": + version: 2.0.0 + resolution: "pathval@npm:2.0.0" + checksum: 10c0/602e4ee347fba8a599115af2ccd8179836a63c925c23e04bd056d0674a64b39e3a081b643cc7bc0b84390517df2d800a46fcc5598d42c155fe4977095c2f77c5 + languageName: node + linkType: hard + +"picocolors@npm:^1.1.0": + version: 1.1.1 + resolution: "picocolors@npm:1.1.1" + checksum: 10c0/e2e3e8170ab9d7c7421969adaa7e1b31434f789afb9b3f115f6b96d91945041ac3ceb02e9ec6fe6510ff036bcc0bf91e69a1772edc0b707e12b19c0f2d6bcf58 + languageName: node + linkType: hard + +"picomatch@npm:^2.3.1": + version: 2.3.1 + resolution: "picomatch@npm:2.3.1" + checksum: 10c0/26c02b8d06f03206fc2ab8d16f19960f2ff9e81a658f831ecb656d8f17d9edc799e8364b1f4a7873e89d9702dff96204be0fa26fe4181f6843f040f819dac4be + languageName: node + linkType: hard + +"playwright-core@npm:1.48.1": + version: 1.48.1 + resolution: "playwright-core@npm:1.48.1" + bin: + playwright-core: cli.js + checksum: 10c0/2f75532b9b7dfa0e586f5660ac1d8ea729bbdbd28dd2c0711e7cfc1adfe5cf7448d7f15a018ec9851a8f50c0743c3990cb9df23064bed603627baeac4dce3915 + languageName: node + linkType: hard + +"playwright@npm:1.48.1, playwright@npm:^1.48.1": + version: 1.48.1 + resolution: "playwright@npm:1.48.1" + dependencies: + fsevents: "npm:2.3.2" + playwright-core: "npm:1.48.1" + dependenciesMeta: + fsevents: + optional: true + bin: + playwright: cli.js + checksum: 10c0/96280ae656226e52015c0c69c4c19e9f594c19353a79012a19bd7b7175d7b409c1aed289a629df49ef897a57ccd24668ad15b86c283db10f76212a4db90a94ac + languageName: node + linkType: hard + +"postcss@npm:^8.4.43": + version: 8.4.47 + resolution: "postcss@npm:8.4.47" + dependencies: + nanoid: "npm:^3.3.7" + picocolors: "npm:^1.1.0" + source-map-js: "npm:^1.2.1" + checksum: 10c0/929f68b5081b7202709456532cee2a145c1843d391508c5a09de2517e8c4791638f71dd63b1898dba6712f8839d7a6da046c72a5e44c162e908f5911f57b5f44 + languageName: node + linkType: hard + +"proc-log@npm:^4.1.0, proc-log@npm:^4.2.0": + version: 4.2.0 + resolution: "proc-log@npm:4.2.0" + checksum: 10c0/17db4757c2a5c44c1e545170e6c70a26f7de58feb985091fb1763f5081cab3d01b181fb2dd240c9f4a4255a1d9227d163d5771b7e69c9e49a561692db865efb9 + languageName: node + linkType: hard + +"promise-retry@npm:^2.0.1": + version: 2.0.1 + resolution: "promise-retry@npm:2.0.1" + dependencies: + err-code: "npm:^2.0.2" + retry: "npm:^0.12.0" + checksum: 10c0/9c7045a1a2928094b5b9b15336dcd2a7b1c052f674550df63cc3f36cd44028e5080448175b6f6ca32b642de81150f5e7b1a98b728f15cb069f2dd60ac2616b96 + languageName: node + linkType: hard + +"queue-microtask@npm:^1.2.2": + version: 1.2.3 + resolution: "queue-microtask@npm:1.2.3" + checksum: 10c0/900a93d3cdae3acd7d16f642c29a642aea32c2026446151f0778c62ac089d4b8e6c986811076e1ae180a694cedf077d453a11b58ff0a865629a4f82ab558e102 + languageName: node + linkType: hard + +"regexpp@npm:^3.2.0": + version: 3.2.0 + resolution: "regexpp@npm:3.2.0" + checksum: 10c0/d1da82385c8754a1681416b90b9cca0e21b4a2babef159099b88f640637d789c69011d0bc94705dacab85b81133e929d027d85210e8b8b03f8035164dbc14710 + languageName: node + linkType: hard + +"retry@npm:^0.12.0": + version: 0.12.0 + resolution: "retry@npm:0.12.0" + checksum: 10c0/59933e8501727ba13ad73ef4a04d5280b3717fd650408460c987392efe9d7be2040778ed8ebe933c5cbd63da3dcc37919c141ef8af0a54a6e4fca5a2af177bfe + languageName: node + linkType: hard + +"reusify@npm:^1.0.4": + version: 1.0.4 + resolution: "reusify@npm:1.0.4" + checksum: 10c0/c19ef26e4e188f408922c46f7ff480d38e8dfc55d448310dfb518736b23ed2c4f547fb64a6ed5bdba92cd7e7ddc889d36ff78f794816d5e71498d645ef476107 + languageName: node + linkType: hard + +"rollup@npm:^4.20.0": + version: 4.24.0 + resolution: "rollup@npm:4.24.0" + dependencies: + "@rollup/rollup-android-arm-eabi": "npm:4.24.0" + "@rollup/rollup-android-arm64": "npm:4.24.0" + "@rollup/rollup-darwin-arm64": "npm:4.24.0" + "@rollup/rollup-darwin-x64": "npm:4.24.0" + "@rollup/rollup-linux-arm-gnueabihf": "npm:4.24.0" + "@rollup/rollup-linux-arm-musleabihf": "npm:4.24.0" + "@rollup/rollup-linux-arm64-gnu": "npm:4.24.0" + "@rollup/rollup-linux-arm64-musl": "npm:4.24.0" + "@rollup/rollup-linux-powerpc64le-gnu": "npm:4.24.0" + "@rollup/rollup-linux-riscv64-gnu": "npm:4.24.0" + "@rollup/rollup-linux-s390x-gnu": "npm:4.24.0" + "@rollup/rollup-linux-x64-gnu": "npm:4.24.0" + "@rollup/rollup-linux-x64-musl": "npm:4.24.0" + "@rollup/rollup-win32-arm64-msvc": "npm:4.24.0" + "@rollup/rollup-win32-ia32-msvc": "npm:4.24.0" + "@rollup/rollup-win32-x64-msvc": "npm:4.24.0" + "@types/estree": "npm:1.0.6" + fsevents: "npm:~2.3.2" + dependenciesMeta: + "@rollup/rollup-android-arm-eabi": + optional: true + "@rollup/rollup-android-arm64": + optional: true + "@rollup/rollup-darwin-arm64": + optional: true + "@rollup/rollup-darwin-x64": + optional: true + "@rollup/rollup-linux-arm-gnueabihf": + optional: true + "@rollup/rollup-linux-arm-musleabihf": + optional: true + "@rollup/rollup-linux-arm64-gnu": + optional: true + "@rollup/rollup-linux-arm64-musl": + optional: true + "@rollup/rollup-linux-powerpc64le-gnu": + optional: true + "@rollup/rollup-linux-riscv64-gnu": + optional: true + "@rollup/rollup-linux-s390x-gnu": + optional: true + "@rollup/rollup-linux-x64-gnu": + optional: true + "@rollup/rollup-linux-x64-musl": + optional: true + "@rollup/rollup-win32-arm64-msvc": + optional: true + "@rollup/rollup-win32-ia32-msvc": + optional: true + "@rollup/rollup-win32-x64-msvc": + optional: true + fsevents: + optional: true + bin: + rollup: dist/bin/rollup + checksum: 10c0/77fb549c1de8afd1142d2da765adbb0cdab9f13c47df5217f00b5cf40b74219caa48c6ba2157f6249313ee81b6fa4c4fa8b3d2a0347ad6220739e00e580a808d + languageName: node + linkType: hard + +"run-parallel@npm:^1.1.9": + version: 1.2.0 + resolution: "run-parallel@npm:1.2.0" + dependencies: + queue-microtask: "npm:^1.2.2" + checksum: 10c0/200b5ab25b5b8b7113f9901bfe3afc347e19bb7475b267d55ad0eb86a62a46d77510cb0f232507c9e5d497ebda569a08a9867d0d14f57a82ad5564d991588b39 + languageName: node + linkType: hard + +"safer-buffer@npm:>= 2.1.2 < 3.0.0": + version: 2.1.2 + resolution: "safer-buffer@npm:2.1.2" + checksum: 10c0/7e3c8b2e88a1841c9671094bbaeebd94448111dd90a81a1f606f3f67708a6ec57763b3b47f06da09fc6054193e0e6709e77325415dc8422b04497a8070fa02d4 + languageName: node + linkType: hard + +"semver@npm:^7.3.5, semver@npm:^7.3.7": + version: 7.6.3 + resolution: "semver@npm:7.6.3" + bin: + semver: bin/semver.js + checksum: 10c0/88f33e148b210c153873cb08cfe1e281d518aaa9a666d4d148add6560db5cd3c582f3a08ccb91f38d5f379ead256da9931234ed122057f40bb5766e65e58adaf + languageName: node + linkType: hard + +"shebang-command@npm:^2.0.0": + version: 2.0.0 + resolution: "shebang-command@npm:2.0.0" + dependencies: + shebang-regex: "npm:^3.0.0" + checksum: 10c0/a41692e7d89a553ef21d324a5cceb5f686d1f3c040759c50aab69688634688c5c327f26f3ecf7001ebfd78c01f3c7c0a11a7c8bfd0a8bc9f6240d4f40b224e4e + languageName: node + linkType: hard + +"shebang-regex@npm:^3.0.0": + version: 3.0.0 + resolution: "shebang-regex@npm:3.0.0" + checksum: 10c0/1dbed0726dd0e1152a92696c76c7f06084eb32a90f0528d11acd764043aacf76994b2fb30aa1291a21bd019d6699164d048286309a278855ee7bec06cf6fb690 + languageName: node + linkType: hard + +"siginfo@npm:^2.0.0": + version: 2.0.0 + resolution: "siginfo@npm:2.0.0" + checksum: 10c0/3def8f8e516fbb34cb6ae415b07ccc5d9c018d85b4b8611e3dc6f8be6d1899f693a4382913c9ed51a06babb5201639d76453ab297d1c54a456544acf5c892e34 + languageName: node + linkType: hard + +"signal-exit@npm:^4.0.1": + version: 4.1.0 + resolution: "signal-exit@npm:4.1.0" + checksum: 10c0/41602dce540e46d599edba9d9860193398d135f7ff72cab629db5171516cfae628d21e7bfccde1bbfdf11c48726bc2a6d1a8fb8701125852fbfda7cf19c6aa83 + languageName: node + linkType: hard + +"slash@npm:^3.0.0": + version: 3.0.0 + resolution: "slash@npm:3.0.0" + checksum: 10c0/e18488c6a42bdfd4ac5be85b2ced3ccd0224773baae6ad42cfbb9ec74fc07f9fa8396bd35ee638084ead7a2a0818eb5e7151111544d4731ce843019dab4be47b + languageName: node + linkType: hard + +"smart-buffer@npm:^4.2.0": + version: 4.2.0 + resolution: "smart-buffer@npm:4.2.0" + checksum: 10c0/a16775323e1404dd43fabafe7460be13a471e021637bc7889468eb45ce6a6b207261f454e4e530a19500cc962c4cc5348583520843b363f4193cee5c00e1e539 + languageName: node + linkType: hard + +"socks-proxy-agent@npm:^8.0.3": + version: 8.0.4 + resolution: "socks-proxy-agent@npm:8.0.4" + dependencies: + agent-base: "npm:^7.1.1" + debug: "npm:^4.3.4" + socks: "npm:^2.8.3" + checksum: 10c0/345593bb21b95b0508e63e703c84da11549f0a2657d6b4e3ee3612c312cb3a907eac10e53b23ede3557c6601d63252103494caa306b66560f43af7b98f53957a + languageName: node + linkType: hard + +"socks@npm:^2.8.3": + version: 2.8.3 + resolution: "socks@npm:2.8.3" + dependencies: + ip-address: "npm:^9.0.5" + smart-buffer: "npm:^4.2.0" + checksum: 10c0/d54a52bf9325165770b674a67241143a3d8b4e4c8884560c4e0e078aace2a728dffc7f70150660f51b85797c4e1a3b82f9b7aa25e0a0ceae1a243365da5c51a7 + languageName: node + linkType: hard + +"source-map-js@npm:^1.2.1": + version: 1.2.1 + resolution: "source-map-js@npm:1.2.1" + checksum: 10c0/7bda1fc4c197e3c6ff17de1b8b2c20e60af81b63a52cb32ec5a5d67a20a7d42651e2cb34ebe93833c5a2a084377e17455854fee3e21e7925c64a51b6a52b0faf + languageName: node + linkType: hard + +"sprintf-js@npm:^1.1.3": + version: 1.1.3 + resolution: "sprintf-js@npm:1.1.3" + checksum: 10c0/09270dc4f30d479e666aee820eacd9e464215cdff53848b443964202bf4051490538e5dd1b42e1a65cf7296916ca17640aebf63dae9812749c7542ee5f288dec + languageName: node + linkType: hard + +"ssri@npm:^10.0.0": + version: 10.0.6 + resolution: "ssri@npm:10.0.6" + dependencies: + minipass: "npm:^7.0.3" + checksum: 10c0/e5a1e23a4057a86a97971465418f22ea89bd439ac36ade88812dd920e4e61873e8abd6a9b72a03a67ef50faa00a2daf1ab745c5a15b46d03e0544a0296354227 + languageName: node + linkType: hard + +"stackback@npm:0.0.2": + version: 0.0.2 + resolution: "stackback@npm:0.0.2" + checksum: 10c0/89a1416668f950236dd5ac9f9a6b2588e1b9b62b1b6ad8dff1bfc5d1a15dbf0aafc9b52d2226d00c28dffff212da464eaeebfc6b7578b9d180cef3e3782c5983 + languageName: node + linkType: hard + +"std-env@npm:^3.7.0": + version: 3.7.0 + resolution: "std-env@npm:3.7.0" + checksum: 10c0/60edf2d130a4feb7002974af3d5a5f3343558d1ccf8d9b9934d225c638606884db4a20d2fe6440a09605bca282af6b042ae8070a10490c0800d69e82e478f41e + languageName: node + linkType: hard + +"string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^4.1.0": + version: 4.2.3 + resolution: "string-width@npm:4.2.3" + dependencies: + emoji-regex: "npm:^8.0.0" + is-fullwidth-code-point: "npm:^3.0.0" + strip-ansi: "npm:^6.0.1" + checksum: 10c0/1e525e92e5eae0afd7454086eed9c818ee84374bb80328fc41217ae72ff5f065ef1c9d7f72da41de40c75fa8bb3dee63d92373fd492c84260a552c636392a47b + languageName: node + linkType: hard + +"string-width@npm:^5.0.1, string-width@npm:^5.1.2": + version: 5.1.2 + resolution: "string-width@npm:5.1.2" + dependencies: + eastasianwidth: "npm:^0.2.0" + emoji-regex: "npm:^9.2.2" + strip-ansi: "npm:^7.0.1" + checksum: 10c0/ab9c4264443d35b8b923cbdd513a089a60de339216d3b0ed3be3ba57d6880e1a192b70ae17225f764d7adbf5994e9bb8df253a944736c15a0240eff553c678ca + languageName: node + linkType: hard + +"strip-ansi-cjs@npm:strip-ansi@^6.0.1, strip-ansi@npm:^6.0.0, strip-ansi@npm:^6.0.1": + version: 6.0.1 + resolution: "strip-ansi@npm:6.0.1" + dependencies: + ansi-regex: "npm:^5.0.1" + checksum: 10c0/1ae5f212a126fe5b167707f716942490e3933085a5ff6c008ab97ab2f272c8025d3aa218b7bd6ab25729ca20cc81cddb252102f8751e13482a5199e873680952 + languageName: node + linkType: hard + +"strip-ansi@npm:^7.0.1": + version: 7.1.0 + resolution: "strip-ansi@npm:7.1.0" + dependencies: + ansi-regex: "npm:^6.0.1" + checksum: 10c0/a198c3762e8832505328cbf9e8c8381de14a4fa50a4f9b2160138158ea88c0f5549fb50cb13c651c3088f47e63a108b34622ec18c0499b6c8c3a5ddf6b305ac4 + languageName: node + linkType: hard + +"tar@npm:^6.1.11, tar@npm:^6.2.1": + version: 6.2.1 + resolution: "tar@npm:6.2.1" + dependencies: + chownr: "npm:^2.0.0" + fs-minipass: "npm:^2.0.0" + minipass: "npm:^5.0.0" + minizlib: "npm:^2.1.1" + mkdirp: "npm:^1.0.3" + yallist: "npm:^4.0.0" + checksum: 10c0/a5eca3eb50bc11552d453488344e6507156b9193efd7635e98e867fab275d527af53d8866e2370cd09dfe74378a18111622ace35af6a608e5223a7d27fe99537 + languageName: node + linkType: hard + +"tinybench@npm:^2.9.0": + version: 2.9.0 + resolution: "tinybench@npm:2.9.0" + checksum: 10c0/c3500b0f60d2eb8db65250afe750b66d51623057ee88720b7f064894a6cb7eb93360ca824a60a31ab16dab30c7b1f06efe0795b352e37914a9d4bad86386a20c + languageName: node + linkType: hard + +"tinyexec@npm:^0.3.0": + version: 0.3.1 + resolution: "tinyexec@npm:0.3.1" + checksum: 10c0/11e7a7c5d8b3bddf8b5cbe82a9290d70a6fad84d528421d5d18297f165723cb53d2e737d8f58dcce5ca56f2e4aa2d060f02510b1f8971784f97eb3e9aec28f09 + languageName: node + linkType: hard + +"tinypool@npm:^1.0.0": + version: 1.0.1 + resolution: "tinypool@npm:1.0.1" + checksum: 10c0/90939d6a03f1519c61007bf416632dc1f0b9c1a9dd673c179ccd9e36a408437384f984fc86555a5d040d45b595abc299c3bb39d354439e98a090766b5952e73d + languageName: node + linkType: hard + +"tinyrainbow@npm:^1.2.0": + version: 1.2.0 + resolution: "tinyrainbow@npm:1.2.0" + checksum: 10c0/7f78a4b997e5ba0f5ecb75e7ed786f30bab9063716e7dff24dd84013fb338802e43d176cb21ed12480561f5649a82184cf31efb296601a29d38145b1cdb4c192 + languageName: node + linkType: hard + +"tinyspy@npm:^3.0.0": + version: 3.0.2 + resolution: "tinyspy@npm:3.0.2" + checksum: 10c0/55ffad24e346622b59292e097c2ee30a63919d5acb7ceca87fc0d1c223090089890587b426e20054733f97a58f20af2c349fb7cc193697203868ab7ba00bcea0 + languageName: node + linkType: hard + +"to-regex-range@npm:^5.0.1": + version: 5.0.1 + resolution: "to-regex-range@npm:5.0.1" + dependencies: + is-number: "npm:^7.0.0" + checksum: 10c0/487988b0a19c654ff3e1961b87f471702e708fa8a8dd02a298ef16da7206692e8552a0250e8b3e8759270f62e9d8314616f6da274734d3b558b1fc7b7724e892 + languageName: node + linkType: hard + +"tslib@npm:2.4.0": + version: 2.4.0 + resolution: "tslib@npm:2.4.0" + checksum: 10c0/eb19bda3ae545b03caea6a244b34593468e23d53b26bf8649fbc20fce43e9b21a71127fd6d2b9662c0fe48ee6ff668ead48fd00d3b88b2b716b1c12edae25b5d + languageName: node + linkType: hard + +"tslib@npm:^1.8.1": + version: 1.14.1 + resolution: "tslib@npm:1.14.1" + checksum: 10c0/69ae09c49eea644bc5ebe1bca4fa4cc2c82b7b3e02f43b84bd891504edf66dbc6b2ec0eef31a957042de2269139e4acff911e6d186a258fb14069cd7f6febce2 + languageName: node + linkType: hard + +"tsutils@npm:^3.21.0": + version: 3.21.0 + resolution: "tsutils@npm:3.21.0" + dependencies: + tslib: "npm:^1.8.1" + peerDependencies: + typescript: ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + checksum: 10c0/02f19e458ec78ead8fffbf711f834ad8ecd2cc6ade4ec0320790713dccc0a412b99e7fd907c4cda2a1dc602c75db6f12e0108e87a5afad4b2f9e90a24cabd5a2 + languageName: node + linkType: hard + +"typescript@npm:4.7.4": + version: 4.7.4 + resolution: "typescript@npm:4.7.4" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 10c0/8c1c4007b6ce5b24c49f0e89173ab9e82687cc6ae54418d1140bb63b82d6598d085ac0f993fe3d3d1fbf87a2c76f1f81d394dc76315bc72c7a9f8561c5d8d205 + languageName: node + linkType: hard + +"typescript@npm:^5.6.3": + version: 5.6.3 + resolution: "typescript@npm:5.6.3" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 10c0/44f61d3fb15c35359bc60399cb8127c30bae554cd555b8e2b46d68fa79d680354b83320ad419ff1b81a0bdf324197b29affe6cc28988cd6a74d4ac60c94f9799 + languageName: node + linkType: hard + +"typescript@patch:typescript@npm%3A4.7.4#optional!builtin": + version: 4.7.4 + resolution: "typescript@patch:typescript@npm%3A4.7.4#optional!builtin::version=4.7.4&hash=65a307" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 10c0/2eb6e31b04fabec84a4d07b5d567deb5ef0a2971d89d9adb16895f148f7d8508adfb12074abc2efc6966805d3664e68ab67925060e5b0ebd8da616db4b151906 + languageName: node + linkType: hard + +"typescript@patch:typescript@npm%3A^5.6.3#optional!builtin": + version: 5.6.3 + resolution: "typescript@patch:typescript@npm%3A5.6.3#optional!builtin::version=5.6.3&hash=8c6c40" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 10c0/7c9d2e07c81226d60435939618c91ec2ff0b75fbfa106eec3430f0fcf93a584bc6c73176676f532d78c3594fe28a54b36eb40b3d75593071a7ec91301533ace7 + languageName: node + linkType: hard + +"undici-types@npm:~6.19.2": + version: 6.19.8 + resolution: "undici-types@npm:6.19.8" + checksum: 10c0/078afa5990fba110f6824823ace86073b4638f1d5112ee26e790155f481f2a868cc3e0615505b6f4282bdf74a3d8caad715fd809e870c2bb0704e3ea6082f344 + languageName: node + linkType: hard + +"unique-filename@npm:^3.0.0": + version: 3.0.0 + resolution: "unique-filename@npm:3.0.0" + dependencies: + unique-slug: "npm:^4.0.0" + checksum: 10c0/6363e40b2fa758eb5ec5e21b3c7fb83e5da8dcfbd866cc0c199d5534c42f03b9ea9ab069769cc388e1d7ab93b4eeef28ef506ab5f18d910ef29617715101884f + languageName: node + linkType: hard + +"unique-slug@npm:^4.0.0": + version: 4.0.0 + resolution: "unique-slug@npm:4.0.0" + dependencies: + imurmurhash: "npm:^0.1.4" + checksum: 10c0/cb811d9d54eb5821b81b18205750be84cb015c20a4a44280794e915f5a0a70223ce39066781a354e872df3572e8155c228f43ff0cce94c7cbf4da2cc7cbdd635 + languageName: node + linkType: hard + +"vite-node@npm:2.1.3": + version: 2.1.3 + resolution: "vite-node@npm:2.1.3" + dependencies: + cac: "npm:^6.7.14" + debug: "npm:^4.3.6" + pathe: "npm:^1.1.2" + vite: "npm:^5.0.0" + bin: + vite-node: vite-node.mjs + checksum: 10c0/1b06139880a8170651e025e8c35aa92a917f8ec8f24507cda5bf4be09843f6447e1f494932a8d7eb98124f1c8c9fee02283ef318ddd57e2b861d2d85a409a206 + languageName: node + linkType: hard + +"vite@npm:^5.0.0": + version: 5.4.9 + resolution: "vite@npm:5.4.9" + dependencies: + esbuild: "npm:^0.21.3" + fsevents: "npm:~2.3.3" + postcss: "npm:^8.4.43" + rollup: "npm:^4.20.0" + peerDependencies: + "@types/node": ^18.0.0 || >=20.0.0 + less: "*" + lightningcss: ^1.21.0 + sass: "*" + sass-embedded: "*" + stylus: "*" + sugarss: "*" + terser: ^5.4.0 + dependenciesMeta: + fsevents: + optional: true + peerDependenciesMeta: + "@types/node": + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + bin: + vite: bin/vite.js + checksum: 10c0/e9c59f2c639047e37c79bbbb151c7a55a3dc27932957cf4cf0447ee0bdcc1ddfd9b1fb3ba0465371c01ba3616d62561327855794c2d652213c3a10a32e6d369d + languageName: node + linkType: hard + +"vitest@npm:^2.1.3": + version: 2.1.3 + resolution: "vitest@npm:2.1.3" + dependencies: + "@vitest/expect": "npm:2.1.3" + "@vitest/mocker": "npm:2.1.3" + "@vitest/pretty-format": "npm:^2.1.3" + "@vitest/runner": "npm:2.1.3" + "@vitest/snapshot": "npm:2.1.3" + "@vitest/spy": "npm:2.1.3" + "@vitest/utils": "npm:2.1.3" + chai: "npm:^5.1.1" + debug: "npm:^4.3.6" + magic-string: "npm:^0.30.11" + pathe: "npm:^1.1.2" + std-env: "npm:^3.7.0" + tinybench: "npm:^2.9.0" + tinyexec: "npm:^0.3.0" + tinypool: "npm:^1.0.0" + tinyrainbow: "npm:^1.2.0" + vite: "npm:^5.0.0" + vite-node: "npm:2.1.3" + why-is-node-running: "npm:^2.3.0" + peerDependencies: + "@edge-runtime/vm": "*" + "@types/node": ^18.0.0 || >=20.0.0 + "@vitest/browser": 2.1.3 + "@vitest/ui": 2.1.3 + happy-dom: "*" + jsdom: "*" + peerDependenciesMeta: + "@edge-runtime/vm": + optional: true + "@types/node": + optional: true + "@vitest/browser": + optional: true + "@vitest/ui": + optional: true + happy-dom: + optional: true + jsdom: + optional: true + bin: + vitest: vitest.mjs + checksum: 10c0/7688fdce37205e7f3b448039df216e103e3a52994af0201993e22decbb558d129a734001b991f3c3d80bf4a4ef91ca6a5665a7395d5b051249da60a0016eda36 + languageName: node + linkType: hard + +"which@npm:^2.0.1": + version: 2.0.2 + resolution: "which@npm:2.0.2" + dependencies: + isexe: "npm:^2.0.0" + bin: + node-which: ./bin/node-which + checksum: 10c0/66522872a768b60c2a65a57e8ad184e5372f5b6a9ca6d5f033d4b0dc98aff63995655a7503b9c0a2598936f532120e81dd8cc155e2e92ed662a2b9377cc4374f + languageName: node + linkType: hard + +"which@npm:^4.0.0": + version: 4.0.0 + resolution: "which@npm:4.0.0" + dependencies: + isexe: "npm:^3.1.1" + bin: + node-which: bin/which.js + checksum: 10c0/449fa5c44ed120ccecfe18c433296a4978a7583bf2391c50abce13f76878d2476defde04d0f79db8165bdf432853c1f8389d0485ca6e8ebce3bbcded513d5e6a + languageName: node + linkType: hard + +"why-is-node-running@npm:^2.3.0": + version: 2.3.0 + resolution: "why-is-node-running@npm:2.3.0" + dependencies: + siginfo: "npm:^2.0.0" + stackback: "npm:0.0.2" + bin: + why-is-node-running: cli.js + checksum: 10c0/1cde0b01b827d2cf4cb11db962f3958b9175d5d9e7ac7361d1a7b0e2dc6069a263e69118bd974c4f6d0a890ef4eedfe34cf3d5167ec14203dbc9a18620537054 + languageName: node + linkType: hard + +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": + version: 7.0.0 + resolution: "wrap-ansi@npm:7.0.0" + dependencies: + ansi-styles: "npm:^4.0.0" + string-width: "npm:^4.1.0" + strip-ansi: "npm:^6.0.0" + checksum: 10c0/d15fc12c11e4cbc4044a552129ebc75ee3f57aa9c1958373a4db0292d72282f54373b536103987a4a7594db1ef6a4f10acf92978f79b98c49306a4b58c77d4da + languageName: node + linkType: hard + +"wrap-ansi@npm:^8.1.0": + version: 8.1.0 + resolution: "wrap-ansi@npm:8.1.0" + dependencies: + ansi-styles: "npm:^6.1.0" + string-width: "npm:^5.0.1" + strip-ansi: "npm:^7.0.1" + checksum: 10c0/138ff58a41d2f877eae87e3282c0630fc2789012fc1af4d6bd626eeb9a2f9a65ca92005e6e69a75c7b85a68479fe7443c7dbe1eb8fbaa681a4491364b7c55c60 + languageName: node + linkType: hard + +"yallist@npm:^4.0.0": + version: 4.0.0 + resolution: "yallist@npm:4.0.0" + checksum: 10c0/2286b5e8dbfe22204ab66e2ef5cc9bbb1e55dfc873bbe0d568aa943eb255d131890dfd5bf243637273d31119b870f49c18fcde2c6ffbb7a7a092b870dc90625a + languageName: node + linkType: hard