From 4a7b8feff236aa587735af111bba8f3faccb6c7d Mon Sep 17 00:00:00 2001 From: Artemiy Davydov Date: Tue, 12 Nov 2024 03:52:11 +0300 Subject: [PATCH] feat: initial commit --- .github/workflows/publish.yml | 58 + .gitignore | 24 + .vscode/extensions.json | 3 + bun.lockb | Bin 0 -> 104890 bytes components.json | 21 + index.html | 17 + package.json | 42 + postcss.config.js | 6 + public/tauri.svg | 6 + public/vite.svg | 1 + src-tauri/.gitignore | 7 + src-tauri/Cargo.lock | 4597 ++++++++++++++++++++++++ src-tauri/Cargo.toml | 26 + src-tauri/build.rs | 3 + src-tauri/capabilities/default.json | 24 + src-tauri/icons/128x128.png | Bin 0 -> 4512 bytes src-tauri/icons/128x128@2x.png | Bin 0 -> 9687 bytes src-tauri/icons/32x32.png | Bin 0 -> 1084 bytes src-tauri/icons/Square107x107Logo.png | Bin 0 -> 3672 bytes src-tauri/icons/Square142x142Logo.png | Bin 0 -> 4944 bytes src-tauri/icons/Square150x150Logo.png | Bin 0 -> 5253 bytes src-tauri/icons/Square284x284Logo.png | Bin 0 -> 10919 bytes src-tauri/icons/Square30x30Logo.png | Bin 0 -> 931 bytes src-tauri/icons/Square310x310Logo.png | Bin 0 -> 12016 bytes src-tauri/icons/Square44x44Logo.png | Bin 0 -> 1506 bytes src-tauri/icons/Square71x71Logo.png | Bin 0 -> 2412 bytes src-tauri/icons/Square89x89Logo.png | Bin 0 -> 2984 bytes src-tauri/icons/StoreLogo.png | Bin 0 -> 1643 bytes src-tauri/icons/icon.icns | Bin 0 -> 112072 bytes src-tauri/icons/icon.ico | Bin 0 -> 17111 bytes src-tauri/icons/icon.png | Bin 0 -> 8298 bytes src-tauri/src/lib.rs | 27 + src-tauri/src/main.rs | 6 + src-tauri/tauri.conf.json | 39 + src/app.css | 73 + src/app.tsx | 106 + src/components/emulator-list-item.tsx | 96 + src/components/modals/android-home.tsx | 76 + src/components/ui/alert-dialog.tsx | 139 + src/components/ui/button.tsx | 56 + src/hooks/no-context.ts | 14 + src/lib/utils.ts | 6 + src/main.tsx | 11 + src/queries/emulator.ts | 33 + src/services/api/emulator.ts | 130 + src/services/execute.ts | 20 + src/stores/modals.ts | 11 + src/types/emulator.ts | 22 + src/types/guards/emulator.ts | 5 + src/vite-env.d.ts | 1 + tailwind.config.js | 70 + tsconfig.json | 30 + tsconfig.node.json | 14 + vite.config.ts | 39 + 54 files changed, 5859 insertions(+) create mode 100644 .github/workflows/publish.yml create mode 100644 .gitignore create mode 100644 .vscode/extensions.json create mode 100644 bun.lockb create mode 100644 components.json create mode 100644 index.html create mode 100644 package.json create mode 100644 postcss.config.js create mode 100644 public/tauri.svg create mode 100644 public/vite.svg create mode 100644 src-tauri/.gitignore create mode 100644 src-tauri/Cargo.lock create mode 100644 src-tauri/Cargo.toml create mode 100644 src-tauri/build.rs create mode 100644 src-tauri/capabilities/default.json create mode 100644 src-tauri/icons/128x128.png create mode 100644 src-tauri/icons/128x128@2x.png create mode 100644 src-tauri/icons/32x32.png create mode 100644 src-tauri/icons/Square107x107Logo.png create mode 100644 src-tauri/icons/Square142x142Logo.png create mode 100644 src-tauri/icons/Square150x150Logo.png create mode 100644 src-tauri/icons/Square284x284Logo.png create mode 100644 src-tauri/icons/Square30x30Logo.png create mode 100644 src-tauri/icons/Square310x310Logo.png create mode 100644 src-tauri/icons/Square44x44Logo.png create mode 100644 src-tauri/icons/Square71x71Logo.png create mode 100644 src-tauri/icons/Square89x89Logo.png create mode 100644 src-tauri/icons/StoreLogo.png create mode 100644 src-tauri/icons/icon.icns create mode 100644 src-tauri/icons/icon.ico create mode 100644 src-tauri/icons/icon.png create mode 100644 src-tauri/src/lib.rs create mode 100644 src-tauri/src/main.rs create mode 100644 src-tauri/tauri.conf.json create mode 100644 src/app.css create mode 100644 src/app.tsx create mode 100644 src/components/emulator-list-item.tsx create mode 100644 src/components/modals/android-home.tsx create mode 100644 src/components/ui/alert-dialog.tsx create mode 100644 src/components/ui/button.tsx create mode 100644 src/hooks/no-context.ts create mode 100644 src/lib/utils.ts create mode 100644 src/main.tsx create mode 100644 src/queries/emulator.ts create mode 100644 src/services/api/emulator.ts create mode 100644 src/services/execute.ts create mode 100644 src/stores/modals.ts create mode 100644 src/types/emulator.ts create mode 100644 src/types/guards/emulator.ts create mode 100644 src/vite-env.d.ts create mode 100644 tailwind.config.js create mode 100644 tsconfig.json create mode 100644 tsconfig.node.json create mode 100644 vite.config.ts diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml new file mode 100644 index 0000000..0009151 --- /dev/null +++ b/.github/workflows/publish.yml @@ -0,0 +1,58 @@ +name: "publish" +on: + push: + branches: + - master + +jobs: + publish-tauri: + permissions: + contents: write + strategy: + fail-fast: false + matrix: + include: + # - platform: "macos-latest" # for Arm based macs (M1 and above). + # args: "--target aarch64-apple-darwin" + # - platform: "macos-latest" # for Intel based macs. + # args: "--target x86_64-apple-darwin" + # - platform: "ubuntu-22.04" # for Tauri v1 you could replace this with ubuntu-20.04. + # args: "" + - platform: "windows-latest" + args: "" + + runs-on: ${{ matrix.platform }} + steps: + - uses: actions/checkout@v4 + + - name: setup bun + uses: oven-sh/setup-bun@v2 + with: + bun-version: latest + + - name: install Rust stable + uses: dtolnay/rust-toolchain@stable + with: + # Those targets are only used on macos runners so it's in an `if` to slightly speed up windows and linux builds. + targets: ${{ matrix.platform == 'macos-latest' && 'aarch64-apple-darwin,x86_64-apple-darwin' || '' }} + + - name: install dependencies (ubuntu only) + if: matrix.platform == 'ubuntu-22.04' + run: | + sudo apt-get update + sudo apt-get install -y libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf + + - name: install frontend dependencies + run: bun install --frozen-lockfile + + - name: Make a release + uses: tauri-apps/tauri-action@v0 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + tagName: dogit-v__VERSION__ # the action automatically replaces \_\_VERSION\_\_ with the app version + releaseName: "Emu v__VERSION__" + releaseBody: "See the assets to download this version and install." + releaseDraft: true + prerelease: false + args: ${{ matrix.args }} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a547bf3 --- /dev/null +++ b/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..24d7cc6 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,3 @@ +{ + "recommendations": ["tauri-apps.tauri-vscode", "rust-lang.rust-analyzer"] +} diff --git a/bun.lockb b/bun.lockb new file mode 100644 index 0000000000000000000000000000000000000000..c54980ee0226a4643c0581cec1622cff3930d6a6 GIT binary patch literal 104890 zcmeFac|2BK8#a8INyf-5W5_(D6d98#b7hFkGS4NMLrSC~L*@)+43WqzAr+M&Qz9aY zh)D6Sm22P6e(vvi?#TDY_x`?T{aOxd?R6aIxz080wfA+oZ%%e$FAsNN3p;0FYv(g; z7GBQVKo)d#v2?JpbF>z;adCGt_Y^!MvJDr5!Ayi7KP%+&Fyc4^CqYw;D2s-x|M z<}6GlIE)q2Uu5?r;DA;b4ADAZh<}wZe_5BvBrEL#9(%T>w^GcyB7eV&S`TGm$S|o z3_Iu&)VYAY?rLXq4%&4AWg1YQiq(q&2>ri=MLQ2cTSpfQ3Y7TUpt;yP7+n1M|c3w1=0aySaxorWRa;ad5SBH}?b`aPooC!C+FT*W=-N+S(b~ z55tzP0fhZ81U#twD@dTdIS|baVGo)&blKBo-$a2yQ4B>EK}J7+sra}N(0P!G%G^y@rJfUtiO*!mx!4DHSUgnAPU z>+P!m!tuDlxQ^kV4CBYev_4N60782j;5tMy=5_u_fROh)ofwvNKmM+h1%dhA6Q?opB`u3f0e;F zT6%)t2HDs9A;p2U1KL5oAW#qcAq2|M{%Ov2+y%-o-jUybfY8rcfUrIZAQ*~3AAr!l zF+jL)Nn?=}AZ&*V5ZW0PUBCVWAS~wtg#Aec2XWv5RTucgX{PPi;uBbjKyRuUc#am7A*ko0DLVhN@I}^i*x{~!F2*G&L3DW zzr*4SEINP~!}X;P5YEFM#r1jC4iJua9Y9#0gGIK(>-_^a6LUv%E9)Jg4CAn-wB8Rn zpac6wePq2J0}%T06CfPl3V=|rLS;Sv$pD!^`2(njaqGll6F{ijtBk>bDHE6j5c)Hr zzCM2fG}gz-2_V!*_NjB`j*fO7o)`~nr!&^>;Jyah!|~PCTpvGoP=@R18bB(5K>*?W zw_m?KVl1)O;eKlF=z+1aw(znAeRA>uKR~(00KegS5dn434w#d_`oBwW-9EU-dY*H&hI98<|3*PQj1L%-Uw--=Tc5wi z0AW950K)mn2#^!tcQ9~l0Q&*L>$L!x0cHS%>m?i@TqpJbAMAaS{(^yZtFJ{o>id6Q97R?-mRIMwY*PH<;@(v|K0?x<;Jo{_!f!Y z%yu2`!cFHSzHhHS5nF7^EKa?jyMrs)Fpu*iS?HNZC(WO?O=}Pb@ps*J?{p|R>2XPA z^?nwY?FG)FQLgTnJZb& zm)-5FP1GivQ^Kkg@BAdsJ{w{)E~MqPcU$tiz7V2Oai+TgZwo(^VKf^`^}8Qg+?sM~ zx@GV|=jk!C>9z0C=8JVSy@ZvGA9l&i*A=%>?mdlfAg2F}F!%8uVU-_C#x!%qWUTKm zMcx%e`Y$S*$?bcAit%eUbrSA%n`p#tt-!6mgU9IA&WxzN648t_q2M~KFB>ax^4a#I zuZ_xP_%0Ihr5wFol5=pEimA_aHT4LqnBqr$t#57XE}JmP3RhM{2h)Xq4j)pYxR>J@ z*>TzGO8IfSft1f2yW$vFICLYHyp}_bOnN@JM;*)a+7Z0|0iUPNNvrKl zeX098^oxO)BEdJS_a8?uiOkLCPu@9IADOl2ZKX%vOs0FOyO7mDZJSU3F3NUG!E-hz zB0n=4Y97wr-o3h}*d@V0P3@@9N%6Wy*RBzF^;NXCzvH8U;?n$fr>JkYwdR!X2%PBC zqyE?$^HeZo;ZlX2W;Rt-6S(G0CUoUZ2`Y`!e*{ zt7$GD7fM4Gj(41OBpeToaFY6!zookVbi}#m%AwSk?;?8N@v~*hw3X4ZLFqarP2q+N zhPFl;3pXwqIZ}%Kod&rbs$Wybey3yDEUEiZZF&0dI^E<_&eXK(s<&t#d}IuL-yxcXiw>4^u2&?76#Zv|1wX`}f_a7u8)6>PsGj3~YG(?$V`sQp)peWlSq<0T zfH_`#JIW&@-@UaR`&B5il4*j!L{i&Y#MPfk z4>+kl?w>ucMNWCKvy>a(L}Vg#2chRnE63;axZPq^Ymsv&aC8zsf0j$@TrFFhp4-OQ z#$83TliK8JLhvC|+()lxh~H9j$|#;Cnt#xlPRY{5JE`Spma*1-?V)_0vYm;$EKd>{ zozi4V;h878hdTI~S*UVSm_#aHORu4?iknL4Ogij*Y?3XdMx1q_v36m9wvKynPy^MJ>n;2 z+pizirwZvkLZPVKPa*SZ|8BOO`*!&r8@#{F+7}&|QX%0R89(P+GBlNEot5%3wY-^m z$7=E<1wFD)&Bfj8X7pvBqg5R{PIjGZ)X*ohdVzMR(Dco$kY*a=CB`MEPj}ThE~}NT z4G*0hJ~m~4K8)mmWa^Zz+M%iUx>E{T$Fz<{-l!3(sSr{S<9!)*0VDB_v8_4tep6Rj z&s7zSO-<9MXt#l>iNr)b;YN)kBaVmn)IWG=#;CO~={V`L1MU{4GW2<8{T}HB9<0AO z__TDFnykI*h48BEm-J^l1sG|$se(B5+N-a8Ri>Fa*DST@xt;XfjceD0jUsoK$w-m7 zNH>4fNvtyEmn_fKz+)Y%tzy1+v0i25BF3q>OP}2GXhWok`tLuHcKZMkJUaY} z-=Fl~4e-HPI1uW=7;ZEn_R|4h9`ND(LFzW5fwUa~d?mn#wvoEc@OJ~l`v9L9kbo5I z%Z3tS%O3C*03V4R#Em3`pAY!p(eW1_ayQFg1bk%vfT@7l?E2XQ0(ThL2hUI&whjA- z_#Y4WFn-W)@Vxie8&25fpAy0+1P=h^nbJb`M=o*(_upi>HmJx_4^Mj z!`N-szB}L}`yVvC+4$cBd>DVYZ~RI8zXQG!;Dc@WSK6%qN5IP=c>mq#zJ)dO*E|gZ zd}RH@7$R{++Wj{~+Erui!}3Obhnfig8I1?L z1$?;vVf-N%sRzIQV?x?B0zN!HBHYc+Us`bB6vy(x`^QcDuLAgR|3LbUtmA)l9$ZBH z_Xm9B{slFVdAL#j3&58{_5XJ~;G-Q-w*iEF0zLs zKK>IT_9n4>SVrdXKk<-j2%nvDef`5SGKNT-e?o+R2JqFe{oiQppf19%1N^P@e+k8h z{%_O=#Qq5|>EZbg@;ISm8%zlQ72xXtKBPhWU^#9mA$%_I(jI;P-RK-Z_(p&)fQ|oV z_F#m67x3Z!1AX79ZP-DCKacev#t-I=&LM=)x8q;-A%CL@;oAbf0`MQ%dpB$UF5tuY z3wcm;v-=kw4F)3$_~01vi@VwNe-`ldvG!r#H|zgXz*hl$B>qriBMFHgAMJYlk@#(d z3)>)kTPz=$dzwo$kY4;lN;rS6fhWtvKoj)w}|2}@3jh`FfD*^im5Ao|i`HZeZ+LZx5^8N{~q0Po` zJNTeg0oaGyaQrr!5c`^d5A7r8KBWG4I!HTe#;u*-PXInVza#e!B#s-kpN!=r%6^znQrMwGloe^VXh! zZ2%v6{(`ZGerzNm_A>zg0Ji@d9XqIx@CUH=k^N&Mw$Xfg@TCIiKb(JmVqYKdA!aLfT~jz7pWW#z@^i60sMNw&Q>g=MUWfU>#EbI}M~A7wbA7_8-=5GzJLY z0`TGZ!EuM&&GM4~AD*88_1D@%)-f#qQ$p+u@4{eo0Uz4kC>QD?{2;*BLfMDkTiHlL z_#Xft`VZGX^Z}{=od(iQl%_H zkHj9S2U7o-kaiU8|9XCe8gL$MBq4k~z=!_BGR%k{ztceYxquJfUr+-AGKRn7!s`fs z67c1)@!P2HXubl+zt#_|-)KVY`vN|^|KI>3tV8O5r-QVc0erZBAnl>fMiRmoDSs-=FaDc>bM_=>DVgDElRVzm@*u^8V}n1@wQj z_Idf%KYxe3&8$JhPBq}e{Ri6q6Z^aO{OkE0o}o8728ewFz*j=q2ND}f2tNt%Rj_0?ROO)_)cLf2|+L$N!yS>~+L`FqV(lMeuhr2>%h_!}$-(u>TvK z0|=iQynIB)AJ%Qwe{I0G2lk=g8}%JD{cD{10N->A{QZLe`u@&ld_el21NdfJuulXI zKWZpGq6_=@PYG$K1NaIk{y%Zh*AV^e0p&nbby7;b^@3;4&j!0!b7t@tkhf~U6y`vHJ&vIYJC;M;A1 ze^?UyP1zRs*?_+l|MB)=Ft%H;Zx8s^Tj0L{{8L-t3+>+;KN9e_62Fgtzm@f)D77{J zGXQ@p_E!M^#1`VO3m!fW0zR_uZua~V5BOjT1j0Ry7G$`OZX_Z5X99TnsJR9H2f&B- z4`}mG?2F56jUTW@{?je;>A>L;o`3$d|K@-X&+mWAzq>{Lmo4(8WVhyj&=&cvTjW#8 zZOwnfE%MU=UwI4T|6z-KLHVuO_t+x;A>b=*q5nU($d^~xn*Go%@>{paXHZ=K{0Q#* z@ZJHRfj5$n{ofk!feU|qeonIyGH8SF#{nOizc{G+-^n0+0WkPr3kt*s1nB!_pC9Z2 z{|Mki+b~hKwIaW+SNxZsi2Y)~2UF;meR|LqssAsuzp9aTl868O`Ex_YQFd+sJ~#pe z!oDM#e;N6QUy!y>0Ur!OAX0|!!8ekS_T*sjbO0av4d)OzOKd11{8NAr?_bFH!G3Hc zA$(ylc+h{yAqN?$hvk1tNIQ4Hhw~548#s4iA2yN@J`Hdle*Omegdh`dgbdmsd`rNG z?~fs$af4jg4B__yz73Yo0P5lAs2fQLUru%X{X4Y(C;WK8hvz>eelP|bNr?S%z(0!R z!#M!+MiRnT0f#5}`8N_jr2cmrNV^cgcgOPor2mxa|N8#VpNt;~IQ&{|!G1E}n{I)> z0{F=MhyEjR*=YRa!QjF93)comS`V)Q);Dc8ffpFfzy<@ZX=K$Xf z8^1ppKW8xcjj;SbnLjOnFSi9gG1z>RQ2uXr{4@YxVGH~?z!w92WZ&Mb{Z_!=O8-f; z*Vi9>@3$S~jV8oTdBBJM!+i(#0q!FkNeJHq@C5)Lmf_q(;_y2Sgr5rdaQ(sZM!8TM z;g116Si-;fzq5(Hj_^gn%^RMdko^mxL<$&31dL^AFcgAD-pgI;G_57&Bi|u@ZtG$Cor+mvj_AB zu|EU&@_-Nb?;Rj-_WUHG|F6#vHyV4i{lsG!%t>G$`tv9JMZkyq|DW=;!Q?gA0{;%+ zTWo>94ZM8ZO8;#De=Gg31AH)qe;hv=5IhiqKjzy5KG;J4m|qF_e=>e>4#M*W%<$gB z3NoC3yFi9(X)nldP9e`zXoT&-p7AUFCxkq(C;!?@<$kroVEz+A9VL+Anm+A!5!Qn<^RITNe%1c^4B*#qunhMgTWmc< zsCOD$h6u}cAVVDokcmKc2N@{n>j?D&uw{r)FBoK~ zcL8LWAi{D8EP#YY$PfEf`|k+bUj!LqIQBY3*#0uM3=#Sh4KlQQ17z4f24t8Z!umK^ z011t-T|CGT6F`OuB5a=oGOSMq877FZJ`H4;(tiE?&j{Py#$JaA{msIbH-k{;4#?1t zyI9Nx2opqDp9c#dL4@rKL5B53*m4O#m>|OXQdj^9A}rsB1&|=Zav3au1QC|YL58{y zL5BUP0(l$Ak3l8?xea7$kOx49^J^4jxL!Yi3=iocWwYN_}{q!&V==I1YEEGJ2(6a2PSPD{te-Na2s0>5w7PfYyi~=>PxD4gY^QH>^^uV$UMjt#9i9^l&iix@c+qEUF#T<#+mJ zbH;W(IWyLNIdWO^?2cIO$}bM|gar{7w5dyOkue@{6(Hrf>S>oT9XmBiB)(mw{U?*v z?8>V-w>6Y5+^dmGx_n@--b((e}enp9ptVoRq(Dv;TR5`RA^dsn&a9m&nWq zofdD`vl`B65%mpU3mz3;?#b928YZZ?GM$Oig?l-Y@Y$P+q?$V2)U_2$NabqmA5so~ zIxjQuO_lnnpxm3{BPpglWOQ5?oT>09;7mBN?!WY%=92vHD*>`n(Jlw zUjNdNdvXqsT8ueFsfEs7lb^nICbyjTGY=*;sAQFCC473X z{5Wm<+HsUF+*6Q*@5F81axLPO#`fbEUbhp-B^UD=@442jGBXvS9~W7ra`#2PqEp@- z)p|9~!VBVWwEY!NBqs_H``@F;x|=a}%uE!eON@vD#P_-EUne4*8KK|yjKD~~g>SgJ zwVYqW=Jn_?DgN49<=uup;V#Kh?F-%KqFKu5yE15Ha$kR>&|Dsn=B1X>dw3hA3!iC` zgzu1@vNq?!E6VR+#}Z*wO1h`jcp+gMj>SBW;)xG&I~e@N-#$DtaXTfw)kW4RzQvbT z<;xKNqA%BeuU0t)y>cCtE_?<+629&O4F0YPC$+~IW~Q6(TkzF-8WyMZ7S11yO--mE z@p~u|&Qy9y*zEDE3wrz+=bj8QP)J3QXc*u5tR7H0c5s_8N|zK71&Gf=_^H34Fh)p@ zN3_Q6mgS;)8_{3`4Uc+F_+A6ux36W3 zrPAyfN*De413o>M+N@~}x#<@R?`va)1m>0U&$Q^0V@+>w%a=RO;&%SJBd^(I^@Dl4 zUtX*FVE3`8!wF}($8S~4Y*#CnfCMWgN*DdP1ip^fl|9tY>veC$t0)amYn=N$JSvP3&hwo~!y+(6agAG{h@ z+(s8u`ixlbHR+>t;j=1|@XvACW$&Y4&(mS6E7Qy330$M2ZT}%k5GLR6B`Tsl-5r>? z(C9z!=DZO5mZfBZM@gq8Sgq~}8KH4#SkM<7-aeErB_awCKP+*TM^nD{n1MFI6Ym0p zmdMKK)WPlhHT2Sa-1*1nXyUsiNs?&4w5PR^w~Oy~P-lIV7sb#Rm3w#Xs?)4CDSWm@ z_FpQrZdz7~w19oqP-sk5^NC~nuUPw|m$QlcxS#BA54dphdEf{6hMoC1{;n&AsqvMm z?@v+K`bDUFWZrF_ytH?!J^U$37rui+5`MxxAuQ9*bYd~=*akOu; z>GnC6uGxaBybk&9`%Qx^cGKs-zBulV^FmpH<#DBT^1C_sDxF%KCX ze9Eu>Pp^u9bCsYP6f>#i!!U;#U41_m#$vI}p#Nvcy(zAHi61}fU2J}or$4#iBU+iZ z&DWmkIXmV@DM}Zd}efUux}viE`D zExV!o?-jQxGA-Uk#P1$|+8(T~%cF2n%e1Sv=@?3v77+!A|B_mNf$eIIr8pa%;m+Gy zCN`C4?wmL5{OTGk^K`gGy{&o3eQB1CyP)Vu{GDUR_*5v>3)PVB1g-ElCbHV}99}QG{8`H=i9l!VVOy;)5LG#Ipw$7NL#{}$l z+Y(pP_3qQv?7yT!HE-7{`lVb2UZj z0ytMwHP6p{Ryb&vZ=6RE=^{rI&awx8Mn>lP)$1YS^b;)3#f`kO_lc~R9`0-Xp}%lM z%V80JI#T7??g(f2?gr6iK*NrD@ekh9Cv(Qwa=&{u z1;H>qVU}DqPC%u7U@HFzTUmV&b6p)+gohjvk?j!fP_pp^8W zb6XL6VV|V)alcu^ow4ynHa81ZkK>_qnbEqZn2Bc<(~lAF%(-(x_*4JO+5-U>eQ^9s zRW;AC%zC$WggkWb@wj%@6&fm^*GwE91YeR7XLDLE8b;}|pmiTl>N>DL zd7Evvqx^W7K~*NrR!G8EExCnxLpF7^DrRTOjXQZjER)#SrTu)niw^I!M(u` z+!u`x`j`4sU7Ezf%N$qPDfcO*Q1u8yQJnX5I!bpJA_@@SQ|$5FHS(T8bFQb>%zB*; z?T!(med5oq2+mt+pVcqZp&jbok(0=|(sqkFd;5p`5q{5?_;$~(tx|g@B=+7v#);Bp zL+i@DFY;M(yvaLkiSIVaw9=lVLDy=m?CAdxr?`Kr(PJe1=df+5u+`-uqpMDJfesI{ z3I)Fsi#U6A-xbb~x>|l3rOS@imGRw0xKrpQrGhL4UaI^d14*V&Ip4fEx(x0-V0QR1 zeDUx*>CiMmu~I6N4tvqYhc9bG)?`IV6q)Gnse}^eO5&q*IncV?M?ZOcK8rG!)MpQU zJ}yn=+dy^_{|-yymlfh#!t3|FL&#>>4lcWSXnXj!xjjPp%Z1jpsK0yO>!LsrgN2Zw!G1{|!67H+#R4A@3Wl+> zVejQwB-~ys*iy(Dx!#W$__RH~;PQ%gb%qRI#@wC>e?hCNV~9U1xI>+^u)zJ&5>uUSd*@Ri-{x%rp| zl{eDs?{e3lTXv&$N3}EjRSukQnv30IQg*;pP;XB)o6-r1PxsF^DIHqs`DklfM^<}O zVz^0t)N`A(l-fdlkz`7wwT(XE@n(}NZYd~#dCqUq+T-<>fDU&ri21inY zN;zmt)>IYhb~s7o&Zc)}J|bo*v)1k|c>K2PAWC-+T6eCniyDu_IM}!BNtdiJ+pAY6 z6$wpTaFlZCY7G;3Iro29^K7Od)g*~H!9=<5;8U&VapJ^m!?mM}vPt(luWKGa>GGp> zF(YiMn3QY|gSww}%5KFgv9_9@E)rbyaI{<+8=39?{;i#5#_B=Ixj{$LUR$Teq;FsI z#5tvuzVb&qF4+kiqMri<(7I`6{(1~%hAouWxAV^0;xiFtr;9ob=#npF_c<~oG7+?- zQ70@}&Aq&_Fn@E1k^JdR-hjRAFHcz4l^WVU_hClwlY(g7Vp_$aW3lXBX%ozqUv8YQ zVU%$&(sq5@jek54x2};+N;T>`;Sz^3%hBlElW-&w5aC z5JKzfy?HX<{J`(UP&B(&oYreuUEUJ@@T*+!K2y4w=n+{Eob+}0G(Xf6Jh7-f(&!x} z&tzA%IxTj(OmA}W6Dj^2dY%cRb!!SL2n*(JU29Tsisaq%t<`ll^7)Kr{ff|UEuk_kJ@1ejo{{HT)IY&z0 zOq4fXqA=$@=Nt5b(~nmk4q&Q$hhOjGlR3)&!s}QUPh#%k{w0*II9m6U{=(q$?TnXq z8TTj{zf_VV&8Pfwh+3E@u4s5zTQ2_6efrS|vGHmNk%=FB?{-FuZmS+RRA`vVm@SRZ zM%G;}i`9ki9wgAZ9~klc0#bz^^x;VL1zTUuDt2nv)j3m^Ez*|DY*qPQaOM#UJ!=KQ z5{p4X^3tfW#?^%HLq{chte>SNiQlAqs|a4cAm_8aXkDv%D)XrWnbOH^?=sFjsX9>q zrL5$j;fWaPE5k>Y4i*fG>hi@)8oyD}YU^!b(A--x~6H)0*N4z=C7MipxTT$id+9RnJ2?sABwJ>q} z<&rqk2t&NoAqLMV@$KmQ{64g9$ou>AeLP?2obPtOt0p&mdryLjcRKG-ZZh32|3;d( zSI_NyKX{j~=2L}g|4SFPDV*){Jof&Ihi04x56B#2&}c{byC1E~+hj_s_LV5YpJFuV zy2M$&%SGvJXG}6n52on5vStV2u?%Dn?3lc%#ou+}-rDmgN{(;3CUY2cr>w#~>8cMb z96{+yp>=1KyU6*g!{2_O5)eHnpvd=$rSiPdYs)Ow596xbUqoa|`&TqW8a^kG^qnWPKIl((ifY$5*~;&i7uw z^u0QR3ZAkIpLSu4%KPUOyr;5vyGiwlM}1TLAj7jyx4Qr6c8NfgF7mx2D34#9F}BYnh{>&J7uPUvUGTymB^F=+N?MAXdH`ygk99Kh3 zM_Yozhp!jmXVS<#lScdd;+e9<=MTvj@WYDJzdk5Q4BEeZ`Kyt?hO0Y+Na0C8Ox99I z&#R}nHU!MyRc?hE8!nLuFGz!!el~p<7`ew-@96w9Sf6{9_;l(@@r;<&U}zTRS@4#>f?NOk1G$l28%5y7Z;~<9A8snpt+cq z^{&Xu#VRUQxPa;5nCBB0l8<@jcTHWK1s@1qWO%@l^>aV#c54>nUX-pJS~ov_hr&6U zBtJ(w3NfuLT|M8%p~u-(c?=;Dtd@^YELk}ZtcFe-*Kl=Am@IQsAAictH!yIFlI28& zo2L2I;gh;3U3s+b44-@K6ocY?SAXw2N~yCtOB0i^D}j416n4KCR3o9x%;{(p5z3YAdU# z2lPL^5Ii^cP1aV=glb3D_)|_x3(i|Dg_0N6Vg(E3PprN&ZjgAXgcH2>xdAuwE_=0R$*rMbj?UNzA6iUX}rfHt2$)L zV0LWucA29S-k>{A?Tl0O_b>TxIdzmqc51)BZgDf%Ph*0o1<&MVg?*I6%R5CVU1hYc zwXOqiwovlXA8R!Qojb@Yb)F|5Vbbfom1PkqmApIbzzT_f=<(v!VWT?xm?$5$VOp}c zYb_!o>f!!_jC%?%R-$x|pmp&}_Gy~v8GFpcRdc`H^T4u@V>zF%-Y1`a=g#YDSIW=y z1efBi@U9fn-oO41?}?a^x!Y|j=hH#CY7+I^Bw9usQMxKK>JqCk_ky=?^DTpp9oM8^%FXE4cxeBLpL2FsDm$4{1v??9omwduD|*~i z(Yn#T4*imL7CkokgZAVHrcNz-6|h(_)qVL+!pE;uaqe7^Y5Q*1qvl7=j+<+Y6=aL_ z{7A^j79xvUvFPvLcf@8p%3n3K?#xW`PNtJj{FaA?jq>Umk6dtWqAMU0sj|jPPmmx^ za$}jipJ&n=@>HaVN%PHUD81+XbVH4}2RCHfn1A>jVS0_yRY&V)NTuvkOI{J=EEN?@ zkCHA@9LkGx6;UOQ;VhgaKQ(H2>Uuj}MV>(+J+J2V4=opoZaLG0<@=8v$nL%LvaUjD z5~T~jpNS-VlR~ma)5q!^d~&*el@=r1LcIB>$3G>_>ONvjsE@AjET!N#U#Q$hmY-za zF<^Bt*9^a>G3c==VXommLF1JLW|ZzxL=+%CSBJRu!lKK{(EoH=gw>SEdwi-GI z`dv~a*nZ(ebVE#J_ITZH{?YJ*RZh>K`i+h~J++wJb$UMGnH}dT2^HR4hJH6MOf>oLMS+qn}ALi2= zpYz4)Q>nJ6UY9$dbhQvsfcQ+AU#Ngy;Q21U z25QF4#=|2#YRz8d3LQy8T-~v?v%b4;;dT%h(aWQsFSOCRrmn=*6s+QtxRY6=Px6Hn z1ZYcqrz3jK8Z&nd7#-Iz+xykDyjz3CxsI78YnV^|jZu3|LR5yZF_9K+2#r7idY-}W z%OVMXC?rMu(+*M7s*pjsgtBS=D~WeCKSi;RxzH$DeLT{URlUR$_wK%&ogXHZ$@2lr zmBJW1V|+$gTyA!DlF(2o?u?lWL1>3;|6Kh&pU?6t9P8Vx8C_JJ3nuEQpO=o{Jl02D!zJX-IZfjksV*< zs9&Ua=5Zg%wJ-jmk1H%U+~Pv)XL@5Z5fJwhTmO_t>9^V(RF4HB4nRC=+7^Xp>@r5!mrvf#^1m3ggml1eu9YZWkc)N z)+eSVw)=D5OLjf?I5h5+eJV15)}(30gmpPm|NQ}z-Gsvgf^BafN8DRLueal9UCRJk z8TNr(d53M+Y!&-ItDeiPoLWxzxSVNwV=_Ij$Y&qJ3%S_im0WbMRfcn1sKTsH)xNw; zJe~XEA$VzdME^Z14kysMxg*-9`Y*LD76k%yb$p~xkkXH|F{aS-PL%52dXE44-pL(L z_Z`&WJHzGCy36C|O;s_yowfcS_mBU~dTA{xzl|29Yk=0R%a1<1&5}o*IHw?_V7Ccl zOFOp%V@@KKB=3>1&tcQCnrpo+L|I}!bE{?NqjDb(&&dunWp=k(i&S$>UEb{h=NEF0 zGDPdX;LH9nRdbJ@+L-O{F`f|Lj@Fc-Dm2t>`7g zA-<@35fVqkkqVuO15~DQ3MgG8w5}*`@3Y5|`^i}Aa3)_Uie?45G?15E6+Fu1>*RB} zbSjE=+ttoPBvUW|`9 zbUAI$tMkn4ky*JGnGUnzK$t6qn~&sxu}KVWif6{_hoVb?6QQrhb|#ni6UYgKn_9(C zQ=@cGqIC~b;T~#Pxjgg5C2^biQv#Mfb~JCMudbev((mM}5tmKmIYn^z?OvON17xlr znn{PRk;k?D)bxEf&-S+Y2uV6OA4=B*t?M~mGeCNCu;AX_@*^Ch3|afwt~f;Ktpo|L z+;Y3-Cv~Rr_LH~6Gh)Y6zn zQth^flf~3K7t_ie+dVA{Zqs!x^OW}J@j87wSnd*g?FiS6?(R27QvF0@bxJc!8Ll_V zVfsj=FH|2TLFt}CL;>PoE=)P5dtk(q^61Vzy?II(Y|lK@d`fMg$3sf=?n(>GE%s&u zhQt@M?9XY_BzDBOv{dWz$18(Ct;b1Y?gNVNG8<7X`A|?*)P%G691!t1Nnnn8ERMTQ{$Y*9;LqS$(((DxAXFN z4)IXPSNhEEDNGe*OY9w#zZPg+&KEn(W0MxV<5_6-ubq`D-2XOM<()8h`OSCXq3=Qt zmugRpA8eJrW$$^H?2OU8P?z?aLHs^?hYuxr7a2cud^AAmTB3D@PvM=uMW?DNxe|G| zwl$(OzE$hA{Z4tM5t*{O$uuXmeB0CNGnS4znm@)VbWFGHD^)%kWa#~7|HYg$P6yVy z(C=xj(7KL8Kj&~x$p;igkaf=NX*Oic$sfFTw z#g|0%zGI8l4gUG&a0a#B*->d?vXY7*<@B3!HMtchJ>OlRF#gf_#e=l?=wc#eu+!r6 ziR{Bd2YWMj`@Udn3eIB-7@d{5eGvVg_B2}e(VGLOHN+epjOy)5e*BnCGJAf7kJOND zu_14i-i&Skc3cL>>*i;BZ!>vz1Y2pGdL&qLo&xXI0O9@H9f4UNEzD8#!49qKL`@yY z!71w`TUK^m#u7gwg;M{k;SL5NiZ`mlW5kaY3hH&`<_XF)%NMRZ-K%tL;x(Jz-qhu= z=xT-K%Z7b?{3u;}wC<4>(!-LbZOQxE9AB(ujKuwXbl)~?$9}i&g3OttZ46d&oX1Qa z&Cz)}f7OqZ%)}EJ=s3WYu^dL_+}&`ZqxHiNl&%9>x1VeHoK<)G<4o4imvUaI1&ub^ z1@))&-m8u%xkA} zI_Lg?cTDI~MPSJjLts znVN~|Myb|w`U)yNbtqjYw609}9L-3Z;=se{TOE_Q6JI*mB=bZrHttnwFz_OB*2*_F zK_~wa-hQJI8q2p-U^LFQw+z?iuCok^+kRuObu19u;X&aD+)|&3-sNzhKK!?)(m= z>w?x*7_e_`J?u>?N_8ZG{ZhUi8BG-5^*nvU1=SVKBH0c;HU5QtLRX?IeYxc442x_B z`pw?5yFVj)c8`v$>9Sl*HcHnOty?dgj*F`s%Cap){RP*yw-pOVd*01=57K}1w-hRl zc2-`htf1KOld5{AEV|CC_WRC2@7?b#m`_Yp(b?-Amo2}9(se`Y#_<fVH0J@;N5jLr3yWP|pzp^XXkBSly;wbwtcNa+ebMu_XHqjQ)%pk3E|`AR zDW6k3^};K|luz|m;Gm?uxH4rzMc}OEV~H=;7GYG^#<}eAh#DhM{(7Qy*-f5Tsk{`I zbU5o{INJL3nyez;J+|(I7tiiQhs9QTcpAIsmexvlRgL@z`hF#6jab~0vWz$Pw17jw zlh3nP`QhL0Am=kLwC=bwk6f;QL5%UMm(O;kDvJlYY3@4n;nZAgNw{-dmFBf#-_+{s zt3g5v^(VteOKuK3yW>dSRp~#klf3uF%huQE=k7CTUG4Yj_kM^^_qFTZ(fK&YZX{|_ zIbZ7BzfvCfq-RN`;OkK~5!)o%ryrO6y1E}eCTeKZ&Gnl)6a%j#`nWkH%&^p>6s@5 zm==gQI8v`NcRmibYt?o&&tyHY#BP7;l-qNPOK;4cPhimZi*sn*?ZJe*GhdDQNfqA{ zP#jIiYb@Zta$&e1UxZDTg`n0lb3%rExW3By%4JrZyt~6bN1mB1tKuc*r|sO;&>O7n z_jm`&of zXxUR#oo`nNx;$-&J9Oz9vaAw!ntdfJ? zb?1h|CQg+2MP;2~r?5ZsI?~p^>5^1^+(n1>*arL7zHg?5Otl20^V>>PUg`|4;Bw@l zbc4~l-d0({;_rB8Zcsn63b)0zawu}r;}Ia!(DV(uULWOcrF?^GBs^9qs%3odzT=wC z94z|R?3C|(Tcs%~T(BQy3q|Q(KdO+og^}yK5?vS+(b6w}_4v?jL-usCk6i_U2ivCP!w2V`eTZlL_ci=1U!h)p z*wTX14Mpp6TJPu95s;t!vK=?^SV5QVoGEwQ{WY^MG8R8HWyJ(?1m$8lte&6A4rn$o z(#?5ts$6_u78{ZNO-EOfhBe_5Rg`WRTGuD0|6Wz8?L)0?MjmgZ^IGWU%bmwpT<~Jl z7p=JVi5yriX}Q-jO}OjZL%NPkztgSVL(Dhlq~_Uu`(2uKRYotObT6WH)2=yx3+iwg zi9Pc^My_TyB_TI?IpW^1Y!b1LOFGdjOh{URZ2Y%4y_|h@Xy>^R(2xj#SE z=qh)!+l7x89zNw?F8%I%Zz2Ed16=C!R4Cm`Xk8z@==#smbK4REMWhoeyhk$i6mnIV z_c097z7i5K?H1y@_;^wx;rVjru7U2b??xj+msN&6L>CM?1m`dGbRaF&tqQ43f>Uk&GUNmtl7y0HFP%_6P94shx)7+G zMPhoMg!yjI$}Q8z=|%UCKK}eR$ifd)B4a z!Zpt@nnPZB-UYm(cT}bG<)UqUKZxpGD^8)>yCaX6sOE~3%yz;zZM(2MOwN!D2INx=l!PxCl^)=Z3DKV$Nf0`zwB+)LC5 zqH5zm7RMzzA)NoXNmI{Ej>nn&Qqtv>cFsOwObjFS04few(Yj(i?fUW8i!3dl31S=u z$z-Hvj`AKLol_?<9d|ffxim^U^K@`_`dVh-sw9Q_lYi^k_#O=|zK*MGSTSNlWl_5`#kjKl+^zF+3eEcE z@yEVs+)E#IxySX=1ONP|*Z`Ej*U-A`?@k;SqF2|wUw_==WM98smM~lLN3W~39IUL& z2FLMU-(%RNPv+lnqxsgOn)9R=h2L)9UM(-N-?>`;*)x)+A@pHFKUy&oA1OW^RcO%d>lRg_zlyXUjPg zeMI9QQ2yRP>lzOC3Rr&Ou3e@yJAH285|~5Tp`^D+TBI8^)J|Acath#+uIxKOb*8D? z`n1#HcdY}QXY+W&aJ$?3`1jAOT-k}zjX~>D#`1Hv$6qXqy7DSFJJ=||V2mbcQE0^s z_f)*AQ6x!GMcAPV>vLD5aiey=_)cijeOF4TQ)Nk0dRlxFM?spXR&ljzp=hdesOvaBo1yhSoNKDwA3u+ z^@p<*&w`E}@n)sB9@al|af!z^xU%kf7GX0=Hx8{UFJRXH=2X#-lRm4N>WA8K4KJih zzUUf}r6BpHnQW1xaN|8UzEHcBkGztow$g1r;-S#9i_|yXi6yk}&~R#cgMLpCkJc5g znl;k*x+c*v6n_4K-hE=Kvt|M%nzCex)Schsb;FY27tMXC)bwK}OBkwU#YXnnrkC6o zKN>Q5s&gh@*a5vR641KuQdv^7_-?3W4zDgX(Hl;j4QN!oxRP0>jEe6q zwC)Al@^jieU2f$LBQ399(+pg=CdBYq0>^4^rDOzQ&%~?CDy8=xDegX6*bq3~`dL*0Ly zBl6BeFdK+J{k)sgJ6mkwZQwU#_3Gt`LALW!p`m=2Z+}7QCZly99&d;}cWsLF%NUEs zzz6Tjfe1auajE*w;b69Yv~Q92r$Lx_1)JKM#5LhSXKo1adyVRoiUIN$wsQaNBx~ zX~jG(V1a{iQKUDZNnXaBC-RAPnDGMqTYT{Emu@OrSCfuMPo7ysYLzF@Pe8Wj0LI|) zt^5k|5g!ZUh(qq}M+h!x(psGy+_SIR&Zc-iGgMs zTKAsN;Sw9=m|M%9A83@Tc-RU*1U+lJ{P4?Qo}`JEGu5ur$RD{J`%a1)h(EnZ?m+BV z(pH*Au&{WyI53s5Cxn0foQfe11e)n+-JgtkY{u$DgO&cJ>{c?2e;Z*{6Dt4WP!V?a?gvX_0Mr| zfBBn(*0nYcFjZ@eB}fU}o7c$pAWktAV>;&@OYrXdL#3wspDrBiWzhBaOO+?jl4Uy@ z^)}wAy*+qzWOrby9j5%u*|GKbuIt`G>sH7PI^NHJO-1pX+~?f^9UO|@YN>`Z&*GkN z=6K>gN{Tmfkn-}|EIn80Bfr0)<6Ryc0k021;s9g4t7CB z>|()QLkJKF1XBbQ6~*3r?_IHX#e!H-v7lo2vo{nK8&>YS_TEW05Q6&s_dn;}13s_G zo;CB%nl-)b$xWxN&pNdlRp@6jyAE#56t+!#-og&IHueacYh0mQKdWYTg%SteXmznm z;+0_6xIqiTz5Nm^#eeRlgH(ZYZo{<$Y({HGvNWhe9rdhl5s>>B*oaVm^VA`Hev34+QR2O zJ*)75ax?Di6rAf)XX}HF7pJ~H^6FDhtght*UhI4?&M$oZTTVT z4U^-$wDDQG^vu1Dk&0ES6i(l0aBk)E*6QuL>-L-@1367T3vz2UXbc-=0#Ub<zu#C)(y;0zkJn9GUz=~799!A^*xr)bn$ctyr*AYk5Ab;d+n9B{|Fy@bSLe1p-!(A&lIf}; zuARojrWu_s(Dm5%Mw#}NOLeVNYFD@WduJDGVczq|lgTscR4-~1*Su3=VEf^o@7VHC zxC%HA@_8%n?s(##A-jI4Z+B_lt!Sxtty=7~yW;9L#C_qdH@lyInSLkT*eB^>%Gv9p zGN+esO{#UTafJpka<89D65S)~ZP>krsfipuv(uYD*1>k%AG$juK1#Ho4$8^(qusMP3(S_pfHX5 zj_`SF-S>Ab_vxbdg#lNt+sONx9+-KqK-taXIyW>GWQ^T%_2;^K9;0SAb6-($V-9B^XPR%g~n;-5w&&xl4`-R@qqB?Q&%5(&;?#j9 z=KIa7FsX#?>-kOtKi`_ae2dLyY3+kfw{PsdKkI6u!|uUj>PPSS9JFnH`<9dMJWO|O zHL{e~B0XyIcIS4!AF8SvKE80Ef46F7AAGkEWW1}!@p^*u6rVTsMYV-}2A=n9 z-EHp6^|$ONT-tUba>KTadS9>2Xs$9l7QQxg^1XzptG?bDn-vbtPnV6|=rX7J^HnSQ z`^#eK=WE2btHw@{@ z8RzxJ*TLg^&)a=An18O)qSwnci>(WNnb7*fpdn2eUUr;%hR-Ye{8cbCB;>L8RNHxh z*G)IdYQJk`|1jZI>hY#e%);yT^K4pvZsL^B=Brc(TQqtav8CLjPh(4cUDW8svIDih zd!J(0OQM;3o6hoiuUC0sv%YK7hJ#{+ifY?qLfh>AQ1NBOS*4A;j1nY;R7`(8YVMrX z^5BGs1&sb5^B)1^7bcb8F3QtAMbV{)fY-d7aZx`=JL<|msZK{O>|z^@LWyL@r@#jC0Bo6 zWP8IdjTW~nbT_uvm(FHKm4~g4*?fA%)Au}|H{^EppTo~pnfAQvq8iHv%(z`K#PN1Q zXv`X;3!@JfNwF+-D0NoY)@of&`9yDC;(R!5N_2qvt~n#;r?s%Z+hFR)cKr3<3w+*y z_kGdXkxuoFVPmsjt-SW}-ZSz9{N%3WeEpIei5c9;pQcV1mfwto>HZC`! zn$ptrt-x+!M!9=KlW(8wU+{3-`HjN&mF@PU>(j{#O^P*592Rdo@zKV;{}k!ASy)IJU)1Q(=@!0;z51>^c{H^C zv8g=XD}3JY>jU~Xv#hmmK%-R)URL&U>9{Xp_OD3siX%f@WF=YBbt;Vl6_a6GTPN$Hm zA%*K-+r78td~u2B3zw7DuI^QD(K)Ta6 zulwWz!>??rIC$FfB)|7zC%sFQ-euOc?O0Lkii!?{t8}?l$^CxgX`4olh+8=2nN93w zrI+o3b1`@O*x8)yG^DoMfukm@O+CAHKY;RSssom;boK@CgS&tj{<{Q5FHz1+>yl^^!7C|@YHX+@_^{Qd6heBRAt>ug=} z;kik{S_KMhO0C>Vz5V{7sYlDz2^li5XN^^Io1Tw%U#w!bI`etY$oDn!a4b~1Rd|o5FYTs^qnH{$+bEMDK!B6Y23tx2OvDfL47jf-=_8B#M z|2X?$Up+^TG^=ppnWBVf-iP=lHzEcfy}EF2|9F=khvx6++2IDCH}J>m4jI4Zx&@X! z*dt=)#9HnXXHIh%^tQ3;T9a;o6i++k9sInI{f z96R)USS~Ey#CY8+(dxw5#TNs3ym$D#6F&G#>y3ZXVW-LDC{e|rhovgt`8IRRkB!GG zmUd~-Yplg|x4nm(wy*N2cR}X^g91ude%|!_-Lq57Qqya_TikSOG&>Jq%fnqhZwaxn z|EL}XVyq|M{Tv(8)oay@PX%wC_Ixc%3G!{WZ%k^5J(rtrY|wN{-1M;~D>|l|)^|JF z_|^Asjx}7)gsm@Iqz+Htdwkw+b=UY@2pCYV*RdIClO{x2U8}csO+o(&@4MICdCGT@ zN2?_vRmvPL9e=2Q&CJF}-}KFB{4-@wQN`y)i#wd%w$OXfNFMKfKJOIYDG}RaF5J3& zcUNZ73+6?(pL~{9V?ysnRgCJ4eH>NxdD;E#M+|%NdTgV#YQmKNwmz58;n;I2%Zf@FD z{{GuTK5t;Fl}S~tzpkq|)Hby6P)}7IOAv0u|1T@PI^-TlzRj77oQ zyU4Gk4J#*$w|biN=9Wj9jKwA7#VY$9yxFjy&A1u2N3N`PKI!^~EhfEcf8p8pF`qYh zoN4oQGi+7_G*p*cYP4^7k-N?9Z66G%-|1)K$^y-HOIjNHA8}7OY(4XW{f-IE+86XW z5N@~j;;NQ`x95NN9`~M|&$H$C37@xMP<9Sma$2-cF0kXp+%5s_701)gxAyNbU3f%VpupZre#!4Y#eaRFDj=J9w69MOS$M?N zmL@aZ+w8nimS=}&eBOO(!NUr6i@vsTS$D|G_k8IZXFJ_e#czDDUh!aHUB^|Ye75eh z6Shh&81|skC8K!zFy;+l@_`ck8@pvU6+`L6f$Y-JeR9zmD!u zi>L1kKCjoJHkB$YZ&AF=*3T^rC?y4i~80yvWOG)_o?7Tol;K!>gS`k(s^a z(jFDsKeZ3((P-$BAFunm$IWs7T&)%VexsLs-lWvap=EBz-4C2SwQFp6W^sq)Vh>Fk zdiTHUUUx*D;^U?rJN|KbkXl{J%wf)%qh}Ju!6Vwp?dApt&%8Tl+Q#+i{QH<*@p(^f z-kl^lu`fBa;prWw_lquFb*AdCpqB4;2HWguD)P>7Y8kEc9O^KqpJ#OO8MFMV`Z~*^ z-rn1}*-I%{V-@x%}t0gn2>tZcoZco3%Q+U_*y>g+SaR4 zclh!1ndjG-ed|7=>!iDVwuF}cdN`t@ORt;GQDui!@R%5}w&~P5yT*_H`ME@-i|SYN zb*;-Z*zL>XeZ%LqJhDOg{=4_?vi>DoSk^hzq0ZDf9T%miC)_IY=-MiyF-3!}d_1(k zYwz-*n-ctN|EX~-Lp*8lvUc0d94|*SNsit;n#Y^Q=Y7#zd2r8p|B%F6+mn2&)QD&! zzPK&uv{8Ccji!m?-iF0Ftm-kL=JwamOP@{sbi*T7`Nn35Ahq?fYRC2tZ*|YV+gu*+ zTR!hUZ5Hh*@Zi#;t5qjgp8Rd$nv3D1I<6@=cG|-KwgG*e>pIx%=K*YzB5K zTc^||S&xNhHorXR?$+_ffG>$(&Gs(o;J;TU{N5#5^fNKwEDU-Vc1<0pj_?_wTAS`qRUN zd%oYCV;)Yo8Fq8v+sPXmrO#bz+4mpe-CNDNow~T-c#qmI9QW7no8JBOs4X|+-CQD+ zWk!|Ra*oIQkPTxTSqb>x_xfPdBXccpfF_-lxyjkM~CWOg8V`E4pFG zmM_Jhdo1y773Wc<@w7P;&Cd_5Bq~?v{%cVo9`7eU@A-4v`fgVBiZmH7vRn4$VEWPb zm(4yN*eq%xx7={1blT0Nmc|EPo#<}Yvhm$r`};hrx$AZ8$U9pfTU4Lkz$*E!wKI?R zGoN=;NQaS`!k|fW_Ek7gcie*#>1lJur>i^7{Mk@o7M9X0%J#wajDj{(dVhR*`&2-u zwZS`vrx$m?uSZ2IMP^HISs(<+{wUej#XK*x~fvQt{J{ej(MmhLFfn#cQ%&wKRsgqS4xkwI>OU5brN zf3ha9$*7T4&X#Z)T+8)qd5LmS-=ag4&!yhE`C7VUZG30Ju{&it-ZR>KvecmHrh#si zqUjEQ%{l1reBL8(CVOnitU2_ONxzLUQQEK_M`F74vL1CReMI}-O-h`s>Jq-%W>XWZ z<|leaw+~ok7BkN}A;mg*OZf!6$6Wb+LZ##8dsjNJ9NazwvpY+>hyxI1FJ^zr& z=lyxD(v^mNPL^#esC(t@poizwEA~5`kdF8qQK9S8LBXyoHY`o~bx~PA`th)(D?-}% zh@;&Pt?2vNw1vmY=r`vUTpP&f%dX4OnziQ7BbnWC6ueNcfe%@Vbc64@ZwKhii zp-j}|ho|PuGwx8b)6h;0yx4Ic%WKT%mDC?(zOYzC{O)B}OWpeU^w+^Gl<1)7{In(oYKkNP0%NRSb`$Glzyd`Tj zs-cR(!yjBo34Z2N!`SoL+u<%P+$;Xme*KcFt;1KRIXx{o z;dvkXi3JAuL{*;EX&HO|m(4fY`_}xK_|%@b_P8*xRHqif;}X-ur0XlhL~cA{Ct7RS zzUtMdc2?1a2KBhoeTsP0t*EI1KSCCki<)KGCh=&U-Ge&X{gPx=mjjMHyHwAxsGShrVVB42TNmHi9jc--HDCJ9eBzI`uZq6wd^2R% z5x<)i&K;{a{qBby4LftZ(NNTs&+CynW$U%s@_Bd0Piyb>t7=fWQjSxHLBSlTTWgr$5an z`}BMNW7k9=Rw^Y*F@Ec#0Q1`$(Z3gxz0W>U6e1)4e$r6;kip8|4f?PAk>{63Kr^Sgo3B+vi* zpRoYtheYY8mdgAE(;EHv+TH(|)c)U#mB!9=Mv^`?f0XCGKyi#2ySM!JV@KlK03PDg z^r7Tdr4{pg*IG9?{h#`yB@>r+0s)5S(f=D0PI;u1gbbA^@EfQd1%eX)B|RzL!R&I5 zV7d?Uo5TMr?ZeMAR%dyr8yrpXQ1riKE4~hY`ki!EiPQ=jR5PFdhex;na{2O4O`q>S z-vap-$hSbg1@bMBZ-IOZ*#ej~?hADSH0|cQi16nrC`H$BJ{KJE6!AuD21? zQxSvKa3n2g8-AMG_pI|oUR-E(qfHR;K1;k&`CTbVw zX0TH(79(Gz8^ufMrSwsHC~nf1;v;=1eu@w8stL>hbAaqx60iht-3DV*ymKcg1C#~I z0p)?ch=lH;rMo;200#m3{oFX;mYnODQlI2nJ+82+$Yk2lNL90CWe} zAfPGY@BnOpDnM1h7N`!?04QH6A8P}3fVx0EKnU0a4gg-07T~pLfipn)>k3o{H{FLw zcb?I2bI|W-&~IKG1&#q5fmmQ2upXeh+~^)(y2CaapgSeU05QN=U>qq}gKr6r-2nJ+82oMU$0ld~N7y=9gM1UXQ4|D_QozotG z56}T<4%7$eojP~G3vsjpyn)t08=x)F4rmW_06GHnTMs?}-F4Lk=n8ZL=uS?$_p}Gl z6QJL~qI;JFpu9jey2L6QC*34DbLvf#yI9pe2w5T`vNc zfXl!YAQ`w0qyTh3_aH?%0;_>=AOeU4s6Gz| zq5uV;1XMt0AQ0#c^a0ueWx-PpC=7hWGu<~$cSHXJJOI`J^m{jL@Hr8f1dInp03!i4 z&;{rZ^aWCZ*T7?7GB5?03QPm012cdLz$hRZ7!7m<1^~-}6~KI8DX<8L0mc9efQ7(r zU^^fNx&sY>all+)9xw-(3Csd!bI%%g&!R{O{+iGQ(D*adzWjjv8}J4A3|s}y0mXp= zKq5doE&)itXn^cN=_1>Z{V5+PKd5|D{*bNY0F`@VfVAM6eC-EuQ{9jOR97ki6lY1G zA>abk0jNEw1ylvh02`npPyw(8EP!GFwSR>G6TlQG2owPd1DZ%lMsb(}#8m<)50nKc zUXob>r2tEyG*AYhHj?zK3{(NgUp2rMs1DQsY68wcJ-`m2_KS3;a1MYFum{MGBj5xO z2gxaK>jM$$j?0XK$b%&>!#z zC_IH7#C?kK=?4r3f`C9k%6+QvsRXDz4FMF~_o3Xg#yx^_r}9Q_Q2>=q!f1f@k~j*SJwyHQz~heR7Q(*@pZOkA`0p zmd~TH6Zs{73jy*+f5bt4HR0)5ihj29yUVz2u$@TmdctmjRMfnESvd;2v-txCSf*ZUA?I zJHTxq1t7Ouz)kME#t(gd1c>Vm@Bw%Nqyrj1@9{kqcn-V-UI6cax4={2AArI<0!Xii zzyshhKw+K%6fea=oa9Dvz2=@tSK`-jlV1fu=_DD22>^nCSKKqXlOAb+Mn?XKN0Xi} z`2H2h0KNmJMri*56QBTK3>X2_5oO}z7w{7ZVm_ z&R&YbpE;U{0e0^DHg_mcxvmuJG7>NsMKy|n@!UXJl*CFiYsB~kb z)ZWRyKHC~qgrxK1{RbT54poB02@CxC$&1cu9s4K>D|Hgef0C5zYkd6fuaASl=4f9Z znII6$lo1dLy4~;lxbMB_ViXT_LwZUf`ze1;3SM?gpB8AxgmHCqw|7)XL}C@f%zS?H ze)*Xv=R(5doTI=7VMy!39ZpWSFq4QNfq#m}9+D!E3@_LCn{o0Ua;=TYqi!=2sO^}eR9P5(fM3#9qzI&h3W}eyz0qYs7h6s@I--OFEWTK;mNWLg^6)$%Cc- z&^>-~{|X)shZu<)#p7el=Bbm%+8R+YC9T;ol-s>HNkm2I<%bgoXzBtaB1oua?JQCG z$)stUgscWs7lJuSYRJhYy`FbD4+*6QtJk%1IpMmln+`JA!QOG!ZO-8ycf`rq$ zcL7%G)h;QWR;>G49}=nyNU7!)W7luRkMx|ka{wgH_Gsbs<`2h~z3foArb^OKpi&A$ z<^B@E*k0}dCC}a;ps6K}`n6`-knC(0R1(p?xN2`Y9_V9J-8La*3X>ies=<15n_=r; zkiBup?)noT)y*Iwi^A41kWhJRUTm*m%Y}rgOc+L@ zxkEWiU0~X4y;?J2E`g0o$eO`J)sesYQcI5bVLHJ*E}objl1p_P`W)oqL3*A;VuLV0 z;_H7sFX`g1(;!Hsl!u36mf9#8%g#&5w+}R@8=|$D))vL1ha_rufg@ zdH8nXKTJG~-I{ZfWA&EYZrr_GJ4n#al5Tq11FFENC20EtCHVZf-g2q&?0}g}7{;Qx zv`DBwxwO4VsWB2mbvvne$7_A|zC~|F-6z>@=-E6A#)XjP@jI zC1tC5^;W(f^XjqX8iN;oDMbUqu$@3W)SFExRA+g|HM=%2Y)+`A0&{f0)CV`VX)|Eh z>~`%r8z6-_b8aN%93(l@Gm>kOM4^!(B9%BOL;ZDZ_te>YF{Z$1hr*z5^!Jx4!fb68 zl&@sl6*U+VCOtWAJ(9Ea9VkY*?Pb1WgKFC4$uvR%8*GrX?PYX>BtR({DhX9756m1> zc3j%T`z92|g*1?$5R?R)|I~dwq<5F6A*EyQS9+Y>|U>zh>MpMihhFX?x-xd!g%zm3y@-s$*Nu zg(>*O|H-SzlN@znR6&wZDx>Kiw!GXp@c1-iqv!BTB{27RLZqS6Fp*NJG@Us@ys!~Q zs!XkS#vB$ZlilL2Yna9j9P|JZu2ePUBsRv626RbF3xkA)VyFw=kWi04&Z3`8Hr8k< zqni^oV_hIYQHU;YX({uqW`2!hL(YjHDFeyo;wir}TV8i%!Z0={g`qmJbsi}@e0S&W zEs$`nOJz=Sw5#-l@vp1Y9&mLbOr#1D21_E7mB)Tv@7kn@E}nG=Lv_xx^gjz59V=bGr~S{mUAkbZ<_AoRcag5fVr?*6Vq@o8_w;x-bz?newOT%bt}yR!;rK z#KUNv)1u8#Fljc>3!h}scPB@LExmE!D#D<=(Qv~I1Ao%3_p!8sOYgs_tZ{3Ul;S)sWJQ{JcwPb|-t zho3T|9bvX!w-JV`^|6ppn2c}3gA#hpU1w}G7cNwz;_ylRLM7XW)#8iTQm;w50PEa_ zgmm-oeIjAG`O1REMyKEcGe^I`C#AIe)z{UB$t`*_x-o4?K^TIxb}ITlwXV07iLudp z_(c(j?f?npb|;5~)#cBfutFHFp6byWGeD~KdUWIFGIPL2TK6$pddK_A3M!*qpOs4( zq^EoZR)g36eY)Rk67R)m&E#oyNXQmjg_2=F4qAu6T-el-dwitZ3#;sXLnD zzM<`P6dO>q%J0=XHK|@=%^uE|Q z**qo16lJFlT&Q;BWJ`twCW{WL#)j$oczy6(zwJF3-JGcd$~~T(Y&1uQ84QHcvlhVR zLQXc!ozY|EoYz~>teTPJ4C9X}xE<1yGajz7)Vu0|@&;QULR{2}@z+CGiMS@S_YvK? z??b`3^W!n&r>cM;dS?7}NoD-y)NK@4?7^RNl_2jhy=!sv`>`k5Z%_;@qthUF-DC(u zWpufj?8?M;akJSlDDZ+9NT|=U__{r+#Iv^5SP80+U=bu#7uP}-z#yEP` zk@B_yS%}J=W|hs#DDRYJU&XO7(%5Z1*r=t|tz`YTHTciwLWkPSPF3{kwf$gmEA~8Lc5#zVG6@oDk;Xo=s4}lmNn=(*c3umKB_!W!27MYb%p2vz@Vr59*s5{RfYBs7;9_h96xLFIR1OySH9@D0?g|7@um3Js{1oLu5~ zDq~FH8ff`w?2qIW-%uei5)b=kNKM#3}*s}Y7u zeElPZ_QzH9IRgpS*r=)41qqE0nvVB5yK`ZOUW|mvhMetzrd7__hG-<;!A4`3N!wj5 zyj<%n;Mfq4UftMH05s0JI#~qOky`)U&l7$}xBqNC{hRdU-irOtr{`}p$XT;AePiw^%{@>5 zro8>n=jq?{!MR%}cN;8oV9tL;-%+pe$~@~f_P<}^bJy)}>cZcI$ywf-HLc?0Zr>os zUK@?cS&8O%J1nX-Z5dwZ!+x~an1RtoQ}*>=|*tz0z5Br;Yi#=CdH7ZB=xe zxvb1#wH2dOra#r}`dS$|U_3!%37G_2vG`luB>Ba;5(VDrMx8C-gL=S`2h_^54X!&| zF>^rbxRqE#qA*>bx0qaVR#1d4Oech)8FJbA^&;5C_!;BjzDIlQ{ELqdB6T^6UM zd9J+jOD8b~BZWzEj?0{u-qT1YsSF9tIZai`{<4c7jCGPGkPzGM8YcZ6UyLiIll0{z z4c-m+F|(L(MJE{s38tOVQ)c{Jy1!bDDv;E#wY7os_siZo$xld7>Z50muGo9z&`-5>lBzB&oA3Q&t0sILZLO1d zKtl5$k3wAn6cZEub&_6?&{(O`Fdw6*QP-n&5;Y`P5{VwuenoKVrlK8mk{OVYMa>^w zajN&@{12TZmSdZ!SW@fW#I_}Ll1q))as2)J$Ckx9A8BY}#8e+QociD-(t}Mlx|)VO z(@8#XlIQbP>8m_G$LS;m8?$W3pU&D?s%+~oI!Reh;@;uHzE!jL4AV*KKvD`?JGNLn zaKEWJa$BQ86Hc;v)5yVTg=-}1BtD#EqREz^fh8M7=p=req;Sb*b_a~+UeHO@kkEYY zY@yBzykCSQ=p>UkNx5&|oVuQKm*^zRI7xyat#!?p#-2LKPEK+sCcxWi{_W#B$tg}! z*Rr;Y(Uixlbdp<~#IMYcBIY($pLLQqoMcYp*VP73TRc%GF>1nT{W;nuYHjy9I!S3r zXuhz#g5#m9FU5UylDd%446JLj%XSqjmE53{cyf{wWxZZ5-!}A&PSS&u#Cl8nD?Dl~ z)k$QWL^f!3X3DICSRd8o&lpH(E^}p-MWvIqU;5}InqR_^FT7+va$*OXFVJp1TIKkb zY@6sZTRiOevXxj@-VGOO@h;$#W-P7a2P_y~+D^fQVfIgNKtd}eBb@DR5=s@IQwCVa zqA8``omFOyOYih9&szn(zCtY|jS{_;=fx2rbvIUB|9ficrv{D`keCi0j3ke&G1v2Vmcgu&7m z>83Y5jBeR2YGE`PG1DAogEwopJzp!|o*BLT0NCnNv+OL`1qscN&+oQr=P|f#3@dTP zmh??XFnx}$S*1*Uo2c&hbP_rwY6;2sw$0kF`8W}?0%D^bI!j0>pVrT^I6g)Y6$J?_ zjcmwj zEjjjPYh&#y&T~%E^mO6c-3p(<&Yfmn@)Hs&iIrxx3l*=N6Rwl!)qt5zEo;N}W;IT& z?^dhAV63gPc55g&015RN&pHn)(6Rd>8dES9g#_{FPmf*+6OZ1MGI^>uj5BRGes0IM z@goj*i*9^;0+&B-*aXX-+bF%vE|1XBU*e|@ME^ZKM&SC;`W&4C;nw{JE7{-dX{7KQ z(6n4Eti#M{(I;qr`KWZ;r#(u{uKpMjcV^%j??BG)!ACXNvtzM-fU`bi=9}RO;p2-ma;LpRHFJsY%d_e!g#c6)U<`^QM>N563U<4 zEvjcfi*}PRKFVIV!G>x@!?chNtk$P1mio2qrFl7BJfk3?5lU*TWZm-Q75j9ONW7&b zRjLH(3wESfM^&X$2Hc)_?iTIZi5)o%xb@Dy(@N_}I=0;FLT)7yXJhr&60%P28t5&( zw7Adwim*tg6xbgzVFXnQq1(_=`e$0#Cia{5)5#c|lz#O`H7%xMSvvNd?Xs(Pub@4W4A z!knwYAV4q?5*p#F)JGeftUI#0PO=&jniV(~{qUf4_;kz{$e|Rksz8#orC|Ab_lkYgNvylGGoz0OU4q-({r*5FX$lFo zJK~NB^F$R(EYeB(LPGI8nji?-dEM7cCm99_#dH5yT*Vy|jEQ2*9_lWV5g?X0EweYyp|Tw2I> zw6`3DSc*Xh&B^HO^6aNY9np=D|2y4>uk9IIrF>&NQ$CI^+ubbF%JqJ0JX0TZs^P$H z9zz@5P$|Wf5JCKRt96RGGp+ojp$_C`et%7qv`Rw`sg#(A<5vdzU#&8_Ye4&q5*X7G z-`ECj7mOmzepz_3mawIln;mQ20olq1OrgXqB zPkK@jRXWhYM(!)Ktit~;^p}Tt(y{NsN{29+I#3!aWc-NKDtVYf5+IF`C^Yuu%Dhsn zkcO!|!-C{WKp~Wh<)KOkmRTY4mqrNHQua|Ok|DIvUn-Kx13k0Jlrp)BudgT!`qHoS zvFdZmgel}WkEhflQ3gq5GO-M+C&Hm3g;W$OmI$FWG?LQlh*;_`VUxmWCWMkINdyl0 zu#ZT#CRsw}jGX2Pi4=-Lr8pKQ2~w%Tl#LvamOyl(ib(s=u#mw@d$}UefjfxpAk=&l zGN%pfRe_L5gfv_dO1QErRI20(Lu7iQ2C*JjA?i1dOd*nHO_@^^RidJ*;ALziRYChg zl;`+OLj!vANV7%3z8gT?bd--dd@Ym8V6^~gpuf~VQmzh>h(bf8VuhSJG8cwy7t3XG zg_2ub6Ao6=u`pqnNPz=wa=*b6u}X+Tph2N>MF`#oA0~lF6{PVk4GEJgRGOzyiBcu; z_r!2TE_N8AmWqRgGKE?rmB~f^lz~u1m_0=un#sBsrH5NPaF7Ass1kX0lQx zl?nYNs0U)h#X+6LBdD`FF!{zXQd58uhFPBhjad(1VZR8OtR{U7gwdphXDVI_d9Fel zdN8^eVAJM2IJDoP2WJ-pA?Z{$0?~(%*-y>k z=HLZp-=U$Xm2$NLElY?f3M=`vnqxUM_~2~ z0&z7xKpiSpN#&tJWRAZ9J7w_)o-EHyIn1l!(3JxO*FF56{m?lh6ukog)v3`loLqh7 zkiv5XnO{87=;hrCWbLQGl-1$4nqgkI2Lj&HZ-wUdp9sx+LMxVcqs<+2M@a4))6~0g zRSKgKA~cZu2*r6~DYyqJdwI8AoY66g)aAfnC8Gh;c8NtH5}6q9UxYt~@z0dXyrO4cLqIV03zP3m9^j%JnNT4L z4Ky?q)OiAf?m@`BPeM7Vl4DRCD2d3EDXT}YWp&VvSCQ?Z>JUGJV<@d3@Myn7DJ)gw zQAu?}M+DV9ph2LcG=?jL`p-Mnaw8{v$-&&OzkzGRF+htG;vA9H>SN}(q|yJ<_%N? z(|koqr3N2%L1jaqEmB0nI;tQ8ESl2_Oyukyxthvo zkW}U$2G3Yt!~_^~hydgp{>-A#ynpj<~=dFmsc~ziw>cAPs|vJF*ueh{V@1LrDxg!8i5Fz*XQgh z51BPu_St}08UKiY`9#h8ojCzs!$Sz>bv!0SUP;NOCmAEF<~kOQfEkb)P&qy zv-t#FHWwzV85{fIkO~&q{n4A@b!kJKSv(SD76+!L=aoQh+l1iS@5pagw)^&!Dn%kO zv%#U3dWHoD($)p7Lg5w5MLSl~q9lbDI z>aPmIRzV~FvnOri+dJ}|gjmF*=P(Qglu}Iq_Q{hei%vQ*c@9@#5mMt<`{2nQ`p`a; zPXigG^#}d6-*r{Fh9<9eLFWl9x(D6VG!G3lw&rxu zJfg*>Bt$+~%FdTDtPN1huq}wZK^u(5H%yLEmw^~^34zFRk)VX;Js;+&1SZ}S zQ;hN|fV|w%n2gOUq?sF~FncmcVJJ2j4J9v&Kagd4)>VAgITWim227>%q$Q#d)X3&J zN7R-<1l4|rG4igBx^jo0x(B8W{VhW>SDF?8pN#q{#!%dTqa83 z;Z2*6eiyc1<9k<1R6>zLA&TTXs_5z#&2)<|V7Fpu2Zt)Yp`AAap`cba9u#kG%4Z;Z z`HWc<1YeeCCZRa0iDru*MzcMFeevIng%<*G@Sd0vQ(k>9KW?p+DeW4IBh_4?pkeD^ zsVa{hXYzsY^g%&sHfOk##cg5mkN=tGBdyn`qe3GIW)z8qHS`GVR~jWa8puK{Z-{B>i1`$< zZ?hA(OfJWwxg>NbwnYpC=X(PS{}FbiJzsD!N0eB7m;-27pjXL*v7TdqSnCI@+V7~} zd3SZW9E1Q*E)u3_FXbJ2m2Ts@rhEVx!caQ_(7+bzz2AdG%~`{Q#48Wdvi-yxMR6Ng0IWKSFKhMntCQ zAV;uTtv^RtSDJx13KfRhSH5z;v#pfd@g63D`cM8qX>LKvK%vg6N8Uv_x8q09gFB~$ zIWE?!sH@J);CwEec>)FgN65U_i1;D19*@%L!JU_4G|8)|=sS@GCbk^X@hqkVW>~U& zMNf}?Rytr6pkykmwqUSdw3Qcy;3@cMvbwR@v z(h&4uLnS&Vesxu4ch-O8P0R8J>T1Jib=A83RVK5VY020}eM#n8K&cWdx=N9sOd^zt zB5}kp+cCZXxmb<6I@KbDzf!+UDVB%ju$$CByJtGvA(G{ArL!JbdC2ZgT?jRd^!_HJ z9PQ&_1wbki21)(>C84bP3Jiva;yfOf+!8MQ5Fu^oLi386GZ5TK`Hg)>W>9WgTqM~DV%xa>9sfpSO_XlGS z=Bfom!F(cxH2X5#S7nVCL9;siR>jP26fTW;A4+Q{@ceGS$;^Xw76+N$oIvWh;cFm9 zw4rhoEomrwe$>!xS?dS9+V2ckUc*IgGzh8vj&$YSQRGsZNL4{aP8&N*Hc z0Tb^DI^k}MJVO6oHPoueWO0sKsw*9O>3I472koSu(!?4tyFeHFAFwk=&QMmgDbqMG zY)oy@mlm{`aSVR!hn@y$n-cgVgM)l=^E~r2c=U z3)_J(orIQ(=k_l+*-j}NDeK6v=GDk$Pb)UPvi5~q>Kqase|8eeKzivjOhOwP{_^n9 zKP(qn18Y^t$@_@sr~+k9BhqaCoHl%jS{p7tvL|DzJ-Ak?)a57PtG6b3pbDBO%<$Vg}A$B6XAq_0!MxI z$`HoInUx4bltabYf(9TWKc)Vl*i=?Wa6tn@)!9Pwr6Fo1hGR@>G>PKrB$SB!q}jyU z&_XbiJSZSnAH=TL3!65n2np1aG&Tx_R4E?n?n=?VPu-CZ$i&CQR}rJ-Yl z9x0b45jir1RSfR>^wO9-XE0V{3YMED3?kBqBAfVMM8vCt z*(2eJ{wjiOEr5^}p*_*jXP5kIdOd9o(2N-n@P29>F{34N+D`+6 zr$#8ktE6Gni)&r9YKk7;O`9H`{;Zq6bTb`?HV!PRh3Z$2DV$n={4CZw@|5O9tx+*60jm&p zltKe}epy$psn_zdt|8JerMs)aliaz4K!M0g!7CRAic>Z=PAe^$rbE(|vES$7(yis< zp8rsQcTD*odiGVxkJ5b>V=kcU^S!NYs{LmsvmF;xaU zyr;k7VXC8+hk5!d9!+<|>cjRTe^x3rB?rw2^x-}Ip+1^Y!}9Q+{*ni2fj$}@JpCb$ zu4M&{?%@wvbWJu`bPs>X!sZV31z^!V{2`03lL3qF;SX6@Q?R+D{r-m>+Aa}_Xutm< z2Wtja5AFBA;$TY(%kk&sL^~)zTD0GJdeHbobHRpzR-PHfFc(>XNB4kbBD(a78^`c3 z!7#wZ_eNUruFhaj0%MVh7!~qxytj;t8k8zr8Ha;Sj*gB_?yl~5VN1%a>tdZM0Ed|9 zRb4D>>0Uq0>#f0TKA}T47uYB77tMH4gMs&ifnnb7kMk3O;QU8saL6XML0)^(d?SH| z|48FgI@$?S^33Pnkhuv$fj1NIhNC!$-ax@yHFUyL0SVqX#k<}9*c%jP;qo{1CanGd zP)EN&x3GycV=X>6se)d z8EJB}cVoum1_<@t90Nk`a00s;OofN3QJ#JxKZy*71QinQE9VdA;6jynmm>r@Mw_RD zadZXudj$N3FXnOv?mioae&9gjXL+#EirwQN_T)8l3V~K+4dqRia7aj&XR1V8`7>k^ zc7DWD20Xkc98aYy6q$(*YY--YCauhE3Rx4Rl7xiGP=K?!DnvNptIXz#lamtsn3mko zwsKY;Z3vy3S|{jA=de)W3?-PC3UDx~p+s`qclPlQ@yXq4az zBOQd2qFtbSJybXVD^dMM!gCJ`bL1}M6>4qTLhy2x5EWLGRcl>clZTORhKem~HZI!i z0d)#xm+-X7o1M(WDaz!y_UZQuulAiT1lE4XC^7HTdfeTc2*-V6&R;V-kTgc+F0?cF zt`6%54D1)2|IGVE)~va~-l4-QLm=bqokPSLggx$;C1*IF>_tGoU&yis%Mme0_eYtj zX%<1I`T9rUnHPVU8VLs7!|xRZ&a&EC4hrpe9s_0W;5=^lV&n+Vd@}D1{bnPoX@JN8 zx<>ssIx>3w7dNMp&g?fKz5kf^sFS&i6``2V-VVJ=xxJqG4tyNN6UBmD^6W@ q!PZ%HrCI>Dzhc!@{;YZu=ik_rEyJ3ohU3iYsN-d>P5xi_-~R*BvrHKP literal 0 HcmV?d00001 diff --git a/components.json b/components.json new file mode 100644 index 0000000..d294819 --- /dev/null +++ b/components.json @@ -0,0 +1,21 @@ +{ + "$schema": "https://ui.shadcn.com/schema.json", + "style": "default", + "rsc": false, + "tsx": true, + "tailwind": { + "config": "tailwind.config.js", + "css": "src/app.css", + "baseColor": "neutral", + "cssVariables": true, + "prefix": "" + }, + "aliases": { + "components": "@/components", + "utils": "@/lib/utils", + "ui": "@/components/ui", + "lib": "@/lib", + "hooks": "@/hooks" + }, + "iconLibrary": "lucide" +} \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 0000000..144961e --- /dev/null +++ b/index.html @@ -0,0 +1,17 @@ + + + + + + + Tauri + React + Typescript + + + +
+ + + diff --git a/package.json b/package.json new file mode 100644 index 0000000..4f44e17 --- /dev/null +++ b/package.json @@ -0,0 +1,42 @@ +{ + "name": "emu", + "private": true, + "version": "0.1.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "tsc && vite build", + "preview": "vite preview", + "tauri": "tauri" + }, + "dependencies": { + "@phosphor-icons/react": "^2.1.7", + "@radix-ui/react-alert-dialog": "^1.1.2", + "@radix-ui/react-slot": "^1.1.0", + "@tauri-apps/api": "^2", + "@tauri-apps/plugin-process": "~2", + "@tauri-apps/plugin-shell": "~2", + "class-variance-authority": "^0.7.0", + "clsx": "^2.1.1", + "lucide-react": "^0.456.0", + "react": "^18.2.0", + "react-contexify": "^6.0.0", + "react-dom": "^18.2.0", + "swr": "^2.2.5", + "tailwind-merge": "^2.5.4", + "tailwindcss-animate": "^1.0.7", + "zustand": "^5.0.1" + }, + "devDependencies": { + "@tauri-apps/cli": "^2", + "@types/node": "^22.9.0", + "@types/react": "^18.2.15", + "@types/react-dom": "^18.2.7", + "@vitejs/plugin-react": "^4.2.1", + "autoprefixer": "^10.4.20", + "postcss": "^8.4.48", + "tailwindcss": "^3.4.14", + "typescript": "^5.2.2", + "vite": "^5.3.1" + } +} diff --git a/postcss.config.js b/postcss.config.js new file mode 100644 index 0000000..2e7af2b --- /dev/null +++ b/postcss.config.js @@ -0,0 +1,6 @@ +export default { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +} diff --git a/public/tauri.svg b/public/tauri.svg new file mode 100644 index 0000000..31b62c9 --- /dev/null +++ b/public/tauri.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/public/vite.svg b/public/vite.svg new file mode 100644 index 0000000..e7b8dfb --- /dev/null +++ b/public/vite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src-tauri/.gitignore b/src-tauri/.gitignore new file mode 100644 index 0000000..b21bd68 --- /dev/null +++ b/src-tauri/.gitignore @@ -0,0 +1,7 @@ +# Generated by Cargo +# will have compiled files and executables +/target/ + +# Generated by Tauri +# will have schema files for capabilities auto-completion +/gen/schemas diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock new file mode 100644 index 0000000..9886ce7 --- /dev/null +++ b/src-tauri/Cargo.lock @@ -0,0 +1,4597 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "addr2line" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" + +[[package]] +name = "aho-corasick" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +dependencies = [ + "memchr", +] + +[[package]] +name = "alloc-no-stdlib" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" + +[[package]] +name = "alloc-stdlib" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece" +dependencies = [ + "alloc-no-stdlib", +] + +[[package]] +name = "android-tzdata" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "anyhow" +version = "1.0.93" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c95c10ba0b00a02636238b814946408b1322d5ac4760326e6fb8ec956d85775" + +[[package]] +name = "atk" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4af014b17dd80e8af9fa689b2d4a211ddba6eb583c1622f35d0cb543f6b17e4" +dependencies = [ + "atk-sys", + "glib", + "libc", +] + +[[package]] +name = "atk-sys" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "251e0b7d90e33e0ba930891a505a9a35ece37b2dd37a14f3ffc306c13b980009" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "autocfg" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" + +[[package]] +name = "backtrace" +version = "0.3.74" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" +dependencies = [ + "addr2line", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", + "windows-targets 0.52.6", +] + +[[package]] +name = "base64" +version = "0.21.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" +dependencies = [ + "serde", +] + +[[package]] +name = "block" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "block2" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c132eebf10f5cad5289222520a4a058514204aed6d791f1cf4fe8088b82d15f" +dependencies = [ + "objc2", +] + +[[package]] +name = "brotli" +version = "7.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc97b8f16f944bba54f0433f07e30be199b6dc2bd25937444bbad560bcea29bd" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", + "brotli-decompressor", +] + +[[package]] +name = "brotli-decompressor" +version = "4.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a45bd2e4095a8b518033b128020dd4a55aab1c0a381ba4404a472630f4bc362" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", +] + +[[package]] +name = "bumpalo" +version = "3.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" + +[[package]] +name = "bytemuck" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8334215b81e418a0a7bdb8ef0849474f40bb10c8b71f1c4ed315cff49f32494d" + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bytes" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ac0150caa2ae65ca5bd83f25c7de183dea78d4d366469f148435e2acfbad0da" +dependencies = [ + "serde", +] + +[[package]] +name = "cairo-rs" +version = "0.18.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ca26ef0159422fb77631dc9d17b102f253b876fe1586b03b803e63a309b4ee2" +dependencies = [ + "bitflags 2.6.0", + "cairo-sys-rs", + "glib", + "libc", + "once_cell", + "thiserror 1.0.69", +] + +[[package]] +name = "cairo-sys-rs" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "685c9fa8e590b8b3d678873528d83411db17242a73fccaed827770ea0fedda51" +dependencies = [ + "glib-sys", + "libc", + "system-deps", +] + +[[package]] +name = "camino" +version = "1.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b96ec4966b5813e2c0507c1f86115c8c5abaadc3980879c3424042a02fd1ad3" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo-platform" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24b1f0365a6c6bb4020cd05806fd0d33c44d38046b8bd7f0e40814b9763cabfc" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo_metadata" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037" +dependencies = [ + "camino", + "cargo-platform", + "semver", + "serde", + "serde_json", + "thiserror 1.0.69", +] + +[[package]] +name = "cargo_toml" +version = "0.17.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a969e13a7589e9e3e4207e153bae624ade2b5622fb4684a4923b23ec3d57719" +dependencies = [ + "serde", + "toml 0.8.2", +] + +[[package]] +name = "cc" +version = "1.1.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40545c26d092346d8a8dab71ee48e7685a7a9cba76e634790c215b41a4a7b4cf" +dependencies = [ + "shlex", +] + +[[package]] +name = "cesu8" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" + +[[package]] +name = "cfb" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d38f2da7a0a2c4ccf0065be06397cc26a81f4e528be095826eee9d4adbb8c60f" +dependencies = [ + "byteorder", + "fnv", + "uuid", +] + +[[package]] +name = "cfg-expr" +version = "0.15.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d067ad48b8650848b989a59a86c6c36a995d02d2bf778d45c3c5d57bc2718f02" +dependencies = [ + "smallvec", + "target-lexicon", +] + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "cfg_aliases" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + +[[package]] +name = "chrono" +version = "0.4.38" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" +dependencies = [ + "android-tzdata", + "iana-time-zone", + "num-traits", + "serde", + "windows-targets 0.52.6", +] + +[[package]] +name = "cocoa" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f79398230a6e2c08f5c9760610eb6924b52aa9e7950a619602baba59dcbbdbb2" +dependencies = [ + "bitflags 2.6.0", + "block", + "cocoa-foundation", + "core-foundation", + "core-graphics", + "foreign-types", + "libc", + "objc", +] + +[[package]] +name = "cocoa-foundation" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e14045fb83be07b5acf1c0884b2180461635b433455fa35d1cd6f17f1450679d" +dependencies = [ + "bitflags 2.6.0", + "block", + "core-foundation", + "core-graphics-types", + "libc", + "objc", +] + +[[package]] +name = "combine" +version = "4.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" +dependencies = [ + "bytes", + "memchr", +] + +[[package]] +name = "convert_case" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" + +[[package]] +name = "cookie" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ddef33a339a91ea89fb53151bd0a4689cfce27055c291dfa69945475d22c747" +dependencies = [ + "time", + "version_check", +] + +[[package]] +name = "core-foundation" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b55271e5c8c478ad3f38ad24ef34923091e0548492a266d19b3c0b4d82574c63" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + +[[package]] +name = "core-graphics" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa95a34622365fa5bbf40b20b75dba8dfa8c94c734aea8ac9a5ca38af14316f1" +dependencies = [ + "bitflags 2.6.0", + "core-foundation", + "core-graphics-types", + "foreign-types", + "libc", +] + +[[package]] +name = "core-graphics-types" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d44a101f213f6c4cdc1853d4b78aef6db6bdfa3468798cc1d9912f4735013eb" +dependencies = [ + "bitflags 2.6.0", + "core-foundation", + "libc", +] + +[[package]] +name = "cpufeatures" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" +dependencies = [ + "libc", +] + +[[package]] +name = "crc32fast" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "cssparser" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "754b69d351cdc2d8ee09ae203db831e005560fc6030da058f86ad60c92a9cb0a" +dependencies = [ + "cssparser-macros", + "dtoa-short", + "itoa 0.4.8", + "matches", + "phf 0.8.0", + "proc-macro2", + "quote", + "smallvec", + "syn 1.0.109", +] + +[[package]] +name = "cssparser-macros" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331" +dependencies = [ + "quote", + "syn 2.0.87", +] + +[[package]] +name = "ctor" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edb49164822f3ee45b17acd4a208cfc1251410cf0cad9a833234c9890774dd9f" +dependencies = [ + "quote", + "syn 2.0.87", +] + +[[package]] +name = "darling" +version = "0.20.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.20.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn 2.0.87", +] + +[[package]] +name = "darling_macro" +version = "0.20.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" +dependencies = [ + "darling_core", + "quote", + "syn 2.0.87", +] + +[[package]] +name = "deranged" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" +dependencies = [ + "powerfmt", + "serde", +] + +[[package]] +name = "derive_more" +version = "0.99.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f33878137e4dafd7fa914ad4e259e18a4e8e532b9617a2d0150262bf53abfce" +dependencies = [ + "convert_case", + "proc-macro2", + "quote", + "rustc_version", + "syn 2.0.87", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "crypto-common", +] + +[[package]] +name = "dirs" +version = "5.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" +dependencies = [ + "dirs-sys", +] + +[[package]] +name = "dirs-sys" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" +dependencies = [ + "libc", + "option-ext", + "redox_users", + "windows-sys 0.48.0", +] + +[[package]] +name = "dispatch" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" + +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", +] + +[[package]] +name = "dlopen2" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1297103d2bbaea85724fcee6294c2d50b1081f9ad47d0f6f6f61eda65315a6" +dependencies = [ + "dlopen2_derive", + "libc", + "once_cell", + "winapi", +] + +[[package]] +name = "dlopen2_derive" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2b99bf03862d7f545ebc28ddd33a665b50865f4dfd84031a393823879bd4c54" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", +] + +[[package]] +name = "dpi" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f25c0e292a7ca6d6498557ff1df68f32c99850012b6ea401cf8daf771f22ff53" +dependencies = [ + "serde", +] + +[[package]] +name = "dtoa" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcbb2bf8e87535c23f7a8a321e364ce21462d0ff10cb6407820e8e96dfff6653" + +[[package]] +name = "dtoa-short" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd1511a7b6a56299bd043a9c167a6d2bfb37bf84a6dfceaba651168adfb43c87" +dependencies = [ + "dtoa", +] + +[[package]] +name = "dunce" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" + +[[package]] +name = "dyn-clone" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d6ef0072f8a535281e4876be788938b528e9a1d43900b82c2569af7da799125" + +[[package]] +name = "embed-resource" +version = "2.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b68b6f9f63a0b6a38bc447d4ce84e2b388f3ec95c99c641c8ff0dd3ef89a6379" +dependencies = [ + "cc", + "memchr", + "rustc_version", + "toml 0.8.2", + "vswhom", + "winreg", +] + +[[package]] +name = "embed_plist" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ef6b89e5b37196644d8796de5268852ff179b44e96276cf4290264843743bb7" + +[[package]] +name = "emu" +version = "0.1.0" +dependencies = [ + "serde", + "serde_json", + "tauri", + "tauri-build", + "tauri-plugin-positioner", + "tauri-plugin-process", + "tauri-plugin-shell", +] + +[[package]] +name = "encoding_rs" +version = "0.8.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + +[[package]] +name = "erased-serde" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24e2389d65ab4fab27dc2a5de7b191e1f6617d1f1c8855c0dc569c94a4cbb18d" +dependencies = [ + "serde", + "typeid", +] + +[[package]] +name = "fdeflate" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07c6f4c64c1d33a3111c4466f7365ebdcc37c5bd1ea0d62aae2e3d722aacbedb" +dependencies = [ + "simd-adler32", +] + +[[package]] +name = "field-offset" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38e2275cc4e4fc009b0669731a1e5ab7ebf11f469eaede2bab9309a5b4d6057f" +dependencies = [ + "memoffset", + "rustc_version", +] + +[[package]] +name = "flate2" +version = "1.0.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1b589b4dc103969ad3cf85c950899926ec64300a1a46d76c03a6072957036f0" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foreign-types" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965" +dependencies = [ + "foreign-types-macros", + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-macros" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", +] + +[[package]] +name = "foreign-types-shared" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b" + +[[package]] +name = "form_urlencoded" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "futf" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df420e2e84819663797d1ec6544b13c5be84629e7bb00dc960d6917db2987843" +dependencies = [ + "mac", + "new_debug_unreachable", +] + +[[package]] +name = "futures-channel" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +dependencies = [ + "futures-core", +] + +[[package]] +name = "futures-core" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" + +[[package]] +name = "futures-executor" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" + +[[package]] +name = "futures-macro" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", +] + +[[package]] +name = "futures-sink" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" + +[[package]] +name = "futures-task" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" + +[[package]] +name = "futures-util" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +dependencies = [ + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "fxhash" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" +dependencies = [ + "byteorder", +] + +[[package]] +name = "gdk" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5ba081bdef3b75ebcdbfc953699ed2d7417d6bd853347a42a37d76406a33646" +dependencies = [ + "cairo-rs", + "gdk-pixbuf", + "gdk-sys", + "gio", + "glib", + "libc", + "pango", +] + +[[package]] +name = "gdk-pixbuf" +version = "0.18.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50e1f5f1b0bfb830d6ccc8066d18db35c487b1b2b1e8589b5dfe9f07e8defaec" +dependencies = [ + "gdk-pixbuf-sys", + "gio", + "glib", + "libc", + "once_cell", +] + +[[package]] +name = "gdk-pixbuf-sys" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9839ea644ed9c97a34d129ad56d38a25e6756f99f3a88e15cd39c20629caf7" +dependencies = [ + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "gdk-sys" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31ff856cb3386dae1703a920f803abafcc580e9b5f711ca62ed1620c25b51ff2" +dependencies = [ + "cairo-sys-rs", + "gdk-pixbuf-sys", + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "pango-sys", + "pkg-config", + "system-deps", +] + +[[package]] +name = "gdkwayland-sys" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a90fbf5c033c65d93792192a49a8efb5bb1e640c419682a58bb96f5ae77f3d4a" +dependencies = [ + "gdk-sys", + "glib-sys", + "gobject-sys", + "libc", + "pkg-config", + "system-deps", +] + +[[package]] +name = "gdkx11" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db2ea8a4909d530f79921290389cbd7c34cb9d623bfe970eaae65ca5f9cd9cce" +dependencies = [ + "gdk", + "gdkx11-sys", + "gio", + "glib", + "libc", + "x11", +] + +[[package]] +name = "gdkx11-sys" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fee8f00f4ee46cad2939b8990f5c70c94ff882c3028f3cc5abf950fa4ab53043" +dependencies = [ + "gdk-sys", + "glib-sys", + "libc", + "system-deps", + "x11", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "getrandom" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.9.0+wasi-snapshot-preview1", +] + +[[package]] +name = "getrandom" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", +] + +[[package]] +name = "gimli" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" + +[[package]] +name = "gio" +version = "0.18.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4fc8f532f87b79cbc51a79748f16a6828fb784be93145a322fa14d06d354c73" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-util", + "gio-sys", + "glib", + "libc", + "once_cell", + "pin-project-lite", + "smallvec", + "thiserror 1.0.69", +] + +[[package]] +name = "gio-sys" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37566df850baf5e4cb0dfb78af2e4b9898d817ed9263d1090a2df958c64737d2" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps", + "winapi", +] + +[[package]] +name = "glib" +version = "0.18.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "233daaf6e83ae6a12a52055f568f9d7cf4671dabb78ff9560ab6da230ce00ee5" +dependencies = [ + "bitflags 2.6.0", + "futures-channel", + "futures-core", + "futures-executor", + "futures-task", + "futures-util", + "gio-sys", + "glib-macros", + "glib-sys", + "gobject-sys", + "libc", + "memchr", + "once_cell", + "smallvec", + "thiserror 1.0.69", +] + +[[package]] +name = "glib-macros" +version = "0.18.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bb0228f477c0900c880fd78c8759b95c7636dbd7842707f49e132378aa2acdc" +dependencies = [ + "heck 0.4.1", + "proc-macro-crate 2.0.2", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.87", +] + +[[package]] +name = "glib-sys" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "063ce2eb6a8d0ea93d2bf8ba1957e78dbab6be1c2220dd3daca57d5a9d869898" +dependencies = [ + "libc", + "system-deps", +] + +[[package]] +name = "glob" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" + +[[package]] +name = "gobject-sys" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0850127b514d1c4a4654ead6dedadb18198999985908e6ffe4436f53c785ce44" +dependencies = [ + "glib-sys", + "libc", + "system-deps", +] + +[[package]] +name = "gtk" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93c4f5e0e20b60e10631a5f06da7fe3dda744b05ad0ea71fee2f47adf865890c" +dependencies = [ + "atk", + "cairo-rs", + "field-offset", + "futures-channel", + "gdk", + "gdk-pixbuf", + "gio", + "glib", + "gtk-sys", + "gtk3-macros", + "libc", + "pango", + "pkg-config", +] + +[[package]] +name = "gtk-sys" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "771437bf1de2c1c0b496c11505bdf748e26066bbe942dfc8f614c9460f6d7722" +dependencies = [ + "atk-sys", + "cairo-sys-rs", + "gdk-pixbuf-sys", + "gdk-sys", + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "pango-sys", + "system-deps", +] + +[[package]] +name = "gtk3-macros" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6063efb63db582968fb7df72e1ae68aa6360dcfb0a75143f34fc7d616bad75e" +dependencies = [ + "proc-macro-crate 1.3.1", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.87", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + +[[package]] +name = "hashbrown" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a9bfc1af68b1726ea47d3d5109de126281def866b33970e10fbab11b5dafab3" + +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + +[[package]] +name = "hermit-abi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "html5ever" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bea68cab48b8459f17cf1c944c67ddc572d272d9f2b274140f223ecb1da4a3b7" +dependencies = [ + "log", + "mac", + "markup5ever", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "http" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258" +dependencies = [ + "bytes", + "fnv", + "itoa 1.0.11", +] + +[[package]] +name = "http-body" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +dependencies = [ + "bytes", + "http", +] + +[[package]] +name = "http-body-util" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" +dependencies = [ + "bytes", + "futures-util", + "http", + "http-body", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946" + +[[package]] +name = "hyper" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbbff0a806a4728c99295b254c8838933b5b082d75e3cb70c8dab21fdfbcfa9a" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "http", + "http-body", + "httparse", + "itoa 1.0.11", + "pin-project-lite", + "smallvec", + "tokio", + "want", +] + +[[package]] +name = "hyper-util" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df2dcfbe0677734ab2f3ffa7fa7bfd4706bfdc1ef393f2ee30184aed67e631b4" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "http", + "http-body", + "hyper", + "pin-project-lite", + "socket2", + "tokio", + "tower-service", + "tracing", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.61" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "windows-core 0.52.0", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "ico" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3804960be0bb5e4edb1e1ad67afd321a9ecfd875c3e65c099468fd2717d7cae" +dependencies = [ + "byteorder", + "png", +] + +[[package]] +name = "icu_collections" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locid" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_locid_transform" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_locid_transform_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_locid_transform_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e" + +[[package]] +name = "icu_normalizer" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "utf16_iter", + "utf8_iter", + "write16", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516" + +[[package]] +name = "icu_properties" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_locid_transform", + "icu_properties_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569" + +[[package]] +name = "icu_provider" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_provider_macros", + "stable_deref_trait", + "tinystr", + "writeable", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_provider_macros" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", +] + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "idna" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" +dependencies = [ + "icu_normalizer", + "icu_properties", +] + +[[package]] +name = "indexmap" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg", + "hashbrown 0.12.3", + "serde", +] + +[[package]] +name = "indexmap" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da" +dependencies = [ + "equivalent", + "hashbrown 0.15.1", + "serde", +] + +[[package]] +name = "infer" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc150e5ce2330295b8616ce0e3f53250e53af31759a9dbedad1621ba29151847" +dependencies = [ + "cfb", +] + +[[package]] +name = "instant" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "ipnet" +version = "2.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddc24109865250148c2e0f3d25d4f0f479571723792d3802153c60922a4fb708" + +[[package]] +name = "is-docker" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "928bae27f42bc99b60d9ac7334e3a21d10ad8f1835a4e12ec3ec0464765ed1b3" +dependencies = [ + "once_cell", +] + +[[package]] +name = "is-wsl" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "173609498df190136aa7dea1a91db051746d339e18476eed5ca40521f02d7aa5" +dependencies = [ + "is-docker", + "once_cell", +] + +[[package]] +name = "itoa" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" + +[[package]] +name = "itoa" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" + +[[package]] +name = "javascriptcore-rs" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca5671e9ffce8ffba57afc24070e906da7fc4b1ba66f2cabebf61bf2ea257fcc" +dependencies = [ + "bitflags 1.3.2", + "glib", + "javascriptcore-rs-sys", +] + +[[package]] +name = "javascriptcore-rs-sys" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af1be78d14ffa4b75b66df31840478fef72b51f8c2465d4ca7c194da9f7a5124" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "jni" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" +dependencies = [ + "cesu8", + "cfg-if", + "combine", + "jni-sys", + "log", + "thiserror 1.0.69", + "walkdir", + "windows-sys 0.45.0", +] + +[[package]] +name = "jni-sys" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" + +[[package]] +name = "js-sys" +version = "0.3.72" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a88f1bda2bd75b0452a14784937d796722fdebfe50df998aeb3f0b7603019a9" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "json-patch" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "863726d7afb6bc2590eeff7135d923545e5e964f004c2ccf8716c25e70a86f08" +dependencies = [ + "jsonptr", + "serde", + "serde_json", + "thiserror 1.0.69", +] + +[[package]] +name = "jsonptr" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5dea2b27dd239b2556ed7a25ba842fe47fd602e7fc7433c2a8d6106d4d9edd70" +dependencies = [ + "serde", + "serde_json", +] + +[[package]] +name = "keyboard-types" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b750dcadc39a09dbadd74e118f6dd6598df77fa01df0cfcdc52c28dece74528a" +dependencies = [ + "bitflags 2.6.0", + "serde", + "unicode-segmentation", +] + +[[package]] +name = "kuchikiki" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f29e4755b7b995046f510a7520c42b2fed58b77bd94d5a87a8eb43d2fd126da8" +dependencies = [ + "cssparser", + "html5ever", + "indexmap 1.9.3", + "matches", + "selectors", +] + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" + +[[package]] +name = "libappindicator" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03589b9607c868cc7ae54c0b2a22c8dc03dd41692d48f2d7df73615c6a95dc0a" +dependencies = [ + "glib", + "gtk", + "gtk-sys", + "libappindicator-sys", + "log", +] + +[[package]] +name = "libappindicator-sys" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e9ec52138abedcc58dc17a7c6c0c00a2bdb4f3427c7f63fa97fd0d859155caf" +dependencies = [ + "gtk-sys", + "libloading", + "once_cell", +] + +[[package]] +name = "libc" +version = "0.2.162" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18d287de67fe55fd7e1581fe933d965a5a9477b38e949cfa9f8574ef01506398" + +[[package]] +name = "libloading" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" +dependencies = [ + "cfg-if", + "winapi", +] + +[[package]] +name = "libredox" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" +dependencies = [ + "bitflags 2.6.0", + "libc", +] + +[[package]] +name = "litemap" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "643cb0b8d4fcc284004d5fd0d67ccf61dfffadb7f75e1e71bc420f4688a3a704" + +[[package]] +name = "lock_api" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" + +[[package]] +name = "mac" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4" + +[[package]] +name = "malloc_buf" +version = "0.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" +dependencies = [ + "libc", +] + +[[package]] +name = "markup5ever" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a2629bb1404f3d34c2e921f21fd34ba00b206124c81f65c50b43b6aaefeb016" +dependencies = [ + "log", + "phf 0.10.1", + "phf_codegen 0.10.0", + "string_cache", + "string_cache_codegen", + "tendril", +] + +[[package]] +name = "matches" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5" + +[[package]] +name = "memchr" +version = "2.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" + +[[package]] +name = "memoffset" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" +dependencies = [ + "autocfg", +] + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "miniz_oxide" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" +dependencies = [ + "adler2", + "simd-adler32", +] + +[[package]] +name = "mio" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec" +dependencies = [ + "hermit-abi", + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", + "windows-sys 0.52.0", +] + +[[package]] +name = "muda" +version = "0.15.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdae9c00e61cc0579bcac625e8ad22104c60548a025bfc972dc83868a28e1484" +dependencies = [ + "crossbeam-channel", + "dpi", + "gtk", + "keyboard-types", + "objc2", + "objc2-app-kit", + "objc2-foundation", + "once_cell", + "png", + "serde", + "thiserror 1.0.69", + "windows-sys 0.59.0", +] + +[[package]] +name = "ndk" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4" +dependencies = [ + "bitflags 2.6.0", + "jni-sys", + "log", + "ndk-sys", + "num_enum", + "raw-window-handle", + "thiserror 1.0.69", +] + +[[package]] +name = "ndk-context" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" + +[[package]] +name = "ndk-sys" +version = "0.6.0+11769913" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee6cda3051665f1fb8d9e08fc35c96d5a244fb1be711a03b71118828afc9a873" +dependencies = [ + "jni-sys", +] + +[[package]] +name = "new_debug_unreachable" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" + +[[package]] +name = "nodrop" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb" + +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_enum" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e613fc340b2220f734a8595782c551f1250e969d87d3be1ae0579e8d4065179" +dependencies = [ + "num_enum_derive", +] + +[[package]] +name = "num_enum_derive" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" +dependencies = [ + "proc-macro-crate 2.0.2", + "proc-macro2", + "quote", + "syn 2.0.87", +] + +[[package]] +name = "objc" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" +dependencies = [ + "malloc_buf", +] + +[[package]] +name = "objc-sys" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdb91bdd390c7ce1a8607f35f3ca7151b65afc0ff5ff3b34fa350f7d7c7e4310" +dependencies = [ + "cc", +] + +[[package]] +name = "objc2" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46a785d4eeff09c14c487497c162e92766fbb3e4059a71840cecc03d9a50b804" +dependencies = [ + "objc-sys", + "objc2-encode", +] + +[[package]] +name = "objc2-app-kit" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4e89ad9e3d7d297152b17d39ed92cd50ca8063a89a9fa569046d41568891eff" +dependencies = [ + "bitflags 2.6.0", + "block2", + "libc", + "objc2", + "objc2-core-data", + "objc2-core-image", + "objc2-foundation", + "objc2-quartz-core", +] + +[[package]] +name = "objc2-cloud-kit" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74dd3b56391c7a0596a295029734d3c1c5e7e510a4cb30245f8221ccea96b009" +dependencies = [ + "bitflags 2.6.0", + "block2", + "objc2", + "objc2-core-location", + "objc2-foundation", +] + +[[package]] +name = "objc2-contacts" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5ff520e9c33812fd374d8deecef01d4a840e7b41862d849513de77e44aa4889" +dependencies = [ + "block2", + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-core-data" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "617fbf49e071c178c0b24c080767db52958f716d9eabdf0890523aeae54773ef" +dependencies = [ + "bitflags 2.6.0", + "block2", + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-core-image" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55260963a527c99f1819c4f8e3b47fe04f9650694ef348ffd2227e8196d34c80" +dependencies = [ + "block2", + "objc2", + "objc2-foundation", + "objc2-metal", +] + +[[package]] +name = "objc2-core-location" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "000cfee34e683244f284252ee206a27953279d370e309649dc3ee317b37e5781" +dependencies = [ + "block2", + "objc2", + "objc2-contacts", + "objc2-foundation", +] + +[[package]] +name = "objc2-encode" +version = "4.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7891e71393cd1f227313c9379a26a584ff3d7e6e7159e988851f0934c993f0f8" + +[[package]] +name = "objc2-foundation" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8" +dependencies = [ + "bitflags 2.6.0", + "block2", + "libc", + "objc2", +] + +[[package]] +name = "objc2-link-presentation" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1a1ae721c5e35be65f01a03b6d2ac13a54cb4fa70d8a5da293d7b0020261398" +dependencies = [ + "block2", + "objc2", + "objc2-app-kit", + "objc2-foundation", +] + +[[package]] +name = "objc2-metal" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6" +dependencies = [ + "bitflags 2.6.0", + "block2", + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-quartz-core" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a" +dependencies = [ + "bitflags 2.6.0", + "block2", + "objc2", + "objc2-foundation", + "objc2-metal", +] + +[[package]] +name = "objc2-symbols" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a684efe3dec1b305badae1a28f6555f6ddd3bb2c2267896782858d5a78404dc" +dependencies = [ + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-ui-kit" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8bb46798b20cd6b91cbd113524c490f1686f4c4e8f49502431415f3512e2b6f" +dependencies = [ + "bitflags 2.6.0", + "block2", + "objc2", + "objc2-cloud-kit", + "objc2-core-data", + "objc2-core-image", + "objc2-core-location", + "objc2-foundation", + "objc2-link-presentation", + "objc2-quartz-core", + "objc2-symbols", + "objc2-uniform-type-identifiers", + "objc2-user-notifications", +] + +[[package]] +name = "objc2-uniform-type-identifiers" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44fa5f9748dbfe1ca6c0b79ad20725a11eca7c2218bceb4b005cb1be26273bfe" +dependencies = [ + "block2", + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-user-notifications" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76cfcbf642358e8689af64cee815d139339f3ed8ad05103ed5eaf73db8d84cb3" +dependencies = [ + "bitflags 2.6.0", + "block2", + "objc2", + "objc2-core-location", + "objc2-foundation", +] + +[[package]] +name = "objc2-web-kit" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68bc69301064cebefc6c4c90ce9cba69225239e4b8ff99d445a2b5563797da65" +dependencies = [ + "bitflags 2.6.0", + "block2", + "objc2", + "objc2-app-kit", + "objc2-foundation", +] + +[[package]] +name = "object" +version = "0.36.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aedf0a2d09c573ed1d8d85b30c119153926a2b36dce0ab28322c09a117a4683e" +dependencies = [ + "memchr", +] + +[[package]] +name = "once_cell" +version = "1.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" + +[[package]] +name = "open" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61a877bf6abd716642a53ef1b89fb498923a4afca5c754f9050b4d081c05c4b3" +dependencies = [ + "is-wsl", + "libc", + "pathdiff", +] + +[[package]] +name = "option-ext" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" + +[[package]] +name = "os_pipe" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ffd2b0a5634335b135d5728d84c5e0fd726954b87111f7506a61c502280d982" +dependencies = [ + "libc", + "windows-sys 0.59.0", +] + +[[package]] +name = "pango" +version = "0.18.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ca27ec1eb0457ab26f3036ea52229edbdb74dee1edd29063f5b9b010e7ebee4" +dependencies = [ + "gio", + "glib", + "libc", + "once_cell", + "pango-sys", +] + +[[package]] +name = "pango-sys" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "436737e391a843e5933d6d9aa102cb126d501e815b83601365a948a518555dc5" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "parking_lot" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-targets 0.52.6", +] + +[[package]] +name = "pathdiff" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d61c5ce1153ab5b689d0c074c4e7fc613e942dfb7dd9eea5ab202d2ad91fe361" + +[[package]] +name = "percent-encoding" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" + +[[package]] +name = "phf" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3dfb61232e34fcb633f43d12c58f83c1df82962dcdfa565a4e866ffc17dafe12" +dependencies = [ + "phf_macros 0.8.0", + "phf_shared 0.8.0", + "proc-macro-hack", +] + +[[package]] +name = "phf" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fabbf1ead8a5bcbc20f5f8b939ee3f5b0f6f281b6ad3468b84656b658b455259" +dependencies = [ + "phf_shared 0.10.0", +] + +[[package]] +name = "phf" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ade2d8b8f33c7333b51bcf0428d37e217e9f32192ae4772156f65063b8ce03dc" +dependencies = [ + "phf_macros 0.11.2", + "phf_shared 0.11.2", +] + +[[package]] +name = "phf_codegen" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbffee61585b0411840d3ece935cce9cb6321f01c45477d30066498cd5e1a815" +dependencies = [ + "phf_generator 0.8.0", + "phf_shared 0.8.0", +] + +[[package]] +name = "phf_codegen" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fb1c3a8bc4dd4e5cfce29b44ffc14bedd2ee294559a294e2a4d4c9e9a6a13cd" +dependencies = [ + "phf_generator 0.10.0", + "phf_shared 0.10.0", +] + +[[package]] +name = "phf_generator" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17367f0cc86f2d25802b2c26ee58a7b23faeccf78a396094c13dced0d0182526" +dependencies = [ + "phf_shared 0.8.0", + "rand 0.7.3", +] + +[[package]] +name = "phf_generator" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d5285893bb5eb82e6aaf5d59ee909a06a16737a8970984dd7746ba9283498d6" +dependencies = [ + "phf_shared 0.10.0", + "rand 0.8.5", +] + +[[package]] +name = "phf_generator" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48e4cc64c2ad9ebe670cb8fd69dd50ae301650392e81c05f9bfcb2d5bdbc24b0" +dependencies = [ + "phf_shared 0.11.2", + "rand 0.8.5", +] + +[[package]] +name = "phf_macros" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f6fde18ff429ffc8fe78e2bf7f8b7a5a5a6e2a8b58bc5a9ac69198bbda9189c" +dependencies = [ + "phf_generator 0.8.0", + "phf_shared 0.8.0", + "proc-macro-hack", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "phf_macros" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3444646e286606587e49f3bcf1679b8cef1dc2c5ecc29ddacaffc305180d464b" +dependencies = [ + "phf_generator 0.11.2", + "phf_shared 0.11.2", + "proc-macro2", + "quote", + "syn 2.0.87", +] + +[[package]] +name = "phf_shared" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c00cf8b9eafe68dde5e9eaa2cef8ee84a9336a47d566ec55ca16589633b65af7" +dependencies = [ + "siphasher", +] + +[[package]] +name = "phf_shared" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096" +dependencies = [ + "siphasher", +] + +[[package]] +name = "phf_shared" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90fcb95eef784c2ac79119d1dd819e162b5da872ce6f3c3abe1e8ca1c082f72b" +dependencies = [ + "siphasher", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pkg-config" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" + +[[package]] +name = "plist" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42cf17e9a1800f5f396bc67d193dc9411b59012a5876445ef450d449881e1016" +dependencies = [ + "base64 0.22.1", + "indexmap 2.6.0", + "quick-xml", + "serde", + "time", +] + +[[package]] +name = "png" +version = "0.17.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52f9d46a34a05a6a57566bc2bfae066ef07585a6e3fa30fbbdff5936380623f0" +dependencies = [ + "bitflags 1.3.2", + "crc32fast", + "fdeflate", + "flate2", + "miniz_oxide", +] + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "ppv-lite86" +version = "0.2.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "precomputed-hash" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" + +[[package]] +name = "proc-macro-crate" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" +dependencies = [ + "once_cell", + "toml_edit 0.19.15", +] + +[[package]] +name = "proc-macro-crate" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b00f26d3400549137f92511a46ac1cd8ce37cb5598a96d382381458b992a5d24" +dependencies = [ + "toml_datetime", + "toml_edit 0.20.2", +] + +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn 1.0.109", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + +[[package]] +name = "proc-macro-hack" +version = "0.5.20+deprecated" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" + +[[package]] +name = "proc-macro2" +version = "1.0.89" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f139b0662de085916d1fb67d2b4169d1addddda1919e696f3252b740b629986e" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quick-xml" +version = "0.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d3a6e5838b60e0e8fa7a43f22ade549a37d61f8bdbe636d0d7816191de969c2" +dependencies = [ + "memchr", +] + +[[package]] +name = "quote" +version = "1.0.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rand" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" +dependencies = [ + "getrandom 0.1.16", + "libc", + "rand_chacha 0.2.2", + "rand_core 0.5.1", + "rand_hc", + "rand_pcg", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" +dependencies = [ + "ppv-lite86", + "rand_core 0.5.1", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_core" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +dependencies = [ + "getrandom 0.1.16", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom 0.2.15", +] + +[[package]] +name = "rand_hc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" +dependencies = [ + "rand_core 0.5.1", +] + +[[package]] +name = "rand_pcg" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16abd0c1b639e9eb4d7c50c0b8100b0d0f849be2349829c740fe8e6eb4816429" +dependencies = [ + "rand_core 0.5.1", +] + +[[package]] +name = "raw-window-handle" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" + +[[package]] +name = "redox_syscall" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f" +dependencies = [ + "bitflags 2.6.0", +] + +[[package]] +name = "redox_users" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" +dependencies = [ + "getrandom 0.2.15", + "libredox", + "thiserror 1.0.69", +] + +[[package]] +name = "regex" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" + +[[package]] +name = "reqwest" +version = "0.12.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a77c62af46e79de0a562e1a9849205ffcb7fc1238876e9bd743357570e04046f" +dependencies = [ + "base64 0.22.1", + "bytes", + "futures-core", + "futures-util", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-util", + "ipnet", + "js-sys", + "log", + "mime", + "once_cell", + "percent-encoding", + "pin-project-lite", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper", + "tokio", + "tokio-util", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "wasm-streams", + "web-sys", + "windows-registry", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" + +[[package]] +name = "rustc_version" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +dependencies = [ + "semver", +] + +[[package]] +name = "ryu" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "schemars" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09c024468a378b7e36765cd36702b7a90cc3cba11654f6685c8f233408e89e92" +dependencies = [ + "dyn-clone", + "indexmap 1.9.3", + "schemars_derive", + "serde", + "serde_json", + "url", + "uuid", +] + +[[package]] +name = "schemars_derive" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1eee588578aff73f856ab961cd2f79e36bc45d7ded33a7562adba4667aecc0e" +dependencies = [ + "proc-macro2", + "quote", + "serde_derive_internals", + "syn 2.0.87", +] + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "selectors" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df320f1889ac4ba6bc0cdc9c9af7af4bd64bb927bccdf32d81140dc1f9be12fe" +dependencies = [ + "bitflags 1.3.2", + "cssparser", + "derive_more", + "fxhash", + "log", + "matches", + "phf 0.8.0", + "phf_codegen 0.8.0", + "precomputed-hash", + "servo_arc", + "smallvec", + "thin-slice", +] + +[[package]] +name = "semver" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" +dependencies = [ + "serde", +] + +[[package]] +name = "serde" +version = "1.0.214" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f55c3193aca71c12ad7890f1785d2b73e1b9f63a0bbc353c08ef26fe03fc56b5" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde-untagged" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2676ba99bd82f75cae5cbd2c8eda6fa0b8760f18978ea840e980dd5567b5c5b6" +dependencies = [ + "erased-serde", + "serde", + "typeid", +] + +[[package]] +name = "serde_derive" +version = "1.0.214" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de523f781f095e28fa605cdce0f8307e451cc0fd14e2eb4cd2e98a355b147766" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", +] + +[[package]] +name = "serde_derive_internals" +version = "0.29.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", +] + +[[package]] +name = "serde_json" +version = "1.0.132" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d726bfaff4b320266d395898905d0eba0345aae23b54aee3a737e260fd46db03" +dependencies = [ + "itoa 1.0.11", + "memchr", + "ryu", + "serde", +] + +[[package]] +name = "serde_repr" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", +] + +[[package]] +name = "serde_spanned" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa 1.0.11", + "ryu", + "serde", +] + +[[package]] +name = "serde_with" +version = "3.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e28bdad6db2b8340e449f7108f020b3b092e8583a9e3fb82713e1d4e71fe817" +dependencies = [ + "base64 0.22.1", + "chrono", + "hex", + "indexmap 1.9.3", + "indexmap 2.6.0", + "serde", + "serde_derive", + "serde_json", + "serde_with_macros", + "time", +] + +[[package]] +name = "serde_with_macros" +version = "3.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d846214a9854ef724f3da161b426242d8de7c1fc7de2f89bb1efcb154dca79d" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn 2.0.87", +] + +[[package]] +name = "serialize-to-javascript" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9823f2d3b6a81d98228151fdeaf848206a7855a7a042bbf9bf870449a66cafb" +dependencies = [ + "serde", + "serde_json", + "serialize-to-javascript-impl", +] + +[[package]] +name = "serialize-to-javascript-impl" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74064874e9f6a15f04c1f3cb627902d0e6b410abbf36668afa873c61889f1763" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "servo_arc" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d98238b800e0d1576d8b6e3de32827c2d74bee68bb97748dcf5071fb53965432" +dependencies = [ + "nodrop", + "stable_deref_trait", +] + +[[package]] +name = "sha2" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "shared_child" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09fa9338aed9a1df411814a5b2252f7cd206c55ae9bf2fa763f8de84603aa60c" +dependencies = [ + "libc", + "windows-sys 0.59.0", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "simd-adler32" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" + +[[package]] +name = "siphasher" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" + +[[package]] +name = "slab" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +dependencies = [ + "autocfg", +] + +[[package]] +name = "smallvec" +version = "1.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" + +[[package]] +name = "socket2" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "softbuffer" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18051cdd562e792cad055119e0cdb2cfc137e44e3987532e0f9659a77931bb08" +dependencies = [ + "bytemuck", + "cfg_aliases", + "core-graphics", + "foreign-types", + "js-sys", + "log", + "objc2", + "objc2-foundation", + "objc2-quartz-core", + "raw-window-handle", + "redox_syscall", + "wasm-bindgen", + "web-sys", + "windows-sys 0.59.0", +] + +[[package]] +name = "soup3" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "471f924a40f31251afc77450e781cb26d55c0b650842efafc9c6cbd2f7cc4f9f" +dependencies = [ + "futures-channel", + "gio", + "glib", + "libc", + "soup3-sys", +] + +[[package]] +name = "soup3-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ebe8950a680a12f24f15ebe1bf70db7af98ad242d9db43596ad3108aab86c27" +dependencies = [ + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + +[[package]] +name = "string_cache" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f91138e76242f575eb1d3b38b4f1362f10d3a43f47d182a5b359af488a02293b" +dependencies = [ + "new_debug_unreachable", + "once_cell", + "parking_lot", + "phf_shared 0.10.0", + "precomputed-hash", + "serde", +] + +[[package]] +name = "string_cache_codegen" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bb30289b722be4ff74a408c3cc27edeaad656e06cb1fe8fa9231fa59c728988" +dependencies = [ + "phf_generator 0.10.0", + "phf_shared 0.10.0", + "proc-macro2", + "quote", +] + +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + +[[package]] +name = "swift-rs" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4057c98e2e852d51fdcfca832aac7b571f6b351ad159f9eda5db1655f8d0c4d7" +dependencies = [ + "base64 0.21.7", + "serde", + "serde_json", +] + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.87" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25aa4ce346d03a6dcd68dd8b4010bcb74e54e62c90c573f394c46eae99aba32d" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "sync_wrapper" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394" +dependencies = [ + "futures-core", +] + +[[package]] +name = "synstructure" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", +] + +[[package]] +name = "system-deps" +version = "6.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3e535eb8dded36d55ec13eddacd30dec501792ff23a0b1682c38601b8cf2349" +dependencies = [ + "cfg-expr", + "heck 0.5.0", + "pkg-config", + "toml 0.8.2", + "version-compare", +] + +[[package]] +name = "tao" +version = "0.30.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0368f818393ddb38d84cf7446adbf343cca3896da7dd2c8c2311059c11cb1740" +dependencies = [ + "bitflags 2.6.0", + "cocoa", + "core-foundation", + "core-graphics", + "crossbeam-channel", + "dispatch", + "dlopen2", + "dpi", + "gdkwayland-sys", + "gdkx11-sys", + "gtk", + "instant", + "jni", + "lazy_static", + "libc", + "log", + "ndk", + "ndk-context", + "ndk-sys", + "objc", + "once_cell", + "parking_lot", + "raw-window-handle", + "scopeguard", + "tao-macros", + "unicode-segmentation", + "url", + "windows", + "windows-core 0.58.0", + "windows-version", + "x11-dl", +] + +[[package]] +name = "tao-macros" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4e16beb8b2ac17db28eab8bca40e62dbfbb34c0fcdc6d9826b11b7b5d047dfd" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", +] + +[[package]] +name = "target-lexicon" +version = "0.12.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" + +[[package]] +name = "tauri" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e545de0a2dfe296fa67db208266cd397c5a55ae782da77973ef4c4fac90e9f2c" +dependencies = [ + "anyhow", + "bytes", + "dirs", + "dunce", + "embed_plist", + "futures-util", + "getrandom 0.2.15", + "glob", + "gtk", + "heck 0.5.0", + "http", + "jni", + "libc", + "log", + "mime", + "muda", + "objc2", + "objc2-app-kit", + "objc2-foundation", + "percent-encoding", + "plist", + "raw-window-handle", + "reqwest", + "serde", + "serde_json", + "serde_repr", + "serialize-to-javascript", + "swift-rs", + "tauri-build", + "tauri-macros", + "tauri-runtime", + "tauri-runtime-wry", + "tauri-utils", + "thiserror 2.0.3", + "tokio", + "tray-icon", + "url", + "urlpattern", + "webkit2gtk", + "webview2-com", + "window-vibrancy", + "windows", +] + +[[package]] +name = "tauri-build" +version = "2.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7bd2a4bcfaf5fb9f4be72520eefcb61ae565038f8ccba2a497d8c28f463b8c01" +dependencies = [ + "anyhow", + "cargo_toml", + "dirs", + "glob", + "heck 0.5.0", + "json-patch", + "schemars", + "semver", + "serde", + "serde_json", + "tauri-utils", + "tauri-winres", + "toml 0.8.2", + "walkdir", +] + +[[package]] +name = "tauri-codegen" +version = "2.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf79faeecf301d3e969b1fae977039edb77a4c1f25cc0a961be298b54bff97cf" +dependencies = [ + "base64 0.22.1", + "brotli", + "ico", + "json-patch", + "plist", + "png", + "proc-macro2", + "quote", + "semver", + "serde", + "serde_json", + "sha2", + "syn 2.0.87", + "tauri-utils", + "thiserror 2.0.3", + "time", + "url", + "uuid", + "walkdir", +] + +[[package]] +name = "tauri-macros" +version = "2.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c52027c8c5afb83166dacddc092ee8fff50772f9646d461d8c33ee887e447a03" +dependencies = [ + "heck 0.5.0", + "proc-macro2", + "quote", + "syn 2.0.87", + "tauri-codegen", + "tauri-utils", +] + +[[package]] +name = "tauri-plugin" +version = "2.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e753f2a30933a9bbf0a202fa47d7cc4a3401f06e8d6dcc53b79aa62954828c79" +dependencies = [ + "anyhow", + "glob", + "plist", + "schemars", + "serde", + "serde_json", + "tauri-utils", + "toml 0.8.2", + "walkdir", +] + +[[package]] +name = "tauri-plugin-positioner" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "647253ed516eb1dc5a7eefbfadf594ea5ec9cd8b506ef8896ed64621f9f1d264" +dependencies = [ + "log", + "serde", + "serde_json", + "serde_repr", + "tauri", + "tauri-plugin", + "thiserror 1.0.69", +] + +[[package]] +name = "tauri-plugin-process" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae06a00087c148962a52814a2d7265b1a0505bced5ffb74f8c284a5f96a4d03d" +dependencies = [ + "tauri", + "tauri-plugin", +] + +[[package]] +name = "tauri-plugin-shell" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ad7880c5586b6b2104be451e3d7fc0f3800c84bda69e9ba81c828f87cb34267" +dependencies = [ + "encoding_rs", + "log", + "open", + "os_pipe", + "regex", + "schemars", + "serde", + "serde_json", + "shared_child", + "tauri", + "tauri-plugin", + "thiserror 1.0.69", + "tokio", +] + +[[package]] +name = "tauri-runtime" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cce18d43f80d4aba3aa8a0c953bbe835f3d0f2370aca75e8dbb14bd4bab27958" +dependencies = [ + "dpi", + "gtk", + "http", + "jni", + "raw-window-handle", + "serde", + "serde_json", + "tauri-utils", + "thiserror 2.0.3", + "url", + "windows", +] + +[[package]] +name = "tauri-runtime-wry" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f442a38863e10129ffe2cec7bd09c2dcf8a098a3a27801a476a304d5bb991d2" +dependencies = [ + "gtk", + "http", + "jni", + "log", + "objc2", + "objc2-app-kit", + "objc2-foundation", + "percent-encoding", + "raw-window-handle", + "softbuffer", + "tao", + "tauri-runtime", + "tauri-utils", + "url", + "webkit2gtk", + "webview2-com", + "windows", + "wry", +] + +[[package]] +name = "tauri-utils" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9271a88f99b4adea0dc71d0baca4505475a0bbd139fb135f62958721aaa8fe54" +dependencies = [ + "brotli", + "cargo_metadata", + "ctor", + "dunce", + "glob", + "html5ever", + "http", + "infer", + "json-patch", + "kuchikiki", + "log", + "memchr", + "phf 0.11.2", + "proc-macro2", + "quote", + "regex", + "schemars", + "semver", + "serde", + "serde-untagged", + "serde_json", + "serde_with", + "swift-rs", + "thiserror 2.0.3", + "toml 0.8.2", + "url", + "urlpattern", + "uuid", + "walkdir", +] + +[[package]] +name = "tauri-winres" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5993dc129e544393574288923d1ec447c857f3f644187f4fbf7d9a875fbfc4fb" +dependencies = [ + "embed-resource", + "toml 0.7.8", +] + +[[package]] +name = "tendril" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d24a120c5fc464a3458240ee02c299ebcb9d67b5249c8848b09d639dca8d7bb0" +dependencies = [ + "futf", + "mac", + "utf-8", +] + +[[package]] +name = "thin-slice" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8eaa81235c7058867fa8c0e7314f33dcce9c215f535d1913822a2b3f5e289f3c" + +[[package]] +name = "thiserror" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +dependencies = [ + "thiserror-impl 1.0.69", +] + +[[package]] +name = "thiserror" +version = "2.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c006c85c7651b3cf2ada4584faa36773bd07bac24acfb39f3c431b36d7e667aa" +dependencies = [ + "thiserror-impl 2.0.3", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f077553d607adc1caf65430528a576c757a71ed73944b66ebb58ef2bbd243568" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", +] + +[[package]] +name = "time" +version = "0.3.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" +dependencies = [ + "deranged", + "itoa 1.0.11", + "num-conv", + "powerfmt", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" + +[[package]] +name = "time-macros" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" +dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "tinystr" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" +dependencies = [ + "displaydoc", + "zerovec", +] + +[[package]] +name = "tokio" +version = "1.41.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22cfb5bee7a6a52939ca9224d6ac897bb669134078daa8735560897f69de4d33" +dependencies = [ + "backtrace", + "bytes", + "libc", + "mio", + "pin-project-lite", + "socket2", + "windows-sys 0.52.0", +] + +[[package]] +name = "tokio-util" +version = "0.7.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61e7c3654c13bcd040d4a03abee2c75b1d14a37b423cf5a813ceae1cc903ec6a" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "toml" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd79e69d3b627db300ff956027cc6c3798cef26d22526befdfcd12feeb6d2257" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit 0.19.15", +] + +[[package]] +name = "toml" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "185d8ab0dfbb35cf1399a6344d8484209c088f75f8f68230da55d48d95d43e3d" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit 0.20.2", +] + +[[package]] +name = "toml_datetime" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_edit" +version = "0.19.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" +dependencies = [ + "indexmap 2.6.0", + "serde", + "serde_spanned", + "toml_datetime", + "winnow", +] + +[[package]] +name = "toml_edit" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "396e4d48bbb2b7554c944bde63101b5ae446cff6ec4a24227428f15eb72ef338" +dependencies = [ + "indexmap 2.6.0", + "serde", + "serde_spanned", + "toml_datetime", + "winnow", +] + +[[package]] +name = "tower-service" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" + +[[package]] +name = "tracing" +version = "0.1.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +dependencies = [ + "pin-project-lite", + "tracing-core", +] + +[[package]] +name = "tracing-core" +version = "0.1.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +dependencies = [ + "once_cell", +] + +[[package]] +name = "tray-icon" +version = "0.19.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c92af36a182b46206723bdf8a7942e20838cde1cf062e5b97854d57eb01763b" +dependencies = [ + "core-graphics", + "crossbeam-channel", + "dirs", + "libappindicator", + "muda", + "objc2", + "objc2-app-kit", + "objc2-foundation", + "once_cell", + "png", + "serde", + "thiserror 1.0.69", + "windows-sys 0.59.0", +] + +[[package]] +name = "try-lock" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" + +[[package]] +name = "typeid" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e13db2e0ccd5e14a544e8a246ba2312cd25223f616442d7f2cb0e3db614236e" + +[[package]] +name = "typenum" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" + +[[package]] +name = "unic-char-property" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8c57a407d9b6fa02b4795eb81c5b6652060a15a7903ea981f3d723e6c0be221" +dependencies = [ + "unic-char-range", +] + +[[package]] +name = "unic-char-range" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0398022d5f700414f6b899e10b8348231abf9173fa93144cbc1a43b9793c1fbc" + +[[package]] +name = "unic-common" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80d7ff825a6a654ee85a63e80f92f054f904f21e7d12da4e22f9834a4aaa35bc" + +[[package]] +name = "unic-ucd-ident" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e230a37c0381caa9219d67cf063aa3a375ffed5bf541a452db16e744bdab6987" +dependencies = [ + "unic-char-property", + "unic-char-range", + "unic-ucd-version", +] + +[[package]] +name = "unic-ucd-version" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96bd2f2237fe450fcd0a1d2f5f4e91711124f7857ba2e964247776ebeeb7b0c4" +dependencies = [ + "unic-common", +] + +[[package]] +name = "unicode-ident" +version = "1.0.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" + +[[package]] +name = "unicode-segmentation" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" + +[[package]] +name = "url" +version = "2.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d157f1b96d14500ffdc1f10ba712e780825526c03d9a49b4d0324b0d9113ada" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", + "serde", +] + +[[package]] +name = "urlpattern" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70acd30e3aa1450bc2eece896ce2ad0d178e9c079493819301573dae3c37ba6d" +dependencies = [ + "regex", + "serde", + "unic-ucd-ident", + "url", +] + +[[package]] +name = "utf-8" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" + +[[package]] +name = "utf16_iter" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + +[[package]] +name = "uuid" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8c5f0a0af699448548ad1a2fbf920fb4bee257eae39953ba95cb84891a0446a" +dependencies = [ + "getrandom 0.2.15", + "serde", +] + +[[package]] +name = "version-compare" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "852e951cb7832cb45cb1169900d19760cfa39b82bc0ea9c0e5a14ae88411c98b" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "vswhom" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be979b7f07507105799e854203b470ff7c78a1639e330a58f183b5fea574608b" +dependencies = [ + "libc", + "vswhom-sys", +] + +[[package]] +name = "vswhom-sys" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3b17ae1f6c8a2b28506cd96d412eebf83b4a0ff2cbefeeb952f2f9dfa44ba18" +dependencies = [ + "cc", + "libc", +] + +[[package]] +name = "walkdir" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +dependencies = [ + "same-file", + "winapi-util", +] + +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + +[[package]] +name = "wasi" +version = "0.9.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasm-bindgen" +version = "0.2.95" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "128d1e363af62632b8eb57219c8fd7877144af57558fb2ef0368d0087bddeb2e" +dependencies = [ + "cfg-if", + "once_cell", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.95" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb6dd4d3ca0ddffd1dd1c9c04f94b868c37ff5fac97c30b97cff2d74fce3a358" +dependencies = [ + "bumpalo", + "log", + "once_cell", + "proc-macro2", + "quote", + "syn 2.0.87", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc7ec4f8827a71586374db3e87abdb5a2bb3a15afed140221307c3ec06b1f63b" +dependencies = [ + "cfg-if", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.95" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e79384be7f8f5a9dd5d7167216f022090cf1f9ec128e6e6a482a2cb5c5422c56" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.95" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.95" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65fc09f10666a9f147042251e0dda9c18f166ff7de300607007e96bdebc1068d" + +[[package]] +name = "wasm-streams" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15053d8d85c7eccdbefef60f06769760a563c7f0a9d6902a13d35c7800b0ad65" +dependencies = [ + "futures-util", + "js-sys", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "web-sys" +version = "0.3.72" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6488b90108c040df0fe62fa815cbdee25124641df01814dd7282749234c6112" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webkit2gtk" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76b1bc1e54c581da1e9f179d0b38512ba358fb1af2d634a1affe42e37172361a" +dependencies = [ + "bitflags 1.3.2", + "cairo-rs", + "gdk", + "gdk-sys", + "gio", + "gio-sys", + "glib", + "glib-sys", + "gobject-sys", + "gtk", + "gtk-sys", + "javascriptcore-rs", + "libc", + "once_cell", + "soup3", + "webkit2gtk-sys", +] + +[[package]] +name = "webkit2gtk-sys" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62daa38afc514d1f8f12b8693d30d5993ff77ced33ce30cd04deebc267a6d57c" +dependencies = [ + "bitflags 1.3.2", + "cairo-sys-rs", + "gdk-sys", + "gio-sys", + "glib-sys", + "gobject-sys", + "gtk-sys", + "javascriptcore-rs-sys", + "libc", + "pkg-config", + "soup3-sys", + "system-deps", +] + +[[package]] +name = "webview2-com" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f61ff3d9d0ee4efcb461b14eb3acfda2702d10dc329f339303fc3e57215ae2c" +dependencies = [ + "webview2-com-macros", + "webview2-com-sys", + "windows", + "windows-core 0.58.0", + "windows-implement", + "windows-interface", +] + +[[package]] +name = "webview2-com-macros" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d228f15bba3b9d56dde8bddbee66fa24545bd17b48d5128ccf4a8742b18e431" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", +] + +[[package]] +name = "webview2-com-sys" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3a3e2eeb58f82361c93f9777014668eb3d07e7d174ee4c819575a9208011886" +dependencies = [ + "thiserror 1.0.69", + "windows", + "windows-core 0.58.0", +] + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "window-vibrancy" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ea403deff7b51fff19e261330f71608ff2cdef5721d72b64180bb95be7c4150" +dependencies = [ + "objc2", + "objc2-app-kit", + "objc2-foundation", + "raw-window-handle", + "windows-sys 0.59.0", + "windows-version", +] + +[[package]] +name = "windows" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd04d41d93c4992d421894c18c8b43496aa748dd4c081bac0dc93eb0489272b6" +dependencies = [ + "windows-core 0.58.0", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-core" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-core" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ba6d44ec8c2591c134257ce647b7ea6b20335bf6379a27dac5f1641fcf59f99" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-result", + "windows-strings", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-implement" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", +] + +[[package]] +name = "windows-interface" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", +] + +[[package]] +name = "windows-registry" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0" +dependencies = [ + "windows-result", + "windows-strings", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-result" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-strings" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" +dependencies = [ + "windows-result", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" +dependencies = [ + "windows-targets 0.42.2", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-targets" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" +dependencies = [ + "windows_aarch64_gnullvm 0.42.2", + "windows_aarch64_msvc 0.42.2", + "windows_i686_gnu 0.42.2", + "windows_i686_msvc 0.42.2", + "windows_x86_64_gnu 0.42.2", + "windows_x86_64_gnullvm 0.42.2", + "windows_x86_64_msvc 0.42.2", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", +] + +[[package]] +name = "windows-version" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6998aa457c9ba8ff2fb9f13e9d2a930dabcea28f1d0ab94d687d8b3654844515" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_i686_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "winnow" +version = "0.5.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" +dependencies = [ + "memchr", +] + +[[package]] +name = "winreg" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a277a57398d4bfa075df44f501a17cfdf8542d224f0d36095a2adc7aee4ef0a5" +dependencies = [ + "cfg-if", + "windows-sys 0.48.0", +] + +[[package]] +name = "write16" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" + +[[package]] +name = "writeable" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" + +[[package]] +name = "wry" +version = "0.47.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "553ca1ce149982123962fac2506aa75b8b76288779a77e72b12fa2fc34938647" +dependencies = [ + "base64 0.22.1", + "block2", + "cookie", + "crossbeam-channel", + "dpi", + "dunce", + "gdkx11", + "gtk", + "html5ever", + "http", + "javascriptcore-rs", + "jni", + "kuchikiki", + "libc", + "ndk", + "objc2", + "objc2-app-kit", + "objc2-foundation", + "objc2-ui-kit", + "objc2-web-kit", + "once_cell", + "percent-encoding", + "raw-window-handle", + "sha2", + "soup3", + "tao-macros", + "thiserror 1.0.69", + "url", + "webkit2gtk", + "webkit2gtk-sys", + "webview2-com", + "windows", + "windows-core 0.58.0", + "windows-version", + "x11-dl", +] + +[[package]] +name = "x11" +version = "2.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "502da5464ccd04011667b11c435cb992822c2c0dbde1770c988480d312a0db2e" +dependencies = [ + "libc", + "pkg-config", +] + +[[package]] +name = "x11-dl" +version = "2.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38735924fedd5314a6e548792904ed8c6de6636285cb9fec04d5b1db85c1516f" +dependencies = [ + "libc", + "once_cell", + "pkg-config", +] + +[[package]] +name = "yoke" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c5b1314b079b0930c31e3af543d8ee1757b1951ae1e1565ec704403a7240ca5" +dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28cc31741b18cb6f1d5ff12f5b7523e3d6eb0852bbbad19d73905511d9849b95" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", + "synstructure", +] + +[[package]] +name = "zerocopy" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +dependencies = [ + "byteorder", + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", +] + +[[package]] +name = "zerofrom" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91ec111ce797d0e0784a1116d0ddcdbea84322cd79e5d5ad173daeba4f93ab55" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ea7b4a3637ea8669cedf0f1fd5c286a17f3de97b8dd5a70a6c167a1730e63a5" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", + "synstructure", +] + +[[package]] +name = "zerovec" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", +] diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml new file mode 100644 index 0000000..5eaeae5 --- /dev/null +++ b/src-tauri/Cargo.toml @@ -0,0 +1,26 @@ +[package] +name = "emu" +version = "0.1.0" +description = "A Tauri App" +authors = ["you"] +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[lib] +# The `_lib` suffix may seem redundant but it is necessary +# to make the lib name unique and wouldn't conflict with the bin name. +# This seems to be only an issue on Windows, see https://github.com/rust-lang/cargo/issues/8519 +name = "emu_lib" +crate-type = ["staticlib", "cdylib", "rlib"] + +[build-dependencies] +tauri-build = { version = "2", features = [] } + +[dependencies] +tauri = { version = "2", features = [] } +tauri-plugin-shell = "2" +serde = { version = "1", features = ["derive"] } +serde_json = "1" +tauri-plugin-process = "2" +tauri-plugin-positioner = "2" diff --git a/src-tauri/build.rs b/src-tauri/build.rs new file mode 100644 index 0000000..d860e1e --- /dev/null +++ b/src-tauri/build.rs @@ -0,0 +1,3 @@ +fn main() { + tauri_build::build() +} diff --git a/src-tauri/capabilities/default.json b/src-tauri/capabilities/default.json new file mode 100644 index 0000000..4ce5d4e --- /dev/null +++ b/src-tauri/capabilities/default.json @@ -0,0 +1,24 @@ +{ + "$schema": "../gen/schemas/desktop-schema.json", + "identifier": "default", + "description": "Capability for the main window", + "windows": ["main"], + "permissions": [ + "core:default", + "core:window:allow-start-dragging", + "core:window:allow-minimize", + "core:window:allow-close", + "shell:default", + { + "identifier": "shell:allow-execute", + "allow": [ + { + "name": "cmd.exe", + "cmd": "cmd.exe", + "args": true + } + ] + }, + "process:default" + ] +} diff --git a/src-tauri/icons/128x128.png b/src-tauri/icons/128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..d0501511f7230d41c42a42efaac3f33fd98938f6 GIT binary patch literal 4512 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 literal 0 HcmV?d00001 diff --git a/src-tauri/icons/32x32.png b/src-tauri/icons/32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..057bcd150cd2935ecb7640e76b5fd3a8213d33aa GIT binary patch literal 1084 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 LNkvXXu0mjfVL3V0 literal 0 HcmV?d00001 diff --git a/src-tauri/icons/Square284x284Logo.png b/src-tauri/icons/Square284x284Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..d7e853ba72ecf60b5713b52776eb9815fb253c76 GIT binary patch literal 10919 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 IM6N<$f?<~Ec>n+a literal 0 HcmV?d00001 diff --git a/src-tauri/icons/Square71x71Logo.png b/src-tauri/icons/Square71x71Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..2947fdf06bea8e7c805e493f12ed457d2183faed GIT binary patch literal 2412 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

cyhHTWg^^!F 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 UUT?tgGZX$d&CvcY|Gq@^KNB4fCjbBd literal 0 HcmV?d00001 diff --git a/src-tauri/icons/icon.ico b/src-tauri/icons/icon.ico new file mode 100644 index 0000000000000000000000000000000000000000..f6aff6293a247aee7ec69d6e71f27ba716db2c65 GIT binary patch literal 17111 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Ⓢ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 Result { + let v = env::var("ANDROID_HOME").map_err(|err| err.to_string())?; + Ok(v) +} + +#[cfg_attr(mobile, tauri::mobile_entry_point)] +pub fn run() { + tauri::Builder::default() + .plugin(tauri_plugin_process::init()) + .plugin(tauri_plugin_shell::init()) + .invoke_handler(tauri::generate_handler![get_android_home]) + .setup(|app| { + let window = app.get_webview_window("main").unwrap(); + let _ = window.as_ref().window().move_window(Position::Center); + + Ok(()) + }) + .run(tauri::generate_context!()) + .expect("error while running tauri application"); +} diff --git a/src-tauri/src/main.rs b/src-tauri/src/main.rs new file mode 100644 index 0000000..cb9caf4 --- /dev/null +++ b/src-tauri/src/main.rs @@ -0,0 +1,6 @@ +// Prevents additional console window on Windows in release, DO NOT REMOVE!! +#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")] + +fn main() { + emu_lib::run() +} diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json new file mode 100644 index 0000000..80312c5 --- /dev/null +++ b/src-tauri/tauri.conf.json @@ -0,0 +1,39 @@ +{ + "$schema": "https://schema.tauri.app/config/2", + "productName": "emu", + "version": "0.1.0", + "identifier": "emu.app", + "build": { + "beforeDevCommand": "bun run dev", + "devUrl": "http://localhost:1420", + "beforeBuildCommand": "bun run build", + "frontendDist": "../dist" + }, + "app": { + "windows": [ + { + "title": "emu", + "transparent": true, + "resizable": false, + "decorations": false, + "shadow": false, + "width": 800, + "height": 600 + } + ], + "security": { + "csp": null + } + }, + "bundle": { + "active": true, + "targets": "all", + "icon": [ + "icons/32x32.png", + "icons/128x128.png", + "icons/128x128@2x.png", + "icons/icon.icns", + "icons/icon.ico" + ] + } +} diff --git a/src/app.css b/src/app.css new file mode 100644 index 0000000..802e5b1 --- /dev/null +++ b/src/app.css @@ -0,0 +1,73 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; +@layer base { + :root { + --background: 0 0% 100%; + --foreground: 0 0% 3.9%; + --card: 0 0% 100%; + --card-foreground: 0 0% 3.9%; + --popover: 0 0% 100%; + --popover-foreground: 0 0% 3.9%; + --primary: 0 0% 9%; + --primary-foreground: 0 0% 98%; + --secondary: 0 0% 96.1%; + --secondary-foreground: 0 0% 9%; + --muted: 0 0% 96.1%; + --muted-foreground: 0 0% 45.1%; + --accent: 0 0% 96.1%; + --accent-foreground: 0 0% 9%; + --destructive: 0 84.2% 60.2%; + --destructive-foreground: 0 0% 98%; + --border: 0 0% 89.8%; + --input: 0 0% 89.8%; + --ring: 0 0% 3.9%; + --chart-1: 12 76% 61%; + --chart-2: 173 58% 39%; + --chart-3: 197 37% 24%; + --chart-4: 43 74% 66%; + --chart-5: 27 87% 67%; + --radius: 0.5rem; + + --contexify-menu-bgColor: #3a3b3f !important; + --contexify-separator-color: #4c4c4c !important; + --contexify-item-color: #fff !important; + --contexify-activeItem-color: #fff !important; + --contexify-activeItem-bgColor: #4b4e53 !important; + --contexify-rightSlot-color: #6f6e77 !important; + --contexify-activeRightSlot-color: #fff !important; + --contexify-arrow-color: #6f6e77 !important; + --contexify-activeArrow-color: #fff !important; + } + .dark { + --background: 0 0% 3.9%; + --foreground: 0 0% 98%; + --card: 0 0% 3.9%; + --card-foreground: 0 0% 98%; + --popover: 0 0% 3.9%; + --popover-foreground: 0 0% 98%; + --primary: 0 0% 98%; + --primary-foreground: 0 0% 9%; + --secondary: 0 0% 14.9%; + --secondary-foreground: 0 0% 98%; + --muted: 0 0% 14.9%; + --muted-foreground: 0 0% 63.9%; + --accent: 0 0% 14.9%; + --accent-foreground: 0 0% 98%; + --destructive: 0 62.8% 30.6%; + --destructive-foreground: 0 0% 98%; + --border: 0 0% 14.9%; + --input: 0 0% 14.9%; + --ring: 0 0% 83.1%; + --chart-1: 220 70% 50%; + --chart-2: 160 60% 45%; + --chart-3: 30 80% 55%; + --chart-4: 280 65% 60%; + --chart-5: 340 75% 55%; + } +} +@layer base { + * { + @apply border-border; + } +} diff --git a/src/app.tsx b/src/app.tsx new file mode 100644 index 0000000..60cb8dc --- /dev/null +++ b/src/app.tsx @@ -0,0 +1,106 @@ +import { useEmulators } from "@/queries/emulator"; +import { Minus, X } from "@phosphor-icons/react"; +import { startEmulator } from "@/services/api/emulator"; +import { Item, Menu, useContextMenu } from "react-contexify"; +import { useState } from "react"; +import { EmulatorListItem } from "@/components/emulator-list-item"; +import { AndroidHomeModal } from "@/components/modals/android-home"; +import { getCurrentWindow } from "@tauri-apps/api/window"; +import { useNoContext } from "@/hooks/no-context"; + +import "./app.css"; + +function App() { + useNoContext(); + + const { data: emulators } = useEmulators(); + + const { show } = useContextMenu({ + id: "emulator-more", + }); + + const [selectedEmulator, setSelectedEmulator] = useState(null); + + const minimize = async () => { + const window = getCurrentWindow(); + await window.minimize(); + }; + + const close = async () => { + const window = getCurrentWindow(); + await window.close(); + }; + + if (!emulators) return null; + + return ( + <> +

+ +
+
    + {Object.values(emulators).map((emulator, i) => ( + { + setSelectedEmulator(emulator.name); + show({ + event, + }); + }} + /> + ))} +
+
+ + { + if (!visible) setSelectedEmulator(null); + }} + > + { + if (!selectedEmulator) return; + await startEmulator(selectedEmulator, true); + }} + > + Cold Boot + + + + + + ); +} + +export default App; diff --git a/src/components/emulator-list-item.tsx b/src/components/emulator-list-item.tsx new file mode 100644 index 0000000..5f7211b --- /dev/null +++ b/src/components/emulator-list-item.tsx @@ -0,0 +1,96 @@ +import { cn } from "@/lib/utils"; +import { startEmulator, stopEmulator } from "@/services/api/emulator"; +import { + Emulator, + EmulatorState, + OnlineEmulator, + OnlineEmulatorState, +} from "@/types/emulator"; +import { isOnlineEmulator } from "@/types/guards/emulator"; +import { + Circle, + DeviceMobileCamera, + DotsThreeOutlineVertical, + Play, + Stop, + TelevisionSimple, + Watch, +} from "@phosphor-icons/react"; +import { mutate } from "swr"; + +const getStatusAlt = (state: EmulatorState | OnlineEmulatorState) => { + switch (state) { + case "online": + return "Online"; + case "offline": + return "Offline"; + case "booting": + return "Booting"; + } +}; + +interface EmulatorListItemProps { + emulator: Emulator | OnlineEmulator; + onOptionsButtonPressed?: React.MouseEventHandler; +} + +export const EmulatorListItem = ({ + emulator, + onOptionsButtonPressed, +}: EmulatorListItemProps) => { + const toggleEmulatorState = async () => { + if (!isOnlineEmulator(emulator)) { + await startEmulator(emulator.name); + await mutate("emulators"); + } else { + await stopEmulator(emulator.id); + await mutate("emulators"); + } + }; + + return ( +
  • + + + {isOnlineEmulator(emulator) && ( + <> + {emulator.type === "tv" && ( + + )} + {emulator.type === "watch" && } + {emulator.type === "phone" && ( + + )} + + )} + + {emulator.name} + + + + + + +
  • + ); +}; diff --git a/src/components/modals/android-home.tsx b/src/components/modals/android-home.tsx new file mode 100644 index 0000000..5a76e72 --- /dev/null +++ b/src/components/modals/android-home.tsx @@ -0,0 +1,76 @@ +import { + AlertDialog, + AlertDialogAction, + AlertDialogCancel, + AlertDialogContent, + AlertDialogDescription, + AlertDialogFooter, + AlertDialogHeader, + AlertDialogTitle, +} from "@/components/ui/alert-dialog"; +import { useModalsStore } from "@/stores/modals"; +import { mutate } from "swr"; +import { exit as exitBase } from "@tauri-apps/plugin-process"; +import { open } from "@tauri-apps/plugin-shell"; +import { Button } from "@/components/ui/button"; + +export const AndroidHomeModal = () => { + const isAndroidHomeModalVisible = useModalsStore( + (state) => state.isAndroidHomeModalVisible + ); + const setAndroidHomeModalVisible = useModalsStore( + (state) => state.setAndroidHomeModalVisible + ); + + const exit = async () => { + await exitBase(); + }; + + const retry = async () => { + await mutate("emulators"); + setAndroidHomeModalVisible(false); + }; + + const openAndroidDeveloperPortal = async () => { + await open("https://developer.android.com/tools/variables#android_home"); + }; + + const openStackOverflow = async () => { + await open("https://stackoverflow.com/search?q=android_home"); + }; + + return ( + + + + ANDROID_HOME is missing + + At this stage, we are unable to automatically locate the necessary + libraries. We would like to use your Android Studio installation, + but we are unable to find the specified environment variable. +
    +
    + You can find a brief description of the variable on the{" "} + + . Or you can try searching for help on{" "} + +
    +
    + + Exit + + Retry + + +
    +
    + ); +}; diff --git a/src/components/ui/alert-dialog.tsx b/src/components/ui/alert-dialog.tsx new file mode 100644 index 0000000..8ed161a --- /dev/null +++ b/src/components/ui/alert-dialog.tsx @@ -0,0 +1,139 @@ +import * as React from "react"; +import * as AlertDialogPrimitive from "@radix-ui/react-alert-dialog"; + +import { cn } from "@/lib/utils"; +import { buttonVariants } from "@/components/ui/button"; + +const AlertDialog = AlertDialogPrimitive.Root; + +const AlertDialogTrigger = AlertDialogPrimitive.Trigger; + +const AlertDialogPortal = AlertDialogPrimitive.Portal; + +const AlertDialogOverlay = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +AlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName; + +const AlertDialogContent = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + + + + +)); +AlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName; + +const AlertDialogHeader = ({ + className, + ...props +}: React.HTMLAttributes) => ( +
    +); +AlertDialogHeader.displayName = "AlertDialogHeader"; + +const AlertDialogFooter = ({ + className, + ...props +}: React.HTMLAttributes) => ( +
    +); +AlertDialogFooter.displayName = "AlertDialogFooter"; + +const AlertDialogTitle = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +AlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName; + +const AlertDialogDescription = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +AlertDialogDescription.displayName = + AlertDialogPrimitive.Description.displayName; + +const AlertDialogAction = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +AlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName; + +const AlertDialogCancel = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +AlertDialogCancel.displayName = AlertDialogPrimitive.Cancel.displayName; + +export { + AlertDialog, + AlertDialogPortal, + AlertDialogOverlay, + AlertDialogTrigger, + AlertDialogContent, + AlertDialogHeader, + AlertDialogFooter, + AlertDialogTitle, + AlertDialogDescription, + AlertDialogAction, + AlertDialogCancel, +}; diff --git a/src/components/ui/button.tsx b/src/components/ui/button.tsx new file mode 100644 index 0000000..36496a2 --- /dev/null +++ b/src/components/ui/button.tsx @@ -0,0 +1,56 @@ +import * as React from "react" +import { Slot } from "@radix-ui/react-slot" +import { cva, type VariantProps } from "class-variance-authority" + +import { cn } from "@/lib/utils" + +const buttonVariants = cva( + "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0", + { + variants: { + variant: { + default: "bg-primary text-primary-foreground hover:bg-primary/90", + destructive: + "bg-destructive text-destructive-foreground hover:bg-destructive/90", + outline: + "border border-input bg-background hover:bg-accent hover:text-accent-foreground", + secondary: + "bg-secondary text-secondary-foreground hover:bg-secondary/80", + ghost: "hover:bg-accent hover:text-accent-foreground", + link: "text-primary underline-offset-4 hover:underline", + }, + size: { + default: "h-10 px-4 py-2", + sm: "h-9 rounded-md px-3", + lg: "h-11 rounded-md px-8", + icon: "h-10 w-10", + }, + }, + defaultVariants: { + variant: "default", + size: "default", + }, + } +) + +export interface ButtonProps + extends React.ButtonHTMLAttributes, + VariantProps { + asChild?: boolean +} + +const Button = React.forwardRef( + ({ className, variant, size, asChild = false, ...props }, ref) => { + const Comp = asChild ? Slot : "button" + return ( + + ) + } +) +Button.displayName = "Button" + +export { Button, buttonVariants } diff --git a/src/hooks/no-context.ts b/src/hooks/no-context.ts new file mode 100644 index 0000000..e3c6f79 --- /dev/null +++ b/src/hooks/no-context.ts @@ -0,0 +1,14 @@ +import { useEffect } from "react"; + +export const useNoContext = () => { + useEffect(() => { + if (import.meta.env.DEV) return; + const listener = (event: MouseEvent) => { + event.preventDefault(); + }; + document.addEventListener("contextmenu", listener); + return () => { + document.removeEventListener("contextmenu", listener); + }; + }, []); +}; diff --git a/src/lib/utils.ts b/src/lib/utils.ts new file mode 100644 index 0000000..bd0c391 --- /dev/null +++ b/src/lib/utils.ts @@ -0,0 +1,6 @@ +import { clsx, type ClassValue } from "clsx" +import { twMerge } from "tailwind-merge" + +export function cn(...inputs: ClassValue[]) { + return twMerge(clsx(inputs)) +} diff --git a/src/main.tsx b/src/main.tsx new file mode 100644 index 0000000..8ae0a44 --- /dev/null +++ b/src/main.tsx @@ -0,0 +1,11 @@ +import React from "react"; +import ReactDOM from "react-dom/client"; +import App from "./app"; + +import "react-contexify/dist/ReactContexify.css"; + +ReactDOM.createRoot(document.getElementById("root") as HTMLElement).render( + + + +); diff --git a/src/queries/emulator.ts b/src/queries/emulator.ts new file mode 100644 index 0000000..648705d --- /dev/null +++ b/src/queries/emulator.ts @@ -0,0 +1,33 @@ +import useSWR from "swr"; +import { Emulator, OnlineEmulator } from "@/types/emulator"; +import { getAllEmulators, getOnlineEmulators } from "@/services/api/emulator"; +import { invoke } from "@tauri-apps/api/core"; +import { useModalsStore } from "@/stores/modals"; + +export const useEmulators = () => { + const setAndroidHomeModalVisible = useModalsStore( + (state) => state.setAndroidHomeModalVisible + ); + + return useSWR("emulators", async () => { + try { + await invoke("get_android_home"); + } catch (error) { + setAndroidHomeModalVisible(true); + return null; + } + + const online = await getOnlineEmulators(); + + const all = await getAllEmulators(); + + const emulators: Record = {}; + + for (const name of all) { + const onlineEmulator = online[name]; + emulators[name] = onlineEmulator || { name, state: "offline" }; + } + + return emulators; + }); +}; diff --git a/src/services/api/emulator.ts b/src/services/api/emulator.ts new file mode 100644 index 0000000..fd77c63 --- /dev/null +++ b/src/services/api/emulator.ts @@ -0,0 +1,130 @@ +import { execute } from "@/services/execute"; +import { + OnlineEmulator, + OnlineEmulatorState, + OnlineEmulatorType, +} from "@/types/emulator"; + +export const getAllEmulators = async () => { + const output = await execute("cmd.exe", [ + "/c", + "%ANDROID_HOME%/emulator/emulator.exe -list-avds", + ]); + return output + .split("\r\n") + .map((v) => v.trim()) + .filter((v) => { + if (!v) return false; + if (v.startsWith("INFO")) return false; + return true; + }); +}; + +export const getEmulatorName = async (id: string) => { + const output = await execute("cmd.exe", [ + "/c", + `%ANDROID_HOME%/platform-tools/adb.exe -s ${id} emu avd name`, + ]); + return output.split("\r\n").map((v) => v.trim())[0]; +}; + +export const getEmulatorState = ( + props: Record +): OnlineEmulatorState => { + if (props["init.svc.bootanim"] === "stopped") return "online"; + return "booting"; +}; + +export const getEmulatorProps = async (id: string) => { + const output = await execute("cmd.exe", [ + "/c", + `%ANDROID_HOME%/platform-tools/adb.exe -s ${id} shell getprop`, + ]); + const kv = output.split("\r\n").map((v) => { + const [key, value] = v.replace(/(\[|\])/gm, "").split(": "); + return [key, value]; + }); + return Object.fromEntries(kv) as Record; +}; + +export const getEmulatorFeatures = async (id: string) => { + const output = await execute("cmd.exe", [ + "/c", + `%ANDROID_HOME%/platform-tools/adb.exe -s ${id} shell pm list features`, + ]); + return output.split("\r\n"); +}; + +export const getEmulatorType = (features: string[]): OnlineEmulatorType => { + if (features.includes("feature:android.hardware.type.television")) + return "tv"; + if (features.includes("feature:android.hardware.type.watch")) return "watch"; + return "phone"; +}; + +export const getOnlineEmulators = async () => { + const output = await execute("cmd.exe", [ + "/c", + "%ANDROID_HOME%/platform-tools/adb.exe devices -l", + ]); + const rows = output + .split("\r\n") + .map((v) => v.trim()) + .filter((v) => { + if (!v) return false; + if (v.startsWith("List of devices attached")) return false; + return true; + }); + + const emulators: Record = {}; + + for (const row of rows) { + const kv = row.split(/\s/gm).map((v, i) => { + const [key, value] = v.split(":"); + return [!value ? i : key, value || key]; + }); + const { model, product, transport_id, ...info }: Record = + Object.fromEntries(kv); + + const id = info[0]; + const name = await getEmulatorName(id); + const props = await getEmulatorProps(id); + const state = getEmulatorState(props); + const version = props["ro.build.version.release"]; + const features = await getEmulatorFeatures(id); + const type = getEmulatorType(features); + + emulators[name] = { + id, + name, + state, + model, + product, + transportId: transport_id, + props, + features, + version, + type, + }; + } + + return emulators; +}; + +export const startEmulator = async (name: string, cold = false) => { + const args: string[] = ["@" + name]; + + if (cold) args.push("-no-snapshot-load"); + + await execute("cmd.exe", [ + "/c", + `%ANDROID_HOME%/emulator/emulator.exe ` + args.join(" "), + ]); +}; + +export const stopEmulator = async (id: string) => { + await execute("cmd.exe", [ + "/c", + `%ANDROID_HOME%/platform-tools/adb.exe -s ${id} emu kill`, + ]); +}; diff --git a/src/services/execute.ts b/src/services/execute.ts new file mode 100644 index 0000000..8c67343 --- /dev/null +++ b/src/services/execute.ts @@ -0,0 +1,20 @@ +import { Command, type SpawnOptions } from "@tauri-apps/plugin-shell"; + +export const execute = async ( + base: string, + args?: string | string[], + options?: SpawnOptions & { timeout?: number; verbose?: boolean } +) => { + const cmd = Command.create(base, args, options); + cmd.stdout.on("data", (v) => { + if (options?.verbose) console.info(base, args, v); + }); + if (typeof options?.timeout === "number") { + setTimeout(() => { + cmd.emit("close", { code: 124, signal: null }); + }, options.timeout); + } + + const process = await cmd.execute(); + return process.stdout; +}; diff --git a/src/stores/modals.ts b/src/stores/modals.ts new file mode 100644 index 0000000..c349110 --- /dev/null +++ b/src/stores/modals.ts @@ -0,0 +1,11 @@ +import { create } from "zustand"; + +interface ModalsStore { + isAndroidHomeModalVisible: boolean; + setAndroidHomeModalVisible: (v: boolean) => void; +} + +export const useModalsStore = create((set) => ({ + isAndroidHomeModalVisible: false, + setAndroidHomeModalVisible: (v) => set({ isAndroidHomeModalVisible: v }), +})); diff --git a/src/types/emulator.ts b/src/types/emulator.ts new file mode 100644 index 0000000..c3cc346 --- /dev/null +++ b/src/types/emulator.ts @@ -0,0 +1,22 @@ +export type EmulatorState = "online" | "offline"; + +export interface Emulator { + name: string; + state: EmulatorState; +} + +export type OnlineEmulatorState = "online" | "booting"; +export type OnlineEmulatorType = "tv" | "phone" | "watch"; + +export interface OnlineEmulator { + id: string; + name: string; + state: OnlineEmulatorState; + model: string; + product: string; + transportId: string; + props: Record; + version: string; + features: string[]; + type: OnlineEmulatorType; +} diff --git a/src/types/guards/emulator.ts b/src/types/guards/emulator.ts new file mode 100644 index 0000000..4133917 --- /dev/null +++ b/src/types/guards/emulator.ts @@ -0,0 +1,5 @@ +import { Emulator, OnlineEmulator } from "@/types/emulator"; + +export const isOnlineEmulator = ( + emulator: Emulator | OnlineEmulator +): emulator is OnlineEmulator => emulator.state === "online"; diff --git a/src/vite-env.d.ts b/src/vite-env.d.ts new file mode 100644 index 0000000..11f02fe --- /dev/null +++ b/src/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/tailwind.config.js b/tailwind.config.js new file mode 100644 index 0000000..e0ce40b --- /dev/null +++ b/tailwind.config.js @@ -0,0 +1,70 @@ +/** @type {import('tailwindcss').Config} */ +export default { + darkMode: ["class"], + content: ["./index.html", "./src/**/*.{js,ts,jsx,tsx}"], + theme: { + extend: { + colors: { + shark: { + '50': '#f5f5f6', + '100': '#e5e6e8', + '200': '#ced0d3', + '300': '#abafb5', + '400': '#81868f', + '500': '#666b74', + '600': '#575b63', + '700': '#4b4e53', + '800': '#424448', + '900': '#3a3b3f', + '950': '#2c2d31' + }, + background: 'hsl(var(--background))', + foreground: 'hsl(var(--foreground))', + card: { + DEFAULT: 'hsl(var(--card))', + foreground: 'hsl(var(--card-foreground))' + }, + popover: { + DEFAULT: 'hsl(var(--popover))', + foreground: 'hsl(var(--popover-foreground))' + }, + primary: { + DEFAULT: 'hsl(var(--primary))', + foreground: 'hsl(var(--primary-foreground))' + }, + secondary: { + DEFAULT: 'hsl(var(--secondary))', + foreground: 'hsl(var(--secondary-foreground))' + }, + muted: { + DEFAULT: 'hsl(var(--muted))', + foreground: 'hsl(var(--muted-foreground))' + }, + accent: { + DEFAULT: 'hsl(var(--accent))', + foreground: 'hsl(var(--accent-foreground))' + }, + destructive: { + DEFAULT: 'hsl(var(--destructive))', + foreground: 'hsl(var(--destructive-foreground))' + }, + border: 'hsl(var(--border))', + input: 'hsl(var(--input))', + ring: 'hsl(var(--ring))', + chart: { + '1': 'hsl(var(--chart-1))', + '2': 'hsl(var(--chart-2))', + '3': 'hsl(var(--chart-3))', + '4': 'hsl(var(--chart-4))', + '5': 'hsl(var(--chart-5))' + } + }, + borderRadius: { + lg: 'var(--radius)', + md: 'calc(var(--radius) - 2px)', + sm: 'calc(var(--radius) - 4px)' + } + } + }, + plugins: [require("tailwindcss-animate")], +}; diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..4a83aa7 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,30 @@ +{ + "compilerOptions": { + "target": "ES2020", + "useDefineForClassFields": true, + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "module": "ESNext", + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "react-jsx", + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true, + + "baseUrl": ".", + "paths": { + "@/*": ["./src/*"] + } + }, + "include": ["src"], + "references": [{ "path": "./tsconfig.node.json" }] +} diff --git a/tsconfig.node.json b/tsconfig.node.json new file mode 100644 index 0000000..c27e738 --- /dev/null +++ b/tsconfig.node.json @@ -0,0 +1,14 @@ +{ + "compilerOptions": { + "composite": true, + "skipLibCheck": true, + "module": "ESNext", + "moduleResolution": "bundler", + "allowSyntheticDefaultImports": true, + "baseUrl": ".", + "paths": { + "@/*": ["./src/*"] + } + }, + "include": ["vite.config.ts"] +} diff --git a/vite.config.ts b/vite.config.ts new file mode 100644 index 0000000..c443564 --- /dev/null +++ b/vite.config.ts @@ -0,0 +1,39 @@ +import { defineConfig } from "vite"; +import react from "@vitejs/plugin-react"; +import path from "path"; + +// @ts-expect-error process is a nodejs global +const host = process.env.TAURI_DEV_HOST; + +// https://vitejs.dev/config/ +export default defineConfig(async () => ({ + plugins: [react()], + + // Vite options tailored for Tauri development and only applied in `tauri dev` or `tauri build` + // + // 1. prevent vite from obscuring rust errors + clearScreen: false, + // 2. tauri expects a fixed port, fail if that port is not available + server: { + port: 1420, + strictPort: true, + host: host || false, + hmr: host + ? { + protocol: "ws", + host, + port: 1421, + } + : undefined, + watch: { + // 3. tell vite to ignore watching `src-tauri` + ignored: ["**/src-tauri/**"], + }, + }, + + resolve: { + alias: { + "@": path.resolve(__dirname, "./src"), + }, + }, +}));