From 0aab3aef01b72c5842f0a3a2967f3375f61e615f Mon Sep 17 00:00:00 2001 From: Timon Schelling Date: Sat, 19 Jul 2025 19:33:32 +0000 Subject: [PATCH 01/12] Remove tauri based desktop app --- .nix/flake.nix | 21 +---- Cargo.toml | 1 - deny.toml | 4 - frontend/package.json | 2 - frontend/src-tauri/.gitignore | 5 -- frontend/src-tauri/Cargo.toml | 45 ---------- frontend/src-tauri/build.rs | 9 -- frontend/src-tauri/capabilities/desktop.json | 6 -- frontend/src-tauri/capabilities/migrated.json | 49 ---------- frontend/src-tauri/icons/128x128.png | Bin 13430 -> 0 bytes frontend/src-tauri/icons/128x128@2x.png | Bin 27279 -> 0 bytes frontend/src-tauri/icons/32x32.png | Bin 2644 -> 0 bytes .../src-tauri/icons/Square107x107Logo.png | Bin 11246 -> 0 bytes .../src-tauri/icons/Square142x142Logo.png | Bin 15025 -> 0 bytes .../src-tauri/icons/Square150x150Logo.png | Bin 15897 -> 0 bytes .../src-tauri/icons/Square284x284Logo.png | Bin 30874 -> 0 bytes frontend/src-tauri/icons/Square30x30Logo.png | Bin 2418 -> 0 bytes .../src-tauri/icons/Square310x310Logo.png | Bin 34164 -> 0 bytes frontend/src-tauri/icons/Square44x44Logo.png | Bin 4104 -> 0 bytes frontend/src-tauri/icons/Square71x71Logo.png | Bin 7196 -> 0 bytes frontend/src-tauri/icons/Square89x89Logo.png | Bin 9327 -> 0 bytes frontend/src-tauri/icons/StoreLogo.png | Bin 4793 -> 0 bytes frontend/src-tauri/icons/icon.icns | Bin 349608 -> 0 bytes frontend/src-tauri/icons/icon.ico | Bin 45456 -> 0 bytes frontend/src-tauri/icons/icon.png | Bin 35348 -> 0 bytes frontend/src-tauri/src/main.rs | 84 ------------------ frontend/src-tauri/tauri.conf.json | 59 ------------ 27 files changed, 2 insertions(+), 283 deletions(-) delete mode 100644 frontend/src-tauri/.gitignore delete mode 100644 frontend/src-tauri/Cargo.toml delete mode 100644 frontend/src-tauri/build.rs delete mode 100644 frontend/src-tauri/capabilities/desktop.json delete mode 100644 frontend/src-tauri/capabilities/migrated.json delete mode 100644 frontend/src-tauri/icons/128x128.png delete mode 100644 frontend/src-tauri/icons/128x128@2x.png delete mode 100644 frontend/src-tauri/icons/32x32.png delete mode 100644 frontend/src-tauri/icons/Square107x107Logo.png delete mode 100644 frontend/src-tauri/icons/Square142x142Logo.png delete mode 100644 frontend/src-tauri/icons/Square150x150Logo.png delete mode 100644 frontend/src-tauri/icons/Square284x284Logo.png delete mode 100644 frontend/src-tauri/icons/Square30x30Logo.png delete mode 100644 frontend/src-tauri/icons/Square310x310Logo.png delete mode 100644 frontend/src-tauri/icons/Square44x44Logo.png delete mode 100644 frontend/src-tauri/icons/Square71x71Logo.png delete mode 100644 frontend/src-tauri/icons/Square89x89Logo.png delete mode 100644 frontend/src-tauri/icons/StoreLogo.png delete mode 100644 frontend/src-tauri/icons/icon.icns delete mode 100644 frontend/src-tauri/icons/icon.ico delete mode 100644 frontend/src-tauri/icons/icon.png delete mode 100644 frontend/src-tauri/src/main.rs delete mode 100644 frontend/src-tauri/tauri.conf.json diff --git a/.nix/flake.nix b/.nix/flake.nix index fc0cb6cbe4..a3e15eedb0 100644 --- a/.nix/flake.nix +++ b/.nix/flake.nix @@ -36,7 +36,7 @@ pkgs-unstable = import nixpkgs-unstable { inherit system overlays; }; - + rustc-wasm = pkgs.rust-bin.stable.latest.default.override { targets = [ "wasm32-unknown-unknown" ]; extensions = [ "rust-src" "rust-analyzer" "clippy" "cargo" ]; @@ -49,21 +49,6 @@ vulkan-loader mesa libraw - - - # Tauri dependencies: keep in sync with https://v2.tauri.app/start/prerequisites/#system-dependencies (under the NixOS tab) - at-spi2-atk - atkmm - cairo - gdk-pixbuf - glib - gtk3 - harfbuzz - librsvg - libsoup_3 - pango - webkitgtk_4_1 - openssl ]; # Development tools that don't need to be in LD_LIBRARY_PATH @@ -88,12 +73,11 @@ cargo-watch cargo-nextest cargo-expand - + # Profiling tools gnuplot samply cargo-flamegraph - ]; in { @@ -104,7 +88,6 @@ LD_LIBRARY_PATH = pkgs.lib.makeLibraryPath buildInputs; GIO_MODULE_DIR="${pkgs.glib-networking}/lib/gio/modules/"; XDG_DATA_DIRS="${pkgs.gsettings-desktop-schemas}/share/gsettings-schemas/${pkgs.gsettings-desktop-schemas.name}:${pkgs.gtk3}/share/gsettings-schemas/${pkgs.gtk3.name}:$XDG_DATA_DIRS"; - shellHook = '' alias cargo='mold --run cargo' diff --git a/Cargo.toml b/Cargo.toml index 2f21fd39ad..526fcc9330 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -3,7 +3,6 @@ members = [ "editor", "proc-macros", "frontend/wasm", - "frontend/src-tauri", "node-graph/gapplication-io", "node-graph/gbrush", "node-graph/gcore", diff --git a/deny.toml b/deny.toml index 610902ac35..3dfa941551 100644 --- a/deny.toml +++ b/deny.toml @@ -28,10 +28,6 @@ targets = [ #{ triple = "wasm32-unknown-unknown", features = ["atomics"] }, ] -# Tauri produces too many nonsense warnings. -exclude = ["tauri", "tauri-build"] - - # This section is considered when running `cargo deny check advisories` # More documentation for the advisories section can be found here: # https://embarkstudios.github.io/cargo-deny/checks/advisories/cfg.html diff --git a/frontend/package.json b/frontend/package.json index ea18e0fba9..07fc0460b0 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -19,8 +19,6 @@ "lint-fix": "eslint . --fix && tsc --noEmit", "---------- INTERNAL ----------": "", "setup": "node package-installer.js", - "tauri:dev": "vite", - "tauri:build": "wasm-pack build ./wasm --target=web --features=tauri", "wasm:build-dev": "wasm-pack build ./wasm --dev --target=web", "wasm:build-profiling": "wasm-pack build ./wasm --profiling --target=web", "wasm:build-production": "wasm-pack build ./wasm --release --target=web", diff --git a/frontend/src-tauri/.gitignore b/frontend/src-tauri/.gitignore deleted file mode 100644 index 3419525157..0000000000 --- a/frontend/src-tauri/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -# Generated by Cargo -# will have compiled files and executables -/target/ -# Generated by tauri -gen/ diff --git a/frontend/src-tauri/Cargo.toml b/frontend/src-tauri/Cargo.toml deleted file mode 100644 index c2095e3d87..0000000000 --- a/frontend/src-tauri/Cargo.toml +++ /dev/null @@ -1,45 +0,0 @@ -[package] -name = "graphite-desktop" -version = "0.1.0" -description = "Graphite Desktop" -authors = ["Graphite Authors "] -license = "Apache-2.0" -repository = "" -default-run = "graphite-desktop" -edition = "2021" -rust-version = "1.79" - -[features] -# By default Tauri runs in production mode when `tauri dev` runs it is executed with `cargo run --no-default-features` if `devPath` is an URL -default = ["custom-protocol", "gpu"] -# This feature is used for production builds where `devPath` points to the filesystem -# DO NOT remove this -custom-protocol = ["tauri/custom-protocol"] -gpu = ["graphite-editor/gpu"] - -[dependencies] -# Local dependencies -graphite-editor = { path = "../../editor", features = [ - "gpu", - "ron", - "vello", - "decouple-execution", -] } - -# Workspace dependencies -axum = { workspace = true } -chrono = { workspace = true } -tokio = { workspace = true } -ron = { workspace = true } -log = { workspace = true } -fern = { workspace = true } -futures = { workspace = true } - -# Required dependencies -tauri = { version = "2", features = ["devtools", "wry"] } -tauri-plugin-shell = "2" -tauri-plugin-http = "2" - -[build-dependencies] -# Required dependencies -tauri-build = { version = "2", features = [] } diff --git a/frontend/src-tauri/build.rs b/frontend/src-tauri/build.rs deleted file mode 100644 index 59fdfbea60..0000000000 --- a/frontend/src-tauri/build.rs +++ /dev/null @@ -1,9 +0,0 @@ -use std::fs; -use std::path::PathBuf; - -fn main() { - // Directory required for compilation, but not tracked by git if empty. - let dist_dir: PathBuf = ["..", "dist"].iter().collect(); - fs::create_dir_all(dist_dir).unwrap(); - tauri_build::build() -} diff --git a/frontend/src-tauri/capabilities/desktop.json b/frontend/src-tauri/capabilities/desktop.json deleted file mode 100644 index 938d5a3367..0000000000 --- a/frontend/src-tauri/capabilities/desktop.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "identifier": "desktop-capability", - "platforms": ["macOS", "windows", "linux"], - "windows": ["main"], - "permissions": ["http:default"] -} diff --git a/frontend/src-tauri/capabilities/migrated.json b/frontend/src-tauri/capabilities/migrated.json deleted file mode 100644 index 4e47d1a91a..0000000000 --- a/frontend/src-tauri/capabilities/migrated.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "identifier": "migrated", - "description": "permissions that were migrated from v1", - "local": true, - "windows": ["main"], - "permissions": [ - "core:default", - "core:window:allow-create", - "core:window:allow-center", - "core:window:allow-request-user-attention", - "core:window:allow-set-resizable", - "core:window:allow-set-maximizable", - "core:window:allow-set-minimizable", - "core:window:allow-set-closable", - "core:window:allow-set-title", - "core:window:allow-maximize", - "core:window:allow-unmaximize", - "core:window:allow-minimize", - "core:window:allow-unminimize", - "core:window:allow-show", - "core:window:allow-hide", - "core:window:allow-close", - "core:window:allow-set-decorations", - "core:window:allow-set-always-on-top", - "core:window:allow-set-content-protected", - "core:window:allow-set-size", - "core:window:allow-set-min-size", - "core:window:allow-set-max-size", - "core:window:allow-set-position", - "core:window:allow-set-fullscreen", - "core:window:allow-set-focus", - "core:window:allow-set-icon", - "core:window:allow-set-skip-taskbar", - "core:window:allow-set-cursor-grab", - "core:window:allow-set-cursor-visible", - "core:window:allow-set-cursor-icon", - "core:window:allow-set-cursor-position", - "core:window:allow-set-ignore-cursor-events", - "core:window:allow-start-dragging", - "core:webview:allow-print", - "shell:allow-execute", - "shell:allow-open", - "http:default", - "core:app:allow-app-show", - "core:app:allow-app-hide", - "shell:default", - "http:default" - ] -} diff --git a/frontend/src-tauri/icons/128x128.png b/frontend/src-tauri/icons/128x128.png deleted file mode 100644 index f7bd3fdad736e8b9d7624bea0f0e7405a336906f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13430 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 Y04f57>O5Yx8UO$Q07*qoM6N<$g7Ee%wg3PC diff --git a/frontend/src-tauri/icons/128x128@2x.png b/frontend/src-tauri/icons/128x128@2x.png deleted file mode 100644 index 56b991cd81d6abfcf7b781a1d1279f6cf85fec3f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27279 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%0D9w5_# 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 uu_zjMoWb?;cN=10El+_<0UG*jnoA diff --git a/frontend/src-tauri/icons/32x32.png b/frontend/src-tauri/icons/32x32.png deleted file mode 100644 index 53d1df4aebcc8602514690c384845130912d3718..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2644 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 YKb(s4tm9I7DgXcg07*qoM6N<$g0@Y;ivR!s diff --git a/frontend/src-tauri/icons/Square142x142Logo.png b/frontend/src-tauri/icons/Square142x142Logo.png deleted file mode 100644 index 5d4be439c8c52d7ce0541994408b8a40bdbaac42..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15025 zcmV;iI!?ujP)te@ttY*2WTb6B65+zC`#U@sf07&%S7T8{9?!7lNz!F?wXBWFm%I19Ea+izU zotgjt_kZp8-unx1861Kj7-d;b(CbpKx3#vS;-M0k>!UWSwGH3*;oHW`;X3nt$avqg ziA17jdUkg2=;Y)x{iCC=OOix?GYSAn89#HmUc7J_T!0ZrC*gIu%3B*6zEbY>e%4?x z*pfJa2%5`dlnOin22tea*-+@M?ty{7>>VC{Q(aI790Tccz3xkSkR(a0Y;3%JWqtiq zI8dHMGD(0*;%h;@zDo}70w0pBtPsSHC>Rk$qf=8~KYZ%cpTrZ1%N9K1r3TIF=H^FM zH8%b@o=jR%Ovh=U=<#a;8af2^o&`iuk`|8J;n-g0^|lX=^4jfuN zI0BN_YPD}#y?S>{k~{<&xU|ymvceBZAe1~3+I`zl3LTvE`_HJ0>atN;hD$Ik43Org zroRG{sU8iQ_!ZDxJW42fAci(hOHIxHbel{fd7YP&$|~xFsfJ#%(&t;%-qiF28h@$w z%$4K9gT^XhHk->$CR1o=Vq)**Bz1}^ad0366F#@s*Z*Tu0d3+6Xcj*ZC?ZLn%8H7= z@Oiz}EOnHH_Ui*2b+sfLYHB{}@p$e<15i@m%jQQ4^e`0fk=;5GaJ7+GcD6M(ennk; zmj!TyBA!RKS}btG)mI-i8I2oAWr0prDdT_(7|IZ&I6mj!xu7r!|7;;gL;HOL%3RS5 ztZ{VS3&nYG%!Fed9b5Z`hxd~tQpfL-9YqP{t2dfxsjK^ayVbe@-S31xX~TE}F&+TP z=zyrJ79`O^%MkK4%M^PvS!`f12vG1qHO{p#GXjR$VUSH$1weXYdl=$D?@DZ~um9S> z$jDCVG6<;`T;h;#Nh`+dcKf!jUw;-~mMY6FlbRIxV}g`~sm7aNx?vZ@>=pQ}d`fBo zq+|j-<<;P;ssW6>vF0iqaParT(;#-e3C4H62|{2Dz+}?}9+EI-^sYL3dLB8`)AM91 zzjrB)f_qh(C$PS?^{Xz2V^=bnBx$4TyriCnHhdn&+U^6%WT$D)`%F^6Efx-f&FKZB z*#rgGSr#iAdhH;!+y>(Ly&!}pa28CEDZWS7iIH^y7vQF`(a~>46N%WRbk7S498DKj zmz7s1gVHZ(K_EywDPd+;91s_V(`?O{P}WofI>m4GhT` zL_AF}bk*m;ASG1Rs&JD@mlThN!EAMa#b!l}%7r^0{jLGo@OT2GvI6>iMh2Sw5p{(Nt5Mu#+U4(JL2{RygX2yq6Z6$~-f`T8UvLYyKHaq~y+G_w}K{ZI2 zX?O*h65UocHh#^BK))3EI(e5k8Xr~Sc2}=%ZvGM8pjnSWe9=4_%wP_UqPns{pkf1v z$%w8&UEV|*&`6FWL?v)|JcXA!bf8+6EqGtfY7kGotOf@&E)wRkEM_y2!~^5g(}#;~ zDCd7B)Q~vp;IH5ccB-+4tVf?*@ublPrRRSRmf3y|{1rSxM^Z-=AviS-kzfeT5G4Rv z*cm{n6UBR7xfPOaA4Lf?!|&-?pyZ`C)zuBoWFZbfbF zH}J+}y)m1#^N0gzjLx8E6@%I8E&N^jCHFiq2yx`9LMVB}WVC4R zxdEk*&E-V(rGTk$Csf^YCz80L6O3nmuJTxNrm-jYJc;i4>R3E}042}aVyG-bo^F}} zh^YUsNW?X&266tR8N25uDC>NY=?8Mvi{hS(MwpoxfmkHQ?0LZtcF$!m{5aU70V6du}pSMHMezBtij6|!`i>9GMdi%%%ZIjLYMe*G6fwqr;j z83#QATs09&*0i?%4Ubm=(@d8waVX?{)tWWW;KbL0jsz_YG%YQS@V9^Y2WSr_Veh^} zV8hicXEX#g_q-Rv-W3ovO#ytN4CTIwW}Z$is({V+R7_O z_nbf@7bEGP+;hA(|JV>Neu;y11wZh70y>ZJO`ip+d=#^zBJ*UNp^YS$e4uV{u zG}D|Uj+zcCIWg3|e&xz%k&klfalb_zj6fg+H*VhopLysWm<8{$~btE(E_DiFM}yG4w69^F}SQlR^9X2$x(=fqeW!TWk{~Q6_P8q14L#y zk4MkK#+VMY)Yt!`&1y9kg2&2Q;%M%7x!2pivZ?8DR5yYi_nXA#>}&w;yZ3gu?baPA zdBO}5nr;zSaYI85ys>9Ls;{K3mq zMw`xf>P5YhRY@~7naT}<5JoTS?R-m}TvQb*UqRlqX3e*eTWi;o4yw4`F{nZh>JR_Z z=SUHQmMG4D!_`q!UBS}l;Njz7v)ObS$|kV+yCGD*7Gn0Y;_z4k8OmX>*qmUtT8qYG zQJSe?W&*_igZk4<(NHdNxwei^Pk%2Qjr#NHo*S~e2c;Uby{hVVx6^r7QfE3S70^ec zad_x~JD|MO2l05~0{5Hj2QrR7dG~E7d1@gNjp}sI4PZ!wk;i%tiq}p@ImdKS(@b%# zqA?KP_B$ZCDiKIA-D#%y>|E2*@^_%{Sa~x9vynJl=!D`AHmqL#EW)-zMQ=v;I}{4T zRqNZ}3!ncqMAC%sm5_N7yy$*fEoRuW_dT#!%sQnGy2vwq5cSk^f_u@@Orz+Y<5*aW znP%#CV0_02#?IZ@q?yX-o?nB^`Kz9!p{#tD)iR`Ajp_R~V-n#BPV94B77=qlU8SGl&gn5C`Fwo3~?>_!Dfy zECmJv8A+PTiZXcp&3API2iVrJ1V=ht?(yLj%o4X4aj3F4`r zqS34`%@p191hVH%xY#=<{QhJ4FqCzTuBIDTuUPT7c+wI*>7azGc%0Oa2R{Aao%lMQ z(QeVy+QzHbqU5=rC6Ipi+zO@VUO@m2aT-Q(*mDsAQ)3XtYc5)vX+(l#+YU&sycq+8 zv%1qv$pLAqt^Iqa-EPZ=d#;C!WIn30wDcMjci+-mjY;lz00VrV{?whYYv;C%(q`e& z)Km{|zI}jsEIr>N?#dMPBZv}8nrX6#X{K5gs9eM}Q(r5(=P&8a!`9sM5)86R!xIy) zFIVd5QB{angS>Ign(rG8h82`koGBetU@s~LjToEx^6&i?s7;@Bc}j|;ibG{(IlJ)t z-+Le3b8B|)xvw2!j;bQL=OV& zW1a1Xn6nxp-d0puMNBhAN}{M~rc?zg*uZ#(sz7bJt3c5`Ul)zV_Ds*tp3BueH)H}; zTSLPiBOleOHyxDJlG$uR_xo;C#fF^Q>a%-}0NlC#I@q#lgKis1xS$Gjrnpt06I2Bn zFJhW0Re^pIl64yaqWY^q$xdBSSNC-_%`_)FM_deP#0O|7>q+g$cG7EN9+h~0-k81KS}vITUshNDzL zp~UIj8Vm%UnaQ#W)Ue>kI32XPq2aSeyZr`PcRDDGK2FebIP9FTmCr*7CWhb>AG--w zx3xfsJvAMZp;m!XnrSg&I()EtHn7x5CZytYyRaI-{Kmh6;oRG3^EmZ&GF2l&adgR> znwq|rt$Qw}B9JU>7tZ{KRjZ!EV3Av|`%T`@4O=(DqmO(Nf*5`m4f!`j$y*~(dOdD< zYX5GrjeN)@O!KZt=r-J6XV7J{g?uI|4X1feb)_uGyUQ<64H8hT-D2?i*7Y}X?|Z`gJ% zzt-iR%QAaerJXNv#-LP$D$uz!(?V8(GT~_iW5+=-{o*SilcdQ3oNNkEyOf%muVSoB z(A$gMJr@rR81(?Nr9&z-lj8d=Q!rhz2kKohOK&SeGC_voDUb=C0t zo_BS}h~}$6jS%1}(CCM|3Y4ooMKB=2YX0%>fk2UC(UfcdAU2fId#*4mF}I>3)q}bV;;A(V8^*Cm@VuuYuU}yqr^3Ku_3tfsh|fRzAZ$i@Azk8? zmS5A~KLr2$jqk$K&%6lx4je_WRd7&GPpU|2yNm9xR%FY(criHZ<4 z7Yt)I>l&)6{+x=rG6jPaX%mH2E1Tg<|KT&7Y@QA@>R@-j)aM1GQG~bOISAIQ+;ge|ZGxz~p?FoGoMxJbDp2YVWW@#0 zeH_d``)d?Aj%7)j1xFGkq(P2Ex`w8v-co_H=#LxJ2W=qQs!m`=_>#(qVQhsapX#KN zY20s`NQ$={K5`PeyZfN5w1f-p2rSdnGw}Ti+bYoK zz<_o^F{?ml#s|^&P3BMqDl00En@ZvJ#*l^~52^r7rbv=IU9Pq2{4F^#hLjsD%VI3p z<)#R+w3Ni)K&q@JJSqE#Q!vlva&VH?frIa}i>>ABWP6jO20!!gJzPbh3xM2^(hBy; z4)FH9$##!Wgxz}#s??!YxQy?)Yt=v@DL{}?9-1Vfv8Cc^raMnTi&@q-~ zi(OC3G%{Gsp)oEY9$Nn>81XvgBBYthi8xH7)G2RnLO=*ysUSoHAcQ7C2u|Q*oV_G| z;QxW%3r~YUjk99`1`)S+(~&}>*@7Oo4Hs2ZFTz1En?3k&;+F%UZ5Wp35LGEaM5a(% zQSl|(P)ksxPeucoY?WO%UN;xTU8u6y7Q#tc+1dn0-#-PzBjcQ_qfIR7{&VMgVaN6@ z3?u?nwuUl!X4Tb|Ot2DovPmM zje4R19J}io9Q=Ri$OP0B;k4f}Xhu*l9R2{kqf@HdkTZ#1tJMtW&iBEKFYjK`PNDb7 zNdC;jch3)?`Wuu;G&nR0Km5s0@iW#OV>?P%;9itkjg57v9a=4T)bp9aA{ptLWcWHa=TWIF~5ZOQ{IE|e~Ir36OHXknX1&M+Pr>q7OvqP`5i z@X&TB@z_-7!H3X~?9q{L5Nc$Hmj z+HW)6O4qooty`{v9XD)NY!TI_NpklJJN)!#Z@}p@T^uCL7CahzUQ*(Lhjo_WD5E6t z=4r0s!{8n|plqa8pe+$N0EyDSwCfdc5AKJAqg)BvEd<3v<5<@A?bL0jpoT#+02lQa zAKrn_CYCg2lc?8wB`i>OM0tt?S`;`uhxAYH@bEX0?3%(aXG|s2vhyYfy8+HspoU9h@7he-L(xiUcHWqR^3&gxY|kT7%(_kh$>LtTEOH0 z$M{JoKl5Y7lbZuZ{<%G}`F``>tJ` zY+z*M?^T;6qtqb-nSk)iH{OB6M^B;zvZYm7l1q=gxYQl(}oJaGF)2t|~Hc>;@#fMYY`V$?|pK9n*AZVm>{r!KcN}Y^nQ(S8s97eC{wb$QKBgs-)fRQayiVZxD&k zGiT4kORv0+#&-H>w4MQ^-+lOjJGnjF!geZ4Nd-!|pwtUaGtC1Tsn|6xCRRQDdmw=} zP9cJgf-v6<^|N(%pnz_zD;;3x}(Sy8cjaPYz`(GsHYe%8Ns^2t z+9&V1O?N{|%?|PQzYX?@)4bi$ve;&I%Ou-WCsdyP0ZK7jPGA%O=9*8D1i9dmvLO7k zVc2!uD%j9o3!(6Q{ttIM!~1tTwG`IO=Va4Cl{iZYj&#ZD{N>K>?msap7nd>fiQRMb zs(R78`pNUJE^6y&pC#&^+MaMLw-ooBjJUD!NqG84FClPpO}!A=hPo4Nsgs|s{3&6KJ@9aRwVt<0$klqn6AUX>>v2hY%ZD9M}|-Fyz|$rMYA zafc7ZkOhvkdr(?bmb#!B?U&UpRj_ewgA&+733Ce?!XMkQh7DpH8o(5lPaP}zO>)Q2 z_m9KzvxB;VfGD8_3~2;V>->wXYQc1$GcIx?%y69Q>-(GQeZEKVV#*;ywF3u6(VLl> z4WNVC1Ym ze(QShVLZz1w1C%bXWPVqi;6rWlhL5G^A+YLH`6zy7L&3Hn)LHRs!C`2s-RTjnoDgq zn>`o`1s97`FI78kjK*RiqtQ59;q%>*&>?lSXmHp0UT9mn0-BrZx#L7SsYAf2szmY= zK|?ILMipquU)`woC`FX28X`I5?P_tR+L|hE(xm%)oMt-4L?~B*qN?HbLgmb8M9cU- z{f(p(_u=6jX4OtZ*PilyY7hTkwT>(EHM2()li;Bns^Gp|E1{*W6>2J6;PW`x8#1a3 zDuL*Vp)}GSB$-IEYU+G3(9mL@@`sRiI1eTY?q(i0flP_v@$qkkqtV&LN@m0*Wj7wP zq0qtVii*1t?bLEVDlDR}?*2ReDI`6^IqgG*ajbGRTG15A~8(R*FOYh zWj@%jzCCR|GRJ>#6?xoFRwI<3V@a_^$SxTk9>rB>gUy>Zpw!8&>je#d%Zf&LYwvp; zq1KaTO572pnVQ0rV2(`iK3PN;_|E^F)sPEq7w7nC3>+eP80ZIcaDluWSH{%e=rja z_T(aQG^r!v4|J9LeCyD2S}Q4=Xl341Kx4j7pG~Yy5S^&I?r`8 z&y{kvR ze$A3Vtpbft4TG$&20SxBC7Hb`GO{IoO%V7~DM7%rUod3;6&fAEI5suaH9j)(b)#+` zOJ%-aU7GpUsDi6drQLSR_6sukG%jrSoBKG~-LXV`Xvrl+sU3KJ;<2(S8kFS}VC08} zAiE}rcFmTRUbtmL8NN>Pdnp3~Qal22|0q|2F891NERu<=qbtR!Agw_X2w`;!7{ItB{xc4m&2+*dW_$3+U;8O zICtP^?0Fy@4t4eS|G7zLqh$_Xqv8AR{v+`AyNfg5T5(@(Z53}45>9CNyQCE-|AsNYSW0hk4Hxw`NCz`(zUBawG-74yChI=;Dp`A%<-lPwYq2H}p|Z-TZ} z%?O@(PmIIh7*T%unU~nLHkq<7t5K>zm0GYnZoipn30)pmo(_X**W9tG0@gRWAQ)Y0 zmmEdvB!iQX4EYt6wG8kO5ApNSe*(~AEsCeK@L@zxCWN-k zh9)!fcw}d-A~*D9adKK|G7^A9 zU}9N@GK~`fM~On~877uGUfTI^u@B|4(HY+rMU?BRs(x3NB#WM^2+GQvMAw?)DiqsU zj7H!vIZ88<2(P0zl?pH;yVgPOkg@B=tvS`6D*>@MtZZq5V<*nQz|e?J67=GOKtk~s zBl1X2s}agvW@s$8K})3rR@XUECAnEGt!;3@ZP%1TZK(~S2}vJYKPLeMHj+h0iK?=) zKbX4Cdg?+ROXb2=wl+gcb3H_3*{d7PJuk<=;O;l}xOdt ze<^Hh^TB3xwXZ_8MBrIj?S!^kCwS~emPm$dRU=g>B$RP7Iy~HTAX~2PP(#j&x!OT*IJULCDKd3iwC@EmT#3aDqXTlR1^* zo+qOrU7LO^yxJt&EGAC9&{8%stu3BpNh(XZBXF2KkCWa37_2NUeK4tPR-c(Y z*THcd=*j-FQYAcDqZJ_ z<@lqVpMyVqvZkV9yV+=Lm36S^+A7M#e9ze;sFH};9vU9Ipah4+Zx?f6o91$Da;XBP zeL^X2^xi>zn~kI%W}{+k9yvb)g9sv`54;W&Ubi&I6XolmH7UoD$1>YNwAi!avFIAf z#(eL14~$L(lqwJ%z=_0SdqyWG52ykmZ@|%7z{#jePE=P^d_hVk4SFU|W4>vkwk*MX zYqm&fsh2yer^bMYyP`A%3TkcNc5O~MJ4#eK!QiB1uc_%7&R@}cC`2V?*@@6I7J?(^ z{7~vPLsNyFqr#G$@1~J>xA7<#oj%CMJ*P3EwA}Yk_e1Z{6pp``NoX-}CTC`jAl0-x z@4!*Vj?zpAtDMeCo5Qi0wp`4dW~wmXlxDhZ%hgH5gVIn_A?XM4uxGiu4Fk9Iom%z{vs3rICJhfg6BYORn_m{ zYprLhurzQ)@cUTZK}mr*{xeeb9k4 zi6iR(qtY`-3HF`p3&7dIAW9yanliC?mR{E5P4*7E=UxPmQTMeGSh{-0;bg}UF1V$E zL*W(HCW6q{Gd%n>DE*I@?T%k`UF@F6Vgakk6!m$%A4}>@GetwW3#HDQ)hnT~zJ@0- zt<TBX7l+PUYzZ4*`+9ycKAW-?)7X zdT!J3!I>^L=0#D=UiyGyI0umAJaBf3^Ksg1U0m)GUxwkVNFB6w%rUl0P7@^dq*=hSSQlFO+)WGNntjOBAEr3gHY4Yly) z-~TOi+v{>}M!E1%x;;pIK5Bq@?KSJU16gn10E1^ahV#gDl-+i_MTFKWJ19B6Ie?vc ztQb=gM!S1a_gve{g`^wVIDVbcW0TP+V1V~WQ!_K?3o3Ec$>kppp`lz`S@}79!ws3N zH<)L>sS@<2C75q5HKJ|R3f|P7dJt0U6e3L{IdWG^+zUS_vRqM73ODak4ESRwKj3Gx zDR;w}sEI>e)9ih<)i}XrGjhx)C)+FuICjtD@vy~Y@|SwOcV^?BpF7vbc1%li!=lW$78s-yR*%QUk|Ca^yL-M4?o+G+ z`G##9p|!b@?X2kr2F(hI3Vk1?tOkFr0~s!00zg8>6#iQCo-9 z6lGB!In@V!!_#Vew+z6+=y4zrcx&A6-@h<=T&UbhzIqgKhiWS-?m)YPHV)0`p3}7v zZ%R2bw7QpCeVQSwMVt$|UGv=eWVXLrS{mWT8#Z%ijWcJ@Ez5AW;snlyld%8nG=hc< zXD67@79s%YHJs-RWvc_ZENfcuu*5+%dAf5LI(x@5#&T#5alsfcsCsx{Y;1S2fWuXw z63KH(>O}Ya(PTDNpu~KaWM;m#YR6(7TAvyM4<*o(;Y=H^y?+c1XS~j38P53ICwgb0 zYd8qal@2KPm^tZ-O<+9^5Oo$qduO40u7xZpwSvIXg`hc!;L$@nkgA#q20Kt)y-;Z5 zc;SK)F(`Ph!slCUw_4ZhbuxaR6L_*lzKJ>^6b zcyhf~GMp(`_+IBUIISYIV8odxU5}S2DD_xW1!}N5=e9~9fKay!3xdY&u)@%|9}b|M zW6lg5*+4nw$>d=F$jFnhphUHxY5p2Yqw)A5bkDztz%l7_&y{YbhV2Pc4jY_khBK+GgPneun2keQof8}uePk)Q=alS4 zwdW3plF(1~%=>5h;oym0ID+hWC-PMz<1-mE3DkKqpwlvm!1?yVvZg}Uhp>Ad4234$ z4u{$6a_!8k*{Z#|=7cyiAGoE@0u&ycFpqzg0avaGAEn~Gs7l^NfA)3B?+I zk~&n-*Vf$p$jbWq$1#MRQ1g^C9(2=6@tgrl&|oHx>T*7a7}aQ#kzQMF~Xt%z~;e70?*jt^d|9dLbN3a&VEsoO|s#7x1E_kGyx{MEmIEWRIG- zClw7ia~Lofq#HMG++(v^cW^{mr>fL;grO+0T%fl3`8+h1pQKH`4sKR};BjN1@WC6Z z;rezT^Il~8I8f4@9SFidzjU5~LOfV5jW^REhi$ce$B$n-F+F`a6*&33vkV7!w8T}| z)!+Ze8&<8_ho+7}Z`RQOB4xIHv?|7J1Spk9+TA9pVR8{*@qsK*E?W7;cC>{<3hWf_F zzG9x=H^^w`)tIeFsb`SZ8gEEY+P^~5i;fh#UxP;FD}M0I&D{Wu77Wk?n3>$z(xnme8b zJS1U^oqc_~qlv`E_Qu9%EN1hn7?qP%L-u3u%tS)S{7g$qYCa=;-@`S)tSLmG!m z7Jr~fF>zE5o6UzLwJ8)1$F=D3r4EWn>dt&agJWZlna$?7$7WlD(MlIp5^{qp1639O ziXPN^f_mZ^jRsMc!!xt9-#vcz?EUz9#O?Log7yUk+~TSmd-v07b~RaLipJ)VzP&F0mzB$eU^E^nS8mxCIO3xYoqi*-%S%wT2cXz|d^@#PQSN^bSh4?eiI ze{^(?cDUT)_mYy-$Ae=~4S-+Whq5RLETS45)r?|E-O@YOH#+(psm3{FfuHyaFgYSj*x-AYyml%!4q=0)YN>Vqp|WW}437OZrIj*(^Y^tp3S zym#u<8gv}qM$*xw+SA2q)XdlA6od=9bA5Oi!(Y#X_Ya_b;Dh1tWZ&@cchJKTO5E;U z$>JH#k^yN4G>qRFnwWT3qaCggj2{N{r~pADSvY+9^k2V!_Uul4yVs~lACf!;%{3tr z6PM)+b_TuzoDUCplB#|)p=-S7onyz=_yd6_(QqY)!XOtg@~$?AsM223aYa>q_zp?k z_A-j9>nCWq_LO`9{$7CsD%yg&c>^mK%<==W02sS?J#ck0mi_-iP6-YPFC zxdm02S1o{CHs43_CZvPp(TR!2BGG7AD0UR`($1~=Lb!-(5f*+X-HL;GX859KSz)#p z{raMR)85bY_r)(vyFLn>8j;sCbq@~i_J>02*0;3$tJ~qYU)}bA3FX{JkGpI;@H~`z zJPCzO0m|>hr<9opi#)5DP4gRbsm!xf;41@%)oM`VDU{MEg0di$|6lm5NqEhGHDDxI zu$j#Um%|~-YPB7bz6p$*$f{wgT|e0^@wta$2uH%vXk@WX+t#+WexbRh=9|QDXH!*@ zX5q-_`V0GyAK#2>@gUvnrII+p0yJDCPSsVeh2T^7+miLHLOQ6*(nzH>%EVdlH_SGx z)oim^?D(46>e}%VY$($09+%5*F`1nBK5ezb4{8sLy4_ada#``U71BKL`&K*t<|4pZ z2pUlX49q73oJjcLB+_KMXmU{uyD_%l!Pj0KWRJt)@Z!q%APBs8N;kgm!6>T}L-ZtKsb8!e zziY?;TXB-e`(Qo{=62s*d@Pshc`U1czu;D~EQ_J<|tT;aIR?PW;Tl%ZrO!5gPZFGulRiUU$%x7mCI3jB)KYPGtN3AB+Epr7FSZMA2O zFfW!anh^P7vCDmv7tVdk>vT7kvKAJujkL>GcUz>3z>*%Di~dbg`aLTPavpp{n)*bW zZA*j0v4uW^KLOZlFJ!XMjZvb z8mg*(0}bK3&_h~JyT#y1t$DvY)lSNEs4nSZf$-FjfV^PvGJ#FB_@<2_wRi%Gx^j(_id^mDHEAcp{NJbyhTL-s(3#NqHlcTBLbsCMx2S)&sO2)$ z8`ey(@mwa_CmWRDmNDfaYLl-uXIc!P3rAW=1+E}m^!Wvm?2DzWN>HYZb0I+{FOVeK z|4D+d6fvZ1EKB|TqS0t)EEqg65skiu(dE4}fxs!%keif)ZF% z{-#8k`EL%poxa0CNBj=$ux3LL+Az#uhDE$V4Om)KS$l5|Wb@JLR6q%ffMM>noXW+` zhbiXvLDl*}vouk^h-O6$rAI$f5gn+4j?4xEhx~!SaeQhfzry8D8A600000NkvXX Hu0mjfZJ!DO diff --git a/frontend/src-tauri/icons/Square150x150Logo.png b/frontend/src-tauri/icons/Square150x150Logo.png deleted file mode 100644 index d1f9dbc536ae8933197e2e22e767e1b5e32ca5ad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15897 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 diff --git a/frontend/src-tauri/icons/Square284x284Logo.png b/frontend/src-tauri/icons/Square284x284Logo.png deleted file mode 100644 index e4bbc7a36ed8c2ef8f3d569bab2541837edcf892..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30874 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 diff --git a/frontend/src-tauri/icons/Square30x30Logo.png b/frontend/src-tauri/icons/Square30x30Logo.png deleted file mode 100644 index cc7bb9c9cad694fbd016a54ebc8428e281404f6a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2418 zcmV-&361uNP)Vp{=he;4uk-E9GBDfrd6sN=5~7|acf{g88&+c*0#O0BS#q=jc$9#I zzyHXLhO0L>*493MZ))o2OHnMfC6RvJ|%M=`25(_D4)twN{JOsM{ z!O|g^1sK{q{AvYV&H*!Mn1lqKE)rW0Y3OfoGIJ~(j&_a5r{Az_JO6NW#gdSd716h; zz5SHHSkN>KIFg6?v@sL{F=Wfz$SAEb0ZbIZpHniShC;9%1}2C+@o;=}f2EuW{qGvy zKsZDP%X5juU&%3<+gLIzlz59(jg8+AsA?>e%^6?&>N7%ptQvU=P}R^WNaVT059j%$ zj0j{jJs*djrw9l|XXrW0QyMzyjb_$m0fmXEvqD4{T?-QSF(#uC?`O$nRfknwI&UmtPPo=&+{7I`sDsU~GCG z;p_y`WY|=~VD=(Am>@vUWud4cc)Uu{IGt@;uq&$|Cg%hU_gJB_>h@$h)sxBP28+?P zxwmFzG`g>@s_O9lg{1xTQ#+;3b?r!{H7JS)&mQ>#uixZE)TfJAccBc5QJF3uiCG^{0*VJJnFum&F0Xu zq5%^VQ@AmB57ELjGLaS(g7q%CxgqYgQOHA*6?jz@j%603NuEmzq+9O^PI}r@{h=Du zG!_!+^abv96-i4}qk-+@Xn}NT~#S=-QA6RO2b=kzl(zh zcDtU3f_?=2K74rYG6J^df+^Xs)6J(Xc~RTmh?8&>2my>PBSWQ-^Sz2JSC>{Nhm)F;KH~TJ+Nvwc*AEO0o2@O4!q%PJFg7xd zGiNX0(7}DkT9uo z-wsew!N~9kbko75p(M1th4%UY6pw^lMuW#6Mnz>57q1OFlQT)uQYSGsJ$+OxZ9q8C zh}Q|Ck5FGzy?1nM(j-8LYgVtMqOZC}3RDIQ1)b87rt)i}d)r0?C5lhb9SRCZp~pH#QxAgFULl%up~Ok}6Z~9^B6B zG9P}wO0-Ku*9}Obz_PlqU%$oA@Pi^k# z_!Aco%X(yoy4?KPgj(ueT%qCLdDcvdMka5ViY!VVN#yHXa~S>2{j;}s9eZTYTkJL? z!Qci?v0|s5SiiDe71z83w?dv?9p~zs7Z7? z9slQtBA`6c+IpUCrJ&-2N>^0%dRO@fSoFP;{*@`GQAQ&o ziei`y1jR)oDjnt}`wGn-dRJa_h}46FZt*-*%Vztj8r_k6zDn*GodXY@>2jQQ*kr8X ziB+q9O1IlX27MeTCH!74`c4U=myun9@TGNDe3vfiu5oB_;N4Fq|J*k?_}ucTw80k+ z1U8XJp`!cz2!T_Jgx*Wfy)^syK3enB9N;tGPhLb7kEfPKjDA;eaB}pTrnx}gj!~00 kKpK6SjGm>MaGl%x56%fuk$>Q&X8-^I07*qoM6N<$g5W)}y8r+H diff --git a/frontend/src-tauri/icons/Square310x310Logo.png b/frontend/src-tauri/icons/Square310x310Logo.png deleted file mode 100644 index d4dd3fcae38cb674667662aba8df2a2c76efb947..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34164 zcmW)mV|ZMB6UJlPc4K2>Cz~{lZQE+Bjhduk+t{|%*l29qw)yV!e%LSPy7rvi|CyQl zp5IKQvZ4$s5)l#v1O)0=St(Tr2uQ$x9|Sn?mDBdlQV57J!LL%{>Rv179q<`6p5C-? zni_{f>s-S8=k^ocUn-%XazmM6B!V~yFrz2Cm#sEEJ+mj_m%0xpuSq6EL}a$a_UJ=t zXlVX4>N-rAc(_h*WwtT-UA|VAEiccHU5qJuDt!0s5N&KNwrXnY?aK1my>&KT{uLvs zh9ljbO!aPGznmjNREa6=a+y|CbncjJ_mk#p`Sqmj^&+I--=plrR~IIZ(QWF;I2CYuexZLIONIZTeoZyB5+3BX3@WwhIGIe?r2-mD=-IW}Mjx?Cq?* zibs#%l!q@jV=j54e!)EHKMa+TC}6-~cm=?L&Lx-=eN63bPhJh)->qD!+CH!CpXsCQ zD`R`pVeNkkE0fS21!?N2s4VLmeG1Ow;*$4CugHl3gTjlpHm8vTCTbgFU2M|xM6F4; zkRdTq>=9fW@KjUBcGp8fK9M0Wv{r~}r(dJKKQfi*;IH4KVX&&Qoc*B+5UsGWd6wtH zdAWQFFkqFLMv#4yai`$_`&LuorvT6I1B8#YqDY>w44j%@d>j&%lq{~#8@4${Sr*U_ z<2a>iU+7W6Cm%u%UencTwotP>6^*F#Yoi%$aJBjV%W68jC9B3buN*@NBhqm)f!I{j*O$5*|}w#?4_t zrOqCacE_gIyfnC=gmer>B$XUx* zy$Y|DYloW|d*gKsX1&(ZN4dKx8kIF=Y&1~>q0gVS|Ne1|YzCjK>m$JI#&A+cpDCGp2)s&KCH4taD77 zq)a$hhH*0DO6Q-otM;F`;^RodEThe(TeML>d_I%8HuTubenT>RZ`+}Ai&fT=Z+9na2{^=dxbH%uM{j6Xhs_bpPBl|k)I5qOIGmjTPr>fOl)mnRfs>*se z6$PtV)yD~)Oo{weQoMR`nVy;&*lZqqr?pxFMI~lY+q^Im!=S(=)+{7kTW?aKq{u*su z*mln%BOv5AyKh=Q0x_%2w)0rq*}qjb&|g4*Cs=lUXVFv1hwAtA=+nEN+q;R`KYS_z|9>p|50nsBp4U-bci{& z_uaukFO!Gov&_6ccz(kq^NqR1B|_9l|zE2rYB@C+m5!IV5YK` z#{HKszg?`c;qXdyECJM60A~S`>~5i}%BT8%@bCE9bmQvONclJ)6NA3u&;)Ohn6|9T zoRm6qRP;>%@qYR!nSB$kBHnmC6yNh~#8QUmX82`Acjy9@7_CUP)PZSpL*;C=VJphqA999-VI%Z8ls;fDY|-eGRwgTh_SJg1R}(N^(u!uS=WuStl{(ghOX#|&=DkP1 z6JmyDmQbW%u4>MB{|CMB`nq#ym(xUrB2&=p3lhD*#Erk9_|tCq$jH#^;GpGQdc$+v z=7^3C1hK}S2(8ZA)>e_N+jkQ{GPGH_JjwA5B%1~3w_6T^V*D8yMkZyv!vvMUujKIy zcSsq0zkh~Cj1ex8E?d8_AzEmH`8Ogm3{yJz3C--22p5&~+{|{#DQez15^{sTK)ER} zAsbT{GWa-_R)3P$F>3{%j1bpfX82$tv~Zhu@L*JLpk0@-#3OPCM?=6%FZxEp66ioV zu|p-^S1QjSxx%c}A?Vu^glb(>c2qW>aficFeybLWZ5~Mh+)MUeJ z=i@tRVFvv8!2u6}ESaxh*M0t2I<3P{O>-BA(~j!OKW5y_c9)(HEahkl85SWX~ zwU#gl`Ln_V3NS|dePRlL4qiuN&DM$;v3xA=Cu=bBkxPP5#1J!d!~PgV^INogs$b99 zAN$IAuo!H3nbs2-88~TKkM}wRrCHZqH0%E=M0S}pU)~j#SSV*Ep^R3ZiG>FTbyVt) z*HZ}srS%eeSn<4w~meT;Y zZ(@^APut8x%Y1gR?pe?pX`^wCo_yD)tMw**mu3j9hSc%g6fgsy>^}gl7bdbcS!t?y zsJnZO`*k)EF{n1v)~Qm`K1VT3jGnKT!TN1Fm1#sO)>iN2{KM*6fmN+lti9G}EY0UE zn!mI%0O*X3+}stmB~>4~nm7jGHJ)3&2Lm|$`FbYi@6_Gj2+iGBlFrwPJ2a7Pi^iIpJqa#9_q= z5p1Wb{ua<2DI&TIGB+3YaXkL@xG)D@RRdf%x5xU$HCv(5WiO$64^iXBcJWH%<0QT? zVkYK9^+Sx-!j1p%WnqCWtk0x1l}S^|XIbuKWOwcZjR6ZmET{8hl=Fb9TloPEO?4a4 zR5R)lsSt-6Ov50(#>0 zO#9ZOXm9szbVwC#$Uz&A$DQoYU{NorQb>GEd9F2Kq42QXXu%FfHUW!dbgMphX8=SwNd^D_)4t_uoAk1*1Intw1OdB=128$QDMB~ALz~}CC1Cmfq#CTGA^Bac(1ge&idh2wQ-4Zr=XFL-@Qo}Q7F zwXNRGbjoP+6(YUrptGpZ!c3C;Wj=#`MJxJ(SdvrEG8|I3!iVnEhKUJ$0-`hEcpIsB z4~ZURBl(Nt-$;@12}=O5E!^mTPu#94_q0CxI-Q5fMi>_(sinVM>v1khRpKz4=Avc2 zIc2o%u$6WkX70se?mr)0R^r!~5~O z$_#=fTtGs6l#-;YWgQAK;u(gR<0hThH4x*-)fnP$J^xGw4Pp#f&kWGu6J_^ZS!r+@ zhk&!+`crW4ULAU3n}tn%O)`2bl|9nzG7pvPP6sN-h=&FF#3 zO|BtetcCAaA4d85xVD?d7z?_y*%^5YijO_i->(r;ti>Myo{n<$Dp*KR%(rM;6be{2 z8u}EY-7+Rdz|hWhVBDAA%dYn;QFu#UiDi8#A|Ej)sQf{U?1+j$oh1)Gtdr3b$7BE{T=ee1I7KUj%f=L@;QX zVQ%9%?>XDwS~9ahf@? zH9R$?gpISM-EH}REbSnR0v9rpHJ<*-lRjR>8-4K_p47bZu^s&=E-(j27-;a^7`O$? zdQc}1Q6#h~Y75FHgX{cE;W#IEPfoUA-SxOs)~`AY9~x>KjRCe3jA~SLm}&UG`-&%R z!rFdxuR)Bjh}L1)eCp^pHyGG3zRJ*IhV;*Qc{c?P&wX6G+^yM8C3DhDmd!-`q?*&v z4B$U{3`r_uXrlJ)(^Mx*S9~PBde$e_s(eYJ`Kr=~Q=DWm_puFOWs2dN#V8xLnB?#Z z&vSlbAx0u6>@v#8xVXkEy}OF`!-W@cXw#?pB+;gZc$hcpm>#Kv)1$S za%dzf5y04Ons=}=-9_h8rYUqb}XN|PKQEv z7=%U=g*65uEEA|3zO=M9j4+Ic=kh5~(OA+_5~fev(pvzjSutXsoIpEwyK#A#$U)Zq z0~Pcyx~Hd~+QO)E|EdLMLqe(!4CDSSD%dRs2-AHn_rh-W)b|V|_`6JKr6;fil`2L} zn>bqj9`e#gzv-bP-Kp{>r50 zX&fplzo@XWeSwxvS`1RLy%;fl+2s)&VO|6jzlW&rk?sSjV{J_F1>`SEcx!b8{x?P~u{Q zsYhJDYRZnI*k=qKt3TMUJ$dHko%Lj+G7u==*{Pp^(j}?0qAEf%cy$el5Y-8OeTkp? zc?Ac~-3(WUxsPd>H!r#?$zl$g0f}J9bMjxzZjjZU_(1WvI7J22>w+sy(=E%1p6gNf zP0taMM-w4P_bFKDPW)MNEc1H)T~>}Y4a($xiQY*KKm@1Vr!n_VErYDQQettG&=kor z-LzY|vc_JF&1byoaz%Y<=Z6vrfOtAWvUDC({;>A=Hm6*l)!MM*g~M-MRv%W`7^4XL z+fIGsyhe@FrN`f?4Mc4+-Yr1UOoZU>d;B$zn82KBcoK5}K;POTbJu+S?dmE+@G7TBSBI3aUuh)b?V zrNYjitJ|~LFYI#*>XLAviD5yV{X#nJTgT>%ybvf=uNI0JIH7S}`<#+x~^ z=$sXGwOhLH)AZA?N$RgZN`(L&9r-Oy01`)scTLuG)El_5kQ*WRV|TcPN{0|7p%+L5 zxOd}bP$p(b(E0TwA${vvE65)3inQbRot;c z?Sxsg(j5wVew(%c_fFBx5{6jBF}Ci>>1X<{alkcPqbGfoZm#cV-=ie`R){t;n&*ZK zm;GiF=C4w2vjTSGL&8QC>BD;Ybvb~gOS<)!o9Jj)A3xc)n8d|S=#8QN@k_W;%v1B_ z0+kGZq3|4SD%20pyEWNug}rYy_{KzWF|#`#8mOr0C*@@y3N(07&_|t!4Zr^3oOOBQ zzYW5Zhq}{_Zg{pCU_`2Sf2;1aS>gb{_*5GJ0eLx??3|MqP#HCG@1Rv+z1sG8T;KyC ziAnX5#QhzUN4fX}UffEhRz&3??d{2MvV%cEb-uR;)#mlfmB4BLS<;_kXOAMc^w69t ze+ZUTEE;Na@xsG_+h;8v&O2e6NAZ7Z1C?K8D)3ct?I?c!Y}eP=TPCs5nTc40=3Peb z-9nUH5mm=?Nxk(JYO_~7RHHUC^Dh*WwZUut-RN0iW9^lkF)Ca^Iu{(m3aQPQ8ScB` zEm&c+ICx_(G3r&%ctG+43fBaOleWG zj0yO1-@wkz7{RMz7@4%1VC91nq1SfoGlQ6jTvX%Ct-w;7$DUaC^hAW^>J6>3qc0vY zgd|)DUDTazj>2pIz~($BiW#&5{n$aOS#8_EOP!nrqvwNVo`snq)yq-{cG6@v{p9IAB!?5QB}UG*RGnJBRVp8 zJfUcCL`yo0sHir6>mf{xUWUj89Z%`3fa){DgnK7SS2jXZON-7I4&G?+sMNZn3HNqM zyDu&83I_@ZmLM5TobnjEOXcoxhL9U7C| z44O{eT^N2MmF%H)O$eWnNp?DYo($;MCt>SJ(&t*98lF?un4Q~qp@HT}G+X>Oru zM^Ae6qt=zUa@wDFaqjHq?|K&tvDBkN&L3m3M*N4f6{JXMh(x4Nz*9FhdJPhzLpf#` z%*{&4dx(T;;h3wvK#UjGPlQtKXgHEl@E>tp({FeeJBd?h+L<%jiB>) ze>Y`g4-Kw#v3VWGTX4|u1+D1J!u8$&NJ(N3+3MV?g60qkzf?WAtT>kY@U=* z;{%r#4|CU+Lpm$VR#~@#r6p0#elxYXY1I9q7~;(zSyS(ICsnu`db3fGkDI=96^?c) zKOx_CSn(Q{D0=!XJK=51$`4ooIF^Oi-P9=>O`7eB7uC35MQ6-JS6!+}Hj^$ojiQq3?IK+2&d-H4AlL8QS!aqCtVDv%n{W zTfD?CQ;kO&)F(F7)t6hjyIbrP?|qQ5{TO>|m|&lm2p0MAgrxGQ_RY8~0raMCY(!s{ zW$=I4V~64u&o0l4a=NxJt%#y@y)zM|H1Tl1k!>IXf>mIC@6j(s#Y-JBdT$)X81s26rlLxY3yYaY;3%T7}A3hUd=8jcb zS(*SWF3ujBi&5AGa(56O)RyA87ze=QlT5oUc@yA*`6f_`-jCqCN_hq+Hn8 zzV*JD2`QRPU6|MGyK_g0&E~VicpW0aeHOzu4<0A@m83=~Uie74ERqOp2iL;AD7mej zS&F+(8`)QQa4smOJ0Kq{8Iq@_ShIycpi2q?@?MMT-VYk>M5BLRJ47MbhEMrhaq4(I zLVJpTbA$HHto{l5qE$QcGF9Dy4X$D8kOW}S2r^ik`=H#zvM8m>{yIP@q7lozL*gti z{lSa5l@_g*Fw{5!2Y%!!tg#e50u>iV21@=;Eig~@q5(*cC32xY;Dm(&HMO>i4qI|M5Ht{Tp_d7FeQtYl zpoZ9uhiqK+^r6d}Ok7k6I)N(F7YG3|;NEJLa^@N3)aiE^r+UJqg>ezdp={)Ph;@H+ zJAA=QCa@{cxnKwH`t`G;b-(E5%#G0h!U+E7Jq za(`$e=puAa|D*39&gHCc%ZmLw3jq?R!M~~G3m4@$e0P&@N)+#8bmpM(b zo3CR-6uP)3`O0B(h$TJ+R0mflxlYCe69z}@*0JjIvd$)yl!Q9SI!@o0XCiz@G^9K0 zFrTg+x8RjbD0?s@}Dm0p(!@ie&NcLCZMMO!CNK7PGEjVfkbdV{o1(-@EVeI_E zI)jWi*$`J0HQ&H*arec;9z3@B8PJv8B*9@unM)y--|Q&`1?gx2u6A{K+D?Dc1VM7# zM4-*ryZkLze!?xBm%pc*df1i0UYv+Bv6&oyfNQwKK^0wiGr1c3;Gko%!hL3U)|TCF zGvoyu*)H)xWIy4m>->=X{KIkj57m;yZU{FGvt6fM#3ketp%Th-(m9Xo4fsn?YpX5b z&T(#B%7NuycgSVy&#=O0dzO~01SS%jK&()C!m{Dr56c-uaQ?_^?76iCK<|yrr$x1M zxD`mr>X4!ZGTLt5i;$va9COSdK~q zO&T4AW_3bJmc-1h!l6%Si_+xj=>+QO?5|x3&5|&%KqygY194TGj%ui4=bw*sG2mh$ zd8c8uY2m2vWTn6EP~}cJ-cfb(0EC4rzl*0pt=;(SyMaZ?U>yKI8K|krX5EJb*Syw% z?YLsMX8ht;guVv8t!8L4k8_uoTFS3PVPP~AAhn_4c8Q2gS_;_@cPc|m?wymARMTSq znN3Y`1&#uzBm{;5dsh6?>e6R&w7WmoKD^_V+)g?9)BbK~Z3h3f^rG97>D}zDPK51- z=x@c7B1qfL&MNMkVQX0xKx=*>A*A9-LvskLIg(Q34!{i6_{+(No^rnK1*`++HIx_`US;Y;q0(A#ElF9(n!=gw5@^M71} zJY8rYlKt>HcgXWw?YnG2FJtVhm>g#(a#2m_x(iLRV&WpY*1>(guG2`EJb&jK{-AHg zft!i2s(%Y_YGTvU&^TtiVG5wX+4-+YyVuZ&Ewa8_CGgd38|7C3b}5o6M&okEr(VnS)iI^R zyUoqsB(cc;eSLI2Fm46U{I^lP5Opn8u{XAQJ@lbW=)%+hllalp@R4wzvJ$!1 zD*j%MLHl$db--~cr)GkZxcz^@Y!mA~1TR*#0TIs=3(UZjfC({*2=5b7K9tqElhAJ( zDw+(@l%~43OHb>J+}h!(>o8kQLcNNVA!j&Rnv2P_Z;ao1d|hHbW~wHKOE<2GYTxQ- zWGEd@UL|1|>aO(D*sBdPMz=jDA1oP$1`$rmtg~vtbu{6(;6AJ*eJ`Ab>b;6W=g%C; ziXr}lT5k~K3t17w(L~%$*-=+h>u~Y2{w5@{C*9PJ?VkJTk-V>c}SU%^|01P-KXx@cb3^gxX>YJ%6;KcLVg@Iz+ zp)a_h*(G`%iuyY?datIz^Ef!@uULGm1}tl#W=^Cf^mn8*&(_fmt`n}at%d}I+0sC_8NKS=DVNzaWaIyPhb$a zOo8R=of?-0_c^@o|15wXY)&hdMBQ

78p`FnrL7d1azDw`-Q0wgK&Yoczlzs@yxg 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 z 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 P00000NkvXXu0mjfHK^uS diff --git a/frontend/src-tauri/icons/Square44x44Logo.png b/frontend/src-tauri/icons/Square44x44Logo.png deleted file mode 100644 index 3edfca75e1226a76153334c253bdd6efa34da9fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4104 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 diff --git a/frontend/src-tauri/icons/StoreLogo.png b/frontend/src-tauri/icons/StoreLogo.png deleted file mode 100644 index f2a2283e50ae47b00d97f38ae759ac3fc9a8fd50..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4793 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 TM4#~400000NkvXXu0mjfpdTf3 diff --git a/frontend/src-tauri/icons/icon.icns b/frontend/src-tauri/icons/icon.icns deleted file mode 100644 index a05bb4354995384fcd5937c0e5ca9d3f727112e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 349608 zcmZU)byQUE7e0E17=|7|x`q%?x*GEWUXm_F>XCd}EIX=5IoIwZW9%~HTbbmIZ@8>qJ0=$SI$ia$s~U80=F`z{Dhg1!4QF0aHSjl4yz+VwT=!hvz6kXIS!~@_FHY!w zjFa&-{vj0W@HEct&3DAO%F6YpAkN%r$E0%Ow%u{c43R@B@19WDpb>BuNmMqGZ7BA3 zYK`Bw{Bwwou`gQOp8_d8XR9-Oi;139v%Le_6$@_h1>=ldMH4CoME3IUvjqlYqc92S z@L+Fh`V4=%;kPs_fAMi!W_6Qr*OvWUaNs*fH96ES(q5~;((J?OE}A&n03zX_PaUJX z0^M<*=H|@!zf@{NG>VsMC#_w^#?22IkE_e9_0BXOCU6z+TrK!}e5(s|3Ag5ZB_fh0 z)2!b8HrxsWo%n?lpXEMhmG{|3I!9k=@m(uSXs~#^c!zJwZt04EfFPkOoaU=G{%DI0 z>xGYBva-sC(%1DQC#nn+@(I@+)i)`guRcf=hI`s<1Z-Juq*gmkKKiU#$;9#;j`z6J z&DTOseShSa>34H?t;4aIi|Y*o3_7YWn!Qoy60dxvyHa7U+obR_Zx^vw)#B;CkwlL- zaKl~x8+>K0jQ{9a%ko)%7(MZ^QzG+M`2<+>XJ7Uh&Y#%)!b0C1i}EB{Feqj$;nnYwW+#Nu75G(~z{55^yAYrx;gzTiljdWza? zqPt9(b&f_*O*j5RCnRGZ#2uf*JOHIE(kTw0wRn< zak?X46|HfTU2aZJ883u?C=}JFmzdrR@XF&dTcREK_cZ#rY%coaP_ALT- z%(kj<(-OjQHwf;%UY$0o6p7yYWYxxoo7Ls~-Kqd-RWM>!gDGk`G$1A#N2L_IlQkP+ zigt8##Nl0Y)w6oyV#;GeF9Vli5cg>xhJKr%CnF>C*P!jS1=m^p<}G60E4BOya&}47 zsYFBe(5^p=Nl{;&v{y+6y|r~!oaUvxjPFa#G}Lb-yhB5^5#n%0Ms6ajg<&^<%f{|h@%Pt9OQM%EuVSL(avmovg+Nh|N4MhQB8a{8dT5bAB7rl%{{Ay?QK;;)k2qNt3yV23#{r2`e{6O79+lTH$ zRoN{os{%04w7r5*485V*fZeIc0-ROrMKYjgmwEq_4*WHt$ORMZ=xK=NQ~&4`h@uuk z7#$yod(<~{i{rLrnZp9dsDpUya!u-J;P(!;assM)iRtOKiOl+F513vPVboDdYHMX) zD%jc47NT7UY(f?v@Lk;TFRsQTdW*4-K{v^!N}vv=0|*|uimX2haYY+J$-!4o3qshq z<_t77!wQilSgddYhIeI%o2`mIJ6!Qx~ zkGCeeyJRh9E0Fv0m{ugpVpjeH7$)CSwfGy){%JeSWhl8M*Gk8rzyf1(mFYjgveB&rJxaQx~ zDONxR9p(1S!=3J7qq(prQ3Q_21iG%A!Mp!tMX9lpsjZgQEo}$OTXFkYwjH`F-OXdmeIIfCs8F z_`P8+zi&$!3~|KkT;=LFzlsIWWANV!wPQ3lUK&MxvXAIuYc_rW5A( zTe*bC&ykPWF%C|sRh~ShP{tkL|6tmSFEv~c()w=Sbyi;6mz(-23!&axjhZg{oCO(* zaXOY+zZH%_)NQGZ9)tO}uk&h&64*L|lr^3)!;J8|lT@_!rw#P$`_*L`KE3*+ff@WI zJG-?+B(oAnCxU2IgF|LS%nsc%ZxzUnS=b1B@(%@|PnhPqQYWL^3DhBUD1gsz zcWNO?j%DAy5}q2gv)Zu9BDkOH8q5(;B?1_z!ybnU_WB^7nqY)jqJLku6;?j>7E_Yz@u_l zCW2ZU*eY1QeEGwwfaKf{L43m8rwf)r>{Xc@lmvbFJt^i!JIv@BBg>MySIwe{(cw#D z0*G2X+BY8w79RwNpfB1OdS4OtGGy9NUYfJW`7G09$@Add zNUBn7{*jgEiOu+q_x_}-F(#2MX8Ftyd?2$eaGrSm<@s3D!yC>lEA=-96;?myBw|cO z#6E5#pZ}Ik>#8{6-NUuO4mtRvm7e~tmJICz1H9?wv@tjS^@^BJe|i#n$-x8gIW%-< zfTvGoE+d7)8%nJCbZS5H4i;UG_+u`NBk~d8fW*Pw!=sPt?ar49bLCHe?aYn^>|aT2|cAjh1iWgBxpaH4pe8j%W@! zo##xCL(G02$+6l05Kg&0KE9tpOpx z2PJKLTlgj zX?EV+_r5oTssZfBIn8`mR3b-8%Z3rG0wgeTV3uMj3^^cW>U;0HB@cgqCuEU6v@T}u z@wfmM;Wk!@?E6uLht`^UTv1`;&KcGxgN`)0&6L0!ubulniK8(du0Y)9>MO~$Y3CvX z9x7Ej+PtU%Xl&V7l*u7iSUUK5)*}yh?O?m#Qajshi+8+=9aygnIlr~!+I>x{wc@An$UY|#pjmkd7WwY23>q3 zke^yEAD>$89r#O*j7@|^n^FjJKpJuPHjMBzXq9n0@mY=Mc{GDvKyKjpklM`8`n_cR z5ukfDGsq?;>{%rkI=P|%o|{jbw|Yk%H`RyCPwzYk_hr*C@z72netv#3Nx6+UEYnwa z0%&gB1`=~4??fhJmp#x_a8G2FY9C4G1|sy4_-`Oz8xtIOdyk~qnZz#7)>Kq-Te6t>4ET!E98Us{B2_=@7cLB6B+TG`CQOGdGpFx)Ew@VSr^ zAU4U1KrtHaK*H^gx^Q)0sqE~RjLtKmJWM`3CvqAp(&yTC=XBqrsid+0^C)%rT21p# z^daY;bap|(sq|>G5p` z)=572F`q73SkSsYj06R3Wn%-GD!Fva8_DFtL#lth(76Oxd0_HK@tAm>IeXSpkG>8g`8_ zyrrE>zG*%Tu{cmj9ICOgk>_cO2~_`<_ySK~e-Vl08Lx->VM<{Sgei1qGwRAS*K8a- zN#LSi)yMnIY8oiperM=pi;Q_!6;DxUdXC{IaTiaMq(LIg`t3pv=G26WHcbnj=h|c? z3^Q8AevYL3*w;XToiulg4hA5jEr9nfxvq{xQ|kt5zkJ$hGOr?>0lv|SV_Ir`05ftyYZ_mh zxvmBZAw7-P-3@RBbbORq!l%q8L-lc$f;TxN2B%P^EMw3VBeB2-N>o{l@Qz0|RQ`yo zyBp+X_Ta9FDKJEyR6EZ-t_$$DT{K~|x7dt|#(FZ1-*m{YP8lm(UD+!ayvVc1O0i=8 z9bGpRS;(;lqM62f)`1 z1dPw_k02L30yy%mDpr5EWaIPYw5-I#$o}NySB<#s;+qf(G&=d|rvz?!I-P7V=az3@ zpp3hGBa`SibD3Z!(s)6R%J}}?hc|bQYf}1vD~t$FA;qWl-xh>a$Wdqo)40w}L(h08n;`K~7bmCShs>B}) zd^h8G>M=A*#kWe({n-FNa=8~6OFE6XZQ{1TY>1$!D0Q#9ExvubPp9TCW(;o8@OL~F z-1kj%_dJ4J62l(0a7gvI^=N#0n!1iG#DfQRz~Y$6+p%6gWA~e0LH+_RlPGg^DyxRZ zqRA6eXzv9H>G-Tp{!O+T0O2s9gl;a4l_>>D4 z@2s$PrULAnHw{ORql_JihWLio{nfvJW*YN#Z^koSn%BEHu#dF3zXJ;1v8->8v)x6g zizUWTe}n)7z*Y#UW59pU4$6EFIA(_$C>ZhP1KiX`N}nl8MeN?VFk$WWJ03pq9GCe= zKIZ};Tj1N~oUK70`y53R9VJCbRN6IPn=a^TewQ%E7IYYtQL z&9OQqo}46vf#_!eOq+-^JEA*Sv)eC+Q>J$yD(?1`-%Ap*+=HGTs1}b>4I(g}raPDA zTFrOm5zMY71hn>VCe!RvYS2@T{#!%jySpgmN1K@ibu_>mQBWWU!OyRyHNKzCf)+W! ziqry4HTF}th!k6Ps;gp^w>*0Ns=5RSJR90|G>pA~2mqT{s!6XE4ApWZ`Vp>KYA*XF z;Zc__O00OqDvey#Si2p{V!_0{O1V>;5D5-R#i!~Cv{HAl zvq6yJ{@6kIU)H5|^okhl$fST)?+3{(g3OCz-+cDtr_8sIX)z0XbW_$u6CUJtUy2H5 znY$msKxT)Jo;sM1zms0ornGIcmE+AhsoV!z=;yYIO|!iy6d8=_%8W|mHwwr#857ole^Xfd5bMK)l-}Cbi(IKry4HuRyN`A23{=#1_OP0t33PbkKRm-xxYKX->*7)5EL z09)_S5F+5tWJ3@7^uf{+txwSUMotcc>+qb<5yuCG>$TL)2>vs7iuAZVeRW>W1iRVi zEhVJb%arb=uXl%L4IKwd(DMX;(i{HYk~ z*Lf!SC}`{PN5+2Mdz7F*hp&yxx)I(-#(rs#Xp-?}Ldv?AbaQap{j;oKxVXWbKBTkP zDx{dczT#&l{!w-HSj=kN;65mA9745OD9p%R)<0)M59j7G<|}l>X&k@|Afrr*k(Qcj zLqxh}1wka*h}u@(o!F7MT!>>IeplCeN$B$V|0q(xDJFSN)bppSmjWzCN-r?K;X}xY>)l z5(*ytadvC+#EEFC0d&{4%@fb+kbrE$`%oEpo876hY7}dC=zW#yOCIu2c?E*l`%Gaj z)2yT_=bN(PVDcK4)ZIzA<o?qRJ$JF(!{>>$|r zNY}v>iJ49ai+A?%a1f zg6ZiMV2~0in*jyo%44^+^LQpYu2^n2tg)LeshoOvB>d-lC3b&YLN^QL4Es$zEla8E z#XsC&{yC>q90C5N$^o9))3?OrqF=f9#r z^52ZOALPGMQnr+S`_|diMr3YFi1g9?RnuoiJj@qM{|Vaf9yms^5$r_W=DZPb$DMmC zf+2e04Gl(NZhIZBj<436h~j*@`WH0%_9X2r`ue617M!i+Zxu&8d5d*j)fWgFXwgU;~49AJA{OAwzM_NMTXWIi1BAVL7pwy_#yjl}XxX;U!# zdp5Unbt0)x=_)>rvzR%>UK)b1h;dDE6PhH7C-L^Qq*NP9m8m+Mlgc<4`5(|>pfOPa zXi>|heyL8!ms)Ug>f-(?+Vo@7OMwzOrdF{LY+h2V`*0aCMcPoeG_eh!sHkw~F$oX2 zB9NzOuQ7Ea-KQvq0Nr<)D$;{>pdV0^VD8|g>|9b+8X*2q_44y3V^v)Oum;Z>;n2y@ zEUJ{lp%(gI1)B3+uB#iXv%?MW+irCk)DAfZERi!MwfE6vl}pRX#g*Bv?yHsr4Gp4^ z`K7QTQbEJ5b$<*kNKrrboW;5adnjc#W{51~$)Poa6!Lv#JuphThwEfz{Y3Gur12~E z)l0&^#llHETn#r^s|iCDcmkW;9zP9R8YilYcMt;1X}C?Zv1NH<@Xr&;2!tN1we5A=a5OM}>)red}1vvfdQF)|nwdPJPL*NOr_J`3wpK;sGG^wu*W*Y;V)88Nr&CF5^rR z(kXMEje>lPRjjDT88!cLdd%)ht!}Lc1@?KH?2dbu-!Kv+i6|j{l>bz!iv| zsDB=9bx#b4*SFSJ=)Tj|)+RXMiZXWn15sz*qVJu*qsX#Klk~vh-#g>{h$A3}vXTAG zC2PAQdQV{fDJgFEN(w0K9o0I{cPW)M%mwu{!2R2cA!Wap(v%2Hmb|VXfKZ!5>%-4a zr%$pt&*_j(Ijr=w_M8!hQw_68AIcN^P#z8@kKxgtUX>p|8YoOm-o4`w_hC2*F+fL> zVo;s;I2D;ZYulDkdj8bhUKu>};O|?Hl;7Ib>h=jCEeDDIu_*~xHAUQehUsUz@90g& z#?<)?Z!icHGMW}gf!^Uhy@$YT-^!G9Nd52q`A%aZy5IDRiL{0`n)aQ^E!bo_zGBA1Y$Qna+Rx$zl*PiwRj@Thrqxzs3<=tM?z2n-O-f3esbil7bdG zP-T}iC-xoUW7cCL*tj;|e(Ed6i->fDjMM{dONKRjJVHtMng%c>(k@UHB#Xt(B_@8o z0G4168m97Uj9sH^A#pzRrXe9$ z!jl}(*y-QteuaGnDVN}o^@^CaGGXlzaIdXLJv?IsHy1i6+;Yjr%v|YkX6g9Q+l!>A7^Y zbG!WTOC*3owp)Ht*GyzavM6Dm+Q;55U168r$f-0ou5N$+5V0Q&-!5ML^MzaE&7Hmb z5+X^$V27etRKvOEir$aBJ=N6$_%_s+&QP#za>zGNZC0Ug+Ee}ZIyMzFP)b|lJ6Aj5 zsPc~iqOr<09<*#zKNIc1Y7SZ`80Ev;TqY*$1BxK$IIksu=p%z86I|hyCdkfYaoD+U zGoyX#I+wMOu3LdF6f7^c;rEE~n)k zOMK+_`B;kOXDtqYp6zvWCfu|{(lc+9UpP|}8GZjmfwpOFonBIHec=D|We49;J8gCZ zR<&atVXcLVD#0D6`YYgA26Zn5k(Hj2@{!0_NKF_V)5(FAyEG7AXT$Y^=d zrmp0}3h|N}u>6TP+}T49HDnI`8JIKnYf0po?nNT#*K4EZHTCf>I}+C0lJfG=Uk~Nd zO(rnw<`x*6e!ms;Kn7rafBK z(pN`JCWv zQFCcjZON-VK+#_Tqpx`V2Z!Pv#c&l~C6BsqN5DPU&X&9`M#9^FV5ttU1 zh<#wzQ`cIkDj(?W?IfiyjxFe?HqH)|gh`5_wWJ?@l z(}sl6jQ0ue-SI#<4-fteGV|3kdjJ+)IO-f^cx5NNP(@{)`&Mg10z{`Y z$#?sEACii2%^#n7fQeVblH0TDXeOrpL0BisXNh3`3q0z}1v`%&?K2j9)OAJ%R-YMf zj0N@MH`w1@H>md5ZRQdpy=U=>_w9nUB3pmY3{>GMmcb!-Erv) z-bwdZKj|y;P5fS@GGF5*85VimbVojM4GF6>S_Dg;v4xee+j%Y!>3S*qkxw^%n?1LH zbh9O$7&V7eNGVeS>>eJhu#f|llx_jX@MtuN#<_F(y!Lik)8mNo*?yuRH{pvT3w(d@ zc|XxK4f8)z(t)`cgx!rmo2rgB#e5<9w)YT3;r1}N7khs8)D2mGf1F`PymUbjb^Yy$ zC;6rVs2R$u(;O&c<9Z~4Iojg;^3uFJ*oQ^>?T~XwCI?a_nXES!QYOZ_K_H_g{GBf= z5l%&gcIK=Hx=}|66ivz!a8Wdzrbg5S+!wf>RRXr@5Kv~UkRpT+_)L%-@;mi`NxZ8H z-hsmYG&oUg@KDF+tbg_W4j0KxjZ+xq80#TNd)ZUvsL-RL@sW|K_F}x;<)8kTCtWHV z+R)E(Me2o?MJyr%x^`6&?dGh6)Jj^4b!2it+NYGn!>b=Zo^|Zw^DRL(ONy=>j{dCI z*LvFjpwO-211l_rfe!J#iD-;NWzWA2raNEn>&&s4pHMm-Y0xJ?kt`Gx$r>p5Lkvq= zmW`rv;I4$Nzh`G{<+V&0^BEiqEG+~7#)u-^mR+i@vDwJ`)rLHsZsN zZQ5o<*S+ao<^oxt$jiHO$|=n}ggJ@!gZ|nxK8gQI@?J|z93u;n$O>?=#hb=C7oQKW zrG*Fr+SXPoOwVqK#kVP>$d)hX-R_JeVirkkYgz;L*QEizrO_A!8--&x-%y_aKecjr zw3OtoJlTO#Q|A2lc18xJA+8%WnmzD8dF}G0`^L6af&fdf4N+kCk(FKouT-W3<+oSG za4n;iKM&sb|-m2`NT!~gk@k^8`|-? zP~Ql(c)<1xvuK19mF=2PLUzdYbbU3QKgdK|+q(Al7vvD|RFs!gAb2O^0z%a#%lHl0t9GD{Cj|YBs2TN%(HP1 z0(%=PXa`~-Vu4oB8%>w1v9EzS?vX{egxi`QKHvyhIPv@hIeGA}2a{({G(-zF!qj;{Riv@5Gt_zM_tx_( zj6g1FVIRn(Y#>ex6%dUWd5=>Ppx|s+L%h6PMm(+F`!FlX?&Ucbu07=@YIFNvIoxPW z=vgClPi63*1N$LYpa}aw>+hs#Ha=?$C1AN9L@ml;Wk6fQ!oor&G~3t2-tRKv*&121 zQ2Yh!NZGUNb=hgneQw`!c7c}myalP_e#oEfi1;OasFs$;gb0m6E!nczbvf0-wkt*h zW-!>(&a5~NSFC9}KePiq-6!`mQ_hz!_>YUWYm-4$%_=7U|3zqqEK~xlc|{fPtt~`Q zfb73=+2%EP*tacg?3RYvk=9oXI4vB586gKo?iBsaV$MVFpOPTN9i)aCF=DUw=U{DZ zf%|vi!WpQ=IQM&A^lC11ahqQ=p?WESwG`uFcz~SPphZnkj1L1_eE@*N$N%z8*9ncE z>qiPzqp5}0yBg(~D0xK%v_B-s8uX!zhR!OQ(=4&gXMNq3$cUUjA#$J1`&c-e6~EfGDB-jgJ z!SEVK`rf$R?`$vl_2wT(IgqgtOY5=2J4G3CbFagE7(4}m2}>LCUNdUN%X2*a)P~|6 zU$S6q+sRI>YNu5YpvxzbClvMaB4;87RLDepovLwlUyo)bLwhq&lL%BM{MI+PR=@w< z8QQAq?zFtPBxPmZpNAH;-Z(7D&S5MP-VFL{(e{AL zA0&PlS{kpL_*;#<6hocSxd(^x_V*Z@e;qyrt0Os3kd%mNr4gr_!uto(`=~0ynV;p# zJ^{GCbGof>tQtM4?e!oT{4LC^Hdv*hlWVGt46Lj)(C4@AgP}9Rq2uODMtFHjYAPYg z?6s#Kg0p?AaDrj|1tUKVW9&^SwszSOCr9+9AYom>Oiwqgf8)gq7#3dotR{4R61#2x zKk_5E2acKQZ{Y{7B`dNZ3%>6nwSvjcCOaSZGN1vh^%#w&&?h=tgrY^>l(W75)DwI) zd#^v{RhiJQXi(AziM)xqG%LSUJYf(JcoI{*m|6S0Ve5bD<4~TyeltF48~nwESy|H! zcZ9zQhRpeC;lRMt#oamW5I|KTwQ8o8LN%2ESIK~oJ;?soJ& zKO7N3WvRwanqq#x6wy7qZ6d83m=*1|mEVcX z?Q{E{lqN`0e(FCy{+y}Tc(171J$@<>d)MWb6IRZfn=KE8%l zP)H=S-eQODJPEs zw9VmGPd0z1gmjZ@r_rr?2L-1tUH(V@4{^1$eBO=0jWJq?{#C&OELq?X2@{6^#^n{( z;%G9CvsHF-$?hwak>m`pNV9HT@s_cD@-4W&&I7fKDXw=BgKsm)TxDVSVwC>z_I8?& z&v_^MV)9xLGgb+^7)8!A+S1uqlT=aBcpLf=i>Lki_K0?_%9o}=YOIgjpEz^qF4-&_TuQ(X&nalD0bk9Lm#$HBl;jeL2itsdZ2tFyXQHgKM@gTB=%t& zsr5iJjJ_<(U%UTIn5nbxWbJy_aUHiW_BWtzl@7giYkK1lrs~yb5f&E%cCw01I{xb|1qAK&2JWasY;o@Rac#HK0TI zICNW1<8`xX8yb7j3iWr$Vr=ZSgL|*3R#^_xXsF-4&RN%1q}pW$Ce-lOfwFxkKD4Rm z1IQm$U341A9z>nPwJ>*XgV1tFKJpm#tonX@I~{Gq#0P*go$XPdPw&1z{-vH>V*MeM z%XR+4gl%V+LPvKMJLq+YlHstJhBBz+il@M24sl@ATIWlImZ{yYn%o{*P|eHy?tsr$ zPeRKZ=1dqOpO9fvJ+6zxoWN3X05_Yko`fLXX5!#8JQInTH_LZc?V;rvSpYR@vye z?1cC7QKD683MncU&bKvldJPY27W&myoL>CbM!17St zwi1_%+ItoPxkUu_e<5)1Eqf3tu_OhV+WfEM5feeEXbQAwgv7w_vr z&Qyl^xdoLrru5I9SID*6r!x?^K6(``KDrK1 z*>7=S-Mb=;NAx)_D8~g^S|K~Op=pUJr=_c{Yq8AHXn`BlpCStiqEPW`qsc`FMGLn? z#;={E-r%dWtNye{r9>^Cr@q6hL-|c@{flJ!;{V@lIgImSXNE z9-a!=&Sro3anH$>GcpnEBFOk^(ljf|wN~HJ%Q#9zMpH z{|iD_l?3{a%gxqkMIrP(9|PutgYM#4t4QzE3yNIAeBx;$4=rArDd&nBkiJAOSlzVS z+}c{xhU(KzQPbd;LVcGeFe`G?jIjNNO0g; z_woYeUF9?soYt=5va%s&GZS9m)7VStQLJ|-#JwH63KNr)gwi(`K^0sh?)?0lF`K12BbV6o{jWa{KHdcqQ+?ELjpfLYejXFENcqMWV$ObgAN(4Yl=TMG zU|fWxT)w)>*WC!Jw13cL^)1$_7YZC+*;MdtF2SE^-(9eKpo>A{Cvnvz{w^0>C7cnf zweH^@(4-|tRxjWaZ`cKc<5Q-8y1Xkn#^$DR=*Yp6!QV{us&HbRoRZd(YpoyX?eG6Q zjW(u7dE#1Yk&Yg+dy0x%%Jhks^@wqCZyU~RLF-XXLLh7*IjV*L03Q4JtTqpC&ebHf0mfNI!i^=g2OISC|@8% zO@!ttN34|+6vYU8r$@2t`sPjCujoDu;+lSZa_;1dlMlZ>9;|1{nJUQ2$q6u_e3rSI zo(O0Bt9k{-iEIFG&-Yw^dbon5A_9+D%X#7$D1lrK)(W1fB|eMa%*FpXBJ7-&lx>gIJ zIQSFGY2n}GTQGB4(BTWRWO>S-V$?|x>Ux z@PQ0oOfv3_L6Gp}s}rQO;(H6AJcQ}Xl3NYiotuh^u<{q5X_YiB2SmDXC)!PHDT$&8 z3hWtiJ19P20jTHb$l>ub^*7OYk(Cc_ywwY^7L^VIAgTOtu$|rZJ4E~*B!s8Jo^ykl zm2zYhO+|oQUup{9JRsZ;<5W1LH6DU+z5HooWz}eUt87$yw~Je9#|yCz)AozC&TbpC z1t(VUmQuGJ#5K9rZ@5U_2IVCPqA*?uQAHTXqWa5qU&U4?7`1qZPmHT_ z+X}U^m(rTbY6r>v^<_y=b>d1bB)91erb>P&8)PW2&qvvZswuG4Lu zTf64wG?lI@GR@87^b5W_PM@@>SKnII#UL!&bxW+kI!MMdS=2%NAY}J1(&yvh4-s5+ zRk%TarD0J2R~wl|RB+JiR(Hp~Box*p;iHgfU2INp0_oQ;A=wFYq3&`!3#rC{)ime2 zt4hAbvEgPkumCBYf=|VR{h9dPTI$#5@hz)j2tKe2x%q4eqtvLSRm0NLvqn(HRufN` zBk+L&X``h>St)+lkQm(GKnAgqTS14)8dJ34ggGnA<71R_jESI7WFIK>VO0o$0}6b7 zEu)?RU0dl8r%tV#Pb~rZHIpKz^H;97vXsi7x}PLIYT*NG_FgXz6w^aiusBOFg8Qrq z+Gf;+f?dnFXVpN);9vMh39dzp9Cn|ae9W*t7F3osd`nc6K&r)iPte8@P8b!M4%ncJ zM&wWe(Xs=bt=hk+u{VZHprst4@=0kF!{r&_Wp|5aY-7AWckya1u=u<407Ue4lgZ~b zu(`Q--bdKB=I+5R2g;cv>D3re#vV6zu-M$$MwM-flwn0~ol<$aNA9h+JiQH_r-^3RPjZ$*bhR%0SyE}yIi$3^E&cDv5&@P5K z;;tg$BqaDg#Riz%yRY9FP-2v~$F@{b+mpS*^%bZel(n(oWRCkJR(@97a=h}?kh#cf zsXn=3Jtd#rH{FD3Vj(PI%Jffp`oV@|vr~PZFe7>u5Mc>4YQ1>TBqshbB7EECX#2_1 z(u+L9l}RDKhxjnG>nJYV;RjAMnTN_eBr8&u-xcKl9VD;e~g&3^Lb(MGv1N zrSMQ~-`gpVTrvDxJHFJOJdki*FoIJO4GpBx)uz@Kss(0$EUM4XCp7kVqL(-Udu*1c z6+O|@?xK( zO6Umq$1xce4FI_zIcBb%TqL14vu~rZ@6BLMI@L>M-ptAUQkLbmtkWqSp8kE5EGfuoC+vwkaWduoL-shgz2S=Z$V~D zEi1Gdh;Rhp4ly$kBQAde$f>BNe=HdJY~V!2PjchGhe}Ibx}FaE+$OhI$Zf@~YzqL36{n)k(F+<69mPr;nn z?P8(DdCBHA9VOjBDgy5WouV94wlT%4uf4C7jV19yHAAXMC5l4^{qG5Zdf@Wb+;5>M z%IRt^+OP;$@0aHfJj=1SYTLnTHN@YNm>Xm@F!<9$qJu7{I@3fcaWDA@w^JjX@$+JX z8mNHcE8VInEubWoNlo&KuNTLls`0P4matG&YcqOedeXGXNb7KeaPbmIcVil=N`jS4 zbDF4qAwzW7p;-4I#)d-BZ1h|tW8q24IS zwDn7$lY%X2FBX0R0j0q$G|Je}4;no(aSS*5OYoQx>1fDHou^XkHDLH4hz>}2_$WIV z)#0qD#PNLrz31fgv<;WLTg~t<(MhdW1!WkI*&Wi8W=sY?iKDL%r4NBn*MPPB zW6-V>lPabk+hRxxGjvTI9>nk9jwzabsyLgF?cPP!< zxpuc`6jQ~CnrSn`1CnF72?1Nd;9n*{&q&_^cK0aSLyfRMXA56;91I%+N#kgPK7kG< z|ID57+mOkR8hE8z>zdAaN-#gzFp&WzWX&f)nLhLRPJjo3!_sz~hpFT5jKVmsU~3mj z!5l!%IOpG%#kBI;3>$^4?7wRLm9|bK{8u8=XuMJ+;p2+4-)FOXu?MzMlG()ybCS%L zgx_HAu|-nMdSg?Z&DQ~=@602vuk;0xLsYhy_4KV#cqp(F!F_0SjqW-$Hr#~gOlTl_ z6faR5uG>sD5>tJu>U&cxr`)&8ZL5L`sQI>L92XYDZU4wF>a|jq)beEz@fbIH=dzv! zgUxN2*$sZ?^;e=+5(#IB?JhglygWfqu*HWDGmFJdj`F8*Ph%s;*;7FmD{XWGe$R-f zfyef(mI-Tg>?KGMe@~(%3eHZfn$z=bjlBwT2om3B1pbSC6M`ia`;COf#SJiYh6D{`?bX(T1H}5Yw8w6~Csi>)IS%+%u)~)QE@(RN!LgPvh3YLTLn6 ziHGI9q&v-zAJc^gRm*XXX*^siH9KRTt*lwo_>V2VB;ItzUF}mHJ`N>iba>u6uhmh7 z$HCBB($+`6!j9Jd9{Wu~jqhkdNt+ojf|rY#*>nx1=ma!s=<6%aQpBU*`yz<7y_#{2 zi0FfZP=ko~cVaIdKek_-%RNg=oc^TF-TFIZ4HOV{zG9R6*ab}VZa$T`lbG`V2qrv) zNH3Jod4T5cOZ$DB5w5 zxN0vNS&(jhKYP2p_qK>Zh$Y&AGDN&oR<{BKfb*oN`p@v6rm7ZcnAOEb0B_>wg_e!) z6bZzwn#fNSKzMjKdLbf^Tx3IyyAg`cMgG#l-}cJ7Y}%>bsAX&#pSz{{)1&ko%yD)n z$^migRPRu>j}_IS+-0XiB(!_7@)%KdFJD$wN}Hg@fyhWTJmAM|QWAOJ65y&F5Ww1a zbSab9{Y0l=$J1M@<@*M$t*xW=Gv}c10zTi@?UukM9_tgG^or^Z+nlSLzRIrBRL+hC zjuEn!vr?1IiXHigLmQx=F#!B-1-$v`ZNC@BAhio!SW1deUU#M6&Eu$;w-bLZjZ4XI zPp*sZBWE+~GnoU!3>zb zNK+c(gJ5(xLg1&#Db*w~>piWa0-Oon_?GK(%UC*IPDV^LfelfV={MNLjkRub&xXFJ zS5+c8%ss>fA0-5?$AcY44RVP2&h~}e-jT2&<2gH)BMl+Y$j#6*>RN z+FtpWRuhM!iO%0+?q=+{x%Ecg5|akmovv1Xu-Pq=S234VTP};An5e>$>?Gq;Sv?`2Ao) zVl1)A!ODjE0MoPn0Fe1;g8I?#gwh>{U2$KELWk{pNE&H>USXpO_C@-}F?mTv`d%q; z?>SR=tYbSKQX{p+@{lhYU%wqnX0>3#Eb}(inuW)kmN`k-g z7PHr)Cv`J#dcUH&I_Tu*2J@S=pKZ?^;xLO$_iwfKB9t<$Tb?=74@aC03fJE%HQmCS zGht=SXfZXeVa8-8Ku$KyHjlobdUi+O$}8~rwlCj@UyubCbg3ec73X1OiFifaqmuqJ zVvZK3j}DZ!!PNDnC_G{fRMzyezggdh39w+9zyy zmt1<04q-vMK|;Dg8brE7>6DaSy1S8-knZl11_eb*y1P?&56|y?zwh7WaPByB&)jp( zH8bDka9~3^Xs4SF8HP9k<`XmcX~ML~590Wt6d-A}sBLiW0l!s}pK~-O5krF!|RlAz+98ku& zAy|##DwLwD7S{fapocTILz=5=CO}+koOculQmx!xwz+j7x9DKh=W~`<+l>k^2)oHQ zE&dAt6SY_GW8JK6A6v+L^bvHPD zLb}>Hi=hvH6Kl@QK~RKRJ@LV+< zTFS)A^h=12$@x*rG&jTsk^V)vSC5pZtD8J7k~r@9`0ne0jJ21t%EtSPDkzM}*y;4~&$Rw$c?9PeaE)bTgNtH<;&->tzg#nZI2y zqNAtnZj=7*>J<PvvPpx5($!KdcTwGrEZ88&(E9Ai|s*qa~h(59OO}%YD5dwG} z+)+X<&asi$!82bi(|D=WB8!aP*s!onW?`14Dh4W*ZS{T`{n%YQkO;Gxc#|gm=yTSL z#0p_&qf@kLvWdT`wBgh*-CM{lFAXlHQUCzU*!z3wfA%j*mzH8NOiW_qrr)n50SxTk zn(M!zXsI^Ei~j{% zM+pHM7xnK>&DuM^02`8{5yha}Z`9^r2P9aWme)5#xv2T~A#b5VOH017h>)RT8$Tyb zyZ&+4WgP*M&YEqgx|uvc2!a2)JF0BI8x*&+v$J@%v(%GdlJ)79lmO)f0CLnHb(F*> zNtk$u-=}-~X;9kVOrE=hg3qH>uO&GUnfhiQ6+|e_843ouNWN3E%mG!BrFLE1fi3O! zjja{+cnNkg>W+K&E!A&QHAAieOMKS0;mZ^->?4It}}Eb{<7wmel8^hjpp<| z4~x@tNTs$DOj(_<2vHmmL;lXSShxRe>eWl(&k^L=2r)n~W%A#xYtbM+zImuuWBK$Y zkG#A}?``A<#oiuf#-+AUL@kolR1L2rs9|QTB1$P$O*Bf;4>sn5I}7> zu_0Y4{#H`9KmJy!FlAnTB`sqfMY}WVOTCytOwxvw$Mq2Bl3_tz9md+4sj-mcCG$olbnn|-@Tt%L7D0$?zxFd%jn6F^7vVr*-X%_bq)Z>KpQ8gEk_hv4K9!V`1*Zs6Z(G6Ul zUzVUaG$z>rMYd&X^ejAF*PZk|J@(uRE4)|G(NFA6H=YjpsPKku192NFr~Qhh=-GtwR_((?>kWi`Kwzq>e$wy;Lh?ln`= z3I4>b-#QOzP$Ex8M6qPA`gU6&YQ(XE0t#*xW>Z$2o=;XXHW7Liz&oy{LGW=rt9LBT z@~D+%)bSDSTe)`@K{_;%fwO9|Wz8)q2ZY;kCJkraNq9=1T?I1f+;TC5krSK?NQC zb)dDkjI@tnlGY~;tSMRZeKj`e6pgC-v*BX(isn z;0s)JPtXgtL-M87)NL&YrzUk9^l|cSof|Ws4CENQW zpVGcLpaY$rI>=gZg1!nPSlWR|J=s5VTq@%15Izd?4?_tAYTr<`%%Vk<&F0RZ3X^{Z zisLX}8b^JBf{ed%2n$CwLcV@#1+Tvwj;$83qNCKEP>!jE&T;BJp zoa$zz|B@M~*4GDPVVm9Xw@oM|k9U}LLHp=#nt%CtheUA$e z!^bO-Dmn&6M}DbqVuKS_>b8+LVr$!62Ig^_dq)aME>TB^&q;6OAS0(Bxuxz3;P7Hpvd}sLA6BllHY1*eYyEodbFM^Ovc)Im^%x}*A{`}bl5FcY+3k&<4 ztTFqt?z!kuzq)YOpcHzK^y}9HN`G|7K;%|8Io@w6G5c{sSuPr>c^^07d77d94W4)KVyXan~+MkL&pR>`FpaVQq(1w-Z9t+zcO#l~-3uNlA%)RXQ)1RRMsiTqy)_ zR{nKHw{{NBou{@`#qqs+r#{#{LeNr_^zxR*377XzQempB7P7kqVyNyZd;0)*g|OT8 z5Ay2wjqc0hhl3V{XUh*rQb3xKPlybe*^UU2Rzq20ofw2}FYGJ4$Q7Oe-|Dw_ zzXI|JaF^%rvDLZmBd4aIf1I@f7(d9O%vHa^eP?=UzZK@rr7T#bG2K0 zz2e++-ezb4nDGDZwViWGwV5Qkn+|$M6?zYMq$(D8b2#1g-DEv_gdi#wzbo6WLrQ1d z%J!zOUz5nQw@u3V0^KmYO=ijdo8ULxT>4`Qer&+JJX>u5u|dGtp5!V#_$WnF_jvW; z8klSUA}lr-FJ(Q@HMVw0zj-5 zi9ud5FUts!R=3-uu4PKNSxORw{0ekr*7a_YD=lH9b)#<|0>a6|qDc3>GrP?nlOJfreXCF5dv??Wrf2af5 z82@pUS8V}=;2ATi1b-rAo2&gMW-}Z`oLCLRu$@%6-0ysfRz>+-KO?r0c+!ZK3qkk{ zvhT0_`O~-7?NLO( zu09qrLUG3id2x!6eF^_!f-ZpU?SHhi+{7mw4(pxSS6A2`hZWBO0aFPU{PGsb*;$W& z(ScJxO(&9Q=fgRH@ENd7^O6NWd2~VP9Q-OWA%lvss8D2&NW>Eheq*-Cl*rOMEaw%0 z<4p}NlE%i`U%$@*7|GRDV|v72Mf8aY5Mc~){MGoE?l#Oa{ls6tqxS8!oQ_40uG{`3 zMWG6ml5r%2gz15rKB`#lTA9)c_W-#ky@yxbui2}Aoy4`4HZ9c|&d$F1e88R6r8)?} zRHpyq)i}t{Maxtx1-&$1HcBAo-g%F__$B%vnpx~b6Pwr(!x#eTT~2s%HuzZi^@1j= zYv{LmT520H-N&8%(ju#XdYfDl&y&t*Y~qB%w&$# zNecQ7fTJyvg6DyzTUS)fHY)YXRLWgViC>v?H0_h8Yn`r`gc`txC71{4f zKwZjEd0BIhksaR?c6AO;E8mxxh#BKM`~v~AvJ7%}`{~w`>Y0*PTdN7s317@;d|B7d z1-$UCeXO0s{r~RWPD=ndb*@t3(ceTPyN6@XEK$3F(69{u9` zjqqdDrw%gT*(JTU-MG7J3#0hpCKMIm|J~aEpJA0zJ4l}ll=M$px(d&aXZCe?T^X6- zXIDyfvxxBUpPHqgYu%sPRF|j5fGh?Qj2~5@A zQxUyK2fU+7>sEqX`eM;HRl;LKKv+mO02X9t+Gppe661?icOj$k-qAgyO$Frc1oCA< zF;CkJ1&ZDzAkNZOD`yEH9>3-#5#ZYHxv)xf@rf1{xy=6vN{_!kGQgptdN@?eK$gQ_ z324WM)Smj3C3$^;;W#cSy1sWLLWM;DMK416A|nKl{QXu8Vv4hUbUsDb_4fgZPX>sW z`8D5=uPB6ipWQVsYI0t?A-=)`p=w_>gsAA(Apu*vCDW}a8MuG%z&B-t{&~ExKJ|CL zsPGf2Nv`LBPe7nFpfDD-*GdhyrY?Eh4t+5M1jpxwZ4Wbq-jXI7%g^b2)U_twP{z=Y zG%_k^Mio0c;)oLJ1DApS5=)YR+T0HF6}BBt*uLi&ea2|@`r|xnx6q0$;p(DseT~zd zWAwKVm|3rBO*a5q13I_-1+HoEeM%8h`#@FI=^HX}jb{4-F6w5$v-79$kFN&6&X*cc z!!4bVzkfxZ!H7B}0Eg(bi3Y6Tl_0HSL+vv>HPCxoXMB{kTa@&L2Sx9JPO`*+E6cWC zF7CTk=ZqdUfSV2=c569rK-G{|1rtgMtXj)N56fz#)r~BaGaV^# zc}kBfjt?6=ccAG{MWBLDo5oMle>75O$;YDP?FJRbXtCfQrurnJSnix4UoH^lLMHd} z>Wziz@Dq?&_-uguo&u|YaE1DDPGHXCLzk;hw1dw-wIN-hSYUO?<6(d5o($ASd<9Dc zMTGvKpWp&SQtiAVyMPwUu<5YFu$&jZPzH3 zvmcSC3xHv>({3XwJH{!UA2ka-^os)gof(YWGO%&GQl-s%P0iNVKd1GE58?YerDqXL z&tMu&$X=`paSpaaVg*S07ky#am2__66E|MUNZ~*#{D5~FUp4~LC?@lcVJruVHu`bU zD%wqRJbE@;MF}hL;>I{EwjMXNQ+jk*);o0X2vtFwg_!Ni&P?1W?I=rEZ1Lvm|}jE*M{ zi(V};Jg^08otSg|dvT9f|M~jC9%q&hm--q`@Ou*(wmh#mMa zBajC@9tG%9DiOlc(tRLBa#+=wu^+$d-7-dUKQt}tMF{hwm}KLrWt%Z6zNJg$??wq} zJ2DkX5hWo|=!G{}-TU6Q^v=h5Wj^QbD1N=4wQ}EWs#?cW7CTC5*1=txmamvT`?Hz? z4)-g7A!PeUY-qF}a&ybP>DXDc5O;POw77&FQM`QOEaRAhUUHX56}Ku3N*ZlwSOO|t zmXwcrrWCX`QlzkdvJ95j_K$f*%NS2g|J}taI%b0H?c1P=CFeyrspu9ZVXM;mM!X9QAPvab#zS(yGk{{!RLsC@Hd`^MuufbUN3-I5lac47Uo z6{V-sK%V59%54K~S%A_TypW4)v8)6X%fWe-Wg&cgXsb$s3{a*fsS$zv!{+9=W~54YHfsR8@@hKoM)T3UZF z{83r~179i*9(DUNkp_H4WUyj2)MGwz7oN>--06_U@N>S^FkAY6m$Y6@?){?Z+t$|7 z4ny{b-P>7!WMKs1W_7$@8teDn882+5xM`ZL>HmVjHH=aT?(lc%3{BP*Ig;zXM@@;EGVbgl;~70<{Da@L==hpyU%w_7g#4| zD?_Ds8^7k~H9IOD$m}?I=u>D-~hL~$*OHrxZ3X3pF`g1 zA%*Sy{PV+;(b*~q$^6c=c5Ys*zyqbS5SeuJ-1$fzk-Of->9wIV(UL;@Z;Q*;POAdjMa_MO zo$UY%63fD7$zWPQT6>$hwG%3ik46B`h|jL69m_^b%-g$scjIaVz1_JS?a`xz@H6U| zS}SiH!!x?IHy_3ZlQQLBQ8Cs<%&o4TDnsw(^Gsd8HE-|FR@~9vmA-lEO>t)W4k*P)ENvROSIZ-J7S#Q1K_CZ=Ra zHG)TS3zPRbQgC0dsI5qO(xX83qUFu(kmBIIn6KU`Sg?C{12ADP0hdZg>Fj_~j-`S= z3ox-+Tp6$HE{sd8abPcmoit+QqGk{8xS=QEKmhAG2o7CMFw2`uoc%5rpGpeyV;paa|z4zpXuY#IQO@ zhD3reRyL&XxF%WHRRJk4(*xvNHM?0eL#P4NN)BUajkh5A|KnmmD8O|VdwQLzpTR>Os3_Oi|X;fCAeUbTi0FBcWSSD-J*G1XlvMZ2lR-2}(+LU1Pa zxxXCn<$s$-F0OJDXF5fa3e{1g5|MJk@#kSlxi1$hlZO8rAZl>YRfhakQ$J6XV0|@p zoeOrv%HNmUAD?=fARt7EC! zP7K`~0<~ofei}MrtdI&0%j&=X<#5jS{V4Uya==+z0tilb`(r#ltdTv#hAjPvCzn-1 zcMqXvP9p9sY%hKP8!JZKDtUf(fQ0hX(0x#$@sIs8EvC-P}^BtzM zK%f?h5C!{1JepHad-_<^uzelwY$meEn*t;H%8|X#X`=2Sm0020!J0BIEsKu3XByMP zzRUt%!n%>GJF3hy1CCACqZBi>)K97KTjdU6uR;n^z1wdnZwZUo<6FK-q}qHcKo+GM zI&&Yk$l90q0|c;tmm<~n?>!X8C6pT}VQ8qWe6uk8$@<&hwb8y)y{tFPI|1B;;3uGu zI{EV3EF3xh$LgUK_}6P7iAgQX6NIlOh2!4^OVPBD(ba{{@#~M2VY*xJ>x?)*@3O`HCc1ooYD#VvTA@npy8pYw@q z?;`&+4_`;N(B%R13Mq$$Nm_F=@y#kuXKBL+84(4&CNkf98QKHUB?LNG{9B~LF4PTQ zU;Uk&kS6Euje^q5eSDzQ*^0AdApI-hj$jWk?>UR?+%IeG2I|yu?75nA%bB|#N!r|< znV(HvexPzqX2l%dcz`@0_ud?7ES-lyxzkU18u?6ar(NY9k`xb=bmf55u98~POu6;^ zcFZ6gGD?xwngo%Hst-*1Bj>fZ7i|#;vqhtHE9J5h(-#$P0{QoRn)i2iJs%so>%Sc+ zhOC<8O)V@`6&~#lB$sJa+se@eA!WWkiPS_Jb7Gl+BP=XL&;A%Ea=GxRcj;+{kkQDb zv-`NrFaT9kkfpGv5gM%h>ED#1K&IYq66CAC);o#EFAZNBx}OH;zgcL9uKZ1CS*LY%i|ll!C$`aS7j&S(nR%_%_h$B z#M;&0rmEu%e2mc|=|Vt8(~!eFr`)u%HJy%r(2avITNFw+D??R<9n27J9gkt9-OA4Fyn2;5Gl@uC$er9&(x3Sj`&3Y6xi9RyJl$qg?>On<-W^`Aglz7VJ3VOeRl z2L%4j-zsnE`*dCxi|Mln#<#71FY4XBo|Kd=R&ScMw6qM_^jy61I3ocHU{!nT5OOy) z+Tlf(|XWrSO*<&V!l{fO_(BJ@n@_K`MfU^pl$67JPi0 zhW&phCZ4{2imze^HWr#jN#eOkfL|Y-HF(AZu=?>{yjU|{{Dc2-P-^MC!8LkblHGC| zN8pqyaO!H9n-`8^;^uaiIZ{Z^Z4ie78I+x;qI!Xd5}bUHxc(KOf8?HDYbUt}L%GN>@zMKEkm=S`L+62Wtlu?RmBv zHan{2)RO~cN^Y4`#NyBdk^iFWrmJB&lMlBHYg%JOo_lmKQ%!)(9mi5m|9&b+FQ zX^QdhZ~j?G2`KXraUEAz1sUCWV$*2WH4PNqfY?DqbBl3{kBap%K2qjy$o-BHf!eN( zE7%Z>zO!Zk4YmOe^i(aNBjL}4YfrdRY!%$bOjEsn|{Bh$_;+^CZHkIHp1{oKF zbHA|E`VX@?O;}z77~B5~cAd}hU}&;_C?!I`nc7l2-%^~F=gpzgLqG)fMY2@yZdFl( zNbxOZz=<&?^Z}xA1vjn15ijU@&>ZSL={5q3iuSXgLmKsVUO&h6Fr zN;@A|#Ev?>cyCxtMThJ|11LW)C#D!t`55P~2eK9a#6@3N#0JZuadX}aK~swV8yfS=Yee0fziS}u-YzNy>1#+*~QlKTMGQ z;sL7dAZ7BFo657rh;HlB4XF5?8N5}oC{CcU$tv3o$m!6pBteAu&(0x~ejh)$q3&x& zN5Vg>B?km4AJrH?>DP>l`PU+uI5KnWDy}Kv>Y^gTiVqyjQ)m`{7k5?FG%%vgZTo^X zi5~toJ?SnWheX?g7Ne>-f(ihFKe{4Hs^brr>2M< zt%+E^^^G*QR76r}Qlug?2B;OBo|WLNNH8Ef%t%RFZ7-(&i5Vyv_upMMD!dVM0x)c) zNGYjWR`$OasKTf>*e3%Vyf1OH9$ewSZF3ixxHV43<`m|6U!3VMW!{I==MvGypaoCC z&i{V2Du8h^AW30(Eq~t&!EV+cevaq+G_*JVE~Zug0V1aT;Obf_x4Zjt!v%5DS-+wr zK*Rj(E3IkzZ8x3@2uo^o*bu~)N~SwM@9<`IYB<}T#QWbUjzO7Itf1cK#Dpw}f-|AG zhLSKh9^#8z7K49=Z+r_8d*Q5cq@!AYTiDf>5CLoWp;E{AlOB+yr9b&Q*S=6zO-S2N zeSO;6Dy@4D(JkR$`p<)d^$i#Bq_b_;G25SNH{`nY^AWE1?|)l=gZudWgOc0MMm#8H zyuoI9F<%=11O6a^-%73_sV=+m-$fGL6i_sdn218%G#35HmpFX8&}K;H?uM4W&ulAl?YV(# zONXk<&uy$Lmq1%^7Gqh(()OrLK6vHTh_$sf5ZNvQG94D$Usq{`_}11A4sr}RhQ~w% zZFZ+}K}**W24=!)QTG{5;{tLb6>o$zMDEC)zavF&tuWyxam1x13sYw1i>Kj=kzx}_EeLKcP@Gl#1r0k2Fl@~p_~0K)YGsNPY31P34@ z$15RCXge-OoY>TOrS_lmV5zWhtm3Cnka+Ss_jPy| zehv6h^0plPK{{CMRcpJ5WhsQj9ysgiqgc8EFnXlP*sz<_b5>Rnn_7Pqe{3l8;X!|W z{pLo}7fr9epvJ($#HT2$L=OV63DW%LX-uKcEED8+u7rKJzia^B<`>Y#HAF= zME65W8fenB_Q|X#FhkD6V^8@x+K1M6Mwm;`lP%}y#JJGpYXorgf zfG;-{UOPWO7&SBFvWD_yvJA7fT&%bb706WD)IbX2e5ankA$G$1=Dt0H560AwKFleO zlKk$M5cu6&DKXg}GxGx)JYuz`ehuYCTM<>2p+F6P^RLB}v@z}Maq9M613V3v9APr;^s8fV}n!_G?2mr0%>k0(Q5)kQ? zd+2YaXKbhnATpkIhgL=gI9Q;Uj8)%uza(WVBl0#MDd_1KpfaD=auX8N3_MZ1icg}U%nVXWraZN-wRKf5PBInIf3tQclbrspf8sBcMfJV!5g)$ znf5Kb!Jt~G(DCc{bBJ&rVktfUtglkV4ylHw>im3LEIQgpm%j$4KvN_cweg&8w#m7r z*QYGslWXO*J!N^dD+X26B_1MwSqF?se}b{nq5)U|t`LPS(}mRzot&o`rGDvtK)9Sq zh&2=UA9@%sj6#O&_TW(1o8rxUP$@M^cVuTPF)7G5x4rf5tpDPI#aSR;i^NjUu=WWF zU>!eyJg0Z+iLluk&`6c0qzxJ0Hyz(#6iBCRJJ>}KHp~Eqm*y)yzEe$GHp=KcGRX#b z;?_36MkjW*k^}EG^_CxDRD*VQ*G=q3^8+inMVUGTVM5zE|Jh3~ydcJeVy+6P%bqrip<^TWn4a(N8wrYq@fg5M>a%WA(pPQlurN$YA7GZT^P@YS##b7JWToLFol^?{EX9&)$Z` z2EVpo$GvXC9HPHv5IeC}r&N@~Ms7=9UJ$S&Qba`fhsKKRU09lK)uA6dyMCMVTr$Q; z9|H>{nwSyqqzl~K`ju5SG(v!c`LHm^v=A7whVz`3RX*0@cjO? zNX6ER9j<2UvOvaGFT}x$DJ6(JfSF8atu6D_x*gBkR?-H^TgWG(Y#UN2N^fUu8mfRl%m zmrZ`7cAy%j17q+UsYXN~kftrWbt|D_zH9wR&mAYLXTk1riS7UW)2B(?%QPSom_oov()>K0AhvB(TsVhxgUMN5skQxbJ zz-KUpb_xO`c@c*0tF<1|FD?tq`#XDq>f6>UrqX!&-)y(&zc_G1dbh6$h@Pt0*@E>z zVAF>`HOD|9S!w5y!vi^Hq~9~V(AfhavnF=wv{zJA*eRPICCt=c18IoQ`*!S)d2Fyt zgVKs*wjS703M*;8>v=(1=!qzT^<_grIk~UW=eW=Q?2XZH(74@_?m5@%Tm*7}bjQCI zX_E(r!YVbj+!f_jiqS5C8nJ52Q%KR#71fSCESTt04-rfDfd}Qt(3d1&3pRZ!JP-=R zmvoI_wiHzpK;SoMNMS>h?nxPET~tDv&0Dy!2zi6lH>e>Wo)fOP=9m6(@Ec6aUi zU%L|>*G}ml7JOe0y|^%E{eU6iMC zPDAmjS7p`5I~q5AWygIVYP(|X3Pg*di9sqiYZ5>op|qDgJQmi|KhcM*(2r{`t}gpl z^RIKGi4lR&n)uslaqHw)`mlIbhIvDevwkPXtwma5V#mC9_F}F!qFEJ30chb=P>QjS zke|sRhBtiy);HBZ(YQW(d6NH zUi$9kYrQu)G5b44U>o;S6S2vczW6n8vy`G!U(cZ5?jliKM@Ha; zK|Q3|-AK#GK}*ZgloL@TaSA`H)uTK2lI+$^awBaSBa2b!_?6(c<0StE!; z{Un>f&P4;=chcd$cAO7XI;T&&OP^0NXkwR%O7hbhfW!I6vMMlq0h80X?q3!;lTsA~ zN&EpDtCn408N18-l8M_5^JbIBioUP-@3+2TzceULH?fgEsu_qlAE=Tk$jH->owlZ@ zMh1Z+!70{40HUzCCU|ggf41e}-w2z>k>g8ax8)NmCa+=uj@tmnq5uv40UB^cwznKV z_cKGocaeS^siCW7H!2(Le3;v__b93+q<_K%x}&KG0bPo!Z?+=V%r^XgZ~#Lj)tUP} z8W}N$Mm7kGw0$(V2MOJ?RX)fDmX?ZG(Z}k6Fy8_FZnzm)qX|)TpPK~I#5H%IXI1V{ z8-fV{(1}E2z3NDW{bBa6{Maca?Z(RzIz5md#i1+E0d9|sMb1wa`_DeUc$~kaX4c77 zXvIk;A9HTusBo_hs9jYb=Sv5jH&5%*!Ozs=XHjF zLG`wIqG!@qQDP)Z7v*fBT{YxYoBtkM4;*0wLa85A|Ne1bSoXQKEcm^Ib4p@zTW1m5 zY73ORj;iZwz5(6Nw+Cm4L4$a9d>{P|E8wZIJn-^G54c}fzQX=d=nWw)wdqVcu$?FV zrM{UDKrf5uhb{eK6|fshFQ$eNky**M`;JqJ*2hb+q)jyk#9VMU_+CMQ9li8UPYjA= zl2p3oTT82o4a7x79_LP(zfApzv>_6PCGvd+jlpvn1jV7G&+YxHBSs6lBWbZt-me-X z_efgksxb=W-M|Q-(;)u5^2!MwKx9IR!TYL!$W&uS-?4WrqAmSPJFg-#zx2&7FDi0O znicb)DyzTn8(O7-LEsz{{$yqUcEj06zy;uLT*2_!P_cU?V-YMkEG+%BhY&;x%5qxS z`C$q+=6ja;{+V3V?kEPr(Waq194L}F^izK64w&QBJq~3hl^3W>ObK{t8XiFtNKsK` zQf1iBMimzVhiwJgBBMG0J^d)hd8R-sN&hH)|1g*AnLU36=%=5@moXz4K-Y=y2du0< z>Ewoz|Gfog*!rag3ht@EGh=b z7o3=~_Bc`xGz3Fc$##iIsE^1pl=|;?@(U1bwr+bUo=^v0D{-3Zxu;)P0Lcd)F>Vm% zP)~lobrs7tf<5Z0UUVxjsP2UqP(~@p--*gW%Qr%}avp}@y5i8SW+@>zqj@9UyN=qu zy_AU7*1v#_nfz5$c$w&@hvM-h13~Eic9xNWi|kc^+WocN=fQ()j_@XhB_c5#?RI%X zW;zyl4IRTPzDrr^ckezzW0xXlpZb(*H`}VdZa7IpYlo+qw>0r2)MS4^-*RN}#^I_x z_ua~8Frv;W>Y`SeR(l0m(|YgxS|qn*&!JX9VR>GT?r!0qxS^q8+S1`855Lchd8>rT zFj+r?zG#A|)N^N7!Emh-Ze|<)urj2TY41}2W5CBy=m4_Ts!+Z}p1 zpJy;adhwkV=_qsYp+RqJUB$F05j-i7A*SzUdfs>Vo(b=~+E&_V&mf-SF`s;lSokQY zp{@Pr+pNv>v4y+A63)>6Bcic!Rk|Yp-dmom^9fCX02RRr1sX^Z#iy_6I1Au5n7nw; z<7Q-Kb?^9uSqB0{1ruow$9Iwqaz4CwbX|h=2^L%Ze0BjDLs@TFTeCNXJn+oz+Gxxk6p34-WFf{Ev6IKJ2!WDiVW@voQ=)H?#(g#x54gE}r6VL?}INBSH z&sl~x4syd+Hb9okFIuq&h&>n>7$ymLNaztaWnDX^I($XtQv($#-z>^P=G1aG%0L z6*PEtTvoP(-AO<$LthM{7$QgZ$iQs zc8cWdulacutKm8qyh@@lkhXPcN z6b4K4Zn>zXFI0XF^jLcS6k&5f>s7I&ulySqSTiypwf`zy z$oJji0s0B}d#4ysqxDfJ{k^Z;grw@r$Iy=mKq(0;ioN54|E&#~Dc##wMgK?S@Veyt z&?npvp4tKblNXps;DKb$C!LCPbDq27TvmBpzdUW0K6E7DC_e8B<8wlJKiNrIZYeVN z8!VnR%CJsA1p}iZWdo9S-)?vebp8@9!TP5bs)GsnZ}C!m&$`^o$ZA)YOVB4!$Td&q zLK0t^`&l5MMXKSrCpHBBjl?36dsC>$P5=E$IA`?EnO8!C$Or=}KWg#BD3yyhxVcWwC=RNsJoR{0DyDp)OmOXX^kvsB8MVA>0OI zfrWG*tC78ujo+ktw(id>=IF5*7+C6u-q;WrGkeYlkdlb3al8Zncs|YIX{LU1!;!TN z6ST#lYGi$qFJ(Ak|6B3a8}0Y+U&bfYW@Y*22nm(M=TZGnyTVEU+p+=S?{ZfWU>_6dpK^)Z3(xTRP8)z6=*i~Ka*gYgq!UU9oCv02j zz(WZ{qMaG~UVp^QNb>G~Q#L_yR>wiV{2aL3Qp$j9uQp?UfWS{ABB1pP61Um&NiG5; zP11fFX&RJY8o0gTK7@W+AV-xY#4;Z{+~Tps4}ot^cS%;d|C^L{PK;`w^B@2T-d@M) zh2hIkXo{Ap(ZyCSJjAHyE}0?ch3-Vi{JF+UM-4lm$d|o)9sJOCo{?SBW3j;f2^Fpfi0aNFdXToEu5{qS9)Dsjg0-BOB$L@S8U~P>7Y|K`a#t5Y{Tv~ z{j+x62(fj21HY$Xd>gkJ2bQZ{Fz26PmgAL6=^Kh(mZ$sEBX>UE&x|hdwX}2tCKX>G zX3zG6Y3U=4=q#Ppnb(FT_|6?}OpE84CZK&UoFsJMxF3$cii+cDlsSBFB>Q)rP8xqd zT>OWa2$5^QV;R15P5#_wDa8m9&-*ZXT3yYg<;2+~Q`Iln7-gkJoj@%K_qJt8;6S|z zZWSB0=GWI_WR?%JtOz2r_rdN!VxJH*u_F_ZdB zy`=HU+odV0+3aZ_v(JHj6INlkyL7RU8>b?-6ez4#Be^q zc(r!xTi;{!FVwm@IGyS>{S!VfK@t!74oAi)S2Kqb+BUu&-j9C4LMWhvBQmt7OR{JY zlb=|(g{qlbhV|?H66*L5t@S z0u{_$XE{T=?%i3-9kSQSNe`!PT|p=y)3+sFS+=UOEe4egwWuVtBhL8gUkkqN-_KLH z(%hcdB=X;0Lrfgs6*Joi=*a4OA*CC}LwebiO&wDcD#~B1$q7;ig{B?>dA_dy*nxY6 zX58_E`Udx$Vg%K76D80g{@?DQF94qg=~x=ahARF|_+Fs22G5uJfu^6?AKsRwIIm`| z0WEyFJGpziLZeK%S|X0biL-IPtkU@;ZGI+5gWkKa%E(x3$+&vy>FESCm+%{|vgM8! z@Rbn)Ew?SP0|spe-5`8n@rd{=`0M=w=Y|3);)VFcYQZP9hl9x--#5M@xJV@YUpBI9 zbI6zRSyO}~@)wn&0*%tByEQcY+N$a=Y?|(QB3B6lZlZo+%SO@2IT`B2Aj(A$5YVPP z+^{F!8Bx?w=Cm#02Ik0KCKBNV?TeNdP1C|*t$5N$uj_43gdalU|%S zEd1r5xHwTxP#QWQm3-x^`HLpQSBBpH>^RWR)y^4ERP=a4$_Icl9}HbQ9SuG60-%X* zptn4AaBi+#LcZcVX{Q(I)!#8(YUy!uFDpLGJ*w3*yLOcY()-P65jk4R0@@TsP3m+; z)fdMCTQpC)uT39s*jzYKaV>H9KscP7K3>k7>vr4YS?$LCn69t-8e|V%=2gTH1_@L% z(bMZBZSI=a=7`gI9+tE&oew#2oL$^?xC7P?>GWk47?V|o49j0Fq0430fK^1xWc0YXPdKd{!CwdNXMUXZ5u)fmvM0sbC_`^M%|ODAuFDE9?ncgEtPzJ?k_ zaLmOFIo@zmlDZ-Q#NC4=BGW9*sCN z6W2KAf(rrffH-5Y;jv%0B7ToCAUORMW!3 zFO}R6q51mx!w{nqr6=XQXGx(v2K*P9W1@9l2#2VkR|^c{N4)?x^GF5*V~9hvfR?Wv zOZI+im%Y83ejN<6R-d@>Kqd5IP!XIRtY^W!=~1FvnSC#Py95+vS*Dx(_cv(}>UnPC z>|6vL|HpcYV*5(PP9_fRdD-OXp7`;%dn)kK&gQE6df~W0&iAY2wXAV4^j^vSWM@iG zfyuYERKO zHma-$f*=S}Q1^bJDhMx=CI4#&ii_)69HePV=N4pUrV{IGF7Xh|CGMBWj35Yt=mw42-zx~hUcu`w1^gmmJj8ArAcQpk^E z$eS2NloL%XxG3`TX!5ft^7!Z|nq6-Qf*>ZRo6HS#KmQPM@9*7TQgW6z0kC<_2w1sb zL8NN21PNAaD19z@y;0=3K&*mb)$0vXB}ot!C2CN^La1_+z(n%TT(nRh#N5}&1uqey#W*s|rcIRLezhOWF0O6jG3=v|4gb^deDyeEP z^>&b>RgvYe>pe2W5c$~nAV!CcdN_nZ568zI5%RZ##)qm#kl&NYG4k5KN0M*9og718 z&irTYwmn3*V5k9taVH4kBgpscD*1jD zlkeS0L6S~}%ks%xrKSBQ)B}PbtW%Jg89|H;t6;N55~IQfk`zj|M?wWfu>tjJ&~1`I zPsN~z;@b9#7R0J37C{sv$nORb4@fZafY2BZYHUQ1n_w6W8X6eeffy0GM}LKU&flji zdt!K>aNBIB^ysX|BWM612%@neCntP>cp?)P!4aws29Q!?A`;MZf%unt^4UA9sOkswNIs8eT|q(T$z(r(s<|;}03ZmW z8~L+mhYFFA5oBv5+)E4t!Rw{l8{z7pkq}Nj6DsvwkjJ&3Qv)NG+?Zm?zsJL1+AV@y z4~@pZBnvTx{{joNiEml#KSmKe0CEkVv@=rc7OA`i*e5KKI@<@f7)X6~nj*}R1Rph;?B=1!vd0r-x316{V zFJ~Vgpww`!st`fb{sC(_GNYYiZnr~pWKE9bi0{}q~OlZ%C=B)!p-sl9p%BJ_EFEObon-7zGMPKc zq|ixz)-G{a z1zCg(bOHxORh?ww?j%2RlAk%r^G@>IDR{k3uhrTK{ryf{rJI}o52lV!vWl=Km;e9( z07*qoM6N<$f@xzgH~;`@mx)kLM-2)Z3IG5A4M|8uQUCw}0000100;&E003NasAd2F zYF0@^K~#9!?Y#$hB-eE&da9}uIyZm@8W|HXn4A-5n3I@;NQx9~$);>smUrc~*Zb{y z<+Y_}YxSJNdM!O$wv{D{lth`NL{bz*au|n`IFXYuGswBo-9YE=s&~$Uv~q8_ z<#>+@d`RjGhd_po)(+&z!?D<_U44Cj+S%9lS`wYO`mD>hY)*SvCKoEN2nPH%Rparv zH@CI@mBnKDO=Y#06r&fG(>*DXLCzpe&H$qVjvRYD9{ADM{WU zl*e?tSQZzVVfs8CkX_^uY9TBgJm>m?@xV1rPKL@!*2he ze|Y#5&2@aM>;a~Y<*@S6%Ael3e*L5MH8oGg5($o%!+patxb|f`uW3t%IDmkR&Ld8n z?R?+x@CoIamw~~|8&%2|$H@;owROXWTN=FHXVLh9pW5q}M`;gUaRR)@>3qmmQSsKm z$jC+fS=k9>-lS5!Fh=#E@p~&Pn;I%Be-JMl|8g7xJ#%{Y^4^f4Jv@(vds@DnU#?&T%?SzAvHin|T@dD;s}#OimM)5tvLGTkGn+Bp^t< z+_M8q#sNrjR-d@v=eylxwLT1@NKdv5^pwZ+VMvRjXfc}~+}PfJH_aJt8M8wr;Q%-} z-#14?HpEBpravMeO0Mv}Xn##)RYPb83Q@Hw<>7DXe$h=8n z6yU`61!8Qo*N0FaEx)*CG91?h5|$mmT5gLL-t<((IMdXB1ds#x#c zVnUw3fGbGNNr^cu-->py zpv|yApqQRAnIAnxJZ~G|)HJshU!n^u<&>`jC{f2m5kVS^2mTQZhrf-HKn3WKxJS!Ak6VGWZyi6r zbu1W+t8=WlZr+S`<@?yqBhiM8-ed_5ciRcpQ%@vVRvm zfQDzv@dijH;$XxOz-+Yw!?t*yMFz$5l05;JM87TwkY2MFI8gxp%G>z#&7iRp;8<}G z&)3+D#&G}e@SEZ?Q4cCQ2cXb?X{7xc+M1ichoOH3r*XbNA^buz3c<#GFtG90(D0*j z0claOL=rlI7}%Uuc-qBE_Hgn&$E_A|JL0Mxz>oFecHo2@323-Lvm9Yjj2aYkG^^I@AO@Jc{`Wv~)g$^7*ZP@oh$5%LlH~HVwSAH1n79mR!J={i zyd37In;IJSn9b%-E8Tmv5B+g+`B#1f64n}A{gXv!{A{4X^8ybc{~#n{3ACXipUdO~ zl4%e<9!Tx_b=(@n^oYm=Vo~g7^QW5X>h{rG7lKI-$-u|s5$F1Px zt}oin0yK1@`yy5CFtq-08RakLq(U?h0t9JNTU~A?3Ml65!RM1kG^TbP@SO*N3-;m+ zHi3pwI->;P)52PoO9 z(xQj}6iP;{bULkVD_1_9Os6XqudK0amO$c-UKE9xkK0o)>_lL@f7 zs-WoQ5m-`|2$HuM_~A<+44%;g5QKC(%{i>rts{ZJzeVHmSgF>R6h#D}N;j=;ZvJoh z6jtdf^To+7zxv{H$OMF0!cTFpni2y9qu~&QF%l?xKrmyZuK5f|78h;=HP?Nixkc3S zinf-P{|-~#rAlrT{6#6*ed*T5#+54@8orZACQY2qGGCHl1XE-P(k2H)s@Io56u|Bz zBym4$C0bA@@)|HsR`-)CD}h6%L+E@5z@!5$h*5yY<=TaN&8PfI8~=YlGn# zNHyy~xbP}Ef&k76O}FZDYCt+|wpUct^b8LEh`>Q8JAm8`qF{*qT~S|uV_i+n-=tD0 ziOUf!BVnv;hzFVBkNbAW6>3Eu1&|X+#3Ep^yTM>I7WK8TXOYGzz;40ovV!5lD|%!I z@{|r-VX5*5Cb!@W-ajDM}Qma)Z7WsoKtAQwWEIjzeW=YsgwZ0 zLf#BA=hWWV_?x%|*em5j<_jknpGrXWh3DigK(Rk}l@<*7AvzvX66}iH3lLRn0!Z%v zZJf;pJ+6n*f;b0vuW4=lEq2HflA9~Y3z?+-TrPKeYwJ_VRLZFj?Kki2LO{?2=80a6 z0DKVhtS$*!kc=dmjDy`(UHnds0fI;iRyP1Y)(b-4aXkP*Mhn_(wjGgR@EhZ?Sh!T8 zfP#zwRLZ5Tx%u<>7#lza{_=FL5-Sd>?)WJPhzUqM%SS52+qU5A;RFHVkqMX>8!jDM z5Ceha-roethE9#}8jWc|+08&bbrmv0>2wt;xQkF}zf~k<6>dOVR35V_84cOSw6 zjL{L03>6UeZYmjCFcFI~T2K&*d@ieipxX_QNP^+=o0>-flU;=zj$O%g`p2cxRj3f3 zJcmfDw6(qcpYZ{1EQGe+Ea8-B!B96$)NX;4*@b{$abp59Etq82W_37Af)?aNxlTan zcmufb2+kT}Iy9{lNa5bp=(O7#I{W*dRH_Bb4nX7c5qE6bbeGF&{j)UU0EN=Eh0%hE zakl!8*X=BRMgXR0!3v@UO~&Fb7NTcCPT6Jx$>;*%{Li&66r#bS(TgUdah=I*J~A{q zdQPFGi`EGgi~~?W6|u_g=GU!Q@dE_@e7U6k<~=_~3!1<(-UTuDDkctE60{&1jhIRy zEm#SqP$vLsd`>m1LFhjP+-Qd`v>*=N<8p2E2ZLXW#9~F=Rj80aK<12AG&KBY+-q%x z9Ax}uV=$bUg6fOU;!=<(GKHWShDr;L2ap;JFx9Z)rv+t_E_uyw%aY>SS9Gdfg*LBh zX!x9R%%TNR3gX0>%olR4wH{AxTT9E6sZ`3AAKGu;*~Mr<(?mZctzL*$t|<{fP=Zt< z4pyWEi=N$LfFRO>Rkgqehe7B$st+xQfS}!K-4zUnzZH%~L&XXR7K-QMje;QU+pys; zBtf_l3UT$HeERYi^F$wn5DO4-mEoY+w6~{S5-$DZ0C>TGc!0eG06~zqH`VQk1-uMg zA|iJh((=<~aN1r|U2W|e82Fi(PL~}(mUoiLe646~++I^t^R;w}sxY~{(th&|$^|gS zMj1UAuGv}=Q2;kd3s!<)C=puFRT_7)=`SO`xV z7a(5R*53Z_cmvx&Ynd-yj0IR*Fsc)vMj`LfqrLqhm(%(AwA|fC(BU|mpF7cl zLUICxR1`w>yNlleu=~VA5~BdK)d@zksmL`16R08ZJA|D1Rq6Jp~KX@L5p|i*gXxmwc<}8K*oX6?hJQ4`}Ycw8D6ca6&w@{mM zsmUbUnwowe{q$NrWWGo?yrRMa4fVB^4pQY`mY427E_%-US=#WQzofRm6c8P9?u^p5U|lY z^cMskB9SQEe#>?6`=9%iJQcK_%p|snEI@_-0=T>1Kt`aVKpTcG)?hdYjSOHUP~@`c zG}L|q4Qp`1eH6I(gxn@g%R}JYr3J?4_5P1FD^@gvtS49$t3h5)l5(hx1_M;CS@Xq+ zB)J5c_S0;p(Mq34B%!XZ2JXJ|M%c1>E!=d&HOwIhT0eYAVj6-~mtFv4WEezV^L=I> zY(`EIrlumLQ7y=`8J61p1c>e?UAhV(ke!Oh<4#=AzDRRhDw3{3Id=eRcb{gTZ=cO% z`jjMh_t9F+4R9+458ZzU)YsKQI2?t?9=-=EE8T#UjmBF6i5a~yGK5axMV2VUl|VKf zbrqtvVu@(H1iA{zBBHFT&~Dwj3K?k2X}8&)XsN5)4@J^dD5odL$@0pe$b5Y}EsCu~ zrGSQxh$@Gpu{f+BkukkV2!ct@T1Yk$^)-PJjgwZY{S1Q}SV*5UyUwvIHq* zxZG8!kgg}At5DZ_zy*6WFBVd}3LzlaHWUa@DSN?ZR^~baU}_p`nwma=VbTqH$b7LT zzWCqAKXxzJY*tcoVM@5sXcX?f^JZARvKeCWxaJRr06+o)t1mpOoAxM zlIbc0W?rrn09_LIWce_o@w&CGt)GM<=qi-62p~h|%iiAF`ZR{(ZmskE$1^{0dKs02uwzUwt5jDV*!@&UWhvzA?7NLu0jNKrjl{6 zk$hN5(1O%es0sLyD>+CL-|Q z{U3olZo8f#{?iSd_WdT45q!1P@cJ9?X-^A+EFVT)g+!Ab@qmq`(^V)QEv>FXo=V_i z$O>I~TbHgvR4wRsI(MZc>8Y_`uwc6i<;pYh20@TEwzvNi-koin#?^i*?MI0JfB8?p z4hDn3jC*?IMgJzgwyB{GhDXQXv!g`h!(>3KWaPut zu0j`I11>VAPgfyPG&|(3LO(3ju0p!IbCvc(YUCEX#qt>56wQGV*|1aa$VcylT5lCP zgW0J*<}A<&Jp3U3ZcR0F9NN=@R4wR7TJUEjpdt(kEhsP*;dnGwI<%nE4#_>gp@)hv z4Wb1lTSdjANO|811xgF*+hb1!{_J+xyk^al=mi_Jmidwq{upf9um(Q;smGXc^K(p4 z*;%B)>-8{-@ZfvzgIO&DQP9U;>^G*BUV;{Y1M&NJebCU~&>~R@_>ZrnLPWy2zt=Hpm!J`k|%_zXd+*dgYh{C?T+u@o$+ZOCR7I_z#Za~$= z=fMyUlms3i(}EK)UV>ePM7vkU12`SJ3W;Lf*7fWE$Y?YcR1~0#15hZBR6|qK#zb}X z?@B2a0&9BFEaeyX{`cN>3#_8-zS!c^F6Fr^XARnwtU+z@Km-IS3J7(B=gKc+{lF5a z6QIXS)q=@*sssQ*rCQKi52+o$0$d`jN1cE`YC#5$``xCxx{Xjk)q;9?BBYCX>hAM3 zJivO;f%c2XlhD%K0H6DvPqNfsmb9`+>s4vN`ubW321D@v@iSo2ffl4FfOQq}ZibY_ zT{2yT=;BI(7UVLz3SFYELc_Xr6~cLCaN2B*T?N!tNOLcwbn+3A^S|3-Hs6<)Q8~?N zKU%FHefVyu^enByPpusM==~poh6W#VELzio6#5(DL8$I{UJ(r`9a=CJiJ-SHfjWUS zbrrHe@|sV}QexTMGO?G55+6>nfBit*%1eRjfvU z8@{LqEhy2-?{PRb`a_|D=qjXb1fYN$tD2fVN1an79ol+RKta6y<4F4%WZ{J+eUZVZ!2to=ITx)B1$%~X=P($ zL39<;a$nBl?Mr(rE9=^tnw~`1)2cb`C&;wlogcXY?!WgoO_6(YEY=DO6Ahs{0X-N2 z1_)ADp^7SqR<@T+SD|D)#%RIP=qi*3sj?Qh&?pGqNA#oxcNRidAuYWRk1MjYXY=O2 z5;*R9&;j_P48BUF{Yc}F#6HPrwVHHlJwam`2_(T>8uDT21ja`P zAxTthDbxuNEm-A+)Xq=h_fcJFL9!9FmCv@+;YxtElP^F}vx8Dr-j=m%zlj&J5;X4a zL!3YH{Hs^B!0-IlCnnQ<^>6^hDAd(@S*q}nW2bbG4?~*~l&(V68z6<-fl}xylxAIp zM6fyCrPEc2Xu&J*;C7&2x2{4Cn{7pBfB(0oJS_yg23Nw;+mQBq6e*5dMN!m6=8JC7 zV~^YePKRyLS$~VVA)Kr!c>g`O;&z|`S%!r6v>-Zr5)7e!0>zI3z?6JgU=*U^aB0Yg z5iMvjKx*G_>2)mv*$UdsZClo?c@&tI43~5Huq7F)TJ7g?xhfReuSyS@F9Q20UH6lZ zKgf(z4<(?+g>!q7$F z20ze6K8(?VcKeombro8YB{7*VG{&~(=0Cvi+w`FQXtlT5D&XTEyH8OS*8ipminbv2 z64<_VgHCkm99cX-jTOdy9xoxhkXW-TL)4_x^)$5Tiw#~2dYiw@(Qy)*rd$Y z%9X7v>g&IQ0G*kaYic!@`MM9o@w@N1Nhd>`<Pn;q59%_xM2rGV;Q>fl zTo9>RS0c0^_1%cdv|!1|hvBtE#zE*jsGEG4$KlwWlBDmC1%v)v(t=CzHoOsOzfG%F z{R0}yZlX3oYniWPimCSe-hX-mlq#y6am^|%*xXbPgF_>5`hyElp$9F9$Ds_tao-L| zn`}yJv0|qM6YQ(i;V2DSkhV8o1OzYq61Z4M7g~_Agq;-?l|6%lKgp$hSXM4tmHBG& z`L3&|sQ9EPTZQKN{s{!&9)92ssH^kpAl(cK*mJbtz z{cZL2zn*DpdX7aI?xe`4)9GBZV#QM!61(*2?h}CME3Q)U%4glIto|3T?(&SD{AWM>;_mIHg-xA&1qveKZ*SdNdY` z>P-tS%CaWA`!qNIA%10j&_QFFFQWZi2p&E9@I7*$e&?J7hq$9C`9!nzIX)m4b( z!-T{*6A>wuu0j*kRj5?t!-(squ0j0qc$Z=cr=$(D8Z-P{(tZm$Kavk?#Pb{V2jIjh{kjTKoxnKjD&#D86)LVV14zk-Iwg0n9rJ&}|$bd#KnJtz_ z_Se;YgjDP$ooK;%9e|?mpRRT~xvJ*oFUw+(oTjk6n(x1L%X+xwrhNq!`cJzTOf#^d zzJ_TC>Qa)7z?o>M09VgjU>iBZzSlvSCg(;&v|w z*bi;3s;TLJS2`Tb2K4|0=e05wgjm_!{Mn?zumg0V{X~YWlRP)=v-3&&%{K_AAZFr@ z+pmXpYgZ#J7}Ke%P*UkClq?zfu*morM2fwu5IJL`0Ni*8OwS`u$1($TiPWgWZJKOu z1=^l+A2p8x=A2oozJG01Rdu!7{U@np614V0tnenRcj1k;LoQIVGKa;14h2d|6kr=U z4X(a-+4o$rM*-}*0Hc6DynjWC1JE;|`i4XTO#kr*AoQJ3s6c(54Fd$x=DZ%ypLi=P zt0f)!3C#InBv?Q>_|(w^SLIqI-(U0YKBU9+HXZmqYmO5`pyS5Q6^I2u-kO(D%1m&S6;^NOG7@4 zbrl+=u0qKos}sO`kA`6U<==qegBN7uXXU}V4^=+wKa(wj90h1*hy3i%3SA9)?3Via zFQ-INplAd%L^{aONz;GTie|X)uAB8qvDIC&OnE+SV_==v=xX=1R)$8D@V ztiPb<$7fN11+1gzz}53+>Cl2WwSu_1lJhP+T2KUuK)(b3he?Bj#gWT>|BM4MGAV&J z>8-2#9h1xmEO`=Kh$&i5& z4?jHYhXZdNg16p10%y-(qIX!aj#|Q-Yx%I2mImnQ9e}gvI>4f_e3&}SNf=1SrIp60b zXZrDDqhNgH&z0>~!2p$XB2*}3_PSj6boTfEt!lH`e&F;yghW)_`cDT*M&H=B%X^*HmvMYwdi z3$ER_bFzDIE}XzsU4^1iIDGUJo|_KxVboP9*aZ>q21r^p^D1^wO8)=Ae}8UqIU}1(4@WW^?#bfB#d8$INyO|^yff0@ly~e*~j9{`@Vms zX-4kIEJ?dsIIaR@N-*n5#$RQjII3N)MzhgaEov-vMB#XKr3ZFw-^e0?#TL*IRzN`8 z!9(vuAP}51{^^69f!%I}=YRT3xOk~cb1Cn6uTx2FrmcV;AS$B;jTPYNKLYlFW9<9l z2Lw6h2&hg#zLY#f05nG^^!H=v|JGMD7yZ=qR0#k#n``a0wLWFuY3BgasZ;|Rj8V%+ zARC6#1w)YMML-2ziKF=72T<$B?;-(v~->Y+Rlf-%p z3du;xbQOw*Lr4pb=BZ9VV%A`I^Zx=L=)rFaH|vrt2jO{Bl;>NOGuOlcsFvoQx+B`S zVs^qQ5o&6xz{FPW>~1WD*hV=CV$Q*^0%Qpey!jrycjP$Y2Dw!hX64Ozo{v9zpFZWy zEJfG?6=N5{-Sv8jL;-T00MUY}WSSm!PL3%P--vaadEhU+1BTPjVd$TK%5NTX5|z7C zx6}`tX=yTK+#StMS>40)!qU=NSFdVS(Diu^si5-Tf9g4o_5GT+k-#&gwBXfl zca0ffNf?)5hKV~ibsVj>0TLMS!P5Sn5@z_U9Ds}gxLgj_s_W1H=Kq_Qo@GkDxaD~I znHN}ofXn4X_92xsT99%cnw#t4!Fz9mfBE_kSk|JZw4fp!;_iL}LJikI#Iw5iQ-xXN zCd-F;n^w?6pPGhrUFxc>>QSSSOBqx>t68P&6~vr4ycbNg6JK0-gniG&0+ZhZ`--n5 z-ZQ#y8XG^IChh)c;W1FkyM~jC!w(KSoz*GaYT~5UBoRm^6w~P*oTV5Lfk~_LWdN(u z09QJDn4)e?b#{IBRDJ&IuiXu=y!JM0)iu}tUQQY^LT~RN{OCVkV)+NjWbS$l%3XzG zaQB@z!E0|Egv(cYSZgs&sY#L#Lm;r~!m|+F^?N1LRVYGTh1}IpQSFf9UDdeR3+GNU zdbMGzUn5ihhR7H?fjIttg1xv@Ldo$Lf3$N`KN?x!eeBK6dI~>qI90Y?w zGeDX>WImntDjE@4do4qTv9M3-8XW9xZEPGu5UWwE)rvlcl5)nzg7Ds<<4pHI9!lcA zn9J(3Xg~e<$L@ubr_Rj_u+jTgs|8+o>2-$8Q+uy$Xvpj)f!yfC>9DgdM_>NSujpVf z3N1Kvf>jI#8~3w30jbCfhUol5{g=Vs(+|P~8g;~vuh9(S_RA}Grg1YQ-ymOmrg78D zXjMviryPyEjhOs_=GPEUq~OyZ+Yfz1L3rwgqv!}Mkk-)oOC0A_7Be+cU-XAh=Z|pP z#U)oZG~9rz?OKpMi)J&4jCW{c6t3I1lcn=!ldrGp^EWlr!SLu9?(yf>=O@sRB8SlU z1l)kpLoTJqR4MTltxa&T;|g55(#@`2)7%73Zo_2?4?w7XH)}JdA&HX*>!(7T3aCE* zO>n&PPrzS!2ZZiJzz>}RF4%+n_Q2F?PR32T{M4X>LU`sV#$Q;8Mm*N5GU8 zmvA%*_usM^9=mG?oVw5lr}1SrY1dMYsf47{(M#RkUjsQV%IaZHcK`-a?)}$bx7ltd z5dtlXfhc)rU|@u;$UC=hViI6WS&1pH;H`HKGp=2jqw9>?)rYnqWQc96TF^V^PJT>1 zex1(?uOl_7Z&x8JguR=JwyThw=ww4&;{ep0`w@s{hg^nB#*NhHyv7as8ux;XKazkO zcCCg_+>eV5?q7NbgK+$8FT=q!J2Oe*j3yHoj7I-49El{dO$NHkxRo~FFdPWHAn-h~ z0h%gN(!{T*FvGLYzXF%h7_-flSM~WD8)_G<&#(3{C0cNNBD^3fQM*YYw>#gkehqx& zw(D4;kUq4a87eQo%ya~)aH!~50S0QC!4kXzHD{ibnGMF%s|deB;T3?P&-|Pz6+8*+ zSNq_JkM5N5{7DWM$qMt1Vc&b`|dH=ho+^R2SBIqu$d79 z6F|$^Cd(;GrgSRh&G^yc?P!Jz;c3s>J2LWBmbHhWhL$%ftz_xFcHmt&dh8S$Vs=@2 zDlN$L`5(ELUH^P@MJ*-%F){)@JpL-D% z!lVFzl9sRxyFoa6wRHe=l4$h8SReo$-Q8cLC_w9G1dN)isDR@qK7dzVeS1k+daC`B zzMy>p`uubpI^N5_d`o5!DssCONHbcpLhdTW^jGze4^z4d^}b#B@?mtoOz5N!YEOSx z0rv{`bU$Q3lI?B?Ui)!DWN<*c~2ETgW zZkFLnD?T@Ep40x{VYkTgciJ6WqO8{X+FGw%@tP%;HuuG);PT+$A7c~{!wb`#5uiPI zS9c#%_*sgEo|<<1ATk0A(dUm)i8kiBe z{$h9cU*L6I0XZ)~Q(BOyK+4d2^6BT7v~%51{7^j8u5QT{|mT$rCW0m&-o`&3cOVwRx+$>SE2qx z;21j2Y6c2|7L-d_5cK;Vf`9!*m$bwxiP7jkdiz%JRyr8}KijjT_VKi^*zINzbcix> z4trCgn04XaLeM7y|G4wr-QPk?;DFMZRC8L8ZW3kbMV26*Ap>kNx#ifkyIKDKd{F>P zO!5cdsU;>RWi!;M<(8ZGG4T)*5z(iskchP4a|KZ4H05AUh0HX-Ar3K{#ArT&XL~c4Ns}Ik9W7Nc?S6O1x>8ulzmU8W+ltl7jOzuo; zV<3Yg`7r-^rW=sYy*4v`Mp2$&2|pxjR;Vq{W!V9aVKZdl6voqw=9b-RhKF$VUr4|$ zYXXQ217PLATFxEDq#3OqkEc>S++sh2U*LgQe?X)K-l;*S`u>wE($&1i8 zFvN8Jv#k?Q+m7GM+K$f;u&L@j6oD|ol3dG&VH7|DqExQT>I8IXGfsK+l^rjDkqUsmh5E)Sdh$OZjExx{!}Xn;$lA`l>DzH1DXEpXNj~o@9wVp@}GhesKo;-Ff{6 zSkY94Y}3NFZ4}*7J%H8`rc(cFO5!#k+s|0=O3o7^h*#o{M2^+g)O;!?idJ53QlQz! zmGS~eFoZsmviq{lmuGu4^t$8(-aC98#sVRR^3OUoS%#nqx_kOqYq5>%+vG~coaP5` z3=Dh&v5=)?N6vbUXne-FpKSpqYPaRST9BwuWFma0zJ-+E3EhNDGmV=Pa(K#&RN*pE z8_LRQm=L9GdThL8=5Ot#Dl6mc4)4zg!UD+uytJ{?AfvcZr-zoh5if1 zEjeyd!05oC3lKx9P~bJw+La8rj~p2r`-wjkx|mIyum!jMqB3E;62nQqzso!}_7_!^ zm0wO_d`%#sRu50j(tGLU18@_rhHKkbX4O3ODt-Qk?t#Dl`>)~8<_7o}UyBatsUQCg z_UziiJL-P6ya5=m198G-c?pnd{9J3g0_ z>zc$M#x6q5*{5|w{7Dthf`%;{S{BBwG?XQ$kyadsq$F%5aMh-8Uk!H`t6?E$1M*j8 z18Q^!=p=bw5cJ;yOgaHv@o`_Buv;vHE{Ee0yipRT;WDY}_;q&nLQ7Kv>m`^iM@~Tt z(SoGP`}!LP7xXtIU3TeG7wp)!k^NmVmAfc_A`X|+!OodzQB#&U$gIa;y#rb6zemStIQkV?uml|d2ikU>B2NCJ*S5m1J#szVwtpSmw08|$yJHpX-rNG) z);Gc0RXz;mJy3&`ot@Bl0}pEYEJdBP4WLy$nG_kP&y0WCF($VaTy`>c1n{0b*9)Ef zW6b$z@mSfe907To-F~clVBi;c-ivM&y6BY~FNVNB{`kdXfsU!qmsNamRTV7YJ^Mq904}gdK+DjdQF6F4?_FC7cWiWk%aBCA zy@DCIx^hp1<1&DUKwgyX^;2wxSLYKq4G2_?T+@`SY1x39K1jL`qNs|4F8af>nq9Ig zu?ScC`u@nk^O8afYIbFGlPE#w{KYHq(-&Tqn|zAd*9oMUKL1_Hik@0Poq!eIeCrVF zLuj+*x~q`vgg*YU`(y=SUAhXH!4kLx?#|Z~Do&ii&@&8NzL5+_q`xKEu@vso-40tzVD|fJdP`Wb9Dtgd`%q!dLo2JdLfmFXS4>;-?$fa z%hhZ^yPOTkX`BrROGpP6vc4w#+wn-Gx2d6_2KULkK#l@5U9M>LqYS;hySK4^0NM2v zlqtU2nkvRBkd(M(9w87qF8$5m;0WAs-R_*yf|H`Bjdd_IJPN1IoS#?pG^<&I$1#t0 z!-Q`;q>Xl5MUtRu?~~z529qo(g5OgMax!Q`JOmcpK2(f#fE~Gf$KX+L4jg86{O;a& zz}53MzTO14`afgMr8R{!7kf44uc#eep8?0`{aTQ2y0;fg{IG!pP{@oIM6r;gFubL8wM1Vaukq45jD!TuvwsT3Z_6t#^(v z=`*c01j)z^@gQ5}Lk)Xao`6IvB^i3m4_5zqa10zlLw=hT6jfb%0jdziCj)o(zlX+u z44uF!up+o;33Y*aq7V1@Ltu)IvcIR#HpBzUrD)6d(@Gvoi15*Ce6V+o2e$!fg~#VX zOyD-J!Ug`TB-=EoqakkcQbCjv7wGhY-bY%Fli>IorUyoymgr69L(Ea5dR}3;eFTaK=8<# zm5g~-rmsXTHQq|*xZcC9h}QCDoT3?E9`9om9ijA<7^;(=U{%KpY(=-Dky`^DXw<`q z7er-IPDW}AtS=$$?+MhS?@6s!b|M0c8bEElq47}n{X18?;gNlH5JTW@%AoM7sL>}z zEC!~PSvXmSv;`Os$Kc)fFKa$sjJP@kL!o~R$71ot0`g0GLY$lkL@52CMxXC~G?03w zf>2XhkgDdW2LOR%*%pqeCBrLMkUoDWT)I5JK0i5$kwIDi?(O@v$Gd%oxIhS2q5m8Z*&^m@ZKIQAv3Z53Tl@F7cLm@e?h2;Fx zgCh0dmtKAy&U|nY_u`hEl?gUOHU}OTa`THfW)RF@JojP~! zXR&zvCkid7d7S_u<5aOnm3xY#S^ULL>hrh3?YAyWpI`1O6ov0U^{m#Sjte?pq5}8h z7UUWPLL<7-f>YF9p_b*+3K~VE@2>4Nu%*=r5&VAERBha%q+=718XrYpmVbHlNo_zS zNl8P;l-a;Ht873`W)tgyhZof~Fz~+wqcJJzARk7x`osuO?LIXZSqd#kTY-m3pWipX zKEE1)y!+n!@a8**m!wya-L=bsIz=s1waAzdSYCq+oeX|+ixckHQNtX;+;tif+X^Iu zgCHj31)+?rN`tX%Ky96@`eFHV0IGagcURYG7T#5eB_=)nJcP!>In@o2C8uMsZtZHgxRcD>3AM z?7Di!|1ap)6NZ7tp9&5^7Bw=OkEsYiNe9+g9-Plo9ayuOMBrZxzrNSm`DOgjUP%Y} zFyc>1zfbNel)bous?Yxs(&tCRiY~CL(D@6O;b$+ss&o~~t$Y|cs)z2s0~+dTm;=kD zl5xHV-Rej8*MrZ4e1B40pz%m7{7>RGARP-URAl}Jo4-sP)XXvwwVWH2+}7yzdW9_1 zfwiRU$gLUrLZLCg-~a#UAs?oScf9__dvNH;i6w>OlU;=#y-(5SpZ@`x&1QJ!KYk9~ z-TgW5DnwfqUu`u!#6(Y*hXar)zck#sxf*u1xf%VpI1Zg-lwdM2koRk0*?`IxK+-lF zP`+0NgW4)w-&%lqZnr8T`n6Olbx<$)Ffv{e?;v_`sa=I+ef}Nu=H1K5K?WEa@x#;4 zyr58Wxt9<72!fZC6Om1sbTJJE`l0c!ZLq_=yK7n6@8X>vEAWSOBmn7fAg_QR(*{(e z!C0Fx(6~()K=sr`FXBFHd6Bf@Q&*wUPzWw`b^T98K1}njLL?t{;?z0T-Djy?g~*5> zd*t2)>GP|41;4=Ko;Z1yNtfkXK8&bHsuOIzWmp_t)Fs-DySp|7cXzko?hxGFgS!QH zcXtoLgKKaI?oM!brr+=0A2ZL)|LU$&r@N}w-g}9*EPJFFDT6EK<#`KBVS>` z-O`#&ENE$KD#y%U|BCF38IY;0wy44Md9NELI%4fxN;6dVZty7HP+0c| zY=l%Z*!XJUsGMma#f9H6QYQTC>-FXPwvKeEs@Dl!i_eioo5Sanm!wj(7saeLNkXSgf7pE4bX5y?6Nfd(0+sEf~ z(2hj{Jf&ZlpGO4`h~|N~+OjgTKb*1}|;$(5Sh#pV19gs!Ry# z;7ViPfS<11b`_z1wt{GyH*e`Yrg)elF@YI>^4Xdq%~tktL`>a{2G{ATztthQD>Azs zL&wf7;=k?feNil*KWor+MB}W(ED%rdgk6MBD6okAWuxf#pmUj*f3O6Al+V=KwIdgGf)Fufd@%0gTQ<5OZ?_ zesI5ISScco>v->B8t)(FtHou4e`>&5?Sh8Y{A!pxwpekocd%u^3!-Kn{oxD%Uj)pl zz34{P&H9%aXbm3MGu&q$YbFCof7bzPEP$#-6=a4?^TCzy!X?Ffyjm28DR0nKPNgYE zjQr5mC%q>Ob3yK|05FTGQJE&Dpa9%D+w?x7>2keVPU3ja6cVo6kN?u!nt;OOVv>YU z+)MBDqXXd}1E<8Mj}9ClHuJ4UzhefBd~L*184mlZo7SVOVEtmtB|MFk7;Eal$*G%m zzZs?>@?C>xgR>BHnHQ+Qzdr+^^1@Zoe)LY$D9nNn`=HTMba(fbsN+YLPz$K@CxcwP z2y0qt`p{8D%XZv3;m+{Chtd3>fpubFn%`d|4pJ~f($}%wnKW5ozO;IV+>)%Epw(pN zCOJ_{NOz+$DIUYC2tKj&Va_1G&F_VeFE7w`RnTdE_;l>WpIAO&HrRwCG_hBE3MiU} zOmo#?4k@d{1K5}^c2Y%1l$Pj6d-naNvFKPbXPr0SkRM2-iC zen&YoS}B!JF?sSG$@4P?Vnoa*eglrvft`cAX-nPQ7%qVR;!&?#Q+sPa(8ptON_)3@ zqFbCrxxpuJ!Z^Hu&eP{`7odMeWZ^|gP>WB#X-V?s{5!biqBkzqS%4IHv4IJF=(N6bTamO+Z-3>&7xBTIX#XU)QFSaGZK z%7^gch<*kLC!eq6U%3XUN7UCoBX=?qt3Q*X@Rj0d4b{Sc zk?DIj5#?&QK(fyw&&KBZOX^*6tYFt&07V!MQLGds3aoYWngjNI5^CoHbT-;peSNj@ zZk7(XbexVS;s^Rf&mLW#U6@)Axil&}91K*H;vcXR@wupKiKr@C0UL@`w%RwMr3|4_ z^uhhcxJy&zUQHL(6NMixgiIR`{De1lrOBNuR*rml7-fFyMn^U!;Po{$Hljh^G;xags|wZNPv!oG z`ewC!djO*h#U>yy?t=Mnv6|)1o@^JJ^dGXf3i|R@sp%uijl>(7&Er!7V^fG9#+l?<1ALo%2ZWi!48t?>y0rKLqtC-kLO#|@KV2oH)QVn`)4bj`*zM> zX$&f?*pXyxP21li4gnmsU$w~eYwO+an-Vet+dTym-MMk2SCBY4HELd*fB~#48dk5Z z$lH@_th5sm)2CQDim=s6Ai#V{yZ`p$0N5&2SkXOJ{82iFH;69cN9|j}fU^G>JH`@- zHC0(c;$GNVx1_>&Ec+|pvZh+`bKjY?e7RaA&=(u)!JaH2;~%;8->*)Cm%{VMx941N z{RA^@`2gr7H&Y)U*#86%tl=Vc>IQF`puW53f5uK$P>Q+jEcHUda`Iv?PQC(2-1?pT z<<=egQVT90yXI|kE74QRTkBBXR#ZsVK5wj^pDvO1&@|EUv;I2kw_Qk*JfYlKA`Q## zaS%N1WkAFF?(ad2Xat9RPCTDajmpRQMUC2ag^0FO8W>jfkm-#?WQim1pj-C!)gOP$7< zb;P+rkzvX7oq7`vz$MW((&PZ5AtP~G+TBZ`7r74Hls0)i@NuKtEZ#|IE~hBUAp;;Q zMLxymgKo)^`vHC6Viwgpn(oW=Wun_LodkE<)AI)ZufUN#eN`>8RT$;&-ahE#+vMUx zv5Jo%vKWX5c`B-dek8C;VnNv0%nS(}ZCCE4Rk%VzV+?3vRfv>#KDS2roR@ zViap~0>M9EzJ5_iD~s-?dq-oC5nK`;j$xI1UTe)J4pAwmvbReq=rvl1M(Rw7& zw6<{c`RiuE8jTF8+~CZ{y__Sdk>R}C2(cpsUI?Q{(Gxn39S@!&l+Jf1C>DuYYthwD zwLTPh8w{F^SWM+k1eM@eVnf(XzR)Ri|Il2dyjFV$w1j$H!XaVkZ5cW^5iWYi+F-evy(?WP8PKw(Foy3?3lzRTf@sbcB+Q6pJ z@6S{t8n={CuM%i8$U_BM=ca091`p4$B_GGAJp!KCUl29bXfAs#HkgcUSjFTb32adC z2fy9gZAHI@MaJpbn5ecM$*ug5KqTS!CxA)JQ;%wNaq<0&kdh1(Gl7dUgb!YG2*q)P zmLtbN!~&&sB1i^tf2sY!EZ7R+c8-mMsoy35RnGJfGE_3@N+z2d$f-wj=b*&$RMyt( zw*4ksx+_x@6lEZD+N7@aS(Ty)X(f+{5wI02;Q#F#a*g5Au&m{Cjg{z1MP)hwXy-zA zBru|hk<7KnRlqbcSaRl2txs+AORunL4jFcnCu82ecV7^&igI1kc62oakRP0DDC>j4 zF(rcx1rHUGJaVl>Wj3kYAL9FdG!s}r?&4%MxHm6)?~eEO%8iE3is>$+h|ne;c791j zoHV$!*fi2cWs9h6)Ffk}7GcvJJhw~+l|a}bBMWH)J>Ld(G*JW$vz=E%FmXifhh0;N zEAp6G(IgOIAjo2%rW#sp+EduIE(Iq(N9_CBH{p4<2*ZbM5EnWa!9jXLS~NL*R(*I^ zFkj#zVXcUvNAUsy;>CMT`|?XU*yYhgc8J8dLva&+e$@~~5mPymA+|x!>>D8Uq=ADPB$-)cLbH4zcSKpMXD z6nCE8t9M}h{IN0~p`q2e(j-YvaZ9<@Fi64CpVtFyBPj;_tT(O$h+-pcbXpP)h|&Da zyqR^aHSEpfgoN|bd~^AN4s_YIqmn{Lv%7othi2|C=42dgx*MhjWWuf^oQ?A-q+h>{VaeT) zSziSO?eIp2Eeuk;2%2Dc*li?$H<6b;X=>-?y%Yb7^Ua;tU*s`6w!=;MKm@d#8D1=N zd0;9sw-zpr2+e#jdMolw8qPjd{iSR+z;3J_F zw_j@_;d0bR#O3EJ{NVyg~weFSU)zR%T>l zBG7w)j39DGJVgp=g*$SHV5M!L+&!>ZB6eneZ5oR6*S2g%E!ntHTrbi~EH^6arXLd- z%1?OsprB5)$Uo)=y?3{uBgx00q?F^g>6~sj(;!eZ%nc_ThzNmd`*;W>1w&L*)l8=m z_q>S#V$6sE7sv#;5jBV+D}mj*7Laq>PKD@F5JBZ=YX5X2A!#aF*}z5n%PZ=(!TTCm zLeXE_8=vQuh>c{vp%Dq5YS-F?{im03SQ9M&lDPF{$XMf2$S{Nm+a4AyK9rX|tN+{* z4z+!-8wrS5(Ig|?Es{6S><{30x+FOc3Gizt94@A%LRD-N*>u4DM~4+;Cf!*l=Ef8tCm!>Pn;>OT@1Y^&dex_KY+D zQvKCndBdD|#*sdMC<)YbY2g*&WBo+?DRa~UR&iC|IdN z#`r`NF0-gR5rOWawEEd%qn2jSx=UQ;yPUOHixxMiJp}TLi#kg(R;l==a}xad@cMh~ zVZ8({`QK@;*9G^htR4ZMFa%ujERP8!?lST;p$N^W%6R65a~ltu@y(7wIxjPTtQdMv zg^HjbpRu9jq{0jmB_?KImVG139MVOWkA)3L?M(Py)E4Nr9qa}eA3|fqt8dl)n&a^* zPTNIrZY}!7&EsCg))o^i>d?UuR>JgHic?UI-6l6D#-I`jxeDLtZ0!wrU&jP1Bp18v zM{aoWL^7nCTzej}&PQ<;`cK$#b?97sfcWxrt0Rmp0L7XG)83IJIp?S|Wi0gK)rr<(;{O0iK~kx|yWw>hH>U}(*Raw_E! zppb#I70l+pc`vm!Sq*H1yIw7WjHtW2f3GeHR&b38_5gsf1sY0(PnKVgw*i_*Aehx_ zmO(+<`u&mX5H5}Uuu^E51Hv}tu+sa{Q_KV{} z)?nkO;$^#(@|BE7?Bo=dk*`Pqli5z5e*a>H$cUukn1I>e-{ouU{QXG}mp7e_qCbNo z(hVwtrY27;Mh2UbZU0_8A znXmzmsF#8fFM0%ZPjkDkh2r@RjOaO*BZUJ&nl5SEfV>9Tue;%*P^R-3dSQk=$>%lAAZ%1aqtjK*I3hWEnq&X*GKAy2=T@jT`m{n z)7}A7Q>FMYv0Sh(SPH*li_y3>*CVff-H3#QKM(Q#0C=pMS;M8`0frK(H=|H+^nwm) zqSC?iDWVyUfe8{)d@$rr9kvj@aA-*!ygLv{On^eLtUoi?7jFV)aP;IYm5ir0mutI( z?@Ag>jFSS8ro=%icOW1`g;)~W+IW~`%%kuDf=h~LHrN46-#Vks`wyDzer1Fsp^cjp zV8OT4>p&kd>xTywqEmII)r;x{8-)V;L2EEAiz}J3jo`D(lfAyu_Yn`-{C#Pdm?ZLD6GCu>OF8G+h7ggn+mMVb*AunCFKKU$i@R6g2{! zZGCSZY<3G0$gV2lA37)p4|QP0mG~_0K*?R&-(ca_)wmIqE;??7R3J+sq{!(0fEB$+ z3yArTlh9m=@w{N-CE_%>9KtKCl$g`L+b;_SfHE5zm=F5=_!1tD@+TcdUmXR2bw+{p z5%oH&Q zETC3i&_MzoyflxDHH(Fgh2;NTGHpx2porKrp4q-;bfPhgOo=+?7?ynK9$M5O{ty9C zJnJ{Wc^+&8HR#%+`B_~n;1e-L1ku$F80DbZOas_+ivd)9uQLn)yK|6^-WX>gL?mP} zYasaV-2R>*66uJ<@Ven#Se!Ec)#Mvg|2FY`=lFWws9BSRI?-0rZAl3KN9^K<<`6zTqbCcgSzo2B2s&LU?n zMa)WW!o|{LG*p7_em`g+LO4&h{HO+&rWG!5lKp3O!o)!oh|%*`MY1m*Cjfs$v5Ys*07$~`C!4qvusNqF_p636M{a`@;2K&seLG0N8?hEPN zmO|ndL$*cX*xh?y_UUa^xaR_jtZ=X0wC2(R zhwF&-j26dn2BDeyx3_6rYo2fNYaDkZf>ZJ4K{_ssFE~*#bC{smm|j9^*q!WY;xMf( zLD(-rEKEcK4k1W(^t}%sZ|cE#_46i0C6Mv-C%vxZ$wQqf#u)=Ls@?&nd-ib})&5LW z7#(PjSPyC|EU9BcPM7u#j+ZEhaQmk`@Syl{p)jH2zX{D8t2Jog5yeu^2c+l0;;)tI z8%~F z`Jfn*5qsNDa3e``PZI=@X(Kv62^Zx?qc!LX6XH4XaIS6UK|NcjLw5DFjgJnH@RBr2E5`n_h2gT23jGvtosme}1g(Rru?>bRr@% zBP@Ug8m`X9TBq4~C~9xkbG_eI9?^oxwn-4L`eHzkG0e?ez{ptqyi|HIF^r83*iXo% z-uLcf(-*$u&A=)wG8(frIKZqJ)2rrq56K$ea&rWE{5DgW2+5L}WXWW>xjDP&F8eb% z(_iOyk!?gv7T5gv_)Ng?!0FBY=g6%Wk{=v2=P`JKQnZUpN0!I*szHKC_>A-^?8bB_ z0F4iNI~YT64wH`JPb!BlnwGy_6ymOsaTsI=Z>$9Byn{46+xEXDCoy|lcykc5Y@ zh?9A4@O)ENvp?VC>7)C3LC4{j64XNp2!-au6XA&i>s0U&$|*e7b*a|JD>NDdbef4kPVg9J9813 zlH!a8ogrUteAXYvtj)`mkwyWTBJ*-H>N4sp#A4H6OM?*bxo&<;6c@bGiwmao-f#1y zLT6xOG1J0=Fu>+d+hF2XwWHk`vwV}mw~my$Mu8i)`sK8O$Z(r818b71-~0Wh<98I% z!dvsV-=E&S5?mn=B7B+Ri-;tL=_`u{41$i1u$9F4YbVRTZ8x{zt& z%{ggys`~9bI2IRpPPUqNb|~Q!XgPsz*Ku*Alu2WxPE8yNO<46m1;$PP_Bm6<9oa4f zOy1E`MkiDwv{Fy!z7jXnctjC>g}A6x?cThhiN_BIif{4G2g!lK5F3aFDK7STq@#m` zEmPiE1`8gQCM5Vk@v0zx%s`3I17HB6j>(DN6Aw0Ug;RmGb?ONqh;fA-&c$!M|#l z@Yi(d6LOSi4Mc1}%Ut{>JV^w>qMf%=IowTtcbn;kt@=HVL=YFvRORN z@-9`W#L(6CCuF7B4YNJbk`i7*KOEy%*y+1TZOMYJmvj%-8Hk9{+b$8tVeg1=1JU>^ z%!ox@^G5BzQ5;?piE0VSEptA~;~7>5iCbi}%-&2zNo#$#>JJtiH`qmZvbS$qDEa)4 z|BjgSJ%@Q%uT5Wf1rszW+PZMWH>TfhC_*zLj!hNXX01%=ax~wyy5-TV}@bkI^Xc zl=n0z-rR=P(u4SJhsS&>Gnwz-IKCjdu~hozOjsK5`+Cw#LC9o?61nM2J4w>VZZKqF zYyA946|vGax#w|tzkE)pTDgFr$W+m=6AR|>b>0-{5Dqb8J`uspMDf4Cz$jA8pZsD? z;ujCD9Y@3RLrEMTkSs+pJ35?PdJ)L0-@DaU7|lq+);gUHtU?j+-5yQEJ_ZaZdjQx` z58<@uzn40}QAetvsgudwAosInu!ITCokm+Y@%dr*SZ>Q81Y}*6Vw|w9{%UQS>oK3q z3g{gTY9UV(=jd(PML&znyExYNYyb7jk;;9$2{MDrIFcFr;2fB3dC;lq84s_0z^yl| z!C)j56OJS(d2_M0x)$(r_UN_Tib0C^hBg?jfa6?516DD>>11vydSl~qx&%evV6kk2 z)f~HUkt~;WXS}}Oi*-c)HNc#W8LB{mHZa3!|7_(l=j?bn>eC-N(2r|`9&kJH7e zxeSt-8>c`Z?J^-lJ&i)8v|@`C&bPVWE)85_DzxQpr!tCGGDgZ1ds^9@4S}2f`|_u~ z2XNpIOe(kjZox(y9v<1*u2c&E%NkrDr6AH%e9@wyWNC3j$8fSFod3cVoB_s7SCH2c zO0bdooX-AaLPjX&uEtqCe|P$ch2`BwVIvudE(2oh7(TC~La?RMiD`laKM8oTu2>`) zrW3YE-wu2({Y;$P?$oex5{^_bs_bvOF+4r(h+OXdNNj9mrY&k3G8CF}HlTby5s!79 zKq(Lyhb#kz7NUUz({AEl-#+wMG1^oI!EYRo7>BM%=RaUVSQ&7lSb!~@oNfZp|FN?Z zw>>z>ZA(Y5g$He%oFl1k=0;`^H*2;V+_)?pKCm-*=b-c7PK}%XR}p~%o!mIC#`{9z zk)Pi4r2-R9(W4MRB?-{E>5Ha6J1o6_gEy*Jz=G5UhAiMN1oZs>{Tmg251%7RBkXwd$#om1%} z9Z97=vNp*<;ShL(s)*ZWHvDdupKm)UMW6KO`k+@@5rCi^JM21NY)kKE@FG}~PX-+I za}E0$cOBbHiN428O%v4(-;%k`k$>cRRiNT7(h!6$M0nhuE zT_M1Pl_a>TU5X=W$N63LsHS^7$sE6nucfz>qT3K;Pq~5=AmpKe|W;>K_G7SVgMo-`>YF zRKCOTU@y{O{9Akm?tx3^dABQynHiB-7vLY?qnfCaq>QS-gXL+eO_QDnXYg{-a zc9$Y6sCN2h71e+;-}(=f*F68PNelUE8&#s+ByagYlH-d}?zb?;o;Y58E#_Xbi9$V# z)$mYYl1+mEwWIpOc>+NEX42oo*K+!*JyoBY2JjEAGFfOy;RV8IaB(mptZ!XVqp_A` zoXyFF^K3h;rVisln*Cds46*e z=6GaQRDT%mbbonyxw7y2dhf#NX*o>9h$5ILaKs_PzFO-ucg*6oJ0_9>R}uU)$C=je zXelr5e7$mU0jzU`O!>BD(%*0*x!S|G>yyeEel zrcen2QW(86=iRoY_Z2bsM9NpKl88itvWZ8m|vyU3;dG`%ApUe|gntF+*uIbuCrm}Eiq+)0b+@kWf#40f9dw|d70a$7KWiCQJh8;I0D za>;~^mp6~w+<=+>NmFazIuXEbrvHOIFNP-q-O#-EE#mpA>6&Sal{a2PhROU=;d4}@ zUM4k9z7YM}*b_b>G`N$Mrr)KjoY>A?&XT*zZz_FJ>B6VAgStj|ddju^?%(9pRUQvPgJJN5}cj=K&omS*HZvn$Ir4lR$u^#hCDaWT2qV`{^BQ_@+=11==v)t=xN zX;;X@`=BgxY>e-Tog;JDXYyS>pPM^CwjW3XjlS){<7-c^xejjLgjj^^@V!BgtA3ee z!xmJco#3s<^YM~oj=vc-DVU^WP2wuD7j*rYD`keH^c+i#)_Tv&gX2WJPkabW>*)9f zwt>o*u{V{gB>I1tTWM zm~gRal-GBL#dHqr66o>76BDKi#hy{bUS|-|B2qox(_a z4_-rs(Rc*-Sg-3`ecxunjGS14ZiOf39;q)&3&Lh`$04&cY9o>_31FM)7nlyo_WjTV zn*(b@PeU^r=f?w;vK_CV<;kb3SA8^F)T?*Rjx8xZhc*Xr-@72F)g?_8Vu`hq5DvPd zVzdr_Gv0Z58kC5c^(m_*n4PdhMOsYu=1jNC>y_3q&1AL55ESqb4@F4om?I+qQ@(9! zAc!`(X%jsDD+brn9OOIH-Y>68yX^h}40rNViFJ7&>DD#nO5gcnzLvTRbRUy--zE@ z@d0ar!^$Bl5zqng@Z9pSeyKEQWt@9xM{`aY0|}OFR)N*-?{!hKZ8{PnCzSteovk^p zSO~mHKRPEEWYWn)LelF>=F=I1XM*&7kEB6pSu&K`_~C!@AXMX!{QEHL1!O(`6j*m` z!;tI9Wh+ThKB>Cl+DoJRT)#?j_~)}6WM?bN9{ z&sm{Oah!)!Tt86&N#v-K{ROs+1uj_leggG}UPp#UU}p;5cWk!KQDI)MIOBYtDe6<| zrW<&*9zT*FZMkB{gENr+d$47SH=o^Wj1)%woZ?Xj%jD90nz#QB8XR0N6ed@U{Q5Wh zV}bM8_a4t$9caxDF{2g5p$_(&XK3mE5ws2^@m|ICS`ZL%g*}*zu)`X>5fVb?CL$_8 z^KOR~FC3|840qBBE;1Ww2)^g^-QRvEG%;dS3X%g7yx8r1!V=O&wGh@427rU6{G!hk^blmde%J`wn~%;r|y)RjOrcN2G=QaUtMgxpjH}`d(u@;*d0~ zILBqZ+7d<%SF60GE*Th#R%Am@fhG)uFT6ojrj>=R2nNtfluFuI%UR8Z3+R?R=yo=m z@;eh-+FO3_j$c{va=tj@bJmX#u5ouCVgG)?d&Ix>e1RX1>>tBA+iKqoj!f#?Y;84+ zD#B_6W(#*Tl{H;8Gp{w^GqmPR_OS5@eFQq-g`K+ie9_yzkBRW@>8a)3d@AeBh`^`R zO-=BH^RZJbz)iAOFI}2J2?0~n}=akSquqZ+|LD_d`8U{VWpbS%M?c9`rWVi z_j7{t{{FR0m-_11N}u;Jjm2|;c(=B`<|Ca}iU$P@HZThFB$fY;R%GC&jAkcRRMXFJ zuyZ>C+$c#&a1BQ;(`h)>C1X%Te0a;)K^-FCRLGt8<;Q6#bik~cNmGf*#j`B(T zy87|S4zJ-0dV}hZ#>!vrL!`(_Yd0o*?|jg7^^&3$J^Oz)7#W3Cu!gi~uwq|(+_-%X z$LiH^@Z=$=ogdIjT;kfCIBg-mrOQFr=qvK}sf8}Wl9vYOtUW-X*`~X3MjXDpSV9OH za@Wr4Earvu((xDfZMS|*O&RVZKzBA5YrOsC2K!;#LrhFq$K+*7j2Z;dwk0Z|U?5P! z+Kha6X{f>3K_0GP8?1I~l3(`6Wn~*2ybi!i!a&1LuQvC0zK+*`C31xBJoQl0Tbt(f zEi=}Q7i>ZG|Bd?Wi;n7lfLI|TQMk%x!d~B(n;k;gk*iwcEpmB0$~2|rs~asg7S8L$ zT$5%zMpH7G<+&Tp*|;nyu&pt5tyME@c2j7^(ZrrSM!+w{75(dMS#}sPMK(lPdN=4* zIKpHsP!4P`SlJ+nJEYAi0RycfA=C_&x@o*iFuQjzgLAi`g!z~4-S&p#GbY9~H36b= zUXI}%9UYYLCenrlsraB>cQvP&4 z%HAO(=K6?>IS%pCIYM&2B_?5OYfIDcb3B;ZBU4OI7=h9y6^AOneF#YR# z-ZCH38Yn-%AGgyO@z_^ngénf7BwFnuQ*j(z1^K3`J0P5GYf-;XxrUqkG2K3A? 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%0D|yG^TFN2LEBdBk(muSP+jq=f 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 Bdi?+Z diff --git a/frontend/src-tauri/icons/icon.ico b/frontend/src-tauri/icons/icon.ico deleted file mode 100644 index e45b58dd9d2a29eaf7212d01361340aa85640f10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45456 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 XOm^?M{ftJ=6xl#tNgnwB+fn@=%@HVv diff --git a/frontend/src-tauri/icons/icon.png b/frontend/src-tauri/icons/icon.png deleted file mode 100644 index 05483f325f04abc1109971a2c52417838c12a99b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35348 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 ePF$s%oBt1{j!&|RuqK!Q0000> = const { Mutex::new(None) }; - -#[tokio::main] -async fn main() { - println!("Starting server..."); - - let colors = ColoredLevelConfig::new().debug(Color::Magenta).info(Color::Green).error(Color::Red); - - fern::Dispatch::new() - .chain(std::io::stdout()) - .level(log::LevelFilter::Trace) - .level_for("naga", log::LevelFilter::Error) - .level_for("wgpu-hal", log::LevelFilter::Error) - .level_for("wgpu_hal", log::LevelFilter::Error) - .level_for("wgpu_core", log::LevelFilter::Error) - .format(move |out, message, record| { - out.finish(format_args!( - "[{}]{} {} {}", - // This will color the log level only, not the whole line. Just a touch. - colors.color(record.level()), - chrono::Utc::now().format("[%Y-%m-%d %H:%M:%S]"), - message, - record.module_path().unwrap_or("") - )) - }) - .apply() - .unwrap(); - - std::thread::spawn(|| loop { - futures::executor::block_on(graphite_editor::node_graph_executor::run_node_graph()); - std::thread::sleep(std::time::Duration::from_millis(16)) - }); - graphite_editor::application::set_uuid_seed(0); - - let mut runtime_lock = NODE_RUNTIME_IO.lock().unwrap(); - *runtime_lock = Some(NodeRuntimeIO::new()); - drop(runtime_lock); - - let app = Router::new().route("/", get(|| async { "Hello, World!" })); - - // Run it with hyper on localhost:3000 - tauri::async_runtime::spawn(async { - let listener = tokio::net::TcpListener::bind("0.0.0.0:3000").await.unwrap(); - axum::serve(listener, app).await.unwrap(); - }); - - tauri::Builder::default() - .plugin(tauri_plugin_http::init()) - .plugin(tauri_plugin_shell::init()) - .invoke_handler(tauri::generate_handler![poll_node_graph, runtime_message]) - .setup(|_app| { - use tauri::Manager; - _app.get_webview_window("main").unwrap().open_devtools(); - Ok(()) - }) - .run(tauri::generate_context!()) - .expect("error while running tauri application"); -} -#[tauri::command] -fn poll_node_graph() -> String { - let vec: Vec<_> = NODE_RUNTIME_IO.lock().as_mut().unwrap().as_mut().unwrap().receive().collect(); - ron::to_string(&vec).unwrap() -} - -#[tauri::command] -fn runtime_message(message: String) -> Result<(), String> { - let message = match ron::from_str(&message) { - Ok(message) => message, - Err(e) => { - log::error!("Failed to deserialize message: {}\nwith error: {}", message, e); - return Err("Failed to deserialize message".into()); - } - }; - let response = NODE_RUNTIME_IO.lock().as_ref().unwrap().as_ref().unwrap().send(message); - response -} diff --git a/frontend/src-tauri/tauri.conf.json b/frontend/src-tauri/tauri.conf.json deleted file mode 100644 index b7614dff01..0000000000 --- a/frontend/src-tauri/tauri.conf.json +++ /dev/null @@ -1,59 +0,0 @@ -{ - "$schema": "../node_modules/@tauri-apps/cli/schema.json", - "build": { - "beforeBuildCommand": "npm run tauri:build", - "beforeDevCommand": "npm run tauri:dev", - "frontendDist": "../dist", - "devUrl": "http://127.0.0.1:8080/" - }, - "bundle": { - "active": true, - "category": "DeveloperTool", - "copyright": "", - "targets": "all", - "externalBin": [], - "icon": ["icons/32x32.png", "icons/128x128.png", "icons/128x128@2x.png", "icons/icon.icns", "icons/icon.ico"], - "windows": { - "certificateThumbprint": null, - "digestAlgorithm": "sha256", - "timestampUrl": "" - }, - "longDescription": "", - "macOS": { - "entitlements": null, - "exceptionDomain": "", - "frameworks": [], - "providerShortName": null, - "signingIdentity": null - }, - "resources": [], - "shortDescription": "", - "linux": { - "deb": { - "depends": ["librustc_codegen_spirv"] - } - } - }, - "productName": "Graphite", - "mainBinaryName": "Graphite", - "version": "0.1.0", - "identifier": "rs.graphite.editor", - "plugins": {}, - "app": { - "withGlobalTauri": true, - "windows": [ - { - "decorations": false, - "fullscreen": false, - "height": 1080, - "resizable": true, - "title": "Graphite", - "width": 1920, - "useHttpsScheme": true - } - ], - "security": { - "csp": null - } - } -} From b3d9488b0760595b6e90f8eacaa9f1a8c5da8ffe Mon Sep 17 00:00:00 2001 From: Timon Schelling Date: Sat, 19 Jul 2025 19:33:50 +0000 Subject: [PATCH 02/12] Allow bzip-1.0.6 license --- about.toml | 1 + deny.toml | 1 + 2 files changed, 2 insertions(+) diff --git a/about.toml b/about.toml index 796e061fd4..e1ead699bf 100644 --- a/about.toml +++ b/about.toml @@ -16,6 +16,7 @@ accepted = [ "Unicode-DFS-2016", "Zlib", "NCSA", + "bzip2-1.0.6", ] workarounds = ["ring"] ignore-build-dependencies = true diff --git a/deny.toml b/deny.toml index 3dfa941551..9f89b12283 100644 --- a/deny.toml +++ b/deny.toml @@ -81,6 +81,7 @@ allow = [ "Unicode-DFS-2016", "Zlib", "NCSA", + "bzip2-1.0.6", ] # The confidence threshold for detecting a license from license text. # The higher the value, the more closely the license text must be to the From d02a1847a70e8c0fa9ec7dba776a295ddc6fdcd4 Mon Sep 17 00:00:00 2001 From: Timon Schelling Date: Sat, 19 Jul 2025 19:34:00 +0000 Subject: [PATCH 03/12] Implement basic cef based desktop app --- .nix/flake.nix | 34 +- Cargo.lock | 3164 +++-------------- Cargo.toml | 3 +- desktop/.gitignore | 3 + desktop/Cargo.toml | 32 + desktop/build.rs | 10 + desktop/src/cef/context.rs | 127 + desktop/src/cef/input/keymap.rs | 384 ++ desktop/src/cef/input/mod.rs | 279 ++ desktop/src/cef/internal/app.rs | 61 + .../cef/internal/browser_process_handler.rs | 55 + desktop/src/cef/internal/client.rs | 52 + desktop/src/cef/internal/mod.rs | 10 + desktop/src/cef/internal/non_browser_app.rs | 47 + desktop/src/cef/internal/render_handler.rs | 81 + desktop/src/cef/mod.rs | 26 + desktop/src/cef/scheme_handler.rs | 222 ++ desktop/src/main.rs | 321 ++ desktop/src/render/fullscreen_texture.wgsl | 36 + desktop/src/render/mod.rs | 328 ++ .../graph-craft/src/wasm_application_io.rs | 44 +- 21 files changed, 2670 insertions(+), 2649 deletions(-) create mode 100644 desktop/.gitignore create mode 100644 desktop/Cargo.toml create mode 100644 desktop/build.rs create mode 100644 desktop/src/cef/context.rs create mode 100644 desktop/src/cef/input/keymap.rs create mode 100644 desktop/src/cef/input/mod.rs create mode 100644 desktop/src/cef/internal/app.rs create mode 100644 desktop/src/cef/internal/browser_process_handler.rs create mode 100644 desktop/src/cef/internal/client.rs create mode 100644 desktop/src/cef/internal/mod.rs create mode 100644 desktop/src/cef/internal/non_browser_app.rs create mode 100644 desktop/src/cef/internal/render_handler.rs create mode 100644 desktop/src/cef/mod.rs create mode 100644 desktop/src/cef/scheme_handler.rs create mode 100644 desktop/src/main.rs create mode 100644 desktop/src/render/fullscreen_texture.wgsl create mode 100644 desktop/src/render/mod.rs diff --git a/.nix/flake.nix b/.nix/flake.nix index a3e15eedb0..4b5ae6df14 100644 --- a/.nix/flake.nix +++ b/.nix/flake.nix @@ -42,9 +42,39 @@ extensions = [ "rust-src" "rust-analyzer" "clippy" "cargo" ]; }; + libcef = pkgs.libcef.overrideAttrs (finalAttrs: previousAttrs: { + version = "138.0.26"; + gitRevision = "84f2d27"; + chromiumVersion = "138.0.7204.158"; + srcHash = "sha256-d9jQJX7rgdoHfROD3zmOdMSesRdKE3slB5ZV+U2wlbQ="; + + __intentionallyOverridingVersion = true; + + postInstall = '' + strip $out/lib/* + ''; + }); + + libcefPath = pkgs.runCommand "libcef-path" {} '' + mkdir -p $out + + ln -s ${libcef}/include $out/include + find ${libcef}/lib -type f -name "*" -exec ln -s {} $out/ \; + find ${libcef}/libexec -type f -name "*" -exec ln -s {} $out/ \; + cp -r ${libcef}/share/cef/* $out/ + + echo '${builtins.toJSON { + type = "minimal"; + name = builtins.baseNameOf libcef.src.url; + sha1 = ""; + }}' > $out/archive.json + ''; + # Shared build inputs - system libraries that need to be in LD_LIBRARY_PATH buildInputs = with pkgs; [ # System libraries + wayland + wayland.dev openssl vulkan-loader mesa @@ -85,8 +115,8 @@ devShells.default = pkgs.mkShell { packages = buildInputs ++ buildTools ++ devTools; - LD_LIBRARY_PATH = pkgs.lib.makeLibraryPath buildInputs; - GIO_MODULE_DIR="${pkgs.glib-networking}/lib/gio/modules/"; + LD_LIBRARY_PATH = "${pkgs.lib.makeLibraryPath buildInputs}:/${libcefPath}"; + CEF_PATH = libcefPath; XDG_DATA_DIRS="${pkgs.gsettings-desktop-schemas}/share/gsettings-schemas/${pkgs.gsettings-desktop-schemas.name}:${pkgs.gtk3}/share/gsettings-schemas/${pkgs.gtk3.name}:$XDG_DATA_DIRS"; shellHook = '' diff --git a/Cargo.lock b/Cargo.lock index 9405b0b39b..2d33ed756e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -70,21 +70,6 @@ dependencies = [ "equator", ] -[[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 = "allocator-api2" version = "0.2.21" @@ -93,9 +78,9 @@ checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" [[package]] name = "android-activity" -version = "0.5.2" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee91c0c2905bae44f84bfa4e044536541df26b7703fd0888deeb9060fcc44289" +checksum = "ef6978589202a00cd7e118380c448a08b6ed394c3a8df3a430d0898e3a42d046" dependencies = [ "android-properties", "bitflags 2.9.1", @@ -105,9 +90,9 @@ dependencies = [ "jni-sys", "libc", "log", - "ndk 0.8.0", + "ndk", "ndk-context", - "ndk-sys 0.5.0+25.2.9519653", + "ndk-sys 0.6.0+11769913", "num_enum", "thiserror 1.0.69", ] @@ -236,30 +221,7 @@ version = "0.38.0+1.3.281" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0bb44936d800fea8f016d7f2311c6a4f97aebd5dc86f09906139ec848cf3a46f" dependencies = [ - "libloading 0.8.8", -] - -[[package]] -name = "atk" -version = "0.18.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "241b621213072e993be4f6f3a9e4b45f65b7e6faad43001be957184b7bb1824b" -dependencies = [ - "atk-sys", - "glib", - "libc", -] - -[[package]] -name = "atk-sys" -version = "0.18.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5e48b684b0ca77d2bbadeef17424c2ea3c897d44d566a1617e7e8f30614d086" -dependencies = [ - "glib-sys", - "gobject-sys", - "libc", - "system-deps", + "libloading", ] [[package]] @@ -290,67 +252,13 @@ dependencies = [ [[package]] name = "avif-serialize" -version = "0.8.4" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19135c0c7a60bfee564dbe44ab5ce0557c6bf3884e5291a50be76a15640c4fbd" +checksum = "2ea8ef51aced2b9191c08197f55450d830876d9933f8f48a429b354f1d496b42" dependencies = [ "arrayvec", ] -[[package]] -name = "axum" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "021e862c184ae977658b36c4500f7feac3221ca5da43e3f25bd04ab6c79a29b5" -dependencies = [ - "axum-core", - "bytes", - "form_urlencoded", - "futures-util", - "http", - "http-body", - "http-body-util", - "hyper", - "hyper-util", - "itoa", - "matchit", - "memchr", - "mime", - "percent-encoding", - "pin-project-lite", - "rustversion", - "serde", - "serde_json", - "serde_path_to_error", - "serde_urlencoded", - "sync_wrapper", - "tokio", - "tower", - "tower-layer", - "tower-service", - "tracing", -] - -[[package]] -name = "axum-core" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68464cd0412f486726fb3373129ef5d2993f90c34bc2bc1c1e9943b2f4fc7ca6" -dependencies = [ - "bytes", - "futures-core", - "http", - "http-body", - "http-body-util", - "mime", - "pin-project-lite", - "rustversion", - "sync_wrapper", - "tower-layer", - "tower-service", - "tracing", -] - [[package]] name = "backtrace" version = "0.3.75" @@ -465,25 +373,6 @@ dependencies = [ "generic-array", ] -[[package]] -name = "block-sys" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae85a0696e7ea3b835a453750bf002770776609115e6d25c6d2ff28a8200f7e7" -dependencies = [ - "objc-sys", -] - -[[package]] -name = "block2" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15b55663a85f33501257357e6421bb33e769d5c9ffb5ba0921c975a123e35e68" -dependencies = [ - "block-sys", - "objc2 0.4.1", -] - [[package]] name = "block2" version = "0.5.1" @@ -493,36 +382,6 @@ dependencies = [ "objc2 0.5.2", ] -[[package]] -name = "block2" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "340d2f0bdb2a43c1d3cd40513185b2bd7def0aa1052f956455114bc98f82dcf2" -dependencies = [ - "objc2 0.6.1", -] - -[[package]] -name = "brotli" -version = "8.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9991eea70ea4f293524138648e41ee89b0b2b12ddef3b255effa43c8056e0e0d" -dependencies = [ - "alloc-no-stdlib", - "alloc-stdlib", - "brotli-decompressor", -] - -[[package]] -name = "brotli-decompressor" -version = "5.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "874bb8112abecc98cbd6d81ea4fa7e94fb9449648c93cc89aa40c81c24d7de03" -dependencies = [ - "alloc-no-stdlib", - "alloc-stdlib", -] - [[package]] name = "built" version = "0.7.7" @@ -572,40 +431,21 @@ name = "bytes" version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" -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.9.1", - "cairo-sys-rs", - "glib", - "libc", - "once_cell", - "thiserror 1.0.69", -] [[package]] -name = "cairo-sys-rs" -version = "0.18.2" +name = "bzip2" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "685c9fa8e590b8b3d678873528d83411db17242a73fccaed827770ea0fedda51" +checksum = "bea8dcd42434048e4f7a304411d9273a411f647446c1234a65ce0554923f4cff" dependencies = [ - "glib-sys", - "libc", - "system-deps", + "libbz2-rs-sys", ] [[package]] name = "calloop" -version = "0.12.4" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fba7adb4dd5aa98e5553510223000e7148f621165ec5f9acd7113f6ca4995298" +checksum = "b99da2f8558ca23c71f4fd15dc57c906239752dd27ff3c00a1d56b685b7cbfec" dependencies = [ "bitflags 2.9.1", "log", @@ -617,9 +457,9 @@ dependencies = [ [[package]] name = "calloop-wayland-source" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f0ea9b9476c7fad82841a8dbb380e2eae480c21910feba80725b46931ed8f02" +checksum = "95a66a987056935f7efce4ab5668920b5d0dac4a7c99991a67395f13702ddd20" dependencies = [ "calloop", "rustix 0.38.44", @@ -628,62 +468,42 @@ dependencies = [ ] [[package]] -name = "camino" -version = "1.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0da45bc31171d8d6960122e222a67740df867c1dd53b4d51caa297084c185cab" -dependencies = [ - "serde", -] - -[[package]] -name = "cargo-platform" -version = "0.1.9" +name = "cast" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e35af189006b9c0f00a064685c727031e3ed2d8020f7ba284d78cc2671bd36ea" -dependencies = [ - "serde", -] +checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" [[package]] -name = "cargo_metadata" -version = "0.19.2" +name = "cc" +version = "1.2.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd5eb614ed4c27c5d706420e4320fbe3216ab31fa1c33cd8246ac36dae4479ba" +checksum = "5c1599538de2394445747c8cf7935946e3cc27e9625f889d979bfb2aaf569362" dependencies = [ - "camino", - "cargo-platform", - "semver", - "serde", - "serde_json", - "thiserror 2.0.12", + "jobserver", + "libc", + "shlex", ] [[package]] -name = "cargo_toml" -version = "0.22.1" +name = "cef" +version = "138.5.0+138.0.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02260d489095346e5cafd04dea8e8cb54d1d74fcd759022a9b72986ebe9a1257" +checksum = "7bfa138b538b29584b02e990a631ef44261d9a70d35a77ce4ef624410046fe91" dependencies = [ - "serde", - "toml", + "cef-dll-sys", + "windows-sys 0.60.2", ] [[package]] -name = "cast" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" - -[[package]] -name = "cc" -version = "1.2.27" +name = "cef-dll-sys" +version = "138.5.0+138.0.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d487aa071b5f64da6f19a3e848e3578944b726ee5a4854b82172f02aa876bfdc" +checksum = "658450855d0ef25af50420b95fbdfacb5df17c7eb20a1615ec995470c26ed643" dependencies = [ - "jobserver", - "libc", - "shlex", + "anyhow", + "cmake", + "download-cef", + "serde_json", ] [[package]] @@ -692,17 +512,6 @@ 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" @@ -719,12 +528,6 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268" -[[package]] -name = "cfg_aliases" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" - [[package]] name = "cfg_aliases" version = "0.2.1" @@ -741,7 +544,6 @@ dependencies = [ "iana-time-zone", "js-sys", "num-traits", - "serde", "wasm-bindgen", "windows-link", ] @@ -775,9 +577,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.40" +version = "4.5.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40b6887a1d8685cebccf115538db5c0efe625ccac9696ad45c409d96566e910f" +checksum = "be92d32e80243a54711e5d7ce823c35c41c9d929dc4ab58e1276f625841aadf9" dependencies = [ "clap_builder", "clap_derive", @@ -785,9 +587,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.40" +version = "4.5.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0c66c08ce9f0c698cbce5c0279d0bb6ac936d8674174fe48f736533b964f59e" +checksum = "707eab41e9622f9139419d573eca0900137718000c517d47da73045f54331c3d" dependencies = [ "anstream", "anstyle", @@ -797,11 +599,11 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.40" +version = "4.5.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2c7947ae4cc3d851207c1adb5b5e260ff0cca11446b1d6d1423788e442257ce" +checksum = "ef4f52386a59ca4c860f7393bcf8abd8dfd91ecccc0f774635ff68e92eeef491" dependencies = [ - "heck 0.5.0", + "heck", "proc-macro2", "quote", "syn 2.0.104", @@ -813,6 +615,15 @@ version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b94f61472cee1439c0b966b47e3aca9ae07e45d070759512cd390ea2bebc6675" +[[package]] +name = "cmake" +version = "0.1.54" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7caa3f9de89ddbe2c607f4101924c5abec803763ae9534e4f4d7d8f84aa81f0" +dependencies = [ + "cc", +] + [[package]] name = "codespan-reporting" version = "0.12.0" @@ -821,7 +632,7 @@ checksum = "fe6d2e5af09e8c8ad56c969f2157a3d4238cebc7c55f0a517728c38f7b200f81" dependencies = [ "serde", "termcolor", - "unicode-width", + "unicode-width 0.1.14", ] [[package]] @@ -872,10 +683,17 @@ dependencies = [ ] [[package]] -name = "convert_case" -version = "0.4.0" +name = "console" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" +checksum = "2e09ced7ebbccb63b4c65413d821f2e00ce54c5ca4514ddc6b3c892fdbcbc69d" +dependencies = [ + "encode_unicode", + "libc", + "once_cell", + "unicode-width 0.2.1", + "windows-sys 0.60.2", +] [[package]] name = "convert_case" @@ -906,8 +724,8 @@ dependencies = [ "cookie", "document-features", "idna", + "indexmap", "log", - "publicsuffix", "serde", "serde_derive", "serde_json", @@ -925,16 +743,6 @@ dependencies = [ "libc", ] -[[package]] -name = "core-foundation" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6" -dependencies = [ - "core-foundation-sys", - "libc", -] - [[package]] name = "core-foundation-sys" version = "0.8.7" @@ -948,21 +756,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c07782be35f9e1140080c6b96f0d44b739e2278479f64e02fdab4e32dfd8b081" dependencies = [ "bitflags 1.3.2", - "core-foundation 0.9.4", - "core-graphics-types 0.1.3", - "foreign-types 0.5.0", - "libc", -] - -[[package]] -name = "core-graphics" -version = "0.24.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa95a34622365fa5bbf40b20b75dba8dfa8c94c734aea8ac9a5ca38af14316f1" -dependencies = [ - "bitflags 2.9.1", - "core-foundation 0.10.1", - "core-graphics-types 0.2.0", + "core-foundation", + "core-graphics-types", "foreign-types 0.5.0", "libc", ] @@ -974,18 +769,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "45390e6114f68f718cc7a830514a96f903cccd70d02a8f6d9f643ac4ba45afaf" dependencies = [ "bitflags 1.3.2", - "core-foundation 0.9.4", - "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.9.1", - "core-foundation 0.10.1", + "core-foundation", "libc", ] @@ -1009,9 +793,9 @@ dependencies = [ [[package]] name = "crc32fast" -version = "1.4.2" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" +checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" dependencies = [ "cfg-if", ] @@ -1052,15 +836,6 @@ dependencies = [ "itertools 0.10.5", ] -[[package]] -name = "crossbeam-channel" -version = "0.5.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2" -dependencies = [ - "crossbeam-utils", -] - [[package]] name = "crossbeam-deque" version = "0.8.6" @@ -1102,33 +877,6 @@ dependencies = [ "typenum", ] -[[package]] -name = "cssparser" -version = "0.29.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f93d03419cb5950ccfd3daf3ff1c7a36ace64609a1a8746d493df1ca0afde0fa" -dependencies = [ - "cssparser-macros", - "dtoa-short", - "itoa", - "matches", - "phf 0.10.1", - "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.104", -] - [[package]] name = "ctor" version = "0.2.9" @@ -1144,47 +892,15 @@ name = "cursor-icon" version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f27ae1dd37df86211c42e150270f82743308803d90a6f6e6651cd730d5e1732f" - -[[package]] -name = "darling" -version = "0.20.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee" dependencies = [ - "darling_core", - "darling_macro", + "serde", ] [[package]] -name = "darling_core" -version = "0.20.11" +name = "data-url" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d00b9596d185e565c2207a0b01f8bd1a135483d02d9b7b0a54b11da8d53412e" -dependencies = [ - "fnv", - "ident_case", - "proc-macro2", - "quote", - "strsim", - "syn 2.0.104", -] - -[[package]] -name = "darling_macro" -version = "0.20.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" -dependencies = [ - "darling_core", - "quote", - "syn 2.0.104", -] - -[[package]] -name = "data-url" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c297a1c74b71ae29df00c3e22dd9534821d60eb9af5a0192823fa2acea70c2a" +checksum = "5c297a1c74b71ae29df00c3e22dd9534821d60eb9af5a0192823fa2acea70c2a" [[package]] name = "deranged" @@ -1193,7 +909,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c9e6a11ca8224451684bc0d7d5a7adbf8f2fd6887261a1cfc3c0432f9d4068e" dependencies = [ "powerfmt", - "serde", ] [[package]] @@ -1207,19 +922,6 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "derive_more" -version = "0.99.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6edb4b64a43d977b8e99788fe3a04d483834fba1215a7e02caa415b626497f7f" -dependencies = [ - "convert_case 0.4.0", - "proc-macro2", - "quote", - "rustc_version", - "syn 2.0.104", -] - [[package]] name = "diff" version = "0.1.13" @@ -1236,43 +938,12 @@ dependencies = [ "crypto-common", ] -[[package]] -name = "dirs" -version = "6.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3e8aa94d75141228480295a7d0e7feb620b1a5ad9f12bc40be62411e38cce4e" -dependencies = [ - "dirs-sys", -] - -[[package]] -name = "dirs-sys" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab" -dependencies = [ - "libc", - "option-ext", - "redox_users", - "windows-sys 0.60.2", -] - [[package]] name = "dispatch" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" -[[package]] -name = "dispatch2" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89a09f22a6c6069a18470eb92d2298acf25463f14256d24778e1230d789a2aec" -dependencies = [ - "bitflags 2.9.1", - "objc2 0.6.1", -] - [[package]] name = "displaydoc" version = "0.2.5" @@ -1290,30 +961,7 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "330c60081dcc4c72131f8eb70510f1ac07223e5d4163db481a04a0befcffa412" dependencies = [ - "libloading 0.8.8", -] - -[[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.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "788160fb30de9cdd857af31c6a2675904b16ece8fc2737b2c7127ba368c9d0f4" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.104", + "libloading", ] [[package]] @@ -1332,35 +980,33 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" [[package]] -name = "dpi" -version = "0.1.2" +name = "download-cef" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8b14ccef22fc6f5a8f4d7d768562a182c04ce9a3b3157b91390b52ddfdf1a76" +checksum = "eecc63fbfbe85b1767a8eeb4118408ee4452280c069b4c73301cf2efda4db0d6" dependencies = [ + "bzip2", + "clap", + "indicatif", + "regex", + "semver", "serde", + "serde_json", + "sha1_smol", + "tar", + "thiserror 2.0.12", + "ureq", ] [[package]] -name = "dtoa" -version = "1.0.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6add3b8cff394282be81f3fc1a0605db594ed69890078ca6e2cab1c408bcf04" - -[[package]] -name = "dtoa-short" -version = "0.3.5" +name = "dpi" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd1511a7b6a56299bd043a9c167a6d2bfb37bf84a6dfceaba651168adfb43c87" +checksum = "d8b14ccef22fc6f5a8f4d7d768562a182c04ce9a3b3157b91390b52ddfdf1a76" dependencies = [ - "dtoa", + "serde", ] -[[package]] -name = "dunce" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" - [[package]] name = "dyn-any" version = "0.3.1" @@ -1380,12 +1026,6 @@ dependencies = [ "syn 2.0.104", ] -[[package]] -name = "dyn-clone" -version = "1.0.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c7a8fb8a9fbf66c1f703fe16184d10ca0ee9d23be5b4436400408ba54a95005" - [[package]] name = "either" version = "1.15.0" @@ -1393,24 +1033,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" [[package]] -name = "embed-resource" -version = "3.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0963f530273dc3022ab2bdc3fcd6d488e850256f2284a82b7413cb9481ee85dd" -dependencies = [ - "cc", - "memchr", - "rustc_version", - "toml", - "vswhom", - "winreg", -] - -[[package]] -name = "embed_plist" -version = "1.2.2" +name = "encode_unicode" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ef6b89e5b37196644d8796de5268852ff179b44e96276cf4290264843743bb7" +checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" [[package]] name = "encoding_rs" @@ -1470,16 +1096,6 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" -[[package]] -name = "erased-serde" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e004d887f51fcb9fef17317a2f3525c887d8aa3f4f50fed920816a688284a5b7" -dependencies = [ - "serde", - "typeid", -] - [[package]] name = "errno" version = "0.3.13" @@ -1549,13 +1165,15 @@ dependencies = [ ] [[package]] -name = "field-offset" -version = "0.3.6" +name = "filetime" +version = "0.2.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38e2275cc4e4fc009b0669731a1e5ab7ebf11f469eaede2bab9309a5b4d6057f" +checksum = "35c0522e981e68cbfa8c3f978441a5f34b30b96e146b33cd3359176b50fe8586" dependencies = [ - "memoffset", - "rustc_version", + "cfg-if", + "libc", + "libredox", + "windows-sys 0.59.0", ] [[package]] @@ -1642,7 +1260,7 @@ checksum = "39f97079e1293b8c1e9fb03a2875d328bd2ee8f3b95ce62959c0acc04049c708" dependencies = [ "bytemuck", "fontconfig-cache-parser", - "hashbrown 0.15.4", + "hashbrown", "icu_locid", "memmap2", "objc2 0.6.1", @@ -1653,7 +1271,7 @@ dependencies = [ "read-fonts 0.29.3", "roxmltree", "smallvec", - "windows 0.58.0", + "windows", "windows-core 0.58.0", ] @@ -1708,16 +1326,6 @@ 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" version = "0.3.31" @@ -1818,114 +1426,6 @@ dependencies = [ "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.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9f245958c627ac99d8e529166f9823fb3b838d1d41fd2b297af3075093c2691" -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.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c2d13f38594ac1e66619e188c6d5a1adb98d11b2fcf7894fc416ad76aa2f3f7" -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.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "140071d506d223f7572b9f09b5e155afbd77428cd5cc7af8f2694c41d98dfe69" -dependencies = [ - "gdk-sys", - "glib-sys", - "gobject-sys", - "libc", - "pkg-config", - "system-deps", -] - -[[package]] -name = "gdkx11" -version = "0.18.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3caa00e14351bebbc8183b3c36690327eb77c49abc2268dd4bd36b856db3fbfe" -dependencies = [ - "gdk", - "gdkx11-sys", - "gio", - "glib", - "libc", - "x11", -] - -[[package]] -name = "gdkx11-sys" -version = "0.18.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e2e7445fe01ac26f11601db260dd8608fe172514eb63b3b5e261ea6b0f4428d" -dependencies = [ - "gdk-sys", - "glib-sys", - "libc", - "system-deps", - "x11", -] - [[package]] name = "generic-array" version = "0.14.7" @@ -1946,17 +1446,6 @@ dependencies = [ "windows-targets 0.48.5", ] -[[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.16" @@ -2000,38 +1489,6 @@ 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 = "gl_generator" version = "0.14.0" @@ -2052,53 +1509,6 @@ dependencies = [ "serde", ] -[[package]] -name = "glib" -version = "0.18.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "233daaf6e83ae6a12a52055f568f9d7cf4671dabb78ff9560ab6da230ce00ee5" -dependencies = [ - "bitflags 2.9.1", - "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.0", - "proc-macro-error", - "proc-macro2", - "quote", - "syn 2.0.104", -] - -[[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.2" @@ -2126,17 +1536,6 @@ dependencies = [ "gl_generator", ] -[[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 = "gpu-alloc" version = "0.6.0" @@ -2165,7 +1564,7 @@ dependencies = [ "log", "presser", "thiserror 1.0.69", - "windows 0.58.0", + "windows", ] [[package]] @@ -2176,7 +1575,7 @@ checksum = "b89c83349105e3732062a895becfc71a8f921bb71ecbbdd8ff99263e3b53a0ca" dependencies = [ "bitflags 2.9.1", "gpu-descriptor-types", - "hashbrown 0.15.4", + "hashbrown", ] [[package]] @@ -2397,18 +1796,17 @@ dependencies = [ name = "graphite-desktop" version = "0.1.0" dependencies = [ - "axum", - "chrono", - "fern", - "futures", + "base64 0.22.1", + "bytemuck", + "cef", "graphite-editor", - "log", - "ron", - "tauri", - "tauri-build", - "tauri-plugin-http", - "tauri-plugin-shell", - "tokio", + "include_dir", + "pollster", + "thiserror 2.0.12", + "tracing", + "tracing-subscriber", + "wgpu", + "winit", ] [[package]] @@ -2476,62 +1874,10 @@ dependencies = [ ] [[package]] -name = "gtk" -version = "0.18.2" +name = "guillotiere" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd56fb197bfc42bd5d2751f4f017d44ff59fbb58140c6b49f9b3b2bdab08506a" -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.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f29a1c21c59553eb7dd40e918be54dccd60c52b049b75119d5d96ce6b624414" -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.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52ff3c5b21f14f0736fed6dcfc0bfb4225ebf5725f3c0209edeec181e4d73e9d" -dependencies = [ - "proc-macro-crate 1.3.1", - "proc-macro-error", - "proc-macro2", - "quote", - "syn 2.0.104", -] - -[[package]] -name = "guillotiere" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b62d5865c036cb1393e23c50693df631d3f5d7bcca4c04fe4cc0fd592e74a782" +checksum = "b62d5865c036cb1393e23c50693df631d3f5d7bcca4c04fe4cc0fd592e74a782" dependencies = [ "euclid", "svg_fmt", @@ -2549,7 +1895,7 @@ dependencies = [ "futures-core", "futures-sink", "http", - "indexmap 2.10.0", + "indexmap", "slab", "tokio", "tokio-util", @@ -2569,12 +1915,6 @@ dependencies = [ "serde", ] -[[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.4" @@ -2586,12 +1926,6 @@ dependencies = [ "foldhash", ] -[[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" @@ -2604,30 +1938,12 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" -[[package]] -name = "hex" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" - [[package]] name = "hexf-parse" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dfa686283ad6dd069f105e5ab091b04c62850d3e4cf5d67debad1933f55023df" -[[package]] -name = "html5ever" -version = "0.29.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b7410cae13cbc75623c98ac4cbfd1f0bedddf3227afc24f370cf0f50a44a11c" -dependencies = [ - "log", - "mac", - "markup5ever", - "match_token", -] - [[package]] name = "http" version = "1.3.1" @@ -2668,12 +1984,6 @@ version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" -[[package]] -name = "httpdate" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" - [[package]] name = "hyper" version = "1.6.0" @@ -2687,7 +1997,6 @@ dependencies = [ "http", "http-body", "httparse", - "httpdate", "itoa", "pin-project-lite", "smallvec", @@ -2709,7 +2018,7 @@ dependencies = [ "tokio", "tokio-rustls", "tower-service", - "webpki-roots", + "webpki-roots 1.0.1", ] [[package]] @@ -2730,9 +2039,9 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.14" +version = "0.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc2fdfdbff08affe55bb779f33b053aa1fe5dd5b54c257343c17edfa55711bdb" +checksum = "7f66d5bd4c6f02bf0542fad85d626775bab9258cf795a4256dcaf3161114d1df" dependencies = [ "base64 0.22.1", "bytes", @@ -2812,27 +2121,6 @@ dependencies = [ "cc", ] -[[package]] -name = "ico" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc50b891e4acf8fe0e71ef88ec43ad82ee07b3810ad09de10f1d01f072ed4b98" -dependencies = [ - "byteorder", - "png", -] - -[[package]] -name = "icrate" -version = "0.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99d3aaff8a54577104bafdf686ff18565c3b6903ca5782a2026ef06e2c7aa319" -dependencies = [ - "block2 0.3.0", - "dispatch", - "objc2 0.4.1", -] - [[package]] name = "icu_collections" version = "2.0.0" @@ -2931,12 +2219,6 @@ dependencies = [ "zerovec", ] -[[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" @@ -3014,14 +2296,22 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d0263a3d970d5c054ed9312c0057b4f3bde9c0b33836d3637361d4a9e6e7a408" [[package]] -name = "indexmap" -version = "1.9.3" +name = "include_dir" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +checksum = "923d117408f1e49d914f1a379a309cffe4f18c05cf4e3d12e613a15fc81bd0dd" dependencies = [ - "autocfg", - "hashbrown 0.12.3", - "serde", + "include_dir_macros", +] + +[[package]] +name = "include_dir_macros" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cab85a7ed0bd5f0e76d93846e0147172bed2e2d3f859bcc33a8d9699cad1a75" +dependencies = [ + "proc-macro2", + "quote", ] [[package]] @@ -3031,24 +2321,27 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fe4cd85333e22411419a0bcae1297d25e58c9443848b11dc6a86fefe8c78a661" dependencies = [ "equivalent", - "hashbrown 0.15.4", - "serde", + "hashbrown", ] [[package]] -name = "indoc" -version = "2.0.6" +name = "indicatif" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4c7245a08504955605670dbf141fceab975f15ca21570696aebe9d2e71576bd" +checksum = "70a646d946d06bedbbc4cac4c218acf4bbf2d87757a784857025f4d447e4e1cd" +dependencies = [ + "console", + "portable-atomic", + "unicode-width 0.2.1", + "unit-prefix", + "web-time", +] [[package]] -name = "infer" -version = "0.19.0" +name = "indoc" +version = "2.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a588916bfdfd92e71cacef98a63d9b1f0d74d6599980d11894290e7ddefffcf7" -dependencies = [ - "cfb", -] +checksum = "f4c7245a08504955605670dbf141fceab975f15ca21570696aebe9d2e71576bd" [[package]] name = "interpolate_name" @@ -3079,6 +2372,17 @@ dependencies = [ "wgpu-executor", ] +[[package]] +name = "io-uring" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b86e202f00093dcba4275d4636b93ef9dd75d025ae560d2521b45ea28ab49013" +dependencies = [ + "bitflags 2.9.1", + "cfg-if", + "libc", +] + [[package]] name = "ipnet" version = "2.11.0" @@ -3095,15 +2399,6 @@ dependencies = [ "serde", ] -[[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-terminal" version = "0.4.16" @@ -3115,16 +2410,6 @@ dependencies = [ "windows-sys 0.59.0", ] -[[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 = "is_terminal_polyfill" version = "1.70.1" @@ -3155,29 +2440,6 @@ version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" -[[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 = "jiff" version = "0.2.15" @@ -3250,39 +2512,6 @@ 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.9.1", - "serde", - "unicode-segmentation", -] - [[package]] name = "khronos-egl" version = "6.0.0" @@ -3290,7 +2519,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6aae1df220ece3c0ada96b8153459b67eebe9ae9212258bb0134ae60416fdf76" dependencies = [ "libc", - "libloading 0.8.8", + "libloading", "pkg-config", ] @@ -3300,18 +2529,6 @@ version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e2db585e1d738fc771bf08a151420d3ed193d9d895a36df7f6f8a9456b911ddc" -[[package]] -name = "kuchikiki" -version = "0.8.8-speedreader" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02cb977175687f33fa4afa0c95c112b987ea1443e5a51c8f8ff27dc618270cc2" -dependencies = [ - "cssparser", - "html5ever", - "indexmap 2.10.0", - "selectors", -] - [[package]] name = "kurbo" version = "0.11.2" @@ -3336,28 +2553,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "03087c2bad5e1034e8cace5926dec053fb3790248370865f5117a7d0213354c8" [[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" +name = "libbz2-rs-sys" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e9ec52138abedcc58dc17a7c6c0c00a2bdb4f3427c7f63fa97fd0d859155caf" -dependencies = [ - "gtk-sys", - "libloading 0.7.4", - "once_cell", -] +checksum = "775bf80d5878ab7c2b1080b5351a48b2f737d9f6f8b383574eebcc22be0dfccb" [[package]] name = "libc" @@ -3367,24 +2566,14 @@ checksum = "1171693293099992e19cddea4e8b849964e9846f4acee11b3948bcc337be8776" [[package]] name = "libfuzzer-sys" -version = "0.4.9" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf78f52d400cf2d84a3a973a78a592b4adc535739e0a5597a0da6f0c357adc75" +checksum = "5037190e1f70cbeef565bd267599242926f724d3b8a9f510fd7e0b540cfa4404" dependencies = [ "arbitrary", "cc", ] -[[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 = "libloading" version = "0.8.8" @@ -3473,12 +2662,6 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" -[[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" @@ -3489,42 +2672,14 @@ dependencies = [ ] [[package]] -name = "markup5ever" -version = "0.14.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7a7213d12e1864c0f002f52c2923d4556935a43dec5e71355c2760e0f6e7a18" -dependencies = [ - "log", - "phf 0.11.3", - "phf_codegen 0.11.3", - "string_cache", - "string_cache_codegen", - "tendril", -] - -[[package]] -name = "match_token" +name = "matchers" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88a9689d8d44bf9964484516275f5cd4c9b59457a6940c1d5d0ecbb94510a36b" +checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.104", + "regex-automata 0.1.10", ] -[[package]] -name = "matches" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5" - -[[package]] -name = "matchit" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47e1ffaa40ddd1f3ed91f717a33c8c0ee23fff369e3aa8772b9605cc1d22f4c3" - [[package]] name = "math-parser" version = "0.0.0" @@ -3565,22 +2720,13 @@ checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" [[package]] name = "memmap2" -version = "0.9.5" +version = "0.9.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd3f7eed9d3848f8b98834af67102b720745c4ec028fcd0aa0239277e7de374f" +checksum = "483758ad303d734cec05e5c12b41d7e93e6a6390c5e9dae6bdeb7c1259012d28" dependencies = [ "libc", ] -[[package]] -name = "memoffset" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" -dependencies = [ - "autocfg", -] - [[package]] name = "metal" version = "0.31.0" @@ -3589,7 +2735,7 @@ checksum = "f569fb946490b5743ad69813cb19629130ce9374034abe31614a36402d18f99e" dependencies = [ "bitflags 2.9.1", "block", - "core-graphics-types 0.1.3", + "core-graphics-types", "foreign-types 0.5.0", "log", "objc", @@ -3629,27 +2775,6 @@ dependencies = [ "windows-sys 0.59.0", ] -[[package]] -name = "muda" -version = "0.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58b89bf91c19bf036347f1ab85a81c560f08c0667c8601bece664d860a600988" -dependencies = [ - "crossbeam-channel", - "dpi", - "gtk", - "keyboard-types", - "objc2 0.6.1", - "objc2-app-kit", - "objc2-core-foundation", - "objc2-foundation 0.3.1", - "once_cell", - "png", - "serde", - "thiserror 2.0.12", - "windows-sys 0.59.0", -] - [[package]] name = "naga" version = "25.0.1" @@ -3659,12 +2784,12 @@ dependencies = [ "arrayvec", "bit-set", "bitflags 2.9.1", - "cfg_aliases 0.2.1", + "cfg_aliases", "codespan-reporting", "half", - "hashbrown 0.15.4", + "hashbrown", "hexf-parse", - "indexmap 2.10.0", + "indexmap", "log", "num-traits", "once_cell", @@ -3708,21 +2833,6 @@ dependencies = [ "rawpointer", ] -[[package]] -name = "ndk" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2076a31b7010b17a38c01907c45b945e8f11495ee4dd588309718901b1f7a5b7" -dependencies = [ - "bitflags 2.9.1", - "jni-sys", - "log", - "ndk-sys 0.5.0+25.2.9519653", - "num_enum", - "raw-window-handle", - "thiserror 1.0.69", -] - [[package]] name = "ndk" version = "0.9.0" @@ -3772,22 +2882,16 @@ checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" name = "node-macro" version = "0.0.0" dependencies = [ - "convert_case 0.7.1", + "convert_case", "graphene-core", "indoc", - "proc-macro-crate 3.3.0", + "proc-macro-crate", "proc-macro-error2", "proc-macro2", "quote", "syn 2.0.104", ] -[[package]] -name = "nodrop" -version = "0.1.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb" - [[package]] name = "nom" version = "7.1.3" @@ -3804,6 +2908,16 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0676bb32a98c1a483ce53e500a81ad9c3d5b3f7c920c28c24e9cb0980d0b5bc8" +[[package]] +name = "nu-ansi-term" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +dependencies = [ + "overload", + "winapi", +] + [[package]] name = "num-bigint" version = "0.4.6" @@ -3886,7 +3000,7 @@ version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77e878c846a8abae00dd069496dbe8751b16ac1c3d6bd2a7283a938e8228f90d" dependencies = [ - "proc-macro-crate 3.3.0", + "proc-macro-crate", "proc-macro2", "quote", "syn 2.0.104", @@ -3909,73 +3023,73 @@ checksum = "cdb91bdd390c7ce1a8607f35f3ca7151b65afc0ff5ff3b34fa350f7d7c7e4310" [[package]] name = "objc2" -version = "0.4.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "559c5a40fdd30eb5e344fbceacf7595a81e242529fb4e21cf5f43fb4f11ff98d" +checksum = "46a785d4eeff09c14c487497c162e92766fbb3e4059a71840cecc03d9a50b804" dependencies = [ "objc-sys", - "objc2-encode 3.0.0", + "objc2-encode", ] [[package]] name = "objc2" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46a785d4eeff09c14c487497c162e92766fbb3e4059a71840cecc03d9a50b804" -dependencies = [ - "objc-sys", - "objc2-encode 4.1.0", -] - -[[package]] -name = "objc2" -version = "0.6.1" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "88c6597e14493ab2e44ce58f2fdecf095a51f12ca57bec060a11c57332520551" dependencies = [ - "objc2-encode 4.1.0", - "objc2-exception-helper", + "objc2-encode", ] [[package]] name = "objc2-app-kit" -version = "0.3.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6f29f568bec459b0ddff777cec4fe3fd8666d82d5a40ebd0ff7e66134f89bcc" +checksum = "e4e89ad9e3d7d297152b17d39ed92cd50ca8063a89a9fa569046d41568891eff" dependencies = [ "bitflags 2.9.1", - "block2 0.6.1", + "block2", "libc", - "objc2 0.6.1", - "objc2-cloud-kit", + "objc2 0.5.2", "objc2-core-data", - "objc2-core-foundation", - "objc2-core-graphics", "objc2-core-image", - "objc2-foundation 0.3.1", - "objc2-quartz-core 0.3.1", + "objc2-foundation 0.2.2", + "objc2-quartz-core", ] [[package]] name = "objc2-cloud-kit" -version = "0.3.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17614fdcd9b411e6ff1117dfb1d0150f908ba83a7df81b1f118005fe0a8ea15d" +checksum = "74dd3b56391c7a0596a295029734d3c1c5e7e510a4cb30245f8221ccea96b009" dependencies = [ "bitflags 2.9.1", - "objc2 0.6.1", - "objc2-foundation 0.3.1", + "block2", + "objc2 0.5.2", + "objc2-core-location", + "objc2-foundation 0.2.2", +] + +[[package]] +name = "objc2-contacts" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5ff520e9c33812fd374d8deecef01d4a840e7b41862d849513de77e44aa4889" +dependencies = [ + "block2", + "objc2 0.5.2", + "objc2-foundation 0.2.2", ] [[package]] name = "objc2-core-data" -version = "0.3.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "291fbbf7d29287518e8686417cf7239c74700fd4b607623140a7d4a3c834329d" +checksum = "617fbf49e071c178c0b24c080767db52958f716d9eabdf0890523aeae54773ef" dependencies = [ "bitflags 2.9.1", - "objc2 0.6.1", - "objc2-foundation 0.3.1", + "block2", + "objc2 0.5.2", + "objc2-foundation 0.2.2", ] [[package]] @@ -3985,31 +3099,30 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1c10c2894a6fed806ade6027bcd50662746363a9589d3ec9d9bef30a4e4bc166" dependencies = [ "bitflags 2.9.1", - "dispatch2", - "objc2 0.6.1", ] [[package]] -name = "objc2-core-graphics" -version = "0.3.1" +name = "objc2-core-image" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "989c6c68c13021b5c2d6b71456ebb0f9dc78d752e86a98da7c716f4f9470f5a4" +checksum = "55260963a527c99f1819c4f8e3b47fe04f9650694ef348ffd2227e8196d34c80" dependencies = [ - "bitflags 2.9.1", - "dispatch2", - "objc2 0.6.1", - "objc2-core-foundation", - "objc2-io-surface", + "block2", + "objc2 0.5.2", + "objc2-foundation 0.2.2", + "objc2-metal", ] [[package]] -name = "objc2-core-image" -version = "0.3.1" +name = "objc2-core-location" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79b3dc0cc4386b6ccf21c157591b34a7f44c8e75b064f85502901ab2188c007e" +checksum = "000cfee34e683244f284252ee206a27953279d370e309649dc3ee317b37e5781" dependencies = [ - "objc2 0.6.1", - "objc2-foundation 0.3.1", + "block2", + "objc2 0.5.2", + "objc2-contacts", + "objc2-foundation 0.2.2", ] [[package]] @@ -4022,27 +3135,12 @@ dependencies = [ "objc2-core-foundation", ] -[[package]] -name = "objc2-encode" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d079845b37af429bfe5dfa76e6d087d788031045b25cfc6fd898486fd9847666" - [[package]] name = "objc2-encode" version = "4.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ef25abbcd74fb2609453eb695bd2f860d389e457f67dc17cafc8b8cbc89d0c33" -[[package]] -name = "objc2-exception-helper" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7a1c5fbb72d7735b076bb47b578523aedc40f3c439bea6dfd595c089d79d98a" -dependencies = [ - "cc", -] - [[package]] name = "objc2-foundation" version = "0.2.2" @@ -4050,7 +3148,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8" dependencies = [ "bitflags 2.9.1", - "block2 0.5.1", + "block2", + "dispatch", "libc", "objc2 0.5.2", ] @@ -4062,21 +3161,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "900831247d2fe1a09a683278e5384cfb8c80c79fe6b166f9d14bfdde0ea1b03c" dependencies = [ "bitflags 2.9.1", - "block2 0.6.1", - "libc", "objc2 0.6.1", - "objc2-core-foundation", ] [[package]] -name = "objc2-io-surface" -version = "0.3.1" +name = "objc2-link-presentation" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7282e9ac92529fa3457ce90ebb15f4ecbc383e8338060960760fa2cf75420c3c" +checksum = "a1a1ae721c5e35be65f01a03b6d2ac13a54cb4fa70d8a5da293d7b0020261398" dependencies = [ - "bitflags 2.9.1", - "objc2 0.6.1", - "objc2-core-foundation", + "block2", + "objc2 0.5.2", + "objc2-app-kit", + "objc2-foundation 0.2.2", ] [[package]] @@ -4086,7 +3183,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6" dependencies = [ "bitflags 2.9.1", - "block2 0.5.1", + "block2", "objc2 0.5.2", "objc2-foundation 0.2.2", ] @@ -4098,47 +3195,65 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a" dependencies = [ "bitflags 2.9.1", - "block2 0.5.1", + "block2", "objc2 0.5.2", "objc2-foundation 0.2.2", "objc2-metal", ] [[package]] -name = "objc2-quartz-core" -version = "0.3.1" +name = "objc2-symbols" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90ffb6a0cd5f182dc964334388560b12a57f7b74b3e2dec5e2722aa2dfb2ccd5" +checksum = "0a684efe3dec1b305badae1a28f6555f6ddd3bb2c2267896782858d5a78404dc" dependencies = [ - "bitflags 2.9.1", - "objc2 0.6.1", - "objc2-foundation 0.3.1", + "objc2 0.5.2", + "objc2-foundation 0.2.2", ] [[package]] name = "objc2-ui-kit" -version = "0.3.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25b1312ad7bc8a0e92adae17aa10f90aae1fb618832f9b993b022b591027daed" +checksum = "b8bb46798b20cd6b91cbd113524c490f1686f4c4e8f49502431415f3512e2b6f" dependencies = [ "bitflags 2.9.1", - "objc2 0.6.1", - "objc2-core-foundation", - "objc2-foundation 0.3.1", + "block2", + "objc2 0.5.2", + "objc2-cloud-kit", + "objc2-core-data", + "objc2-core-image", + "objc2-core-location", + "objc2-foundation 0.2.2", + "objc2-link-presentation", + "objc2-quartz-core", + "objc2-symbols", + "objc2-uniform-type-identifiers", + "objc2-user-notifications", ] [[package]] -name = "objc2-web-kit" -version = "0.3.1" +name = "objc2-uniform-type-identifiers" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44fa5f9748dbfe1ca6c0b79ad20725a11eca7c2218bceb4b005cb1be26273bfe" +dependencies = [ + "block2", + "objc2 0.5.2", + "objc2-foundation 0.2.2", +] + +[[package]] +name = "objc2-user-notifications" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91672909de8b1ce1c2252e95bbee8c1649c9ad9d14b9248b3d7b4c47903c47ad" +checksum = "76cfcbf642358e8689af64cee815d139339f3ed8ad05103ed5eaf73db8d84cb3" dependencies = [ "bitflags 2.9.1", - "block2 0.6.1", - "objc2 0.6.1", - "objc2-app-kit", - "objc2-core-foundation", - "objc2-foundation 0.3.1", + "block2", + "objc2 0.5.2", + "objc2-core-location", + "objc2-foundation 0.2.2", ] [[package]] @@ -4168,18 +3283,6 @@ version = "11.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d6790f58c7ff633d8771f42965289203411a5e5c68388703c06e14f24770b41e" -[[package]] -name = "open" -version = "5.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2483562e62ea94312f3576a7aca397306df7990b8d89033e18766744377ef95" -dependencies = [ - "dunce", - "is-wsl", - "libc", - "pathdiff", -] - [[package]] name = "openssl" version = "0.10.73" @@ -4224,12 +3327,6 @@ dependencies = [ "vcpkg", ] -[[package]] -name = "option-ext" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" - [[package]] name = "orbclient" version = "0.3.48" @@ -4249,14 +3346,10 @@ dependencies = [ ] [[package]] -name = "os_pipe" -version = "1.2.2" +name = "overload" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db335f4760b14ead6290116f2427bf33a14d4f0617d49f78a246de10c1831224" -dependencies = [ - "libc", - "windows-sys 0.59.0", -] +checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" [[package]] name = "owned_ttf_parser" @@ -4267,31 +3360,6 @@ dependencies = [ "ttf-parser 0.25.1", ] -[[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.4" @@ -4322,7 +3390,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13e57638545cf2ba4c3e72cc5715e53b1880b829cc3dbefda3d1700c58efe723" dependencies = [ "fontique", - "hashbrown 0.15.4", + "hashbrown", "peniko", "skrifa 0.31.3", "swash", @@ -4348,12 +3416,6 @@ dependencies = [ "svg", ] -[[package]] -name = "pathdiff" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" - [[package]] name = "peniko" version = "0.4.0" @@ -4422,7 +3484,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3672b37090dbd86368a4145bc067582552b29c27377cad4e0a306c97f9bd7772" dependencies = [ "fixedbitset", - "indexmap 2.10.0", + "indexmap", ] [[package]] @@ -4432,151 +3494,37 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "54acf3a685220b533e437e264e4d932cfbdc4cc7ec0cd232ed73c08d03b8a7ca" dependencies = [ "fixedbitset", - "hashbrown 0.15.4", - "indexmap 2.10.0", + "hashbrown", + "indexmap", "serde", ] [[package]] -name = "phf" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dfb61232e34fcb633f43d12c58f83c1df82962dcdfa565a4e866ffc17dafe12" -dependencies = [ - "phf_shared 0.8.0", -] - -[[package]] -name = "phf" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fabbf1ead8a5bcbc20f5f8b939ee3f5b0f6f281b6ad3468b84656b658b455259" -dependencies = [ - "phf_macros 0.10.0", - "phf_shared 0.10.0", - "proc-macro-hack", -] - -[[package]] -name = "phf" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078" -dependencies = [ - "phf_macros 0.11.3", - "phf_shared 0.11.3", -] - -[[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.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aef8048c789fa5e851558d709946d6d79a8ff88c0440c587967f8e94bfb1216a" -dependencies = [ - "phf_generator 0.11.3", - "phf_shared 0.11.3", -] - -[[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.3" +name = "pico-args" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d" -dependencies = [ - "phf_shared 0.11.3", - "rand 0.8.5", -] +checksum = "5be167a7af36ee22fe3115051bc51f6e6c7054c9348e28deb4f49bd6f705a315" [[package]] -name = "phf_macros" -version = "0.10.0" +name = "pin-project" +version = "1.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58fdf3184dd560f160dd73922bea2d5cd6e8f064bf4b13110abd81b03697b4e0" +checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" dependencies = [ - "phf_generator 0.10.0", - "phf_shared 0.10.0", - "proc-macro-hack", - "proc-macro2", - "quote", - "syn 1.0.109", + "pin-project-internal", ] [[package]] -name = "phf_macros" -version = "0.11.3" +name = "pin-project-internal" +version = "1.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f84ac04429c13a7ff43785d75ad27569f2951ce0ffd30a3321230db2fc727216" +checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" dependencies = [ - "phf_generator 0.11.3", - "phf_shared 0.11.3", "proc-macro2", "quote", "syn 2.0.104", ] -[[package]] -name = "phf_shared" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c00cf8b9eafe68dde5e9eaa2cef8ee84a9336a47d566ec55ca16589633b65af7" -dependencies = [ - "siphasher 0.3.11", -] - -[[package]] -name = "phf_shared" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096" -dependencies = [ - "siphasher 0.3.11", -] - -[[package]] -name = "phf_shared" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" -dependencies = [ - "siphasher 1.0.1", -] - -[[package]] -name = "pico-args" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5be167a7af36ee22fe3115051bc51f6e6c7054c9348e28deb4f49bd6f705a315" - [[package]] name = "pin-project-lite" version = "0.2.16" @@ -4595,19 +3543,6 @@ version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" -[[package]] -name = "plist" -version = "1.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d77244ce2d584cd84f6a15f86195b8c9b2a0dfbfd817c09e0464244091a58ed" -dependencies = [ - "base64 0.22.1", - "indexmap 2.10.0", - "quick-xml", - "serde", - "time", -] - [[package]] name = "plotters" version = "0.3.7" @@ -4664,6 +3599,12 @@ dependencies = [ "windows-sys 0.59.0", ] +[[package]] +name = "pollster" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22686f4785f02a4fcc856d3b3bb19bf6c8160d103f7a99cc258bddd0251dc7f2" + [[package]] name = "portable-atomic" version = "1.11.1" @@ -4703,12 +3644,6 @@ dependencies = [ "zerocopy", ] -[[package]] -name = "precomputed-hash" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" - [[package]] name = "preprocessor" version = "0.1.0" @@ -4734,32 +3669,13 @@ dependencies = [ "yansi", ] -[[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.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e8366a6159044a37876a2b9817124296703c586a5c92e2c53751fa06d8d43e8" -dependencies = [ - "toml_edit 0.20.7", -] - [[package]] name = "proc-macro-crate" version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35" dependencies = [ - "toml_edit 0.22.27", + "toml_edit", ] [[package]] @@ -4808,12 +3724,6 @@ dependencies = [ "syn 2.0.104", ] -[[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.95" @@ -4843,24 +3753,8 @@ dependencies = [ ] [[package]] -name = "psl-types" -version = "2.0.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33cb294fe86a74cbcf50d4445b37da762029549ebeea341421c7c70370f86cac" - -[[package]] -name = "publicsuffix" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f42ea446cab60335f76979ec15e12619a2165b5ae2c12166bef27d283a9fadf" -dependencies = [ - "idna", - "psl-types", -] - -[[package]] -name = "qoi" -version = "0.4.1" +name = "qoi" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f6d64c71eb498fe9eae14ce4ec935c555749aef511cca85b5568910d6e48001" dependencies = [ @@ -4889,7 +3783,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "626214629cda6781b6dc1d316ba307189c85ba657213ce642d9c77670f8202c8" dependencies = [ "bytes", - "cfg_aliases 0.2.1", + "cfg_aliases", "pin-project-lite", "quinn-proto", "quinn-udp", @@ -4899,7 +3793,7 @@ dependencies = [ "thiserror 2.0.12", "tokio", "tracing", - "web-time 1.1.0", + "web-time", ] [[package]] @@ -4920,7 +3814,7 @@ dependencies = [ "thiserror 2.0.12", "tinyvec", "tracing", - "web-time 1.1.0", + "web-time", ] [[package]] @@ -4929,7 +3823,7 @@ version = "0.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fcebb1209ee276352ef14ff8732e24cc2b02bbac986cd74a4c81bcb2f9881970" dependencies = [ - "cfg_aliases 0.2.1", + "cfg_aliases", "libc", "once_cell", "socket2", @@ -4952,20 +3846,6 @@ version = "5.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" -[[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" @@ -4987,16 +3867,6 @@ dependencies = [ "rand_core 0.9.3", ] -[[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" @@ -5017,15 +3887,6 @@ dependencies = [ "rand_core 0.9.3", ] -[[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" @@ -5044,24 +3905,6 @@ dependencies = [ "getrandom 0.3.3", ] -[[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 = "range-alloc" version = "0.1.4" @@ -5172,9 +4015,9 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.3.5" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" +checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" dependencies = [ "bitflags 1.3.2", ] @@ -5188,37 +4031,6 @@ dependencies = [ "bitflags 2.9.1", ] -[[package]] -name = "redox_users" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd6f9d3d47bdd2ad6945c5015a226ec6155d0bcdfd8f7cd29f86b71f8de99d2b" -dependencies = [ - "getrandom 0.2.16", - "libredox", - "thiserror 2.0.12", -] - -[[package]] -name = "ref-cast" -version = "1.0.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a0ae411dbe946a674d89546582cea4ba2bb8defac896622d6496f14c23ba5cf" -dependencies = [ - "ref-cast-impl", -] - -[[package]] -name = "ref-cast-impl" -version = "1.0.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1165225c21bff1f3bbce98f5a1f889949bc902d3575308cc7b0de30b4f6d27c7" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.104", -] - [[package]] name = "regex" version = "1.11.1" @@ -5227,8 +4039,17 @@ checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" dependencies = [ "aho-corasick", "memchr", - "regex-automata", - "regex-syntax", + "regex-automata 0.4.9", + "regex-syntax 0.8.5", +] + +[[package]] +name = "regex-automata" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" +dependencies = [ + "regex-syntax 0.6.29", ] [[package]] @@ -5239,9 +4060,15 @@ checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" dependencies = [ "aho-corasick", "memchr", - "regex-syntax", + "regex-syntax 0.8.5", ] +[[package]] +name = "regex-syntax" +version = "0.6.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" + [[package]] name = "regex-syntax" version = "0.8.5" @@ -5262,8 +4089,6 @@ checksum = "cbc931937e6ca3a06e3b6c0aa7841849b160a90351d6ab467a8b9b9959767531" dependencies = [ "base64 0.22.1", "bytes", - "cookie", - "cookie_store", "encoding_rs", "futures-channel", "futures-core", @@ -5292,16 +4117,14 @@ dependencies = [ "tokio", "tokio-native-tls", "tokio-rustls", - "tokio-util", "tower", "tower-http", "tower-service", "url", "wasm-bindgen", "wasm-bindgen-futures", - "wasm-streams", "web-sys", - "webpki-roots", + "webpki-roots 1.0.1", ] [[package]] @@ -5323,9 +4146,9 @@ dependencies = [ [[package]] name = "rgb" -version = "0.8.50" +version = "0.8.51" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57397d16646700483b67d2dd6511d79318f9d057fdbd21a4066aeac8b41d310a" +checksum = "a457e416a0f90d246a4c3288bd7a25b2304ca727f253f95be383dd17af56be8f" dependencies = [ "bytemuck", ] @@ -5380,15 +4203,6 @@ version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" -[[package]] -name = "rustc_version" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" -dependencies = [ - "semver", -] - [[package]] name = "rustix" version = "0.38.44" @@ -5417,10 +4231,11 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.28" +version = "0.23.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7160e3e10bf4535308537f3c4e1641468cd0e485175d6163087c0393c7d46643" +checksum = "2491382039b29b9b11ff08b76ff6c97cf287671dbb74f0be44bda389fffe9bd1" dependencies = [ + "log", "once_cell", "ring", "rustls-pki-types", @@ -5429,21 +4244,30 @@ dependencies = [ "zeroize", ] +[[package]] +name = "rustls-pemfile" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" +dependencies = [ + "rustls-pki-types", +] + [[package]] name = "rustls-pki-types" version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "229a4a4c221013e7e1f1a043678c5cc39fe5171437c88fb47151a21e6f5b5c79" dependencies = [ - "web-time 1.1.0", + "web-time", "zeroize", ] [[package]] name = "rustls-webpki" -version = "0.103.3" +version = "0.103.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4a72fe2bcf7a6ac6fd7d0b9e5cb68aeb7d4c0a0271730218b3e92d43b4eb435" +checksum = "0a17884ae0c1b773f1ccd2bd4a8c72f16da897310a98b0e84bf349ad5ead92fc" dependencies = [ "ring", "rustls-pki-types", @@ -5498,57 +4322,6 @@ dependencies = [ "windows-sys 0.59.0", ] -[[package]] -name = "schemars" -version = "0.8.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fbf2ae1b8bc8e02df939598064d22402220cd5bbcca1c76f7d6a310974d5615" -dependencies = [ - "dyn-clone", - "indexmap 1.9.3", - "schemars_derive", - "serde", - "serde_json", - "url", - "uuid", -] - -[[package]] -name = "schemars" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cd191f9397d57d581cddd31014772520aa448f65ef991055d7f61582c65165f" -dependencies = [ - "dyn-clone", - "ref-cast", - "serde", - "serde_json", -] - -[[package]] -name = "schemars" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1375ba8ef45a6f15d83fa8748f1079428295d403d6ea991d09ab100155fbc06d" -dependencies = [ - "dyn-clone", - "ref-cast", - "serde", - "serde_json", -] - -[[package]] -name = "schemars_derive" -version = "0.8.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32e265784ad618884abaea0600a9adf15393368d840e0222d101a072f3f7534d" -dependencies = [ - "proc-macro2", - "quote", - "serde_derive_internals", - "syn 2.0.104", -] - [[package]] name = "scoped-tls" version = "1.0.1" @@ -5563,9 +4336,9 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "sctk-adwaita" -version = "0.8.3" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70b31447ca297092c5a9916fc3b955203157b37c19ca8edde4f52e9843e602c7" +checksum = "b6277f0217056f77f1d8f49f2950ac6c278c0d607c45f5ee99328d792ede24ec" dependencies = [ "ab_glyph", "log", @@ -5581,7 +4354,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ "bitflags 2.9.1", - "core-foundation 0.9.4", + "core-foundation", "core-foundation-sys", "libc", "security-framework-sys", @@ -5597,32 +4370,11 @@ dependencies = [ "libc", ] -[[package]] -name = "selectors" -version = "0.24.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c37578180969d00692904465fb7f6b3d50b9a2b952b87c23d0e2e5cb5013416" -dependencies = [ - "bitflags 1.3.2", - "cssparser", - "derive_more", - "fxhash", - "log", - "phf 0.8.0", - "phf_codegen 0.8.0", - "precomputed-hash", - "servo_arc", - "smallvec", -] - [[package]] name = "semver" version = "1.0.26" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0" -dependencies = [ - "serde", -] [[package]] name = "serde" @@ -5633,17 +4385,6 @@ dependencies = [ "serde_derive", ] -[[package]] -name = "serde-untagged" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "299d9c19d7d466db4ab10addd5703e4c615dec2a5a16dbbafe191045e87ee66e" -dependencies = [ - "erased-serde", - "serde", - "typeid", -] - [[package]] name = "serde-wasm-bindgen" version = "0.6.5" @@ -5666,17 +4407,6 @@ dependencies = [ "syn 2.0.104", ] -[[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.104", -] - [[package]] name = "serde_json" version = "1.0.140" @@ -5689,27 +4419,6 @@ dependencies = [ "serde", ] -[[package]] -name = "serde_path_to_error" -version = "0.1.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59fab13f937fa393d08645bf3a84bdfe86e296747b506ada67bb15f10f218b2a" -dependencies = [ - "itoa", - "serde", -] - -[[package]] -name = "serde_repr" -version = "0.1.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.104", -] - [[package]] name = "serde_spanned" version = "0.6.9" @@ -5732,68 +4441,10 @@ dependencies = [ ] [[package]] -name = "serde_with" -version = "3.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2c45cd61fefa9db6f254525d46e392b852e0e61d9a1fd36e5bd183450a556d5" -dependencies = [ - "base64 0.22.1", - "chrono", - "hex", - "indexmap 1.9.3", - "indexmap 2.10.0", - "schemars 0.9.0", - "schemars 1.0.3", - "serde", - "serde_derive", - "serde_json", - "serde_with_macros", - "time", -] - -[[package]] -name = "serde_with_macros" -version = "3.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de90945e6565ce0d9a25098082ed4ee4002e047cb59892c318d66821e14bb30f" -dependencies = [ - "darling", - "proc-macro2", - "quote", - "syn 2.0.104", -] - -[[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.2.0" +name = "sha1_smol" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d52aa42f8fdf0fed91e5ce7f23d8138441002fa31dca008acf47e6fd4721f741" -dependencies = [ - "nodrop", - "stable_deref_trait", -] +checksum = "bbfa15b3dddfee50a0fff136974b3e1bde555604ba463834a7eb7deb6417705d" [[package]] name = "sha2" @@ -5807,14 +4458,12 @@ dependencies = [ ] [[package]] -name = "shared_child" -version = "1.1.0" +name = "sharded-slab" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2778001df1384cf20b6dc5a5a90f48da35539885edaaefd887f8d744e939c0b" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" dependencies = [ - "libc", - "sigchld", - "windows-sys 0.60.2", + "lazy_static", ] [[package]] @@ -5823,36 +4472,6 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" -[[package]] -name = "sigchld" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1219ef50fc0fdb04fcc243e6aa27f855553434ffafe4fa26554efb78b5b4bf89" -dependencies = [ - "libc", - "os_pipe", - "signal-hook", -] - -[[package]] -name = "signal-hook" -version = "0.3.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d881a16cf4426aa584979d30bd82cb33429027e42122b169753d6ef1085ed6e2" -dependencies = [ - "libc", - "signal-hook-registry", -] - -[[package]] -name = "signal-hook-registry" -version = "1.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9203b8055f63a2a00e2f593bb0510367fe707d7ff1e5c872de2f537b339e5410" -dependencies = [ - "libc", -] - [[package]] name = "simd-adler32" version = "0.3.7" @@ -5877,12 +4496,6 @@ dependencies = [ "log", ] -[[package]] -name = "siphasher" -version = "0.3.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" - [[package]] name = "siphasher" version = "1.0.1" @@ -5935,9 +4548,9 @@ dependencies = [ [[package]] name = "smithay-client-toolkit" -version = "0.18.1" +version = "0.19.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "922fd3eeab3bd820d76537ce8f582b1cf951eceb5475c28500c7457d9d17f53a" +checksum = "3457dea1f0eb631b4034d61d4d8c32074caa6cd1ab2d59f2327bd8461e2c0016" dependencies = [ "bitflags 2.9.1", "calloop", @@ -5978,51 +4591,14 @@ dependencies = [ ] [[package]] -name = "softbuffer" -version = "0.4.6" +name = "socks" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18051cdd562e792cad055119e0cdb2cfc137e44e3987532e0f9659a77931bb08" +checksum = "f0c3dbbd9ae980613c6dd8e28a9407b50509d3803b57624d5dfe8315218cd58b" dependencies = [ - "bytemuck", - "cfg_aliases 0.2.1", - "core-graphics 0.24.0", - "foreign-types 0.5.0", - "js-sys", - "log", - "objc2 0.5.2", - "objc2-foundation 0.2.2", - "objc2-quartz-core 0.2.2", - "raw-window-handle", - "redox_syscall 0.5.13", - "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", + "byteorder", "libc", - "system-deps", + "winapi", ] [[package]] @@ -6087,31 +4663,6 @@ dependencies = [ "float-cmp", ] -[[package]] -name = "string_cache" -version = "0.8.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf776ba3fa74f83bf4b63c3dcbbf82173db2632ed8452cb2d891d33f459de70f" -dependencies = [ - "new_debug_unreachable", - "parking_lot", - "phf_shared 0.11.3", - "precomputed-hash", - "serde", -] - -[[package]] -name = "string_cache_codegen" -version = "0.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c711928715f1fe0fe509c53b43e993a9a557babc2d0a3567d0a3006f1ac931a0" -dependencies = [ - "phf_generator 0.11.3", - "phf_shared 0.11.3", - "proc-macro2", - "quote", -] - [[package]] name = "strsim" version = "0.11.1" @@ -6133,7 +4684,7 @@ version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" dependencies = [ - "heck 0.5.0", + "heck", "proc-macro2", "quote", "rustversion", @@ -6165,7 +4716,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68c7541fff44b35860c1a7a47a7cadf3e4a304c457b58f9870d9706ece028afc" dependencies = [ "kurbo", - "siphasher 1.0.1", + "siphasher", ] [[package]] @@ -6179,17 +4730,6 @@ dependencies = [ "zeno", ] -[[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" @@ -6239,7 +4779,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" dependencies = [ "bitflags 2.9.1", - "core-foundation 0.9.4", + "core-foundation", "system-configuration-sys", ] @@ -6260,60 +4800,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a3e535eb8dded36d55ec13eddacd30dec501792ff23a0b1682c38601b8cf2349" dependencies = [ "cfg-expr", - "heck 0.5.0", + "heck", "pkg-config", "toml", "version-compare", ] [[package]] -name = "tao" -version = "0.34.0" +name = "tar" +version = "0.4.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49c380ca75a231b87b6c9dd86948f035012e7171d1a7c40a9c2890489a7ffd8a" +checksum = "1d863878d212c87a19c1a610eb53bb01fe12951c0501cf5a0d65f724914a667a" dependencies = [ - "bitflags 2.9.1", - "core-foundation 0.10.1", - "core-graphics 0.24.0", - "crossbeam-channel", - "dispatch", - "dlopen2", - "dpi", - "gdkwayland-sys", - "gdkx11-sys", - "gtk", - "jni", - "lazy_static", + "filetime", "libc", - "log", - "ndk 0.9.0", - "ndk-context", - "ndk-sys 0.6.0+11769913", - "objc2 0.6.1", - "objc2-app-kit", - "objc2-foundation 0.3.1", - "once_cell", - "parking_lot", - "raw-window-handle", - "scopeguard", - "tao-macros", - "unicode-segmentation", - "url", - "windows 0.61.3", - "windows-core 0.61.2", - "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.104", + "xattr", ] [[package]] @@ -6322,301 +4823,6 @@ version = "0.12.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" -[[package]] -name = "tauri" -version = "2.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "124e129c9c0faa6bec792c5948c89e86c90094133b0b9044df0ce5f0a8efaa0d" -dependencies = [ - "anyhow", - "bytes", - "dirs", - "dunce", - "embed_plist", - "getrandom 0.3.3", - "glob", - "gtk", - "heck 0.5.0", - "http", - "jni", - "libc", - "log", - "mime", - "muda", - "objc2 0.6.1", - "objc2-app-kit", - "objc2-foundation 0.3.1", - "objc2-ui-kit", - "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.12", - "tokio", - "tray-icon", - "url", - "urlpattern", - "webkit2gtk", - "webview2-com", - "window-vibrancy", - "windows 0.61.3", -] - -[[package]] -name = "tauri-build" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12f025c389d3adb83114bec704da973142e82fc6ec799c7c750c5e21cefaec83" -dependencies = [ - "anyhow", - "cargo_toml", - "dirs", - "glob", - "heck 0.5.0", - "json-patch", - "schemars 0.8.22", - "semver", - "serde", - "serde_json", - "tauri-utils", - "tauri-winres", - "toml", - "walkdir", -] - -[[package]] -name = "tauri-codegen" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5df493a1075a241065bc865ed5ef8d0fbc1e76c7afdc0bf0eccfaa7d4f0e406" -dependencies = [ - "base64 0.22.1", - "brotli", - "ico", - "json-patch", - "plist", - "png", - "proc-macro2", - "quote", - "semver", - "serde", - "serde_json", - "sha2", - "syn 2.0.104", - "tauri-utils", - "thiserror 2.0.12", - "time", - "url", - "uuid", - "walkdir", -] - -[[package]] -name = "tauri-macros" -version = "2.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f237fbea5866fa5f2a60a21bea807a2d6e0379db070d89c3a10ac0f2d4649bbc" -dependencies = [ - "heck 0.5.0", - "proc-macro2", - "quote", - "syn 2.0.104", - "tauri-codegen", - "tauri-utils", -] - -[[package]] -name = "tauri-plugin" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d9a0bd00bf1930ad1a604d08b0eb6b2a9c1822686d65d7f4731a7723b8901d3" -dependencies = [ - "anyhow", - "glob", - "plist", - "schemars 0.8.22", - "serde", - "serde_json", - "tauri-utils", - "toml", - "walkdir", -] - -[[package]] -name = "tauri-plugin-fs" -version = "2.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c341290d31991dbca38b31d412c73dfbdb070bb11536784f19dd2211d13b778f" -dependencies = [ - "anyhow", - "dunce", - "glob", - "percent-encoding", - "schemars 0.8.22", - "serde", - "serde_json", - "serde_repr", - "tauri", - "tauri-plugin", - "tauri-utils", - "thiserror 2.0.12", - "toml", - "url", -] - -[[package]] -name = "tauri-plugin-http" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0c1a38da944b357ffa23bafd563b1579f18e6fbd118fcd84769406d35dcc5c7" -dependencies = [ - "bytes", - "cookie_store", - "data-url", - "http", - "regex", - "reqwest", - "schemars 0.8.22", - "serde", - "serde_json", - "tauri", - "tauri-plugin", - "tauri-plugin-fs", - "thiserror 2.0.12", - "tokio", - "url", - "urlpattern", -] - -[[package]] -name = "tauri-plugin-shell" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b9ffadec5c3523f11e8273465cacb3d86ea7652a28e6e2a2e9b5c182f791d25" -dependencies = [ - "encoding_rs", - "log", - "open", - "os_pipe", - "regex", - "schemars 0.8.22", - "serde", - "serde_json", - "shared_child", - "tauri", - "tauri-plugin", - "thiserror 2.0.12", - "tokio", -] - -[[package]] -name = "tauri-runtime" -version = "2.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e7bb73d1bceac06c20b3f755b2c8a2cb13b20b50083084a8cf3700daf397ba4" -dependencies = [ - "cookie", - "dpi", - "gtk", - "http", - "jni", - "objc2 0.6.1", - "objc2-ui-kit", - "raw-window-handle", - "serde", - "serde_json", - "tauri-utils", - "thiserror 2.0.12", - "url", - "windows 0.61.3", -] - -[[package]] -name = "tauri-runtime-wry" -version = "2.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "902b5aa9035e16f342eb64f8bf06ccdc2808e411a2525ed1d07672fa4e780bad" -dependencies = [ - "gtk", - "http", - "jni", - "log", - "objc2 0.6.1", - "objc2-app-kit", - "objc2-foundation 0.3.1", - "once_cell", - "percent-encoding", - "raw-window-handle", - "softbuffer", - "tao", - "tauri-runtime", - "tauri-utils", - "url", - "webkit2gtk", - "webview2-com", - "windows 0.61.3", - "wry", -] - -[[package]] -name = "tauri-utils" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41743bbbeb96c3a100d234e5a0b60a46d5aa068f266160862c7afdbf828ca02e" -dependencies = [ - "anyhow", - "brotli", - "cargo_metadata", - "ctor", - "dunce", - "glob", - "html5ever", - "http", - "infer", - "json-patch", - "kuchikiki", - "log", - "memchr", - "phf 0.11.3", - "proc-macro2", - "quote", - "regex", - "schemars 0.8.22", - "semver", - "serde", - "serde-untagged", - "serde_json", - "serde_with", - "swift-rs", - "thiserror 2.0.12", - "toml", - "url", - "urlpattern", - "uuid", - "walkdir", -] - -[[package]] -name = "tauri-winres" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8d321dbc6f998d825ab3f0d62673e810c861aac2d0de2cc2c395328f1d113b4" -dependencies = [ - "embed-resource", - "indexmap 2.10.0", - "toml", -] - [[package]] name = "tempfile" version = "3.20.0" @@ -6630,17 +4836,6 @@ dependencies = [ "windows-sys 0.59.0", ] -[[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 = "termcolor" version = "1.4.1" @@ -6690,6 +4885,15 @@ dependencies = [ "syn 2.0.104", ] +[[package]] +name = "thread_local" +version = "1.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" +dependencies = [ + "cfg-if", +] + [[package]] name = "tiff" version = "0.9.1" @@ -6804,15 +5008,17 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.45.1" +version = "1.46.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75ef51a33ef1da925cea3e4eb122833cb377c61439ca401b770f54902b806779" +checksum = "0cc3a2344dafbe23a245241fe8b09735b521110d30fcefbbd5feb1797ca35d17" dependencies = [ "backtrace", "bytes", + "io-uring", "libc", "mio", "pin-project-lite", + "slab", "socket2", "tokio-macros", "windows-sys 0.52.0", @@ -6871,7 +5077,7 @@ dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit 0.22.27", + "toml_edit", ] [[package]] @@ -6883,48 +5089,19 @@ 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.10.0", - "toml_datetime", - "winnow 0.5.40", -] - -[[package]] -name = "toml_edit" -version = "0.20.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70f427fce4d84c72b5b732388bf4a9f4531b53f74e2887e3ecb2481f68f66d81" -dependencies = [ - "indexmap 2.10.0", - "toml_datetime", - "winnow 0.5.40", -] - [[package]] name = "toml_edit" version = "0.22.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" dependencies = [ - "indexmap 2.10.0", + "indexmap", "serde", "serde_spanned", "toml_datetime", - "toml_write", - "winnow 0.7.11", + "winnow", ] -[[package]] -name = "toml_write" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" - [[package]] name = "tower" version = "0.5.2" @@ -6938,7 +5115,6 @@ dependencies = [ "tokio", "tower-layer", "tower-service", - "tracing", ] [[package]] @@ -6977,11 +5153,22 @@ version = "0.1.41" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" dependencies = [ - "log", "pin-project-lite", + "tracing-attributes", "tracing-core", ] +[[package]] +name = "tracing-attributes" +version = "0.1.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + [[package]] name = "tracing-core" version = "0.1.34" @@ -6989,28 +5176,36 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" dependencies = [ "once_cell", + "valuable", ] [[package]] -name = "tray-icon" -version = "0.21.0" +name = "tracing-log" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2da75ec677957aa21f6e0b361df0daab972f13a5bee3606de0638fd4ee1c666a" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" dependencies = [ - "crossbeam-channel", - "dirs", - "libappindicator", - "muda", - "objc2 0.6.1", - "objc2-app-kit", - "objc2-core-foundation", - "objc2-core-graphics", - "objc2-foundation 0.3.1", + "log", "once_cell", - "png", - "serde", - "thiserror 2.0.12", - "windows-sys 0.59.0", + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008" +dependencies = [ + "matchers", + "nu-ansi-term", + "once_cell", + "regex", + "sharded-slab", + "smallvec", + "thread_local", + "tracing", + "tracing-core", + "tracing-log", ] [[package]] @@ -7034,12 +5229,6 @@ version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d2df906b07856748fa3f6e0ad0cbaa047052d4a7dd609e231c4f72cee8c36f31" -[[package]] -name = "typeid" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c" - [[package]] name = "typenum" version = "1.18.0" @@ -7052,47 +5241,6 @@ version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" -[[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-bidi" version = "0.3.18" @@ -7147,6 +5295,18 @@ version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" +[[package]] +name = "unicode-width" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a1a07cc7db3810833284e8d372ccdc6da29741639ecc70c9ec107df0fa6154c" + +[[package]] +name = "unit-prefix" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "323402cff2dd658f39ca17c789b502021b3f18707c91cdf22e3838e1b4023817" + [[package]] name = "untrusted" version = "0.9.0" @@ -7154,27 +5314,48 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] -name = "url" -version = "2.5.4" +name = "ureq" +version = "3.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" +checksum = "9f0fde9bc91026e381155f8c67cb354bcd35260b2f4a29bcc84639f762760c39" dependencies = [ - "form_urlencoded", - "idna", + "base64 0.22.1", + "cookie_store", + "flate2", + "log", "percent-encoding", + "rustls", + "rustls-pemfile", + "rustls-pki-types", "serde", + "serde_json", + "socks", + "ureq-proto", + "utf-8", + "webpki-roots 0.26.11", ] [[package]] -name = "urlpattern" -version = "0.3.0" +name = "ureq-proto" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70acd30e3aa1450bc2eece896ce2ad0d178e9c079493819301573dae3c37ba6d" +checksum = "59db78ad1923f2b1be62b6da81fe80b173605ca0d57f85da2e005382adf693f7" dependencies = [ - "regex", - "serde", - "unic-ucd-ident", - "url", + "base64 0.22.1", + "http", + "httparse", + "log", +] + +[[package]] +name = "url" +version = "2.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", ] [[package]] @@ -7194,7 +5375,7 @@ dependencies = [ "roxmltree", "rustybuzz", "simplecss", - "siphasher 1.0.1", + "siphasher", "strict-num", "svgtypes", "tiny-skia-path", @@ -7222,18 +5403,6 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" -[[package]] -name = "uuid" -version = "1.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3cf4199d1e5d15ddd86a694e4d0dffa9c323ce759fea589f00fef9d81cc1931d" -dependencies = [ - "getrandom 0.3.3", - "js-sys", - "serde", - "wasm-bindgen", -] - [[package]] name = "v_frame" version = "0.3.9" @@ -7245,6 +5414,12 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "valuable" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" + [[package]] name = "vcpkg" version = "0.2.15" @@ -7305,26 +5480,6 @@ 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.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb067e4cbd1ff067d1df46c9194b5de0e98efd2810bbc95c5d5e5f25a3231150" -dependencies = [ - "cc", - "libc", -] - [[package]] name = "walkdir" version = "2.5.0" @@ -7344,12 +5499,6 @@ 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.1+wasi-snapshot-preview1" @@ -7436,19 +5585,6 @@ dependencies = [ "unicode-ident", ] -[[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 = "wayland-backend" version = "0.3.10" @@ -7499,9 +5635,9 @@ dependencies = [ [[package]] name = "wayland-protocols" -version = "0.31.2" +version = "0.32.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f81f365b8b4a97f422ac0e8737c438024b5951734506b0e1d775c73030561f4" +checksum = "779075454e1e9a521794fed15886323ea0feda3f8b0fc1390f5398141310422a" dependencies = [ "bitflags 2.9.1", "wayland-backend", @@ -7511,9 +5647,9 @@ dependencies = [ [[package]] name = "wayland-protocols-plasma" -version = "0.2.0" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23803551115ff9ea9bce586860c5c5a971e360825a0309264102a9495a5ff479" +checksum = "4fd38cdad69b56ace413c6bcc1fbf5acc5e2ef4af9d5f8f1f9570c0c83eae175" dependencies = [ "bitflags 2.9.1", "wayland-backend", @@ -7524,9 +5660,9 @@ dependencies = [ [[package]] name = "wayland-protocols-wlr" -version = "0.2.0" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad1f61b76b6c2d8742e10f9ba5c3737f6530b4c243132c2a2ccc8aa96fe25cd6" +checksum = "1cb6cdc73399c0e06504c437fe3cf886f25568dd5454473d565085b36d6a8bbf" dependencies = [ "bitflags 2.9.1", "wayland-backend", @@ -7568,16 +5704,6 @@ dependencies = [ "wasm-bindgen", ] -[[package]] -name = "web-time" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa30049b1c872b72c89866d458eae9f20380ab280ffd1b1e18df2d3e2d98cfe0" -dependencies = [ - "js-sys", - "wasm-bindgen", -] - [[package]] name = "web-time" version = "1.1.0" @@ -7589,47 +5715,12 @@ dependencies = [ ] [[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" +name = "webpki-roots" +version = "0.26.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62daa38afc514d1f8f12b8693d30d5993ff77ced33ce30cd04deebc267a6d57c" +checksum = "521bc38abb08001b01866da9f51eb7c5d647a19260e00054a8c7fd5f9e57f7a9" 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", + "webpki-roots 1.0.1", ] [[package]] @@ -7641,42 +5732,6 @@ dependencies = [ "rustls-pki-types", ] -[[package]] -name = "webview2-com" -version = "0.38.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4ba622a989277ef3886dd5afb3e280e3dd6d974b766118950a08f8f678ad6a4" -dependencies = [ - "webview2-com-macros", - "webview2-com-sys", - "windows 0.61.3", - "windows-core 0.61.2", - "windows-implement 0.60.0", - "windows-interface 0.59.1", -] - -[[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.104", -] - -[[package]] -name = "webview2-com-sys" -version = "0.38.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36695906a1b53a3bf5c4289621efedac12b73eeb0b89e7e1a89b517302d5d75c" -dependencies = [ - "thiserror 2.0.12", - "windows 0.61.3", - "windows-core 0.61.2", -] - [[package]] name = "weezl" version = "0.1.10" @@ -7691,9 +5746,9 @@ checksum = "ec8fb398f119472be4d80bc3647339f56eb63b2a331f6a3d16e25d8144197dd9" dependencies = [ "arrayvec", "bitflags 2.9.1", - "cfg_aliases 0.2.1", + "cfg_aliases", "document-features", - "hashbrown 0.15.4", + "hashbrown", "js-sys", "log", "naga", @@ -7722,10 +5777,10 @@ dependencies = [ "bit-vec", "bitflags 2.9.1", "bytemuck", - "cfg_aliases 0.2.1", + "cfg_aliases", "document-features", - "hashbrown 0.15.4", - "indexmap 2.10.0", + "hashbrown", + "indexmap", "log", "naga", "once_cell", @@ -7802,18 +5857,18 @@ dependencies = [ "block", "bytemuck", "cfg-if", - "cfg_aliases 0.2.1", - "core-graphics-types 0.1.3", + "cfg_aliases", + "core-graphics-types", "glow", "glutin_wgl_sys", "gpu-alloc", "gpu-allocator", "gpu-descriptor", - "hashbrown 0.15.4", + "hashbrown", "js-sys", "khronos-egl", "libc", - "libloading 0.8.8", + "libloading", "log", "metal", "naga", @@ -7831,7 +5886,7 @@ dependencies = [ "wasm-bindgen", "web-sys", "wgpu-types", - "windows 0.58.0", + "windows", "windows-core 0.58.0", ] @@ -7880,21 +5935,6 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" -[[package]] -name = "window-vibrancy" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9bec5a31f3f9362f2258fd0e9c9dd61a9ca432e7306cc78c444258f0dce9a9c" -dependencies = [ - "objc2 0.6.1", - "objc2-app-kit", - "objc2-core-foundation", - "objc2-foundation 0.3.1", - "raw-window-handle", - "windows-sys 0.59.0", - "windows-version", -] - [[package]] name = "windows" version = "0.58.0" @@ -7905,28 +5945,6 @@ dependencies = [ "windows-targets 0.52.6", ] -[[package]] -name = "windows" -version = "0.61.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893" -dependencies = [ - "windows-collections", - "windows-core 0.61.2", - "windows-future", - "windows-link", - "windows-numerics", -] - -[[package]] -name = "windows-collections" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8" -dependencies = [ - "windows-core 0.61.2", -] - [[package]] name = "windows-core" version = "0.58.0" @@ -7953,17 +5971,6 @@ dependencies = [ "windows-strings 0.4.2", ] -[[package]] -name = "windows-future" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e" -dependencies = [ - "windows-core 0.61.2", - "windows-link", - "windows-threading", -] - [[package]] name = "windows-implement" version = "0.58.0" @@ -8014,16 +6021,6 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" -[[package]] -name = "windows-numerics" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1" -dependencies = [ - "windows-core 0.61.2", - "windows-link", -] - [[package]] name = "windows-registry" version = "0.5.3" @@ -8081,15 +6078,6 @@ 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" @@ -8179,24 +6167,6 @@ dependencies = [ "windows_x86_64_msvc 0.53.0", ] -[[package]] -name = "windows-threading" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6" -dependencies = [ - "windows-link", -] - -[[package]] -name = "windows-version" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e04a5c6627e310a23ad2358483286c7df260c964eb2d003d8efd6d0f4e79265c" -dependencies = [ - "windows-link", -] - [[package]] name = "windows_aarch64_gnullvm" version = "0.42.2" @@ -8379,37 +6349,42 @@ checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" [[package]] name = "winit" -version = "0.29.15" +version = "0.30.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d59ad965a635657faf09c8f062badd885748428933dad8e8bdd64064d92e5ca" +checksum = "a4409c10174df8779dc29a4788cac85ed84024ccbc1743b776b21a520ee1aaf4" dependencies = [ "ahash", "android-activity", "atomic-waker", "bitflags 2.9.1", + "block2", "bytemuck", "calloop", - "cfg_aliases 0.1.1", - "core-foundation 0.9.4", - "core-graphics 0.23.2", + "cfg_aliases", + "concurrent-queue", + "core-foundation", + "core-graphics", "cursor-icon", - "icrate", + "dpi", "js-sys", "libc", - "log", "memmap2", - "ndk 0.8.0", - "ndk-sys 0.5.0+25.2.9519653", - "objc2 0.4.1", - "once_cell", + "ndk", + "objc2 0.5.2", + "objc2-app-kit", + "objc2-foundation 0.2.2", + "objc2-ui-kit", "orbclient", "percent-encoding", + "pin-project", "raw-window-handle", - "redox_syscall 0.3.5", + "redox_syscall 0.4.1", "rustix 0.38.44", "sctk-adwaita", + "serde", "smithay-client-toolkit", "smol_str", + "tracing", "unicode-segmentation", "wasm-bindgen", "wasm-bindgen-futures", @@ -8418,8 +6393,8 @@ dependencies = [ "wayland-protocols", "wayland-protocols-plasma", "web-sys", - "web-time 0.2.4", - "windows-sys 0.48.0", + "web-time", + "windows-sys 0.52.0", "x11-dl", "x11rb", "xkbcommon-dl", @@ -8427,32 +6402,13 @@ dependencies = [ [[package]] name = "winnow" -version = "0.5.40" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" -dependencies = [ - "memchr", -] - -[[package]] -name = "winnow" -version = "0.7.11" +version = "0.7.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74c7b26e3480b707944fc872477815d29a8e429d2f93a1ce000f5fa84a15cbcd" +checksum = "f3edebf492c8125044983378ecb5766203ad3b4c2f7a922bd7dd207f6d443e95" dependencies = [ "memchr", ] -[[package]] -name = "winreg" -version = "0.55.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb5a765337c50e9ec252c2069be9bf91c7df47afb103b642ba3a53bf8101be97" -dependencies = [ - "cfg-if", - "windows-sys 0.59.0", -] - [[package]] name = "wit-bindgen-rt" version = "0.39.0" @@ -8474,60 +6430,6 @@ version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" -[[package]] -name = "wry" -version = "0.52.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12a714d9ba7075aae04a6e50229d6109e3d584774b99a6a8c60de1698ca111b9" -dependencies = [ - "base64 0.22.1", - "block2 0.6.1", - "cookie", - "crossbeam-channel", - "dpi", - "dunce", - "gdkx11", - "gtk", - "html5ever", - "http", - "javascriptcore-rs", - "jni", - "kuchikiki", - "libc", - "ndk 0.9.0", - "objc2 0.6.1", - "objc2-app-kit", - "objc2-core-foundation", - "objc2-foundation 0.3.1", - "objc2-ui-kit", - "objc2-web-kit", - "once_cell", - "percent-encoding", - "raw-window-handle", - "sha2", - "soup3", - "tao-macros", - "thiserror 2.0.12", - "url", - "webkit2gtk", - "webkit2gtk-sys", - "webview2-com", - "windows 0.61.3", - "windows-core 0.61.2", - "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" @@ -8548,7 +6450,7 @@ dependencies = [ "as-raw-xcb-connection", "gethostname", "libc", - "libloading 0.8.8", + "libloading", "once_cell", "rustix 0.38.44", "x11rb-protocol", @@ -8560,6 +6462,16 @@ version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec107c4503ea0b4a98ef47356329af139c0a4f7750e621cf2973cd3385ebcb3d" +[[package]] +name = "xattr" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af3a19837351dc82ba89f8a125e22a3c475f05aba604acc023d62b2739ae2909" +dependencies = [ + "libc", + "rustix 1.0.7", +] + [[package]] name = "xcursor" version = "0.3.10" @@ -8587,9 +6499,9 @@ checksum = "b9cc00251562a284751c9973bace760d86c0276c471b4be569fe6b068ee97a56" [[package]] name = "xml-rs" -version = "0.8.26" +version = "0.8.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a62ce76d9b56901b19a74f19431b0d8b3bc7ca4ad685a746dfd78ca8f4fc6bda" +checksum = "6fd8403733700263c6eb89f192880191f1b83e332f7a20371ddcf421c4a337c7" [[package]] name = "xmlwriter" @@ -8736,9 +6648,9 @@ dependencies = [ [[package]] name = "zune-jpeg" -version = "0.4.18" +version = "0.4.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7384255a918371b5af158218d131530f694de9ad3815ebdd0453a940485cb0fa" +checksum = "2c9e525af0a6a658e031e95f14b7f889976b74a11ba0eca5a5fc9ac8a1c43a6a" dependencies = [ "zune-core", ] diff --git a/Cargo.toml b/Cargo.toml index 526fcc9330..cf2a1ec0f6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,7 @@ [workspace] members = [ "editor", + "desktop", "proc-macros", "frontend/wasm", "node-graph/gapplication-io", @@ -110,7 +111,7 @@ web-sys = { version = "=0.3.77", features = [ "HtmlImageElement", "ImageBitmapRenderingContext", ] } -winit = "0.29" +winit = { version = "0.30", features = ["wayland", "rwh_06"] } url = "2.5" tokio = { version = "1.29", features = ["fs", "macros", "io-std", "rt"] } vello = { git = "https://github.com/linebender/vello.git" } # TODO switch back to stable when a release is made diff --git a/desktop/.gitignore b/desktop/.gitignore new file mode 100644 index 0000000000..aba21e242c --- /dev/null +++ b/desktop/.gitignore @@ -0,0 +1,3 @@ +# Generated by Cargo +# will have compiled files and executables +/target/ diff --git a/desktop/Cargo.toml b/desktop/Cargo.toml new file mode 100644 index 0000000000..80a1479452 --- /dev/null +++ b/desktop/Cargo.toml @@ -0,0 +1,32 @@ +[package] +name = "graphite-desktop" +version = "0.1.0" +description = "Graphite Desktop" +authors = ["Graphite Authors "] +license = "Apache-2.0" +repository = "" +edition = "2021" +rust-version = "1.79" + +[features] +default = ["gpu"] +gpu = ["graphite-editor/gpu"] + +[dependencies] +# Local dependencies +graphite-editor = { path = "../editor", features = [ + "gpu", + "ron", + "vello", + "decouple-execution", +] } +wgpu = { workspace = true } +winit = { workspace = true, features = ["serde"] } +base64.workspace = true +thiserror.workspace = true +pollster = "0.3" +cef = "138.5.0" +tracing-subscriber = { version = "0.3.19", features = ["env-filter"] } +tracing = "0.1.41" +bytemuck = { version = "1.23.1", features = ["derive"] } +include_dir = "0.7.4" diff --git a/desktop/build.rs b/desktop/build.rs new file mode 100644 index 0000000000..2dee070d59 --- /dev/null +++ b/desktop/build.rs @@ -0,0 +1,10 @@ +use std::fs::metadata; + +fn main() { + let frontend_dir = format!("{}/../frontend/dist", env!("CARGO_MANIFEST_DIR")); + metadata(&frontend_dir).expect("Failed to find frontend directory. Please build the frontend first."); + metadata(format!("{}/index.html", &frontend_dir)).expect("Failed to find index.html in frontend directory."); + + println!("cargo:rerun-if-changed=."); + println!("cargo:rerun-if-changed=../frontend"); +} diff --git a/desktop/src/cef/context.rs b/desktop/src/cef/context.rs new file mode 100644 index 0000000000..42c80719c8 --- /dev/null +++ b/desktop/src/cef/context.rs @@ -0,0 +1,127 @@ +use cef::sys::CEF_API_VERSION_LAST; +use cef::{api_hash, args::Args, execute_process, Browser, CefString, Settings}; +use cef::{browser_host_create_browser_sync, initialize, BrowserSettings, DictionaryValue, ImplCommandLine, RequestContext, WindowInfo}; +use thiserror::Error; +use winit::event::WindowEvent; + +use super::input::{handle_window_event, InputState}; +use super::EventHandler; + +use super::internal::{AppImpl, ClientImpl, NonBrowserAppImpl, RenderHandlerImpl}; + +pub(crate) struct Setup {} +pub(crate) struct Initialized {} +pub(crate) trait ContextState {} +impl ContextState for Setup {} +impl ContextState for Initialized {} + +pub(crate) struct Context { + args: Args, + pub(crate) browser: Option, + pub(crate) input_state: InputState, + marker: std::marker::PhantomData, +} + +impl Context { + pub(crate) fn new() -> Result, SetupError> { + #[cfg(target_os = "macos")] + let _loader = { + let loader = library_loader::LibraryLoader::new(&std::env::current_exe().unwrap(), false); + assert!(loader.load()); + loader + }; + let _ = api_hash(CEF_API_VERSION_LAST, 0); + let args = Args::new(); + let cmd = args.as_cmd_line().unwrap(); + let switch = CefString::from("type"); + cmd.append_switch(Some(&CefString::from("disable-gpu"))); + cmd.append_switch(Some(&CefString::from("disable-gpu-compositing"))); + let is_browser_process = cmd.has_switch(Some(&switch)) != 1; + if !is_browser_process { + let process_type = CefString::from(&cmd.switch_value(Some(&switch))); + let mut app = NonBrowserAppImpl::new(); + let ret = execute_process(Some(args.as_main_args()), Some(&mut app), std::ptr::null_mut()); + if ret >= 0 { + return Err(SetupError::SubprocessFailed(process_type.to_string())); + } else { + return Err(SetupError::Subprocess); + } + } + Ok(Context { + args, + browser: None, + input_state: InputState::default(), + marker: std::marker::PhantomData::, + }) + } + + pub(crate) fn init(self, event_handler: impl EventHandler) -> Result, InitError> { + let mut settings = Settings::default(); + settings.windowless_rendering_enabled = 1; + settings.multi_threaded_message_loop = 0; + settings.external_message_pump = 1; + + let mut cef_app = AppImpl::new(event_handler.clone()); + + let res = initialize(Some(self.args.as_main_args()), Some(&settings), Some(&mut cef_app), std::ptr::null_mut()); + if res != 1 { + return Err(InitError::InitializationFailed); + } + + let render_handler = RenderHandlerImpl::new(event_handler.clone()); + let mut client = ClientImpl::new(render_handler); + + let url = CefString::from("graphite://frontend/"); + + let mut window_info = WindowInfo::default(); + window_info.windowless_rendering_enabled = 1; + + let mut settings = BrowserSettings::default(); + settings.windowless_frame_rate = 60; + settings.background_color = 0x0; + + let browser = browser_host_create_browser_sync( + Some(&window_info), + Some(&mut client), + Some(&url), + Some(&settings), + Option::<&mut DictionaryValue>::None, + Option::<&mut RequestContext>::None, + ); + + Ok(Context { + args: self.args, + browser, + input_state: self.input_state, + marker: std::marker::PhantomData::, + }) + } +} + +impl Context { + pub(crate) fn work(&mut self) { + cef::do_message_loop_work(); + } + + pub(crate) fn handle_window_event(&mut self, event: &WindowEvent) { + handle_window_event(self, event); + } + + pub(crate) fn shutdown(self) { + cef::shutdown(); + } +} + +#[derive(Error, Debug)] +pub(crate) enum SetupError { + #[error("this is the sub process should exit immediately")] + Subprocess, + #[error("subprocess returned non zero exit code")] + SubprocessFailed(String), +} + +#[derive(Error, Debug)] +pub(crate) enum InitError { + #[error("initialization failed")] + InitializationFailed, +} diff --git a/desktop/src/cef/input/keymap.rs b/desktop/src/cef/input/keymap.rs new file mode 100644 index 0000000000..34a19b325b --- /dev/null +++ b/desktop/src/cef/input/keymap.rs @@ -0,0 +1,384 @@ +macro_rules! map_enum { + ($target:expr, $enum:ident, $( ($code:expr, $variant:ident), )+ ) => { + match $target { + $( + $enum::$variant => $code, + )+ + _ => 0, + } + }; +} + +macro_rules! map { + ($target:expr, $( ($code:expr, $variant:literal), )+ ) => { + match $target { + $( + $variant => $code, + )+ + _ => 0, + } + }; +} + +pub(crate) trait ToVKBits { + fn to_vk_bits(&self) -> i32; +} + +impl ToVKBits for winit::keyboard::NamedKey { + fn to_vk_bits(&self) -> i32 { + use winit::keyboard::NamedKey; + map_enum!( + self, + NamedKey, + (0x12, Alt), + (0xA5, AltGraph), + (0x14, CapsLock), + (0x11, Control), + (0x90, NumLock), + (0x91, ScrollLock), + (0x10, Shift), + (0x5B, Meta), + (0x5C, Super), + (0x0D, Enter), + (0x09, Tab), + (0x20, Space), + (0x28, ArrowDown), + (0x25, ArrowLeft), + (0x27, ArrowRight), + (0x26, ArrowUp), + (0x23, End), + (0x24, Home), + (0x22, PageDown), + (0x21, PageUp), + (0x08, Backspace), + (0x0C, Clear), + (0xF7, CrSel), + (0x2E, Delete), + (0xF9, EraseEof), + (0xF8, ExSel), + (0x2D, Insert), + (0x1E, Accept), + (0xF6, Attn), + (0x03, Cancel), + (0x5D, ContextMenu), + (0x1B, Escape), + (0x2B, Execute), + (0x2F, Help), + (0x13, Pause), + (0xFA, Play), + (0x5D, Props), + (0x29, Select), + (0xFB, ZoomIn), + (0xFB, ZoomOut), + (0x2C, PrintScreen), + (0x5F, Standby), + (0x1C, Convert), + (0x18, FinalMode), + (0x1F, ModeChange), + (0x1D, NonConvert), + (0xE5, Process), + (0x15, HangulMode), + (0x19, HanjaMode), + (0x17, JunjaMode), + (0x15, KanaMode), + (0x19, KanjiMode), + (0xB0, MediaFastForward), + (0xB3, MediaPause), + (0xB3, MediaPlay), + (0xB3, MediaPlayPause), + (0xB1, MediaRewind), + (0xB2, MediaStop), + (0xB0, MediaTrackNext), + (0xB1, MediaTrackPrevious), + (0x2A, Print), + (0xAE, AudioVolumeDown), + (0xAF, AudioVolumeUp), + (0xAD, AudioVolumeMute), + (0xB6, LaunchApplication1), + (0xB7, LaunchApplication2), + (0xB4, LaunchMail), + (0xB5, LaunchMediaPlayer), + (0xB5, LaunchMusicPlayer), + (0xA6, BrowserBack), + (0xAB, BrowserFavorites), + (0xA7, BrowserForward), + (0xAC, BrowserHome), + (0xA8, BrowserRefresh), + (0xAA, BrowserSearch), + (0xA9, BrowserStop), + (0xFB, ZoomToggle), + (0x70, F1), + (0x71, F2), + (0x72, F3), + (0x73, F4), + (0x74, F5), + (0x75, F6), + (0x76, F7), + (0x77, F8), + (0x78, F9), + (0x79, F10), + (0x7A, F11), + (0x7B, F12), + (0x7C, F13), + (0x7D, F14), + (0x7E, F15), + (0x7F, F16), + (0x80, F17), + (0x81, F18), + (0x82, F19), + (0x83, F20), + (0x84, F21), + (0x85, F22), + (0x86, F23), + (0x87, F24), + ) + } +} + +impl ToVKBits for char { + fn to_vk_bits(&self) -> i32 { + map!( + self, + (0x0041, 'a'), + (0x0042, 'b'), + (0x0043, 'c'), + (0x0044, 'd'), + (0x0045, 'e'), + (0x0046, 'f'), + (0x0047, 'g'), + (0x0048, 'h'), + (0x0049, 'i'), + (0x004a, 'j'), + (0x004b, 'k'), + (0x004c, 'l'), + (0x004d, 'm'), + (0x004e, 'n'), + (0x004f, 'o'), + (0x0050, 'p'), + (0x0051, 'q'), + (0x0052, 'r'), + (0x0053, 's'), + (0x0054, 't'), + (0x0055, 'u'), + (0x0056, 'v'), + (0x0057, 'w'), + (0x0058, 'x'), + (0x0059, 'y'), + (0x005a, 'z'), + (0x0041, 'A'), + (0x0042, 'B'), + (0x0043, 'C'), + (0x0044, 'D'), + (0x0045, 'E'), + (0x0046, 'F'), + (0x0047, 'G'), + (0x0048, 'H'), + (0x0049, 'I'), + (0x004a, 'J'), + (0x004b, 'K'), + (0x004c, 'L'), + (0x004d, 'M'), + (0x004e, 'N'), + (0x004f, 'O'), + (0x0050, 'P'), + (0x0051, 'Q'), + (0x0052, 'R'), + (0x0053, 'S'), + (0x0054, 'T'), + (0x0055, 'U'), + (0x0056, 'V'), + (0x0057, 'W'), + (0x0058, 'X'), + (0x0059, 'Y'), + (0x005a, 'Z'), + (0x0031, '1'), + (0x0032, '2'), + (0x0032, '3'), + (0x0033, '4'), + (0x0034, '5'), + (0x0035, '6'), + (0x0036, '7'), + (0x0037, '8'), + (0x0039, '9'), + (0x0030, '0'), + ) + } +} + +pub(crate) trait ToDomBits { + fn to_dom_bits(&self) -> i32; +} + +impl ToDomBits for winit::keyboard::NamedKey { + fn to_dom_bits(&self) -> i32 { + use winit::keyboard::NamedKey; + map_enum!( + self, + NamedKey, + (0x0000, Hyper), + (0x0085, Super), + (0x0025, Control), + (0x0032, Shift), + (0x0040, Alt), + (0x0000, Fn), + (0x0000, FnLock), + (0x0024, Enter), + (0x0009, Escape), + (0x0016, Backspace), + (0x0017, Tab), + (0x0041, Space), + (0x0042, CapsLock), + (0x0043, F1), + (0x0044, F2), + (0x0045, F3), + (0x0046, F4), + (0x0047, F5), + (0x0048, F6), + (0x0049, F7), + (0x004a, F8), + (0x004b, F9), + (0x004c, F10), + (0x005f, F11), + (0x0060, F12), + (0x006b, PrintScreen), + (0x004e, ScrollLock), + (0x007f, Pause), + (0x0076, Insert), + (0x006e, Home), + (0x0070, PageUp), + (0x0077, Delete), + (0x0073, End), + (0x0075, PageDown), + (0x0072, ArrowRight), + (0x0071, ArrowLeft), + (0x0074, ArrowDown), + (0x006f, ArrowUp), + (0x004d, NumLock), + (0x0087, ContextMenu), + (0x007c, Power), + (0x00bf, F13), + (0x00c0, F14), + (0x00c1, F15), + (0x00c2, F16), + (0x00c3, F17), + (0x00c4, F18), + (0x00c5, F19), + (0x00c6, F20), + (0x00c7, F21), + (0x00c8, F22), + (0x00c9, F23), + (0x00ca, F24), + (0x008e, Open), + (0x0092, Help), + (0x008c, Select), + (0x0089, Again), + (0x008b, Undo), + (0x0091, Cut), + (0x008d, Copy), + (0x008f, Paste), + (0x0090, Find), + (0x0079, AudioVolumeMute), + (0x007b, AudioVolumeUp), + (0x007a, AudioVolumeDown), + (0x0065, KanaMode), + (0x0064, Convert), + (0x0066, NonConvert), + (0x0000, Props), + (0x00e9, BrightnessUp), + (0x00e8, BrightnessDown), + (0x00d7, MediaPlay), + (0x00d1, MediaPause), + (0x00af, MediaRecord), + (0x00d8, MediaFastForward), + (0x00b0, MediaRewind), + (0x00ab, MediaTrackNext), + (0x00ad, MediaTrackPrevious), + (0x00ae, MediaStop), + (0x00a9, Eject), + (0x00ac, MediaPlayPause), + (0x00a3, LaunchMail), + (0x024d, LaunchScreenSaver), + (0x00e1, BrowserSearch), + (0x00b4, BrowserHome), + (0x00a6, BrowserBack), + (0x00a7, BrowserForward), + (0x0088, BrowserStop), + (0x00b5, BrowserRefresh), + (0x00a4, BrowserFavorites), + (0x017c, ZoomToggle), + (0x00f0, MailReply), + (0x00f1, MailForward), + (0x00ef, MailSend), + ) + } +} + +impl ToDomBits for char { + fn to_dom_bits(&self) -> i32 { + map!( + self, + (0x0026, 'a'), + (0x0038, 'b'), + (0x0036, 'c'), + (0x0028, 'd'), + (0x001a, 'e'), + (0x0029, 'f'), + (0x002a, 'g'), + (0x002b, 'h'), + (0x001f, 'i'), + (0x002c, 'j'), + (0x002d, 'k'), + (0x002e, 'l'), + (0x003a, 'm'), + (0x0039, 'n'), + (0x0020, 'o'), + (0x0021, 'p'), + (0x0018, 'q'), + (0x001b, 'r'), + (0x0027, 's'), + (0x001c, 't'), + (0x001e, 'u'), + (0x0037, 'v'), + (0x0019, 'w'), + (0x0035, 'x'), + (0x001d, 'y'), + (0x0034, 'z'), + (0x0026, 'A'), + (0x0038, 'B'), + (0x0036, 'C'), + (0x0028, 'D'), + (0x001a, 'E'), + (0x0029, 'F'), + (0x002a, 'G'), + (0x002b, 'H'), + (0x001f, 'I'), + (0x002c, 'J'), + (0x002d, 'K'), + (0x002e, 'L'), + (0x003a, 'M'), + (0x0039, 'N'), + (0x0020, 'O'), + (0x0021, 'P'), + (0x0018, 'Q'), + (0x001b, 'R'), + (0x0027, 'S'), + (0x001c, 'T'), + (0x001e, 'U'), + (0x0037, 'V'), + (0x0019, 'W'), + (0x0035, 'X'), + (0x001d, 'Y'), + (0x0034, 'Z'), + (0x000a, '1'), + (0x000b, '2'), + (0x000c, '3'), + (0x000d, '4'), + (0x000e, '5'), + (0x000f, '6'), + (0x0010, '7'), + (0x0011, '8'), + (0x0012, '9'), + (0x0013, '0'), + ) + } +} diff --git a/desktop/src/cef/input/mod.rs b/desktop/src/cef/input/mod.rs new file mode 100644 index 0000000000..d8f26c6c28 --- /dev/null +++ b/desktop/src/cef/input/mod.rs @@ -0,0 +1,279 @@ +use cef::sys::{cef_event_flags_t, cef_key_event_type_t, cef_mouse_button_type_t}; +use cef::{ImplBrowser, ImplBrowserHost, KeyEvent, KeyEventType, MouseEvent}; +use winit::dpi::PhysicalPosition; +use winit::event::{ElementState, MouseButton, MouseScrollDelta, WindowEvent}; + +use super::context::{Context, Initialized}; + +mod keymap; +use keymap::{ToDomBits, ToVKBits}; + +pub(crate) fn handle_window_event(context: &mut Context, event: &WindowEvent) { + match event { + WindowEvent::Resized(_) => { + if let Some(browser) = &context.browser { + browser.host().unwrap().was_resized(); + } + } + WindowEvent::CursorMoved { position, .. } => { + if let Some(browser) = &context.browser { + if let Some(host) = browser.host() { + host.set_focus(1); + } + + context.input_state.update_mouse_position(position); + let mouse_event: MouseEvent = (&context.input_state).into(); + browser.host().unwrap().send_mouse_move_event(Some(&mouse_event), 0); + } + } + WindowEvent::MouseInput { state, button, .. } => { + if let Some(browser) = &context.browser { + if let Some(host) = browser.host() { + host.set_focus(1); + + let mouse_up = match state { + ElementState::Pressed => 0, + ElementState::Released => 1, + }; + + let cef_button = match button { + MouseButton::Left => Some(cef::MouseButtonType::from(cef_mouse_button_type_t::MBT_LEFT)), + MouseButton::Right => Some(cef::MouseButtonType::from(cef_mouse_button_type_t::MBT_RIGHT)), + MouseButton::Middle => Some(cef::MouseButtonType::from(cef_mouse_button_type_t::MBT_MIDDLE)), + MouseButton::Forward => None, //TODO: Handle Forward button + MouseButton::Back => None, //TODO: Handle Back button + _ => None, + }; + + let mut mouse_state = context.input_state.mouse_state.clone(); + match button { + MouseButton::Left => { + mouse_state.left = match state { + ElementState::Pressed => true, + ElementState::Released => false, + } + } + MouseButton::Right => { + mouse_state.right = match state { + ElementState::Pressed => true, + ElementState::Released => false, + } + } + MouseButton::Middle => { + mouse_state.middle = match state { + ElementState::Pressed => true, + ElementState::Released => false, + } + } + _ => {} + }; + context.input_state.update_mouse_state(mouse_state); + + let mouse_event: MouseEvent = (&context.input_state).into(); + + if let Some(button) = cef_button { + host.send_mouse_click_event( + Some(&mouse_event), + button, + mouse_up, + 1, // click count + ); + } + } + } + } + WindowEvent::MouseWheel { delta, phase: _, device_id: _, .. } => { + if let Some(browser) = &context.browser { + if let Some(host) = browser.host() { + let mouse_event = (&context.input_state).into(); + let line_width = 40; //feels about right, TODO: replace with correct value + let line_height = 30; //feels about right, TODO: replace with correct value + let (delta_x, delta_y) = match delta { + MouseScrollDelta::LineDelta(x, y) => (*x * line_width as f32, *y * line_height as f32), + MouseScrollDelta::PixelDelta(physical_position) => (physical_position.x as f32, physical_position.y as f32), + }; + host.send_mouse_wheel_event(Some(&mouse_event), delta_x as i32, delta_y as i32); + } + } + } + WindowEvent::ModifiersChanged(modifiers) => { + context.input_state.update_modifiers(&modifiers.state()); + } + WindowEvent::KeyboardInput { device_id: _, event, is_synthetic: _ } => { + if let Some(browser) = &context.browser { + if let Some(host) = browser.host() { + host.set_focus(1); + + let (named_key, character) = match &event.logical_key { + winit::keyboard::Key::Named(named_key) => ( + Some(named_key), + match named_key { + winit::keyboard::NamedKey::Space => Some(' '), + winit::keyboard::NamedKey::Enter => Some('\u{000d}'), + _ => None, + }, + ), + winit::keyboard::Key::Character(str) => { + let char = str.chars().next().unwrap_or('\0'); + (None, Some(char)) + } + _ => return, + }; + + let mut key_event = KeyEvent::default(); + key_event.size = std::mem::size_of::(); + key_event.focus_on_editable_field = 1; + key_event.modifiers = context.input_state.cef_modifiers(&event.location, event.repeat).raw(); + key_event.is_system_key = 0; + + if let Some(named_key) = named_key { + key_event.native_key_code = named_key.to_dom_bits(); + key_event.windows_key_code = named_key.to_vk_bits(); + } else if let Some(char) = character { + key_event.native_key_code = char.to_dom_bits(); + key_event.windows_key_code = char.to_vk_bits(); + } + + match event.state { + ElementState::Pressed => { + key_event.type_ = KeyEventType::from(cef_key_event_type_t::KEYEVENT_RAWKEYDOWN); + host.send_key_event(Some(&key_event)); + + if let Some(char) = character { + let mut buf = [0; 2]; + char.encode_utf16(&mut buf); + key_event.character = buf[0] as u16; + let mut buf = [0; 2]; + char.to_lowercase().next().unwrap().encode_utf16(&mut buf); + key_event.unmodified_character = buf[0] as u16; + + key_event.type_ = KeyEventType::from(cef_key_event_type_t::KEYEVENT_CHAR); + host.send_key_event(Some(&key_event)); + } + } + ElementState::Released => { + key_event.type_ = KeyEventType::from(cef_key_event_type_t::KEYEVENT_KEYUP); + host.send_key_event(Some(&key_event)); + } + }; + } + } + } + _ => {} + } +} + +#[derive(Default, Clone)] +pub(crate) struct MouseState { + left: bool, + right: bool, + middle: bool, +} + +#[derive(Default, Clone, Debug)] +pub(crate) struct MousePosition { + x: usize, + y: usize, +} + +impl From<&PhysicalPosition> for MousePosition { + fn from(position: &PhysicalPosition) -> Self { + Self { + x: position.x as usize, + y: position.y as usize, + } + } +} + +#[derive(Default, Clone)] +pub(crate) struct InputState { + modifiers: winit::keyboard::ModifiersState, + mouse_position: MousePosition, + mouse_state: MouseState, +} + +impl InputState { + fn update_modifiers(&mut self, modifiers: &winit::keyboard::ModifiersState) { + self.modifiers = modifiers.clone(); + } + + fn update_mouse_position(&mut self, position: &PhysicalPosition) { + self.mouse_position = position.into(); + } + + fn update_mouse_state(&mut self, state: MouseState) { + self.mouse_state = state; + } + + fn cef_modifiers(&self, location: &winit::keyboard::KeyLocation, is_repeat: bool) -> CefModifiers { + CefModifiers::new(&self, location, is_repeat) + } + + fn cef_modifiers_mouse_event(&self) -> CefModifiers { + self.cef_modifiers(&winit::keyboard::KeyLocation::Standard, false) + } +} + +impl Into for InputState { + fn into(self) -> CefModifiers { + CefModifiers::new(&self, &winit::keyboard::KeyLocation::Standard, false) + } +} + +impl Into for &InputState { + fn into(self) -> MouseEvent { + MouseEvent { + x: self.mouse_position.x as i32, + y: self.mouse_position.y as i32, + modifiers: self.cef_modifiers_mouse_event().raw(), + } + } +} + +struct CefModifiers(u32); + +impl CefModifiers { + fn new(input_state: &InputState, location: &winit::keyboard::KeyLocation, is_repeat: bool) -> Self { + let mut inner = 0; + + if input_state.modifiers.shift_key() { + inner |= cef_event_flags_t::EVENTFLAG_SHIFT_DOWN as u32; + } + if input_state.modifiers.control_key() { + inner |= cef_event_flags_t::EVENTFLAG_CONTROL_DOWN as u32; + } + if input_state.modifiers.alt_key() { + inner |= cef_event_flags_t::EVENTFLAG_ALT_DOWN as u32; + } + if input_state.modifiers.super_key() { + inner |= cef_event_flags_t::EVENTFLAG_COMMAND_DOWN as u32; + } + + if input_state.mouse_state.left { + inner |= cef_event_flags_t::EVENTFLAG_LEFT_MOUSE_BUTTON as u32; + } + if input_state.mouse_state.right { + inner |= cef_event_flags_t::EVENTFLAG_RIGHT_MOUSE_BUTTON as u32; + } + if input_state.mouse_state.middle { + inner |= cef_event_flags_t::EVENTFLAG_MIDDLE_MOUSE_BUTTON as u32; + } + + if is_repeat { + inner |= cef_event_flags_t::EVENTFLAG_IS_REPEAT as u32; + } + + inner |= match location { + winit::keyboard::KeyLocation::Left => cef_event_flags_t::EVENTFLAG_IS_LEFT as u32, + winit::keyboard::KeyLocation::Right => cef_event_flags_t::EVENTFLAG_IS_RIGHT as u32, + winit::keyboard::KeyLocation::Numpad => cef_event_flags_t::EVENTFLAG_IS_KEY_PAD as u32, + winit::keyboard::KeyLocation::Standard => 0, + }; + + Self(inner) + } + + fn raw(&self) -> u32 { + self.0 + } +} diff --git a/desktop/src/cef/internal/app.rs b/desktop/src/cef/internal/app.rs new file mode 100644 index 0000000000..2cfb7818de --- /dev/null +++ b/desktop/src/cef/internal/app.rs @@ -0,0 +1,61 @@ +use cef::rc::{Rc, RcImpl}; +use cef::sys::{_cef_app_t, cef_base_ref_counted_t}; +use cef::{App, BrowserProcessHandler, ImplApp, SchemeRegistrar, WrapApp}; + +use crate::cef::scheme_handler::GraphiteSchemeHandlerFactory; +use crate::cef::EventHandler; + +use super::browser_process_handler::BrowserProcessHandlerImpl; + +pub(crate) struct AppImpl { + object: *mut RcImpl<_cef_app_t, Self>, + event_handler: H, +} +impl AppImpl { + pub(crate) fn new(event_handler: H) -> App { + App::new(Self { + object: std::ptr::null_mut(), + event_handler, + }) + } +} + +impl ImplApp for AppImpl { + fn browser_process_handler(&self) -> Option { + Some(BrowserProcessHandlerImpl::new(self.event_handler.clone())) + } + + fn on_register_custom_schemes(&self, registrar: Option<&mut SchemeRegistrar>) { + GraphiteSchemeHandlerFactory::register_schemes(registrar); + } + + fn get_raw(&self) -> *mut _cef_app_t { + self.object.cast() + } +} + +impl Clone for AppImpl { + fn clone(&self) -> Self { + unsafe { + let rc_impl = &mut *self.object; + rc_impl.interface.add_ref(); + } + Self { + object: self.object, + event_handler: self.event_handler.clone(), + } + } +} +impl Rc for AppImpl { + fn as_base(&self) -> &cef_base_ref_counted_t { + unsafe { + let base = &*self.object; + std::mem::transmute(&base.cef_object) + } + } +} +impl WrapApp for AppImpl { + fn wrap_rc(&mut self, object: *mut RcImpl<_cef_app_t, Self>) { + self.object = object; + } +} diff --git a/desktop/src/cef/internal/browser_process_handler.rs b/desktop/src/cef/internal/browser_process_handler.rs new file mode 100644 index 0000000000..4f20d0028b --- /dev/null +++ b/desktop/src/cef/internal/browser_process_handler.rs @@ -0,0 +1,55 @@ +use cef::rc::{Rc, RcImpl}; +use cef::sys::{_cef_browser_process_handler_t, cef_base_ref_counted_t, cef_browser_process_handler_t}; +use cef::{BrowserProcessHandler, CefString, ImplBrowserProcessHandler, SchemeHandlerFactory, WrapBrowserProcessHandler}; + +use crate::cef::scheme_handler::GraphiteSchemeHandlerFactory; +use crate::cef::EventHandler; + +pub(crate) struct BrowserProcessHandlerImpl { + object: *mut RcImpl, + event_handler: H, +} +impl BrowserProcessHandlerImpl { + pub(crate) fn new(event_handler: H) -> BrowserProcessHandler { + BrowserProcessHandler::new(Self { + object: std::ptr::null_mut(), + event_handler, + }) + } +} + +impl ImplBrowserProcessHandler for BrowserProcessHandlerImpl { + fn on_context_initialized(&self) { + cef::register_scheme_handler_factory(Some(&CefString::from("graphite")), None, Some(&mut SchemeHandlerFactory::new(GraphiteSchemeHandlerFactory::new()))); + } + + fn get_raw(&self) -> *mut _cef_browser_process_handler_t { + self.object.cast() + } +} + +impl Clone for BrowserProcessHandlerImpl { + fn clone(&self) -> Self { + unsafe { + let rc_impl = &mut *self.object; + rc_impl.interface.add_ref(); + } + Self { + object: self.object, + event_handler: self.event_handler.clone(), + } + } +} +impl Rc for BrowserProcessHandlerImpl { + fn as_base(&self) -> &cef_base_ref_counted_t { + unsafe { + let base = &*self.object; + std::mem::transmute(&base.cef_object) + } + } +} +impl WrapBrowserProcessHandler for BrowserProcessHandlerImpl { + fn wrap_rc(&mut self, object: *mut RcImpl<_cef_browser_process_handler_t, Self>) { + self.object = object; + } +} diff --git a/desktop/src/cef/internal/client.rs b/desktop/src/cef/internal/client.rs new file mode 100644 index 0000000000..535dbdad21 --- /dev/null +++ b/desktop/src/cef/internal/client.rs @@ -0,0 +1,52 @@ +use cef::rc::{Rc, RcImpl}; +use cef::sys::{_cef_client_t, cef_base_ref_counted_t}; +use cef::{Client, ImplClient, RenderHandler, WrapClient}; + +pub(crate) struct ClientImpl { + object: *mut RcImpl<_cef_client_t, Self>, + render_handler: RenderHandler, +} +impl ClientImpl { + pub(crate) fn new(render_handler: RenderHandler) -> Client { + Client::new(Self { + object: std::ptr::null_mut(), + render_handler, + }) + } +} + +impl ImplClient for ClientImpl { + fn render_handler(&self) -> Option { + Some(self.render_handler.clone()) + } + + fn get_raw(&self) -> *mut _cef_client_t { + self.object.cast() + } +} + +impl Clone for ClientImpl { + fn clone(&self) -> Self { + unsafe { + let rc_impl = &mut *self.object; + rc_impl.interface.add_ref(); + } + Self { + object: self.object, + render_handler: self.render_handler.clone(), + } + } +} +impl Rc for ClientImpl { + fn as_base(&self) -> &cef_base_ref_counted_t { + unsafe { + let base = &*self.object; + std::mem::transmute(&base.cef_object) + } + } +} +impl WrapClient for ClientImpl { + fn wrap_rc(&mut self, object: *mut RcImpl<_cef_client_t, Self>) { + self.object = object; + } +} diff --git a/desktop/src/cef/internal/mod.rs b/desktop/src/cef/internal/mod.rs new file mode 100644 index 0000000000..8473884fd3 --- /dev/null +++ b/desktop/src/cef/internal/mod.rs @@ -0,0 +1,10 @@ +mod app; +mod browser_process_handler; +mod client; +mod non_browser_app; +mod render_handler; + +pub(crate) use app::AppImpl; +pub(crate) use client::ClientImpl; +pub(crate) use non_browser_app::NonBrowserAppImpl; +pub(crate) use render_handler::RenderHandlerImpl; diff --git a/desktop/src/cef/internal/non_browser_app.rs b/desktop/src/cef/internal/non_browser_app.rs new file mode 100644 index 0000000000..66d4957af0 --- /dev/null +++ b/desktop/src/cef/internal/non_browser_app.rs @@ -0,0 +1,47 @@ +use cef::rc::{Rc, RcImpl}; +use cef::sys::{_cef_app_t, cef_base_ref_counted_t}; +use cef::{App, ImplApp, SchemeRegistrar, WrapApp}; + +use crate::cef::scheme_handler::GraphiteSchemeHandlerFactory; + +pub(crate) struct NonBrowserAppImpl { + object: *mut RcImpl<_cef_app_t, Self>, +} +impl NonBrowserAppImpl { + pub(crate) fn new() -> App { + App::new(Self { object: std::ptr::null_mut() }) + } +} + +impl ImplApp for NonBrowserAppImpl { + fn on_register_custom_schemes(&self, registrar: Option<&mut SchemeRegistrar>) { + GraphiteSchemeHandlerFactory::register_schemes(registrar); + } + + fn get_raw(&self) -> *mut _cef_app_t { + self.object.cast() + } +} + +impl Clone for NonBrowserAppImpl { + fn clone(&self) -> Self { + unsafe { + let rc_impl = &mut *self.object; + rc_impl.interface.add_ref(); + } + Self { object: self.object } + } +} +impl Rc for NonBrowserAppImpl { + fn as_base(&self) -> &cef_base_ref_counted_t { + unsafe { + let base = &*self.object; + std::mem::transmute(&base.cef_object) + } + } +} +impl WrapApp for NonBrowserAppImpl { + fn wrap_rc(&mut self, object: *mut RcImpl<_cef_app_t, Self>) { + self.object = object; + } +} diff --git a/desktop/src/cef/internal/render_handler.rs b/desktop/src/cef/internal/render_handler.rs new file mode 100644 index 0000000000..6e6c684402 --- /dev/null +++ b/desktop/src/cef/internal/render_handler.rs @@ -0,0 +1,81 @@ +use cef::rc::{Rc, RcImpl}; +use cef::sys::{_cef_render_handler_t, cef_base_ref_counted_t}; +use cef::{Browser, ImplBrowser, ImplBrowserHost, ImplRenderHandler, PaintElementType, Rect, RenderHandler, WrapRenderHandler}; + +use crate::cef::EventHandler; + +pub(crate) struct RenderHandlerImpl { + object: *mut RcImpl<_cef_render_handler_t, Self>, + event_handler: H, +} +impl RenderHandlerImpl { + pub(crate) fn new(event_handler: H) -> RenderHandler { + RenderHandler::new(Self { + object: std::ptr::null_mut(), + event_handler, + }) + } +} +impl ImplRenderHandler for RenderHandlerImpl { + fn view_rect(&self, _browser: Option<&mut Browser>, rect: Option<&mut Rect>) { + if let Some(rect) = rect { + let view = self.event_handler.view(); + *rect = Rect { + x: 0, + y: 0, + width: view.width as i32, + height: view.height as i32, + }; + } + } + + fn on_paint( + &self, + browser: Option<&mut Browser>, + _type_: PaintElementType, + _dirty_rect_count: usize, + _dirty_rects: Option<&Rect>, + buffer: *const u8, + width: ::std::os::raw::c_int, + height: ::std::os::raw::c_int, + ) { + let buffer_size = (width * height * 4) as usize; + let buffer_slice = unsafe { std::slice::from_raw_parts(buffer, buffer_size) }; + let draw_successful = self.event_handler.draw(buffer_slice.to_vec(), width as usize, height as usize); + if !draw_successful { + if let Some(browser) = browser { + browser.host().unwrap().was_resized(); + } + } + } + + fn get_raw(&self) -> *mut _cef_render_handler_t { + self.object.cast() + } +} + +impl Clone for RenderHandlerImpl { + fn clone(&self) -> Self { + unsafe { + let rc_impl = &mut *self.object; + rc_impl.interface.add_ref(); + } + Self { + object: self.object, + event_handler: self.event_handler.clone(), + } + } +} +impl Rc for RenderHandlerImpl { + fn as_base(&self) -> &cef_base_ref_counted_t { + unsafe { + let base = &*self.object; + std::mem::transmute(&base.cef_object) + } + } +} +impl WrapRenderHandler for RenderHandlerImpl { + fn wrap_rc(&mut self, object: *mut RcImpl<_cef_render_handler_t, Self>) { + self.object = object; + } +} diff --git a/desktop/src/cef/mod.rs b/desktop/src/cef/mod.rs new file mode 100644 index 0000000000..f0300a4095 --- /dev/null +++ b/desktop/src/cef/mod.rs @@ -0,0 +1,26 @@ +mod input; + +mod scheme_handler; + +mod context; + +mod internal; + +pub(crate) trait EventHandler: Clone { + fn view(&self) -> View; + fn draw(&self, buffer: Vec, width: usize, height: usize) -> bool; +} + +#[derive(Clone)] +pub(crate) struct View { + pub(crate) width: usize, + pub(crate) height: usize, +} + +impl View { + pub(crate) fn new(width: usize, height: usize) -> Self { + Self { width, height } + } +} + +pub(crate) use context::{Context, InitError, Initialized, Setup, SetupError}; diff --git a/desktop/src/cef/scheme_handler.rs b/desktop/src/cef/scheme_handler.rs new file mode 100644 index 0000000000..1991e9cb17 --- /dev/null +++ b/desktop/src/cef/scheme_handler.rs @@ -0,0 +1,222 @@ +use std::cell::RefCell; +use std::ffi::c_int; +use std::slice::Iter; + +use cef::rc::{Rc, RcImpl}; +use cef::sys::{_cef_resource_handler_t, _cef_scheme_handler_factory_t, cef_base_ref_counted_t, cef_scheme_options_t}; +use cef::{ + Browser, Callback, CefString, Frame, ImplRequest, ImplResourceHandler, ImplResponse, ImplSchemeHandlerFactory, ImplSchemeRegistrar, Request, ResourceHandler, ResourceReadCallback, Response, + SchemeRegistrar, WrapResourceHandler, WrapSchemeHandlerFactory, +}; +use include_dir::{include_dir, Dir}; + +pub(crate) struct GraphiteSchemeHandlerFactory { + object: *mut RcImpl<_cef_scheme_handler_factory_t, Self>, +} +impl GraphiteSchemeHandlerFactory { + pub(crate) fn new() -> Self { + Self { object: std::ptr::null_mut() } + } + + pub(crate) fn register_schemes(registrar: Option<&mut SchemeRegistrar>) { + if let Some(registrar) = registrar { + let mut scheme_options = 0; + scheme_options |= cef_scheme_options_t::CEF_SCHEME_OPTION_STANDARD as i32; + scheme_options |= cef_scheme_options_t::CEF_SCHEME_OPTION_FETCH_ENABLED as i32; + scheme_options |= cef_scheme_options_t::CEF_SCHEME_OPTION_SECURE as i32; + scheme_options |= cef_scheme_options_t::CEF_SCHEME_OPTION_CORS_ENABLED as i32; + registrar.add_custom_scheme(Some(&CefString::from("graphite")), scheme_options); + } + } +} +impl ImplSchemeHandlerFactory for GraphiteSchemeHandlerFactory { + fn create(&self, _browser: Option<&mut Browser>, _frame: Option<&mut Frame>, scheme_name: Option<&CefString>, request: Option<&mut Request>) -> Option { + if let Some(scheme_name) = scheme_name { + if scheme_name.to_string() != "graphite" { + return None; + } + if let Some(request) = request { + let url = CefString::from(&request.url()).to_string(); + let path = url.strip_prefix("graphite://").unwrap(); + let domain = path.split('/').next().unwrap_or(""); + let path = path.strip_prefix(domain).unwrap_or(""); + let path = path.trim_start_matches('/'); + return match domain { + "frontend" => { + if path.is_empty() { + Some(ResourceHandler::new(GraphiteFrontendResourceHandler::new("index.html"))) + } else { + Some(ResourceHandler::new(GraphiteFrontendResourceHandler::new(path))) + } + } + _ => None, + }; + } + return None; + } + None + } + fn get_raw(&self) -> *mut _cef_scheme_handler_factory_t { + self.object.cast() + } +} + +static FRONTEND: Dir = include_dir!("$CARGO_MANIFEST_DIR/../frontend/dist"); + +struct GraphiteFrontendResourceHandler<'a> { + object: *mut RcImpl<_cef_resource_handler_t, Self>, + data: Option>>, + mimetype: Option, +} +impl<'a> GraphiteFrontendResourceHandler<'a> { + pub fn new(path: &str) -> Self { + let file = FRONTEND.get_file(path); + let data = if let Some(file) = file { + Some(RefCell::new(file.contents().iter())) + } else { + println!("Failed to find asset at path: {}", path); + None + }; + let mimetype = if let Some(file) = file { + let ext = file.path().extension().and_then(|s| s.to_str()).unwrap_or(""); + + // We know what file types will be in the assets this should be fine + match ext { + "html" => Some("text/html".to_string()), + "css" => Some("text/css".to_string()), + "wasm" => Some("application/wasm".to_string()), + "js" => Some("application/javascript".to_string()), + "png" => Some("image/png".to_string()), + "jpg" | "jpeg" => Some("image/jpeg".to_string()), + "svg" => Some("image/svg+xml".to_string()), + "xml" => Some("application/xml".to_string()), + "json" => Some("application/json".to_string()), + "ico" => Some("image/x-icon".to_string()), + "woff" => Some("font/woff".to_string()), + "woff2" => Some("font/woff2".to_string()), + "ttf" => Some("font/ttf".to_string()), + "otf" => Some("font/otf".to_string()), + "webmanifest" => Some("application/manifest+json".to_string()), + "graphite" => Some("application/graphite+json".to_string()), + _ => None, + } + } else { + None + }; + Self { + object: std::ptr::null_mut(), + data, + mimetype, + } + } +} +impl<'a> ImplResourceHandler for GraphiteFrontendResourceHandler<'a> { + fn open(&self, _request: Option<&mut Request>, handle_request: Option<&mut c_int>, _callback: Option<&mut Callback>) -> c_int { + if let Some(handle_request) = handle_request { + *handle_request = 1; + } + 1 + } + + fn response_headers(&self, response: Option<&mut Response>, response_length: Option<&mut i64>, _redirect_url: Option<&mut CefString>) { + if let Some(response_length) = response_length { + *response_length = -1; // Indicating that the length is unknown + } + if let Some(response) = response { + if let Some(_) = &self.data { + if let Some(mimetype) = &self.mimetype { + let cef_mime = CefString::from(mimetype.as_str()); + response.set_mime_type(Some(&cef_mime)); + } else { + response.set_mime_type(None); + } + response.set_status(200); + } else { + response.set_status(404); + response.set_mime_type(Some(&CefString::from("text/plain"))); + } + } + } + + fn read(&self, data_out: *mut u8, bytes_to_read: c_int, bytes_read: Option<&mut c_int>, _callback: Option<&mut ResourceReadCallback>) -> c_int { + let mut read = 0; + + let out = unsafe { std::slice::from_raw_parts_mut(data_out, bytes_to_read as usize) }; + if let Some(data) = &self.data { + let mut data = data.borrow_mut(); + for i in 0..bytes_to_read as usize { + if let Some(&byte) = data.next() { + out[i] = byte; + read += 1; + } else { + break; + } + } + } + + if let Some(bytes_read) = bytes_read { + *bytes_read = read; + } + + if read > 0 { + 1 // Indicating that data was read + } else { + 0 // Indicating no data was read + } + } + + fn get_raw(&self) -> *mut _cef_resource_handler_t { + self.object.cast() + } +} + +impl WrapSchemeHandlerFactory for GraphiteSchemeHandlerFactory { + fn wrap_rc(&mut self, object: *mut RcImpl<_cef_scheme_handler_factory_t, Self>) { + self.object = object; + } +} +impl<'a> WrapResourceHandler for GraphiteFrontendResourceHandler<'a> { + fn wrap_rc(&mut self, object: *mut RcImpl<_cef_resource_handler_t, Self>) { + self.object = object; + } +} + +impl Clone for GraphiteSchemeHandlerFactory { + fn clone(&self) -> Self { + unsafe { + let rc_impl = &mut *self.object; + rc_impl.interface.add_ref(); + } + Self { object: self.object } + } +} +impl<'a> Clone for GraphiteFrontendResourceHandler<'a> { + fn clone(&self) -> Self { + unsafe { + let rc_impl = &mut *self.object; + rc_impl.interface.add_ref(); + } + Self { + object: self.object, + data: self.data.clone(), + mimetype: self.mimetype.clone(), + } + } +} + +impl Rc for GraphiteSchemeHandlerFactory { + fn as_base(&self) -> &cef_base_ref_counted_t { + unsafe { + let base = &*self.object; + std::mem::transmute(&base.cef_object) + } + } +} +impl<'a> Rc for GraphiteFrontendResourceHandler<'a> { + fn as_base(&self) -> &cef_base_ref_counted_t { + unsafe { + let base = &*self.object; + std::mem::transmute(&base.cef_object) + } + } +} diff --git a/desktop/src/main.rs b/desktop/src/main.rs new file mode 100644 index 0000000000..5fd458cd95 --- /dev/null +++ b/desktop/src/main.rs @@ -0,0 +1,321 @@ +use std::fmt::Debug; +use std::process::exit; +use std::sync::{Arc, Mutex, MutexGuard, PoisonError}; +use std::thread; +use std::time::Duration; + +use winit::application::ApplicationHandler; +use winit::event::*; +use winit::event_loop::{ActiveEventLoop, ControlFlow, EventLoop, EventLoopProxy}; +use winit::window::{Window, WindowId}; + +mod cef; +use cef::Setup; + +mod render; +use render::{FrameBuffer, GraphicsState}; + +pub(crate) enum CustomEvent { + UiUpdate, + Resized, + DoBrowserWork, +} + +pub(crate) struct WindowState { + width: Option, + height: Option, + ui_fb: Option, + preview_fb: Option, + graphics_state: Option, + event_loop_proxy: Option>, +} + +impl WindowState { + fn new() -> Self { + Self { + width: None, + height: None, + ui_fb: None, + preview_fb: None, + graphics_state: None, + event_loop_proxy: None, + } + } + + fn handle(self) -> WindowStateHandle { + WindowStateHandle { inner: Arc::new(Mutex::new(self)) } + } +} + +impl Debug for WindowState { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + f.debug_struct("WindowState") + .field("width", &self.width.is_some()) + .field("height", &self.height.is_some()) + .field("ui_fb", &self.ui_fb.is_some()) + .field("preview_fb", &self.preview_fb.is_some()) + .field("graphics_state", &self.graphics_state.is_some()) + .finish() + } +} + +pub(crate) struct WindowStateHandle { + inner: Arc>, +} + +impl WindowStateHandle { + fn with<'a, P>(&self, p: P) -> Result<(), PoisonError>> + where + P: FnOnce(&mut WindowState), + { + match self.inner.lock() { + Ok(mut guard) => Ok(p(&mut guard)), + Err(_) => todo!("not error handling yet"), + } + } +} + +impl Clone for WindowStateHandle { + fn clone(&self) -> Self { + Self { inner: self.inner.clone() } + } +} + +#[derive(Clone)] +struct CefEventHandler { + window_state: WindowStateHandle, +} + +impl CefEventHandler { + fn new(window_state: WindowStateHandle) -> Self { + Self { window_state } + } +} + +impl cef::EventHandler for CefEventHandler { + fn view(&self) -> cef::View { + let mut w = 1; + let mut h = 1; + + self.window_state + .with(|s| match s { + WindowState { + width: Some(width), + height: Some(height), + .. + } => { + w = *width; + h = *height; + } + _ => {} + }) + .unwrap(); + + cef::View::new(w, h) + } + + fn draw(&self, buffer: Vec, width: usize, height: usize) -> bool { + let fb = FrameBuffer::new(buffer, width, height) + .map_err(|e| { + panic!("Failed to create FrameBuffer: {}", e); + }) + .unwrap(); + + let mut correct_size = true; + self.window_state + .with(|s| { + if let Some(event_loop_proxy) = &s.event_loop_proxy { + let _ = event_loop_proxy.send_event(CustomEvent::UiUpdate); + let _ = event_loop_proxy.send_event(CustomEvent::DoBrowserWork); + } + if width != s.width.unwrap_or(1) || height != s.height.unwrap_or(1) { + correct_size = false; + } else { + s.ui_fb = Some(fb); + } + }) + .unwrap(); + + correct_size + } +} + +struct WinitApp { + window_state: WindowStateHandle, + cef_context: cef::Context, + window: Option>, +} + +impl WinitApp { + fn new(window_state: WindowStateHandle, cef_context: cef::Context) -> Self { + Self { + window_state, + cef_context, + window: None, + } + } +} + +impl ApplicationHandler for WinitApp { + fn resumed(&mut self, event_loop: &ActiveEventLoop) { + self.window_state + .with(|s| match s { + WindowState { width: Some(w), height: Some(h), .. } => { + let window = Arc::new( + event_loop + .create_window( + Window::default_attributes() + .with_title("CEF Offscreen Rendering") + .with_inner_size(winit::dpi::LogicalSize::new(*w as u32, *h as u32)), + ) + .unwrap(), + ); + let graphics_state = pollster::block_on(GraphicsState::new(window.clone())); + + self.window = Some(window.clone()); + s.graphics_state = Some(graphics_state); + + let _ = thread::spawn(move || loop { + thread::sleep(Duration::from_millis(100)); + window.request_redraw(); + }); + + println!("Winit window created and ready"); + } + _ => {} + }) + .unwrap(); + } + + fn user_event(&mut self, _: &ActiveEventLoop, event: CustomEvent) { + match event { + CustomEvent::DoBrowserWork => { + self.cef_context.work(); + } + CustomEvent::UiUpdate | CustomEvent::Resized => { + if let Some(window) = &self.window { + window.request_redraw(); + } + } + } + } + + fn window_event(&mut self, event_loop: &ActiveEventLoop, _window_id: WindowId, event: WindowEvent) { + self.cef_context.handle_window_event(&event); + + match event { + WindowEvent::CloseRequested => { + println!("The close button was pressed; stopping"); + event_loop.exit(); + } + WindowEvent::Resized(physical_size) => { + self.window_state + .with(|s| { + let width = physical_size.width as usize; + let height = physical_size.height as usize; + s.width = Some(width); + s.height = Some(height); + if let Some(elp) = &s.event_loop_proxy { + let _ = elp.send_event(CustomEvent::Resized); + } + if let Some(event_loop_proxy) = &s.event_loop_proxy { + let _ = event_loop_proxy.send_event(CustomEvent::DoBrowserWork); + } + if let Some(graphics_state) = &mut s.graphics_state { + graphics_state.resize(width, height); + } + }) + .unwrap(); + } + + WindowEvent::RedrawRequested => { + self.cef_context.work(); + + self.window_state + .with(|s| match s { + WindowState { + width: Some(width), + height: Some(height), + graphics_state: Some(graphics_state), + ui_fb, + .. + } => { + if let Some(fb) = &*ui_fb { + graphics_state.update_texture(fb); + if fb.width() != *width && fb.height() != *height { + graphics_state.resize(*width, *height); + } + } else { + if let Some(window) = &self.window { + window.request_redraw(); + } + } + + match graphics_state.render() { + Ok(_) => {} + Err(wgpu::SurfaceError::Lost) => { + graphics_state.resize(*width, *height); + } + Err(wgpu::SurfaceError::OutOfMemory) => { + event_loop.exit(); + } + Err(e) => eprintln!("{:?}", e), + } + } + _ => {} + }) + .unwrap(); + } + _ => {} + } + + self.window_state + .with(|s| { + if let Some(event_loop_proxy) = &s.event_loop_proxy { + let _ = event_loop_proxy.send_event(CustomEvent::DoBrowserWork); + } + }) + .unwrap(); + } +} + +fn main() { + let cef_context = match cef::Context::::new() { + Ok(c) => c, + Err(cef::SetupError::Subprocess) => exit(0), + Err(cef::SetupError::SubprocessFailed(t)) => { + println!("Subprocess of type {t} failed"); + exit(1); + } + }; + + let window_state = WindowState::new().handle(); + + window_state + .with(|s| { + s.width = Some(1200); + s.height = Some(800); + }) + .unwrap(); + + let event_loop = EventLoop::::with_user_event().build().unwrap(); + event_loop.set_control_flow(ControlFlow::Wait); + + window_state.with(|s| s.event_loop_proxy = Some(event_loop.create_proxy())).unwrap(); + + let cef_context = match cef_context.init(CefEventHandler::new(window_state.clone())) { + Ok(c) => c, + Err(cef::InitError::InitializationFailed) => { + println!("Cef initialization failed"); + exit(1); + } + }; + + println!("Cef initialized successfully"); + + let mut winit_app = WinitApp::new(window_state, cef_context); + + event_loop.run_app(&mut winit_app).unwrap(); + + winit_app.cef_context.shutdown(); +} diff --git a/desktop/src/render/fullscreen_texture.wgsl b/desktop/src/render/fullscreen_texture.wgsl new file mode 100644 index 0000000000..216d820063 --- /dev/null +++ b/desktop/src/render/fullscreen_texture.wgsl @@ -0,0 +1,36 @@ +struct VertexOutput { + @builtin(position) clip_position: vec4, + @location(0) tex_coords: vec2, +} + +@vertex +fn vs_main(@builtin(vertex_index) vertex_index: u32) -> VertexOutput { + var out: VertexOutput; + + let pos = array( + // 1st triangle + vec2f( -1.0, -1.0), // center + vec2f( 1.0, -1.0), // right, center + vec2f( -1.0, 1.0), // center, top + + // 2nd triangle + vec2f( -1.0, 1.0), // center, top + vec2f( 1.0, -1.0), // right, center + vec2f( 1.0, 1.0), // right, top + ); + let xy = pos[vertex_index]; + out.clip_position = vec4f(xy , 0.0, 1.0); + let coords = (xy / 2. + 0.5); + out.tex_coords = vec2f(coords.x, 1. - coords.y); + return out; +} + +@group(0) @binding(0) +var t_diffuse: texture_2d; +@group(0) @binding(1) +var s_diffuse: sampler; + +@fragment +fn fs_main(in: VertexOutput) -> @location(0) vec4 { + return textureSample(t_diffuse, s_diffuse, in.tex_coords); +} diff --git a/desktop/src/render/mod.rs b/desktop/src/render/mod.rs new file mode 100644 index 0000000000..22e67f1556 --- /dev/null +++ b/desktop/src/render/mod.rs @@ -0,0 +1,328 @@ +use std::sync::Arc; + +use thiserror::Error; +use winit::window::Window; + +pub(crate) struct FrameBuffer { + buffer: Vec, + width: usize, + height: usize, +} + +#[derive(Error, Debug)] +pub(crate) enum FrameBufferError { + #[error("Invalid buffer size {buffer_size}, expected {expected_size} for width {width} multiplied with height {height} multiplied by 4 channels")] + InvalidSize { buffer_size: usize, expected_size: usize, width: usize, height: usize }, +} + +impl FrameBuffer { + pub(crate) fn new(buffer: Vec, width: usize, height: usize) -> Result { + let fb = Self { buffer, width, height }; + fb.validate_size()?; + Ok(fb) + } + + pub(crate) fn buffer(&self) -> &[u8] { + &self.buffer + } + + pub(crate) fn width(&self) -> usize { + self.width + } + + pub(crate) fn height(&self) -> usize { + self.height + } + + fn validate_size(&self) -> Result<(), FrameBufferError> { + if self.buffer.len() != self.width * self.height * 4 { + Err(FrameBufferError::InvalidSize { + buffer_size: self.buffer.len(), + expected_size: self.width * self.height * 4, + width: self.width, + height: self.height, + }) + } else { + Ok(()) + } + } +} + +pub(crate) struct GraphicsState { + surface: wgpu::Surface<'static>, + device: wgpu::Device, + queue: wgpu::Queue, + config: wgpu::SurfaceConfiguration, + texture: Option, + bind_group: Option, + render_pipeline: wgpu::RenderPipeline, + sampler: wgpu::Sampler, +} + +impl GraphicsState { + pub(crate) async fn new(window: Arc) -> Self { + let size = window.inner_size(); + + let instance = wgpu::Instance::new(wgpu::InstanceDescriptor { + backends: wgpu::Backends::PRIMARY, + ..Default::default() + }); + + let surface = instance.create_surface(window).unwrap(); + + let adapter = instance + .request_adapter(&wgpu::RequestAdapterOptions { + power_preference: wgpu::PowerPreference::default(), + compatible_surface: Some(&surface), + force_fallback_adapter: false, + }) + .await + .unwrap(); + + let (device, queue) = adapter + .request_device( + &wgpu::DeviceDescriptor { + required_features: wgpu::Features::empty(), + required_limits: wgpu::Limits::default(), + label: None, + memory_hints: Default::default(), + }, + None, + ) + .await + .unwrap(); + + let surface_caps = surface.get_capabilities(&adapter); + let surface_format = surface_caps.formats.iter().find(|f| f.is_srgb()).copied().unwrap_or(surface_caps.formats[0]); + + let config = wgpu::SurfaceConfiguration { + usage: wgpu::TextureUsages::RENDER_ATTACHMENT, + format: surface_format, + width: size.width, + height: size.height, + present_mode: surface_caps.present_modes[0], + alpha_mode: surface_caps.alpha_modes[0], + view_formats: vec![], + desired_maximum_frame_latency: 2, + }; + + surface.configure(&device, &config); + + // Create shader module + let shader = device.create_shader_module(wgpu::include_wgsl!("fullscreen_texture.wgsl")); + + // Create sampler + let sampler = device.create_sampler(&wgpu::SamplerDescriptor { + address_mode_u: wgpu::AddressMode::ClampToEdge, + address_mode_v: wgpu::AddressMode::ClampToEdge, + address_mode_w: wgpu::AddressMode::ClampToEdge, + mag_filter: wgpu::FilterMode::Linear, + min_filter: wgpu::FilterMode::Nearest, + mipmap_filter: wgpu::FilterMode::Nearest, + ..Default::default() + }); + + let texture_bind_group_layout = device.create_bind_group_layout(&wgpu::BindGroupLayoutDescriptor { + entries: &[ + wgpu::BindGroupLayoutEntry { + binding: 0, + visibility: wgpu::ShaderStages::FRAGMENT, + ty: wgpu::BindingType::Texture { + multisampled: false, + view_dimension: wgpu::TextureViewDimension::D2, + sample_type: wgpu::TextureSampleType::Float { filterable: true }, + }, + count: None, + }, + wgpu::BindGroupLayoutEntry { + binding: 1, + visibility: wgpu::ShaderStages::FRAGMENT, + ty: wgpu::BindingType::Sampler(wgpu::SamplerBindingType::Filtering), + count: None, + }, + ], + label: Some("texture_bind_group_layout"), + }); + + let render_pipeline_layout = device.create_pipeline_layout(&wgpu::PipelineLayoutDescriptor { + label: Some("Render Pipeline Layout"), + bind_group_layouts: &[&texture_bind_group_layout], + push_constant_ranges: &[], + }); + + let render_pipeline = device.create_render_pipeline(&wgpu::RenderPipelineDescriptor { + label: Some("Render Pipeline"), + layout: Some(&render_pipeline_layout), + vertex: wgpu::VertexState { + module: &shader, + entry_point: Some("vs_main"), + buffers: &[], + compilation_options: Default::default(), + }, + fragment: Some(wgpu::FragmentState { + module: &shader, + entry_point: Some("fs_main"), + targets: &[Some(wgpu::ColorTargetState { + format: config.format, + blend: Some(wgpu::BlendState::REPLACE), + write_mask: wgpu::ColorWrites::ALL, + })], + compilation_options: Default::default(), + }), + primitive: wgpu::PrimitiveState { + topology: wgpu::PrimitiveTopology::TriangleList, + strip_index_format: None, + front_face: wgpu::FrontFace::Ccw, + cull_mode: Some(wgpu::Face::Back), + polygon_mode: wgpu::PolygonMode::Fill, + unclipped_depth: false, + conservative: false, + }, + depth_stencil: None, + multisample: wgpu::MultisampleState { + count: 1, + mask: !0, + alpha_to_coverage_enabled: false, + }, + multiview: None, + cache: None, + }); + + let mut graphics_state = Self { + surface, + device, + queue, + config, + texture: None, + bind_group: None, + render_pipeline, + sampler, + }; + + // Initialize with a test pattern so we always have something to render + let width = 800; + let height = 600; + let initial_data = vec![34u8; width * height * 4]; // Gray texture #222222FF + + let fb = FrameBuffer::new(initial_data, width, height) + .map_err(|e| { + panic!("Failed to create initial FrameBuffer: {}", e); + }) + .unwrap(); + + graphics_state.update_texture(&fb); + + graphics_state + } + + pub(crate) fn resize(&mut self, width: usize, height: usize) { + if width > 0 && height > 0 && (self.config.width != width as u32 || self.config.height != height as u32) { + self.config.width = width as u32; + self.config.height = height as u32; + self.surface.configure(&self.device, &self.config); + } + } + + pub(crate) fn update_texture(&mut self, frame_buffer: &FrameBuffer) { + let data = frame_buffer.buffer(); + let width = frame_buffer.width() as u32; + let height = frame_buffer.height() as u32; + + if width > 0 && height > 0 && (self.config.width != width || self.config.height != height) { + self.config.width = width; + self.config.height = height; + self.surface.configure(&self.device, &self.config); + } + + let texture = self.device.create_texture(&wgpu::TextureDescriptor { + label: Some("CEF Texture"), + size: wgpu::Extent3d { + width, + height, + depth_or_array_layers: 1, + }, + mip_level_count: 1, + sample_count: 1, + dimension: wgpu::TextureDimension::D2, + format: wgpu::TextureFormat::Bgra8UnormSrgb, + usage: wgpu::TextureUsages::TEXTURE_BINDING | wgpu::TextureUsages::COPY_DST, + view_formats: &[], + }); + + self.queue.write_texture( + wgpu::ImageCopyTexture { + texture: &texture, + mip_level: 0, + origin: wgpu::Origin3d::ZERO, + aspect: wgpu::TextureAspect::All, + }, + data, + wgpu::ImageDataLayout { + offset: 0, + bytes_per_row: Some(4 * width), + rows_per_image: Some(height), + }, + wgpu::Extent3d { + width, + height, + depth_or_array_layers: 1, + }, + ); + + let texture_view = texture.create_view(&wgpu::TextureViewDescriptor::default()); + + let bind_group = self.device.create_bind_group(&wgpu::BindGroupDescriptor { + layout: &self.render_pipeline.get_bind_group_layout(0), + entries: &[ + wgpu::BindGroupEntry { + binding: 0, + resource: wgpu::BindingResource::TextureView(&texture_view), + }, + wgpu::BindGroupEntry { + binding: 1, + resource: wgpu::BindingResource::Sampler(&self.sampler), + }, + ], + label: Some("texture_bind_group"), + }); + + self.texture = Some(texture); + self.bind_group = Some(bind_group); + } + + pub(crate) fn render(&mut self) -> Result<(), wgpu::SurfaceError> { + let output = self.surface.get_current_texture()?; + let view = output.texture.create_view(&wgpu::TextureViewDescriptor::default()); + + let mut encoder = self.device.create_command_encoder(&wgpu::CommandEncoderDescriptor { label: Some("Render Encoder") }); + + { + let mut render_pass = encoder.begin_render_pass(&wgpu::RenderPassDescriptor { + label: Some("Render Pass"), + color_attachments: &[Some(wgpu::RenderPassColorAttachment { + view: &view, + resolve_target: None, + ops: wgpu::Operations { + load: wgpu::LoadOp::Clear(wgpu::Color { r: 0.01, g: 0.01, b: 0.01, a: 1.0 }), + store: wgpu::StoreOp::Store, + }, + })], + depth_stencil_attachment: None, + occlusion_query_set: None, + timestamp_writes: None, + }); + + render_pass.set_pipeline(&self.render_pipeline); + if let Some(bind_group) = &self.bind_group { + render_pass.set_bind_group(0, bind_group, &[]); + render_pass.draw(0..6, 0..1); // Draw 3 vertices for fullscreen triangle + } else { + println!("No bind group available - showing clear color only"); + } + } + self.queue.submit(std::iter::once(encoder.finish())); + output.present(); + + Ok(()) + } +} diff --git a/node-graph/graph-craft/src/wasm_application_io.rs b/node-graph/graph-craft/src/wasm_application_io.rs index 1d11744aa4..732135b4c8 100644 --- a/node-graph/graph-craft/src/wasm_application_io.rs +++ b/node-graph/graph-craft/src/wasm_application_io.rs @@ -217,26 +217,30 @@ impl ApplicationIo for WasmApplicationIo { } #[cfg(not(target_arch = "wasm32"))] fn create_window(&self) -> SurfaceHandle { - log::trace!("Spawning window"); - - #[cfg(all(not(test), target_os = "linux", feature = "wayland"))] - use winit::platform::wayland::EventLoopBuilderExtWayland; - - #[cfg(all(not(test), target_os = "linux", feature = "wayland"))] - let event_loop = winit::event_loop::EventLoopBuilder::new().with_any_thread(true).build().unwrap(); - #[cfg(not(all(not(test), target_os = "linux", feature = "wayland")))] - let event_loop = winit::event_loop::EventLoop::new().unwrap(); - - let window = winit::window::WindowBuilder::new() - .with_title("Graphite") - .with_inner_size(winit::dpi::PhysicalSize::new(800, 600)) - .build(&event_loop) - .unwrap(); - - SurfaceHandle { - window_id: SurfaceId(window.id().into()), - surface: Arc::new(window), - } + todo!("winit api changed, calling create_window on EventLoop is deprecated"); + + // log::trace!("Spawning window"); + + // #[cfg(all(not(test), target_os = "linux", feature = "wayland"))] + // use winit::platform::wayland::EventLoopBuilderExtWayland; + + // #[cfg(all(not(test), target_os = "linux", feature = "wayland"))] + // let event_loop = winit::event_loop::EventLoopBuilder::new().with_any_thread(true).build().unwrap(); + // #[cfg(not(all(not(test), target_os = "linux", feature = "wayland")))] + // let event_loop = winit::event_loop::EventLoop::new().unwrap(); + + // let window = event_loop + // .create_window( + // winit::window::WindowAttributes::default() + // .with_title("Graphite") + // .with_inner_size(winit::dpi::PhysicalSize::new(800, 600)), + // ) + // .unwrap(); + + // SurfaceHandle { + // window_id: SurfaceId(window.id().into()), + // surface: Arc::new(window), + // } } #[cfg(target_arch = "wasm32")] From 592ae0904ba07307e52b3faf0976bbd6d950da57 Mon Sep 17 00:00:00 2001 From: Dennis Kobert Date: Wed, 23 Jul 2025 15:37:44 +0200 Subject: [PATCH 04/12] Cleanup build setup --- .nix/flake.nix | 3 ++- desktop/Cargo.toml | 4 ++-- desktop/build.rs | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/.nix/flake.nix b/.nix/flake.nix index 4b5ae6df14..12192fd2b1 100644 --- a/.nix/flake.nix +++ b/.nix/flake.nix @@ -79,6 +79,7 @@ vulkan-loader mesa libraw + libGL ]; # Development tools that don't need to be in LD_LIBRARY_PATH @@ -115,7 +116,7 @@ devShells.default = pkgs.mkShell { packages = buildInputs ++ buildTools ++ devTools; - LD_LIBRARY_PATH = "${pkgs.lib.makeLibraryPath buildInputs}:/${libcefPath}"; + LD_LIBRARY_PATH = "${pkgs.lib.makeLibraryPath buildInputs}:${libcefPath}"; CEF_PATH = libcefPath; XDG_DATA_DIRS="${pkgs.gsettings-desktop-schemas}/share/gsettings-schemas/${pkgs.gsettings-desktop-schemas.name}:${pkgs.gtk3}/share/gsettings-schemas/${pkgs.gtk3.name}:$XDG_DATA_DIRS"; diff --git a/desktop/Cargo.toml b/desktop/Cargo.toml index 80a1479452..8ba956cd82 100644 --- a/desktop/Cargo.toml +++ b/desktop/Cargo.toml @@ -5,8 +5,8 @@ description = "Graphite Desktop" authors = ["Graphite Authors "] license = "Apache-2.0" repository = "" -edition = "2021" -rust-version = "1.79" +edition = "2024" +rust-version = "1.85" [features] default = ["gpu"] diff --git a/desktop/build.rs b/desktop/build.rs index 2dee070d59..6602dee825 100644 --- a/desktop/build.rs +++ b/desktop/build.rs @@ -6,5 +6,5 @@ fn main() { metadata(format!("{}/index.html", &frontend_dir)).expect("Failed to find index.html in frontend directory."); println!("cargo:rerun-if-changed=."); - println!("cargo:rerun-if-changed=../frontend"); + println!("cargo:rerun-if-changed=../frontend/dist"); } From 5730bb496f1e7ca43b5cc36fe4a725d9fdb060df Mon Sep 17 00:00:00 2001 From: Dennis Kobert Date: Wed, 23 Jul 2025 15:38:47 +0200 Subject: [PATCH 05/12] Use wait until and execute cef loop more frequently --- desktop/src/main.rs | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/desktop/src/main.rs b/desktop/src/main.rs index 5fd458cd95..8564683dbc 100644 --- a/desktop/src/main.rs +++ b/desktop/src/main.rs @@ -2,7 +2,7 @@ use std::fmt::Debug; use std::process::exit; use std::sync::{Arc, Mutex, MutexGuard, PoisonError}; use std::thread; -use std::time::Duration; +use std::time::{Duration, Instant}; use winit::application::ApplicationHandler; use winit::event::*; @@ -157,6 +157,14 @@ impl WinitApp { } impl ApplicationHandler for WinitApp { + fn about_to_wait(&mut self, event_loop: &ActiveEventLoop) { + event_loop.set_control_flow(ControlFlow::WaitUntil(Instant::now() + Duration::from_millis(2))); + } + + fn new_events(&mut self, _event_loop: &ActiveEventLoop, _cause: StartCause) { + self.cef_context.work(); + } + fn resumed(&mut self, event_loop: &ActiveEventLoop) { self.window_state .with(|s| match s { @@ -175,9 +183,11 @@ impl ApplicationHandler for WinitApp { self.window = Some(window.clone()); s.graphics_state = Some(graphics_state); - let _ = thread::spawn(move || loop { - thread::sleep(Duration::from_millis(100)); - window.request_redraw(); + let _ = thread::spawn(move || { + loop { + thread::sleep(Duration::from_millis(100)); + window.request_redraw(); + } }); println!("Winit window created and ready"); @@ -299,7 +309,7 @@ fn main() { .unwrap(); let event_loop = EventLoop::::with_user_event().build().unwrap(); - event_loop.set_control_flow(ControlFlow::Wait); + event_loop.set_control_flow(ControlFlow::WaitUntil(Instant::now() + Duration::from_millis(2))); window_state.with(|s| s.event_loop_proxy = Some(event_loop.create_proxy())).unwrap(); From d3bd121a08da15acc46b3806296693ba8b947ed1 Mon Sep 17 00:00:00 2001 From: Dennis Kobert Date: Wed, 23 Jul 2025 15:48:00 +0200 Subject: [PATCH 06/12] Remove custom do browser work event --- desktop/src/main.rs | 52 ++++++++++++--------------------------------- 1 file changed, 13 insertions(+), 39 deletions(-) diff --git a/desktop/src/main.rs b/desktop/src/main.rs index 8564683dbc..48ef95b4ab 100644 --- a/desktop/src/main.rs +++ b/desktop/src/main.rs @@ -1,7 +1,6 @@ use std::fmt::Debug; use std::process::exit; use std::sync::{Arc, Mutex, MutexGuard, PoisonError}; -use std::thread; use std::time::{Duration, Instant}; use winit::application::ApplicationHandler; @@ -18,7 +17,6 @@ use render::{FrameBuffer, GraphicsState}; pub(crate) enum CustomEvent { UiUpdate, Resized, - DoBrowserWork, } pub(crate) struct WindowState { @@ -98,16 +96,16 @@ impl cef::EventHandler for CefEventHandler { let mut h = 1; self.window_state - .with(|s| match s { - WindowState { + .with(|s| { + if let WindowState { width: Some(width), height: Some(height), .. - } => { + } = s + { w = *width; h = *height; } - _ => {} }) .unwrap(); @@ -126,7 +124,6 @@ impl cef::EventHandler for CefEventHandler { .with(|s| { if let Some(event_loop_proxy) = &s.event_loop_proxy { let _ = event_loop_proxy.send_event(CustomEvent::UiUpdate); - let _ = event_loop_proxy.send_event(CustomEvent::DoBrowserWork); } if width != s.width.unwrap_or(1) || height != s.height.unwrap_or(1) { correct_size = false; @@ -159,6 +156,7 @@ impl WinitApp { impl ApplicationHandler for WinitApp { fn about_to_wait(&mut self, event_loop: &ActiveEventLoop) { event_loop.set_control_flow(ControlFlow::WaitUntil(Instant::now() + Duration::from_millis(2))); + self.cef_context.work(); } fn new_events(&mut self, _event_loop: &ActiveEventLoop, _cause: StartCause) { @@ -167,8 +165,8 @@ impl ApplicationHandler for WinitApp { fn resumed(&mut self, event_loop: &ActiveEventLoop) { self.window_state - .with(|s| match s { - WindowState { width: Some(w), height: Some(h), .. } => { + .with(|s| { + if let WindowState { width: Some(w), height: Some(h), .. } = s { let window = Arc::new( event_loop .create_window( @@ -183,25 +181,14 @@ impl ApplicationHandler for WinitApp { self.window = Some(window.clone()); s.graphics_state = Some(graphics_state); - let _ = thread::spawn(move || { - loop { - thread::sleep(Duration::from_millis(100)); - window.request_redraw(); - } - }); - println!("Winit window created and ready"); } - _ => {} }) .unwrap(); } fn user_event(&mut self, _: &ActiveEventLoop, event: CustomEvent) { match event { - CustomEvent::DoBrowserWork => { - self.cef_context.work(); - } CustomEvent::UiUpdate | CustomEvent::Resized => { if let Some(window) = &self.window { window.request_redraw(); @@ -228,9 +215,6 @@ impl ApplicationHandler for WinitApp { if let Some(elp) = &s.event_loop_proxy { let _ = elp.send_event(CustomEvent::Resized); } - if let Some(event_loop_proxy) = &s.event_loop_proxy { - let _ = event_loop_proxy.send_event(CustomEvent::DoBrowserWork); - } if let Some(graphics_state) = &mut s.graphics_state { graphics_state.resize(width, height); } @@ -242,23 +226,22 @@ impl ApplicationHandler for WinitApp { self.cef_context.work(); self.window_state - .with(|s| match s { - WindowState { + .with(|s| { + if let WindowState { width: Some(width), height: Some(height), graphics_state: Some(graphics_state), ui_fb, .. - } => { + } = s + { if let Some(fb) = &*ui_fb { graphics_state.update_texture(fb); if fb.width() != *width && fb.height() != *height { graphics_state.resize(*width, *height); } - } else { - if let Some(window) = &self.window { - window.request_redraw(); - } + } else if let Some(window) = &self.window { + window.request_redraw(); } match graphics_state.render() { @@ -272,20 +255,11 @@ impl ApplicationHandler for WinitApp { Err(e) => eprintln!("{:?}", e), } } - _ => {} }) .unwrap(); } _ => {} } - - self.window_state - .with(|s| { - if let Some(event_loop_proxy) = &s.event_loop_proxy { - let _ = event_loop_proxy.send_event(CustomEvent::DoBrowserWork); - } - }) - .unwrap(); } } From a8c61069fa44d6428e35463fd677723912a19f45 Mon Sep 17 00:00:00 2001 From: Dennis Kobert Date: Wed, 23 Jul 2025 16:12:19 +0200 Subject: [PATCH 07/12] Move WinitApp into its own module --- desktop/src/app.rs | 142 ++++++++++++++++++++++++++++++++++++ desktop/src/cef/context.rs | 45 +++++++----- desktop/src/main.rs | 143 +++---------------------------------- 3 files changed, 177 insertions(+), 153 deletions(-) create mode 100644 desktop/src/app.rs diff --git a/desktop/src/app.rs b/desktop/src/app.rs new file mode 100644 index 0000000000..af89993cc2 --- /dev/null +++ b/desktop/src/app.rs @@ -0,0 +1,142 @@ +use crate::CustomEvent; +use crate::WindowState; +use crate::WindowStateHandle; +use crate::render::GraphicsState; +use std::sync::Arc; +use std::time::Duration; +use std::time::Instant; +use winit::application::ApplicationHandler; +use winit::event::StartCause; +use winit::event::WindowEvent; +use winit::event_loop::ActiveEventLoop; +use winit::event_loop::ControlFlow; +use winit::window::Window; +use winit::window::WindowId; + +use crate::cef; + +pub(crate) struct WinitApp { + pub(crate) window_state: WindowStateHandle, + pub(crate) cef_context: cef::Context, + pub(crate) window: Option>, +} + +impl WinitApp { + pub(crate) fn new(window_state: WindowStateHandle, cef_context: cef::Context) -> Self { + Self { + window_state, + cef_context, + window: None, + } + } +} + +impl ApplicationHandler for WinitApp { + fn about_to_wait(&mut self, event_loop: &ActiveEventLoop) { + event_loop.set_control_flow(ControlFlow::WaitUntil(Instant::now() + Duration::from_millis(2))); + self.cef_context.work(); + } + + fn new_events(&mut self, _event_loop: &ActiveEventLoop, _cause: StartCause) { + self.cef_context.work(); + } + + fn resumed(&mut self, event_loop: &ActiveEventLoop) { + self.window_state + .with(|s| { + if let WindowState { width: Some(w), height: Some(h), .. } = s { + let window = Arc::new( + event_loop + .create_window( + Window::default_attributes() + .with_title("CEF Offscreen Rendering") + .with_inner_size(winit::dpi::LogicalSize::new(*w as u32, *h as u32)), + ) + .unwrap(), + ); + let graphics_state = pollster::block_on(GraphicsState::new(window.clone())); + + self.window = Some(window.clone()); + s.graphics_state = Some(graphics_state); + + println!("Winit window created and ready"); + } + }) + .unwrap(); + } + + fn user_event(&mut self, _: &ActiveEventLoop, event: CustomEvent) { + match event { + CustomEvent::UiUpdate | CustomEvent::Resized => { + if let Some(window) = &self.window { + window.request_redraw(); + } + } + } + } + + fn window_event(&mut self, event_loop: &ActiveEventLoop, _window_id: WindowId, event: WindowEvent) { + self.cef_context.handle_window_event(&event); + + match event { + WindowEvent::CloseRequested => { + println!("The close button was pressed; stopping"); + event_loop.exit(); + } + WindowEvent::Resized(physical_size) => { + self.window_state + .with(|s| { + let width = physical_size.width as usize; + let height = physical_size.height as usize; + s.width = Some(width); + s.height = Some(height); + if let Some(elp) = &s.event_loop_proxy { + let _ = elp.send_event(CustomEvent::Resized); + } + if let Some(graphics_state) = &mut s.graphics_state { + graphics_state.resize(width, height); + } + }) + .unwrap(); + } + + WindowEvent::RedrawRequested => { + self.cef_context.work(); + + self.window_state + .with(|s| { + if let WindowState { + width: Some(width), + height: Some(height), + graphics_state: Some(graphics_state), + ui_fb, + .. + } = s + { + if let Some(fb) = &*ui_fb { + graphics_state.update_texture(fb); + if fb.width() != *width && fb.height() != *height { + graphics_state.resize(*width, *height); + } + } else if let Some(window) = &self.window { + window.request_redraw(); + } + + match graphics_state.render() { + Ok(_) => {} + Err(wgpu::SurfaceError::Lost) => { + graphics_state.resize(*width, *height); + } + Err(wgpu::SurfaceError::OutOfMemory) => { + event_loop.exit(); + } + Err(e) => eprintln!("{:?}", e), + } + } + }) + .unwrap(); + } + _ => {} + } + } +} diff --git a/desktop/src/cef/context.rs b/desktop/src/cef/context.rs index 42c80719c8..c6cbddb15f 100644 --- a/desktop/src/cef/context.rs +++ b/desktop/src/cef/context.rs @@ -1,11 +1,11 @@ use cef::sys::CEF_API_VERSION_LAST; -use cef::{api_hash, args::Args, execute_process, Browser, CefString, Settings}; -use cef::{browser_host_create_browser_sync, initialize, BrowserSettings, DictionaryValue, ImplCommandLine, RequestContext, WindowInfo}; +use cef::{Browser, CefString, Settings, api_hash, args::Args, execute_process}; +use cef::{BrowserSettings, DictionaryValue, ImplCommandLine, RequestContext, WindowInfo, browser_host_create_browser_sync, initialize}; use thiserror::Error; use winit::event::WindowEvent; -use super::input::{handle_window_event, InputState}; use super::EventHandler; +use super::input::{InputState, handle_window_event}; use super::internal::{AppImpl, ClientImpl, NonBrowserAppImpl, RenderHandlerImpl}; @@ -21,6 +21,13 @@ pub(crate) struct Context { pub(crate) input_state: InputState, marker: std::marker::PhantomData, } +impl Drop for Context { + fn drop(&mut self) { + if self.browser.is_some() { + cef::shutdown(); + } + } +} impl Context { pub(crate) fn new() -> Result, SetupError> { @@ -56,10 +63,12 @@ impl Context { } pub(crate) fn init(self, event_handler: impl EventHandler) -> Result, InitError> { - let mut settings = Settings::default(); - settings.windowless_rendering_enabled = 1; - settings.multi_threaded_message_loop = 0; - settings.external_message_pump = 1; + let settings = Settings { + windowless_rendering_enabled: 1, + multi_threaded_message_loop: 0, + external_message_pump: 1, + ..Default::default() + }; let mut cef_app = AppImpl::new(event_handler.clone()); @@ -73,12 +82,16 @@ impl Context { let url = CefString::from("graphite://frontend/"); - let mut window_info = WindowInfo::default(); - window_info.windowless_rendering_enabled = 1; + let window_info = WindowInfo { + windowless_rendering_enabled: 1, + ..Default::default() + }; - let mut settings = BrowserSettings::default(); - settings.windowless_frame_rate = 60; - settings.background_color = 0x0; + let settings = BrowserSettings { + windowless_frame_rate: 60, + background_color: 0x0, + ..Default::default() + }; let browser = browser_host_create_browser_sync( Some(&window_info), @@ -90,9 +103,9 @@ impl Context { ); Ok(Context { - args: self.args, + args: self.args.clone(), browser, - input_state: self.input_state, + input_state: self.input_state.clone(), marker: std::marker::PhantomData::, }) } @@ -106,10 +119,6 @@ impl Context { pub(crate) fn handle_window_event(&mut self, event: &WindowEvent) { handle_window_event(self, event); } - - pub(crate) fn shutdown(self) { - cef::shutdown(); - } } #[derive(Error, Debug)] diff --git a/desktop/src/main.rs b/desktop/src/main.rs index 48ef95b4ab..a7c0517973 100644 --- a/desktop/src/main.rs +++ b/desktop/src/main.rs @@ -1,12 +1,8 @@ use std::fmt::Debug; use std::process::exit; use std::sync::{Arc, Mutex, MutexGuard, PoisonError}; -use std::time::{Duration, Instant}; -use winit::application::ApplicationHandler; -use winit::event::*; -use winit::event_loop::{ActiveEventLoop, ControlFlow, EventLoop, EventLoopProxy}; -use winit::window::{Window, WindowId}; +use winit::event_loop::{EventLoop, EventLoopProxy}; mod cef; use cef::Setup; @@ -14,6 +10,9 @@ use cef::Setup; mod render; use render::{FrameBuffer, GraphicsState}; +mod app; +use app::WinitApp; + pub(crate) enum CustomEvent { UiUpdate, Resized, @@ -67,7 +66,10 @@ impl WindowStateHandle { P: FnOnce(&mut WindowState), { match self.inner.lock() { - Ok(mut guard) => Ok(p(&mut guard)), + Ok(mut guard) => { + p(&mut guard); + Ok(()) + } Err(_) => todo!("not error handling yet"), } } @@ -137,132 +139,6 @@ impl cef::EventHandler for CefEventHandler { } } -struct WinitApp { - window_state: WindowStateHandle, - cef_context: cef::Context, - window: Option>, -} - -impl WinitApp { - fn new(window_state: WindowStateHandle, cef_context: cef::Context) -> Self { - Self { - window_state, - cef_context, - window: None, - } - } -} - -impl ApplicationHandler for WinitApp { - fn about_to_wait(&mut self, event_loop: &ActiveEventLoop) { - event_loop.set_control_flow(ControlFlow::WaitUntil(Instant::now() + Duration::from_millis(2))); - self.cef_context.work(); - } - - fn new_events(&mut self, _event_loop: &ActiveEventLoop, _cause: StartCause) { - self.cef_context.work(); - } - - fn resumed(&mut self, event_loop: &ActiveEventLoop) { - self.window_state - .with(|s| { - if let WindowState { width: Some(w), height: Some(h), .. } = s { - let window = Arc::new( - event_loop - .create_window( - Window::default_attributes() - .with_title("CEF Offscreen Rendering") - .with_inner_size(winit::dpi::LogicalSize::new(*w as u32, *h as u32)), - ) - .unwrap(), - ); - let graphics_state = pollster::block_on(GraphicsState::new(window.clone())); - - self.window = Some(window.clone()); - s.graphics_state = Some(graphics_state); - - println!("Winit window created and ready"); - } - }) - .unwrap(); - } - - fn user_event(&mut self, _: &ActiveEventLoop, event: CustomEvent) { - match event { - CustomEvent::UiUpdate | CustomEvent::Resized => { - if let Some(window) = &self.window { - window.request_redraw(); - } - } - } - } - - fn window_event(&mut self, event_loop: &ActiveEventLoop, _window_id: WindowId, event: WindowEvent) { - self.cef_context.handle_window_event(&event); - - match event { - WindowEvent::CloseRequested => { - println!("The close button was pressed; stopping"); - event_loop.exit(); - } - WindowEvent::Resized(physical_size) => { - self.window_state - .with(|s| { - let width = physical_size.width as usize; - let height = physical_size.height as usize; - s.width = Some(width); - s.height = Some(height); - if let Some(elp) = &s.event_loop_proxy { - let _ = elp.send_event(CustomEvent::Resized); - } - if let Some(graphics_state) = &mut s.graphics_state { - graphics_state.resize(width, height); - } - }) - .unwrap(); - } - - WindowEvent::RedrawRequested => { - self.cef_context.work(); - - self.window_state - .with(|s| { - if let WindowState { - width: Some(width), - height: Some(height), - graphics_state: Some(graphics_state), - ui_fb, - .. - } = s - { - if let Some(fb) = &*ui_fb { - graphics_state.update_texture(fb); - if fb.width() != *width && fb.height() != *height { - graphics_state.resize(*width, *height); - } - } else if let Some(window) = &self.window { - window.request_redraw(); - } - - match graphics_state.render() { - Ok(_) => {} - Err(wgpu::SurfaceError::Lost) => { - graphics_state.resize(*width, *height); - } - Err(wgpu::SurfaceError::OutOfMemory) => { - event_loop.exit(); - } - Err(e) => eprintln!("{:?}", e), - } - } - }) - .unwrap(); - } - _ => {} - } - } -} - fn main() { let cef_context = match cef::Context::::new() { Ok(c) => c, @@ -283,7 +159,6 @@ fn main() { .unwrap(); let event_loop = EventLoop::::with_user_event().build().unwrap(); - event_loop.set_control_flow(ControlFlow::WaitUntil(Instant::now() + Duration::from_millis(2))); window_state.with(|s| s.event_loop_proxy = Some(event_loop.create_proxy())).unwrap(); @@ -300,6 +175,4 @@ fn main() { let mut winit_app = WinitApp::new(window_state, cef_context); event_loop.run_app(&mut winit_app).unwrap(); - - winit_app.cef_context.shutdown(); } From cbfcd961f47540fcfc54651acaa0f1f4b0214a8d Mon Sep 17 00:00:00 2001 From: Dennis Kobert Date: Wed, 23 Jul 2025 17:11:28 +0200 Subject: [PATCH 08/12] Cleanup event handling --- desktop/src/app.rs | 3 +- desktop/src/cef/context.rs | 18 ++++--- desktop/src/cef/input/mod.rs | 52 +++++++++---------- desktop/src/cef/internal/app.rs | 14 ++--- .../cef/internal/browser_process_handler.rs | 14 ++--- desktop/src/cef/internal/render_handler.rs | 29 ++++++----- desktop/src/cef/mod.rs | 12 +++-- desktop/src/main.rs | 24 ++++----- 8 files changed, 85 insertions(+), 81 deletions(-) diff --git a/desktop/src/app.rs b/desktop/src/app.rs index af89993cc2..d66fe5e427 100644 --- a/desktop/src/app.rs +++ b/desktop/src/app.rs @@ -76,7 +76,7 @@ impl ApplicationHandler for WinitApp { } fn window_event(&mut self, event_loop: &ActiveEventLoop, _window_id: WindowId, event: WindowEvent) { - self.cef_context.handle_window_event(&event); + let Some(event) = self.cef_context.handle_window_event(event) else { return }; match event { WindowEvent::CloseRequested => { @@ -98,6 +98,7 @@ impl ApplicationHandler for WinitApp { } }) .unwrap(); + self.cef_context.notify_of_resize(); } WindowEvent::RedrawRequested => { diff --git a/desktop/src/cef/context.rs b/desktop/src/cef/context.rs index c6cbddb15f..87c80dc17c 100644 --- a/desktop/src/cef/context.rs +++ b/desktop/src/cef/context.rs @@ -1,10 +1,10 @@ use cef::sys::CEF_API_VERSION_LAST; use cef::{Browser, CefString, Settings, api_hash, args::Args, execute_process}; -use cef::{BrowserSettings, DictionaryValue, ImplCommandLine, RequestContext, WindowInfo, browser_host_create_browser_sync, initialize}; +use cef::{BrowserSettings, DictionaryValue, ImplBrowser, ImplBrowserHost, ImplCommandLine, RenderHandler, RequestContext, WindowInfo, browser_host_create_browser_sync, initialize}; use thiserror::Error; use winit::event::WindowEvent; -use super::EventHandler; +use super::CefEventHandler; use super::input::{InputState, handle_window_event}; use super::internal::{AppImpl, ClientImpl, NonBrowserAppImpl, RenderHandlerImpl}; @@ -62,7 +62,7 @@ impl Context { }) } - pub(crate) fn init(self, event_handler: impl EventHandler) -> Result, InitError> { + pub(crate) fn init(self, event_handler: impl CefEventHandler) -> Result, InitError> { let settings = Settings { windowless_rendering_enabled: 1, multi_threaded_message_loop: 0, @@ -78,7 +78,7 @@ impl Context { } let render_handler = RenderHandlerImpl::new(event_handler.clone()); - let mut client = ClientImpl::new(render_handler); + let mut client = ClientImpl::new(RenderHandler::new(render_handler)); let url = CefString::from("graphite://frontend/"); @@ -116,8 +116,14 @@ impl Context { cef::do_message_loop_work(); } - pub(crate) fn handle_window_event(&mut self, event: &WindowEvent) { - handle_window_event(self, event); + pub(crate) fn handle_window_event(&mut self, event: WindowEvent) -> Option { + handle_window_event(self, event) + } + + pub(crate) fn notify_of_resize(&self) { + if let Some(browser) = &self.browser { + browser.host().unwrap().was_resized(); + } } } diff --git a/desktop/src/cef/input/mod.rs b/desktop/src/cef/input/mod.rs index d8f26c6c28..103838a188 100644 --- a/desktop/src/cef/input/mod.rs +++ b/desktop/src/cef/input/mod.rs @@ -8,20 +8,15 @@ use super::context::{Context, Initialized}; mod keymap; use keymap::{ToDomBits, ToVKBits}; -pub(crate) fn handle_window_event(context: &mut Context, event: &WindowEvent) { +pub(crate) fn handle_window_event(context: &mut Context, event: WindowEvent) -> Option { match event { - WindowEvent::Resized(_) => { - if let Some(browser) = &context.browser { - browser.host().unwrap().was_resized(); - } - } WindowEvent::CursorMoved { position, .. } => { if let Some(browser) = &context.browser { if let Some(host) = browser.host() { host.set_focus(1); } - context.input_state.update_mouse_position(position); + context.input_state.update_mouse_position(&position); let mouse_event: MouseEvent = (&context.input_state).into(); browser.host().unwrap().send_mouse_move_event(Some(&mouse_event), 0); } @@ -89,7 +84,7 @@ pub(crate) fn handle_window_event(context: &mut Context, event: &Wi let line_width = 40; //feels about right, TODO: replace with correct value let line_height = 30; //feels about right, TODO: replace with correct value let (delta_x, delta_y) = match delta { - MouseScrollDelta::LineDelta(x, y) => (*x * line_width as f32, *y * line_height as f32), + MouseScrollDelta::LineDelta(x, y) => (x * line_width as f32, y * line_height as f32), MouseScrollDelta::PixelDelta(physical_position) => (physical_position.x as f32, physical_position.y as f32), }; host.send_mouse_wheel_event(Some(&mouse_event), delta_x as i32, delta_y as i32); @@ -117,14 +112,16 @@ pub(crate) fn handle_window_event(context: &mut Context, event: &Wi let char = str.chars().next().unwrap_or('\0'); (None, Some(char)) } - _ => return, + _ => return None, }; - let mut key_event = KeyEvent::default(); - key_event.size = std::mem::size_of::(); - key_event.focus_on_editable_field = 1; - key_event.modifiers = context.input_state.cef_modifiers(&event.location, event.repeat).raw(); - key_event.is_system_key = 0; + let mut key_event = KeyEvent { + size: size_of::(), + focus_on_editable_field: 1, + modifiers: context.input_state.cef_modifiers(&event.location, event.repeat).raw(), + is_system_key: 0, + ..Default::default() + }; if let Some(named_key) = named_key { key_event.native_key_code = named_key.to_dom_bits(); @@ -142,10 +139,10 @@ pub(crate) fn handle_window_event(context: &mut Context, event: &Wi if let Some(char) = character { let mut buf = [0; 2]; char.encode_utf16(&mut buf); - key_event.character = buf[0] as u16; + key_event.character = buf[0]; let mut buf = [0; 2]; char.to_lowercase().next().unwrap().encode_utf16(&mut buf); - key_event.unmodified_character = buf[0] as u16; + key_event.unmodified_character = buf[0]; key_event.type_ = KeyEventType::from(cef_key_event_type_t::KEYEVENT_CHAR); host.send_key_event(Some(&key_event)); @@ -159,8 +156,9 @@ pub(crate) fn handle_window_event(context: &mut Context, event: &Wi } } } - _ => {} + e => return Some(e), } + None } #[derive(Default, Clone)] @@ -194,7 +192,7 @@ pub(crate) struct InputState { impl InputState { fn update_modifiers(&mut self, modifiers: &winit::keyboard::ModifiersState) { - self.modifiers = modifiers.clone(); + self.modifiers = *modifiers; } fn update_mouse_position(&mut self, position: &PhysicalPosition) { @@ -206,7 +204,7 @@ impl InputState { } fn cef_modifiers(&self, location: &winit::keyboard::KeyLocation, is_repeat: bool) -> CefModifiers { - CefModifiers::new(&self, location, is_repeat) + CefModifiers::new(self, location, is_repeat) } fn cef_modifiers_mouse_event(&self) -> CefModifiers { @@ -214,18 +212,18 @@ impl InputState { } } -impl Into for InputState { - fn into(self) -> CefModifiers { - CefModifiers::new(&self, &winit::keyboard::KeyLocation::Standard, false) +impl From for CefModifiers { + fn from(val: InputState) -> Self { + CefModifiers::new(&val, &winit::keyboard::KeyLocation::Standard, false) } } -impl Into for &InputState { - fn into(self) -> MouseEvent { +impl From<&InputState> for MouseEvent { + fn from(val: &InputState) -> Self { MouseEvent { - x: self.mouse_position.x as i32, - y: self.mouse_position.y as i32, - modifiers: self.cef_modifiers_mouse_event().raw(), + x: val.mouse_position.x as i32, + y: val.mouse_position.y as i32, + modifiers: val.cef_modifiers_mouse_event().raw(), } } } diff --git a/desktop/src/cef/internal/app.rs b/desktop/src/cef/internal/app.rs index 2cfb7818de..594eb6b169 100644 --- a/desktop/src/cef/internal/app.rs +++ b/desktop/src/cef/internal/app.rs @@ -2,16 +2,16 @@ use cef::rc::{Rc, RcImpl}; use cef::sys::{_cef_app_t, cef_base_ref_counted_t}; use cef::{App, BrowserProcessHandler, ImplApp, SchemeRegistrar, WrapApp}; +use crate::cef::CefEventHandler; use crate::cef::scheme_handler::GraphiteSchemeHandlerFactory; -use crate::cef::EventHandler; use super::browser_process_handler::BrowserProcessHandlerImpl; -pub(crate) struct AppImpl { +pub(crate) struct AppImpl { object: *mut RcImpl<_cef_app_t, Self>, event_handler: H, } -impl AppImpl { +impl AppImpl { pub(crate) fn new(event_handler: H) -> App { App::new(Self { object: std::ptr::null_mut(), @@ -20,7 +20,7 @@ impl AppImpl { } } -impl ImplApp for AppImpl { +impl ImplApp for AppImpl { fn browser_process_handler(&self) -> Option { Some(BrowserProcessHandlerImpl::new(self.event_handler.clone())) } @@ -34,7 +34,7 @@ impl ImplApp for AppImpl { } } -impl Clone for AppImpl { +impl Clone for AppImpl { fn clone(&self) -> Self { unsafe { let rc_impl = &mut *self.object; @@ -46,7 +46,7 @@ impl Clone for AppImpl { } } } -impl Rc for AppImpl { +impl Rc for AppImpl { fn as_base(&self) -> &cef_base_ref_counted_t { unsafe { let base = &*self.object; @@ -54,7 +54,7 @@ impl Rc for AppImpl { } } } -impl WrapApp for AppImpl { +impl WrapApp for AppImpl { fn wrap_rc(&mut self, object: *mut RcImpl<_cef_app_t, Self>) { self.object = object; } diff --git a/desktop/src/cef/internal/browser_process_handler.rs b/desktop/src/cef/internal/browser_process_handler.rs index 4f20d0028b..3973759e0e 100644 --- a/desktop/src/cef/internal/browser_process_handler.rs +++ b/desktop/src/cef/internal/browser_process_handler.rs @@ -2,14 +2,14 @@ use cef::rc::{Rc, RcImpl}; use cef::sys::{_cef_browser_process_handler_t, cef_base_ref_counted_t, cef_browser_process_handler_t}; use cef::{BrowserProcessHandler, CefString, ImplBrowserProcessHandler, SchemeHandlerFactory, WrapBrowserProcessHandler}; +use crate::cef::CefEventHandler; use crate::cef::scheme_handler::GraphiteSchemeHandlerFactory; -use crate::cef::EventHandler; -pub(crate) struct BrowserProcessHandlerImpl { +pub(crate) struct BrowserProcessHandlerImpl { object: *mut RcImpl, event_handler: H, } -impl BrowserProcessHandlerImpl { +impl BrowserProcessHandlerImpl { pub(crate) fn new(event_handler: H) -> BrowserProcessHandler { BrowserProcessHandler::new(Self { object: std::ptr::null_mut(), @@ -18,7 +18,7 @@ impl BrowserProcessHandlerImpl { } } -impl ImplBrowserProcessHandler for BrowserProcessHandlerImpl { +impl ImplBrowserProcessHandler for BrowserProcessHandlerImpl { fn on_context_initialized(&self) { cef::register_scheme_handler_factory(Some(&CefString::from("graphite")), None, Some(&mut SchemeHandlerFactory::new(GraphiteSchemeHandlerFactory::new()))); } @@ -28,7 +28,7 @@ impl ImplBrowserProcessHandler for BrowserProcessHandlerImpl } } -impl Clone for BrowserProcessHandlerImpl { +impl Clone for BrowserProcessHandlerImpl { fn clone(&self) -> Self { unsafe { let rc_impl = &mut *self.object; @@ -40,7 +40,7 @@ impl Clone for BrowserProcessHandlerImpl { } } } -impl Rc for BrowserProcessHandlerImpl { +impl Rc for BrowserProcessHandlerImpl { fn as_base(&self) -> &cef_base_ref_counted_t { unsafe { let base = &*self.object; @@ -48,7 +48,7 @@ impl Rc for BrowserProcessHandlerImpl { } } } -impl WrapBrowserProcessHandler for BrowserProcessHandlerImpl { +impl WrapBrowserProcessHandler for BrowserProcessHandlerImpl { fn wrap_rc(&mut self, object: *mut RcImpl<_cef_browser_process_handler_t, Self>) { self.object = object; } diff --git a/desktop/src/cef/internal/render_handler.rs b/desktop/src/cef/internal/render_handler.rs index 6e6c684402..cc4394daf7 100644 --- a/desktop/src/cef/internal/render_handler.rs +++ b/desktop/src/cef/internal/render_handler.rs @@ -1,25 +1,26 @@ use cef::rc::{Rc, RcImpl}; use cef::sys::{_cef_render_handler_t, cef_base_ref_counted_t}; -use cef::{Browser, ImplBrowser, ImplBrowserHost, ImplRenderHandler, PaintElementType, Rect, RenderHandler, WrapRenderHandler}; +use cef::{Browser, ImplBrowser, ImplBrowserHost, ImplRenderHandler, PaintElementType, Rect, WrapRenderHandler}; -use crate::cef::EventHandler; +use crate::FrameBuffer; +use crate::cef::CefEventHandler; -pub(crate) struct RenderHandlerImpl { +pub(crate) struct RenderHandlerImpl { object: *mut RcImpl<_cef_render_handler_t, Self>, event_handler: H, } -impl RenderHandlerImpl { - pub(crate) fn new(event_handler: H) -> RenderHandler { - RenderHandler::new(Self { +impl RenderHandlerImpl { + pub(crate) fn new(event_handler: H) -> Self { + Self { object: std::ptr::null_mut(), event_handler, - }) + } } } -impl ImplRenderHandler for RenderHandlerImpl { +impl ImplRenderHandler for RenderHandlerImpl { fn view_rect(&self, _browser: Option<&mut Browser>, rect: Option<&mut Rect>) { if let Some(rect) = rect { - let view = self.event_handler.view(); + let view = self.event_handler.window_size(); *rect = Rect { x: 0, y: 0, @@ -41,7 +42,9 @@ impl ImplRenderHandler for RenderHandlerImpl { ) { let buffer_size = (width * height * 4) as usize; let buffer_slice = unsafe { std::slice::from_raw_parts(buffer, buffer_size) }; - let draw_successful = self.event_handler.draw(buffer_slice.to_vec(), width as usize, height as usize); + let frame_buffer = FrameBuffer::new(buffer_slice.to_vec(), width as usize, height as usize).expect("Failed to create frame buffer"); + + let draw_successful = self.event_handler.draw(frame_buffer); if !draw_successful { if let Some(browser) = browser { browser.host().unwrap().was_resized(); @@ -54,7 +57,7 @@ impl ImplRenderHandler for RenderHandlerImpl { } } -impl Clone for RenderHandlerImpl { +impl Clone for RenderHandlerImpl { fn clone(&self) -> Self { unsafe { let rc_impl = &mut *self.object; @@ -66,7 +69,7 @@ impl Clone for RenderHandlerImpl { } } } -impl Rc for RenderHandlerImpl { +impl Rc for RenderHandlerImpl { fn as_base(&self) -> &cef_base_ref_counted_t { unsafe { let base = &*self.object; @@ -74,7 +77,7 @@ impl Rc for RenderHandlerImpl { } } } -impl WrapRenderHandler for RenderHandlerImpl { +impl WrapRenderHandler for RenderHandlerImpl { fn wrap_rc(&mut self, object: *mut RcImpl<_cef_render_handler_t, Self>) { self.object = object; } diff --git a/desktop/src/cef/mod.rs b/desktop/src/cef/mod.rs index f0300a4095..a314de2d62 100644 --- a/desktop/src/cef/mod.rs +++ b/desktop/src/cef/mod.rs @@ -6,21 +6,23 @@ mod context; mod internal; -pub(crate) trait EventHandler: Clone { - fn view(&self) -> View; - fn draw(&self, buffer: Vec, width: usize, height: usize) -> bool; +pub(crate) trait CefEventHandler: Clone { + fn window_size(&self) -> WindowSize; + fn draw(&self, frame_buffer: FrameBuffer) -> bool; } #[derive(Clone)] -pub(crate) struct View { +pub(crate) struct WindowSize { pub(crate) width: usize, pub(crate) height: usize, } -impl View { +impl WindowSize { pub(crate) fn new(width: usize, height: usize) -> Self { Self { width, height } } } pub(crate) use context::{Context, InitError, Initialized, Setup, SetupError}; + +use crate::FrameBuffer; diff --git a/desktop/src/main.rs b/desktop/src/main.rs index a7c0517973..70fdc8d005 100644 --- a/desktop/src/main.rs +++ b/desktop/src/main.rs @@ -82,18 +82,18 @@ impl Clone for WindowStateHandle { } #[derive(Clone)] -struct CefEventHandler { +struct CefHandler { window_state: WindowStateHandle, } -impl CefEventHandler { +impl CefHandler { fn new(window_state: WindowStateHandle) -> Self { Self { window_state } } } -impl cef::EventHandler for CefEventHandler { - fn view(&self) -> cef::View { +impl cef::CefEventHandler for CefHandler { + fn window_size(&self) -> cef::WindowSize { let mut w = 1; let mut h = 1; @@ -111,26 +111,20 @@ impl cef::EventHandler for CefEventHandler { }) .unwrap(); - cef::View::new(w, h) + cef::WindowSize::new(w, h) } - fn draw(&self, buffer: Vec, width: usize, height: usize) -> bool { - let fb = FrameBuffer::new(buffer, width, height) - .map_err(|e| { - panic!("Failed to create FrameBuffer: {}", e); - }) - .unwrap(); - + fn draw(&self, frame_buffer: FrameBuffer) -> bool { let mut correct_size = true; self.window_state .with(|s| { if let Some(event_loop_proxy) = &s.event_loop_proxy { let _ = event_loop_proxy.send_event(CustomEvent::UiUpdate); } - if width != s.width.unwrap_or(1) || height != s.height.unwrap_or(1) { + if frame_buffer.width() != s.width.unwrap_or(1) || frame_buffer.height() != s.height.unwrap_or(1) { correct_size = false; } else { - s.ui_fb = Some(fb); + s.ui_fb = Some(frame_buffer); } }) .unwrap(); @@ -162,7 +156,7 @@ fn main() { window_state.with(|s| s.event_loop_proxy = Some(event_loop.create_proxy())).unwrap(); - let cef_context = match cef_context.init(CefEventHandler::new(window_state.clone())) { + let cef_context = match cef_context.init(CefHandler::new(window_state.clone())) { Ok(c) => c, Err(cef::InitError::InitializationFailed) => { println!("Cef initialization failed"); From c3889e8718ea5b9a1cf7895dd8d5b074922375c4 Mon Sep 17 00:00:00 2001 From: Dennis Kobert Date: Wed, 23 Jul 2025 19:10:57 +0200 Subject: [PATCH 09/12] Cleanup + Scheudule cef message loop work --- desktop/src/app.rs | 19 +++++---- desktop/src/cef/context.rs | 42 ++++++++++--------- desktop/src/cef/input/keymap.rs | 2 + desktop/src/cef/internal/app.rs | 10 ++--- .../cef/internal/browser_process_handler.rs | 18 +++++--- desktop/src/cef/internal/client.rs | 8 ++-- desktop/src/cef/internal/non_browser_app.rs | 2 +- desktop/src/cef/mod.rs | 17 ++++---- desktop/src/cef/scheme_handler.rs | 29 ++++++------- desktop/src/main.rs | 15 ++++++- 10 files changed, 96 insertions(+), 66 deletions(-) diff --git a/desktop/src/app.rs b/desktop/src/app.rs index d66fe5e427..389bb2ed35 100644 --- a/desktop/src/app.rs +++ b/desktop/src/app.rs @@ -19,6 +19,7 @@ pub(crate) struct WinitApp { pub(crate) window_state: WindowStateHandle, pub(crate) cef_context: cef::Context, pub(crate) window: Option>, + cef_schedule: Instant, } impl WinitApp { @@ -27,18 +28,22 @@ impl WinitApp { window_state, cef_context, window: None, + cef_schedule: Instant::now(), } } } impl ApplicationHandler for WinitApp { fn about_to_wait(&mut self, event_loop: &ActiveEventLoop) { - event_loop.set_control_flow(ControlFlow::WaitUntil(Instant::now() + Duration::from_millis(2))); - self.cef_context.work(); + let timeout = Instant::now() + Duration::from_millis(10); + let wait_until = timeout.min(self.cef_schedule); + event_loop.set_control_flow(ControlFlow::WaitUntil(wait_until)); } fn new_events(&mut self, _event_loop: &ActiveEventLoop, _cause: StartCause) { - self.cef_context.work(); + if Instant::now() > self.cef_schedule { + self.cef_context.work(); + } } fn resumed(&mut self, event_loop: &ActiveEventLoop) { @@ -67,11 +72,14 @@ impl ApplicationHandler for WinitApp { fn user_event(&mut self, _: &ActiveEventLoop, event: CustomEvent) { match event { - CustomEvent::UiUpdate | CustomEvent::Resized => { + CustomEvent::UiUpdate => { if let Some(window) = &self.window { window.request_redraw(); } } + CustomEvent::ScheduleBrowserWork(instant) => { + self.cef_schedule = instant; + } } } @@ -90,9 +98,6 @@ impl ApplicationHandler for WinitApp { let height = physical_size.height as usize; s.width = Some(width); s.height = Some(height); - if let Some(elp) = &s.event_loop_proxy { - let _ = elp.send_event(CustomEvent::Resized); - } if let Some(graphics_state) = &mut s.graphics_state { graphics_state.resize(width, height); } diff --git a/desktop/src/cef/context.rs b/desktop/src/cef/context.rs index 87c80dc17c..a19172e189 100644 --- a/desktop/src/cef/context.rs +++ b/desktop/src/cef/context.rs @@ -1,11 +1,12 @@ use cef::sys::CEF_API_VERSION_LAST; +use cef::{App, BrowserSettings, Client, DictionaryValue, ImplBrowser, ImplBrowserHost, ImplCommandLine, RenderHandler, RequestContext, WindowInfo, browser_host_create_browser_sync, initialize}; use cef::{Browser, CefString, Settings, api_hash, args::Args, execute_process}; -use cef::{BrowserSettings, DictionaryValue, ImplBrowser, ImplBrowserHost, ImplCommandLine, RenderHandler, RequestContext, WindowInfo, browser_host_create_browser_sync, initialize}; use thiserror::Error; use winit::event::WindowEvent; -use super::CefEventHandler; -use super::input::{InputState, handle_window_event}; +use super::input::InputState; +use super::scheme_handler::{FRONTEND_DOMAIN, GRAPHITE_SCHEME}; +use super::{CefEventHandler, input}; use super::internal::{AppImpl, ClientImpl, NonBrowserAppImpl, RenderHandlerImpl}; @@ -21,13 +22,6 @@ pub(crate) struct Context { pub(crate) input_state: InputState, marker: std::marker::PhantomData, } -impl Drop for Context { - fn drop(&mut self) { - if self.browser.is_some() { - cef::shutdown(); - } - } -} impl Context { pub(crate) fn new() -> Result, SetupError> { @@ -38,15 +32,15 @@ impl Context { loader }; let _ = api_hash(CEF_API_VERSION_LAST, 0); + let args = Args::new(); let cmd = args.as_cmd_line().unwrap(); let switch = CefString::from("type"); - cmd.append_switch(Some(&CefString::from("disable-gpu"))); - cmd.append_switch(Some(&CefString::from("disable-gpu-compositing"))); let is_browser_process = cmd.has_switch(Some(&switch)) != 1; + if !is_browser_process { let process_type = CefString::from(&cmd.switch_value(Some(&switch))); - let mut app = NonBrowserAppImpl::new(); + let mut app = NonBrowserAppImpl::app(); let ret = execute_process(Some(args.as_main_args()), Some(&mut app), std::ptr::null_mut()); if ret >= 0 { return Err(SetupError::SubprocessFailed(process_type.to_string())); @@ -54,6 +48,7 @@ impl Context { return Err(SetupError::Subprocess); } } + Ok(Context { args, browser: None, @@ -70,17 +65,18 @@ impl Context { ..Default::default() }; - let mut cef_app = AppImpl::new(event_handler.clone()); + // Attention! Wrapping this in an extra App is necessary, otherwise the program still compiles but segfaults + let mut cef_app = App::new(AppImpl::new(event_handler.clone())); - let res = initialize(Some(self.args.as_main_args()), Some(&settings), Some(&mut cef_app), std::ptr::null_mut()); - if res != 1 { + let result = initialize(Some(self.args.as_main_args()), Some(&settings), Some(&mut cef_app), std::ptr::null_mut()); + if result != 1 { return Err(InitError::InitializationFailed); } let render_handler = RenderHandlerImpl::new(event_handler.clone()); - let mut client = ClientImpl::new(RenderHandler::new(render_handler)); + let mut client = Client::new(ClientImpl::new(RenderHandler::new(render_handler))); - let url = CefString::from("graphite://frontend/"); + let url = CefString::from(format!("{GRAPHITE_SCHEME}://{FRONTEND_DOMAIN}/").as_str()); let window_info = WindowInfo { windowless_rendering_enabled: 1, @@ -117,7 +113,7 @@ impl Context { } pub(crate) fn handle_window_event(&mut self, event: WindowEvent) -> Option { - handle_window_event(self, event) + input::handle_window_event(self, event) } pub(crate) fn notify_of_resize(&self) { @@ -127,6 +123,14 @@ impl Context { } } +impl Drop for Context { + fn drop(&mut self) { + if self.browser.is_some() { + cef::shutdown(); + } + } +} + #[derive(Error, Debug)] pub(crate) enum SetupError { #[error("this is the sub process should exit immediately")] diff --git a/desktop/src/cef/input/keymap.rs b/desktop/src/cef/input/keymap.rs index 34a19b325b..042b5c9f91 100644 --- a/desktop/src/cef/input/keymap.rs +++ b/desktop/src/cef/input/keymap.rs @@ -20,6 +20,7 @@ macro_rules! map { }; } +// Windows Virtual keyboard binary representation pub(crate) trait ToVKBits { fn to_vk_bits(&self) -> i32; } @@ -205,6 +206,7 @@ impl ToVKBits for char { } } +// Chromium dom key binary representation pub(crate) trait ToDomBits { fn to_dom_bits(&self) -> i32; } diff --git a/desktop/src/cef/internal/app.rs b/desktop/src/cef/internal/app.rs index 594eb6b169..effed9d492 100644 --- a/desktop/src/cef/internal/app.rs +++ b/desktop/src/cef/internal/app.rs @@ -1,6 +1,6 @@ use cef::rc::{Rc, RcImpl}; use cef::sys::{_cef_app_t, cef_base_ref_counted_t}; -use cef::{App, BrowserProcessHandler, ImplApp, SchemeRegistrar, WrapApp}; +use cef::{BrowserProcessHandler, ImplApp, SchemeRegistrar, WrapApp}; use crate::cef::CefEventHandler; use crate::cef::scheme_handler::GraphiteSchemeHandlerFactory; @@ -12,17 +12,17 @@ pub(crate) struct AppImpl { event_handler: H, } impl AppImpl { - pub(crate) fn new(event_handler: H) -> App { - App::new(Self { + pub(crate) fn new(event_handler: H) -> Self { + Self { object: std::ptr::null_mut(), event_handler, - }) + } } } impl ImplApp for AppImpl { fn browser_process_handler(&self) -> Option { - Some(BrowserProcessHandlerImpl::new(self.event_handler.clone())) + Some(BrowserProcessHandler::new(BrowserProcessHandlerImpl::new(self.event_handler.clone()))) } fn on_register_custom_schemes(&self, registrar: Option<&mut SchemeRegistrar>) { diff --git a/desktop/src/cef/internal/browser_process_handler.rs b/desktop/src/cef/internal/browser_process_handler.rs index 3973759e0e..553540ba3a 100644 --- a/desktop/src/cef/internal/browser_process_handler.rs +++ b/desktop/src/cef/internal/browser_process_handler.rs @@ -1,31 +1,37 @@ +use std::time::{Duration, Instant}; + use cef::rc::{Rc, RcImpl}; use cef::sys::{_cef_browser_process_handler_t, cef_base_ref_counted_t, cef_browser_process_handler_t}; -use cef::{BrowserProcessHandler, CefString, ImplBrowserProcessHandler, SchemeHandlerFactory, WrapBrowserProcessHandler}; +use cef::{CefString, ImplBrowserProcessHandler, SchemeHandlerFactory, WrapBrowserProcessHandler}; use crate::cef::CefEventHandler; -use crate::cef::scheme_handler::GraphiteSchemeHandlerFactory; +use crate::cef::scheme_handler::{GRAPHITE_SCHEME, GraphiteSchemeHandlerFactory}; pub(crate) struct BrowserProcessHandlerImpl { object: *mut RcImpl, event_handler: H, } impl BrowserProcessHandlerImpl { - pub(crate) fn new(event_handler: H) -> BrowserProcessHandler { - BrowserProcessHandler::new(Self { + pub(crate) fn new(event_handler: H) -> Self { + Self { object: std::ptr::null_mut(), event_handler, - }) + } } } impl ImplBrowserProcessHandler for BrowserProcessHandlerImpl { fn on_context_initialized(&self) { - cef::register_scheme_handler_factory(Some(&CefString::from("graphite")), None, Some(&mut SchemeHandlerFactory::new(GraphiteSchemeHandlerFactory::new()))); + cef::register_scheme_handler_factory(Some(&CefString::from(GRAPHITE_SCHEME)), None, Some(&mut SchemeHandlerFactory::new(GraphiteSchemeHandlerFactory::new()))); } fn get_raw(&self) -> *mut _cef_browser_process_handler_t { self.object.cast() } + + fn on_schedule_message_pump_work(&self, delay_ms: i64) { + self.event_handler.schedule_cef_message_loop_work(Instant::now() + Duration::from_millis(delay_ms as u64)); + } } impl Clone for BrowserProcessHandlerImpl { diff --git a/desktop/src/cef/internal/client.rs b/desktop/src/cef/internal/client.rs index 535dbdad21..543f9c590d 100644 --- a/desktop/src/cef/internal/client.rs +++ b/desktop/src/cef/internal/client.rs @@ -1,17 +1,17 @@ use cef::rc::{Rc, RcImpl}; use cef::sys::{_cef_client_t, cef_base_ref_counted_t}; -use cef::{Client, ImplClient, RenderHandler, WrapClient}; +use cef::{ImplClient, RenderHandler, WrapClient}; pub(crate) struct ClientImpl { object: *mut RcImpl<_cef_client_t, Self>, render_handler: RenderHandler, } impl ClientImpl { - pub(crate) fn new(render_handler: RenderHandler) -> Client { - Client::new(Self { + pub(crate) fn new(render_handler: RenderHandler) -> Self { + Self { object: std::ptr::null_mut(), render_handler, - }) + } } } diff --git a/desktop/src/cef/internal/non_browser_app.rs b/desktop/src/cef/internal/non_browser_app.rs index 66d4957af0..04007d729d 100644 --- a/desktop/src/cef/internal/non_browser_app.rs +++ b/desktop/src/cef/internal/non_browser_app.rs @@ -8,7 +8,7 @@ pub(crate) struct NonBrowserAppImpl { object: *mut RcImpl<_cef_app_t, Self>, } impl NonBrowserAppImpl { - pub(crate) fn new() -> App { + pub(crate) fn app() -> App { App::new(Self { object: std::ptr::null_mut() }) } } diff --git a/desktop/src/cef/mod.rs b/desktop/src/cef/mod.rs index a314de2d62..eaa2170354 100644 --- a/desktop/src/cef/mod.rs +++ b/desktop/src/cef/mod.rs @@ -1,14 +1,19 @@ -mod input; - -mod scheme_handler; +use crate::FrameBuffer; +use std::time::Instant; mod context; - +mod input; mod internal; +mod scheme_handler; + +pub(crate) use context::{Context, InitError, Initialized, Setup, SetupError}; pub(crate) trait CefEventHandler: Clone { fn window_size(&self) -> WindowSize; fn draw(&self, frame_buffer: FrameBuffer) -> bool; + /// Scheudule the main event loop to run the cef event loop after the timeout + /// [`_cef_browser_process_handler_t::on_schedule_message_pump_work`] for more documentation. + fn schedule_cef_message_loop_work(&self, scheduled_time: Instant); } #[derive(Clone)] @@ -22,7 +27,3 @@ impl WindowSize { Self { width, height } } } - -pub(crate) use context::{Context, InitError, Initialized, Setup, SetupError}; - -use crate::FrameBuffer; diff --git a/desktop/src/cef/scheme_handler.rs b/desktop/src/cef/scheme_handler.rs index 1991e9cb17..0cbb8bb541 100644 --- a/desktop/src/cef/scheme_handler.rs +++ b/desktop/src/cef/scheme_handler.rs @@ -1,5 +1,6 @@ use std::cell::RefCell; use std::ffi::c_int; +use std::ops::DerefMut; use std::slice::Iter; use cef::rc::{Rc, RcImpl}; @@ -8,7 +9,10 @@ use cef::{ Browser, Callback, CefString, Frame, ImplRequest, ImplResourceHandler, ImplResponse, ImplSchemeHandlerFactory, ImplSchemeRegistrar, Request, ResourceHandler, ResourceReadCallback, Response, SchemeRegistrar, WrapResourceHandler, WrapSchemeHandlerFactory, }; -use include_dir::{include_dir, Dir}; +use include_dir::{Dir, include_dir}; + +pub(crate) const GRAPHITE_SCHEME: &str = "graphite-static"; +pub(crate) const FRONTEND_DOMAIN: &str = "frontend"; pub(crate) struct GraphiteSchemeHandlerFactory { object: *mut RcImpl<_cef_scheme_handler_factory_t, Self>, @@ -25,24 +29,24 @@ impl GraphiteSchemeHandlerFactory { scheme_options |= cef_scheme_options_t::CEF_SCHEME_OPTION_FETCH_ENABLED as i32; scheme_options |= cef_scheme_options_t::CEF_SCHEME_OPTION_SECURE as i32; scheme_options |= cef_scheme_options_t::CEF_SCHEME_OPTION_CORS_ENABLED as i32; - registrar.add_custom_scheme(Some(&CefString::from("graphite")), scheme_options); + registrar.add_custom_scheme(Some(&CefString::from(GRAPHITE_SCHEME)), scheme_options); } } } impl ImplSchemeHandlerFactory for GraphiteSchemeHandlerFactory { fn create(&self, _browser: Option<&mut Browser>, _frame: Option<&mut Frame>, scheme_name: Option<&CefString>, request: Option<&mut Request>) -> Option { if let Some(scheme_name) = scheme_name { - if scheme_name.to_string() != "graphite" { + if scheme_name.to_string() != GRAPHITE_SCHEME { return None; } if let Some(request) = request { let url = CefString::from(&request.url()).to_string(); - let path = url.strip_prefix("graphite://").unwrap(); + let path = url.strip_prefix(&format!("{GRAPHITE_SCHEME}://")).unwrap(); let domain = path.split('/').next().unwrap_or(""); let path = path.strip_prefix(domain).unwrap_or(""); let path = path.trim_start_matches('/'); return match domain { - "frontend" => { + FRONTEND_DOMAIN => { if path.is_empty() { Some(ResourceHandler::new(GraphiteFrontendResourceHandler::new("index.html"))) } else { @@ -74,7 +78,7 @@ impl<'a> GraphiteFrontendResourceHandler<'a> { let data = if let Some(file) = file { Some(RefCell::new(file.contents().iter())) } else { - println!("Failed to find asset at path: {}", path); + tracing::error!("Failed to find asset at path: {}", path); None }; let mimetype = if let Some(file) = file { @@ -123,7 +127,7 @@ impl<'a> ImplResourceHandler for GraphiteFrontendResourceHandler<'a> { *response_length = -1; // Indicating that the length is unknown } if let Some(response) = response { - if let Some(_) = &self.data { + if self.data.is_some() { if let Some(mimetype) = &self.mimetype { let cef_mime = CefString::from(mimetype.as_str()); response.set_mime_type(Some(&cef_mime)); @@ -144,13 +148,10 @@ impl<'a> ImplResourceHandler for GraphiteFrontendResourceHandler<'a> { let out = unsafe { std::slice::from_raw_parts_mut(data_out, bytes_to_read as usize) }; if let Some(data) = &self.data { let mut data = data.borrow_mut(); - for i in 0..bytes_to_read as usize { - if let Some(&byte) = data.next() { - out[i] = byte; - read += 1; - } else { - break; - } + + for (out, &data) in out.iter_mut().zip(data.deref_mut()) { + *out = data; + read += 1; } } diff --git a/desktop/src/main.rs b/desktop/src/main.rs index 70fdc8d005..3a754ee297 100644 --- a/desktop/src/main.rs +++ b/desktop/src/main.rs @@ -1,8 +1,9 @@ use std::fmt::Debug; use std::process::exit; use std::sync::{Arc, Mutex, MutexGuard, PoisonError}; +use std::time::Instant; -use winit::event_loop::{EventLoop, EventLoopProxy}; +use winit::event_loop::{self, EventLoop, EventLoopProxy}; mod cef; use cef::Setup; @@ -13,9 +14,10 @@ use render::{FrameBuffer, GraphicsState}; mod app; use app::WinitApp; +#[derive(Debug)] pub(crate) enum CustomEvent { UiUpdate, - Resized, + ScheduleBrowserWork(Instant), } pub(crate) struct WindowState { @@ -131,6 +133,15 @@ impl cef::CefEventHandler for CefHandler { correct_size } + + fn schedule_cef_message_loop_work(&self, scheduled_time: std::time::Instant) { + self.window_state + .with(|s| { + let Some(event_loop_proxy) = &mut s.event_loop_proxy else { return }; + let _ = event_loop_proxy.send_event(CustomEvent::ScheduleBrowserWork(scheduled_time)); + }) + .unwrap(); + } } fn main() { From 8dd13c50010c62fcb69050c7eb4e7777527ff674 Mon Sep 17 00:00:00 2001 From: Dennis Kobert Date: Wed, 23 Jul 2025 19:29:34 +0200 Subject: [PATCH 10/12] Fix cpu overheating on idle: https://xkcd.com/1172/ --- .nix/flake.lock | 6 +++--- desktop/Cargo.toml | 2 +- desktop/src/app.rs | 13 ++++++++----- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/.nix/flake.lock b/.nix/flake.lock index 5c11b23de1..ae901cc0eb 100644 --- a/.nix/flake.lock +++ b/.nix/flake.lock @@ -65,11 +65,11 @@ ] }, "locked": { - "lastModified": 1748399823, - "narHash": "sha256-kahD8D5hOXOsGbNdoLLnqCL887cjHkx98Izc37nDjlA=", + "lastModified": 1753238793, + "narHash": "sha256-jmQeEpgX+++MEgrcikcwoSiI7vDZWLP0gci7XiWb9uQ=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "d68a69dc71bc19beb3479800392112c2f6218159", + "rev": "0ad7ab4ca8e83febf147197e65c006dff60623ab", "type": "github" }, "original": { diff --git a/desktop/Cargo.toml b/desktop/Cargo.toml index 8ba956cd82..fb4b2899a0 100644 --- a/desktop/Cargo.toml +++ b/desktop/Cargo.toml @@ -6,7 +6,7 @@ authors = ["Graphite Authors "] license = "Apache-2.0" repository = "" edition = "2024" -rust-version = "1.85" +rust-version = "1.87" [features] default = ["gpu"] diff --git a/desktop/src/app.rs b/desktop/src/app.rs index 389bb2ed35..9aa7b378c0 100644 --- a/desktop/src/app.rs +++ b/desktop/src/app.rs @@ -19,7 +19,7 @@ pub(crate) struct WinitApp { pub(crate) window_state: WindowStateHandle, pub(crate) cef_context: cef::Context, pub(crate) window: Option>, - cef_schedule: Instant, + cef_schedule: Option, } impl WinitApp { @@ -28,7 +28,7 @@ impl WinitApp { window_state, cef_context, window: None, - cef_schedule: Instant::now(), + cef_schedule: Some(Instant::now()), } } } @@ -36,12 +36,15 @@ impl WinitApp { impl ApplicationHandler for WinitApp { fn about_to_wait(&mut self, event_loop: &ActiveEventLoop) { let timeout = Instant::now() + Duration::from_millis(10); - let wait_until = timeout.min(self.cef_schedule); + let wait_until = timeout.min(self.cef_schedule.unwrap_or(timeout)); event_loop.set_control_flow(ControlFlow::WaitUntil(wait_until)); } fn new_events(&mut self, _event_loop: &ActiveEventLoop, _cause: StartCause) { - if Instant::now() > self.cef_schedule { + if let Some(schedule) = self.cef_schedule + && schedule < Instant::now() + { + self.cef_schedule = None; self.cef_context.work(); } } @@ -78,7 +81,7 @@ impl ApplicationHandler for WinitApp { } } CustomEvent::ScheduleBrowserWork(instant) => { - self.cef_schedule = instant; + self.cef_schedule = Some(instant); } } } From ef93c863ada75173ff1f28c931ecc0de28457b16 Mon Sep 17 00:00:00 2001 From: Dennis Kobert Date: Wed, 23 Jul 2025 19:55:56 +0200 Subject: [PATCH 11/12] Use tracing crate for logging instead of println --- desktop/src/app.rs | 8 ++--- desktop/src/{cef/mod.rs => cef.rs} | 0 desktop/src/cef/{input/mod.rs => input.rs} | 0 .../src/cef/{internal/mod.rs => internal.rs} | 0 desktop/src/main.rs | 34 +++++++------------ desktop/src/{render/mod.rs => render.rs} | 14 ++++++-- 6 files changed, 29 insertions(+), 27 deletions(-) rename desktop/src/{cef/mod.rs => cef.rs} (100%) rename desktop/src/cef/{input/mod.rs => input.rs} (100%) rename desktop/src/cef/{internal/mod.rs => internal.rs} (100%) rename desktop/src/{render/mod.rs => render.rs} (95%) diff --git a/desktop/src/app.rs b/desktop/src/app.rs index 9aa7b378c0..fb447aa923 100644 --- a/desktop/src/app.rs +++ b/desktop/src/app.rs @@ -67,7 +67,7 @@ impl ApplicationHandler for WinitApp { self.window = Some(window.clone()); s.graphics_state = Some(graphics_state); - println!("Winit window created and ready"); + tracing::info!("Winit window created and ready"); } }) .unwrap(); @@ -91,7 +91,7 @@ impl ApplicationHandler for WinitApp { match event { WindowEvent::CloseRequested => { - println!("The close button was pressed; stopping"); + tracing::info!("The close button was pressed; stopping"); event_loop.exit(); } WindowEvent::Resized(physical_size) => { @@ -118,7 +118,7 @@ impl ApplicationHandler for WinitApp { width: Some(width), height: Some(height), graphics_state: Some(graphics_state), - ui_fb, + ui_frame_buffer: ui_fb, .. } = s { @@ -139,7 +139,7 @@ impl ApplicationHandler for WinitApp { Err(wgpu::SurfaceError::OutOfMemory) => { event_loop.exit(); } - Err(e) => eprintln!("{:?}", e), + Err(e) => tracing::error!("{:?}", e), } } }) diff --git a/desktop/src/cef/mod.rs b/desktop/src/cef.rs similarity index 100% rename from desktop/src/cef/mod.rs rename to desktop/src/cef.rs diff --git a/desktop/src/cef/input/mod.rs b/desktop/src/cef/input.rs similarity index 100% rename from desktop/src/cef/input/mod.rs rename to desktop/src/cef/input.rs diff --git a/desktop/src/cef/internal/mod.rs b/desktop/src/cef/internal.rs similarity index 100% rename from desktop/src/cef/internal/mod.rs rename to desktop/src/cef/internal.rs diff --git a/desktop/src/main.rs b/desktop/src/main.rs index 3a754ee297..824f469d0a 100644 --- a/desktop/src/main.rs +++ b/desktop/src/main.rs @@ -3,7 +3,8 @@ use std::process::exit; use std::sync::{Arc, Mutex, MutexGuard, PoisonError}; use std::time::Instant; -use winit::event_loop::{self, EventLoop, EventLoopProxy}; +use tracing_subscriber::EnvFilter; +use winit::event_loop::{EventLoop, EventLoopProxy}; mod cef; use cef::Setup; @@ -20,11 +21,12 @@ pub(crate) enum CustomEvent { ScheduleBrowserWork(Instant), } +#[derive(Debug)] pub(crate) struct WindowState { width: Option, height: Option, - ui_fb: Option, - preview_fb: Option, + ui_frame_buffer: Option, + _viewport_frame_buffer: Option, graphics_state: Option, event_loop_proxy: Option>, } @@ -34,8 +36,8 @@ impl WindowState { Self { width: None, height: None, - ui_fb: None, - preview_fb: None, + ui_frame_buffer: None, + _viewport_frame_buffer: None, graphics_state: None, event_loop_proxy: None, } @@ -46,18 +48,6 @@ impl WindowState { } } -impl Debug for WindowState { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("WindowState") - .field("width", &self.width.is_some()) - .field("height", &self.height.is_some()) - .field("ui_fb", &self.ui_fb.is_some()) - .field("preview_fb", &self.preview_fb.is_some()) - .field("graphics_state", &self.graphics_state.is_some()) - .finish() - } -} - pub(crate) struct WindowStateHandle { inner: Arc>, } @@ -126,7 +116,7 @@ impl cef::CefEventHandler for CefHandler { if frame_buffer.width() != s.width.unwrap_or(1) || frame_buffer.height() != s.height.unwrap_or(1) { correct_size = false; } else { - s.ui_fb = Some(frame_buffer); + s.ui_frame_buffer = Some(frame_buffer); } }) .unwrap(); @@ -145,11 +135,13 @@ impl cef::CefEventHandler for CefHandler { } fn main() { + tracing_subscriber::fmt().with_env_filter(EnvFilter::from_default_env()).init(); + let cef_context = match cef::Context::::new() { Ok(c) => c, Err(cef::SetupError::Subprocess) => exit(0), Err(cef::SetupError::SubprocessFailed(t)) => { - println!("Subprocess of type {t} failed"); + tracing::error!("Subprocess of type {t} failed"); exit(1); } }; @@ -170,12 +162,12 @@ fn main() { let cef_context = match cef_context.init(CefHandler::new(window_state.clone())) { Ok(c) => c, Err(cef::InitError::InitializationFailed) => { - println!("Cef initialization failed"); + tracing::error!("Cef initialization failed"); exit(1); } }; - println!("Cef initialized successfully"); + tracing::info!("Cef initialized successfully"); let mut winit_app = WinitApp::new(window_state, cef_context); diff --git a/desktop/src/render/mod.rs b/desktop/src/render.rs similarity index 95% rename from desktop/src/render/mod.rs rename to desktop/src/render.rs index 22e67f1556..5acd016592 100644 --- a/desktop/src/render/mod.rs +++ b/desktop/src/render.rs @@ -8,6 +8,15 @@ pub(crate) struct FrameBuffer { width: usize, height: usize, } +impl std::fmt::Debug for FrameBuffer { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + f.debug_struct("WindowState") + .field("width", &self.width) + .field("height", &self.height) + .field("len", &self.buffer.len()) + .finish() + } +} #[derive(Error, Debug)] pub(crate) enum FrameBufferError { @@ -48,6 +57,7 @@ impl FrameBuffer { } } +#[derive(Debug)] pub(crate) struct GraphicsState { surface: wgpu::Surface<'static>, device: wgpu::Device, @@ -109,7 +119,7 @@ impl GraphicsState { surface.configure(&device, &config); // Create shader module - let shader = device.create_shader_module(wgpu::include_wgsl!("fullscreen_texture.wgsl")); + let shader = device.create_shader_module(wgpu::include_wgsl!("render/fullscreen_texture.wgsl")); // Create sampler let sampler = device.create_sampler(&wgpu::SamplerDescriptor { @@ -317,7 +327,7 @@ impl GraphicsState { render_pass.set_bind_group(0, bind_group, &[]); render_pass.draw(0..6, 0..1); // Draw 3 vertices for fullscreen triangle } else { - println!("No bind group available - showing clear color only"); + tracing::warn!("No bind group available - showing clear color only"); } } self.queue.submit(std::iter::once(encoder.finish())); From 06f010afb4eeef96a6b0473aa2a81fc787997ec0 Mon Sep 17 00:00:00 2001 From: Dennis Kobert Date: Wed, 23 Jul 2025 20:09:50 +0200 Subject: [PATCH 12/12] Rebase to main --- desktop/src/render.rs | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/desktop/src/render.rs b/desktop/src/render.rs index 5acd016592..e6f07b46bc 100644 --- a/desktop/src/render.rs +++ b/desktop/src/render.rs @@ -73,7 +73,7 @@ impl GraphicsState { pub(crate) async fn new(window: Arc) -> Self { let size = window.inner_size(); - let instance = wgpu::Instance::new(wgpu::InstanceDescriptor { + let instance = wgpu::Instance::new(&wgpu::InstanceDescriptor { backends: wgpu::Backends::PRIMARY, ..Default::default() }); @@ -90,15 +90,13 @@ impl GraphicsState { .unwrap(); let (device, queue) = adapter - .request_device( - &wgpu::DeviceDescriptor { - required_features: wgpu::Features::empty(), - required_limits: wgpu::Limits::default(), - label: None, - memory_hints: Default::default(), - }, - None, - ) + .request_device(&wgpu::DeviceDescriptor { + required_features: wgpu::Features::empty(), + required_limits: wgpu::Limits::default(), + label: None, + memory_hints: Default::default(), + ..Default::default() + }) .await .unwrap(); @@ -260,14 +258,14 @@ impl GraphicsState { }); self.queue.write_texture( - wgpu::ImageCopyTexture { + wgpu::TexelCopyTextureInfo { texture: &texture, mip_level: 0, origin: wgpu::Origin3d::ZERO, aspect: wgpu::TextureAspect::All, }, data, - wgpu::ImageDataLayout { + wgpu::TexelCopyBufferLayout { offset: 0, bytes_per_row: Some(4 * width), rows_per_image: Some(height),