diff --git a/.dockerignore b/.dockerignore index 084d4bdff..af4888c78 100644 --- a/.dockerignore +++ b/.dockerignore @@ -3,4 +3,5 @@ Dockerfile .dockerignore .env .git +**/.temp .gitignore diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 8174ec499..342ce476e 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -30,5 +30,5 @@ jobs: push: true use: linux/amd64,linux/arm64,linux/arm/v7,linux/arm/v6 # platforms: linux/amd64,linux/arm64,linux/arm/v7 - tags: ${{ steps.meta.outputs.tags }},joepmeneer/atomic-server:latest + tags: joepmeneer/atomic-server:rust-alpine labels: ${{ steps.meta.outputs.labels }} diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 6f3d70969..777495df6 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -9,7 +9,7 @@ jobs: steps: - run: | sudo apt-get update - sudo apt-get install -y webkit2gtk-4.0 libappindicator3-dev + sudo apt-get install -y webkit2gtk-4.0 libappindicator3-dev libayatana-appindicator3-dev - uses: actions/checkout@v2 - uses: actions-rs/toolchain@v1 with: @@ -28,7 +28,7 @@ jobs: steps: - run: | sudo apt-get update - sudo apt-get install -y webkit2gtk-4.0 libappindicator3-dev + sudo apt-get install -y webkit2gtk-4.0 libappindicator3-dev libayatana-appindicator3-dev - uses: actions/checkout@v2 - uses: taiki-e/install-action@nextest - uses: actions-rs/toolchain@v1 @@ -49,7 +49,7 @@ jobs: steps: - run: | sudo apt-get update - sudo apt-get install -y webkit2gtk-4.0 libappindicator3-dev + sudo apt-get install -y webkit2gtk-4.0 libappindicator3-dev libayatana-appindicator3-dev - uses: actions/checkout@v2 - name: Install Rust and llvm-tools-preview run: rustup component add llvm-tools-preview --toolchain stable-x86_64-unknown-linux-gnu @@ -91,7 +91,7 @@ jobs: steps: - run: | sudo apt-get update - sudo apt-get install -y webkit2gtk-4.0 libappindicator3-dev + sudo apt-get install -y webkit2gtk-4.0 libappindicator3-dev libayatana-appindicator3-dev - uses: actions/checkout@v2 - uses: actions-rs/toolchain@v1 with: @@ -111,7 +111,7 @@ jobs: steps: - run: | sudo apt-get update - sudo apt-get install -y webkit2gtk-4.0 libappindicator3-dev + sudo apt-get install -y webkit2gtk-4.0 libappindicator3-dev libayatana-appindicator3-dev - run: npx playwright install --with-deps - uses: actions/setup-node@v2 with: diff --git a/.github/workflows/release-github.yml b/.github/workflows/release-github.yml index 58cdfd416..ff15b3d2d 100644 --- a/.github/workflows/release-github.yml +++ b/.github/workflows/release-github.yml @@ -1,5 +1,7 @@ name: Release github docker crates +permissions: write-all + on: push: tags: @@ -55,14 +57,14 @@ jobs: if: matrix.platform == 'ubuntu-latest' run: | sudo apt-get update - sudo apt-get install -y webkit2gtk-4.0 libappindicator3-dev + sudo apt-get install -y webkit2gtk-4.0 libappindicator3-dev libayatana-appindicator3-dev - name: Get Changelog Entry id: changelog_reader uses: mindsers/changelog-reader-action@v2 with: version: ${{ steps.tag_name.outputs.current_version }} path: CHANGELOG.md - - uses: tauri-apps/tauri-action@ecbab6a4d4b0deee6a67d644c9b73ed53c5aa739 + - uses: tauri-apps/tauri-action@v0 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # TODO: https://github.com/joepio/atomic-data-rust/issues/237 @@ -129,6 +131,7 @@ jobs: uses: docker/metadata-action@98669ae865ea3cffbcbaa878cf57c20bbf1c6c38 with: images: joepmeneer/atomic-server + github-token: ${{ secrets.GITHUB_TOKEN }} - name: Build and push Docker image uses: docker/build-push-action@v2 diff --git a/.github/workflows/tauri-publish.yml b/.github/workflows/tauri-publish.yml index 2c64c4d79..af8e60f35 100644 --- a/.github/workflows/tauri-publish.yml +++ b/.github/workflows/tauri-publish.yml @@ -22,11 +22,11 @@ jobs: with: toolchain: stable - name: install webkit2gtk and - sudo apt-get install -y webkit2gtk-4.0 libappindicator3 (ubuntu only) + sudo apt-get install -y webkit2gtk-4.0 libappindicator3 libayatana-appindicator3-dev if: matrix.platform == 'ubuntu-latest' run: | sudo apt-get update - sudo apt-get install -y webkit2gtk-4.0 libappindicator3-dev + sudo apt-get install -y webkit2gtk-4.0 libappindicator3-dev libayatana-appindicator3-dev - name: Get Changelog Entry id: changelog_reader uses: mindsers/changelog-reader-action@v2 diff --git a/.gitignore b/.gitignore index 7c2e7efc3..8bd8ac9eb 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,5 @@ /target .env trace-*.json -.temp +**/.temp .DS_Store diff --git a/CHANGELOG.md b/CHANGELOG.md index bcbbd0e5e..80d0d762f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,12 +3,21 @@ List of changes for this repo, including `atomic-cli`, `atomic-server` and `atomic-lib`. By far most changes relate to `atomic-server`, so if not specified, assume the changes are relevant only for the server. -## [v0.31.1] - 2022-06-xx +## [v0.32.2] - 2022-06-20 + +- Upgrade to stable tauri #451 +- Improve performance of invites #450 +- Update JS bundle: + - Fix Dropdown input bug + - Fix autogrow textarea bug + +## [v0.32.1] - 2022-06-15 - Fix issue when creating invite for chatroom #413 - Add OpenTelemetry suport #416 - Fix `remove` Commit command #417 (thanks @rasendubi!) - Make tests less flaky by removing the `Store` in `Agent:to_resource` #430 +- Update JS bundle ## [v0.32.0] - 2022-05-22 diff --git a/CONTRIBUTE.md b/CONTRIBUTE.md index 61c91fd93..6b69413e0 100644 --- a/CONTRIBUTE.md +++ b/CONTRIBUTE.md @@ -1,12 +1,14 @@ # Guide for Atomic Data Rust contributors First things first: I'm glad you're reading this! +Join our [Discord](https://discord.gg/a72Rv2P) to chat with other people in the Atomic Data community. If you encounter any issues, add them to the [Github issue tracker](https://github.com/joepio/atomic-data-rust/issues). Same goes for feature requests. PR's are welcome, too! -And join our [Discord](https://discord.gg/a72Rv2P)! -I'd love to help you out to understand this codebase. +Note that opening a PR means agreeing that your code becomes distributed under the MIT license. + If you want to share some thoughts on the Atomic Data _specification_, please [drop an issue in the Atomic Data docs repo](https://github.com/ontola/atomic-data/issues). +Check out the [Roadmap](https://docs.atomicdata.dev/roadmap.html) if you want to learn more about our plans and the history of the project. ## Table of contents diff --git a/Cargo.lock b/Cargo.lock index 21dcb32cc..473f92353 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -420,87 +420,6 @@ dependencies = [ "wait-timeout", ] -[[package]] -name = "async-broadcast" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90622698a1218e0b2fb846c97b5f19a0831f6baddee73d9454156365ccfa473b" -dependencies = [ - "easy-parallel", - "event-listener", - "futures-core", -] - -[[package]] -name = "async-channel" -version = "1.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2114d64672151c0c5eaa5e131ec84a74f06e1e559830dabba01ca30605d66319" -dependencies = [ - "concurrent-queue", - "event-listener", - "futures-core", -] - -[[package]] -name = "async-executor" -version = "1.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "871f9bb5e0a22eeb7e8cf16641feb87c9dc67032ccf8ff49e772eb9941d3a965" -dependencies = [ - "async-task", - "concurrent-queue", - "fastrand", - "futures-lite", - "once_cell", - "slab", -] - -[[package]] -name = "async-io" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a811e6a479f2439f0c04038796b5cfb3d2ad56c230e0f2d3f7b04d68cfee607b" -dependencies = [ - "concurrent-queue", - "futures-lite", - "libc", - "log", - "once_cell", - "parking", - "polling", - "slab", - "socket2", - "waker-fn", - "winapi", -] - -[[package]] -name = "async-lock" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e97a171d191782fba31bb902b14ad94e24a68145032b7eedf871ab0bc0d077b6" -dependencies = [ - "event-listener", -] - -[[package]] -name = "async-recursion" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7d78656ba01f1b93024b7c3a0467f1608e4be67d725749fdcd7d2c7678fd7a2" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "async-task" -version = "4.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30696a84d817107fc028e049980e09d5e140e8da8f1caeb17e8e950658a3cea9" - [[package]] name = "async-trait" version = "0.1.53" @@ -530,15 +449,15 @@ version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "58aeb089fb698e06db8089971c7ee317ab9644bade33383f63631437b03aafb6" dependencies = [ - "glib-sys 0.15.10", - "gobject-sys 0.15.10", + "glib-sys", + "gobject-sys", "libc", "system-deps 6.0.2", ] [[package]] name = "atomic-cli" -version = "0.32.0" +version = "0.32.1" dependencies = [ "assert_cmd", "atomic_lib", @@ -552,7 +471,7 @@ dependencies = [ [[package]] name = "atomic-server" -version = "0.32.0" +version = "0.32.1" dependencies = [ "acme-lib", "actix", @@ -597,7 +516,7 @@ dependencies = [ [[package]] name = "atomic-server-tauri" -version = "0.32.0" +version = "0.32.1" dependencies = [ "actix-rt", "atomic-server", @@ -609,7 +528,7 @@ dependencies = [ [[package]] name = "atomic_lib" -version = "0.32.0" +version = "0.32.1" dependencies = [ "base64", "bincode", @@ -635,9 +554,9 @@ dependencies = [ [[package]] name = "attohttpc" -version = "0.18.0" +version = "0.19.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e69e13a99a7e6e070bb114f7ff381e58c7ccc188630121fc4c2fe4bcf24cd072" +checksum = "262c3f7f5d61249d8c00e5546e2685cd15ebeeb1bc0f3cc5449350a1cb07319e" dependencies = [ "flate2", "http", @@ -758,6 +677,12 @@ version = "3.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a4a45a46ab1f2412e53d3a0ade76ffad2025804294569aae387231a0cd6e0899" +[[package]] +name = "bytemuck" +version = "1.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdead85bdec19c194affaeeb670c0e41fe23de31459efd1c174d049269cf02cc" + [[package]] name = "byteorder" version = "1.4.3" @@ -779,12 +704,6 @@ dependencies = [ "bytes", ] -[[package]] -name = "cache-padded" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1db59621ec70f09c5e9b597b220c7a2b43611f4710dc03ceb8748637775692c" - [[package]] name = "cairo-rs" version = "0.15.10" @@ -804,7 +723,7 @@ version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c55d429bef56ac9172d25fecb85dc8068307d17acd74b377866b7a1ef25d3c8" dependencies = [ - "glib-sys 0.15.10", + "glib-sys", "libc", "system-deps 6.0.2", ] @@ -857,16 +776,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "74f89d248799e3f15f91b70917f65381062a01bb8e222700ea0e5a7ff9785f9c" dependencies = [ "byteorder", - "uuid", -] - -[[package]] -name = "cfg-expr" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b412e83326147c2bb881f8b40edfbf9905b9b8abaebd0e47ca190ba62fda8f0e" -dependencies = [ - "smallvec", + "uuid 0.8.2", ] [[package]] @@ -899,12 +809,6 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" -[[package]] -name = "cfg_aliases" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" - [[package]] name = "change-detection" version = "1.2.0" @@ -957,7 +861,7 @@ dependencies = [ "clap_lex", "indexmap", "lazy_static", - "strsim 0.10.0", + "strsim", "termcolor", "textwrap 0.15.0", ] @@ -1015,6 +919,12 @@ dependencies = [ "objc", ] +[[package]] +name = "color_quant" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" + [[package]] name = "colored" version = "2.0.0" @@ -1036,15 +946,6 @@ dependencies = [ "memchr", ] -[[package]] -name = "concurrent-queue" -version = "1.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30ed07550be01594c6026cff2a1d7fe9c8f683caa798e12b68694ac9e88286a3" -dependencies = [ - "cache-padded", -] - [[package]] name = "console" version = "0.15.0" @@ -1355,38 +1256,14 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b365fabc795046672053e29c954733ec3b05e4be654ab130fe8f1f94d7051f35" -[[package]] -name = "darling" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d706e75d87e35569db781a9b5e2416cff1236a47ed380831f959382ccd5f858" -dependencies = [ - "darling_core 0.10.2", - "darling_macro 0.10.2", -] - [[package]] name = "darling" version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a01d95850c592940db9b8194bc39f4bc0e89dee5c4265e4b1807c34a9aba453c" dependencies = [ - "darling_core 0.13.4", - "darling_macro 0.13.4", -] - -[[package]] -name = "darling_core" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0c960ae2da4de88a91b2d920c2a7233b400bc33cb28453a2987822d8392519b" -dependencies = [ - "fnv", - "ident_case", - "proc-macro2", - "quote", - "strsim 0.9.3", - "syn", + "darling_core", + "darling_macro", ] [[package]] @@ -1399,30 +1276,30 @@ dependencies = [ "ident_case", "proc-macro2", "quote", - "strsim 0.10.0", + "strsim", "syn", ] [[package]] name = "darling_macro" -version = "0.10.2" +version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9b5a2f4ac4969822c62224815d069952656cadc7084fdca9751e6d959189b72" +checksum = "9c972679f83bdf9c42bd905396b6c3588a843a17f0f16dfcfa3e2c5d57441835" dependencies = [ - "darling_core 0.10.2", + "darling_core", "quote", "syn", ] [[package]] -name = "darling_macro" -version = "0.13.4" +name = "dbus" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c972679f83bdf9c42bd905396b6c3588a843a17f0f16dfcfa3e2c5d57441835" +checksum = "de0a745c25b32caa56b82a3950f5fec7893a960f4c10ca3b02060b0c38d8c2ce" dependencies = [ - "darling_core 0.13.4", - "quote", - "syn", + "libc", + "libdbus-sys", + "winapi", ] [[package]] @@ -1444,17 +1321,6 @@ dependencies = [ "adler32", ] -[[package]] -name = "derivative" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "derive_more" version = "0.99.17" @@ -1606,12 +1472,6 @@ dependencies = [ "dtoa", ] -[[package]] -name = "easy-parallel" -version = "3.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6907e25393cdcc1f4f3f513d9aac1e840eb1cc341a0fccb01171f7d14d10b946" - [[package]] name = "edit" version = "0.1.3" @@ -1628,6 +1488,19 @@ version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" +[[package]] +name = "embed-resource" +version = "1.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecc24ff8d764818e9ab17963b0593c535f077a513f565e75e4352d758bc4d8c0" +dependencies = [ + "cc", + "rustc_version 0.4.0", + "toml", + "vswhom", + "winreg", +] + [[package]] name = "embed_plist" version = "1.2.2" @@ -1649,33 +1522,6 @@ dependencies = [ "cfg-if 1.0.0", ] -[[package]] -name = "enumflags2" -version = "0.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e75d4cd21b95383444831539909fbb14b9dc3fdceb2a6f5d36577329a1f55ccb" -dependencies = [ - "enumflags2_derive", - "serde", -] - -[[package]] -name = "enumflags2_derive" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f58dc3c5e468259f19f2d46304a6b28f1c3d034442e14b322d2b850e36f6d5ae" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "event-listener" -version = "2.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77f3309417938f28bf8228fcff79a4a37103981e3e186d2ccd19c74b38f4eb71" - [[package]] name = "fail" version = "0.5.0" @@ -1952,9 +1798,9 @@ version = "0.15.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "140b2f5378256527150350a8346dbdb08fadc13453a7a2d73aecd5fab3c402a7" dependencies = [ - "gio-sys 0.15.10", - "glib-sys 0.15.10", - "gobject-sys 0.15.10", + "gio-sys", + "glib-sys", + "gobject-sys", "libc", "system-deps 6.0.2", ] @@ -1967,9 +1813,9 @@ checksum = "32e7a08c1e8f06f4177fb7e51a777b8c1689f743a7bc11ea91d44d2226073a88" dependencies = [ "cairo-sys-rs", "gdk-pixbuf-sys", - "gio-sys 0.15.10", - "glib-sys 0.15.10", - "gobject-sys 0.15.10", + "gio-sys", + "glib-sys", + "gobject-sys", "libc", "pango-sys", "pkg-config", @@ -1983,7 +1829,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4b7f8c7a84b407aa9b143877e267e848ff34106578b64d1e0a24bf550716178" dependencies = [ "gdk-sys", - "glib-sys 0.15.10", + "glib-sys", "libc", "system-deps 6.0.2", "x11", @@ -2044,34 +1890,21 @@ dependencies = [ "futures-channel", "futures-core", "futures-io", - "gio-sys 0.15.10", + "gio-sys", "glib", "libc", "once_cell", "thiserror", ] -[[package]] -name = "gio-sys" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0a41df66e57fcc287c4bcf74fc26b884f31901ea9792ec75607289b456f48fa" -dependencies = [ - "glib-sys 0.14.0", - "gobject-sys 0.14.0", - "libc", - "system-deps 3.2.0", - "winapi", -] - [[package]] name = "gio-sys" version = "0.15.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32157a475271e2c4a023382e9cab31c4584ee30a97da41d3c4e9fdd605abcf8d" dependencies = [ - "glib-sys 0.15.10", - "gobject-sys 0.15.10", + "glib-sys", + "gobject-sys", "libc", "system-deps 6.0.2", "winapi", @@ -2089,8 +1922,8 @@ dependencies = [ "futures-executor", "futures-task", "glib-macros", - "glib-sys 0.15.10", - "gobject-sys 0.15.10", + "glib-sys", + "gobject-sys", "libc", "once_cell", "smallvec", @@ -2105,23 +1938,13 @@ checksum = "dac4d47c544af67747652ab1865ace0ffa1155709723ac4f32e97587dd4735b2" dependencies = [ "anyhow", "heck 0.4.0", - "proc-macro-crate 1.1.3", + "proc-macro-crate", "proc-macro-error", "proc-macro2", "quote", "syn", ] -[[package]] -name = "glib-sys" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c1d60554a212445e2a858e42a0e48cece1bd57b311a19a9468f70376cf554ae" -dependencies = [ - "libc", - "system-deps 3.2.0", -] - [[package]] name = "glib-sys" version = "0.15.10" @@ -2151,24 +1974,13 @@ dependencies = [ "regex", ] -[[package]] -name = "gobject-sys" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa92cae29759dae34ab5921d73fff5ad54b3d794ab842c117e36cafc7994c3f5" -dependencies = [ - "glib-sys 0.14.0", - "libc", - "system-deps 3.2.0", -] - [[package]] name = "gobject-sys" version = "0.15.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0d57ce44246becd17153bd035ab4d32cfee096a657fc01f2231c9278378d1e0a" dependencies = [ - "glib-sys 0.15.10", + "glib-sys", "libc", "system-deps 6.0.2", ] @@ -2206,9 +2018,9 @@ dependencies = [ "cairo-sys-rs", "gdk-pixbuf-sys", "gdk-sys", - "gio-sys 0.15.10", - "glib-sys 0.15.10", - "gobject-sys 0.15.10", + "gio-sys", + "glib-sys", + "gobject-sys", "libc", "pango-sys", "system-deps 6.0.2", @@ -2221,7 +2033,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24f518afe90c23fba585b2d7697856f9e6a7bbc62f65588035e66f6afb01a2e9" dependencies = [ "anyhow", - "proc-macro-crate 1.1.3", + "proc-macro-crate", "proc-macro-error", "proc-macro2", "quote", @@ -2286,12 +2098,6 @@ dependencies = [ "libc", ] -[[package]] -name = "hex" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" - [[package]] name = "html5ever" version = "0.25.2" @@ -2314,9 +2120,9 @@ checksum = "e9025058dae765dee5070ec375f591e2ba14638c63feff74f13805a72e523163" [[package]] name = "http" -version = "0.2.6" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31f4c6746584866f0feabcc69893c5b51beef3831656a968ed7ae254cdc4fd03" +checksum = "75f43d41e26995c17e71ee126451dd3941010b0514a81a9d11f3b341debc2399" dependencies = [ "bytes", "fnv", @@ -2392,6 +2198,20 @@ dependencies = [ "winapi-util", ] +[[package]] +name = "image" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28edd9d7bc256be2502e325ac0628bde30b7001b9b52e0abe31a1a9dc2701212" +dependencies = [ + "bytemuck", + "byteorder", + "color_quant", + "num-iter", + "num-rational", + "num-traits", +] + [[package]] name = "indexmap" version = "1.8.1" @@ -2476,8 +2296,8 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "905fbb87419c5cde6e3269537e4ea7d46431f3008c5d057e915ef3f115e7793c" dependencies = [ - "glib-sys 0.15.10", - "gobject-sys 0.15.10", + "glib-sys", + "gobject-sys", "libc", "system-deps 5.0.0", ] @@ -2496,6 +2316,20 @@ dependencies = [ "walkdir", ] +[[package]] +name = "jni" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6df18c2e3db7e453d3c6ac5b3e9d5182664d28788126d39b91f2d1e22b017ec" +dependencies = [ + "cesu8", + "combine", + "jni-sys", + "log", + "thiserror", + "walkdir", +] + [[package]] name = "jni-sys" version = "0.3.0" @@ -2582,12 +2416,13 @@ dependencies = [ [[package]] name = "libappindicator-sys" -version = "0.7.0" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90bdcb8c5cfc11febe2ff3f18386d6cb7d29f464cbaf6b286985c3f1a501d74f" +checksum = "4a0e019ae1a736a858f4c52b58af2ca6e797f27d7fe534e8a56776d74a8f2535" dependencies = [ "gtk-sys", - "pkg-config", + "libloading", + "once_cell", ] [[package]] @@ -2596,6 +2431,25 @@ version = "0.2.124" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "21a41fed9d98f27ab1c6d161da622a4fa35e8a54a8adc24bbf3ddd0ef70b0e50" +[[package]] +name = "libdbus-sys" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c185b5b7ad900923ef3a8ff594083d4d9b5aea80bb4f32b8342363138c0d456b" +dependencies = [ + "pkg-config", +] + +[[package]] +name = "libloading" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "efbc0f03f9a775e9f6aed295c6a1ba2253c5757a9e03d55c6caa46a681abcddd" +dependencies = [ + "cfg-if 1.0.0", + "winapi", +] + [[package]] name = "local-channel" version = "0.1.2" @@ -2840,9 +2694,9 @@ dependencies = [ [[package]] name = "ndk" -version = "0.4.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d64d6af06fde0e527b1ba5c7b79a6cc89cfc46325b0b2887dffe8f70197e0c3c" +checksum = "2032c77e030ddee34a6787a64166008da93f6a352b629261d0fee232b8742dd4" dependencies = [ "bitflags", "jni-sys", @@ -2858,39 +2712,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" [[package]] -name = "ndk-glue" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3648f3609716eb7dbf5f5b5d4b84fcd67dd4c34efcdb12e4a6c0929c2ac48349" -dependencies = [ - "lazy_static", - "libc", - "log", - "ndk", - "ndk-context", - "ndk-macro", - "ndk-sys", -] - -[[package]] -name = "ndk-macro" -version = "0.2.0" +name = "ndk-sys" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05d1c6307dc424d0f65b9b06e94f88248e6305726b14729fd67a5e47b2dc481d" +checksum = "6e5a6ae77c8ee183dcbbba6150e2e6b9f3f4196a7666c02a715a95692ec1fa97" dependencies = [ - "darling 0.10.2", - "proc-macro-crate 0.1.5", - "proc-macro2", - "quote", - "syn", + "jni-sys", ] -[[package]] -name = "ndk-sys" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1bcdd74c20ad5d95aacd60ef9ba40fdf77f767051040541df557b7a9b2a2121" - [[package]] name = "new_debug_unreachable" version = "1.0.4" @@ -2909,19 +2738,6 @@ dependencies = [ "libc", ] -[[package]] -name = "nix" -version = "0.23.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f866317acbd3a240710c63f065ffb1e4fd466259045ccb504130b7f668f35c6" -dependencies = [ - "bitflags", - "cc", - "cfg-if 1.0.0", - "libc", - "memoffset", -] - [[package]] name = "nodrop" version = "0.1.14" @@ -2934,12 +2750,9 @@ version = "4.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a995a3d2834cefa389218e7a35156e8ce544bc95f836900da01ee0b26a07e9d4" dependencies = [ + "dbus", "mac-notification-sys", - "serde", "winrt-notification", - "zbus", - "zvariant", - "zvariant_derive", ] [[package]] @@ -2986,7 +2799,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b10db009e117aca57cbfb70ac332348f9a89d09ff7204497c283c0f7a0c96323" dependencies = [ "ntest_proc_macro_helper", - "proc-macro-crate 1.1.3", + "proc-macro-crate", "proc-macro2", "quote", "syn", @@ -3013,6 +2826,17 @@ dependencies = [ "num-traits", ] +[[package]] +name = "num-rational" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d41702bd167c2df5520b384281bc111a4b5efcf7fbc4c9c222c815b07e0a6a6a" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + [[package]] name = "num-traits" version = "0.2.14" @@ -3047,7 +2871,7 @@ version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3b0498641e53dd6ac1a4f22547548caa6864cc4933784319cd1775271c5a46ce" dependencies = [ - "proc-macro-crate 1.1.3", + "proc-macro-crate", "proc-macro2", "quote", "syn", @@ -3103,9 +2927,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.10.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87f3e037eac156d1775da914196f0f37741a274155e34a0b7e427c35d2a2ecb9" +checksum = "7709cef83f0c1f58f666e746a08b21e0085f7440fa6a29cc194d68aac97a4225" [[package]] name = "oorandom" @@ -3115,12 +2939,12 @@ checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575" [[package]] name = "open" -version = "2.1.1" +version = "3.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9213e7b66aa06a7722828ee2980c1adff22a3922b582baaa1e62e30ca2a6c018" +checksum = "360bcc8316bf6363aa3954c3ccc4de8add167b087e0259190a043c9514f910fe" dependencies = [ "pathdiff", - "winapi", + "windows-sys 0.36.1", ] [[package]] @@ -3199,29 +3023,19 @@ dependencies = [ ] [[package]] -name = "ordered-float" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3305af35278dd29f46fcdd139e0b1fbfae2153f0e5928b39b035542dd31e37b7" -dependencies = [ - "num-traits", -] - -[[package]] -name = "ordered-stream" -version = "0.0.1" +name = "ordered-float" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44630c059eacfd6e08bdaa51b1db2ce33119caa4ddc1235e923109aa5f25ccb1" +checksum = "3305af35278dd29f46fcdd139e0b1fbfae2153f0e5928b39b035542dd31e37b7" dependencies = [ - "futures-core", - "pin-project-lite", + "num-traits", ] [[package]] name = "os_info" -version = "3.2.0" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "023df84d545ef479cf67fd2f4459a613585c9db4852c2fad12ab70587859d340" +checksum = "0eca3ecae1481e12c3d9379ec541b238a16f0b75c9a409942daa8ec20dbfdb62" dependencies = [ "log", "serde", @@ -3293,8 +3107,8 @@ version = "0.15.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d2a00081cde4661982ed91d80ef437c20eacaf6aa1a5962c0279ae194662c3aa" dependencies = [ - "glib-sys 0.15.10", - "gobject-sys 0.15.10", + "glib-sys", + "gobject-sys", "libc", "system-deps 6.0.2", ] @@ -3350,7 +3164,7 @@ dependencies = [ "libc", "redox_syscall", "smallvec", - "windows-sys", + "windows-sys 0.34.0", ] [[package]] @@ -3583,19 +3397,6 @@ dependencies = [ "miniz_oxide", ] -[[package]] -name = "polling" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "685404d509889fade3e86fe3a5803bca2ec09b0c0778d5ada6ec8bf7a8de5259" -dependencies = [ - "cfg-if 1.0.0", - "libc", - "log", - "wepoll-ffi", - "winapi", -] - [[package]] name = "ppv-lite86" version = "0.2.16" @@ -3647,15 +3448,6 @@ dependencies = [ "output_vt100", ] -[[package]] -name = "proc-macro-crate" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785" -dependencies = [ - "toml", -] - [[package]] name = "proc-macro-crate" version = "1.1.3" @@ -3878,13 +3670,13 @@ dependencies = [ [[package]] name = "regex" -version = "1.5.5" +version = "1.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a11647b6b25ff05a515cb92c365cec08801e83423a235b51e231e1808747286" +checksum = "d83f127d94bdbcda4c8cc2e50f6f84f4b611f69c902699ca385a39c3a75f9ff1" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.6.25", + "regex-syntax 0.6.26", ] [[package]] @@ -3893,7 +3685,7 @@ version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" dependencies = [ - "regex-syntax 0.6.25", + "regex-syntax 0.6.26", ] [[package]] @@ -3904,9 +3696,9 @@ checksum = "8e931c58b93d86f080c734bfd2bce7dd0079ae2331235818133c8be7f422e20e" [[package]] name = "regex-syntax" -version = "0.6.25" +version = "0.6.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89b" +checksum = "49b3de9ec5dc0a3417da371aab17d729997c15010e7fd24ff707773a33bddb64" [[package]] name = "remove_dir_all" @@ -3919,14 +3711,15 @@ dependencies = [ [[package]] name = "rfd" -version = "0.8.2" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92e3107b2e81967df7c0617e978dc656795583a73ad0ddbf645ce60109caf8c2" +checksum = "95281ea32d3c1ebdf84027986952e22f2bb89fa1b8b97c012be72bbc3b8e4537" dependencies = [ "block", "dispatch", - "glib-sys 0.15.10", - "gobject-sys 0.15.10", + "embed-resource", + "glib-sys", + "gobject-sys", "gtk-sys", "js-sys", "lazy_static", @@ -3938,7 +3731,7 @@ dependencies = [ "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "windows 0.35.0", + "windows 0.37.0", ] [[package]] @@ -4037,9 +3830,9 @@ dependencies = [ [[package]] name = "rustls-pemfile" -version = "0.2.1" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5eebeaeb360c87bfb72e84abdb3447159c0eaececf1bef2aecd65a8be949d1c9" +checksum = "e7522c9de787ff061458fe9a829dc790a3f5b22dc571694fc5883f448b94d9a9" dependencies = [ "base64", ] @@ -4061,7 +3854,7 @@ dependencies = [ "libc", "log", "memchr", - "nix 0.18.0", + "nix", "scopeguard", "unicode-segmentation", "unicode-width", @@ -4202,6 +3995,9 @@ name = "semver" version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d65bd28f48be7196d222d95b9243287f48d27aca604e08497513019ff0502cc4" +dependencies = [ + "serde", +] [[package]] name = "semver-parser" @@ -4299,7 +4095,7 @@ version = "1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e182d6ec6f05393cc0e5ed1bf81ad6db3a8feedf8ee515ecdd369809bcce8082" dependencies = [ - "darling 0.13.4", + "darling", "proc-macro2", "quote", "syn", @@ -4446,16 +4242,30 @@ dependencies = [ "winapi", ] +[[package]] +name = "soup2" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2b4d76501d8ba387cf0fefbe055c3e0a59891d09f0f995ae4e4b16f6b60f3c0" +dependencies = [ + "bitflags", + "gio", + "glib", + "libc", + "once_cell", + "soup2-sys", +] + [[package]] name = "soup2-sys" -version = "0.1.0" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f056675eda9a7417163e5f742bb119e8e1d385edd2ada8f7031a7230a3ec10a" +checksum = "009ef427103fcb17f802871647a7fa6c60cbb654b4c4e4c0ac60a31c5f6dc9cf" dependencies = [ "bitflags", - "gio-sys 0.14.0", - "glib-sys 0.14.0", - "gobject-sys 0.14.0", + "gio-sys", + "glib-sys", + "gobject-sys", "libc", "system-deps 5.0.0", ] @@ -4582,43 +4392,19 @@ dependencies = [ "quote", ] -[[package]] -name = "strsim" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6446ced80d6c486436db5c078dde11a9f73d42b57fb273121e160b84f63d894c" - [[package]] name = "strsim" version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" -[[package]] -name = "strum" -version = "0.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aaf86bbcfd1fa9670b7a129f64fc0c9fcbbfe4f1bc4210e9e98fe71ffc12cde2" - [[package]] name = "strum" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f7ac893c7d471c8a21f31cfe213ec4f6d9afeed25537c772e08ef3f005f8729e" dependencies = [ - "strum_macros 0.22.0", -] - -[[package]] -name = "strum_macros" -version = "0.21.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d06aaeeee809dbc59eb4556183dd927df67db1540de5be8d3ec0b6636358a5ec" -dependencies = [ - "heck 0.3.3", - "proc-macro2", - "quote", - "syn", + "strum_macros", ] [[package]] @@ -4659,24 +4445,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "system-deps" -version = "3.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "480c269f870722b3b08d2f13053ce0c2ab722839f472863c3e2d61ff3a1c2fa6" -dependencies = [ - "anyhow", - "cfg-expr 0.8.1", - "heck 0.3.3", - "itertools", - "pkg-config", - "strum 0.21.0", - "strum_macros 0.21.1", - "thiserror", - "toml", - "version-compare 0.0.11", -] - [[package]] name = "system-deps" version = "5.0.0" @@ -4750,7 +4518,7 @@ dependencies = [ "tantivy-query-grammar", "tempfile", "thiserror", - "uuid", + "uuid 0.8.2", "winapi", ] @@ -4801,9 +4569,9 @@ dependencies = [ [[package]] name = "tao" -version = "0.7.0" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b6a3359088d4c4735a13f933202f4ecd91f5991b41a8eb757f2449c044ce925" +checksum = "3bfe4c782f0543f667ee3b732d026b2f1c64af39cd52e726dec1ea1f2d8f6b80" dependencies = [ "bitflags", "cairo-rs", @@ -4819,25 +4587,31 @@ dependencies = [ "gdkx11-sys", "gio", "glib", - "glib-sys 0.15.10", + "glib-sys", "gtk", + "image", "instant", + "jni 0.19.0", "lazy_static", "libappindicator", "libc", "log", "ndk", - "ndk-glue", + "ndk-context", "ndk-sys", "objc", + "once_cell", "parking_lot 0.11.2", + "paste", + "png 0.17.5", "raw-window-handle", "scopeguard", "serde", "tao-core-video-sys", "unicode-segmentation", - "windows 0.30.0", - "windows_macros", + "uuid 0.8.2", + "windows 0.37.0", + "windows-implement", "x11-dl", ] @@ -4866,17 +4640,15 @@ dependencies = [ [[package]] name = "tauri" -version = "1.0.0-rc.6" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6d514a34b3f9a07e2002d95e1371b42a446636e3d571a59e974b21d6acf3007" +checksum = "8e1ebb60bb8f246d5351ff9b7728fdfa7a6eba72baa722ab6021d553981caba1" dependencies = [ "anyhow", "attohttpc", "base64", - "bincode", - "cfg_aliases", + "cocoa", "dirs-next 2.0.0", - "either", "embed_plist", "flate2", "futures", @@ -4884,11 +4656,12 @@ dependencies = [ "glib", "glob", "gtk", + "heck 0.4.0", "http", "ignore", - "memchr", "minisign-verify", "notify-rust", + "objc", "once_cell", "open", "os_info", @@ -4912,21 +4685,26 @@ dependencies = [ "tauri-utils", "tempfile", "thiserror", + "time 0.3.9", "tokio", "url", - "uuid", - "windows 0.30.0", + "uuid 1.1.2", + "webkit2gtk", + "webview2-com", + "windows 0.37.0", "zip", ] [[package]] name = "tauri-build" -version = "1.0.0-rc.5" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ede6462a4692e2fd5030497ad576264dc90eea5fa337182492e77291d45fc78b" +checksum = "e7b26eb3523e962b90012fedbfb744ca153d9be85e7981e00737e106d5323941" dependencies = [ "anyhow", "cargo_toml", + "heck 0.4.0", + "semver 1.0.7", "serde_json", "tauri-utils", "winres", @@ -4934,9 +4712,9 @@ dependencies = [ [[package]] name = "tauri-codegen" -version = "1.0.0-rc.4" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54193ebdb010e85824301ce5f0940742b680d66376203f6425d549d2f32ad499" +checksum = "9468c5189188c820ef605dfe4937c768cb2918e9460c8093dc4ee2cbd717b262" dependencies = [ "base64", "brotli", @@ -4945,20 +4723,21 @@ dependencies = [ "proc-macro2", "quote", "regex", + "semver 1.0.7", "serde", "serde_json", "sha2", "tauri-utils", "thiserror", - "uuid", + "uuid 1.1.2", "walkdir", ] [[package]] name = "tauri-macros" -version = "1.0.0-rc.4" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8b867ef4703cb8e50f128ee3c941895d94c01e0ebd9007a7b45ecca52516dbf" +checksum = "40e3ffddd7a274fc7baaa260888c971a0d95d2ef403aa16600c878b8b1c00ffe" dependencies = [ "heck 0.4.0", "proc-macro2", @@ -4970,9 +4749,9 @@ dependencies = [ [[package]] name = "tauri-runtime" -version = "0.3.4" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b289ac8eafc52a36425fcaf3de23febd0b2606d3cce2b39ac412a1817fae537" +checksum = "fb7dc4db360bb40584187b6cb7834da736ce4ef2ab0914e2be98014444fa9920" dependencies = [ "gtk", "http", @@ -4982,32 +4761,35 @@ dependencies = [ "serde_json", "tauri-utils", "thiserror", - "uuid", + "uuid 1.1.2", "webview2-com", - "windows 0.30.0", + "windows 0.37.0", ] [[package]] name = "tauri-runtime-wry" -version = "0.3.5" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a8bf16e0476a8249aa2c75e7b49ec4c059be5fb27d9f6514e30ed327e8e9fa2" +checksum = "c876fb3a6e7c6fe2ac466b2a6ecd83658528844b4df0914558a9bc1501b31cf3" dependencies = [ + "cocoa", "gtk", + "percent-encoding", "rand 0.8.5", "tauri-runtime", "tauri-utils", - "uuid", + "uuid 1.1.2", + "webkit2gtk", "webview2-com", - "windows 0.30.0", + "windows 0.37.0", "wry", ] [[package]] name = "tauri-utils" -version = "1.0.0-rc.4" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a67fcf8fdd1340de4e75c01966fceab03057a8b0e97864eb39a21e420deed503" +checksum = "727145cb55b8897fa9f2bcea4fad31dc39394703d037c9669b40f2d1c0c2d7f3" dependencies = [ "brotli", "ctor", @@ -5016,13 +4798,14 @@ dependencies = [ "html5ever", "json-patch", "kuchiki", + "memchr", "phf 0.10.1", "proc-macro2", "quote", + "semver 1.0.7", "serde", "serde_json", "serde_with", - "serialize-to-javascript", "thiserror", "url", "walkdir", @@ -5244,9 +5027,9 @@ checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" [[package]] name = "tokio" -version = "1.17.0" +version = "1.19.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2af73ac49756f3f7c01172e34a23e5d0216f6c32333757c2c61feb2bbff5a5ee" +checksum = "c51a52ed6686dd62c320f9b89299e9dfb46f730c7a48e635c19f21d116cb1439" dependencies = [ "bytes", "libc", @@ -5332,7 +5115,7 @@ dependencies = [ "pin-project", "tracing", "tracing-futures", - "uuid", + "uuid 0.8.2", ] [[package]] @@ -5597,6 +5380,15 @@ dependencies = [ "serde", ] +[[package]] +name = "uuid" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd6469f4314d5f1ffec476e05f17cc9a78bc7a27a6a857842170bdf8d6f98d2f" +dependencies = [ + "getrandom 0.2.6", +] + [[package]] name = "valuable" version = "0.1.0" @@ -5627,6 +5419,26 @@ version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +[[package]] +name = "vswhom" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be979b7f07507105799e854203b470ff7c78a1639e330a58f183b5fea574608b" +dependencies = [ + "libc", + "vswhom-sys", +] + +[[package]] +name = "vswhom-sys" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22025f6d8eb903ebf920ea6933b70b1e495be37e2cb4099e62c80454aaf57c39" +dependencies = [ + "cc", + "libc", +] + [[package]] name = "wait-timeout" version = "0.2.0" @@ -5749,48 +5561,49 @@ dependencies = [ [[package]] name = "webkit2gtk" -version = "0.17.1" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2cbd39499e917de9dad36eb11c09f665eb984d432638ae7971feed98eb96df88" +checksum = "29952969fb5e10fe834a52eb29ad0814ccdfd8387159b0933edf1344a1c9cdcc" dependencies = [ "bitflags", "cairo-rs", "gdk", "gdk-sys", "gio", - "gio-sys 0.15.10", + "gio-sys", "glib", - "glib-sys 0.15.10", - "gobject-sys 0.15.10", + "glib-sys", + "gobject-sys", "gtk", "gtk-sys", "javascriptcore-rs", "libc", "once_cell", + "soup2", "webkit2gtk-sys", ] [[package]] name = "webkit2gtk-sys" -version = "0.17.0" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddcce6f1e0fc7715d651dba29875741509f5fc12f4e2976907272a74405f2b01" +checksum = "4d76ca6ecc47aeba01ec61e480139dda143796abcae6f83bcddf50d6b5b1dcf3" dependencies = [ "atk-sys", "bitflags", "cairo-sys-rs", "gdk-pixbuf-sys", "gdk-sys", - "gio-sys 0.15.10", - "glib-sys 0.15.10", - "gobject-sys 0.15.10", + "gio-sys", + "glib-sys", + "gobject-sys", "gtk-sys", "javascriptcore-rs-sys", "libc", "pango-sys", "pkg-config", "soup2-sys", - "system-deps 5.0.0", + "system-deps 6.0.2", ] [[package]] @@ -5833,21 +5646,21 @@ dependencies = [ [[package]] name = "webview2-com" -version = "0.13.0" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb8e90ac2d9ce39cdb70017aaec641be09fbdd702b7b332b9896d053eb469524" +checksum = "a489a9420acabb3c2ed0434b6f71f6b56b9485ec32665a28dec1ee186d716e0f" dependencies = [ "webview2-com-macros", "webview2-com-sys", - "windows 0.30.0", - "windows_macros", + "windows 0.37.0", + "windows-implement", ] [[package]] name = "webview2-com-macros" -version = "0.5.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1515c6c82fcee93f6edaacc72c8e233dbe4ff3ca569dce1901dfc36c404a3e99" +checksum = "eaebe196c01691db62e9e4ca52c5ef1e4fd837dcae27dae3ada599b5a8fd05ac" dependencies = [ "proc-macro2", "quote", @@ -5856,27 +5669,18 @@ dependencies = [ [[package]] name = "webview2-com-sys" -version = "0.13.0" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92160310b3322397e4ff8a8285a7429d73a07a68fda44ee80879605b93e53f76" +checksum = "0258c53ee9adc0a4f8ba1c8c317588f7a58c7048a55b621d469ba75ab3709ca1" dependencies = [ "regex", "serde", "serde_json", "thiserror", - "windows 0.30.0", + "windows 0.37.0", "windows-bindgen", ] -[[package]] -name = "wepoll-ffi" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d743fdedc5c64377b5fc2bc036b01c7fd642205a0d96356034ae3404d49eb7fb" -dependencies = [ - "cc", -] - [[package]] name = "which" version = "4.2.5" @@ -5939,40 +5743,44 @@ dependencies = [ [[package]] name = "windows" -version = "0.30.0" +version = "0.37.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b749ebd2304aa012c5992d11a25d07b406bdbe5f79d371cb7a918ce501a19eb0" +checksum = "57b543186b344cc61c85b5aab0d2e3adf4e0f99bc076eff9aa5927bcc0b8a647" dependencies = [ - "windows_aarch64_msvc 0.30.0", - "windows_i686_gnu 0.30.0", - "windows_i686_msvc 0.30.0", - "windows_x86_64_gnu 0.30.0", - "windows_x86_64_msvc 0.30.0", + "windows-implement", + "windows_aarch64_msvc 0.37.0", + "windows_i686_gnu 0.37.0", + "windows_i686_msvc 0.37.0", + "windows_x86_64_gnu 0.37.0", + "windows_x86_64_msvc 0.37.0", ] [[package]] -name = "windows" -version = "0.35.0" +name = "windows-bindgen" +version = "0.37.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08746b4b7ac95f708b3cccceb97b7f9a21a8916dd47fc99b0e6aaf7208f26fd7" +checksum = "0bed7be31ade0af08fec9b5343e9edcc005d22b1f11859b8a59b24797f5858e8" dependencies = [ - "windows_aarch64_msvc 0.35.0", - "windows_i686_gnu 0.35.0", - "windows_i686_msvc 0.35.0", - "windows_x86_64_gnu 0.35.0", - "windows_x86_64_msvc 0.35.0", + "windows-metadata", + "windows-tokens", ] [[package]] -name = "windows-bindgen" -version = "0.30.0" +name = "windows-implement" +version = "0.37.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "944c545fcae9dd66488308f8b69aa3ba34f53714416ecfcdcbbfa4b6821e27c6" +checksum = "67a1062e555f7d9d66fd1130ed4f7c6ec41a47529ee0850cd0e926d95b26bb14" dependencies = [ - "windows_quote", - "windows_reader", + "syn", + "windows-tokens", ] +[[package]] +name = "windows-metadata" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f33f2b90a6664e369c41ab5ff262d06f048fc9685d9bf8a0e99a47750bb0463" + [[package]] name = "windows-sys" version = "0.34.0" @@ -5987,10 +5795,23 @@ dependencies = [ ] [[package]] -name = "windows_aarch64_msvc" -version = "0.30.0" +name = "windows-sys" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea04155a16a59f9eab786fe12a4a450e75cdb175f9e0d80da1e17db09f55b8d2" +dependencies = [ + "windows_aarch64_msvc 0.36.1", + "windows_i686_gnu 0.36.1", + "windows_i686_msvc 0.36.1", + "windows_x86_64_gnu 0.36.1", + "windows_x86_64_msvc 0.36.1", +] + +[[package]] +name = "windows-tokens" +version = "0.37.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29277a4435d642f775f63c7d1faeb927adba532886ce0287bd985bffb16b6bca" +checksum = "3263d25f1170419995b78ff10c06b949e8a986c35c208dc24333c64753a87169" [[package]] name = "windows_aarch64_msvc" @@ -6000,19 +5821,15 @@ checksum = "17cffbe740121affb56fad0fc0e421804adf0ae00891205213b5cecd30db881d" [[package]] name = "windows_aarch64_msvc" -version = "0.35.0" +version = "0.36.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db3bc5134e8ce0da5d64dcec3529793f1d33aee5a51fc2b4662e0f881dd463e6" +checksum = "9bb8c3fd39ade2d67e9874ac4f3db21f0d710bee00fe7cab16949ec184eeaa47" [[package]] -name = "windows_gen" -version = "0.30.0" +name = "windows_aarch64_msvc" +version = "0.37.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30dff4d91d22520628bb94b66f2bb313cb16a09a515a32320a84a1b449bc94c0" -dependencies = [ - "windows_quote", - "windows_reader", -] +checksum = "2623277cb2d1c216ba3b578c0f3cf9cdebeddb6e66b1b218bb33596ea7769c3a" [[package]] name = "windows_i686_gnu" @@ -6022,21 +5839,21 @@ checksum = "c0866510a3eca9aed73a077490bbbf03e5eaac4e1fd70849d89539e5830501fd" [[package]] name = "windows_i686_gnu" -version = "0.30.0" +version = "0.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1145e1989da93956c68d1864f32fb97c8f561a8f89a5125f6a2b7ea75524e4b8" +checksum = "2564fde759adb79129d9b4f54be42b32c89970c18ebf93124ca8870a498688ed" [[package]] name = "windows_i686_gnu" -version = "0.34.0" +version = "0.36.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2564fde759adb79129d9b4f54be42b32c89970c18ebf93124ca8870a498688ed" +checksum = "180e6ccf01daf4c426b846dfc66db1fc518f074baa793aa7d9b9aaeffad6a3b6" [[package]] name = "windows_i686_gnu" -version = "0.35.0" +version = "0.37.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0343a6f35bf43a07b009b8591b78b10ea03de86b06f48e28c96206cd0f453b50" +checksum = "d3925fd0b0b804730d44d4b6278c50f9699703ec49bcd628020f46f4ba07d9e1" [[package]] name = "windows_i686_msvc" @@ -6044,12 +5861,6 @@ version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bf0ffed56b7e9369a29078d2ab3aaeceea48eb58999d2cff3aa2494a275b95c6" -[[package]] -name = "windows_i686_msvc" -version = "0.30.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4a09e3a0d4753b73019db171c1339cd4362c8c44baf1bcea336235e955954a6" - [[package]] name = "windows_i686_msvc" version = "0.34.0" @@ -6058,33 +5869,15 @@ checksum = "9cd9d32ba70453522332c14d38814bceeb747d80b3958676007acadd7e166956" [[package]] name = "windows_i686_msvc" -version = "0.35.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1acdcbf4ca63d8e7a501be86fee744347186275ec2754d129ddeab7a1e3a02e4" - -[[package]] -name = "windows_macros" -version = "0.30.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62ae44ab917e9005fe710d99d52d227ca0164b10a09be90649142cc3fab825d3" -dependencies = [ - "syn", - "windows_gen", - "windows_quote", - "windows_reader", -] - -[[package]] -name = "windows_quote" -version = "0.30.0" +version = "0.36.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71f02c51a77e6248c1206aaa920802c32d50a05205e229b118d7f3afd3036667" +checksum = "e2e7917148b2812d1eeafaeb22a97e4813dfa60a3f8f78ebe204bcc88f12f024" [[package]] -name = "windows_reader" -version = "0.30.0" +name = "windows_i686_msvc" +version = "0.37.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e44e6df0da993cda589c5ac852272fbb2a0ead67a031a017dd3eac11528a2d72" +checksum = "ce907ac74fe331b524c1298683efbf598bb031bc84d5e274db2083696d07c57c" [[package]] name = "windows_x86_64_gnu" @@ -6094,21 +5887,21 @@ checksum = "384a173630588044205a2993b6864a2f56e5a8c1e7668c07b93ec18cf4888dc4" [[package]] name = "windows_x86_64_gnu" -version = "0.30.0" +version = "0.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ca64fcb0220d58db4c119e050e7af03c69e6f4f415ef69ec1773d9aab422d5a" +checksum = "cfce6deae227ee8d356d19effc141a509cc503dfd1f850622ec4b0f84428e1f4" [[package]] name = "windows_x86_64_gnu" -version = "0.34.0" +version = "0.36.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfce6deae227ee8d356d19effc141a509cc503dfd1f850622ec4b0f84428e1f4" +checksum = "4dcd171b8776c41b97521e5da127a2d86ad280114807d0b2ab1e462bc764d9e1" [[package]] name = "windows_x86_64_gnu" -version = "0.35.0" +version = "0.37.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "893c0924c5a990ec73cd2264d1c0cba1773a929e1a3f5dbccffd769f8c4edebb" +checksum = "2babfba0828f2e6b32457d5341427dcbb577ceef556273229959ac23a10af33d" [[package]] name = "windows_x86_64_msvc" @@ -6118,21 +5911,30 @@ checksum = "9bd8f062d8ca5446358159d79a90be12c543b3a965c847c8f3eedf14b321d399" [[package]] name = "windows_x86_64_msvc" -version = "0.30.0" +version = "0.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08cabc9f0066848fef4bc6a1c1668e6efce38b661d2aeec75d18d8617eebb5f1" +checksum = "d19538ccc21819d01deaf88d6a17eae6596a12e9aafdbb97916fb49896d89de9" [[package]] name = "windows_x86_64_msvc" -version = "0.34.0" +version = "0.36.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d19538ccc21819d01deaf88d6a17eae6596a12e9aafdbb97916fb49896d89de9" +checksum = "c811ca4a8c853ef420abd8592ba53ddbbac90410fab6903b3e79972a631f7680" [[package]] name = "windows_x86_64_msvc" -version = "0.35.0" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4dd6dc7df2d84cf7b33822ed5b86318fb1781948e9663bacd047fc9dd52259d" + +[[package]] +name = "winreg" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a29bd61f32889c822c99a8fdf2e93378bd2fae4d7efd2693fab09fcaaf7eff4b" +checksum = "80d0f4e272c85def139476380b12f9ac60926689dd2e01d4923222f40580869d" +dependencies = [ + "winapi", +] [[package]] name = "winres" @@ -6149,16 +5951,16 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "007a0353840b23e0c6dc73e5b962ff58ed7f6bc9ceff3ce7fe6fbad8d496edf4" dependencies = [ - "strum 0.22.0", + "strum", "windows 0.24.0", "xml-rs", ] [[package]] name = "wry" -version = "0.14.0" +version = "0.18.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fd09ffc86ecea0a0d5f50cc8e4a8121a1bfc0b0825a160f86ac39e86979344c" +checksum = "26b1ba327c7dd4292f46bf8e6ba8e6ec2db4443b2973c9d304a359d95e0aa856" dependencies = [ "block", "cocoa", @@ -6168,7 +5970,7 @@ dependencies = [ "glib", "gtk", "http", - "jni", + "jni 0.18.0", "libc", "log", "objc", @@ -6182,8 +5984,8 @@ dependencies = [ "webkit2gtk", "webkit2gtk-sys", "webview2-com", - "windows 0.30.0", - "windows_macros", + "windows 0.37.0", + "windows-implement", ] [[package]] @@ -6222,67 +6024,6 @@ version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d2d7d3948613f75c98fd9328cfdcc45acc4d360655289d0a7d4ec931392200a3" -[[package]] -name = "zbus" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bb86f3d4592e26a48b2719742aec94f8ae6238ebde20d98183ee185d1275e9a" -dependencies = [ - "async-broadcast", - "async-channel", - "async-executor", - "async-io", - "async-lock", - "async-recursion", - "async-task", - "async-trait", - "byteorder", - "derivative", - "enumflags2", - "event-listener", - "futures-core", - "futures-sink", - "futures-util", - "hex", - "lazy_static", - "nix 0.23.1", - "once_cell", - "ordered-stream", - "rand 0.8.5", - "serde", - "serde_repr", - "sha1", - "static_assertions", - "winapi", - "zbus_macros", - "zbus_names", - "zvariant", -] - -[[package]] -name = "zbus_macros" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36823cc10fddc3c6b19f048903262dacaf8274170e9a255784bdd8b4570a8040" -dependencies = [ - "proc-macro-crate 1.1.3", - "proc-macro2", - "quote", - "regex", - "syn", -] - -[[package]] -name = "zbus_names" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45dfcdcf87b71dad505d30cc27b1b7b88a64b6d1c435648f48f9dbc1fdc4b7e1" -dependencies = [ - "serde", - "static_assertions", - "zvariant", -] - [[package]] name = "zeroize" version = "1.5.4" @@ -6328,29 +6069,3 @@ dependencies = [ "cc", "libc", ] - -[[package]] -name = "zvariant" -version = "3.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49ea5dc38b2058fae6a5b79009388143dadce1e91c26a67f984a0fc0381c8033" -dependencies = [ - "byteorder", - "enumflags2", - "libc", - "serde", - "static_assertions", - "zvariant_derive", -] - -[[package]] -name = "zvariant_derive" -version = "3.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c2cecc5a61c2a053f7f653a24cd15b3b0195d7f7ddb5042c837fb32e161fb7a" -dependencies = [ - "proc-macro-crate 1.1.3", - "proc-macro2", - "quote", - "syn", -] diff --git a/cli/Cargo.toml b/cli/Cargo.toml index 91ba2f4b9..36f4290e5 100644 --- a/cli/Cargo.toml +++ b/cli/Cargo.toml @@ -6,10 +6,10 @@ license = "MIT" name = "atomic-cli" readme = "README.md" repository = "https://github.com/joepio/atomic-data-rust" -version = "0.32.0" +version = "0.32.1" [dependencies] -atomic_lib = {version = "0.32.0", path = "../lib", features = ["config", "rdf"]} +atomic_lib = {version = "0.32.1", path = "../lib", features = ["config", "rdf"]} clap = {version = "3", features = ["cargo"]} colored = "2" dirs = "4" diff --git a/cli/src/new.rs b/cli/src/new.rs index 61ea25c2d..ce025f47a 100644 --- a/cli/src/new.rs +++ b/cli/src/new.rs @@ -40,8 +40,8 @@ pub fn new(context: &mut Context) -> AtomicResult<()> { /// Lets the user enter an instance of an Atomic Class through multiple prompts. /// Adds the Resource to the store, and writes to disk. /// Returns the Resource, its URL and its Bookmark. -fn prompt_instance<'a>( - context: &'a Context, +fn prompt_instance( + context: &Context, class: &Class, preferred_shortname: Option, ) -> CLIResult<(Resource, Option)> { @@ -224,7 +224,7 @@ fn prompt_field( let string_items = string.split(' '); let mut urls: Vec = Vec::new(); let length = string_items.clone().count(); - for item in string_items.into_iter() { + for item in string_items { let mapping_match = context .mapping .lock() diff --git a/cli/src/print.rs b/cli/src/print.rs index c69acf547..095033fee 100644 --- a/cli/src/print.rs +++ b/cli/src/print.rs @@ -48,7 +48,7 @@ pub fn pretty_print_resource(resource: &Resource, store: &impl Storelike) -> Ato output.push_str(&*format!( "{0: <15}{1: <10} \n", prop_shortname.blue().bold(), - val.to_string() + val )); } Ok(output) diff --git a/desktop/Cargo.toml b/desktop/Cargo.toml index 4907a4f06..a294822ed 100644 --- a/desktop/Cargo.toml +++ b/desktop/Cargo.toml @@ -6,12 +6,12 @@ edition = "2021" license = "MIT" name = "atomic-server-tauri" repository = "https://github.com/joepio/atomic-data-rust" -version = "0.32.0" +version = "0.32.1" [build-dependencies] [build-dependencies.tauri-build] features = [] -version = "1.0.0-rc.5" +version = "1" [dependencies] actix-rt = "2.6.0" @@ -21,7 +21,7 @@ serde_json = "1.0" # We don't need HTTPS for desktop usage default-features = false path = "../server" -version = "0.32.0" +version = "0.32.1" [dependencies.serde] features = ["derive"] @@ -29,7 +29,7 @@ version = "1.0" [dependencies.tauri] features = ["api-all", "system-tray", "updater"] -version = "1.0.0-rc.6" +version = "1" [features] custom-protocol = ["tauri/custom-protocol"] diff --git a/desktop/README.md b/desktop/README.md index 581af9f54..db2052afa 100644 --- a/desktop/README.md +++ b/desktop/README.md @@ -6,7 +6,7 @@ Desktop release for Atomic-Server. ```sh # install tauri cargo install tauri-cli -# make sure that `atomic-data-browser` is running on port 8080 (see ## Running in development) +# make sure that `atomic-data-browser` is running on port 3000 (see ## Running in development) # run dev server cargo tauri dev # build an installer for your OS @@ -15,7 +15,7 @@ cargo tauri build ## Running in development -By default, the dev server points to `localhost:8080`, which is the server for [`atomic-data-browser`](https://github.com/atomicdata-dev/atomic-data-browser/), which you'll probably want to run. +By default, the dev server points to `localhost:3000`, which is the server for [`atomic-data-browser`](https://github.com/atomicdata-dev/atomic-data-browser/), which you'll probably want to run. If you only want to work on the _server side_ of things, you can remove `devPath` in `tauri.conf.json`. ## Limitations diff --git a/desktop/src/menu.rs b/desktop/src/menu.rs index 18730deef..5fcd43f55 100644 --- a/desktop/src/menu.rs +++ b/desktop/src/menu.rs @@ -28,11 +28,10 @@ impl AddDefaultSubmenus for Menu { fn add_default_app_submenu(self, app_name: &str) -> Menu { let about = AboutMetadata::new() .authors(vec!["Joep Meindertsma".into()]) - .copyright("MIT License".into()) - .license("MIT".into()) - .website("https://atomicdata.dev".into()) - .website_label("atomicdata.dev".into()); - + .copyright("MIT License") + .license("MIT") + .website("https://atomicdata.dev") + .website_label("atomicdata.dev"); #[cfg(target_os = "macos")] return self.add_submenu(Submenu::new( app_name.to_string(), diff --git a/desktop/tauri.conf.json b/desktop/tauri.conf.json index 11694a6ce..7f5229128 100644 --- a/desktop/tauri.conf.json +++ b/desktop/tauri.conf.json @@ -1,11 +1,11 @@ { "package": { "productName": "Atomic Server", - "version": "0.31.1" + "version": "0.32.1" }, "build": { "distDir": "dist", - "devPath": "http://localhost:8080", + "devPath": "http://localhost:3000", "beforeDevCommand": "", "beforeBuildCommand": "" }, @@ -28,13 +28,11 @@ "shortDescription": "Atomic Server is a graph database with an easy to use GUI. Model, share and create Atomic Data.", "longDescription": "Atomic Server is a graph database with an easy to use GUI. Model, share and create Atomic Data.", "deb": { - "depends": [], - "useBootstrapper": false + "depends": [] }, "macOS": { "frameworks": [], "minimumSystemVersion": "", - "useBootstrapper": false, "exceptionDomain": "", "signingIdentity": null, "entitlements": null diff --git a/dockerfile b/dockerfile index 15fd9d660..5a5805ae4 100644 --- a/dockerfile +++ b/dockerfile @@ -1,32 +1,15 @@ -FROM rust as planner - +FROM frolvlad/alpine-rust as builder WORKDIR /app -RUN cargo install cargo-chef COPY . . -RUN cargo chef prepare --recipe-path recipe.json - -FROM rust as cacher -WORKDIR /app -RUN cargo install cargo-chef -COPY --from=planner /app/recipe.json recipe.json -RUN cargo chef cook --release --recipe-path recipe.json --manifest-path server/Cargo.toml - -FROM rust as builder -WORKDIR /app -COPY . . -# Copy over the cached dependencies -COPY --from=cacher /app/target target -COPY --from=cacher $CARGO_HOME $CARGO_HOME +RUN apk add --no-cache openssl +RUN apk add --no-cache openssl-dev RUN cargo build --release --bin atomic-server # We only need a small runtime for this step, but make sure glibc is installed FROM frolvlad/alpine-glibc as runtime - -COPY ./server/ /server -WORKDIR /server -COPY --from=builder /app/target/release/atomic-server /server/atomic-server-bin +COPY --chmod=0755 --from=builder /app/target/release/atomic-server /atomic-server-bin ENV ATOMIC_STORE_PATH="/atomic-storage/db" ENV ATOMIC_CONFIG_PATH="/atomic-storage/config.toml" ENV ATOMIC_PORT="80" ENV ATOMIC_PORT_HTTPS="433" -ENTRYPOINT ["/server/atomic-server-bin"] +ENTRYPOINT ["/atomic-server-bin"] diff --git a/lib/Cargo.toml b/lib/Cargo.toml index f9c54273d..9402d021e 100644 --- a/lib/Cargo.toml +++ b/lib/Cargo.toml @@ -6,7 +6,7 @@ license = "MIT" name = "atomic_lib" readme = "README.md" repository = "https://github.com/joepio/atomic-data-rust" -version = "0.32.0" +version = "0.32.1" # Enables benchmarks to use the features, such as Db [[bench]] diff --git a/lib/defaults/default_store.json b/lib/defaults/default_store.json index 9c337a228..ad7812027 100644 --- a/lib/defaults/default_store.json +++ b/lib/defaults/default_store.json @@ -936,5 +936,14 @@ "https://atomicdata.dev/properties/description": "This abstract Agent represents all potential users or visitors. If you want a Resource to be publicly available or editable, use this in your [read](https://atomicdata.dev/properties/read) or [write](https://atomicdata.dev/properties/read) property.", "https://atomicdata.dev/properties/parent": "https://atomicdata.dev/agents", "https://atomicdata.dev/properties/shortname": "public-agent" + }, + { + "@id": "https://atomicdata.dev/datatypes/uri", + "https://atomicdata.dev/properties/description": "A Uniform Resource Identifier (URI) is a unique sequence of characters that identifies a logical or physical resource used by web technologies", + "https://atomicdata.dev/properties/isA": [ + "https://atomicdata.dev/classes/Datatype" + ], + "https://atomicdata.dev/properties/parent": "https://atomicdata.dev/datatypes", + "https://atomicdata.dev/properties/shortname": "uri" } ] diff --git a/lib/src/parse.rs b/lib/src/parse.rs index 0bca6cc68..8ab4c859e 100644 --- a/lib/src/parse.rs +++ b/lib/src/parse.rs @@ -146,7 +146,13 @@ pub fn parse_json_ad_map_to_propvals( let propvals = parse_json_ad_map_to_propvals(map, store)?; newvec.push(propvals) } - _err => return Err("Found non-string item in resource array.".into()), + _err => { + return Err(("Found \"".to_owned() + + &_err.to_string() + + "\" in resource array: " + + &prop) + .into()) + } } } Value::ResourceArray(newvec) @@ -259,6 +265,7 @@ mod test { #[test] fn parse_nested_resource_map_roundtrip() { let store = crate::Store::init().unwrap(); + store.populate().unwrap(); let json = r#"{ "@id": "https://atomicdata.dev/thingWithNestedMaps", @@ -280,6 +287,7 @@ mod test { #[test] fn parse_nested_resource_array() { let store = crate::Store::init().unwrap(); + store.populate().unwrap(); let json = r#"{ "@id": "https://atomicdata.dev/classes", diff --git a/lib/src/plugins/invite.rs b/lib/src/plugins/invite.rs index 8c4529b29..dbade2721 100644 --- a/lib/src/plugins/invite.rs +++ b/lib/src/plugins/invite.rs @@ -29,7 +29,7 @@ pub fn construct_invite_redirect( (Some(public_key), None) => { let new_agent = Agent::new_from_public_key(store, &public_key)?; // Create an agent if there is none - match store.get_resource(&public_key) { + match store.get_resource(&new_agent.subject) { Ok(_found) => {} Err(_) => { new_agent.to_resource()?.save_locally(store)?; @@ -130,27 +130,8 @@ pub fn add_rights( // Get the Resource that the user is being invited to let mut target = store.get_resource(target)?; let right = if write { urls::WRITE } else { urls::READ }; - let mut rights_vector: Vec = match target.get(right) { - // Rights have been set, add to the list - Ok(val) => { - let vec = val - .to_subjects(None) - .map_err(|_| "Invalid value for rights")?; - // If the vector already contains the agent, throw an error; - for a in &vec { - if a == agent { - return Ok(()); - } - } - vec - } - // No rights have been set, create a new vector - Err(_) => Vec::new(), - }; - - rights_vector.push(agent.to_string()); - target.set_propval(right.into(), rights_vector.into(), store)?; + target.push_propval(right, agent.into(), true)?; target .save_locally(store) .map_err(|e| format!("Unable to save updated target resource. {}", e))?; diff --git a/lib/src/values.rs b/lib/src/values.rs index 09bce189f..b81fccddf 100644 --- a/lib/src/values.rs +++ b/lib/src/values.rs @@ -23,7 +23,7 @@ pub enum Value { /// Unix Epoch datetime in milliseconds Timestamp(i64), NestedResource(SubResource), - Resource(Resource), + Resource(Box), Boolean(bool), Unsupported(UnsupportedValue), } @@ -310,7 +310,7 @@ impl From for Value { impl From for Value { fn from(val: Resource) -> Self { - Value::Resource(val) + Value::Resource(Box::new(val)) } } diff --git a/server/Cargo.toml b/server/Cargo.toml index 9fdad73a9..805e46c5d 100644 --- a/server/Cargo.toml +++ b/server/Cargo.toml @@ -6,7 +6,7 @@ edition = "2021" license = "MIT" name = "atomic-server" repository = "https://github.com/joepio/atomic-data-rust" -version = "0.32.0" +version = "0.32.1" [[bin]] name = "atomic-server" path = "src/bin.rs" @@ -15,11 +15,11 @@ path = "src/bin.rs" static-files = "0.2" [dependencies] -actix = "=0.12.0" +actix = ">= 0.12, < 0.14" actix-cors = "0.6" actix-files = "0.6" actix-multipart = "0.4" -actix-web-actors = "=4.0.0" +actix-web-actors = "4" chrono = "0.4" dialoguer = "0.10" directories = ">= 2, < 5" @@ -29,7 +29,7 @@ promptly = "0.3" regex = "1" rio_api = "0.7" rio_turtle = "0.7" -rustls-pemfile = "0.2" +rustls-pemfile = "1" sanitize-filename = "0.3" serde_json = "1" static-files = "0.2" @@ -63,7 +63,7 @@ version = "0.23" [dependencies.actix-web] features = ["rustls"] -version = "4.0" +version = "4" [dependencies.actix-web-static-files] version = "4" @@ -71,11 +71,11 @@ version = "4" [dependencies.atomic_lib] features = ["config", "db", "rdf"] path = "../lib" -version = "0.32.0" +version = "0.32.1" [dependencies.clap] features = ["derive", "env", "cargo"] -version = "3.1.18" +version = "3" [dependencies.rustls] optional = true diff --git a/server/app_assets/dist/index.js b/server/app_assets/dist/index.js index fcba54880..15503b76e 100644 --- a/server/app_assets/dist/index.js +++ b/server/app_assets/dist/index.js @@ -1,5 +1,4 @@ -var Gk = Object.defineProperty, Yk = Object.defineProperties; var Xk = Object.getOwnPropertyDescriptors; var sl = Object.getOwnPropertySymbols; var uy = Object.prototype.hasOwnProperty, sy = Object.prototype.propertyIsEnumerable; var oy = (e, t, r) => t in e ? Gk(e, t, { enumerable: !0, configurable: !0, writable: !0, value: r }) : e[t] = r, de = (e, t) => { for (var r in t || (t = {})) uy.call(t, r) && oy(e, r, t[r]); if (sl) for (var r of sl(t)) sy.call(t, r) && oy(e, r, t[r]); return e }, He = (e, t) => Yk(e, Xk(t)); var rn = (e, t) => { var r = {}; for (var n in e) uy.call(e, n) && t.indexOf(n) < 0 && (r[n] = e[n]); if (e != null && sl) for (var n of sl(e)) t.indexOf(n) < 0 && sy.call(e, n) && (r[n] = e[n]); return r }; var Qk = (e, t) => () => (t || e((t = { exports: {} }).exports, t), t.exports); var hG = Qk((mG, _a) => { - const Jk = function () { const t = document.createElement("link").relList; if (t && t.supports && t.supports("modulepreload")) return; for (const i of document.querySelectorAll('link[rel="modulepreload"]')) n(i); new MutationObserver(i => { for (const a of i) if (a.type === "childList") for (const o of a.addedNodes) o.tagName === "LINK" && o.rel === "modulepreload" && n(o) }).observe(document, { childList: !0, subtree: !0 }); function r(i) { const a = {}; return i.integrity && (a.integrity = i.integrity), i.referrerpolicy && (a.referrerPolicy = i.referrerpolicy), i.crossorigin === "use-credentials" ? a.credentials = "include" : i.crossorigin === "anonymous" ? a.credentials = "omit" : a.credentials = "same-origin", a } function n(i) { if (i.ep) return; i.ep = !0; const a = r(i); fetch(i.href, a) } }; Jk(); var Mr = typeof globalThis != "undefined" ? globalThis : typeof window != "undefined" ? window : typeof global != "undefined" ? global : typeof self != "undefined" ? self : {}; function Zk(e) { return e && e.__esModule && Object.prototype.hasOwnProperty.call(e, "default") ? e.default : e } function r0(e) { if (e.__esModule) return e; var t = Object.defineProperty({}, "__esModule", { value: !0 }); return Object.keys(e).forEach(function (r) { var n = Object.getOwnPropertyDescriptor(e, r); Object.defineProperty(t, r, n.get ? n : { enumerable: !0, get: function () { return e[r] } }) }), t } var E = { exports: {} }, Ne = {};/** +var Gk=Object.defineProperty,Yk=Object.defineProperties;var Xk=Object.getOwnPropertyDescriptors;var sl=Object.getOwnPropertySymbols;var uy=Object.prototype.hasOwnProperty,sy=Object.prototype.propertyIsEnumerable;var oy=(e,t,r)=>t in e?Gk(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,de=(e,t)=>{for(var r in t||(t={}))uy.call(t,r)&&oy(e,r,t[r]);if(sl)for(var r of sl(t))sy.call(t,r)&&oy(e,r,t[r]);return e},He=(e,t)=>Yk(e,Xk(t));var rn=(e,t)=>{var r={};for(var n in e)uy.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(e!=null&&sl)for(var n of sl(e))t.indexOf(n)<0&&sy.call(e,n)&&(r[n]=e[n]);return r};var Qk=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var hG=Qk((mG,_a)=>{const Jk=function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))n(i);new MutationObserver(i=>{for(const a of i)if(a.type==="childList")for(const o of a.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&n(o)}).observe(document,{childList:!0,subtree:!0});function r(i){const a={};return i.integrity&&(a.integrity=i.integrity),i.referrerpolicy&&(a.referrerPolicy=i.referrerpolicy),i.crossorigin==="use-credentials"?a.credentials="include":i.crossorigin==="anonymous"?a.credentials="omit":a.credentials="same-origin",a}function n(i){if(i.ep)return;i.ep=!0;const a=r(i);fetch(i.href,a)}};Jk();var Mr=typeof globalThis!="undefined"?globalThis:typeof window!="undefined"?window:typeof global!="undefined"?global:typeof self!="undefined"?self:{};function Zk(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function r0(e){if(e.__esModule)return e;var t=Object.defineProperty({},"__esModule",{value:!0});return Object.keys(e).forEach(function(r){var n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:function(){return e[r]}})}),t}var E={exports:{}},Ne={};/** * @license React * react.production.min.js * @@ -7,7 +6,7 @@ var Gk = Object.defineProperty, Yk = Object.defineProperties; var Xk = Object.ge * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. - */var Ds = Symbol.for("react.element"), e5 = Symbol.for("react.portal"), t5 = Symbol.for("react.fragment"), r5 = Symbol.for("react.strict_mode"), n5 = Symbol.for("react.profiler"), i5 = Symbol.for("react.provider"), a5 = Symbol.for("react.context"), o5 = Symbol.for("react.forward_ref"), u5 = Symbol.for("react.suspense"), s5 = Symbol.for("react.memo"), l5 = Symbol.for("react.lazy"), ly = Symbol.iterator; function c5(e) { return e === null || typeof e != "object" ? null : (e = ly && e[ly] || e["@@iterator"], typeof e == "function" ? e : null) } var ww = { isMounted: function () { return !1 }, enqueueForceUpdate: function () { }, enqueueReplaceState: function () { }, enqueueSetState: function () { } }, Sw = Object.assign, _w = {}; function Uo(e, t, r) { this.props = e, this.context = t, this.refs = _w, this.updater = r || ww } Uo.prototype.isReactComponent = {}; Uo.prototype.setState = function (e, t) { if (typeof e != "object" && typeof e != "function" && e != null) throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables."); this.updater.enqueueSetState(this, e, t, "setState") }; Uo.prototype.forceUpdate = function (e) { this.updater.enqueueForceUpdate(this, e, "forceUpdate") }; function xw() { } xw.prototype = Uo.prototype; function n0(e, t, r) { this.props = e, this.context = t, this.refs = _w, this.updater = r || ww } var i0 = n0.prototype = new xw; i0.constructor = n0; Sw(i0, Uo.prototype); i0.isPureReactComponent = !0; var cy = Array.isArray, kw = Object.prototype.hasOwnProperty, a0 = { current: null }, Cw = { key: !0, ref: !0, __self: !0, __source: !0 }; function Ew(e, t, r) { var n, i = {}, a = null, o = null; if (t != null) for (n in t.ref !== void 0 && (o = t.ref), t.key !== void 0 && (a = "" + t.key), t) kw.call(t, n) && !Cw.hasOwnProperty(n) && (i[n] = t[n]); var u = arguments.length - 2; if (u === 1) i.children = r; else if (1 < u) { for (var s = Array(u), l = 0; l < u; l++)s[l] = arguments[l + 2]; i.children = s } if (e && e.defaultProps) for (n in u = e.defaultProps, u) i[n] === void 0 && (i[n] = u[n]); return { $$typeof: Ds, type: e, key: a, ref: o, props: i, _owner: a0.current } } function d5(e, t) { return { $$typeof: Ds, type: e.type, key: t, ref: e.ref, props: e.props, _owner: e._owner } } function o0(e) { return typeof e == "object" && e !== null && e.$$typeof === Ds } function f5(e) { var t = { "=": "=0", ":": "=2" }; return "$" + e.replace(/[=:]/g, function (r) { return t[r] }) } var dy = /\/+/g; function fh(e, t) { return typeof e == "object" && e !== null && e.key != null ? f5("" + e.key) : t.toString(36) } function nc(e, t, r, n, i) { var a = typeof e; (a === "undefined" || a === "boolean") && (e = null); var o = !1; if (e === null) o = !0; else switch (a) { case "string": case "number": o = !0; break; case "object": switch (e.$$typeof) { case Ds: case e5: o = !0 } }if (o) return o = e, i = i(o), e = n === "" ? "." + fh(o, 0) : n, cy(i) ? (r = "", e != null && (r = e.replace(dy, "$&/") + "/"), nc(i, t, r, "", function (l) { return l })) : i != null && (o0(i) && (i = d5(i, r + (!i.key || o && o.key === i.key ? "" : ("" + i.key).replace(dy, "$&/") + "/") + e)), t.push(i)), 1; if (o = 0, n = n === "" ? "." : n + ":", cy(e)) for (var u = 0; u < e.length; u++) { a = e[u]; var s = n + fh(a, u); o += nc(a, t, r, s, i) } else if (s = c5(e), typeof s == "function") for (e = s.call(e), u = 0; !(a = e.next()).done;)a = a.value, s = n + fh(a, u++), o += nc(a, t, r, s, i); else if (a === "object") throw t = String(e), Error("Objects are not valid as a React child (found: " + (t === "[object Object]" ? "object with keys {" + Object.keys(e).join(", ") + "}" : t) + "). If you meant to render a collection of children, use an array instead."); return o } function ll(e, t, r) { if (e == null) return e; var n = [], i = 0; return nc(e, n, "", "", function (a) { return t.call(r, a, i++) }), n } function h5(e) { if (e._status === -1) { var t = e._result; t = t(), t.then(function (r) { (e._status === 0 || e._status === -1) && (e._status = 1, e._result = r) }, function (r) { (e._status === 0 || e._status === -1) && (e._status = 2, e._result = r) }), e._status === -1 && (e._status = 0, e._result = t) } if (e._status === 1) return e._result.default; throw e._result } var wr = { current: null }, ic = { transition: null }, p5 = { ReactCurrentDispatcher: wr, ReactCurrentBatchConfig: ic, ReactCurrentOwner: a0 }; Ne.Children = { map: ll, forEach: function (e, t, r) { ll(e, function () { t.apply(this, arguments) }, r) }, count: function (e) { var t = 0; return ll(e, function () { t++ }), t }, toArray: function (e) { return ll(e, function (t) { return t }) || [] }, only: function (e) { if (!o0(e)) throw Error("React.Children.only expected to receive a single React element child."); return e } }; Ne.Component = Uo; Ne.Fragment = t5; Ne.Profiler = n5; Ne.PureComponent = n0; Ne.StrictMode = r5; Ne.Suspense = u5; Ne.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = p5; Ne.cloneElement = function (e, t, r) { if (e == null) throw Error("React.cloneElement(...): The argument must be a React element, but you passed " + e + "."); var n = Sw({}, e.props), i = e.key, a = e.ref, o = e._owner; if (t != null) { if (t.ref !== void 0 && (a = t.ref, o = a0.current), t.key !== void 0 && (i = "" + t.key), e.type && e.type.defaultProps) var u = e.type.defaultProps; for (s in t) kw.call(t, s) && !Cw.hasOwnProperty(s) && (n[s] = t[s] === void 0 && u !== void 0 ? u[s] : t[s]) } var s = arguments.length - 2; if (s === 1) n.children = r; else if (1 < s) { u = Array(s); for (var l = 0; l < s; l++)u[l] = arguments[l + 2]; n.children = u } return { $$typeof: Ds, type: e.type, key: i, ref: a, props: n, _owner: o } }; Ne.createContext = function (e) { return e = { $$typeof: a5, _currentValue: e, _currentValue2: e, _threadCount: 0, Provider: null, Consumer: null, _defaultValue: null, _globalName: null }, e.Provider = { $$typeof: i5, _context: e }, e.Consumer = e }; Ne.createElement = Ew; Ne.createFactory = function (e) { var t = Ew.bind(null, e); return t.type = e, t }; Ne.createRef = function () { return { current: null } }; Ne.forwardRef = function (e) { return { $$typeof: o5, render: e } }; Ne.isValidElement = o0; Ne.lazy = function (e) { return { $$typeof: l5, _payload: { _status: -1, _result: e }, _init: h5 } }; Ne.memo = function (e, t) { return { $$typeof: s5, type: e, compare: t === void 0 ? null : t } }; Ne.startTransition = function (e) { var t = ic.transition; ic.transition = {}; try { e() } finally { ic.transition = t } }; Ne.unstable_act = function () { throw Error("act(...) is not supported in production builds of React.") }; Ne.useCallback = function (e, t) { return wr.current.useCallback(e, t) }; Ne.useContext = function (e) { return wr.current.useContext(e) }; Ne.useDebugValue = function () { }; Ne.useDeferredValue = function (e) { return wr.current.useDeferredValue(e) }; Ne.useEffect = function (e, t) { return wr.current.useEffect(e, t) }; Ne.useId = function () { return wr.current.useId() }; Ne.useImperativeHandle = function (e, t, r) { return wr.current.useImperativeHandle(e, t, r) }; Ne.useInsertionEffect = function (e, t) { return wr.current.useInsertionEffect(e, t) }; Ne.useLayoutEffect = function (e, t) { return wr.current.useLayoutEffect(e, t) }; Ne.useMemo = function (e, t) { return wr.current.useMemo(e, t) }; Ne.useReducer = function (e, t, r) { return wr.current.useReducer(e, t, r) }; Ne.useRef = function (e) { return wr.current.useRef(e) }; Ne.useState = function (e) { return wr.current.useState(e) }; Ne.useSyncExternalStore = function (e, t, r) { return wr.current.useSyncExternalStore(e, t, r) }; Ne.useTransition = function () { return wr.current.useTransition() }; Ne.version = "18.1.0"; E.exports = Ne; var me = E.exports, pa = { exports: {} }, Xr = {}, Tw = { exports: {} }, Pw = {};/** + */var Ds=Symbol.for("react.element"),e5=Symbol.for("react.portal"),t5=Symbol.for("react.fragment"),r5=Symbol.for("react.strict_mode"),n5=Symbol.for("react.profiler"),i5=Symbol.for("react.provider"),a5=Symbol.for("react.context"),o5=Symbol.for("react.forward_ref"),u5=Symbol.for("react.suspense"),s5=Symbol.for("react.memo"),l5=Symbol.for("react.lazy"),ly=Symbol.iterator;function c5(e){return e===null||typeof e!="object"?null:(e=ly&&e[ly]||e["@@iterator"],typeof e=="function"?e:null)}var ww={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},Sw=Object.assign,_w={};function Uo(e,t,r){this.props=e,this.context=t,this.refs=_w,this.updater=r||ww}Uo.prototype.isReactComponent={};Uo.prototype.setState=function(e,t){if(typeof e!="object"&&typeof e!="function"&&e!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")};Uo.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function xw(){}xw.prototype=Uo.prototype;function n0(e,t,r){this.props=e,this.context=t,this.refs=_w,this.updater=r||ww}var i0=n0.prototype=new xw;i0.constructor=n0;Sw(i0,Uo.prototype);i0.isPureReactComponent=!0;var cy=Array.isArray,kw=Object.prototype.hasOwnProperty,a0={current:null},Cw={key:!0,ref:!0,__self:!0,__source:!0};function Ew(e,t,r){var n,i={},a=null,o=null;if(t!=null)for(n in t.ref!==void 0&&(o=t.ref),t.key!==void 0&&(a=""+t.key),t)kw.call(t,n)&&!Cw.hasOwnProperty(n)&&(i[n]=t[n]);var u=arguments.length-2;if(u===1)i.children=r;else if(1>> 1, Q = B[S]; if (0 < i(Q, W)) B[S] = W, B[Z] = Q, Z = S; else break e } } function r(B) { return B.length === 0 ? null : B[0] } function n(B) { if (B.length === 0) return null; var W = B[0], Z = B.pop(); if (Z !== W) { B[0] = Z; e: for (var S = 0, Q = B.length, re = Q >>> 1; S < re;) { var ie = 2 * (S + 1) - 1, se = B[ie], H = ie + 1, le = B[H]; if (0 > i(se, Z)) H < Q && 0 > i(le, se) ? (B[S] = le, B[H] = Z, S = H) : (B[S] = se, B[ie] = Z, S = ie); else if (H < Q && 0 > i(le, Z)) B[S] = le, B[H] = Z, S = H; else break e } } return W } function i(B, W) { var Z = B.sortIndex - W.sortIndex; return Z !== 0 ? Z : B.id - W.id } if (typeof performance == "object" && typeof performance.now == "function") { var a = performance; e.unstable_now = function () { return a.now() } } else { var o = Date, u = o.now(); e.unstable_now = function () { return o.now() - u } } var s = [], l = [], d = 1, m = null, p = 3, b = !1, v = !1, C = !1, P = typeof setTimeout == "function" ? setTimeout : null, y = typeof clearTimeout == "function" ? clearTimeout : null, w = typeof setImmediate != "undefined" ? setImmediate : null; typeof navigator != "undefined" && navigator.scheduling !== void 0 && navigator.scheduling.isInputPending !== void 0 && navigator.scheduling.isInputPending.bind(navigator.scheduling); function k(B) { for (var W = r(l); W !== null;) { if (W.callback === null) n(l); else if (W.startTime <= B) n(l), W.sortIndex = W.expirationTime, t(s, W); else break; W = r(l) } } function c(B) { if (C = !1, k(B), !v) if (r(s) !== null) v = !0, O(g); else { var W = r(l); W !== null && V(c, W.startTime - B) } } function g(B, W) { v = !1, C && (C = !1, y(T), T = -1), b = !0; var Z = p; try { for (k(W), m = r(s); m !== null && (!(m.expirationTime > W) || B && !L());) { var S = m.callback; if (typeof S == "function") { m.callback = null, p = m.priorityLevel; var Q = S(m.expirationTime <= W); W = e.unstable_now(), typeof Q == "function" ? m.callback = Q : m === r(s) && n(s), k(W) } else n(s); m = r(s) } if (m !== null) var re = !0; else { var ie = r(l); ie !== null && V(c, ie.startTime - W), re = !1 } return re } finally { m = null, p = Z, b = !1 } } var h = !1, _ = null, T = -1, D = 5, R = -1; function L() { return !(e.unstable_now() - R < D) } function U() { if (_ !== null) { var B = e.unstable_now(); R = B; var W = !0; try { W = _(!0, B) } finally { W ? F() : (h = !1, _ = null) } } else h = !1 } var F; if (typeof w == "function") F = function () { w(U) }; else if (typeof MessageChannel != "undefined") { var M = new MessageChannel, j = M.port2; M.port1.onmessage = U, F = function () { j.postMessage(null) } } else F = function () { P(U, 0) }; function O(B) { _ = B, h || (h = !0, F()) } function V(B, W) { T = P(function () { B(e.unstable_now()) }, W) } e.unstable_IdlePriority = 5, e.unstable_ImmediatePriority = 1, e.unstable_LowPriority = 4, e.unstable_NormalPriority = 3, e.unstable_Profiling = null, e.unstable_UserBlockingPriority = 2, e.unstable_cancelCallback = function (B) { B.callback = null }, e.unstable_continueExecution = function () { v || b || (v = !0, O(g)) }, e.unstable_forceFrameRate = function (B) { 0 > B || 125 < B ? console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported") : D = 0 < B ? Math.floor(1e3 / B) : 5 }, e.unstable_getCurrentPriorityLevel = function () { return p }, e.unstable_getFirstCallbackNode = function () { return r(s) }, e.unstable_next = function (B) { switch (p) { case 1: case 2: case 3: var W = 3; break; default: W = p }var Z = p; p = W; try { return B() } finally { p = Z } }, e.unstable_pauseExecution = function () { }, e.unstable_requestPaint = function () { }, e.unstable_runWithPriority = function (B, W) { switch (B) { case 1: case 2: case 3: case 4: case 5: break; default: B = 3 }var Z = p; p = B; try { return W() } finally { p = Z } }, e.unstable_scheduleCallback = function (B, W, Z) { var S = e.unstable_now(); switch (typeof Z == "object" && Z !== null ? (Z = Z.delay, Z = typeof Z == "number" && 0 < Z ? S + Z : S) : Z = S, B) { case 1: var Q = -1; break; case 2: Q = 250; break; case 5: Q = 1073741823; break; case 4: Q = 1e4; break; default: Q = 5e3 }return Q = Z + Q, B = { id: d++, callback: W, priorityLevel: B, startTime: Z, expirationTime: Q, sortIndex: -1 }, Z > S ? (B.sortIndex = Z, t(l, B), r(s) === null && B === r(l) && (C ? (y(T), T = -1) : C = !0, V(c, Z - S))) : (B.sortIndex = Q, t(s, B), v || b || (v = !0, O(g))), B }, e.unstable_shouldYield = L, e.unstable_wrapCallback = function (B) { var W = p; return function () { var Z = p; p = W; try { return B.apply(this, arguments) } finally { p = Z } } } })(Pw); Tw.exports = Pw;/** + */(function(e){function t(F,W){var Z=F.length;F.push(W);e:for(;0>>1,Q=F[S];if(0>>1;Si(se,Z))Hi(le,se)?(F[S]=le,F[H]=Z,S=H):(F[S]=se,F[ie]=Z,S=ie);else if(Hi(le,Z))F[S]=le,F[H]=Z,S=H;else break e}}return W}function i(F,W){var Z=F.sortIndex-W.sortIndex;return Z!==0?Z:F.id-W.id}if(typeof performance=="object"&&typeof performance.now=="function"){var a=performance;e.unstable_now=function(){return a.now()}}else{var o=Date,u=o.now();e.unstable_now=function(){return o.now()-u}}var s=[],l=[],d=1,m=null,p=3,w=!1,v=!1,C=!1,P=typeof setTimeout=="function"?setTimeout:null,y=typeof clearTimeout=="function"?clearTimeout:null,b=typeof setImmediate!="undefined"?setImmediate:null;typeof navigator!="undefined"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function k(F){for(var W=r(l);W!==null;){if(W.callback===null)n(l);else if(W.startTime<=F)n(l),W.sortIndex=W.expirationTime,t(s,W);else break;W=r(l)}}function c(F){if(C=!1,k(F),!v)if(r(s)!==null)v=!0,O(g);else{var W=r(l);W!==null&&V(c,W.startTime-F)}}function g(F,W){v=!1,C&&(C=!1,y(T),T=-1),w=!0;var Z=p;try{for(k(W),m=r(s);m!==null&&(!(m.expirationTime>W)||F&&!I());){var S=m.callback;if(typeof S=="function"){m.callback=null,p=m.priorityLevel;var Q=S(m.expirationTime<=W);W=e.unstable_now(),typeof Q=="function"?m.callback=Q:m===r(s)&&n(s),k(W)}else n(s);m=r(s)}if(m!==null)var re=!0;else{var ie=r(l);ie!==null&&V(c,ie.startTime-W),re=!1}return re}finally{m=null,p=Z,w=!1}}var h=!1,_=null,T=-1,D=5,A=-1;function I(){return!(e.unstable_now()-AF||125S?(F.sortIndex=Z,t(l,F),r(s)===null&&F===r(l)&&(C?(y(T),T=-1):C=!0,V(c,Z-S))):(F.sortIndex=Q,t(s,F),v||w||(v=!0,O(g))),F},e.unstable_shouldYield=I,e.unstable_wrapCallback=function(F){var W=p;return function(){var Z=p;p=W;try{return F.apply(this,arguments)}finally{p=Z}}}})(Pw);Tw.exports=Pw;/** * @license React * react-dom.production.min.js * @@ -23,32 +22,14 @@ var Gk = Object.defineProperty, Yk = Object.defineProperties; var Xk = Object.ge * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. - */var Aw = E.exports, qr = Tw.exports; function ae(e) { for (var t = "https://reactjs.org/docs/error-decoder.html?invariant=" + e, r = 1; r < arguments.length; r++)t += "&args[]=" + encodeURIComponent(arguments[r]); return "Minified React error #" + e + "; visit " + t + " for the full message or use the non-minified dev environment for full errors and additional helpful warnings." } var Rw = new Set, ns = {}; function ja(e, t) { Oo(e, t), Oo(e + "Capture", t) } function Oo(e, t) { for (ns[e] = t, e = 0; e < t.length; e++)Rw.add(t[e]) } var ti = !(typeof window == "undefined" || typeof window.document == "undefined" || typeof window.document.createElement == "undefined"), Xp = Object.prototype.hasOwnProperty, m5 = /^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/, fy = {}, hy = {}; function g5(e) { return Xp.call(hy, e) ? !0 : Xp.call(fy, e) ? !1 : m5.test(e) ? hy[e] = !0 : (fy[e] = !0, !1) } function v5(e, t, r, n) { if (r !== null && r.type === 0) return !1; switch (typeof t) { case "function": case "symbol": return !0; case "boolean": return n ? !1 : r !== null ? !r.acceptsBooleans : (e = e.toLowerCase().slice(0, 5), e !== "data-" && e !== "aria-"); default: return !1 } } function y5(e, t, r, n) { if (t === null || typeof t == "undefined" || v5(e, t, r, n)) return !0; if (n) return !1; if (r !== null) switch (r.type) { case 3: return !t; case 4: return t === !1; case 5: return isNaN(t); case 6: return isNaN(t) || 1 > t }return !1 } function Sr(e, t, r, n, i, a, o) { this.acceptsBooleans = t === 2 || t === 3 || t === 4, this.attributeName = n, this.attributeNamespace = i, this.mustUseProperty = r, this.propertyName = e, this.type = t, this.sanitizeURL = a, this.removeEmptyString = o } var sr = {}; "children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function (e) { sr[e] = new Sr(e, 0, !1, e, null, !1, !1) });[["acceptCharset", "accept-charset"], ["className", "class"], ["htmlFor", "for"], ["httpEquiv", "http-equiv"]].forEach(function (e) { var t = e[0]; sr[t] = new Sr(t, 1, !1, e[1], null, !1, !1) });["contentEditable", "draggable", "spellCheck", "value"].forEach(function (e) { sr[e] = new Sr(e, 2, !1, e.toLowerCase(), null, !1, !1) });["autoReverse", "externalResourcesRequired", "focusable", "preserveAlpha"].forEach(function (e) { sr[e] = new Sr(e, 2, !1, e, null, !1, !1) }); "allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function (e) { sr[e] = new Sr(e, 3, !1, e.toLowerCase(), null, !1, !1) });["checked", "multiple", "muted", "selected"].forEach(function (e) { sr[e] = new Sr(e, 3, !0, e, null, !1, !1) });["capture", "download"].forEach(function (e) { sr[e] = new Sr(e, 4, !1, e, null, !1, !1) });["cols", "rows", "size", "span"].forEach(function (e) { sr[e] = new Sr(e, 6, !1, e, null, !1, !1) });["rowSpan", "start"].forEach(function (e) { sr[e] = new Sr(e, 5, !1, e.toLowerCase(), null, !1, !1) }); var u0 = /[\-:]([a-z])/g; function s0(e) { return e[1].toUpperCase() } "accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function (e) { var t = e.replace(u0, s0); sr[t] = new Sr(t, 1, !1, e, null, !1, !1) }); "xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function (e) { var t = e.replace(u0, s0); sr[t] = new Sr(t, 1, !1, e, "http://www.w3.org/1999/xlink", !1, !1) });["xml:base", "xml:lang", "xml:space"].forEach(function (e) { var t = e.replace(u0, s0); sr[t] = new Sr(t, 1, !1, e, "http://www.w3.org/XML/1998/namespace", !1, !1) });["tabIndex", "crossOrigin"].forEach(function (e) { sr[e] = new Sr(e, 1, !1, e.toLowerCase(), null, !1, !1) }); sr.xlinkHref = new Sr("xlinkHref", 1, !1, "xlink:href", "http://www.w3.org/1999/xlink", !0, !1);["src", "href", "action", "formAction"].forEach(function (e) { sr[e] = new Sr(e, 1, !1, e.toLowerCase(), null, !0, !0) }); function l0(e, t, r, n) { var i = sr.hasOwnProperty(t) ? sr[t] : null; (i !== null ? i.type !== 0 : n || !(2 < t.length) || t[0] !== "o" && t[0] !== "O" || t[1] !== "n" && t[1] !== "N") && (y5(t, r, i, n) && (r = null), n || i === null ? g5(t) && (r === null ? e.removeAttribute(t) : e.setAttribute(t, "" + r)) : i.mustUseProperty ? e[i.propertyName] = r === null ? i.type === 3 ? !1 : "" : r : (t = i.attributeName, n = i.attributeNamespace, r === null ? e.removeAttribute(t) : (i = i.type, r = i === 3 || i === 4 && r === !0 ? "" : "" + r, n ? e.setAttributeNS(n, t, r) : e.setAttribute(t, r)))) } var li = Aw.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED, cl = Symbol.for("react.element"), io = Symbol.for("react.portal"), ao = Symbol.for("react.fragment"), c0 = Symbol.for("react.strict_mode"), Qp = Symbol.for("react.profiler"), Ow = Symbol.for("react.provider"), $w = Symbol.for("react.context"), d0 = Symbol.for("react.forward_ref"), Jp = Symbol.for("react.suspense"), Zp = Symbol.for("react.suspense_list"), f0 = Symbol.for("react.memo"), ki = Symbol.for("react.lazy"), Lw = Symbol.for("react.offscreen"), py = Symbol.iterator; function su(e) { return e === null || typeof e != "object" ? null : (e = py && e[py] || e["@@iterator"], typeof e == "function" ? e : null) } var Ct = Object.assign, hh; function Au(e) { - if (hh === void 0) try { throw Error() } catch (r) { var t = r.stack.trim().match(/\n( *(at )?)/); hh = t && t[1] || "" } return ` -`+ hh + e - } var ph = !1; function mh(e, t) { - if (!e || ph) return ""; ph = !0; var r = Error.prepareStackTrace; Error.prepareStackTrace = void 0; try { if (t) if (t = function () { throw Error() }, Object.defineProperty(t.prototype, "props", { set: function () { throw Error() } }), typeof Reflect == "object" && Reflect.construct) { try { Reflect.construct(t, []) } catch (l) { var n = l } Reflect.construct(e, [], t) } else { try { t.call() } catch (l) { n = l } e.call(t.prototype) } else { try { throw Error() } catch (l) { n = l } e() } } catch (l) { - if (l && n && typeof l.stack == "string") { - for (var i = l.stack.split(` -`), a = n.stack.split(` -`), o = i.length - 1, u = a.length - 1; 1 <= o && 0 <= u && i[o] !== a[u];)u--; for (; 1 <= o && 0 <= u; o--, u--)if (i[o] !== a[u]) { - if (o !== 1 || u !== 1) do if (o--, u--, 0 > u || i[o] !== a[u]) { - var s = ` -`+ i[o].replace(" at new ", " at "); return e.displayName && s.includes("") && (s = s.replace("", e.displayName)), s - } while (1 <= o && 0 <= u); break - } - } - } finally { ph = !1, Error.prepareStackTrace = r } return (e = e ? e.displayName || e.name : "") ? Au(e) : "" - } function b5(e) { switch (e.tag) { case 5: return Au(e.type); case 16: return Au("Lazy"); case 13: return Au("Suspense"); case 19: return Au("SuspenseList"); case 0: case 2: case 15: return e = mh(e.type, !1), e; case 11: return e = mh(e.type.render, !1), e; case 1: return e = mh(e.type, !0), e; default: return "" } } function em(e) { if (e == null) return null; if (typeof e == "function") return e.displayName || e.name || null; if (typeof e == "string") return e; switch (e) { case ao: return "Fragment"; case io: return "Portal"; case Qp: return "Profiler"; case c0: return "StrictMode"; case Jp: return "Suspense"; case Zp: return "SuspenseList" }if (typeof e == "object") switch (e.$$typeof) { case $w: return (e.displayName || "Context") + ".Consumer"; case Ow: return (e._context.displayName || "Context") + ".Provider"; case d0: var t = e.render; return e = e.displayName, e || (e = t.displayName || t.name || "", e = e !== "" ? "ForwardRef(" + e + ")" : "ForwardRef"), e; case f0: return t = e.displayName || null, t !== null ? t : em(e.type) || "Memo"; case ki: t = e._payload, e = e._init; try { return em(e(t)) } catch { } }return null } function w5(e) { var t = e.type; switch (e.tag) { case 24: return "Cache"; case 9: return (t.displayName || "Context") + ".Consumer"; case 10: return (t._context.displayName || "Context") + ".Provider"; case 18: return "DehydratedFragment"; case 11: return e = t.render, e = e.displayName || e.name || "", t.displayName || (e !== "" ? "ForwardRef(" + e + ")" : "ForwardRef"); case 7: return "Fragment"; case 5: return t; case 4: return "Portal"; case 3: return "Root"; case 6: return "Text"; case 16: return em(t); case 8: return t === c0 ? "StrictMode" : "Mode"; case 22: return "Offscreen"; case 12: return "Profiler"; case 21: return "Scope"; case 13: return "Suspense"; case 19: return "SuspenseList"; case 25: return "TracingMarker"; case 1: case 0: case 17: case 2: case 14: case 15: if (typeof t == "function") return t.displayName || t.name || null; if (typeof t == "string") return t }return null } function Ui(e) { switch (typeof e) { case "boolean": case "number": case "string": case "undefined": return e; case "object": return e; default: return "" } } function Iw(e) { var t = e.type; return (e = e.nodeName) && e.toLowerCase() === "input" && (t === "checkbox" || t === "radio") } function S5(e) { var t = Iw(e) ? "checked" : "value", r = Object.getOwnPropertyDescriptor(e.constructor.prototype, t), n = "" + e[t]; if (!e.hasOwnProperty(t) && typeof r != "undefined" && typeof r.get == "function" && typeof r.set == "function") { var i = r.get, a = r.set; return Object.defineProperty(e, t, { configurable: !0, get: function () { return i.call(this) }, set: function (o) { n = "" + o, a.call(this, o) } }), Object.defineProperty(e, t, { enumerable: r.enumerable }), { getValue: function () { return n }, setValue: function (o) { n = "" + o }, stopTracking: function () { e._valueTracker = null, delete e[t] } } } } function dl(e) { e._valueTracker || (e._valueTracker = S5(e)) } function Mw(e) { if (!e) return !1; var t = e._valueTracker; if (!t) return !0; var r = t.getValue(), n = ""; return e && (n = Iw(e) ? e.checked ? "true" : "false" : e.value), e = n, e !== r ? (t.setValue(e), !0) : !1 } function Lc(e) { if (e = e || (typeof document != "undefined" ? document : void 0), typeof e == "undefined") return null; try { return e.activeElement || e.body } catch { return e.body } } function tm(e, t) { var r = t.checked; return Ct({}, t, { defaultChecked: void 0, defaultValue: void 0, value: void 0, checked: r != null ? r : e._wrapperState.initialChecked }) } function my(e, t) { var r = t.defaultValue == null ? "" : t.defaultValue, n = t.checked != null ? t.checked : t.defaultChecked; r = Ui(t.value != null ? t.value : r), e._wrapperState = { initialChecked: n, initialValue: r, controlled: t.type === "checkbox" || t.type === "radio" ? t.checked != null : t.value != null } } function Dw(e, t) { t = t.checked, t != null && l0(e, "checked", t, !1) } function rm(e, t) { Dw(e, t); var r = Ui(t.value), n = t.type; if (r != null) n === "number" ? (r === 0 && e.value === "" || e.value != r) && (e.value = "" + r) : e.value !== "" + r && (e.value = "" + r); else if (n === "submit" || n === "reset") { e.removeAttribute("value"); return } t.hasOwnProperty("value") ? nm(e, t.type, r) : t.hasOwnProperty("defaultValue") && nm(e, t.type, Ui(t.defaultValue)), t.checked == null && t.defaultChecked != null && (e.defaultChecked = !!t.defaultChecked) } function gy(e, t, r) { if (t.hasOwnProperty("value") || t.hasOwnProperty("defaultValue")) { var n = t.type; if (!(n !== "submit" && n !== "reset" || t.value !== void 0 && t.value !== null)) return; t = "" + e._wrapperState.initialValue, r || t === e.value || (e.value = t), e.defaultValue = t } r = e.name, r !== "" && (e.name = ""), e.defaultChecked = !!e._wrapperState.initialChecked, r !== "" && (e.name = r) } function nm(e, t, r) { (t !== "number" || Lc(e.ownerDocument) !== e) && (r == null ? e.defaultValue = "" + e._wrapperState.initialValue : e.defaultValue !== "" + r && (e.defaultValue = "" + r)) } var Ru = Array.isArray; function _o(e, t, r, n) { if (e = e.options, t) { t = {}; for (var i = 0; i < r.length; i++)t["$" + r[i]] = !0; for (r = 0; r < e.length; r++)i = t.hasOwnProperty("$" + e[r].value), e[r].selected !== i && (e[r].selected = i), i && n && (e[r].defaultSelected = !0) } else { for (r = "" + Ui(r), t = null, i = 0; i < e.length; i++) { if (e[i].value === r) { e[i].selected = !0, n && (e[i].defaultSelected = !0); return } t !== null || e[i].disabled || (t = e[i]) } t !== null && (t.selected = !0) } } function im(e, t) { if (t.dangerouslySetInnerHTML != null) throw Error(ae(91)); return Ct({}, t, { value: void 0, defaultValue: void 0, children: "" + e._wrapperState.initialValue }) } function vy(e, t) { var r = t.value; if (r == null) { if (r = t.children, t = t.defaultValue, r != null) { if (t != null) throw Error(ae(92)); if (Ru(r)) { if (1 < r.length) throw Error(ae(93)); r = r[0] } t = r } t == null && (t = ""), r = t } e._wrapperState = { initialValue: Ui(r) } } function jw(e, t) { var r = Ui(t.value), n = Ui(t.defaultValue); r != null && (r = "" + r, r !== e.value && (e.value = r), t.defaultValue == null && e.defaultValue !== r && (e.defaultValue = r)), n != null && (e.defaultValue = "" + n) } function yy(e) { var t = e.textContent; t === e._wrapperState.initialValue && t !== "" && t !== null && (e.value = t) } function zw(e) { switch (e) { case "svg": return "http://www.w3.org/2000/svg"; case "math": return "http://www.w3.org/1998/Math/MathML"; default: return "http://www.w3.org/1999/xhtml" } } function am(e, t) { return e == null || e === "http://www.w3.org/1999/xhtml" ? zw(t) : e === "http://www.w3.org/2000/svg" && t === "foreignObject" ? "http://www.w3.org/1999/xhtml" : e } var fl, Nw = function (e) { return typeof MSApp != "undefined" && MSApp.execUnsafeLocalFunction ? function (t, r, n, i) { MSApp.execUnsafeLocalFunction(function () { return e(t, r, n, i) }) } : e }(function (e, t) { if (e.namespaceURI !== "http://www.w3.org/2000/svg" || "innerHTML" in e) e.innerHTML = t; else { for (fl = fl || document.createElement("div"), fl.innerHTML = "" + t.valueOf().toString() + "", t = fl.firstChild; e.firstChild;)e.removeChild(e.firstChild); for (; t.firstChild;)e.appendChild(t.firstChild) } }); function is(e, t) { if (t) { var r = e.firstChild; if (r && r === e.lastChild && r.nodeType === 3) { r.nodeValue = t; return } } e.textContent = t } var Du = { animationIterationCount: !0, aspectRatio: !0, borderImageOutset: !0, borderImageSlice: !0, borderImageWidth: !0, boxFlex: !0, boxFlexGroup: !0, boxOrdinalGroup: !0, columnCount: !0, columns: !0, flex: !0, flexGrow: !0, flexPositive: !0, flexShrink: !0, flexNegative: !0, flexOrder: !0, gridArea: !0, gridRow: !0, gridRowEnd: !0, gridRowSpan: !0, gridRowStart: !0, gridColumn: !0, gridColumnEnd: !0, gridColumnSpan: !0, gridColumnStart: !0, fontWeight: !0, lineClamp: !0, lineHeight: !0, opacity: !0, order: !0, orphans: !0, tabSize: !0, widows: !0, zIndex: !0, zoom: !0, fillOpacity: !0, floodOpacity: !0, stopOpacity: !0, strokeDasharray: !0, strokeDashoffset: !0, strokeMiterlimit: !0, strokeOpacity: !0, strokeWidth: !0 }, _5 = ["Webkit", "ms", "Moz", "O"]; Object.keys(Du).forEach(function (e) { _5.forEach(function (t) { t = t + e.charAt(0).toUpperCase() + e.substring(1), Du[t] = Du[e] }) }); function Bw(e, t, r) { return t == null || typeof t == "boolean" || t === "" ? "" : r || typeof t != "number" || t === 0 || Du.hasOwnProperty(e) && Du[e] ? ("" + t).trim() : t + "px" } function Fw(e, t) { e = e.style; for (var r in t) if (t.hasOwnProperty(r)) { var n = r.indexOf("--") === 0, i = Bw(r, t[r], n); r === "float" && (r = "cssFloat"), n ? e.setProperty(r, i) : e[r] = i } } var x5 = Ct({ menuitem: !0 }, { area: !0, base: !0, br: !0, col: !0, embed: !0, hr: !0, img: !0, input: !0, keygen: !0, link: !0, meta: !0, param: !0, source: !0, track: !0, wbr: !0 }); function om(e, t) { if (t) { if (x5[e] && (t.children != null || t.dangerouslySetInnerHTML != null)) throw Error(ae(137, e)); if (t.dangerouslySetInnerHTML != null) { if (t.children != null) throw Error(ae(60)); if (typeof t.dangerouslySetInnerHTML != "object" || !("__html" in t.dangerouslySetInnerHTML)) throw Error(ae(61)) } if (t.style != null && typeof t.style != "object") throw Error(ae(62)) } } function um(e, t) { if (e.indexOf("-") === -1) return typeof t.is == "string"; switch (e) { case "annotation-xml": case "color-profile": case "font-face": case "font-face-src": case "font-face-uri": case "font-face-format": case "font-face-name": case "missing-glyph": return !1; default: return !0 } } var sm = null; function h0(e) { return e = e.target || e.srcElement || window, e.correspondingUseElement && (e = e.correspondingUseElement), e.nodeType === 3 ? e.parentNode : e } var lm = null, xo = null, ko = null; function by(e) { if (e = Ns(e)) { if (typeof lm != "function") throw Error(ae(280)); var t = e.stateNode; t && (t = Ld(t), lm(e.stateNode, e.type, t)) } } function Hw(e) { xo ? ko ? ko.push(e) : ko = [e] : xo = e } function Uw() { if (xo) { var e = xo, t = ko; if (ko = xo = null, by(e), t) for (e = 0; e < t.length; e++)by(t[e]) } } function Vw(e, t) { return e(t) } function Ww() { } var gh = !1; function Kw(e, t, r) { if (gh) return e(t, r); gh = !0; try { return Vw(e, t, r) } finally { gh = !1, (xo !== null || ko !== null) && (Ww(), Uw()) } } function as(e, t) { var r = e.stateNode; if (r === null) return null; var n = Ld(r); if (n === null) return null; r = n[t]; e: switch (t) { case "onClick": case "onClickCapture": case "onDoubleClick": case "onDoubleClickCapture": case "onMouseDown": case "onMouseDownCapture": case "onMouseMove": case "onMouseMoveCapture": case "onMouseUp": case "onMouseUpCapture": case "onMouseEnter": (n = !n.disabled) || (e = e.type, n = !(e === "button" || e === "input" || e === "select" || e === "textarea")), e = !n; break e; default: e = !1 }if (e) return null; if (r && typeof r != "function") throw Error(ae(231, t, typeof r)); return r } var cm = !1; if (ti) try { var lu = {}; Object.defineProperty(lu, "passive", { get: function () { cm = !0 } }), window.addEventListener("test", lu, lu), window.removeEventListener("test", lu, lu) } catch { cm = !1 } function k5(e, t, r, n, i, a, o, u, s) { var l = Array.prototype.slice.call(arguments, 3); try { t.apply(r, l) } catch (d) { this.onError(d) } } var ju = !1, Ic = null, Mc = !1, dm = null, C5 = { onError: function (e) { ju = !0, Ic = e } }; function E5(e, t, r, n, i, a, o, u, s) { ju = !1, Ic = null, k5.apply(C5, arguments) } function T5(e, t, r, n, i, a, o, u, s) { if (E5.apply(this, arguments), ju) { if (ju) { var l = Ic; ju = !1, Ic = null } else throw Error(ae(198)); Mc || (Mc = !0, dm = l) } } function za(e) { var t = e, r = e; if (e.alternate) for (; t.return;)t = t.return; else { e = t; do t = e, (t.flags & 4098) !== 0 && (r = t.return), e = t.return; while (e) } return t.tag === 3 ? r : null } function qw(e) { if (e.tag === 13) { var t = e.memoizedState; if (t === null && (e = e.alternate, e !== null && (t = e.memoizedState)), t !== null) return t.dehydrated } return null } function wy(e) { if (za(e) !== e) throw Error(ae(188)) } function P5(e) { var t = e.alternate; if (!t) { if (t = za(e), t === null) throw Error(ae(188)); return t !== e ? null : e } for (var r = e, n = t; ;) { var i = r.return; if (i === null) break; var a = i.alternate; if (a === null) { if (n = i.return, n !== null) { r = n; continue } break } if (i.child === a.child) { for (a = i.child; a;) { if (a === r) return wy(i), e; if (a === n) return wy(i), t; a = a.sibling } throw Error(ae(188)) } if (r.return !== n.return) r = i, n = a; else { for (var o = !1, u = i.child; u;) { if (u === r) { o = !0, r = i, n = a; break } if (u === n) { o = !0, n = i, r = a; break } u = u.sibling } if (!o) { for (u = a.child; u;) { if (u === r) { o = !0, r = a, n = i; break } if (u === n) { o = !0, n = a, r = i; break } u = u.sibling } if (!o) throw Error(ae(189)) } } if (r.alternate !== n) throw Error(ae(190)) } if (r.tag !== 3) throw Error(ae(188)); return r.stateNode.current === r ? e : t } function Gw(e) { return e = P5(e), e !== null ? Yw(e) : null } function Yw(e) { if (e.tag === 5 || e.tag === 6) return e; for (e = e.child; e !== null;) { var t = Yw(e); if (t !== null) return t; e = e.sibling } return null } var Xw = qr.unstable_scheduleCallback, Sy = qr.unstable_cancelCallback, A5 = qr.unstable_shouldYield, R5 = qr.unstable_requestPaint, Dt = qr.unstable_now, O5 = qr.unstable_getCurrentPriorityLevel, p0 = qr.unstable_ImmediatePriority, Qw = qr.unstable_UserBlockingPriority, Dc = qr.unstable_NormalPriority, $5 = qr.unstable_LowPriority, Jw = qr.unstable_IdlePriority, Ad = null, Dn = null; function L5(e) { if (Dn && typeof Dn.onCommitFiberRoot == "function") try { Dn.onCommitFiberRoot(Ad, e, void 0, (e.current.flags & 128) === 128) } catch { } } var kn = Math.clz32 ? Math.clz32 : D5, I5 = Math.log, M5 = Math.LN2; function D5(e) { return e >>>= 0, e === 0 ? 32 : 31 - (I5(e) / M5 | 0) | 0 } var hl = 64, pl = 4194304; function Ou(e) { switch (e & -e) { case 1: return 1; case 2: return 2; case 4: return 4; case 8: return 8; case 16: return 16; case 32: return 32; case 64: case 128: case 256: case 512: case 1024: case 2048: case 4096: case 8192: case 16384: case 32768: case 65536: case 131072: case 262144: case 524288: case 1048576: case 2097152: return e & 4194240; case 4194304: case 8388608: case 16777216: case 33554432: case 67108864: return e & 130023424; case 134217728: return 134217728; case 268435456: return 268435456; case 536870912: return 536870912; case 1073741824: return 1073741824; default: return e } } function jc(e, t) { var r = e.pendingLanes; if (r === 0) return 0; var n = 0, i = e.suspendedLanes, a = e.pingedLanes, o = r & 268435455; if (o !== 0) { var u = o & ~i; u !== 0 ? n = Ou(u) : (a &= o, a !== 0 && (n = Ou(a))) } else o = r & ~i, o !== 0 ? n = Ou(o) : a !== 0 && (n = Ou(a)); if (n === 0) return 0; if (t !== 0 && t !== n && (t & i) === 0 && (i = n & -n, a = t & -t, i >= a || i === 16 && (a & 4194240) !== 0)) return t; if ((n & 4) !== 0 && (n |= r & 16), t = e.entangledLanes, t !== 0) for (e = e.entanglements, t &= n; 0 < t;)r = 31 - kn(t), i = 1 << r, n |= e[r], t &= ~i; return n } function j5(e, t) { switch (e) { case 1: case 2: case 4: return t + 250; case 8: case 16: case 32: case 64: case 128: case 256: case 512: case 1024: case 2048: case 4096: case 8192: case 16384: case 32768: case 65536: case 131072: case 262144: case 524288: case 1048576: case 2097152: return t + 5e3; case 4194304: case 8388608: case 16777216: case 33554432: case 67108864: return -1; case 134217728: case 268435456: case 536870912: case 1073741824: return -1; default: return -1 } } function z5(e, t) { for (var r = e.suspendedLanes, n = e.pingedLanes, i = e.expirationTimes, a = e.pendingLanes; 0 < a;) { var o = 31 - kn(a), u = 1 << o, s = i[o]; s === -1 ? ((u & r) === 0 || (u & n) !== 0) && (i[o] = j5(u, t)) : s <= t && (e.expiredLanes |= u), a &= ~u } } function fm(e) { return e = e.pendingLanes & -1073741825, e !== 0 ? e : e & 1073741824 ? 1073741824 : 0 } function Zw() { var e = hl; return hl <<= 1, (hl & 4194240) === 0 && (hl = 64), e } function vh(e) { for (var t = [], r = 0; 31 > r; r++)t.push(e); return t } function js(e, t, r) { e.pendingLanes |= t, t !== 536870912 && (e.suspendedLanes = 0, e.pingedLanes = 0), e = e.eventTimes, t = 31 - kn(t), e[t] = r } function N5(e, t) { var r = e.pendingLanes & ~t; e.pendingLanes = t, e.suspendedLanes = 0, e.pingedLanes = 0, e.expiredLanes &= t, e.mutableReadLanes &= t, e.entangledLanes &= t, t = e.entanglements; var n = e.eventTimes; for (e = e.expirationTimes; 0 < r;) { var i = 31 - kn(r), a = 1 << i; t[i] = 0, n[i] = -1, e[i] = -1, r &= ~a } } function m0(e, t) { var r = e.entangledLanes |= t; for (e = e.entanglements; r;) { var n = 31 - kn(r), i = 1 << n; i & t | e[n] & t && (e[n] |= t), r &= ~i } } var nt = 0; function e8(e) { return e &= -e, 1 < e ? 4 < e ? (e & 268435455) !== 0 ? 16 : 536870912 : 4 : 1 } var t8, g0, r8, n8, i8, hm = !1, ml = [], Li = null, Ii = null, Mi = null, os = new Map, us = new Map, Ei = [], B5 = "mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit".split(" "); function _y(e, t) { switch (e) { case "focusin": case "focusout": Li = null; break; case "dragenter": case "dragleave": Ii = null; break; case "mouseover": case "mouseout": Mi = null; break; case "pointerover": case "pointerout": os.delete(t.pointerId); break; case "gotpointercapture": case "lostpointercapture": us.delete(t.pointerId) } } function cu(e, t, r, n, i, a) { return e === null || e.nativeEvent !== a ? (e = { blockedOn: t, domEventName: r, eventSystemFlags: n, nativeEvent: a, targetContainers: [i] }, t !== null && (t = Ns(t), t !== null && g0(t)), e) : (e.eventSystemFlags |= n, t = e.targetContainers, i !== null && t.indexOf(i) === -1 && t.push(i), e) } function F5(e, t, r, n, i) { switch (t) { case "focusin": return Li = cu(Li, e, t, r, n, i), !0; case "dragenter": return Ii = cu(Ii, e, t, r, n, i), !0; case "mouseover": return Mi = cu(Mi, e, t, r, n, i), !0; case "pointerover": var a = i.pointerId; return os.set(a, cu(os.get(a) || null, e, t, r, n, i)), !0; case "gotpointercapture": return a = i.pointerId, us.set(a, cu(us.get(a) || null, e, t, r, n, i)), !0 }return !1 } function a8(e) { var t = ma(e.target); if (t !== null) { var r = za(t); if (r !== null) { if (t = r.tag, t === 13) { if (t = qw(r), t !== null) { e.blockedOn = t, i8(e.priority, function () { r8(r) }); return } } else if (t === 3 && r.stateNode.current.memoizedState.isDehydrated) { e.blockedOn = r.tag === 3 ? r.stateNode.containerInfo : null; return } } } e.blockedOn = null } function ac(e) { if (e.blockedOn !== null) return !1; for (var t = e.targetContainers; 0 < t.length;) { var r = pm(e.domEventName, e.eventSystemFlags, t[0], e.nativeEvent); if (r === null) { r = e.nativeEvent; var n = new r.constructor(r.type, r); sm = n, r.target.dispatchEvent(n), sm = null } else return t = Ns(r), t !== null && g0(t), e.blockedOn = r, !1; t.shift() } return !0 } function xy(e, t, r) { ac(e) && r.delete(t) } function H5() { hm = !1, Li !== null && ac(Li) && (Li = null), Ii !== null && ac(Ii) && (Ii = null), Mi !== null && ac(Mi) && (Mi = null), os.forEach(xy), us.forEach(xy) } function du(e, t) { e.blockedOn === t && (e.blockedOn = null, hm || (hm = !0, qr.unstable_scheduleCallback(qr.unstable_NormalPriority, H5))) } function ss(e) { function t(i) { return du(i, e) } if (0 < ml.length) { du(ml[0], e); for (var r = 1; r < ml.length; r++) { var n = ml[r]; n.blockedOn === e && (n.blockedOn = null) } } for (Li !== null && du(Li, e), Ii !== null && du(Ii, e), Mi !== null && du(Mi, e), os.forEach(t), us.forEach(t), r = 0; r < Ei.length; r++)n = Ei[r], n.blockedOn === e && (n.blockedOn = null); for (; 0 < Ei.length && (r = Ei[0], r.blockedOn === null);)a8(r), r.blockedOn === null && Ei.shift() } var Co = li.ReactCurrentBatchConfig, zc = !0; function U5(e, t, r, n) { var i = nt, a = Co.transition; Co.transition = null; try { nt = 1, v0(e, t, r, n) } finally { nt = i, Co.transition = a } } function V5(e, t, r, n) { var i = nt, a = Co.transition; Co.transition = null; try { nt = 4, v0(e, t, r, n) } finally { nt = i, Co.transition = a } } function v0(e, t, r, n) { if (zc) { var i = pm(e, t, r, n); if (i === null) Th(e, t, n, Nc, r), _y(e, n); else if (F5(i, e, t, r, n)) n.stopPropagation(); else if (_y(e, n), t & 4 && -1 < B5.indexOf(e)) { for (; i !== null;) { var a = Ns(i); if (a !== null && t8(a), a = pm(e, t, r, n), a === null && Th(e, t, n, Nc, r), a === i) break; i = a } i !== null && n.stopPropagation() } else Th(e, t, n, null, r) } } var Nc = null; function pm(e, t, r, n) { if (Nc = null, e = h0(n), e = ma(e), e !== null) if (t = za(e), t === null) e = null; else if (r = t.tag, r === 13) { if (e = qw(t), e !== null) return e; e = null } else if (r === 3) { if (t.stateNode.current.memoizedState.isDehydrated) return t.tag === 3 ? t.stateNode.containerInfo : null; e = null } else t !== e && (e = null); return Nc = e, null } function o8(e) { switch (e) { case "cancel": case "click": case "close": case "contextmenu": case "copy": case "cut": case "auxclick": case "dblclick": case "dragend": case "dragstart": case "drop": case "focusin": case "focusout": case "input": case "invalid": case "keydown": case "keypress": case "keyup": case "mousedown": case "mouseup": case "paste": case "pause": case "play": case "pointercancel": case "pointerdown": case "pointerup": case "ratechange": case "reset": case "resize": case "seeked": case "submit": case "touchcancel": case "touchend": case "touchstart": case "volumechange": case "change": case "selectionchange": case "textInput": case "compositionstart": case "compositionend": case "compositionupdate": case "beforeblur": case "afterblur": case "beforeinput": case "blur": case "fullscreenchange": case "focus": case "hashchange": case "popstate": case "select": case "selectstart": return 1; case "drag": case "dragenter": case "dragexit": case "dragleave": case "dragover": case "mousemove": case "mouseout": case "mouseover": case "pointermove": case "pointerout": case "pointerover": case "scroll": case "toggle": case "touchmove": case "wheel": case "mouseenter": case "mouseleave": case "pointerenter": case "pointerleave": return 4; case "message": switch (O5()) { case p0: return 1; case Qw: return 4; case Dc: case $5: return 16; case Jw: return 536870912; default: return 16 }default: return 16 } } var Ai = null, y0 = null, oc = null; function u8() { if (oc) return oc; var e, t = y0, r = t.length, n, i = "value" in Ai ? Ai.value : Ai.textContent, a = i.length; for (e = 0; e < r && t[e] === i[e]; e++); var o = r - e; for (n = 1; n <= o && t[r - n] === i[a - n]; n++); return oc = i.slice(e, 1 < n ? 1 - n : void 0) } function uc(e) { var t = e.keyCode; return "charCode" in e ? (e = e.charCode, e === 0 && t === 13 && (e = 13)) : e = t, e === 10 && (e = 13), 32 <= e || e === 13 ? e : 0 } function gl() { return !0 } function ky() { return !1 } function Qr(e) { function t(r, n, i, a, o) { this._reactName = r, this._targetInst = i, this.type = n, this.nativeEvent = a, this.target = o, this.currentTarget = null; for (var u in e) e.hasOwnProperty(u) && (r = e[u], this[u] = r ? r(a) : a[u]); return this.isDefaultPrevented = (a.defaultPrevented != null ? a.defaultPrevented : a.returnValue === !1) ? gl : ky, this.isPropagationStopped = ky, this } return Ct(t.prototype, { preventDefault: function () { this.defaultPrevented = !0; var r = this.nativeEvent; r && (r.preventDefault ? r.preventDefault() : typeof r.returnValue != "unknown" && (r.returnValue = !1), this.isDefaultPrevented = gl) }, stopPropagation: function () { var r = this.nativeEvent; r && (r.stopPropagation ? r.stopPropagation() : typeof r.cancelBubble != "unknown" && (r.cancelBubble = !0), this.isPropagationStopped = gl) }, persist: function () { }, isPersistent: gl }), t } var Vo = { eventPhase: 0, bubbles: 0, cancelable: 0, timeStamp: function (e) { return e.timeStamp || Date.now() }, defaultPrevented: 0, isTrusted: 0 }, b0 = Qr(Vo), zs = Ct({}, Vo, { view: 0, detail: 0 }), W5 = Qr(zs), yh, bh, fu, Rd = Ct({}, zs, { screenX: 0, screenY: 0, clientX: 0, clientY: 0, pageX: 0, pageY: 0, ctrlKey: 0, shiftKey: 0, altKey: 0, metaKey: 0, getModifierState: w0, button: 0, buttons: 0, relatedTarget: function (e) { return e.relatedTarget === void 0 ? e.fromElement === e.srcElement ? e.toElement : e.fromElement : e.relatedTarget }, movementX: function (e) { return "movementX" in e ? e.movementX : (e !== fu && (fu && e.type === "mousemove" ? (yh = e.screenX - fu.screenX, bh = e.screenY - fu.screenY) : bh = yh = 0, fu = e), yh) }, movementY: function (e) { return "movementY" in e ? e.movementY : bh } }), Cy = Qr(Rd), K5 = Ct({}, Rd, { dataTransfer: 0 }), q5 = Qr(K5), G5 = Ct({}, zs, { relatedTarget: 0 }), wh = Qr(G5), Y5 = Ct({}, Vo, { animationName: 0, elapsedTime: 0, pseudoElement: 0 }), X5 = Qr(Y5), Q5 = Ct({}, Vo, { clipboardData: function (e) { return "clipboardData" in e ? e.clipboardData : window.clipboardData } }), J5 = Qr(Q5), Z5 = Ct({}, Vo, { data: 0 }), Ey = Qr(Z5), eC = { Esc: "Escape", Spacebar: " ", Left: "ArrowLeft", Up: "ArrowUp", Right: "ArrowRight", Down: "ArrowDown", Del: "Delete", Win: "OS", Menu: "ContextMenu", Apps: "ContextMenu", Scroll: "ScrollLock", MozPrintableKey: "Unidentified" }, tC = { 8: "Backspace", 9: "Tab", 12: "Clear", 13: "Enter", 16: "Shift", 17: "Control", 18: "Alt", 19: "Pause", 20: "CapsLock", 27: "Escape", 32: " ", 33: "PageUp", 34: "PageDown", 35: "End", 36: "Home", 37: "ArrowLeft", 38: "ArrowUp", 39: "ArrowRight", 40: "ArrowDown", 45: "Insert", 46: "Delete", 112: "F1", 113: "F2", 114: "F3", 115: "F4", 116: "F5", 117: "F6", 118: "F7", 119: "F8", 120: "F9", 121: "F10", 122: "F11", 123: "F12", 144: "NumLock", 145: "ScrollLock", 224: "Meta" }, rC = { Alt: "altKey", Control: "ctrlKey", Meta: "metaKey", Shift: "shiftKey" }; function nC(e) { var t = this.nativeEvent; return t.getModifierState ? t.getModifierState(e) : (e = rC[e]) ? !!t[e] : !1 } function w0() { return nC } var iC = Ct({}, zs, { key: function (e) { if (e.key) { var t = eC[e.key] || e.key; if (t !== "Unidentified") return t } return e.type === "keypress" ? (e = uc(e), e === 13 ? "Enter" : String.fromCharCode(e)) : e.type === "keydown" || e.type === "keyup" ? tC[e.keyCode] || "Unidentified" : "" }, code: 0, location: 0, ctrlKey: 0, shiftKey: 0, altKey: 0, metaKey: 0, repeat: 0, locale: 0, getModifierState: w0, charCode: function (e) { return e.type === "keypress" ? uc(e) : 0 }, keyCode: function (e) { return e.type === "keydown" || e.type === "keyup" ? e.keyCode : 0 }, which: function (e) { return e.type === "keypress" ? uc(e) : e.type === "keydown" || e.type === "keyup" ? e.keyCode : 0 } }), aC = Qr(iC), oC = Ct({}, Rd, { pointerId: 0, width: 0, height: 0, pressure: 0, tangentialPressure: 0, tiltX: 0, tiltY: 0, twist: 0, pointerType: 0, isPrimary: 0 }), Ty = Qr(oC), uC = Ct({}, zs, { touches: 0, targetTouches: 0, changedTouches: 0, altKey: 0, metaKey: 0, ctrlKey: 0, shiftKey: 0, getModifierState: w0 }), sC = Qr(uC), lC = Ct({}, Vo, { propertyName: 0, elapsedTime: 0, pseudoElement: 0 }), cC = Qr(lC), dC = Ct({}, Rd, { deltaX: function (e) { return "deltaX" in e ? e.deltaX : "wheelDeltaX" in e ? -e.wheelDeltaX : 0 }, deltaY: function (e) { return "deltaY" in e ? e.deltaY : "wheelDeltaY" in e ? -e.wheelDeltaY : "wheelDelta" in e ? -e.wheelDelta : 0 }, deltaZ: 0, deltaMode: 0 }), fC = Qr(dC), hC = [9, 13, 27, 32], S0 = ti && "CompositionEvent" in window, zu = null; ti && "documentMode" in document && (zu = document.documentMode); var pC = ti && "TextEvent" in window && !zu, s8 = ti && (!S0 || zu && 8 < zu && 11 >= zu), Py = String.fromCharCode(32), Ay = !1; function l8(e, t) { switch (e) { case "keyup": return hC.indexOf(t.keyCode) !== -1; case "keydown": return t.keyCode !== 229; case "keypress": case "mousedown": case "focusout": return !0; default: return !1 } } function c8(e) { return e = e.detail, typeof e == "object" && "data" in e ? e.data : null } var oo = !1; function mC(e, t) { switch (e) { case "compositionend": return c8(t); case "keypress": return t.which !== 32 ? null : (Ay = !0, Py); case "textInput": return e = t.data, e === Py && Ay ? null : e; default: return null } } function gC(e, t) { if (oo) return e === "compositionend" || !S0 && l8(e, t) ? (e = u8(), oc = y0 = Ai = null, oo = !1, e) : null; switch (e) { case "paste": return null; case "keypress": if (!(t.ctrlKey || t.altKey || t.metaKey) || t.ctrlKey && t.altKey) { if (t.char && 1 < t.char.length) return t.char; if (t.which) return String.fromCharCode(t.which) } return null; case "compositionend": return s8 && t.locale !== "ko" ? null : t.data; default: return null } } var vC = { color: !0, date: !0, datetime: !0, "datetime-local": !0, email: !0, month: !0, number: !0, password: !0, range: !0, search: !0, tel: !0, text: !0, time: !0, url: !0, week: !0 }; function Ry(e) { var t = e && e.nodeName && e.nodeName.toLowerCase(); return t === "input" ? !!vC[e.type] : t === "textarea" } function d8(e, t, r, n) { Hw(n), t = Bc(t, "onChange"), 0 < t.length && (r = new b0("onChange", "change", null, r, n), e.push({ event: r, listeners: t })) } var Nu = null, ls = null; function yC(e) { _8(e, 0) } function Od(e) { var t = lo(e); if (Mw(t)) return e } function bC(e, t) { if (e === "change") return t } var f8 = !1; if (ti) { var Sh; if (ti) { var _h = "oninput" in document; if (!_h) { var Oy = document.createElement("div"); Oy.setAttribute("oninput", "return;"), _h = typeof Oy.oninput == "function" } Sh = _h } else Sh = !1; f8 = Sh && (!document.documentMode || 9 < document.documentMode) } function $y() { Nu && (Nu.detachEvent("onpropertychange", h8), ls = Nu = null) } function h8(e) { if (e.propertyName === "value" && Od(ls)) { var t = []; d8(t, ls, e, h0(e)), Kw(yC, t) } } function wC(e, t, r) { e === "focusin" ? ($y(), Nu = t, ls = r, Nu.attachEvent("onpropertychange", h8)) : e === "focusout" && $y() } function SC(e) { if (e === "selectionchange" || e === "keyup" || e === "keydown") return Od(ls) } function _C(e, t) { if (e === "click") return Od(t) } function xC(e, t) { if (e === "input" || e === "change") return Od(t) } function kC(e, t) { return e === t && (e !== 0 || 1 / e === 1 / t) || e !== e && t !== t } var En = typeof Object.is == "function" ? Object.is : kC; function cs(e, t) { if (En(e, t)) return !0; if (typeof e != "object" || e === null || typeof t != "object" || t === null) return !1; var r = Object.keys(e), n = Object.keys(t); if (r.length !== n.length) return !1; for (n = 0; n < r.length; n++) { var i = r[n]; if (!Xp.call(t, i) || !En(e[i], t[i])) return !1 } return !0 } function Ly(e) { for (; e && e.firstChild;)e = e.firstChild; return e } function Iy(e, t) { var r = Ly(e); e = 0; for (var n; r;) { if (r.nodeType === 3) { if (n = e + r.textContent.length, e <= t && n >= t) return { node: r, offset: t - e }; e = n } e: { for (; r;) { if (r.nextSibling) { r = r.nextSibling; break e } r = r.parentNode } r = void 0 } r = Ly(r) } } function p8(e, t) { return e && t ? e === t ? !0 : e && e.nodeType === 3 ? !1 : t && t.nodeType === 3 ? p8(e, t.parentNode) : "contains" in e ? e.contains(t) : e.compareDocumentPosition ? !!(e.compareDocumentPosition(t) & 16) : !1 : !1 } function m8() { for (var e = window, t = Lc(); t instanceof e.HTMLIFrameElement;) { try { var r = typeof t.contentWindow.location.href == "string" } catch { r = !1 } if (r) e = t.contentWindow; else break; t = Lc(e.document) } return t } function _0(e) { var t = e && e.nodeName && e.nodeName.toLowerCase(); return t && (t === "input" && (e.type === "text" || e.type === "search" || e.type === "tel" || e.type === "url" || e.type === "password") || t === "textarea" || e.contentEditable === "true") } function CC(e) { var t = m8(), r = e.focusedElem, n = e.selectionRange; if (t !== r && r && r.ownerDocument && p8(r.ownerDocument.documentElement, r)) { if (n !== null && _0(r)) { if (t = n.start, e = n.end, e === void 0 && (e = t), "selectionStart" in r) r.selectionStart = t, r.selectionEnd = Math.min(e, r.value.length); else if (e = (t = r.ownerDocument || document) && t.defaultView || window, e.getSelection) { e = e.getSelection(); var i = r.textContent.length, a = Math.min(n.start, i); n = n.end === void 0 ? a : Math.min(n.end, i), !e.extend && a > n && (i = n, n = a, a = i), i = Iy(r, a); var o = Iy(r, n); i && o && (e.rangeCount !== 1 || e.anchorNode !== i.node || e.anchorOffset !== i.offset || e.focusNode !== o.node || e.focusOffset !== o.offset) && (t = t.createRange(), t.setStart(i.node, i.offset), e.removeAllRanges(), a > n ? (e.addRange(t), e.extend(o.node, o.offset)) : (t.setEnd(o.node, o.offset), e.addRange(t))) } } for (t = [], e = r; e = e.parentNode;)e.nodeType === 1 && t.push({ element: e, left: e.scrollLeft, top: e.scrollTop }); for (typeof r.focus == "function" && r.focus(), r = 0; r < t.length; r++)e = t[r], e.element.scrollLeft = e.left, e.element.scrollTop = e.top } } var EC = ti && "documentMode" in document && 11 >= document.documentMode, uo = null, mm = null, Bu = null, gm = !1; function My(e, t, r) { var n = r.window === r ? r.document : r.nodeType === 9 ? r : r.ownerDocument; gm || uo == null || uo !== Lc(n) || (n = uo, "selectionStart" in n && _0(n) ? n = { start: n.selectionStart, end: n.selectionEnd } : (n = (n.ownerDocument && n.ownerDocument.defaultView || window).getSelection(), n = { anchorNode: n.anchorNode, anchorOffset: n.anchorOffset, focusNode: n.focusNode, focusOffset: n.focusOffset }), Bu && cs(Bu, n) || (Bu = n, n = Bc(mm, "onSelect"), 0 < n.length && (t = new b0("onSelect", "select", null, t, r), e.push({ event: t, listeners: n }), t.target = uo))) } function vl(e, t) { var r = {}; return r[e.toLowerCase()] = t.toLowerCase(), r["Webkit" + e] = "webkit" + t, r["Moz" + e] = "moz" + t, r } var so = { animationend: vl("Animation", "AnimationEnd"), animationiteration: vl("Animation", "AnimationIteration"), animationstart: vl("Animation", "AnimationStart"), transitionend: vl("Transition", "TransitionEnd") }, xh = {}, g8 = {}; ti && (g8 = document.createElement("div").style, "AnimationEvent" in window || (delete so.animationend.animation, delete so.animationiteration.animation, delete so.animationstart.animation), "TransitionEvent" in window || delete so.transitionend.transition); function $d(e) { if (xh[e]) return xh[e]; if (!so[e]) return e; var t = so[e], r; for (r in t) if (t.hasOwnProperty(r) && r in g8) return xh[e] = t[r]; return e } var v8 = $d("animationend"), y8 = $d("animationiteration"), b8 = $d("animationstart"), w8 = $d("transitionend"), S8 = new Map, Dy = "abort auxClick cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(" "); function Gi(e, t) { S8.set(e, t), ja(t, [e]) } for (var kh = 0; kh < Dy.length; kh++) { var Ch = Dy[kh], TC = Ch.toLowerCase(), PC = Ch[0].toUpperCase() + Ch.slice(1); Gi(TC, "on" + PC) } Gi(v8, "onAnimationEnd"); Gi(y8, "onAnimationIteration"); Gi(b8, "onAnimationStart"); Gi("dblclick", "onDoubleClick"); Gi("focusin", "onFocus"); Gi("focusout", "onBlur"); Gi(w8, "onTransitionEnd"); Oo("onMouseEnter", ["mouseout", "mouseover"]); Oo("onMouseLeave", ["mouseout", "mouseover"]); Oo("onPointerEnter", ["pointerout", "pointerover"]); Oo("onPointerLeave", ["pointerout", "pointerover"]); ja("onChange", "change click focusin focusout input keydown keyup selectionchange".split(" ")); ja("onSelect", "focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" ")); ja("onBeforeInput", ["compositionend", "keypress", "textInput", "paste"]); ja("onCompositionEnd", "compositionend focusout keydown keypress keyup mousedown".split(" ")); ja("onCompositionStart", "compositionstart focusout keydown keypress keyup mousedown".split(" ")); ja("onCompositionUpdate", "compositionupdate focusout keydown keypress keyup mousedown".split(" ")); var $u = "abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting".split(" "), AC = new Set("cancel close invalid load scroll toggle".split(" ").concat($u)); function jy(e, t, r) { var n = e.type || "unknown-event"; e.currentTarget = r, T5(n, t, void 0, e), e.currentTarget = null } function _8(e, t) { t = (t & 4) !== 0; for (var r = 0; r < e.length; r++) { var n = e[r], i = n.event; n = n.listeners; e: { var a = void 0; if (t) for (var o = n.length - 1; 0 <= o; o--) { var u = n[o], s = u.instance, l = u.currentTarget; if (u = u.listener, s !== a && i.isPropagationStopped()) break e; jy(i, u, l), a = s } else for (o = 0; o < n.length; o++) { if (u = n[o], s = u.instance, l = u.currentTarget, u = u.listener, s !== a && i.isPropagationStopped()) break e; jy(i, u, l), a = s } } } if (Mc) throw e = dm, Mc = !1, dm = null, e } function ft(e, t) { var r = t[Sm]; r === void 0 && (r = t[Sm] = new Set); var n = e + "__bubble"; r.has(n) || (x8(t, e, 2, !1), r.add(n)) } function Eh(e, t, r) { var n = 0; t && (n |= 4), x8(r, e, n, t) } var yl = "_reactListening" + Math.random().toString(36).slice(2); function ds(e) { if (!e[yl]) { e[yl] = !0, Rw.forEach(function (r) { r !== "selectionchange" && (AC.has(r) || Eh(r, !1, e), Eh(r, !0, e)) }); var t = e.nodeType === 9 ? e : e.ownerDocument; t === null || t[yl] || (t[yl] = !0, Eh("selectionchange", !1, t)) } } function x8(e, t, r, n) { switch (o8(t)) { case 1: var i = U5; break; case 4: i = V5; break; default: i = v0 }r = i.bind(null, t, r, e), i = void 0, !cm || t !== "touchstart" && t !== "touchmove" && t !== "wheel" || (i = !0), n ? i !== void 0 ? e.addEventListener(t, r, { capture: !0, passive: i }) : e.addEventListener(t, r, !0) : i !== void 0 ? e.addEventListener(t, r, { passive: i }) : e.addEventListener(t, r, !1) } function Th(e, t, r, n, i) { var a = n; if ((t & 1) === 0 && (t & 2) === 0 && n !== null) e: for (; ;) { if (n === null) return; var o = n.tag; if (o === 3 || o === 4) { var u = n.stateNode.containerInfo; if (u === i || u.nodeType === 8 && u.parentNode === i) break; if (o === 4) for (o = n.return; o !== null;) { var s = o.tag; if ((s === 3 || s === 4) && (s = o.stateNode.containerInfo, s === i || s.nodeType === 8 && s.parentNode === i)) return; o = o.return } for (; u !== null;) { if (o = ma(u), o === null) return; if (s = o.tag, s === 5 || s === 6) { n = a = o; continue e } u = u.parentNode } } n = n.return } Kw(function () { var l = a, d = h0(r), m = []; e: { var p = S8.get(e); if (p !== void 0) { var b = b0, v = e; switch (e) { case "keypress": if (uc(r) === 0) break e; case "keydown": case "keyup": b = aC; break; case "focusin": v = "focus", b = wh; break; case "focusout": v = "blur", b = wh; break; case "beforeblur": case "afterblur": b = wh; break; case "click": if (r.button === 2) break e; case "auxclick": case "dblclick": case "mousedown": case "mousemove": case "mouseup": case "mouseout": case "mouseover": case "contextmenu": b = Cy; break; case "drag": case "dragend": case "dragenter": case "dragexit": case "dragleave": case "dragover": case "dragstart": case "drop": b = q5; break; case "touchcancel": case "touchend": case "touchmove": case "touchstart": b = sC; break; case v8: case y8: case b8: b = X5; break; case w8: b = cC; break; case "scroll": b = W5; break; case "wheel": b = fC; break; case "copy": case "cut": case "paste": b = J5; break; case "gotpointercapture": case "lostpointercapture": case "pointercancel": case "pointerdown": case "pointermove": case "pointerout": case "pointerover": case "pointerup": b = Ty }var C = (t & 4) !== 0, P = !C && e === "scroll", y = C ? p !== null ? p + "Capture" : null : p; C = []; for (var w = l, k; w !== null;) { k = w; var c = k.stateNode; if (k.tag === 5 && c !== null && (k = c, y !== null && (c = as(w, y), c != null && C.push(fs(w, c, k)))), P) break; w = w.return } 0 < C.length && (p = new b(p, v, null, r, d), m.push({ event: p, listeners: C })) } } if ((t & 7) === 0) { e: { if (p = e === "mouseover" || e === "pointerover", b = e === "mouseout" || e === "pointerout", p && r !== sm && (v = r.relatedTarget || r.fromElement) && (ma(v) || v[ri])) break e; if ((b || p) && (p = d.window === d ? d : (p = d.ownerDocument) ? p.defaultView || p.parentWindow : window, b ? (v = r.relatedTarget || r.toElement, b = l, v = v ? ma(v) : null, v !== null && (P = za(v), v !== P || v.tag !== 5 && v.tag !== 6) && (v = null)) : (b = null, v = l), b !== v)) { if (C = Cy, c = "onMouseLeave", y = "onMouseEnter", w = "mouse", (e === "pointerout" || e === "pointerover") && (C = Ty, c = "onPointerLeave", y = "onPointerEnter", w = "pointer"), P = b == null ? p : lo(b), k = v == null ? p : lo(v), p = new C(c, w + "leave", b, r, d), p.target = P, p.relatedTarget = k, c = null, ma(d) === l && (C = new C(y, w + "enter", v, r, d), C.target = k, C.relatedTarget = P, c = C), P = c, b && v) t: { for (C = b, y = v, w = 0, k = C; k; k = Va(k))w++; for (k = 0, c = y; c; c = Va(c))k++; for (; 0 < w - k;)C = Va(C), w--; for (; 0 < k - w;)y = Va(y), k--; for (; w--;) { if (C === y || y !== null && C === y.alternate) break t; C = Va(C), y = Va(y) } C = null } else C = null; b !== null && zy(m, p, b, C, !1), v !== null && P !== null && zy(m, P, v, C, !0) } } e: { if (p = l ? lo(l) : window, b = p.nodeName && p.nodeName.toLowerCase(), b === "select" || b === "input" && p.type === "file") var g = bC; else if (Ry(p)) if (f8) g = xC; else { g = SC; var h = wC } else (b = p.nodeName) && b.toLowerCase() === "input" && (p.type === "checkbox" || p.type === "radio") && (g = _C); if (g && (g = g(e, l))) { d8(m, g, r, d); break e } h && h(e, p, l), e === "focusout" && (h = p._wrapperState) && h.controlled && p.type === "number" && nm(p, "number", p.value) } switch (h = l ? lo(l) : window, e) { case "focusin": (Ry(h) || h.contentEditable === "true") && (uo = h, mm = l, Bu = null); break; case "focusout": Bu = mm = uo = null; break; case "mousedown": gm = !0; break; case "contextmenu": case "mouseup": case "dragend": gm = !1, My(m, r, d); break; case "selectionchange": if (EC) break; case "keydown": case "keyup": My(m, r, d) }var _; if (S0) e: { switch (e) { case "compositionstart": var T = "onCompositionStart"; break e; case "compositionend": T = "onCompositionEnd"; break e; case "compositionupdate": T = "onCompositionUpdate"; break e }T = void 0 } else oo ? l8(e, r) && (T = "onCompositionEnd") : e === "keydown" && r.keyCode === 229 && (T = "onCompositionStart"); T && (s8 && r.locale !== "ko" && (oo || T !== "onCompositionStart" ? T === "onCompositionEnd" && oo && (_ = u8()) : (Ai = d, y0 = "value" in Ai ? Ai.value : Ai.textContent, oo = !0)), h = Bc(l, T), 0 < h.length && (T = new Ey(T, e, null, r, d), m.push({ event: T, listeners: h }), _ ? T.data = _ : (_ = c8(r), _ !== null && (T.data = _)))), (_ = pC ? mC(e, r) : gC(e, r)) && (l = Bc(l, "onBeforeInput"), 0 < l.length && (d = new Ey("onBeforeInput", "beforeinput", null, r, d), m.push({ event: d, listeners: l }), d.data = _)) } _8(m, t) }) } function fs(e, t, r) { return { instance: e, listener: t, currentTarget: r } } function Bc(e, t) { for (var r = t + "Capture", n = []; e !== null;) { var i = e, a = i.stateNode; i.tag === 5 && a !== null && (i = a, a = as(e, r), a != null && n.unshift(fs(e, a, i)), a = as(e, t), a != null && n.push(fs(e, a, i))), e = e.return } return n } function Va(e) { if (e === null) return null; do e = e.return; while (e && e.tag !== 5); return e || null } function zy(e, t, r, n, i) { for (var a = t._reactName, o = []; r !== null && r !== n;) { var u = r, s = u.alternate, l = u.stateNode; if (s !== null && s === n) break; u.tag === 5 && l !== null && (u = l, i ? (s = as(r, a), s != null && o.unshift(fs(r, s, u))) : i || (s = as(r, a), s != null && o.push(fs(r, s, u)))), r = r.return } o.length !== 0 && e.push({ event: t, listeners: o }) } var RC = /\r\n?/g, OC = /\u0000|\uFFFD/g; function Ny(e) { - return (typeof e == "string" ? e : "" + e).replace(RC, ` -`).replace(OC, "") - } function bl(e, t, r) { if (t = Ny(t), Ny(e) !== t && r) throw Error(ae(425)) } function Fc() { } var vm = null, ym = null; function bm(e, t) { return e === "textarea" || e === "noscript" || typeof t.children == "string" || typeof t.children == "number" || typeof t.dangerouslySetInnerHTML == "object" && t.dangerouslySetInnerHTML !== null && t.dangerouslySetInnerHTML.__html != null } var wm = typeof setTimeout == "function" ? setTimeout : void 0, $C = typeof clearTimeout == "function" ? clearTimeout : void 0, By = typeof Promise == "function" ? Promise : void 0, LC = typeof queueMicrotask == "function" ? queueMicrotask : typeof By != "undefined" ? function (e) { return By.resolve(null).then(e).catch(IC) } : wm; function IC(e) { setTimeout(function () { throw e }) } function Ph(e, t) { var r = t, n = 0; do { var i = r.nextSibling; if (e.removeChild(r), i && i.nodeType === 8) if (r = i.data, r === "/$") { if (n === 0) { e.removeChild(i), ss(t); return } n-- } else r !== "$" && r !== "$?" && r !== "$!" || n++; r = i } while (r); ss(t) } function Xn(e) { for (; e != null; e = e.nextSibling) { var t = e.nodeType; if (t === 1 || t === 3) break; if (t === 8) { if (t = e.data, t === "$" || t === "$!" || t === "$?") break; if (t === "/$") return null } } return e } function Fy(e) { e = e.previousSibling; for (var t = 0; e;) { if (e.nodeType === 8) { var r = e.data; if (r === "$" || r === "$!" || r === "$?") { if (t === 0) return e; t-- } else r === "/$" && t++ } e = e.previousSibling } return null } var Wo = Math.random().toString(36).slice(2), In = "__reactFiber$" + Wo, hs = "__reactProps$" + Wo, ri = "__reactContainer$" + Wo, Sm = "__reactEvents$" + Wo, MC = "__reactListeners$" + Wo, DC = "__reactHandles$" + Wo; function ma(e) { var t = e[In]; if (t) return t; for (var r = e.parentNode; r;) { if (t = r[ri] || r[In]) { if (r = t.alternate, t.child !== null || r !== null && r.child !== null) for (e = Fy(e); e !== null;) { if (r = e[In]) return r; e = Fy(e) } return t } e = r, r = e.parentNode } return null } function Ns(e) { return e = e[In] || e[ri], !e || e.tag !== 5 && e.tag !== 6 && e.tag !== 13 && e.tag !== 3 ? null : e } function lo(e) { if (e.tag === 5 || e.tag === 6) return e.stateNode; throw Error(ae(33)) } function Ld(e) { return e[hs] || null } var _m = [], co = -1; function Yi(e) { return { current: e } } function ht(e) { 0 > co || (e.current = _m[co], _m[co] = null, co--) } function lt(e, t) { co++, _m[co] = e.current, e.current = t } var Vi = {}, mr = Yi(Vi), $r = Yi(!1), Pa = Vi; function $o(e, t) { var r = e.type.contextTypes; if (!r) return Vi; var n = e.stateNode; if (n && n.__reactInternalMemoizedUnmaskedChildContext === t) return n.__reactInternalMemoizedMaskedChildContext; var i = {}, a; for (a in r) i[a] = t[a]; return n && (e = e.stateNode, e.__reactInternalMemoizedUnmaskedChildContext = t, e.__reactInternalMemoizedMaskedChildContext = i), i } function Lr(e) { return e = e.childContextTypes, e != null } function Hc() { ht($r), ht(mr) } function Hy(e, t, r) { if (mr.current !== Vi) throw Error(ae(168)); lt(mr, t), lt($r, r) } function k8(e, t, r) { var n = e.stateNode; if (t = t.childContextTypes, typeof n.getChildContext != "function") return r; n = n.getChildContext(); for (var i in n) if (!(i in t)) throw Error(ae(108, w5(e) || "Unknown", i)); return Ct({}, r, n) } function Uc(e) { return e = (e = e.stateNode) && e.__reactInternalMemoizedMergedChildContext || Vi, Pa = mr.current, lt(mr, e), lt($r, $r.current), !0 } function Uy(e, t, r) { var n = e.stateNode; if (!n) throw Error(ae(169)); r ? (e = k8(e, t, Pa), n.__reactInternalMemoizedMergedChildContext = e, ht($r), ht(mr), lt(mr, e)) : ht($r), lt($r, r) } var Yn = null, Id = !1, Ah = !1; function C8(e) { Yn === null ? Yn = [e] : Yn.push(e) } function jC(e) { Id = !0, C8(e) } function Xi() { if (!Ah && Yn !== null) { Ah = !0; var e = 0, t = nt; try { var r = Yn; for (nt = 1; e < r.length; e++) { var n = r[e]; do n = n(!0); while (n !== null) } Yn = null, Id = !1 } catch (i) { throw Yn !== null && (Yn = Yn.slice(e + 1)), Xw(p0, Xi), i } finally { nt = t, Ah = !1 } } return null } var zC = li.ReactCurrentBatchConfig; function yn(e, t) { if (e && e.defaultProps) { t = Ct({}, t), e = e.defaultProps; for (var r in e) t[r] === void 0 && (t[r] = e[r]); return t } return t } var Vc = Yi(null), Wc = null, fo = null, x0 = null; function k0() { x0 = fo = Wc = null } function C0(e) { var t = Vc.current; ht(Vc), e._currentValue = t } function xm(e, t, r) { for (; e !== null;) { var n = e.alternate; if ((e.childLanes & t) !== t ? (e.childLanes |= t, n !== null && (n.childLanes |= t)) : n !== null && (n.childLanes & t) !== t && (n.childLanes |= t), e === r) break; e = e.return } } function Eo(e, t) { Wc = e, x0 = fo = null, e = e.dependencies, e !== null && e.firstContext !== null && ((e.lanes & t) !== 0 && (Rr = !0), e.firstContext = null) } function hn(e) { var t = e._currentValue; if (x0 !== e) if (e = { context: e, memoizedValue: t, next: null }, fo === null) { if (Wc === null) throw Error(ae(308)); fo = e, Wc.dependencies = { lanes: 0, firstContext: e } } else fo = fo.next = e; return t } var _n = null, Ci = !1; function E0(e) { e.updateQueue = { baseState: e.memoizedState, firstBaseUpdate: null, lastBaseUpdate: null, shared: { pending: null, interleaved: null, lanes: 0 }, effects: null } } function E8(e, t) { e = e.updateQueue, t.updateQueue === e && (t.updateQueue = { baseState: e.baseState, firstBaseUpdate: e.firstBaseUpdate, lastBaseUpdate: e.lastBaseUpdate, shared: e.shared, effects: e.effects }) } function ei(e, t) { return { eventTime: e, lane: t, tag: 0, payload: null, callback: null, next: null } } function Di(e, t) { var r = e.updateQueue; r !== null && (r = r.shared, m4(e) ? (e = r.interleaved, e === null ? (t.next = t, _n === null ? _n = [r] : _n.push(r)) : (t.next = e.next, e.next = t), r.interleaved = t) : (e = r.pending, e === null ? t.next = t : (t.next = e.next, e.next = t), r.pending = t)) } function sc(e, t, r) { if (t = t.updateQueue, t !== null && (t = t.shared, (r & 4194240) !== 0)) { var n = t.lanes; n &= e.pendingLanes, r |= n, t.lanes = r, m0(e, r) } } function Vy(e, t) { var r = e.updateQueue, n = e.alternate; if (n !== null && (n = n.updateQueue, r === n)) { var i = null, a = null; if (r = r.firstBaseUpdate, r !== null) { do { var o = { eventTime: r.eventTime, lane: r.lane, tag: r.tag, payload: r.payload, callback: r.callback, next: null }; a === null ? i = a = o : a = a.next = o, r = r.next } while (r !== null); a === null ? i = a = t : a = a.next = t } else i = a = t; r = { baseState: n.baseState, firstBaseUpdate: i, lastBaseUpdate: a, shared: n.shared, effects: n.effects }, e.updateQueue = r; return } e = r.lastBaseUpdate, e === null ? r.firstBaseUpdate = t : e.next = t, r.lastBaseUpdate = t } function Kc(e, t, r, n) { var i = e.updateQueue; Ci = !1; var a = i.firstBaseUpdate, o = i.lastBaseUpdate, u = i.shared.pending; if (u !== null) { i.shared.pending = null; var s = u, l = s.next; s.next = null, o === null ? a = l : o.next = l, o = s; var d = e.alternate; d !== null && (d = d.updateQueue, u = d.lastBaseUpdate, u !== o && (u === null ? d.firstBaseUpdate = l : u.next = l, d.lastBaseUpdate = s)) } if (a !== null) { var m = i.baseState; o = 0, d = l = s = null, u = a; do { var p = u.lane, b = u.eventTime; if ((n & p) === p) { d !== null && (d = d.next = { eventTime: b, lane: 0, tag: u.tag, payload: u.payload, callback: u.callback, next: null }); e: { var v = e, C = u; switch (p = t, b = r, C.tag) { case 1: if (v = C.payload, typeof v == "function") { m = v.call(b, m, p); break e } m = v; break e; case 3: v.flags = v.flags & -65537 | 128; case 0: if (v = C.payload, p = typeof v == "function" ? v.call(b, m, p) : v, p == null) break e; m = Ct({}, m, p); break e; case 2: Ci = !0 } } u.callback !== null && u.lane !== 0 && (e.flags |= 64, p = i.effects, p === null ? i.effects = [u] : p.push(u)) } else b = { eventTime: b, lane: p, tag: u.tag, payload: u.payload, callback: u.callback, next: null }, d === null ? (l = d = b, s = m) : d = d.next = b, o |= p; if (u = u.next, u === null) { if (u = i.shared.pending, u === null) break; p = u, u = p.next, p.next = null, i.lastBaseUpdate = p, i.shared.pending = null } } while (1); if (d === null && (s = m), i.baseState = s, i.firstBaseUpdate = l, i.lastBaseUpdate = d, t = i.shared.interleaved, t !== null) { i = t; do o |= i.lane, i = i.next; while (i !== t) } else a === null && (i.shared.lanes = 0); Oa |= o, e.lanes = o, e.memoizedState = m } } function Wy(e, t, r) { if (e = t.effects, t.effects = null, e !== null) for (t = 0; t < e.length; t++) { var n = e[t], i = n.callback; if (i !== null) { if (n.callback = null, n = r, typeof i != "function") throw Error(ae(191, i)); i.call(n) } } } var T8 = new Aw.Component().refs; function km(e, t, r, n) { t = e.memoizedState, r = r(n, t), r = r == null ? t : Ct({}, t, r), e.memoizedState = r, e.lanes === 0 && (e.updateQueue.baseState = r) } var Md = { isMounted: function (e) { return (e = e._reactInternals) ? za(e) === e : !1 }, enqueueSetState: function (e, t, r) { e = e._reactInternals; var n = br(), i = zi(e), a = ei(n, i); a.payload = t, r != null && (a.callback = r), Di(e, a), t = dn(e, i, n), t !== null && sc(t, e, i) }, enqueueReplaceState: function (e, t, r) { e = e._reactInternals; var n = br(), i = zi(e), a = ei(n, i); a.tag = 1, a.payload = t, r != null && (a.callback = r), Di(e, a), t = dn(e, i, n), t !== null && sc(t, e, i) }, enqueueForceUpdate: function (e, t) { e = e._reactInternals; var r = br(), n = zi(e), i = ei(r, n); i.tag = 2, t != null && (i.callback = t), Di(e, i), t = dn(e, n, r), t !== null && sc(t, e, n) } }; function Ky(e, t, r, n, i, a, o) { return e = e.stateNode, typeof e.shouldComponentUpdate == "function" ? e.shouldComponentUpdate(n, a, o) : t.prototype && t.prototype.isPureReactComponent ? !cs(r, n) || !cs(i, a) : !0 } function P8(e, t, r) { var n = !1, i = Vi, a = t.contextType; return typeof a == "object" && a !== null ? a = hn(a) : (i = Lr(t) ? Pa : mr.current, n = t.contextTypes, a = (n = n != null) ? $o(e, i) : Vi), t = new t(r, a), e.memoizedState = t.state !== null && t.state !== void 0 ? t.state : null, t.updater = Md, e.stateNode = t, t._reactInternals = e, n && (e = e.stateNode, e.__reactInternalMemoizedUnmaskedChildContext = i, e.__reactInternalMemoizedMaskedChildContext = a), t } function qy(e, t, r, n) { e = t.state, typeof t.componentWillReceiveProps == "function" && t.componentWillReceiveProps(r, n), typeof t.UNSAFE_componentWillReceiveProps == "function" && t.UNSAFE_componentWillReceiveProps(r, n), t.state !== e && Md.enqueueReplaceState(t, t.state, null) } function Cm(e, t, r, n) { var i = e.stateNode; i.props = r, i.state = e.memoizedState, i.refs = T8, E0(e); var a = t.contextType; typeof a == "object" && a !== null ? i.context = hn(a) : (a = Lr(t) ? Pa : mr.current, i.context = $o(e, a)), i.state = e.memoizedState, a = t.getDerivedStateFromProps, typeof a == "function" && (km(e, t, a, r), i.state = e.memoizedState), typeof t.getDerivedStateFromProps == "function" || typeof i.getSnapshotBeforeUpdate == "function" || typeof i.UNSAFE_componentWillMount != "function" && typeof i.componentWillMount != "function" || (t = i.state, typeof i.componentWillMount == "function" && i.componentWillMount(), typeof i.UNSAFE_componentWillMount == "function" && i.UNSAFE_componentWillMount(), t !== i.state && Md.enqueueReplaceState(i, i.state, null), Kc(e, r, i, n), i.state = e.memoizedState), typeof i.componentDidMount == "function" && (e.flags |= 4194308) } var ho = [], po = 0, qc = null, Gc = 0, on = [], un = 0, Aa = null, Qn = 1, Jn = ""; function sa(e, t) { ho[po++] = Gc, ho[po++] = qc, qc = e, Gc = t } function A8(e, t, r) { on[un++] = Qn, on[un++] = Jn, on[un++] = Aa, Aa = e; var n = Qn; e = Jn; var i = 32 - kn(n) - 1; n &= ~(1 << i), r += 1; var a = 32 - kn(t) + i; if (30 < a) { var o = i - i % 5; a = (n & (1 << o) - 1).toString(32), n >>= o, i -= o, Qn = 1 << 32 - kn(t) + i | r << i | n, Jn = a + e } else Qn = 1 << a | r << i | n, Jn = e } function T0(e) { e.return !== null && (sa(e, 1), A8(e, 1, 0)) } function P0(e) { for (; e === qc;)qc = ho[--po], ho[po] = null, Gc = ho[--po], ho[po] = null; for (; e === Aa;)Aa = on[--un], on[un] = null, Jn = on[--un], on[un] = null, Qn = on[--un], on[un] = null } var Kr = null, Ar = null, yt = !1, Sn = null; function R8(e, t) { var r = sn(5, null, null, 0); r.elementType = "DELETED", r.stateNode = t, r.return = e, t = e.deletions, t === null ? (e.deletions = [r], e.flags |= 16) : t.push(r) } function Gy(e, t) { switch (e.tag) { case 5: var r = e.type; return t = t.nodeType !== 1 || r.toLowerCase() !== t.nodeName.toLowerCase() ? null : t, t !== null ? (e.stateNode = t, Kr = e, Ar = Xn(t.firstChild), !0) : !1; case 6: return t = e.pendingProps === "" || t.nodeType !== 3 ? null : t, t !== null ? (e.stateNode = t, Kr = e, Ar = null, !0) : !1; case 13: return t = t.nodeType !== 8 ? null : t, t !== null ? (r = Aa !== null ? { id: Qn, overflow: Jn } : null, e.memoizedState = { dehydrated: t, treeContext: r, retryLane: 1073741824 }, r = sn(18, null, null, 0), r.stateNode = t, r.return = e, e.child = r, Kr = e, Ar = null, !0) : !1; default: return !1 } } function Em(e) { return (e.mode & 1) !== 0 && (e.flags & 128) === 0 } function Tm(e) { if (yt) { var t = Ar; if (t) { var r = t; if (!Gy(e, t)) { if (Em(e)) throw Error(ae(418)); t = Xn(r.nextSibling); var n = Kr; t && Gy(e, t) ? R8(n, r) : (e.flags = e.flags & -4097 | 2, yt = !1, Kr = e) } } else { if (Em(e)) throw Error(ae(418)); e.flags = e.flags & -4097 | 2, yt = !1, Kr = e } } } function Yy(e) { for (e = e.return; e !== null && e.tag !== 5 && e.tag !== 3 && e.tag !== 13;)e = e.return; Kr = e } function hu(e) { if (e !== Kr) return !1; if (!yt) return Yy(e), yt = !0, !1; var t; if ((t = e.tag !== 3) && !(t = e.tag !== 5) && (t = e.type, t = t !== "head" && t !== "body" && !bm(e.type, e.memoizedProps)), t && (t = Ar)) { if (Em(e)) { for (e = Ar; e;)e = Xn(e.nextSibling); throw Error(ae(418)) } for (; t;)R8(e, t), t = Xn(t.nextSibling) } if (Yy(e), e.tag === 13) { if (e = e.memoizedState, e = e !== null ? e.dehydrated : null, !e) throw Error(ae(317)); e: { for (e = e.nextSibling, t = 0; e;) { if (e.nodeType === 8) { var r = e.data; if (r === "/$") { if (t === 0) { Ar = Xn(e.nextSibling); break e } t-- } else r !== "$" && r !== "$!" && r !== "$?" || t++ } e = e.nextSibling } Ar = null } } else Ar = Kr ? Xn(e.stateNode.nextSibling) : null; return !0 } function Lo() { Ar = Kr = null, yt = !1 } function A0(e) { Sn === null ? Sn = [e] : Sn.push(e) } function pu(e, t, r) { if (e = r.ref, e !== null && typeof e != "function" && typeof e != "object") { if (r._owner) { if (r = r._owner, r) { if (r.tag !== 1) throw Error(ae(309)); var n = r.stateNode } if (!n) throw Error(ae(147, e)); var i = n, a = "" + e; return t !== null && t.ref !== null && typeof t.ref == "function" && t.ref._stringRef === a ? t.ref : (t = function (o) { var u = i.refs; u === T8 && (u = i.refs = {}), o === null ? delete u[a] : u[a] = o }, t._stringRef = a, t) } if (typeof e != "string") throw Error(ae(284)); if (!r._owner) throw Error(ae(290, e)) } return e } function wl(e, t) { throw e = Object.prototype.toString.call(t), Error(ae(31, e === "[object Object]" ? "object with keys {" + Object.keys(t).join(", ") + "}" : e)) } function Xy(e) { var t = e._init; return t(e._payload) } function O8(e) { function t(y, w) { if (e) { var k = y.deletions; k === null ? (y.deletions = [w], y.flags |= 16) : k.push(w) } } function r(y, w) { if (!e) return null; for (; w !== null;)t(y, w), w = w.sibling; return null } function n(y, w) { for (y = new Map; w !== null;)w.key !== null ? y.set(w.key, w) : y.set(w.index, w), w = w.sibling; return y } function i(y, w) { return y = Wi(y, w), y.index = 0, y.sibling = null, y } function a(y, w, k) { return y.index = k, e ? (k = y.alternate, k !== null ? (k = k.index, k < w ? (y.flags |= 2, w) : k) : (y.flags |= 2, w)) : (y.flags |= 1048576, w) } function o(y) { return e && y.alternate === null && (y.flags |= 2), y } function u(y, w, k, c) { return w === null || w.tag !== 6 ? (w = Mh(k, y.mode, c), w.return = y, w) : (w = i(w, k), w.return = y, w) } function s(y, w, k, c) { var g = k.type; return g === ao ? d(y, w, k.props.children, c, k.key) : w !== null && (w.elementType === g || typeof g == "object" && g !== null && g.$$typeof === ki && Xy(g) === w.type) ? (c = i(w, k.props), c.ref = pu(y, w, k), c.return = y, c) : (c = hc(k.type, k.key, k.props, null, y.mode, c), c.ref = pu(y, w, k), c.return = y, c) } function l(y, w, k, c) { return w === null || w.tag !== 4 || w.stateNode.containerInfo !== k.containerInfo || w.stateNode.implementation !== k.implementation ? (w = Dh(k, y.mode, c), w.return = y, w) : (w = i(w, k.children || []), w.return = y, w) } function d(y, w, k, c, g) { return w === null || w.tag !== 7 ? (w = ka(k, y.mode, c, g), w.return = y, w) : (w = i(w, k), w.return = y, w) } function m(y, w, k) { if (typeof w == "string" && w !== "" || typeof w == "number") return w = Mh("" + w, y.mode, k), w.return = y, w; if (typeof w == "object" && w !== null) { switch (w.$$typeof) { case cl: return k = hc(w.type, w.key, w.props, null, y.mode, k), k.ref = pu(y, null, w), k.return = y, k; case io: return w = Dh(w, y.mode, k), w.return = y, w; case ki: var c = w._init; return m(y, c(w._payload), k) }if (Ru(w) || su(w)) return w = ka(w, y.mode, k, null), w.return = y, w; wl(y, w) } return null } function p(y, w, k, c) { var g = w !== null ? w.key : null; if (typeof k == "string" && k !== "" || typeof k == "number") return g !== null ? null : u(y, w, "" + k, c); if (typeof k == "object" && k !== null) { switch (k.$$typeof) { case cl: return k.key === g ? s(y, w, k, c) : null; case io: return k.key === g ? l(y, w, k, c) : null; case ki: return g = k._init, p(y, w, g(k._payload), c) }if (Ru(k) || su(k)) return g !== null ? null : d(y, w, k, c, null); wl(y, k) } return null } function b(y, w, k, c, g) { if (typeof c == "string" && c !== "" || typeof c == "number") return y = y.get(k) || null, u(w, y, "" + c, g); if (typeof c == "object" && c !== null) { switch (c.$$typeof) { case cl: return y = y.get(c.key === null ? k : c.key) || null, s(w, y, c, g); case io: return y = y.get(c.key === null ? k : c.key) || null, l(w, y, c, g); case ki: var h = c._init; return b(y, w, k, h(c._payload), g) }if (Ru(c) || su(c)) return y = y.get(k) || null, d(w, y, c, g, null); wl(w, c) } return null } function v(y, w, k, c) { for (var g = null, h = null, _ = w, T = w = 0, D = null; _ !== null && T < k.length; T++) { _.index > T ? (D = _, _ = null) : D = _.sibling; var R = p(y, _, k[T], c); if (R === null) { _ === null && (_ = D); break } e && _ && R.alternate === null && t(y, _), w = a(R, w, T), h === null ? g = R : h.sibling = R, h = R, _ = D } if (T === k.length) return r(y, _), yt && sa(y, T), g; if (_ === null) { for (; T < k.length; T++)_ = m(y, k[T], c), _ !== null && (w = a(_, w, T), h === null ? g = _ : h.sibling = _, h = _); return yt && sa(y, T), g } for (_ = n(y, _); T < k.length; T++)D = b(_, y, T, k[T], c), D !== null && (e && D.alternate !== null && _.delete(D.key === null ? T : D.key), w = a(D, w, T), h === null ? g = D : h.sibling = D, h = D); return e && _.forEach(function (L) { return t(y, L) }), yt && sa(y, T), g } function C(y, w, k, c) { var g = su(k); if (typeof g != "function") throw Error(ae(150)); if (k = g.call(k), k == null) throw Error(ae(151)); for (var h = g = null, _ = w, T = w = 0, D = null, R = k.next(); _ !== null && !R.done; T++, R = k.next()) { _.index > T ? (D = _, _ = null) : D = _.sibling; var L = p(y, _, R.value, c); if (L === null) { _ === null && (_ = D); break } e && _ && L.alternate === null && t(y, _), w = a(L, w, T), h === null ? g = L : h.sibling = L, h = L, _ = D } if (R.done) return r(y, _), yt && sa(y, T), g; if (_ === null) { for (; !R.done; T++, R = k.next())R = m(y, R.value, c), R !== null && (w = a(R, w, T), h === null ? g = R : h.sibling = R, h = R); return yt && sa(y, T), g } for (_ = n(y, _); !R.done; T++, R = k.next())R = b(_, y, T, R.value, c), R !== null && (e && R.alternate !== null && _.delete(R.key === null ? T : R.key), w = a(R, w, T), h === null ? g = R : h.sibling = R, h = R); return e && _.forEach(function (U) { return t(y, U) }), yt && sa(y, T), g } function P(y, w, k, c) { if (typeof k == "object" && k !== null && k.type === ao && k.key === null && (k = k.props.children), typeof k == "object" && k !== null) { switch (k.$$typeof) { case cl: e: { for (var g = k.key, h = w; h !== null;) { if (h.key === g) { if (g = k.type, g === ao) { if (h.tag === 7) { r(y, h.sibling), w = i(h, k.props.children), w.return = y, y = w; break e } } else if (h.elementType === g || typeof g == "object" && g !== null && g.$$typeof === ki && Xy(g) === h.type) { r(y, h.sibling), w = i(h, k.props), w.ref = pu(y, h, k), w.return = y, y = w; break e } r(y, h); break } else t(y, h); h = h.sibling } k.type === ao ? (w = ka(k.props.children, y.mode, c, k.key), w.return = y, y = w) : (c = hc(k.type, k.key, k.props, null, y.mode, c), c.ref = pu(y, w, k), c.return = y, y = c) } return o(y); case io: e: { for (h = k.key; w !== null;) { if (w.key === h) if (w.tag === 4 && w.stateNode.containerInfo === k.containerInfo && w.stateNode.implementation === k.implementation) { r(y, w.sibling), w = i(w, k.children || []), w.return = y, y = w; break e } else { r(y, w); break } else t(y, w); w = w.sibling } w = Dh(k, y.mode, c), w.return = y, y = w } return o(y); case ki: return h = k._init, P(y, w, h(k._payload), c) }if (Ru(k)) return v(y, w, k, c); if (su(k)) return C(y, w, k, c); wl(y, k) } return typeof k == "string" && k !== "" || typeof k == "number" ? (k = "" + k, w !== null && w.tag === 6 ? (r(y, w.sibling), w = i(w, k), w.return = y, y = w) : (r(y, w), w = Mh(k, y.mode, c), w.return = y, y = w), o(y)) : r(y, w) } return P } var Io = O8(!0), $8 = O8(!1), Bs = {}, jn = Yi(Bs), ps = Yi(Bs), ms = Yi(Bs); function ga(e) { if (e === Bs) throw Error(ae(174)); return e } function R0(e, t) { switch (lt(ms, t), lt(ps, e), lt(jn, Bs), e = t.nodeType, e) { case 9: case 11: t = (t = t.documentElement) ? t.namespaceURI : am(null, ""); break; default: e = e === 8 ? t.parentNode : t, t = e.namespaceURI || null, e = e.tagName, t = am(t, e) }ht(jn), lt(jn, t) } function Mo() { ht(jn), ht(ps), ht(ms) } function L8(e) { ga(ms.current); var t = ga(jn.current), r = am(t, e.type); t !== r && (lt(ps, e), lt(jn, r)) } function O0(e) { ps.current === e && (ht(jn), ht(ps)) } var _t = Yi(0); function Yc(e) { for (var t = e; t !== null;) { if (t.tag === 13) { var r = t.memoizedState; if (r !== null && (r = r.dehydrated, r === null || r.data === "$?" || r.data === "$!")) return t } else if (t.tag === 19 && t.memoizedProps.revealOrder !== void 0) { if ((t.flags & 128) !== 0) return t } else if (t.child !== null) { t.child.return = t, t = t.child; continue } if (t === e) break; for (; t.sibling === null;) { if (t.return === null || t.return === e) return null; t = t.return } t.sibling.return = t.return, t = t.sibling } return null } var Rh = []; function $0() { for (var e = 0; e < Rh.length; e++)Rh[e]._workInProgressVersionPrimary = null; Rh.length = 0 } var lc = li.ReactCurrentDispatcher, Oh = li.ReactCurrentBatchConfig, Ra = 0, kt = null, Ht = null, Qt = null, Xc = !1, Fu = !1, gs = 0, NC = 0; function dr() { throw Error(ae(321)) } function L0(e, t) { if (t === null) return !1; for (var r = 0; r < t.length && r < e.length; r++)if (!En(e[r], t[r])) return !1; return !0 } function I0(e, t, r, n, i, a) { if (Ra = a, kt = t, t.memoizedState = null, t.updateQueue = null, t.lanes = 0, lc.current = e === null || e.memoizedState === null ? UC : VC, e = r(n, i), Fu) { a = 0; do { if (Fu = !1, gs = 0, 25 <= a) throw Error(ae(301)); a += 1, Qt = Ht = null, t.updateQueue = null, lc.current = WC, e = r(n, i) } while (Fu) } if (lc.current = Qc, t = Ht !== null && Ht.next !== null, Ra = 0, Qt = Ht = kt = null, Xc = !1, t) throw Error(ae(300)); return e } function M0() { var e = gs !== 0; return gs = 0, e } function Ln() { var e = { memoizedState: null, baseState: null, baseQueue: null, queue: null, next: null }; return Qt === null ? kt.memoizedState = Qt = e : Qt = Qt.next = e, Qt } function pn() { if (Ht === null) { var e = kt.alternate; e = e !== null ? e.memoizedState : null } else e = Ht.next; var t = Qt === null ? kt.memoizedState : Qt.next; if (t !== null) Qt = t, Ht = e; else { if (e === null) throw Error(ae(310)); Ht = e, e = { memoizedState: Ht.memoizedState, baseState: Ht.baseState, baseQueue: Ht.baseQueue, queue: Ht.queue, next: null }, Qt === null ? kt.memoizedState = Qt = e : Qt = Qt.next = e } return Qt } function vs(e, t) { return typeof t == "function" ? t(e) : t } function $h(e) { var t = pn(), r = t.queue; if (r === null) throw Error(ae(311)); r.lastRenderedReducer = e; var n = Ht, i = n.baseQueue, a = r.pending; if (a !== null) { if (i !== null) { var o = i.next; i.next = a.next, a.next = o } n.baseQueue = i = a, r.pending = null } if (i !== null) { a = i.next, n = n.baseState; var u = o = null, s = null, l = a; do { var d = l.lane; if ((Ra & d) === d) s !== null && (s = s.next = { lane: 0, action: l.action, hasEagerState: l.hasEagerState, eagerState: l.eagerState, next: null }), n = l.hasEagerState ? l.eagerState : e(n, l.action); else { var m = { lane: d, action: l.action, hasEagerState: l.hasEagerState, eagerState: l.eagerState, next: null }; s === null ? (u = s = m, o = n) : s = s.next = m, kt.lanes |= d, Oa |= d } l = l.next } while (l !== null && l !== a); s === null ? o = n : s.next = u, En(n, t.memoizedState) || (Rr = !0), t.memoizedState = n, t.baseState = o, t.baseQueue = s, r.lastRenderedState = n } if (e = r.interleaved, e !== null) { i = e; do a = i.lane, kt.lanes |= a, Oa |= a, i = i.next; while (i !== e) } else i === null && (r.lanes = 0); return [t.memoizedState, r.dispatch] } function Lh(e) { var t = pn(), r = t.queue; if (r === null) throw Error(ae(311)); r.lastRenderedReducer = e; var n = r.dispatch, i = r.pending, a = t.memoizedState; if (i !== null) { r.pending = null; var o = i = i.next; do a = e(a, o.action), o = o.next; while (o !== i); En(a, t.memoizedState) || (Rr = !0), t.memoizedState = a, t.baseQueue === null && (t.baseState = a), r.lastRenderedState = a } return [a, n] } function I8() { } function M8(e, t) { var r = kt, n = pn(), i = t(), a = !En(n.memoizedState, i); if (a && (n.memoizedState = i, Rr = !0), n = n.queue, D0(z8.bind(null, r, n, e), [e]), n.getSnapshot !== t || a || Qt !== null && Qt.memoizedState.tag & 1) { if (r.flags |= 2048, ys(9, j8.bind(null, r, n, i, t), void 0, null), Wt === null) throw Error(ae(349)); (Ra & 30) !== 0 || D8(r, t, i) } return i } function D8(e, t, r) { e.flags |= 16384, e = { getSnapshot: t, value: r }, t = kt.updateQueue, t === null ? (t = { lastEffect: null, stores: null }, kt.updateQueue = t, t.stores = [e]) : (r = t.stores, r === null ? t.stores = [e] : r.push(e)) } function j8(e, t, r, n) { t.value = r, t.getSnapshot = n, N8(t) && dn(e, 1, -1) } function z8(e, t, r) { return r(function () { N8(t) && dn(e, 1, -1) }) } function N8(e) { var t = e.getSnapshot; e = e.value; try { var r = t(); return !En(e, r) } catch { return !0 } } function Qy(e) { var t = Ln(); return typeof e == "function" && (e = e()), t.memoizedState = t.baseState = e, e = { pending: null, interleaved: null, lanes: 0, dispatch: null, lastRenderedReducer: vs, lastRenderedState: e }, t.queue = e, e = e.dispatch = HC.bind(null, kt, e), [t.memoizedState, e] } function ys(e, t, r, n) { return e = { tag: e, create: t, destroy: r, deps: n, next: null }, t = kt.updateQueue, t === null ? (t = { lastEffect: null, stores: null }, kt.updateQueue = t, t.lastEffect = e.next = e) : (r = t.lastEffect, r === null ? t.lastEffect = e.next = e : (n = r.next, r.next = e, e.next = n, t.lastEffect = e)), e } function B8() { return pn().memoizedState } function cc(e, t, r, n) { var i = Ln(); kt.flags |= e, i.memoizedState = ys(1 | t, r, void 0, n === void 0 ? null : n) } function Dd(e, t, r, n) { var i = pn(); n = n === void 0 ? null : n; var a = void 0; if (Ht !== null) { var o = Ht.memoizedState; if (a = o.destroy, n !== null && L0(n, o.deps)) { i.memoizedState = ys(t, r, a, n); return } } kt.flags |= e, i.memoizedState = ys(1 | t, r, a, n) } function Jy(e, t) { return cc(8390656, 8, e, t) } function D0(e, t) { return Dd(2048, 8, e, t) } function F8(e, t) { return Dd(4, 2, e, t) } function H8(e, t) { return Dd(4, 4, e, t) } function U8(e, t) { if (typeof t == "function") return e = e(), t(e), function () { t(null) }; if (t != null) return e = e(), t.current = e, function () { t.current = null } } function V8(e, t, r) { return r = r != null ? r.concat([e]) : null, Dd(4, 4, U8.bind(null, t, e), r) } function j0() { } function W8(e, t) { var r = pn(); t = t === void 0 ? null : t; var n = r.memoizedState; return n !== null && t !== null && L0(t, n[1]) ? n[0] : (r.memoizedState = [e, t], e) } function K8(e, t) { var r = pn(); t = t === void 0 ? null : t; var n = r.memoizedState; return n !== null && t !== null && L0(t, n[1]) ? n[0] : (e = e(), r.memoizedState = [e, t], e) } function q8(e, t, r) { return (Ra & 21) === 0 ? (e.baseState && (e.baseState = !1, Rr = !0), e.memoizedState = r) : (En(r, t) || (r = Zw(), kt.lanes |= r, Oa |= r, e.baseState = !0), t) } function BC(e, t) { var r = nt; nt = r !== 0 && 4 > r ? r : 4, e(!0); var n = Oh.transition; Oh.transition = {}; try { e(!1), t() } finally { nt = r, Oh.transition = n } } function G8() { return pn().memoizedState } function FC(e, t, r) { var n = zi(e); r = { lane: n, action: r, hasEagerState: !1, eagerState: null, next: null }, Y8(e) ? X8(t, r) : (Q8(e, t, r), r = br(), e = dn(e, n, r), e !== null && J8(e, t, n)) } function HC(e, t, r) { var n = zi(e), i = { lane: n, action: r, hasEagerState: !1, eagerState: null, next: null }; if (Y8(e)) X8(t, i); else { Q8(e, t, i); var a = e.alternate; if (e.lanes === 0 && (a === null || a.lanes === 0) && (a = t.lastRenderedReducer, a !== null)) try { var o = t.lastRenderedState, u = a(o, r); if (i.hasEagerState = !0, i.eagerState = u, En(u, o)) return } catch { } finally { } r = br(), e = dn(e, n, r), e !== null && J8(e, t, n) } } function Y8(e) { var t = e.alternate; return e === kt || t !== null && t === kt } function X8(e, t) { Fu = Xc = !0; var r = e.pending; r === null ? t.next = t : (t.next = r.next, r.next = t), e.pending = t } function Q8(e, t, r) { m4(e) ? (e = t.interleaved, e === null ? (r.next = r, _n === null ? _n = [t] : _n.push(t)) : (r.next = e.next, e.next = r), t.interleaved = r) : (e = t.pending, e === null ? r.next = r : (r.next = e.next, e.next = r), t.pending = r) } function J8(e, t, r) { if ((r & 4194240) !== 0) { var n = t.lanes; n &= e.pendingLanes, r |= n, t.lanes = r, m0(e, r) } } var Qc = { readContext: hn, useCallback: dr, useContext: dr, useEffect: dr, useImperativeHandle: dr, useInsertionEffect: dr, useLayoutEffect: dr, useMemo: dr, useReducer: dr, useRef: dr, useState: dr, useDebugValue: dr, useDeferredValue: dr, useTransition: dr, useMutableSource: dr, useSyncExternalStore: dr, useId: dr, unstable_isNewReconciler: !1 }, UC = { readContext: hn, useCallback: function (e, t) { return Ln().memoizedState = [e, t === void 0 ? null : t], e }, useContext: hn, useEffect: Jy, useImperativeHandle: function (e, t, r) { return r = r != null ? r.concat([e]) : null, cc(4194308, 4, U8.bind(null, t, e), r) }, useLayoutEffect: function (e, t) { return cc(4194308, 4, e, t) }, useInsertionEffect: function (e, t) { return cc(4, 2, e, t) }, useMemo: function (e, t) { var r = Ln(); return t = t === void 0 ? null : t, e = e(), r.memoizedState = [e, t], e }, useReducer: function (e, t, r) { var n = Ln(); return t = r !== void 0 ? r(t) : t, n.memoizedState = n.baseState = t, e = { pending: null, interleaved: null, lanes: 0, dispatch: null, lastRenderedReducer: e, lastRenderedState: t }, n.queue = e, e = e.dispatch = FC.bind(null, kt, e), [n.memoizedState, e] }, useRef: function (e) { var t = Ln(); return e = { current: e }, t.memoizedState = e }, useState: Qy, useDebugValue: j0, useDeferredValue: function (e) { return Ln().memoizedState = e }, useTransition: function () { var e = Qy(!1), t = e[0]; return e = BC.bind(null, e[1]), Ln().memoizedState = e, [t, e] }, useMutableSource: function () { }, useSyncExternalStore: function (e, t, r) { var n = kt, i = Ln(); if (yt) { if (r === void 0) throw Error(ae(407)); r = r() } else { if (r = t(), Wt === null) throw Error(ae(349)); (Ra & 30) !== 0 || D8(n, t, r) } i.memoizedState = r; var a = { value: r, getSnapshot: t }; return i.queue = a, Jy(z8.bind(null, n, a, e), [e]), n.flags |= 2048, ys(9, j8.bind(null, n, a, r, t), void 0, null), r }, useId: function () { var e = Ln(), t = Wt.identifierPrefix; if (yt) { var r = Jn, n = Qn; r = (n & ~(1 << 32 - kn(n) - 1)).toString(32) + r, t = ":" + t + "R" + r, r = gs++, 0 < r && (t += "H" + r.toString(32)), t += ":" } else r = NC++, t = ":" + t + "r" + r.toString(32) + ":"; return e.memoizedState = t }, unstable_isNewReconciler: !1 }, VC = { readContext: hn, useCallback: W8, useContext: hn, useEffect: D0, useImperativeHandle: V8, useInsertionEffect: F8, useLayoutEffect: H8, useMemo: K8, useReducer: $h, useRef: B8, useState: function () { return $h(vs) }, useDebugValue: j0, useDeferredValue: function (e) { var t = pn(); return q8(t, Ht.memoizedState, e) }, useTransition: function () { var e = $h(vs)[0], t = pn().memoizedState; return [e, t] }, useMutableSource: I8, useSyncExternalStore: M8, useId: G8, unstable_isNewReconciler: !1 }, WC = { readContext: hn, useCallback: W8, useContext: hn, useEffect: D0, useImperativeHandle: V8, useInsertionEffect: F8, useLayoutEffect: H8, useMemo: K8, useReducer: Lh, useRef: B8, useState: function () { return Lh(vs) }, useDebugValue: j0, useDeferredValue: function (e) { var t = pn(); return Ht === null ? t.memoizedState = e : q8(t, Ht.memoizedState, e) }, useTransition: function () { var e = Lh(vs)[0], t = pn().memoizedState; return [e, t] }, useMutableSource: I8, useSyncExternalStore: M8, useId: G8, unstable_isNewReconciler: !1 }; function z0(e, t) { - try { var r = "", n = t; do r += b5(n), n = n.return; while (n); var i = r } catch (a) { - i = ` -Error generating stack: `+ a.message + ` -`+ a.stack - } return { value: e, source: t, stack: i } - } function Pm(e, t) { try { console.error(t.value) } catch (r) { setTimeout(function () { throw r }) } } var KC = typeof WeakMap == "function" ? WeakMap : Map; function Z8(e, t, r) { r = ei(-1, r), r.tag = 3, r.payload = { element: null }; var n = t.value; return r.callback = function () { Zc || (Zc = !0, jm = n), Pm(e, t) }, r } function e4(e, t, r) { r = ei(-1, r), r.tag = 3; var n = e.type.getDerivedStateFromError; if (typeof n == "function") { var i = t.value; r.payload = function () { return n(i) }, r.callback = function () { Pm(e, t) } } var a = e.stateNode; return a !== null && typeof a.componentDidCatch == "function" && (r.callback = function () { Pm(e, t), typeof n != "function" && (ji === null ? ji = new Set([this]) : ji.add(this)); var o = t.stack; this.componentDidCatch(t.value, { componentStack: o !== null ? o : "" }) }), r } function Zy(e, t, r) { var n = e.pingCache; if (n === null) { n = e.pingCache = new KC; var i = new Set; n.set(t, i) } else i = n.get(t), i === void 0 && (i = new Set, n.set(t, i)); i.has(r) || (i.add(r), e = aE.bind(null, e, t, r), t.then(e, e)) } function e2(e) { do { var t; if ((t = e.tag === 13) && (t = e.memoizedState, t = t !== null ? t.dehydrated !== null : !0), t) return e; e = e.return } while (e !== null); return null } function t2(e, t, r, n, i) { return (e.mode & 1) === 0 ? (e === t ? e.flags |= 65536 : (e.flags |= 128, r.flags |= 131072, r.flags &= -52805, r.tag === 1 && (r.alternate === null ? r.tag = 17 : (t = ei(-1, 1), t.tag = 2, Di(r, t))), r.lanes |= 1), e) : (e.flags |= 65536, e.lanes = i, e) } var t4, Am, r4, n4; t4 = function (e, t) { for (var r = t.child; r !== null;) { if (r.tag === 5 || r.tag === 6) e.appendChild(r.stateNode); else if (r.tag !== 4 && r.child !== null) { r.child.return = r, r = r.child; continue } if (r === t) break; for (; r.sibling === null;) { if (r.return === null || r.return === t) return; r = r.return } r.sibling.return = r.return, r = r.sibling } }; Am = function () { }; r4 = function (e, t, r, n) { var i = e.memoizedProps; if (i !== n) { e = t.stateNode, ga(jn.current); var a = null; switch (r) { case "input": i = tm(e, i), n = tm(e, n), a = []; break; case "select": i = Ct({}, i, { value: void 0 }), n = Ct({}, n, { value: void 0 }), a = []; break; case "textarea": i = im(e, i), n = im(e, n), a = []; break; default: typeof i.onClick != "function" && typeof n.onClick == "function" && (e.onclick = Fc) }om(r, n); var o; r = null; for (l in i) if (!n.hasOwnProperty(l) && i.hasOwnProperty(l) && i[l] != null) if (l === "style") { var u = i[l]; for (o in u) u.hasOwnProperty(o) && (r || (r = {}), r[o] = "") } else l !== "dangerouslySetInnerHTML" && l !== "children" && l !== "suppressContentEditableWarning" && l !== "suppressHydrationWarning" && l !== "autoFocus" && (ns.hasOwnProperty(l) ? a || (a = []) : (a = a || []).push(l, null)); for (l in n) { var s = n[l]; if (u = i != null ? i[l] : void 0, n.hasOwnProperty(l) && s !== u && (s != null || u != null)) if (l === "style") if (u) { for (o in u) !u.hasOwnProperty(o) || s && s.hasOwnProperty(o) || (r || (r = {}), r[o] = ""); for (o in s) s.hasOwnProperty(o) && u[o] !== s[o] && (r || (r = {}), r[o] = s[o]) } else r || (a || (a = []), a.push(l, r)), r = s; else l === "dangerouslySetInnerHTML" ? (s = s ? s.__html : void 0, u = u ? u.__html : void 0, s != null && u !== s && (a = a || []).push(l, s)) : l === "children" ? typeof s != "string" && typeof s != "number" || (a = a || []).push(l, "" + s) : l !== "suppressContentEditableWarning" && l !== "suppressHydrationWarning" && (ns.hasOwnProperty(l) ? (s != null && l === "onScroll" && ft("scroll", e), a || u === s || (a = [])) : (a = a || []).push(l, s)) } r && (a = a || []).push("style", r); var l = a; (t.updateQueue = l) && (t.flags |= 4) } }; n4 = function (e, t, r, n) { r !== n && (t.flags |= 4) }; function mu(e, t) { if (!yt) switch (e.tailMode) { case "hidden": t = e.tail; for (var r = null; t !== null;)t.alternate !== null && (r = t), t = t.sibling; r === null ? e.tail = null : r.sibling = null; break; case "collapsed": r = e.tail; for (var n = null; r !== null;)r.alternate !== null && (n = r), r = r.sibling; n === null ? t || e.tail === null ? e.tail = null : e.tail.sibling = null : n.sibling = null } } function fr(e) { var t = e.alternate !== null && e.alternate.child === e.child, r = 0, n = 0; if (t) for (var i = e.child; i !== null;)r |= i.lanes | i.childLanes, n |= i.subtreeFlags & 14680064, n |= i.flags & 14680064, i.return = e, i = i.sibling; else for (i = e.child; i !== null;)r |= i.lanes | i.childLanes, n |= i.subtreeFlags, n |= i.flags, i.return = e, i = i.sibling; return e.subtreeFlags |= n, e.childLanes = r, t } function qC(e, t, r) { var n = t.pendingProps; switch (P0(t), t.tag) { case 2: case 16: case 15: case 0: case 11: case 7: case 8: case 12: case 9: case 14: return fr(t), null; case 1: return Lr(t.type) && Hc(), fr(t), null; case 3: return n = t.stateNode, Mo(), ht($r), ht(mr), $0(), n.pendingContext && (n.context = n.pendingContext, n.pendingContext = null), (e === null || e.child === null) && (hu(t) ? t.flags |= 4 : e === null || e.memoizedState.isDehydrated && (t.flags & 256) === 0 || (t.flags |= 1024, Sn !== null && (Bm(Sn), Sn = null))), Am(e, t), fr(t), null; case 5: O0(t); var i = ga(ms.current); if (r = t.type, e !== null && t.stateNode != null) r4(e, t, r, n, i), e.ref !== t.ref && (t.flags |= 512, t.flags |= 2097152); else { if (!n) { if (t.stateNode === null) throw Error(ae(166)); return fr(t), null } if (e = ga(jn.current), hu(t)) { n = t.stateNode, r = t.type; var a = t.memoizedProps; switch (n[In] = t, n[hs] = a, e = (t.mode & 1) !== 0, r) { case "dialog": ft("cancel", n), ft("close", n); break; case "iframe": case "object": case "embed": ft("load", n); break; case "video": case "audio": for (i = 0; i < $u.length; i++)ft($u[i], n); break; case "source": ft("error", n); break; case "img": case "image": case "link": ft("error", n), ft("load", n); break; case "details": ft("toggle", n); break; case "input": my(n, a), ft("invalid", n); break; case "select": n._wrapperState = { wasMultiple: !!a.multiple }, ft("invalid", n); break; case "textarea": vy(n, a), ft("invalid", n) }om(r, a), i = null; for (var o in a) if (a.hasOwnProperty(o)) { var u = a[o]; o === "children" ? typeof u == "string" ? n.textContent !== u && (a.suppressHydrationWarning !== !0 && bl(n.textContent, u, e), i = ["children", u]) : typeof u == "number" && n.textContent !== "" + u && (a.suppressHydrationWarning !== !0 && bl(n.textContent, u, e), i = ["children", "" + u]) : ns.hasOwnProperty(o) && u != null && o === "onScroll" && ft("scroll", n) } switch (r) { case "input": dl(n), gy(n, a, !0); break; case "textarea": dl(n), yy(n); break; case "select": case "option": break; default: typeof a.onClick == "function" && (n.onclick = Fc) }n = i, t.updateQueue = n, n !== null && (t.flags |= 4) } else { o = i.nodeType === 9 ? i : i.ownerDocument, e === "http://www.w3.org/1999/xhtml" && (e = zw(r)), e === "http://www.w3.org/1999/xhtml" ? r === "script" ? (e = o.createElement("div"), e.innerHTML = "