diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index d4df2b1..5a7d8cd 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -14,6 +14,14 @@ jobs: os: [ubuntu-latest, macos-latest, windows-latest] runs-on: ${{ matrix.os }} steps: + - name: Install packages (Linux) + if: runner.os == 'Linux' + uses: awalsh128/cache-apt-pkgs-action@v1.4.2 + with: + packages: libwebkit2gtk-4.1-dev + version: 1.0 + execute_install_scripts: true + - uses: actions/checkout@v4 - name: Set up cargo cache @@ -23,7 +31,7 @@ jobs: uses: actions-rs/cargo@v1 with: command: clippy - args: --all-targets --all-features --workspace --exclude egui_webview --exclude egui_flex -- -D warnings + args: --all-targets --all-features --workspace -- -D warnings - name: RustFmt uses: actions-rs/cargo@v1 @@ -35,7 +43,7 @@ jobs: uses: actions-rs/cargo@v1 with: command: test - args: --all-features --workspace --exclude egui_webview + args: --all-features --workspace - name: Cargo Doc if: ${{ matrix.os == 'ubuntu-latest' }} diff --git a/Cargo.lock b/Cargo.lock index e041f85..0d7b5bb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -234,7 +234,7 @@ checksum = "0ae92a5119aa49cdbcf6b9f893fe4e1d98b04ccbf82ee0584ad948a44a734dea" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -395,7 +395,7 @@ checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -430,7 +430,7 @@ checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -512,9 +512,9 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.3.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" [[package]] name = "av1-grain" @@ -665,7 +665,7 @@ checksum = "0cc8b54b395f2fcfbb3d90c47b01c7f444d94d05bdeb775811dec868ac3bbc26" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -757,9 +757,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.1.21" +version = "1.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07b1695e2c7e8fc85310cde85aeaab7e3097f593c91d209d3f9df76c928100f0" +checksum = "812acba72f0a070b003d3697490d2b55b837230ae7c6c6497f05cc2ddbb8d938" dependencies = [ "jobserver", "libc", @@ -931,7 +931,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f76990911f2267d837d9d0ad060aa63aaad170af40904b29461734c339030d4d" dependencies = [ "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -1115,7 +1115,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331" dependencies = [ "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -1145,7 +1145,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -1156,7 +1156,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -1178,7 +1178,7 @@ checksum = "2cdc8d50f426189eef89dac62fabfa0abb27d5cc008f25bf4156a0203325becc" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -1191,7 +1191,7 @@ dependencies = [ "proc-macro2", "quote", "rustc_version", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -1263,9 +1263,9 @@ checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" [[package]] name = "ecolor" -version = "0.29.0" +version = "0.29.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5629649a8ae57c73f175f4a96419905a8102cfbfcbce96ea25a826bbf468e990" +checksum = "775cfde491852059e386c4e1deb4aef381c617dc364184c6f6afee99b87c402b" dependencies = [ "bytemuck", "color-hex", @@ -1274,9 +1274,9 @@ dependencies = [ [[package]] name = "eframe" -version = "0.29.0" +version = "0.29.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712634e63d86f5eb8e30f880bc4803b79dcc82539aec1a28fde86ed839daed24" +checksum = "8ac2645a9bf4826eb4e91488b1f17b8eaddeef09396706b2f14066461338e24f" dependencies = [ "ahash", "bytemuck", @@ -1309,9 +1309,9 @@ dependencies = [ [[package]] name = "egui" -version = "0.29.0" +version = "0.29.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26bab3b3572566257a497b5f87d2cccaf7f7f122d4b8b620cba0493becc7955e" +checksum = "53eafabcce0cb2325a59a98736efe0bf060585b437763f8c476957fb274bb974" dependencies = [ "accesskit", "ahash", @@ -1323,9 +1323,9 @@ dependencies = [ [[package]] name = "egui-wgpu" -version = "0.29.0" +version = "0.29.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba69456826abf572ed95b658b265c01f07a23d615d6f029eedc9ee5f13ddf788" +checksum = "d00fd5d06d8405397e64a928fa0ef3934b3c30273ea7603e3dc4627b1f7a1a82" dependencies = [ "ahash", "bytemuck", @@ -1342,9 +1342,9 @@ dependencies = [ [[package]] name = "egui-winit" -version = "0.29.0" +version = "0.29.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "642c749bf221b5a3ecae3144c98b837729d87b9fde6c39a6ad00f07b71dbee94" +checksum = "0a9c430f4f816340e8e8c1b20eec274186b1be6bc4c7dfc467ed50d57abc36c6" dependencies = [ "accesskit_winit", "ahash", @@ -1392,6 +1392,17 @@ dependencies = [ "pulldown-cmark", ] +[[package]] +name = "egui_demo_lib" +version = "0.29.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcc5e2dd86a62a644db35f89f712c87432ae58266f793d06683c827d67018aa1" +dependencies = [ + "egui", + "egui_extras", + "unicode_names2", +] + [[package]] name = "egui_dnd" version = "0.9.1" @@ -1411,9 +1422,9 @@ dependencies = [ [[package]] name = "egui_extras" -version = "0.29.0" +version = "0.29.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9f1beb57a3c942fac2f058655188c79ac1cd200555e4f3684cd0c965ceb3a67" +checksum = "bf3c1f5cd8dfe2ade470a218696c66cf556fcfd701e7830fa2e9f4428292a2a1" dependencies = [ "ahash", "egui", @@ -1445,9 +1456,9 @@ dependencies = [ [[package]] name = "egui_glow" -version = "0.29.0" +version = "0.29.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea182206896187f7a2fcc207a1573785fc31330cb245f6cebcf663ea933f8d20" +checksum = "0e39bccc683cd43adab530d8f21a13eb91e80de10bcc38c3f1c16601b6f62b26" dependencies = [ "ahash", "bytemuck", @@ -1493,6 +1504,16 @@ dependencies = [ "web-time", ] +[[package]] +name = "egui_material_icons" +version = "0.1.0" +dependencies = [ + "eframe", + "egui", + "egui_demo_lib", + "material_icons_proc_macro", +] + [[package]] name = "egui_pull_to_refresh" version = "0.5.0" @@ -1611,9 +1632,9 @@ checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" [[package]] name = "emath" -version = "0.29.0" +version = "0.29.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af86c4efae11da2a3dcbb4afebd0e9ed1916345e8d187b4051d443c8bd79af93" +checksum = "b1fe0049ce51d0fb414d029e668dd72eb30bc2b739bf34296ed97bd33df544f3" dependencies = [ "bytemuck", ] @@ -1645,7 +1666,7 @@ checksum = "f282cfdfe92516eb26c2af8589c274c7c17681f5ecc03c18255fe741c6aa64eb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -1666,14 +1687,14 @@ checksum = "de0d48a183585823424a4ce1aa132d174a6a81bd540895822eb4c8373a8e49e8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] name = "epaint" -version = "0.29.0" +version = "0.29.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "445e11ec86a4d85e1350578ba20b2d89977ed937f3faab32e1c3ec81d20c1842" +checksum = "a32af8da821bd4f43f2c137e295459ee2e1661d87ca8779dfa0eaf45d870e20f" dependencies = [ "ab_glyph", "ahash", @@ -1688,9 +1709,9 @@ dependencies = [ [[package]] name = "epaint_default_fonts" -version = "0.29.0" +version = "0.29.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5202b64bef2b2c42a7f6e2e5b40fa83dd04aa61fdb08bfd116553adc149fe47a" +checksum = "483440db0b7993cf77a20314f08311dbe95675092405518c0677aa08c151a3ea" [[package]] name = "equivalent" @@ -1888,7 +1909,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -2006,7 +2027,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -2070,7 +2091,7 @@ dependencies = [ "proc-macro2", "quote", "regex", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -2293,7 +2314,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -2526,7 +2547,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -2611,11 +2632,13 @@ dependencies = [ "egui_form", "egui_inbox", "egui_infinite_scroll", + "egui_material_icons", "egui_pull_to_refresh", "egui_router", "egui_suspense", "egui_thumbhash", "egui_virtual_list", + "material_icons_proc_macro", ] [[package]] @@ -2711,9 +2734,9 @@ dependencies = [ [[package]] name = "httparse" -version = "1.9.4" +version = "1.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fcc0b4a115bf80b728eb8ea024ad5bd707b615bfed49e0665b6e0f86fd082d9" +checksum = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946" [[package]] name = "hyper" @@ -2888,7 +2911,7 @@ checksum = "c34819042dc3d3971c46c2190835914dfbe0c3c13f61449b2997f4e9722dfa60" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -3156,6 +3179,10 @@ version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "47e1ffaa40ddd1f3ed91f717a33c8c0ee23fff369e3aa8772b9605cc1d22f4c3" +[[package]] +name = "material_icons_proc_macro" +version = "0.1.0" + [[package]] name = "maybe-rayon" version = "0.1.1" @@ -3242,7 +3269,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08" dependencies = [ "adler", - "simd-adler32", ] [[package]] @@ -3252,6 +3278,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" dependencies = [ "adler2", + "simd-adler32", ] [[package]] @@ -3407,7 +3434,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -3457,7 +3484,7 @@ dependencies = [ "proc-macro-crate 2.0.2", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -3702,9 +3729,12 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.19.0" +version = "1.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +checksum = "82881c4be219ab5faaf2ad5e5e5ecdff8c66bd7402ca3160975c93b24961afd1" +dependencies = [ + "portable-atomic", +] [[package]] name = "openssl" @@ -3729,7 +3759,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -3840,7 +3870,7 @@ checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.5.6", + "redox_syscall 0.5.7", "smallvec", "windows-targets 0.52.6", ] @@ -3974,7 +4004,7 @@ checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -4008,15 +4038,15 @@ checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" [[package]] name = "png" -version = "0.17.13" +version = "0.17.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06e4b0d3d1312775e782c86c91a111aa1f910cbb65e1337f9975b5f9a554b5e1" +checksum = "52f9d46a34a05a6a57566bc2bfae066ef07585a6e3fa30fbbdff5936380623f0" dependencies = [ "bitflags 1.3.2", "crc32fast", "fdeflate", "flate2", - "miniz_oxide 0.7.4", + "miniz_oxide 0.8.0", ] [[package]] @@ -4050,6 +4080,12 @@ dependencies = [ "windows-sys 0.59.0", ] +[[package]] +name = "portable-atomic" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc9c68a3f6da06753e9335d63e27f6b9754dd1920d941135b7ea8224f141adb2" + [[package]] name = "ppv-lite86" version = "0.2.20" @@ -4146,7 +4182,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8021cf59c8ec9c432cfc2526ac6b8aa508ecaf29cd415f271b8406c1b851c3fd" dependencies = [ "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -4360,18 +4396,18 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.6" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "355ae415ccd3a04315d3f8246e86d67689ea74d88d915576e1589a351062a13b" +checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f" dependencies = [ "bitflags 2.6.0", ] [[package]] name = "regex" -version = "1.10.6" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619" +checksum = "38200e5ee88914975b69f657f0801b6f6dccafd44fd9326302a4aaeecfacb1d8" dependencies = [ "aho-corasick", "memchr", @@ -4381,9 +4417,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.7" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" +checksum = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3" dependencies = [ "aho-corasick", "memchr", @@ -4392,9 +4428,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.4" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" [[package]] name = "renderdoc-sys" @@ -4404,9 +4440,9 @@ checksum = "19b30a45b0cd0bcca8037f3d0dc3421eaf95327a17cad11964fb8179b4fc4832" [[package]] name = "reqwest" -version = "0.12.7" +version = "0.12.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8f4955649ef5c38cc7f9e8aa41761d48fb9677197daea9984dc54f56aad5e63" +checksum = "f713147fbe92361e52392c73b8c9e48c04c6625bce969ef54dc901e58e042a7b" dependencies = [ "base64", "bytes", @@ -4534,19 +4570,18 @@ dependencies = [ [[package]] name = "rustls-pemfile" -version = "2.1.3" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "196fe16b00e106300d3e45ecfcb764fa292a535d7326a29a5875c579c7417425" +checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" dependencies = [ - "base64", "rustls-pki-types", ] [[package]] name = "rustls-pki-types" -version = "1.8.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc0a2ce646f8655401bb81e7927b812614bd5d91dbc968696be50603510fcaf0" +checksum = "0e696e35370c65c9c541198af4543ccd580cf17fc25d8e05c5a242b202488c55" [[package]] name = "rustls-webpki" @@ -4684,7 +4719,7 @@ checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -4707,7 +4742,7 @@ checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -5007,9 +5042,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.77" +version = "2.0.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f35bcdf61fd8e7be6caf75f429fdca8beb3ed76584befb503b1569faee373ed" +checksum = "89132cd0bf050864e1d38dc3bbc07a0eb8e7530af26344d3d2bbbef83499f590" dependencies = [ "proc-macro2", "quote", @@ -5080,7 +5115,7 @@ checksum = "f4e16beb8b2ac17db28eab8bca40e62dbfbb34c0fcdc6d9826b11b7b5d047dfd" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -5091,9 +5126,9 @@ checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" [[package]] name = "tempfile" -version = "3.12.0" +version = "3.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04cbcdd0c794ebb0d4cf35e88edd2f7d2c4c3e9a5a6dab322839b321c6a87a64" +checksum = "f0f2c9fc62d0beef6951ccffd757e241266a2c833136efbe35af6cd2567dca5b" dependencies = [ "cfg-if", "fastrand 2.1.1", @@ -5145,7 +5180,7 @@ checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -5231,7 +5266,7 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -5338,7 +5373,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -5436,6 +5471,12 @@ version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" +[[package]] +name = "unicode_names2" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "446c96c6dd42604779487f0a981060717156648c1706aa1f464677f03c6cc059" + [[package]] name = "untrusted" version = "0.9.0" @@ -5513,7 +5554,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -5593,7 +5634,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", "wasm-bindgen-shared", ] @@ -5627,7 +5668,7 @@ checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -5860,7 +5901,7 @@ checksum = "1d228f15bba3b9d56dde8bddbee66fa24545bd17b48d5128ccf4a8742b18e431" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -6068,7 +6109,7 @@ checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -6079,7 +6120,7 @@ checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -6603,7 +6644,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index 4dc27ba..df4fff3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -48,6 +48,8 @@ suspense = ["dep:egui_suspense"] thumbhash = ["dep:egui_thumbhash"] tokio = ["egui_suspense/tokio", "egui_infinite_scroll/tokio"] virtual_list = ["dep:egui_virtual_list"] +material_icons = ["dep:egui_material_icons"] +material_icons_proc_macro = ["dep:material_icons_proc_macro"] [dependencies] egui_animation = { workspace = true, optional = true } @@ -61,6 +63,8 @@ egui_router = { workspace = true, optional = true } egui_suspense = { workspace = true, optional = true } egui_thumbhash = { workspace = true, optional = true } egui_virtual_list = { workspace = true, optional = true } +egui_material_icons = { workspace = true, optional = true } +material_icons_proc_macro = { workspace = true, optional = true } [workspace] @@ -80,11 +84,21 @@ egui_suspense = { path = "./crates/egui_suspense", version = "0.5.0" } egui_virtual_list = { path = "./crates/egui_virtual_list", version = "0.4.0" } egui_infinite_scroll = { path = "./crates/egui_infinite_scroll", version = "0.4.0" } egui_thumbhash = { path = "./crates/egui_thumbhash", version = "0.4.0" } +egui_material_icons = { path = "./crates/egui_material_icons", version = "0.1.0" } +material_icons_proc_macro = { path = "./crates/material_icons_proc_macro", version = "0.1.0" } hello_egui = { path = ".", version = "0.5.0" } -egui = { version = "0.29.0", default-features = false } -eframe = { version = "0.29.0", default-features = false } -egui_extras = { version = "0.29.0", default-features = false } +egui = { version = "0.29", default-features = false } +eframe = { version = "0.29", default-features = false } +egui_extras = { version = "0.29", default-features = false } +rand = "0.8.5" +simple-easing = "1" +serde_json = "1" +ehttp = "0.5.0" +tokio = "1" +futures = "0.3" +serde = "1" +image = "0.25" [workspace.lints.rust] unsafe_code = "deny" diff --git a/crates/egui_animation/Cargo.toml b/crates/egui_animation/Cargo.toml index ede383c..3c9cf29 100644 --- a/crates/egui_animation/Cargo.toml +++ b/crates/egui_animation/Cargo.toml @@ -11,14 +11,12 @@ homepage = "https://github.com/lucasmerlin/hello_egui/tree/main/crates/egui_anim [dependencies] hello_egui_utils.workspace = true - egui.workspace = true - -simple-easing = "1" +simple-easing.workspace = true [dev-dependencies] eframe = { workspace = true, default-features = true } -rand = "0.8.5" +rand.workspace = true [lints] workspace = true diff --git a/crates/egui_dnd/Cargo.toml b/crates/egui_dnd/Cargo.toml index c98b0a7..9d4718e 100644 --- a/crates/egui_dnd/Cargo.toml +++ b/crates/egui_dnd/Cargo.toml @@ -12,19 +12,17 @@ license = "MIT" [dependencies] egui_animation.workspace = true - egui.workspace = true - -simple-easing = "1" +simple-easing.workspace = true [target.'cfg(target_arch = "wasm32")'.dependencies] web-time = "1" [dev-dependencies] -egui_infinite_scroll = { path = "../egui_infinite_scroll" } -egui_virtual_list = { path = "../egui_virtual_list" } -hello_egui_utils = { path = "../hello_egui_utils" } -rand = "0.8" +egui_infinite_scroll.workspace = true +egui_virtual_list.workspace = true +hello_egui_utils.workspace = true +rand.workspace = true egui_extras.workspace = true color-hex = "0.2.0" diff --git a/crates/egui_dnd/examples/infinite_scroll.rs b/crates/egui_dnd/examples/dnd_infinite_scroll.rs similarity index 100% rename from crates/egui_dnd/examples/infinite_scroll.rs rename to crates/egui_dnd/examples/dnd_infinite_scroll.rs diff --git a/crates/egui_dnd/examples/virtual_list.rs b/crates/egui_dnd/examples/dnd_virtual_list.rs similarity index 100% rename from crates/egui_dnd/examples/virtual_list.rs rename to crates/egui_dnd/examples/dnd_virtual_list.rs diff --git a/crates/egui_form/src/lib.rs b/crates/egui_form/src/lib.rs index 5e75e25..635ead4 100644 --- a/crates/egui_form/src/lib.rs +++ b/crates/egui_form/src/lib.rs @@ -38,8 +38,7 @@ mod form; /// } /// /// pub fn form_ui(ui: &mut egui::Ui, test: &mut Test) { -/// let mut form = -/// Form::new().add_report(egui_form::garde::GardeReport::new(test.validate())); +/// let mut form = Form::new().add_report(egui_form::garde::GardeReport::new(test.validate())); /// /// FormField::new(&mut form, field_path!("user_name")) /// .label("User Name") diff --git a/crates/egui_inbox/Cargo.toml b/crates/egui_inbox/Cargo.toml index ba016b5..98e52ea 100644 --- a/crates/egui_inbox/Cargo.toml +++ b/crates/egui_inbox/Cargo.toml @@ -39,7 +39,7 @@ required-features = ["type_inbox", "type_broadcast", "broadcast"] egui = { workspace = true, optional = true } hello_egui_utils = { workspace = true, optional = true } futures-channel = { version = "0.3", optional = true } -futures = { version = "0.3", optional = true } +futures = { workspace = true, optional = true } # Egui uses parking_lot so we should be fine with using it too (regarding compile times). parking_lot = "0.12" @@ -48,10 +48,10 @@ type-map = { version = "0.5.0", optional = true } [dev-dependencies] eframe = { workspace = true, default-features = true } -tokio = { version = "1", features = ["full"] } -ehttp = { version = "0.5.0", features = ["json"] } -serde_json = "1" -rand = "0.8" +tokio = { workspace = true, features = ["full"] } +ehttp = { workspace = true, features = ["json"] } +serde_json.workspace = true +rand.workspace = true derive-new = "0.7" [lints] diff --git a/crates/egui_infinite_scroll/Cargo.toml b/crates/egui_infinite_scroll/Cargo.toml index c911337..25306f6 100644 --- a/crates/egui_infinite_scroll/Cargo.toml +++ b/crates/egui_infinite_scroll/Cargo.toml @@ -34,9 +34,9 @@ web-time = "1" [dev-dependencies] eframe = { workspace = true, default-features = true } -rand = "0.8" +rand.workspace = true -tokio = { version = "1", features = ["full"] } +tokio = { workspace = true, features = ["full"] } [lints] workspace = true diff --git a/crates/egui_infinite_scroll/examples/infinite_scroll.rs b/crates/egui_infinite_scroll/examples/infinite_scroll_example.rs similarity index 100% rename from crates/egui_infinite_scroll/examples/infinite_scroll.rs rename to crates/egui_infinite_scroll/examples/infinite_scroll_example.rs diff --git a/crates/egui_material_icons/Cargo.toml b/crates/egui_material_icons/Cargo.toml new file mode 100644 index 0000000..0d09f25 --- /dev/null +++ b/crates/egui_material_icons/Cargo.toml @@ -0,0 +1,14 @@ +[package] +name = "egui_material_icons" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +egui.workspace = true +material_icons_proc_macro.workspace = true + +[dev-dependencies] +eframe = { workspace = true, default-features = true } +egui_demo_lib = "0.29" diff --git a/crates/egui_material_icons/MaterialSymbolsRounded-Regular.ttf b/crates/egui_material_icons/MaterialSymbolsRounded-Regular.ttf new file mode 100644 index 0000000..551886b Binary files /dev/null and b/crates/egui_material_icons/MaterialSymbolsRounded-Regular.ttf differ diff --git a/crates/egui_material_icons/MaterialSymbolsRounded_Filled-Regular.ttf b/crates/egui_material_icons/MaterialSymbolsRounded_Filled-Regular.ttf new file mode 100644 index 0000000..948c67d Binary files /dev/null and b/crates/egui_material_icons/MaterialSymbolsRounded_Filled-Regular.ttf differ diff --git a/crates/egui_material_icons/examples/icon-browser.rs b/crates/egui_material_icons/examples/icon-browser.rs new file mode 100644 index 0000000..2d4faf0 --- /dev/null +++ b/crates/egui_material_icons/examples/icon-browser.rs @@ -0,0 +1,49 @@ +use eframe::egui; +use egui::{FontFamily, Label, RichText, Widget}; +use egui_material_icons::icons::*; +use egui_material_icons::{icon_button, initialize}; + +fn main() -> Result<(), eframe::Error> { + let native_options = eframe::NativeOptions::default(); + eframe::run_native( + "My egui App", + native_options, + Box::new(|cc| Ok(Box::new(MyEguiApp::new(cc)))), + ) +} + +#[derive(Default)] +struct MyEguiApp {} + +impl MyEguiApp { + fn new(cc: &eframe::CreationContext<'_>) -> Self { + initialize(&cc.egui_ctx); + + Self::default() + } +} + +impl eframe::App for MyEguiApp { + fn update(&mut self, ctx: &egui::Context, _frame: &mut eframe::Frame) { + egui::CentralPanel::default().show(ctx, |ui| { + ui.horizontal(|ui| { + icon_button(ui, ICON_ADD); + icon_button(ui, ICON_REMOVE); + icon_button(ui, ICON_IMAGE); + ui.label("Ayyy") + }); + + ui.group(|ui| { + ui.horizontal(|ui| { + Label::new( + RichText::new(ICON_FAVORITE) + .size(16.0) + .family(FontFamily::Proportional), + ) + .ui(ui); + Label::new("2").ui(ui); + }); + }); + }); + } +} diff --git a/crates/egui_material_icons/src/lib.rs b/crates/egui_material_icons/src/lib.rs new file mode 100644 index 0000000..e964c8c --- /dev/null +++ b/crates/egui_material_icons/src/lib.rs @@ -0,0 +1,43 @@ +use egui::{ + Button, FontData, FontDefinitions, FontFamily, Frame, Margin, Response, RichText, Widget, +}; + +pub mod icons { + material_icons_proc_macro::code_points!(); +} + +pub const FONT_DATA: &[u8] = include_bytes!("../MaterialSymbolsRounded_Filled-Regular.ttf"); + +pub fn initialize(ctx: &egui::Context) { + let mut fonts = FontDefinitions::default(); + let mut data = FontData::from_static(FONT_DATA); + data.tweak.y_offset_factor = 0.05; + fonts.font_data.insert("material-icons".to_string(), data); + fonts + .families + .get_mut(&FontFamily::Proportional) + .unwrap() + .push("material-icons".to_string()); + + ctx.set_fonts(fonts); +} + +pub fn icon_button(ui: &mut egui::Ui, icon: &str) -> Response { + Frame::none() + .inner_margin(Margin { + left: 0.0, + right: 0.0, + top: 0.0, + bottom: 0.0, + }) + .show(ui, |ui| { + Button::new(RichText::new(icon).size(18.0)) + .frame(false) + .ui(ui) + }) + .inner +} + +pub fn icon_text(icon: &str) -> RichText { + RichText::new(icon) +} diff --git a/crates/egui_pull_to_refresh/Cargo.toml b/crates/egui_pull_to_refresh/Cargo.toml index 35bcf95..81b0ff3 100644 --- a/crates/egui_pull_to_refresh/Cargo.toml +++ b/crates/egui_pull_to_refresh/Cargo.toml @@ -14,7 +14,7 @@ egui.workspace = true [dev-dependencies] eframe = { workspace = true, default-features = true } egui_inbox.workspace = true -ehttp = "0.5.0" +ehttp.workspace = true [lints] workspace = true diff --git a/crates/egui_router/Cargo.toml b/crates/egui_router/Cargo.toml index 04162a1..2d3794d 100644 --- a/crates/egui_router/Cargo.toml +++ b/crates/egui_router/Cargo.toml @@ -44,7 +44,7 @@ wasm-bindgen = "0.2" egui_inbox = { workspace = true, features = ["type_inbox"] } eframe = { workspace = true, default-features = true } egui_animation = { workspace = true } -tokio = { version = "1", features = ["full"] } +tokio = { workspace = true, features = ["full"] } egui_suspense = { workspace = true, features = ["async", "tokio"] } [lints] diff --git a/crates/egui_suspense/Cargo.toml b/crates/egui_suspense/Cargo.toml index b415a48..8ddea34 100644 --- a/crates/egui_suspense/Cargo.toml +++ b/crates/egui_suspense/Cargo.toml @@ -25,10 +25,10 @@ required-features = ["async", "tokio"] [dev-dependencies] eframe = { workspace = true, default-features = true } -rand = "0.8.5" +rand.workspace = true reqwest = { version = "0.12.7", features = ["json"] } -tokio = { version = "1", features = ["full"] } -futures = "0.3" +tokio = { workspace = true, features = ["full"] } +futures.workspace = true [lints] workspace = true diff --git a/crates/egui_taffy/Cargo.toml b/crates/egui_taffy/Cargo.toml index 592c222..4b1aba3 100644 --- a/crates/egui_taffy/Cargo.toml +++ b/crates/egui_taffy/Cargo.toml @@ -15,7 +15,7 @@ taffy = "0.5.2" [dev-dependencies] eframe = { workspace = true, default-features = true } -rand = "0.8.5" +rand.workspace = true [lints] workspace = true diff --git a/crates/egui_thumbhash/Cargo.toml b/crates/egui_thumbhash/Cargo.toml index 4259b37..af7e1a4 100644 --- a/crates/egui_thumbhash/Cargo.toml +++ b/crates/egui_thumbhash/Cargo.toml @@ -28,9 +28,9 @@ oxhttp = { version = "0.2.2", default-features = false, features = [ "webpki-roots", "rustls-pki-types", ] } -serde = { version = "1", features = ["derive"] } -serde_json = "1" -image = "0.25.2" +serde = { workspace = true, features = ["derive"] } +serde_json.workspace = true +image.workspace = true [lints] workspace = true diff --git a/crates/egui_virtual_list/Cargo.toml b/crates/egui_virtual_list/Cargo.toml index 19136d5..d480470 100644 --- a/crates/egui_virtual_list/Cargo.toml +++ b/crates/egui_virtual_list/Cargo.toml @@ -15,7 +15,7 @@ web-time = "1" [dev-dependencies] eframe = { workspace = true, default-features = true } -rand = "0.8" +rand.workspace = true [lints] workspace = true diff --git a/crates/egui_virtual_list/examples/virtual_list.rs b/crates/egui_virtual_list/examples/virtual_list_example.rs similarity index 100% rename from crates/egui_virtual_list/examples/virtual_list.rs rename to crates/egui_virtual_list/examples/virtual_list_example.rs diff --git a/crates/egui_webview/Cargo.toml b/crates/egui_webview/Cargo.toml index eebf826..bb629c7 100644 --- a/crates/egui_webview/Cargo.toml +++ b/crates/egui_webview/Cargo.toml @@ -12,11 +12,11 @@ wry = "0.45.0" egui.workspace = true egui_inbox = { workspace = true } -image = "0.25.2" +image.workspace = true base64 = "0.22.1" egui_extras = { workspace = true, features = ["image"] } -serde = { version = "1.0.210", features = ["derive"] } -serde_json = "1" +serde = { workspace = true, features = ["derive"] } +serde_json.workspace = true log = "0.4.22" rgb = "0.8" diff --git a/crates/hello_egui_utils/Cargo.toml b/crates/hello_egui_utils/Cargo.toml index 46136df..e8c9f7c 100644 --- a/crates/hello_egui_utils/Cargo.toml +++ b/crates/hello_egui_utils/Cargo.toml @@ -12,7 +12,7 @@ homepage = "https://github.com/lucasmerlin/hello_egui/tree/main/crates/hello_egu [dependencies] egui.workspace = true -tokio = { version = "1", optional = true, features = ["rt"] } +tokio = { workspace = true, optional = true, features = ["rt"] } concat-idents = "1" diff --git a/crates/material_icons_proc_macro/Cargo.toml b/crates/material_icons_proc_macro/Cargo.toml new file mode 100644 index 0000000..7d9b244 --- /dev/null +++ b/crates/material_icons_proc_macro/Cargo.toml @@ -0,0 +1,11 @@ +[package] +name = "material_icons_proc_macro" +version = "0.1.0" +edition = "2021" + +[lib] +proc-macro = true + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/crates/material_icons_proc_macro/MaterialSymbolsRounded-Regular.codepoints b/crates/material_icons_proc_macro/MaterialSymbolsRounded-Regular.codepoints new file mode 100644 index 0000000..242cca2 --- /dev/null +++ b/crates/material_icons_proc_macro/MaterialSymbolsRounded-Regular.codepoints @@ -0,0 +1,3672 @@ +10k e951 +10mp e952 +11mp e953 +123 eb8d +12mp e954 +13mp e955 +14mp e956 +15mp e957 +16mp e958 +17mp e959 +18_up_rating f8fd +18mp e95a +19mp e95b +1k e95c +1k_plus e95d +1x_mobiledata efcd +1x_mobiledata_badge f7f1 +20mp e95e +21mp e95f +22mp e960 +23mp e961 +24fps_select f3f2 +24mp e962 +2d ef37 +2k e963 +2k_plus e964 +2mp e965 +30fps efce +30fps_select efcf +360 e577 +3d_rotation e84d +3g_mobiledata efd0 +3g_mobiledata_badge f7f0 +3k e966 +3k_plus e967 +3mp e968 +3p efd1 +4g_mobiledata efd2 +4g_mobiledata_badge f7ef +4g_plus_mobiledata efd3 +4k e072 +4k_plus e969 +4mp e96a +50mp f6f3 +5g ef38 +5g_mobiledata_badge f7ee +5k e96b +5k_plus e96c +5mp e96d +60fps efd4 +60fps_select efd5 +6_ft_apart f21e +6k e96e +6k_plus e96f +6mp e970 +7k e971 +7k_plus e972 +7mp e973 +8k e974 +8k_plus e975 +8mp e976 +9k e977 +9k_plus e978 +9mp e979 +abc eb94 +ac_unit eb3b +access_alarm e855 +access_alarms e855 +access_time efd6 +access_time_filled efd6 +accessibility e84e +accessibility_new e92c +accessible e914 +accessible_forward e934 +account_balance e84f +account_balance_wallet e850 +account_box e851 +account_child e852 +account_child_invert e659 +account_circle f20b +account_circle_filled f20b +account_circle_off f7b3 +account_tree e97a +action_key f502 +activity_zone e1e6 +acute e4cb +ad e65a +ad_group e65b +ad_group_off eae5 +ad_off f7b2 +ad_units ef39 +adaptive_audio_mic f4cc +adaptive_audio_mic_off f4cb +adb e60e +add e145 +add_a_photo e439 +add_ad e72a +add_alarm e856 +add_alert e003 +add_box e146 +add_business e729 +add_call f0b7 +add_card eb86 +add_chart ef3c +add_circle e3ba +add_circle_outline e3ba +add_column_left f425 +add_column_right f424 +add_comment e266 +add_diamond f49c +add_home f8eb +add_home_work f8ed +add_ic_call f0b7 +add_link e178 +add_location e567 +add_location_alt ef3a +add_moderator e97d +add_notes e091 +add_photo_alternate e43e +add_reaction e1d3 +add_road ef3b +add_row_above f423 +add_row_below f422 +add_shopping_cart e854 +add_task f23a +add_to_drive e65c +add_to_home_screen e1fe +add_to_photos e39d +add_to_queue e05c +add_triangle f48e +addchart ef3c +adf_scanner eada +adjust e39e +admin_meds e48d +admin_panel_settings ef3d +ads_click e762 +agender f888 +agriculture ea79 +air efd8 +air_freshener e2ca +air_purifier e97e +air_purifier_gen e829 +airline_seat_flat e630 +airline_seat_flat_angled e631 +airline_seat_individual_suite e632 +airline_seat_legroom_extra e633 +airline_seat_legroom_normal e634 +airline_seat_legroom_reduced e635 +airline_seat_recline_extra e636 +airline_seat_recline_normal e637 +airline_stops e7d0 +airlines e7ca +airplane_ticket efd9 +airplanemode_active e53d +airplanemode_inactive e194 +airplay e055 +airport_shuttle eb3c +airware f154 +airwave f154 +alarm e855 +alarm_add e856 +alarm_off e857 +alarm_on e858 +alarm_smart_wake f6b0 +album e019 +align_center e356 +align_end f797 +align_flex_center f796 +align_flex_end f795 +align_flex_start f794 +align_horizontal_center e00f +align_horizontal_left e00d +align_horizontal_right e010 +align_items_stretch f793 +align_justify_center f792 +align_justify_flex_end f791 +align_justify_flex_start f790 +align_justify_space_around f78f +align_justify_space_between f78e +align_justify_space_even f78d +align_justify_stretch f78c +align_self_stretch f78b +align_space_around f78a +align_space_between f789 +align_space_even f788 +align_start f787 +align_stretch f786 +align_vertical_bottom e015 +align_vertical_center e011 +align_vertical_top e00c +all_inbox e97f +all_inclusive eb3d +all_match e093 +all_out e90b +allergies e094 +allergy e64e +alt_route f184 +alternate_email e0e6 +altitude f873 +ambient_screen f6c4 +ambulance f803 +amend f802 +amp_stories ea13 +analytics ef3e +anchor f1cd +android e859 +animated_images f49a +animation e71c +announcement e87f +aod efda +aod_tablet f89f +aod_watch f6ac +apartment ea40 +api f1b7 +apk_document f88e +apk_install f88f +app_badging f72f +app_blocking ef3f +app_promo e981 +app_registration ef40 +app_settings_alt ef41 +app_shortcut eae4 +apparel ef7b +approval e982 +approval_delegation f84a +apps e5c3 +apps_outage e7cc +aq f55a +aq_indoor f55b +ar_on_you ef7c +ar_stickers e983 +architecture ea3b +archive e149 +area_chart e770 +arming_countdown e78a +arrow_and_edge f5d7 +arrow_back e5c4 +arrow_back_2 f43a +arrow_back_ios e5e0 +arrow_back_ios_new e2ea +arrow_circle_down f181 +arrow_circle_left eaa7 +arrow_circle_right eaaa +arrow_circle_up f182 +arrow_cool_down f4b6 +arrow_downward e5db +arrow_downward_alt e984 +arrow_drop_down e5c5 +arrow_drop_down_circle e5c6 +arrow_drop_up e5c7 +arrow_forward e5c8 +arrow_forward_ios e5e1 +arrow_insert f837 +arrow_left e5de +arrow_left_alt ef7d +arrow_or_edge f5d6 +arrow_outward f8ce +arrow_range f69b +arrow_right e5df +arrow_right_alt e941 +arrow_selector_tool f82f +arrow_split ea04 +arrow_top_left f72e +arrow_top_right f72d +arrow_upload_progress f3f4 +arrow_upload_ready f3f5 +arrow_upward e5d8 +arrow_upward_alt e986 +arrow_warm_up f4b5 +arrows_more_down f8ab +arrows_more_up f8ac +arrows_outward f72c +art_track e060 +article ef42 +article_shortcut f587 +artist e01a +aspect_ratio e85b +assessment f0cc +assignment e85d +assignment_add f848 +assignment_ind e85e +assignment_late e85f +assignment_return e860 +assignment_returned e861 +assignment_turned_in e862 +assist_walker f8d5 +assistant e39f +assistant_device e987 +assistant_direction e988 +assistant_navigation e989 +assistant_on_hub f6c1 +assistant_photo f0c6 +assured_workload eb6f +asterisk f525 +astrophotography_auto f1d9 +astrophotography_off f1da +atm e573 +atr ebc7 +attach_email ea5e +attach_file e226 +attach_file_add f841 +attach_file_off f4d9 +attach_money e227 +attachment e2bc +attractions ea52 +attribution efdb +audio_description f58c +audio_file eb82 +audio_video_receiver f5d3 +audiotrack e405 +auto_activity_zone f8ad +auto_awesome e65f +auto_awesome_mosaic e660 +auto_awesome_motion e661 +auto_delete ea4c +auto_detect_voice f83e +auto_draw_solid e98a +auto_fix e663 +auto_fix_high e663 +auto_fix_normal e664 +auto_fix_off e665 +auto_graph e4fb +auto_label f6be +auto_meeting_room f6bf +auto_mode ec20 +auto_read_pause f219 +auto_read_play f216 +auto_schedule e214 +auto_stories e666 +auto_timer ef7f +auto_towing e71e +auto_transmission f53f +auto_videocam f6c0 +autofps_select efdc +automation f421 +autopause f6b6 +autopay f84b +autoplay f6b5 +autorenew e863 +autostop f682 +av1 f4b0 +av_timer e01b +avc f4af +avg_pace f6bb +avg_time f813 +award_star f612 +azm f6ec +baby_changing_station f19b +back_hand e764 +back_to_tab f72b +background_dot_large f79e +background_dot_small f514 +background_grid_small f79d +background_replace f20a +backlight_high f7ed +backlight_high_off f4ef +backlight_low f7ec +backpack f19c +backspace e14a +backup e864 +backup_table ef43 +badge ea67 +badge_critical_battery f156 +bakery_dining ea53 +balance eaf6 +balcony e58f +ballot e172 +bar_chart e26b +bar_chart_4_bars f681 +bar_chart_off f411 +barcode e70b +barcode_reader f85c +barcode_scanner e70c +barefoot f871 +batch_prediction f0f5 +bath_outdoor f6fb +bath_private f6fa +bath_public_large f6f9 +bathroom efdd +bathtub ea41 +battery_0_bar ebdc +battery_1_bar f09c +battery_20 f09c +battery_2_bar f09d +battery_30 f09d +battery_3_bar f09e +battery_4_bar f09f +battery_50 f09e +battery_5_bar f0a0 +battery_60 f09f +battery_6_bar f0a1 +battery_80 f0a0 +battery_90 f0a1 +battery_alert e19c +battery_change f7eb +battery_charging_20 f0a2 +battery_charging_30 f0a3 +battery_charging_50 f0a4 +battery_charging_60 f0a5 +battery_charging_80 f0a6 +battery_charging_90 f0a7 +battery_charging_full e1a3 +battery_error f7ea +battery_full e1a5 +battery_full_alt f13b +battery_horiz_000 f8ae +battery_horiz_050 f8af +battery_horiz_075 f8b0 +battery_low f155 +battery_plus f7e9 +battery_profile e206 +battery_saver efde +battery_share f67e +battery_status_good f67d +battery_std e1a5 +battery_unknown e1a6 +battery_vert_005 f8b1 +battery_vert_020 f8b2 +battery_vert_050 f8b3 +battery_very_low f156 +beach_access eb3e +bed efdf +bedroom_baby efe0 +bedroom_child efe1 +bedroom_parent efe2 +bedtime ef44 +bedtime_off eb76 +beenhere e52d +bento f1f4 +bia f6eb +bid_landscape e678 +bid_landscape_disabled ef81 +bigtop_updates e669 +bike_dock f47b +bike_lane f47a +bike_scooter ef45 +biotech ea3a +blanket e828 +blender efe3 +blind f8d6 +blinds e286 +blinds_closed ec1f +block f08c +blood_pressure e097 +bloodtype efe4 +bluetooth e1a7 +bluetooth_audio e60f +bluetooth_connected e1a8 +bluetooth_disabled e1a9 +bluetooth_drive efe5 +bluetooth_searching e60f +blur_circular e3a2 +blur_linear e3a3 +blur_medium e84c +blur_off e3a4 +blur_on e3a5 +blur_short e8cf +body_fat e098 +body_system e099 +bolt ea0b +bomb f568 +book e86e +book_2 f53e +book_3 f53d +book_4 f53c +book_5 f53b +book_online f217 +bookmark e8e7 +bookmark_add e598 +bookmark_added e599 +bookmark_bag f410 +bookmark_border e8e7 +bookmark_check f457 +bookmark_flag f456 +bookmark_heart f455 +bookmark_manager f7b1 +bookmark_remove e59a +bookmark_star f454 +bookmarks e98b +border_all e228 +border_bottom e229 +border_clear e22a +border_color e22b +border_horizontal e22c +border_inner e22d +border_left e22e +border_outer e22f +border_right e230 +border_style e231 +border_top e232 +border_vertical e233 +borg f40d +bottom_app_bar e730 +bottom_drawer e72d +bottom_navigation e98c +bottom_panel_close f72a +bottom_panel_open f729 +bottom_right_click f684 +bottom_sheets e98d +box f5a4 +box_add f5a5 +box_edit f5a6 +boy eb67 +brand_awareness e98e +brand_family f4f1 +branding_watermark e06b +breakfast_dining ea54 +breaking_news ea08 +breaking_news_alt_1 f0ba +breastfeeding f856 +brightness_1 e3fa +brightness_2 f036 +brightness_3 e3a8 +brightness_4 e3a9 +brightness_5 e3aa +brightness_6 e3ab +brightness_7 e3ac +brightness_alert f5cf +brightness_auto e1ab +brightness_empty f7e8 +brightness_high e1ac +brightness_low e1ad +brightness_medium e1ae +bring_your_own_ip e016 +broadcast_on_home f8f8 +broadcast_on_personal f8f9 +broken_image e3ad +browse eb13 +browse_activity f8a5 +browse_gallery ebd1 +browser_not_supported ef47 +browser_updated e7cf +brunch_dining ea73 +brush e3ae +bubble ef83 +bubble_chart e6dd +bubbles f64e +bug_report e868 +build f8cd +build_circle ef48 +bungalow e591 +burst_mode e43c +bus_alert e98f +business e7ee +business_center eb3f +business_chip f84c +business_messages ef84 +buttons_alt e72f +cabin e589 +cable efe6 +cable_car f479 +cached e86a +cadence f4b4 +cake e7e9 +cake_add f85b +calculate ea5f +calendar_add_on ef85 +calendar_apps_script f0bb +calendar_clock f540 +calendar_month ebcc +calendar_today e935 +calendar_view_day e936 +calendar_view_month efe7 +calendar_view_week efe8 +call f0d4 +call_end f0bc +call_end_alt f0bc +call_log e08e +call_made e0b2 +call_merge e0b3 +call_missed e0b4 +call_missed_outgoing e0e4 +call_quality f652 +call_received e0b5 +call_split e0b6 +call_to_action e06c +camera e3af +camera_alt e412 +camera_enhance e8fc +camera_front e3b1 +camera_indoor efe9 +camera_outdoor efea +camera_rear e3b2 +camera_roll e3b3 +camera_video f7a6 +cameraswitch efeb +campaign ef49 +camping f8a2 +cancel e888 +cancel_presentation e0e9 +cancel_schedule_send ea39 +candle f588 +candlestick_chart ead4 +captive_portal f728 +capture f727 +car_crash ebf2 +car_rental ea55 +car_repair ea56 +car_tag f4e3 +card_giftcard e8f6 +card_membership e8f7 +card_travel e8f8 +cardio_load f4b9 +cardiology e09c +cards e991 +carpenter f1f8 +carry_on_bag eb08 +carry_on_bag_checked eb0b +carry_on_bag_inactive eb0a +carry_on_bag_question eb09 +cases e992 +casino eb40 +cast e307 +cast_connected e308 +cast_for_education efec +cast_pause f5f0 +cast_warning f5ef +castle eab1 +category e574 +category_search f437 +celebration ea65 +cell_merge f82e +cell_tower ebba +cell_wifi e0ec +center_focus_strong e3b4 +center_focus_weak e3b5 +chair efed +chair_alt efee +chalet e585 +change_circle e2e7 +change_history e86b +charger e2ae +charging_station f19d +chart_data e473 +chat e0c9 +chat_add_on f0f3 +chat_apps_script f0bd +chat_bubble e0cb +chat_bubble_outline e0cb +chat_error f7ac +chat_info f52b +chat_paste_go f6bd +check e5ca +check_box e834 +check_box_outline_blank e835 +check_circle f0be +check_circle_filled f0be +check_circle_outline f0be +check_in_out f6f6 +check_indeterminate_small f88a +check_small f88b +checkbook e70d +checked_bag eb0c +checked_bag_question eb0d +checklist e6b1 +checklist_rtl e6b3 +checkroom f19e +cheer f6a8 +chess f5e7 +chevron_backward f46b +chevron_forward f46a +chevron_left e5cb +chevron_right e5cc +child_care eb41 +child_friendly eb42 +chip_extraction f821 +chips e993 +chrome_reader_mode e86d +chromecast_2 f17b +chromecast_device e83c +chronic ebb2 +church eaae +cinematic_blur f853 +circle ef4a +circle_notifications e994 +circles e7ea +circles_ext e7ec +clarify f0bf +class e86e +clean_hands f21f +cleaning e995 +cleaning_bucket f8b4 +cleaning_services f0ff +clear e5cd +clear_all e0b8 +clear_day f157 +clear_night f159 +climate_mini_split f8b5 +clinical_notes e09e +clock_loader_10 f726 +clock_loader_20 f725 +clock_loader_40 f724 +clock_loader_60 f723 +clock_loader_80 f722 +clock_loader_90 f721 +close e5cd +close_fullscreen f1cf +close_small f508 +closed_caption e996 +closed_caption_add f4ae +closed_caption_disabled f1dc +closed_caption_off e996 +cloud f15c +cloud_circle e2be +cloud_done e2bf +cloud_download e2c0 +cloud_off e2c1 +cloud_queue f15c +cloud_sync eb5a +cloud_upload e2c3 +cloudy f15c +cloudy_filled f15c +cloudy_snowing e810 +co2 e7b0 +co_present eaf0 +code e86f +code_blocks f84d +code_off e4f3 +coffee efef +coffee_maker eff0 +cognition e09f +collapse_all e944 +collapse_content f507 +collections e3d3 +collections_bookmark e431 +color_lens e40a +colorize e3b8 +colors e997 +combine_columns f420 +comedy_mask f4d6 +comic_bubble f5dd +comment e24c +comment_bank ea4e +comments_disabled e7a2 +commit eaf5 +communication e27c +communities eb16 +communities_filled eb16 +commute e940 +compare e3b9 +compare_arrows e915 +compass_calibration e57c +component_exchange f1e7 +compost e761 +compress e94d +computer e31e +concierge f561 +conditions e0a0 +confirmation_number e638 +congenital e0a1 +connect_without_contact f223 +connected_tv e998 +connecting_airports e7c9 +construction ea3c +contact_emergency f8d1 +contact_mail e0d0 +contact_page f22e +contact_phone f0c0 +contact_phone_filled f0c0 +contact_support e94c +contactless ea71 +contactless_off f858 +contacts e0ba +contacts_product e999 +content_copy e14d +content_cut e14e +content_paste e14f +content_paste_go ea8e +content_paste_off e4f8 +content_paste_search ea9b +contextual_token f486 +contextual_token_add f485 +contract f5a0 +contract_delete f5a2 +contract_edit f5a1 +contrast eb37 +contrast_circle f49f +contrast_rtl_off ec72 +contrast_square f4a0 +control_camera e074 +control_point e3ba +control_point_duplicate e3bb +controller_gen e83d +conversion_path f0c1 +conversion_path_off f7b4 +convert_to_text f41f +conveyor_belt f867 +cookie eaac +cookie_off f79a +cooking e2b6 +cool_to_dry e276 +copy_all e2ec +copyright e90c +coronavirus f221 +corporate_fare f1d0 +cottage e587 +counter_0 f785 +counter_1 f784 +counter_2 f783 +counter_3 f782 +counter_4 f781 +counter_5 f780 +counter_6 f77f +counter_7 f77e +counter_8 f77d +counter_9 f77c +countertops f1f7 +create f097 +create_new_folder e2cc +credit_card e8a1 +credit_card_clock f438 +credit_card_gear f52d +credit_card_heart f52c +credit_card_off e4f4 +credit_score eff1 +crib e588 +crisis_alert ebe9 +crop e3be +crop_16_9 e3bc +crop_3_2 e3bd +crop_5_4 e3bf +crop_7_5 e3c0 +crop_9_16 f549 +crop_din e3c6 +crop_free e3c2 +crop_landscape e3c3 +crop_original e3f4 +crop_portrait e3c5 +crop_rotate e437 +crop_square e3c6 +crossword f5e5 +crowdsource eb18 +cruelty_free e799 +css eb93 +csv e6cf +currency_bitcoin ebc5 +currency_exchange eb70 +currency_franc eafa +currency_lira eaef +currency_pound eaf1 +currency_ruble eaec +currency_rupee eaf7 +currency_rupee_circle f460 +currency_yen eafb +currency_yuan eaf9 +curtains ec1e +curtains_closed ec1d +custom_typography e732 +cut f08b +cycle f854 +cyclone ebd5 +dangerous e99a +dark_mode e51c +dashboard e871 +dashboard_2 f3ea +dashboard_customize e99b +data_alert f7f6 +data_array ead1 +data_check f7f2 +data_exploration e76f +data_info_alert f7f5 +data_loss_prevention e2dc +data_object ead3 +data_saver_off eff2 +data_saver_on eff3 +data_table e99c +data_thresholding eb9f +data_usage eff2 +database f20e +database_off f414 +dataset f8ee +dataset_linked f8ef +date_range e916 +deblur eb77 +deceased e0a5 +decimal_decrease f82d +decimal_increase f82c +deck ea42 +dehaze e3c7 +delete e92e +delete_forever e92b +delete_history f518 +delete_outline e92e +delete_sweep e16c +demography e489 +density_large eba9 +density_medium eb9e +density_small eba8 +dentistry e0a6 +departure_board e576 +deployed_code f720 +deployed_code_account f51b +deployed_code_alert f5f2 +deployed_code_history f5f3 +deployed_code_update f5f4 +dermatology e0a7 +description e873 +deselect ebb6 +design_services f10a +desk f8f4 +deskphone f7fa +desktop_access_disabled e99d +desktop_landscape f45e +desktop_landscape_add f439 +desktop_mac e30b +desktop_portrait f45d +desktop_windows e30c +destruction f585 +details e3c8 +detection_and_zone e29f +detector e282 +detector_alarm e1f7 +detector_battery e204 +detector_co e2af +detector_offline e223 +detector_smoke e285 +detector_status e1e8 +developer_board e30d +developer_board_off e4ff +developer_guide e99e +developer_mode e1b0 +developer_mode_tv e874 +device_hub e335 +device_reset e8b3 +device_thermostat e1ff +device_unknown e339 +devices e326 +devices_fold ebde +devices_fold_2 f406 +devices_off f7a5 +devices_other e337 +devices_wearables f6ab +dew_point f879 +diagnosis e0a8 +diagonal_line f41e +dialer_sip e0bb +dialogs e99f +dialpad e0bc +diamond ead5 +dictionary f539 +difference eb7d +digital_out_of_home f1de +digital_wellbeing ef86 +dining eff4 +dinner_dining ea57 +directions e52e +directions_alt f880 +directions_alt_off f881 +directions_bike e52f +directions_boat eff5 +directions_boat_filled eff5 +directions_bus eff6 +directions_bus_filled eff6 +directions_car eff7 +directions_car_filled eff7 +directions_off f10f +directions_railway eff8 +directions_railway_2 f462 +directions_railway_filled eff8 +directions_run e566 +directions_subway effa +directions_subway_filled effa +directions_transit effa +directions_transit_filled effa +directions_walk e536 +directory_sync e394 +dirty_lens ef4b +disabled_by_default f230 +disabled_visible e76e +disc_full e610 +discover_tune e018 +dishwasher e9a0 +dishwasher_gen e832 +display_external_input f7e7 +display_settings eb97 +distance f6ea +diversity_1 f8d7 +diversity_2 f8d8 +diversity_3 f8d9 +diversity_4 f857 +dns e875 +do_disturb f08c +do_disturb_alt f08d +do_disturb_off f08e +do_disturb_on f08f +do_not_disturb f08d +do_not_disturb_alt f08c +do_not_disturb_off f08e +do_not_disturb_on f08f +do_not_disturb_on_total_silence effb +do_not_step f19f +do_not_touch f1b0 +dock e30e +dock_to_bottom f7e6 +dock_to_left f7e5 +dock_to_right f7e4 +docs_add_on f0c2 +docs_apps_script f0c3 +document_scanner e5fa +domain e7ee +domain_add eb62 +domain_disabled e0ef +domain_verification ef4c +domain_verification_off f7b0 +domino_mask f5e4 +done e876 +done_all e877 +done_outline e92f +donut_large e917 +donut_small e918 +door_back effc +door_front effd +door_open e77c +door_sensor e28a +door_sliding effe +doorbell efff +doorbell_3p e1e7 +doorbell_chime e1f3 +double_arrow ea50 +downhill_skiing e509 +download f090 +download_2 f523 +download_done f091 +download_for_offline f000 +downloading f001 +draft e66d +draft_orders e7b3 +drafts e151 +drag_click f71f +drag_handle e25d +drag_indicator e945 +drag_pan f71e +draw e746 +draw_abstract f7f8 +draw_collage f7f7 +drawing_recognition eb00 +dresser e210 +drive_eta eff7 +drive_export f41d +drive_file_move e9a1 +drive_file_move_outline e9a1 +drive_file_move_rtl e9a1 +drive_file_rename_outline e9a2 +drive_folder_upload e9a3 +drive_fusiontable e678 +dropdown e9a4 +dry f1b3 +dry_cleaning ea58 +dual_screen f6cf +duo e9a5 +dvr e1b2 +dynamic_feed ea14 +dynamic_form f1bf +e911_avatar f11a +e911_emergency f119 +e_mobiledata f002 +e_mobiledata_badge f7e3 +earbuds f003 +earbuds_battery f004 +early_on e2ba +earthquake f64f +east f1df +ecg f80f +ecg_heart f6e9 +eco ea35 +eda f6e8 +edgesensor_high f005 +edgesensor_low f006 +edit f097 +edit_attributes e578 +edit_audio f42d +edit_calendar e742 +edit_document f88c +edit_location e568 +edit_location_alt e1c5 +edit_note e745 +edit_notifications e525 +edit_off e950 +edit_road ef4d +edit_square f88d +editor_choice f528 +egg eacc +egg_alt eac8 +eject e8fb +elderly f21a +elderly_woman eb69 +electric_bike eb1b +electric_bolt ec1c +electric_car eb1c +electric_meter ec1b +electric_moped eb1d +electric_rickshaw eb1e +electric_scooter eb1f +electrical_services f102 +elevation f6e7 +elevator f1a0 +email e159 +emergency e1eb +emergency_heat f15d +emergency_heat_2 f4e5 +emergency_home e82a +emergency_recording ebf4 +emergency_share ebf6 +emergency_share_off f59e +emoji_emotions ea22 +emoji_events ea23 +emoji_flags f0c6 +emoji_food_beverage ea1b +emoji_language f4cd +emoji_nature ea1c +emoji_objects ea24 +emoji_people ea1d +emoji_symbols ea1e +emoji_transportation ea1f +emoticon e5f3 +empty_dashboard f844 +enable f188 +encrypted e593 +encrypted_add f429 +encrypted_add_circle f42a +encrypted_minus_circle f428 +encrypted_off f427 +endocrinology e0a9 +energy e9a6 +energy_program_saving f15f +energy_program_time_used f161 +energy_savings_leaf ec1a +engineering ea3d +enhanced_encryption e63f +ent e0aa +enterprise e70e +enterprise_off eb4d +equal f77b +equalizer e01d +eraser_size_1 f3fc +eraser_size_2 f3fb +eraser_size_3 f3fa +eraser_size_4 f3f9 +eraser_size_5 f3f8 +error f8b6 +error_circle_rounded f8b6 +error_med e49b +error_outline f8b6 +escalator f1a1 +escalator_warning f1ac +euro ea15 +euro_symbol e926 +ev_charger e56d +ev_mobiledata_badge f7e2 +ev_shadow ef8f +ev_shadow_add f580 +ev_shadow_minus f57f +ev_station e56d +event e878 +event_available e614 +event_busy e615 +event_list f683 +event_note e616 +event_repeat eb7b +event_seat e903 +event_upcoming f238 +exclamation f22f +exercise f6e6 +exit_to_app e879 +expand e94f +expand_all e946 +expand_circle_down e7cd +expand_circle_right f591 +expand_circle_up f5d2 +expand_content f830 +expand_less e5ce +expand_more e5cf +experiment e686 +explicit e01e +explore e87a +explore_nearby e538 +explore_off e9a8 +explosion f685 +export_notes e0ac +exposure e3f6 +exposure_neg_1 e3cb +exposure_neg_2 e3cc +exposure_plus_1 e800 +exposure_plus_2 e3ce +exposure_zero e3cf +extension e87b +extension_off e4f5 +eye_tracking f4c9 +eyeglasses f6ee +face f008 +face_2 f8da +face_3 f8db +face_4 f8dc +face_5 f8dd +face_6 f8de +face_down f402 +face_left f401 +face_nod f400 +face_retouching_natural ef4e +face_retouching_off f007 +face_right f3ff +face_shake f3fe +face_unlock f008 +face_up f3fd +fact_check f0c5 +factory ebbc +falling f60d +familiar_face_and_zone e21c +family_history e0ad +family_home eb26 +family_link eb19 +family_restroom f1a2 +family_star f527 +farsight_digital f559 +fast_forward e01f +fast_rewind e020 +fastfood e57a +faucet e278 +favorite e87e +favorite_border e87e +fax ead8 +feature_search e9a9 +featured_play_list e06d +featured_seasonal_and_gifts ef91 +featured_video e06e +feed f009 +feedback e87f +female e590 +femur f891 +femur_alt f892 +fence f1f6 +fertile f6e5 +festival ea68 +fiber_dvr e05d +fiber_manual_record e061 +fiber_new e05e +fiber_pin e06a +fiber_smart_record e062 +file_copy e173 +file_copy_off f4d8 +file_download f090 +file_download_done f091 +file_download_off e4fe +file_map e2c5 +file_open eaf3 +file_present ea0e +file_save f17f +file_save_off e505 +file_upload f09b +file_upload_off f886 +filter e3d3 +filter_1 e3d0 +filter_2 e3d1 +filter_3 e3d2 +filter_4 e3d4 +filter_5 e3d5 +filter_6 e3d6 +filter_7 e3d7 +filter_8 e3d8 +filter_9 e3d9 +filter_9_plus e3da +filter_alt ef4f +filter_alt_off eb32 +filter_b_and_w e3db +filter_center_focus e3dc +filter_drama e3dd +filter_frames e3de +filter_hdr e3df +filter_list e152 +filter_list_alt e94e +filter_list_off eb57 +filter_none e3e0 +filter_retrolux e3e1 +filter_tilt_shift e3e2 +filter_vintage e3e3 +finance e6bf +finance_chip f84e +finance_mode ef92 +find_in_page e880 +find_replace e881 +fingerprint e90d +fingerprint_off f49d +fire_extinguisher f1d8 +fire_hydrant f1a3 +fire_truck f8f2 +fireplace ea43 +first_page e5dc +fit_page f77a +fit_screen ea10 +fit_width f779 +fitness_center eb43 +fitness_tracker f463 +flag f0c6 +flag_2 f40f +flag_circle eaf8 +flag_filled f0c6 +flaky ef50 +flare e3e4 +flash_auto e3e5 +flash_off e3e6 +flash_on e3e7 +flashlight_off f00a +flashlight_on f00b +flatware f00c +flex_direction f778 +flex_no_wrap f777 +flex_wrap f776 +flight e539 +flight_class e7cb +flight_land e904 +flight_takeoff e905 +flights_and_hotels e9ab +flightsmode ef93 +flip e3e8 +flip_camera_android ea37 +flip_camera_ios ea38 +flip_to_back e882 +flip_to_front e883 +float_landscape_2 f45c +float_portrait_2 f45b +flood ebe6 +floor f6e4 +floor_lamp e21e +flourescent f07d +flowsheet e0ae +fluid e483 +fluid_balance f80d +fluid_med f80c +fluorescent f07d +flutter f1dd +flutter_dash e00b +flyover f478 +fmd_bad f00e +fmd_good f1db +foggy e818 +folded_hands f5ed +folder e2c7 +folder_copy ebbd +folder_data f586 +folder_delete eb34 +folder_limited f4e4 +folder_managed f775 +folder_off eb83 +folder_open e2c8 +folder_shared e2c9 +folder_special e617 +folder_supervised f774 +folder_zip eb2c +follow_the_signs f222 +font_download e167 +font_download_off e4f9 +food_bank f1f2 +foot_bones f893 +footprint f87d +for_you e9ac +forest ea99 +fork_left eba0 +fork_right ebac +forklift f868 +format_align_center e234 +format_align_justify e235 +format_align_left e236 +format_align_right e237 +format_bold e238 +format_clear e239 +format_color_fill e23a +format_color_reset e23b +format_color_text e23c +format_h1 f85d +format_h2 f85e +format_h3 f85f +format_h4 f860 +format_h5 f861 +format_h6 f862 +format_image_left f863 +format_image_right f864 +format_indent_decrease e23d +format_indent_increase e23e +format_ink_highlighter f82b +format_italic e23f +format_letter_spacing f773 +format_letter_spacing_2 f618 +format_letter_spacing_standard f617 +format_letter_spacing_wide f616 +format_letter_spacing_wider f615 +format_line_spacing e240 +format_list_bulleted e241 +format_list_bulleted_add f849 +format_list_numbered e242 +format_list_numbered_rtl e267 +format_overline eb65 +format_paint e243 +format_paragraph f865 +format_quote e244 +format_quote_off f413 +format_shapes e25e +format_size e245 +format_strikethrough e246 +format_text_clip f82a +format_text_overflow f829 +format_text_wrap f828 +format_textdirection_l_to_r e247 +format_textdirection_r_to_l e248 +format_textdirection_vertical f4b8 +format_underlined e249 +format_underlined_squiggle f885 +forms_add_on f0c7 +forms_apps_script f0c8 +fort eaad +forum e8af +forward f57a +forward_10 e056 +forward_30 e057 +forward_5 e058 +forward_circle f6f5 +forward_media f6f4 +forward_to_inbox f187 +foundation f200 +frame_inspect f772 +frame_person f8a6 +frame_person_mic f4d5 +frame_person_off f7d1 +frame_reload f771 +frame_source f770 +free_breakfast eb44 +free_cancellation e748 +front_hand e769 +front_loader f869 +full_coverage eb12 +full_hd f58b +full_stacked_bar_chart f212 +fullscreen e5d0 +fullscreen_exit e5d1 +fullscreen_portrait f45a +function f866 +functions e24a +funicular f477 +g_mobiledata f010 +g_mobiledata_badge f7e1 +g_translate e927 +gallery_thumbnail f86f +gamepad e30f +games e30f +garage f011 +garage_door e714 +garage_home e82d +garden_cart f8a9 +gas_meter ec19 +gastroenterology e0f1 +gate e277 +gavel e90e +general_device e6de +generating_tokens e749 +genetics e0f3 +genres e6ee +gesture e155 +gesture_select f657 +get_app f090 +gif e908 +gif_2 f40e +gif_box e7a3 +girl eb68 +gite e58b +glass_cup f6e3 +globe e64c +globe_asia f799 +globe_uk f798 +glucose e4a0 +glyphs f8a3 +go_to_line f71d +golf_course eb45 +gondola_lift f476 +google_home_devices e715 +google_plus_reshare f57a +google_tv_remote f5db +google_wifi f579 +gpp_bad f012 +gpp_good f013 +gpp_maybe f014 +gps_fixed e55c +gps_not_fixed e1b7 +gps_off e1b6 +grade e885 +gradient e3e9 +grading ea4f +grain e3ea +graphic_eq e1b8 +grass f205 +grid_3x3 f015 +grid_3x3_off f67c +grid_4x4 f016 +grid_goldenratio f017 +grid_guides f76f +grid_off e3eb +grid_on e3ec +grid_view e9b0 +grocery ef97 +group ea21 +group_add e7f0 +group_off e747 +group_remove e7ad +group_work e886 +grouped_bar_chart f211 +groups f233 +groups_2 f8df +groups_3 f8e0 +guardian f4c1 +gynecology e0f4 +h_mobiledata f018 +h_mobiledata_badge f7e0 +h_plus_mobiledata f019 +h_plus_mobiledata_badge f7df +hail e9b1 +hallway e6f8 +hand_bones f894 +hand_gesture ef9c +hand_gesture_off f3f3 +handheld_controller f4c6 +handshake ebcb +handwriting_recognition eb02 +handyman f10b +hangout_video e0c1 +hangout_video_off e0c2 +hard_drive f80e +hard_drive_2 f7a4 +hardware ea59 +hd e052 +hdr_auto f01a +hdr_auto_select f01b +hdr_enhanced_select ef51 +hdr_off e3ed +hdr_off_select f01c +hdr_on e3ee +hdr_on_select f01d +hdr_plus f01e +hdr_plus_off e3ef +hdr_strong e3f1 +hdr_weak e3f2 +head_mounted_device f4c5 +headphones f01f +headphones_battery f020 +headset f01f +headset_mic e311 +headset_off e33a +healing e3f3 +health_and_beauty ef9d +health_and_safety e1d5 +health_metrics f6e2 +heap_snapshot_large f76e +heap_snapshot_multiple f76d +heap_snapshot_thumbnail f76c +hearing e023 +hearing_aid f464 +hearing_disabled f104 +heart_broken eac2 +heart_check f60a +heart_minus f883 +heart_plus f884 +heat f537 +heat_pump ec18 +heat_pump_balance e27e +height ea16 +helicopter f60c +help e8fd +help_center f1c0 +help_clinic f810 +help_outline e8fd +hematology e0f6 +hevc f021 +hexagon eb39 +hide ef9e +hide_image f022 +hide_source f023 +high_density f79c +high_quality e024 +high_res f54b +highlight e25f +highlight_keyboard_focus f510 +highlight_mouse_cursor f511 +highlight_off e888 +highlight_text_cursor f512 +highlighter_size_1 f76b +highlighter_size_2 f76a +highlighter_size_3 f769 +highlighter_size_4 f768 +highlighter_size_5 f767 +hiking e50a +history e8b3 +history_edu ea3e +history_off f4da +history_toggle_off f17d +hive eaa6 +hls eb8a +hls_off eb8c +holiday_village e58a +home e9b2 +home_and_garden ef9f +home_app_logo e295 +home_filled e9b2 +home_health e4b9 +home_improvement_and_tools efa0 +home_iot_device e283 +home_max f024 +home_max_dots e849 +home_mini f025 +home_pin f14d +home_repair_service f100 +home_speaker f11c +home_storage f86c +home_work f030 +horizontal_distribute e014 +horizontal_rule f108 +horizontal_split e947 +hot_tub eb46 +hotel e549 +hotel_class e743 +hourglass ebff +hourglass_bottom ea5c +hourglass_disabled ef53 +hourglass_empty e88b +hourglass_full e88c +hourglass_top ea5b +house ea44 +house_siding f202 +house_with_shield e786 +houseboat e584 +household_supplies efa1 +hov f475 +how_to_reg e174 +how_to_vote e175 +hr_resting f6ba +html eb7e +http e902 +https e899 +hub e9f4 +humerus f895 +humerus_alt f896 +humidity_high f163 +humidity_indoor f558 +humidity_low f164 +humidity_mid f165 +humidity_percentage f87e +hvac f10e +ice_skating e50b +icecream ea69 +id_card f4ca +ifl e025 +iframe f71b +iframe_off f71c +image e3f4 +image_aspect_ratio e3f5 +image_not_supported f116 +image_search e43f +imagesearch_roller e9b4 +imagesmode efa2 +immunology e0fb +import_contacts e0e0 +import_export e8d5 +important_devices e912 +in_home_mode e833 +inactive_order e0fc +inbox e156 +inbox_customize f859 +incomplete_circle e79b +indeterminate_check_box e909 +indeterminate_question_box f56d +info e88e +info_i f59b +infrared f87c +ink_eraser e6d0 +ink_eraser_off e7e3 +ink_highlighter e6d1 +ink_highlighter_move f524 +ink_marker e6d2 +ink_pen e6d3 +inpatient e0fe +input e890 +input_circle f71a +insert_chart f0cc +insert_chart_filled f0cc +insert_chart_outlined f0cc +insert_comment e24c +insert_drive_file e66d +insert_emoticon ea22 +insert_invitation e878 +insert_link e250 +insert_page_break eaca +insert_photo e3f4 +insert_text f827 +insights f092 +install_desktop eb71 +install_mobile eb72 +instant_mix e026 +integration_instructions ef54 +interactive_space f7ff +interests e7c8 +interpreter_mode e83b +inventory e179 +inventory_2 e1a1 +invert_colors e891 +invert_colors_off e0c4 +ios e027 +ios_share e6b8 +iron e583 +iso e3f6 +jamboard_kiosk e9b5 +javascript eb7c +join f84f +join_full f84f +join_inner eaf4 +join_left eaf2 +join_right eaea +joystick f5ee +jump_to_element f719 +kayaking e50c +kebab_dining e842 +keep f026 +keep_off e6f9 +keep_pin f026 +keep_public f56f +kettle e2b9 +key e73c +key_off eb84 +key_vertical f51a +key_visualizer f199 +keyboard e312 +keyboard_alt f028 +keyboard_arrow_down e313 +keyboard_arrow_left e314 +keyboard_arrow_right e315 +keyboard_arrow_up e316 +keyboard_backspace e317 +keyboard_capslock e318 +keyboard_capslock_badge f7de +keyboard_command_key eae7 +keyboard_control_key eae6 +keyboard_double_arrow_down ead0 +keyboard_double_arrow_left eac3 +keyboard_double_arrow_right eac9 +keyboard_double_arrow_up eacf +keyboard_external_input f7dd +keyboard_full f7dc +keyboard_hide e31a +keyboard_keys f67b +keyboard_lock f492 +keyboard_lock_off f491 +keyboard_off f67a +keyboard_onscreen f7db +keyboard_option_key eae8 +keyboard_previous_language f7da +keyboard_return e31b +keyboard_tab e31c +keyboard_tab_rtl ec73 +keyboard_voice e31d +kid_star f526 +king_bed ea45 +kitchen eb47 +kitesurfing e50d +lab_panel e103 +lab_profile e104 +lab_research f80b +label e893 +label_important e948 +label_important_outline e948 +label_off e9b6 +label_outline e893 +labs e105 +lan eb2f +landscape e564 +landscape_2 f4c4 +landscape_2_off f4c3 +landslide ebd7 +language e894 +language_chinese_array f766 +language_chinese_cangjie f765 +language_chinese_dayi f764 +language_chinese_pinyin f763 +language_chinese_quick f762 +language_chinese_wubi f761 +language_french f760 +language_gb_english f75f +language_international f75e +language_japanese_kana f513 +language_korean_latin f75d +language_pinyin f75c +language_spanish f5e9 +language_us f759 +language_us_colemak f75b +language_us_dvorak f75a +laps f6b9 +laptop e31e +laptop_chromebook e31f +laptop_mac e320 +laptop_windows e321 +lasso_select eb03 +last_page e5dd +launch e89e +laundry e2a8 +layers e53b +layers_clear e53c +lda e106 +leaderboard f20c +leak_add e3f8 +leak_remove e3f9 +left_click f718 +left_panel_close f717 +left_panel_open f716 +legend_toggle f11b +lens e3fa +lens_blur f029 +letter_switch f758 +library_add e03c +library_add_check e9b7 +library_books e02f +library_music e030 +license eb04 +lift_to_talk efa3 +light f02a +light_group e28b +light_mode e518 +light_off e9b8 +lightbulb e90f +lightbulb_circle ebfe +lightbulb_outline e90f +lightning_stand efa4 +line_axis ea9a +line_curve f757 +line_end f826 +line_end_arrow f81d +line_end_arrow_notch f81c +line_end_circle f81b +line_end_diamond f81a +line_end_square f819 +line_start f825 +line_start_arrow f818 +line_start_arrow_notch f817 +line_start_circle f816 +line_start_diamond f815 +line_start_square f814 +line_style e919 +line_weight e91a +linear_scale e260 +link e250 +link_off e16f +linked_camera e438 +linked_services f535 +liquor ea60 +list e896 +list_alt e0ee +list_alt_add f756 +lists e9b9 +live_help e0c6 +live_tv e63a +living f02b +local_activity e553 +local_airport e53d +local_atm e53e +local_bar e540 +local_cafe eb44 +local_car_wash e542 +local_convenience_store e543 +local_dining e561 +local_drink e544 +local_fire_department ef55 +local_florist e545 +local_gas_station e546 +local_grocery_store e8cc +local_hospital e548 +local_hotel e549 +local_laundry_service e54a +local_library e54b +local_mall e54c +local_movies e8da +local_offer f05b +local_parking e54f +local_pharmacy e550 +local_phone f0d4 +local_pizza e552 +local_play e553 +local_police ef56 +local_post_office e554 +local_printshop e8ad +local_see e557 +local_shipping e558 +local_taxi e559 +location_automation f14f +location_away f150 +location_chip f850 +location_city e7f1 +location_disabled e1b6 +location_home f152 +location_off e0c7 +location_on f1db +location_pin f1db +location_searching e1b7 +locator_tag f8c1 +lock e899 +lock_clock ef57 +lock_open e898 +lock_open_right f656 +lock_outline e899 +lock_person f8f3 +lock_reset eade +login ea77 +logo_dev ead6 +logout e9ba +looks e3fc +looks_3 e3fb +looks_4 e3fd +looks_5 e3fe +looks_6 e3ff +looks_one e400 +looks_two e401 +loop e863 +loupe e402 +low_density f79b +low_priority e16d +lowercase f48a +loyalty e89a +lte_mobiledata f02c +lte_mobiledata_badge f7d9 +lte_plus_mobiledata f02d +lte_plus_mobiledata_badge f7d8 +luggage f235 +lunch_dining ea61 +lyrics ec0b +macro_auto f6f2 +macro_off f8d2 +magic_button f136 +magic_exchange f7f4 +magic_tether f7d7 +magnification_large f83d +magnification_small f83c +magnify_docked f7d6 +magnify_fullscreen f7d5 +mail e159 +mail_lock ec0a +mail_off f48b +mail_outline e159 +male e58e +man e4eb +man_2 f8e1 +man_3 f8e2 +man_4 f8e3 +manage_accounts f02e +manage_history ebe7 +manage_search f02f +manga f5e3 +manufacturing e726 +map e55b +maps_home_work f030 +maps_ugc ef58 +margin e9bb +mark_as_unread e9bc +mark_chat_read f18b +mark_chat_unread f189 +mark_email_read f18c +mark_email_unread f18a +mark_unread_chat_alt eb9d +markdown f552 +markdown_copy f553 +markdown_paste f554 +markunread e159 +markunread_mailbox e89b +masked_transitions e72e +masked_transitions_add f42b +masks f218 +match_case f6f1 +match_word f6f0 +matter e907 +maximize e930 +measuring_tape f6af +media_bluetooth_off f031 +media_bluetooth_on f032 +media_link f83f +media_output f4f2 +media_output_off f4f3 +mediation efa7 +medical_information ebed +medical_mask f80a +medical_services f109 +medication f033 +medication_liquid ea87 +meeting_room eb4f +memory e322 +memory_alt f7a3 +menstrual_health f6e1 +menu e5d2 +menu_book ea19 +menu_open e9bd +merge eb98 +merge_type e252 +message e0c9 +metabolism e10b +metro f474 +mfg_nest_yale_lock f11d +mic e31d +mic_double f5d1 +mic_external_off ef59 +mic_external_on ef5a +mic_none e31d +mic_off e02b +microbiology e10c +microwave f204 +microwave_gen e847 +military_tech ea3f +mimo e9be +mimo_disconnect e9bf +mindfulness f6e0 +minimize e931 +minor_crash ebf1 +mintmark efa9 +missed_video_call f0ce +missed_video_call_filled f0ce +missing_controller e701 +mist e188 +mitre f547 +mixture_med e4c8 +mms e618 +mobile_friendly e200 +mobile_off e201 +mobile_screen_share e0e7 +mobiledata_off f034 +mode f097 +mode_comment e253 +mode_cool f166 +mode_cool_off f167 +mode_dual f557 +mode_edit f097 +mode_edit_outline f097 +mode_fan f168 +mode_fan_off ec17 +mode_heat f16a +mode_heat_cool f16b +mode_heat_off f16d +mode_night f036 +mode_of_travel e7ce +mode_off_on f16f +mode_standby f037 +model_training f0cf +monetization_on e263 +money e57d +money_bag f3ee +money_off f038 +money_off_csred f038 +monitor ef5b +monitor_heart eaa2 +monitor_weight f039 +monitor_weight_gain f6df +monitor_weight_loss f6de +monitoring f190 +monochrome_photos e403 +monorail f473 +mood ea22 +mood_bad e7f3 +mop e28d +more e619 +more_down f196 +more_horiz e5d3 +more_time ea5d +more_up f197 +more_vert e5d4 +mosque eab2 +motion_blur f0d0 +motion_mode f842 +motion_photos_auto f03a +motion_photos_off e9c0 +motion_photos_on e9c1 +motion_photos_pause f227 +motion_photos_paused f227 +motion_play f40b +motion_sensor_active e792 +motion_sensor_alert e784 +motion_sensor_idle e783 +motion_sensor_urgent e78e +motorcycle e91b +mountain_flag f5e2 +mouse e323 +mouse_lock f490 +mouse_lock_off f48f +move e740 +move_down eb61 +move_group f715 +move_item f1ff +move_location e741 +move_selection_down f714 +move_selection_left f713 +move_selection_right f712 +move_selection_up f711 +move_to_inbox e168 +move_up eb64 +moved_location e594 +movie e404 +movie_creation e404 +movie_edit f840 +movie_filter e43a +movie_info e02d +movie_off f499 +moving e501 +moving_beds e73d +moving_ministry e73e +mp e9c3 +multicooker e293 +multiline_chart e6df +multimodal_hand_eye f41b +multiple_stop f1b9 +museum ea36 +music_cast eb1a +music_note e405 +music_off e440 +music_video e063 +my_location e55c +mystery f5e1 +nat ef5c +nature e406 +nature_people e407 +navigate_before e5cb +navigate_next e5cc +navigation e55d +near_me e569 +near_me_disabled f1ef +nearby e6b7 +nearby_error f03b +nearby_off f03c +nephrology e10d +nest_audio ebbf +nest_cam_floodlight f8b7 +nest_cam_indoor f11e +nest_cam_iq f11f +nest_cam_iq_outdoor f120 +nest_cam_magnet_mount f8b8 +nest_cam_outdoor f121 +nest_cam_stand f8b9 +nest_cam_wall_mount f8ba +nest_cam_wired_stand ec16 +nest_clock_farsight_analog f8bb +nest_clock_farsight_digital f8bc +nest_connect f122 +nest_detect f123 +nest_display f124 +nest_display_max f125 +nest_doorbell_visitor f8bd +nest_eco_leaf f8be +nest_farsight_weather f8bf +nest_found_savings f8c0 +nest_gale_wifi f579 +nest_heat_link_e f126 +nest_heat_link_gen_3 f127 +nest_hello_doorbell e82c +nest_locator_tag f8c1 +nest_mini e789 +nest_multi_room f8c2 +nest_protect e68e +nest_remote f5db +nest_remote_comfort_sensor f12a +nest_secure_alarm f12b +nest_sunblock f8c3 +nest_tag f8c1 +nest_thermostat e68f +nest_thermostat_e_eu f12d +nest_thermostat_gen_3 f12e +nest_thermostat_sensor f12f +nest_thermostat_sensor_eu f130 +nest_thermostat_zirconium_eu f131 +nest_true_radiant f8c4 +nest_wake_on_approach f8c5 +nest_wake_on_press f8c6 +nest_wifi_gale f132 +nest_wifi_mistral f133 +nest_wifi_point f134 +nest_wifi_point_vento f134 +nest_wifi_pro f56b +nest_wifi_pro_2 f56a +nest_wifi_router f133 +network_cell e1b9 +network_check e640 +network_intelligence_history f5f6 +network_intelligence_update f5f5 +network_locked e61a +network_manage f7ab +network_node f56e +network_ping ebca +network_wifi e1ba +network_wifi_1_bar ebe4 +network_wifi_1_bar_locked f58f +network_wifi_2_bar ebd6 +network_wifi_2_bar_locked f58e +network_wifi_3_bar ebe1 +network_wifi_3_bar_locked f58d +network_wifi_locked f532 +neurology e10e +new_label e609 +new_releases ef76 +new_window f710 +news e032 +newsmode efad +newspaper eb81 +newsstand e9c4 +next_plan ef5d +next_week e16a +nfc e1bb +night_shelter f1f1 +night_sight_auto f1d7 +night_sight_auto_off f1f9 +night_sight_max f6c3 +nightlife ea62 +nightlight f03d +nightlight_round f03d +nights_stay ea46 +no_accounts f03e +no_adult_content f8fe +no_backpack f237 +no_crash ebf0 +no_drinks f1a5 +no_encryption f03f +no_encryption_gmailerrorred f03f +no_flash f1a6 +no_food f1a7 +no_luggage f23b +no_meals f1d6 +no_meeting_room eb4e +no_photography f1a8 +no_sim e1ce +no_sound e710 +no_stroller f1af +no_transfer f1d5 +noise_aware ebec +noise_control_off ebf3 +noise_control_on f8a8 +nordic_walking e50e +north f1e0 +north_east f1e1 +north_west f1e2 +not_accessible f0fe +not_accessible_forward f54a +not_interested f08c +not_listed_location e575 +not_started f0d1 +note e66d +note_add e89c +note_alt f040 +note_stack f562 +note_stack_add f563 +notes e26c +notification_add e399 +notification_important e004 +notification_multiple e6c2 +notifications e7f5 +notifications_active e7f7 +notifications_none e7f5 +notifications_off e7f6 +notifications_paused e7f8 +notifications_unread f4fe +numbers eac7 +nutrition e110 +ods e6e8 +odt e6e9 +offline_bolt e932 +offline_pin e90a +offline_pin_off f4d0 +offline_share e9c5 +oil_barrel ec15 +on_device_training ebfd +on_hub_device e6c3 +oncology e114 +ondemand_video e63a +online_prediction f0eb +onsen f6f8 +opacity e91c +open_in_browser e89d +open_in_full f1ce +open_in_new e89e +open_in_new_down f70f +open_in_new_off e4f6 +open_in_phone e702 +open_jam efae +open_run f4b7 +open_with e89f +ophthalmology e115 +oral_disease e116 +orbit f426 +order_approve f812 +order_play f811 +orders eb14 +orthopedics f897 +other_admission e47b +other_houses e58c +outbound e1ca +outbox ef5f +outbox_alt eb17 +outdoor_garden e205 +outdoor_grill ea47 +outgoing_mail f0d2 +outlet f1d4 +outlined_flag f0c6 +outpatient e118 +outpatient_med e119 +output ebbe +output_circle f70e +oven e9c7 +oven_gen e843 +overview e4a7 +overview_key f7d4 +oxygen_saturation e4de +p2p f52a +pace f6b8 +pacemaker e656 +package e48f +package_2 f569 +padding e9c8 +page_control e731 +page_info f614 +pageless f509 +pages e7f9 +pageview e8a0 +paid f041 +palette e40a +pallet f86a +pan_tool e925 +pan_tool_alt ebb9 +pan_zoom f655 +panorama e40b +panorama_fish_eye e40c +panorama_horizontal e40d +panorama_photosphere e9c9 +panorama_vertical e40e +panorama_wide_angle e40f +paragliding e50f +park ea63 +partly_cloudy_day f172 +partly_cloudy_night f174 +partner_exchange f7f9 +partner_reports efaf +party_mode e7fa +passkey f87f +password f042 +password_2 f4a9 +password_2_off f4a8 +patient_list e653 +pattern f043 +pause e034 +pause_circle e1a2 +pause_circle_filled e1a2 +pause_circle_outline e1a2 +pause_presentation e0ea +payment e8a1 +payments ef63 +pedal_bike eb29 +pediatrics e11d +pen_size_1 f755 +pen_size_2 f754 +pen_size_3 f753 +pen_size_4 f752 +pen_size_5 f751 +pending ef64 +pending_actions f1bb +pentagon eb50 +people ea21 +people_alt ea21 +people_outline ea21 +percent eb58 +performance_max e51a +pergola e203 +perm_camera_mic e8a2 +perm_contact_calendar e8a3 +perm_data_setting e8a4 +perm_device_information e8a5 +perm_identity f0d3 +perm_media e8a7 +perm_phone_msg e8a8 +perm_scan_wifi e8a9 +person f0d3 +person_2 f8e4 +person_3 f8e5 +person_4 f8e6 +person_add ea4d +person_add_alt ea4d +person_add_disabled e9cb +person_alert f567 +person_apron f5a3 +person_book f5e8 +person_cancel f566 +person_celebrate f7fe +person_check f565 +person_edit f4fa +person_filled f0d3 +person_off e510 +person_outline f0d3 +person_pin e55a +person_pin_circle e56a +person_play f7fd +person_raised_hand f59a +person_remove ef66 +person_search f106 +personal_bag eb0e +personal_bag_off eb0f +personal_bag_question eb10 +personal_injury e6da +personal_places e703 +personal_video e63b +pest_control f0fa +pest_control_rodent f0fd +pet_supplies efb1 +pets e91d +phishing ead7 +phone f0d4 +phone_alt f0d4 +phone_android e324 +phone_bluetooth_speaker e61b +phone_callback e649 +phone_disabled e9cc +phone_enabled e9cd +phone_forwarded e61c +phone_in_talk e61d +phone_iphone e325 +phone_locked e61e +phone_missed e61f +phone_paused e620 +phonelink e326 +phonelink_erase e0db +phonelink_lock e0dc +phonelink_off e327 +phonelink_ring e0dd +phonelink_ring_off f7aa +phonelink_setup ef41 +photo e432 +photo_album e411 +photo_auto_merge f530 +photo_camera e412 +photo_camera_back ef68 +photo_camera_front ef69 +photo_filter e43b +photo_frame f0d9 +photo_library e413 +photo_prints efb2 +photo_size_select_actual e432 +photo_size_select_large e433 +photo_size_select_small e434 +php eb8f +physical_therapy e11e +piano e521 +piano_off e520 +picture_as_pdf e415 +picture_in_picture e8aa +picture_in_picture_alt e911 +picture_in_picture_center f550 +picture_in_picture_large f54f +picture_in_picture_medium f54e +picture_in_picture_mobile f517 +picture_in_picture_off f52f +picture_in_picture_small f54d +pie_chart f0da +pie_chart_filled f0da +pie_chart_outline f0da +pie_chart_outlined f0da +pill e11f +pill_off f809 +pin f045 +pin_drop e55e +pin_end e767 +pin_invoke e763 +pinch eb38 +pinch_zoom_in f1fa +pinch_zoom_out f1fb +pip f64d +pip_exit f70d +pivot_table_chart e9ce +pixel_9_pro_fold f3f0 +place f1db +place_item f1f0 +plagiarism ea5a +planner_banner_ad_pt e692 +planner_review e694 +play_arrow e037 +play_circle e1c4 +play_disabled ef6a +play_for_work e906 +play_lesson f047 +play_music e6ee +play_pause f137 +play_shapes f7fc +playing_cards f5dc +playlist_add e03b +playlist_add_check e065 +playlist_add_check_circle e7e6 +playlist_add_circle e7e5 +playlist_play e05f +playlist_remove eb80 +plumbing f107 +plus_one e800 +podcasts f048 +podiatry e120 +podium f7fb +point_of_sale f17e +point_scan f70c +poker_chip f49b +policy ea17 +policy_alert f407 +poll f0cc +polyline ebbb +polymer e8ab +pool eb48 +portable_wifi_off f087 +portrait e851 +position_bottom_left f70b +position_bottom_right f70a +position_top_right f709 +post e705 +post_add ea20 +potted_plant f8aa +power e63c +power_input e336 +power_off e646 +power_rounded f8c7 +power_settings_circle f418 +power_settings_new f8c7 +prayer_times f838 +precision_manufacturing f049 +pregnancy f5f1 +pregnant_woman f5f1 +preliminary e7d8 +prescriptions e121 +present_to_all e0df +preview f1c5 +preview_off f7af +price_change f04a +price_check f04b +print e8ad +print_add f7a2 +print_connect f7a1 +print_disabled e9cf +print_error f7a0 +print_lock f651 +priority e19f +priority_high e645 +privacy f148 +privacy_tip f0dc +private_connectivity e744 +problem e122 +procedure e651 +process_chart f855 +production_quantity_limits e1d1 +productivity e296 +progress_activity e9d0 +prompt_suggestion f4f6 +propane ec14 +propane_tank ec13 +psychiatry e123 +psychology ea4a +psychology_alt f8ea +public e80b +public_off f1ca +publish e255 +published_with_changes f232 +pulmonology e124 +pulse_alert f501 +punch_clock eaa8 +push_pin f10d +qr_code ef6b +qr_code_2 e00a +qr_code_2_add f658 +qr_code_scanner f206 +query_builder efd6 +query_stats e4fc +question_answer e8af +question_exchange f7f3 +question_mark eb8b +queue e03c +queue_music e03d +queue_play_next e066 +quick_phrases e7d1 +quick_reference e46e +quick_reference_all f801 +quick_reorder eb15 +quickreply ef6c +quiet_time e1f9 +quiet_time_active e291 +quiz f04c +r_mobiledata f04d +radar f04e +radio e03e +radio_button_checked e837 +radio_button_partial f560 +radio_button_unchecked e836 +radiology e125 +railway_alert e9d1 +railway_alert_2 f461 +rainy f176 +rainy_heavy f61f +rainy_light f61e +rainy_snow f61d +ramen_dining ea64 +ramp_left eb9c +ramp_right eb96 +range_hood e1ea +rate_review e560 +raven f555 +raw_off f04f +raw_on f050 +read_more ef6d +readiness_score f6dd +real_estate_agent e73a +rear_camera f6c2 +rebase f845 +rebase_edit f846 +receipt e8b0 +receipt_long ef6e +receipt_long_off f40a +recent_actors e03f +recent_patient f808 +recenter f4c0 +recommend e9d2 +record_voice_over e91f +rectangle eb54 +recycling e760 +redeem e8f6 +redo e15a +reduce_capacity f21c +refresh e5d5 +reg_logo_ift f3ef +regular_expression f750 +relax f6dc +release_alert f654 +remember_me f051 +reminder e6c6 +reminders_alt e6c6 +remote_gen e83e +remove e15b +remove_circle f08f +remove_circle_outline f08f +remove_done e9d3 +remove_from_queue e067 +remove_moderator e9d4 +remove_red_eye e8f4 +remove_road ebfc +remove_selection e9d5 +remove_shopping_cart e928 +reopen_window f708 +reorder e8fe +repartition f8e8 +repeat e040 +repeat_on e9d6 +repeat_one e041 +repeat_one_on e9d7 +replace_audio f451 +replace_image f450 +replace_video f44f +replay e042 +replay_10 e059 +replay_30 e05a +replay_5 e05b +replay_circle_filled e9d8 +reply e15e +reply_all e15f +report f052 +report_gmailerrorred f052 +report_off e170 +report_problem f083 +request_page f22c +request_quote f1b6 +reset_brightness f482 +reset_focus f481 +reset_image f824 +reset_iso f480 +reset_settings f47f +reset_shadow f47e +reset_shutter_speed f47d +reset_tv e9d9 +reset_white_balance f47c +reset_wrench f56c +resize f707 +respiratory_rate e127 +responsive_layout e9da +restart_alt f053 +restaurant e56c +restaurant_menu e561 +restore e8b3 +restore_from_trash e938 +restore_page e929 +resume f7d0 +reviews f07c +rewarded_ads efb6 +rheumatology e128 +rib_cage f898 +rice_bowl f1f5 +right_click f706 +right_panel_close f705 +right_panel_open f704 +ring_volume f0dd +ring_volume_filled f0dd +ripples e9db +road f472 +robot f882 +robot_2 f5d0 +rocket eba5 +rocket_launch eb9b +roller_shades ec12 +roller_shades_closed ec11 +roller_skating ebcd +roofing f201 +room f1db +room_preferences f1b8 +room_service eb49 +rotate_90_degrees_ccw e418 +rotate_90_degrees_cw eaab +rotate_auto f417 +rotate_left e419 +rotate_right e41a +roundabout_left eb99 +roundabout_right eba3 +rounded_corner e920 +route eacd +router e328 +routine e20c +rowing e921 +rss_feed e0e5 +rsvp f055 +rtt e9ad +rubric eb27 +rule f1c2 +rule_folder f1c9 +rule_settings f64c +run_circle ef6f +running_with_errors e51d +rv_hookup e642 +safety_check ebef +safety_check_off f59d +safety_divider e1cc +sailing e502 +salinity f876 +sanitizer f21d +satellite e562 +satellite_alt eb3a +sauna f6f7 +save e161 +save_alt f090 +save_as eb60 +saved_search ea11 +savings e2eb +scale eb5f +scan f74e +scan_delete f74f +scanner e329 +scatter_plot e268 +scene e2a7 +schedule efd6 +schedule_send ea0a +schema e4fd +school e80c +science ea4b +science_off f542 +scooter f471 +score e269 +scoreboard ebd0 +screen_lock_landscape e1be +screen_lock_portrait e1bf +screen_lock_rotation e1c0 +screen_record f679 +screen_rotation e1c1 +screen_rotation_alt ebee +screen_rotation_up f678 +screen_search_desktop ef70 +screen_share e0e2 +screenshot f056 +screenshot_frame f677 +screenshot_keyboard f7d3 +screenshot_monitor ec08 +screenshot_region f7d2 +screenshot_tablet f697 +script f45f +scrollable_header e9dc +scuba_diving ebce +sd e9dd +sd_card e623 +sd_card_alert f057 +sd_storage e623 +sdk e720 +search e8b6 +search_check f800 +search_check_2 f469 +search_hands_free e696 +search_insights f4bc +search_off ea76 +security e32a +security_key f503 +security_update f072 +security_update_good f073 +security_update_warning f074 +segment e94b +select f74d +select_all e162 +select_check_box f1fe +select_to_speak f7cf +select_window e6fa +select_window_2 f4c8 +select_window_off e506 +self_care f86d +self_improvement ea78 +sell f05b +send e163 +send_and_archive ea0c +send_money e8b7 +send_time_extension eadb +send_to_mobile f05c +sensor_door f1b5 +sensor_occupied ec10 +sensor_window f1b4 +sensors e51e +sensors_krx f556 +sensors_krx_off f515 +sensors_off e51f +sentiment_calm f6a7 +sentiment_content f6a6 +sentiment_dissatisfied e811 +sentiment_excited f6a5 +sentiment_extremely_dissatisfied f194 +sentiment_frustrated f6a4 +sentiment_neutral e812 +sentiment_sad f6a3 +sentiment_satisfied e813 +sentiment_satisfied_alt e813 +sentiment_stressed f6a2 +sentiment_very_dissatisfied e814 +sentiment_very_satisfied e815 +sentiment_worried f6a1 +serif f4ac +service_toolbox e717 +set_meal f1ea +settings e8b8 +settings_accessibility f05d +settings_account_box f835 +settings_alert f143 +settings_applications e8b9 +settings_b_roll f625 +settings_backup_restore e8ba +settings_bluetooth e8bb +settings_brightness e8bd +settings_cell e8bc +settings_cinematic_blur f624 +settings_ethernet e8be +settings_heart f522 +settings_input_antenna e8bf +settings_input_component e8c1 +settings_input_composite e8c1 +settings_input_hdmi e8c2 +settings_input_svideo e8c3 +settings_motion_mode f833 +settings_night_sight f832 +settings_overscan e8c4 +settings_panorama f831 +settings_phone e8c5 +settings_photo_camera f834 +settings_power e8c6 +settings_remote e8c7 +settings_slow_motion f623 +settings_suggest f05e +settings_system_daydream e1c3 +settings_timelapse f622 +settings_video_camera f621 +settings_voice e8c8 +settop_component e2ac +severe_cold ebd3 +shadow e9df +shadow_add f584 +shadow_minus f583 +shape_line f8d3 +shape_recognition eb01 +shapes e602 +share e80d +share_location f05f +share_off f6cb +share_reviews f8a4 +share_windows f613 +sheets_rtl f823 +shelf_auto_hide f703 +shelf_position f702 +shelves f86e +shield e9e0 +shield_lock f686 +shield_locked f592 +shield_moon eaa9 +shield_person f650 +shield_question f529 +shield_with_heart e78f +shield_with_house e78d +shift e5f2 +shift_lock f7ae +shift_lock_off f483 +shop e8c9 +shop_2 e8ca +shop_two e8ca +shopping_bag f1cc +shopping_basket e8cb +shopping_cart e8cc +shopping_cart_checkout eb88 +shopping_cart_off f4f7 +shoppingmode efb7 +short_stay e4d0 +short_text e261 +shortcut f57a +show_chart e6e1 +shower f061 +shuffle e043 +shuffle_on e9e1 +shutter_speed e43d +shutter_speed_add f57e +shutter_speed_minus f57d +sick f220 +side_navigation e9e2 +sign_language ebe5 +signal_cellular_0_bar f0a8 +signal_cellular_1_bar f0a9 +signal_cellular_2_bar f0aa +signal_cellular_3_bar f0ab +signal_cellular_4_bar e1c8 +signal_cellular_add f7a9 +signal_cellular_alt e202 +signal_cellular_alt_1_bar ebdf +signal_cellular_alt_2_bar ebe3 +signal_cellular_connected_no_internet_0_bar f0ac +signal_cellular_connected_no_internet_4_bar e1cd +signal_cellular_no_sim e1ce +signal_cellular_nodata f062 +signal_cellular_null e1cf +signal_cellular_off e1d0 +signal_cellular_pause f5a7 +signal_disconnected f239 +signal_wifi_0_bar f0b0 +signal_wifi_4_bar f065 +signal_wifi_4_bar_lock e1e1 +signal_wifi_bad f064 +signal_wifi_connected_no_internet_4 f064 +signal_wifi_off e1da +signal_wifi_statusbar_4_bar f065 +signal_wifi_statusbar_not_connected f0ef +signal_wifi_statusbar_null f067 +signature f74c +signpost eb91 +sim_card e32b +sim_card_alert f057 +sim_card_download f068 +single_bed ea48 +sip f069 +skateboarding e511 +skeleton f899 +skillet f543 +skillet_cooktop f544 +skip_next e044 +skip_previous e045 +skull f89a +slab_serif f4ab +sledding e512 +sleep e213 +sleep_score f6b7 +slide_library f822 +sliders e9e3 +slideshow e41b +slow_motion_video e068 +smart_button f1c1 +smart_card_reader f4a5 +smart_card_reader_off f4a6 +smart_display f06a +smart_outlet e844 +smart_screen f06b +smart_toy f06c +smartphone e32c +smartphone_camera f44e +smb_share f74b +smoke_free eb4a +smoking_rooms eb4b +sms e625 +sms_failed e87f +snippet_folder f1c7 +snooze e046 +snowboarding e513 +snowing e80f +snowing_heavy f61c +snowmobile e503 +snowshoeing e514 +soap f1b2 +social_distance e1cb +social_leaderboard f6a0 +solar_power ec0f +sort e164 +sort_by_alpha e053 +sos ebf7 +sound_detection_dog_barking f149 +sound_detection_glass_break f14a +sound_detection_loud_sound f14b +sound_sampler f6b4 +soup_kitchen e7d3 +source f1c8 +source_environment e527 +source_notes e12d +south f1e3 +south_america e7e4 +south_east f1e4 +south_west f1e5 +spa eb4c +space_bar e256 +space_dashboard e66b +spatial_audio ebeb +spatial_audio_off ebe8 +spatial_speaker f4cf +spatial_tracking ebea +speaker e32d +speaker_group e32e +speaker_notes e8cd +speaker_notes_off e92a +speaker_phone e0d2 +special_character f74a +specific_gravity f872 +speech_to_text f8a7 +speed e9e4 +speed_0_25 f4d4 +speed_0_2x f498 +speed_0_5 f4e2 +speed_0_5x f497 +speed_0_75 f4d3 +speed_0_7x f496 +speed_1_2 f4e1 +speed_1_25 f4d2 +speed_1_2x f495 +speed_1_5 f4e0 +speed_1_5x f494 +speed_1_75 f4d1 +speed_1_7x f493 +speed_2x f4eb +speed_camera f470 +spellcheck e8ce +splitscreen f06d +splitscreen_add f4fd +splitscreen_bottom f676 +splitscreen_landscape f459 +splitscreen_left f675 +splitscreen_portrait f458 +splitscreen_right f674 +splitscreen_top f673 +splitscreen_vertical_add f4fc +spo2 f6db +spoke e9a7 +sports ea30 +sports_and_outdoors efb8 +sports_bar f1f3 +sports_baseball ea51 +sports_basketball ea26 +sports_cricket ea27 +sports_esports ea28 +sports_football ea29 +sports_golf ea2a +sports_gymnastics ebc4 +sports_handball ea33 +sports_hockey ea2b +sports_kabaddi ea34 +sports_martial_arts eae9 +sports_mma ea2c +sports_motorsports ea2d +sports_rugby ea2e +sports_score f06e +sports_soccer ea2f +sports_tennis ea32 +sports_volleyball ea31 +sprinkler e29a +sprint f81f +square eb36 +square_foot ea49 +ssid_chart eb66 +stack f609 +stack_hexagon f41c +stack_off f608 +stack_star f607 +stacked_bar_chart e9e6 +stacked_email e6c7 +stacked_inbox e6c9 +stacked_line_chart f22b +stacks f500 +stadia_controller f135 +stadium eb90 +stairs f1a9 +stairs_2 f46c +star f09a +star_border f09a +star_border_purple500 f09a +star_half e839 +star_outline f09a +star_purple500 f09a +star_rate f0ec +star_rate_half ec45 +stars e8d0 +start e089 +stat_0 e697 +stat_1 e698 +stat_2 e699 +stat_3 e69a +stat_minus_1 e69b +stat_minus_2 e69c +stat_minus_3 e69d +stay_current_landscape e0d3 +stay_current_portrait e0d4 +stay_primary_landscape e0d5 +stay_primary_portrait e0d6 +step f6fe +step_into f701 +step_out f700 +step_over f6ff +steppers e9e7 +steps f6da +stethoscope f805 +stethoscope_arrow f807 +stethoscope_check f806 +sticky_note e9e8 +sticky_note_2 f1fc +stock_media f570 +stockpot f545 +stop e047 +stop_circle ef71 +stop_screen_share e0e3 +storage e1db +store e8d1 +store_mall_directory e8d1 +storefront ea12 +storm f070 +straight eb95 +straighten e41c +strategy f5df +stream e9e9 +stream_apps f79f +streetview e56e +stress_management f6d9 +strikethrough_s e257 +stroke_full f749 +stroke_partial f748 +stroller f1ae +style e41d +styler e273 +stylus f604 +stylus_laser_pointer f747 +stylus_note f603 +subdirectory_arrow_left e5d9 +subdirectory_arrow_right e5da +subheader e9ea +subject e8d2 +subscript f111 +subscriptions e064 +subtitles e048 +subtitles_off ef72 +subway e56f +summarize f071 +sunny e81a +sunny_snowing e819 +superscript f112 +supervised_user_circle e939 +supervised_user_circle_off f60e +supervisor_account e8d3 +support ef73 +support_agent f0e2 +surfing e515 +surgical e131 +surround_sound e049 +swap_calls e0d7 +swap_driving_apps e69e +swap_driving_apps_wheel e69f +swap_horiz e8d4 +swap_horizontal_circle e933 +swap_vert e8d5 +swap_vertical_circle e8d6 +sweep e6ac +swipe e9ec +swipe_down eb53 +swipe_down_alt eb30 +swipe_left eb59 +swipe_left_alt eb33 +swipe_right eb52 +swipe_right_alt eb56 +swipe_up eb2e +swipe_up_alt eb35 +swipe_vertical eb51 +switch e1f4 +switch_access f6fd +switch_access_2 f506 +switch_access_shortcut e7e1 +switch_access_shortcut_add e7e2 +switch_account e9ed +switch_camera e41e +switch_left f1d1 +switch_right f1d2 +switch_video e41f +switches e733 +sword_rose f5de +swords f889 +symptoms e132 +synagogue eab0 +sync e627 +sync_alt ea18 +sync_desktop f41a +sync_disabled e628 +sync_lock eaee +sync_problem e629 +sync_saved_locally f820 +syringe e133 +system_security_update f072 +system_security_update_good f073 +system_security_update_warning f074 +system_update f072 +system_update_alt e8d7 +tab e8d8 +tab_close f745 +tab_close_right f746 +tab_duplicate f744 +tab_group f743 +tab_inactive f43b +tab_move f742 +tab_new_right f741 +tab_recent f740 +tab_unselected e8d9 +table f191 +table_bar ead2 +table_chart e265 +table_chart_view f6ef +table_eye f466 +table_lamp e1f2 +table_restaurant eac6 +table_rows f101 +table_rows_narrow f73f +table_view f1be +tablet e32f +tablet_android e330 +tablet_camera f44d +tablet_mac e331 +tabs e9ee +tactic f564 +tag e9ef +tag_faces ea22 +takeout_dining ea74 +tamper_detection_off e82e +tamper_detection_on f8c8 +tap_and_play e62b +tapas f1e9 +target e719 +task f075 +task_alt e2e6 +taunt f69f +taxi_alert ef74 +team_dashboard e013 +temp_preferences_custom f8c9 +temp_preferences_eco f8ca +temple_buddhist eab3 +temple_hindu eaaf +tenancy f0e3 +terminal eb8e +terrain e564 +text_ad e728 +text_decrease eadd +text_fields e262 +text_fields_alt e9f1 +text_format e165 +text_increase eae2 +text_rotate_up e93a +text_rotate_vertical e93b +text_rotation_angledown e93c +text_rotation_angleup e93d +text_rotation_down e93e +text_rotation_none e93f +text_select_end f73e +text_select_jump_to_beginning f73d +text_select_jump_to_end f73c +text_select_move_back_character f73b +text_select_move_back_word f73a +text_select_move_down f739 +text_select_move_forward_character f738 +text_select_move_forward_word f737 +text_select_move_up f736 +text_select_start f735 +text_snippet f1c6 +text_to_speech f1bc +text_up f49e +textsms e625 +texture e421 +texture_add f57c +texture_minus f57b +theater_comedy ea66 +theaters e8da +thermometer e846 +thermometer_add f582 +thermometer_gain f6d8 +thermometer_loss f6d7 +thermometer_minus f581 +thermostat f076 +thermostat_auto f077 +thermostat_carbon f178 +things_to_do eb2a +thread_unread f4f9 +thumb_down f578 +thumb_down_alt f578 +thumb_down_filled f578 +thumb_down_off f578 +thumb_down_off_alt f578 +thumb_up f577 +thumb_up_alt f577 +thumb_up_filled f577 +thumb_up_off f577 +thumb_up_off_alt f577 +thumbnail_bar f734 +thumbs_up_down e8dd +thunderstorm ebdb +tibia f89b +tibia_alt f89c +time_auto f0e4 +time_to_leave eff7 +timelapse e422 +timeline e922 +timer e425 +timer_10 e423 +timer_10_alt_1 efbf +timer_10_select f07a +timer_3 e424 +timer_3_alt_1 efc0 +timer_3_select f07b +timer_5 f4b1 +timer_5_shutter f4b2 +timer_off e426 +timer_pause f4bb +timer_play f4ba +tips_and_updates e79a +tire_repair ebc8 +title e264 +titlecase f489 +toast efc1 +toc e8de +today e8df +toggle_off e9f5 +toggle_on e9f6 +token ea25 +toll e8e0 +tonality e427 +toolbar e9f7 +tools_flat_head f8cb +tools_installation_kit e2ab +tools_ladder e2cb +tools_level e77b +tools_phillips f8cc +tools_pliers_wire_stripper e2aa +tools_power_drill e1e9 +tools_wrench f8cd +tooltip e9f8 +tooltip_2 f3ed +top_panel_close f733 +top_panel_open f732 +topic f1c8 +tornado e199 +total_dissolved_solids f877 +touch_app e913 +touchpad_mouse f687 +touchpad_mouse_off f4e6 +tour ef75 +toys e332 +toys_and_games efc2 +toys_fan f887 +track_changes e8e1 +trackpad_input f4c7 +trackpad_input_2 f409 +trackpad_input_3 f408 +traffic e565 +traffic_jam f46f +trail_length eb5e +trail_length_medium eb63 +trail_length_short eb6d +train e570 +tram e571 +transcribe f8ec +transfer_within_a_station e572 +transform e428 +transgender e58d +transit_enterexit e579 +transit_ticket f3f1 +transition_chop f50e +transition_dissolve f50d +transition_fade f50c +transition_push f50b +transition_slide f50a +translate e8e2 +transportation e21d +travel ef93 +travel_explore e2db +travel_luggage_and_bags efc3 +trending_down e8e3 +trending_flat e8e4 +trending_up e8e5 +trip e6fb +trip_origin e57b +trolley f86b +trolley_cable_car f46e +trophy ea23 +troubleshoot e1d2 +try f07c +tsunami ebd8 +tsv e6d6 +tty f1aa +tune e429 +tungsten f07d +turn_left eba6 +turn_right ebab +turn_sharp_left eba7 +turn_sharp_right ebaa +turn_slight_left eba4 +turn_slight_right eb9a +turned_in e8e7 +turned_in_not e8e7 +tv e63b +tv_displays f3ec +tv_gen e830 +tv_guide e1dc +tv_next f3eb +tv_off e647 +tv_options_edit_channels e1dd +tv_options_input_settings e1de +tv_remote f5d9 +tv_signin e71b +tv_with_assistant e785 +two_pager f51f +two_wheeler e9f9 +type_specimen f8f0 +u_turn_left eba1 +u_turn_right eba2 +ulna_radius f89d +ulna_radius_alt f89e +umbrella f1ad +unarchive e169 +undo e166 +unfold_less e5d6 +unfold_less_double f8cf +unfold_more e5d7 +unfold_more_double f8d0 +ungroup f731 +universal_currency e9fa +universal_currency_alt e734 +universal_local e9fb +unknown_2 f49f +unknown_5 e6a5 +unknown_7 f49e +unknown_document f804 +unknown_med eabd +unlicense eb05 +unpaved_road f46d +unpin e6f9 +unpublished f236 +unsubscribe e0eb +upcoming f07e +update e923 +update_disabled e075 +upgrade f0fb +upload f09b +upload_2 f521 +upload_file e9fc +uppercase f488 +urology e137 +usb e1e0 +usb_off e4fa +user_attributes e708 +vaccines e138 +vacuum efc5 +valve e224 +vape_free ebc6 +vaping_rooms ebcf +variable_add f51e +variable_insert f51d +variable_remove f51c +variables f851 +ventilator e139 +verified ef76 +verified_user f013 +vertical_align_bottom e258 +vertical_align_center e259 +vertical_align_top e25a +vertical_distribute e076 +vertical_shades ec0e +vertical_shades_closed ec0d +vertical_split e949 +vibration e62d +video_call e070 +video_camera_back f07f +video_camera_back_add f40c +video_camera_front f080 +video_camera_front_off f83b +video_chat f8a0 +video_file eb87 +video_label e071 +video_library e04a +video_search efc6 +video_settings ea75 +video_stable f081 +videocam e04b +videocam_off e04c +videogame_asset e338 +videogame_asset_off e500 +view_agenda e8e9 +view_array e8ea +view_carousel e8eb +view_column e8ec +view_column_2 f847 +view_comfy e42a +view_comfy_alt eb73 +view_compact e42b +view_compact_alt eb74 +view_cozy eb75 +view_day e8ed +view_headline e8ee +view_in_ar efc9 +view_in_ar_new efc9 +view_in_ar_off f61b +view_kanban eb7f +view_list e8ef +view_module e8f0 +view_object_track f432 +view_quilt e8f1 +view_real_size f4c2 +view_sidebar f114 +view_stream e8f2 +view_timeline eb85 +view_week e8f3 +vignette e435 +villa e586 +visibility e8f4 +visibility_lock f653 +visibility_off e8f5 +vital_signs e650 +vitals e13b +vo2_max f4aa +voice_chat e62e +voice_over_off e94a +voice_selection f58a +voice_selection_off f42c +voicemail e0d9 +volcano ebda +volume_down e04d +volume_down_alt e79c +volume_mute e04e +volume_off e04f +volume_up e050 +volunteer_activism ea70 +voting_chip f852 +vpn_key e0da +vpn_key_alert f6cc +vpn_key_off eb7a +vpn_lock e62f +vr180_create2d efca +vr180_create2d_off f571 +vrpano f082 +wall_art efcb +wall_lamp e2b4 +wallet f8ff +wallpaper e1bc +wallpaper_slideshow f672 +ward e13c +warehouse ebb8 +warning f083 +warning_amber f083 +warning_off f7ad +wash f1b1 +watch e334 +watch_button_press f6aa +watch_check f468 +watch_later efd6 +watch_off eae3 +watch_screentime f6ae +watch_vibration f467 +watch_wake f6a9 +water f084 +water_bottle f69d +water_bottle_large f69e +water_damage f203 +water_do f870 +water_drop e798 +water_ec f875 +water_full f6d6 +water_heater e284 +water_lock f6ad +water_loss f6d5 +water_lux f874 +water_medium f6d4 +water_orp f878 +water_ph f87a +water_pump f5d8 +water_voc f87b +waterfall_chart ea00 +waves e176 +waving_hand e766 +wb_auto e42c +wb_cloudy f15c +wb_incandescent e42e +wb_iridescent f07d +wb_shade ea01 +wb_sunny e430 +wb_twilight e1c6 +wc e63d +weather_hail f67f +weather_mix f60b +weather_snowy e2cd +web e051 +web_asset e069 +web_asset_off ef47 +web_stories e595 +web_traffic ea03 +webhook eb92 +weekend e16b +weight e13d +west f1e6 +whatshot e80e +wheelchair_pickup f1ab +where_to_vote e177 +widgets e1bd +width f730 +width_full f8f5 +width_normal f8f6 +width_wide f8f7 +wifi e63e +wifi_1_bar e4ca +wifi_2_bar e4d9 +wifi_add f7a8 +wifi_calling ef77 +wifi_calling_1 f0e7 +wifi_calling_2 f0f6 +wifi_calling_3 f0e7 +wifi_calling_bar_1 f44c +wifi_calling_bar_2 f44b +wifi_calling_bar_3 f44a +wifi_channel eb6a +wifi_find eb31 +wifi_home f671 +wifi_lock e1e1 +wifi_notification f670 +wifi_off e648 +wifi_password eb6b +wifi_protected_setup f0fc +wifi_proxy f7a7 +wifi_tethering e1e2 +wifi_tethering_error ead9 +wifi_tethering_off f087 +wind_power ec0c +window f088 +window_closed e77e +window_open e78c +window_sensor e2bb +wine_bar f1e8 +woman e13e +woman_2 f8e7 +work e943 +work_alert f5f7 +work_history ec09 +work_off e942 +work_outline e943 +work_update f5f8 +workflow ea04 +workspace_premium e7af +workspaces ea0f +workspaces_outline ea0f +wounds_injuries e13f +wrap_text e25b +wrist f69c +wrong_location ef78 +wysiwyg f1c3 +yard f089 +your_trips eb2b +youtube_activity f85a +youtube_searched_for e8fa +zone_person_alert e781 +zone_person_idle e77a +zone_person_urgent e788 +zoom_in e8ff +zoom_in_map eb2d +zoom_out e900 +zoom_out_map e56b diff --git a/crates/material_icons_proc_macro/src/lib.rs b/crates/material_icons_proc_macro/src/lib.rs new file mode 100644 index 0000000..1364dd8 --- /dev/null +++ b/crates/material_icons_proc_macro/src/lib.rs @@ -0,0 +1,36 @@ +use proc_macro::TokenStream; +use std::collections::HashSet; + +#[proc_macro] +pub fn code_points(_item: TokenStream) -> TokenStream { + let codepoints = include_str!("../MaterialSymbolsRounded-Regular.codepoints"); + + let mut names = HashSet::new(); + + let code: String = codepoints + .split("\n") + .map(str::trim) + .filter_map(|point| { + let split_point: Vec<&str> = point.split(" ").collect(); + + if split_point.len() > 1 { + let name = split_point[0].to_uppercase(); + let addr = split_point[1]; + + if !names.contains(&name) { + let token = Some(format!( + "pub const ICON_{name}: &str = \"\\u{{{addr}}}\";\n" + )); + names.insert(name); + token + } else { + None + } + } else { + None + } + }) + .collect(); + + code.parse().unwrap() +} diff --git a/fancy-example/Cargo.toml b/fancy-example/Cargo.toml index 88edb8b..14730dc 100644 --- a/fancy-example/Cargo.toml +++ b/fancy-example/Cargo.toml @@ -23,17 +23,17 @@ hello_egui_utils.workspace = true egui = { workspace = true, features = ["color-hex"] } eframe = { workspace = true, default-features = true } egui_extras = { workspace = true, features = ["http", "image"] } -ehttp = { version = "0.5.0" } +ehttp.workspace = true thumbhash = "0.1.0" -image = { version = "0.25.2", features = ["jpeg", "png", "webp"] } +image = { workspace = true, features = ["jpeg", "png", "webp"] } color-hex = "0.2.0" wasm-bindgen = "0.2.93" wasm-bindgen-futures = "0.4.43" -serde = { version = "1", features = ["derive"] } -serde_json = "1" +serde = { workspace = true, features = ["derive"] } +serde_json.workspace = true casey = "0.4.0" @@ -42,7 +42,7 @@ egui_commonmark = { version = "0.18.0", features = [] } validator = { version = "0.18.1", features = ["derive"] } [target.'cfg(not(target_arch = "wasm32"))'.dependencies] -tokio = { version = "1", features = ["time", "rt", "macros"] } +tokio = { workspace = true, features = ["time", "rt", "macros"] } ureq = "2" [target.'cfg(target_arch = "wasm32")'.dependencies] diff --git a/src/lib.rs b/src/lib.rs index e3edc88..7cce84f 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -14,6 +14,8 @@ pub use egui_form as form; pub use egui_inbox as inbox; #[cfg(feature = "infinite_scroll")] pub use egui_infinite_scroll as infinite_scroll; +#[cfg(feature = "material_icons")] +pub use egui_material_icons as material_icons; #[cfg(feature = "pull_to_refresh")] pub use egui_pull_to_refresh as pull_to_refresh; #[cfg(feature = "router")]