From df82ddba6e7f0435bdb7361c747166948db59c87 Mon Sep 17 00:00:00 2001 From: Zuckerberg Date: Thu, 18 Jul 2024 22:47:28 -0600 Subject: [PATCH] initial commit --- .gitignore | 2 + .vscode/launch.json | 51 + .vscode/settings.json | 6 + Cargo.lock | 6179 +++++++++++++++++++++++ Cargo.toml | 37 + assets/textures/Letters/letterA.png | Bin 0 -> 1324 bytes assets/textures/Letters/letterB.png | Bin 0 -> 1163 bytes assets/textures/Letters/letterC.png | Bin 0 -> 1511 bytes assets/textures/Letters/letterD.png | Bin 0 -> 1258 bytes assets/textures/Letters/letterE.png | Bin 0 -> 634 bytes assets/textures/Letters/letterF.png | Bin 0 -> 639 bytes assets/textures/Letters/letterG.png | Bin 0 -> 1414 bytes assets/textures/Letters/letterH.png | Bin 0 -> 637 bytes assets/textures/Letters/letterI.png | Bin 0 -> 386 bytes assets/textures/Letters/letterJ.png | Bin 0 -> 920 bytes assets/textures/Letters/letterK.png | Bin 0 -> 1166 bytes assets/textures/Letters/letterL.png | Bin 0 -> 482 bytes assets/textures/Letters/letterM.png | Bin 0 -> 1531 bytes assets/textures/Letters/letterN.png | Bin 0 -> 1000 bytes assets/textures/Letters/letterO.png | Bin 0 -> 1641 bytes assets/textures/Letters/letterP.png | Bin 0 -> 1029 bytes assets/textures/Letters/letterQ.png | Bin 0 -> 1856 bytes assets/textures/Letters/letterR.png | Bin 0 -> 1211 bytes assets/textures/Letters/letterS.png | Bin 0 -> 1521 bytes assets/textures/Letters/letterT.png | Bin 0 -> 604 bytes assets/textures/Letters/letterU.png | Bin 0 -> 1051 bytes assets/textures/Letters/letterV.png | Bin 0 -> 1451 bytes assets/textures/Letters/letterW.png | Bin 0 -> 1825 bytes assets/textures/Letters/letterX.png | Bin 0 -> 1509 bytes assets/textures/Letters/letterY.png | Bin 0 -> 1187 bytes assets/textures/Letters/letterZ.png | Bin 0 -> 1053 bytes assets/textures/Numbers/number0.png | Bin 0 -> 1711 bytes assets/textures/Numbers/number1.png | Bin 0 -> 819 bytes assets/textures/Numbers/number2.png | Bin 0 -> 1433 bytes assets/textures/Numbers/number3.png | Bin 0 -> 1664 bytes assets/textures/Numbers/number4.png | Bin 0 -> 1048 bytes assets/textures/Numbers/number5.png | Bin 0 -> 1426 bytes assets/textures/Numbers/number6.png | Bin 0 -> 1716 bytes assets/textures/Numbers/number7.png | Bin 0 -> 1171 bytes assets/textures/Numbers/number8.png | Bin 0 -> 1880 bytes assets/textures/Numbers/number9.png | Bin 0 -> 1799 bytes assets/textures/Planes/planeBlue1.png | Bin 0 -> 2800 bytes assets/textures/Planes/planeBlue2.png | Bin 0 -> 2798 bytes assets/textures/Planes/planeBlue3.png | Bin 0 -> 2804 bytes assets/textures/Planes/planeGreen1.png | Bin 0 -> 2803 bytes assets/textures/Planes/planeGreen2.png | Bin 0 -> 2800 bytes assets/textures/Planes/planeGreen3.png | Bin 0 -> 2807 bytes assets/textures/Planes/planeRed1.png | Bin 0 -> 2794 bytes assets/textures/Planes/planeRed2.png | Bin 0 -> 2793 bytes assets/textures/Planes/planeRed3.png | Bin 0 -> 2790 bytes assets/textures/Planes/planeYellow1.png | Bin 0 -> 2808 bytes assets/textures/Planes/planeYellow2.png | Bin 0 -> 2802 bytes assets/textures/Planes/planeYellow3.png | Bin 0 -> 2809 bytes assets/textures/UI/UIbg.png | Bin 0 -> 639 bytes assets/textures/UI/buttonLarge.png | Bin 0 -> 477 bytes assets/textures/UI/buttonSmall.png | Bin 0 -> 468 bytes assets/textures/UI/medalBronze.png | Bin 0 -> 4638 bytes assets/textures/UI/medalGold.png | Bin 0 -> 4531 bytes assets/textures/UI/medalSilver.png | Bin 0 -> 3613 bytes assets/textures/UI/tap.png | Bin 0 -> 849 bytes assets/textures/UI/tapLeft.png | Bin 0 -> 671 bytes assets/textures/UI/tapRight.png | Bin 0 -> 646 bytes assets/textures/UI/tapTick.png | Bin 0 -> 1311 bytes assets/textures/UI/textGameOver.png | Bin 0 -> 8181 bytes assets/textures/UI/textGetReady.png | Bin 0 -> 7397 bytes assets/textures/background.png | Bin 0 -> 6683 bytes assets/textures/groundDirt.png | Bin 0 -> 2978 bytes assets/textures/groundGrass.png | Bin 0 -> 3111 bytes assets/textures/groundIce.png | Bin 0 -> 3320 bytes assets/textures/groundRock.png | Bin 0 -> 2983 bytes assets/textures/groundSnow.png | Bin 0 -> 3318 bytes assets/textures/puffLarge.png | Bin 0 -> 357 bytes assets/textures/puffSmall.png | Bin 0 -> 285 bytes assets/textures/rock.png | Bin 0 -> 2543 bytes assets/textures/rockDown.png | Bin 0 -> 2456 bytes assets/textures/rockGrass.png | Bin 0 -> 3106 bytes assets/textures/rockGrassDown.png | Bin 0 -> 3068 bytes assets/textures/rockIce.png | Bin 0 -> 2986 bytes assets/textures/rockIceDown.png | Bin 0 -> 2938 bytes assets/textures/rockSnow.png | Bin 0 -> 2946 bytes assets/textures/rockSnowDown.png | Bin 0 -> 2902 bytes assets/textures/starBronze.png | Bin 0 -> 734 bytes assets/textures/starGold.png | Bin 0 -> 734 bytes assets/textures/starSilver.png | Bin 0 -> 725 bytes flake.lock | 96 + flake.nix | 105 + shell.nix | 1 + src/asset_loader.rs | 44 + src/background.rs | 113 + src/camera.rs | 62 + src/main.rs | 41 + src/obstacle.rs | 202 + src/player.rs | 235 + src/system_set.rs | 50 + 94 files changed, 7224 insertions(+) create mode 100644 .gitignore create mode 100644 .vscode/launch.json create mode 100644 .vscode/settings.json create mode 100644 Cargo.lock create mode 100644 Cargo.toml create mode 100644 assets/textures/Letters/letterA.png create mode 100644 assets/textures/Letters/letterB.png create mode 100644 assets/textures/Letters/letterC.png create mode 100644 assets/textures/Letters/letterD.png create mode 100644 assets/textures/Letters/letterE.png create mode 100644 assets/textures/Letters/letterF.png create mode 100644 assets/textures/Letters/letterG.png create mode 100644 assets/textures/Letters/letterH.png create mode 100644 assets/textures/Letters/letterI.png create mode 100644 assets/textures/Letters/letterJ.png create mode 100644 assets/textures/Letters/letterK.png create mode 100644 assets/textures/Letters/letterL.png create mode 100644 assets/textures/Letters/letterM.png create mode 100644 assets/textures/Letters/letterN.png create mode 100644 assets/textures/Letters/letterO.png create mode 100644 assets/textures/Letters/letterP.png create mode 100644 assets/textures/Letters/letterQ.png create mode 100644 assets/textures/Letters/letterR.png create mode 100644 assets/textures/Letters/letterS.png create mode 100644 assets/textures/Letters/letterT.png create mode 100644 assets/textures/Letters/letterU.png create mode 100644 assets/textures/Letters/letterV.png create mode 100644 assets/textures/Letters/letterW.png create mode 100644 assets/textures/Letters/letterX.png create mode 100644 assets/textures/Letters/letterY.png create mode 100644 assets/textures/Letters/letterZ.png create mode 100644 assets/textures/Numbers/number0.png create mode 100644 assets/textures/Numbers/number1.png create mode 100644 assets/textures/Numbers/number2.png create mode 100644 assets/textures/Numbers/number3.png create mode 100644 assets/textures/Numbers/number4.png create mode 100644 assets/textures/Numbers/number5.png create mode 100644 assets/textures/Numbers/number6.png create mode 100644 assets/textures/Numbers/number7.png create mode 100644 assets/textures/Numbers/number8.png create mode 100644 assets/textures/Numbers/number9.png create mode 100644 assets/textures/Planes/planeBlue1.png create mode 100644 assets/textures/Planes/planeBlue2.png create mode 100644 assets/textures/Planes/planeBlue3.png create mode 100644 assets/textures/Planes/planeGreen1.png create mode 100644 assets/textures/Planes/planeGreen2.png create mode 100644 assets/textures/Planes/planeGreen3.png create mode 100644 assets/textures/Planes/planeRed1.png create mode 100644 assets/textures/Planes/planeRed2.png create mode 100644 assets/textures/Planes/planeRed3.png create mode 100644 assets/textures/Planes/planeYellow1.png create mode 100644 assets/textures/Planes/planeYellow2.png create mode 100644 assets/textures/Planes/planeYellow3.png create mode 100644 assets/textures/UI/UIbg.png create mode 100644 assets/textures/UI/buttonLarge.png create mode 100644 assets/textures/UI/buttonSmall.png create mode 100644 assets/textures/UI/medalBronze.png create mode 100644 assets/textures/UI/medalGold.png create mode 100644 assets/textures/UI/medalSilver.png create mode 100644 assets/textures/UI/tap.png create mode 100644 assets/textures/UI/tapLeft.png create mode 100644 assets/textures/UI/tapRight.png create mode 100644 assets/textures/UI/tapTick.png create mode 100644 assets/textures/UI/textGameOver.png create mode 100644 assets/textures/UI/textGetReady.png create mode 100644 assets/textures/background.png create mode 100644 assets/textures/groundDirt.png create mode 100644 assets/textures/groundGrass.png create mode 100644 assets/textures/groundIce.png create mode 100644 assets/textures/groundRock.png create mode 100644 assets/textures/groundSnow.png create mode 100644 assets/textures/puffLarge.png create mode 100644 assets/textures/puffSmall.png create mode 100644 assets/textures/rock.png create mode 100644 assets/textures/rockDown.png create mode 100644 assets/textures/rockGrass.png create mode 100644 assets/textures/rockGrassDown.png create mode 100644 assets/textures/rockIce.png create mode 100644 assets/textures/rockIceDown.png create mode 100644 assets/textures/rockSnow.png create mode 100644 assets/textures/rockSnowDown.png create mode 100644 assets/textures/starBronze.png create mode 100644 assets/textures/starGold.png create mode 100644 assets/textures/starSilver.png create mode 100644 flake.lock create mode 100644 flake.nix create mode 100644 shell.nix create mode 100644 src/asset_loader.rs create mode 100644 src/background.rs create mode 100644 src/camera.rs create mode 100644 src/main.rs create mode 100644 src/obstacle.rs create mode 100644 src/player.rs create mode 100644 src/system_set.rs diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c191f14 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/target +result \ No newline at end of file diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..573812b --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,51 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "type": "lldb", + "request": "launch", + "name": "Debug executable 'bevy_test'", + "cargo": { + "args": [ + "build", + "--bin=bevy_test", + "--package=bevy_test" + ], + "filter": { + "name": "bevy_test", + "kind": "bin" + } + }, + "args": [], + "cwd": "${workspaceFolder}", + "env": { + "CARGO_MANIFEST_DIR": "${workspaceFolder}" + } + }, + { + "type": "lldb", + "request": "launch", + "name": "Debug unit tests in executable 'bevy_test'", + "cargo": { + "args": [ + "test", + "--no-run", + "--bin=bevy_test", + "--package=bevy_test" + ], + "filter": { + "name": "bevy_test", + "kind": "bin" + } + }, + "args": [], + "cwd": "${workspaceFolder}", + "env": { + "CARGO_MANIFEST_DIR": "${workspaceFolder}" + } + } + ] +} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..f0244c2 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,6 @@ +{ + "nixEnvSelector.nixFile": "${workspaceRoot}/shell.nix", + "rust-analyzer.linkedProjects": [ + "./Cargo.toml" + ] +} \ No newline at end of file diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 0000000..ab99d0a --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,6179 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "ab_glyph" +version = "0.2.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79faae4620f45232f599d9bc7b290f88247a0834162c4495ab2f02d60004adfb" +dependencies = [ + "ab_glyph_rasterizer", + "owned_ttf_parser", +] + +[[package]] +name = "ab_glyph_rasterizer" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c71b1793ee61086797f5c80b6efa2b8ffa6d5dd703f118545808a7f2e27f7046" + +[[package]] +name = "accesskit" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74a4b14f3d99c1255dcba8f45621ab1a2e7540a0009652d33989005a4d0bfc6b" + +[[package]] +name = "accesskit" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6cf780eb737f2d4a49ffbd512324d53ad089070f813f7be7f99dbd5123a7f448" + +[[package]] +name = "accesskit_consumer" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c17cca53c09fbd7288667b22a201274b9becaa27f0b91bf52a526db95de45e6" +dependencies = [ + "accesskit 0.12.3", +] + +[[package]] +name = "accesskit_consumer" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3bdfa1638ddd6eb9c752def95568df8b3ad832df252e9156d2eb783b201ca8a9" +dependencies = [ + "accesskit 0.14.0", + "immutable-chunkmap", +] + +[[package]] +name = "accesskit_macos" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd3b6ae1eabbfbced10e840fd3fce8a93ae84f174b3e4ba892ab7bcb42e477a7" +dependencies = [ + "accesskit 0.12.3", + "accesskit_consumer 0.16.1", + "objc2 0.3.0-beta.3.patch-leaks.3", + "once_cell", +] + +[[package]] +name = "accesskit_macos" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c236a84ff1111defc280cee755eaa953d0b24398786851b9d28322c6d3bb1ebd" +dependencies = [ + "accesskit 0.14.0", + "accesskit_consumer 0.22.0", + "objc2 0.5.2", + "objc2-app-kit", + "objc2-foundation", + "once_cell", +] + +[[package]] +name = "accesskit_windows" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afcae27ec0974fc7c3b0b318783be89fd1b2e66dd702179fe600166a38ff4a0b" +dependencies = [ + "accesskit 0.12.3", + "accesskit_consumer 0.16.1", + "once_cell", + "paste", + "static_assertions", + "windows 0.48.0", +] + +[[package]] +name = "accesskit_windows" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d7f43d24b16b3e76bef248124fbfd2493c3a9860edb5aae1010c890e826de5e" +dependencies = [ + "accesskit 0.14.0", + "accesskit_consumer 0.22.0", + "paste", + "static_assertions", + "windows 0.54.0", +] + +[[package]] +name = "accesskit_winit" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45f8f7c9f66d454d5fd8e344c8c8c7324b57194e1041b955519fc58a01e77a25" +dependencies = [ + "accesskit 0.12.3", + "accesskit_macos 0.10.1", + "accesskit_windows 0.15.1", + "raw-window-handle", + "winit 0.29.15", +] + +[[package]] +name = "accesskit_winit" +version = "0.20.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "755535e6bf711a42dac28b888b884b10fc00ff4010d9d3bd871c5f5beae5aa78" +dependencies = [ + "accesskit 0.14.0", + "accesskit_macos 0.15.0", + "accesskit_windows 0.20.0", + "raw-window-handle", + "winit 0.30.3", +] + +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + +[[package]] +name = "ahash" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" +dependencies = [ + "cfg-if", + "getrandom", + "once_cell", + "version_check", + "zerocopy", +] + +[[package]] +name = "aho-corasick" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +dependencies = [ + "memchr", +] + +[[package]] +name = "allocator-api2" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" + +[[package]] +name = "alsa" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37fe60779335388a88c01ac6c3be40304d1e349de3ada3b15f7808bb90fa9dce" +dependencies = [ + "alsa-sys", + "bitflags 2.6.0", + "libc", +] + +[[package]] +name = "alsa-sys" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db8fee663d06c4e303404ef5f40488a53e062f89ba8bfed81f42325aafad1527" +dependencies = [ + "libc", + "pkg-config", +] + +[[package]] +name = "android-activity" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee91c0c2905bae44f84bfa4e044536541df26b7703fd0888deeb9060fcc44289" +dependencies = [ + "android-properties", + "bitflags 2.6.0", + "cc", + "cesu8", + "jni", + "jni-sys", + "libc", + "log", + "ndk 0.8.0", + "ndk-context", + "ndk-sys 0.5.0+25.2.9519653", + "num_enum", + "thiserror", +] + +[[package]] +name = "android-activity" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef6978589202a00cd7e118380c448a08b6ed394c3a8df3a430d0898e3a42d046" +dependencies = [ + "android-properties", + "bitflags 2.6.0", + "cc", + "cesu8", + "jni", + "jni-sys", + "libc", + "log", + "ndk 0.9.0", + "ndk-context", + "ndk-sys 0.6.0+11769913", + "num_enum", + "thiserror", +] + +[[package]] +name = "android-properties" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc7eb209b1518d6bb87b283c20095f5228ecda460da70b44f0802523dea6da04" + +[[package]] +name = "android_log-sys" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ecc8056bf6ab9892dcd53216c83d1597487d7dacac16c8df6b877d127df9937" + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "approx" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cab112f0a86d568ea0e627cc1d6be74a1e9cd55214684db5561995f6dad897c6" +dependencies = [ + "num-traits", +] + +[[package]] +name = "arrayref" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545" + +[[package]] +name = "arrayvec" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" + +[[package]] +name = "as-raw-xcb-connection" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "175571dd1d178ced59193a6fc02dde1b972eb0bc56c892cde9beeceac5bf0f6b" + +[[package]] +name = "ash" +version = "0.37.3+1.3.251" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39e9c3835d686b0a6084ab4234fcd1b07dbf6e4767dce60874b12356a25ecd4a" +dependencies = [ + "libloading 0.7.4", +] + +[[package]] +name = "async-broadcast" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c48ccdbf6ca6b121e0f586cbc0e73ae440e56c67c30fa0873b4e110d9c26d2b" +dependencies = [ + "event-listener 2.5.3", + "futures-core", +] + +[[package]] +name = "async-channel" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89b47800b0be77592da0afd425cc03468052844aff33b84e33cc696f64e77b6a" +dependencies = [ + "concurrent-queue", + "event-listener-strategy", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-executor" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8828ec6e544c02b0d6691d21ed9f9218d0384a82542855073c2a3f58304aaf0" +dependencies = [ + "async-task", + "concurrent-queue", + "fastrand", + "futures-lite", + "slab", +] + +[[package]] +name = "async-fs" +version = "2.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebcd09b382f40fcd159c2d695175b2ae620ffa5f3bd6f664131efff4e8b9e04a" +dependencies = [ + "async-lock", + "blocking", + "futures-lite", +] + +[[package]] +name = "async-lock" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18" +dependencies = [ + "event-listener 5.3.1", + "event-listener-strategy", + "pin-project-lite", +] + +[[package]] +name = "async-task" +version = "4.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" + +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + +[[package]] +name = "autocfg" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" + +[[package]] +name = "base64" +version = "0.21.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "bevy" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65b9eadaacf8fe971331bc3f250f35c18bc9dace3f96b483062f38ac07e3a1b4" +dependencies = [ + "bevy_internal 0.13.2", +] + +[[package]] +name = "bevy" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e938630e9f472b1899c78ef84aa907081b23bad8333140e2295c620485b6ee7" +dependencies = [ + "bevy_internal 0.14.0", +] + +[[package]] +name = "bevy_a11y" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd8ef2795f7f5c816a4eda04834083eb5a92e8fef603bc21d2091c6e3b63621a" +dependencies = [ + "accesskit 0.12.3", + "bevy_app 0.13.2", + "bevy_derive 0.13.2", + "bevy_ecs 0.13.2", +] + +[[package]] +name = "bevy_a11y" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e613f0e7d5a92637e59744f7185e374c9a59654ecc6d7575adcec9581db1363" +dependencies = [ + "accesskit 0.14.0", + "bevy_app 0.14.0", + "bevy_derive 0.14.0", + "bevy_ecs 0.14.0", +] + +[[package]] +name = "bevy_animation" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23aa4141df149b743e69c90244261c6372bafb70d9f115885de48a75fc28fd9b" +dependencies = [ + "bevy_app 0.14.0", + "bevy_asset 0.14.0", + "bevy_color", + "bevy_core 0.14.0", + "bevy_derive 0.14.0", + "bevy_ecs 0.14.0", + "bevy_hierarchy 0.14.0", + "bevy_log 0.14.0", + "bevy_math 0.14.0", + "bevy_reflect 0.14.0", + "bevy_render 0.14.0", + "bevy_time 0.14.0", + "bevy_transform 0.14.0", + "bevy_utils 0.14.0", + "blake3", + "fixedbitset 0.5.7", + "petgraph", + "ron", + "serde", + "thiserror", + "thread_local", + "uuid", +] + +[[package]] +name = "bevy_app" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab348a32e46d21c5d61794294a92d415a770d26c7ba8951830b127b40b53ccc4" +dependencies = [ + "bevy_derive 0.13.2", + "bevy_ecs 0.13.2", + "bevy_reflect 0.13.2", + "bevy_tasks 0.13.2", + "bevy_utils 0.13.2", + "downcast-rs", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "bevy_app" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f548e9dab7d10c5f99e3b504c758c4bf87aa67df9bcb9cc8b317a0271770e72" +dependencies = [ + "bevy_derive 0.14.0", + "bevy_ecs 0.14.0", + "bevy_reflect 0.14.0", + "bevy_tasks 0.14.0", + "bevy_utils 0.14.0", + "console_error_panic_hook", + "downcast-rs", + "thiserror", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "bevy_asset" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50028e0d4f28a9f6aab48f61b688ba2793141188f88cdc9aa6c2bca2cc02ad35" +dependencies = [ + "async-broadcast", + "async-fs", + "async-lock", + "bevy_app 0.13.2", + "bevy_asset_macros 0.13.2", + "bevy_ecs 0.13.2", + "bevy_log 0.13.2", + "bevy_reflect 0.13.2", + "bevy_tasks 0.13.2", + "bevy_utils 0.13.2", + "bevy_winit 0.13.2", + "blake3", + "crossbeam-channel", + "downcast-rs", + "futures-io", + "futures-lite", + "js-sys", + "parking_lot", + "ron", + "serde", + "thiserror", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "bevy_asset" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9d198e4c3419215de2ad981d4e734bbfab46469b7575e3b7150c912b9ec5175" +dependencies = [ + "async-broadcast", + "async-fs", + "async-lock", + "bevy_app 0.14.0", + "bevy_asset_macros 0.14.0", + "bevy_ecs 0.14.0", + "bevy_reflect 0.14.0", + "bevy_tasks 0.14.0", + "bevy_utils 0.14.0", + "bevy_winit 0.14.0", + "blake3", + "crossbeam-channel", + "downcast-rs", + "futures-io", + "futures-lite", + "js-sys", + "parking_lot", + "ron", + "serde", + "thiserror", + "uuid", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "bevy_asset_macros" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6617475908368418d815360148fdbb82f879dc255a70d2d7baa3766f0cd4bfd7" +dependencies = [ + "bevy_macro_utils 0.13.2", + "proc-macro2", + "quote", + "syn 2.0.69", +] + +[[package]] +name = "bevy_asset_macros" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11b2cbeba287a4b44e116c33dbaf37dce80a9d84477b2bb35ff459999d6c9e1b" +dependencies = [ + "bevy_macro_utils 0.14.0", + "proc-macro2", + "quote", + "syn 2.0.69", +] + +[[package]] +name = "bevy_audio" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e41ecf15d0aae31bdb6d2b5cc590f966451e9736ddfee634c8f1ca5af1ac4342" +dependencies = [ + "bevy_app 0.14.0", + "bevy_asset 0.14.0", + "bevy_derive 0.14.0", + "bevy_ecs 0.14.0", + "bevy_hierarchy 0.14.0", + "bevy_math 0.14.0", + "bevy_reflect 0.14.0", + "bevy_transform 0.14.0", + "bevy_utils 0.14.0", + "cpal", + "rodio", +] + +[[package]] +name = "bevy_color" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a933306f5c7dc9568209180f482b28b5f40d2f8d5b361bc1b270c0a588752c0" +dependencies = [ + "bevy_math 0.14.0", + "bevy_reflect 0.14.0", + "bytemuck", + "encase 0.8.0", + "serde", + "thiserror", + "wgpu-types 0.20.0", +] + +[[package]] +name = "bevy_core" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12b0042f241ba7cd61487aadd8addfb56f7eeb662d713ac1577026704508fc6c" +dependencies = [ + "bevy_app 0.13.2", + "bevy_ecs 0.13.2", + "bevy_math 0.13.2", + "bevy_reflect 0.13.2", + "bevy_tasks 0.13.2", + "bevy_utils 0.13.2", + "bytemuck", + "serde", +] + +[[package]] +name = "bevy_core" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ddeed5ebf2fa75a4d4f32e2da9c60f11037e36252695059a151c6685cd3d72b" +dependencies = [ + "bevy_app 0.14.0", + "bevy_ecs 0.14.0", + "bevy_reflect 0.14.0", + "bevy_tasks 0.14.0", + "bevy_utils 0.14.0", + "uuid", +] + +[[package]] +name = "bevy_core_pipeline" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48b7a471cb8ba665f12f7a167faa5566c11386f5bfc77d2e10bfde22b179f7b3" +dependencies = [ + "bevy_app 0.13.2", + "bevy_asset 0.13.2", + "bevy_core 0.13.2", + "bevy_derive 0.13.2", + "bevy_ecs 0.13.2", + "bevy_log 0.13.2", + "bevy_math 0.13.2", + "bevy_reflect 0.13.2", + "bevy_render 0.13.2", + "bevy_transform 0.13.2", + "bevy_utils 0.13.2", + "bitflags 2.6.0", + "radsort", + "serde", +] + +[[package]] +name = "bevy_core_pipeline" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b978220b5edc98f2c5cbbd14c118c74b3ec7216e5416d3c187c1097279b009b" +dependencies = [ + "bevy_app 0.14.0", + "bevy_asset 0.14.0", + "bevy_color", + "bevy_core 0.14.0", + "bevy_derive 0.14.0", + "bevy_ecs 0.14.0", + "bevy_math 0.14.0", + "bevy_reflect 0.14.0", + "bevy_render 0.14.0", + "bevy_transform 0.14.0", + "bevy_utils 0.14.0", + "bitflags 2.6.0", + "nonmax", + "radsort", + "serde", + "smallvec", + "thiserror", +] + +[[package]] +name = "bevy_derive" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0e01f8343f391e2d6a63b368b82fb5b252ed43c8713fc87f9a8f2d59407dd00" +dependencies = [ + "bevy_macro_utils 0.13.2", + "quote", + "syn 2.0.69", +] + +[[package]] +name = "bevy_derive" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8a8173bad3ed53fa158806b1beda147263337d6ef71a093780dd141b74386b1" +dependencies = [ + "bevy_macro_utils 0.14.0", + "quote", + "syn 2.0.69", +] + +[[package]] +name = "bevy_diagnostic" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1401cdccec7e49378d013dfb0ff62c251f85b3be19dcdf04cfd827f793d1ee9" +dependencies = [ + "bevy_app 0.13.2", + "bevy_core 0.13.2", + "bevy_ecs 0.13.2", + "bevy_log 0.13.2", + "bevy_time 0.13.2", + "bevy_utils 0.13.2", + "const-fnv1a-hash", + "sysinfo", +] + +[[package]] +name = "bevy_diagnostic" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7f82011fd70048be282526a99756d54bf00e874edafa9664ba0dc247678f03" +dependencies = [ + "bevy_app 0.14.0", + "bevy_core 0.14.0", + "bevy_ecs 0.14.0", + "bevy_tasks 0.14.0", + "bevy_time 0.14.0", + "bevy_utils 0.14.0", + "const-fnv1a-hash", + "sysinfo", +] + +[[package]] +name = "bevy_ecs" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98e612a8e7962ead849e370f3a7e972b88df879ced05cd9dad6a0286d14650cf" +dependencies = [ + "async-channel", + "bevy_ecs_macros 0.13.2", + "bevy_ptr 0.13.2", + "bevy_reflect 0.13.2", + "bevy_tasks 0.13.2", + "bevy_utils 0.13.2", + "downcast-rs", + "fixedbitset 0.4.2", + "rustc-hash 1.1.0", + "serde", + "thiserror", + "thread_local", +] + +[[package]] +name = "bevy_ecs" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c77fdc3a7230eff2fcebe4bd17c155bd238c660a0089d0f98c39ba0d461b923" +dependencies = [ + "arrayvec", + "bevy_ecs_macros 0.14.0", + "bevy_ptr 0.14.0", + "bevy_reflect 0.14.0", + "bevy_tasks 0.14.0", + "bevy_utils 0.14.0", + "bitflags 2.6.0", + "concurrent-queue", + "fixedbitset 0.5.7", + "nonmax", + "petgraph", + "serde", + "thiserror", +] + +[[package]] +name = "bevy_ecs_macros" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "807b5106c3410e58f4f523b55ea3c071e2a09e31e9510f3c22021c6a04732b5b" +dependencies = [ + "bevy_macro_utils 0.13.2", + "proc-macro2", + "quote", + "syn 2.0.69", +] + +[[package]] +name = "bevy_ecs_macros" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9272b511958525306cd141726d3ca59740f79fc0707c439b55a007bcc3497308" +dependencies = [ + "bevy_macro_utils 0.14.0", + "proc-macro2", + "quote", + "syn 2.0.69", +] + +[[package]] +name = "bevy_encase_derive" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "887087a5e522d9f20733a84dd7e6e9ca04cd8fdfac659220ed87d675eebc83a7" +dependencies = [ + "bevy_macro_utils 0.13.2", + "encase_derive_impl 0.7.0", +] + +[[package]] +name = "bevy_encase_derive" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0452d8254c8bfae4bff6caca2a8be3b0c1b2e1a72b93e9b9f6a21c8dff807e0" +dependencies = [ + "bevy_macro_utils 0.14.0", + "encase_derive_impl 0.8.0", +] + +[[package]] +name = "bevy_gilrs" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbad8e59470c3d5cf25aa8c48462c4cf6f0c6314538c68ab2f5cf393146f0fc2" +dependencies = [ + "bevy_app 0.14.0", + "bevy_ecs 0.14.0", + "bevy_input 0.14.0", + "bevy_time 0.14.0", + "bevy_utils 0.14.0", + "gilrs", + "thiserror", +] + +[[package]] +name = "bevy_gizmos" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "054df3550a9d423a961de65b459946ff23304f97f25af8a62c23f4259db8506d" +dependencies = [ + "bevy_app 0.13.2", + "bevy_asset 0.13.2", + "bevy_core 0.13.2", + "bevy_core_pipeline 0.13.2", + "bevy_ecs 0.13.2", + "bevy_gizmos_macros 0.13.2", + "bevy_log 0.13.2", + "bevy_math 0.13.2", + "bevy_pbr 0.13.2", + "bevy_reflect 0.13.2", + "bevy_render 0.13.2", + "bevy_transform 0.13.2", + "bevy_utils 0.13.2", +] + +[[package]] +name = "bevy_gizmos" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bdbb0556f0c6e45f4a17aef9c708c06ebf15ae1bed4533d7eddb493409f9f025" +dependencies = [ + "bevy_app 0.14.0", + "bevy_asset 0.14.0", + "bevy_color", + "bevy_core_pipeline 0.14.0", + "bevy_ecs 0.14.0", + "bevy_gizmos_macros 0.14.0", + "bevy_math 0.14.0", + "bevy_pbr 0.14.0", + "bevy_reflect 0.14.0", + "bevy_render 0.14.0", + "bevy_sprite 0.14.0", + "bevy_time 0.14.0", + "bevy_transform 0.14.0", + "bevy_utils 0.14.0", + "bytemuck", +] + +[[package]] +name = "bevy_gizmos_macros" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abdcaf74d8cd34aa5c3293527e7a012826840886ad3496c1b963ed8b66b1619f" +dependencies = [ + "bevy_macro_utils 0.13.2", + "proc-macro2", + "quote", + "syn 2.0.69", +] + +[[package]] +name = "bevy_gizmos_macros" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ef351a4b6498c197d1317c62f46ba84b69fbde3dbeb57beb2e744bbe5b7c3e0" +dependencies = [ + "bevy_macro_utils 0.14.0", + "proc-macro2", + "quote", + "syn 2.0.69", +] + +[[package]] +name = "bevy_gltf" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfd7abeaf3f28afd1f8999c2169aa17b40a37ad11253cf7dd05017024b65adc6" +dependencies = [ + "base64 0.22.1", + "bevy_animation", + "bevy_app 0.14.0", + "bevy_asset 0.14.0", + "bevy_color", + "bevy_core 0.14.0", + "bevy_core_pipeline 0.14.0", + "bevy_ecs 0.14.0", + "bevy_hierarchy 0.14.0", + "bevy_math 0.14.0", + "bevy_pbr 0.14.0", + "bevy_reflect 0.14.0", + "bevy_render 0.14.0", + "bevy_scene 0.14.0", + "bevy_tasks 0.14.0", + "bevy_transform 0.14.0", + "bevy_utils 0.14.0", + "gltf", + "percent-encoding", + "serde", + "serde_json", + "smallvec", + "thiserror", +] + +[[package]] +name = "bevy_hierarchy" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbb3dfad24866a6713dafa3065a91c5cf5e355f6e1b191c25d704ae54185246c" +dependencies = [ + "bevy_app 0.13.2", + "bevy_core 0.13.2", + "bevy_ecs 0.13.2", + "bevy_log 0.13.2", + "bevy_reflect 0.13.2", + "bevy_utils 0.13.2", +] + +[[package]] +name = "bevy_hierarchy" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "802eca6f341d19ade790ccfaba7044be4d823b708087eb5ac4c1f74e4ea0916a" +dependencies = [ + "bevy_app 0.14.0", + "bevy_core 0.14.0", + "bevy_ecs 0.14.0", + "bevy_reflect 0.14.0", + "bevy_utils 0.14.0", + "smallvec", +] + +[[package]] +name = "bevy_input" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47f2b2b3df168c6ef661d25e09abf5bd4fecaacd400f27e5db650df1c3fa3a3b" +dependencies = [ + "bevy_app 0.13.2", + "bevy_ecs 0.13.2", + "bevy_math 0.13.2", + "bevy_reflect 0.13.2", + "bevy_utils 0.13.2", + "serde", + "smol_str", + "thiserror", +] + +[[package]] +name = "bevy_input" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d050f1433f48ca23f1ea078734ebff119a3f76eb7d221725ab0f1fd9f81230b" +dependencies = [ + "bevy_app 0.14.0", + "bevy_ecs 0.14.0", + "bevy_math 0.14.0", + "bevy_reflect 0.14.0", + "bevy_utils 0.14.0", + "smol_str", + "thiserror", +] + +[[package]] +name = "bevy_internal" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f58ec0ce77603df9474cde61f429126bfe06eb79094440e9141afb4217751c79" +dependencies = [ + "bevy_a11y 0.13.2", + "bevy_app 0.13.2", + "bevy_asset 0.13.2", + "bevy_core 0.13.2", + "bevy_core_pipeline 0.13.2", + "bevy_derive 0.13.2", + "bevy_diagnostic 0.13.2", + "bevy_ecs 0.13.2", + "bevy_gizmos 0.13.2", + "bevy_hierarchy 0.13.2", + "bevy_input 0.13.2", + "bevy_log 0.13.2", + "bevy_math 0.13.2", + "bevy_pbr 0.13.2", + "bevy_ptr 0.13.2", + "bevy_reflect 0.13.2", + "bevy_render 0.13.2", + "bevy_scene 0.13.2", + "bevy_tasks 0.13.2", + "bevy_time 0.13.2", + "bevy_transform 0.13.2", + "bevy_ui 0.13.2", + "bevy_utils 0.13.2", + "bevy_window 0.13.2", +] + +[[package]] +name = "bevy_internal" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ddd2b23e44d3a1f8ae547cbee5b6661f8135cc456c5de206e8648789944e7a1" +dependencies = [ + "bevy_a11y 0.14.0", + "bevy_animation", + "bevy_app 0.14.0", + "bevy_asset 0.14.0", + "bevy_audio", + "bevy_color", + "bevy_core 0.14.0", + "bevy_core_pipeline 0.14.0", + "bevy_derive 0.14.0", + "bevy_diagnostic 0.14.0", + "bevy_ecs 0.14.0", + "bevy_gilrs", + "bevy_gizmos 0.14.0", + "bevy_gltf", + "bevy_hierarchy 0.14.0", + "bevy_input 0.14.0", + "bevy_log 0.14.0", + "bevy_math 0.14.0", + "bevy_pbr 0.14.0", + "bevy_ptr 0.14.0", + "bevy_reflect 0.14.0", + "bevy_render 0.14.0", + "bevy_scene 0.14.0", + "bevy_sprite 0.14.0", + "bevy_state", + "bevy_tasks 0.14.0", + "bevy_text", + "bevy_time 0.14.0", + "bevy_transform 0.14.0", + "bevy_ui 0.14.0", + "bevy_utils 0.14.0", + "bevy_window 0.14.0", + "bevy_winit 0.14.0", +] + +[[package]] +name = "bevy_log" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5eea6c527fd828b7fef8d0f518167f27f405b904a16f227b644687d3f46a809" +dependencies = [ + "android_log-sys", + "bevy_app 0.13.2", + "bevy_ecs 0.13.2", + "bevy_utils 0.13.2", + "console_error_panic_hook", + "tracing-log 0.1.4", + "tracing-subscriber", + "tracing-wasm", +] + +[[package]] +name = "bevy_log" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bab641fd0de254915ab746165a07677465b2d89b72f5b49367d73b9197548a35" +dependencies = [ + "android_log-sys", + "bevy_app 0.14.0", + "bevy_ecs 0.14.0", + "bevy_utils 0.14.0", + "tracing-log 0.2.0", + "tracing-subscriber", + "tracing-wasm", +] + +[[package]] +name = "bevy_macro_utils" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb270c98a96243b29465139ed10bda2f675d00a11904f6588a5f7fc4774119c7" +dependencies = [ + "proc-macro2", + "quote", + "rustc-hash 1.1.0", + "syn 2.0.69", + "toml_edit 0.21.1", +] + +[[package]] +name = "bevy_macro_utils" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3ad860d35d74b35d4d6ae7f656d163b6f475aa2e64fc293ee86ac901977ddb7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.69", + "toml_edit 0.22.14", +] + +[[package]] +name = "bevy_math" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f06daa26ffb82d90ba772256c0ba286f6c305c392f6976c9822717974805837c" +dependencies = [ + "glam 0.25.0", + "serde", +] + +[[package]] +name = "bevy_math" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51bd6ce2174d3237d30e0ab5b2508480cc7593ca4d96ffb3a3095f9fc6bbc34c" +dependencies = [ + "bevy_reflect 0.14.0", + "glam 0.27.0", + "rand", + "smallvec", + "thiserror", +] + +[[package]] +name = "bevy_mikktspace" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0d7ef7f2a826d0b19f059035831ce00a5e930435cc53c61e045773d0483f67a" +dependencies = [ + "glam 0.25.0", +] + +[[package]] +name = "bevy_mikktspace" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7ce4266293629a2d10459cc112dffe3b3e9229a4f2b8a4d20061b8dd53316d0" +dependencies = [ + "glam 0.27.0", +] + +[[package]] +name = "bevy_pbr" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75b29c80269fa6db55c9e33701edd3ecb73d8866ca8cb814d49a9d3fb72531b6" +dependencies = [ + "bevy_app 0.13.2", + "bevy_asset 0.13.2", + "bevy_core_pipeline 0.13.2", + "bevy_derive 0.13.2", + "bevy_ecs 0.13.2", + "bevy_math 0.13.2", + "bevy_reflect 0.13.2", + "bevy_render 0.13.2", + "bevy_transform 0.13.2", + "bevy_utils 0.13.2", + "bevy_window 0.13.2", + "bitflags 2.6.0", + "bytemuck", + "fixedbitset 0.4.2", + "radsort", + "smallvec", + "thread_local", +] + +[[package]] +name = "bevy_pbr" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3effe8ff28899f14d250d0649ca9868dbe68b389d0f2b7af086759b8e16c6e3d" +dependencies = [ + "bevy_app 0.14.0", + "bevy_asset 0.14.0", + "bevy_color", + "bevy_core_pipeline 0.14.0", + "bevy_derive 0.14.0", + "bevy_ecs 0.14.0", + "bevy_math 0.14.0", + "bevy_reflect 0.14.0", + "bevy_render 0.14.0", + "bevy_transform 0.14.0", + "bevy_utils 0.14.0", + "bevy_window 0.14.0", + "bitflags 2.6.0", + "bytemuck", + "fixedbitset 0.5.7", + "nonmax", + "radsort", + "smallvec", + "static_assertions", +] + +[[package]] +name = "bevy_ptr" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8050e2869fe341db6874203b5a01ff12673807a2c7c80cb829f6c7bea6997268" + +[[package]] +name = "bevy_ptr" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c115c97a5c8a263bd0aa7001b999772c744ac5ba797d07c86f25734ce381ea69" + +[[package]] +name = "bevy_rapier3d" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56691c8fbd7a8614368011bad8736789bb36176f49fc19fd6f3627322134659b" +dependencies = [ + "bevy 0.13.2", + "bitflags 2.6.0", + "log", + "nalgebra 0.32.6", + "rapier3d 0.19.0", + "serde", +] + +[[package]] +name = "bevy_reflect" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccbd7de21d586457a340a0962ad0747dc5098ff925eb6b27a918c4bdd8252f7b" +dependencies = [ + "bevy_math 0.13.2", + "bevy_ptr 0.13.2", + "bevy_reflect_derive 0.13.2", + "bevy_utils 0.13.2", + "downcast-rs", + "erased-serde", + "glam 0.25.0", + "serde", + "smol_str", + "thiserror", +] + +[[package]] +name = "bevy_reflect" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "406ea0fce267169c2320c7302d97d09f605105686346762562c5f65960b5ca2f" +dependencies = [ + "bevy_ptr 0.14.0", + "bevy_reflect_derive 0.14.0", + "bevy_utils 0.14.0", + "downcast-rs", + "erased-serde", + "glam 0.27.0", + "petgraph", + "serde", + "smallvec", + "smol_str", + "thiserror", + "uuid", +] + +[[package]] +name = "bevy_reflect_derive" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ce33051bd49036d4a5a62aa3f2068672ec55f3ebe92aa0d003a341f15cc37ac" +dependencies = [ + "bevy_macro_utils 0.13.2", + "proc-macro2", + "quote", + "syn 2.0.69", + "uuid", +] + +[[package]] +name = "bevy_reflect_derive" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0427fdb4425fc72cc96d45e550df83ace6347f0503840de116c76a40843ba751" +dependencies = [ + "bevy_macro_utils 0.14.0", + "proc-macro2", + "quote", + "syn 2.0.69", + "uuid", +] + +[[package]] +name = "bevy_render" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88b2c4b644c739c0b474b6f8f7b0bc68ac13d83b59688781e9a7753c52780177" +dependencies = [ + "async-channel", + "bevy_app 0.13.2", + "bevy_asset 0.13.2", + "bevy_core 0.13.2", + "bevy_derive 0.13.2", + "bevy_ecs 0.13.2", + "bevy_encase_derive 0.13.2", + "bevy_hierarchy 0.13.2", + "bevy_log 0.13.2", + "bevy_math 0.13.2", + "bevy_mikktspace 0.13.2", + "bevy_reflect 0.13.2", + "bevy_render_macros 0.13.2", + "bevy_tasks 0.13.2", + "bevy_time 0.13.2", + "bevy_transform 0.13.2", + "bevy_utils 0.13.2", + "bevy_window 0.13.2", + "bitflags 2.6.0", + "bytemuck", + "codespan-reporting", + "downcast-rs", + "encase 0.7.0", + "futures-lite", + "hexasphere 10.0.0", + "image 0.24.9", + "js-sys", + "naga 0.19.2", + "naga_oil 0.13.0", + "serde", + "thiserror", + "thread_local", + "wasm-bindgen", + "web-sys", + "wgpu 0.19.4", +] + +[[package]] +name = "bevy_render" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c48acf1ff4267c231def4cbf573248d42ac60c9952108822d505019460bf36d" +dependencies = [ + "async-channel", + "bevy_app 0.14.0", + "bevy_asset 0.14.0", + "bevy_color", + "bevy_core 0.14.0", + "bevy_derive 0.14.0", + "bevy_diagnostic 0.14.0", + "bevy_ecs 0.14.0", + "bevy_encase_derive 0.14.0", + "bevy_hierarchy 0.14.0", + "bevy_math 0.14.0", + "bevy_mikktspace 0.14.0", + "bevy_reflect 0.14.0", + "bevy_render_macros 0.14.0", + "bevy_tasks 0.14.0", + "bevy_time 0.14.0", + "bevy_transform 0.14.0", + "bevy_utils 0.14.0", + "bevy_window 0.14.0", + "bitflags 2.6.0", + "bytemuck", + "codespan-reporting", + "downcast-rs", + "encase 0.8.0", + "futures-lite", + "hexasphere 12.0.0", + "image 0.25.1", + "js-sys", + "ktx2", + "naga 0.20.0", + "naga_oil 0.14.0", + "nonmax", + "ruzstd", + "send_wrapper", + "serde", + "smallvec", + "thiserror", + "wasm-bindgen", + "web-sys", + "wgpu 0.20.1", +] + +[[package]] +name = "bevy_render_macros" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "720b88406e786e378829b7d43c1ffb5300186912b99904d0d4d8ec6698a4f210" +dependencies = [ + "bevy_macro_utils 0.13.2", + "proc-macro2", + "quote", + "syn 2.0.69", +] + +[[package]] +name = "bevy_render_macros" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72ddf4a96d71519c8eca3d74dabcb89a9c0d50ab5d9230638cb004145f46e9ed" +dependencies = [ + "bevy_macro_utils 0.14.0", + "proc-macro2", + "quote", + "syn 2.0.69", +] + +[[package]] +name = "bevy_scene" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3d2caa1bfe7542dbe2c62e1bcc10791ba181fb744d2fe6711d1d373354da7c" +dependencies = [ + "bevy_app 0.13.2", + "bevy_asset 0.13.2", + "bevy_derive 0.13.2", + "bevy_ecs 0.13.2", + "bevy_hierarchy 0.13.2", + "bevy_reflect 0.13.2", + "bevy_render 0.13.2", + "bevy_transform 0.13.2", + "bevy_utils 0.13.2", + "serde", + "thiserror", + "uuid", +] + +[[package]] +name = "bevy_scene" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7a9f0388612a116f02ab6187aeab66e52c9e91abbc21f919b8b50230c4d83e7" +dependencies = [ + "bevy_app 0.14.0", + "bevy_asset 0.14.0", + "bevy_derive 0.14.0", + "bevy_ecs 0.14.0", + "bevy_hierarchy 0.14.0", + "bevy_reflect 0.14.0", + "bevy_render 0.14.0", + "bevy_transform 0.14.0", + "bevy_utils 0.14.0", + "serde", + "thiserror", + "uuid", +] + +[[package]] +name = "bevy_sprite" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cad1b555161f50e5d62b7fdf7ebeef1b24338aae7a88e51985da9553cd60ddf" +dependencies = [ + "bevy_app 0.13.2", + "bevy_asset 0.13.2", + "bevy_core_pipeline 0.13.2", + "bevy_derive 0.13.2", + "bevy_ecs 0.13.2", + "bevy_log 0.13.2", + "bevy_math 0.13.2", + "bevy_reflect 0.13.2", + "bevy_render 0.13.2", + "bevy_transform 0.13.2", + "bevy_utils 0.13.2", + "bitflags 2.6.0", + "bytemuck", + "fixedbitset 0.4.2", + "guillotiere", + "radsort", + "rectangle-pack", + "thiserror", +] + +[[package]] +name = "bevy_sprite" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d837e33ed27b9f2e5212eca4bdd5655a9ee64c52914112e6189c043cb25dd1ec" +dependencies = [ + "bevy_app 0.14.0", + "bevy_asset 0.14.0", + "bevy_color", + "bevy_core_pipeline 0.14.0", + "bevy_derive 0.14.0", + "bevy_ecs 0.14.0", + "bevy_math 0.14.0", + "bevy_reflect 0.14.0", + "bevy_render 0.14.0", + "bevy_transform 0.14.0", + "bevy_utils 0.14.0", + "bitflags 2.6.0", + "bytemuck", + "fixedbitset 0.5.7", + "guillotiere", + "radsort", + "rectangle-pack", + "thiserror", +] + +[[package]] +name = "bevy_state" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0959984092d56885fd3b320ea84fb816821bad6bfa3040b9d4ee850d3273233d" +dependencies = [ + "bevy_app 0.14.0", + "bevy_ecs 0.14.0", + "bevy_hierarchy 0.14.0", + "bevy_reflect 0.14.0", + "bevy_state_macros", + "bevy_utils 0.14.0", +] + +[[package]] +name = "bevy_state_macros" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "887a98bfa268258377cd073f5bb839518d3a1cd6b96ed81418145485b69378e6" +dependencies = [ + "bevy_macro_utils 0.14.0", + "proc-macro2", + "quote", + "syn 2.0.69", +] + +[[package]] +name = "bevy_tasks" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f07fcc4969b357de143509925b39c9a2c56eaa8750828d97f319ca9ed41897cb" +dependencies = [ + "async-channel", + "async-executor", + "async-task", + "concurrent-queue", + "futures-lite", + "wasm-bindgen-futures", +] + +[[package]] +name = "bevy_tasks" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a8bfb8d484bdb1e9bec3789c75202adc5e608c4244347152e50fb31668a54f9" +dependencies = [ + "async-channel", + "async-executor", + "concurrent-queue", + "futures-lite", + "wasm-bindgen-futures", +] + +[[package]] +name = "bevy_test" +version = "0.1.0" +dependencies = [ + "bevy 0.14.0", + "bevy_rapier3d", + "crc", + "noise", + "rand", + "rapier3d 0.21.0", + "serialport", +] + +[[package]] +name = "bevy_text" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "454fd29b7828244356b2e0ce782e6d0a6f26b47f521456accde3a7191b121727" +dependencies = [ + "ab_glyph", + "bevy_app 0.14.0", + "bevy_asset 0.14.0", + "bevy_color", + "bevy_ecs 0.14.0", + "bevy_math 0.14.0", + "bevy_reflect 0.14.0", + "bevy_render 0.14.0", + "bevy_sprite 0.14.0", + "bevy_transform 0.14.0", + "bevy_utils 0.14.0", + "bevy_window 0.14.0", + "glyph_brush_layout", + "serde", + "thiserror", +] + +[[package]] +name = "bevy_time" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38ea5ae9fe7f56f555dbb05a88d34931907873e3f0c7dc426591839eef72fe3e" +dependencies = [ + "bevy_app 0.13.2", + "bevy_ecs 0.13.2", + "bevy_reflect 0.13.2", + "bevy_utils 0.13.2", + "crossbeam-channel", + "serde", + "thiserror", +] + +[[package]] +name = "bevy_time" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6c3d3d14ee8b0dbe4819fd516cc75509b61946134d78e0ee89ad3d1835ffe6c" +dependencies = [ + "bevy_app 0.14.0", + "bevy_ecs 0.14.0", + "bevy_reflect 0.14.0", + "bevy_utils 0.14.0", + "crossbeam-channel", + "thiserror", +] + +[[package]] +name = "bevy_transform" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0d51a1f332cc00939d2f19ed6b909e5ed7037e39c7e25cc86930d79d432163e" +dependencies = [ + "bevy_app 0.13.2", + "bevy_ecs 0.13.2", + "bevy_hierarchy 0.13.2", + "bevy_math 0.13.2", + "bevy_reflect 0.13.2", + "serde", + "thiserror", +] + +[[package]] +name = "bevy_transform" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97e8aa6b16be573277c6ceda30aebf1d78af7c6ede19b448dcb052fb8601d815" +dependencies = [ + "bevy_app 0.14.0", + "bevy_ecs 0.14.0", + "bevy_hierarchy 0.14.0", + "bevy_math 0.14.0", + "bevy_reflect 0.14.0", + "thiserror", +] + +[[package]] +name = "bevy_ui" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6bbc30be39cfbfa3a073b541d22aea43ab14452dea12d7411ce201df17ff7b1" +dependencies = [ + "bevy_a11y 0.13.2", + "bevy_app 0.13.2", + "bevy_asset 0.13.2", + "bevy_core_pipeline 0.13.2", + "bevy_derive 0.13.2", + "bevy_ecs 0.13.2", + "bevy_hierarchy 0.13.2", + "bevy_input 0.13.2", + "bevy_log 0.13.2", + "bevy_math 0.13.2", + "bevy_reflect 0.13.2", + "bevy_render 0.13.2", + "bevy_sprite 0.13.2", + "bevy_transform 0.13.2", + "bevy_utils 0.13.2", + "bevy_window 0.13.2", + "bytemuck", + "serde", + "taffy 0.3.19", + "thiserror", +] + +[[package]] +name = "bevy_ui" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38d9f864c646f3742ff77f67bcd89a13a7ab024b68ca2f1bfbab8245bcb1c06c" +dependencies = [ + "bevy_a11y 0.14.0", + "bevy_app 0.14.0", + "bevy_asset 0.14.0", + "bevy_color", + "bevy_core_pipeline 0.14.0", + "bevy_derive 0.14.0", + "bevy_ecs 0.14.0", + "bevy_hierarchy 0.14.0", + "bevy_input 0.14.0", + "bevy_math 0.14.0", + "bevy_reflect 0.14.0", + "bevy_render 0.14.0", + "bevy_sprite 0.14.0", + "bevy_text", + "bevy_transform 0.14.0", + "bevy_utils 0.14.0", + "bevy_window 0.14.0", + "bytemuck", + "nonmax", + "smallvec", + "taffy 0.5.1", + "thiserror", +] + +[[package]] +name = "bevy_utils" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a9f845a985c00e0ee8dc2d8af3f417be925fb52aad4bda5b96e2e58a2b4d2eb" +dependencies = [ + "ahash", + "bevy_utils_proc_macros 0.13.2", + "getrandom", + "hashbrown 0.14.5", + "nonmax", + "petgraph", + "smallvec", + "thiserror", + "tracing", + "uuid", + "web-time 0.2.4", +] + +[[package]] +name = "bevy_utils" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fab364910e8f5839578aba9cfda00a8388e9ebe352ceb8491a742ce6af9ec6e" +dependencies = [ + "ahash", + "bevy_utils_proc_macros 0.14.0", + "getrandom", + "hashbrown 0.14.5", + "thread_local", + "tracing", + "web-time 1.1.0", +] + +[[package]] +name = "bevy_utils_proc_macros" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef158627f30503d5c18c20c60b444829f698d343516eeaf6eeee078c9a45163" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.69", +] + +[[package]] +name = "bevy_utils_proc_macros" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad9db261ab33a046e1f54b35f885a44f21fcc80aa2bc9050319466b88fe58fe3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.69", +] + +[[package]] +name = "bevy_window" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "976202d2ed838176595b550ac654b15ae236e0178a6f19a94ca6d58f2a96ca60" +dependencies = [ + "bevy_a11y 0.13.2", + "bevy_app 0.13.2", + "bevy_ecs 0.13.2", + "bevy_input 0.13.2", + "bevy_math 0.13.2", + "bevy_reflect 0.13.2", + "bevy_utils 0.13.2", + "raw-window-handle", + "serde", + "smol_str", +] + +[[package]] +name = "bevy_window" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9ea5777f933bf7ecaeb3af1a30845720ec730e007972ca7d4aba2d3512abe24" +dependencies = [ + "bevy_a11y 0.14.0", + "bevy_app 0.14.0", + "bevy_ecs 0.14.0", + "bevy_math 0.14.0", + "bevy_reflect 0.14.0", + "bevy_utils 0.14.0", + "raw-window-handle", + "smol_str", +] + +[[package]] +name = "bevy_winit" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa66539aa93d8522b146bf82de429714ea6370a6061fc1f1ff7bcacd4e64c6c4" +dependencies = [ + "accesskit_winit 0.17.0", + "approx", + "bevy_a11y 0.13.2", + "bevy_app 0.13.2", + "bevy_derive 0.13.2", + "bevy_ecs 0.13.2", + "bevy_hierarchy 0.13.2", + "bevy_input 0.13.2", + "bevy_math 0.13.2", + "bevy_tasks 0.13.2", + "bevy_utils 0.13.2", + "bevy_window 0.13.2", + "crossbeam-channel", + "raw-window-handle", + "wasm-bindgen", + "web-sys", + "winit 0.29.15", +] + +[[package]] +name = "bevy_winit" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8c2213bbf14debe819ec8ad4913f233c596002d087bc6f1f20d533e2ebaf8c6" +dependencies = [ + "accesskit_winit 0.20.4", + "approx", + "bevy_a11y 0.14.0", + "bevy_app 0.14.0", + "bevy_derive 0.14.0", + "bevy_ecs 0.14.0", + "bevy_hierarchy 0.14.0", + "bevy_input 0.14.0", + "bevy_log 0.14.0", + "bevy_math 0.14.0", + "bevy_reflect 0.14.0", + "bevy_tasks 0.14.0", + "bevy_utils 0.14.0", + "bevy_window 0.14.0", + "cfg-if", + "crossbeam-channel", + "raw-window-handle", + "wasm-bindgen", + "web-sys", + "winit 0.30.3", +] + +[[package]] +name = "bindgen" +version = "0.69.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a00dc851838a2120612785d195287475a3ac45514741da670b735818822129a0" +dependencies = [ + "bitflags 2.6.0", + "cexpr", + "clang-sys", + "itertools", + "lazy_static", + "lazycell", + "proc-macro2", + "quote", + "regex", + "rustc-hash 1.1.0", + "shlex", + "syn 2.0.69", +] + +[[package]] +name = "bit-set" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" +dependencies = [ + "bit-vec", +] + +[[package]] +name = "bit-vec" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" +dependencies = [ + "serde", +] + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" +dependencies = [ + "serde", +] + +[[package]] +name = "blake3" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30cca6d3674597c30ddf2c587bf8d9d65c9a84d2326d941cc79c9842dfe0ef52" +dependencies = [ + "arrayref", + "arrayvec", + "cc", + "cfg-if", + "constant_time_eq", +] + +[[package]] +name = "block" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" + +[[package]] +name = "block-sys" +version = "0.1.0-beta.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fa55741ee90902547802152aaf3f8e5248aab7e21468089560d4c8840561146" +dependencies = [ + "objc-sys 0.2.0-beta.2", +] + +[[package]] +name = "block-sys" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae85a0696e7ea3b835a453750bf002770776609115e6d25c6d2ff28a8200f7e7" +dependencies = [ + "objc-sys 0.3.5", +] + +[[package]] +name = "block2" +version = "0.2.0-alpha.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8dd9e63c1744f755c2f60332b88de39d341e5e86239014ad839bd71c106dec42" +dependencies = [ + "block-sys 0.1.0-beta.1", + "objc2-encode 2.0.0-pre.2", +] + +[[package]] +name = "block2" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15b55663a85f33501257357e6421bb33e769d5c9ffb5ba0921c975a123e35e68" +dependencies = [ + "block-sys 0.2.1", + "objc2 0.4.1", +] + +[[package]] +name = "block2" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c132eebf10f5cad5289222520a4a058514204aed6d791f1cf4fe8088b82d15f" +dependencies = [ + "objc2 0.5.2", +] + +[[package]] +name = "blocking" +version = "1.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "703f41c54fc768e63e091340b424302bb1c29ef4aa0c7f10fe849dfb114d29ea" +dependencies = [ + "async-channel", + "async-task", + "futures-io", + "futures-lite", + "piper", +] + +[[package]] +name = "bumpalo" +version = "3.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" + +[[package]] +name = "bytemuck" +version = "1.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b236fc92302c97ed75b38da1f4917b5cdda4984745740f153a5d3059e48d725e" +dependencies = [ + "bytemuck_derive", +] + +[[package]] +name = "bytemuck_derive" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ee891b04274a59bd38b412188e24b849617b2e45a0fd8d057deb63e7403761b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.69", +] + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bytes" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9" + +[[package]] +name = "calloop" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fba7adb4dd5aa98e5553510223000e7148f621165ec5f9acd7113f6ca4995298" +dependencies = [ + "bitflags 2.6.0", + "log", + "polling", + "rustix", + "slab", + "thiserror", +] + +[[package]] +name = "calloop-wayland-source" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f0ea9b9476c7fad82841a8dbb380e2eae480c21910feba80725b46931ed8f02" +dependencies = [ + "calloop", + "rustix", + "wayland-backend", + "wayland-client", +] + +[[package]] +name = "cc" +version = "1.0.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74b6a57f98764a267ff415d50a25e6e166f3831a5071af4995296ea97d210490" +dependencies = [ + "jobserver", + "libc", + "once_cell", +] + +[[package]] +name = "cesu8" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" + +[[package]] +name = "cexpr" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" +dependencies = [ + "nom", +] + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "cfg_aliases" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" + +[[package]] +name = "cfg_aliases" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + +[[package]] +name = "clang-sys" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" +dependencies = [ + "glob", + "libc", + "libloading 0.8.4", +] + +[[package]] +name = "codespan-reporting" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" +dependencies = [ + "termcolor", + "unicode-width", +] + +[[package]] +name = "color_quant" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" + +[[package]] +name = "com" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e17887fd17353b65b1b2ef1c526c83e26cd72e74f598a8dc1bee13a48f3d9f6" +dependencies = [ + "com_macros", +] + +[[package]] +name = "com_macros" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d375883580a668c7481ea6631fc1a8863e33cc335bf56bfad8d7e6d4b04b13a5" +dependencies = [ + "com_macros_support", + "proc-macro2", + "syn 1.0.109", +] + +[[package]] +name = "com_macros_support" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad899a1087a9296d5644792d7cb72b8e34c1bec8e7d4fbc002230169a6e8710c" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "combine" +version = "4.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" +dependencies = [ + "bytes", + "memchr", +] + +[[package]] +name = "concurrent-queue" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "console_error_panic_hook" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc" +dependencies = [ + "cfg-if", + "wasm-bindgen", +] + +[[package]] +name = "const-fnv1a-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32b13ea120a812beba79e34316b3942a857c86ec1593cb34f27bb28272ce2cca" + +[[package]] +name = "const_panic" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6051f239ecec86fde3410901ab7860d458d160371533842974fc61f96d15879b" + +[[package]] +name = "const_soft_float" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87ca1caa64ef4ed453e68bb3db612e51cf1b2f5b871337f0fcab1c8f87cc3dff" + +[[package]] +name = "constant_time_eq" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7144d30dcf0fafbce74250a3963025d8d52177934239851c917d29f1df280c2" + +[[package]] +name = "constgebra" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1aaf9b65849a68662ac6c0810c8893a765c960b907dd7cfab9c4a50bf764fbc" +dependencies = [ + "const_soft_float", +] + +[[package]] +name = "core-foundation" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" + +[[package]] +name = "core-graphics" +version = "0.23.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c07782be35f9e1140080c6b96f0d44b739e2278479f64e02fdab4e32dfd8b081" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "core-graphics-types", + "foreign-types", + "libc", +] + +[[package]] +name = "core-graphics-types" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45390e6114f68f718cc7a830514a96f903cccd70d02a8f6d9f643ac4ba45afaf" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "libc", +] + +[[package]] +name = "coreaudio-rs" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "321077172d79c662f64f5071a03120748d5bb652f5231570141be24cfcd2bace" +dependencies = [ + "bitflags 1.3.2", + "core-foundation-sys", + "coreaudio-sys", +] + +[[package]] +name = "coreaudio-sys" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f01585027057ff5f0a5bf276174ae4c1594a2c5bde93d5f46a016d76270f5a9" +dependencies = [ + "bindgen", +] + +[[package]] +name = "cpal" +version = "0.15.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "873dab07c8f743075e57f524c583985fbaf745602acbe916a01539364369a779" +dependencies = [ + "alsa", + "core-foundation-sys", + "coreaudio-rs", + "dasp_sample", + "jni", + "js-sys", + "libc", + "mach2", + "ndk 0.8.0", + "ndk-context", + "oboe", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "windows 0.54.0", +] + +[[package]] +name = "crc" +version = "3.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69e6e4d7b33a94f0991c26729976b10ebde1d34c3ee82408fb536164fa10d636" +dependencies = [ + "crc-catalog", +] + +[[package]] +name = "crc-catalog" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" + +[[package]] +name = "crc32fast" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crossbeam" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1137cd7e7fc0fb5d3c5a8678be38ec56e819125d8d7907411fe24ccb943faca8" +dependencies = [ + "crossbeam-channel", + "crossbeam-deque", + "crossbeam-epoch", + "crossbeam-queue", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-queue" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df0346b5d5e76ac2fe4e327c5fd1118d6be7c51dfb18f9b7922923f287471e35" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" + +[[package]] +name = "cursor-icon" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96a6ac251f4a2aca6b3f91340350eab87ae57c3f127ffeb585e92bd336717991" + +[[package]] +name = "d3d12" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e3d747f100290a1ca24b752186f61f6637e1deffe3bf6320de6fcb29510a307" +dependencies = [ + "bitflags 2.6.0", + "libloading 0.8.4", + "winapi", +] + +[[package]] +name = "d3d12" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b28bfe653d79bd16c77f659305b195b82bb5ce0c0eb2a4846b82ddbd77586813" +dependencies = [ + "bitflags 2.6.0", + "libloading 0.8.4", + "winapi", +] + +[[package]] +name = "dasp_sample" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c87e182de0887fd5361989c677c4e8f5000cd9491d6d563161a8f3a5519fc7f" + +[[package]] +name = "data-encoding" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8566979429cf69b49a5c740c60791108e86440e8be149bbea4fe54d2c32d6e2" + +[[package]] +name = "dispatch" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" + +[[package]] +name = "dlib" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "330c60081dcc4c72131f8eb70510f1ac07223e5d4163db481a04a0befcffa412" +dependencies = [ + "libloading 0.8.4", +] + +[[package]] +name = "document-features" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef5282ad69563b5fc40319526ba27e0e7363d552a896f0297d54f767717f9b95" +dependencies = [ + "litrs", +] + +[[package]] +name = "downcast-rs" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" + +[[package]] +name = "dpi" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f25c0e292a7ca6d6498557ff1df68f32c99850012b6ea401cf8daf771f22ff53" + +[[package]] +name = "either" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" + +[[package]] +name = "encase" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95ed933078d2e659745df651f4c180511cd582e5b9414ff896e7d50d207e3103" +dependencies = [ + "const_panic", + "encase_derive 0.7.0", + "glam 0.25.0", + "thiserror", +] + +[[package]] +name = "encase" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a9299a95fa5671ddf29ecc22b00e121843a65cb9ff24911e394b4ae556baf36" +dependencies = [ + "const_panic", + "encase_derive 0.8.0", + "glam 0.27.0", + "thiserror", +] + +[[package]] +name = "encase_derive" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4ce1449c7d19eba6cc0abd231150ad81620a8dce29601d7f8d236e5d431d72a" +dependencies = [ + "encase_derive_impl 0.7.0", +] + +[[package]] +name = "encase_derive" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07e09decb3beb1fe2db6940f598957b2e1f7df6206a804d438ff6cb2a9cddc10" +dependencies = [ + "encase_derive_impl 0.8.0", +] + +[[package]] +name = "encase_derive_impl" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92959a9e8d13eaa13b8ae8c7b583c3bf1669ca7a8e7708a088d12587ba86effc" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.69", +] + +[[package]] +name = "encase_derive_impl" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd31dbbd9743684d339f907a87fe212cb7b51d75b9e8e74181fe363199ee9b47" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.69", +] + +[[package]] +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + +[[package]] +name = "erased-serde" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24e2389d65ab4fab27dc2a5de7b191e1f6617d1f1c8855c0dc569c94a4cbb18d" +dependencies = [ + "serde", + "typeid", +] + +[[package]] +name = "errno" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "euclid" +version = "0.22.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0f0eb73b934648cd7a4a61f1b15391cd95dab0b4da6e2e66c2a072c144b4a20" +dependencies = [ + "num-traits", +] + +[[package]] +name = "event-listener" +version = "2.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" + +[[package]] +name = "event-listener" +version = "5.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6032be9bd27023a771701cc49f9f053c751055f71efb2e0ae5c15809093675ba" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite", +] + +[[package]] +name = "event-listener-strategy" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f214dc438f977e6d4e3500aaa277f5ad94ca83fbbd9b1a15713ce2344ccc5a1" +dependencies = [ + "event-listener 5.3.1", + "pin-project-lite", +] + +[[package]] +name = "fastrand" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" + +[[package]] +name = "fdeflate" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f9bfee30e4dedf0ab8b422f03af778d9612b63f502710fc500a334ebe2de645" +dependencies = [ + "simd-adler32", +] + +[[package]] +name = "fixedbitset" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" + +[[package]] +name = "fixedbitset" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" + +[[package]] +name = "flate2" +version = "1.0.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f54427cfd1c7829e2a139fcefea601bf088ebca651d2bf53ebc600eac295dae" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foreign-types" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965" +dependencies = [ + "foreign-types-macros", + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-macros" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.69", +] + +[[package]] +name = "foreign-types-shared" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b" + +[[package]] +name = "futures-core" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" + +[[package]] +name = "futures-io" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" + +[[package]] +name = "futures-lite" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52527eb5074e35e9339c6b4e8d12600c7128b68fb25dcb9fa9dec18f7c25f3a5" +dependencies = [ + "fastrand", + "futures-core", + "futures-io", + "parking", + "pin-project-lite", +] + +[[package]] +name = "gethostname" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0176e0459c2e4a1fe232f984bca6890e681076abb9934f6cea7c326f3fc47818" +dependencies = [ + "libc", + "windows-targets 0.48.5", +] + +[[package]] +name = "getrandom" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "wasi", + "wasm-bindgen", +] + +[[package]] +name = "gilrs" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f226b8f4d9bc7da93de8efd8747c6b1086409ca3f4b6d51e9a7f5461a9183fe" +dependencies = [ + "fnv", + "gilrs-core", + "log", + "uuid", + "vec_map", +] + +[[package]] +name = "gilrs-core" +version = "0.5.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b922f294d9f062af517ea0bd0a036ddcf11c2842211c2f9c71a3ceee859e10b6" +dependencies = [ + "core-foundation", + "inotify", + "io-kit-sys", + "js-sys", + "libc", + "libudev-sys", + "log", + "nix 0.29.0", + "uuid", + "vec_map", + "wasm-bindgen", + "web-sys", + "windows 0.57.0", +] + +[[package]] +name = "gl_generator" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a95dfc23a2b4a9a2f5ab41d194f8bfda3cabec42af4e39f08c339eb2a0c124d" +dependencies = [ + "khronos_api", + "log", + "xml-rs", +] + +[[package]] +name = "glam" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "151665d9be52f9bb40fc7966565d39666f2d1e69233571b71b87791c7e0528b3" +dependencies = [ + "bytemuck", + "serde", +] + +[[package]] +name = "glam" +version = "0.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e05e7e6723e3455f4818c7b26e855439f7546cf617ef669d1adedb8669e5cb9" +dependencies = [ + "bytemuck", + "rand", + "serde", +] + +[[package]] +name = "glob" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" + +[[package]] +name = "glow" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd348e04c43b32574f2de31c8bb397d96c9fcfa1371bd4ca6d8bdc464ab121b1" +dependencies = [ + "js-sys", + "slotmap", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "gltf" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3ce1918195723ce6ac74e80542c5a96a40c2b26162c1957a5cd70799b8cacf7" +dependencies = [ + "byteorder", + "gltf-json", + "lazy_static", + "serde_json", +] + +[[package]] +name = "gltf-derive" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14070e711538afba5d6c807edb74bcb84e5dbb9211a3bf5dea0dfab5b24f4c51" +dependencies = [ + "inflections", + "proc-macro2", + "quote", + "syn 2.0.69", +] + +[[package]] +name = "gltf-json" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6176f9d60a7eab0a877e8e96548605dedbde9190a7ae1e80bbcc1c9af03ab14" +dependencies = [ + "gltf-derive", + "serde", + "serde_derive", + "serde_json", +] + +[[package]] +name = "glutin_wgl_sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c8098adac955faa2d31079b65dc48841251f69efd3ac25477903fc424362ead" +dependencies = [ + "gl_generator", +] + +[[package]] +name = "glyph_brush_layout" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b1e288bfd2f6c0313f78bf5aa538356ad481a3bb97e9b7f93220ab0066c5992" +dependencies = [ + "ab_glyph", + "approx", + "xi-unicode", +] + +[[package]] +name = "gpu-alloc" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbcd2dba93594b227a1f57ee09b8b9da8892c34d55aa332e034a228d0fe6a171" +dependencies = [ + "bitflags 2.6.0", + "gpu-alloc-types", +] + +[[package]] +name = "gpu-alloc-types" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98ff03b468aa837d70984d55f5d3f846f6ec31fe34bbb97c4f85219caeee1ca4" +dependencies = [ + "bitflags 2.6.0", +] + +[[package]] +name = "gpu-allocator" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f56f6318968d03c18e1bcf4857ff88c61157e9da8e47c5f29055d60e1228884" +dependencies = [ + "log", + "presser", + "thiserror", + "winapi", + "windows 0.52.0", +] + +[[package]] +name = "gpu-descriptor" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc11df1ace8e7e564511f53af41f3e42ddc95b56fd07b3f4445d2a6048bc682c" +dependencies = [ + "bitflags 2.6.0", + "gpu-descriptor-types 0.1.2", + "hashbrown 0.14.5", +] + +[[package]] +name = "gpu-descriptor" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c08c1f623a8d0b722b8b99f821eb0ba672a1618f0d3b16ddbee1cedd2dd8557" +dependencies = [ + "bitflags 2.6.0", + "gpu-descriptor-types 0.2.0", + "hashbrown 0.14.5", +] + +[[package]] +name = "gpu-descriptor-types" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bf0b36e6f090b7e1d8a4b49c0cb81c1f8376f72198c65dd3ad9ff3556b8b78c" +dependencies = [ + "bitflags 2.6.0", +] + +[[package]] +name = "gpu-descriptor-types" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdf242682df893b86f33a73828fb09ca4b2d3bb6cc95249707fc684d27484b91" +dependencies = [ + "bitflags 2.6.0", +] + +[[package]] +name = "grid" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eec1c01eb1de97451ee0d60de7d81cf1e72aabefb021616027f3d1c3ec1c723c" + +[[package]] +name = "grid" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be136d9dacc2a13cc70bb6c8f902b414fb2641f8db1314637c6b7933411a8f82" + +[[package]] +name = "guillotiere" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b62d5865c036cb1393e23c50693df631d3f5d7bcca4c04fe4cc0fd592e74a782" +dependencies = [ + "euclid", + "svg_fmt", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + +[[package]] +name = "hashbrown" +version = "0.14.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" +dependencies = [ + "ahash", + "allocator-api2", + "serde", +] + +[[package]] +name = "hassle-rs" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af2a7e73e1f34c48da31fb668a907f250794837e08faa144fd24f0b8b741e890" +dependencies = [ + "bitflags 2.6.0", + "com", + "libc", + "libloading 0.8.4", + "thiserror", + "widestring", + "winapi", +] + +[[package]] +name = "hermit-abi" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" + +[[package]] +name = "hexasphere" +version = "10.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f33ddb7f7143d9e703c072e88b98cd8b9719f174137a671429351bd2ee43c02a" +dependencies = [ + "constgebra", + "glam 0.25.0", +] + +[[package]] +name = "hexasphere" +version = "12.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edd6b038160f086b0a7496edae34169ae22f328793cbe2b627a5a3d8373748ec" +dependencies = [ + "constgebra", + "glam 0.27.0", +] + +[[package]] +name = "hexf-parse" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfa686283ad6dd069f105e5ab091b04c62850d3e4cf5d67debad1933f55023df" + +[[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 = "image" +version = "0.24.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5690139d2f55868e080017335e4b94cb7414274c74f1669c84fb5feba2c9f69d" +dependencies = [ + "bytemuck", + "byteorder", + "color_quant", + "num-traits", +] + +[[package]] +name = "image" +version = "0.25.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd54d660e773627692c524beaad361aca785a4f9f5730ce91f42aabe5bce3d11" +dependencies = [ + "bytemuck", + "byteorder", + "num-traits", + "png", +] + +[[package]] +name = "immutable-chunkmap" +version = "2.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4419f022e55cc63d5bbd6b44b71e1d226b9c9480a47824c706e9d54e5c40c5eb" +dependencies = [ + "arrayvec", +] + +[[package]] +name = "indexmap" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg", + "hashbrown 0.12.3", + "serde", +] + +[[package]] +name = "indexmap" +version = "2.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" +dependencies = [ + "equivalent", + "hashbrown 0.14.5", +] + +[[package]] +name = "inflections" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a257582fdcde896fd96463bf2d40eefea0580021c0712a0e2b028b60b47a837a" + +[[package]] +name = "inotify" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdd168d97690d0b8c412d6b6c10360277f4d7ee495c5d0d5d5fe0854923255cc" +dependencies = [ + "bitflags 1.3.2", + "inotify-sys", + "libc", +] + +[[package]] +name = "inotify-sys" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e05c02b5e89bff3b946cedeca278abc628fe811e604f027c45a8aa3cf793d0eb" +dependencies = [ + "libc", +] + +[[package]] +name = "io-kit-sys" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "617ee6cf8e3f66f3b4ea67a4058564628cde41901316e19f559e14c7c72c5e7b" +dependencies = [ + "core-foundation-sys", + "mach2", +] + +[[package]] +name = "itertools" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" + +[[package]] +name = "jni" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" +dependencies = [ + "cesu8", + "cfg-if", + "combine", + "jni-sys", + "log", + "thiserror", + "walkdir", + "windows-sys 0.45.0", +] + +[[package]] +name = "jni-sys" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" + +[[package]] +name = "jobserver" +version = "0.1.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2b099aaa34a9751c5bf0878add70444e1ed2dd73f347be99003d4577277de6e" +dependencies = [ + "libc", +] + +[[package]] +name = "js-sys" +version = "0.3.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "khronos-egl" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6aae1df220ece3c0ada96b8153459b67eebe9ae9212258bb0134ae60416fdf76" +dependencies = [ + "libc", + "libloading 0.8.4", + "pkg-config", +] + +[[package]] +name = "khronos_api" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2db585e1d738fc771bf08a151420d3ed193d9d895a36df7f6f8a9456b911ddc" + +[[package]] +name = "ktx2" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87d65e08a9ec02e409d27a0139eaa6b9756b4d81fe7cde71f6941a83730ce838" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" + +[[package]] +name = "lazycell" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" + +[[package]] +name = "lewton" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "777b48df9aaab155475a83a7df3070395ea1ac6902f5cd062b8f2b028075c030" +dependencies = [ + "byteorder", + "ogg", + "tinyvec", +] + +[[package]] +name = "libc" +version = "0.2.155" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" + +[[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.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e310b3a6b5907f99202fcdb4960ff45b93735d7c7d96b760fcff8db2dc0e103d" +dependencies = [ + "cfg-if", + "windows-targets 0.52.6", +] + +[[package]] +name = "libm" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" + +[[package]] +name = "libredox" +version = "0.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3af92c55d7d839293953fcd0fda5ecfe93297cfde6ffbdec13b41d99c0ba6607" +dependencies = [ + "bitflags 2.6.0", + "libc", + "redox_syscall 0.4.1", +] + +[[package]] +name = "libudev" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78b324152da65df7bb95acfcaab55e3097ceaab02fb19b228a9eb74d55f135e0" +dependencies = [ + "libc", + "libudev-sys", +] + +[[package]] +name = "libudev-sys" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c8469b4a23b962c1396b9b451dda50ef5b283e8dd309d69033475fa9b334324" +dependencies = [ + "libc", + "pkg-config", +] + +[[package]] +name = "linux-raw-sys" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" + +[[package]] +name = "litrs" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4ce301924b7887e9d637144fdade93f9dfff9b60981d4ac161db09720d39aa5" + +[[package]] +name = "lock_api" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" + +[[package]] +name = "mach2" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19b955cdeb2a02b9117f121ce63aa52d08ade45de53e48fe6a38b39c10f6f709" +dependencies = [ + "libc", +] + +[[package]] +name = "malloc_buf" +version = "0.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" +dependencies = [ + "libc", +] + +[[package]] +name = "matchers" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" +dependencies = [ + "regex-automata 0.1.10", +] + +[[package]] +name = "matrixmultiply" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7574c1cf36da4798ab73da5b215bbf444f50718207754cb522201d78d1cd0ff2" +dependencies = [ + "autocfg", + "rawpointer", +] + +[[package]] +name = "memchr" +version = "2.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" + +[[package]] +name = "memmap2" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe751422e4a8caa417e13c3ea66452215d7d63e19e604f4980461212f3ae1322" +dependencies = [ + "libc", +] + +[[package]] +name = "metal" +version = "0.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c43f73953f8cbe511f021b58f18c3ce1c3d1ae13fe953293e13345bf83217f25" +dependencies = [ + "bitflags 2.6.0", + "block", + "core-graphics-types", + "foreign-types", + "log", + "objc", + "paste", +] + +[[package]] +name = "metal" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5637e166ea14be6063a3f8ba5ccb9a4159df7d8f6d61c02fc3d480b1f90dcfcb" +dependencies = [ + "bitflags 2.6.0", + "block", + "core-graphics-types", + "foreign-types", + "log", + "objc", + "paste", +] + +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + +[[package]] +name = "miniz_oxide" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08" +dependencies = [ + "adler", + "simd-adler32", +] + +[[package]] +name = "naga" +version = "0.19.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50e3524642f53d9af419ab5e8dd29d3ba155708267667c2f3f06c88c9e130843" +dependencies = [ + "bit-set", + "bitflags 2.6.0", + "codespan-reporting", + "hexf-parse", + "indexmap 2.2.6", + "log", + "num-traits", + "pp-rs", + "rustc-hash 1.1.0", + "spirv", + "termcolor", + "thiserror", + "unicode-xid", +] + +[[package]] +name = "naga" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e536ae46fcab0876853bd4a632ede5df4b1c2527a58f6c5a4150fe86be858231" +dependencies = [ + "arrayvec", + "bit-set", + "bitflags 2.6.0", + "codespan-reporting", + "hexf-parse", + "indexmap 2.2.6", + "log", + "num-traits", + "pp-rs", + "rustc-hash 1.1.0", + "spirv", + "termcolor", + "thiserror", + "unicode-xid", +] + +[[package]] +name = "naga_oil" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0ea62ae0f2787456afca7209ca180522b41f00cbe159ee369eba1e07d365cd1" +dependencies = [ + "bit-set", + "codespan-reporting", + "data-encoding", + "indexmap 2.2.6", + "naga 0.19.2", + "once_cell", + "regex", + "regex-syntax 0.8.4", + "rustc-hash 1.1.0", + "thiserror", + "tracing", + "unicode-ident", +] + +[[package]] +name = "naga_oil" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "275d9720a7338eedac966141089232514c84d76a246a58ef501af88c5edf402f" +dependencies = [ + "bit-set", + "codespan-reporting", + "data-encoding", + "indexmap 2.2.6", + "naga 0.20.0", + "once_cell", + "regex", + "regex-syntax 0.8.4", + "rustc-hash 1.1.0", + "thiserror", + "tracing", + "unicode-ident", +] + +[[package]] +name = "nalgebra" +version = "0.32.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b5c17de023a86f59ed79891b2e5d5a94c705dbe904a5b5c9c952ea6221b03e4" +dependencies = [ + "approx", + "glam 0.25.0", + "matrixmultiply", + "nalgebra-macros", + "num-complex", + "num-rational", + "num-traits", + "serde", + "simba 0.8.1", + "typenum", +] + +[[package]] +name = "nalgebra" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c4b5f057b303842cf3262c27e465f4c303572e7f6b0648f60e16248ac3397f4" +dependencies = [ + "approx", + "matrixmultiply", + "nalgebra-macros", + "num-complex", + "num-rational", + "num-traits", + "simba 0.9.0", + "typenum", +] + +[[package]] +name = "nalgebra-macros" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "254a5372af8fc138e36684761d3c0cdb758a4410e938babcff1c860ce14ddbfc" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.69", +] + +[[package]] +name = "ndk" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2076a31b7010b17a38c01907c45b945e8f11495ee4dd588309718901b1f7a5b7" +dependencies = [ + "bitflags 2.6.0", + "jni-sys", + "log", + "ndk-sys 0.5.0+25.2.9519653", + "num_enum", + "raw-window-handle", + "thiserror", +] + +[[package]] +name = "ndk" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4" +dependencies = [ + "bitflags 2.6.0", + "jni-sys", + "log", + "ndk-sys 0.6.0+11769913", + "num_enum", + "raw-window-handle", + "thiserror", +] + +[[package]] +name = "ndk-context" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" + +[[package]] +name = "ndk-sys" +version = "0.5.0+25.2.9519653" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c196769dd60fd4f363e11d948139556a344e79d451aeb2fa2fd040738ef7691" +dependencies = [ + "jni-sys", +] + +[[package]] +name = "ndk-sys" +version = "0.6.0+11769913" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee6cda3051665f1fb8d9e08fc35c96d5a244fb1be711a03b71118828afc9a873" +dependencies = [ + "jni-sys", +] + +[[package]] +name = "nix" +version = "0.26.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b" +dependencies = [ + "bitflags 1.3.2", + "cfg-if", + "libc", +] + +[[package]] +name = "nix" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" +dependencies = [ + "bitflags 2.6.0", + "cfg-if", + "cfg_aliases 0.2.1", + "libc", +] + +[[package]] +name = "noise" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6da45c8333f2e152fc665d78a380be060eb84fad8ca4c9f7ac8ca29216cff0cc" +dependencies = [ + "num-traits", + "rand", + "rand_xorshift", +] + +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "nonmax" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "610a5acd306ec67f907abe5567859a3c693fb9886eb1f012ab8f2a47bef3db51" + +[[package]] +name = "ntapi" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8a3895c6391c39d7fe7ebc444a87eb2991b2a0bc718fdabd071eec617fc68e4" +dependencies = [ + "winapi", +] + +[[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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" +dependencies = [ + "num-integer", + "num-traits", +] + +[[package]] +name = "num-complex" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" +dependencies = [ + "num-traits", + "serde", +] + +[[package]] +name = "num-derive" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.69", +] + +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824" +dependencies = [ + "num-bigint", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", + "libm", +] + +[[package]] +name = "num_enum" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02339744ee7253741199f897151b38e72257d13802d4ee837285cc2990a90845" +dependencies = [ + "num_enum_derive", +] + +[[package]] +name = "num_enum_derive" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "681030a937600a36906c185595136d26abfebb4aa9c65701cefcaf8578bb982b" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.69", +] + +[[package]] +name = "objc" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" +dependencies = [ + "malloc_buf", + "objc_exception", +] + +[[package]] +name = "objc-sys" +version = "0.2.0-beta.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b9834c1e95694a05a828b59f55fa2afec6288359cda67146126b3f90a55d7" + +[[package]] +name = "objc-sys" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdb91bdd390c7ce1a8607f35f3ca7151b65afc0ff5ff3b34fa350f7d7c7e4310" + +[[package]] +name = "objc2" +version = "0.3.0-beta.3.patch-leaks.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e01640f9f2cb1220bbe80325e179e532cb3379ebcd1bf2279d703c19fe3a468" +dependencies = [ + "block2 0.2.0-alpha.6", + "objc-sys 0.2.0-beta.2", + "objc2-encode 2.0.0-pre.2", +] + +[[package]] +name = "objc2" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "559c5a40fdd30eb5e344fbceacf7595a81e242529fb4e21cf5f43fb4f11ff98d" +dependencies = [ + "objc-sys 0.3.5", + "objc2-encode 3.0.0", +] + +[[package]] +name = "objc2" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46a785d4eeff09c14c487497c162e92766fbb3e4059a71840cecc03d9a50b804" +dependencies = [ + "objc-sys 0.3.5", + "objc2-encode 4.0.3", +] + +[[package]] +name = "objc2-app-kit" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4e89ad9e3d7d297152b17d39ed92cd50ca8063a89a9fa569046d41568891eff" +dependencies = [ + "bitflags 2.6.0", + "block2 0.5.1", + "libc", + "objc2 0.5.2", + "objc2-core-data", + "objc2-core-image", + "objc2-foundation", + "objc2-quartz-core", +] + +[[package]] +name = "objc2-cloud-kit" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74dd3b56391c7a0596a295029734d3c1c5e7e510a4cb30245f8221ccea96b009" +dependencies = [ + "bitflags 2.6.0", + "block2 0.5.1", + "objc2 0.5.2", + "objc2-core-location", + "objc2-foundation", +] + +[[package]] +name = "objc2-contacts" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5ff520e9c33812fd374d8deecef01d4a840e7b41862d849513de77e44aa4889" +dependencies = [ + "block2 0.5.1", + "objc2 0.5.2", + "objc2-foundation", +] + +[[package]] +name = "objc2-core-data" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "617fbf49e071c178c0b24c080767db52958f716d9eabdf0890523aeae54773ef" +dependencies = [ + "bitflags 2.6.0", + "block2 0.5.1", + "objc2 0.5.2", + "objc2-foundation", +] + +[[package]] +name = "objc2-core-image" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55260963a527c99f1819c4f8e3b47fe04f9650694ef348ffd2227e8196d34c80" +dependencies = [ + "block2 0.5.1", + "objc2 0.5.2", + "objc2-foundation", + "objc2-metal", +] + +[[package]] +name = "objc2-core-location" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "000cfee34e683244f284252ee206a27953279d370e309649dc3ee317b37e5781" +dependencies = [ + "block2 0.5.1", + "objc2 0.5.2", + "objc2-contacts", + "objc2-foundation", +] + +[[package]] +name = "objc2-encode" +version = "2.0.0-pre.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abfcac41015b00a120608fdaa6938c44cb983fee294351cc4bac7638b4e50512" +dependencies = [ + "objc-sys 0.2.0-beta.2", +] + +[[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.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7891e71393cd1f227313c9379a26a584ff3d7e6e7159e988851f0934c993f0f8" + +[[package]] +name = "objc2-foundation" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8" +dependencies = [ + "bitflags 2.6.0", + "block2 0.5.1", + "dispatch", + "libc", + "objc2 0.5.2", +] + +[[package]] +name = "objc2-link-presentation" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1a1ae721c5e35be65f01a03b6d2ac13a54cb4fa70d8a5da293d7b0020261398" +dependencies = [ + "block2 0.5.1", + "objc2 0.5.2", + "objc2-app-kit", + "objc2-foundation", +] + +[[package]] +name = "objc2-metal" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6" +dependencies = [ + "bitflags 2.6.0", + "block2 0.5.1", + "objc2 0.5.2", + "objc2-foundation", +] + +[[package]] +name = "objc2-quartz-core" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a" +dependencies = [ + "bitflags 2.6.0", + "block2 0.5.1", + "objc2 0.5.2", + "objc2-foundation", + "objc2-metal", +] + +[[package]] +name = "objc2-symbols" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a684efe3dec1b305badae1a28f6555f6ddd3bb2c2267896782858d5a78404dc" +dependencies = [ + "objc2 0.5.2", + "objc2-foundation", +] + +[[package]] +name = "objc2-ui-kit" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8bb46798b20cd6b91cbd113524c490f1686f4c4e8f49502431415f3512e2b6f" +dependencies = [ + "bitflags 2.6.0", + "block2 0.5.1", + "objc2 0.5.2", + "objc2-cloud-kit", + "objc2-core-data", + "objc2-core-image", + "objc2-core-location", + "objc2-foundation", + "objc2-link-presentation", + "objc2-quartz-core", + "objc2-symbols", + "objc2-uniform-type-identifiers", + "objc2-user-notifications", +] + +[[package]] +name = "objc2-uniform-type-identifiers" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44fa5f9748dbfe1ca6c0b79ad20725a11eca7c2218bceb4b005cb1be26273bfe" +dependencies = [ + "block2 0.5.1", + "objc2 0.5.2", + "objc2-foundation", +] + +[[package]] +name = "objc2-user-notifications" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76cfcbf642358e8689af64cee815d139339f3ed8ad05103ed5eaf73db8d84cb3" +dependencies = [ + "bitflags 2.6.0", + "block2 0.5.1", + "objc2 0.5.2", + "objc2-core-location", + "objc2-foundation", +] + +[[package]] +name = "objc_exception" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad970fb455818ad6cba4c122ad012fae53ae8b4795f86378bce65e4f6bab2ca4" +dependencies = [ + "cc", +] + +[[package]] +name = "oboe" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8b61bebd49e5d43f5f8cc7ee2891c16e0f41ec7954d36bcb6c14c5e0de867fb" +dependencies = [ + "jni", + "ndk 0.8.0", + "ndk-context", + "num-derive", + "num-traits", + "oboe-sys", +] + +[[package]] +name = "oboe-sys" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c8bb09a4a2b1d668170cfe0a7d5bc103f8999fb316c98099b6a9939c9f2e79d" +dependencies = [ + "cc", +] + +[[package]] +name = "ogg" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6951b4e8bf21c8193da321bcce9c9dd2e13c858fe078bf9054a288b419ae5d6e" +dependencies = [ + "byteorder", +] + +[[package]] +name = "once_cell" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" + +[[package]] +name = "orbclient" +version = "0.3.47" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52f0d54bde9774d3a51dcf281a5def240c71996bc6ca05d2c847ec8b2b216166" +dependencies = [ + "libredox", +] + +[[package]] +name = "ordered-float" +version = "4.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19ff2cf528c6c03d9ed653d6c4ce1dc0582dc4af309790ad92f07c1cd551b0be" +dependencies = [ + "num-traits", +] + +[[package]] +name = "overload" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" + +[[package]] +name = "owned_ttf_parser" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "490d3a563d3122bf7c911a59b0add9389e5ec0f5f0c3ac6b91ff235a0e6a7f90" +dependencies = [ + "ttf-parser", +] + +[[package]] +name = "parking" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae" + +[[package]] +name = "parking_lot" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall 0.5.2", + "smallvec", + "windows-targets 0.52.6", +] + +[[package]] +name = "parry3d" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa342e0cdfc774fed0196714290ba2d85408b8ce9f295c40a0b1e05f3f8256ab" +dependencies = [ + "approx", + "arrayvec", + "bitflags 1.3.2", + "downcast-rs", + "either", + "indexmap 1.9.3", + "log", + "nalgebra 0.32.6", + "num-derive", + "num-traits", + "rustc-hash 1.1.0", + "serde", + "simba 0.8.1", + "slab", + "smallvec", + "spade", +] + +[[package]] +name = "parry3d" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec1d9cc5a359352e2be7e47270cef9f9e175794c03302553353804a436228e7f" +dependencies = [ + "approx", + "arrayvec", + "bitflags 2.6.0", + "downcast-rs", + "either", + "log", + "nalgebra 0.33.0", + "num-derive", + "num-traits", + "ordered-float", + "rustc-hash 2.0.0", + "simba 0.9.0", + "slab", + "smallvec", + "spade", + "thiserror", +] + +[[package]] +name = "paste" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" + +[[package]] +name = "percent-encoding" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" + +[[package]] +name = "petgraph" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" +dependencies = [ + "fixedbitset 0.4.2", + "indexmap 2.2.6", + "serde", + "serde_derive", +] + +[[package]] +name = "pin-project" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.69", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" + +[[package]] +name = "piper" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae1d5c74c9876f070d3e8fd503d748c7d974c3e48da8f41350fa5222ef9b4391" +dependencies = [ + "atomic-waker", + "fastrand", + "futures-io", +] + +[[package]] +name = "pkg-config" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" + +[[package]] +name = "png" +version = "0.17.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06e4b0d3d1312775e782c86c91a111aa1f910cbb65e1337f9975b5f9a554b5e1" +dependencies = [ + "bitflags 1.3.2", + "crc32fast", + "fdeflate", + "flate2", + "miniz_oxide", +] + +[[package]] +name = "polling" +version = "3.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3ed00ed3fbf728b5816498ecd316d1716eecaced9c0c8d2c5a6740ca214985b" +dependencies = [ + "cfg-if", + "concurrent-queue", + "hermit-abi", + "pin-project-lite", + "rustix", + "tracing", + "windows-sys 0.52.0", +] + +[[package]] +name = "pp-rs" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb458bb7f6e250e6eb79d5026badc10a3ebb8f9a15d1fff0f13d17c71f4d6dee" +dependencies = [ + "unicode-xid", +] + +[[package]] +name = "ppv-lite86" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" + +[[package]] +name = "presser" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8cf8e6a8aa66ce33f63993ffc4ea4271eb5b0530a9002db8455ea6050c77bfa" + +[[package]] +name = "proc-macro-crate" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" +dependencies = [ + "toml_edit 0.21.1", +] + +[[package]] +name = "proc-macro2" +version = "1.0.86" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "profiling" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43d84d1d7a6ac92673717f9f6d1518374ef257669c24ebc5ac25d5033828be58" + +[[package]] +name = "quick-xml" +version = "0.34.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f24d770aeca0eacb81ac29dfbc55ebcc09312fdd1f8bbecdc7e4a84e000e3b4" +dependencies = [ + "memchr", +] + +[[package]] +name = "quote" +version = "1.0.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "radsort" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17fd96390ed3feda12e1dfe2645ed587e0bea749e319333f104a33ff62f77a0b" + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom", +] + +[[package]] +name = "rand_xorshift" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f" +dependencies = [ + "rand_core", +] + +[[package]] +name = "range-alloc" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8a99fddc9f0ba0a85884b8d14e3592853e787d581ca1816c91349b10e4eeab" + +[[package]] +name = "rapier3d" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93ce0398df94b282787ddd36a3a9c7e1ca19fa1e79722a2debc49c9f7c06e889" +dependencies = [ + "approx", + "arrayvec", + "bit-vec", + "bitflags 1.3.2", + "crossbeam", + "downcast-rs", + "log", + "nalgebra 0.32.6", + "num-derive", + "num-traits", + "ordered-float", + "parry3d 0.15.1", + "rustc-hash 1.1.0", + "serde", + "simba 0.8.1", +] + +[[package]] +name = "rapier3d" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bdfa17fa28a7a4cfaebf669f57ca34dce0e758b295bd8a2aa1fbac4e054fb836" +dependencies = [ + "approx", + "arrayvec", + "bit-vec", + "bitflags 2.6.0", + "crossbeam", + "downcast-rs", + "log", + "nalgebra 0.33.0", + "num-derive", + "num-traits", + "ordered-float", + "parry3d 0.16.1", + "rustc-hash 2.0.0", + "simba 0.9.0", + "thiserror", +] + +[[package]] +name = "raw-window-handle" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" + +[[package]] +name = "rawpointer" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3" + +[[package]] +name = "rectangle-pack" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0d463f2884048e7153449a55166f91028d5b0ea53c79377099ce4e8cf0cf9bb" + +[[package]] +name = "redox_syscall" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "redox_syscall" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "redox_syscall" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c82cf8cff14456045f55ec4241383baeff27af886adb72ffb2162f99911de0fd" +dependencies = [ + "bitflags 2.6.0", +] + +[[package]] +name = "regex" +version = "1.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b91213439dad192326a0d7c6ee3955910425f441d7038e0d6933b0aec5c4517f" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata 0.4.7", + "regex-syntax 0.8.4", +] + +[[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]] +name = "regex-automata" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax 0.8.4", +] + +[[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.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" + +[[package]] +name = "renderdoc-sys" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19b30a45b0cd0bcca8037f3d0dc3421eaf95327a17cad11964fb8179b4fc4832" + +[[package]] +name = "robust" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbf4a6aa5f6d6888f39e980649f3ad6b666acdce1d78e95b8a2cb076e687ae30" + +[[package]] +name = "rodio" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1fceb9d127d515af1586d8d0cc601e1245bdb0af38e75c865a156290184f5b3" +dependencies = [ + "cpal", + "lewton", + "thiserror", +] + +[[package]] +name = "ron" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b91f7eff05f748767f183df4320a63d6936e9c6107d97c9e6bdd9784f4289c94" +dependencies = [ + "base64 0.21.7", + "bitflags 2.6.0", + "serde", + "serde_derive", +] + +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + +[[package]] +name = "rustc-hash" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "583034fd73374156e66797ed8e5b0d5690409c9226b22d87cb7f19821c05d152" + +[[package]] +name = "rustix" +version = "0.38.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" +dependencies = [ + "bitflags 2.6.0", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.52.0", +] + +[[package]] +name = "ruzstd" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5022b253619b1ba797f243056276bed8ed1a73b0f5a7ce7225d524067644bf8f" +dependencies = [ + "byteorder", + "twox-hash", +] + +[[package]] +name = "ryu" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" + +[[package]] +name = "safe_arch" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3460605018fdc9612bce72735cba0d27efbcd9904780d44c7e3a9948f96148a" +dependencies = [ + "bytemuck", +] + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "scoped-tls" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "sctk-adwaita" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7555fcb4f753d095d734fdefebb0ad8c98478a21db500492d87c55913d3b0086" +dependencies = [ + "ab_glyph", + "log", + "memmap2", + "smithay-client-toolkit", + "tiny-skia", +] + +[[package]] +name = "send_wrapper" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" + +[[package]] +name = "serde" +version = "1.0.204" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc76f558e0cbb2a839d37354c575f1dc3fdc6546b5be373ba43d95f231bf7c12" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.204" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0cd7e117be63d3c3678776753929474f3b04a43a080c744d6b0ae2a8c28e222" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.69", +] + +[[package]] +name = "serde_json" +version = "1.0.120" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e0d21c9a8cae1235ad58a00c11cb40d4b1e5c784f1ef2c537876ed6ffd8b7c5" +dependencies = [ + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serialport" +version = "4.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de7c4f0cce25b9b3518eea99618112f9ee4549f974480c8f43d3c06f03c131a0" +dependencies = [ + "bitflags 2.6.0", + "cfg-if", + "core-foundation-sys", + "io-kit-sys", + "libudev", + "mach2", + "nix 0.26.4", + "regex", + "scopeguard", + "unescaper", + "winapi", +] + +[[package]] +name = "sharded-slab" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "simba" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "061507c94fc6ab4ba1c9a0305018408e312e17c041eb63bef8aa726fa33aceae" +dependencies = [ + "approx", + "libm", + "num-complex", + "num-traits", + "paste", + "wide", +] + +[[package]] +name = "simba" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3a386a501cd104797982c15ae17aafe8b9261315b5d07e3ec803f2ea26be0fa" +dependencies = [ + "approx", + "num-complex", + "num-traits", + "paste", + "wide", +] + +[[package]] +name = "simd-adler32" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" + +[[package]] +name = "slab" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +dependencies = [ + "autocfg", +] + +[[package]] +name = "slotmap" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbff4acf519f630b3a3ddcfaea6c06b42174d9a44bc70c620e9ed1649d58b82a" +dependencies = [ + "version_check", +] + +[[package]] +name = "smallvec" +version = "1.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" +dependencies = [ + "serde", +] + +[[package]] +name = "smithay-client-toolkit" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "922fd3eeab3bd820d76537ce8f582b1cf951eceb5475c28500c7457d9d17f53a" +dependencies = [ + "bitflags 2.6.0", + "calloop", + "calloop-wayland-source", + "cursor-icon", + "libc", + "log", + "memmap2", + "rustix", + "thiserror", + "wayland-backend", + "wayland-client", + "wayland-csd-frame", + "wayland-cursor", + "wayland-protocols", + "wayland-protocols-wlr", + "wayland-scanner", + "xkeysym", +] + +[[package]] +name = "smol_str" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd538fb6910ac1099850255cf94a94df6551fbdd602454387d0adb2d1ca6dead" +dependencies = [ + "serde", +] + +[[package]] +name = "spade" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f4ec45f91925e2c9ab3b6a857ee9ed36916990df76a1c475d783a328e247cc8" +dependencies = [ + "hashbrown 0.14.5", + "num-traits", + "robust", + "smallvec", +] + +[[package]] +name = "spirv" +version = "0.3.0+sdk-1.3.268.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eda41003dc44290527a59b13432d4a0379379fa074b70174882adfbdfd917844" +dependencies = [ + "bitflags 2.6.0", +] + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "strict-num" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6637bab7722d379c8b41ba849228d680cc12d0a45ba1fa2b48f2a30577a06731" + +[[package]] +name = "svg_fmt" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20e16a0f46cf5fd675563ef54f26e83e20f2366bcf027bcb3cc3ed2b98aaf2ca" + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "201fcda3845c23e8212cd466bfebf0bd20694490fc0356ae8e428e0824a915a6" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "sysinfo" +version = "0.30.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "732ffa00f53e6b2af46208fba5718d9662a421049204e156328b66791ffa15ae" +dependencies = [ + "cfg-if", + "core-foundation-sys", + "libc", + "ntapi", + "once_cell", + "windows 0.52.0", +] + +[[package]] +name = "taffy" +version = "0.3.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1315457ccd9c3def787a18fae91914e623e4dcff019b64ce39f5268ded53d3d" +dependencies = [ + "arrayvec", + "grid 0.10.0", + "num-traits", + "slotmap", +] + +[[package]] +name = "taffy" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8b61630cba2afd2c851821add2e1bb1b7851a2436e839ab73b56558b009035e" +dependencies = [ + "arrayvec", + "grid 0.14.0", + "num-traits", + "serde", + "slotmap", +] + +[[package]] +name = "termcolor" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "thiserror" +version = "1.0.61" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c546c80d6be4bc6a00c0f01730c08df82eaa7a7a61f11d656526506112cc1709" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.61" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.69", +] + +[[package]] +name = "thread_local" +version = "1.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" +dependencies = [ + "cfg-if", + "once_cell", +] + +[[package]] +name = "tiny-skia" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83d13394d44dae3207b52a326c0c85a8bf87f1541f23b0d143811088497b09ab" +dependencies = [ + "arrayref", + "arrayvec", + "bytemuck", + "cfg-if", + "log", + "tiny-skia-path", +] + +[[package]] +name = "tiny-skia-path" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c9e7fc0c2e86a30b117d0462aa261b72b7a99b7ebd7deb3a14ceda95c5bdc93" +dependencies = [ + "arrayref", + "bytemuck", + "strict-num", +] + +[[package]] +name = "tinyvec" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce6b6a2fb3a985e99cebfaefa9faa3024743da73304ca1c683a36429613d3d22" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "toml_datetime" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4badfd56924ae69bcc9039335b2e017639ce3f9b001c393c1b2d1ef846ce2cbf" + +[[package]] +name = "toml_edit" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" +dependencies = [ + "indexmap 2.2.6", + "toml_datetime", + "winnow 0.5.40", +] + +[[package]] +name = "toml_edit" +version = "0.22.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f21c7aaf97f1bd9ca9d4f9e73b0a6c74bd5afef56f2bc931943a6e1c37e04e38" +dependencies = [ + "indexmap 2.2.6", + "toml_datetime", + "winnow 0.6.13", +] + +[[package]] +name = "tracing" +version = "0.1.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +dependencies = [ + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.69", +] + +[[package]] +name = "tracing-core" +version = "0.1.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +dependencies = [ + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-log" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f751112709b4e791d8ce53e32c4ed2d353565a795ce84da2285393f41557bdf2" +dependencies = [ + "log", + "once_cell", + "tracing-core", +] + +[[package]] +name = "tracing-log" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" +dependencies = [ + "log", + "once_cell", + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" +dependencies = [ + "matchers", + "nu-ansi-term", + "once_cell", + "regex", + "sharded-slab", + "smallvec", + "thread_local", + "tracing", + "tracing-core", + "tracing-log 0.2.0", +] + +[[package]] +name = "tracing-wasm" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4575c663a174420fa2d78f4108ff68f65bf2fbb7dd89f33749b6e826b3626e07" +dependencies = [ + "tracing", + "tracing-subscriber", + "wasm-bindgen", +] + +[[package]] +name = "ttf-parser" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8686b91785aff82828ed725225925b33b4fde44c4bb15876e5f7c832724c420a" + +[[package]] +name = "twox-hash" +version = "1.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97fee6b57c6a41524a810daee9286c02d7752c4253064d0b05472833a438f675" +dependencies = [ + "cfg-if", + "static_assertions", +] + +[[package]] +name = "typeid" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "059d83cc991e7a42fc37bd50941885db0888e34209f8cfd9aab07ddec03bc9cf" + +[[package]] +name = "typenum" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" + +[[package]] +name = "unescaper" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c878a167baa8afd137494101a688ef8c67125089ff2249284bd2b5f9bfedb815" +dependencies = [ + "thiserror", +] + +[[package]] +name = "unicode-ident" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" + +[[package]] +name = "unicode-segmentation" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" + +[[package]] +name = "unicode-width" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d" + +[[package]] +name = "unicode-xid" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" + +[[package]] +name = "uuid" +version = "1.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5de17fd2f7da591098415cff336e12965a28061ddace43b59cb3c430179c9439" +dependencies = [ + "getrandom", + "serde", +] + +[[package]] +name = "valuable" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" + +[[package]] +name = "vec_map" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" + +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + +[[package]] +name = "walkdir" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +dependencies = [ + "same-file", + "winapi-util", +] + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasm-bindgen" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" +dependencies = [ + "cfg-if", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" +dependencies = [ + "bumpalo", + "log", + "once_cell", + "proc-macro2", + "quote", + "syn 2.0.69", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0" +dependencies = [ + "cfg-if", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.69", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" + +[[package]] +name = "wayland-backend" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "269c04f203640d0da2092d1b8d89a2d081714ae3ac2f1b53e99f205740517198" +dependencies = [ + "cc", + "downcast-rs", + "rustix", + "scoped-tls", + "smallvec", + "wayland-sys", +] + +[[package]] +name = "wayland-client" +version = "0.31.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08bd0f46c069d3382a36c8666c1b9ccef32b8b04f41667ca1fef06a1adcc2982" +dependencies = [ + "bitflags 2.6.0", + "rustix", + "wayland-backend", + "wayland-scanner", +] + +[[package]] +name = "wayland-csd-frame" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "625c5029dbd43d25e6aa9615e88b829a5cad13b2819c4ae129fdbb7c31ab4c7e" +dependencies = [ + "bitflags 2.6.0", + "cursor-icon", + "wayland-backend", +] + +[[package]] +name = "wayland-cursor" +version = "0.31.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09414bcf0fd8d9577d73e9ac4659ebc45bcc9cff1980a350543ad8e50ee263b2" +dependencies = [ + "rustix", + "wayland-client", + "xcursor", +] + +[[package]] +name = "wayland-protocols" +version = "0.31.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f81f365b8b4a97f422ac0e8737c438024b5951734506b0e1d775c73030561f4" +dependencies = [ + "bitflags 2.6.0", + "wayland-backend", + "wayland-client", + "wayland-scanner", +] + +[[package]] +name = "wayland-protocols-plasma" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23803551115ff9ea9bce586860c5c5a971e360825a0309264102a9495a5ff479" +dependencies = [ + "bitflags 2.6.0", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "wayland-scanner", +] + +[[package]] +name = "wayland-protocols-wlr" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad1f61b76b6c2d8742e10f9ba5c3737f6530b4c243132c2a2ccc8aa96fe25cd6" +dependencies = [ + "bitflags 2.6.0", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "wayland-scanner", +] + +[[package]] +name = "wayland-scanner" +version = "0.31.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edf466fc49a4feb65a511ca403fec3601494d0dee85dbf37fff6fa0dd4eec3b6" +dependencies = [ + "proc-macro2", + "quick-xml", + "quote", +] + +[[package]] +name = "wayland-sys" +version = "0.31.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a6754825230fa5b27bafaa28c30b3c9e72c55530581220cef401fa422c0fae7" +dependencies = [ + "dlib", + "log", + "pkg-config", +] + +[[package]] +name = "web-sys" +version = "0.3.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef" +dependencies = [ + "js-sys", + "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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "wgpu" +version = "0.19.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbd7311dbd2abcfebaabf1841a2824ed7c8be443a0f29166e5d3c6a53a762c01" +dependencies = [ + "arrayvec", + "cfg-if", + "cfg_aliases 0.1.1", + "js-sys", + "log", + "naga 0.19.2", + "parking_lot", + "profiling", + "raw-window-handle", + "smallvec", + "static_assertions", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "wgpu-core 0.19.4", + "wgpu-hal 0.19.4", + "wgpu-types 0.19.2", +] + +[[package]] +name = "wgpu" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90e37c7b9921b75dfd26dd973fdcbce36f13dfa6e2dc82aece584e0ed48c355c" +dependencies = [ + "arrayvec", + "cfg-if", + "cfg_aliases 0.1.1", + "document-features", + "js-sys", + "log", + "naga 0.20.0", + "parking_lot", + "profiling", + "raw-window-handle", + "smallvec", + "static_assertions", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "wgpu-core 0.21.1", + "wgpu-hal 0.21.1", + "wgpu-types 0.20.0", +] + +[[package]] +name = "wgpu-core" +version = "0.19.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28b94525fc99ba9e5c9a9e24764f2bc29bad0911a7446c12f446a8277369bf3a" +dependencies = [ + "arrayvec", + "bit-vec", + "bitflags 2.6.0", + "cfg_aliases 0.1.1", + "codespan-reporting", + "indexmap 2.2.6", + "log", + "naga 0.19.2", + "once_cell", + "parking_lot", + "profiling", + "raw-window-handle", + "rustc-hash 1.1.0", + "smallvec", + "thiserror", + "web-sys", + "wgpu-hal 0.19.4", + "wgpu-types 0.19.2", +] + +[[package]] +name = "wgpu-core" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d50819ab545b867d8a454d1d756b90cd5f15da1f2943334ca314af10583c9d39" +dependencies = [ + "arrayvec", + "bit-vec", + "bitflags 2.6.0", + "cfg_aliases 0.1.1", + "codespan-reporting", + "document-features", + "indexmap 2.2.6", + "log", + "naga 0.20.0", + "once_cell", + "parking_lot", + "profiling", + "raw-window-handle", + "rustc-hash 1.1.0", + "smallvec", + "thiserror", + "web-sys", + "wgpu-hal 0.21.1", + "wgpu-types 0.20.0", +] + +[[package]] +name = "wgpu-hal" +version = "0.19.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc1a4924366df7ab41a5d8546d6534f1f33231aa5b3f72b9930e300f254e39c3" +dependencies = [ + "android_system_properties", + "arrayvec", + "ash", + "bit-set", + "bitflags 2.6.0", + "block", + "cfg_aliases 0.1.1", + "core-graphics-types", + "d3d12 0.19.0", + "glow", + "glutin_wgl_sys", + "gpu-alloc", + "gpu-allocator", + "gpu-descriptor 0.2.4", + "hassle-rs", + "js-sys", + "khronos-egl", + "libc", + "libloading 0.8.4", + "log", + "metal 0.27.0", + "naga 0.19.2", + "ndk-sys 0.5.0+25.2.9519653", + "objc", + "once_cell", + "parking_lot", + "profiling", + "range-alloc", + "raw-window-handle", + "renderdoc-sys", + "rustc-hash 1.1.0", + "smallvec", + "thiserror", + "wasm-bindgen", + "web-sys", + "wgpu-types 0.19.2", + "winapi", +] + +[[package]] +name = "wgpu-hal" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "172e490a87295564f3fcc0f165798d87386f6231b04d4548bca458cbbfd63222" +dependencies = [ + "android_system_properties", + "arrayvec", + "ash", + "bit-set", + "bitflags 2.6.0", + "block", + "cfg_aliases 0.1.1", + "core-graphics-types", + "d3d12 0.20.0", + "glow", + "glutin_wgl_sys", + "gpu-alloc", + "gpu-allocator", + "gpu-descriptor 0.3.0", + "hassle-rs", + "js-sys", + "khronos-egl", + "libc", + "libloading 0.8.4", + "log", + "metal 0.28.0", + "naga 0.20.0", + "ndk-sys 0.5.0+25.2.9519653", + "objc", + "once_cell", + "parking_lot", + "profiling", + "range-alloc", + "raw-window-handle", + "renderdoc-sys", + "rustc-hash 1.1.0", + "smallvec", + "thiserror", + "wasm-bindgen", + "web-sys", + "wgpu-types 0.20.0", + "winapi", +] + +[[package]] +name = "wgpu-types" +version = "0.19.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b671ff9fb03f78b46ff176494ee1ebe7d603393f42664be55b64dc8d53969805" +dependencies = [ + "bitflags 2.6.0", + "js-sys", + "web-sys", +] + +[[package]] +name = "wgpu-types" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1353d9a46bff7f955a680577f34c69122628cc2076e1d6f3a9be6ef00ae793ef" +dependencies = [ + "bitflags 2.6.0", + "js-sys", + "web-sys", +] + +[[package]] +name = "wide" +version = "0.7.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2caba658a80831539b30698ae9862a72db6697dfdd7151e46920f5f2755c3ce2" +dependencies = [ + "bytemuck", + "safe_arch", +] + +[[package]] +name = "widestring" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7219d36b6eac893fa81e84ebe06485e7dcbb616177469b142df14f1f4deb1311" + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b" +dependencies = [ + "windows-sys 0.52.0", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" +dependencies = [ + "windows-implement 0.48.0", + "windows-interface 0.48.0", + "windows-targets 0.48.5", +] + +[[package]] +name = "windows" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be" +dependencies = [ + "windows-core 0.52.0", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows" +version = "0.54.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9252e5725dbed82865af151df558e754e4a3c2c30818359eb17465f1346a1b49" +dependencies = [ + "windows-core 0.54.0", + "windows-implement 0.53.0", + "windows-interface 0.53.0", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows" +version = "0.57.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12342cb4d8e3b046f3d80effd474a7a02447231330ef77d71daa6fbc40681143" +dependencies = [ + "windows-core 0.57.0", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-core" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-core" +version = "0.54.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12661b9c89351d684a50a8a643ce5f608e20243b9fb84687800163429f161d65" +dependencies = [ + "windows-result", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-core" +version = "0.57.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2ed2439a290666cd67ecce2b0ffaad89c2a56b976b736e6ece670297897832d" +dependencies = [ + "windows-implement 0.57.0", + "windows-interface 0.57.0", + "windows-result", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-implement" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e2ee588991b9e7e6c8338edf3333fbe4da35dc72092643958ebb43f0ab2c49c" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "windows-implement" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "942ac266be9249c84ca862f0a164a39533dc2f6f33dc98ec89c8da99b82ea0bd" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.69", +] + +[[package]] +name = "windows-implement" +version = "0.57.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9107ddc059d5b6fbfbffdfa7a7fe3e22a226def0b2608f72e9d552763d3e1ad7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.69", +] + +[[package]] +name = "windows-interface" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6fb8df20c9bcaa8ad6ab513f7b40104840c8867d5751126e4df3b08388d0cc7" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "windows-interface" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da33557140a288fae4e1d5f8873aaf9eb6613a9cf82c3e070223ff177f598b60" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.69", +] + +[[package]] +name = "windows-interface" +version = "0.57.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29bee4b38ea3cde66011baa44dba677c432a78593e202392d1e9070cf2a7fca7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.69", +] + +[[package]] +name = "windows-result" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e383302e8ec8515204254685643de10811af0ed97ea37210dc26fb0032647f8" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" +dependencies = [ + "windows-targets 0.42.2", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-targets" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" +dependencies = [ + "windows_aarch64_gnullvm 0.42.2", + "windows_aarch64_msvc 0.42.2", + "windows_i686_gnu 0.42.2", + "windows_i686_msvc 0.42.2", + "windows_x86_64_gnu 0.42.2", + "windows_x86_64_gnullvm 0.42.2", + "windows_x86_64_msvc 0.42.2", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_i686_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "winit" +version = "0.29.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d59ad965a635657faf09c8f062badd885748428933dad8e8bdd64064d92e5ca" +dependencies = [ + "android-activity 0.5.2", + "atomic-waker", + "bitflags 2.6.0", + "calloop", + "cfg_aliases 0.1.1", + "core-foundation", + "core-graphics", + "cursor-icon", + "icrate", + "js-sys", + "libc", + "log", + "ndk 0.8.0", + "ndk-sys 0.5.0+25.2.9519653", + "objc2 0.4.1", + "once_cell", + "orbclient", + "raw-window-handle", + "redox_syscall 0.3.5", + "rustix", + "smol_str", + "unicode-segmentation", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "web-time 0.2.4", + "windows-sys 0.48.0", + "xkbcommon-dl", +] + +[[package]] +name = "winit" +version = "0.30.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49f45a7b7e2de6af35448d7718dab6d95acec466eb3bb7a56f4d31d1af754004" +dependencies = [ + "ahash", + "android-activity 0.6.0", + "atomic-waker", + "bitflags 2.6.0", + "block2 0.5.1", + "bytemuck", + "calloop", + "cfg_aliases 0.2.1", + "concurrent-queue", + "core-foundation", + "core-graphics", + "cursor-icon", + "dpi", + "js-sys", + "libc", + "memmap2", + "ndk 0.9.0", + "objc2 0.5.2", + "objc2-app-kit", + "objc2-foundation", + "objc2-ui-kit", + "orbclient", + "percent-encoding", + "pin-project", + "raw-window-handle", + "redox_syscall 0.4.1", + "rustix", + "sctk-adwaita", + "smithay-client-toolkit", + "smol_str", + "tracing", + "unicode-segmentation", + "wasm-bindgen", + "wasm-bindgen-futures", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "wayland-protocols-plasma", + "web-sys", + "web-time 1.1.0", + "windows-sys 0.52.0", + "x11-dl", + "x11rb", + "xkbcommon-dl", +] + +[[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.6.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59b5e5f6c299a3c7890b876a2a587f3115162487e704907d9b6cd29473052ba1" +dependencies = [ + "memchr", +] + +[[package]] +name = "x11-dl" +version = "2.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38735924fedd5314a6e548792904ed8c6de6636285cb9fec04d5b1db85c1516f" +dependencies = [ + "libc", + "once_cell", + "pkg-config", +] + +[[package]] +name = "x11rb" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d91ffca73ee7f68ce055750bf9f6eca0780b8c85eff9bc046a3b0da41755e12" +dependencies = [ + "as-raw-xcb-connection", + "gethostname", + "libc", + "libloading 0.8.4", + "once_cell", + "rustix", + "x11rb-protocol", +] + +[[package]] +name = "x11rb-protocol" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec107c4503ea0b4a98ef47356329af139c0a4f7750e621cf2973cd3385ebcb3d" + +[[package]] +name = "xcursor" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a0ccd7b4a5345edfcd0c3535718a4e9ff7798ffc536bb5b5a0e26ff84732911" + +[[package]] +name = "xi-unicode" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a67300977d3dc3f8034dae89778f502b6ba20b269527b3223ba59c0cf393bb8a" + +[[package]] +name = "xkbcommon-dl" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d039de8032a9a8856a6be89cea3e5d12fdd82306ab7c94d74e6deab2460651c5" +dependencies = [ + "bitflags 2.6.0", + "dlib", + "log", + "once_cell", + "xkeysym", +] + +[[package]] +name = "xkeysym" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9cc00251562a284751c9973bace760d86c0276c471b4be569fe6b068ee97a56" + +[[package]] +name = "xml-rs" +version = "0.8.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "791978798f0597cfc70478424c2b4fdc2b7a8024aaff78497ef00f24ef674193" + +[[package]] +name = "zerocopy" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.69", +] diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..c541410 --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,37 @@ +[package] +authors = ["Zuckerberg "] +edition = "2021" +name = "bevy_test" +version = "0.1.0" + +# Enable max optimizations for dependencies, but not for our code: +[profile.dev.package."*"] +opt-level = 3 + +# Enable only a small amount of optimization in debug mode +#[profile.dev] +#opt-level = 1 + +# Allow debugging in release mode +#[profile.release] +#debug = 1 + +[dependencies] +rand = "*" +serialport = "*" +crc = "*" + +[dependencies.bevy] +version = "0.14.0" +default-features = true +features = ["wayland"] + +[dependencies.bevy_rapier3d] +version = "0.26.0" +features = ["enhanced-determinism", "serde-serialize"] + +[dependencies.rapier3d] +version = "0.21.0" + +[dependencies.noise] +version = "*" diff --git a/assets/textures/Letters/letterA.png b/assets/textures/Letters/letterA.png new file mode 100644 index 0000000000000000000000000000000000000000..8cb1d983e19e6529c3416c98bdb24aed00dcd572 GIT binary patch literal 1324 zcmV+{1=IS8P)KDti;CS@2=hM((Crk z>Gfo%z`Nq{x7z5j-tW!m^NPOGz~u79=JU4T@O!n(U8B9#?f0zQ?!{IOIsgCwE_6~( zQ;Acz4McAd5aQG}ng)Ir2w`t16#)bo4)Cv!3lq;jPXm81zo}mz-w*Gfj2Zxkag`SU z00Xc|L_t(Y$CX#tV&Xsy+^gxAo{&Nybc0Po5;}z5CI0_&Ze1*~AwX0{4mvai9|C*hob`4DS@&$(hiZR&< z(CupY$hv8`@XJ;Cl+qsugeJuV1Xn(#ykR$hOu_wfRlat8V$tgqYkODA6>>Y-QBsO0 z(&kJk#wS;0wyTQo9;1gHshI38cAk{-x*=3V@7_r}z>v2~8@neIV>V5&&q*m$ zZY`nN9@Q6 zsLTam>P<D*)|3~vtj3T3HRMBS9PbVZDw*uWhjU$1U!wq?BE zRy6s1Q=54(z2&i+s0e5I+ivx}lGevE`w-oRS3?+p`I0?6Ec ztCq+9u`T1Sq4(Xwz);+SDr=W38si|Gz1kTPCE*l(qUENp*?08YNOYujRNzR_{|`jV zSE(yfXbOZImXM8|kJi`Zl@HpZzWZ8P>a>ScHFoWULI<}3GLPZl%w_z4@_AW>`U`H`(XbvPwB44)uU~n2w4^`Y%_7k zxwh>Kd8+W!wvW}G9e}v+9{(rsm^u!4`sn`xc?dkFoLk@1n|Q#-)208|H97S3Mn1j0 i3i@cgGNb&ycAUQ_|DD)Qy@2ch0000!c2RbD`Ue_NotJcpJ5003K{yIY~TS)sX1ik?r7q)CC800000 z0000009T#3T%o)#T4-CLyF{6)00000000000000000015p}JI+tX`hGS)H|7qPieJ zKvtTvQj)0v0000008*T_KyZIom#|x*yIP;O00015p}PP809&8CM|h1`oV5S|09l^8 z00000006JmVRx7z5ym{w~Pq{A4I9& z;uwDh@KePNKNL_t(Y$Ca1YV(KsqhI?lBp3t7MN`XMAyP*^kX2>FP z-v42a>_8j0COH2E7myFxmh?wnyN{`KCu;v*rnTtNjoRP!TllVjwabzO$s9nUjxwb$ zNQQrJ+pgn{si>Y|TT!rm0XYE6pvyHjUXeMd#gIFI2mag3%=d#xL;h*{vuPB}8DXH~ zI6`SFn1pf-%`Ss5($TSi1Yv?E{(w^FlTkpzFu(;GxV98XIO*~@mno1ie5dpkZc`!1 z^Z+(eA(H{^L}8SXu+75k%aHbr>D@<}!aqGz`UW)_GK*Ksdz_ilM_895p6j}X=kX$q zGc!ErTRGx>ls%T~@bed+dH~Cix?YKx9&ITiI^n8=M}0-)s)5St0Apojp*KqV;`Wn~ zQO9|r)7Xiz^y@40GKd{mpVARzS0FFuL`Vy6r6EIx!9rqhw^+SYNQ$xyc#mzKsUs%3 z6JWkhRgp;>ch&)@9~P9OJTsGd7{S%=6nkNYfhYDWRacq|lTk+)^Trw`1rjCma%uLb zXaHSbOlO~k`MaXVgd$_z&stf67&fYd27r|;GHtf9QewY=)f37eR|aq=MJoAxSx42u z5}J%#SthCX$qk6zA5v;VEfFEjJPAp*UFGGw`^!%&q zQ89?g4tZ@w_NRgPCc{+zNJ0kfFXhT!7nNp$!#qo>--2v2P4Q3Jx(>Azh|i8#CnxGi zpEq)&s@|1Ij7Lx=JIV;I>dAu2H7O_}%*MtR)Ne>tZMbUTp!9?_fdpwrNRLf?!BB4B zEuLF+O1MH|_YWdJ0Uj6c6Z8~8-FYcEHu~|_HMYY!b4x9Y%gly-~7?!G@+nP7&-h5Cj&Yhu=&+Ch!;^S$( zym`3rfokDnw5}2*HDlBGxe9Pr6s`&9tKw9fC*Lk3MeSneO#b-p=|xd?f0;|u3Qa*5 d+KJ@K^B)lgm)oc5*q{Ia002ovPDHLkV1k1IDGC4p literal 0 HcmV?d00001 diff --git a/assets/textures/Letters/letterC.png b/assets/textures/Letters/letterC.png new file mode 100644 index 0000000000000000000000000000000000000000..b6670c2f00df3933a4b3c449ce79d613a5e42459 GIT binary patch literal 1511 zcmVB6ATA#N-aDQ8%yIG#P00000001vqXj!4TTA{jLp1V|)tVw~G0000000000 z08EOW00016pSu7609&BDS)H{YKtNZQuw0?M000000038=xLcvS0000)nW_K)07rO@ z00015p}SI&sav7B00000004`*%Am~Muhrzeg1XPZ>h*K5$HwFD!{zg{-|y1v_RZ+?w&3t&r@+eS z^qI)od$r45qrKJb_pIFRSIyO!0000sbW%=Jz&?U$M?p+}x5W+-3(v0~;zXZ62oN@3 zZ%>+G76b!t2JjV+)F`R%4GAyb7!Ltc6Mu}q8URyt6W9O%1V~9lK~zY`otJ4>;z$&R znVFu}(RN2vRAiGqtmPmoAc8Cb!j@b4|No@#ts;;L82b30!v{zn>Za(dVk(tDPBfC2bSB zA*8b;2J`v6g`c_nI(%**m%MU8+A$*aA>Hxv+Ur^?je8?WE)cs?pbS2KXM&ern;+Ju zny&`ulMaC9fH1UK8X@!aLumr>Um z@Mnmy0|9A(Pc&DU8X0@hFqg^H5Prm^JCI=a0=lN{p1O8vXev3Vx5<=vNN0D_hX-bXt}g5`qHUIek(qTkoyl%)ie0T}X{^9T(-L}veyt@QBUa>WN05>O0G&K=2P zeUd99w@gtWh+O=ZMP=q5;WoTD7otsqGqzo62?6vKbN9%}L3vA2DCdCk0=fWD4@o#V zfY(!bJJ){Q+03D=M%Q$*&PU?B3US7w_s)tFz7$L@B%u=RgPNQjjPBB15A)$vDs30b zb7&~1)TF&D-#vNBS8;g=Hyohg{|@x@4d~~0pdUM+*f!|j9Z<;yO({KZc0hkaha2u9 zTG|2q<2qc+KT|MlIfk><;KJGVD}!IY7o6DpGO%bU z$Al3%EGD2sjIXVhSn{o*HUI+~0Cs@7h|l+wW(nGgjg~eYy)1!2t0qr>L`^M2P>7w; zQpU&5Mo4CUqxi4^L~*IvP(9!;G~f%051}**M9Av3-Oz{%X@;PDj_u(f#T5sB8J~{v zQTt3W3=kh{ORwIHkMf2fT#G4{AGD8qYb`4~~MUC4Knjm zAaBomX`;@kADg24Z)(z}bcvK7S$H*BiU`^5DRqCd+E>8IbKTS_Lr%-o^4HLkVueIR zWYEmCrQ1oBkR3ngoR;sS_S6uJyWbk(!Sby=SEQ7=Jb$?E;)RFuN`-=B4xz@Xz5#@z z%v-t3(3TgJbkPHert@FC3We5FgQ8+OU%ya|i$c N002ovPDHLkV1nD*-^2g_ literal 0 HcmV?d00001 diff --git a/assets/textures/Letters/letterD.png b/assets/textures/Letters/letterD.png new file mode 100644 index 0000000000000000000000000000000000000000..08080c96ecd0eb29250b462e4e23a7bddd4b49ab GIT binary patch literal 1258 zcmVudJM|h0@0000000000TcEpJp}Sk3yGenVFIs3?pSMJrs$QPER+_R|p}9-i@~00017p}bq6xc~qF zS)RH8000000I${Lk;B%{>h-?g?4ZoubFjzA=k%!2;exu)&FS^K;_-^U(zD<1Y^=n+ z-KxK%gyNXnaJA8==8VR=)mOiw&3v9?e|@y zy{z2s^}r*&0000pbW%=JBQ8wTM4u6cehC8z&u_0UQxgslkKgcNHsTLYw_k6?shSlQ z3m7N?e;?rSQUp$@Q~W&Hh)>cPy_Lm7By`}8m|ovjPH1& zZNRxY=ZtMNe50H6Vc{emof~#k zDwUoi{33P$`etmxmt!s%GjyLKa0!w*z5&3HHpL5LESJQg0yDF@ck=Sg2V*}GRRGa) z1|38fEc?loaG}7+zLyPWjOWiu=9asO*aFR(DYPf<7%6|lSRA_m=HLKiEO=sqkYPu- zu%`Mxn2^3gRKT2^J$S>KA68-f=*$_WQCj+9!u4TT<}j>s7$zKs75Pr~17k6JiQ?zx zkKLgRFtuTSe6cXTLC<>O7XDZQaSjs`)&~XgyASqQnJWH2x{0)RHgJ+R_A4Jr$&mFBxm%XGP)%FbA=Rtxh&DbK;OAG}UdH_lbO%4_#^ zrz-b(6L@A$C1|c1GG-ge);->-Zbfp}-mRn8w{@HqC_^%q*~R+WRCZHYkFOLJ#_x&BR<@&B z2(hzCCCZG+>Pr)?XZ%(=+|t7nGf_gQoTNUxY&wtEN~g=2E%ZeZmiw`}CbCRfZ&FK@ z+nbembkmSuPQHfTGRvhR?vICf>FIvk#((DpGiHn+SJ6@`nKT0r$y6!&+4@=b)cSm2 z`zTw_+g=@Yf9S;q8Be1dALjPd`5{)x)NilTPDr|5@p!*&r;u{FZqji%@BZxj2Y|%V UVsQb5!TrM`b`nJR4_3&)*%ra3_!(F=wlLMQ_x?-9eL9LS%E+ z9J%!RThp%doA19r{Pgp&$M4U+_`Krc!}V96bnUye@BW*Khp!!d_PKb&@s#BUW}dip z;K`@$w_coj@nzeC57k>w$1dJ`_3igHciv?mw0Z$FQKKZtFE~V5aOEs}^Z5D88HHKI z9=*S!q0gOvpP4V8f4i9kXX1zbyhnrUdl;nNPE4E5z`$te>EamTas2JolSNGq0u2w( z?K^&#LoesnT;IiN3lwbk{f|!d3Drwnma(en!-4vLSzU}(Yy#~2&M*D>k5!3@FCrp3 zd-=hWTDrMM?-U4pxm2v0G53S$p()8rw=LD2`uWR(;-%k~Uj3y}lJ@({)GxDsURq*b z&|!WjVMi%Jau8wWnV?x^w@4Qzgw1(TgCsKym~m{s-onoCH`x7Ns3yp z+;sXd>+N-mc0TVof3Wh`nd_g7!~BiJzuZ1|XSx^ft!vw^{a;@G^l#nVh?7xSyk}0g zdh9O}Zklk^Rbb1xmTTP{OpD(6Oxb6=(D{?w1^JU-g&#zmd7sDl@t@-kqetdN-{^eeMs;W_5gGqWS#7jF0xS1lJ#B>#>(&2wvx|&A`BD;_2cT;&J@#waEM?2Y~~H zRrl9kiw^ATI`id=gJa_I`~RawFE7zF2%e_?`@sL7;+qo7H)SiB>Ai8+I=#)kgKgH+ zPrC!Vau+3tP8V%0$&un+)OzWK<=-t2h1Xs+()3>0Fz=g1*va%rueVt>279J{+s$=P zKvL#j;n|Z`j|}SP%wEoKvu~#8E*oaX-3P8-ifS|6`)=8e#kKc)Q-&2xRI)-3L_U8t<{ z+5Y_F3bGddhaPMzK75l|(%HP)c9+5FVdQ&MBb@0Bt!M(EtDd literal 0 HcmV?d00001 diff --git a/assets/textures/Letters/letterG.png b/assets/textures/Letters/letterG.png new file mode 100644 index 0000000000000000000000000000000000000000..75f373e9090c8e998dc66ff09f5f1734c9020449 GIT binary patch literal 1414 zcmV;11$p|3P)U00000002yio?D^2R+_S0p}bFyq+6i7SC_CraDP;ltN;K2Nr9LkKtKQh z0000000016pSxS2yDwU300000002^)wOXRO00000003E@x&QzGM474p002^wsaTw~ zM|h1|p}Sk5xc~qF0002U=k&PY@V?*d#^djx%-zG~^ReFVz2ot7u*ZtN(#`4hg1XPI z)#SV4@w4CW((Cq-!`7(L;cTqL#pd&_-R{lk^JJ&M&+7HJ+UU06@WABq%INfawab~v z+Fhf))$RAJ-0mp<&%gix05x<{PE%qVK2aV}M$`*WU*ZT6Z_f}3Z{N4?evhd{ngd}d z76AnCpEeE#AFmY{KMfBPjKx!bzZw7ly`yUY00ZtxL_t(Y$DNmFL+VNphPm||%dwz> z0#cM_04a+{5s?ldjWV16|5xtpCXj3rg5LLI!o$qYPD`X6q@vU;wOl%qgx3*2Aw9If zuU50VAF7_+u;0uF8%G0+yNVYBq2dDrrZa_#dhL9wj4Me#sLBv^WBqQjvb5zCeL81Y zRfHsTY(C_`%g5MsWQ^V|c8J({)eXhb$_(FV0d4exL0pbo+Edi|YDE;5&UX2jz z!IcByai;iBOEXLhjcx#Tki}@@P{!<1I)%~}Is^EmbhQX)%q69BIJO}PV1UOl4@sj# zfWIxMdIdd&_7B-H$1Hlc#DbatuXJ*dG2bawA(iG(kq5ya>ak&Kyz_1bIg;nl1I!ir z?g{R)?@B%GgSlZ)I)DVpG6)ULJkE7x>XmGmGF1TX$~^btpepo3$QZnNrL$JIwY1h5 zwwllmoRFU!x`7SV+=kE%Wh0iLI^f(KVkF6+BW6g*o)vw?Y|dRr8rP8b*N{s*5=V_&+u}312jGF_I>zeMUD>4LtrsHzx^T5C z>;iSSp`Mt7n0{x$P<{usuxhlWBi4?Z!BEx(iAQGHvIlDa52*EB=mksq{4g~0+!Kbp zdH||>o_^3bfTM%Z)SpK21JE-|SW|dB#la8`#k{2xLvr=Yde+p5=rlG;(apdT(2EK~RQV zv!EMZiq59$UZ`Deu<7KPf+NjUcL7kI)S0P~XE+&rZP*88Ns66n(%n1M#(t=sMpN^z zj9fQVA&-2x%in=APvjY(L+Q&mAPfbD9cz)wi?2gyiu_;~Li^n>L+zh9f9ibEnJm8y zwQ-o-oGs1UKYumT%csT{7OGiz&D z8qV<+#&Rj!d4-9b`(wNBUGl-2;JdP}&_L;(0n6cNWw%+LG7rfepZ@CS@J-yX_2I^@ zm3o6XkaaG^5-0YW;%GO|>M=HqT~Ir@9mx05y8pA`$8D@(zb^>OeC263#qUzjj#BPL zgp@s>4ar~RplTW42TCCvd%7qDehOtS^XXuqRw?ZLeq#12zuap|`Jz%eO**gt1Kkm@ UiI`B3Q2+n{07*qoM6N<$f*U=mSO5S3 literal 0 HcmV?d00001 diff --git a/assets/textures/Letters/letterH.png b/assets/textures/Letters/letterH.png new file mode 100644 index 0000000000000000000000000000000000000000..8ccf4c24d53e7a2fd11aebbcd427b6ce76c9b6ce GIT binary patch literal 637 zcmeAS@N?(olHy`uVBq!ia0vp^#z5@A!3-oDPVO%UQY`6?zK#qG8~eHcB(ehe>jHd2 zT;t~Lj-0nEdcp4Kg}b9>Z&i2mjh??-KPn?~?pB}@|Gp&=Gd6}#-w-ipt54Uw(5V}M zf?qVQIms!>+#zA=3=6A74;T43A{P?|9^x>XiM6$t}rdT z8INqft##gS5PSEGS=SyG%{lrxT#x50QH?XnNy}DnUfMb-%S@XgXPcwf7dB_*z#hdG zLC@`S4vj~1`8+HyxD`s|`38iled2F}&c$bm7`LURZ$3Dg?O;5jkM%Q?*ru-k4Pk*Y~pIVl< PfTGjW)z4*}Q$iB}KQa|% literal 0 HcmV?d00001 diff --git a/assets/textures/Letters/letterI.png b/assets/textures/Letters/letterI.png new file mode 100644 index 0000000000000000000000000000000000000000..b9f167639c318fbd2e51f96cd591dd5b7fc28b8d GIT binary patch literal 386 zcmeAS@N?(olHy`uVBq!ia0vp^VnFP`!3-od_m)2fQY`6?zK#qG8~eHcB(eher2#%6 zuEEncI@H%k&EM`ab5-=h-O=-R`}ZvYO2R?VoUKudcEv2*0}%r znzRx~M$X#>Bv)K~c=pBTy^lX0efGI}>*@7ZpLFfJbnNl_?YCYWc=Bo6gAZ5Veve(e zcg>x5-5wGeKn;>5L4Lu8B9Hj*f2d;?6%&+S|DJ_WUwD5oTMvW1)IX)UzCcBjJzX3_ zEKa|@Vky*YAmDQG%+4qCga6LCb=L|X*M~9-ynS+L zS^iwNH{M#S&+j{#eI2OC-nQ~OP_7A)UMfU{F#08qTQ=r Ty|pz0I*-BA)z4*}Q$iB}h$NrK literal 0 HcmV?d00001 diff --git a/assets/textures/Letters/letterJ.png b/assets/textures/Letters/letterJ.png new file mode 100644 index 0000000000000000000000000000000000000000..f7af0c89042ffd184097b796e01f713df3317ebb GIT binary patch literal 920 zcmeAS@N?(olHy`uVBq!ia0vp^T0rc?!3-qDc5R6RQY`6?zK#qG8~eHcB(ehe9|C+r zT)moSIhFUgSM)|N*d0E1N94ktT0XH31@#IJ4ndPv0#!xK*cdr)7myJ?eM9uZ-BAm7 zh0WR&G-oSNef0d@QS-M)&fN->#R?+kZ1wM360>lRXX6Z@0{y6rkg01RD&ywucA2>f zY~XI7Nc6&;5b?uLKd-p>@a)U4J05=6`}pJTM;{lQx!bkx(y_Gii0&%f-u z|7P?3_r)8IAAR;YW%+@#FFsE^d~Mr<4>@a&H0?US?(Vzuuf865@@f067u8!&pL+3S z=80QZ-+qr>ym!r=cgLSN1psX_C<*cl_OT1@*N>NT(dgl8vlm`@K7YIX{11<=Fbi-9 zii&YE9<6(y$YM52g3X`*em(DgDTdPf8*VZ%Fo}D*IEHu}e|znE*&_o1wuIcXY38CF zrc(qqXl|47;?OOT-e7z9_kLeDBhIpGKi)iz`*6RY?`NOR5=Z5XXVf^mm{{@8p zOGo_|ygvK>|JGycQV(CuelJqU?Z42ZFJsrX7k+Z<6u%`tUhHh}k^l3qD^0UJvX!c5 zu6xa&!Mx{}M#I~S(sRxx`c`DWufCtflRZC%>C6PqTMHbo?_R3>>+*r6Usmibt=Ym| zdqn??xiSCgHGkLN?@ef^ICsgKPVWD?zK2GmAdn2FzF~2z9^VTOuTPZ*D zM%}8p+gu}kmORm1bZUJNQ{ko8r~j7BGmCRuRFmMN??1&OD@3cuPCI?xcYW&OmJBKCY^oz>ZgP}jXQO8x4*dAp4DC_L^WT2oA&&@ zi qCtWjYR93GLSh;Fj|EhnbR(lygt(u}{$r5h~O30qBelF{r5}E*nI;_Y5 literal 0 HcmV?d00001 diff --git a/assets/textures/Letters/letterK.png b/assets/textures/Letters/letterK.png new file mode 100644 index 0000000000000000000000000000000000000000..ce1f77cd82a403553dd04ffb92e0c9d3d02cf087 GIT binary patch literal 1166 zcmV;91abR`P)KGQj)1zp1J@400000#^dji!`8jy@vqh7 z!{zg!%-zc9^vLJ*Y^=nBy3euR@3`Uc&+7G=$l9pU;k)AT#pd&hzS7O<^<<~O((CrV z-|VyB?{l!nuHEj<=<|EE%eUI-z~u6_;PBP$_g$mCtlaMU5V@ZK001m>QchD8HVbZk zHWm#ZkK(Tp-^Fi#24ATYQ!k&?&j}FlC>RcJL=OZNzX9)zKN!!4fV*~H;P<<#SHUbjjB-)Xe^;QN9D??NfE-0f>v{0 zz;c~sP0B_b0Zb$`ge1@@k&E?`;DqF)@qy7%#(f*Eg?24KyhlJ?(P`;jbb-V$D}}Q2?#bSK=DfL zBaUkOnw!-@6sH~xsN^IlwfR6tx^h+I_mN+7gNi|yDoRvFl&B^ql%xm^_Z=JV?tiG) zpy(P(%#iQZ3*t8oCD+j1mm~8z5C&={2@GSLiu_$-|=yMZ`x3ylLx zInl&9jWm4@D0p*s%C}7CQ|^$0x%{-TXp-N_%2SVBzadkJYO|&ZDOd7Ye4D*Q#SeLT zGOXUfn_;JssBoyVfhc4lS@Aivl|KN0$B&AbCecVa;COA<;j6`~yco)_5_^igTD+>1 zIg{tgO1#=hf@1Y!K91zU=ZeivB`8)Gx1nd{)u{bNjwZ!wh_?WD%2(s}al9%LyA*|V z^&B%M<&=n>BQBIzqw@E8j;0$?m9fe((yW~*@}Q_h?n* zI8qRuSUKy07MANs^y!k|e-JHJ$t$btHCtGAxse(S}7C!e-G_;B^@_t?dI*W7ux^iB>Z&@9=KAirP{ z^Z1qT`SUr0MJ0si*R8+L#w*XlD5k%^zQCD@ne6;_t>&LWX++~{K5qoSyo=tP`J)_8BL{Wk*? NmY%MDF6*2UngF!|)2ILd literal 0 HcmV?d00001 diff --git a/assets/textures/Letters/letterM.png b/assets/textures/Letters/letterM.png new file mode 100644 index 0000000000000000000000000000000000000000..eac5150ace5292fd8d3bb446f6b3e79a77c1a587 GIT binary patch literal 1531 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 literal 0 HcmV?d00001 diff --git a/assets/textures/Letters/letterP.png b/assets/textures/Letters/letterP.png new file mode 100644 index 0000000000000000000000000000000000000000..52bc627bdabf5d1a5b52b854b1e37843e9c9854f GIT binary patch literal 1029 zcmV+g1p51lP)O003T|yIY{UNs6FSlB`sftWS=l00015 zpSMz+wOXROTcEo{nW`^ZXaE2J00016p}S0qom|3B@TcNvIowWb} z00000R+_R~pSxP2yIY~T00000002^wsQ>@~0000-c#T<}x>%gG00000000000KVVs zbFjye!`8dv@x$fwpv>LK=k&$q^S$HouhrzS-tWfa?_{UIg1XPR;qb2A?rf~YioVj) z>-Np*_0Q_{&FJ&9-|u_1%c#-e%INf&$lA8x@VDCNz~u7P?e|@yy{z2sO+4%50000l zbW%=JG4C%)OA}9zBSe~h4&ooLpAR+_3(s#vsVHGz-_#ZnxA1?z7y*m~4O2hG1{wg= zXqbNh00M^U)nhA_uem!^P^!@nx|yL;j-s4*)P^E2q1Dal@IcpSEa(=8%yHxM z;>?lEa9CGz0N?YBqz7;(3tZR4fh_?prGY!?Z^d_M;JPcuEXbVzCOR8!Cs!7@Yd%%E z695jX4e&Vx%+-Rg`D)d7-u&Q=u_-7au=Z@Exu48&OywwGS&z7Lmm4GlFX-dUeu@I` zN180}u@!R8=hjOxsNNeFRQyD-tvbCiTEKz8QEV03-=h#?~i*CctT+24h+9 zQ`5AsY2e@BU%5E2&v?Z8!D&sz1FL7Sxo48x0S8(Hu;14?us0UWhI37@mloZLuNyG- z3PmlvTY0cSbUn4l8qhLMI`L#0L)>o=xU_SF|?5bE^%98C1X!J_+ z==)2{?qK=v4A$R7b#HH9Vx#3_hi}~CH9t_5dJM34nOWoQHa}0N$e~`;mv|n2WeM@t z$M+>wP1l;4eKpA!s#E})B#=K2cVy7y1u7|1uO{(lV-xGCJ$Lw_?-;7bFeX;m7L zNYJA3`41$)lIb6(2CsGF2q^KJ%o}WoKSZF0f0ec;k9fc|5x}b~kYYv*NLKX)+sP3S zjt~^W^%W`tS{O8hfNGUM{Vf#(N;O}q!g~4-S5+Nc1Ch+*00000NkvXXu0mjfb93T8 literal 0 HcmV?d00001 diff --git a/assets/textures/Letters/letterQ.png b/assets/textures/Letters/letterQ.png new file mode 100644 index 0000000000000000000000000000000000000000..201c6bc43075a5c1523f01af933f5caa685fe9f6 GIT binary patch literal 1856 zcmV-G2fz447M|h0@0000000000TB5oyT4(?O z00000S)RI7m8<{&00000TcEoD002^)wOO6DT%o*DlBoay09&EESC_C^p}AY1yG)9n z000000000009c&0AV5F>003H{yIY~T00000006k*@Sx1yg1XPU;_+;(#KYzDzTfPq z(c#bP^~U4xWT(K9!`89h@2}P5((Cq$zS7F*^u6QpbFjzF>GjR%^T_A)v)}Kw;PA!f z^O?xnz~u6Kwad5K=&s%FU8B9#?f0zQ?g~}I-2eapI&@M_Qz>G1Og>jjQO_Gjk3nH? zL=i8yeh^O&;!_p~0k1X-13#Jx4WAAl)bETH->F~lZw3<>#V7=SzZw8ac&-Nk00opu zL_t(o!2~%Si||p;sG_`2RoTW+aLv8^X?~#Q5<@n)b>t zUF`Vrd$CB@RxCcBAG^J0I3LBM)WxFlui=ZI9DV<=sKo(QCa*i6>TexZ7p{$! zV`b6vAuxkwRl%RO8g4xCsDR_>c&MqidXIUED~AvXd@y`kp% z4YSlR1C%ydUpo;l_u_G_&$N#mR;ANx{9X3w=5q=iLrNz z`^}`!p1{)ZrF*q>?Ji?Mok_Wj z?VDrF&VmkqcgDFve>47YE~qUJGhtD;4EtvMspmEpIt^$dMX#PNHX_4FW2H~jKGKjT zA-4inRadEbh{==T4??Z>)q1ux*B4mxN-OC@&1ZealNS$iu6B}!y6ZdaB;|#2*lp@f z8NLHb>q??PvE?Wr@~&;#{CM_13iqK zXbFHle}H{ER4fW1XffqTvH$gG_8Q;_U$?z|VoWO<3lkm!l{^C2PcGrSl`So2Rn-FH zf=-=PbL>=!+ylUQa*Btk{=Rq_wpK&3rVAt7_DA z5nOn6FItRWFCnRwpn-7|6Z9Sm5UK_ionEUU*fr!C(*4h`v?t_cFvoYi5^;V$gi!$K zib_sO%$&AhpCko%8zFqI^ zByrm3Rmtq*+9d(E6RR$in=FCLh+1&RpqJT`aQLr)Ce}Hf^U}=~u7^kHi%R?pW>V6gDn2vvfhZ$t>lI_Y$jEZETCtWFtlgQ=ysVtC1(N zl0R1`*tYb98_U*gWFdI)!Ad*>k;> zR6!!{@N9Y@=wV1!Otw~eJXZ$z8;wQG9kBU?N1hOu1iaeXt6MRj>q-Ak7~2cE$3lC5 zt*=t6552gCDU!R{4c}%&sU$Gf+s)bf3$W@SF?YkF#=-k(R#ejabc*xGf~roYzk)@7 z5vAtMUP`x}*isblg3VjMd{?+ihGSW<&*$G3krHPwm%za?UwX=*9KHC#U_h%6e u_UsSyT02UwzYw`Ge+ga&FNL10000P literal 0 HcmV?d00001 diff --git a/assets/textures/Letters/letterR.png b/assets/textures/Letters/letterR.png new file mode 100644 index 0000000000000000000000000000000000000000..fa0616065730eb8db6853c9a335612af505d161a GIT binary patch literal 1211 zcmV;s1VsCZP)-MhQ?t8V%naJA8==8SW@VDCNz~u7P?e|@y zy{z2sZ`s2d0000pbW%=Jz;9E66gLDAk8cwZ6%J3&pC2!pHbj153kdJ80|~zm)VCPo z0bk##77g%>KPZ321{wg*uw!Qc00S#YL_t(Y$Ca1ocH%G)g}ps((|bYZb*>odFK2z9+5XC@vGtsYX> zK?Y#JY^S@JyHOd74(G-Lq#6>lWR9Dxxx=X^%&(A|!DtskgIXW)bYR zt_0~=x_kojh8>O?A|xgK%ANrd7}Fn}X`8V{fN^-`_L7*ZX0v&P(2%{l!KE=kJ&CCi zlv?FeA~EbMhTMXgnK{VJ935A|VzboDl_&wPK_|dGu=WbZGorU4(}S(h;kEu5&%E;; z9SkFlFk==}wJ&<7wUFkHu@@+5u|4Xm)eZHv!-fFsT9#QbbW9D@O!L!X!ztXBvoJ0G zHgLF+f$0d}xh40h8RHdq01=h^PRl�x1%5m(oK=JcX)C&gd$J*&*LWJ3RPHlNpoyfb@#oz`W5(X5dYB zDZZsoo*%C8w>ImC8npdCPy%CyvO}}B;JmPcK{I%k=NfB=XI5hcQ!8=*utV9sd(NB0 zpoe01BY8|Q(8UUdobc@WMkG*u1%t*r9m{3t@|B%L=0}+vicONr@OcWyGL2L2*0@P_ z>?s`2&m{_4zg({>LzJ`}nkExW&Q898!FRB%Vkdvk)Y&MU#?ld45~ku+m+00015p}SO-tXrYGPmZKo zp}I+dm|mW{0000|oV8k?w_BmRSDm;30000000000TB5pJpt}G70000000000003N} zyg+b&000000000009Kl^S)sXEp1N6`wJ%y|Se&&)nW_K)0000000012m#|x(yIY{U zM|h1)ik=`qKvI&aTcNoC000000HDm>z2ot?;qb%d^O3{W$mjI2-tW@u_H(eu#^dj^ z-|vdP(#`4hyW;V_-|T|A&t#{-uhrzw>h)}_#Hi8X&FJ&R=JU7O=(gbSd$r51-R{8T z^2+G+naJAJ?e|@yy{z2sBgqmM0000tbW%=JBZ`$Xr6Ex<6@Qw~es5t<2p{6#FAfnF zua5=^1Pkv(5DfvhUq93~#Sa4$7^(1|Q*S7YzZwAfGHX%*00dD?% zh4bz+^SbY%s30IagwP6zph8#z0Yd1?|Nkdb)t$ry2-Z3CVaQY6)t$PxqVgP$Tsn1C z|B9>q^l|X95`vE_uo?AKZY!Ryi^qf2R}5rECB1>45o~9ct z$$1wvmM6Rd3(kX;H-jx>H}D;s{2kz_Al_;n@4Od2*89v2U1Z=dE6A`LfdfoJcW(0O z(C_tyE;lhiWl0yG@nrzFaj8IbCsWQ}pj^9nj=)C%S(Q=L9x-9Kz>e40k;L!T@Fgt< zklA~pgr`!O_V~q$t~~09w}SoJ<9tGTfJe1PJ5)8T%GiUCufh#uks$O}ao$puxpC{_ ze_%Uy*4mr&z(=nJ6(vtm@T9GR!FhA-t@qpF{zOqH2aFYOJ-h~>^Y*478bYM+pO}#S z@76btVipFRM~hTPmENU%yl?<8;^Xc8KBuB|y!UGle_&ZsQ$tyYGOGy_OU7b_rN#m+M*f%mp;F(-*!Nu0{TR;Awl6!K|r`iPCE zy~{~Uy(OOAmxO$T$#0yZPgZm2`unZy(kG3?V7!Vg!uMoxzJP0Qdc-beLQTy|h4OU+ z@8Mn6UHmNl&xI$1no0^au%=#c{Wfay)E@_M`sZI>f;0!-ftcj&bJ*K(S zqvd=THrH`HDR}8v%iDJ}Ht;8${7{bRb@aZYQ64yN)Pk~4wKTrNO*&|~mQd+$W zz%LqUEJhv~clDWZ`*yhSqAPzWYXTNC{#i->@Z?r4Wi~!&v)a9UTD)=nJ^8=_QB^fR zRDVjci`dskZ9bH+C5rLzCv!e=xr08>Z+>APofo#U7xAd?_xw>JQ3z~vSxCgz{u=lV XN<>-VHCeUE00000NkvXXu0mjfLoen$ literal 0 HcmV?d00001 diff --git a/assets/textures/Letters/letterT.png b/assets/textures/Letters/letterT.png new file mode 100644 index 0000000000000000000000000000000000000000..599f456d338db4ee672b24c7056d32b0556f0623 GIT binary patch literal 604 zcmeAS@N?(olHy`uVBq!ia0vp^CP3`K!3-pmM3?XZDVB6cUq=Rpjs4tz5?O)#y#YQU zuAW^BTxPCvD5wvcvqdd5E^7XEpRRdPi*^M~S`#;Kw}OL%Lw&t|R7Uvp4L}`m5Vdeu z%)&j9bGQ2UEddIK&)pF{e>Yqf$cSFJ6G*yO^hPb*9W-fW#GI`_ZsfdO5H)9Ce%*Kf z&BVjk&c68EweQm2#~+(^oj>;Y{pS1ccR%`=v*t+3@&iYoeO`a{$%=~)tGAw>dE(Zo z7hkqL_^|!fivv$SU48pKcJbadci!>yt?~hys9qA}7p%^wX)__3_R~HY?Ry3Y__gz zYi@T^m!U!B#UP6Zbtmw zcZw_50h0{N+ z->F))sQd7t9zDVNnpH>pIG-N=>uO`FbT8CnLXq*KmlH~k_IgBWmvuKY9z1Ke%Y2bz juxVn7i$H5zHN!qe_lBA|76+~?g5t^3)z4*}Q$iB}7Q718 literal 0 HcmV?d00001 diff --git a/assets/textures/Letters/letterU.png b/assets/textures/Letters/letterU.png new file mode 100644 index 0000000000000000000000000000000000000000..f835ea01f0447f18ffb6fea57af8054ac760b5b9 GIT binary patch literal 1051 zcmV+$1mydPP)f>K00004XF*Lt006O% z3;baP0002(P)t-sK!1NUV{%!YwOgROUY@&BoV7`Tm;e9(00012ow!?}y8r+HTcNo` znW{i=e@A$Y00011nzBrao&W#<00014p}AV2x>S{{T%o*Im#|ozwID!1Tc5iC00000 z08)~vFIs3%j-&tp0000000000003H_w*UYD00000003H{yIG#P00000006JmGguT&#~U`yW;W1=JSfa(xA-U#^dk4-|Wce^tj>hsL|n(!`9F0^_j@pbFjy= z-|w#7?rf~YWT(K=>-Np)^UCP-d$r59;PAlY^0(UP)$R9PqrI%$?s=W;ng9R*E_6~( zQxq}Ok53N`KN%n5RW!x6Ce;eHV#O<|KqI2U^C+-$=>W8{|(2I zzA2J8BLe^qoWxC}q~m}l$4PFz3FiR70Jx!;j#cD1?!93q!M{^K(kL)Tk_(Qu-YI`N z2Bc~F3spT(`Xoe7(&TGS9MQ4i5Vduy$4f<*A$rlhZ6e7maj}Z@il{S)uUqc|mwRT< z?3q2YXZFm0V8)X98Zt?m{R6W?^tTV{7x^@<;*23*zbD0fk1aY3nM3NMt2n#(!i-5Y z#JOU=#b=_#8u=y<(N&yt9Fk?2pQ(id#r!*Xxn&kkl4%+tK57SVQPwasu_N+&e*6I}|?Tr<3pNbyk0 zbss$LA{H*pST^&E>o~3D(Pl!GgmuP2R}e9FoxgJ_*~U0000FMe{atYVF-`EelMR-4<8Nh5!4Icn((g#Hn$aDL~j@g0Rsl95aK8n zj2ZxhzM&QX00bvVL_t(Y$Ca09LmEL0hPQ|HqF#taZsgJ~&IpP~1(Zt;b>jd3HOC>;aqBxB#C>m0?l?XcM4fs~#soB}`l4mcc^JdoZ2z@q(T zokx}nBkTFcSoK5F523GA%LJ?)IE3=FMiIYKPuIM0_`=xP(2XguK>lGmnd@SbESHaCUjbt_7@S}g`cA4 z#f3xq9l)^#9|MLk;R`rNx+<<6(icQ}LCd4U8z{VlPR(Z>(%VFOn*aSk_!ZJW#2Ivz zniJ^_Te=Z$zuO=Xo zX3}5RhC$&IBHT#36jejZ(gk!Baq&P~>06XlOj-QA4CpIA1$U}Ry?(p$y79PWm6m?5 zoEC2AjJRY0L0wMV9)HqKzR*kr5uyJLuLfb?X>Il1t$|q6=O6 zf;HP)(HU{BTRz~^e-H?#H8C&sr7l;r%;TWFk(OhIzS*q>-jAT!I~J|o%33~KN>A%w zv{Prx*xd(#EZ~xw`k~xnGcebWjY}=MjBZ`fmNzlU zDQ@C6d7~#?v+trp=nA?OB|Z>Sp!9t{KuxR}_z6j9c_mUnCqJ&hbxKGJK__o8-}*^CZ4jIU5HwUt_mEL zJGOut_+&;b)P|I(%MdN|I4XTLp4<1K!ohtf4?5_xxPvYSetRUThQy^KUB_&x;-F>8 z*A;HkJzzI`u4nUXT{A+*v1zPs%2l(Bldg&)uiJCDX2DVk)9ANPxSNSy}A0L=rZ2M9a1Q=E*g3^YmszCH*G@9Zu=HL z1O2*;q|xlAX;Wuv9QVsVOT|e$nnpgc*0brNWdfHg`!cguX^z$`L@%2*a-@C(*rhcK z(X#HR_-0?;YcJTYy8Js`#!Cq|)H|bZ0*jabL03vyv&(4msr~>=g;IxTGis2Z;ei=Za|w! zThRYOj7dMsP3X8z-X(Njr><>8S4#R;TD+{!y-uB%8`0P_|BU_Tmh(eSiK44Qh}~=Z z6h+u6Q8XqGpYq0ZwG@J#sogXVDnEPwLCd{7VG|j5*l(H!p;iEXs}BGG002ovPDHLk FV1l<_!72a% literal 0 HcmV?d00001 diff --git a/assets/textures/Letters/letterW.png b/assets/textures/Letters/letterW.png new file mode 100644 index 0000000000000000000000000000000000000000..9c3a6701dbfb793f02041dbeb75fe92a83f82852 GIT binary patch literal 1825 zcmV++2j2LJP)wM3b!TB5oD003K|yI7pHTA{jIp}SX|xLKjOUY@&K zpt~SIKmY&$000000000009>KGFIs3!ik?}WwMTf3TA{mFm#|5Jm|LH_0000_j-&tp z00000R+_Q^0000009l^8RF$j%0000000000TA#N7002O6e*gdgTcNp9lBoay00000 zxYXd0!`8~^^v2`wnaJA6=k(I+_PgTobFjy~K~ z-|w;B@2=hMioVjr<@3en^Udk?d$r5Y>h-wc@MNdJw&3u<p~5d-1@ zLYI zrZdbW9n}1D+MFgQCuuPzOZvw1FMOzuL&{{4-$leV4G=Q6gE zhS}(g*vkXJ-k)IG+^aj9!G?@&!Gp5w9oGH~3}!dn=^5ZWb`0-IeG>anFR=X=*skR@ zQ7Ql%e1|qsUjQM`$N!oOJKkDZd`7Pi;?(iLH2+F<$oEf-c*l3z;v{b@zBl1kUE2|? z#9{!CYC^uxm6|OofR*mOFAR0#t7Zeb>XSIVX>OnqO9Av*#IIO^GJ4B-6+9!^b4Oupi zh5*C=l!ZKlLsx^jdGzU6K{t&uN9v7y|GxJnX!`k;5_1EPxzu0>S9FfH^xq@&G*XOz|r*m_A9nnpeKvWa6d4C{OB zi6gD~ABSHDSmpe_0o!k(1gDXPYU(OqbFewO#dR^CX_d{$a8d@Wn8o6Zt%ho@;sp5Q zVBdGTJ2uX-VsozYQ_(PB4Pna`2~F=>F20`@hs{4$f3qqLn5=GULKUM%cgF@YX1enOgs#n(a!Q3p&m~72i_5@ytLu*h=rbF}4 zsfz<2>{1}tZN~EzV6+Rp%t_^*!5U^bWsj252a|&4q zk!CmBVu_Ci?qNU zS?Q8ICluMEtSTv3Id6^iahMpgG76K%zhC*aa9CzwnlwJ}reT~ot|+5JN}0K_GcE%| zrLhZl7$W1i0wR>}_Jq%}y0~OuvTy=46;0ZZPI$K1xu@g*9WH#z0%(K16b53(UQd5wLO&#W7u)<*9I%=jn}~vj|wxyb{{>_JPS#h`Lqm@EWa~@z24e zC@tGRHgmKfF0k0s=t&Q7QIJuv+MzW$d{JVSZpE=*_`%a7TUi2jmarxV$+A(@d0s{0 z#z)an`?Q{<*5@kPH3`!|#ow#l*0{WYRRjfawSsHW%!= zgHMdM-5dF;Tn<(-`^T(XFiRuKGZQ!MHc|x$K^I$&5Vc>x^nTmO z_GEO`{RONM-JS|p_alqR#xG#e{j^$*s=Zp2zk$gjb4Z@?z{{M01Izh;T4&ZxEyD!4 P00000NkvXXu0mjfXX$*O literal 0 HcmV?d00001 diff --git a/assets/textures/Letters/letterX.png b/assets/textures/Letters/letterX.png new file mode 100644 index 0000000000000000000000000000000000000000..ae725d6cc398fa18b94418e20644d04b5e2bf0fb GIT binary patch literal 1509 zcmV};T00015p}PP8092K%TcNvIowY!4e*gdg0000000000 z08*T_M|h1|pSN3~y8r+H00016pSu7600000S)RIBoV6f8KmY&$TcNo`nW|i&yi$^> z0000000712^Qh6`zTfP#-|x-o^}FKnpv>KhzS6JNh*K5$HwFDnaJ8~ti-Y2@5<=(&FJ&4-R@+kz|!mXd$r5J?rKuVZOqs%bjE`>H*H^(aQ~N=*!3Pk-wF1WjH7c^T#2Sapb##LvMXzVK@? z5=Y`1p{L@=rHrJykdkr(;DNhdm3oJ4UZfGaD)Ju6A8HElx0HZSrK+3{I@W~9Av7(7 zhw?UroEavGXB5aQUOjLCff=<<|?bhm_v zhviR{Ph84XO72vBn9rINy;~v9WdtS4cP?d2Zk?wTOQi$ZZGoAYK{Mw*%1>12P5up! z0Cz&1$vISBYs&bJS1Y-U2hwf9aYT0pm1mmrvl^S>9DcB?G+j7}=+2>1Q^uNONu2b3 zbay3(hLqnd$|i>wiuhGt9Aqr0pE5768o;H%;$I+PjRtU=d= z66LLBlta4MFniJmCCayc${}5Bn56VWuM1+^Pg%3s*VJ zP@?38;RJa8OVT`Z>8_weN zhn9>Q-w06QW?NtoR^XI}qpB5f+ox2htDUgx10AC}zj~-wpWi}=ZM}$0tSzvsBNasb z{pBoNID>Z!xZ5}a*^g=}2xG(>Mz497DA;ErpQYC}ERm~IP0>=@wS2l}ehCqinF3AD zHeX{faTuu;8EiN)nnW>5hV$TxB2l$!3R#tcLl|MjObqKsYn2x41F@!GYaW=~(}|m4 zld^6Z4*uDO6Qcyxof8PX2uk31YLuAS3_gwO!oEBugWP`rtxsk^qbU}(R+?T5U4Ehk z5Xc}-9?OpNw6xBrU*0`|3Ahe$4OqM5hHHvg47D8oI2M474p003E@x=f0m00000003K{yIY~VTA#N70038) zumAu6Qk=B_0000009m2AAV5F>002jLjQ{`u0000lT4-CJy8r+H00013oV8Mtsam1C zTcNoC000000K?_;zTfQ4>GjCx^n$w2bFjyXzS6Vb@2Jt?xZ&`T!`83Wh;p=_H3-gWT(K*=<}}K?zZ6Yd$r5T==7P$+PB*1z~u7P?e|@y zy{z2s8@9s?0000pbW%=JL}65dPn01qz?!$u?-c~EZ+;Ne4+uYR5euK+;tr_>9}@vz zC>T=%4L0xz7R8KzzZw9zVs$7000R?AL_t(Y$L*I{R~kVOg(rKAiTfG_1VNB>x{SLB zqBtNhSk3?cFR2<3dP66VImddP`uZ|;Z#CcntoXiE%lAKnQQvBdYR96#0^q@+wChj@ zf4e%o11W?0P^~bK@<0XY>>yM-T7By9YEnL+Q5UkNlD_O1E!~c+5!pvPc~%NBls`9S z;Fgpjw$+YD>R2W+Kztr4b%zg96(z|oHkF1R;yID@p4a&Jq&&Ds>?@*UN%iOf4rxSQ zzTyz2Co3=HvO}^jD|xSQM_DaGQ?af3ZN$p`9 zuSrrQJSaOv2UF2VQhnA$3`kPsJ%~iZIii;2QyW`S9*Z@~Es6dx51xuzlF!%;WRfJA zEQw=28SgF8jV()(<3o}K-W3*2ax(8M(b}F2Oi9XDQsgpYl0=L060v6{jOrHKPny%0 zvY2Jbh$PXflz(ubik|W5ybVqBldOs|ypSc4EppS19;CW?T=e$)LX@T?iEc|d)I&y7 z?9>sjG|5{IK^kV{rV#rahsH=7W2>u;?Pd~!ltMz9NdxW1r=-(zCEzu3Y%1MJ z+FQ2RN^Lw2GR2~OgA7@66J94FF^AlNx5!M{N#^ozl8|zeyYMy%pB&_Oh(p#Kr2kI7 zlm7$Ro7L$*kQc`9`g%S zJd(bGt=fr2=5sc=8H BCrkhU literal 0 HcmV?d00001 diff --git a/assets/textures/Letters/letterZ.png b/assets/textures/Letters/letterZ.png new file mode 100644 index 0000000000000000000000000000000000000000..9645e9d25ca1d0549bd112ed88360254e317dc12 GIT binary patch literal 1053 zcmV+&1mgRNP)@~ z0002E;qai$-GaK$&+7HN;_<`f^RLz9sL|od==8|v^v2`wk;B%p-tWcc^K7idv)}KE zzS6zp@tMflzTfO*r@+$d_H(eu&FS^7-R{lk^S9dQw&3u4wadWd@?E37)$RAJ-0qY& z;CBE305Nn@PE(&>QE@5KuMrRwPnrmC;;F^&Hen489~KGU&wg(xQ`C<{6A!;H6&L~V z1b+rUj2Zw@-z+Ww00NasL_t(Y$L*F`TiQSrhSR-T7i_BtRAdWF2xKZ&5K-A7VL6BY z|7Ut;f|5ywr<04``8^MJyl}p=%`q5b#at-`Ix2l`(AN$6lt5n%ffxX@&O%3{6`U0b zF#!gssqqAk326X4;Qd-hh%2c32;zF9qc`OLBW`TOo#Vpw3b{Cgm0S_(6KY>>{R>kfX_$D}4H@b2J`w3vAY`PC zQ&+BGTU6aoRs^9j=*g|+iW*+;tcQ^l&+j@^5vt+$o%Ik>2Uy6BGDIAS8WxxmF-2H? zxgykz-?n|CK+@r`+*@7|Zp30rq%O)HnyQsBa>mI#lZlq!{C1OUx8uCWrMvj;gDW(-+EktXbGc}S^hjo(8zHbC&z9N3M zmU6aQ%4a`y_;M(w literal 0 HcmV?d00001 diff --git a/assets/textures/Numbers/number0.png b/assets/textures/Numbers/number0.png new file mode 100644 index 0000000000000000000000000000000000000000..b862c403c5af6bb266a9b74175447a72fefb1d83 GIT binary patch literal 1711 zcmXYxdpy(oAIHCvR3o>R+eDGvhpF60nB=mZMV8y#=1@W_;rPkHn6c9uW{4b?7)BAf zl)0Xq4$19wk)!r7&B)5n^~m}DzQ13;&*SlVzF(jB>-G7(|NGEzKJM}dH4Xv*An$R` z6%W-@(DvCc4e`lrlM__-{^;!O3;>T9uy0{903fA=^YV2oC@4rzPcJMiOiN3n)9EZ0 zD!=weAp35i7V^Yeo=l}d$TY&ILxDJdxsi;9ZKWHKZu6beMhx_$dL zMCfJ6f&@gU|9wG6XcnYVC=|rv;$o=7WHMsOXDz&GfY8Zx*e8ENqXh3Vi3P+D3Fg5dbckMqzl+Z%YF3*o1)ow0~_ zI%eqMb*S0(v^1t{Y;TyF_6682#W`*z63du^?^pREIACyu$bUi~idT@5SK22*r)vP; z%A{KWKt|fb)!COY&{pzemcUvrr!^@xDe%E&{~Biiw`Xutl$cYd_;3qE&(Bk&Xq30x z2@UasDX|_Gm;Iv^dT#nAd>&3G{M*qeNYXd4(FEf^n81WQo6+k2(+|Ch`8%RsQPwDq>0O_9Tss+}WLWB2Ux7-J1r_f(EegH&s?1cpu|?Mpvh|hATfMgEM%>WR`O7prf1RDh5It{mx$0CpzsIweVp8nj8r!fMhsfZB^kZJtG}66pqRZj?3$=QPCIFEJ0BCTOTv?!KJKd*uVLV8t1jk#2J6347S-J9!at)cjf` zdGDsJ4Ph6u`f>20;DcPkB@2(C}4I!APHNURJ;NoCGOUSyU2ztx~TM6h&6MZdN}@# zdt6XY`=ZoY!o{-iE=OnKEo0V>cHL(zp1951@u>gOU5EbFJ*iVtb+DYAl=3{#+~0Vr zq*5{B)i;9y7v9r{oLyRNSY_9<^F!9t{Ya9#-N!g~(G1sN zI<>;77|TfNmGU3NR`ri2^>clJ_#)+$cNBZh)VRH#lGO*tS_i%D978_W$usrI71go2 zh#qZI`?zqEY`32@xS9^xQ|QZL8wW7%;~rU`68tPhUTx}O5r>kk%C%z%&C9B})>mmHL;cd0rrHU9^v`j-g`Y_F`=r5Wz#sYh) z;x*37Q5uoIocRJ#9nx7 zcLS-#m$l+39i*Rb5v>WbXQsQ$9a#0(oX*WBOMZ65C_Efp zD7M^?<{db|{MuG^rOki2I#PP(nci)1?IvEW%=*x=T5&F+hVCUIm}ClqXLuX}Gb_9q zMdnQ!3naMn=DB$FS-&ot4i2V|z=%pu%|_oeV=5HTQeP|op0(Y&{P)W1 literal 0 HcmV?d00001 diff --git a/assets/textures/Numbers/number1.png b/assets/textures/Numbers/number1.png new file mode 100644 index 0000000000000000000000000000000000000000..16c9b4169b9dad041272801d7be1406457237ed9 GIT binary patch literal 819 zcmeAS@N?(olHy`uVBq!ia0vp^szB_+!3-qt?(SO*q*&4&eH|GXHuiJ>Nn{1`KLq%M zxK5ikEi^QA`t<2DX3Xg6=>ZB?R#pPZ_V#ul2?0RaDO09&baYIbG->M8sX#4#eSJWY z$&)8HHa4cFroxp06#x|j0Z^o~vlAi?(Q9mM3=xM20u3oDDgv^>%0cRZV8@Eg|L@no zJ|y%1_5A-Y`tR@2|9{*6|D*i>Kkgr0A9iW0)BZK_YZle~zaRhqs{a2=@}G_h-`HXK z|2+Ty-|zo_J->8*>-;(WKTdG|zhS>=Y0=aDYX3j&|Npf9%qE}zXBcMAocaI%|B7QN zAm{3r1o;IYFza7Gi!YJcO_ZDC{FO}o{P>mrkMdo_1m+)of1jmCm{Xo#o-U3d9>?EaiwtiH5MVF3{r&D*AK?I#x0mKUYm(*&H2(g(el{C3 z-=)1aUv7N-&-Q1AwZWa@6B3g&&Kh(jrl`CSN}j0kRY=#or#0Pasa#S$U*f(GeoLmX z8qIa}>CBq;p^opcX8e=j6<11+=pAVIEK*w7`;Gg6v47wzwnf%WoyUW(WOBYO?}!pw z_3Y~+fjvcfp*wsRtb4y?GtlfC0d3<4mJ3ZjTji6$Wjc zGBs)?5dB}@<|kq7dQ>^M)?CheMW5l!*v4HK^QKSE?-22R_I}kb@2xKNi>k6MQy)t| Xyg2LUOdicyphV{B>gTe~DWM4f&JuKj literal 0 HcmV?d00001 diff --git a/assets/textures/Numbers/number2.png b/assets/textures/Numbers/number2.png new file mode 100644 index 0000000000000000000000000000000000000000..d61b2c7272789b21e02df6ce214ab105e5cab7f3 GIT binary patch literal 1433 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 U|N9PcKKOM&@D4<5wY_)zKe1D&<^TWy literal 0 HcmV?d00001 diff --git a/assets/textures/Numbers/number6.png b/assets/textures/Numbers/number6.png new file mode 100644 index 0000000000000000000000000000000000000000..77fbaba27274cc6e460531adf5bb9c313113aad2 GIT binary patch literal 1716 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 literal 0 HcmV?d00001 diff --git a/assets/textures/Numbers/number8.png b/assets/textures/Numbers/number8.png new file mode 100644 index 0000000000000000000000000000000000000000..4acf0d069f7fb3388936ea35408fcf4eb7f92606 GIT binary patch literal 1880 zcmYL~c{tSj7stPnvScUX%C+ywk}bEfjAe$4$M&Nk*^^{Ub|y?1BiV*ovW#M~rz=#J zAw|lTd75iv859i}GNQ<@?{9v;p67SZ^L);EJ@0eQ`~3OAdAK==3M&W$03Zr;hI;a< z3GcZH^7C@{i-qI7ax~KRPg?-^t4QQ9SO5U{L_A!*9m>ngF&IpAbTl51$6~Q)G@7TB zmX;!sNFMOEctIo*NhDH1K|xkl7LR`^K0ZEWWo6;v;Uy&{|C{rTY^3h{swNffuAWY_tU{iagY@R?oN)iyE30zejgE9>DL6g z{UE~-T*+vsqCh4D{INx;EFzQ1;1~dc;Olp}mAsP{@t$s8?bq!wj^=MebYg|XCfn}D z7Rge~l%Y?KN{aAHxCh+~es@gJu<@k4_!qC`t%810Rt7|Sh)-Gpz^1SL004mw7}VC= z`Be@v3cnIi@DEl0Nv)PW$elHAb&y|UREGqa&_oWd?W~bwR-~ zuzWM4$>7o7b^J)e`xn{yZ^_GYwF~d#W9Cf=78Wx$MqMxF_1QEjDVeB7)75;=#gPi1f2zg+lsax>~=W$0Pr zjU`u2ynWt{sI*G{@5L}aF0E_%vY2n&ocRv+Bzl? zz)wNrezz~eb>4nOS2RYjO^s^I`1x6X@i?+^kFDnNaSt!CdpeGZe>sn!IAZ<$VNx>F zR(c=o@-yX0F<$Q`p1azm%Ha6+5FhOZ-J2elbs~FJn{b#<1%=pT^EIg+sj*msm$?eP z!L5mku`sLa}FSpp0{Y$^t`PR*e48E6k+0? z?H4!$CC%I3@Vo7Y1_f34JH+0e64ReTXVd4`A3wOtG_$6L8`OwY;P}R<-8Oh>-J#J1 zv7-|0B-Pb6#X1WIN%+O_S@=qt;>8?W_O6Z9=v^tIx+par zN#wNr?Ii$y=;UJ1?w!RQsSJMeL<2`j_?@FA)ThtC?>Mm}5PlWjOgBcu>@;O)T^B!y zX~Bc9;B})^JPDoNZ_H$F@7b`UtKMp z<~~iew+a&_!t(uk8zp201W&;v7clpIUw+W9gRW%;sS`Y+=k6)ThBW$G-3hT#3K4Kh z*+mRH8z+&-k=l(e3K>0=66^>OQs&4#Kt$xge)A+rR7YwP5n=7g)j1!*#wx$-Mp1BT zZu-A#hT>XOIDa#i8S)yB`>0#mh3aUM?LV^KsV=ft1SB7$|Y zURlqmX}$~~aL@TXhjiX>-}kTec873s>u<%h>Zf{V(PcSS*a}2bpVIrvmfMhZ6ur|3 z>i)2EQNzYXwkxi$kHcEeS2xvOH@x*;woB`rhEuk?!On=RY&XzDZ^Dh5>M)*g8mQ;j zM%5XY6NTTdycqf>xT%lLajWG@YoQ_9fA3wNjTd5GnD3X0i}Tr0fJe*scPFf4Zn|~HQ-%u{KUAf)Fw&{c_Z^te&M@>Ck2sC-N9<$g!IJ?Q7INCL2Gt_OjcsWBH_?XU z_zjUB#y6V#?&W2mSf7n$Jug|@7xU0LJXq}u?8`s-P!G{#0Nt%J{CV6wG0fGg)j8z9 O-ww>d4f@dTGUh*1MU5u_ literal 0 HcmV?d00001 diff --git a/assets/textures/Numbers/number9.png b/assets/textures/Numbers/number9.png new file mode 100644 index 0000000000000000000000000000000000000000..13203cb590ddb46f8731cc32c5fb558dcf22c4af GIT binary patch literal 1799 zcmV+i2l)7jP)n+a00000 z005Phm6w;7j*gCjfq?)300000k&%&}RaI4#l#~Df00000n3$NCmzS59 zmy?r|l9G~^mX%tu0 zyf6Rw-?*r0|KDH#+fS^be8sO;|I#1-_0OfBh4{z`^2HPX^1uJO z5DvE=nx8gL76Y%(-{LP{C=~(J?|#J#6F(2|L>N;IzXXhb1{wfRv|AJa00m!3L_t(o z!;P2MV&X~+hBbTyHu5=@{e`QR<2T*0_GYQ!r%*KKOI=qG=`Glv zbvHAB=Q|%N`V87;&e)`*D#mvEt|*GS8csOa8{vKtFX|RI!hP1SThR=)ft;?vbM%19 zRX}^geblXoDQm{&OX8(X?d5o78X&~|F#X3sf?iUM?5hc0NYt@}0CszJW0Y@xx6 zLsekR8sulA<0i)15RSIlZH80?v^gVpJDsq_(#qS}c)=#*xbJK}vo=HO3|eeWb~0H{ zbMk%G6{0lY(ce)aJe5k_cmqf!OR_8%u0Ye7Y0%9y9>xHMea4vkgTfX7RoS*A_kKYC zWeaXOb&3uS-R~0&Z$kdC8|c%`RMz7z1~8d=tm%e=Z*}2PPkC4n{|&}8h#(ch&+dU& ztPNpV&ZKL2Xz7P6pX0R*X@d0O6e$44Xq3iysDTgt{QxYs4D)m4Xmh`qJYzBoBmx>p!FteL9_5cSIV*vM5ST3u0u#ULk+Kc*^ zQc_i1z>kpKr%d!PD`?+8-qc<+`VbYUzr`STFvu@~KlVSioiexWySRXd{v}WYn3Kq= zJU4`faO_E?K&L5Vq6ZXH{F-N1%s^@`0$RA%d0FRFgTvznB7gDpn9{k(9iRCsNA zP{lkRj8vt8!q?W^_BCoRXpn6xbB-=Hs6wr*_G4L3=Z%SKhfS3Wyk47vJarL~%eL8}GkG@kHg6 zBtIo!G-ng#cPL&IWv6ohtMHqQ78`FN$BHt zW@j}Od-+iCp@Y|TE?HDOhRRpX1GMzr4GmYe?K;w0tiPn)VIPW!1+REJShl-#M49(m zR1Yl`{nP2@(mfa2!g=0mB+KzGpEiA-kF9Qz7n4vmbiH$i` zJeVruwKUlg{Ts6hZIu|oi_8IKS?#!N*pTIrLSSRNT

6u-wx z<$0G6{Wed3vD_MbWGn5OuT6zMhM8r5)8lD7X^KKJ;Qm$RV%()7FvDDJ>-yYQv%$U^ z3>fAT&LL?si)Q(JW7%ZAUa1FiWgyhT_{sNlg3WO)$N60`{D$5+LIqi_3DdIJ0S*Uj z>@yrH3p2L#3B|qBXOKWBCeHIUU&>HX@;5m8J;`?bzNU;7GWuvY`W26^rCwZ;Kq{EjKZ|REDgPNVm?%_2?i3(SrIFyOky{X0; z&Cx-9JmLwKum{Yt=L?Y!0*-F#Z!POt7)~XFJLbOT{jU6mX=~ZY&f>&P!BLN5+V2hf zpR1aQR5e)&ekjg;Iqv)N%@j&I3yRVfJMpabfHSBb+I=Sd;G-%wRo+KpKc%|A*;I|J p&y>@(hx(`HsEt(H*%!-g`ya=-b(J4SZAbtB002ovPDHLkV1fp+XDI*x literal 0 HcmV?d00001 diff --git a/assets/textures/Planes/planeBlue1.png b/assets/textures/Planes/planeBlue1.png new file mode 100644 index 0000000000000000000000000000000000000000..2476664d8ea4e1f608cd399246d38f620802f94d GIT binary patch literal 2800 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 FV1l0eb>{#8 literal 0 HcmV?d00001 diff --git a/assets/textures/Planes/planeGreen2.png b/assets/textures/Planes/planeGreen2.png new file mode 100644 index 0000000000000000000000000000000000000000..7863776ea3473b14563bd377b34194e11b2022ec GIT binary patch literal 2800 zcmV*(P)Q)00004XF*Lt006O% z3;baP00093P)t-sGd>-!vd6Eo#jdf(8X6jegp^xeWf~e9ud&96h?j_omaekKud>Ij zt-}}?7#bQH8yg$1vBw)58*Y&&h=`OL8X6oN9EpjRhl-YliI#_nmKGKk85tRfiI<3o zm4=3v0001Mj3IE7CW(oct+B;|h>{!}9Bz{(aFQo*lPMb;8yXrKZjmOhv&V3hDTs-e zcXxh)ZJHaB%;wkgP=^I zw1-t>H^b<8zQ@6~xz3xNu9KaPq0C0v>#{gFIH<>OcX)q^q*#x+HoMEMqrG~@#>P)i zQlPwTs<)+S*wMXRm5mcT)!r?pB^KD*~$qtZcGWk0aAxsbI(tk_U| zp)IuHQoZS9zQNJBv~9zFnTlL{d{!eWNbR)Y7ipPct(!A|fItCMLx`3%+KM#>t>z4Ty%{=o}jLyyMchGFsrwqx7l~0&p@WuL!`!Joy$Itxi_fT zL%ir=vEWa_>}r;nrnlr+-{J1l*5{kZJscbyv9!sGi39q%Dy|{QFHOZ?3iS*s9u7nZ9kW;t5Ypq$*2e7bkYS*K z{N8ZEVX)*qN3Ud1_nuiYbD6}cis8|dx22Fu)S}%qS(0ix^)9>%>!;lbrFCg zMIH+@1QCt2VqK>qPu7vNb$?!7UWP`a$sL2yPw>GBFsE*?;}k(mwes}|Y5d*h)&(+xIM7YAW~Pvz zOR^PA+2AH?Ksz3|D}+_+FAA5d8cvrnVvxhJ@!OkJGqu%`J#1j9tV6Gp*tdj@Ho!erWlPzj~Qb?bdVnnksu0=fT`kz`=SSN8uu+r z1kNHo-k)pC@PKncyC{&Gl#~mioIMuroENM49$yxLFH?_s`U^w>klnLqHUJbH$1hIi znQN-HtQSNDIxXOmVeq2@i@0$A-o5)yFpi7l%CfRDv$^WU>S~!dz9Y7n7spiN1>pEF zx+oM&hw);XV_6awBlIgDtPz0mo=0oeV#!QdfY24O$){-RZaz3q1g6_iButee_r^Y4 z7MhHQacVeDNU_OcFePs{nRe>+`a%w)4~Aw5O(w(WdjlO8fZrS~1t#R8HF~|tv`42a zH|)~sbS9IjKej>tw9sU1!-BrMMJ88lTqFgilUd?J=<< z(qoGkZ?}m|9%Z*nf~9>yIs$&1-gMS2p z5@l={taLc4eXQsYy1*pUWx(-Dc-O}c+wB!R@O;otA$bCU*Q);uxEBD?k`;XbHshji z;JIAzd|U}gf^jr2srHRL+ZD$Ij5{oQ94o3_Z+7ld=5^b*^J)Y6s7Q2yWe+zhvh3GZ zvm450!)EbnT3fxQqN2jdO>}0+r}lC6fN_1~E?Ev4$_u4-fUj(}4MyYFw{PEeC7$i` z(V!l12qeKwb>3h&B)Mk|$NMs`uAmEjonUg_DJf-_xx#XTPI@!^1DApsnmi77Mt$H& zSm`!mv%zp)7Hkt17IlL|-8K+|4JMf?^cxX4w{9>_X-}=GH|)YTn|4Zor;ETV>juYh zI_z+i>xs?6xJbFVb?bLi=j`QiFMzti2|Vz58W((@*ZknBluzbzz!{)zo#5CP`n{6E z>)#>W9^U7zo*H~wfd^~^ojZa3_+$b)NlzZbSgn)$J0ZoTqAF$<_sDRvfaAm?fdCkd zfRy%fVC&e-w^wZ2wk^K|AGHPk@(&|(I8Lb5or%w#WiCQmGiR*U<*QdOw_4BiQ{p=Z zK6c&5qNk2kfIg-u<`;(gzdM8qnvxJsOPH!_aSF=y=(L!@2@C&NUNnZL15 zSDEVo__dGr>K3bGcz3Muj-nWkqch7>8uMtYXs_>&Wz~YY%IChrF#b~a6~2NyFhh^< z!0F6m>V^QTyEExr?ka}q&@kYR!OQ?ppRY1Z8+F5g)g2yY(wq~B1D$E1ZYZ$Yzcr5Y zt61qn-GSa9V6}f6XPh(LJE$8HOp-Gkt4&AwFZ>JPZPsjAMNz2$0000Q)00004XF*Lt006O% z3;baP00090P)t-sGd>-!vd4&sm9DYJud>A&8XB*$#u^$LTV7>|h?lOi#;>x+t*yft z7#JEF8XFrMud&B&ktZ7)8;OaQhK81hiIy4~8XO!Ph>4bhh>{i-78w~Ch>4eoh?Izl zmjD0&Ym6aqlP0aP#T*3}p zaFZu&jUjN8DQ%J@W{44RlO}MJCjbBdcbYB7+^W0WevFld$JM=}yLFSdOUlpLgP=^H zylubJrB`nx!{~WcWH*t#HTyE_Zl;iKJM&%dMlm zdd9}aPft>zyLh?5ysgHBtnVP4Py*a?!mSSURWPC9m9v-yaVy?@4xWl%6 zeuksBiI%`XyV#4-(b2ZJ$HC6Js=$k&!C#b>qnMbOW_dtaSzWBTr=H9{Mn*=j$b@Z! zKzo-$XlZVqy=0feI-9>!jhuS9*@2b4M4`r7kg8#@+gXaUG@r&#YHDgQFfh8hx~0-b zoXJ0`+eN0hk-NRjjE$M3rnO2@KD*~$SYv{Hx`xEZ+MuGZtggJI)Iqi5ReYi@$jaP{v^A5zI668yvbD;(z0tL} z&Cb!|beAflq_UfxtDL@FQd3mR)Y87e(K9nMuG~)|A|k@psU{{Sy};C^)IzY|OpuYC z^z`(vvA>wbJ9U{Vmcl#0*PqGM$b_pgD=RC)#n+z6M487toy$I+pRTRmNO_(tT3TSt z&*6=>HNfj;oxWUjjX|Tkfq|d}x`(hcq{d{S&p@cExTn`ckGVIf*hH3? zrqkBv-{J1O=wY$oPr~eKx8zux$UPh!9I>>?ii?=g)8%rNDLp+svb4gM!aA(oMiP^P zTL1t6ICN4@Q=ji|U*F$vpP!#UpD#a8U(ZjE&p(gPZ?7*eAHPrE4hP24Q z31s(He-v6mjFEv2WMVX2|JL24X(ZruQtgjUwWMQY;G!tO6>=}Mz~%oB7(A|s){4Z4 zz?o!sbZ>77Nscs*Nf8aWac1+&=Rhz0`s;7>?`wZisSMbVp$1OtXylcdF8-sVkWw=- zKI!#(w`07^8`g4+hYb1Q+;7jACsFLhC4?lX#Bs7DeY?kp(mvftKaa@+8JPyxubu-#B!aBG2&C_>QD#yd+&ZDGXz&PL-4J z8;++Yul4T4c)9ml@u5!Csrmyg3@u6;l$uNxv zNtzbeKcVQ6#skElwNU5?2?W&0qP~N{?Gl2m zNhi=%^r{rX52i5-q4w?CHP`D~tAXoO$R!s=y#ZceT+?qwb|{MND^B~?^LMRCRJ%K5 z;1q?&GJS)ozW0Gn^P*S2@ASTCwz z-E72+S(m2ng+vDdvDzosKDc|bUZNV5l*%NCk!*nw+hF<7Bh{fW_yQnaKRZ_fojZI) zG5xt&^)++Wi{w(&nE`ho#4_WEyj*=G88RUH1_EQ>J_p}8H4dbrO7ajhcVvAf@@HWP&i_wt8_*R*`!A90X`g;n+(&~`z<7-%nQ^WSr;y} zqV~-4Psxki?xjwrvrNMH1fa*{Cevwreg^N7fj|2cZN7AAGeT@%0pvTUIh}6zN{6G; zwanpgxZUnvV1x5+xyfM8n9uhqOs@KI{6Cj2{UZlca-l_hxXkHX>UQ_V_%6pXm^u88 zW2IY|krOPQu&7>P@_l~4Dp<|udwCbY95GsqAYCX_dD` z)y4kFf)U!+UjcV+F%q zk1h|+WWa~{xL|#r_I{{S-jmJrEA1`|PJ5*1W5vw)Hab=^pXY~r@L@G!@Bmr2sSwBc ze1m!gA+=i+UCeOlmSK-bE@1WwT43ML`OiMJc=6(ra@cCi{AD*Ie}tWAb%leF7TkWH zZ}QZslYPGZJq>W?z@i7qwmCJS?2zq2lU0Hr*1(@rt`8e6K@O9?rj6 zI^v)62MSjwxYGzF=~E**#cJEN3#e;bMU1EOZZ47hC^_hop@CpfO9sbRpTHrH`E!50XD&NVYN z6xbBo0^IA7iftK;bFNDpQ$vDja&`r^Y^(i+e*uJXa(xw5QKSF>002ov JPDHLkV1o6Oir)YL literal 0 HcmV?d00001 diff --git a/assets/textures/Planes/planeRed1.png b/assets/textures/Planes/planeRed1.png new file mode 100644 index 0000000000000000000000000000000000000000..c346082ee9ec850a7125b64a4a0a6ad901e504f5 GIT binary patch literal 2794 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 literal 0 HcmV?d00001 diff --git a/assets/textures/Planes/planeRed3.png b/assets/textures/Planes/planeRed3.png new file mode 100644 index 0000000000000000000000000000000000000000..1f5af3a9be17d2d2423efc2f7ca7e94ec44623d4 GIT binary patch literal 2790 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 literal 0 HcmV?d00001 diff --git a/assets/textures/Planes/planeYellow1.png b/assets/textures/Planes/planeYellow1.png new file mode 100644 index 0000000000000000000000000000000000000000..0a3cd27345ee7990fbf6c3f5a2734b1a0b2e3761 GIT binary patch literal 2808 zcmVQ)00004XF*Lt006O% z3;baP00093P)t-sgoKoch?lRj$3i+DuCd3jvc(!28X6iJTV7?avBrprmaekKud>Ij zt-~7|8yFZE8X6j#geR}D#~T|Ph=`OL8X6oN9EpjRhl-YliI#_nmWYX$78VwUhL#x_ z8HtIPh=`SxgdqR`0G)>_f{2owg(sbcC#|u?orWnK92^@P8yXrKh>4e+h9K zcXx=KhbWkWA)baRnua8ZcM+Y3D4mBW0002z%2%b0FP)c#S>@NC+0Uzpc{#(twjLfHVqu2sn3|{R z$2zvS$NuAZ(b3Vw!oa4WkJr$*)w@sc$~Typn1XgjXs2r_;rZjekgJX>QxW zUCg|K;>1hPzIm#jd5n#j(6BAlv@Vg7pX|#+@YQJC#%uW7WS*d}l$N8&%id~gYR$fd zFfcH>y1LcDbL`AazQNU{luJ}lK>Ocs&A*Dlxt(icL$$TIvY0F6$4-c_SahO$ur=?RGEoN!o}BGT43_eL;Boi>D7bG&*A3EUC_UL%CA80(NzEB zdzP4{{NQr;*^( zukXKqzh8gP58p5EKM#Mu0GXU#o&W#`UP(kjR9M5cn0G)FM-;|MPb@L^E{cGtAjko? z>Am+JdylK%BikKi1+7h2$s{|^{E&hZUA z1BG}6jzI@}8@&xE%-cLhTS>xgHW-%O1N9pDf>iQ2Of-F42fL5h9maT< zy;>_y&Fn=OUxn6%828|(bdYjNM*|=}`8-kV!9DP!V0WjYQ8$e75xadCA-%-6R^B62rD-R!1abybR|0N= z(8leB^5rU96fz+CI-R4xzsYLlmXoA$2(*@FnN0IVAy<%qVeQ>BMzIbSiolmKzN0V* z`mv+*gvn%bo6(7hkbuL`2W6hXXCbyr3h*Up{VF%rl;8%ZGL2;sD|gPqIH|{%72wOP z#}b`jYD>UT(&D7hmR-DiyDTg4Ss9mfLz)#JGEqce$cqELa&mHPw&LQqL8ef#&g&?c1guzjDMGcGh|@c^Vpg-S#_rD#rT}kWavge*j1$9bOo5* zhQiSvHF5{=;j-Lh=*H>ZFd>yDE5R(eoz*(eVzCs680`UiNp3Rf#@xI3s0{qaZ)#vd ze(hCDcdONEHs>4j&1N%Pb_E+Od*vpBIeX_`RhZmo*js8~LXO`kJX~P0%(GhiV*G|V zA9`-){)p|71uUM^u2f<2vIh@T!D>Fg$+`e0ziqJ&=R0Hk5aae{a{|;HQt&-3FcsZe zzC3f2156%LkZ%=baR-ZKDC{9p@L~@9I^(aX-6C~l6=k)%INN5MZ7^)MaUa>_JE!Fa z!*ZK#bRUD^#*G_O{+_y?2VdvFZJ9a|e#+7q#j@NnKGd4Sew2V8Ok-;Jshn%#PXV{s zrz-X@Dfk!0U!{x?=^Ef@9lGyhz-47OB;aXGT|dvh2rYW@eI%UTs{hTutLLm&4@XxqtIBWbT76%K<}ubjpReZ5&>pwgZfZQo>~V zcJ11=>qX0EIp82fl9|J>97fVaPWY7%c8o~+ zXz!LSTVhk-s4eqXdKj53a)R;=@2@<$|AXP4ys?wZh)x3(ktw~iD&Wa@< zY&L4y0@SjRBFCfHk(DTsez8Ubf4?rnm>~SR+ONknRh_;f<$g@l0q)z4$+T`vJqEY| zJ@AkOoJYSPz8}%BVFdL!V5$Y3C+04p=?1E=ZhQteawQ`_a&#@~$$+T_&(n$g079bE z)u|^1rUGh0o?jsvC?xt50aF3B_&lduG@za&m`u)=pjwTzfABA5N+I-~0%cJE0000< KMNUMnLSTaWG=pOR literal 0 HcmV?d00001 diff --git a/assets/textures/Planes/planeYellow2.png b/assets/textures/Planes/planeYellow2.png new file mode 100644 index 0000000000000000000000000000000000000000..05725aef5412784e665722bbd758bce0bd830b69 GIT binary patch literal 2802 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 literal 0 HcmV?d00001 diff --git a/assets/textures/UI/UIbg.png b/assets/textures/UI/UIbg.png new file mode 100644 index 0000000000000000000000000000000000000000..acb6a61c1fc819ffc23bd6c040b983cbc89cac8e GIT binary patch literal 639 zcmeAS@N?(olHy`uVBq!ia0y~yVB`Q{4rZXp6pdMDffP%+qpu?a!^VE@KZ&eBen@~% zi0kG3{a5z)T?V24OF;I%UI^pv?hYUqsOr(>&9Cntet2>1ldD@EUEXm0=*$OB=5pp8E9q_BRiX0`)$)xc=y6_E?}!?vfzC;PvtO_4D=j-{*hN zFvsKieW086d%8G=RNQ)d;kYBSqX5H((j8kK)MOs}`<>I~4vY5G1wq-iQ}&%t`&w)H zM{UY2-kWl4`sYH|WxUdk{K~r} zHSwqT$G>@Z)RkO11QeZGI0Q!-I0E6%<_`Cot$#msx%(|WAFY#pn*X)X_BW>uw_8e? z=U3`Hp74F|+xEZn4o75}r+!|xZd%mw;>V(wE7yEwclb10TVH{p5E#P@p00i_>zopr E0PEN9D*ylh literal 0 HcmV?d00001 diff --git a/assets/textures/UI/buttonLarge.png b/assets/textures/UI/buttonLarge.png new file mode 100644 index 0000000000000000000000000000000000000000..e0d0c09ab2aae38d5b083c308593e6f655c4ff60 GIT binary patch literal 477 zcmeAS@N?(olHy`uVBq!ia0vp^M}XLkgBeIJVL06dq*&4&eH|GXHuiJ>Nn{1`s{?#O zT#qkPJGM;ir;B4q#=W<<&C3ou@VEwQu(wT|s_e?gF7d9uRgC*<-owxL`0^UxIXiI} zX>t`u2KuD1v}9(k(_ZfQ%=q>F@ zzuq^s^(o6=To>@47B@-$X2RNmps@CI^>bP0l+XkKpPR_G literal 0 HcmV?d00001 diff --git a/assets/textures/UI/buttonSmall.png b/assets/textures/UI/buttonSmall.png new file mode 100644 index 0000000000000000000000000000000000000000..3ec35551d035b8992a2a9a4dd814aea9a11f83d5 GIT binary patch literal 468 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 R(&YdE002ovPDHLkV1f<3@ACiv literal 0 HcmV?d00001 diff --git a/assets/textures/UI/medalSilver.png b/assets/textures/UI/medalSilver.png new file mode 100644 index 0000000000000000000000000000000000000000..d59dcb8f0cbc56e330df7cbd2b617e8d46f83804 GIT binary patch literal 3613 zcmV+&4&w2NP)IK7fFLbaZq80054Tj%;jfjg5_tj*b8T00000iHV7f zjEsYWgN22K0001vj*entVv352hlhuajg5|uj*N_q00000000000000000000004b` zeT|Kcj*gCvjg5|uj!;lgdU|>Q0000000000j*gCqh=?;YGmegqkB^T4004o3fsKug z00000000000PpYb$;rvQyu8E1!{6WEz`(%j>gu|>y0EaY#>U3P#Ki9I?(y;Q$jHdT z!os_|yXffX%F4>VzP{}2?B(UQ%gf88q@-QARwlFKVnuBD}=udlDr(9ox+r_s^Tt*x!5 zrl!);(yFSe&(F`RtE;T6tf;7{si~>c)6>q*&W?_b&CSi#)z#G0)S;oF@bK`=%*@E6 zcZ&Q!o6Ar~6nyD5)MAWyRU*ZG{5ETXyey{H@Pd0A>0}0O$ zD8GLgjPMN_0Jd=Zm;e9^_en%SRA}C<+vh_X%N77|-g`+*j2cZemTQR(E8_UxyS*g2 z=~ayd)F^_0v;ZOqC_9U?|M#7?eP&sV=R-ckm7jBF_RQ?g;8|%Y=6W74-d)gRY;mz? zytR*5@wnF}78mY8ZY=cO8NYFI{LU=-@L2IE6;A6>NTrJV|7+?{%+y0 z!Hsmd8pGYeM6b9Ye}hV>RE54KAR z3st0XoDRK?n_D_NaSd`D-GjRtm<*&9JU31#;pEjH&mc%7XTOmaxn$d#kni3mz z(HML(?uP8sx-nC75)Ejst7#^Co-i>ZamAV)<%qO2 z97k1i%z^BD0;^3#tH~EBO3if4Qv5vTnzK*)F)tR)s8A&40j;=}I%Fir;10Q?k|jsc zfI5f-rDG@z;W(eX10hXCQ&B~oMU1{CA6SL==6K{dgmgMiyAX-lRIJx8NyW|V7>AHf z&cdRg$SG2(WH)Peku$>_zap)GaKcXBVI7&^iX}Um=N1Z^8A;Oa)KjaHoe-wU(2)e9 z70tVwV(Rq}$z2ilS;;Y$*1A|UnR#(Bw3?q-YRAoF4}_#Z1)M|!ns+R}7L%0tBe-BD z7wCi)mz+fv%{MFfCUT98+8FFHl8<4GjGahRk(haRQ;Zg5?U#c0jN~l6B{SBKk_!cm zD*u1$%_)iVD@zn}x!l{`=YNRI2pJ|ZcB6P`Ptr!#?P5Vgf2~%lVv)q}qJ|#OW-jRD z812afS7hjBm4uU+%e@d}_XF$Aah2?3!?i9DiCJZFVimLBzG>u^s7qhdLEER2i*%Mu z2t^bx9K>%rDjG(l%tYxz2$T0zQqg;JpG=${JcYzasdEww^>BqN zo}PX)pwDYH0lG>n?HDB&>3YYshLrPpi}_QoQsIfGMl@d&ns`PzgpiW6G_Ps1h~kgk zH)kl`{462z^{ZWhsH4v_wVDWJnVrBS8n4#867lJ87Z+zVa^XTD{oh9E>5rOrhJR=M z!>JLyTo2Z20<=`4w`LzEC+Hj!w1{%$;zBdezMzKUYH_BLFR{3u(a7?~MsoetC3j7R zMMa5|`D7N8cWE7nShD*5f(A3+q8~&;ftM>+1pTl8lK;5GxSQA##?^ z&3Ut!ztDn^#fwcGzpCUaDfq{mv<99&J6K&+n;72Qd|^h(`Yl3d>IpA*&c?T;jyb2TS`}qCHg?WxZ)XyJLF+m70YExzCAaXHt}nv zY6z`IzaaECJd!>d(yOjf@giss-I*RXdP165rfB&5{Mjx&UKTB%;45JLxmy_&6UVa`ku4c z4bgeJ)3ZPatVJxBBcXE|cJZvjH7WW#`S(3%d0nSNw#Pu4#B%wUIuWyW5k*DV&|Nx? zI174>d_tz@xJ@jl|2nLSM3c$u(l4Axh&-L9?|5j1Mbon+S~3*H2a=&OeL~1IUTUJD1~x(8DJ_y1mDQ(` z1D4y*=jRqvoZXA7A05dIdC_ADS-&zE&+4Kp^y2F3E$3mJ&0d~%epMfB2kf}iOPusYHTPKucCG`MCZ$8&nR81ugS8C+QoAD@4XY7$wis?j`Q{? zLDuX3WzWCpLL?x|4CRUC`d{x(PEML^@ZTaZ9W;H zGglYDkF>*pWj16NRWxyt)zGsywk|a+JwpOOiUUhw?f|$PqMV$(*^(6|q@rY_N7-Y$VAa9NpVhQB8a&$I*tz zOWxd-pmXIY7$D>fSfT?c&KEJd+V~X4=;o)!2dT71KB2KmP*wcMHg(p}D~w!_)5s|F z&v(=JKGR^Hy*G>qL==~7Upsk82h{OTiN*&^YHchv65F_IGV!%F>)vOA-jrS7K6{5Z z0v^ywQ-9BGHwzmWJuDd(4~K6IVorVZPseTBbfnwRtF1|#S3=H!Nw)VCQpBcgT?9%W zf@fd#fup5Js$1T&N^!ai^#F8huYi4^i|tvIlvYsv@gWz_D8dNPT?_vt9lVT=(M#2eA61~1!&Oj*mt~SXH>?I4-MfSt0}E}Xt;tQ z!w$j_nD3|4rsZw7lSv+vBKQO25wS??`C$y*lfY{rQ8U}v2(oT^2~k;b729kFvjeb3 zs=Gl$0F5BQ)*c^qDVEqiEgCzlkt*r+f%!*l?>p$mbSoxl-GNhplmX+;-ZB6W{cM|d zTWN~A1KIFGo3sxA8?MGJ({2E!*dC^R>&uF^B%*TuXdZwW+b-=e0I2T8qN2@VrFD^= zh&h7(hXAy5_M-12^AU_4ijJfxEsII@Ow}!vRxgK~{sG{-b3Y?AmFtLm5Z{q{T21E) z1^^jC%uGlE)TJ2FL^O23h~V_ZAT?Qk@~fs>G1y@JNW|`G(XkX%5WwUk&5S75jr@To z;;i}x#D{NCcjA)3OhIy8Cl!mR1ORZ`;k?hZYO<4**J`NR#Aua?GmfX427K7;)z7FU zN-cug=|6O~$bSoqLruUmByRB_F*i}n+0UYuKS%daK36*Qv$ zorma1a4!)DU7W)s{Rt*fa;q7^IZiZdphD5<0yt^FuCZAeWp3Jpg&8_8hWarl&t2Kdd@KegoXE|Q*D#xpO1KN;L9B| z?Z9pL?t7bmo~y60c$d4~fI~Ak`bC|A!4XHU`~L0e8~<()T3s&>{lLp+`|^ypg^y{4 jr0(#tF=mFnt$xBkY?r;S&Ktys00000NkvXXu0mjf9!lvI6-B0(?ST z*R5NZo1431$BwOAw?;%nELyZ^_3G6?Ngx0ULKtxNwr$%sY}f!4pEhk8Tx$OO`9QXt zo7=8kyMR(auzmY>Ah~(-W+1t9=T3;qhK2?px3{+!t`W%Hy?giGy?fzm?%%(E?%cWS z*RQ{Q`}X6FCj;-@bjjefu_0`~Uy{rPn)u z1)8W|666=W((HVpLftF@?tEb}W_`X#+t()wa`NVLXxP8^|8W1x{CGxDm;PW07PkHT z^7T>-1^ln<7#NrsJzX3_JdVGe_O@)1fk4~cw{=@?=U%B1Jq-Ax*PpI8#g z%(5MJJzv4=u=TC=VQ0xa+1*XL;$921#kRbZSh8!~ELMvJHp~@urFmQizC~B8n%1xD zs$CZ`@9>S8j4hR6|8#AiHFQMR?dms3k@&FKNWxNU8@K1rm(uUd9@lHH(<+}-+TU3D z;`4VQ%YZB8T!!jX4|}~_Ey$wMZD|lv_f265^ZS%t9M>eB{SJRz=oca{DUhnNn{`L< z*9Wg6me)V+E}5t^D|@lm^koTK1(%dOF#n=;@?6)vn->eXO zXFpE!YO-y8v^IYu<3XeBAc^d~r#ZHq7i(GnPBQsgdE@e*?&Yc37k>BH3ch*Is%`S7 zoa>M6o^FTj61z<`?e!y9w)fS{Su*#-p?5rmcb8RPsMCD-aLKNPn{8NT*odsQeY!h8 z-uq8?-}1gd&3E-i`qRYr-kN#vjcwNn-M=5$w$*pc$VsfvyC=bMXVzk!$}acMn>Tkw z&i%7s`a#L!KAjmV)1RO9c;@eU{~o{8necBysr3@D0(U?0001MBqVt%DgXcg0001cDk^#^Dtam^0001U zCno>^0BR*A0001cD=Pp100000$U;J{Iy&^)+UBaN?ZU#~l9JhadfbMF%SuYpVq*B_ z=7B6M&O}6^Ha7e6^6Iv>&Q@07NlDB=K+!@%yFNbg&d$|tZsVSw|NsBuN=kbxE66@R zI0^mw0000KbW%=JjK4px4SwPa7*Ege7O4<#310vj?u7l)0004+Nkl&@&8$jmpw;~^XEVXRL2g>iNoLG->~9_z?N zzrGhn-$(eUp$hc#xFie}12t3>6skBVP?1nw#X>cep^qr2sxtHq2US!Dn$bBL{ve?= z8OL%$C?$k6PSy3Mof4Gw32zWFM&&?N*j4BBp<44s4OGaEs(Vd=+K5&I)b81$1`^d8 zlcrOL9-HCyO?4H>{;cK|n=Sj5iYk`cRM&wmHLHVD%kHQqc6Gx_>iy$4YRT8Mk@@0k z*|v^#je0*jsRe7a!p`+bA%>}r@a~2`szm46$s3`2#P!ZVcs~;2uFrNA>NlpL&002ovPDHLk FV1oU{FL?j} literal 0 HcmV?d00001 diff --git a/assets/textures/UI/tapRight.png b/assets/textures/UI/tapRight.png new file mode 100644 index 0000000000000000000000000000000000000000..5f5f06dd8b3121762063f87518c38c73dced63a1 GIT binary patch literal 646 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 XasA!4!zfw*`(Z671(B@!WEAi}E8=(c literal 0 HcmV?d00001 diff --git a/assets/textures/UI/textGetReady.png b/assets/textures/UI/textGetReady.png new file mode 100644 index 0000000000000000000000000000000000000000..49e740260c9d29bf281ffbbe2a5e392bea2c1b69 GIT binary patch literal 7397 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 CfD%yv literal 0 HcmV?d00001 diff --git a/assets/textures/background.png b/assets/textures/background.png new file mode 100644 index 0000000000000000000000000000000000000000..467a0c7a95cb399a7919c1947328bc02121960a0 GIT binary patch literal 6683 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 B*Z=?k literal 0 HcmV?d00001 diff --git a/assets/textures/groundIce.png b/assets/textures/groundIce.png new file mode 100644 index 0000000000000000000000000000000000000000..a1a4797ba31ea1aeb57162120a627daa1b072b0f GIT binary patch literal 3320 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 literal 0 HcmV?d00001 diff --git a/assets/textures/puffLarge.png b/assets/textures/puffLarge.png new file mode 100644 index 0000000000000000000000000000000000000000..e17dcf0ca6bc65c9d7babcf7beb3bf0e97c348b0 GIT binary patch literal 357 zcmeAS@N?(olHy`uVBq!ia0vp^T0pGK!3-p?3S}$=QY`6?zK#qG8~eHcB(ehe#sNMd zuK!5^Kutj9qFbB30a*eiL4Lvd>-+ul=f|J7mw$hse}6qgRo=HEpxi-E7sn8b(?_p( z@*P&-VGWpUklgdW{+8LqTSCjMUM;HcoF}00XWd9)&N83+jkD`f$#o z$KGe=q~$G2zp`yo@{9{t0`DCwd9S)$oA-9*Y?~WXEJH+i*FVyJ72$QgdLH}fCAAF? zL){cLJbiS#S5CUDvHVZ|tfwWDFDoo}{jwo)Vtdp5xUk>f&o`<3Yq{%Sey}PbK%Z~o zEyFKg&b(t!UwFUzf!ppoFW01Lz1FVdQ&MBb@0Ja;n>Hq)$ literal 0 HcmV?d00001 diff --git a/assets/textures/puffSmall.png b/assets/textures/puffSmall.png new file mode 100644 index 0000000000000000000000000000000000000000..555dc886ebd2529b02d253b19203a8b764754855 GIT binary patch literal 285 zcmeAS@N?(olHy`uVBq!ia0vp^l0YoV!3-o@zHZe5QY`6?zK#qG8~eHcB(ehe#sNMd zuK!5^Kutj9qFbB30a*eiL4LvU^7Hxg&-?e^ueV>X|9(Hi%xu+_K)Fg!7sn8d^K&nq z7HUx7U=7gv%=_to{A}Z_)|1P2UpCfacB)Jg65M$wyx@KQ3Ee!gM-w$z^Ahw`Z7=bK zp5%;FGwJ+uQZBo3gQC9khRtd#xc*NF7F~X7qef#>r=-`vd*W{Qo8}+s>XX`f{pl3< mxS}tX3+ATZy6^p1K4$d}xmmnxmbC*N!QkoY=d#Wzp$PzAGlrZ1 literal 0 HcmV?d00001 diff --git a/assets/textures/rock.png b/assets/textures/rock.png new file mode 100644 index 0000000000000000000000000000000000000000..52976085af3467dafee721e3ba40b6408d943208 GIT binary patch literal 2543 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 literal 0 HcmV?d00001 diff --git a/assets/textures/rockSnowDown.png b/assets/textures/rockSnowDown.png new file mode 100644 index 0000000000000000000000000000000000000000..e75ddbf700d8db54aeec421e6812bac5cdb88e4e GIT binary patch literal 2902 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 literal 0 HcmV?d00001 diff --git a/assets/textures/starBronze.png b/assets/textures/starBronze.png new file mode 100644 index 0000000000000000000000000000000000000000..58f6e00671cf117984c51f9e4e23bb58da575f76 GIT binary patch literal 734 zcmV<40wMj0P)L!*fq#?oP*5{Vo7>G z!2!{lo(BL##nhDJ4*%!AyGZQoO*($`Cp8u&IC4IaWn!mxB2-OyNc51aicc z^3SDqX*0K~FHYw(WzMykD~KrTy>AZQbeSn@)6I?I#8ORhF`YF<^Dzf2m3cG4y^(dc zc+S;=Mk<-$&Q!#FFn=@RvdJoLZ^am!F6# z|I7ea6$n!R000nlQchEUA77u}zpqd4KabBZZw~+()Hfgi00G)bL_t(I%e9nSdx9_w zhC7vmK#QAaL=NIOO49%T>z3kB#;Cj6ch~fNnkQe9GJh;?8guJcl#K%hDzU#fj!g-l zh~8_?LOcQxXurMUJR4)UBmgP8LeB{oKLA=8K^@{;&zTt3u#+;cVBa9uaSk?nh$QL# z1P4TGl6!LyOQ>?i$rd0$n~O0gxJ#~m!l{*a?Er2RF|8ptGnKb#39ym9sFp)WQQPsp zImf1B7}w-mCZDS4ybl_>b7#V5f*Q3B3JPAf?{cU%J5jVu73s6CQ3PeJ{H;wyXc15w znTrQFMOUfQZl&7jFvJ@4lu`mE8qB2kF8K?LtPGJe51aZ&onuv$b|IM0FohSH6DSau z%0HLdrOn)`zBrxFl)2Dmt{|qY_r5uJ(`BZtO*c1+6ALxP`E=G4&Bq)pRp#vkw<7Co z@tmtUjZ`whovDb~VE!0!*<=+r^5n^J+Mn|T2eAI$%&f8XT#)#|gXl;Tu?aeLT-;ZO?C8ME; zQ+%lTIMh(5YNiI9)n6~>w5%RC`g8ve_Wz5emfhsfZ*=LXpJd_b{%4K80B3x+9>_;NaKS*VWb4zrVlZ8AV*)AIpO06K&MiW5w6Ufjgf?dQniGAi`>L{*zO@!r1ujX5uI6% zd58_jT63xch|%R@$_eh1YoBoH)LjRF8%1nq%q?y0ZQcNsY7o_Oj40}Q!8hl*bc_;7 zz7^^zecs0{-T6xqGC_^n#uWuGyLUBKSDYx?Nk^cbQ9Go_V5gBG*tf0z0NMpj11S%9tlQRh^W(yj#y7ns9~%o$XO8||M@?J{QW zbYHyQXUbd|GfPM)>%DIt-b|S(YunF_=EPc0aXp_kNBc1c8=ZMK!@ZGpu6WMXibg7% z;m%aVax{Mn;)>ZSZsf_6() + .add_systems(OnEnter(AssetLoadState::AssetsLoading), load_assets) + .add_systems( + Update, + check_assets.run_if(in_state(AssetLoadState::AssetsLoading)), + ); + } +} + +#[derive(Resource, Default)] +struct AssetFolder(Handle); + +fn load_assets(mut commands: Commands, asset_server: Res) { + println!("Loading assets."); + // load multiple, assets from a folder + commands.insert_resource(AssetFolder(asset_server.load_folder("."))); +} + +fn check_assets( + mut next_state: ResMut>, + rpg_sprite_folder: Res, + mut events: EventReader>, +) { + // Advance the `AppState` once all sprite handles have been loaded by the `AssetServer` + for event in events.read() { + if event.is_loaded_with_dependencies(&rpg_sprite_folder.0) { + next_state.set(AssetLoadState::AssetsLoaded); + println!("Assets loaded."); + } + } +} diff --git a/src/background.rs b/src/background.rs new file mode 100644 index 0000000..d7c70a2 --- /dev/null +++ b/src/background.rs @@ -0,0 +1,113 @@ +use crate::{asset_loader::AssetLoadState::AssetsLoaded, system_set::MovementSet}; +use bevy::{prelude::*, sprite::Anchor, window::PrimaryWindow}; + +pub struct BackgroundPlugin; + +impl Plugin for BackgroundPlugin { + fn build(&self, app: &mut App) { + app.add_systems(OnEnter(AssetsLoaded), setup).add_systems( + Update, + update_parallax.in_set(MovementSet::PostCameraMovement), + ); + } +} + +#[derive(Component)] +struct Parallax { + speed: f32, + tile_width: u32, + start_offset: f32, +} + +fn setup( + mut commands: Commands, + asset_server: Res, + assets: Res>, + window: Query<&Window, With>, +) { + let window = window.single(); + + let ground = asset_server.load("textures/groundSnow.png"); + let ground_size = assets.get(&ground).unwrap().size(); + let ground_tiles_needed = (window.width() * 4.0) as u32 / ground_size.x; + let ground_tile_start_offset = -1.5 * window.width(); + commands.spawn(( + SpriteBundle { + texture: ground, + sprite: Sprite { + custom_size: Some(Vec2::new( + (ground_size.x * ground_tiles_needed) as f32, + ground_size.y as f32, + )), + anchor: Anchor::BottomLeft, + ..default() + }, + transform: Transform::from_xyz(ground_tile_start_offset, -0.5 * window.height(), 10.0), + ..default() + }, + ImageScaleMode::Tiled { + tile_x: true, + tile_y: true, + stretch_value: 1.0, + }, + Parallax { + speed: 0.0, // same speed as the camera + tile_width: ground_size.x, + start_offset: ground_tile_start_offset, + }, + )); + + let background = asset_server.load("textures/background.png"); + let background_size = assets.get(&background).unwrap().size(); + let background_tiles_needed = (window.width() * 4.0) as u32 / background_size.x; + let background_tile_start_offset = -1.5 * window.width(); + commands.spawn(( + SpriteBundle { + texture: background, + sprite: Sprite { + custom_size: Some(Vec2::new( + (background_size.x * background_tiles_needed) as f32, + background_size.y as f32, + )), + anchor: Anchor::BottomLeft, + ..default() + }, + transform: Transform::from_xyz( + background_tile_start_offset, + -0.5 * window.height(), + -1.0, + ), + ..default() + }, + ImageScaleMode::Tiled { + tile_x: true, + tile_y: true, + stretch_value: 1.0, + }, + Parallax { + speed: 0.5, // same speed as the camera + tile_width: background_size.x, + start_offset: background_tile_start_offset, + }, + )); +} + +fn update_parallax( + mut parallax: Query<(&Parallax, &mut Transform), Without>, + camera: Query<&Transform, With>, +) { + let Ok(camera) = camera.get_single() else { + return; + }; + + for (parallax, mut transform) in &mut parallax { + // + parallax.start_offset + let mut new_offset = camera.translation.x * parallax.speed; + let tiling_undershoot = + ((camera.translation.x - new_offset) / parallax.tile_width as f32) as i32; + if tiling_undershoot != 0 { + new_offset += parallax.tile_width as f32 * tiling_undershoot as f32; + } + transform.translation.x = new_offset + parallax.start_offset; + } +} diff --git a/src/camera.rs b/src/camera.rs new file mode 100644 index 0000000..ba83f66 --- /dev/null +++ b/src/camera.rs @@ -0,0 +1,62 @@ +use bevy::{prelude::*, window::PrimaryWindow}; + +use crate::{player::Player, system_set::MovementSet}; + +const CAM_LERP_FACTOR: f32 = 1000.; + +pub struct CameraPlugin; + +impl Plugin for CameraPlugin { + fn build(&self, app: &mut App) { + app.add_systems(Startup, setup).add_systems( + Update, + (move_camera, follow_player).in_set(MovementSet::PostPlayerMovement), + ); + } +} + +fn setup(mut commands: Commands) { + commands.spawn(Camera2dBundle::default()); +} + +fn move_camera( + keys: Res>, + mut camera: Query<&mut Transform, With>, + time: Res